?

Log in

Сообщество для программистов Python,C/C++
Recent Entries 
Господа! Сколько и какие есть методы реализации Фоновой заливки?
Как сделать градиент фона или объекта?
Comodo is hiring
Некоторые френды уже знают, что я пару месяцев назад сменил работу - из небольшой аутсорсинговой фирмы перешёл в большую продуктовую.

На бесплатные продукты, которые делает Comodo (файрвол, антивирус, anti-spyware etc.), можно посмотреть тут:
http://www.comodo.com/products/free_products.html

И я доволен! Подробности позже, кому интересно, а пока давайте-ка я помогу своей новой компании и кому-нибудь из моих хороших знакомых встретиться. Итак,

Одесскому представительству крупной американской компании COMODO Group INC, требуются программисты для разработки комплексного программного обеспечения. Компания П-Софт специализируется на разработке ПО в таких направлениях как системы автоматизирования хостинга, системы безопасности, сертификаты и т.д.

Java Developers

1) Senior Java Developer
Responsibilities:
# Developing web application penetration testing tools

Required Skills:
# 3+ years of java experience
# 5+ years of programming experience
# deep understanding of web related security vulnerabilities
# deep understanding of http protocol, relational databases
# security related certificates a plus


2) Senior Java Developer
Responsibilities:
# Developing server-side code for various web application

Required Skills
# 7+ Years java experience
# Deep understanding of OOP and OOD
# Server side programming
# Web application programming
# Any experience using Open Source frameworks, or different areas of the J2EE stack a benefit
# Understanding of the following technologies:

* XML
* Servlets
* JSP
* multi-threading
* internet protocols
* JDBC
* relational databases.



Preferred Skills:
# Experience in agile style of development process is a plus
# any of GWT, Struts, String, Hibernate
# Eclipse or IntellJ
# Ant
# Tomcat
# Skills working in Linux environment


3) Junior Java Developer
Responsibilities
# Developing server-side code for various web applications

Required Skills:
# BS in computer science or related discipline
# Knowledge of Java
# Servlets
# Multi-threading
# Internet protocols
# Relational databases


4) Java Developer
Responsibilities
# Developing server-side code for various web applications

Required Skills:
# 3+ years java experience
# Understanding of OOP
# Knowledge of servlets, jsp, multi-threading, internet protocols and relational databases

Preferred Skills:
# any of GWT, Struts, String, Hibernate
# Eclipse or IntellJ
# Ant
# Tomcat
# Skills working in Linux environment.


Ruby On Rails developers

1) Ruby On Rails Junior Developer
Responsibilities:
# Be part of the team developing company critical web infrastructure - including billing system and account management portals.

Must have skills:
# Some experience in any of the above: java, C#/.NET, C++, PHP
# Knowledge of HTML, CSS and JavaScript is a plus.


2) Ruby On Rails Developer
Responsibilities:
# Be part of the team developing company critical web infrastructure - including billing system and account management portals.

Must have skills:
# 1 Ruby On Rails App under your belt (personal or work, will ask for demo as part of interview)
# 3+ years of experience in any of the above: java, C#/.NET, C++, PHP
# 3+ years SQL
# 3+ years software dev. Experience
# Knowledge of HTML, CSS and JavaScript

Preferred skills:
# Agile/XP/Scrum or similar methodologies
# Unit testing, SVN.


3) Senior Ruby On Rails Developer
Responsibilities:
# Be part of the team developing company critical web infrastructure - including billing system and account management portals.

Must have skills:
# Guru level knowledge of Ruby, and RoR with large number of projects to demonstrate (will ask for demo as part of interview)
# 5+ years of experience in any of the above: java, C#/.NET, C++
# Strong knowledge of SQL
# Strong knowledge of web application development
# Knowledge of HTML, CSS and JavaScript

Preferred skills:
# Agile/XP/Scrum or similar methodologies
# Unit testing, SVN.
# Experience developing billing systems


C++ Developers

1) Windows C++ Developer, win32
Responsibilities:
# Be part of the team developing highly ambitious conferencing software

