среда, февраля 28, 2007

Про тупость и самоуверенность

Должен признаться, что к некоторым людям я крайне нетерпим и не очень креплюсь перед тем, как высказать своё отношение (Саша, ты бы удивился, увидев меня в деле теперь:) ). "Некоторые" - это тупые (иили) самоуверенные. Как известно, машины у меня нет ("бедность, ничего не попишешь"), поэтому для перемещений используются бомбилы, таксисты и метро (вместе с прочим наземным транспортом). В метро Москвы уже сколько-то времени проход возможен как по старым картам с полосой (где бы их взять?), так и по новым с индукционным принципом. Когда это начинало внедряться, шёл разговор о том, как прекрасно новая технология (?) разгрузит турникеты и на них не будут собираться толпы по утрам. Действительно, срабатывание при поднесении происходит немедленно, а если учесть, что карту можно не доставать из бумажника или кармана, то и вовсе - ускорение налицо. Теперь посмотрим, какой ценой.

  1. Узнать баланс поездок, применяя новую карту, невозможно. Представьте себе просто, что узнать сколько осталось поездок - просто невозможно. Вот лежит в бумажнике карта, но то ли она новая, то ли она истекла (когда?), то ли на ней что-то осталось - не судьба узнать.
  2. Если вдруг есть какой-то чудик, не знающий, что такое электромагнитная индукция, то специально для него я рассказываю,
    что это явление, заключающееся в возникновении ЭДС в замкнутом проводнике при изменении характеристик магнитного потока, проходящего через поверхность, ограниченную контуром этого проводника. Благодаря этому явлению будет включаться лампочка в магазине, если какой-то негодяй решит умыкнуть товар, не оплатив его. Так вот, ключевое слово тут: "магнитный поток". Применение ЭМИ для получения тока записи/чтения это остроумное инженерное решение, которому, однако, не место в в моём кошельке. Потому что у меня есть магнито-чувствительные материалы (вроде карточек на наземный транспорт), вроде Виз, Мастеркардов и ещё кое-чего. Всякий раз, поднося бумажник к магнитному пятну, я рискую. Остаться без поездок в ТАТ, без возможности снятия денег в банкоматах, без возможности расплатиться за обед, да мало ли чего.
  3. Скорость чтения повысилась. Но это, по непреложному закону природы означает, что снизилась скорость записи. Где у нас записывают карты? В кассах. Раньше там были очереди по утрам, когда очередная электричка нагоняла пролетариев умственного труда из пригородов, теперь там очереди постоянно. Раньше карта с полоской инициализировалась пару секунд, теперь в районе 10. Что толку людям, стоящим в перестроечного масштаба очередях, секундная экономия на проходе, если покупать карту они будут 20 минут?
  4. Уже если оказались под землёй, то традиционно проверить баланс поездок можно у жёлто-чёрного терминала, рядом с кассами обычно. Их на станциях по количеству выходов. Утром все хотят проверить баланс, поэтому там образуется отдельная очередь. А так как место кассы на входе, а вход и выход отделены друг от друга, то посмотреть вечером (и записать, наверное? карандашиком, по-стариковски) просто так не получится: надо выйти в переход, зайти, проверить и снова выйти против потока. Увлекательно, правда?

Что же в остатке?

  1. Некомпетентность лиц, принявших решение о переводе московского метро на индукционные(и) карты.

  2. Полная неготовность инфраструктуры к использованию и-карт.

  3. Абсолютное пренебрежение человеческой природой: я сижу дома, хочу узнать, сколько у меня есть на завтра поездок. И не могу.

  4. Чрезвычайно низкопроизводительная система инициализации карт.


  5. То, что годится для эксперимента над студентами и лицами, использующими годовой проездной, не годится при использовании карт на 5-10-20 поездок.

    Для меня этого достаточно, чтобы сказать, что в широкое обращение карты ввёл тупой самоуверенный ишак

суббота, февраля 24, 2007

"Код" Петцолда

То ли это переводчики такие уроды, то ли это я ничего не понимаю, но всегда воспринимал Петцолда как занудного дядьку со специализацией в пользовательском интерфейсе Windows. Это продолжалось до той поры, пока я не увидел у брата на полке "Код". Полистал, понял, что это надо иметь, заказал. В четверг "у Казанского вокзала" забрал свой экземляр и прочитал в стационаре уже более внимательно. Сказать можно тут одно: несмотря на объём и формат, это фундаментальный труд, достойный того, чтобы быть учебником (особенно, если провести всё же вычитку, а не публиковать с неверного оригинала). А вот "Лучшие примеры разработки ПО" (якобы Спольский там автор) - это, по большей части, фуфелЪ.

Куда девать уже прочитанные книги - не приложу ума.

Down to the roots

Любопытно сравнить скорость выполнения двух методов C#-класса:

