Архив категории «Разработка ПО»

Нет-нет, только не .net!

.netЧуваки из Микрософта (Jesse Kaplan, CLR Program Manager) потихоньку не рекомендуют писать shell extensions при помощи .NET.

И в MSDN дописали даже красными буковками.

… It is certainly possible to create these shell extensions with .NET but it is extremely dangerous to do.

It’s not that if you have a bug in the application you can cause instability problems in exporer.exe (though that is important as well). The real issue is that when you write shell extensions you actually inject your code and your depenencies (such as a particular version of the .net framework) inside all processes on the machine that have an open file dialog box. If the application that does an open file uses a different version of the runtime than the one your extension was built against any number of bad things can happen.

Ну хоть по-честному. А то сначала гнобили своих бета-тестеров, которые задавали ненужные вопросы типа «Почему в Висте не всё на .net, как было обещано, а только пара модулей?»

Вирусы для iPhone

Взято с nnm.ru

Ну, началось. Сегодня поставил на айфон новую прошивку (3.0.1), которая устраняет уязвимость, связанную с SMS-сообщениями. Мне известны реальные люди, которые уже пострадали — сотни смс-ок были отправлены с телефона, находившегося в роуминге, приятного мало.

Но всё это только начало. Популярность айфона должна была привести к публикации SDK, а это обязательно приведёт к появлению вирусов, так уж устроены люди. И пользователям айфона всё-таки придётся вникать в технические детали для того, чтобы «всё просто работало». Если даже допустить, что Apple будет оперативно закрывать дыры в системе, то качать 230 Мб и обновлять прошивку через день мало кому захочется. Кстати, Касперский уже давно выпустил когти, предвкушая подсадку айфонопользователей на свою иглу.

Восклицательные знаки в сообщениях

1c_errorОдним из признаков кустарного ПО — это присутствие восклицательных знаков в сообщениях об ошибках.
Например: «Не все поля заполнены!», «Ошибка!!!».

Ещё, в сообщениях, живущих внутри кустарного ПО, к пользователю обращаются на «Вы» с большой буквы.

Читать полностью »

О планировании

picture[1]Из своего опыта я давно понял, что если тебе представляется сделать что-то за n-ное количество времени, то в действительности это будет занимать 3 × n, потому что обязательно что-нибудь пойдёт не так, выяснятся непредвиденные вещи и т.п. (см. «Стратегическое планирование»).

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

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

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

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

Диалог «Подключена камера»

Интересно, почему этот диалог до сих пор не починят?

13.06.2009 • Метки: , • Рубрики: Разработка ПО • Комментировать

Рог юзабилия

Рог юзабилия — редкая, но довольно опасная патология мозга компьютерных пользователей, которые случайно узнали слово «юзабилити», имея самые отдалённые понятия о том, что это такое и не имея порой элементарного образования.

Болезнь опасна в основном для окружающих, которых носитель этим рогом может задевать. Узнав волшебное модное слово, больной может даже перейти в стадию «юзабилиста» и окончательно упрётся рогом в подсчёт щелчков мышью.

Сокращением их количества он будет мотивировать самые запутанные и бредовые идеи по «улучшению интерфейса».

С медицинской точки зрения рог юзабилия есть ни что иное, как закостеневшая способность пользователя воспринимать новые вещи.

См. также юзабилити.

Вся жизнь — борьба

Пока Сполски борется со сложностью форматов офиса, Илья Бирман борется со сложностью указателей.

Форматы файлов Microsoft Office

Оказывается, уже почти год опубликованы форматы doc, xls, ppt.

А я только сегодня узнал об этом из статьи Joel’а Spolsky. В ней он рассказывает, почему они такие сложные и что по этому поводу можно придумать.

Прямо скажем, ничего хитрого он там не придумал — предлагает не заморачиваться с бинарником, а взять да и купить Windows 2003 сервер, поставить туда лицензионный офис и когда кто-то зааплоадит doc-файл на ваш вебсервис с намерением сделать из него pdf, запускать Word да и через COM-автоматизацию всё это в нём делать. Ну писать для Екселя файлы в CSV или в формате Lotus 1-2-3, а для Ворда — в rtf или в html.

Каретка, как индикатор текущей раскладки

Есть хорошая тема, показывать текущую раскладку цветом каретки. Каретка — это та мигающая палочка, из которой вылезает текст, если что. А курсор — это мышиный указатель. По крайней мере, в терминах ресурсов Windows. Но для пользователей и она в большинстве случаев — курсор.

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

Я впервые прочитал о таком способе индикации на сайте Артёма Горбунова а Илья Бирман тут рассказывает о своей реализации этой идеи на Маке.

Ну конечно, я примерил идею на винду. Что мы имеем в смысле её реализации средствами WinAPI? Читать полностью »

12.05.2009 • Метки:  • Рубрики: Разработка ПО • Комментариев: 10

Предпочтения в коде

Мне не нравится, когда в коде круглые скобки отделяют пробелами от содержимого, и пишут слитно с названием функции или другой конструкцией:

1
2
if( arg > 0 )
    doSomething( arg );

Видимо, считается, что это улучшает читаемость. Мне так не нравится — создаётся впечатление какой-то расхлябанности. Субъективно, но для меня достаточно, чтобы так не писать.

А если бы пришлось как-то обосновать такую точку зрения, хотя бы самому себе, я бы исходил из назначения строки. Например, роль первой строки — описать условие (if) — именно это слово и следует выделить. Смысл второй строки — действие (doSomething), это более значимая часть и её хорошо бы отделить визуально. А аргументы являются всего лишь дополнительной информацией.

Я стараюсь писать так:

1
2
if (arg > 0)
    doSomething (arg);

Так смотрится как-то собранней. Но если у функции, например, аргументов нет, глупо отделять её от пустых скобок. Тогда хорошо смотрится и doSomething();