суббота, декабря 25, 2010

Отладка

Закончил сложную отладку winsock-взаимодействия. Всё.

пятница, декабря 03, 2010

Яндекс

Пациент задаёт вопросы в духе "что бы такого сделать Яндексу, чтобы было лучше".

С 2001го года я не пользуюсь его услугами, попробовал было, но ввиду явной иррелевантности результатов моим ожиданиям - снова прекратил. Яндексу нужно закрыться. Яндекс - это бесполезная трата жизни многих молодых людей. Они думают, что делают дело, а на самом деле пережигают электричество и мамины бутерброды в тепло и метан.

Ребята. В том, чем вы занимаетесь, ваш номер - вечно шестой. И лучше не будет. Не морочьте людям голову, превратитесь в интернет-магазин.

четверг, июня 24, 2010

Comodo как яркий пример отвратительно-тупого сервиса

Есть лишних пару недель? Хочется острых ощущений? Закажи в Comodo сертификат. Время пролетит незаметно, и ты много узнаешь о том, что же на самом деле такое это - получение сертификата...

Надо их в Сколково, нанопрезиденту помогать деньги красть. Больше ни на что эти придурки не годны.

вторник, апреля 13, 2010

Первый сервер и активация Windows

Пять лет назад примерно в эти же дни мы купили свой первый сервер. На самом деле это была обычная персоналка, подключенная через целый каскад ИБП к сети и интернету, но мы называли её сервером. Вчера, после пяти лет непрерывной работы, у неё сгорела мать (чему предшествовало нарушение теплового контакта между вентилятором и процессором, как показало вскрытие).

Само собой, такие купить нигде невозможно уже, пришлось сделать upgrade. После которого Windows 2003 сообщил(а/о/и), что надо активироваться. Пикантность в том, что окно с требованием провести активацию показывается до того, как установились хоть какие-то драйвера на систему. В частности, недоступна сеть. Автоматическая активация невозможна. И впервые в жизни я воспользовался средством "активировать по телефону". Более бессмысленно я ещё никогда не проводит 18.5 минут жизни.

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

Одна итерация активации по телефону у меня занимала 6'10". В конце-концов, систему я активировал, сервер оживил и сейчас поеду его водружать на площадку. Но осадок от чьей-то глупости остался.

понедельник, апреля 05, 2010

"Тихий час. Для всех, кроме нас"

Служба MSDN Online Concierge доступна 24 часа в сутки 7 дней в неделю. Служба не работает в праздничные дни.

Ещё будут вопросы, почему Google Earth работает как часы, а Bing 3d - нет?

А вообще не до шуток. Отрезали доступ к загрузкам MSDN. Без объяснения, без разговоров, вообще. По телефону какая-то механическая гражданка на ломаном русском рассказывает, что сегодня, 5го апреля - они не работают, потому что это выходной. И предлагает позвонить в "регулярные часы". Не смог понять - "регулярные часы" это когда регулы или что-то другое. В целом, день испорчен.

Обн.: как внезапно перестало пускать, так же внезапно и был дан доступ.

суббота, апреля 03, 2010

Чёрной молнии подобный