Must have skills:
# 3+ years in C++
# Strong knowledge of english
# OO Design
# Win32 and windows message
# Good understanding of TCP and UDP protocols
# You must write solid, high quality, maintanable code

Prefered skills:
# Understanding of VNC and RDP protocols
# Experience creating chat, VOIP or video conferencing products


2) Specialist C++/Win32,
familiar with Windows internals, with non-standard thinking, and loving to solve various brain-twisting tasks

Requirements
# knowledge in C/C++ development for Win32
# knowledge in WinAPI
# knowledge in Windows internals, undocumented/native NT API


3)Driver Programmers
Requirements
# Strong knowledge in C/C++ development for Win32
# Experience in windows device driver development,
# Experience in file system/disk filter drivers


4)Application Programmers

Requirements
# Strong knowledge in C/C++ development for Win32
# Strong knowledge in various windows libraries like MFC
# Experience in Windows user interface development


5) C++ developer
Requirements:
# Minimum 3 years expirience.
# Knowledge of Windows internals.


6)C++ developer
Requirements:
# Minimum 3 years expirience.
# Qt developing expirience (min 3 years).
# SQL.


7) C++ developer.
Requirements:
# C++.
# Expirience in creating emulators.


8)C++ developer for Linux/Unix
Requirements:
# At least 3+ years experience in C++;
# Strong knowledge in C/C++ development for Linux/Unix;
# Experience in creating modules for Apache (threads/shared memory)is
desirable;
# orderliness and discipline;
# Good written technical english.


Reverse engineers

Reverse Engineers

Required Skills:
# experience in IDA, SoftICE, Ollydbg;
# knowledge in asm x86, ARM (желательно также от других семейств);
# knowledge windows API (also Native);
# good english.


QA Engineers

QA Engineer

The successful candidate should meet most of the following requirements:
# 1-2 years of experience in QA;
# Good knowledge of automated QA tools.
# English reading/writing on pre-intermediate level.
# Good knowledge of networking concepts and IP stack.
# Personal Skills: Must be a good team worker and self motivated.
# Must be able to manage one's own time effectively and be a good problem solver.


Оплата, в зависимости от вакансии и опыта - 700-2300 у.е.
Компания предоставляет: официальный доход, 5ти-дневная рабочая неделя, оплачиваемые больничные и отпуск (20 рабочих дней), отсутствие сверхурочных, обучение английскому языку и настольному теннису.

Резюме направляйте по адресу psoftod@ukr.net.
Или пишите на ICQ: 65189844.
Сайт компании: http://www.comodogroup.com/corporate
OGL(Object Graphics Library). В отличии от всех предыдущих позволяет работать с дугами.(т.е. составление сложных двухмерных объектов(из линий и дуг))

При объявлении граф.контекста рисования PseudoDC(), и работы ClientDC() - показал результаты на прежних условиях
(10000 Rectangle) , раскрашеные 0.48 сек., (10000 Line) 0.32 , (10000 Arc) - 0.38 но в случае с Дугами он долго визуализирует их если они в случайном порядке.

В данном случае заключаю что "OGL" это самый быстрый и качественный метод рисования объектов позволяющий с ними работать, как по отдельности так и компонуя их в группы, что очень удобно для моей задачи(САПР).

Визуализаторам двухмерной графики советую обратить на него пристальное внимание.

По желанию могу выкласть код тестовых программ.
4th-Dec-2007 10:48 am - Вопрос.
#В этом графическом Контексте Rectangl передвигается без проблем. Можно ли так же передвигать Arc ??? (Я пока не знаю как настроить ЖЖ под правильное расставление пробелов.)

import wx
import random
import time

W = 10000
H = 10000
SW = 1000for i in range(1):
            id = wx.NewId()
            dc.SetId(id)
            x = 145
            y = 290
            x2 = 175
            y2 = 260
            xc = 145
            yc = 210
            pen = self.pen
            dc.SetPen(pen)
            dc.SetBrush(wx.Brush((200,2,200)))
            dc.DrawArc( x, y, x2, y2, xc, yc)
            r = wx.Rect( x , y2, x2, y)
            r.Inflate(pen.GetWidth(),pen.GetWidth())
            dc.SetIdBounds(id,r)
            self.objids.append(id)
