Тэги: madskillz, python, trac
Написать комментарий
Я тут внезапно сообразил, что за всю жизнь на разу не писал квайна. Поэтому сел и написал вот такой вот на питоне:
CODE = """ import sys out = sys.stdout.write out('CODE = ""' '"' + CODE + '"' + '""') out(CODE) """ import sys out = sys.stdout.write out('CODE = ""' '"' + CODE + '"' + '""') out(CODE)
Он дубовый (можно найти поинтереснее), но честный, без использования repr
или исходного кода.
Тэги: python
Комментарии (2)
Допустим, вы хотите почитать на досуге, скажем, в метро, комикс The Order of the Stick. Для этого нужно выкачать его целиком. Что вы предпочтёте — короткий скрипт на любимом языке или wget -r -A=gif
?
Я выбрал скрипт на питоне, вышло 30 строчек.
from urllib import urlopen, urlretrieve from os.path import exists from os import rename import re
urlt = "http://www.giantitp.com/comics/oots%04d.html" regexp = r'<IMG src=\"(\/comics\/images\/\w+.gif)"'
for i in range(1, 740): print "%4d =>" % i, outf = "%04d.gif" % i if exists(outf): print "already downloaded" continue pageurl = urlt % i h = urlopen(pageurl) data = h.read() mo = re.search(regexp, data) if not mo: print "can't find gif in page" continue imgurl = "http://www.giantitp.com" + mo.group(1) print imgurl, urlretrieve(imgurl, "temp.file") rename("temp.file", outf) print "- saved to", outf
Тэги: python
Написать комментарий
В питоне начиная с версии 2.5 появилась тернарная операция с синтаксисом true_value if condition else false_value
. Синтаксис немного непривычный, да и по разным причинам иногда приходится писать так, чтобы работало и на версии 2.4.
А вот сейчас, читая исходники плагина MasterTickets к траку, я увидел отличную замену тернарной операции: condition and true_value or false_value
. Как я сам не додумался до такой простой вещи?
Порядок операндов ?:
сохранён, да и логика вполне прозрачна.
eSyr обратил моё внимание вот на что: если true_value
вычислится в ложное значение (0, пустая строка, пустой список), то в итоге выражение вычислится в false_value
.
Так что это удобный хак, но не более.
Редакция от 12 февраля 2010
Тэги: python, trac
Написать комментарий
Google Desktop Search отображает результаты поиска по дискам компьютера при помощи специального сервера, который обслуживает запросы с интерфейса lo. При этом результаты поиска отображаются в виде веб-страницы, на которой есть ссылки на открытие как найденных файлов, так и папок, в которых они лежат. Ясно, что простой ссылкой вида
<a href="d:\documents\plan.doc">plan.doc</a>
здесь не обойдёшься. Вместо этого ссылка указывает снова на локальный сервер, который и открывает файл или папку.
Я приспособил эту идею вот для чего. У меня дома есть сервер, на котором, во-первых, лежат разные файлы, а, во-вторых, крутится интранет-сайт. Файлы просто находятся в общей папке (\\serv\share), которая подмонтирована к каждому из компьютеров сети как сетевой диск (S:). Таким образом, к файлу plan.doc, лежащему в папке share\docs, можно обратиться с любого компьютера по адресу S:\docs\plan.doc.
Теперь собственно задача. Я хочу иметь возможность поставить с интранет-сайта (доступ к которому есть только изнутри сети) ссылку на этот документ.
Я написал небольшой сценарий на питоне. Этот сценарий запускает сервер (применён BaseHTTPServer) на порту 8080, каковой сервер отвечает на пришедшие запросы, открывая при помощи функции startfile() папку, имя которой было передано в строке запроса:
def browse(path): folder = normpath(unquote(path).decode('utf-8')) startfile(folder)
Этот сценарий был добавлен в автозагрузку на всех компьютерах сети. Теперь для создания ссылки на share\docs\plan.doc можно использовать такой код:
<a href="http://localhost:8080/s:/docs/plan.doc">plan.doc</a>
Некоторые детали, такие как проверку реферера для защиты от посторонних ссылок, я опустил для краткости.
Редакция от 18 мая 2010
Тэги: python, webdev
Написать комментарий
fs = []
for x in [1, 2, 3]: fs.append(lambda : x) for f in fs: print f(),
Вот такая простая программа выводит 3 3 3, хотя вроде как должна 1 2 3. Кто может объяснить, почему?
Update: Ответ Глайдера.
Редакция от 15 октября 2009
Тэги: python, tech
Комментарии (2)
Я уже писал о своей «разработке», sspe. Сейчас у меня дошли руки сделать страничку, на которую можно было бы ссылаться. А ссылаться понадобилось потому, что я приделал к sspe вывод новостей. Дело в том, что на сайте Devel новости скоро понадобятся, а у Address Book они всегда были. В общем, новости теперь писать можно.
Вы спросите, а зачем я вообще со всем этим вожусь? И правда, дел на «Тёплом крае» полно и так. Блог надо переделать, вики воткнуть, OpenID ждёт не дождётся, пока я за него возьмусь.
Наверное, потому, что от «Индианы» я подустал. Там надо много переделывать, а sspe настолько прост, что мозг практически отдыхает.
Тэги: python, sspe, лучшее, сделано
Написать комментарий
Если кто ещё помнит, есть у меня такая «независимая разработка» — Address Book XP. Это самая первая написанная мной программа, и, полагаю, ей до сих пор кто-то пользуется. Начал писать её я в 1999 году, а на 2001-2003 годы пришлась пора самой активной разработки. Четыре года назад я её забросил, а год назад отдал швартовы умер сайт addressbook.nm.ru.
Что же, настала пора отдать дань уважения моей самой первой программке. Я написал новый — простой и универсальный — движок для её сайта, отредактировал странички, воссоздал (разумеется, с изменениями и улучшениями) дизайн и выложил всю эту радость в каталог addressbook/. Если кому интересно, милости прошу.
Кстати, «простой и универсальный» движок я думаю оформить как маленький, но продукт. Сайт я, конечно, ещё не сделал, но версию 0.1 (совершенно без документации) уже выложил. Называется движок sspe, Simple Site Python Engine. Сейчас он умеет только собирать странички из индекс-схемы и тела. Желающие могут скачать tar.gz, 2 KiB.
Сам движок скомпонован за полчаса из исходников проекта «Индиана». Абсолютно ничего сложного, разминка для ума, так сказать.
P.S. Вторая моя «независимая разработка», Fingertip, уже прописалась на этом сервере. Осторожно, корявый английский.
Тэги: indiana, python, sspe, лучшее, сделано
Написать комментарий
Теперь на Warmland.nizm мы имеем не просто заглушку, но заглушку с прикрученным дизайном, что очень радостно. Ох, как портит мне кровь разница между nix и win. Даже оператор
print text,
работает иначе, чем
stdout.write(text)
Ух!
Редакция от 15 октября 2009
Тэги: python, warmland, красные глазки
Написать комментарий
Кстати, у меня сайт здесь крутится на версии 2.5 «питона». Пора и дома переползать потихоньку.
Редакция от 16 сентября 2008
Тэги: indiana, python
Написать комментарий