Как стать автором
Обновить
0
0
encore @encore

Пользователь

Отправить сообщение

Мониторинг погоды или Cacti HowTo

Время на прочтение5 мин
Количество просмотров14K
Этот пост можно было б начать по разному. Можно по делу: как необходима система мониторинга для поиска ошибок системы и как она помогает обнаружить узкие места. Но, сейчас лето, время отдыха на природе, и начну с того, как я решил узнать, как же часто менятеся прогноз погоды, с помощью популярного средства мониторинга Cacti. Под катом, о любопытный читатель!, тебя ждут рассказы о том как настроить мониторинг произвольных данных в Cacti, да не просто, а с картинками.

итак...
Всего голосов 32: ↑29 и ↓3+26
Комментарии36

Мне кажется, я начал понимать, что ты имела в виду!

Время на прочтение7 мин
Количество просмотров33K
Опечататься дело нехитрое; опечататься в поисковом запросе так и вдвойне. Почитай все большие веб-поисковики сегодня умеют корректировать ошибки в ключевых словах во-1х и подсказывать запросы во-2х; вслед за ними того же хочется поискам поменьше. Обе штуки можно ловко реализовать при помощи открытого поисковика по кличке Sphinx; в этом посте расскажу, как конкретно.

Ну, за did you mean («что ты имела в виду») и прочий query completion («уж не Васю ли ты ищешь»).
Читать дальше →
Всего голосов 84: ↑75 и ↓9+66
Комментарии24

Развертывание Django-проекта под nginx

Время на прочтение3 мин
Количество просмотров17K

Преамбула


Из нескольких способов развертывания Django я сразу отмёл mod_python, потому что мне не хотелось поднимать тяжеловесный Apache. Решил развернуть на легком веб-сервере. На данный момент основных легковесных альтернатив Апачу две — lighttpd и nginx. Первоначально я выбрал первый, но столкнулся с проблемами, связанными с URL. Я подумал, что, может, nginx будет работать получше, и развернул приложение на нём. В этом деле мне очень сильно помог один скринкаст, уже не помню точно чьего авторства.
Всё было отлично, но когда я захотел использовать админку Django(удобная вещь, кстати), меня постигло разочарование — форма логина показывалась, но при попытке войти меня выбрасывало на admin. После получаса гугления, я нашёл топик на небезызвестном форуме Ивана Салагаева, в котором описывалось решение проблемы. После того, как я последовал описанным советам, все заработало на-ура. Представляю вашему вниманию необходимую конфигурацию сервера и Django.

Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии16

Параллельный Питон, начало

Время на прочтение4 мин
Количество просмотров16K

Disclaimer


Родилась у товарища географическая потребность перенести кусочек карты из одного участка Земли в другой. Он это по привычке сделал на дельфях, мне же захотелось попробовать в действии питон, в коем я спецом не являюсь.

Практика


Собственно перевести алгоритм оказалось делом совсем несложным, но вот скорость его работы оставляла желать лучшего.
Первым делом в ход пошел Psyco, ускорив обработку в 6 раз.

Получить лучший результат без изменения алгоритма уже не представлялось возможным, поэтому в ход пошел метод грубой силы — распараллеливание задач.
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии37

Учебник по языку программирования Python (хабраиндекс)

Время на прочтение1 мин
Количество просмотров313K

Серия статей «Основы Python»


I, Начало
II, Строки
III, Списки, кортежи, файлы
IV, Генераторы списков
V, Определение функций, основы
VI, Расширенное определение функций

Об основах языка Python в сжатой форме

Продвинутый уровень


Сила и красота декораторов Короткий экскурс в метапрограммирование.
Итерируем все и вся Специфика циклов в Питоне.
Как я учился работать с XML
Консервация объектов в Python Использование модуля Pickle.
Memoization в Python Оптимизация работы программ.
Простейшее рисование с помощью PIL
Regexp и Python: извлечение токенов из текста
Как писать маленькие приложения на python с графическим интерфейсом (библиотека Qt).

http://netsago.org/ru/docs/1/12/
Одеваем скрипты Python с помощью EasyGui (добавляем простой диалоговый интерфейс)

http://djbook.ru/
Учебник по Django (Python-фреймворк для веб-приложений)

Читать дальше →
Всего голосов 164: ↑161 и ↓3+158
Комментарии61

Как готовить SphinxQL

Время на прочтение6 мин
Количество просмотров45K
По заявкам трудящихся, расскажу про две новых мега-фичи в Sphinx. Предложения тем для последующих рассказов можно засылать в комментарии.

