Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3493 posts.

Python для новичков » Создание дерева объектов. » Сен. 1, 2010 12:33:09

Привет всем.
Думаю как решить такую задачу. Есть некий класс, и нужен еще другой класс, который хранил бы экземпляры первого класса, чтобы можно было их добавлять и удалять, а также пройтись по всему дереву.
Погуглил, а также поискал по этому форуму, понял что решения могут быть разные, и поэтому решил сначала все-таки спросить людей опытных подсказать лучшее решение.
Задача такова что храниться в дереве будет небольшое количество объектов, не больше нескольких десятков, уровень вложенности тоже небольшой, порядка 2-3 уровней.
Может быть стоит использовать вложенные списки для этого дела или есть какие-то другие простые (и/или более правильные) варианты?

Python для экспертов » Выборочная векторизация аргументов функции в numpy » Авг. 28, 2010 18:54:48

Есть некоторая функция с несколькими аргументами, которую векторизуем - делаем возможность этой функции поэлементно обрабатывать массивы и списки:
def g0(T, dic, i):
......................

g0v = numpy.vectorize(g0)
При этом как я понимаю векторизация производится над всеми аргументами. А необходимо это делать например только с первым, так если второй является списком, то функции бы передавался список целиком.

Базы данных » CouchDB на shared хостинге » Авг. 28, 2010 15:58:15

Всем кому интересна база couchDB могут использовать ее на хостинге Webfactional а инструкция по ее установке здесь:
Иструкция по установке couchDB на хостинге

Флейм » Ищется разработчик сервиса для Facebook и Twitter – (API) » Авг. 27, 2010 12:00:06

Ищется разработчик для уникального проекта, сервиса предназначенного для измерения аудитории Facebook и Twitter.

Сервис собирает всю доступную информацию по пользователям и считает метрики по ним. Сервис использует API Facebook и Twitter.

ТЗ тут – https://docs.google.com/document/pub?id=1GCzAd54PyRtluI4IOGrDmuqTiBw8MeYRX2ospGYIXJo
Проект тут - http://www.free-lance.ru/projects/?pid=477088

Python для новичков » wsdl2py и аналоги » Авг. 26, 2010 22:34:36

есть ли аналоги у wsdl2py? ковырял suds, но, как я понял, формировать классы на основании wsdl он не умеет. проблема в том, что при вызове толстой wsdl с кучей xsd клиент не шибко блещет производительностью, а при попытке сделать классы через wsdl2py вовсе провисает во время формирования типов. кто-нибудь сталкивался?

Флейм » Требуется Python/Django программист » Авг. 26, 2010 18:11:19

Ищем Python/Django программиста.
Область приложения: Телеметрия.

Основные обязанности:
* Разработка WEB

Опыт:
* Знания - Python, Django, PostgreSQL
* Навыки - PHP, С/С++, Linux

Требования:
* Самостоятельность и постоянное развитие

Условия работы:
* Метро Таганская
* ЗП - по собеседованию, от 120 т.р.

Занятость:
* Полная

Контакт:
Михаил
email: nagorski@mail.ru
телефон: 8-926-808-8778

Python для новичков » по нажатию на button обновлять текст в radiobutton » Авг. 24, 2010 17:02:41

