Архив рубрики: Others

Посты, которые можно отнести к любым категориям или, наоборот, посты не подходящие под описание ни одной из категорий.

Опыт сопряжения Java, JavaScript, Ruby и Python в одном проекте посредством GraalVM

В прошлом месяце вышла стабильная LTS-версия многоязычной среды выполнения GraalVM 20.3.0 от корпорации Oracle и мне захотелось испробовать её для решения какой-нибудь интересной практической задачи. Для тех кто не в курсе, приведу краткое описание этой новой платформы. GraalVM позволяет использовать в едином окружении различные популярные языки программирования и обеспечивает их разностороннее взаимодействие в рамках некоторой общей среды выполнения.



Схематическое изображение архитектуры GraalVM из официальной документации.

Добавление новых языков в GraalVM осуществляется с помощью специального фреймворка Truffle, выполненного в виде библиотеки Java. Фреймворк предназначен для создания реализаций языков программирования в качестве интерпретаторов для самомодифицируемых абстрактных синтаксических деревьев (AST). При желании на его основе можно создать собственный язык, в официальных репозиториях GraalVM подробно рассмотрен пример реализации такого проекта под названием SimpleLanguage. Интерпретаторы, которые были написаны с использованием фреймворка Truffle, будут автоматически использовать GraalVM как JIT-компилятор непосредственно для самой реализации языка запускаемой на JVM-платформе и, соответственно, иметь возможность взаимодействия и двустороннего обмена данными в одном и том же пространстве памяти посредством специально разработанного протокола и программного интерфейса Polyglot API.

Платформа GraalVM вместе с исполняемой программой на смеси самых разных языков может быть представлена в виде автономного и самодостаточного исполняемого файла, либо работать поверх OpenJDK, Node.js или даже внутри Oracle Database.

Читать далее Опыт сопряжения Java, JavaScript, Ruby и Python в одном проекте посредством GraalVM

Dev, Manuals, Others

Собираем Perl прямиком из 1987 года

Прочитав новость «Код интерпретатора Perl официально перенесён на GitHub» на ресурсе LINUX.ORG.RU я решил взглянуть на репозиторий Perl 5, который теперь уже находится на GitHub’е.

Удивительно, как трепетно и качественно его перенесли, сохранив не только абсолютно всю 32-летнюю историю проекта, но и багрепорты (попали в Issues), патчи (попали в PRs), релизы и ветки. Надпись «32 years ago» рядом с файлами вызывает невольную улыбку.

Что ещё делать в этот унылейший пятничный вечер, когда на улице неприятно моросит дождь со снегом, а все уличные дорожки погрязли в осенней слякоти? Правильно, красноглазить! Так что я ради эксперимента и интереса решил взять и собрать древний Perl на современной x86_64-машинке с последней версией GCC 9.2.0 в качестве компилятора. Сможет ли такой старый код пройти проверку временем?



Демонстрация работы twm, одного из первых оконных менеджеров для X Window System, на современном дистрибутиве Arch Linux.

Чтобы было совсем уж аутентичненько и некромантненько, я развернул виртуальную машину с голыми иксами и оконным менеджером twm, который тоже родом из 1987 года. Кто знает, может быть Larry Wall писал свой Perl используя именно twm, так сказать bleeding edge technology того времени. Используемый дистрибутив — Arch Linux. Просто потому что в его репозитории есть некоторые полезные вещи, которые впоследствии мне пригодились. Итак, поехали!

Читать далее Собираем Perl прямиком из 1987 года

Manuals, Others

Операционная система Haiku: портирование приложений и создание пакетов

