Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3494 posts.

Python для новичков » jabber бот тереят подключение » Окт. 22, 2013 11:04:00

Нсть вот такой бот http://thp.io/2007/python-jabberbot/ , стандартный пример с сайта разработчика работает все хорошо но проблема в том что через минуту если к боту не посылать команды он просто отключается :| я так понимаю нужно пинговать сервер но как это сделать ? Все боты которые основаны на этой библиотеке имет вот такую болезнь …

Web » Jinja2, wsgi не получается сгенерировать страницу html  » Окт. 20, 2013 10:35:54



Добрый день! У меня такой вопрос:
Есть программа, которая должна гененировать по шаблону html-интерфейс.
import os
from jinja2 import Environment, FileSystemLoader
class SiteViews():
   def indexView(self):
      TEMPLATE_DIR = './template/'
      html = Environment(loader=FileSystemLoader(TEMPLATE_DIR),
                          trim_blocks=True)
      return html.get_template('template.html').render(title = 'Title',
                                                     test = 'Test')
Потом indexView(self) вызывается так в application
    elif environ['PATH_INFO'] == '/map':        
          status = '200 OK'
          templ = SiteViews()
          #output = templ.indexView()
          response_headers = [('Content-type', 'html; charset=UTF-8')]
          start_response(status, response_headers)
          return templ.indexView()
Никаких ошибок нет, но html-не генерируется. хотя если с консоли запустить первую функцию, в консоли html отображается.

В чём может быть проблема? Заранеее большое спасибо!

Python для новичков » Запуск файлов созданных скриптом » Окт. 19, 2013 13:01:01

Здравствуйте , так как полнblй нуб в программировании прошу помощи у знатнblх питоноводов
Скрипт создает множество bat файлов (кол-во зависит от настроек) нужно чтобbl по нажатию на кнопку infos все они запускались и после завершения удалялись , буду очень благодарен за помощь ! Простите за ошибки , сам из Украинbl и нету русской раскладки.
 
# Philippe HUBERDEAU (philpma@free.fr)
#
# Python script to create windows Batch file to launch Nuke renders by command line. It's less memory consuming
# Plus some options like :
# render "frame by frame" which allows to flush properly the memory for each frame. Some comps (same thing with Eyeon Fusion) tends to increase rendering time all along the process.
# "skip existing frame" for deleted bug frames or deleted modified frames to avoid complicated frameranges.
 
# These scripts are inspired from Tim BOWMAN's "bgNukes" and Jep HILL's "skip existing renders" scripts .
#
 
# From Python
import os, sys, shutil, string
import subprocess
# From Nuke
import nuke, nukescripts
 
if __name__ == "__main__":
    if len ( sys.argv ) != 5:
      print 'Usage: NUKE renderWskipExistingFrame.py <nuke_script> <write name> <frame number> <views>'
      sys.exit(-1)
    comp = sys.argv[1]
    write = sys.argv[2]
    framenum = sys.argv[3]
    views = sys.argv[4]
    nuke.scriptOpen( comp )
    filepath = nuke.toNode(write)['file'].value()
    padding = int(filepath.split("%0")[1][0])
    for i in range(padding-len(framenum)):
        framenum = "0" + framenum
    for view in views.split(","):
        image = (filepath.replace("%04d", framenum)).replace("%V", view).replace("%v", view)
        tmpImage = image + ".tmp"
        if not (os.path.exists(image) or os.path.exists(tmpImage)):
            print image + " doesn't exist so rendering this frame.........................................................."
            nuke.execute( write, int(framenum), int(framenum), 1, [view])
        else:
            print "\n"
            print image + " : already exists ... skipping..."
 
