Category: it

Идеальная GUI-библиотека

Нижеследующее -- тезисно, краткий результат многолетних метаний на тему "дайте мне интерфейсную библиотеку, с которой было бы просто и прикольно!". Замечу, что идеала (пока?) так и не нашлось, но имеющееся у меня решение Good Enough. Вроде бы.

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

Далее: у любой области может быть поведение -- реакция на события пользовательского ввода и вторичные события, сгенерированные поведением внутренних областей (пример первого: "внутри меня ткнули мышкой", пример второго "внутри меня нажали на кнопку").

К этому -- богатые графические возможности ("сделать этот элемент чуть темнее при наведении мыши" или "плавно увеличить этот элемент", "градиентики", рисование и т.п.) -- см. мои рассуждения об использовании современной графики для эффективного представления информации (там в конце крик души на эту тему).

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


Collapse )
Выводы из проделанной работы

* концепция проработана, и она рулит
* Ruby рулит; хотелось бы верить что YARV или Rubinius что-то таки сделают с его скоростью
* HTMLayout во многом рулит, но в некоторых (важных) местах является over- или under- kill'ом. Я не вполне уверене, что сохраню ему верность на длительной перспективе.

Сборка-разборка на время: WikidPad

Потенциально постоянная рубрика о "любимых программах", точнее, рефлексии на тему "правильно" и "неправильно" сделанных фич.

Итак, WikidPad -- комбинация персональной вики и аутлайнера-записной книжки. Как человек глубоко текстоцентричный, без записной книжки обойтись не могу. Почему же именно это? (Еще раз: цель этого текста -- не доказательство того, что "моя любимая программа -- самая лучшая", а исключительно анализ.)

Collapse )

Такой способ визуализации "wiki-контекста" делает его естественной частью самой вики, позволяя использовать для этих ссылок "в разные стороны" те же навыки, что и для прочей навигации по вики, выгодно отличаясь здесь от инструментов вроде Pathaway скриншот, которые так и остаются "интересным дополнительным инструментом анализа". (Чтоб два раза не вставать, todo: написать про использование Википедии с "моментальными аналитическими инструментами")

Все, умаялся. Ну, должно быть уже понятно и так

30+ причин, почему все программисты - шизофреники

(Автор: BinnyVA
Источник: 30+ Reasons Why All Programmers Are Schizophrenics
Перевод: Зверёк Харьковский)


Несколько дней назад я бродил по сети - и вдруг обнаружил, что у меня шизофрения. Нет, никаких галлюцинаций вроде превращения двойного монитора в двуглавого монстра. И вообще никаких галлюцинаций. Я просто наткнулся на страницу с описанием шизофрении. К своему ужасу, я обнаружил у себя все симптомы, описанные на этой странице. Не только я - все программисты, которых я знаю, больны шизофренией.

Прежде чем читать дальше - если вы не в курсе, то вот определение шизофрении из авторитетного источника (Википедия).

Шизофрения — психотическое расстройство, характеризующееся ухудшением восприятия окружающей действительности и значительной социальной дисфункцией. (Википедия)


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

Симптомы шизофрении


Пренебрежение личной гигиеной - проверьте.

Депрессия - нет, у меня ее нету. Но если я прочитаю весь список и обнаружу что у меня шизофрения, наверное, появится.

Причудливое поведение - сидение перед компьютером 15 часов в день считается причудливым поведением? Стопудово!

Иррациональные утверждения - "ActiveX объекты IE XMLHTTP или XMLHTTPRequest (W3C Standard) могут использоваться для AJAX-программирования". Это утверждение не кажется мне иррациональным - но шизофреники редко считают иррациональными собственные утверждения.

Постоянный сон или неспособность спать - проверьте.

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

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

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

Ухудшение общественных отношений - какая часть слова "программист" вам непонятна?

Гиперактивность или неактивность или переключение между ними - бешенное кодирование / ожидание во время компиляции. Что еще сказать?

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

Сильное увлечение религией или оккультизмом - чтобы вы ни думали, Emacs - действительно религия.

Регулярное писание безо всякого смысла - а вы думали, что такое программирование?

Безразличие - когда я за компьютером, мне действительно пофиг все остальное.

Выпадение из общих занятий или вообще из жизни - бывало, бывало.

Падение интереса к образованию и спорту - ненавижу изучать что-либо кроме компьютера.

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

Потеря собственности - я редко что-нибудь теряю, все мои файлы проиндексированы, и находятся на расстоянии одной команды locate. Или одного поиска в Beagle. Что значит "собственность вне компьютера"?

Неадекватная реакция на критику - когда нибудь присутствовали на сеансе code review? "Как ты посмел назвать мой код неэлегантным?! Умри, несчастный!"

Неспособность выражать радость - я неспособен выражать радость, когда модульные тесты падают. И когда работаю с IE.

Неспособность плакать, или постоянный рев - постоянный рев, плач и ругательства - еще один симптом работы с IE

Неуместный смех - слышали гиковские шутки? Да это постоянный "неуместный смех". К примеру, "Монти Пайтон в поисках Святого Грааля".

Необычайная чувствительность к раздражителям (шум, свет, цвета, текстуры) - если вы дизайнер.

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

Злоупотребление наркотиками и алкоголем - кофе считается?

Ослабление - я не слабею, когда программирую - только когда читаю The Daily WTF.

Странные позы - у программистов всего одна поза: L с изгибом внизу - решайте сами, плохо это или хорошо.

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

Бритье головы или тела - без комментариев.

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

Взгляд не моргая или постоянное моргание - да ладно, это просто.

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

Непреодолимое упрямство - "VI - лучший редактор, и ничто меня не переубедит".

Чувствительность и раздражительность от чужих прикосновений - Что?! Обычные люди не раздражаются от чужих прикосновений? Вот это новость.

Специфичное использование слов и странных речевых структур - вы слышали диалоги программистов? Теперь говорят "для меня это все - как язык гиков". Ну, раньше говорили "как язык греков" - но это уже устарело. Теперь говорят "язык гиков".


Да, у меня определенно шизофрения. У меня 33 из 35 симптомов этого списка - достаточно убедительно. Теперь я жду первой галлюцинации в любое время - это должно быть любопытно.