Полезная книга: «Применение шаблонов проектирования»

Рекомендую всем для прочтения и выкладываю в ознакомительных целях книгу «Применение шаблонов проектирования, дополнительные штрихи» Джона Влиссидеса в формате Djvu. Копия делалась «для себя».

Применение шаблонов проектирования, дополнительные шаги

Обложка

Рекомендуется к прочтению сразу после прочтения GoF. Несмотря на небольшой размер материала он дает ответы на важные вопросы и развеивает частые заблуждения людей, которые только знакомятся с шаблонами проектирования. В общем — «must have» у себя на полке. Мою вот недавно собака «почитала», т.ч. рад что сделал ее электронную копию.

Проблема с MySQL при больших объемах возвращаемых данных

В одном очень интересном проекте у нас использовался MySQL и Sphinx. Первый в качестве сервера баз данных. Вот только не нужно снобизма. Многие веб проекты его используют. Работает и ладно. Мы поддерживаем все базы данных, которые поддерживает Django. У нас data access layer взят из этого проекта.

Как всегда гром прогремел среди ясного неба. Перестала индексироваться база событий с ошибкой, ноги которой растут из MySQL:

indexer --all --rotate -c /home/vs/app/sphinx.conf
Sphinx 0.9.9-rc2 (r1785)
Copyright (c) 2001-2009, Andrew Aksyonoff
using config file '/home/vs/app/sphinx.conf'...
indexing index 'events_eventssphinx'...
ERROR: index 'events_eventssphinx': sql_query: Incorrect key file for table
'/tmp/#sql_15e2_1.MYI';
try to repair it (DSN=mysql://root:***@localhost:3306/scrapy).
total 0 docs, 0 bytes
total 368.361 sec, 0 bytes/sec, 0.00 docs/sec
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg

Читать запись полностью »

Столкновение с SGMLParser’ом

По воле случая на последнем месте работы познакомился с каркасом для сбора данных с web сайтов Scrapy, который реализован на Python. Сфера его использования — сбор структурированных данных со страниц. И хотя его область применения достаточно широка и включает в себя мониторинг и автоматизированное тестирование, но использовали мы его по большей части для сбора информации с сайтов. О самом фреймворке я напишу позже. Сейчас же опишу одну проблему, с которой я столкнулся, реализую один проект «для себя».

Читать запись полностью »

Шаблонная рекурсия

Когда я в прошлый раз писал о рекурсии, то намеренно не стал писать о рекурсии шаблонной. Во-первых это огромный пласт метапрограммирования, на трюках основано множество интересных вещей, о которых хочется поговорить отдельно, а во-вторых в тех заметках я акцентировался прежде всего на рекурсии времени исполнения (run-time). Шаблоны же, как всем мы знаем — это артифакты времени компиляции. Читать запись полностью »

Берегись рекурсии смолоду (Часть 2)

Продолжим с того же самого места, на котром мы остановились в первой части этой статьи. С решения проблемы ухода от рекурсии при обходе файловой системы или любой другой иерархической структуры. Сделать это можно примерно следующим кодом, в котором я использую внутреннюю очередь заданий для обхода: Читать запись полностью »

Берегись рекурсии смолоду (Часть 1)

Существует несколько тем в программировании, которые преследуют меня на протяжении достаточно долгого времени. Примером может служить механизм обхода файловой системы. Но рассказать я хочу не о нем (обходе) а о рекурсии и о том почему и как ее стоит избегать. По крайней мере при использовании императивного подхода к программированию.

Давайте предположим, что мы должны написать программу для обхода файловой системы. Для упрощения не будем рассматривать случаи сканирования удаленных файловых систем, ftp сайтов и прочих «утяжеленных» случаев. Допустим, что нас интересует именно обход локальной файловой системы. Читать запись полностью »