Загрузка...

вторник, 29 июля 2008 г.

Невероятно, но факт

У вас много места на винчестере? Скачайте архив 42.zip (42,3 килобайта) и полностью разарахивируйте его. Вы получите миллион файлов по 4,3 гигабайта. И вы поймете, что ваш НЖМД не такой уж и вместительный ;)

ЗЫ. Сам проверять побоялся, мало ли что =)

четверг, 24 июля 2008 г.

Релиз Google XML Pages

Google в очередной раз порадовал мир Open Source своей разработкой - Google XML Pages - шаблонной системой, используемой для получения HTML/XHTML, и не только. GXP работает с Java, и в данный момент ведется разработка генератора кода на C++, что меня и заинтересовало вкупе с моими поисками библиотеки по работе с XML.

Подробности можно узнать из официального релиза.

понедельник, 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 стартовал!

Как-то совсем незаметно начался Code Jam - соревнование для программистов на всех языках программирования. Признаться, до этого у меня не было опыта участия в этом конкурсе. А вы участвуете в нем? Участвовали ли?

воскресенье, 13 июля 2008 г.

Альтернатива для Protocol Buffers

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

Вот и в отношении Protocol Buffers не все так гладко. Менее года назад Центр разработки Facebook выпустил аналогичный ему Thrift, который не снискал такой же славы... Кстати, Protobuffers уже успели окрестить убийцей XML.

У какого протокола больше возможностей? Какой из них лучше документирован? Сравнительная таблица представлена в блогпосте Thrift vs. Protocol Buffers.

вторник, 8 июля 2008 г.

Свойства в C++. Еще одно решение

Относительно недавно была поднята тема свойств в C++ (наподобие геттеров и сеттеров C#): в статье RSDN и в блоге Alno.

Еще одно решение этой проблемы можно найти на 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.

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




Если вы блоггер, вам самое место на Карте Блогов. Посмотрите, как я устроился ;)



 
^

Powered by BloggerCreative Commons License