Осенью этого года, спустя 6 лет разработки, вышла первая бета-версия «R1/beta1» операционной системы Haiku. Я давно слежу за этим интересным проектом, который нацелен на воссоздание и последующее развитие существовавшей в 1994-2000 годах системы BeOS. Поэтому, как только на новостных IT-сайтах я увидел новость о выходе бета-версии Haiku, я незамедлительно решил посмотреть, что же было добавлено в этот долгожданный релиз. После установки системы в виртуальную машину VirtualBox и небольшого ознакомления с её основной функциональностью, я подумал, что было бы неплохо немного помочь OpenSource-сообществу, которое сегодня развивает эту операционную систему. Начать я решил с того, в чём у меня накопился небольшой опыт: с портирования некоторых игровых проектов. Позже я попытался доработать некоторые уже существующие приложения и библиотеки. Именно этой моей небольшой деятельности в различных репозиториях с открытым исходным кодом и будет посвящена эта статья. В ней я последовательно опишу те проблемы, с которыми столкнулся и расскажу про методы их решения. Большинство патчей, которые были сделаны в процессе этой работы, я попытался отправить в upstream существующих проектов, дабы обеспечить в них поддержку Haiku и заинтересовать их разработчиков существованием альтернативных операционных систем.



Рабочий стол операционной системы Haiku.

Операционная система Haiku использует гибридное ядро, которое представляет собой реализацию микроядерной архитектуры с возможностью динамической подгрузки необходимых модулей. Оно базируется на форке ядра NewOS, которое было разработано бывшим инженером Be Inc., Travis’ом Geiselbrecht’ом. Сегодня этот разработчик работает в Google над ядром, которое называется Zircon, для новой операционной системы Google Fuchsia, но это уже другая история. Итак, поскольку разработчики Haiku декларируют бинарную совместимость с BeOS, то они вынуждены поддерживать не две привычных всем архитектурных ветки, а три: x86_64, x86 и x86_gcc2. Последняя архитектура представляет собой груз совместимости с компилятором старой версии GCC 2.95. Именно благодаря ей имеется возможность запуска приложений, написанных для оригинальной операционной системы BeOS. К сожалению, из-за этого груза совместимости, разработчики Haiku не могут использовать современные возможности языка программирования C++ в системных API. Тем не менее, установочные образы они подготавливают только для двух архитектур: x86_64 и x86. Всё дело в том, что дистрибутив Haiku для x86 является гибридным: несмотря на то, что все системные компоненты собраны под x86_gcc2 для обеспечения бинарной совместимости, пользователю предоставляется возможность установки или сборки любых современных приложений, которые были сделаны с расчётом на современные компиляторы и архитектуру x86. Дистрибутив Haiku для архитектуры x86_64 является полностью 64-битным и не имеет возможности запуска 32-битных приложений BeOS и Haiku. Однако, совместимость на уровне API имеется, поэтому если у вас есть на руках исходный код приложения под BeOS или Haiku x86, вы без проблем сможете скомпилировать его под Haiku x86_64 и всё должно работать. Образ операционной системы под архитектуру x86_64 рекомендуется для установки на реальное железо, если вам не требуется поддержка каких-либо специфичных приложений BeOS или 32-битных приложений Haiku.

Читать далее Операционная система Haiku: портирование приложений и создание пакетов

Dev, Others

Обновления приложений и новые утилиты (октябрь 2016 — март 2017)

Достаточно давно я ничего не писал в блог, поскольку у меня не было должного настроения для этого. Но всё же я собрался и в этом посте решил описать то, над чем я работал в своё свободное время с момента публикации последней статьи об изменении дизайна сайта. Так получилось, что здесь, в основном, будут описаны улучшения и обновления моих уже существующих проектов, а не процессы создания новых. Но тем не менее, новые приложения и их описания я вынесу в самое начало этого поста. Эти программы были созданы по просьбе моих старых друзей, они получились компактными и небольшими, поэтому посвящать им отдельные и развёрнутые статьи было бы немного странно.



Лаунчеры обновлённых приложений для Android OS, скриншоты с Motorola Photon Q.

Постепенно, для некоторых приложений, над которыми я работал, накопились важные обновления, исправления некоторых ошибок и другие патчи. Я решил описать все изменения тоже в этой статье. Таким образом, она будет представлять собой небольшой дайджест произошедшего примерно за четыре месяца и будет довольно объёмной и полной. Больше всего изменений получилось для моих приложений на Android OS, поэтому я вынесу информацию о них в конец этого поста. Кроме того, обновления затронули и некоторые другие проекты, об этом тоже будет написано подробнее. Но начнём с отдельных приложений.

