Archive for the ‘Кодинг’ category

Sequoia изнутри: заключение

Август 28th, 2009

Разбор полётов

В общем, сегодня решил, что ну её нафиг, эту Sequoia. Ибо я так и не нашёл в сети реализации класса, выполняющего бэкап данных СУБД ORACLE для Sequoia.
Разработчики много чего обещают, пророчат чуть ли не светлое будущее, а на самом деле ничего сверхнового и революционного в ней нет.
Изначально я думал, что разработчики написали свой парсер SQL-выражений под каждый движок, на деле же всё оказалось проще и прозаичнее: SQL-запросы тупо транслировались в базы.
Про атомарность транзакций я вообще молчу: в подобной архитектуре она в принципе не может быть реализована.
» Read more: Sequoia изнутри: заключение

Sequoia изнутри #3

Август 27th, 2009

Пролог

В предыдущем посте я описал, на какие грабли пришлось наступить, чтобы заставить Sequoia создавать таблицы в RecoveryLog и запускать backends. Тем не менее, сама работа контроллера по-прежнему оставалась некорректной, и, как выяснилось, без правки исходников решить проблему никак не получалось.
» Read more: Sequoia изнутри #3

Sequoia изнутри #2

Август 27th, 2009

Введение

Собственно, после первой неудачи с RAIDb1, изложенной в этом посте, я решил воспользоваться такой фичей, как RecoveryLog. Для этого ещё раз перечитывал туториал по созданию виртуальной БД.
» Read more: Sequoia изнутри #2

Sequoia изнутри #1

Август 27th, 2009

Как бэ вступление

По работе возникла необходимость синхронной рабты с кластером БД (4 базы, в которых должны храниться одни и те же данные). Для этого я несколько месяцев подряд писать тулзу data_proc (коммерческая разработка), которая обрабатывает данные в поточном режиме и устойчива к connection-loss/database-failure ошибкам. Единственный недостаток – это хранение данных на локальном диске в виде журналов, объём которых достаточно велик, если база несколько часов находится offline.
Помимо data_proc у нас есть ещё куча других приложений, для которых пришлось писать балансировщик нагрузки для SELECT-запросов, с чем мы успешно справились. Тем не менее, вопрос балансировки нагрузки и кластеризации (с целью упрощения data_proc) остался, и мне предложили разобраться с C-JDBC, о чём я и буду сейчас писать.
» Read more: Sequoia изнутри #1

Миграция на WordPress

Август 22nd, 2009

Итак, как обещал, пишу свои впечатления от миграции на WordPress.

Прежде всего хочу акцентировать внимание на то, почему я всё же решил «слинять» с LiveJournal. Окончательной причиной такого решения стала тотальная кривость движка ЖЖ, которая меня очень сильно поражает. Почему я для того, чтобы удалить запись, должен жать на 3 кнопки (править – удалить – согласен) вместо того, чтобы воспользоваться всего двумя (удалить – согласен). Зачастую даже путаешься в интерфейсе для того, чтобы совершить простейшую операцию – перейти из личного кабинета в блог и наоборот. Ну а также не удовлетворяют тормоза в работе, сильная перегруженность контента ЖЖ и ВНЕЗАПНО появившаяся реклама.

Тем не менее, недостатки, как выяснилось, у WordPress тоже в наличии, но они не такие большие.
Прежде всего претензии к плагинам, работающими с ЖЖ: ни lj-xp, ни lj-user работать нормально не хотели. Ну если в lj-xp всё не так страшно и ограничивается только мелкими патчами кода, неработающего на новой версии PHP, то о плагине lj-user можно сказать только то, что автор вообще не знал, чего писал. Это просто БЫДЛОКОДИНГ, и результат этого быдлокодинга тупо вешал движок Wordpress при, казалось бы, элементаной операции обработки текста. Заведомо практически не зная PHP, я написал нормальный плагин lj-user, который не вгоняет в вечный цикл движок WordPress, и именно поэтому считаю стирание исконного автора из комментариев справедливым.