Обе фичи добавлены в версии 0.9.9-rc2, опубликованной в начале апреля 2009го. Версия традиционно (слишком) стабильная, известных серьезных багов нету, тесты проходятся, итп. Отважные люди, а также коммерческие клиенты с контрактами про поддержку, уже успешно используют в продакшне, несмотря на отличный от «release» тег.

1я мега-фича. Теперь Sphinx поддерживает сетевой протокол MySQL (внутренней версии номер 10, которую поддерживают все версии сервера и клиента, начиная с MySQL 4.1 и по MySQL 5.x включительно).

Читать дальше →
Всего голосов 88: ↑86 и ↓2+84
Комментарии80

MonIT + M\MonIT = простой и бесплатный мониторинг нескольких серверов

Время на прочтение4 мин
Количество просмотров23K
Возникла задача мониторинга нескольких серверов, находящихся в разных ДЦ, имеющих разные ОС и ПО.

ТЗ получилось примерно такое:

  1. Мониторинг системы (cpu, mem, load average, bandwidth).
  2. Мониторинг состояния сервисов (запущен или нет).
  3. Мониторинг функционирования сервисом (отвечает на запросы корректно или нет).
  4. Контроль потребляемых сервисами ресурсов и общего их состояния.
  5. Централизованая «админка» для всей этой радости.
  6. Уведомление по email, самостоятельное исправление проблемы (например рестарт упавшей службы).


Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии35

Хелперы. Полезные манипуляции со строками

Время на прочтение3 мин
Количество просмотров6.3K
CakePHP поставляется с кучей полезных хелперов и компонентов, которые обеспечивают удобные инструменты для обработки и манипулирования данными. Эти хелперы значимы не только для пользователя фреймворка, но и могут оказать большую помощь кому-нибудь кто пишет PHP приложения не используя CakePHP.
далее...
Всего голосов 19: ↑14 и ↓5+9
Комментарии22

Python для системных администраторов

Время на прочтение8 мин
Количество просмотров90K
Автор перевода messerr, просто с кармой ему не повезло.

Введение

 
Как системный администратор, вы сталкиваетесь с многочисленными проблемами. Управление пользователями, дисковым пространством, процессами, устройствами и бэкапами могут стать причиной потери волос, юмора или вменяемости у многих администраторов. Shell скрипты могут выручить, но они зачастую имеют множество ограничений. В этом случае полнофункциональный скриптовый язык, такой как Python, способен превратить утомительную задачу в легкую и, смею сказать, веселую.
Примеры в этой статье демонстрируют различные возможности Python, которые вы можете использовать на практике. Если Вы работаете с помощью них — вы на правильном пути к пониманию силы Python.
 
Читать дальше →
Всего голосов 66: ↑57 и ↓9+48
Комментарии63

Объединяем twitter.com и vkontakte.ru

Время на прочтение8 мин
Количество просмотров6.7K
Пользуетесь ли вы twitter’ом? Если ответом является «Да», то милости просим под кат, где будет рассказано про способ автоматического репостинга сообщений из twitter’а в статус сообщения на сайте vkontakte.ru используя python.
Мне интересно
Всего голосов 99: ↑68 и ↓31+37
Комментарии90

Suggest в Google — никакого аякса

Время на прочтение1 мин
Количество просмотров1.6K
Честно говоря, у меня, давно сложилось впечатление, что если клиент (в данном случае броузер) что-то должен с сервера забирать без перезагрузки страницы, то это обязательно должен быть AJAX XMLHttpRequest. Ткнул куда-то пользователь, сработало событие, сгенерировался AJAX XMLHttpRequest-запрос, пришел с сервера ответ, коллбэк обработал его и пользователь что-то увидел.

Но есть проблема. Если пользователь быстро и часто давит на клавиши, создается некоторое количество параллельных запросов и в результате запрос, отправленный позже может отработать намного раньше более раннего запроса, что повлечет за собой вывод неправильных данных.

Читать дальше →
Всего голосов 103: ↑65 и ↓38+27
Комментарии94

Реализация отправки sms-уведомлений