Добрый вечер!
Программма представляет собой типо тест, с вариантами ответов. Нужно чтобы по нажатию на кнопку менять переманную которая бы обновляла текст в label и radiobutton.
пока что вот так:
...
def doing (event):
n=sca.get()
qst=qstn[n]
r_n=r[n]
label1.configure(text=qst)
rad0.configure(text="1 - "+r_n[0])
rad1.configure(text="2 - "+r_n[1])
def otvet(event):
n=sca.get()
i=var.get()
if i==i_p[n]:
label2.configure(text="BEPHO")
else:
label2.configure(text="HEBEPHO")
...
qst=""
qstn=["vpros1","vopros2","vopros3"]
r0=['v11','v12']
r1=['v21','v22']
r2=['v31','v32
r=[r0,r1,r2]
i_p=[1,0,1]
n=IntVar()
var=IntVar()
var.set(0)
rad0 = Radiobutton(frame,text="",variable=var,value=0)
rad1 = Radiobutton(frame,text="",variable=var,value=1)
...
but=Button(frame,text="OTBET")
but.bind("<Button-1>",otvet)

label2=Label(frame,text="")
label2.grid(row=4,column=1)

but_nxt=Button(frame,text="NEXT")
but_nxt.bind("<Button-1>",doing)

sca = Scale(root,orient=HORIZONTAL,length=100,from_=0,to=2,tickinterval=1,resolution=1)
...
все меняется шкалой, а надо по нажатию на кнопку but_nxt увеличивать n.
Заранее спасибо.
p.s. python 3.1.2

Web » urllib2 HTML Error 404 помогите пожалуйста » Авг. 23, 2010 03:33:55

        auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password('realm', 'reddit.com', 'user_login', 'passwd_login')
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
urllib2.install_opener(opener)
params = urllib.urlencode(dict(user_login='MasulKhan', id_password='qwerty'))
request = urllib2.Request('http://www.reddit.com/', params)
request.add_header('If-Modified-Since', 'Sun, 02 Mar 2008 04:00:08 GMT')
opener.addheaders = [('User-Agent', 'My cool client')]
data = opener.open(request).read()
Получаю:

urllib2.HTTPError : HTTP Error 404 : Not Found

Кто-нибудь сталкивался? Сайт работает. Как убрать ошибку?

Python для новичков » Как правильно выбрать данные » Авг. 17, 2010 21:31:11

Есть набор чисел, читаемый из csv-файла, и надо разбить полученные списки по 4 цифры (координаты прямоугольника - верхний-левый и правый-нижний углы). Как это сделать наиболее “python-way”, без счетчика до 4.

Флейм » Нужен разработчик Python Django JQuery » Авг. 14, 2010 19:10:07

Несложный веб проект нуждается в разработчике.
Есть ТЗ, дизайн, понимание того что необходимо =) не хватает программиста который возьмется и воплотит все задуманное в коде.
Если Вы разработчик и хорошо знаете Python+Django+JQuery то не составит труда в кратчайшие сроки реализовать задуманное и получит компенсацию за потраченное время =).
Для связи supportgreatbag@gmail.com

Python для новичков » Маска в поле ввода Tkinter » Авг. 12, 2010 00:24:04

Народ
Можно ли наложить маску ввода??
И как проверить, что строка является “датой”
Заранее благодарю

Python для новичков » получение multiple данные из формы » Авг. 11, 2010 14:48:07

есть
<select multiple=“multiple” name=“select”>
<option value=“1”>1</option>
<option value=“2”>2</option>
<option value=“3”>3</option>
<option value=“4”>4</option>
</select>

как на питеоне получить данные из select , как словарь

какие варианты существуют, кроме как распарсить сам пост?

никакой фреймворк в данном случае не используется.

Базы данных » Странный результат выдачи при выборке даты » Авг. 10, 2010 13:38:02

поле в таблице users_info, birthday тип date по умолчанию 0000-00-00

у пользователей есть возможность не указывать год рождения, например 0000-12-10. выборка

import MySQLdb

db = MySQLdb.Connect()

cursor = db.cursor()

num = cursor.execute("SELECT user_id, birthday FROM users_info WHERE birthday!='0000-00-00' ORDER BY user_id DESC");

print num;

for rw in cursor.fetchall():
user_id = rw[0];
birthday = rw[1];

print user_id, birthday;

db.close();
и если пользователь частично указал дату рождения то birthday = None. Как правильно выбрать либо поменять логику базы?

Django » Админка. Права только на удаление. » Авг. 9, 2010 12:50:27

