20071031

Идея: планета русских *nix блогов

Кратко

Единая RSS-лента всех известных мне линукс-блогов на русском языке.

А вместо блог-ролла у меня теперь список последних постов в этих линукс-блогах. Добавлен он вот так:


Проблема


Вот читаю регулярно всякие русские линукс-блоги, а всех нас — так и не знаю. В этом отношении у пользователей ЖЖ с его системой друзей и сообществ удобств больше: им проще узнать друг о друге. А мы узнаём друг о друге в основном случайно.

Да, есть поиск... Но честно говоря, я им не пользуюсь. Почти. Только чтобы перед тем, как писать длинный пост, проверить, что тему никто до меня сильно не пахал, то есть, чтобы не делать двойную работу :)

Да, есть блог-роллы, по которым никто не кликает...

Да, есть Google Reader, в который можно добавить фиды по очереди всех людей из поиска... А если появиться ещё кто-то, то как об этом узнать?

Решение


А есть зато такая концепция сайта, как «планета». Идея: собрать RSS-фиды со всех независимых личных блогов членов сообщества и соединить в единый поток. Смотрите, например, http://planet.debian.org/.

Это удобно: появляется естественное единство сообщества, при этом каждый волен вести свой блог так и там, где ему вздумается. А интересующийся может не подписываться на каждый из блогов по отдельности. Можно подписаться на фид «планеты».

Есть уже для этого готовый скрипт: http://www.planetplanet.org/. Для PlanetPlanet нужен Python и cron на сервере. У меня доступа к такому серверу сейчас нет. Зато я узнал, как объединять несколько RSS потоков в один с помощью Google Reader-а. Для начала, я решил, чтобы испытать идею — и это сойдёт. А что вышло — смотрите в конце поста.

Итак, я взял список ссылок на известные блоги с http://iar.spb.ru/doku.php, вытащил из них вот таким скриптиком ссылки на фиды, преобразовал полученный список фидов в OPML формат (онлайн-конвертер здесь), и загрузил в свой Google Reader, добавив к тем блогам, которые у меня там уже были. После этого пошерстил список на предмет соответствия заявленной тематике (об этом ниже). Затем просто пометил их одним тегом, сделал этот тег общедоступным и отжёг выданный мне RSS на feedburner.

Теперь все русские *nix блоги (из моего списка) можно читать на одной странице, как «планету». И даже можно на них подписаться на все за раз.

Теперь о критериях отбора. Членом клуба может быть примерно такой блог:
  • индивидуальный
  • на русском языке
  • посвящённый использованию или разработке GNU/Linux, *BSD или другого свободного программного обеспечения или родственным темам (как минимум 80% — тематические посты)
  • где есть интересное и уникальное содержимое (а не копипаст)


Новые блоги будут добавляться (и удаляться) мной вручную, если кажутся подходящими (заявку на вступление в клуб писать в комментарии) или неподходящими. Благо сообщество линукс-блоггеров достаточно небольшое. Адрес фида такой: http://feeds.feedburner.com/ru_nix_blogs

Ну как вам такая идея, нравится? Если затея понравится — может доживём до полноценной планеты :)

20071030

Сертификат подлинности Debian

С планеты Debian прилетело:

Сертификат подлинности Debian
SVG-исходник прилагается


Сертификат подлинности Debian[, который можно и не показывать].

«Легализуйте вашу копию Debian, предоставьте подтверждение, и помогите нам бороться с пиратством».

P.S. См. также сертификаты подлинности Ubuntu и Fedora.

20071018

Русский подкаст с новостями о GNU/Linux

С недавних пор я начал-таки слушать подкасты, и обнаружил, что это довольно хорошая штука. Почти как интернет-радио, только слушать «передачи» (mp3-файлы с выпусками подкаста) можно слушать в удобное время. Работает это так: добавляем ссылку на RSS-ленту подкаста в программу для прослушивания, после этого новые выпуски будут скачиваться автоматически (или вручную, как настроено). Я слушаю подкасты в Rhythmbox, но и других программ в GNU/Linux для этого хватает.

