ЗЫ. Сам проверять побоялся, мало ли что =)
вторник, 29 июля 2008 г.
Невероятно, но факт
ЗЫ. Сам проверять побоялся, мало ли что =)
четверг, 24 июля 2008 г.
Релиз Google XML Pages
Подробности можно узнать из официального релиза.
понедельник, 21 июля 2008 г.
Юзабилити Visual Studio под вопросом. Вносим улучшения!
Вместо эпилога. С недавних пор меня стали волновать вопросы эргономики и юзабилити графических интерфейсов (non-Web). Более-менее конкретных правил или советов по его проектированию мне найти не удалось. То, что всё-таки удалось выудить (кстати, добавляйте меня в друзья :)), содержит только общие положения по этому вопросу. В курсе, что есть несколько русских блогов по юзабилити веб-интерфейсов (небольшой список на Хабре), но они несколько не соответствуют моим ожиданиям. Я понимаю, что это целая наука, и нет универсального подхода, однако, может у вас есть что сказать по этому поводу? Прошу в комментарии.
Не имея теоритического материала, начинаешь вникать в азы юзабилити на основе конкретных реализаций. В голове появляется бзик — в каждом GUI начинаешь искать изъяны и возможные решения. Мой глаз не обошел и среду разработки Visual Studio 2005. Проектируя интерфейс очередного диалогового окна для своего приложения, я столкнулся с вопиющим нарушением всех мыслимых правил юзабилити.
Посмотрите на скриншот:
Этот диалог служит для добавления переменной в класс (MFC). К тому же, с его помощью можно связывать переменные класса и элементы управления создаваемого интерфейса. Два этих режима переключаются при помощи чекбокса "Control variable" (см. скриншот ниже — красным выделены режимы). Понять это можно не сразу, что обусловлено неудачным расположением комбиков и полей ввода.
Учитывая, что человек читает слева-направо сверху-вниз, пользователю также трудно выявить связь между этими элементами управления, а она следующая (зеленые стрелки):
Для того, чтобы связать переменную со своим элементом управления, пользователю необходимо отметить чекбокс, выбрать идентификатор контрола и определить категорию, после чего выбрать тип создаваемой переменной. Запутаться в последовательности очень просто.
Я подумал, а почему бы не изменить интерфейс на такой, который был бы мне удобен? Ведь это очень просто сделать. Интересно только — это не запрещено?.. =)
Подобные диалоговые окна построены на основе HTML-страниц, изменить которые на свой вкус не составит особого труда. Достаточно найти эту страницу в дебрях файлов студии. Это не так сложно, если в арсенале есть FileMon :) Для страждущих подскажу, что путь к ресурсу следующий: "C:\Program Files\Microsoft Visual Studio 8\VC\VCWizards\CodeWiz\MFC\Variable\HTML\1033\default.htm".
В итоге я получил следующее (CSS хромает, это максимум, что мне получилось выжать):
Что изменилось?
1. Два режима разделились визуально — это особенно стало видно после добавления горизонтальной прямой и смещения чекбокса влево.
2. Поменялся порядок следования элементов на перпендикулярный — там, где раньше был вертикальный стал горизонтальный, и наоборот:
По моему измененный стиль имеет лучшую юзабельность. Хотя нет предела совершенству! Как вы считаете?
P.S. Используйте материал на свой страх и риск. Статья служит для ознакомления. Возможный причиненный вами вред лежит только на вашей совести ;)
пятница, 18 июля 2008 г.
Классификация багов
Гейзенбаг (англ. Heisenbug) — термин, используемый в программировании для описания программной ошибки, которая исчезает или меняет свои свойства при попытке её обнаружения.
Борбаг (англ. Bohr bug) — термин, используемый в программировании для описания программной ошибки, которая, в противоположность гейзенбагу, не исчезает и не меняет своих свойств при попытке её обнаружения.
Мандельбаг (англ. Mandelbug) — термин, используемый в программировании для описания программной ошибки, чьё поведение столь сложно, что выглядит хаотичным. Это также подразумевает, что говорящий полагает, что это скорее борбаг, чем гейзенбаг.
Шрёдинбаг (англ. Schroedinbug) — термин, используемый в программировании для описания программной ошибки, которая никак не проявляет себя, однако внезапно возникает, если кто-то наткнётся на неё в исходном коде или попытается использовать программу в необычных условиях и осозна́ет, что система вообще не могла работать при наличии такой ошибки. После этого программа перестаёт работать вообще до тех пор, пока ошибка не будет исправлена.
Узнать о других багах (например, о призраках в коде и зависящих от фазы луны), можно в статье Unusual software bug.
Google Code Jam стартовал!
воскресенье, 13 июля 2008 г.
Альтернатива для Protocol Buffers
Вот и в отношении Protocol Buffers не все так гладко. Менее года назад Центр разработки Facebook выпустил аналогичный ему Thrift, который не снискал такой же славы... Кстати, Protobuffers уже успели окрестить убийцей XML.
У какого протокола больше возможностей? Какой из них лучше документирован? Сравнительная таблица представлена в блогпосте Thrift vs. Protocol Buffers.
вторник, 8 июля 2008 г.
Свойства в C++. Еще одно решение
Еще одно решение этой проблемы можно найти на CodeProject: Properties in C++ just like in C# or Delphi. Этот подход отличается основательностью, гибкостью, а также простотой использования.
пятница, 4 июля 2008 г.
Google C++ Testing Framework
"Когда я могу перестать писать тесты?"
Мастер ответил:
"Когда ты перестаешь писать код"
Ученик спросил:
"Когда я перестаю писать код?"
Мастер ответил:
"Когда ты становишься менеджером"
Ученик задрожал и спросил:
"Когда я становлюсь менеджером?"
Мастер ответил:
"Когда ты перестаешь писать тесты"
Ученик побежал писать тесты.
Остались только следы.
Если код заслуживает быть написанным,
он заслуживает иметь тесты.
Путь Тестивуса
Google анонсировал фреймворк, который он использует для отладки и тестирования собственных проектов на C++. Краткая аннотация, описывающая фреймоворк:
Google's framework for writing C++ tests on a variety of platforms (Linux, Mac OS X, Windows, Windows CE, and Symbian). Based on the xUnit architecture. Supports automatic test discovery, a rich set of assertions, user-defined assertions, death tests, fatal and non-fatal failures, various options for running the tests, and XML test report generation.
С момента его выхода не прошло и суток, так что предлагаю одним из первых ознакомиться с базовыми принципами работы и примерами. А для начала, скачайте непосредственно сам фреймворк.
Если вы блоггер, вам самое место на Карте Блогов. Посмотрите, как я устроился ;)





