Я в интернете

РСС    Джейсон-фид

Есть автоматические трансляции в Тумблер и Же-же. Если не работает, напишите мне: ilyabirman@ilyabirman.ru.

Избранное

Позднее Ctrl + ↑

Эпл победил

 4 мин

Ну что, Эпл победил.

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

Однако суд на то и суд, чтобы стороны имели равные возможности защиты своих позиций. Это в России «совершенно очевидно» работает как доказательство чьей-нибудь вины, а в странах с судебной системой приходится выслушивать и альтернативные мнения.

Мне нравится Эпл, их подход и продукты, но я не могу сказать, что я полностью доволен результатом этого суда. И, я думаю, присяжным было не так легко принять решение, как кажется.

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

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

Так может, для мира в целом был бы полезнее другой вердикт, даже, может быть, не совсем справедливый по отношению к Эплу?

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

Тогда было совершенно не очевидно, что они всё делали правильно. И компания была далеко не в таком устойчивом положении, как сейчас. Но они верили в свою правоту и сделали серьёзную ставку на Айфон. Вспомнить хотя бы, сколько инженеров внутри компании перешли работать над ним (из-за чего был сильно задержан выход МакОСа 10.5). Даже после презентации Айфона в 2007 году оставалось куча скептиков.

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

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

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

Эгея 2.2

Версию 2.2 в сборке v2668 считаю окончательной, перехожу к работе над версией 2.3.

Коротко новые фичи:

  • текстовые урлы заметок,
  • новый текстовый форматтер Нисден,
  • новый интерфейс ввода тегов,
  • аудиоплеер «Жуэль» в комплекте,
  • автоматический бекап.

Читайте заметки к релизу. Там же — ссылка на документацию для разработчиков тем.

Ещё раз благодарности:

  • Артёму Поликарпову за то, что научил меня САССу и за Фотораму (которая теперь поддерживается в Эгее без проблем);
  • Мурату Шидакову за допил Чоузена до состояния, пригодного для использования в новом интерфейсе ввода тегов;
  • Игорю Васильковскому за скрипт бекапа базы данных;
  • Вадиму Макееву за СВГ-иконки для плеера;
  • Константину Савельеву за форматтер Каллиопе, который работал в Эгее много лет до появления Нисдена (да и всё ещё остаётся в комплекте для заметок, написанных до апгрейда).

Некоторые заметки по теме:

  1. Новый авторский тулбар в Эгее.
  2. Сборка Эгеи 2586.
  3. Сборка Эгеи 2637.
  4. Сборка Эгеи 2662.

О словах sharp и flat

В музыке слова sharp и flat означают диез и бемоль соответственно. Например:

Symphony No. 7 in C sharp minor 7-я симфония в до-диез миноре
Violin Concerto No. 1 in B flat major 1-й скрипичный концерт в си-бемоль мажоре

Интересно, что вне музыки эти слова означают точность и неизменность. Например, можно договориться о встрече at five sharp, и это будет означать «ровно в пять». О биржевом индексе скажут flat, имея в виду, что он не изменился. Как же получилось, что в музыке эти слова означают, наоборот, отклонения на полтона от «основной» ноты?

