elementaryOS

11.01.2019

Совершенно случайно обстоятельства сложились так, что меня в Интернете считают специалистом по настройке и кастомизации elementaryOS. Я до сих пор получаю в почту комментарии к своим старым статьям о том, как довести до ума версии Luna, Freya и Loki. В своё время мне действительно было это интересно, но это время уже позади. Когда в октябре 2018 года вышла версия 5.0 Juno, мне не захотелось делать полноценное руководство для этой системы по довольно банальной причине: это не очень хорошая система. Команда и сообщество elementary очень малы, у проекта очень мало ресурсов на полноценное развитие, не говоря уж о QA. Вы заметили, что у elementaryOS нет форума, полуживые аккаунты в соцсетях, а официальный русский канал в Telegram забит трэшем и школьным ололо в стиле MDK? На этом фоне меркнет даже тот факт, что в сей замечательной ОС нет системного лотка (но его можно вернуть).

На самом деле, с 2003 года, когда я скачивал пакеты kdebase и kdelibs версии 3.2 на нашей кафедре редактирования и издательского дела, почти ничего не изменилось. Во всяком случае, я по-прежнему использую самую лучшую и мощную среду рабочего стола (KDE) и не могу нарадоваться этому. Поэтому в новом году я постараюсь писать больше именно о возможностях KDE Plasma Desktop.

 


Мои статьи в Fedora Magazine

02.10.2018

1234

У меня вышли четыре статьи в популярном журнале для пользователей Fedora Linux.  В частности:

 

  • Растягивание изображений с минимальными потерями (раз и два).

Самой полезной, как мне самому видится, оказалась последняя статья, и именно на эту тему я недавно писал здесь (см. пост про Waifu2x). Однако, надеюсь, что и остальное вам тоже понравится!


Растягивание изображений без потерь

05.09.2018

Надеюсь, у меня получился громкий заголовок 🙂 На самом деле, никакого волшебного растягивания без потерь не существует, разве что в голливудских фильмах. В реальном мире есть неплохой алгоритм xBR для растягивания рисованных изображений, есть удобная программа Smilla Enlarger со своей собственной реализацией этой функции для неплохого увеличения фотографий. Но есть и кое-что получше: Waifu2x. В принципе, у этой программы говорящее имя, ведь тут видны отсылки к аниме и к «увеличению вдвое». Так и есть, Waifu2x отлично справляется с растягиванием именно аниме, и всего, что на него похоже. Но и все прочие типы изображений, включая фотографии, Waifu2x увеличивает очень даже неплохо, как минимум не хуже чем обе другие программы, которые я упомянул выше.

Секрет Waifu2x в использовании двух мощных компонентов:

  • Torch7 — MATLAB-подобной библиотеки для языка программирования Lua с открытым исходным кодом, которая предоставляет большое количество алгоритмов для глубинного обучения и научных расчётов;
  • Nvidia CUDA — набора для разработки приложений, в которых часть вычислений производится на графическом процессоре Nvidia.

Таким образом, для развёртывания Waifu2x в Linux вам потребуются видеокарта Nvidia, адекватная инструкция (наподобие этой), терпение и приличный запас кофе. Однако разработчики Waifu2x cжалились над теми, кто не обладает хотя бы одним из перечисленных выше элементов, и выкатили веб-версию своего конвертера. Теперь растягивание доступно каждому!

Мы же пойдём третьим путём. В недрах Гитхаба, который, слава Богу, не испорчен пока Майкрософтом, нашлась альтернативная реализация нашего растягивателя. Она называется Waifu2x-converter-cpp и отличается тем, что для работы не требуется наличие графического ядра Nvidia. По сути, это «программная» реализация Waifu2x, которая работает только с ЦП (и потому медленнее), но гораздо проще в установке и настройке. Например, для пользователей openSUSE имеется уже готовый пакет, который нужно просто установить. Поскольку у меня не Tumbleweed, а Leap 15, я скачал пакет с исходным кодом и пересобрал его сам, это заняло не более 5 минут.

Для растягивания картинки следует использовать следующий синтаксис:
waifu2x-converter-cpp --scale_ratio <X> -i <исходный файл> -o <целевой файл>