SH = 1000
klv = 0
colours = [
    "BLACK",
    "BLUE",
    "BLUE VIOLET",
    "BROWN",
    "CYAN",
    "DARK GREY",
    "DARK GREEN",
    "GOLD",
    "GREY",
    "GREEN",
    "MAGENTA",
    "NAVY",
    "PINK",
    "RED",
    "SKY BLUE",
    "VIOLET",
    "YELLOW",
    ]



class MyFrame( wx.Frame ):
    def __init__( self, parent ):
        wx.Frame.__init__( self, parent, size = ( 900 , 450 ) )
        self.canvas = MyPanel( self )

class MyPanel( wx.ScrolledWindow ):
    def __init__( self, parent ):
        wx.ScrolledWindow.__init__( self, parent )
        self.SetVirtualSize((H , W))
        self.SetScrollRate(20,20)
        self.pdc = wx.PseudoDC()
        self.parent = parent
        self.color = "blue"
        self.thickness = 1
        self.pen = wx.Pen(self.color, self.thickness, wx.STIPPLE)
        self.DoDrawing(self.pdc)
#        self.Refresh()
        self.dragid = -1
        self.Bind( wx.EVT_PAINT, self.OnPaint )
        self.Bind(wx.EVT_MOUSE_EVENTS, self.OnMouse)

    def OnPaint(self, event):
        dc = wx.BufferedPaintDC(self)
        self.PrepareDC(dc)
        # we need to clear the dc BEFORE calling PrepareDC
        bg = wx.Brush(self.GetBackgroundColour())
        dc.SetBackground(bg)
        dc.Clear()
        # create a clipping rect from our position and size
        # and the Update Region
        xv, yv = self.GetViewStart()
        dx, dy = self.GetScrollPixelsPerUnit()
        x, y   = (xv * dx, yv * dy)
        rgn = self.GetUpdateRegion()
        rgn.Offset(x,y)
        r = rgn.GetBox()
#        print r
        # draw to the dc using the calculated clipping rect
        self.pdc.DrawToDCClipped(dc,r)

    def DoDrawing(self, dc):
        random.seed()
        self.objids = []
        self.boundsdict = {}

        dc.BeginDrawing()
        for i in range(1):
            id = wx.NewId()
            dc.SetId(id)
            x = 145
            y = 290
            x2 = 175
            y2 = 260
            xc = 145
            yc = 210
            pen = self.pen
            dc.SetPen(pen)
            dc.SetBrush(wx.Brush((200,2,200)))
            dc.DrawArc( x, y, x2, y2, xc, yc)
            r = wx.Rect( x , y2, x2, y)
            r.Inflate(pen.GetWidth(),pen.GetWidth())
            dc.SetIdBounds(id,r)
            self.objids.append(id)
        for i in range(1):
            id = wx.NewId()
            dc.SetId(id)
            x = 445
            y = 190
            x2 = 175
            y2 = 260
            pen = self.pen
            dc.SetPen(pen)
            dc.SetBrush(wx.Brush((200,2,200)))
            dc.DrawRectangle( x, y, x2, y2)
            r = wx.Rect( x , y, x2, y2)
            r.Inflate(pen.GetWidth(),pen.GetWidth())
            dc.SetIdBounds(id,r)
            self.objids.append(id)
        dc.EndDrawing()

    def ConvertEventCoords(self, event):
        xView, yView = self.GetViewStart()
        xDelta, yDelta = self.GetScrollPixelsPerUnit()
        return (event.GetX() + (xView * xDelta),
            event.GetY() + (yView * yDelta))

    def OffsetRect(self, r):
        xView, yView = self.GetViewStart()
        xDelta, yDelta = self.GetScrollPixelsPerUnit()
        r.OffsetXY(-(xView*xDelta),-(yView*yDelta))



    def OnMouse(self, event):
        hitradius = 5
        if event.LeftDown():
            x,y = self.ConvertEventCoords(event)
            l = self.pdc.FindObjectsByBBox(x, y)
