Избранное

Позднее Ctrl + ↑

Про перевод Эгеи на английский

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

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

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

Сила освобождения

У Антона Ловчикова есть заметка «Принцип песочных часов», где он рассказыват как любой человек, в частности, дизайнер, проходит три этапа профессионального развития. На первом этапе он полностью свободен и делает что хочет. На втором он, начитавшись именитых авторов, начинает фанатично следовать всем правилам. На третьем — снова освобождается.

И если кто-то слишком догматичен, а кто-то слишком раскрепощён — это не значит, что он враг и глупец. Просто вы на разных ступенях развития. А кто-то так же догматичен, как и вы, но как-то по-другому, в другой традиции. Вы ссылки принципиально подчёркиваете, а он принципиально нет, да ещё и постоянно этот дурацкий однопиксельный дропшадоу к тексту применяет :-) Все разные, но итог для всех один — освобождение и свобода, просто кто-то достигнет его раньше, а кто-то чуточку позже.

Антон не пишет, кажется о самом главном: о движущих силах выхода из второй стадии.

Один дизайнер рассуждает: «Я уже столько лет читаю всех этих умников, а я сам чем хуже? Мало ли, что они считают правильным. У меня опыта хоть отбавляй и клиенты в очереди стоят, и вообще мой дизайн стоит X. Пошли они все к чёрту, буду делать как мне нравится». И начинает делать как ему нравится, думая, что просветлился.

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

Многопользовательские геджеты

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

Но чтобы такая вещь появилась, нужно понять, в чём её полезное действие и для кого. Одних лишь рассуждений «а нехило было бы» недостаточно, рынок так не работает. Вот есть производители устройств. Им выгодно продавать как можно больше этих устройств. Кому-то, возможно, могло бы хватить и одного семейного Айпада на двоих-троих, если бы можно было мгновенно переключаться между пользователями, но благодаря тому, что такой возможности нет, каждый покупает собственный.

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

Да, и это я ещё говорю про Айпад, где это ну хоть как-то можно понять, а Тёма-то вовсе про Айфон. Там-то совсем странно. Как можно иметь с кем-то, даже очень близким, общий телефон? Как же тогда я ей позвоню? Что же касается сценария «дать посмотреть», то это просто решается кнопкой «Дать посмотреть», которая временно прячет мои фотки и эсемески. Но городить из-за этого целую систему пользователей — это настолько из пушки по воробьям, что страшно.

Я скорее ожидаю, что разделение на пользователей даже в «больших» компьютерах рано или поздно отомрёт (на уровне интерфейса). Это явный пережиток прошлого.

Всё развитие компьютерной индустрии наоборот идёт в сторону персонализации устройств, и люди всё больше относятся к геджетам соответствующим образом. И даже перенос всего в «облако», который вроде бы должен эти геджеты деперсонализировать, работает на то же самое: под каким ты пользователем залогинен на данном компьютере — наплевать, важнее — как ты зашёл в Гугль, Дропбокс, Эверноут или Айклауд.

Новые правила Гугля

Гугль рассказал всем своим пользователям о том, что с 1 марта вступят в силу новые правила конфиденциальности и условия использования их продуктов. Главное, о чём все говорят — это то, что по новым правилам сервисы Гугля получают право обмениваться вашей информацией между собой. Некоторые встретили изменения негативно. Усилились упрёки Гугля в том, что он перешёл на сторону Зла. Меня трудно заподозрить в особых симпатиях к Гуглю, но в данном случае я приветствую и сами изменения и то, как Гугль о них предупреждает.

Сейчас Гмейл показывает мне рекламу только на основе моей переписки, но не учитывает, какие блоги я читаю в Гугль-ридере и какие ролики смотрю на Ютюбе. В будущем реклама станет релевантнее. Возможно они даже станет полезной, и я смогу ей воспользоваться. В этом случае я не вижу ничего дурного в том, что он заработает на мне денег. То, что раньше Гугль охранял мою информацию от самого себя, понижая качество своей работы, было явным недоразумением. Это же просто железные машины, какой смысл от них что-то скрывать? С 1 марта восторжествует здравый смысл, это хорошо.

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

