Google выпустил, на мой взгляд, отличную книжку Browser Security Handbook, где в одном месте собрано большое количество информации по всем основным браузерам. Обычно такого рода информация собирается по крупицам при попытках тестирования ошибок о которых сообщают пользователи Web-приложений. В целом - рекомендуется всем, кто занимается Web-разработкой.
Несколько лет назад на сайте был мой файл конфигурации для Vim. Позже, при изменении сайта я его убрал, но недавно меня настойчиво :-) просили его вернуть. Итак, встречаем - пример полной конфигурации для Vim: vimrc. Ссылка на файл находится на страничке с примерами т.к. у всех разные предпочтения и использовать чужую конфигурацию без внесения изменений может быть не комфортно, но при этом она может быть хорошей стартовой точкой для собственной конфигурации.
Выложил очередную статью, которую я писал для журнала Системный Администратор - описание HTTP-сервера Nginx.
Как-то я немного выпал из разработки Zope 3, да собственно и впечатление было, что большинство разработчиков занялись своими проектами. Вроде собирались делать регулярные релизы и потом как-то все заглохло. При этом жизнь вокруг Zope продолжается - всего пару недель назад был на IRC-собрании фонда Zope по поводу принятия нового устава. Устав, кстати, приняли единогласно. :-)
В итоге, сегодня обнаружил ветку обсуждений в рассылке Zope3-Users насчет состояния Zope 3. Получается, что как-то по-тихому решили больше не выпускать релизы, а просто потихоньку делать отдельные пакеты. Как-то я этот момент упустил, хотя все нужные рассылки постоянно читаю. Плюс мне такое решение не очень нравится - получается, что флагманский проект по этой технологии растворили в других проектах... :-(
Думаю не стоит сомневаться, что каждый из нас постоянно делает для себя какие-либо маленькие открытия. О некоторых можно даже написать. Вот, например, пара интересных моментов которые я недавно для себя открыл:
Где-то месяц назад я выбирал подходящий механизм сериализации данных для передачи их по сети. В итоге оставалось посмотреть на два варианта:
- Twisted Banana - протокол сериализации из пакета Twisted;
- Механизм сериализации из пакета Google Protocol Buffers;
В конце концов оказалось, что эти механизмы сериализации практически идентичны. Только если в Banana у байта типа установлен старший бит, а у данных старшие биты сброшены, то в Protocol Buffers все с точностью до наоборот. Кстати, не очень понятно почему в Google сделали именно так - мне кажется, что версия Twisted более оптимальна...
Второй момент совсем свежий и связан с библиотекой GPGME (GnuPG Made Easy). Все началось с того, что для одной из задач мы быстро набросали обвязку для GnuPG с помощью модуля subprocess. Позже у меня появилось время оптимизировать этот код и я подумал, что наиболее оптимальным вариантом будет написать Python-обвязку для библиотеки GPGME. При этом я рассчитывал через нее получить прямой доступ к функциям GPG... Было смешно узнать, что эта библиотека делает тоже самое, что мы написали с помощью subprocess. :-)
Новая версия подсветки Python 3.0 для Vim версии 3.0.0. Внимание: Только для Python 3.0! Изменения:
- Добавлена поддержка для интернациональных идентификаторов;
- Добавлена поддержка для новых строк и бинарных данных (bytes);
- Обновлена поддержка для чисел;
- Обновлена поддержка для str.format;
- Добавлены новые встроенные функции появившиеся в Python 2.6: "ascii", "exec", "memoryview", "print";
- Добавлено новое ключевое слово: "nonlocal";
- Удалено исключение "StandardError";
- Удалены встроенные функции: "apply", "basestring", "buffer", "callable", "coerce", "execfile", "file", "help", "intern", "long", "raw_input", "reduce", "reload", "unichr", "unicode", "xrange";
Скачать можно здесь:
- http://hlabs.org/vim/highlighting.html#python - скрипты подсветки синтаксиса на HIGH Labs;
- http://www.vim.org/scripts/script.php?script_id=790 - все версии python.vim на Vim.org;
Пришлось достаточно долго повозиться с этой подсветкой - слишком много изменений. Отчеты об ошибках приветствуются. :-)
Ухх, уже полтора месяца я ничего не писал здесь. Для меня одним из самых интересных событий, произошедших за это время, был выпуск Python 3.0. Большинство новых возможностей появившихся в нем я уже описывал в отдельной статье. Конечно, нужно еще многое сделать, что бы все внимание разработчиков перешло к 3-й ветке Python, но выпуск первой версии - это уже большой шаг.
Также я обещал постепенно выкладывать статьи которые я пишу для журнала Системный Администратор и сегодня я добавил очередную статью про распределенную систему контроля версий Bazaar.
Как и обещал, выкладываю первую статью которую я написал для журнала "Системный Администратор" (#8 за 2008 год). Читаем - "Профессиональное использование консоли с помощью GNU Screen".
Теперь буду раз в месяц выкладывать остальные (еще 2 уже точно есть). Самое смешное, что статью про Screen я задумал написать еще в году 2001-м, наверное, и в итоге написал только под давлением жестких сроков. :-)
Последнее время стал уделять много времени AJAX (возможно даже из этого получится что-то интересное ;-) и больше всего проблем, как и всегда, с Internet Explorer. Вот пара моментов:
IE жестко кэширует все HTTP запросы через JavaScript. Соответственно, если не добавлять к HTTP ответам, например, вот такие заголовки:
Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache
, то каждый запрос сработает ровно по одному разу.
Если в IE динамически создавать таблицу через DOM, то нужно в обязательном порядке создавать элемент tbody. Без него таблицу никто не увидит.
Только сейчас заметил интересное изменение появившееся в PostgreSQL 8.2. Для INSERT и UPDATE добавили опцию RETURNING и теперь можно делать вот так:
INSERT INTO table (value) VALUES ('value') RETURNING id;
Теперь потерял свою актуальность наиболее часто встречавшийся вопрос: "Как получить значение поля SERIAL для только что добавленой записи?".