private string BinaryToHex(byte[] Data)
{
string res = "'0x";

for(int a = 0; a < Data.Length; a++)
res += Data[a].ToString("X2");

return String.Format("{0}'", res.Replace("%", ""));
}
и
private string BinaryToHex(byte[] Data)
{
char[] res = new char[Data.Length * 2];

for(int a = 0; a < Data.Length; a++)
{
string str = Data[a].ToString("X2");
res[a * 2] = str[0];
res[a * 2 + 1] = str[1];
}

return String.Format("'0x{0}'", new string(res));
}
.

Второй работает быстрее первого - на порядок, хотя, на первый взгляд, и не должен. Почему? Причина в конкатенации строк. Это настолько медленная операция, что код должен обязательно проверяться на её наличие, особенно в потенциально больших циклах.

вторник, февраля 20, 2007

Столкнулись с пиратством

Мы завершаем разделение направлений. Теперь корзин будет три. Чисто на всякий случай. К государственной кормушке будет прикреплена только одна. Хватит из нас кровь сосать. Последний гвоздь в стену решимости забил один деятель, не будем его называть, ни к чему это, но деятель крупный. Я думаю, что в сотню чиновников нашей прекрасной страны - войдёт легко. Ну так вот. Деятель этот занялся (как они все и делают) активным путанием своей и государственной шерсти. И сделал он это так. Некое ПО было роздано (точнее, продано. типа.) неопределённому количеству лиц, каждое из которых представляет собой самостоятельное юридическое лицо и должно внести пожертвование в сумме X0000 рублей на наш счёт. Разумеется, никакие деньги никуда не пошли (пока что, по крайней мере). Тем не менее, мониторинг активностей показывает, что количество дорвавшихся до кормушки - плодится как минимум в арифметической прогрессии. Мы сочли, что это безобразие и решили действовать. Действия включают в себя внесение таких изменений в процедуру инсталляции, чтобы было невозможно передать пакет с данными, не получив на нашем сервере предварительной авторизации для такого безобразия. Делается это так:

Они самые.

При установке


Алгоритм установки:
  1. 1. Пользователь вводит при установке ключ
  2. 2. Программа установки формирует RSA-ключ, связывая его с пользователем, устанавливая в некое хранилище

  3. Программа установки связывается с сервером, передавая:


    • Ключ, указанный пользователем

    • Public-часть ключа, сформированного на шаге 2

    • Подписанные хэши следующих ключей реестра Windows:
    • i. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LicenseInfo
      ii. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
      iii. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId

  4. Сервер проверяет ключ. Если переданный ключ ещё не был активирован и является действительным, происходит активация приложения. Активация включает в себя следующие шаги:
    • Выдача программе установки на клиенте последовательного номера установки, подписанного для клиента ключом
    • Сохранение на сервере ключей установки клиента (public-часть ключа RSA клиента, хэши ключей реестра, привязывающие ключ RSA к инсталляции)

При формировании пакета

  1. Формирование пакета для обмена, который должен оплачиваться, выполняется в точности так же, как и для бесплатныхЪ, но в заголовок пакета вносятся следующие изменения:
    • Передаётся идентификатор установки
    • Передаются хэши из п.3с предыдущего подраздела
    • Кроме этого, весь пакет подписывается ключом, выданным классом инсталлятора при установке клиенту для исключения фальсификации или случайных искажений при передаче.

При обработке пакета

Следующие действия должны быть выполнены:
  1. Проверена подпись и извлечён объект данных

  2. Проведена проверка аутентичности пакета (проверены ключи установки и ID Windows из пакета)

Если первый и второй пункты выполняются, то выполняется загрузка пакета.


Забавно, что нас волнует вопрос о том, насколько этично отправлять на наш сервер для привязки LicenseInfo и ProductId. Если мы когда-то проиграем, то только потому, что слишком много внимания уделяем такому по сути абстрактному или даже метафизическому понятию, как совесть, в то время как прочие - даже не знают, как это слово пишется.

пятница, февраля 16, 2007

Камлания

Когда суровый февральский ветер доносит до меня обрывки, в которых улавливаются слова: "уникальный", "не имеет аналогов", "не только не уступает,.." - я немедленно проверяю кошелёк. Обманут, подлецы, глазом не успеешь.

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

Пора бы вам, граждане рекламисты, менять пластинку!

вторник, февраля 13, 2007

"Под маской овцы..."

Мой комментарий к тексту.