def CLrender(nodes=[]):
    """
    Creates command-line Nuke batch file with different control parameters (frame by frame, skip existing frame, Stereo)
    """
    
    if nuke.root().knob('name').value() == '':
        nuke.message('This script is not named. Please save it and try again.')
        return
    nodelist = ''
    if nodes != []:
        nodelist = ','.join([n.name() for n in nodes if n.Class() == "Write"])
    else:
        Writes = nuke.allNodes("Write")
        if len(Writes)==1:
            nodelist = Writes[0].name()
    if nodelist == "":
        nuke.message("Please select Write node(s) !")
        return
    
    class CLrenderDialog(nukescripts.PythonPanel):
        def __init__(self):
            nukescripts.PythonPanel.__init__(self, 'Create rendering command line batch file(s) -- (philhub 2011)')
            self.setMinimumSize(600, 300)
            self.nodesKnob = nuke.String_Knob('nodesExec', 'Node(s) to execute:', nodelist)
            self.addKnob(self.nodesKnob)
            self.startKnob = nuke.Int_Knob('startFrame', 'Start frame :')
            self.addKnob(self.startKnob)
            self.endKnob = nuke.Int_Knob('endFrame', ' End frame :')
            self.addKnob(self.endKnob)
            self.endKnob.clearFlag(nuke.STARTLINE)
            self.spaceKnob = nuke.Text_Knob('space', '')
            self.addKnob(self.spaceKnob)
            self.spaceKnob.setFlag(nuke.STARTLINE)
            
            self.limitKnob = nuke.Boolean_Knob('limit', 'Limit Memory to (Go)')
            self.addKnob(self.limitKnob)
            self.limitKnob.setFlag(nuke.STARTLINE)
            self.memKnob = nuke.Int_Knob('mem', '')
            self.addKnob(self.memKnob)
            self.memKnob.clearFlag(nuke.STARTLINE)
            # self.unitKnob = nuke.Text_Knob('unit', 'Go')
            # self.addKnob(self.unitKnob)
            # self.unitKnob.clearFlag(nuke.STARTLINE)
            
            self.limitcpuKnob = nuke.Boolean_Knob('limitcpu', 'Limit Cores to')
            self.addKnob(self.limitcpuKnob)
            self.limitcpuKnob.clearFlag(nuke.STARTLINE)
            self.cpuKnob = nuke.Int_Knob('cpu', '')
            self.addKnob(self.cpuKnob)
            self.cpuKnob.clearFlag(nuke.STARTLINE)
            
            self.spaceKnob2 = nuke.Text_Knob('space2', '')
            self.addKnob(self.spaceKnob2)
            self.spaceKnob2.setFlag(nuke.STARTLINE)
            
            self.threadsKnob = nuke.Int_Knob('threads', 'Number of BAT files :')
            self.addKnob(self.threadsKnob)
            self.threadsKnob.setFlag(nuke.STARTLINE)
            self.threadWhyKnob = nuke.Text_Knob('threadWhy', '(to distrib on multiple cores/boxes)')
            self.addKnob(self.threadWhyKnob)
            self.threadWhyKnob.clearFlag(nuke.STARTLINE)
            self.fbfKnob = nuke.Boolean_Knob('fbf', 'Frame by Frame')
            self.addKnob(self.fbfKnob)
            self.fbfKnob.setFlag(nuke.STARTLINE)
            self.skipKnob = nuke.Boolean_Knob('skip', 'Skip existing Frames')
            self.addKnob(self.skipKnob)
            self.skipKnob.setFlag(nuke.STARTLINE)
            self.stereoKnob = nuke.Boolean_Knob('stereo', 'Stereo')
            self.addKnob(self.stereoKnob)
            self.stereoKnob.setFlag(nuke.STARTLINE)
            self.backupKnob = nuke.Boolean_Knob('backup', "Create a comp's backup")
            self.addKnob(self.backupKnob)
            self.openFolderKnob = nuke.Boolean_Knob('openFolder', "Open folder")
            self.addKnob(self.openFolderKnob)
        self.openFolderKnob.setFlag(nuke.STARTLINE)
            self.spaceKnob2 = nuke.Text_Knob('space', '')
            self.addKnob(self.spaceKnob2)
            self.spaceKnob2.setFlag(nuke.STARTLINE)
            self.backupKnob.setFlag(nuke.STARTLINE)
            self.okButton = nuke.Script_Knob( "OK" )
            self.addKnob( self.okButton )
            self.okButton.setFlag(nuke.STARTLINE)
            self.cancelButton = nuke.Script_Knob( "Cancel" )
            self.addKnob( self.cancelButton )
            self.infosKnob = nuke.PyScript_Knob('infos', "infos")
            self.infosKnob.setCommand('''import webbrowser
webbrowser.open("http://www.nukepedia.com/python/render/cmdlinerender/")''')
            self.addKnob(self.infosKnob)
        
            
    p = CLrenderDialog()
    
    p.startKnob.setValue(int(nuke.knob("first_frame")))
    p.endKnob.setValue(int(nuke.knob("last_frame")))
    p.memKnob.setValue(8)
    p.cpuKnob.setValue(2)
    p.threadsKnob.setValue(6)
    p.fbfKnob.setValue(1)
    p.skipKnob.setValue(0)
    p.stereoKnob.setValue(0)
    p.backupKnob.setValue(0)
    p.openFolderKnob.setValue(1)
    
    result = p.showModalDialog()
    
    if not result: return
    nuke.scriptSave('')
    start = p.startKnob.value()
    end = p.endKnob.value()
    threads = p.threadsKnob.value()
    mem = p.memKnob.value()
    cpu = p.cpuKnob.value()
    fbf = p.fbfKnob.value()
    skip = p.skipKnob.value()
    stereo = p.stereoKnob.value()
    if threads < 1: 
        return
    flags = "-x "
    if stereo:
        views = ','.join(nuke.views())
    else:
        views =  nuke.views()[0]
    flags += " -view " + views
    
    if nodelist != '':
        flags += " -X " + nodelist
        if p.limitKnob.value():
            flags +=   " -c " + str(mem) + "G"
        if p.limitcpuKnob.value():
            flags +=   " -m " + str(cpu)
    comp_dirpath = nuke.value("root.name")
    exe = '"'+nuke.env['ExecutablePath']+'"'        # for BAT file, " avoid error with names with spaces
    
    if p.backupKnob.value():
        bkp_dirpath = os.path.dirname(comp_dirpath) + '/backup_from_CLrender/'
        if not os.path.exists(bkp_dirpath):
            os.makedirs(bkp_dirpath)
        bkp_filepath = bkp_dirpath + os.path.basename(comp_dirpath)
        shutil.copy(comp_dirpath, bkp_filepath)
        comp_dirpath = '"' + bkp_filepath + '"'   # for BAT file, " avoid error with names with spaces
    else:
        comp_dirpath = '"' + comp_dirpath + '"'   # for BAT file, " avoid error with names with spaces
        
    for thread in range(threads):
    
        bat_name = nuke.value("root.name").replace('.nk', '_' + nodelist.replace(",","-") + "_x"+ str(threads)  + "x"  + str(start+ thread) + "-" + str(end)+ '.bat')
        if fbf and not(skip):
            cmd = r"FOR /l %%I IN (" + ",".join([str(start + thread), str(threads), str(end)]) + r") DO (" + " ".join([exe, flags, r"-F %%I-%%I", comp_dirpath]) + ")"
            bat_name = bat_name.replace('.bat', '_FrameByFrame.bat')
        elif skip:
            cmd = r"FOR /l %%I IN (" + ",".join([str(start + thread), str(threads), str(end)]) + r") DO (" + " ".join([exe, "-t", os.path.realpath( __file__ ), comp_dirpath, nodelist, "%%I", views]) + ")"
            bat_name = bat_name.replace('.bat', '_SkipExisting.bat')
        else:
            cmd = " ".join([exe, flags, '-F', '"' + str(start+ thread) + "-" + str(end) + 'x' + str(threads) + '"', comp_dirpath ])
 
        if stereo:
            bat_name = bat_name.replace('.bat', '_STEREO.bat')
 
        print "command : " + cmd
        print  "saved to : " + bat_name
 
        try:
            file = open(bat_name, 'w')
            #file.write("mode con cols=500 lines=500")
            file.write("\nCOLOR 4f\n")
            file.write("\n")
            file.write(cmd)
            file.write("\n\nCOLOR 2f\n")
            file.write("taskkill cmd.exe")
            
        finally:
            file.close()
    if p.openFolderKnob.value():
        openCompFolder()
            
