Страницы: | 1 |

Ohloh не обманет

13 марта 2011 // Хельги

Квайн на питоне

3 сентября 2010 // Хельги

Я тут внезапно сообразил, что за всю жизнь на разу не писал квайна. Поэтому сел и написал вот такой вот на питоне:

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)

order of the stick скачать

7 июля 2010 // Хельги

Допустим, вы хотите почитать на досуге, скажем, в метро, комикс 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
Написать комментарий

Замена тернарной операции для python 2.4

2 февраля 2010 // Хельги

В питоне начиная с версии 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
Написать комментарий

Открытие файла из общей папки по ссылке с веб-страницы

27 октября 2008 // Хельги

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
Написать комментарий

Офигеть

10 декабря 2007 // Хельги

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

9 ноября 2007 // Хельги

Я уже писал о своей «разработке», sspe. Сейчас у меня дошли руки сделать страничку, на которую можно было бы ссылаться. А ссылаться понадобилось потому, что я приделал к sspe вывод новостей. Дело в том, что на сайте Devel новости скоро понадобятся, а у Address Book они всегда были. В общем, новости теперь писать можно.

Вы спросите, а зачем я вообще со всем этим вожусь? И правда, дел на «Тёплом крае» полно и так. Блог надо переделать, вики воткнуть, OpenID ждёт не дождётся, пока я за него возьмусь.

Наверное, потому, что от «Индианы» я подустал. Там надо много переделывать, а sspe настолько прост, что мозг практически отдыхает.

Тэги: python, sspe, лучшее, сделано
Написать комментарий

Address Book

16 сентября 2007 // Хельги

Если кто ещё помнит, есть у меня такая «независимая разработка» — 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, лучшее, сделано
Написать комментарий

Дизайн

13 сентября 2007 // Хельги

Теперь на Warmland.nizm мы имеем не просто заглушку, но заглушку с прикрученным дизайном, что очень радостно. Ох, как портит мне кровь разница между nix и win. Даже оператор

print text,

работает иначе, чем

stdout.write(text)

Ух!

Редакция от 15 октября 2009
Тэги: python, warmland, красные глазки
Написать комментарий

Python

20 декабря 2006 // Хельги

Кстати, у меня сайт здесь крутится на версии 2.5 «питона». Пора и дома переползать потихоньку.

Редакция от 16 сентября 2008
Тэги: indiana, python
Написать комментарий

Страницы: | 1 |