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

Различные мануалы и статьи.

Опыт сопряжения 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

Обновление дизайна блога: создание шаблона 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

Компиляция Mozilla Firefox, Mozilla Thunderbird и Instantbird в дистрибутивах GNU/Linux

К сожалению, в репозиториях различных дистрибутивов GNU/Linux содержатся не совсем свежие версии популярных программ. Эта статья поможет вам скомпилировать из исходного кода последние релизы таких программных продуктов, как:



Логотипы Mozilla Firefox, Mozilla Thunderbird и Instantbird (слева направо)

Затем установить их и использовать в своей системе. Все эти приложения объединяет то, что они используют движок Gecko, а их интерфейс построен с использованием кросс-платформенного языка разметки XUL. Firefox и Thunderbird разрабатываются компанией Mozilla Corporation, а Instantbird является некоммерческим проектом, основанным несколькими французскими энтузиастами. Помимо XULRunner, который позволяет использовать для построения интерфейса язык разметки XUL, Instantbird использует libpurpule из проекта Pidgin. Библотека libpurpule позволяет мессенджеру работать со всеми популярными на данный момент протоколами и службами обмена мгновенными сообщениями.

Читать далее Компиляция Mozilla Firefox, Mozilla Thunderbird и Instantbird в дистрибутивах GNU/Linux

Manuals, Others

IDE для MotoMAGX/Dingux?! Легко! Подрубаем Toolchain’s & SDK’s к Qt Creator’у! И не только!

Наверное, каждый кто пытался написать что-нибудь интересное для телефонов Motorola на платформе MotoMAGX или для различных портативных игровых консолей, к примеру, Dingoo A320 или Ritmix RZX-50 на платформе Dingux, сталкивался с жесткой необходимостью использования какой-либо удобной среды разработки. Голая консоль и режимный редактор — это конечно круто и хардкорно, но иногда так хочется использовать полноценную рабочую среду с ее огромными возможностями, а не нагружать свой мозг различными командами консольных текстовых редакторов, которые так неудобны многим разработчикам. Хотя некоторые, особо бородатые спецы, вытворяют с ними такие вещи, что все удобство интегрированных средств разработки невольно меркнет на фоне скорости набора и редактирования текста этими профессионалами в таких вот экзотических программах.



Qt Creator, запущенный в одном из дистрибутивов GNU/Linux (кликабельно)

Поскольку Toolchain’s & SDK’s для платформ MotoMAGX и Dingux можно использовать только в дистрибутивах GNU/Linux, разработчики приложений для этой платформы весьма ограничены в выборе полноценных IDE. Скорее всего им приходится работать либо в KDevelop, либо в Code::Blocks. Но большинство разработчиков вообще не знают о существовании достойных интегрированных сред разработки под GNU/Linux, и предпочитают писать код прямо в любимом текстовом редакторе. Кто-то пишет в Kate, а кто-то в gedit или его форках, ну а некоторые даже осиливают для такого дела vim, а то и emacs!

Но сейчас, к счастью, речь пойдет о весьма зрелой и проверенной на прочность кроссплатформенной IDE, имя которой — Qt Creator.

Читать далее IDE для MotoMAGX/Dingux?! Легко! Подрубаем Toolchain’s & SDK’s к Qt Creator’у! И не только!

Dingux, Manuals, MotoMAGX, Others