def openCompFolder():
    path = nuke.tcl("return [file dirname [value root.name]]")
    cmd = "explorer " + (path.replace("//","/")).replace("/","\\")
    os.system(cmd)
    
 
    
 
 
 
'''
menubar = nuke.menu('Nuke')
m =  menubar.addMenu('Nukepedia')
m.addCommand('CL Render', 'CmdLineRender.CLrender(nuke.selectedNodes())')
'''

Django » tinymce: квадратики и ромбики вместо иконок. » Окт. 17, 2013 09:42:28

Прикрутил tinymce и вместо иконок какая-то ерунда. В пакете есть шрифты, но как их задействовать?

Проблема только на встроенном сервере джанго (если через апач то всё нормально), в принципе мелочь. Но если можно пофиксить, то как?

Суть проблемы:
application/x-font-ttf ttf
application/x-font-otf otf
application/font-woff woff
application/vnd.ms-fontobject eot
image/svg+xml svg

Python для новичков » RGB to YCbCr » Окт. 16, 2013 15:59:31

Доброго времени суток.

Имеется:
import Image
class PreImage(object):
    ''' input_image - buffer for input image
      width, height - sizes of input image
      output_color_space - buffer for image which contain some color space
      RGB2YCbCr() - function for convert RGB into YCbCr
      convert() - function for convert from one color space to another
    '''