Можно ли в интерфейсе администратора назначить пользователю права для данного объекта только на удаление?
У меня не получилось: вижу название таблицы, но не могу на него нажать. Что делать?

Python для новичков » Не могу залогинится на форуме » Авг. 6, 2010 05:36:24

Использую следующий код:
# -*- coding: utf-8 -*-

import cookielib, urllib2, urllib, sys

cj = cookielib.CookieJar()
opener = urllib2.build_opener( urllib2.HTTPCookieProcessor(cj) )

request0 = urllib2.Request( 'http://mydomain.com/phpbb0/', None, {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8"} )
handle0 = opener.open( request0, urllib.urlencode( {'username' : '*** ','password' : '***'} ) )
data0 = handle0.read()
handle0.close()

file('page.htm', 'w').write( data0 )
Смотрю затем содержимое “page.htm” - это та же страница, что и до логина. Из этого делаю вывод, что не залогинился.
Подскажет кто-нибудь, куда копать в этом случае?

GUI » [PyQt4] Производительность QGraphicsScene » Авг. 5, 2010 13:37:00

Требуется отслеживать перемещения и собственно перемещать большое количество картинок/точек (пик - 25000). Ну и неплохо бы, хотя бы для части отслеживать коллизии. Тестовая машина обладает слабым процессором (селерон 2ГГц)

Пока играюсь с примером collidingmice.

1) Вынес QTimer из класса mouse в сцену и привязываю события таймаута к каждой мыши. Что избавляет от подергиваний и мыши движутся куда резвее. Где-то 30-40 мышей может двигаться относительно без тормозов. Процессор нагружен на 40%. Собственно код:
    scene.timer = QtCore.QTimer() 
for i in xrange(MouseCount):
mouse = Mouse()
mouse.setPos(math.sin((i * 6.28) / MouseCount) * 200,
math.cos((i * 6.28) / MouseCount) * 200)
scene.timer.timeout.connect(mouse.timerEvent)
scene.addItem(mouse)
scene.timer.start(1000/33)
2) Добавляю кеширование в инициализацию класса Mouse - self.setCacheMode(QtGui.QGraphicsItem.ItemCoordinateCache) Свободно перемещаются до 120 мышей, процессор нагружается на 80%. Но перестает работать обнаружение столкновений, что, конечно, ожидаемо, но неприятно
3) Наконец удаляю всю математику из метода timerEvent. Оставляю только:
    def timerEvent(self):
self.speed += (-50 + QtCore.qrand() % 100) / 100.0

dx = math.sin(QtCore.qrand() % (360 * 16)) * 10
self.mouseEyeDirection = [dx / 5, 0.0][QtCore.qAbs(dx / 5) < 1]

self.rotate(dx)
self.setPos(self.mapToParent(0, -(3 + math.sin(self.speed) * 3)))
1200 мышек начинают шустро бегать по сцене, но до требуемых 25к это не дотягивает даже близко. Получается нужно хоть сколь бы сложные вычисления выносить в модули СИ? :/ Но как связать методы PyQt, и собственный сишный модуль

Теперь собственно вопросы:
1) Что еще можно докрутить, чтобы увеличить скорость работы/количество перемещаемых объектов? (купить новую машину не предлагать)
2) Понимаю что “математика” из timerEvent неоптимизирована, хотя бы потому что каждая мышка сравнивается с очень большим количеством соседних. И повторов сравнений многовато. Какая методика будет правильнее для данного случая?
3) Какие объекты на сцене весят меньше всего, то есть какие объекты эффективнее всего двигать без потери качества?
4) Вижу еще проблему - каждая мышь двигается последовательно (вроде бы), возможно стоит вычислять следующую позицию всех элементов, а потом одним действием их перерисовывать на сцене. Возможно ли такое?

Django » Админка не добавляет записи в БД » Авг. 5, 2010 02:22:18

