А здесь сборник его статей и книга
Must read для каждого серьезного программера
Archive for the ‘Programming’ Category
Александр Степанов (STL). Лекции в Яндексе
Wednesday, June 16th, 2010Future ORG technology
Thursday, January 14th, 2010Осенила мысль:
Если основные компонентные технологии Microsoft назывались:
- COM
- .NET
то логично предположить, что следующей станет .ORG.
Конечно есть еще варианты .EDU и .MIL (но последняя только в случае ядерной войны
Появился VS 2010 Beta 2
Wednesday, October 28th, 2009В отличие от 1-й Beta, этой уже вполне можно пользоваться.
Главное из добавлений:
- поддержка C++0x: nullptr/nullptr_t, lambda-functions
- MSBuild 4.0 – теперь IDE не привязана к конкретным инструментам и поностью настраиваема под любые компиляторы с помощью XML
Strongly typed enums in C++0x и их эмуляция в Visual C++
Sunday, August 2nd, 2009Новый стандарт С++ включает удобную фичу Strongly Typed Enums, также называемую Scoped Enums:
enum class En {
A = 2
};
En var = En::A; // вместо En var = A;
Для поддержки этого в текущем компиляторе VC++ можно использовать такие макросы:
#define DEF_ENUM(name) struct enum_##name { enum E
#define END_ENUM(name) ; }; typedef enum_##name::E name;
DEF_ENUM(En) {
A = 2
} END_ENUM(En)
En var = En::A; // вместо En var = A;
RC4 C# implementation
Wednesday, April 8th, 2009Реализация криптоалгоритма RC4 для .NET:
using System;
using System.Security.Cryptography;
using Utils;
namespace Crypto {
internal class RC4Cryptor : ICryptoTransform {
internal byte[] S;
public bool CanReuseTransform { get { throw new NotImplementedException(); } }
public bool CanTransformMultipleBlocks { get { throw new NotImplementedException(); } }
public int InputBlockSize { get { throw new NotImplementedException(); } }
public int OutputBlockSize { get { throw new NotImplementedException(); } }
public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset) {
throw new NotImplementedException();
}
public void Dispose() {
}
public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount) {
byte[] r = new byte[inputCount];
for (int i = 0, j = 0; i < inputCount; ) {
j += S[++i % 256];
Ut.Swap(ref S[i % 256], ref S[j % 256]);
int t = S[i % 256] + S[j % 256];
r[i-1] = inputBuffer[inputOffset + i - 1] ^ S[t % 256];
}
return r;
}
}
public class RC4 : SymmetricAlgorithm {
byte[] S = new byte[256];
byte[] K = new byte[256];
public override ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgbIV) {
throw new NotImplementedException();
}
public override ICryptoTransform CreateEncryptor(byte[] rgbKey, byte[] rgbIV) {
throw new NotImplementedException();
}
public override void GenerateIV() {
throw new NotImplementedException();
}
public override void GenerateKey() {
var rnd = new Random();
var key = new byte[16];
rnd.NextBytes(key);
Key = key;
}
public override ICryptoTransform CreateEncryptor() {
return new RC4Cryptor() { S = (byte[])S.Clone() };
}
public override ICryptoTransform CreateDecryptor() {
return new RC4Cryptor() { S = (byte[])S.Clone() };
}
public override byte[] Key {
set {
base.Key = value;
for (int i = 0; i < S.Length; ++i) {
S[i] = (byte)i;
K[i] = Key[i % Key.Length];
}
for (int i=0, j=0; i < S.Length; ++i)
Ut.Swap(ref S[i], ref S[j = (j + S[i] + K[i]) % 256]);
}
}
}
}
Как программировать CD/DVD
Wednesday, February 27th, 2008Старые исходники BIOS для компьютера “Поиск”
Monday, January 14th, 2008Исходники на ASM ROM-прошивки для первых компьютеров ПОИСК
Надеюсь расшифровать еще старые кассеты для БК-0010. Если удастся – тоже выложу. Думаю что придется искать или самому писать программу восстановления файлов формата кассет БК из WAV-файла.
NNTP front-end to PHPBB 3
Thursday, December 27th, 2007Open Source NNTP front-end to PHPBB3 developed:
nntp-phpbb .
It provides access to PHPBB forum (Read and Post) by NNTP protocol.
Новая версия SocksChain
Tuesday, November 27th, 2007Впервые за 2 года обновлена программа SocksChain
В новой версии изменена тактика изпользования цепочек проксей:
каждое соединение идет по случайно выбраной цепочке вместо периодическкой смены
Ruby
Monday, November 12th, 2007Почитал книжку про Ruby

По впечатлениям: писать легче чем на Perl – ближе к Lisp