Tuesday, September 30, 2008

Выложил реализацию recaptha на erlang

Сегодня обнаружил, что на googleсode выложили реализацию протокола openid. У нас в компании тоже есть реализация протокола openid - но она не полная, там не все особенности протокола реализованы - только наиболее важные для реализуемой нами системы.

Посоветовавшись мы решили выложить часть кода которую мы реализовали полностью для протокола recaptha чтобы не отставать:-) Результаты можно посмотреть здесь. Также выложена часть внутренней документации - как пояснение работы этого кода (на русском языке - так как было для внутреннего использования). Будет настроение переведу на более распостранненый в IT сфере английский.

Sunday, September 21, 2008

Ура:-) UTF8 работает в mc

Сегодня я наконец исправил установочный скрипт mc в используемом мною дистрибутиве, теперь русские буквы отображаются правильно и сроки не разжижаются - до сих пор я менял локаль, чтобы хоть как-то пользоваться mc(уж очень меня это досаждало). Теперь у меня красиво с подсветкой табов (показываются стрелочки) и все надписи ровненькие и не появляются в разных частях экрана. Пытался прикрутить патчи от CRUX, fedora и gentoo:-) Подошли объединенные скрипты :-)

Из федоры взял перекодировку манов и надписей. Падчи поддержки не подошли от нее(не компилировались исходники).

Нашел patches от CRUX все заработало, но версия mc (4.6.1) не поддерживала отображение табов стрелочками и надписи верхнего меню немного были неправильного размера.

Решил попробовать еще раз, но от генту (она использует patches от дебиана) и все заработало теперь мой любимый mc(4.6.2-pre1) работает как мне нужно:-)

Потом решил на этом не останавливаться и попробовать установить новые иксы - как раз вышла новая меса. Оказалось у меня в системе(в дистрибутиве) стоят почти последнее версии пакетов нужно было вручную обновить только xorg, libdrm и mesa. Обновил - запускаю, а у меня появильсь 3D ускорение(r4xx) - теперь можно в игрушки в линуксе запускать. И довольно неплохо - демки тунеля показывает 150 fps в игре gl-117 - 35 кадров(только какие-то глюки с клавой). И это на gpl дровах:-). Пропроритарные у меня не смогли откомпилить модуль ядра и не запустились - и во общем-то не очень и хотелось возиться с установкой приложения с закрытыми исходниками.

Из неполностью рабочего остался только wifi(ath5k) - он как-то тормознуто и не всегда стартует. А так если пару раз перегрузить карточу она отликаеться - но пока не очень уверено. Можно конечно написать разработчикам ядра - но пока не нашел кому написать и как правильно нописать описание ошибки. На своем не очень богатом опыте знаю, что правильное сообщение ошибки 90 процентов решения ее.

Относительно патча для gtkhtml - доделал по максимому что хотелось на первый раз подправить и написал в bugzilla gnome - пока не ответили. Надеюсь, что после того как выйдет новый релиз, напишут пожелания относительно моего патча - очень хочется сделать что нибудь хорошее!

В общем ура:-)

Sunday, September 14, 2008

Исправление gtkhtml

Для исправления моего проекта, решил немного подправить:
  1. не поддерживал иные кодировки кроме utf, нужно было перекодировать исходный текст страниц;
  2. не корректная кодировка в передаваемом запросе.
Результат моих изменений можно посмотреть в папке patches.

В исходном коде удалена перекодировка entity - так как кодировка определяется после разбора кода страницы. В разборе удалена перекодировка строк и проверки на соответствие последовательности байт utf, теперь код только копирует части строк. При запросе из разобраного дерева tokens они перекодируються и заменяються Entity. В результате рендеринг отображает страницу в правильной кодировке, если кодировка указана в заголовке ответа или через указание http-equiv. Для перекодировки при формирование запроса заменил код http_encoding_string - теперь при вызове указываеться кодировка в которую нужно перекодировать строки. Данные о кодировке беруться из htmlengine.