У меня достаточно странная проблема: админка не хочет добавлять в базу данных записи. Стабильно на всех попытках (даже в стандартном Auth) выводит одно и то же:

TypeError at /admin/topmenu/menu/add/
'message' is an invalid keyword argument for this function
Request Method: POST
Request URL: http://127.0.0.1:8000/admin/topmenu/menu/add/
Django Version: 1.2.1
Exception Type: TypeError
Exception Value:
'message' is an invalid keyword argument for this function
Exception Location: /usr/lib/python2.6/site-packages/django/db/models/base.py in __init__, line 341
Python Executable: /usr/bin/python
Python Version: 2.6.5
Python Path: ['/home/werevolff/python/steamnet', '/usr/lib/python2.6/site-packages/django_cms-2.0.2-py2.6.egg', '/usr/lib/python2.6/site-packages/South-0.5-py2.6.egg', '/usr/lib/ooo/basis-link/program', '/usr/lib/python26.zip', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/site-packages', '/usr/lib/python2.6/site-packages/PIL', '/usr/lib/python2.6/site-packages/gst-0.10', '/usr/lib/python2.6/site-packages/gtk-2.0', '/usr/lib/python2.6/site-packages/wx-2.8-gtk2-unicode']
Server time: Чтв, 5 Авг 2010 10:01:00 +1100
Traceback Switch to copy-and-paste view

/usr/lib/python2.6/site-packages/django/core/handlers/base.py in get_response
response = callback(request, *callback_args, **callback_kwargs) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/contrib/admin/options.py in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/utils/decorators.py in _wrapped_view
response = view_func(request, *args, **kwargs) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/views/decorators/cache.py in _wrapped_view_func
response = view_func(request, *args, **kwargs) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/contrib/admin/sites.py in inner
return view(request, *args, **kwargs) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/utils/decorators.py in _wrapper
return decorator(bound_func)(*args, **kwargs) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/utils/decorators.py in _wrapped_view
response = view_func(request, *args, **kwargs) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/utils/decorators.py in bound_func
return func(self, *args2, **kwargs2) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/db/transaction.py in _commit_on_success
res = func(*args, **kw) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/contrib/admin/options.py in add_view
return self.response_add(request, new_object) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/contrib/admin/options.py in response_add
self.message_user(request, msg) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/contrib/admin/options.py in message_user
messages.info(request, message) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/contrib/messages/api.py in info
fail_silently=fail_silently) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/contrib/messages/api.py in add_message
return request.user.message_set.create(message=message) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/db/models/fields/related.py in create
return super(RelatedManager, self).using(db).create(**kwargs) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/db/models/query.py in create
obj = self.model(**kwargs) ...
&#9654; Local vars
/usr/lib/python2.6/site-packages/django/db/models/base.py in __init__
raise TypeError("'%s' is an invalid keyword argument for this function" % kwargs.keys()[0]) ...
&#9654; Local vars
Однако, достаточно ввести данные через popup-окно (добавив в адресной строке ?_popup=1), и запись без вопросов добавляется в БД.

РЕШЕНО!

Оказывается, Django не всё-равно как называются модели. В данном случае, существовало приложение guestbook с моделью Message. В результате, Django терялась. После переименования модели проблема исчезла.

Web » mod_python: определить размер загружаемого файла » Авг. 3, 2010 17:52:55

Перед выполнением загрузки хотелось бы определить размер загружаемого файла перед загрузкой. Можно ли это сделать средствами mod_python?
Или же выполнение скрипта mod_python начинается только в тот момент, когда файл уже загружен?

GUI » Python+Gtk. gtk.Notebook » Июль 29, 2010 17:58:00

Код должен добавлять объекты на вкладки gtk.Notebook “по клику мыши”. Добавляет только на первую вкладку. Подскажите, где не прав?

#coding:utf8

import gtk, gtk.glade

