среда, 6 октября 2010 г.

Определяем наличие перенаправления stdout в Bash и Ruby

Момент, в принципе, тривиальный и во всех документациях расписанный. Однако, выпишу, чтобы самому не забыть.

Задался я недавно вопросом: как определить, отправляется ли стандартный вывод на консоль, или же перенаправлен другой программе или в файл. Зачем это нужно? Например, может возникнуть желание в консоли его «раскрасить» разными цветами. Тогда как в случае перенаправления красивости будут лишними и, вероятно, даже мешающими.

суббота, 14 августа 2010 г.

RDia — иерархия классов и модулей Ruby для GraphViz

Возникло у меня желание автоматом создавать граф иерархии классов и модулей Ruby в формате DOT для последующей обработки утилитами GraphViz. Вообще-то такая возможность есть в штатном автодокументаторе RDoc, но она меня не устроила — немного не то, не настраивается, не во всех шаблонах доступна.

Немного поковырялся и написал, благо Ruby поддерживает богатые возможности самоисследования. Базируется работа программы, которую я решил обозвать RDia, именно на них, а не на разборе кода, ибо очевидно, что транслятор Ruby с этим разбором справится дешевле и качественнее. Кроме того, этот подход позволяет отображать и классы/модули, созданные динамически.

Собственно файл я выложил на гугльдоки, его можно скачать, посмотреть и сделать исполняемым. Вообще, с ним можно делать что угодно в рамках GNU GPL.

Под катом подробное описание и примеры.

воскресенье, 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.

Вообще, ситуация с кириллическими шрифтами продолжает оставаться печальной.

среда, 3 марта 2010 г.

1Cv8.1 и розница

Если стоит задача автоматизировать розницу в восьмерке, нужно выбирать (в зависимости от конкретных обстоятельств) использовать ли «Управление торговлей» или «1С: Розница» — в принципе, любая из них подходит. Что не подходит категорически, так это их сочетание: использовать УТ как бэк-офис к РТ в качестве фронта, не то, чтобы невозможно, но неудобно до крайности — например, скидки все равно придется настраивать и отслеживать во фронте — обмен по ним банально не предусмотрен.