О том, что sharp — это диез, я знал сто лет, видимо, благодаря языку «Си-диез» (C#). А встречая flat в названиях тональностей, я был уверен, что речь идёт о неизменённой ноте, и удивлялся, зачем же вообще писать это слово. Но однажды моё удивление заставило меня всё-таки заглянуть в словарь.

Добавлено позже: внимательные читатели замечают, что если уж читать # в названии языка как «диез», то и C надо читать не как «си», а как «до». Пожалуй, это хороший аргумент в пользу того, чтобы говорить «Си-шарп».

Десятая симфония Шостаковича

 4 мин

Новое большое открытие — десятая симфония Шостаковича:

Видео надо не только слушать, но и смотреть: поведение и эмоции дирижёра (это Густаво Дудамель) сильно радуют (и вызывают зависть). Кстати, ему тут всего 26 лет.

Первая часть медленная, длинная и сложная. Первые несколько раз я просто проматывал после 2-3 минут, потому что не за что было зацепиться совсем. Слушал я симфонию, кстати, как 5-ю Малера, с конца — сначала понял, что крутая концовка, а потом и всё остальное распробовал.

Возможно, имеет смысл сразу переходить ко второй части (27:30), там движуха. Правда, первые два-три раза эта часть может казаться просто истерическим воплем, но постепенно всё сложится. Она совсем коротенькая.

Третья часть (32:00) начинается спокойно, но в ней есть пара ярких, на мой взгляд моментов. 33:19...34:22, например, кайф, ну а 39:50...40:37 так вообще. Ещё в ней важна концовка (44:10...44:28) — в четвёртой части эти четыре ноты будут особенно важны.

Четвёртая часть (44:45) — праздник. Начало, кажется, не предвещает ничего грандиозного. С 45:20 начинается красивая флейта (ну или что это, я не шарю). Это похоже на начало 5-й части 10-й симфонии Малера — прямо восточное звучание. Дальше эту восточную флейту задавят остальные инструменты, но она будет отчаянно сопротивляться.

Главное начинается с 49:40, дальше нельзя перематывать. В 50:20 вдруг настроение резко меняется, начинается быстрая радостная тема. Она развивается и изменяется в течение следующей минуты (на самом деле там всё разное, но после нескольких прослушиваний понимаешь, что всё сильно связано). В 51:20 всё начинается заново, но со второй попытки она приходит уже к самому сильному месту во всей симфонии — 51:33....54:27. Это просто ни с чем не сравнимый кайф: 52:00! 52:06! 52:11!!! 52:41! 52:52! 53:25! 53:53! 54:08! (обратите внимание, как сквозь всё это пытается прорваться наша «восточная флейта»). В 54:18 это фрагмент заканчивается теми же четырьмя нотами, на которые я обращал ваше внимание в конце третьей части.

Потом всё снова успокаивается — понадобится ещё один «заход» на финал (55:48). Честно говоря, по-моему этот фрагмент уже не такой мощный, как предыдущий, но именно его Шостакович оставил для финала. В 56:08 звучит знакомая весёлая мелодия, в 56:37 — снова самое крутое место всей симфонии, но в несколько урезанном виде, а с 57:10 — многочисленные повторы главных четырёх нот разными инструментами, и потом концовка.

Когда разбираешься в 2, 3 и 4-й частях, смысл обретает и первая. Какой бы скучной она не казалась вначале, теперь я её тоже люблю. Особенно хорошо с 7:15... и дальше с 8:15, 8:53, 9:13, 9:54, 10:11 и до 10:44. Или вот с 12:15 до 14:00. Или с 15:55, например. И дальше в 20:10 снова. М? Как бы так развить слух, чтобы сразу это всё слышать?

Наслаждайтесь! Научил Павел Урусов, за что ему спасибо.

Навигация на сайте Студии Лебедева

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

В разделе «Наше всё» есть подраздел «Графдизайн», в нём — «Проекты студии», и уже внутри него лежит наш пакет. Так?

Нет, не так. Посмотрим, куда ведут ссылки в меню, и на адрес страницы пакетов:

Наше всё /everything/
Графдизайн /everything/graphic/
Проекты студии /everything/als/
Пакеты для кафе /everything/als/gift-bag/

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

Берём приём на вооружение.

Курс «Интерфейсы для айфона»

Сегодня среда, а значит — пришло время рекламы чего-то хорошего и полезного. Слово Тане Мисютиной.

Реклама. Текст предоставлен клиентом

Курс «Интерфейсы для айфона»

9, 10 и 12 августа в Москве мы с ребятами проводим учебный курс «Интерфейсы для айфона». Курс будет интересен дизайнерам любого уровня, которые проектируют интерфейсы приложений для айфона или только планируют этим заняться. И вот почему.

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

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

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

Опыт и общение. Курс проходит в неформальной обстановке: во время кофе-брэйков и обедов участники знакомятся и общаются друг с другом и с инструкторами. Мы, в свою очередь, с удовольствием делимся опытом, разъясняем непонятные моменты, советуем и критикуем.

Грамотные инструкторы. На курсе три преподавателя. Я, дизайнер интерфейсов Таня Мисютина, веду секцию о проектировании, расскажу о принципах хороших мобильных интерфейсов, о приёмах и этапах создания приложений и об инструментах прототипирования. Дизайнер интерфейсов и техдизайнер Антон Ловчиков проведёт часть курса, посвящённую графике и покажет, как нарисовать красивую «шкурку» для приложения. Основатель и руководитель компании «Anyvoid» Юрий Подорожный поделится айос-экпертизой и опытом ведения проектов, объяснит, как грамотно готовить исходники и общаться с разработчиками.

Подробная программа и запись на курс: http://brainwashing.pro/interfaces-for-iphone

Восстанавливаем работу Апача на Горном льве

Обновление до 10.8 вносит изменения в конфигурацию Апача, после чего ваши локальные сайты могут перестать работать. Старый /etc/apache2/httpd.conf инсталлятор оставляет рядом с пометкой previous, поэтому его откатить легко. Всё же я решил внести изменения в новый — вдруг в нём что-нибудь изменилось в лучшую сторону в тех местах, которые я не трогаю. Но вот то, что он удаляет всё из /etc/apache2/users/ — это неприятно, если у вас нет Тайм-машины или другого компьютера с которого можно взять старые файлы.

Вот какие изменения я внёс в новый httpd.conf из 10.8:

  1. Раскомментировал строчку 116:
    #LoadModule php5_module libexec/apache2/libphp5.so;
  2. Раскомментировал строчку 447:
    #Include /private/etc/apache2/extra/httpd-vhosts.conf
    (я использую виртуальные хосты).

А вот как выглядит мой /etc/apache2/users/ilyabirman.conf, который пришлось создать заново:

<Directory "/Users/ilyabirman/Sites/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<Directory "/Users/ilyabirman/Sites/*/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Я не уверен, что тут всё по делу, но с таким конфигом после sudo apachectl restart у меня всё завелось.

Скидка на Гетвеар

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

Реклама

Про мои джинсы

Короче, любимые джинсы приехали ко мне такими:

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

Ну и заклёпки греют душу до сих пор. На других джинсах они какие-то дешёвско-анонимные, будто просто взяли, там, какие нашлись, не запаривась — кого волнует? А то ли дело на Гетвеаре: каждая заклёпочка специально для меня сделана!

Я теперь жду, когда Гетвеар начнёт другую одежду выпускать, потому что я хочу, чтобы у меня всё такое было. Сколько можно терпеть какие попало шнурки на ботинках? Куда это годится, когда пуговицы на рубашках — это просто пластиковые фиговины? Я уж молчу про тёплую одежду всякую, в которой ещё больше всего хочется сделать «правильно».

Про халяву

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

Если вы хотите купить себе крутые джинсы со скидкой, то напишите мне письмо на ilyabirman@ilyabirman.ru с темой «Скидка на джинсы», и я вам вышлю код. Только есть просьба: не берите скидку «про запас», лучше уступите её кому-то ещё, если сами не собираетесь воспользоваться.

Чтобы выбрать джинсы, отправляйтесь на сайт getwear.com. Код вам понадобится только перед самой оплатой, так что вы можете спокойно повыбирать-подумать сначала. Напоминаю, что на сайте можно выбрать готовые джинсы и указать стандартный размер, но я вам горячо рекомендую сочинить себе джинсы самостоятельно и не полениться померить себя по специальному гиду. Так джинсы подойдут идеально (а если нет, Гетвеар перешьёт и пришлёт новые).

Ещё два слова по поводу «пришлёт». Гетвеар перешёл на Федекс. Доставка ЕМС используется только в Белоруссию и туда, куда Федекс не доставляет.

Принцип изолированной оптимизации

 4 мин

Я начал программировать, когда мне было лет 12, и моим первым языком был Паскаль. Компьютеры тогда были медленными и глупыми. Часто приходилось писать фрагменты программ на Ассемблере, чтобы заставить их работать с хоть сколько-нибудь приемлемой скоростью.

Это время приучило меня думать о производительности. Писать код, который делает лишние или бессмысленные вещи, было очень плохо, за это даже на уроках программирования оценки снижали. Так что к каждому куску программы подсознательно задавался вопрос: не зря ли я загружаю компьютер этой работой? Можно ли её избежать?

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

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

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

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

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

Допустим, я делаю сайт, и для вывода главной страницы «в лоб» нужно 18 запросов к базе. Поскольку в голове постоянные мысли о производительности, то я начинаю думать, как бы подсократить число запросов. Естественно, сразу же обнаруживаются места для оптимизации. Оказывается, что если запрос №1 вернул меньше 10 строк, то запросы 2—5 можно вообще не делать, а результаты запросов 10—12 будут отличаться от результатов запросов 7—9 на константу. Если же строк в первом запросе получилось 10, то нужно проверить, нет ли среди них строки X, потому что если она есть, то не нужны уже запросы 6 и 13 (а они как раз самые тяжёлые).

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

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

Давайте применим принцип изолированной оптимизации. Напишем наш код из 18 запросов «в лоб» и наплюём на его неоптимальность. Теперь посмотрим на него со стороны. Как можно сделать, чтобы он работал быстрее, не меняя его?

Самое первое, что приходит в голову — это всё закешировать. При всей очевидности этого решения, далеко не всегда выбираешь именно его, ведь оптимизации «прямо в коде» кажутся такими нужными и важными (а с ними и кеширование, глядишь, не понадобится). Тем не менее, результат кеширования — это изоляция оптимизационной части кода от смысловой.

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

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

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

Лук щипет глаза

Тёма вот задаётся вопросом «Почему лук больше не щипет глаза?». Не знаю, что произошло с Тёмой, но мне как щипал, так и щипет.

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

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

Ранее Ctrl + ↓