← Blog of oldlisper

Мой боекомплект веб-разработчика на Common Lisp

· 20.01.2013 00:00
· original author: archimag

Мой боекомплект веб-разработчика на Common Lisp

  • Hunchentoot - всё ещё лучший веб-сервер на Common Lisp. Работает по схеме "поток на соединение". Надеюсь в будущем у нас будут более современные веб-сервера. В принципе, у меня есть кое-какие наработки для работы под управлением Mongrel2, но на практике я пока использую исключительно Hunchentoot.

  • RESTAS - мой веб-фреймвок, делающий основной акцент на контролёре и повторном использовании кода. Из фреймворков на других языках наиболее близок к Flask (просто удивительно близок если учесть, что основную работу над RESTAS я выполнил в то время, когда ещё не знал о существовании Flask).

  • cl-closure-template - моя библиотека шаблонов, реализация спецификации Google Closure Templates.

  • cl-who - иногда использую её для небольших тестовых примеров, никогда для настоящих приложений.

  • cl-sanitize - моя библиотека для очистки HTML от нежелательного содержимого (совершенно необходима, если пользователям дозволяется вводить html-данные). Вдохновлена Sanitize, откуда были взяты whitelists и тестовые данные.

  • cl-data-forms - моя библиотека для обработки и валидации форм. Вдохновлена WTForms, но сильно от неё отличается.

  • postmodern - заслуженная и уважаемая библиотека для доступа к PostgreSQL, можно даже сказать, что эталонная библиотека для работы с СУБД в мире CL.

  • mongo-cl-driver - моя библиотека для работы c MongoDB. Не сказать, что бы она сильно функциональна, но мне пока хватает. Гораздо раньше появилась cl-mongo, но я считаю её совершенно уродливой как снаружи, так и внутри. Кроме того, mongo-cl-driver умеет работать асинхронно, хотя мне это ещё и не пригодилось (и скорей всего из-за этого дизайна далёк от совершенства).

  • colorize - библиотека для подсветки исходного кода, поддерживает не очень много языков, зато имеет совершенно уникальную поддержку для Common Lisp: превращает все стандартные функции, классы, переменные в ссылки на HyperSpec.

  • cl-docutils - библиотека для обработки разметки в формате reStructuredText. На мой взгляд сильно раздута и малость запутана, но это лучшее, что есть в этом классе для Common Lisp. Другой неплохой библиотекой для обработки языка разметки является cl-markdown, но я не люблю Markdown.

  • local-time - мощная и удобная библиотека для работы со временем.

  • ironclad - мощная и удобная криптографическая библиотека.

  • cl-pdf и cl-typesetting - генерация PDF. Без документации, но с несколькими примерами. Довольно удобные библиотеки, не лишенные своих глюков и особенностей. Я имею форк cl-pdf, который содержит несколько патчей, проигнорированных в основном списке рассылки, самый главный - непосредственная поддержка TTF-шрифтов.

  • salza2 и zip - работа с архивами.

  • cl-sphinx - моя библиотека для создания документации, реализующая некоторые возможности Sphinx.

  • cl-libxml2 - моя первая библиотека. Собственно, с её написания и началось моё глубокое знакомство с CL. Поскольку это был первый опыт, то дизайн, тот ещё. Ну и ресурсами надо управлять вручную. Зато может почти всё, что предлагает libxml2. Даже можно писать свои расширения для XSLT-процессора.