Пример команды:

waifu2x-converter-cpp --scale_ratio 2 -i input.jpg -o output.jpg
К счастью, мне удалось найти графическое приложение, которое позволяет избежать возни с командной строкой. Это Qtwaifu2x, интерфейс к Waifu2x, поддерживающий и Waifu2x-converter-cpp. Выглядит программа просто и лаконично:

В самом простом случае достаточно просто перетащить на окно Qtwaifu2x любое изображение и нажать кнопку. Следует учитывать, что чем больше размеры исходного изображения, тем дольше будет длиться преобразование. Поэтому лучше тренировать на маленьких картинках. Результат должен вас порадовать!

Теперь примеры. Я использовал два тестовых изображения: фрагмент экранного снимка выше и фрагмент городского вида. Оба изображения были растянуты вдвое в программе Krita следующими способами: Кубическим (Cubic),  Фильтром Ланцоша (Lanczos3) и фильтром Box (он же Nearest neighbor). После этого я растянул исходные изображения с помощью Waifu2x-converter-cpp. Посмотрим на результаты (нажимайте на изображения для просмотра в полный размер):

Исходное изображение

 

Cubic

 

Lanczos3

 

Box (nearest neighbor)

 

Waifu2x

Исходное изображение

 

Cubic

 

Lanczos3

 

Box (nearest neighbor)

 

Waifu2x

Спасибо за внимание!


Что полезно знать о приложениях elementaryOS?

03.05.2018

Проект elementaryOS развивает собственную экосистему приложений, которые доступны для установки в фирменном магазине AppCenter. Инициатива, безусловно, хорошая и правильная. Более того, в свете недавнего выхода Ubuntu 18.04 стало окончательно ясно, что рабочий стол Pantheon в elementaryOS намного толковее и удобнее Gnome Shell, как не перекраивай последний. В общем, если вы предпочитаете мир приложений GTK3, то выбор, по большому счёту, будет сводиться к Cinnamon и Pantheon.

Но, возвращаясь к AppCenter, количество новых «курируемых» приложений (сами отцы-основатели называют их приложениями «третьего поколения») явно пошло в ущерб их качеству. Новые маленькие и аккуратные программы отлично выглядят на экранных снимках, но стоит начать ими пользоваться — халтура лезет изо всех щелей. В этом небольшом обзоре я хочу показать скудную функциональность и малую полезность этих приложений. Это становится понятным, если сравнить их с аналогичными программами в составе KDE Plasma (кстати, Kubuntu 18.04 весьма неплох…).

Итак:

1. Desktop Folder — позволяет разместить на рабочем столе elementaryOS папку с файлами, картинку, заметки и т.п.

Desktop

Наиболее очевидная аналогия — стандартная организация рабочего стола в KDE Plasma. Если щёлкнуть правой кнопкой мыши по рабочему столу, выбрать пункт Настроить рабочий стол… и в поле Тип комнаты выбрать значение Рабочий стол по умолчанию, то вы сможете размещать на рабочем столе разнообразные виджеты — плазмоиды. Один из них называется Просмотр папки, и он делает именно то, что пытались скопировать поклонники elementaryOS.

Screenshot_12.png

Разумеется, таких плазмоидов можно добавить сколько угодно. Каждый такой «просмотр папки» обладает богатым набором настроек, где можно исключить из списка часть файлов по фильтру, указать размер, вид сортировку файлов и много чего ещё:

123

Лишний раз напомню, что данный плазмоид является неотъемлемой частью рабочего стола KDE Plasma, ничего дополнительно скачивать или доустанавливать не надо. В списке доступных плазмоидов есть куча других интересных штук, включая заметки и т.д.

2. AppEditor — редактор меню для elementaryOS. Появление подобных сторонних программ для, казалось бы, простых и стандартных действий, говорит об изначальной ущербности и примитивности что Gnome 3, что elementaryOS. Какой смысл было сначала всё упрощать, выкидывая из системы якобы ненужные функции, чтобы потом их потихоньку возвращать в виде костылей и подпорок?

Menueditor

Гораздо правильнее иметь встроенный в рабочее окружение редактор меню, который не просит есть и всегда доступен:

