barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

пятница, 16 ноября 2012 г.

WSO2 BAM 2.0.x: бинд порта для Thrift SSL на внешний сетевой интерфейс

WSO2 BAM 4.0.x биндит порт 7611 (по-умолчанию для Thrift) как на 127.0.0.1, так и на внешний сетевой интерфейс, а вот 7711 (по-умолчанию для Thrift SSL) - почему-то только на внешний. Поэтому при настройке отсылки событий на BAM использовать localhost нельзя, только внешний IP.

понедельник, 12 ноября 2012 г.

Как узнать пароль уже имеющегося в системе ODBC Data Source

Задача

В системе есть некий ODBC DataSource, но при его редактировании пароль закрыт звездочками (или точками, не суть). Нужно узнать его.

Решение

В зависимости от того, системный DSN или пользовательский, лезем в :
HKEY_LOCAL_MACHINE\Software\Odbc\Odbc.ini\
или
HKEY_CURRENT_USER\Software\Odbc\Odbc.ini\
, ищем там нужный датасорс по имени и смотрим пароль там ;)

Ruby: bundle за прокси с авторизацией

Для работы gem за прокси (с авторизацией или без неё) предусмотрен специальный параметр --http-proxy:
gem ... --http-proxy http://user:password@host:port
Для bundle такого параметра нет, но управлять использованием прокси можно через переменную окружения "http_proxy":
export http_proxy=http://user:password@host:port
bundle install ... 

среда, 7 ноября 2012 г.

away3d 4: 3D-модели, экспортируемые из Prefab3D, и утечка памяти

Полчаса размышлений, и источник утечки памяти, возникающей при пересоздании 3D-объектов, экспортированных из Prefab3D (версия - 2.124), найден. В классе ASBase, являющимся базовым для всех экспортируемых 3D-моделей, отсутствует корректное переопределение метода dispose(), очищающее занимаемые ресурсы. Переопределив метод так:

public override function dispose():void
{
super.dispose();
var i:uint;
for(i=0;i<_meshes.length;i++)
_meshes[i].dispose();
_meshes=null;
for(i=0;i<_containers.length;i++)
_containers[i].dispose();
_containers=null;  
for(i=0;i<_materials.length;i++)
_materials[i].dispose();
_materials=null;
}  
мы избавляемся от утечки памяти.

пятница, 2 ноября 2012 г.

PostgreSQL: прочитать строку из hex-представления

Задача:

В колонке таблицы хранится строка, представленная в виде шестнадцатеричных кодов своих символов в UTF8-кодировке (тип колонки - text). Нужно извлечь из неё строковые значения.

Решение:
SELECT convert_from(decode("a",'hex'),'UTF8') FROM ...
где "а" - имя колонки с hex-кодированными строками.

away3d 4.0: view.camera.project() и инициализация сцены

Столкнулся с непонятной для меня особенностью away3d 4.0: если использовать метод  view.camera.project() для проецирования 3D-точки в 2D-плоскость экрана в конструкторе основного спрайта флешки, или же в обработчике его события Event.ADDED_TO_STAGE, проецирование выполняется неверно (по крайней мере, оно не совпадает с последующими попытками спроецировать ту же точку). Тоже поведение наблюдается и при использовании метода в обработчике Event.ENTER_FRAME при его первых 3-4 срабатываниях. 
Описанное выше поведение я замечаю при использовании линзы OrthographicLens, а ошибка проецирования заключается в сжатии проекции по оси Ox.
Как оказалось, на линзе возникает событие LensEvent.MATRIX_CHANGED, до которого проецирование неверное, а после которого становится верным. Поэтому, если после инициализации флешки есть необходимость спроецировать какую-либо 3d-точку с использованием камеры, нужно дождаться сначала срабатывания события LensEvent.MATRIX_CHANGED.