В коде остались такие проблемы:
  1. в gtkhtml храниться кодировка хотя там она не как не используеться - нужно перевести на использование кодировки указаной в htmltokenizer
  2. в htmltokenizer есть код в цикле добавляющий по одному символу в буфер нужно заменить на strcpy
  3. существуют проблемы перекодировки на mail.ru заголовки сылок заменяються знаками вопроса

Thursday, September 11, 2008

Портирование приложений на 64 битные платформы

К вопросам всегда ли равны указатели разным целым типам и почему стоит избегать преобразований.

Так как размеры могут не совпадать и компилятор вполне может что предположить например привести к какому-то типу ( наприме ошибка из-за которой на новом компиляторе gcc 4.3.x не компилируеться erlang) . Если не изменять типы указателей маловероятны ошибки когда на разных платформах приложения работают по разному. Даже без особеностей адресации и доступа к памяти как на ppc.

И еще маленькая идея - не передавать в скриптовые языки указатели преобразовав их в целые числа - гораздо удобнее создавать для них хеш и передавать вместо них скриптовому языку именно его. В результате мы получим возможность точно кантролировать какие области используються как переданные скрипту и управлять памятью. И мы получаем достаточно безобасную работу с указателями.
(Идея содрана как мне кажеться с интерфейса работы с gobject c Python и c управления памятью .NET(C#)).

P.S. Еще близкое к этой теме.

Saturday, September 6, 2008

Open Source Job Hunting:-)


No comments, OSCON 2008.

Семинар It-Talk


Обнаружил себя на фотографиях с семинара. Семинар очень понравился. Как я понял: он являлся сокращённой версией внутреннего курса, хотелось бы прослушать весь курс.

Содержание можно посмотреть по ссылке выше.

Жаль только что пропустил первый семинар.

Saturday, August 23, 2008

Простенький броузер

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

Так как в то время я решил поробовать основаный на исходных кодах дистрибутив Lunar в нем firefox не коппилился под 64 разрядную архитектуру. А пользоваться инетом скартинками хотелось:-)

Маленькое отступление:
  1. Выбор был основан на том что дистрибутивы основаные на пакетах я уже пробовал - не понравилось: так как все равно сам все пытался перекомпилить и установить не стандартные версии :-)
  2. И перешел на LFS все сам руками установил:-) Поставил нужные мне версии приложений - создал подобие системы установки используя как основу скрипты из установщика Gnome - Garnome.
  3. Он у меня простоял полгода:-) И тут мне захотелось купить ноутбук. Вот он как раз AMD64 и не него я решил перенести результаты своих трудов - и появились проблемы на 64 битной платформе все было не так гладко: не мог подобрать нужные драйвера под контролер жеских дисков -- нашел нужны а он у меня после компиляции отказывался работать.
  4. И я вернулся на Ubuntu:-) но долго терпеть не мог. Так Gentoo стояла у моего друга на компьютере, я решил найти что - то подобное, но не Gentoo - в ней был старый гном, а Lunar более новый(мне тогда это казалось достаточно важным - теперь я не особо замечаю различия между версиями или они действительно стали очень мелкими).
  5. И выбор был сделан с тех пор я пользуюсь им:-) Не все конечно так отлажено как в Gentoo, но очень даже не плохо:-)
И после этой короткой(а может и не очень) исторической справки маленькое описание броузера:
  1. он может нормально обрабатывать кодировки пришедших страниц(gtkhtml понимает только utf8) ;
  2. он может отобразить html стриницу с картинками:-);
И имеет несколько мелких ошибок:
  1. Он оправляет запросы в независимости от исходной кодировки страницы utf;
  2. Очень часто ошибаеться в относительных путях если часть стриниц имеет разный путь откуда отсчитываеться относительный путь (причина очень проста - в gtkhtml не храниться кодировка страницы и путь с которого она загружена - сейчас не могу говорить точно может уже и исправили);
  3. И ужасный интерфейс без кнопочек назад и указание на какую страницу только в логах на терминал.

Вот и весь проект...