Читать далее Обновления приложений и новые утилиты (октябрь 2016 — март 2017)

Android, Dev, EZX, MotoMAGX, Others

Обновление дизайна блога: создание шаблона Moto Juice для WordPress

Как вы уже наверное заметили, в последний месяц я много экспериментировал с внешним видом своего блога. Наконец, этот долгий этап подошёл к концу и то, что вы сегодня можете наблюдать на страницах этого ресурса, является финальной версией дизайна сайта. Скорее всего будет ещё несколько незначительных изменений и улучшений, но общая концепция останется прежней. В соответствии с современными тенденциями внешнего вида интерфейсов, дизайн блога стал более простым и «плоским», без различных градиентов и выпуклых кнопок, чтобы ничего не отвлекало от чтения полотна текстовой информации. Кроме того, яркие оранжевые цвета, раздражающие многих посетителей ресурса, были изменены на нейтральные синие и серые тона. Но для тех, кому нравился яркий оранжевый цвет, была оставлена возможность его возвращения путём переключения цветовых схем. Благодаря этому механизму удалось сделать поддержку тёмного скина, который тоже может приглянуться посетителям моего блога.



Новый дизайн ресурса, выбран скин «Серая безмятежность», скриншот сделан в браузере Safari.

Делать собственную тему с нуля для блога на движке WordPress, не имея опыта работы с ним, достаточно накладно и сложно. Поэтому было решено пойти по самому простому пути. Я попробовал найти какой-нибудь красивый и популярный WordPress-шаблон и изменив вёрстку, дизайн и функциональность, превратить его в эксклюзивную тему для моего ресурса. Я достаточно долго перебирал огромное количество кастомных шаблонов, но так и не находил ничего из того, что мне бы сразу безоговорочно понравилось. На самом деле то, что я искал, лежало всегда на виду. Я слишком поздно заглянул в стандартные темы WordPress’а, решив что там не будет ничего интересного. И очень даже зря, стоковый шаблон Twenty Fourteen выглядел весьма симпатично. На его основе я и решил создать тему Moto Juice, немного упростив вёрстку и добавив требуемые возможности. Эта тема отлично смотрелась и работала не только на настольных компьютерах, но и на мобильных устройствах.

Читать далее Обновление дизайна блога: создание шаблона Moto Juice для WordPress

Dev, Manuals, Others

Часы на кривых Безье для рабочего стола KDE Plasma 5: Bezier Clock

В графическом окружении рабочего стола KDE Plasma 5 для дистрибутивов GNU/Linux появилась замечательная возможность создания анимированных обоев с использованием технологии Qt Quick и декларативного скриптового языка QML. Благодаря переходу KDE Plasma 5 на современный и богатый возможностями фреймворк Qt 5, в новой версии Qt Quick 2.0 анимированные обои стали не только бережнее относиться к ресурсам компьютера, но и получили поддержку множества новых переходов, эффектов, шейдеров и даже системы частиц. Помимо этого увеличился FPS и повысилась плавность самой анимации.



Анимированные обои Bezier Clock на рабочем столе KDE Plasma 5.

Так как я уже достаточно давно являюсь счастливым пользователем KDE, я решил реализовать что-нибудь интересное для этого окружения, такое, чтобы радовался глаз. Создать анимированные обои с красивой анимацией было бы весьма кстати, поскольку стандартные совсем скучные и не демонстрируют мощь и функциональность технологии Qt Quick, а я как раз хотел опробовать язык программирования QML в разработке прикладных приложений.

Читать далее Часы на кривых Безье для рабочего стола KDE Plasma 5: Bezier Clock

Dev, Manuals, Others

Опыт покупки Motorola E398 в новом оригинальном корпусе на ebay.com