К чему я всё это пишу — нашёл, похоже, первый русский подкаст посвящённый именно новостям о GNU/Linux. Подкаст ведёт некто skid. Вышло уже три выпуска, и получается у товарища skid довольно хорошо. Каждый выпуск — это дайджест новостей примерно за неделю. Вот ссылка на RSS-ленту подкаста.

Обзор мобильных устройств с GNU/Linux

Хочу дать ссылку на интересный и довольно толковый обзор КПК, смартфонов и других мобильных устройств на базе GNU/Linux.

Краткое содержание:
  • Sharp Zaurus — фактически мёртв,
  • Nokia 770, N800, N810 (Maemo) — продуманы и удобны, подают надежды,
  • OpenMoko Neo1973 — железка уже есть, софт ещё в разработке,
  • Qtopia Greenphone — скорее мёртв, чем жив,
  • Intel MID — внушает надежды, но пока только на картинках,
  • ACCESS Linux Platform — надежд на неё мало.
Я бы добавил сюда ещё дешёвый субноутбук ASUS eeePC, который хоть и не совсем карманный, но уже продаётся. И по умолчанию на нём тоже установлен GNU/Linux.

Nokia N810: интернет-планшет, теперь с GPS

Хотя у меня до сих пор нет интернет-планшетика Nokia, отношусь я к ним с большой симпатией. Нравятся и возможности устройства, и то, что внутри — линукс...

Вот сегодня узнал о выходе новой редакции планшета: N810. В отличие от уже известной всем N800 — в N810 будет модуль GPS и выдвижная клавиатурка. Ещё в N810 будет 2 ГБ встроенной флэш-памяти (но на один разъём для карт памяти меньше). Также с новым устройством будет идти и новая версия операционной системы, OS 2008, несовместимая с предыдущей. Впрочем, старую N800 тоже можно будет обновить до OS 2008, и оба устройства будут продаваться и поддерживаться одновременно.


сравнение N800 и N810


Подробности можно прочитать в других блогах. Ориентировочная цена $479 + налоги. Конечно же, это за океаном.

Для меня наличие в планшетике GPS — большой плюс. Уже давно задумываюсь о приобритении карманного GPS-устройства. Мне почему-то кажется, что новая версия устройства может стать ещё популярнее предыдущей.

Дополнение: 500 наиболее активных разработчиков и участников проекта Maemo (включая авторов документации, блоггеров и остальных) могут получить новый планшет всего за 99€. Условие — общедоступный вклад в развитие платформы. Новички могут поучавствовать в конкурсе на скидку, выдвинув интересные идеи. Подробнее — в этом объявлении.

20071017

Делаем из текстового файла PDF с подсветкой синтаксиса

Есть такой полезный инструмент diff, чтобы смотреть, какие строки изменены в файле. Иногда же мне хочется получить красивую распечатку этих самых изменений. Это можно сделать, скормив текстовый вывод diff программке enscript:
$ diff -u файл1 файл2 | LANG=C enscript -Ediffu --color -o changes.ps && ps2pdf changes.ps && rm changes.ps && xpdf changes.pdf

или, в случае использования svn,
$ svn diff | LANG=C enscript -Ediffu --color -o changes.ps && ps2pdf changes.ps && rm changes.ps && xpdf changes.pdf
Ключевой момент — это вызов enscript, который создаёт файл changes.ps (параметр -o changes.ps), где удалённые и добавленные строки подсвечены разными цветами (-color), в соответствии с синтаксисом diff (-Ediffu).

Кстати, кроме подсветки синтаксиса diff-ов, enscript умеет подсвечивать и многие другие форматы файлов, включая большинство распространённых языков программирования. Загляните в /usr/share/enscript/hl/.

