31 января 2009

Escaping Unicode in Ruby

Ещё одна крупица мудрости и благодати позволит преобразовывать non-ASCII символы в строке в их экранированный Unicode эквивалент вроде \u0444:

1 class String
2   def escape_unicode
3     unpack('U*').map {|c| c < 0x80 ? c.chr : '\u%04x' % c}.join
4   end
5 end


>> puts "фывыфdd".escape_unicode
\u0444\u044b\u0432\u044b\u0444dd

Работает и в 1.8 и в 1.9.
Воистину, Ruby велик и Hal Fulton его пророк.
По мотивам одного перлового модуля. Короче в 5 раз.

29 января 2009

Midori, Mer, Nokia Internet Tablets, webkit.



Это именно то, о чём я так долго мечтал и считал единственно приемлемым для NIT - легковесный webkit-based браузер вместо того убожества, которое есть сейчас. Его ещё конечно нужно допиливать, в частности хилдонизировать, но это уже мелочи.
Собственно сама основная новость - выход Mer - не менее важна, читать рукоммендую тут.

26 января 2009

Дата в maemo

Приложение "Часы" в ITOS, скажем так, несколько странное, и при установке даты заставляет устанавливать не часовой пояс, а город, в списке доступных городов моего города нет, более того, города, по которому назван мой часовой пояс, там тоже нет! Такого бредового подхода я нигде не видел, да везде можно установить свой пояс в Asia/Yekaterinburg! Так что открываем рутову консоль и колдуем стандартное

echo "Asia/Yekaterinburg">/etc/timezone
date 01252055 (см. UPD)

Доступные временные зоны можно поглядеть так: ls -R /usr/share/zoneinfo/, а время записывать в формате ММДДЧЧмм.
Ещё +1 к карме и +5 к кошерности девайса.
UPD: я тут сам был и других ввёл в заблуждение. Оказывается, maemo не сохраняет системное время в аппаратные часы, что приводит к тому, что после перезагрузки время опять возвращается на круги своя. Из используемого в maemo busybox стандартная утилита для синхронизации системного и аппаратного времени hwclock была вырезана. Установить аппаратные часы можно так:
/mnt/initfs/usr/bin/retutime -T 2009-01-25/20:04:36

При этом время нужно указывать UTC (или гринвическое, как удобнее называйте).

23 января 2009

Таблетка от головы

Вот читаешь этих аналитиков по девайсам - это смех какой-то. Вот вам статья: Таблетка от (для?) счастья, аж с тремя фактическими ошибками, написанная владельцем (!) девайса.
1. микрофон в корпусе есть. Проверено лично разговором в скайпе.
2. DVD-рипы без дополнительного пережимания смотреть не получится даже в mplayer'е, процессора не хватит. Могут быть флуктуации, но в общем случае это так и обсуждено не раз и скрипты для конвертации уже все написали.
3. Звук там нормального уровня, только его, как и подсветку, искуственно занизили, но тут уж и правда, сразу не обнаружишь такую программу как aumix, впрочем, нужная тема на форуме находится на раз в поисковиках. Это, кстати, самое слабое место - при втыкании наушников звук снова приглушается, так что можно считать, что автор почти прав.
Тем не менее, остаётся согласится - в качестве плеера не тянет. Впрочем, это моё временное мнение. Например, в ванной посмотреть фильм - милое дело.
PS а за регистрацию без поддержки OpenID "им надо в раковину нассать".

11 января 2009

Not Rails

Вот вам кусочек кода Rails разработчика, пример того, что бывает, когда в уме Ruby is Rails:

35     def admin
36       unless logged_in?
37         redirect_to home_path
38       else
39         true
40       end
41     end

Сразу видно, что язык как таковой он не знает. Иначе бы назвал функцию "admin?" Но это так, незнание идиом, мелочи. А вот то, что она будет всегда возвращать true (или поднимать exception) станет сюрпризом, если использовать эту функцию в проверках. А всё потому что возвращать она будет статус редиректа как результат unless.
Поэтому надо всё-таки учить Ruby, или иметь кого-то, знающего его, для code review.