Айбукс 2 и новое образование

Эпл сегодня переизобрёл образование. Они приглашали на сегодняший эвент как-то полуневсерьёз, и я даже умудрился про него забыть. Ну, что может быть интересного в эвенте, посвященном образованию? Скидки на Айпад для студентов?..

Олег Андреев точно пишет:

Today’s Apple announcement is just one more achievement of the human civilization, in addition to iPad, Android, Windows XP, World Wide Web, printing press and alphabet.

Я всерьёз хочу помолодеть на 15 лет и пойти в школу, потому что всё, что они показали сегодня, просто запредельно круто. Времени на Айтюнс-Ю не хватает всё время, а тут он стал в 100 раз интереснее вдруг, ну как же так? И мне уже страшно от того, что Эплы делают всё. Где все остальные? Где хоть один конкурент? Ёлки, проснитесь уже.

О чистоте кода

Нам пишет Алексей Чикин:

Хочу задать вопрос именно тебе, как человеку, который сделал Е2. Что важнее, сделать готовый продукт такой, чтобы был прост в обращении, красив, удобен, но при этом сделать его так, как умеешь, без использования всех этих современных паттернов проектирования, замудростей с объектно-ориентированным программированием и выпиливании внутреннего кода до совершенства, или же надо сделать, чтобы всё было кошерно, чтобы код удовлетворял всем современным требованиям?

Просто у меня дилемма. Я сделал нечто, что мне нравится, но я сделал это так, как я умею. И мои умения далеки от гуру-программирования. Стоит ли это нечто представить публике или всё таки убить какое-то время на изучение и рефакторинг кода?

То есть вопрос в следующем. Важно что там и как внутри устроено или результат важнее?

Смотрите, что является вашим продуктом? Код или полезное действие, который он обеспечивает? Я не даю исходники Эгеи, потому что продуктом является сам движок, а не его код. Бывает, конечно, наоборот: если вы делаете какую-то опенсорсную библиотеку, то сам код и является продуктом. В этом случае, несомненно, важно, как он устроен внутри. Но в большинстве случаев пользователи не взаимодействуют с кодом вообще никак и никогда, и поэтому его внутреннее устройство не имеет значения.

Но всё не так просто.

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

Эгея вышла только этим летом, потому что я посвятил предыдущие три года приведению в относительный порядок её кода. Это немыслимо длительный срок для обновления программы, даже для некоммерческого проекта выходного дня. Сейчас мне намного проще добавлять разные плюшки благодаря проделанной тогда работе. Если бы я лучше писал код 8 лет назад, сегодня Е2 как продукт был бы в сто раз лучше, чем есть.

Или вот Биатлонтайм. Там совершеннейшая, беспросветная жесть под капотом. Потому что всё приходится программировать очень быстро. Вдруг оказывается, что судьи добавили кому-то 20 секунд времени штрафа согласно правилу такому-то, а код сайта не знает о том, что так вообще может быть. Приходится делать через жопу, прописывая исключение прямо в коде, потому что результаты публиковать надо прямо сейчас, и это важнее красоты кода. А вот заставлять себя потом привести всё это в порядок удаётся не всегда, и это уже мне мешает добавлять новые штуки на сайте.

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

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

Женские сумки

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

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

Чтобы женщина захотела сумку, необходима несуразная и достаточно ненадёжная конструкция для закрывания; висящий непойми как ремешок, который необходимо периодически поправлять; непропорционально длинные ручки, чтобы сумка практически волочилась по земле; металлические заклёпки или даже уголки по бокам, рельсы снизу. Желанность сумки вдвое повышает торчащая далеко за пределы самой сумки своими висящими концами молния.

