All articles, tagged with “programming”

Jabber Bot

Just for fun написал простенький движок для создания джаббер ботов. Использовал xmppy, стоит заметить, что написана она очень не по-питоновски, сразу видно у автора какой-то сишный бэкграунд. Документация тоже мягко говоря не очень, приходилось спецификацию протокола XMPP читать чтобы понять, как эта библиотека работает. Собственно вот результат: jabber bot mini-framework on Python Использовать следующим образом:
from jabberbot import JabberBot
bot = JabberBot("example@example.com", "password", "BotName")
bot.setConference("example@conference.example.com")
bot.run()
Сейчас бот ничего не будет делать, кроме того как логиниться и заходить на конференцию. Чтобы расширить его функциональность, нужно написать класс-расширение. Например мы хотим чтобы на команду “!торт <ник>” бот отвечал: “<имя_бота> смачно кидает бисквитный трот прямо в лицо <ник>”, тогда класс будет выглядеть так:
from jabberbot import CommandExtension
class CakeExtension(CommandExtension):
    def process(self):
        if self.options:
            return "/me смачно кидает бисквитный торт прямо в лицо %s" % self.options
        else:
            return None
и результирующий код будет такой:
from jabberbot import JabberBot, CommandExtension

class CakeExtension(CommandExtension):
    def process(self):
        if self.options:
            return "/me смачно кидает бисквитный торот прямо в лицо %s" % self.options
        else:
            return None

bot = JabberBot("example@example.com", "password", "BotName")
bot.setConference("example@conference.example.com")
bot.extensions.append(CakeExtension("торт")) # Добавляем наше расширение
bot.run()
В конструктор расширения передается название команды, само расширение наследуется от CommandExtension. Префикс команды задается константой jabberbot.CMD_PREFIX и по умолчанию — “!”. В self.options расширения записывается весь текст который следует после команды. Возможно переопределить функцию CommandExtension.check(text), в своем расширении, если вы например хотите делать проверку на какое-то слово во всем сообщении. Функция в качестве параметра получает сообщение пользователя и возвращает True, если оно соответствует команде расширения(а именно если строка начинается с команды), иначе False. Безусловно это достаточно простой пример, но более сложный/полезный/интересный функционал уже дело техники и вашей фантазии, легкий API вам предоставлен :)

Python Markdown

As you know I’m working on improvements of Python Markdown implementation in terms of Google Summer of Code 2008. Markdown is a markup language, which was originally created by John Gruber and Aaron Swartz, and implemented in Perl. Today there are a lot of different Markdown implementations, for almost all popular languages. The main aim of markdown — maximum readability, markdown is simpler than (X)HTML and widely used in different services, where users can publish some texts(i.e blogs, in some blogs users can write comments/posts, using Markdown).

 

Eclipse Ganymede

Решил попробовать новый eclipse, многие активно его пиарили типа работает быстрее, куча всяки новых фич, даже инструменты для UML моделирования добавили. Звучит неплохо. Запускаю на jre 1.6 — сначала все хорошо, просит выбрать воркспейс, загружается более чем до середины и на Loading Workbench выдает ошибку, никакого описания, смотрите логи. В логах — “!MESSAGE Application error” и листинг стека — очень помогло. Хорошо, попробовал запустить с jre 1.5 — то же самое. Ну думаю, может тогда gcj попробовать, пусть разработчики на нем и не тестировали, но с чем черт не шутит, пробую, грузится значительно дольше, выдает какую-то мелкую ошибку, но работает! Странно, очень странно. Ладно, пытаюсь установать pydev, потому что использую его исключительно как IDE для Python, вроде бы хорошо, все зависимости есть, скачался и устанвливается, но в конце инсталляции выдает ошибку. Нда.. К черту этот новый eclipse, остаюсь на 3.3, разбираться что там не так ни времени ни желания нет, вобщем разачаровал он меня.

Google Summer of Code

Hurray!!! I’m in!! Google Summer of code 2008! Буду заниматься улучшением модуля python-markdown. Теперь надо быстро разобраться с учебой, в конце мая нужно будет начинать работу над проектом.

Python: миф и реальность

Сильно раздражает предвзятое мнение многих разработчиков по поводу Python’a. Если он не так популярен как PHP, это еще ни о чем не говорит. Да, у PHP есть плюсы — его всеобщая распространенность, C-подобный синтаксис, относительная простота, но он абсолютно непригоден для больших серьезных проектов, нет, конечно это возможно, но поддержка и разработка такого проекта превратится в ад. Python в этом плане гораздо более продуманный язык, в нем есть нормальное ООП(которое в PHP в приемлемом виде появилось только в 5 версии, да и то, весьма посредственное), пространство имен и.т.п. А в PHP вплоть до 5 версии не было даже элементарного разыменовывания функций. PHP отстает от Python’a лет на 5… PHP это совковый язык, хорошо подходящий для небольших и с наятжкой средних проектов, но не более. Будто бы в Google и NASA работают идиоты, если они Python во многих своих разработках используют ?! Уфф.. выговорился :)