Записки реликта [entries|archive|friends|userinfo]
Latimeria chalumnae

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Qt Creator [Nov. 6th, 2008|10:16 pm]
[Tags|, , , , , ]

Наконец-то!

Trolltech (с недавних пор — подразделение Nokia) выпустила-таки IDE для Qt4. Я, естественно, уже скачал и поставил. Это великолепно! По набору возможностей, конечно, оно куда беднее Eclipse, но, как всякий узкоспециализированный инструмент, свою конкретную задачу решает куда лучше.

А главное, главное, теперь можно с чистой совестью пересаживать на Qt леммингов, органически не способных освоить Emacs и gdb. Все довольны: они получают гламурную среду с умным автодополнением, похожую на их любимый Visual Studio (только быструю и безглючную), мы — избавляемся от необходимости иметь дело с говнодельфи и говноMFC.

Сейчас среда распространяется под ознакомительной проприетарной лицензией, но к моменту выхода первой версии код обещают открыть под свободной лицензией, совместимой с GPL.
Link7 комментариев|Оставить комментарий

Очень верное [Sep. 12th, 2008|12:24 am]
[Tags|, , , ]

Я давно заметил, что русские вообще отличаются иррациональной любовью к странным вещам, типа среды Borland Delphi, операционной системы FreeBSD, браузера Opera, протокола ICQ, поисковой машины Rambler и сайта bash.org.ru

Больно И Стыдно™, соотечественники.

Всё, кроме поисковой машины Rambler (о которой я просто ничего не знаю — крайний раз использовал её, кажется, ещё в прошлом тысячелетии) и bash.org.ru (который я очень люблю) в топе личного hate list'а.

По ссылке из подзамочного поста, так что, наверное, неэтично указывать источник
Link4 комментария|Оставить комментарий

~/.emacs [Aug. 29th, 2008|01:56 am]
[Tags|, , ]

Чтобы не пропало, ну и, может быть, кому-нибудь будет полезно: мой .emacs. Никаких открытий и редкостей в нём, конечно, нет — отчасти из-за того, что я довольно плохо знаю Emacs (кстати, язвительные комментарии от гуру приветствуются), отчасти — из-за того, что в Alt Linux, которым я пользуюсь, Emacs "из коробки" и так ведёт себя гораздо более цивилизованно, чем в RH, Ubuntu, Debian, SuSE и прочих популярных дистрибутивах (например, по умолчанию включает pc-selection-mode).

Я это дело хранил в Google Notebook, но он, сволочь, что-то заглючил и перестал работать, уничтожив горы полезной информации (!@#$% вебдваноль, ага).
Read more... )
Link2 комментария|Оставить комментарий

А вот кому полезность [May. 21st, 2008|10:29 pm]
[Tags|, ]
[Current Music |Emir Kusturica & The no smoking orchestra --- Vasja]

Скармливаем скрипту по адресу
http://www.codecogs.com/eq.latex
выражение LaTeX и получаем картинку в формате GIF с результатом рендеринга:
http://www.codecogs.com/eq.latex?\frac{x^y}{z}
даёт нам
\frac{x^y}{z}

Мегавещь! Авторы молодцы, просто нет слов.

По ссылке от [info]haron@lj
LinkОставить комментарий

Опять про интерфейсы [Apr. 22nd, 2008|01:35 am]
[Tags|, , , , , ]



magius wrote:
ты знаешь как выглядит Идеальный Интерфейс? :)
это ОДНА кнопка с надписью "сделай мне заебись!" :)
Step wrote:
Никаких кнопок. Одна надпись - "тебе уже заебись!"

http://bash.org.ru/quote/52960



Вот интересно, тема "годится ли Linux для десктопа" уже побила по популярности "как нам обустроить Россию" у русской образованной публики?

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

Формулировка совсем банальная; тем более странно, что обычно "хорошим интерфейсом" называют совсем другие вещи.


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


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

Что же обычно происходит на практике?

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

