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

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

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

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

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

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

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

пятница, апреля 24, 2009

Доделываем за халтурщиками

Меня всегда удивляло, почему после установки MS SQL Server нужно ещё дополнительно руками конфигурировать SSRS. При этом "конфигурирование" - это просто тупое протыкивание кнопок, не требующее никакого воображения. Это с одной стороны. С другой - SSRS в составе MSSQL Server 2005 EE with AS должен быть установлен в процессе развёртывания решения. Мы не можем предположить, что все наши 2000 пользователей (на первом этапе. далее - 140000) смогут что-то установить себе. Там где есть нажатия на кнопки - просто должна быть техподдержка. Но это стоит денег и похоже, что написать 100 строк (так казалось) - будет попроще, чем тратить миллионы на телефонные разговоры с несчастными "доустанавливательщиками".

Для работы были использованы:
1. MSDN из состава VS2008
2. Онлайновый MSDN
3. Собственно - VS2008 (C#)

Алгоритм доустановки:
1. Создать виртуальные каталоги для службы и менеджера отчётов
2. Развернуть БД сервера отчётов
3. Назначить на неё права
4. Установить WS-identity

В общем, всё, что надо сделать руками в конфигураторе, должно быть сделано
автоматически

Как это всё делается
Есть некоторые проблемы на этом пути. Прежде всего, MSDN что в составе поставки VS2008 безбожно врёт. Не те сигнатуры методов даже. Затем, сам процесс очень плохо документирован. До такой степени, что непонятно даже с чего начинать. И наконец - уже когда всё вроде бы работает, всплывают мелкие детали, которые надо знать, иначе вся работа -- зря. Итак.

1. Берём в левую руку Reporting Services WMI Provider. Запускаем VS2008 и создаём Console application (это по желанию, но как человек, которому скоро умирать - я ближе к консолям, чем к окнам, хотя казалось бы...).
2. Импортируем System.Management и System.DirectoryServices.

Подготовительная работа завершена

Дальше - создаём виртуальные каталоги сервиса и менеджера:

private static void Main(string[] args)
{
string scopeName = String.Format(@"\\{0}\root\Microsoft\SqlServer\ReportServer\v9\Admin", Environment.MachineName);

// Свойства сервиса
string rsCls = String.Format(@"\\{0}\root\Microsoft\SqlServer\ReportServer\v9\Admin:MSReportServer_ConfigurationSetting", Environment.MachineName);
// Свойства менеджера
string rsmCls = String.Format(@"\\{0}\root\Microsoft\SqlServer\ReportServer\v9:MSReportManager_ConfigurationSetting", Environment.MachineName);

ManagementScope scope = new ManagementScope(scopeName);
scope.Connect();

ManagementObject instance = GetInstance(scope, rsmCls);
CreateVirtualDirectory(instance, "Reports");
ResetUrls(instance);

instance = GetInstance(scope, rsCls);
GenerateDbScript(instance);
CreateVirtualDirectory(instance, "ReportServer");


При этом
CreateVirtualDirectory
выглядит так:

///
/// Создать виртуальный каталог в IIS и записать в .config RS (сервиса или менеджера) изменения
///

/// Объект администрирования
/// Имя создаваемого каталога
private static void CreateVirtualDirectory(ManagementObject instance, string VirtualDirectory)
{
ManagementBaseObject inParams = instance.GetMethodParameters("CreateVirtualDirectory");
inParams["Name"] = VirtualDirectory;
inParams["IISPath"] = String.Format("IIS://{0}/w3svc/1/root", Environment.MachineName);

ManagementBaseObject outParams = instance.InvokeMethod("CreateVirtualDirectory", inParams, null);
CheckErrorCode(outParams);
}


Неудобство способа вызова метода компенсируется его работоспособностью. Дальше так будет всю дорогу.


private static ManagementObject GetInstance(ManagementScope Scope, string ManagementClass)
{
ManagementClass serverClass = new ManagementClass(ManagementClass) {Scope = Scope};
ManagementObjectCollection mcol = serverClass.GetInstances();
ManagementObject instance = null;

foreach(ManagementObject o in mcol)
{
instance = o;
break;
}

return instance;
}

Наш случай - прост. Я точно знаю, что сервер отчётов разворачивался в единственном экземпляре и поэтому умничать - "с каким именно экземпляром мы работаем" я не стал. С одним единственным.

Итак, каталоги установлены и две красных лампочки в конфигураторе погасли. Устанавливаем теперь Web service identity
private static void SetWebServiceIdentity(ManagementObject instance)
{
ManagementBaseObject inParams = instance.GetMethodParameters("SetWebServiceIdentity");
inParams["ApplicationPool"] = String.Empty;

ManagementBaseObject outParams = instance.InvokeMethod("SetWebServiceIdentity", inParams, null);
CheckErrorCode(outParams);
}


создаём БД

/// 
/// Сгенерировать скрипт для создания БД RS
///

/// Объект администрирования (MSReportServer_ConfigurationSetting)
private static void GenerateDbScript(ManagementObject instance)
{
ManagementBaseObject inParams = instance.GetMethodParameters("GenerateDatabaseCreationScript");
inParams["DatabaseName"] = "ReportServer";
inParams["Lcid"] = "1033";
ManagementBaseObject outParams = instance.InvokeMethod("GenerateDatabaseCreationScript", inParams, null);
object s = outParams["Script"];

using(FileStream fs = new FileStream("database.sql", FileMode.Create))
{
using(TextWriter tw = new StreamWriter(fs))
tw.Write(s);
}

ExecSQL("database.sql");
}

устанавливаем права на эту БД
private static void SetupDatabase(ManagementObject instance)
{
ManagementBaseObject inParams = instance.GetMethodParameters("SetDatabaseConnection");
inParams["Server"] = @"(local)\SQLEXPRESS";
inParams["DatabaseName"] = "ReportServer";
inParams["CredentialsType"] = 2;
inParams["UserName"] = String.Empty;
inParams["Password"] = String.Empty;

ManagementBaseObject outParams = instance.InvokeMethod("SetDatabaseConnection", inParams, null);
CheckErrorCode(outParams);

SetupRights(instance, @"NT AUTHORITY\Network Service");
SetupRights(instance, String.Format(@"{0}\ASPNET", Environment.MachineName));
}

private static void SetupRights(ManagementObject instance, string Account)
{
ManagementBaseObject inParams = instance.GetMethodParameters("GenerateDatabaseRightsScript");
inParams["UserName"] = Account;
inParams["DatabaseName"] = "ReportServer";
inParams["IsRemote"] = false;
inParams["IsWindowsUser"] = true;

ManagementBaseObject outParams = instance.InvokeMethod("GenerateDatabaseRightsScript", inParams, null);
object s = outParams["Script"];
CheckErrorCode(outParams);

using(FileStream fs = new FileStream("permissions.sql", FileMode.Create))
{
using(TextWriter tw = new StreamWriter(fs))
tw.Write(s);
}

ExecSQL("permissions.sql");
}

устанавливаем NTLM-аутентификацию на IIS
private static void SetupIIS()
{
DirectoryEntry de = new DirectoryEntry(String.Format("IIS://{0}/w3svc/1/root", Environment.MachineName));
de.Properties["AuthFlags"].Value = 4;

de.CommitChanges();
}


и наконец правим конфигурационный файл менеджера таким образом, чтобы менеджер мог запускаться без ошибок:
private static void ResetUrls(ManagementObject instance)
{
ManagementBaseObject inParams = instance.GetMethodParameters("SetReportServerURLs");
inParams["ReportServerURL"] = String.Empty;
inParams["ReportServerVirtualDirectory"] = "ReportServer";
inParams["ReportServerExternalURL"] = String.Empty;

ManagementBaseObject outParams = instance.InvokeMethod("SetReportServerURLs", inParams, null);
CheckErrorCode(outParams);
}


Да. Чуть не забыл.
CheckErrorCode
выглядит так:
private static void CheckErrorCode(ManagementBaseObject outParams)
{
int errorCode = Convert.ToInt32(outParams["HRESULT"]);
if (0 == errorCode)
Console.Write('+');
else
Console.Write('-');
}


Моменты, связанные с превращением виртуальных каталогов в приложения - пропускаю. На выходе - полностью настроенный SSRS2005. Мы прилично сэкономим на техподдержке

суббота, февраля 21, 2009

VS2008 + SQL Server 2005

По-моему, это настоящий кретинизм - не добавить в 2008ю студию средства для работы с SSRS 2005.

понедельник, февраля 16, 2009

Тест на память и сообразительность

COM-класс запускает поток, в который через
IGlobalInterfaceTable передаёт указатель на какой-то интерфейс для дальнейшей асинхронной обработки. Один из методов интерфейса в этом случае всегда возвращает 0x800401fd "Object is not connected to server", а некоторые другие иногда произвольно вместо валидного указателя из CoCreateInstance возвращают NULL.

Почему?

Правильный ответ: а кто будет корректно инициализировать поток для COM?

вторник, февраля 10, 2009

А вот у нас был случай

На днях решил заказать себе домой бесперебойник. Остановился на Ippon. Во-первых, потому что у меня был уже этой серии агрегат, а во-вторых, потому что они по известному соотношению рвут всех. Даже бесплатному пиву угрожают. Ну так вот. на price.ru увидел, что некий озон предлагает такой прибор по неплохой цене. Разместил заказ. Они подтвердили. Прошла неделя - получаю письмо: "Мы сожалеем, что нам приходится сообщать Вам об аннулировании Вашего заказа № 11111111-2222 Аннулирование произошло по причине: товар отсутствует у поставщика. "В качестве компенсации за причиненное неудобство вазон предлагает Вам воспользоваться 5% скидкой на один заказ*, которая действует в течение 2 недель."

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

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

В общем, товарищи интернет-покупатели, плюйте на газоны. И выгуливайте на них собакЪ. А дебилы из газонов - учитесь работать у amazon.com, а то так в собственном... и захлебнётесь.

вторник, января 20, 2009

О техническом кретинизме русских банков

Имея р./с. в Банке Москвы, мы подключены к счёту через интернет-банк. Это удобно и, безо всяких сомнений, выгодно. Однако теперь, по требованию какого-то высокопоставленного идиота из этого же деревенского банка, мы должны предоставить перечень всех ip-адресов, с которых планируем "осуществлять доступ к счёту". Разговоры со службой поддержки сводятся всё к тому же: "мы сделаем вас счастливыми". Вариант того, что мне не нужно никакое ограничение, что оно даже хуже, чем не нужно - его не должно быть - не рассматриваются: "Тефтель с рисом, котлета с картошкой". Чёрт его знает, что это за банк такой.

Такие же или примерно такие всё так и норовят написать наци-а-нальную операционную систему, потому что "слышали" что "в Windows есть закладки". Как я устал этих технодикарей! "Так бы и убила паразита чем-нибудь!"

пятница, января 16, 2009

И вновь не сидится кое-кому на заднице

http://cnews.ru/news/top/index.shtml?2009/01/15/334523

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

1. Для чего это нужно?
2. Кто это будет делать?

1. Предлагаю принять за данность то, что это нужно для получения денег из госказны. Как показывает практика реализации проектов в области информационных технологий в нашей стране, it -- это идеальная тема для получения денег без необходимости их отрабатывать. Ну что там говорить, если в подземных паркингах людей выпускают, поднимая шлагбаум вручную, приняв талончик с пробитым на нём временем. Уж не говоря про Горбушку в г.-г. Москве - два дюжих молодца как из колодца качают - поднимают шлагбаумы на выпуске.

2. Кто это будет делать? Чем вообще славится Российская Федерация в плане информационных технологий? На что мы можем гордо показать и сказать миру - вот это сделали мы? А что если перечислить? Не так давно умер Донской. Один из авторов чёрт знает когда написанной шахматной программы. Никто кроме него и не помнил, что это сделал он, но примем с оговорками, что это было достижение хотя бы и своего времени. Дальше. Пажитнов написал "Тетрис". Хорошая игра. Но вообще-то Sierra, Atari и прочие писали в то время игры сотнями и тысячами. "Тетрис" это прорыв, но ему, как бы не соврать, опять же на днях будет 20 лет. Что ещё? "Лексикон"? На нём в мире никто не работал. Больше как будто и ничего. Про аппаратную часть скажу только "EC". Как говорится, "а сам плачу...".

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

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

суббота, декабря 13, 2008

Моё стремление к гигантомании удовлетворено

Моя компания стала генеральным подрядчиком создания ИС федерального уровня, как и 4 года назад. Но в этот раз всё по-честному. Договора, ответственность и т.п.

Наконец-то появилась работёнка по нам.

четверг, августа 07, 2008

О проведении тендеров

Заявляю совершенно ответственно, что т.н. "госзакупки" в виде "тендеров", "аукционов" и т.п. - обман и коррупция в чистом виде. Как проводится типичный тендер (точнее, как проводится подсчёт баллов после вскрытия конвертов)? Нам это в красках рассказывает cnews. Я могу рассказать нечто похожее и даже не одно. Посмотрите на т.н. "интеграторов". Люди очумели от шальных денег, которые направо и налево в позе сеятеля швыряют чиновнички: что ни тендер "на разработку", то 20 и более миллионов. На ЦБД УИГ в 2004-2007 было потрачено не менее 300 (трёхсот!) миллионов рублей. Что получено взамен? Ничего. На разработку ЕГАИС - тоже дай бох всякому. Что взамен? Ничего.

Для чего проводятся конкурсы службами, министерствами и т.п.? Ответ в одно слово: воровать. С государством в этих "тендерах" можно связываться только в одном случае - если можешь повлиять на результат тендера: знаком, вместе отдыхали, служили, учились и т.п. Впрочем, можно занести куда надо и тоже решить вопрос, но таким я лично заниматься брезгую.

А вы сходите, посмотрите на то, куда утекают денежки: http://zakupki.gov.ru

понедельник, июля 21, 2008

Главное правило писателей Office Add-ins

Никогда не вызывать модальные формы из основного потока addin. А то с катаклизмами бороться некому. Билгейц уже не при делах.

воскресенье, июля 20, 2008

Как не надо

Всю неделю наслаждался всеми видами негодных интерфейсов. Пора раздать места.

3 МЕСТО
Душевому крану в гостинице Hotel An Der Oper. Открывается от себя, горячая и холодная вода поменяны местами.

2 МЕСТО
Одной дерьмовой программке навигации, которая вместо английского Navigate To... предлагает "Идти на точку". Моя жена, например, не поняла-  о какой точке идёт речь? Почему - на точку? Почему не "идти туда", что хоть и отвратительно коряво, но хоть как-то объясняет смысл операции.

1 МЕСТО
Уходит "Стриму". Это трудно объяснить, не показав. Но показать уже не смогу, поэтому на словах. Представьте себе, что у вас закончились деньги на телефоне и надо срочно пополнить счёт. Видели ли вы хоть один автомат оплаты, который требует назвать номер лицевого счёта (я своего не знаю, кстати), пароль на ИССА, АССА, ответ на контрольный вопрос и только после этого принимает деньги? Я - нет. Это дико и противоестественно. У меня есть постоянный идентификатор - номер телефона. +7910 и т.п. Точно так же и в Стриме - у меня есть номер домашнего телефона. Зачем мне знать что-то ещё? Но без этого не получится пополнить свой счёт - пришлось ехать в офис в субботу утром.

Человеческая лень и глупость так разнообразны, что я не перестаю удивляться.

вторник, июля 08, 2008

Вторичность

У меня перестал работать GDS. То есть, не совсем перестал, а перестал искать почту в Thunderbird. Что-то ищет, что-то нет. Это не то, для чего я его кормлю электричеством. Короче, я стал экспериментировать - кто бы мне помог. Yahoo хочет денег за свой настольный поиск. Windows Desktop Search - не умеет работать с Thunderbird. Поразили меня не они. Яндекс.

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

Я не живу ради того, чтобы пользоваться "поиском от яндекса". Мне вообще наплевать, кто мне что ищет; это всё между прочим и только ничтожный кусок моей работы - искать среди написанного, полученного, скачанного. Но такими средствами поиска по своей железяке как предлагает этот яндекс - может пользоваться либо одержимый, либо менеджер этого проекта из самого яндекса. И то - под угрозой лишения годового бонуса.

суббота, июля 05, 2008

Пару слов об AJAX-цирке

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

Я это к тому, что ни карта сайта с этими url/loc, ни какие-то другие ухищрения ничего не дают. Ближайшие полгода-год ajax-функциональность так и будет ограничиваться бесконечными клонами google maps и прочей ахиней, которую мы умеем делать уже лет 11 как.

воскресенье, июня 08, 2008

Инструменты

Если качество работы в программировании так же зависит от инструмента, как в настилании полов - надо всегда быть в поиске лучшего средства разработки.

пятница, мая 30, 2008

Lost in translation

Прямо день воспоминаний. Суть в чём - было у меня две книжки: некоего Харриса в русском переводе "Освой OLE2 самостоятельно за 21 день" и Деннинга - "ActiveX для профессионалов". В первой я и сейчас не понимаю, несмотря ни на на что. Со второй я разобрался на второй день после того, как она пришла, хотя излагаемое во второй было как-то посложней. Это я к тому, что одни может быть и знают материал, как этот Харрис, но без умения излагать это всё бесполезно. Если учесть, что ещё и переводчики образца 1996го года ничего не понимают в OLE2... А такой дар, как умение излагать, к которому приложено знание, вообще бесценен. Деннинг научил меня понимать COM. Я очень ему благодарен. А ещё Дону Боксу.

Качество и количество

Я помню, как был рад, когда в мои студенческие лапы попала такая отличная вещь, как Visio 3.0. На фоне бессмысленных и убогих программок Visio меня просто поразил{о}. Тогда я ещё думал, что дело в обёртке и главное -- красиво связать прямоугольник с ромбом. Спустя 12 лет мне пришлось работать с Visio в одном проекте, но уже с другой стороны. Я как-то упоминал. Убожество. Ужас и моральный террор.

Теперь - с Expression Web Designer. Насколько я могу понять, это выродок-переросток FrontPage.

Уж сколько лет прошло, а всё никак не могут привести в человеческий вид. Не говоря уже об ошибках реализации. Чушь какая-то. Не ожидал.

Мы бы взялись. Даже за не очень большие деньги. Лимонов за 5 зелени переделали бы к чертям эту хрень. Надо переделать, потому что иначе никто не станет с этим работать. Потому что невозможно.

четверг, мая 15, 2008

"Свободное ПО"

A Galaxy far far away Много лет назад у меня получился весьма содержательный спор с человеком, бешено отстаивавшим т.н. "свободное ПО". Меня интересовало, зачем обычным людям компьютер то есть зачем кому-то, кто ничего не понимает в разработке, иметь доступ к исходному коду. Парень уверял, что это необходимо. Совершенно необходимо. Иначе:

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

С большим или меньшим успехом эти тезисы озвучиваются уже лет 12, если не больше, с тех пор как заметил двух клоунов в своей лаборатории, которые вместо своих прямых обязанностей - администрирования файл-сервера - занялись установкой какого-то дистрибутива linux из первых на списанный 386й компьютер. Это дело хозяйское - во что верить, но вот мои соображения.

Про "свободу"

Я не понимаю, каким образом Internet Explorer или Apple Safari ограничивает мою свободу. И каким образом Mozilla Firefox её расширяет. Всё, что я могу увидеть в MF, я вижу в IE и AS и на мой вкус в последних (особенно в AS) всё выглядит гораздо лучше, чем в MF. Сказать, что мне не дают в IE почитать новости, связанные с очередным преемничком - я не могу. IE кроме этого не крадёт у меня ключ от квартиры, не блокирует меня в машине и не транслирует на весь мир, какие каналы в телевизоре у меня дома настроены на самую что ни на есть порнографию. Так в чём ограничение моей свободы программой, разработанной парнями из Microsoft? Боюсь, никто не может на это ответить связно.

Про исправление проблем силами пользователя

Это дремучее заблуждение (пользователь должен иметь возможность - и предположительно способен это сделать) идёт с тех пор, как "пророк" Столман не смог разобраться с какой-то программкой, не печатавшей что-то на чём-то и страшно огорчился, когда ему не дали привести исходный код в состояние, когда программка вообще не печатала бы ничего ни на чём. Прошло уж лет 20, всё изменилось, нет СССР, у М.Дж.Фокса прогрессирует Паркинсон, а ребята всё уверены, что они так же просто смогут изменить механизм обработки стоп-ошибок в Windows. Берусь утверждать, что только один мальчик из 10 тысяч сможет понять общую концепцию любого из наших программных продуктов. А внести осмысленные неразрушающие изменения без доступа к нашей системе управления проектами - один из двухсот тысяч. Причем, двухсот тысяч специалистов, а не просто людей. Что тогда говорить о по-настоящему сложных системах.

Каждый при известной сообразительности может правильно выставить угол опережения зажигания на старом советском джипе УАЗ-469, но не на каждом сервисе смогут поправить алгоритм работы компьютера, управляющего двигателем на моей машине. Времена изменились. У меня нет трамблёра. И если я начну требовать его установки на то, на чём езжу сейчас, у меня отберут лицензии на оружие, права и запрут в какой-нибудь дурке. И будут правы.

Главное же даже не это. С тех пор, как раздосадованный парень решил всем (кто не поддерживает его идеи раздавать оплаченный из хозяйского кармана код направо и налево) крепко насолить много чего изменилось. У нас теперь есть тесты, есть управление качеством, есть процедуры тестирования, версионность изменений и отслеживание состояния дефектов, есть люди, которые этим умеют пользоваться и процесс, который помогает людям выпускать надёжные и полезные программы. Пользователю просто не нужно уже иметь доступа к коду - там ничего не требует улучшения в такой степени, как на заре автомобилестроения, скажем, 20-30 лет назад (да и тогда, признаемся честно, не нужно было; западная цивилизация - общество узкой специализации: ты уж если программист, то программируй, а если ты бухгалтер, то не надо лезть в наши стеки, конвейеры, домены приложений и дескрипторы).

Так что если господа бездельники, обеспечивающие безопасность России накачиванием несчастных школ линуксами и бессмысленной малофункциональной хернёй вроде OpenOffice, хотят и дальше выглядеть дураками - могут продолжать пользоваться вышеприведёнными "аргументами" в пользу "Свободного ПО", но лучше бы сменить пластинку. А то смеяться над ними уже и некогда, и надоело.

среда, мая 14, 2008

Как всё изменилось на свете

Разгребая почту, нашёл письмо от одной сотрудницы Microsoft, которая не смогла мне продать подписку на MSDN на следующий год и, не придумав ничего умнее, стала угрожать страшными карами. Процитирую, пожалуй...

Спасибо за диалог. Нужно понимать, что пока вопрос с лицензиями не решен, компания ООО «XYZ», юридический адрес 322233322, Москва, пр. Безумцев, д. 242, находится под юридическими рисками.

Как сотрудник Microsoft, я предоставила всю запрашиваемую информацию по лицензированию, теперь мы ждем ответных действий.

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

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

Дикий народ. Ничего не умеют, ничего не учатся, ничего кроме мгновенной выгоды не хотят. Пропала страна.

воскресенье, мая 11, 2008

"Биометрические паспорта"

Некоторые правы, говоря, что в области безопасности программисты мало что из себя представляют. 99% из них, во всяком случае. Считается, что если ты передаёшь хэш вместо пароля, то это само по себе уже гарантия от вскрытия пароля. Вот только небольшая проблема - никому пароль не нужен сам по себе, а нужно то, что за паролем скрывается.

Что бывает, если пароль спёрли? Ну, ковыряются в том, что становится доступно, что-то крадут и т.п. Как с замком - подобрали ключ, поковырялись... Но как только хозяин это обнаруживает, замок меняется и всё - подбирайте снова, если здоровья не жалко.

Теперь представим себе, что будет, если замок не поменяешь? Ну, есть такие идиоты, ставят себе бронированные пятитонные двери, которые если уж и поставил, так один раз и на всю жизнь. Или вот - сейф с замком, шифр к которому можно задать один раз. После того, как код вскрыт - от такого сейфа толку нет. Только на грузила порезать - и на сома.

Подставим вместо однократного шифра - свои отпечатки пальцев, а вместо сейфа - себя. Становится тоскливо от идиотизма подобного варианта "обеспечения безопасности государства", чёрт бы его побрал.