Именно поэтому я публикую исправленные версии плагинов у себя на сервере:
LJ CrossPost (lj-xp).
LJ User (lj-user).

В общем, надеюсь, вам эти плагины тоже помогут.

Низкоуровневая оптимизация в Java?

Май 25th, 2009

По работе пришлось столкнуться с парсером файлов. Нужно парсить относительно простые структуры любой вложенности. Собственно говоря, для этого возникла необходимость написать токенайзер (заранее извиняюсь, если правильное название этой штуке будет разборщик лексем).
Соответственно, без посимвольного разбора не обойтись. Вариантов получения символов два: либо из CharSequence, либо из InputStream. Когда был готов алгоритм, скорость разбора строки меня не впечатлила: всего около 100 строк в секунду.
Почему? Давайте разбираться.

Разбор полётов

Говнософт.

Апрель 19th, 2009

Надеюсь, все знают, что такое говнософт, чем он опасен и почему его не следует использовать.

Моё личное мнение, что за говнософт, который предоставляется госструктурам и сделан сами знаете как (из названия), контору-производитель нужно вообще закрывать, а программистов признавать непригодными для работы инвалидами умственного труда.

К чему это? А вот, знакомимся с этим чудом человеческой мысли.

Сдаётся мне, что даже студент-эникейщик сделал бы лучше.

UPD: Как выразился один человек в камментах моего товарища:
на откат идет как минимум 50-70%. после этого, на оставшиеся 1 млн ген. подрядчик нанимает за 500 т.р. субподрядчика. из этих денег — 200 т.р. манагер, 150 т.р. накладные расходы, аренда и т.д. остается на 1-2 студенто-месяца. что вы еще хотите за такие деньги?
***ть, дайте мне 2.4 ляма, я вам за 6 месяцев нормальный софт напишу в новой квартире :) .

Кодирование Хаффмана.

Апрель 16th, 2009

Забавно, но стал в последнее время замечать, что на мой сайт регулярно заходят в поисках алгоритмов сжатия по Хаффману. Да, будучи студентом второго курса, я изучал этот метод кодирования и даже написал демонстрационные программы для сжатия/распаковки файлов (от реальных их отличают некоторые ограничения в использовании). И даже написал три статьи (по теории, кодированию и декодированию) в набиравшем в своё время обороты журнале eXcode eZine, который, к сожалению, скончался.

Тем не менее, статьи у меня остались, и две я уже выложил у себя на вики в разделе «Статьи». Третью всё пока не соберусь перевести из html в wiki-формат.

Тем не менее, мой сервер регулярно штурмуют вопросами вроде «Пример реализации алгоритма Хаффмана на языке C++». Что ж, мне приятно, что труд мой не пропал для кого-то даром. Тем не менее, также берёт обида за то, что такие вещи можно и самостоятельно реализовать, благо алгоритм кодирования/декодирования очень прост.

Для холивара.

Апрель 13th, 2009

Надо сказать, что в предыдущей заметке про inline-ассемблер было написано не всё, а также допущена масса грубых ошибок, которые были выявлены и исправлены в процессе компиляции исходников при помощи GNU C++.

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

Я не доверяю коду, который сгенерировал компилятор, до тех пор, пока не посмотрю его листинг. В Open Watcom листинг объектного файла можно получить при помощи утилиты wdis:
Листинг 1

Inline assembly: GCC + Watcom.

Апрель 8th, 2009

Задумался о кросс-компиляции моего ядрышка GCC (сейчас пока компилируется только Watcom’ом).

Первый большой и краеугольный камень – это, конечно, ассемблерные вставки. Поэтому был придуман механизм, чтобы минимизировать писанину и дублирование ассемблерного кода для обоих компиляторов. С этой целью я сделал некий заголовочный файл, в котором объявил:

Хитрый код…