def __init__(self, input_image_name):
    self.input_image = Image.open(input_image_name)
    self.width, self.height = self.input_image.size
    size = self.input_image.size
    self.output_color_space = Image.new("RGB", size)
    self.output_grey_scale = Image.new("RGB", size)
def RGB2YCbCr(self,rgb):
    cbcr = [0,0,0]
    cbcr[0] = int(0.299*rgb[0] + 0.587*rgb[1] + 0.114*rgb[2]) # Y
    cbcr[1] = int((rgb[2] - cbcr[0])*0.564 + 128) # Cb
    cbcr[2] = int((rgb[0] - cbcr[0])*0.713 + 128) # Cr
    return cbcr
def convert(self):
    cbcr = [0,0,0]
    for i in range(self.height):
         for j in range(self.width):
              rgb = self.input_image.getpixel((j, i))
              cbcr = self.RGBYCbCr(rgb)
              self.output_color_space.putpixel((j, i), tuple(cbcr))
    self.output_color_space.save("Result.jpg", "JPEG")
a = PreImage("RGB.jpg")
a.convert()

Результат не тот, что я ожидал. Хотелось бы понять, что я не так сделал и как из YCbCr 444 сделать 422. И если можно сделать проще, то я был бы не прочь увидеть пример.

Еще подсказали:
from subprocess import Popen
import Image
Popen(['convert', '-colorspace', 'YCbCr', '-sampling-factor', '4:2:2', 'Test.png', 'Test1.png']).wait()

Но как можно легко догадаться, это не особо мне помогло понять, чем же эти два файла отличаются и работает ли это, единственное, что я явно заметил, что RGB файл весил меньше, чем YCbCr 4:2:2.
Был бы благодарен за объяснения, как я понял, тут видимо используется какой-то внешний кодек.

Еще интересует вопрос, что же возвращает Image.convert(“YCbCr”) в PIL.

Заранее спасибо.

Python для новичков » Кодировка для вывода ldap-запроса » Окт. 16, 2013 14:48:17

Доброго времени суток, уважаемые!
Пишу скрипт для вывода пользовательской информации из Microsoft Active Directory. Проблема в том, что вывод выглядит в виде “мяса”, так как на виндовом сервере кодировка скорее всего Cp-1251 а на сервере на котором будет крутиться скрипт UTF-8. Подскажите пожалуйста чайнику как преобразовать вывод в нормальный вид, что бы было видно русские имена.
Пример запроса:
 result = self.l.search_s("OU=Managers"+",DC=domain,DC=loc", ldap.SCOPE_SUBTREE, '(&(objectCategory=Person)(objectClass=user))')
