пятница, 21 января 2011 г.

Как правильно заблокировать окно от перерисовки

Иногда это может понадобиться, если что-то активно добавляется, открывается и т.п.
Типичный способ, рекомендуемый первым, это вызов LockWindowUpdate. Что есть в корне неверно - в Майкрософт не очень удобно выбрали название функции.
http://www.transl-gunsmoker.ru/2010/12/lockwindowupdate_29.html
http://msdn.microsoft.com/en-us/library/dd145034%28v=vs.85%29.aspx

Правильный пример:
procedure SetWindowLock(AHandle: THandle);
begin
  SendMessage(AHandle, WM_SETREDRAW, 0, 0);
end;

procedure EndWindowLock(AHandle: THandle);
begin
  SendMessage(AHandle, WM_SETREDRAW, 1, 0);
  RedrawWindow(AHandle, nil, 0, RDW_ERASE or RDW_FRAME or
    RDW_INVALIDATE or RDW_ALLCHILDREN);
end;

Хитрость в том, что работает только RedrawWindow, а Invalidate нет.

UPD
На практике оказало не все так весело - окно просто прячется, а не перестает отрисовываться. У нас решилось точечным применением, только к изменяемым элементам - панелям, таб сетам и т.п.

среда, 19 января 2011 г.

Шифрация базы в Firebird и конкурентах

Вопросы о возможности каким-то образом защитить базу, когда ценность представляют данные в ней, звучат в конференциях Firebird достаточно часто.

И обычно ответы сделаны как под копирку - что мол 100%, надежного способа это обеспечить, если база доступна физически нет. Но вот что встретилось в firebird-architect:

Alex Peshkoff, Nov 10, 2010:
I've already mentioned - we have plans to implement line encryption in FB3.0 and may be page level encryption too. We have already decided that we provide interface for users' plugins to perform actual crypt operations.

Как я упоминал ранее в планах есть реализация линейного(?) шифрования в 3.0. Вероятно также шифрование на уровне страниц. Было решено, что реализовано это будет посредством плагинов с возможностью их самостоятельной реализации.


И краткий обзор, что есть у конкурентов:


MySQL
  • нет шифрования файла
  • есть защищенное соединение
http://dev.mysql.com/doc/refman/5.0/en/secure-connections.html

PostgreSQL
  • нет шифрования файла 
  • есть защищенное соединение

http://www.postgresql.org/docs/8.1/static/ssl-tcp.html
http://www.postgresql.org/docs/9.0/static/pgcrypto.html

MSSQL
  • есть шифрование файла
  • есть защищенное соединение
http://msdn.microsoft.com/en-us/library/bb934049%28v=SQL.100%29.aspx
http://msdn.microsoft.com/en-us/library/ms189067%28v=SQL.90%29.aspx

DB2
  • есть шифрование файла
  • есть защищенное соединение

http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.admin.sec.doc/doc/c0005815.html

Oracle
  • есть шифрование файла 
  • есть шифрование полей
  • есть защищенное соединение
http://www.oracle.com/technetwork/database/options/advanced-security/index.html

вторник, 4 января 2011 г.

DDL триггеры будут в FB3

По сути теперь можно вешать события и всяческие проверки(в том числе и стиля!) на изменение метаданных.

create trigger trig_ddl_sp before create procedure
as
begin
    if (rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME') not starting 'SP_') then
        exception e_invalid_sp_name;
end

Подробнее:
http://firebird.svn.sourceforge.net/viewvc/firebird/firebird/trunk/doc/sql.extensions/README.ddl_triggers.txt?revision=51203

Памятка по вопросам на собеседование

Когда-то делал нечто похожее, тем более под каждое собеседование свой набор вопросов. Но в общем случае может пригодится.
http://nmihouse.com/?p=31

понедельник, 3 января 2011 г.

понедельник, 20 декабря 2010 г.

Интересное IT-мероприятие от Виктории Придатко

http://hr-maverick.blogspot.com/2010/12/15-it.html

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

Один из докладов - о том, как работают с распределенной командой:
  • Четкий, фулл-тайм график, синхронизированный со всеми. С 11 до 20.
  • Обязательные совещания КАЖДЫЙ _вечер_. [пока еще не встретилось описание успешной ораспределенной команды без них].
  • Не нанимают людей с детьми - считают что с работой это не совместимо
  • Отдают предпочтение работавшим в оперсорсе, и табу на работу с фрилансерами. Пытаются работать только с лучшими.
  • Слабые девелоперы тянут производительность _всей команды_ вниз (?)
  • Исповедуют "меритократию" - на тех. уровне должна быть иерархия авторитетов, демократия не работает. Кто-то должен иметь возможность принять окончательное решение.
  • Активно используют механизм burn-down диаграмм. Горизонт планирования до месяца, обычно меньше. Попробовали на три - фейл.
В общем для собравшихся это был довольно нестандартный подход(эдакие Джоэлевкие мотивы прослеживаются), в свете засилья киевских аутсорсеров(это стартап, получивший финансирование и уже вышедший на окупаемость).

Второй доклад более прагматичный и механический, про Зарплаты в ИТ, но через призму аутсорса:
  • По статистике при переходе подъем ЗП обычно 25%
  • У человека прыгающего по компаниям зп растет быстрее, чем у эволюционно растущего на одном месте
  • Если использовать бонусы, то не менее половины зп, иначе они не работаю/мотивируют (?)
  •  Составляющие пересмотра зп:
     - инфляционная (для $ сейчас 5%)
     - рыночная
  • Частота перемотра до мидла - раз в 2-6 месяцев, для мидлов-синьоров - раз в год
  • Один из способов обсуждения повышения - спросить у человека как он видит составляющие своей зп, и за что он хочет повышения в данном случае.
  • "шантаж уходом" - работает один раз, потом нужно увольнять(если конечно предыдущие пункты исполняются) (хотя на это звучали возражения)
  • Безпроцентный кредит - эффективный механизм мотивации. После его выплаты у сотрудника создается иллюзия повышения зп.
UPD
Вот еще одна подборочка - http://sergtk-it.blogspot.com/2010/12/it.html
Интересно, но многие вещи мы восприняли совершенно по разному :-/

UPD2 
Презентации http://hr-maverick.blogspot.com/2010/12/15.html