Надо сказать, что именно второго решения пользователи, как правило, хотят ("дайте мне кнопку, чтобы я на неё жал"©один клиент фирмы, в которой я сейчас работаю; см. также эпиграф). Но людям свойственно хотеть совсем не того, что им нужно на самом деле.

В чём проблема с этими двумя подходами?

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

В России, кстати, объяснить, в чём проблема с такими интерфейсами, особенно сложно из-за изобилия пиратского софта. 90% процентов пользователей ставит 90% программ для того, чтобы потыкать в первые попавшиеся меню в течении пары минут и забыть об установленной софтине до её сноса при ближайшей расчистке винчестера; "хорошим интерфейсом" в такой ситуации начинает считаться то, что позволило за эту пару минут получить "крутой" результат. Пользователю, который два раза в жизни запускал пиратский фотошоп, чтобы закрасить "штампом" прыщи на фотографии, и раз в год набивает в ворде заявление на отпуск, очень трудно объяснить, почему интерфейс фотошопа откровенно плох, а интерфейс ворда чудовищен — ну как же, за пять минтут этот интерфейс дал ему то, что было нужно. А с реальными проблемами сталкиваются только те, кто знает, чего хочет, и пытается получить конкретный результат.

Проблемы же эти связаны с тем, что в программе, которая ориентирована на быстрое получение типового результата, можно быстро получить только этот типовой результат. А при попытке сделать что-то осмысленное "интуитивность" и "пологая кривая обучения" куда-то стремительно испаряются, и интерфейс начинает мешать пользователю своей нелогичной организацией, своей неадекватной терминологией, короче, своей далёкостью от того, что реально делает программа. Классический пример: много ли пользователей пользуются стилями в ворде? Думаю, в лучшем случае единицы процентов. А как сделать в ворде список литературы, такой, чтобы при появлении в его середине нового источника все номерные ссылки на источники в тексте оставались корректными? То-то. Сравните теперь с тем, как это делается в "недружественном" LaTeX.

Нет, я не против интерфейса, описанного в эпиграфе. "Дружественный" GUI прекрасен в тех ситуациях, когда надо один раз сделать нетипичное для тебя действие и забыть решённую проблему, как страшный сон. Но, согласитесь, странно затачивать программу под тех, кто использует её один раз, правда?

Мне не нравятся современные стандарты интерфейса именно потому, что из-за ориентации на непрофессионала в ряде областей попросту отсутствуют (или вытеснены в маргинальные ниши) удобные профессиональные инструменты; более того, всеобщее стремление к "дружественности" ПО приводит к тому, что портят уже существующие технологии (из свежих примеров — в новых версиях Linux-систем в /etc/fstab стали пихать UUID устройств вместо их имён; осмысленная ручная правка fstab стала из-за этого практически невозможной; говорить же без мата про вещи типа hal попросту нет никаких сил).

Вот ты, Митя, хочешь, чтобы вайфай в Debian настраивался автоматически при попадании устройства в новую сеть. Это прекрасно, и я целиком и полностью за, с одной оговоркой: это не должно усложнить мне руление интерфейсами через ifconfig и прочие полезные утилиты, а также через редактирование файлов в /etc. Система, в которой логику внутреннего устройства принесли в жертву "дружественности" к пользователю (дружественности к начинающему пользователю, не знающему, чего он хочет, на самом деле), у нас уже есть; все, кому нравится такой подход, могут работать в ней.

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

Мне повезло: для довольно большого круга задач я нашёл средства, имеющие очень приличный интерфейс. Это Emacs для редактирования текстов, в том числе исходного кода; LaTeX для получения текста со сложным форматированием; оконный менеджер Window Maker; эмулятор терминала Konsole; просмотрщик графических файлов GQview; книгочиталка FBReader (список неполный). Про каждый из этих продуктов, я, пожалуй, берусь рассказать, почему он хорош, если это кому-нибудь интересно.