Вывод выглядит примерно так:
'name': ['\xd0\xa1\xd0\xb5\xd\xb8 \xd0\xb4\xd0 …..

Спасибо!

Python для новичков » SOCKS прокси-сервер на сокетах » Окт. 14, 2013 03:43:11

Понадобился не совсем обычный прокси-сервер, в качестве тренировки (а также ввиду отсутствия готовых решений с необходимым функционалом) решил написать его сам, питон отлично мне подходит для этой задачи. Нашел несколько исходников, были и совсем простые, буквально в 200 строк. С хэндшейком разобрался, проблем не возникает. Но вот никак не могу понять, как правильно действовать после.. Сейчас имеется вот такой код:
def forward(src, dest):
    try:
        data = src.recv(10)
        while data:
            dest.sendall(data)
            data = src.recv(10)
    except:
        src.close()
        dest.close()
while True:
    insock, addr_info = sock.accept()
    print 'start proxy session with client', addr_info[0]
    
    # ... handshake
    # ... получение ip и port
    # ... коннект к ip:port -> outsock
    Thread(target=forward, args=(insock, outsock)).start()
    Thread(target=forward, args=(outsock, insock)).start()
То есть запускается два потока, которые обмениваются данными. Вопрос в том, как грамотно отследить, что данные закончились? В голову пришло только ставить таймаут socket.settimeout(), к примеру, 5 секунд, ловить socket.error и закрывать соединения. Но это ведь бред - так можно и полтора часа ждать загрузки сайта, пока прокси отработает соединения со всеми хостами… Может быть, как-то можно по-другому отследить окончание обмена данными? С сокетами просто не работал никогда, не очень хорошо прошарил, что к чему

Python для новичков » (SOLVED)pymsql : cursor ничего не выписывает » Окт. 13, 2013 19:33:28

Привет всем,

надеюсь мой вопрос не будет через чур детский :)
хочу через пайтон вытянуть данные из mssql server
делаю так как сказано в доках

