В одном очень интересном проекте у нас использовался 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
Читать далее…
По воле случая на последнем месте работы познакомился с каркасом для сбора данных с web сайтов Scrapy, который реализован на Python. Сфера его использования – сбор структурированных данных со страниц. И хотя его область применения достаточно широка и включает в себя мониторинг и автоматизированное тестирование, но использовали мы его по большей части для сбора информации с сайтов. О самом фреймворке я напишу позже. Сейчас же опишу одну проблему, с которой я столкнулся, реализую один проект «для себя».
Читать далее…
Когда я в прошлый раз писал о рекурсии, то намеренно не стал писать о рекурсии шаблонной. Во-первых это огромный пласт метапрограммирования, на трюках основано множество интересных вещей, о которых хочется поговорить отдельно, а во-вторых в тех заметках я акцентировался прежде всего на рекурсии времени исполнения (run-time). Шаблоны же, как всем мы знаем – это артифакты времени компиляции. Читать далее…
Продолжим с того же самого места, на котром мы остановились в первой части этой статьи. С решения проблемы ухода от рекурсии при обходе файловой системы или любой другой иерархической структуры. Сделать это можно примерно следующим кодом, в котором я использую внутреннюю очередь заданий для обхода: Читать далее…
Существует несколько тем в программировании, которые преследуют меня на протяжении достаточно долгого времени. Примером может служить механизм обхода файловой системы. Но рассказать я хочу не о нем (обходе) а о рекурсии и о том почему и как ее стоит избегать. По крайней мере при использовании императивного подхода к программированию.
Давайте предположим, что мы должны написать программу для обхода файловой системы. Для упрощения не будем рассматривать случаи сканирования удаленных файловых систем, ftp сайтов и прочих «утяжеленных» случаев. Допустим, что нас интересует именно обход локальной файловой системы. Читать далее…
Комментарии