четверг, 28 октября 2010 г.
среда, 6 октября 2010 г.
Определяем наличие перенаправления stdout в Bash и Ruby
Момент, в принципе, тривиальный и во всех документациях расписанный. Однако, выпишу, чтобы самому не забыть.
Задался я недавно вопросом: как определить, отправляется ли стандартный вывод на консоль, или же перенаправлен другой программе или в файл. Зачем это нужно? Например, может возникнуть желание в консоли его «раскрасить» разными цветами. Тогда как в случае перенаправления красивости будут лишними и, вероятно, даже мешающими.
суббота, 14 августа 2010 г.
RDia — иерархия классов и модулей Ruby для GraphViz

Возникло у меня желание автоматом создавать граф иерархии классов и модулей Ruby в формате DOT для последующей обработки утилитами GraphViz. Вообще-то такая возможность есть в штатном автодокументаторе RDoc, но она меня не устроила — немного не то, не настраивается, не во всех шаблонах доступна.
Немного поковырялся и написал, благо Ruby поддерживает богатые возможности самоисследования. Базируется работа программы, которую я решил обозвать RDia, именно на них, а не на разборе кода, ибо очевидно, что транслятор Ruby с этим разбором справится дешевле и качественнее. Кроме того, этот подход позволяет отображать и классы/модули, созданные динамически.
Собственно файл я выложил на гугльдоки, его можно скачать, посмотреть и сделать исполняемым. Вообще, с ним можно делать что угодно в рамках GNU GPL.
Под катом подробное описание и примеры.
среда, 4 августа 2010 г.
Free Pascal теперь умеет локальные λ
Free Pascal теперь умеет локальные λ. Пример по ссылке.
воскресенье, 11 июля 2010 г.
Мелочевка — скрипт klog
Захотелось мне, чтобы ход работы emerge отражался стандартными уведомлениями KDE. Думаю, многие пользователи Gentoo знают о волшебной команде:
user@host ~ $ tail -f /var/log/emerge.log
Теперь нужно всего лишь направить ее в область уведомлений, не держать же поверх всех окон в процессе работы запущенную консольку. Собственно вот (log-файл задается параметром, чтоб можно было и какие-то другие просматривать):
#!/bin/bash tail -n 1 -f "$1" | while read logline do kdialog --passivepopup "$logline" --title "$1" 10; done;
Остается лишь выполнить:
user@host ~ $ klog /var/log/emerge.log &
суббота, 26 июня 2010 г.
Что-то вроде use.unmask
Disclaimer: Написанное далее может выполняться только на свой страх и риск.
Иногда так бывает, что нужно размаскировать какой-то портеж в Gentoo. А еще иногда бывает, что другие портежи должны его использовать, причем использование это прицеплено к USE-флагу, который также замаскирован в профиле. Штатного средства, подобного /etc/portage/package.unmask
Gentoo не предоставляет — размаскировка флага выглядит нетривиально. Итак. Нам нужно создать файл /etc/portage/profile/use.mask
и занести туда соответствующий флаг со знаком минус. Вот такой хитрый план.
Поясню, что лично я размаскировывал таким образом Ruby 1.9. Те, кто видел, как версия 1.8 работает с русскими буквами (т.е. вообще с юникодом), меня поймут.
Источник сего сакрального знания на Gentoo.ru.
понедельник, 14 июня 2010 г.
Автоматическое определение кодировки mp3-тегов в Amarok и прочих Linux-плейерах
Распространенная проблема — музыкальные проигрыватели под Linux не знают (внезапно), что если кодировка в id3v2 не указана, то надо считать ее cp1251... Вообще-то в Amarok 2 есть функция автоопределения кодировки, но она не работает. Конечно, самый кошерный способ — закодировать теги правильно: id2v1 — в cp1251 (для совместимости с некоторыми телефонами и mp3-плейерами), а id3v2 — в UTF-8. Есть даже специальная софтина — mp3unicode, я о ней писал в ЖЖ. Однако, есть случаи, когда такое решение сильно неудобно. Например, часть музыки у меня с торрентов, и если я ее теги перекодирую, то не смогу стоять на раздаче, а рейтинг, чай, не казенный...
Итак, как же заставить кодировку корректно определяться? Для этого, оказывается, существует прекрасный проект RusXMMS, который поддерживает, в том числе, и gentoo-оверлей. Подключаем его, добавляем глобально use-флаг rcc
, ну и пересобираем, что придется, посредством emerge -pvDN -u world
. Инструкции и ссылки (в том числе на пакеты для других дистрибутивов) см. на странице «Download» сайта проекта.
понедельник, 17 мая 2010 г.
TeXLive–2009 и TeX-Gyre — теперь без кириллицы
Помнится, я когда-то радовался обнаруженному в TeXLive пакету шрифтов TeX-Gyre — для некоторых текстов данный набор подходит куда лучше, чем CM... Не все коту масленица, как выяснилось. В новых версиях пакета кириллица отсутствует. Пришлось откатиться на TeXLive–2008.
Вообще, ситуация с кириллическими шрифтами продолжает оставаться печальной.