пятница, 20 августа 2010 г.

Sikuli играет в игру LPairs

Sikuli - инструмент для автоматизации работы с элементами GUI, играет в LPairs (простую игру для укрепления памяти).

Скрипт

четверг, 5 августа 2010 г.

Параллельное выполнение команд: GNU Parallel

Проект GNU Parallel развивается с 2007 года и представляет собой утилиту для выполнения задач в shell параллельно в текущей и/или удаленных системах. Задачи формируются из скриптов и команд операционной системы, и параметров (или частей команд) из стандартного ввода. В этом GNU Parallel похож на xargs, в задачи которого входит формирование команд из данных со стандартного ввода, по заявлению разработчика, GNU Parallel даже имеет схожие с xargs опции.
Схожесть с xargs позволяет использовать GNU Parallel в ранее созданных скриптах, в сложных конвейерах, используя все предоставленные ресурсы имеющихся систем (ядра/процессоры текущей или удаленных многоядерных/многопроцессорных систем).

среда, 7 июля 2010 г.

Утилиты для аудита исходных кодов: Graudit, RATS

Бесспорно полезно проводить аудит исходных кодов с целью выявления потенциально проблемных и опасных участков кода. В случае, если эта операция автоматизирована при помощи какой-то утилиты, то также это не отнимет много времени.
Пробовал я утилиты для автоматизированного аудита исходных кодов на задачах 1-го курса университета (ЯП c), расположенных в ~/1-course.

суббота, 24 апреля 2010 г.

Стул в Blender из скрипта на python

Задача
Нарисовать стул в Blender из скрипта на python.
Решение
from Blender import *

# Clean scene
def newactivescene():
    sc = Scene.New()
    oldsc = Scene.GetCurrent()
    sc.makeCurrent()
    Scene.Unlink(oldsc)
    return sc

sc = newactivescene()

# Camera
camera = Camera.New()
camob = Object.New('Camera')
camob.link(camera)
sc.link(camob)
camob.setLocation(3.5,-5,5.8)
camob.setEuler(60*2*3.14/360,0,30*2*3.14/360)
sc.setCurrentCamera(camob)

# Lamp
lamp = Lamp.New('Sun')
lampob = Object.New('Lamp')
lampob.link(lamp)
sc.link(lampob)
lampob.setLocation(2,-2.5,7)
lampob.setEuler(60*2*3.14/360,0,30*2*3.14/360)

# Legs height, weight
height = 1.9
weight = 1.8
# Legs
sc.objects.new(Mesh.Primitives.Cylinder(100,0.5,height)).\
setLocation(-weight/2,weight/2,height/2)
sc.objects.new(Mesh.Primitives.Cylinder(100,0.5,height)).\
setLocation(weight/2,weight/2,height/2)
sc.objects.new(Mesh.Primitives.Cylinder(100,0.5,height)).\
setLocation(weight/2,-weight/2,height/2)
sc.objects.new(Mesh.Primitives.Cylinder(100,0.5,height)).\
setLocation(-weight/2,-weight/2,height/2)
# Seat
sc.objects.new(Mesh.Primitives.Plane(weight+0.5)).\
setLocation(0,0,height)
# The back of
ob = sc.objects.new(Mesh.Primitives.Plane(weight+0.5))
ob.setLocation(0,(weight+0.5)/2,height+(weight+0.5)/2)
ob.setEuler(90*2*3.14/360,0,0)

Window.RedrawAll()

воскресенье, 11 апреля 2010 г.

Удаление содержимого html по маркеру в тегах на языке python

Задача
Оставить в строке, содержащей html код, всё кроме содержимого тегов (и самих тегов) помеченных определенным маркером ("ignoremarker").

четверг, 4 февраля 2010 г.

Stunnel выручил

Преамбула
Обслуживая один удаленный веб-сервис с доступом only HTTP, решил изменить (не без оснований) настройки cookies. В частности, переключил настройку cookies с cookies over HTTP на only secure cookies (over HTTPS).

воскресенье, 31 января 2010 г.

Subversion 1.6.9 - svn:externals

$ svn propset svn:externals 'object svn://svnserver/externalrepos/object' .
Теперь object внешняя по отношению к данному репозиторию с содержимым из svn://svnserver/externalrepos/object.
Надеюсь в следующих версиях синтаксис изменится.