07.07.09
Конвертация словарей Lingvo для StarDict
Рано или поздно сидящего в линуксе человека заедает тоска по словарям уровня/объема Lingvo. Однако в эмуляторах эта прога работает жутко коряво, поэтому сейчас займемся ковертацией её словарей в формат, понимаемый StarDict’ом.
Прежде всего нужно немного хакнуть поставляемый вместе с Lingvo Dslcomp.exe. Для этого потребуется любой hex-редактор. Байты, которые нужно изменять для версий Lingvo 11 и 12 указаны соответственно в источниках знаний [1] и [3] ниже. После хака в окне Dsl compiler’а появляется недокументированная возможность конвертации словарей из формата *.lsd в кошерный *.dsl, что и нужно сделать для всех желаемых словарей.
Далее нужно воспользоваться еще одним конвертером, исходники которого можно взять отсюда в разделе Converter: many to many. Однако разрабов (или меня) чего-то проглючило и без бубна последняя стабильная на момент написания сих слов версия 0.3 не соберется. Необходимо добавить после пары строк, начинающихся с #ifndef …, #define с новой строки в файлы:
- #include <memory> в src/parser.hpp
- #include <string> в src/langs_2to3.hpp
- #include <string.h> в src/normalize_tags.hpp
После этого ./configure && make && sudo make install сработало без проблем.
Далее makedict -i dsl -o stardict DictName.dsl, после чего в каталоге со словарем появится папка, содержащая три файла с расширениями *.dict, *.ifo и *.idx. Папку можно поместить в /usr/share/stardict/dic или в каталог своего пользователя ~/.stardict/dic, после чего перезапустить StarDict. Всё 
Источники знаний в порядке обнаружения авторам которых большое спасибо:
06.21.09
Ландавшиц
Из предисловия к четвертому изданию третьего тома (Квантовая механика) в 1989 г.:
Феноменальное владение Львом Давидовичем аппаратом теоретической физики позволяло ему сплошь и рядом обходиться без обращения к оригинальным работам для воспроизведения тех или иных результатов своим путем.
Е. М. Лившиц
Будем честными, с подобным феноменальным владением примерно половину курса можно было бы заменить фразой «очевидно что»
06.15.09
Братья Карамазовы
1880-й год. Из печати вышли «Братья Карамазовы» Достоевского:
— … А все-таки я бы с твоим монастырьком покончил. Взять бы всю эту мистику да разом по всей русской земле и упразднить, чтоб окончательно всех дураков обрезонить. А серебра-то, золота сколько бы на монетный двор поступило!
— Да зачем упразднять, — сказал Иван.
— А чтоб истина скорей воссияла, вот зачем.
— Да ведь коль эта истина воссияет, так вас же первого сначала ограбят, а потом… упразднят.
— Ба! А ведь пожалуй ты прав. Ах я ослица, – вскинулся вдруг Федор Павлович, слегка ударив себя по лбу…
До реализации предложения Фёдора Павловича осталось около 50 лет…
06.10.09
Gentoo: нет места на системном разделе
Когда ни с того ни с сего появляется сообщение о том, что на системном разделе кончилось место, может подняться паника, особенно если еще вчера, помнится там не меньше десятка гиг было. Спасибо Gentoo mailing lists, просветили и отрекомендовали. Прежде всего нужно отмонтировать все локальные диски, абы быть уверенным, что не произошло накладок типа когда что-то вместо /home/… или /media/… пошло записываться в /root и т. п. (когда такое бывает, мне сказать трудно, но…). Но в данном случае проблема была прозаичнее: случился какой-то глюк, и syslog-ng сотворил 11 гигабайтный (!) файл, который уже для прочтения не открывался ничем.
tail /var/log/messages
я не додумался сделать, а грохнул виновника сразу. Решением проблемы, говорят, есть смена syslog-ng на metalog, который не пишет дубликаты сообщений. В Gentoo смена делается быстро:
rc-update syslog-ng delete
emerge metalog
rc-update metalog add default
06.05.09
Система управления заданиями PBS
Часто для управления выполнением пользовательских задач на кластере используют систему PBS. Она очень проста в использовании, но разрозненные в сети сведения о том, как нужно с ней работать, хотелось бы собрать в одном месте, что я и попытаюсь ниже сделать.
Наиболее часто используемыми программами из системы PBS являются qsub, qdel и qstat. Первая ставит задание на очередь, вторая удаляет его оттуда, а третья позволяет следить за состоянием задания. Прочтите эту запись до конца »
05.27.09
Использование OpenMP: старт
Распараллеливание задач, подчас, бывает крайне необходимой штукой. Однако в самом начале изучения одной из библиотек для этого — OpenMP — сталкиваешься со страшной проблемой: нифига не паралеллится. Итак, раз и на всегда что нужно делать:
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main(int argc, char ** argv)
{
#pragma omp parallel
{
printf("Hello, world!\n");
}
return 0;
}
Теперь компилируем:
alexander@A64x2 ~/Temp $ gcc -fopenmp -c test.c
alexander@A64x2 ~/Temp $ gcc -o test test.o -lgomp
Здесь ключевыми являются флаги -fopenmp и -lgomp, использование которых, похоже, очевидно всему миру кроме меня… А результат выполнения у меня был таков:
alexander@A64x2 ~/Temp $ ./test
Hello, world!
Hello, world!
05.23.09
Мнение изнутри
Книга Торвальда Юргена «Век криминалистики» оказалась потрясающим чтивом. Не могу удержаться от сохранения цитаты из мемуаров одного нью-йоркского полицейского, написанных более столетия назад:
Я слишком хорошо знаю силу столь распространенного у нас союза политиков и полицейских. Я пробовал выступать против этого, но результаты были, как правило, катастрофическими для меня. Местное управление в США осуществляется не так, как в остальном цивилизованном мире. Оно базируется на всеобщих выборах. Избирательные кампании ведутся не ради нужд городов, а лишь во имя целей, преследуемых двумя политическими партиями… Я не верю в то, что хотя бы один человек из пятисот способен объяснить истинные цели каждой из двух партий. Называть их „политическими“ будет ошибкой. Их единственным основополагающим принципом, по крайней мере в Нью-Йорке, является сила и эксплуатация. До тех пор пока такие политики будут влиять на полицию, они будут парализовывать коррупцией полицейский аппарат, которому надлежит охранять имущество и честь граждан… Прочтите эту запись до конца »
05.10.09
Отладчик gdb
gdb, он же GNU Debugger — одно из основных средств отладки в *NIX, при этом консольное. Последнее и послужило причиной написания данной напоминалки. Итак, пусть мы хотим отладить программу prog. Тогда её обьектные файлы должны создаваться с ключем -g, позволяющим отладку:
$ gcc -c prog.c myheader.h -g
$ gcc prog.o -o prog
Теперь можно запустить дебаггер:
$ gdb prog
Запуск и остановка выполнения
- run prog <agruments> — запуск программы на выполнение. Псевдоним: r.
- Остановка: Ctrl+C.
Точки останова (breakpoints)
- break <linenumber> или break <filename.c>:<linenumber> или break <function_name> устанавливает точку останова в определенную строку основного файла проекта, или в файле<filename.c>, или на заход в функцию<function_name>. Псевдоним команды break: b.
- delete — удалить все точки останова.
Список будет пополняться по мере надобности на странице блога.
05.08.09
Метод Рунге-Кутта с адаптивным шагом (Runge-Kutta-Fehlberg)
Метод интегрирования Рунге-Кутта с адаптивным шагом является одним из наиболее часто используемых методов численного решения дифференциальных уравнений. Его реализаций существует довольно много, но наибольшее распространение получил метод Рунге-Кутта четвертого порядка. Для достижения заданной точности применяется изменение шага интегрирования. Можно изменять по-простому, деля шаг на два, и интегрируя дифференциальне уравнение сразу с двумя шагами по сетке, а можно поступить немного иначе: интегрировать дважды с одним шагом, но разным порядком метода. Получается быстрее. Далее приведены три матлабловских скрипта, решающие уравнение
с помощью интегрирования 4-м и 5-м порядками метода. Прочтите эту запись до конца »