вторник, 25 августа 2009 г.

Поиск в Yandex для специалистов

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

Ну не важно. Статья про поиск в ЖЖ кубка Яндекса по поиску очень интересная и заслуживает внимательного прочтения. Оказывается, существует огромное количество финтов, которые поомгают сделать поиск более эффективным.

среда, 19 августа 2009 г.

DocBook

DocBook - это такой XML-формат, который "стал стандартом де-факто для разработки технической документации". Т.е. к обычным XML-тегам добавили еще целый набор тегов. После оформления текста (документации, например) по определенным правилам, запускаем XSLT-процессор (xsltproc, например) - и получаем доку.

Вот здесь про это хорошо написано. Еще есть сайты www.docbook.org и www.docbook.ru

[a bit later]
Хм, ссылка 'здесь' оказалась мегаинтересной - на примере создания файлового менеджера для Linux автор показывает, как писать коммерческий софт с использованием Eclipse. DocBook он (и другие технологии) использует по ходу дела. Ссылка на оглавление книжки:
http://www.berdaflex.com/ru/eclipse/books/rcp_filemanager/index.html

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

Юзаешь dll - сделай import library

Usage of DLL libraries require the generation of import libraries in order for them to be called from C/C++ programs in Visual Studio. This is actually quite simple:
  • Use the dumpbin tool provided with Visual Studio to extract the functions exported from the DLL (dumpbin /EXPORTS xxx.dll > xxx.def).
  • Strip this list, so that it only contains the names for the exported functions; one on each line. Let the first line contain the word EXPORTS.
  • Function names can be renamed to account to different naming convensions by writing importname=dllname (e.g. sgemv=sgemv_).
  • Use the lib tool to generate import libraries (lib /def:xxx.def /MACHINE:IX86 /out:xxx.lib).
More details can be found in Microsoft KB131313, and Stdcall and DLL tools of MSVC and MinGW.

[нашел в интернете]

Чуть-чуть о BLAS и Lapack

Не ищите процедуру умножения матриц (или матрицы на вектор) в Lapack. Это для Лапака слишком простая операция. Вот вычислить разложение Шура или сбалансировать матрицу (с целью уменьшения ее числа обусловленности) - пожалуйста.

Умножение матриц есть в BLAS и называется dgemm. Выполняет эта рутина следующую операцию: alpha * op(A) * op(B) + beta * C. Здесь альфа, бета - это числа; A, B, C - матрицы. Ну а op(X) = X или X', в зависимости от флага.

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

MD5 и помидоры

Один знающий человек объяснил, что такое MD5. Это, оказывается, такая технология хэширования - любой последовательности байт однозначно сопоставляет другую последовательность, причем обратное преобразование невозможно.

Использовать MD5 можно, например, так. Мы заводим аккаунт на сервере. При этом на серваке хранится не сам пароль, а его MD5 хэш. При аутентификации мы у себя на компе вводим пароль, хэшируем и посылаем на сервер - там производится сравнение хэшей. Поскольку преобразование MD5 однозначно, сервер пустит только человека с правильным паролем. Кража хэша с сервера ничем не грозит - расшифровать его нельзя.

Видел в сети мнение, что MD5 - это аналог контрольной CRC суммы файла, только в Линуксе. Не совсем так - результат CRC не однозначен (т.е. у разных файлов может оказаться одинаковая CRC).

Да, я еще про помидоры обещал... Так вот - очень вкусное блюдо. Варим макароны, параллельно жарим на подсолнечном масле помидоры. Сливаем воду из макарон, закидываем в них помидоры с подливой и еще немного варим. Выкладываем на тарелку, добавляем ложечку-другую соевого соуса. Едим.

среда, 12 августа 2009 г.

Linux: команда nm

Полезная это штука - nm. Если у нас есть объектник (.o) или библиотека (.a) - говорим

nm file_name

и получаем названия всех функций, которые там определены или объявлены. Утилита помечает названия буквами (почти весь латинский алфавит использует). Буква 'T', в частности, означает, что функция определена в тексте. Если стоит 'U' - это значит, что функция не определена (undefined), видимо она декларируется как внешняя (extern) и ее следует искать в другом модуле/библиотеке.

вторник, 4 августа 2009 г.

Fortran -это страшно

Фортран - это какая-то древняя компьютерная мова, на которой питекантропы кодили свои программы оптимизации поиска мамонтов и графические редакторы для наскальных рисунков...

Если Вам вдруг надо постичь этот язык предков, имейте ввиду, что
* По умолчанию gcc компилирует прогу как код на Fortran 77. Если хочется писать на Fortran90 - используйте опцию -ff90

* Строку с операторами надо начинать с 7й колонки. В начале строки может стоять только ее номер (нужно для циклов) и знак комментария ('*' или 'C')

*Fortran не терпит пустых строк. Все пропуски надо комментировать. Т.е. вставляйте пустые комменты для разрядки текста.

*Функции библиотек, написанных на Фортране можно вызывать из С-кода. Ссылки по теме:
http://www.physics.oregonstate.edu/~rubin/nacphy/lapack/cprog.html
http://icl.cs.utk.edu/lapack-forum/archives/lapack/msg00115.html

Еще вот хорошая ссылка - Средства разработки программ на Линукс-кластере:
http://rsusu1.rnd.runnet.ru/koi8/devlp/cluster.html