27 марта 2008

Смена предпочтений. Yakuake. Lftp.

Долгое время открещивался от замены Konsole Yakuake'ом. Даже писал скрипт, чтобы эмулировать его поведение. И всё в силу несомненно субъективных причин. Каких-то там пустяков мне в нём не хватало, вроде сеансов. После длительного использования zsh обнаружил, что они не особо и нужны с грамотной системой альясов и вообще использованием всей мощи оболочки. Так что теперь разграничение и синергия. Например, за счёт гораздо более удобного DCOP интерфейса. Хотя думаю, что с переездом на KDE4 возможен обратный переход, уж больно мне там Konsole понравилась.
Так же неохота было разбираться с lftp. Ну что такое, в самом деле, как это может быть консольным... Может, и довольно удобно, опять же с грамотными альясами. К опробированию подвиг один очень капризный и избалованный ftp сервер с полезным контентом. Ничто не дало мне такой гибкости, чтобы общение с данным сервером было удобным. Да и возможности набрать очередь закачек на неделю вперёд и ограничить канал, когда нужно побраузить, многого стоят. Ещё бы как-то обзор был удобнее... стоит над этим подумать.

Обновления weechat плагинов

Вчера в джаббер постучался Ugolnik(оказавшийся русскоязычным и близким по многим интересам человеком), и нанёс непоправимую пользу моим скриптам-плагинам для weechat - указал на пару ошибок и предложил пару идей. А сегодня опробовал и проникся их реализацией. В связи с чем выкладываю актуальные версии: tray.rb, nickserv.rb. Следите за анонсами.

Изменения:

  • Несколько фиксов
  • Даблклик по иконке поднимает терминал и переключает во вкладку с вичатом (для konsole и yakuake)
  • Опция term_type { yakuake, konsole, other }, по умолчанию other, для правильного манипулирования терминалом
  • Правильное отслеживание активности - иконка не активируется при открытом терминале с вичатом (не учитываются прочие вкладки терминала - для konsole и yakuake), деактивируется при открытии терминала (аналогично)
  • Все обработчики сообщений теперь опциональны (опции handle_*)

Чувствую я, пора писать мануал. Скрипт пошёл в массы...

20 марта 2008

Фантастика

1954 Айзек Азимов «The caves of steel» — «Стальные пещеры»
1980-е - первые исследования СПИДа

gpodder - вести с полей

А точнее, из мейллиста разработчиков.
В одном из своих выпусков подкаст обзор *nix блогов обозрел и мой пост про gpodder, который, по мнению ведущего, слишком медленный. В ближайшем релизе планируется существенно уменьшить время старта программы. Соответствующие изменения уже внесены в svn trunk.
Как обычно, релиз следует ждать в конце месяца, особо нетерпеливые могут ставить из svn.

Ошибки и method chaining

If you can make one heap of all you winnings
And risk it on one turn of pitch-and-toss,
And lose, and start again at your beginnings
And never breathe a word about your loss;
If you can force your heart and nerve and sinew
To serve you turn long after they are gone,
And so hold on when theirs nothing in you
Except the Will which says to them: "Hold on!"
R. Kipling. If

Прочитал однажды заметку о минимизации ошибок (вот вам ещё продолжение), внутренне покивал и занёс в шареды. А сегодня окончательно оформилась мысль, когда читал список изменений в ruby 1.9.
Когда я писал плагины к weechat'у, столкнулся с невозможностью использовать method chaining везде, где этого хочется. А всё почему? Потому что такая архитектура, дизайн, если хотите.
Конкретнее. Возьмём какую-нибудь функцию строки, например


str.gsub!(pattern, replacement) => str or nil
str.gsub!(pattern) {|match| block } => str or nil

Она возвращает строку или nil. А это, чёрт побери, объекты разных классов! И если вдруг вернулся nil, то вся правая часть цепи после него идёт нафиг, и сам скрипт идёт нафиг, ибо NoMethodError. Если бы она возвратила пустую строку, то вся цепь бы тихо умерла, никому ничего не сказав, а скрипт бы дальше пошёл. Но не судьба. В итоге - нарастание уродливых if'ов там, где они нафиг не нужны.

Блоки