Когда женщина покупает новую сумку, происходит следующее. «Ни с эстетической, ни с прикладной точки зрения в этой сумке нет ничего хорошего», — рассуждает мужчина. «Вау, у тебя новая сумка!» — кричат подруги, увидев её в руках очередную неуклюжую конструкцию, — «Какая классная!»

Отложить звонок

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

В почте всегда можно пометить письмо как непрочитанное, хочется такого же в пропущенных звонках. Но это, конечно, было бы странно. Особенно помечать так звонок, который состоялся. И если ещё и ты сам звонил, а не тебе.

Но вот реально нужна возможность «отложить» звонок. То есть жмёшь «отложить на час», а через час телефон говорит «Дак чё, позвонить Васе?». Естественно, всё это должно быть завязано на Ремайндерс, чтобы напоминалки синхронизировались и поддерживали геолокацию. «Отложить звонок до вечера, когда вернусь домой». На Айфоне 4С эту задачу, похоже, решает Сири, но как быть простым смертным с первобытными аппаратами?

Промо-микс: Хочу назад

На каникулах сделал новый промо-микс. Теперь слушать его можно прямо тут:

Давно хотел сделать техновый микс, и вот сделал. Микс, как и все другие мои миксы живёт на Промодиджее и у меня в музыкальном разделе.

Плеер вроде стал понадёжнее работать. Про то, как прикрутить такой плеер, тоже скоро расскажу. Как нетрудно догадаться, тут тоже без Нисдена не обошлось.

Нисден, Ютюб и Фоторама

Вчера я писал про Нисден, новый форматтер в Е2, и упоминал, что он расширяемый. Сегодня я выложил более свежую сборку Эгеи (v2535) с более свежей версией Нисдена в ней. Теперь можно расширять. Например, я вот Фотораму прикрутил:

Сейчас объясню.

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

Нисден лежит в Эгее в папке /system/neasden/. А в подпапке /extensions/ лежат расширения для вставки картинок, таблиц и всего такого. Каждое расширение определяет с помощью регвыражения типы строк, которые его интересуют, и группы, которые оно умеет отображать.

Посмотрим, например, на youtube.php. Там определяется строка класса youtube как строка, состоящая из урла видика на Ютюбе, а потом группа youtube как строка youtube и любое количеством простых текстовых строк (p) за ней. После чего идёт функция, которая превращает это дело в ХТМЛ. В результате чтобы вставить кино с Ютюба теперь достаточно просто вставить в отдельной строке ссылку на ролик. Аналогично там с Вимео.

Расширения, лежающие в /system/neasden/extensions/ идут в комплекте с Эгеей, но добавлять в эту папку свои не нужно, потому что при обновлении движка папку /system/ целиком заменяют на новую. Свои расширения кладут в /user/neasden/extensions/.

Как прикрутить Фотораму? Вот так:

  1. Скачать расширение для Нисдена и положить в /user/neasden/extensions/.
  2. Скачать саму Фотораму с её сайта и положить в /user/neasden/extensions/fotorama/.
  3. Положить в /user/neasden/ файл config.php следующего содержания:
<?
  $_neasden_config = array (
    ’__extensions’ => array (
      ’fotorama’,
    ),
  );
?>

Теперь несколько подряд идущих строк с названиями файлов картинок будут превращаться в Фотораму. Если нужно, чтобы они были отдельными картинками, разделите их пустыми строками. Если разберётесь, как устроено расширение и почему оно работает, то сможете сделать свои по аналогии. Клёвые расширения присылайте мне. Вопросы и замечания — тоже.

Хочу обратить ваше внимание на то, что Фоторама не является частью Эгеи и не поставляется вместе с ней, поэтому правовые вопросы её использования вам нужно решать не со мной, а с Артёмом Поликарповым (его координаты есть на сайте Фоторамы).

Ранее Ctrl + ↓