Deniz 30.06.2013 12:01
Похожие на divius — PySide 0.3.0 для Ubuntu Lucid
bobry 29.10.2009 05:50
Python — rlcompleter: дополнение на месте
Все кто хоть чуть-чуть знаком с python, знают как удобно бывает, время от времени, проверить работоспособность чего-нибудь в интерпритаторе. Лично у меня постоянно вылетают из головы названия методов/функций итп, посему частенько приходится писать чтонибудь а ля:
И все еще достаточно терпимо, когда список, возвращаемый dir сравнительно небольшой, как выше, но когда он в два, а то и три, раза больше - найти нужный пункт становится проблемматично. На помощь, в таком случае, приходит модуль rlcompleter. Чтобы проиллюстрировать, как это работает приведу пример из официальной документации:
К слову, упомянутый выше модуль readline помимо дополнения, имеет еще одну полезную функцию - восстановление истории предыдущих сеансов работы с интерпритатором, в виде функций read_history_file и write_history_file.
Чтобы заставить интерпритатор автоматически загружать все эти вкусности делаем следующее:
создаем в домашнем каталоге файл .pystartup (вообще говоря, выбор местоположения и имени этого файла не критичен, так что файл может находиться где угодно и назывться как вам хочется)
добавляем в этот файл строчки:
устанавливаем в ~/.bashrc (.zshrc, .cshrc w\e) значение переменной PYTHONSTARTUP
1 |
наслаждаемся готовым результатом :)
ЗЫ: хочется заранее разочаровать пользователей Windows, модуль , используемый в этом решении, имеет только Unix реализацию.
alvelin 16.06.2010 08:47
Python — Django-buildout - способ быстрого развертывания проекта на Django
Для тех, кто не в курсе: buildout это набор python-скриптов, облегчающий развертывание приложений.Установка, естественно, весьма тривиальна:
easy_install zc.buildout
либо
pip install zc.buildout
С основной (но не слишком подробной) документацией можно ознакомиться здесь -ссылка и здесь - http://buildout.org/.
На глубокое знание по данному вопросу я, естественно, не претендую (тем паче, что при помощи buildout'а можно делать довольно-таки удивительные штуки). Главным поводом для шевеления в данном направлении было то, что единственный стоящий recipe для Django - djangorecipe был заброшен автором еще в младенческой версии - 0.20 (сиречь: не поддерживает ветку 1.2.х)
В связи с этим ваш непокорный навалял на коленке за 20 минут небольшой, но вполне рабочий эрзац (о чем уже писал в своем блоге). Точнее - вырезал его из более крупного собственного buildout'а. С результатом трудов можно ознакомится здесь - github. Там же можно найти и короткую инструкцию по обращению со всем этим делом.
На гордое звание recipe поделие это, конечно, не претендует - мной был набросана всего лишь пара-тройка шаблонов. Но со свой задачей они справляются.Существовавший djangorecipe переделывать не стал (хотя все дело там в нескольких строчках) - мне самому удобнее пользоваться именно шаблонами, т.к. в них гораздо проще вносить изменения. Сейчас шаблоны buildout'a неспешно переводятся на Jinja2, но, боюсь, они уже будут не столь просты и более специфичны.
Для бОльшей автоматизации - если вы используете Eclipse, - советую посмотреть в сторону rbco.recipe.pyeclipse, позволяющего, среди прочего, настроить автокомплит и прочие прелести жизни.
Если кому интересно, то могу подробнее написать про buildout.
wiz 15.12.2010 21:29
Python — Скелет Django-проектов
За вот уже 5 лет работы с джангой (с самого открытия код, ага) я уже столько раз делал ./manage.py startproject что уже и не счесть. И каждый раз это сопровождалось кучей рутинных операций типа настройки бд, созданием одних и тех же приложений. Первое время сама джанга менялась очень быстро и как-то это зафиксировать было практически нереально. К тому же фактически небыло инфраструктуры приложений, репозиториев и прочей обвязки. Но сейчас ситуация намного лучше.Поэтому, представляю недавно собраный скелет типового джанго-сайта. Две команды и получается готовый сайт-со-страницами, готовый к навешиванию мясца.
Это не просто куча кода, но и некоторые решения из практики. Эти фичи я отметил по тексту жирненьким.
Репа с кодом: https://code.launchpad.net/~wiz/+junk/dbones
Лог работы: http://dumpz.org/25701/
Что внутри?
x0x01 25.03.2011 16:59
Скрипты — Качаем обновленные торренты c rutracker.org
Как известно, многие раздачи ведутся путем добавления новых файлов к уже существующим, у rutracker.org нет прямого RSS на обновленный torrent файл.Данный скрипт исправляет этот недостаток. Обходя ссылки из файла urls.lst, проверяет изменились ли размеры torrent файлов, в случае изменений - сохраняет обновленный и запоминает размер в last.lst
Не забудьте перед запуском создать urls.lst и пустой last.lst в каталоге со скриптом.
Собственно код:
#!/usr/bin/env python2
# -*- coding: UTF-8 -*-
# created by x0x01 (aka.x0x01[AT]gmail[dot]com)
import urllib, urllib2, cookielib
from string import strip
LOGIN = 'username'
PASS = 'password'
# путь для сохранения torrent файла
OUT_DIR = './'
#OUT_DIR = '/tmp/gettor/'
# формирование кук
post_params = urllib.urlencode({
'login_username' : LOGIN,
'login_password' : PASS,
'login' : '%C2%F5%EE%E4'
})
# инит обработчика кук
cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)
# авторизация + сессия с куками
web_obj = opener.open('http://login.rutracker.org/forum/login.php', post_params)
data = web_obj.read()
try:
# читаем файл со ссылками, формируем список
fl_url_list = open('urls.lst', 'r')
url_arr = fl_url_list.readlines()
fl_url_list.close()
# чтение файла "размеров", формируем список
fl_dta_list = open('last.lst', 'r')
dta_arr = fl_dta_list.readlines()
fl_dta_list.close()
except IOError:
print 'err'
dta_arr = []
# открытие на запись для новых "размеров" в last.lst
fl_dta_list = open('last.lst', 'w')
# из списка "размеров" формируем словарь ID:SIZE
dta_dic = {}
for curr in dta_arr:
# отрезаем переносы строк
curr = strip(curr)
# делим строку по пробелу и создаем словарь
dta_dic[str.split(curr)[0]] = str.split(curr)[1]
# сохранение torrent файла
def dw_torrent_f(b_data, f_name):
f = open(OUT_DIR+f_name+'.torrent', 'w')
f.write(b_data)
f.close()
# обработка ссылок
for thread_url in url_arr:
# отрезаем переносы строк
thread_url = strip(thread_url)
# делим ссылку на 2 части (получение id форума)
topic_id = str.split(thread_url,'=')[1]
dl_torrent_url = 'http://dl.rutracker.org/forum/dl.php?t='+topic_id
# получение torrent файла по ссылке
web_obj = opener.open(dl_torrent_url, post_params)
data = web_obj.read()
# сравнение размеров полученного файла и в last.lst
try:
if len(data) <> int(dta_dic[topic_id]):
# этот обновился, сохраняем
print '[^]', thread_url
dw_torrent_f(data, topic_id)
except (IndexError, KeyError):
# этот новый, сохраняем
print '[+]', thread_url
dw_torrent_f(data, topic_id)
#print 'UPD:', dl_torrent_url, 'new:', len(data), 'old:', m_dic[topic_id]
# пишем в last.lst новые значения id и размер
fl_dta_list.write(str(topic_id)+' '+str(len(data))+'\n')
# закрытие файла
fl_dta_list.close()
кусочек моего urls.lst
http://rutracker.org/forum/viewtopic.php?t=3414220
http://rutracker.org/forum/viewtopic.php?t=3216842
http://rutracker.org/forum/viewtopic.php?t=3157454
pozadi 10.09.2011 20:55
Мой OpenSource проект — Простой вики-движок для личных заметок
Приветствую!До недавнего времени я хранил свои заметки на wikidot.com пока меня в конец не доконала его тормазнутость, и я не решил написать свой простой и быстрый
Через несколько дней он был готов, и увидел я что получилось не плохо, и решил поделиться с общественностью. Так родился сервис zen-wiki.appspot.com - велкам, может кому-нибудь понравится и тоже будете пользоваться.
Ах да, опенсорц, вот исходники.
Если возникнут вопросы по использованию с удовольствием отвечу в комментариях.
P.S.
Моя вики (для примера)