Да и результат можно сохранить не только в PS, но и в HTML. Так, чтобы «раскрасить» файл с текстом программы на C++ можно сделать следующее:
$ cat hello.cc | enscript -Ecpp --color -whtml -o hello.html
А если сделать алиас
alias hidiff="enscript -Ediffu --color -wansi -o -"
то смотреть «подкрашенный» diff можно прямо в терминале:
$ svn diff | hidiff


К сожалению, enscript не работает с уникодом. Поэтому если файлы написаны по-русски в кодировке UTF-8 — ничего хорошего не выйдет. Да и дату, если локаль русская, он скорее всего попытается отобразить кракозябами… В общем, мне обычно надо сравнивать куски кода или текста на английском, где русских букв нет, и такого решения хватает.

20071015

Vim-LaTeX: обзор пакета

В блоге «Всё о Vim» появился неплохой обзор пакета Vim-LaTeX, предназначенного для интеграции системы вёрстки LaTeX и текстового редактора Vim.

Пакет добавляет возможность быстрой вставки стандартных «окружений» LaTeX (своего рода мини-шаблоны), функцию быстрой компиляции документа (\ll) и предварительного просмотра (\lv), словарь команд LaTeX со встроенной помощью по ним и автодополнением (CTRL-X, CTRL-K).

От себя замечу, что пользователям Debian/Ubuntu можно не устанавливать Vim-LaTex вручную, а воспользоваться уже готовым пакетом vim-latexsuite.

20071014

Как набирать с клавиатуры ударения в словах

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

Однако как ставить ударения в русских словах — я до сегодняшнего дня не знал, пока не прочитал замечательную статью «Как ставить ударение» в блоге Словомания. Идея состоит в том, что в таблице символов уникода уже имеются специальные «дополняющие диакритические знаки», которые изменяют идущие перед ними или после них символы. В частности, символ U+0301 ставит нужный штрих над предыдущей буквой.

U+0301 COMPOSING ACUTE ACCENT


С помощью этого символа можно легко ставить ударение над любой буквой, даже над «ы́» (и над согласными!:)). К сожалению не во всех шрифтах и программах этот символ выглядит правильно. В частности, в некрасивом поведении замечен шрифт Verdana. Зато программы, которые не умеют его обрабатывать — обычно просто его игнорируют. Это удобно.

В HTML набирать ударения просто. Достаточно набрать ́ после буквы, на которой должен стоять знак ударения. Пользователи Windows могут набирать ударение, нажимая клавишу Alt и набирая код символа на цифровом блоке клавиатуры…

А вот набирать ударение с помощью Compose-последовательностей оказалось непросто.

Дополнение 07.02.2008:
Позднее я нашёл гораздо более простой способ настраивать произвольные Compose-последовательности, рекомендую использовать именно его, а не то, что описано ниже.


В списке стандартных последовательностей дополняющего знака ударения нет.

Выход я нашёл такой:
  1. взял исходники дополнительных методов ввода для GTK+ Latin Plus,
  2. в таблице Compose-последовательностей (файл src/imlatinplus.c) повесил дополняющее ударение на место знака апострофа, который я могу набрать с клавиатуры напрямую, без Compose:
    RCS file: /cvsroot/gtk-im-extra/gtk-im-extra/src/imlatinplus.c,v
    retrieving revision 1.9
    diff -r1.9 imlatinplus.c
    325c325
    < GDK_Multi_key, GDK_apostrophe, GDK_space, 0, 0, 0x0027, /* APOSTROPHE */
    ---
    > GDK_Multi_key, GDK_apostrophe, GDK_space, 0, 0, 0x0301, /* COMBINING ACUTE ACCENT */

  3. собрал и установил Latin Plus с дополняющим ударением.
После этого в приложениях, использующих GTK+, можно выбирать метод ввода Latin Plus и набирать ударение, нажимая последовательно Compose, апостроф и пробел после символа, над которым нужно поставить знак ударения.

выбор метода ввода Latin Plus в GTK+


