Subscribe to GRead Subscribe to GRead's comments

Archive for the ‘Примеры использования’ category

Google Wave громко пришел в наш мир. И одной из класных штук в нем – является возможность писать роботов на любимом языке, на Python. Но сейчас существует проблемка с документацией, которая почти отсуствует. И поэтому учиться что-то делать можно лишь на примерах. Для начала я рекомендую прочитать маленький туториал от Гугла, а потом уж можете искать другие примеры. Может кому-то и будет интересен еще один пример – робота, что получает почту и ее постит в Гугл Вейв.

Он принимает почту и всю ее записывает в базу данных. В тоже время устанавливаются обработчики на крон, и на постинг сообщения в волну. Тоесть если кто-то что-то запостит в волну, то скрипт проверить если ли в базе данных емайлы и если есть, то их запостит в волну, а с базы удалит.
Read more »

cron for drupal

Если у вас есть сайт сделанный на Drupal, то вам наверно приходиться периодически заходить в админку и запускать на исполнение крон, файлик что исполняет набор обязательных периодических задач – очиска логов, индексирование материала и других. Но для уменьшения труда предлагаю такой маленький скринптик на Питоне(цель которого именно показать, что автоматизация зачастую простая задача, а с Питоном она просто сверх-простая ;) )

sites = (
   'http://screencast.org.ua/cron.php',
   'http://tutamc.com/cron.php'
)

from twill.commands import *

for site in sites:
   go(site)

Осталось лишь поставить у себя в задачах автоматический запуск данного скрипта раз в сутки или больше – это уже зависит от вашего друпаловского сайта.
Как видим, что для доступа к страницам использую библиотеку twill – она мне так понравилась, что я без нее сейчас почти не обхожусь, даже в таких миниатюрных проектах.

Отладка в Django – одно удовольствие. Но есть один маленький почти незаметный минус, и заключается в том, что в окне где запущен отладочный сервер постоянно отвлекают сообщения о том что Django грузит медия-ресурсы. За эти сообщения отвечают такие строчки в файле django/core/servers/basehttp.py:

def log_message(self, format, *args):
    # Don't bother logging requests for admin images or the favicon.
    if self.path.startswith(self.admin_media_prefix) \
                      or self.path == '/favicon.ico':
        return
    sys.stderr.write("[%s] %s\n" % (self.log_date_time_string(), format % args))

Конечно патчить ядро не очень красиво, но посколько это ни на что не влияет и для домашнего использования сойдет. Так что меняем эту функцию на следующую:

def log_message(self, format, *args):
    # Don't bother logging requests for admin images or the favicon.
    if self.path.startswith(self.admin_media_prefix) \
                          or self.path == '/favicon.ico':
        return
    if self.path.startswith('/media/') \
                          or self.path.startswith('/__debug__/'):
        return
    sys.stderr.write("[%s] %s\n" % (self.log_date_time_string(), format % args))

Я по этой фишке также написал тикет в Джанго, может когда-то такую возможность добавлять в админку.

Python and Alarm

Я человек снолюбимый, и с утра меня тяжело разбудить. Понимаю, что это плохая привычка, но все же не могу от нее отказаться. Впрочем чаще всего мне и не нужно никуда спешить, но просыпаться каждый день в 12 часов, тоже как-то лиш лишняя трата времени. Посему будильник нужен, но его подобрать было тяжело.
Сперва заюзал советский будильник. Он конечно будил, но я понял, что если будет будить хотя бы неделю – начну заикаться ;) .
Дальше использовал телефон, и где-то несколько недель все было супер, вроде и не сильно резко будил, но это все очень быстро прошло, и снова меня никакая мелодия с телефона уже не будила.
И только после всех этих мучения я вспомнил о Питоне и немного полазил нашел библиотеку для управления ВинАмпом(кстати, АИМПом также нормально управляется) – http://www.shalabh.com/software/about_winamp_py.html.
И уже через минут 10 был готов такой скриптик на Python:

import time
import os
import winamp

print 'Good Morning'

#открываем плайлист, чем запускаем винамп
print '# start playing'
os.startfile(r'D:\musik\Futurama\futurama.PLC')
#ждем пока он запустится
time.sleep(3)

#подключаемся к винампу
w = winamp.winamp()
#плавно увеличиваем громкость
for i in xrange(0,255,5):
    print '# set volume on %s' % i
    w.setVolume(i)
    time.sleep(5)

Итак, этот скрипт сначала запускаем мой плейлист и устанавливает громкость в 0. А дальше понемножку его увеличиваем, чем обеспечиваем мне спокойный подьем.

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

Если у вас панелька в хостинге DirectAdmin, то считайте полдела сделано, потому что там есть неплохое средство для создания бекапов, но пробема в том что нужно самому клацать на кнопку “Создать бекап”, а потом скачивать все по ФТП, а нам же страшно лень…

И так первая подзадача – нажать в браузере кнопочку – и она решается чудной либой twill http://twill.idyll.org/, которая зачастую используется для тестирования сайта, но и нам будет в пользу. Вторая подчасть – скачивание по ФТП – решается встроеной либой FTP. Ну дальше уже нечего обьяснять, а лучше посмотреть на код с коментариями.
Read more »