124

3. Color Picker — «пипетка» для захвата цвета из любой части экрана. Позиционируется как инструмент для графических дизайнеров и веб-разработчиков. Отличительное свойство — наличие «лупы», упрощающей точный выбор цвета. В общем, программа действительно хороша, недаром же за неё просят пусть и символический, но полновесный доллар.

Screenshot

Однако же, проблема в том, что при интенсивном использовании Color Picker вовсе не так удобен как кажется. Это станет очевидным после того, как вы попробуете одноимённый плазмоид из стандартной поставки KDE Plasma. У него нет «лупы», но зато есть другие полезные свойства. Во-первых, это плазмоид, следовательно, его можно разместить не только на рабочем столе, но и на любой панели, благодаря чему он вообще не будет загораживать собою что-то на экране.

Screenshot_13

Во-вторых, у этого плазмоида (как и у любого другого) есть возможность привязки к комбинации клавиш клавиатуры.

125

Это очень удобно: вместо наматывания километража мыши, вы просто нажимаете придуманную вами же комбинацию на клавиатуре, и плазмоид сразу же переходит в режим «пипетки».

4. Nimbus — прогноз погоды. Про эту позорную поделку я уже писал. В принципе, тут нечего добавить, т.к. любая альтернатива будет лучше Nimbus по определению.Weather

На моём рабочем столе эта программа показывает погоду так:

Screenshot_14

Фаренгейт убер аллес, лучше не скажешь! Не буду показывать здесь лишний раз великолепный Weather Widget, лучше посмотрите на другой достойный плазмоид:

Screenshot_15

Достаточно оценить количество информации, которую показывает Yahoo Weather Widget и сравнить с Nimbus…

И ещё кое-что напоследок. Желание владельцев elementaryOS собрать с населения денег вполне понятно, но то как это реализовано вызывает ассоциации с окном Овертона. Смотрите сами:

Updates

У всех обновлений теперь есть метка Платно/Бесплатно. У большинства компонентов, естественно, стоит пометка Бесплатно, как у драйверов для Virtualbox на картинке выше. Однако, если раньше бесплатность обновлений была очевидной и не требовала уточнений, то теперь эта невинная пометка говорит нам о том, что чисто теоретически, когда-нибудь, некоторые обновления могут стоить несколько долларов. Почему бы и нет, в конце концов?

Вот такие пироги…

 


Стеганография для всех

14.07.2017

Я часто пропадаю в бездонных глубинах Гитхаба. Там темно, уютно, и иногда попадаются довольно интересные штуки, про которые просто так никто и нигде не пишет. Сегодня я хочу показать проект Doublespeak, который представляет собой простую и незамысловатую веб-страницу на HTML, CSS и Javascript. Однако интерес представляет сам способ применения Doublespeak. Перед нами средство скрытой передачи данных, иначе — стеганографии. Для того, чтобы спрятать один текст внутри другого, Doublespeak использует четыре невидимых символа из таблицы Юникода, а именно U+200B, U+200C, U+200D и U+FEFF. Это невидимый пробел, невидимый неразрывный пробел и два невидимых компоновщика. По всей видимости, они нужны для более аккуратной вёрстки текста, однако один программист из Санта-Клары решил использовать их для четвертичной кодировки текста. Выглядит это волшебно: добавив к видимому тексту секретное послание, вы можете копировать и вставлять этот текст сколь угодно раз в (почти) любых приложениях, на разных операционных системах. Заподозрить неладное можно только посмотрев на размер файла, в котором сохранён этот «особый» текст: закодированное послание занимает в 4 раза больше байтов, чем тот же текст в обычном виде. Поэтому размер итогового текста в байтах можно рассчитать по формуле x+4y, где x — размер видимого текста, а y — размер невидимого текста. Вряд ли кто-то станет заморачиваться этим, особенно если речь идёт об использовании мессенджеров, поэтому данный вид стеганографии можно считать рабочим.


Рунет. est. 1983

12.05.2017

papilio-machaon