Да, и ещё: не всякая программа с крутой кривой обучения скрывает возможности быстрой и эффективной работы. Бывают и просто плохие интерфейсы, как, скажем, у GIMP или vi.

P.S. А вообще, чего-то я расписался, а можно было дать всего несколько ссылок:

  1. http://www.humanized.com/enso_demo.php  — демо-ролик софтины, обеспечивающей действительно удобную работу в современных графических средах. Кстати, этот самый Аза Раскин, который директор и главный идеолог Humanized — сын Джефа Раскина, благодаря которому Мак на порядок пригоднее для большинства пользовательских задач, чем любая другая настольная ОС; и опирается в значительной степени на идеи своего отца. Посмотрите обязательно, вот что такое по-настоящему удобный интерфейс.

  2. http://www.wagner.pp.ru/~vitus/articles/user-friendly.html Виктор Вагнер. "О вреде дружественных интерфейсов". Примерно о том же, о чём этот пост, но куда убедительнее и грамотнее, да и автор поавторитетнее меня

  3. http://mydebianblog.blogspot.com/2006/10/blog-post_30.html Аллин Коттрелл. "Текстовые процессоры: глупые и неэффективные". Почему WYSIWYG — отстой, и что не отстой.
Link32 комментария|Оставить комментарий

Снова про SVG [Mar. 30th, 2008|02:50 pm]
[Tags|, , , ]

К написанному ночью.

Вообще-то, разумеется, ряд вещей я сделал очень криво, так что пришлось внести пару поправок.

  • Каждый новый кадр анимации тащил с сервера новый файл. Теперь это не так, заодно, кстати, заработала анимация в Опере.

  • Заменил формат фоновой картинки с PNG на JPEG, теперь качать надо в пять раз меньше.


Забавно, конечно, как легко оно всё получается. Таким образом ведь, например, можно делать онлайновые point'n'click квесты в духе незабвенных Gobliiins, которые можно будет размещать на любом бесплатном хостинге, даже самом поганом, только бы он умел отдавать SVG с HTTP-заголовком "Content-Type: image/svg+xml" (а хотя бы даже и нет, встраивание SVG в HTML должно эту проблему решить). Пример аналогичного подхода можно видеть вот в этой программе для презентаций. Более того: можно написать XSL-таблицу, которая будет порождать такие игры из лёгкого человекочитаемого XML с описанием сюжета. А для совсем недружных с головой компьютером даже сделать программу/веб-сервис, которые позволят пользователю сделать игру путём тыкания мышкой.
LinkОставить комментарий

SVG --- сила! [Mar. 30th, 2008|12:21 am]
[Tags|, , , , ]

Точнее, так. Использовать ли продвинутые возможности SVG в серьёзных сервисах — каждый пусть решает сам. С одной стороны SVG это стандарт W3C, он хорошо документирован, отлично подходит для автоматической обработки, легко интегрируется с другими XML-технологиями (XSLT, CSS, об HTML уже не говорю), имеет ясный синтаксис и очень пологую кривую обучения. С другой стороны — разные реализации всё ещё не вполне совместимы, а в IE до сих пор нет поддержки SVG из коробки, нужен плагин. Но что бесспорно — SVG это невероятно кайфовая технология.

Вот этого чувачка, шарящегося по пустыне (осторожно — по ссылке интерактивный скрипт, если он завесит ваш браузер, удалит вашу почту или отформатирует ваш винчерстер, я не виноват!) я сегодня сделал за три часа (включая сюда перерывы на пожрать и почитать френдленту), не имея ни опыта разработки на JavaScript, ни сколько-нибудь глубокого знания собственно SVG. В мануалы практически не глядел, обошёлся примерами: код продуктов на SVG + JavaScript вполне, что называется, self-explanatory. Никаких, тем более платных, навороченных SDK, которые надо изучать неделями: в процессе "разработки" использованы текстовый редактор Emacs, одна штука, и браузер Firefox, одна штука. Но главное — ощущения. Такого соотношения между незначительностью прикладываемых усилий и прикольностью получаемого результата я не помню со времён восьмибитных компьютеров.