Был во Внуково целый цирк с этой съёмкой. Такие дураки там в САБе тогда были - это что-то.Итак, если осилить не удалось, то текст про то, что Windows - это ужасный ужас и потому его надо срочно менять, а то государство попадёт в зависимость и протчая, и протчая, и протчая. Всякая возня, особенно в мире денег, тем более, в мире больших денег, каковые и крутятся там, никогда не происходит просто так. Посмотрим внимательнее на персонажей, что голосуют против Windows:
  • какой-то Андрей Ловягин, считающий, что "с другой [стороны]— попадаем в полную зависимость от корпорации Билла Гейтса.". Наверное, Ловягин думает, что попасть в зависимость от беспринципного Доброва, Гондаренко - приятнее или почётнее? О, да!...

  • Директор Linux-центра Павел Фролов, который "убежден, что ПО с закрытым кодом по своей сути не может гарантировать безопасность в случае его применения в государственных учреждениях". Ах, он убеждён! А на чём базируется его убеждённость? "Нет, я жду!" Может быть, на том, что мегапроект срамной корпорации Атлас, печальной памяти Atlix, построенный на сверхнадёжной и мегазащищённой операционной системе подох прямо на демонстрационном стенде прошлым летом? Или на том, что, что из всего хлама, упорно выдающего себя за истинное благо, только Windows имеет сертификаты ФCБ? Не купленные, не украденные, а полученные несмотря на скотский, дикарский, совершенно беспрецедентный нажим на 8й отдел конторы глубокого бурения со стороны некоторых деятелей т.н. "айти-бизнеса". Вам, Паша, есть о чём подумать на досуге.

  • "Рано или поздно осознание необходимости иметь свое ПО наступит", — уверен Олег Садов, технический директор компании Linux Inc. Непременно наступит, господи Садов! Даже не сомневайтесь. Но только не с Вашим участием. Дело в том, что от Вашей идеи "написать собственную операционку" (а на меньшее Вы, не сомневаюсь, не согласны!) как бы это... разит. Казнокрадством. "Все полимеры просрали", а всё туда же. Что Вам мешало 15 лет писать "своё ПО"? За это время Microsoft выпустил, дай бох памяти: Windows 3.1, 3.11, 3.5, 3.51, 95, 4.0, 98, Me, 2000, XP, 2003, Vista. Не говоря о CE, Mobile, service packs (некоторые из которых - не больше и не меньше, как новые версии операционки, напр., NT 4.0 SP3 или XP SP2). А что сделал Linux Inc. за отчётный период? Не подскажете?

  • Филипп Торчинский из компании Sun Microsystems. Тот самый, с чудной логикой: из того, что "в стране есть люди, понимающие важность использования открытого ПО", делается вывод: "Windows останется для мультимедиа, а Linux будет находить все большее применение в государственных учреждениях и сфере образования". Филипп, я Вас прошу: получите, наконец, сертификат Патрушева на свой Solaris, а то Ваша организация крайне жалко выглядит. Уже все чакры, то есть, э-э-э код открыли, а рыбы всё нет и нет. Обидно, я понимаю.

  • Галина Кожанина, преподаватель Санкт-Петербургского технического колледжа управления и коммерции. «мы начинаем проводить виртуальные уроки на базе открытого ПО, совсем недавно состоялось первое занятие, в котором приняли участие педагог из Петербурга и три ученика — из Алма-Аты, Хабаровска и Новосибирска». Ну что, и авторитет в отрасли, и размах (1+3=4, да?) - всё играет на увеличение веса слов госпожи Кожаниной.

Но это, так сказать, шутки. А вот что я хочу сказать серьёзно. Кто эти люди в целом? Чего это они так возбуждаются на Windows? Банальные продавцы услуг. Они раздают даже железо почти за так, что там ПО. И всё равно раз за разом умудряются на поддержке, консалтинге и обучении работе со своей косокривью зарабатывать не просто на хлеб, но с икрой!

Бабушка, дай воды, а то так есть хочется, что аж переночевать негде!

Отродье славной семьи настольных баз данных

Я уже распространялся про странные проблемы с Microsoft Access. То, с чем пришлось столкнуться на прошлой неделе, превосходит всё бывшее. А именно.

1. Начать транзакцию
2. Вставить запись в таблицу А
3. Вставить запись в таблицу Б
4. Попытаться вставить запись в таблицу Б снова
5. Закрыть транзакцию

Вроде бы - куда проще? Но нет. Выполнение 4го шага приводит к появлению ошибки исключительной ясности: "The changes you requested to the table were not successful because they would create duplicate values". Разумеется, никакого дублирования не было и близко: только совсем уж пропащий бедолага может сказать, что ключи 1172088985 и 1263693392 имеют большое сходство и тем более - совпадают. Но у Access имеет свои понятия: would create и всё тут.

Так и не понял, как это можно исправить по-умному и сгоряча даже написал запрос в поддержку дядькам из Города Дождей (надо же как-то оплаченные часы тратить; в прошлом году все пропали - ни одного инцидента мы им не подкинули). В итоге "исправил" по-глупому: исключил шаги 1 и, соответственно, 5. Теперь всё записывается как и надо, но если вдруг случится недосмотр в UI и в базу пойдут кривые данные ... Буду ждать, чё там ответят.

Раньше я думал, что самое странное, чем владеет Microsoft - это Visio, а теперь я думаю, что у Visio появился достойный конкурент. Когда уж он отомрёт!