cur = conn.cursor()
cur.execute('SELECT * FROM name WHERE lastname='user' )
row = cur.fetchone()
while row:
    print "(row[0])
    row = cur.fetchone()

а в результате пустая строка. Даже не None, а просто пусто,
Если вызову cur.description(), данные выписываются, т.е. все столбцы у юзера. А вот через print ничего.
Подскажите пожалуйста, что я делаю не так, Так как, очевидно, ошибка у меня, раз данные есть, но выписать не могу их.

Спасибо

UPDATE:
у меня gentoo. Пакер pymmysq устанавливал через emerge. Снес, и попробовал через pip install pymssql - заработало.


Django » Взаимодействие с другим сайтом » Окт. 13, 2013 07:13:06

Доброго времени суток.
столкнулся с задачей организации возможности оплаты по карте в интернет магазине.
сценарий такой - пользователь оформил корзину на сайте и выбрал способ оплаты. затем открывается страница сервиса оплаты где пользователь вводит номер карты и т.д. по завершению пользователя опять отправляют на сайт магазина.
вопрос 1: как правильно передавать сервису оплаты запрос? методом тыка получилось сделать так:
return HttpResponseRedirect(u'success_%s' % main_url)
(где main_url это строка с адресом сайта и POST запросом) но чтото мне подсказывает что это не грамотно.
вопрос 2: после того как я ввел тестовый номер карты меня перебрасывает на мой сайт, но я вижу
CSRF verification failed. Request aborted

GUI » таблица в резиновом интерфейсе. Tkinter » Окт. 12, 2013 22:30:48

Необходимо разместить несколько виджетов (ttk.Label) в ряд так, чтобы они примыкали друг к другу. Получившаяся таблица должна быть резиновой, т.е. сохранять относительную ширину каждого элемента при изменении размеров главного окна. Простое задание этих пропорций в place не катит, ибо place, по ходу, очень грубо округляет (элементы то разъезжаются, то наползают друг на друга). Вставка bind('<Configure>', …) с аккуратным пересчетом положения дает жуткое мелькание при изменении размера главного окна, и (иногда при быстром растягивании) правый край выползает за границу. Есть ли способ сделать примыкающие друг к другу виджеты резиновыми? Так, чтобы плавно и без багов растягивались?

Django » выборка через values() » Окт. 11, 2013 11:18:34

class Category(models.Model):
    name = models.CharField(...)
class Post = (models.Model):
    name = models.CharField(...)
    category = models.ForeqignKey(Category, null=True, blank=True)
all_posts = Post.objects.values('name', 'category__name')

в all_posts не попадут записи, у которых category=None.
Как это можно обойти?

мне надо одним запросом получить все записи именно через values. потому что там дикты. И они работают очень быстро.

выше просто привел пример для наглядности. В реальной задаче делается выборка записей более 500000.
Пробовал через select_related().only(…..) но там возвращается не словарь. И питон долго работает с записями.

А когда делаю через values() разница почти 20-30 раз. Но некоторые записи не попадают.

Python для новичков » pyglet+Linux(ROSA) » Окт. 9, 2013 09:37:33

Хотел посмотреть данный фреймфорк(pyglet). Установил через setup.py который идет вместе с ним. Но при запуске под данной ОС (ROSA на базе red+hat+linux) любого приложения, даже из примеров получаю ошибку.

python graphics.py 
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
Traceback (most recent call last):
  File "graphics.py", line 50, in <module>
    from pyglet.gl import *
  File "/home/svitaliy/Документы/src_python/pyglet/gl/__init__.py", line 510, in <module>
    import pyglet.window
  File "/home/svitaliy/Документы/src_python/pyglet/window/__init__.py", line 1684, in <module>
    gl._create_shadow_window()
  File "/home/svitaliy/Документы/src_python/pyglet/gl/__init__.py", line 494, in _create_shadow_window
    _shadow_window = Window(width=1, height=1, visible=False)
  File "/home/svitaliy/Документы/src_python/pyglet/window/xlib/__init__.py", line 474, in __init__
    super(XlibWindow, self).__init__(*args, **kwargs)
  File "/home/svitaliy/Документы/src_python/pyglet/window/__init__.py", line 641, in __init__
    raise NoSuchConfigException('No standard config is available.')
Сама библиотека подключается корректно.
Нашел, что данную ошибку решили патчем для дистрибутивов линейки debian.
Как понял ошибка распространенная. Кто нибудь может мне помочь?

Центр помощи » обработка запроса из html » Окт. 6, 2013 17:10:43

всем добрый день!
Прошу помочь разобраться с такой задачей:
- пользователь вводит что-то в поле в хтмл, питон с помощью регулярок должен проверить то, что он ввел. Вопрос: можно ли “пихать” значение из request.args в массив? Например так:
message = request.args['mess']
        for line in message:
            line = line.split()
            for n in line:
                arr_info.append(message)
        if request.args != None:
            name = request.args['user']
            for i in arr:
                arr.append(name)
        for i in range(len(arr)):
            m = re.search(u'что-то регулярное', arr[i])
            if m != None:
… и так далее.
Можно ли так поступать с аргументами?
Спасибо.

Флейм » Openshift: делимся впечатлениями » Окт. 5, 2013 09:47:53

Поставил Kotti CMS, подключил postgres 9, страница открывается 10 сек, попробовал mysql, стало 6 сек. Всеравно дофига. Походу сеть тормозит между хостами.

Только у меня так или это на бесплатном плане такое ограничение?

Python для новичков » DirectPython 11 и цвет фона » Окт. 1, 2013 17:03:52

Доброго всем времени суток.
Пишу приложение на Python c использованием DirectPython 11. Пытаюсь решить тривиальную задачу замены цвета фона при визуализации. Вот пример из документации (приаттаченный .fx должен лежать рядом в папке “Effects”):
import math
import time
#Import DirectPython modules and constants.
import d3d11
import d3d11x
from d3d11c import *
#First we need a window. If you don't want to do any visible
#rendering this could be omitted.
window = d3d11.Window()
window.setTitle("Tutorial 2 - A colored triangle")
window.show(SW_SHOW)
#Then create a Device and tell it to use our window for drawing.
#Use a software WARP-device, in real applications you might
#try hardware first and fall back to software if that fails.
device = d3d11.Device(window, DRIVER_TYPE_WARP)
#Our vertex layout description: position (x, y, z) and color (r, g, b, a).
#See the "Layouts and input layouts" article in the documentation.
vertexDesc = [
    ("POSITION", 0, FORMAT_R32G32B32_FLOAT, 0, 0, INPUT_PER_VERTEX_DATA, 0),
    ("COLOR", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0),
    
    #This is functionally same as above, only easier to read. I use the complex one now
    #so that you don't get confused when you encounter it in samples.
    #("POSITION", 0, FORMAT_R32G32B32_FLOAT),
    #("COLOR", 0, FORMAT_R32G32B32A32_FLOAT),
]
#Our triangle - three vertices with position and color. The layout must match 'vertexDesc'.
triangle = [
    (-5, 0, 0) + (1, 0, 0, 1), #Red vertex.
    (0, 10, 0) + (0, 1, 0, 1), #Green vertex.
    (5, 0, 0)  + (0, 0, 1, 1), #Blue vertex.
]
#Effect for rendering. The file contains trivial vertex- and pixel-shader.
effect = d3d11.Effect(d3d11x.getResourceDir("Effects", "Tutorial2.fx"))
#Input layout for the effect. Valid when technique index == 0 and it's pass index == 0 or
#the pass's input signature is compatible with that combination.
inputLayout = d3d11.InputLayout(vertexDesc, effect, 0, 0)
#Create a hardware buffer to hold our triangle.
vertexBuffer = d3d11.Buffer(vertexDesc, triangle, BIND_VERTEX_BUFFER)
#Precalculate view matrix. Eye position is (0, 5, -15) and it is looking at (0, 5, 0). (0, 1, 0) points up.
viewMatrix = d3d11.Matrix()
viewMatrix.lookAt((0, 5, -15), (0, 5, 0), (0, 1, 0))
def mainloop():
    while 1:
        #Check all new messages.
        for msg in window.getMessages():
            if msg.code == WM_DESTROY:
                #Close the application.
                return
             
        #Set default render targets.
        device.setRenderTargetsDefault() # <--------------- ВОТ
        #Set vertex buffer, input layout and topology.
        device.setVertexBuffers([vertexBuffer])
        device.setInputLayout(inputLayout)
        device.setPrimitiveTopology(PRIMITIVE_TOPOLOGY_TRIANGLELIST)
        
        #Projection matrix.
        screenDesc = device.getScreenDesc()
        fieldOfView = math.radians(60.0) #60 degrees.
        aspectRatio = float(screenDesc.width) / screenDesc.height
        projMatrix = d3d11.Matrix()
        projMatrix.perspectiveFov(fieldOfView, aspectRatio, 0.1, 100.0)
        
        #The world matrix. Rotate the triangle (in radians) based
        #on the value returned by clock(). 
        yRot = time.clock() 
        worldMatrix = d3d11.Matrix()
        worldMatrix.rotate((0, yRot, 0))
        
        #Combine matrices into one matrix by multiplying them. 
        wordViewProj = worldMatrix * viewMatrix * projMatrix
        
        #Update effect variable(s).
        effect.set("worldViewProjection", wordViewProj)
        #Apply technique number 0 and it's pass 0.
        effect.apply(0, 0)
        
        #Draw all three vertices using the currently bound vertex buffer
        #and other settings (Effect, input layout, topology etc.).
        device.draw(len(vertexBuffer), 0)
        
        #Present our rendering. Wait for vsync.
        device.present(1)
            
#Start the mainloop.            
mainloop()

Запускается, треугольник крутиться, но на черном фоне. Понятно, что нужно заменять функцию setRenderTargetsDefault(). В документации по ссылке указано, что функция аналогична следующему коду:
rt = device.getDefaultRTView() #Render target
rt.clearRenderTarget()
ds = device.getDefaultDSView() #Depth stencil
ds.clearDepthStencil()
device.setRenderTargets([rt], ds)
#Must be released.
ds.release()
rt.release()

Вне зависимости от наличия аргументов у clearRenderTarget() и clearDepthStencil() получаем “прекращена работа программы python.exe”, ошибок в консоли, естественно нет.

Комментируя эти функции получаем черный экран приложения без ошибок. Значит ошибка либо в них, либо в строке
device.setRenderTargets([rt], ds)

От железа ошибка не зависит - проверено на нескольких машинах.
Есть идеи?

Флейм » Ищу разработчиков для удаленной работы над длительным проектом » Сен. 30, 2013 19:32:51

Приглашаем на работу веб-разработчиков

Требования:
• python/django
• опыт работы с формсетами и CBV
• умение работать с хранилищами Mercurial и/или Git ( используем Hg )
• понимание ООП, MVC (MVT)
• Пользователь или администратор Unix/Linux
Если вы хороший фронт-енд разработчик - знание JS (jQuery, понимание технологии Ajax, и готовы реализовать разного рода перетаскивания элементов по сайту мышкой(в корзину…. из корзины …)) со знанием шаблонизатора джанги или со знаниями основ питона, тоже найдется работа.

Приветствуется (отсортировано по важности ):
• умение верстать HTML5 & CSS3 ( Используем Foundation 4 )
• знание JS (jQuery, понимание технологии Ajax)
• опыт работы с Celery, Sphinx
• желательно понимание SQL умение написать запрос к базе (PostgreSQL)

Используем Eclipse+PyDev с плагинами, но если вы используете свои IDE и редакторы и даете результат в договоренные сроки - не возражаем.
Трекер задач - Redmine

Оплата почасово по договоренности, зависит от навыков и выработки.
Писать на call (dog) bergsoftplus.com или в личку

GUI » GTK+ 3 закрытие окна » Сен. 27, 2013 23:16:14

Доброго времени суток, уважаемые!
Не так давно принялся изучать python, по этому не пинайте сильно.
Изучаю создание графических приложений при помощи glade + python. В общем суть вопроса в том, что после закрытия дочерних окон и повторном их открытии они открываются пустыми, на них отсутствуют какие либо элементы окна (кнопки, надписи и пр.). Вот пример кода:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#import sys
from gi.repository import Gtk
class Handler:
	def f_open(self, widget, data=None):
		self.window2 = builder.get_object("window2")
		self.window2.show_all()
		self.window2.set_title("Дочернее окно")
	def close(self, *args):
		Gtk.main_quit(*args)
	def close_win(self, *args):   # закрываю дочернее окно
		self.window2.destroy() 
builder = Gtk.Builder()
builder.add_from_file("project-test.glade")
builder.connect_signals(Handler())
window = builder.get_object("window1")
window.show_all()
window.set_title("Основное окно")
Gtk.main()

Флейм » Ищу django разработчика для подработки(настройка сервера + установка django) » Сен. 25, 2013 13:02:29

Ищу django разработчика для подработки(настройка сервера + установка django)
Обращаться на:

Python для новичков » Скрытый запуск или скрыть появление ошибки » Сен. 24, 2013 14:18:48

Уважаемы профи, подскажите, как можно скрыть или отключить вывод ошибки.

Есть задача мониторить загрузку ядер на window server 2003
Решил сие процесс реализовать через SNMP обращение. Но так после перезагрузки OID скачет, то я решил указать явно вероятные значения.
Но вот загвостка, когда отсутствует OID в окошке я вижу:
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: HOST-RESOURCES-MIB::hrProcessorLoad.1

Собственно вопрос, как срыть его?

import subprocess
cpu_mib = [".1.3.6.1.2.1.25.3.3.1.2.1", ".1.3.6.1.2.1.25.3.3.1.2.2", ".1.3.6.1.2.1.25.3.3.1.2.3", ".1.3.6.1.2.1.25.3.3.1.2.4", ".1.3.6.1.2.1.25.3.3.1.2.5", ".1.3.6.1.2.1.25.3.3.1.2.6", ".1.3.6.1.2.1.25.3.3.1.2.7", ".1.3.6.1.2.1.25.3.3.1.2.8", ".1.3.6.1.2.1.25.3.3.1.2.9", ".1.3.6.1.2.1.25.3.3.1.2.10", ".1.3.6.1.2.1.25.3.3.1.2.11"] 
for cpu_i in cpu_mib:
    cpu = subprocess.Popen([r"C:\usr\bin\snmpget.exe","-v","2c","-c","porno","-Oqv","-Ln", "localhost", cpu_i], shell=False, stdout=subprocess.PIPE).communicate()[0].replace('\r', '').replace('\n', '')
exit

Спасибо, что уделили моему вопросу время.

Python для новичков » Как преобразовать .ui-файл в .py в Linux? » Сен. 24, 2013 12:48:17

Нашел способ, но он действует лишь для Qt3, а я же пользуюсь 4й версией.