пятница, 28 августа 2009 г.

Python сакс

Пусть меня пинают Питонисты (если поймают), но всё же отпостю первое впечатление от Python. Буду жестоко сравнивать с Ruby, в который я влюбился сразу после "руби за 25 минут".

При просмотре базовой документации, наткнулся на кучу стандартных либ. Отлично, если вы работаете аникейщиком. Для остальных хватит 1-5 лайб, наличие/отсутствие которых можно определить перед тем как писать скрипт на Ruby. В конце концов существует Perl с его CPAN'ом. Там дофига (дофигааааааааааааааааааа) модулей, но это не значит что Perl лучше.

Отступы.
Якобы способствуют красоте кода. ЯКОБЫ. На самом деле тот, кто не слышал про K&R может намутить ТАКОГО, что brainfuck позавидует.

Классы. Я готов смириться с идиотским синтаксисом и «вездесуваемым» self'ом. Но, какого черта каждой функции объекта надо передавать указатель на сам объект ? Вдумайтесь. ОК. Что с инкапсуляцией ? Ответ прост. Нет её !
Возьмем класс
class One
pass
Инитим
one = One()
А далее делаем то, что не позволяет делать ни один нормальный язык.
one.gopstop = «gopstop»
И это срабатывает ! Мы даже можем обратиться к этой переменной.
print(one.gopstop)
> «gopstop»
Вот такая вот «хренофишка». А я — то думал, как пишутся геттеры и сеттеры... :)

суббота, 22 августа 2009 г.

Ruby encoding

Продолжая писать бота для травиана, решил заточить под руби 1.9. Думал просто запустится... Черта-с два. Не совместим руби 1.9 с 1.8 :( Первое, что пришлось сделать, это добавить
# coding: utf-8
первой строчкой в каждый файло. Следующее, что меня убило, была ругань :
in `scan': incompatible encoding regexp match (UTF-8 regexp with
ASCII-8BIT string) (Encoding::CompatibilityError)

на строчку :
res = main_page.scan(/#{pr}:(.*?)<\/table>/m).to_s

Задолбал всех вопросами, однако ответа так и не получил. А решалось всё довольно просто
main_page.force_encoding "UTF-8"

Дальше выяснилось что [].to_s работает не так как в руби 1.8 Пришлось переписывать некоторое
количество строк.

Пытался собрать документашку из сырцов руби, ибо на оф. сайте. документашка почему-то для 1.8 :(,
однако ничего не получилось. rdoc сначала скушал всю память, затем убил все проги, а потом и сам
"Убито". Ладно, ничего, буду юзать ri...

воскресенье, 16 августа 2009 г.

Ruby рулит

Написал программу на Ruby строк эдак на тыщу. Под линуксом все работало, но у меня никак не доходили руки потестить ее под виндой. Я боялся, что моя программа работает только у меня. Тут обрадовал один поц. Пишет, значится, так и так, запустил... под виндой. Всё работает с пол-тычка. Я аж присел. Вот что значит НАСТОЯЩАЯ кросс-платформенность ! Жалко что про Ruby/Tk я такого сказать не могу...

четверг, 13 августа 2009 г.

RedFlag Linux

RedFlag. Тащусь. Братья китайцы знали что делали когда собирали дистр. Первый дистр который у меня заработал "из коробки". Тут всё. Можно сразу смотреть фильмы, гулять по инету или же пострелять в Nexuiz. Замечен один косяк - не переключалась раскладка. Фиксил добавлением/модификацией трех строчек (в секции "Input Device")
Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:ctrl_shift_toggle"
...

Сегодня грохнулись Иксы. Не мог войти под юзером. По ходу дела выяснилось, что просто не было места на диске. Поубивал не нужные... фильмы. Запустилось. Выяснилось что полетели все настройки X'а и дрова. Решил восстановить. Хотя, честно говоря, не очень-то и надо было... И без Nexuiz люди живут :) Слил дрова. Нормально. Только не захотели из под икса
ставиться. Обломался после нажатия CTRL+SHIFT+F2..F3 Запустился под рутом при помощи доп строчки для ядра - init=/bin/bash Загрузилось, на напрочь отказалось что-либо компилить (так и не догнал - почему). Решил сделать проще. chmod a-x X :) Черта-с два. Шло на перезагрузку... Решил сделать еще проще. Закомментил последнюю строчку. в /etc/inittab

# Run xdm in runlevel 5
x:5:once:/etc/X11/prefdm -nodaemon

Загрузилось без иксов. Собрал дрова, поставил, подправил xorg.conf (поменял дефолтное разрешение и раскладку). Всё. можно работать...