Несмотря на то, что с момента выхода на мобильный рынок телефона Motorola E398 прошло целых 12 лет, этот гаджет пользуется спросом и по сей день. Ностальгия и воспоминания о беззаботной юности — одни из самых сильных чувств и сегодняшняя молодёжь, натерпевшись современных девайсов с огромными сенсорными экранами, нередко вспоминает о тех устройствах, которыми они или их друзья когда-то пользовались в школах и университетах. Им приходит в голову мысль купить подобное устройство, чтобы пользоваться им как вторым телефоном, либо просто поставить на полку. Часто объектом такого вожделения становятся «народные» телефоны, имевшие в былые времена огромную популярность в странах СНГ. К ним можно отнести такие модели, как Nokia 3310, Nokia 6230i, Samsung X100, Siemens A60/C60, Motorola C350, Motorola RAZR V3, Sony Ericsson K750i и, конечно же, Motorola E398. В своё время о громком звуке из динамиков E398 ходило множество легенд, а благодаря тому, что этот телефон был практически у каждого второго меломана, энтузиастами для него было выпущено огромное количество всевозможных кастомных прошивок, патчей и эльфов.



Телефон Motorola E398 и оригинальная коробка.

К сожалению, купить сейчас E398 в хорошем состоянии с рук очень сложно, так как корпус, блок цифровой клавиатуры и джойстик полностью теряют товарный вид за год-другой активного использования. В основном проблемы возникают из-за покрытия Soft-touch, благодаря которому телефон приятно держать в руке, но со временем покрытие начинает стираться и облазить. Такие телефоны массово скупают в Китае, вынимают из них все внутренности, одевают в новые неоригинальные корпуса и продают под видом новых. Но правильнее было бы назвать их Refurbished или «восстановленные». Именно такими аппаратами забиты сейчас все сайты продающие якобы «новые» E398. Часто покупка подобного китайского гаджета портит всё настроение — устройство приходит в скрипящем корпусе, с кривой локализацией клавиатуры и с перевёрнутой клавишей меню. Панельки царапаются и разваливаются буквально за месяц использования и телефон после этого забрасывается на дальнюю полку, а потраченные на него денежные средства становится жаль. Именно поэтому я советую людям не торопиться с покупкой восстановленного аппарата по объявлению в первом попавшемся интернет-магазине, а рассмотреть различные варианты. Например, иногда попадаются телефоны которыми пользовались весьма аккуратно и которые ещё сохранили свой товарный вид. Оригинальный корпус всегда лучше дешёвого китайского барахла, сделанного на коленке. Очень редко на различных аукционах попадаются практически новые Motorola E398, как нереализованные остатки со складов салонов сотовой связи, именно о таком случае я и хочу поведать.

Читать далее Опыт покупки Motorola E398 в новом оригинальном корпусе на ebay.com

Manuals, Others, Reviews

Написание простейших ботов для Telegram на JavaScript и Python

Как всем уже давно известно, в популярном клиенте для обмена мгновенными сообщениями Telegram появилась возможность создавать специальных ботов, которые могут оказаться весьма полезными, будучи добавленными в групповые чаты. Боты могут показывать участникам конференции различную полезную информацию, будь то последние новости какого-либо интересного сайта, погоду или курс валют. Функциональность программ для ботов практически не ограничена, например, можно реализовать бота, который будет отправлять в приватный или групповой чат фотографию с подключенной к компьютеру Web-камеры или мониторить температуру процессора на сервере. К примеру, запустив программу бота на домашнем компьютере, можно будет следить за какими-нибудь его показателями удалённо, просто отправляя команды боту с любого устройства, на котором установлен клиент Telegram. Однако, существует несколько ограничений, которые реализованы на уровне Telegram Bot API:

  • Во-первых, бот не может написать первым, он должен обязательно отозваться на команду пользователя;
  • Во-вторых, боты не могут отвечать на сообщения друг-друга.

Это сделано для того, чтобы усложнить жизнь различным мошенникам и спаммерам и предотвратить возможность неконтролируемого флуда множества ботов в чатах. Создавая программу, всегда нужно помнить об этих ограничениях.



Дайджест-бот, отдающий накопленные сообщения за день в процессе работы. Скриншот из Desktop’ного клиента Telegram.