#            l = self.pdc.FindObjects(x, y, hitradius)
            for id in l:
                if not self.pdc.GetIdGreyedOut(id):
                    self.dragid = id
 
                    
                    self.lastpos = (event.GetX(),event.GetY())
                    break
        elif event.RightDown():
            x,y = self.ConvertEventCoords(event)
            #l = self.pdc.FindObjectsByBBox(x, y)
            l = self.pdc.FindObjects(x, y, hitradius)
            if l:
                self.pdc.SetIdGreyedOut(l[0], not self.pdc.GetIdGreyedOut(l[0]))
                r = self.pdc.GetIdBounds(l[0])
                r.Inflate(4,4)
                self.OffsetRect(r)
                self.RefreshRect(r, False)
        elif event.Dragging() or event.LeftUp():
            if self.dragid != -1:
                x,y = self.lastpos
                dx = event.GetX() - x
                dy = event.GetY() - y
                r = self.pdc.GetIdBounds(self.dragid)
                self.pdc.TranslateId(self.dragid, dx, dy)
                r2 = self.pdc.GetIdBounds(self.dragid)
                r = r.Union(r2)
                r.Inflate(4,4)
                self.OffsetRect(r)
                self.RefreshRect(r, False)
                self.lastpos = (event.GetX(),event.GetY())

            if event.LeftUp():
                self.dragid = -1

if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = MyFrame( None )
    frame.Show(True)
    app.MainLoop()
Здесь описывают такую вещь как FloatCanvas
http://morticia.cs.dal.ca/FloatCanvas/
Здесь описаны все обновления. До версии wxPithon 2.8.4.2
http://wxpython.wxcommunity.com/preview/20070917/CHANGES.txt
Для тех кто работал с графикой Питон. Тестики от меня.
Когда от тебя требуют в короткое время создань массив объектов кол-вом 5000(линий)+1000(дуг) то ты сталкиваешься с дилемой - Скорость? или Качество?
Тесты проводил на Атлон 2000.
Вот мои тесты, которые я недавно провел, перебирая все доступные типы графических контекстов (DC)и их комбинации с друг другом на колличество 10000 объектов типа квадрат(DrawRectangle()) и отдельно 5000 линий(DrawLine()) + 1000 дуг(DrawArc()), я их закрашивал фиолетовым цветом wx.Pen():
1) wx.PaintDC() - это самый медленный и самый некачественный двиг. Годится только для тренировки рисования как такового. 8.7 секунды.
2) wx.ClientDC() + wx.BufferingDC()- графло + буферизация, для малого типа объектов годится. Не более 200-400.
На моем объеме он выдал результат 4.1 сек, Скорость средняя, качество средняя.
3) Тоже самое но с двойной буферизацией - 2.8, качество среднее. Нужный объем перерабатывает нормально.
Единственное все выше не поддерживает функции работы с объектами после их создания на более высоком уровне.
Для этого приходится сильно заморачиваться.
4) wx.PseudoDC() - 8 секунд. Качество отличное. Скорость как видите страдает. Позволяет работу с объектами, что вы можете созерцать в Python DEMO.
5) wx.PseudoDC() + буферизация - 4.5 сек. Тоже что и выше.
6) wx.PseudoDC() + буферизация + PseudoID()...ООО..Я над этим долго морочил голову но у меня получилось.
Скорость рисования и создания матрицы(битмап) - 0.1 сек. А PseudoID() применяем после рисования, что позволяет нам работать с объектами на высшем уровне без потери качества.
Построении графики в Питоне больная для меня тема, так как у меня это направление.
В данный момент, в место старого ядра, написал новое - скорость которого превышает в 10 раз точно.

Но есть ряд вопросов.
Можно ли уничтожать старые объекты? (я понимаю что можно - но как?)
В данный момент я делаю закрашивание. Есть другие варианты?
This page was loaded Mar 24th 2017, 11:56 am GMT.