Блоґ одного кібера

Я не знаю куди й нащо мені бігти. Та це все таки веселіше ніж сидіти.

Archive for Грудень 2011

Наймінімалістичніший симулятор друкарської машинки.

Кількість коментарів - 15

Такий собі подарунок до нового року мені і подібним графоманам. Працює правда лише в лінуксах, бо curses. Сторінка проекту на Google Code. Інсталяція ручна і проста – скопіюйте файл програми собі в /usr/bin/, і дайте йому права на виконання.

Прочитати решту цієї замітки »

Written by bunyk

Грудень 31, 2011 at 16:56

Brainf**k

Кількість коментарів - 5

Хтось напевно страшно об’ївся віагри. І тепер намагається любити мені мозги.

Десь всередині цього коду виникає unicode encode error:

        def __r_call(self, *args, **kw):
            return self.__call(self.__name, args, kw, self.__ns, self.__sa,
                self.__hd, self.__ma)

Клас виглядає так:

    # To handle attribute wierdness
    class __Method:
        # Some magic to bind a SOAP method to an RPC server.
        # Supports "nested" methods (e.g. examples.getStateName) -- concept
        # borrowed from xmlrpc/soaplib -- www.pythonware.com
        # Altered (improved?) to let you inline namespaces on a per call
        # basis ala SOAP::LITE -- www.soaplite.com

        def __init__(self, call, name, ns = None, sa = None, hd = None,
            ma = None, config = Config):

            self.__call 	= call
            self.__name 	= name
            self.__ns   	= ns
            self.__sa   	= sa
            self.__hd   	= hd
            self.__ma           = ma
            self.__config       = config
            return

        def __call__(self, *args, **kw):
            if self.__name[0] == "_": # typically get or mutate 
                if self.__name in ["__repr__","__str__"]:
                    return self.__repr__()
                else:
                    return self.__f_call(*args, **kw)
            else:
                color_print('we expect exception here:', ostream=sys.stderr) # Це я написав. 
                return self.__r_call(*args, **kw)
                        
        def __getattr__(self, name):
            if name == '__del__':
                raise AttributeError, name
            if self.__name[0] == "_":
                # Don't nest method if it is a directive
                return self.__class__(self.__call, name, self.__ns,
                    self.__sa, self.__hd, self.__ma)

            return self.__class__(self.__call, "%s.%s" % (self.__name, name),
                self.__ns, self.__sa, self.__hd, self.__ma)

        def __f_call(self, *args, **kw):
            if self.__name == "_ns": self.__ns = args
            elif self.__name == "_sa": self.__sa = args
            elif self.__name == "_hd": self.__hd = args
            elif self.__name == "_ma": self.__ma = args
            return self

Решта методі не цікаві. Цікаво що на початку файлу гордо красується коментар з ліцензією в якому є такий рядок:
# Copyright (c) 2003, Pfizer

Взагалі це просто пояснюється. Phizer – фармацевтична компанія. Фармація – суто емпірична наука, яка використовує гори статистики щоб вияснити кореляцію між вмістом певних компонент в своїх таблетках і тиском крові в певних місцях. Улюблена мова статистики – R. Улюблена універсальна мова всього світу – Python. Пфайзеру нащось знадобився інтерфейс між ними, і вони створили RSOAP. SOAPPY видно теж знадобилось поправити.

Але проблема з кодуванням залишається. Хоча напевне суть в тому, що Google рівнем вище написав:

        buf = self._buffer_class(
            xml_parser=self._config['xml_parser'],
            pretty_xml=Utils.BoolTypeConvert(self._config['pretty_xml']))
        old_stdout = sys.stdout
        sys.stdout = buf

і тепер я мушу друкувати в stderr щоб щось побачити. Піду напевне досліджувати _buffer_class.

Винен тут Google. Ну нащо їм той SOAP? Дому не використовувати простенький JSON в REST? І найголовніше що мені доведеться до кінця року оцим мучитись.

Written by bunyk

Грудень 30, 2011 at 13:53

Опубліковано в Кодерство, Павутина

Tagged with ,

Micro python HTML templating engine

Кількість коментарів - 3

Idea that XML is not the most compact form of trees markup is not new. Like idea that HTML is hard to write by hand and should be dynamically generated on server. (Or compiled. There is even whole class of software – site compilers, which can be cheaper equivalents to content management systems). Furthermore, today even CSS can be compiled from SASS and JavaScript can be compiled from CoffeScript. Which means that web is making a new leap to a more high-level languages, which are compiled to “machine code” (and in our case “machine” is a browser).

Oh, and now I should return to my point. XML document is just a tree. HTML too. And code of any programming language also represent a tree. This is most explicitly seen in Lisp-like languages where we have a lot of parentheses. So why not to write web-pages in Lisp? Or, as I don’t know Lisp good enought, in Python?

Now I am presenting you my brand new lispy micro html templating engine. It is supercompact, and probably superslow, but I am too lazy to test. Also it doesn’t have escaping support, so use with caution.

Прочитати решту цієї замітки »

Written by bunyk

Грудень 22, 2011 at 00:02

Опубліковано в Кодерство, Розмітка, English posts

Tagged with , ,

Мій перший пост написаний з bpython

Кількість коментарів - 11

За допомогою цікавої бібліотечки python wordpress xmlrpc.

Власне багато писати не буду, цікаво чи запоститься

Written by bunyk

Грудень 19, 2011 at 21:16

Опубліковано в Кодерство, Павутина

Tagged with ,

Домашній http-сервер “Енциклонг”

leave a comment »

Або, про те як я знайшов включені в Python батарейки з вісґі. Тобто нічого додаткового ставити не доведеться.

Знайшов на StackOverflow (Я б сказав який це чудовий сайт, але ви і без мене знаєте.)

Щоб написати цікавий сайт нам потрібно багато контенту, а сервер хочеться спробувати одразу. Тому вирішив піти протореними шляхами, і взяти контент звідти звідки й всі беруть. З інтернету. Але щоб не видавати чистий копіпаст, я зробив заміну “вікі” на “енцикло”, і тепер мій сервер може видавати сторінки Енциклопедії – вільної енциклопедії, та інших сайтів інтернету. Виглядає це так:

Далі я писати не буду, просто покажу і прокоментую код. Читати код – це навіть важливіше ніж читати формули, повірте мені. І раджу звернути увагу що гарний код починається з 49 рядка, а все що до того зроблено аби працювало.
Прочитати решту цієї замітки »

Written by bunyk

Грудень 18, 2011 at 19:11

Опубліковано в Кодерство, Павутина

Tagged with

Follow

Get every new post delivered to your Inbox.