Tuesday, July 28, 2009

Garbage collector for C and C++

Подсчет количества битов в байте или слове

Циклически сбрасывается крайний справа единичный бит исследуемого байта,
до тех пор, пока байт не станет равным 0.

Эффективность: 2 + 5*pop(x) команд, подходит для малозаполненных байтов.

private static int pop(byte x)
{
int n = 0;

while (x != 0)
{
n += 1;
x = (byte) (x & (x - 1));
}

return n;
}

Другой способ:
В слове циклически устанавливается крайний справа нулевой бит ( x = x | (x + 1)) до тех пор, пока во всех разрядах слова не оказываются единицы (то есть слово = -1).
После этого возвращается число 32 - n.

Третий способ:
Вычисляется сумма всех 32 битных слов, полученных в результате циклического сдвига слова влево на один разряд. Итоговая сумма равна значению pop(x) со знаком минус.

Вычисление модуля

( ( x >> 30 ) | 1 ) * x

Friday, July 10, 2009

USB Connection

Мониторинг подключения USB драйва.
Реализация через WMI.

Я нашел несколько способов.

1. Класс: Win32_PnPEntity, событие __InstanceCreationEvent
Event: "__InstanceCreationEvent"
Target: "TargetInstance ISA 'Win32_PnPEntity'"
2.Класс: Win32_LogicalDisk, событие __InstanceCreationEvent
Event: "__InstanceCreationEvent"
Target: "TargetInstance ISA 'Win32_LogicalDisk'"

3.Класс: Win32_Volume, событие __InstanceCreationEvent

Event: "__InstanceCreationEvent"
Target: "TargetInstance ISA 'Win32_Volume'"

(Последний класс недопустим на системах от XP и ниже)

Tuesday, July 7, 2009

Security

Из разговора с коллегой, памятка.

1. Алгоритм Диффи - Хеллмана
http://en.wikipedia.org/wiki/Diffie-Hellman_key_exchange
2. И все, что касается CISSP/SSCP, сертификация в области безопасности.
3. Сайты InsidePro - rainbow таблицы, генерация хешей, и прочее, securitylab - общая информация по уязвимостям.

Friday, July 3, 2009

Voxel, Воксельная графика

Читая блог по анонимным функциям Objective-C одного канадского программиста, наткнулся на его тезисы в университете по визуализации 3D потоков. Стал с удовольствием читать, тем более что, в далеком 2002 году на первой работе коллеги занимались как раз визуализацией взрывной волны, проходящей по всем техническим помещениям АЭС, после насыщения атмосферы помещений водородом и последующей детонации. Но там просто тупо происходил объемный расчет по плотности волны по времени (целыми днями), и, кажется, распределения концентрации водорода, а потом из этих данных воссоздавался ролик.
Интересные тезисы, начал копать по поводу воксельной графики, но нашел информацию более, чем скудную, практически ничего по поводу реализации, лишь только общие детали.
Кое-какая информация: CiteSeerX, CodeNet, Здесь и в Wiki есть скудное описание. Литературы тоже никакой нет. Реализованы некоторые элементы в известных игрушках, есть пара программистов из Екатеринбурга, которые занимаются именно этой технологией. Есть теориетические статьи на западе, больше инфы никакой нет.

NoSQL

Очень примечательное явление: Anti-database movement gains steam
По ссылке описаны мотивы и решения на основе которых разработчики уходят от принятых стандартов: Hadoop, Voldemort, Dynomite, BigTable, HyperTable

SciDb:
http://www.scidb.org

Membase:

Redis:
Redis is an open source, advanced key-value store. 
It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

Others:
http://www.kobrix.com/hgdb.jsp
http://infogrid.org
http://opensource.plurk.com/LightCloud

IndexDB for offline Web applications:
http://msdn.microsoft.com/en-us/scriptjunkie/gg679063.aspx

Foundry:
http://degizmo.com

Powered by Blogger.