Замечено, что с годами в Интернете становится трудно (а иной раз и невозможно) найти то, что когда-то было на виду. Интернет сиюминутен и живёт только тем, что актуально в настоящий момент, при этом контент старше 5-6 лет отыскать иногда непросто, так как поисковик Google благополучно «топит» всё старое где-то в глубинах своей выдачи. Действительно ли Интернет годится в качестве всемирного хранилища информации, как об этом пишут вокруг?

В качестве ответа я приведу любопытный пример. Недавно я вспомнил, что Дмитрий Владимирович Набоков (сын писателя) ещё в 2008 году описывал в своём блоге президентскую кампанию Хиллари Клинтон, уличив эту странно улыбающуюся даму в очередной лжи. В 2008-м году Клинтон не смогла пробиться в кандидаты в президенты США, уступив Обаме (который затем и победил), но уже в 2016-м она была в шаге от победы в президентской гонке. Мне захотелось перечитать мысли Набокова-младшего, но, увы, это с некоторых пор невозможно: в Интернете ничего больше нет. Дмитрий Владимирович успел написать много ценных заметок в период с 2006 года до своей смерти в 2012 году, но этот архив «испарился». Ни в кэше гугла, ни в «машине времени» ничего нет. Получается, что если бы я тогда, восемь лет назад, догадался сохранить HTML-страницы набоковского блога, то у меня сейчас был бы уникальный контент!

Нетрудно заметить, что с точки зрения логики современного Интернета, ценностью обладает лишь то, на что имеется заметный спрос в текущий момент. Всё остальное, получается, никому не нужно. По этой логике содержимое архивов и библиотек тоже, в принципе, не нужно, но, слава Богу, поддержанием настоящих архивов занимается не Google, а нормальные организации. Мне кажется, что безграничная вера в Интернет как надёжное хранилище всего со временем приведёт к усугублению клипового мышления и укорачиванию исторической памяти, что открывает огромные возможности для манипуляции общественным мнением. Люди, живущие сиюминутными устремлениями и обладающие памятью бабочки, идеально подходят для социальных экспериментов. Собственно, уже сейчас имеются примеры полного забвения прошлого опыта: скажем, попытка продвинуть идею о необходимости приватизировать Роскосмос явно рассчитана на новое поколение молодёжи, которое не в курсе печальных итогов приватизации 1990-х. Горизонт исторических событий, который даёт молодым людям Google, не превышает 5-6 лет, а пристрастие к Facebook’у вообще приводит к тому, что человек перестаёт помнить события годичной давности, так что незнание им истории пост-перестроечной России уже не удивляет.

Другая причина того, что Интернет не годится на роль хранилища русскоязычной информации, состоит в том, что изначально российский сегмент Сети создавался для другого. У меня в руках номер журнала Стандарт за ноябрь 2013 года, посвящённый 30-летию Интернета в России. Там содержатся интереснейшие материалы о предпосылках прихода Интернета ещё в СССР. Начиналось всё с конференции по биотехнологиям, которая прошла в декабре 1983 года с участием представителя нашей страны — Анатолия Клёсова. В 1986 году была создана некоммерческая организация San Francisco / Moscow Teleport, которая двумя годами позже получила финансирование от Дж. Сороса ($250 тыс.). Осенью 1989 года американская Ассоциация за прогрессивные коммуникации (APC) создала в Москве компьютерную сеть обмена информацией «Гласнет». Цитата из журнала:

Сеть «Гласнет» была образована на грант в $25 тыс. от фонда Tides Foundation из Сан-Франциско. Проект был запущен под эгидой Международного фонда «За выживание и развитие человечества», который возглавлял академик Евгений Велихов.
Анатолий Воронов, с начала 1990 года выполнявший в «Гласнете» исполнительно-распорядительные функции, вспоминает, что изначально сеть создавалась для обеспечения услугами электронной почты гуманитариев, включая журналистов, правозащитников, учителей и деятелей искусства (выделение моё).

Позже именно «Гласнет» будет активно освещать события августовского путча 1991 года и развала СССР в условиях молчания обычных СМИ.

Как видите, Интернет в России изначально был политическим инструментом, а также площадкой для всех тех, кто спустя десятилетия превратится в наш либерально мыслящий «креативный класс», изначально оппозиционный любой конструктивной деятельности в России. Все те, кто в наши дни попали под искромётную раздачу Л. Н. Щаранского, оказывается, последовательно вскармливались ещё 27 лет назад!