Пока не пойму, почему, но тем не менее. Вот фрагмент кода некоего компонента.


 protected override void OnPreRender(EventArgs E)
 {
  ...
  Random rnd = new Random((int)(DateTime.Now.Ticks % Int32.MaxValue));
  Response.Write(rnd.Next(10000) + "</br>");
  ...
на странице 2 таких компонента. Логично предположить, что при вызове rnd каждая переменная будет инициализирована своим значением тиков, соответствующим моменту выполнения кода инициализации. MSDN говорит о том, что
a single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond.

А коли так, то оба компонента должны при отрисовке вывести в поток 2 разных числа. Они и выводят. Но только в Windows 7. XP и 2003 показывают одно и то же. То есть, если для W7 я увижу:
1762
7773

6851
995
то для XP и W2K3
1762
1762

6851
6851
Конечно, инициализацию RNG вынес в static, но всё равно теряюсь в догадках - что это за поведение? Как возможно всю работу по подготовке и отрисовке 2х web-компонентов свести к одному 100-нс отрезку? И почему это поведение не проявляется в Windows7?

пятница, апреля 02, 2010

Концы строк, разбор XML и пустые страницы в IIS

Стоило не завершить строку \n, как чтение содержания элемента начало приводить к проглатыванию следующего тэга. Интересно.

Ещё интересней влияние размера буфера обработки запросов в IIS. Мы пишем в скрытое поле большую криптостроку и её наличие приводит к показу в ответ пустой строки. Оказывается, к этому имеет отношение слишком малое значение свойства uploadreadaheadsize. Увеличили до 100 КБ и дело пошло. Кстати, uploadreadaheadsize измеряется в байтах, а не в килобайтах, как ошибочно указано в документации.

среда, марта 17, 2010

Что такое эти "социальные сети"?

Я откровенно не понимаю. Не понимаю, в чём тут технологический вызов и ещё больше не понимаю, в чём тут интерес для конечного пользователя. Мошенничество и тупость.

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

Чётко по графику!

Как и запланировано, именно сегодня выпущена версия с поддержкой ЭЦП. Горжусь!

среда, февраля 03, 2010

The caller was not authenticated by the service

Может вызываться недействительным сертификатом пользователя, либо таким сертификатом, который подписан ключом, сертификат которого отсутствует в Trusted Root.

Разумеется, в том случае, если клиент WCF аутентифицируется при помощи сертификатов

вторник, февраля 02, 2010

Подписание данных в браузере

Гора Сен-МишельПотратил несколько дней на обзор ситуации с подписанием документов в браузере. Что удалось выяснить...

Простое подписание документа при помощи DSIG в Windows (IE) невозможно. Для этого необходимо либо использовать нерекомендованную версию MSXML (5.0), либо самостоятельно заниматься такими малоприятными вещами, как покусочное формирование XML Digital Signature. Бесплатного COM-компонента или библиотеки для выполнения этой работы не существует. Это с одной стороны. С другой, есть .NET и XSign, но требования к текущей задачи не позволяют рассчитывать на наличие у пользователя хотя бы .NET 1.1, не говоря уже об XSign.

Хоть и очень хотелось, но от XMLDSIG пришлось отказаться. Вместо этого принято решение использовать цифровые подписи PKCS #7. На клиенте (в Internet Explorer) документ подписывается и в составе скрытого поля отправляется на сервер, там подпись проверяется и если всё в порядке, то и ... всё.

Если кратко. На клиенте (CAPICOM + C++)


  1. Дать выбрать сертификат из персонального хранилища текущего пользователя.


  2. IStorePtr store(__uuidof(Store));
    HRESULT hr = store->Open(CAPICOM_CURRENT_USER_STORE, _T("My"), CAPICOM_STORE_OPEN_READ_ONLY);
    if (FAILED(hr))
    return hr;

    ICertificates2Ptr ptr(store->Certificates);
    ICertificates2Ptr selected = ptr->Select(_T(""), _T(""), VARIANT_FALSE);

  3. Проверить факт выбора сертификата и наличие закрытого ключа (а то мало ли...)

  4. Подписать сообщение

  5.  ICertificate2Ptr p(selected->Item[1]);

    ISignerPtr signer(__uuidof(CAPICOM::Signer));
    signer->PutCertificate(CComQIPtr(p));

    ISignedDataPtr data(__uuidof(SignedData));
    data->put_Content(*m_Xml);

    bstr_t signature = data->Sign(signer, FALSE, CAPICOM_ENCODE_BASE64);
    m_Signature = new CComBSTR(signature.GetBSTR());


На сервере (.NET)

  1. Декодировать (привести в бинарный вид) полученное сообщение

  2.  byte[] data = Convert.FromBase64String(signature);
    SignedCms cms = new SignedCms();
    cms.Decode(signed);


Поскольку подпись объединена с исходным сообшением, то это всё. Только не забывайте, что CAPICOM выдаёт Unicode-строки, а .NET - если его не трогать специально - ожидает UTF-8 строк.

среда, января 20, 2010

Список обязательных документов проекта

1. План выпуска версий
2. Отчёт о состоянии работ
3. Функциональная спецификация
4. Техническая спецификация
5. Перечень инцидентов на ближайший релиз

суббота, января 16, 2010

Вот такие технологии

"Просим Вас отнестись с пониманием к тому, что низкий уровень цен не позволяет нам принимать к оплате пластиковые карты."

Думаете, семечками торгуют? Нет. Компьютерами.