Маленькие открытия
Dmitry Vasiliev 22:12, 2008 12 8Думаю не стоит сомневаться, что каждый из нас постоянно делает для себя какие-либо маленькие открытия. О некоторых можно даже написать. Вот, например, пара интересных моментов которые я недавно для себя открыл:
Где-то месяц назад я выбирал подходящий механизм сериализации данных для передачи их по сети. В итоге оставалось посмотреть на два варианта:
- Twisted Banana - протокол сериализации из пакета Twisted;
- Механизм сериализации из пакета Google Protocol Buffers;
В конце концов оказалось, что эти механизмы сериализации практически идентичны. Только если в Banana у байта типа установлен старший бит, а у данных старшие биты сброшены, то в Protocol Buffers все с точностью до наоборот. Кстати, не очень понятно почему в Google сделали именно так - мне кажется, что версия Twisted более оптимальна...
Второй момент совсем свежий и связан с библиотекой GPGME (GnuPG Made Easy). Все началось с того, что для одной из задач мы быстро набросали обвязку для GnuPG с помощью модуля subprocess. Позже у меня появилось время оптимизировать этот код и я подумал, что наиболее оптимальным вариантом будет написать Python-обвязку для библиотеки GPGME. При этом я рассчитывал через нее получить прямой доступ к функциям GPG... Было смешно узнать, что эта библиотека делает тоже самое, что мы написали с помощью subprocess. :-)
Comments All comments
Comment by Konstantin Khomoutov on 03:25, 2008 12 9
Самое смешное, что все известные мне биндинги к gpg, как выяснилось, просто запускают бинарь gpg.
Это весьма неудобно для таких применений, как instant messaging.
В итоге мне очень интересно: можно ли в принципе реализовать в gpg что-то вроде SMTP- или DICT-подобного протокола, чтобы можно было один раз (при старте программы) зацепить gpg за стандартные потоки ввода/вывода и скармливать ему данные на stdin, читая stdout/stderr, примерно так, как работают редиректоры в HTTP-прокси?
Comment by Dmitry Vasiliev on 12:54, 2008 12 9
Меня больше интересует доступ напрямую к библиотеке, но я пока в процессе... По идее это не должно быть сложно, но настораживает, что они сами так не стали делать. :-)
Comment by Dmitry Vasiliev on 13:02, 2008 12 9
Кстати, ответ есть в FAQ: http://www.gnupg.org/documentation/faqs.en.html#q4.16
Comment by Konstantin Khomoutov on 16:32, 2008 12 9
Знаешь, мне кажется, что эти "security issues" сводятся к боязни за кривую (де)инициализацию.
А вот разработчики OpenSSL почему-то не забоялись сделать по уму сразу. Она ещё и thread-safe, насколько я помню.
Comment by Dmitry Vasiliev on 12:50, 2008 12 10
Да, непонятно, чего они боятся.
Мне пока нужна только часть функционала, так что RFC4880 должно помочь. :-)
Comment by bialix on 14:47, 2008 12 10
Сегодня увидел, для меня это тоже забавное но открытие:
Сегодня исполнилось 15 лет игре DOOM.
В ОС Windows порт 666 обозначен как зарезервированный для Doom (например, в Windows XP это можно увидеть, открыв файл windows\system32\drivers\etc\services).
Comment by bw on 20:21, 2008 12 18
Год подходит к концу и для себя уже можно подытожить, какое-же открытие было самым значимым. Для меня, это случайное открытие, Twisted Perspective Broker (это RPC, если грубо) в начале лета. Считаю что за прошедшие полгода я очень неплохо поднаторел в этом вопросе. Сейчас активно использую PB в одном коммерческом проекте, моя в восторге :-).
Так же получил в этом году очень интересный опыт по использованию Twisted в GTK-клиентском приложении, хотя это, конечно же не открытие :-). Не сразу удолось совместить философии работы интерактивного синхронного GUI-приложения и асинхронного сетевого движка.
..bw
Add comment