К сожалению, у такого подхода довольно жёсткое ограничение: работает только с приложениями, написанными на GTK+.

Набрано в gedit: «Приве'т, интерне'т!»


Да и со шрифтами ситуация далеко не радужная. Из установленных у меня шрифтов правильно ударение отображается в Arial, Arial Black, Arphica PL Kaiti, Bitstream Charter, Bitstream Vera Sans, Bitstream Vera Serif, Century Schoolbook L, Comic Sans MS, Courier 10 Pitch, DejaVu Sans, DejaVu Serif, Free Avant Garde, Free Bookman L, Free Courier, Free Helvetian, Free Helvetian Condensed, Free Paladin Roman, Free Sans Medium, Free Schoolbook Roman, Free Serif, Free Times Roman, Georgia, Impact, Nimbus Roman No9 L, Nimbus Sans L, Sans, Serif, Teams, Times New Roman (слишком высоко), Trebuchet MS, URW Bookman L (слишком слева), URW Gothic L, URW Palladio.

Неправильно: Andale Mono, Bitstream Vera Sans Mono, Courier New, DejaVu Sans Mono, Free Chancery Italic, Free Mono, Kochi Gothic, Kochi Mincho, Monospace, Nimbus Mono L, Sazanami Mincho, Terminus, Verdana.

Всё это относится, естественно, только к набору ударений средствами уникода. В LaTeX же ударения можно набирать как всегда:
Прив\'ет, мир!


Результат обработки строки «Прив\'ет, мир!» в LaTeX


Резюме. Средствами уникода можно набирать ударения в словах, для этого после буквы, на которую падаёт ударение нужно поставить символ U+0301. В HTML он набирается так: &#x301;. Для прямого набора этого символа с клавиатуры требуются ухищрения. Способ работает не со всеми программами и не со всеми шрифтами. Пользователи LaTeX могут набирать ударение, не прибегая к уникоду, поставив \' перед нужной буквой.

P.S. В списке стандартных Compose-последовательностей отсутствую также такие нужные для набора русского текста знаки как многоточие («…», U+2026) и знак номера («№», U+2116). Похоже, имеет смысл или делать для себя отдельный метод ввода для русского (модифицировав Latin Plus, например), или просить разработчиков Xorg и GTK+ добавлять указанные символы в их обычные таблицы. Есть какие-нибудь другие идеи?

Дополнение 07.02.2008:
Я нашёл простой способ настроить клавишу Compose с помощью файла ~/.XCompose.

20071004

Сравнение 9 программ для построения графиков

Как известно, среди пользователей GNU/Linux довольно много людей из академической среды, то есть тех людей, которые наблюдают, измеряют, вычисляют, сравнивают и пишут в конечном итоге научные статьи. Эта работа обычно сопряжена с графическим представлением информации или визуализацией. В простонародье — построением графиков. Именно о программах, для этого предназначенных, и пойдёт речь.

Я сравнил 9 свободных программ для визуализации двумерных и одномерных данных. Все эти программы доступны в GNU/Linux, а многие — доступны и пользователям других операционных систем. Все 9 программ позволяют строить такие графики, которые не стыдно показывать или печатать. Это то, что называется «publication quality».

Выбор программ ограничен теми, которые предназначены для визуализации одномерных или двумерных данных. Под одномерными (1D) данными я подразумеваю отображение одного одномерного множества на другое, например функциональную зависимость y = sin(x). Под двумерными (2D) данными я подразумеваю отображение двумерного множества на одно- или двумерное, например функциональную зависимость z = x*x + y*y или векторно-значную функцию заданную на плоскости. На мой взгляд, именно визуализация одно- и двумерных данных — самая распространённая задача.

Программы, ориентированные в первую очередь на визуализацию многомерных данных, из сравнения исключены. Однако упоминания все эти программы вполне заслуживают: OpenDX, VTK, MayaVi, Vis5D+. Всё это интересная, но уже совсем другая история. Так же в сравнении не учавствовали программы для построения графов и для других, экзотичных, способов визуализации. Из них стоит упомянуть graphviz и prefuse.