Для сообщества любителей мобильных гаджетов от Motorola — MotoFan.Ru существует весьма активная конференция в Telegram, участником которой я также являюсь. Мной было замечено, что для того, чтобы отметить значимое событие, произошедшее в течении дня, или какую-нибудь важную информацию, пользователи часто прибегают к использованию тега #digest. Подобным тегом отмечаются сообщения, которые по мнению участников конференции необходимо добавить в сводку текущий событий. При этом посетители группового чата, которые появляются в конференции достаточно редко, могут не читать огромное количество оставленных ранее сообщений, а выделить с помощью тега #digest только основную информацию. Но для этого им нужно воспользоваться поиском тега по сообщениям и попрыгать по листингу чата, что достаточно неудобно. Поэтому возникла идея создания дайджест-бота, который будет накапливать и сохранять все сообщения участников конференции, отмеченные тегом #digest за какой-либо срок, например, за неделю, а потом выдавать их скопом по команде /digest в чат. Это весьма удобно, в отличие от ручного поиска необходимых сообщений.

Читать далее Написание простейших ботов для Telegram на JavaScript и Python

Dev, Manuals, Others

Рендеринг и сглаживание шрифтов в GNU/Linux, как в MS Windows 7

Мне очень нравится Microsoft’овский моноширинный шрифт Consolas, разработанный Luc(as)’ом de Groot’ом специально для технологии сглаживания ClearType. На мой взгляд, основное из преимуществ этого шрифта — это перечеркнутый нуль, сильно отличающийся от буквы «O». Ну и полная поддержка кириллицы, разумеется. Однако в некоторых дистрибутивах GNU/Linux с отображением текста с помощью этого и некоторых других шрифтов не всё так гладко, в прямом и переносном смыслах.


Шрифт Consolas, изображение взято с en.wikipedia.org
Шрифт Consolas, изображение взято с en.wikipedia.org

Перенесенные из MS Windows «*.ttf»-файлы шрифта никак не хотели отображаться у меня в Linux Mint 15 KDE, так же, как и в Windows 7. Субпиксельное сглаживание, применявшееся в этом дистрибутиве, постоянно «размазывало» текст, отображаемый этим шрифтом, делая его невероятно отвратным. Иногда было невозможно отличить жирный текст от нормального.

К счастью, немного погуглив в интернете, я наткнулся на замечательный проект infinality, энтузиасты из которого разрабатывают патчи для библиотеки freetype. Благодаря этому проекту можно не только улучшить качество рендеринга шрифтов, но и тонко настроить способ субпиксельного сглаживания: имеется несколько предустановленных схем, которые имитируют популярные технологии рендеринга текста в различных операционных системах.

Читать далее Рендеринг и сглаживание шрифтов в GNU/Linux, как в MS Windows 7

Manuals, Others

Расширение функциональности программы Cool Reader

Я очень люблю читать электронные книжки различных форматов на своем ноутбуке. К сожалению, удобных программ для чтения электронных книг формата *.fb2, не так уж и много. Из наиболее известных можно отметить FBReader и Cool Reader; обе программы разработаны отечественными программистами. FBReader является де-факто стандартной читалкой, используемой в дистрибутивах GNU/Linux, а Cool Reader, на мой взгляд, больше подходит для MS Windows.



Интерфейс программ для чтения электронных книг. FBReader и Cool Reader в операционной системе MS Windows 8.1 (кликабельно)

У FBReader’а в Windows, по моему мнению, просто ужасный интерфейс; зато имеется возможность использовать любой системный шрифт. Версия Cool Reader’а для Windows может быть собрана с использованием различных фреймворков графических интерфейсов: кроме нативного Win32 API тут имеется Qt и WxWidgets. Кросс-платформенная Qt-версия Cool Reader’а выглядит весьма лаконично, но, увы, отсутствует возможность использовать какой-либо другой системный или пользовательский шрифт, кроме тех, что отмечены автором, как наиболее подходящие. Честно говоря, возможность использовать кастомный шрифт в Cool Reader имеется: для этого необходимо в корневой директории с программой создать папку «Fonts/» и положить туда любимые *.ttf-шрифты. Но ведь весьма велика вероятность, что любимый шрифт уже давно установлен в систему, а *.ttf-файл удален. Я считаю, что возможность использования любого установленного в систему шрифта — это наиболее правильное решение.

Читать далее Расширение функциональности программы Cool Reader

Manuals, Others