Да, разумеется, чтобы увидеть, что же я там наваял, вам понадобятся Firefox или Opera со включённым JavaScript'ом, причём в Опере персонаж не будет анимированным (учитывая качество "анимации", невелика потеря). У меня есть подозрение, в чём там проблема, но сейчас лень разбираться. Пользователи IE, подозреваю, не увидят ничего (не могу проверить за отсутствием под рукой Windoze).

А вот что SVG может вытворять в умелых (а не как у меня, по крайней мере пока, да) руках.

Тетрис: http://croczilla.com/svg/samples/svgtetris/svgtetris.svg
Ещё один тетрис, чуть погламурнее: http://www.codedread.com/yastframe.php
Пасьянс "Косынка": http://www.codedread.com/solitaire.php
Ещё пасьянс: http://www.codedread.com/freecell.php
"Жизнь": http://www.kevlindev.com/alife/life/life_2_0_bw.svg
Поиск стран на неподписанной карте мира: http://files.myopera.com/orinoco/svg/WorldCountries.svg
А здесь вот целый ворох ссылок на SVG-игры: http://torque.oncloud8.com/archives/000473.html

А вот вещи посерьзёнее.
Здесь замечательный сайт о применении SVG в ГИСах: http://www.carto.net/papers/svg/samples/
А здесь статья про GUI на SVG, очень обстоятельная: http://www.svgopen.org/2004/papers/SPARK/

Для тех, кто захочет попробовать что-нибудь сделать на SVG сам, добавлю, что на intuit.ru недавно появился курс по SVG.

P.S. Да, если вдруг кому понадобится — вот все используемые скриптом по первой ссылке файлы в одном тарболле [1M], вот они же без мегабайтного файла с фоновой картинкой [28k].
И ещё: найдётся хоть кто-нибудь, кому захочется дополнительных слов про то, как оно работает, я готов расписать процесс "разработки" (если это слово применимо к двухкилобайтной программе) по шагам.
P.P.S. На всякий случай. Управляется персонаж клавишами со стрелками.
UPD 30.03.08 14:51 Кое-что поправил.
LinkОставить комментарий

Календарное; статья про Linux на десктопе [Nov. 7th, 2007|11:27 pm]
[Tags|, , , ]

С Праздником, друзья!

В журнале у [info]vitus-wagner@lj обнаружил ссылку на статью про то, как сделать Linux более комфортной десктопной системой. Там многое небесспорно, но есть один очень важный пункт, с которым я полностью согласен: если мы хотим, чтобы работа под Linux была для начинающего пользователя комфортной, GNOME должен быть заброшен в максимально далёкую помойку (и, кстати, все приложения на Gtk, у которых есть минимально приличные Qt-шные аналоги — тоже, добавлю я от себя).

Для мигрантов из Винды (которых большинство) есть KDE; для мигрантов с Мака (да! бывает и такое, я даже лично знаком с некоторыми) — BlackBox, Window Maker и прочие NeXT-подобные WM (вообще, именно к ним, как правило, приходит в конечном итоге вообще любой неравнодушный к юзабилити человек; ну или к LarsWM, но это уже вещь не для всех). А GNOME, как известно, расшифровывается как GUI No One Might Enjoy. В статье по ссылке, вообще, Вся Правда об этой среде, почитайте.
Link7 комментариев|Оставить комментарий

λ-экстремизм [Nov. 1st, 2007|01:51 am]
[Tags|, , , , ]

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

В принципе, все управляющие конструкции, кроме лямбды — это синтаксический сахар.

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

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

Может, стоило всё-таки делать курс на основе Scheme? Хотя это была бы жесть, да… к тому же для Scheme, увы, нет GUI-библиотеки, хотя бы сравнимой с PyQt4.
Link3 комментария|Оставить комментарий

navigation
[ viewing | most recent entries ]