Коротко и сумбурно, ибо спать пора.
Читать блок=составной оператор.
Что-то меня стукнуло про блоки задуматься. Куда не плюнь - каждый пытается выдумать какое-то своё супер-пупер-охуенное-единственно-красивое-и-элегантное обрамление для блоков (это как с системой стартовых скриптов в линуксе, в какой дистриб не плюнь - везде своя).
А мысль началась с питона, блоки в котором мне не нравятся, хотя некоторые считают, что так короче (типа KISS и всё такое) и нагляднее. Сразу вспомнилось чудесное, очень точно описывающее поведение питона относительно этого.
Руби, хоть и хороший язык, но синтаксис у него - говно, и блоки не исключение. Начинаются одним способом, заканчиваются другим.
Школьная любовь, Паскаль... Begin и end, как много этих буков... Писать мне лень их до сих пор. Но уже начинаются и заканчиваются единообразно (нормальными словами из английского языка) и чётко видно, где начало, где конец блока. Что важно, если учесть, что "заголовок" блока может быть весьма длинным (как в PL/SQL: for var in select... и далее трёхстраничный селект).
Баш, ну это вообще не язык программирования, даже блоки об этом говорят. Ну взять хотя бы их окончания: done, esac... так и хочется сказать громкое fi.
И наконец, что мне всегда нравилось - блоки в C подобных языках. Парные скобки, начинаются и заканчиваются единообразно (одним видом скобок и для любых конструкций), видно, где начало и конец, печатать мало, а если это ещё и визуально приправить грамотно, то и читать станет удобно. Вот с последним пунктом у всех без исключения виденных мною редакторов очень туго. Чуть лучше у Kate и производных, но всё равно не то.
Вот так вот, нет пророка в своём отечестве.

19 марта 2008

Ruby и платформы

Ну вот, после этого поста с учётом этого блога руби теперь окончательно стал восприниматься мной как мультиплатформенный универсальный язык.

Глупый виндовс робко прячет

...пИнгвин - смело достаёт!
Читал и плакал... И это одно из средств защиты.

16 марта 2008

Свободные новости.

Достали уже всякие псевдоновостные ресурсы "про опенсурс" друг у друга новости перепечатывать. Доходило до смешного - после того, как я скачал линуксформат за прошлый год, они ещё неделю публиковали эту "новость". Сейчас вот популярна тема "Опубликована концепция развития свободного ПО в РФ". А что, никого не задевает, что сначала сей документ был выложен в формате doc, закрытом ещё месяц назад, и сейчас лихо заменён на rtf, как будто так и было, а на странице с документом он всё ещё называется концепция.doc?

Бложенны нищие духом

Отслеживая фид с тематическим поисковым запросом по блогам всё больше убеждаюсь в полнейшей неадекватности ЖЖ как источника информации.

09 марта 2008

Google Gadgets

Всё-таки они меня разочаровали, что не допилили должным образом встроенные гаджеты, которые радостно сообщают, что в окне iframe'а они отображаться не хотят (по-русски сообщают, но это слабое утешение), следовательно, в веб-страницу их вставить нельзя. Сторонние льзя, родные нельзя. А жаль, такая красота могла бы получиться... Уже как минимум одно применение вижу, но мечтаю про себя.
UPD: ну и второе тогда уж - в плазму КДЕшную вставлять.

01 марта 2008

Unicode и код

С некоторых, у кого-то давних, у кого-то недавних пор языки стали поддерживать исходники в юникоде. Экая красота вместо sum(array) влепить ∑(array) и балдеть от читаемости и самодокументированности. Потом пошёл ропот на тему переменных, названных на каком-нибудь суахили или санскрите. Ну и вот тут идея возведённая в абсурдный абсолют. Читал и в истерике бился об клавиатуру. Потом задумался - а нет ли возможности нарисовать такой DSL на Ruby?

Скриптинг и GUI

-А бить будут не по паспорту а по морде.

В своё время исключил из ридера rss одного блога. А недавно он меня снова нашёл.
После весьма эмоционального предисловия пошёл смотреть презентацию (кстати, создателям сервиса презентаций руки надо оторвать и пришить обратно к плечам) про шузы, был впечатлён простотой и нативностью.
Однако контраргументов с прошлого раза не поубавилось, и я всё так же могу сказать - а зачем оно мне, если у меня есть Qt? Там и визуальное проектирование, и компилятор пользовательских интерфейсов и знакомые парадигмы, и множество компонентов... И как следствие первых двух пунктов, и самое главное отличие - отсутствие необходимости писать код GUI вручную. Вот опять же товарищ рассказывает, что они уже бороздят просторы мобильных WinCE утройств...
В общем, есть над чем подумать.