Archive for Грудень 2011
Наймінімалістичніший симулятор друкарської машинки.
Такий собі подарунок до нового року мені і подібним графоманам. Працює правда лише в лінуксах, бо curses. Сторінка проекту на Google Code. Інсталяція ручна і проста – скопіюйте файл програми собі в /usr/bin/, і дайте йому права на виконання.
Brainf**k
Хтось напевно страшно об’ївся віагри. І тепер намагається любити мені мозги.
Десь всередині цього коду виникає 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? І найголовніше що мені доведеться до кінця року оцим мучитись.
Micro python HTML templating engine
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.
Мій перший пост написаний з bpython
За допомогою цікавої бібліотечки python wordpress xmlrpc.
Власне багато писати не буду, цікаво чи запоститься
Домашній http-сервер “Енциклонг”
Або, про те як я знайшов включені в Python батарейки з вісґі. Тобто нічого додаткового ставити не доведеться.
Знайшов на StackOverflow (Я б сказав який це чудовий сайт, але ви і без мене знаєте.)
Щоб написати цікавий сайт нам потрібно багато контенту, а сервер хочеться спробувати одразу. Тому вирішив піти протореними шляхами, і взяти контент звідти звідки й всі беруть. З інтернету. Але щоб не видавати чистий копіпаст, я зробив заміну “вікі” на “енцикло”, і тепер мій сервер може видавати сторінки Енциклопедії – вільної енциклопедії, та інших сайтів інтернету. Виглядає це так:
Далі я писати не буду, просто покажу і прокоментую код. Читати код – це навіть важливіше ніж читати формули, повірте мені. І раджу звернути увагу що гарний код починається з 49 рядка, а все що до того зроблено аби працювало.
Прочитати решту цієї замітки »