Итак, в сравнении учавствовалии:
  • gnuplot — ветеран отрасли, поэтому с ним знакомы и умеют работать почти все, кому нужны графики; я сам пользуюсь им с удовольствием, поскольку с помощью всего одной-двух коротких команд можно сносно отобразить данные;
  • Gri — менее известный проект, фактически язык программирования для рисования научных графиков; изначально активно использовался для представления географической информации, поэтому здесь полный порядок с изолиниями и цветовыми картами;
  • matplotlib — сравнительно молодой, но богатый возможностями и активно развивающийся проект, является библиотекой для языка Python; особенность matplotlib — синтаксис, приближенный к MATLAB; отсюда и второе название проекта: pylab;
  • PyX — другой пакет для визуализации с помощью Python; выбор между matplotlib и PyX во многом дело вкуса, но надо отметить, что некоторые вещи естественнее делать в одном, а другие — в другом (см. таблицу);
  • Tioga — библиотека для языка Ruby, использующая PDFLaTeX для отрисовки графиков; как следствие — радующий глаз качественный результат, но достаточно крутая кривая обучения (кроме освоения Ruby потребуется разобраться с самой тиогой);
  • Ctioga — та же самая Tioga для тех, кто хочет сейчас и сразу; параметры графика задаются из командной строки, а для его рисования уже используется Tioga; к сожалению, годится Ctioga только для одномерных данных, но для них вполне может заменить gnuplot;
  • GNU plotutils — они же утилитка graph; лично я нахожу её интерфейс менее интуитивным и удобным для работы, а возможности более ограниченными, чем у других программ; однако входящая в тот же пакет библиотека libplot может быть интересна с точки зрения написания своих программ для построения графиков;
  • plotmtv — далеко не новый проект, и, как мне кажется, находящийся в стагнации; отлично справляется с двумерными скалярными и векторными данными; основной недостаток: команды для построения графиков необходимо внедрять в файлы с данными; зато, если файлы в формате plotmtv уже есть, строить графики просто, качество весьма приличное, а основные параметры графика можно поменять и с помощью графического интерфейса;
  • Grace — единственная программа из рассмотренных, в которой можно полностью контроллировать построение графиков с помощью графического интерфейса; к сожалению, именно поэтому мне до сих пор не удалось с ней подружиться; возможности у неё весьма приличные, но годится она для визуализации только одномерных данных;
Надо сразу сказать, что у каждой программы есть свои сильные и слабые стороны. Поэтому выбор подходящей программы — это вопрос, который каждый должен решать сам. Выбор зависит от того, какие данные и в каком формате имеются, какие графики хочется получить, насколько высоки оформительские требования, насколько быстро нужно получить графики и в каком количестве их строить... Приведённая ниже сравнительная таблица должна в этом помочь. Для начала советую обратить внимание на примеры (ссылки на галереи с примерами в таблице), они быстро дадут представление о том, на что эти программы способны.

Я лично пользовался и пользуюсь gnuplot, Gri, matplotlib, Tioga и Ctioga — и доволен каждой из них. Если нужно отрисовать что-то быстро (для себя) — обычно gnuplot, Gri или Ctioga мой выбор. Gnuplot также использую, если нужно отрисовать поверхность уровня. Если нужно рисовать изолинии или цветовые карты по двумерным данным, лучше всего с этим справляются Gri и Tioga. Это может делать и matplotlib, но с ней я познакомился сравнительно недавно и использовал пока что только для разных диаграмм.

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

Сравнительная таблица доступна онлайн на Google Docs, и прямо здесь (правда, придётся использовать прокрутку):



Смотрите также:

Как построить график с изолиниями в gnuplot, gri и pylab
Как строить цветные поверхности в gnuplot в режиме pm3d
Как отрисовывать географические карты и отображать на них данные с помощью GMT