Время на прочтение3 мин
Количество просмотров16K
В виду достаточно большого парка серверов/свитчей/модемов и иного активного оборудования в конторе, была установленная система мониторинга zabbix и успешно использовалась продолжительное время. Zabbix имеет замечательную возможность отправки уведомлений о возникших проблемах.
Для этого был написан скрипт отправки sms сообщений через шлюз email-to-sms оператора связи, ограничение по количеству смс с одного адреса в сутки было обойдено путем ротации исходящих адресов, работало более или мение сносно, но в последнее время смс сообщения через данный шлюз начали доходить с задержкой порядка 10-15 минут, что уже не очень нравилось.
Итак, было решено организовать отправку уведомлений через собственный GSM-терминал, порывшись в прайсах поставщиков и не обнаружив там подходящих по цене и характеристикам GSM модемов весьма огорчился.
И тут вспомнилось что дома валяется старый Siemens CX65 да еще и data-кабель к нему, после подключения телефона и курения доков по отправке sms сообщений пришел к не очень радостному выводу, оказывается siemens не поддерживает отправку sms в текстовом режиме, команда AT+CMGF=1 возвращает error.
Отправка сообщений в данных аппаратах возможна только в режиме PDU, ради спортивного интереса и для размятия мозгов было решено реализовать эту систему, был написан скрипт для перекодировки в PDU формат сообщений и отправки через телефон.
Читать дальше →
Всего голосов 46: ↑42 и ↓4+38
Комментарии44

Диджеинг в Ableton Live

Время на прочтение12 мин
Количество просмотров56K
Доброго времени суток уважаемые хабрапользователи! Спешу поделиться с вами отличной статьей, которую написал товарищ Jackarus (TriminghamDJ Trimingham). Сам он к сожалению запостить не смог, поэтому пришлось это сделать мне. Так что если кто-то захочет поблагодарить автора статьи, помните что автор — Jackarus (надеюсь он объявиться в комментариях), а не я, помните кого плюсовать ;)

P.S. Заодно, пользуясь случаем, хочу извиниться перед автором статьи за огромную задержку в публикации.
Читать дальше →
Всего голосов 44: ↑37 и ↓7+30
Комментарии62

Dklab_Cache: тэги в memcached, namespaces, статистика

Время на прочтение6 мин
Количество просмотров4.7K
Memcached community предприняло немало попыток написать «родные» патчи для кода memcached, добавляющие в него поддержку тэгов. Наиболее известный из таких патчей — проект memcached-tag. К сожалению, memcached-tag все еще очень далек от стабильной версии: нетрудно написать скрипт, приводящий к зависанию пропатченного memcached-сервера. Похоже, на момент написания данной статьи не существует ни одного надежного решения проблемы тэгирования на уровне самого memcached-сервера.

Библиотека Dklab_Cache


Dklab_Cache — это (в основном) библиотека поддержки тэгирования ключей для memcached, использующая интерфейсы Zend Framework. Сама библиотека написана на чистом PHP. Вот полный список возможностей библиотеки:
  • Backend_TagEmuWrapper: тэги для memcached и любых других backend-систем кэширования Zend Framework;
  • Backend_NamespaceWrapper: поддержка пространств имен для memcached и др.;
  • Backend_Profiler: подсчет статистики по использованию memcached и др. backend-ов;
  • Frontend_Slot, Frontent_Tag: каркас для высокоуровневого построения систем кэшиирования в сложных проектах.
Собственно, для поддержки тэгов имеется класс TagEmuWrapper. Он представляет собой декоратор («обертку») для backend-классов кэширования Zend Framework. Другими словами, вы можете с его помощью «прозрачно» добавить поддержку тэгов в любую подсистему кэширования Zend Framework. Мы будем рассматривать backend для работы с memcached: Zend_Cache_Backend_Memcached, но, если в вашем проекте используется какой-то другой backend-класс, вы можете подключить тэгирование и к нему без каких-либо особенностей.

TagEmuWrapper реализует стандартный backend-интерфейс Zend_Cache_Backend_Interface, поэтому с точки зрения вызывающей системы он сам является кэш-backend'ом. Вообще, Zend Framework хорош тем, что на уровне интерфейса он поддерживает тэги с самого начала! Например, в методе save() уже имеется параметр, позволяющий снабдить ключ тэгами. Однако ни один из backend-ов в составе Zend Framework тэги не поддерживает: попытка добавить тэг к некоторому ключу вызывает исключение (в частности, для Zend_Cache_Backend_Memcached).

Технические подробности, документацию, а также примеры использования можно посмотреть тут: dklab.ru/lib/Dklab_Cache

Что такое тэги?


Работа с типичной кэширующей системой (в том числе с memcached) заключается в выполнении трех основных операций:
  • save($data, $id, $lifetime): сохранить данные $data в ячейке кэша с ключом $id. Можно указать «время жизни» ключа $lifetime; спустя это время данные в кэше «протухнут» и удалятся.
  • load($id): загрузить данные из ячейки с ключом $id. Если данные недоступны, возвращается false.
  • remove($id): очистить ячейку кэша с ключом $id.
Читать дальше →
Всего голосов 73: ↑59 и ↓14+45
Комментарии57

