Использую в одном своем проекте обмен по протоколу XMPP
, решил выделить это дело в отдельную библиотечку, trivial-xmpp
, может кому-то еще пригодится. Пробовал CL-XMPP, не очень понравилось - зависимостей много и прочих мне не нужных наворотов.
Пришлось включить в библиотеку модифицированные версии XMLS
и CL-SASL
. CL-SASL
избавлена от зависимости от IRONCLAD
, из-за 2-х функций тянуть такого монстра - ужос! Лёгонький MD5
справляется прекрасно.
Зависимости: MD5
, CL-BASE64
, CL+SSL
.
Исходный код: svn co svn://gzip4.pp.ru/proj/trivial-xmpp/tags/rel-0.1
Простейший пример использования:
(defun jabber-bot () (let* ((socket (usocket:socket-connect "xmpp.ru" 5222)) (stream (usocket:socket-stream socket))) (unwind-protect (progn (setf stream (xmpp:xmpp-connect stream "trivial-xmpp" "xmpp.ru" "secreet" :resource "jabber-bot")) (loop for message = (xmpp:parse stream) while message for to = (loop for a in (xmpp:node-attrs message) when (string= (first a) "from") return (second a)) do (xmpp:send (xmpp:message to "hello world" :type :chat :subject "jabber-bot") stream)) (close stream)) (when socket (usocket:socket-close socket)))))
А чем, собственно, не устраивает ironclad? А то ведь получается, что бы поставить многие вещи надо ставить и ironclad и md5, т.е. как бы избыточность на лицо, а установка усложняется. Судя по TODO ironclad можно ожидать, что так появится поддержка base64 и тогда можно было бы смело выкидывать md5 и cl-base64, а вместо них использовать ironclad. Как бы для уменьшения размеров зоопарка.
ОтветитьУдалить>> из-за 2-х функций тянуть такого монстра - ужос!
ОтветитьУдалитьironclad в данный момент выглядит как претендент на роль стандартной криптографической библиотеки, на его фоне md5 - костыль.
>> Зависимости
А я думал что trivial это когда нет зависимостей :)
>> А чем, собственно, не устраивает ironclad?
ОтветитьУдалитьironclad меня устраивает, если его использовать по назначению, т.е. криптографией заниматься, а не для вызова фунции, преобразующей вектор байтов в hex-строку ;-)
>> ironclad в данный момент выглядит как претендент на роль стандартной криптографической библиотеки, на его фоне md5 - костыль.
я ни в коем случае не хотел умалить важность ironclad, просто мне он не нужен в библиотечке, где практически нет никакой криптографии.
>> А я думал что trivial это когда нет зависимостей :)
не знал, может я и погорячился с названием... хотя, если ограничиться insecure коннектом и anonymous login, можно будет выкинуть все зависимости :)
> я ни в коем случае не хотел умалить важность
ОтветитьУдалить> ironclad, просто мне он не нужен в библиотечке,
> где практически нет никакой криптографии.
Да дело не в этом. Сейчас для CL есть проблема с ручной установкой библиотек, ибо это муторно, а нормальный "автоматический способ" только в Gentoo есть. Основа проблемы в том, что в CL очень много очень мелких библиотек. Что бы развернуть, скажем, lisper.ru надо поставить около 70 библиотек. Было бы хорошо, если бы мелкий функционал собирался в достаточно крупных пакетах, покрывающих свою область. Это существенно бы упростило установку пакетов.
да, 70 библиотек - жесть. но, помоему, это проблема только мейнтейнера, разгребать такую кучу. хотя, мне трудно судить, в моей песочнице пока хватает asdf-install. То что много мелких библиотек, да, проще написать на коленке свой велосипед, чем разбираться в чужом коде, особенно мертвом и outdate. А с другой стороны, неужели в CPAN или в питоне, да даже в Java, не так?
ОтветитьУдалитьА собирать мелкие библиотеки в крупные пакеты - кто мешает-то, всё в наших руках ;)
Поддерживаю предыдущих ораторов. Ironclad не такой уж и монстр, если присмотреться, и все такие интересные функции лучше иметь в одном месте.
ОтветитьУдалить