По этой причине у меня своё, особое отношение к инициативам власти по регулированию Интернета. Свобода слова, свобода выбора контента в Сети и подобные лозунги — это дешёвые погремушки, призванные отвлечь охлос от истинного назначения Сети за пределами США. Наводить порядок в этом курятнике правительству РФ нужно было гораздо раньше, конечно. Но всё равно, лучше поздно, чем никогда.

P.S.

О том, какую угрозу обществу несут конкретно Google и Facebook, я напишу в другой раз.


KDE и перспективный формат FLIF

27.01.2017

comparison

В номере №205 журнала Linux Format я писал о новом графическом формате FLIF (Free Lossless Image Format), который превосходит PNG и WebP по сжатию данных без потерь. В комплекте с исходным кодом FLIF (т.н. reference implementation) имеются библиотеки кодировщика и декодера, сам кодировщик, а также простейшее средство просмотра — консольная программа viewflif. С таким минимальным набором вполне можно работать, однако формат, по сути, в этом случае выполняет роль архиватора: ни листать, ни редактировать FLIF-файлы без предварительной конвертации нельзя. Правда, есть ещё набор консольных утилит ImageMagick, который с некоторых пор поддерживает формат FLIF. Приличных графических программ просмотра, которые были бы основаны на ImageMagick, в природе нет, к тому же, большинство готовых сборок ImageMagick собраны без поддержки FLIF и не могут его читать. Хотите поддержку — собирайте из исходного кода сами.

На этом фоне Qt FLIF Plugin оказался глотком свежего воздуха. Данная разработка сделана датским программистом Себастьяном Валем (Sebastian Wahl), который ведёт свой блог и увлекается алгоритмами сжатия изображений. Суть Qt FLIF Plugin проста: в вашем распоряжении появляется разделяемая библиотека libflif.so (не путать с одноимённой библиотекой из состава самого кодировщика FLIF!), которая может быть использована любыми Qt-приложениями, поддерживающими QImageIOPlugins, например Gwenview, Kolourpaint и многими другими. Автор плагина также написал свой собственный минималистичный просмотрщик графических файлов, вполне неплохой!

Итак, для сборки нам потребуется слегка подредактировать файл project.pro, добавив туда строку CONFIG += c++14:

flif1.png

Если этого не сделать, то проект просто не соберётся современными версиями GCC. Затем нужно убедиться в том, что заголовочные файлы FLIF лежат в нужном месте — между прочим, их нужно заранее вручную положить в /usr/include/FLIF:

flif2.png

Далее командуем make и ждём несколько секунд. Получившуюся библиотеку нужно проверить на успешную линковку с кодировщиком FLIF (дело в том, что плагин почему-то иногда не линкуется):

flif3.png

Дальше, нужно установить саму библиотеку, скопировать .desktop-файлы и зарегистрировать соответствующий тип файла для share MIME database. Следующие команды я выполнял из директории ~/qt_flif_plugin/configuraton:
sudo cp ../libflif.so /usr/lib64/qt5/plugins/imageformats/
sudo cp qimageioplugins/x-flif.desktop /usr/share/kservices5/qimageioplugins/
sudo cp imagethumbnail-flif.desktop /usr/share/kservices5/
sudo cp x-flif.xml /usr/share/mime/packages/
sudo /usr/bin/update-mime-database /usr/share/mime

Результат будет заметен сразу же. Во-первых, заработает генератор миниатюр в файловом менеджере Dolphin:

flif4.png

Во-вторых, можно будет смотреть FLIF-файлы в Gwenview, стандартной программе просмотра из набора KDE:

flif5.png

На данный момент можно использовать лишь версию Gwenview 16.08 или более старую, так как из-за этого коммита программа, начиная с версии 16.12, содержит другой механизм поддержки сторонних форматов. Но это уже вопрос к автор FLIF-плагина — надеюсь, он обновит свой код когда-нибудь. Меня же очень радует сжатие, которое обеспечивает FLIF. Только посмотрите:

flif6.png