Как оформить своё дело (в Украине)

Время на прочтение7 мин
Количество просмотров11K
В этом посте я написал длинный текст о том как:
  • оформиться в Украине
  • стать физическим лицом-предпринимателем
  • платить единый налог
  • упростить себе жизнь при помощи интернет отчётности

Я описываю свой личный опыт. Простите за возможные ошибки. Навеяно этим постом
Исходные данные такие: Украина, удаленная работа с иностранным заказчиком, разработка сайтов.
Читать дальше →
Всего голосов 119: ↑105 и ↓14+91
Комментарии154

Нулевой символ внутри тега

Время на прочтение1 мин
Количество просмотров1.7K
Старый баг дороже новых двух?

Сделал для себя интересное открытие, оказывается строчку

<\0b>text</b> — где \0 — символ с кодом 0

IE интерпретирует как нормальный тег bold со всеми вытекающими, тоже самое касается тегов <script> <style> и прочих.

Это в свою очередь значит, что удаление потенциально опасных элементов с помощью str_replace, preg_replace (PHP), s/<script/.../i (Perl, sed) и прочих replace() функций для других языков не даст желаемых результатов.

Тоже самое касается и фильтрации по «белым» спискам которые попросту могут не посчитать последовательность <\0b>text</b> тегом.

К счастью Firefox, Opera и Safari так не считают. Разработчики, будьте бдительны при фильтрации пользовательских данных!
Всего голосов 130: ↑120 и ↓10+110
Комментарии80

Тюнинг nginx

Время на прочтение8 мин
Количество просмотров96K
Статья написана по материалам моего доклада на CodeCamp 2009.

Для многих из нас настает тот долгожданный день, когда аудитория сайта начинает стремительно расти. Каждое утро мы, затая дыхание, смотрим на графики google analitycs и расплываемся в улыбке, когда взят рубеж в очередную тысячу посетителей в день. Как правило, рост посещаемости не совпадает с ростом технической базы и сайт начинает тормозить. Тут в игру вступает сисадмин...

У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

Пришло время оптимизировать nginx...

Читать дальше →
Всего голосов 102: ↑100 и ↓2+98
Комментарии69

Многоуровневое дерево с маркерами (только HTML, CSS, без Javascript)

Время на прочтение5 мин
Количество просмотров23K
Многоуровневое дерево с маркерами (только HTML, CSS)До того как заняться верской гитарных аккордов (статьи 1,2,3) я столкнулся с необходимостью сделать человеку на сайте меню-дерево. Рисовать не хотелось вообще, поэтому я взял старый добрый HTML с CSS и начал делать это дерево, начал с простого одноуровневого, а позже сделал многоуровневое с маркерами, которое и представлю.

Позже это дерево дало мне плоды в виде habrahabr.ru/blogs/css/53792
Читать дальше →
Всего голосов 107: ↑105 и ↓2+103
Комментарии81

10 отличных приемов с .htaccess для WordPress

Время на прочтение4 мин
Количество просмотров32K
Внимание!
Перед изменением файла .htaccess не забудьте сделать его резервную копию.


1 — Перенаправляем WordPress RSS поток на feedburner с использованием .htaccess
Почему некоторые вебмастера не используют feedburner? Ведь это такой замечательный инструмент для контроля за подписками на RSS. Проблема в том, что приходится руками исправлять файлы шаблонов. Этот прием поможет сохранить Ваше время.
И не забудьте исправить в строке 6 на Ваш код

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
 RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
 RewriteRule ^feed/?([_0-9a-z-]+)?/?$ httр://feeds2.feedburner.com/wordpress[R=302,NC,L]
</IfModule>


Читать дальше →
Всего голосов 72: ↑62 и ↓10+52
Комментарии29

Система разделения прав доступа в веб-приложении

Время на прочтение14 мин
Количество просмотров70K
В этой статье мы пройдём с вами полный цикл от идеи, проектирования БД, написания PHP-Кода, и завершающей оптимизации. Постараюсь рассказать обо всем, как можно проще. Использовать для примеров буду PHP и Mysql. Заодно потренирую новичков :).

В этой статье я коснусь вопросов:
  1. Идея ACL
  2. Проектирование БД
  3. Нормализация БД
  4. Рефакторинг кода
  5. Оптимизация рабочего кода

Статья является ответом на Бинарное распределение прав доступа в CMS. Пока автором пишется практическая часть, я хочу предоставить мой вариант, который я использую довольно давно.
То, что я сейчас расскажу, похоже на ACL.

Читать дальше →
Всего голосов 94: ↑71 и ↓23+48
Комментарии103

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Зарегистрирован
Активность