tabs=[gtk.EventBox()]
labels=[]
buttons=[]
efields=[]
fTabs=gtk.Notebook()
toplace="null"

def press_event(widget,event,key):
global toplace
if key=="tab":
tabs.append(gtk.EventBox())
tabs[-1].add(gtk.Fixed())
tabs[-1].show()
tabs[-1].connect("button_press_event",press_event,"on_fTabs")
tabs[-1].set_events(gtk.gdk.BUTTON_PRESS_MASK)
tabs[-1].set_visible_window(False)
fTabs.append_page(tabs[-1],tab_label=gtk.Label(u"Вкладка%s"%(len(tabs))))
if key=="label":
toplace="label"
if key=="button":
toplace="button"
if key=="efield":
toplace="efield"
if key=="on_fTabs": #здесь происходит добавление объектов
if toplace=="label":
labels.append(gtk.Label(u"Метка%s"%(len(labels))))
event_box=gtk.EventBox()
event_box.add(labels[-1])
event_box.connect("button_press_event",press_event,"elabel")
event_box.set_events(gtk.gdk.BUTTON_PRESS_MASK)
curFixed=fTabs.get_nth_page(fTabs.get_current_page()).get_child()
curFixed.put(event_box,int(event.x),int(event.y))
event_box.show()
labels[-1].show()
toplace="null"
if toplace=="button":
buttons.append(gtk.Button(u"Кнопка%s"%(len(buttons))))
curFixed=fTabs.get_nth_page(fTabs.get_current_page()).get_child()
curFixed.put(buttons[-1],int(event.x),int(event.y))
buttons[-1].connect("button_press_event",press_event,"ebutton")
buttons[-1].show()
toplace="null"
if toplace=="efield":
efields.append(gtk.Entry())
efields[-1].set_max_length(25)
efields[-1].set_text("Поле ввода%s"%(len(efields)))
efields[-1].connect("button_press_event",press_event,"eefield")
curFixed=fTabs.get_nth_page(fTabs.get_current_page()).get_child()
curFixed.put(efields[-1],int(event.x),int(event.y))
efields[-1].show()
toplace="null"

def editor_buttons(main):
efieldBtn=main.get_widget("efieldBtn")
buttonBtn=main.get_widget("buttonBtn")
labelBtn=main.get_widget("labelBtn")
tabBtn=main.get_widget("tabBtn")
efieldBtn.connect("button_press_event",press_event,"efield")
buttonBtn.connect("button_press_event",press_event,"button")
labelBtn.connect("button_press_event",press_event,"label")
tabBtn.connect("button_press_event",press_event,"tab")

def cons(main):
tabs[0].connect("button_press_event",press_event,"on_fTabs")
tabs[0].set_events(gtk.gdk.BUTTON_PRESS_MASK)
tabs[0].add(gtk.Fixed())
tabs[0].set_visible_window(False)
mFrame=main.get_widget("viewport1")
tabs[0].show()
fTabs.append_page(tabs[0], tab_label=gtk.Label(u"Главная"))
mFrame.add(fTabs)
editor_buttons(main)

Django » Перестали работать ссылки в админке » Июль 28, 2010 10:10:43

Ребята, выручайте :'(
Собственно поставил django-admin-tools. Поигрался с надстройкой этой. Потом надоела. Удалил в settings.py все подключения. Вернул старую настройку (дефолтную) админки. Все бы ничего, но перестали работать ссылки в ней. Например есть раздел “новости”.
Что происходит. На главной странице имеем ссылку такую
http://localhost:8888/admin/
Нажимаем на ссылку, чтобы попасть в раздел новостей и получаем (ссылка в браузере)
http://www.aviacons.ru/admin/news/newspost/
Но ничего не происходит. Я не переходу в раздел новостей. так и остаюсь на главной. Причем это происходит, что на боевом сервере, что на джанговском разработческом.
Может, кто сталкивался?