Я в интернете

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

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

Избранное

Позднее Ctrl + ↑

Адское такси в Москве

Такси в Москве — это ад. Жутко недоразвитая, средневековая система, построенная на костылях, просто стыд и позор. Дико бесят две вещи: то, что цену поездки ты узнаёшь после поездки и то, что водителю приходится что-то объяснять о маршруте и точке назначения.

Яндекс.Такси — небольшой шажок в сторону чего-то вменяемого, но до удобства тут как до Луны. Во-первых, там какая-то адова куча параметров. Зачем-то мне нужно пытаться угадать комбинацию условий, чтобы быстрее откликнулся водитель. Потом мне зачем-то показывают всех водителей вокруг меня, визуализируя процесс подбора. Это какие-то детали из мира такси, которые мне как пассажиру безразличны совершенно. Мне это настолько же пофигу, как конкретный сервер Гугля, который обрабатывает мой запрос, левая техзаумь.

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

Меня-то в Челябинске бесит, что я должен какие-то деньги физические платить кому-то. Почему не списывать у меня их просто со счёта по прибытии в место назначения? Но по сравнении с Московскими ритуалами по вызову такси — у нас просто сказка.

Текстовые урлы в Эгее

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

Раньше урлы составлялись из дат: у этой заметки был бы урл /2012/08/30/1/, потому что это первая по счёту заметка за 30 августа 2012 года. Проблема таких урлов в полной бессмысленности и незапоминаемости. Более того, из-за того, что в таком урле содержится порядковый номер заметки в дне, чтобы его сгенерировать/разобрать, приходится делать запросы, затрагивающие соседние заметки, и пересчитывать каждую из них с учётом её часового пояса (да, ведь за день может быть написано несколько заметок из разных часовых поясов).

Ещё одна проблема была в том, что если удалить заметку, то урлы написанных после неё в тот же день съедут на единицу вниз. Соответственно, ссылки поломаются. Мало приятного, короче.

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

В результате долгих раздумий я решил, что должно быть так:

  1. Урлы должны генериться автоматически, потому что большинству людей нет до них дела, и лишнее поле в форме написания заметки — это лажа.
  2. Любой язык должен уметь транслитерироваться в латиницу (то есть файл языка помимо всяких слов и предложений должен содержать функцию транслитерации).
  3. Пользователь должен иметь возможность поменять урл, если ему сильно надо, и при этом ссылки на старый адрес не должны сломаться. (Это касается только внутренней инфраструктуры; интерфейса для изменения урлов в версии 2.2 пока нет, потому что её нужно было выпустить, и это не входило в список фич для этого релиза. Тем не менее, важно было сразу под капотом всё сделать нормально, чтобы потом было легко добавить это.)
  4. Выходит, мы должны помнить историю урлов каждой заметки, и знать, какой из них «настоящий» (то есть последний). Все старые урлы должны редиректить (301) на новый.
  5. Урлы старых заметок при переходе на новую версию движка меняться не должны, потому что автор этого не увидит, а автоматически изменять что-то в блоге за спиной у автора — это нехорошо. Вдруг там что-то коряво получится. Я не хочу, чтобы моим заметкам прописались какие-то там непонятные урлы без меня.
  6. Каждая заметка должна знать, под каким урлом она была опубликована изначально — это нужно для того, чтобы корректно работали всякие социокнопочки. Им ведь нужен урл заметки, и они ничего не знают о том, что он может поменяться. Если заметку уже залайкали 20 человек под урлом X, то изменение её урла на Y не должно убить эти лайки.

В итоге я реализовал следующую структуру.

В таблице заметок Notes я добавил поле OriginalAlias — это исходный алиас заметки (название для урла), созданный при её публикации. Если это поле пустое, значит заметка была опубликована до Эгеи 2.2, когда алиасов не было, и поэтому её урл должен по старинке составляться из даты и порядкового номера. Поле OriginalAlias вообще никогда не должно меняться после публикации заметки. Соответственно, у «старых» заметок оно навсегда останется пустым (благодаря нему у них не сломаются социолайки, завязанные на урлы из дат, даже если пользователь их поменяет на текстовые).

Для хранения настоящих урлов теперь есть специальная таблица Aliases с полями ID (ключ), EntityID (ключ заметки в таблице Notes), Alias (сам алиас) и Stamp (таймштамп, когда этот алиас был назначен заметке). Для того, чтобы поменять заметке урл, нужно просто дописать в эту таблицу запись с новым алиасом и таймштампом. Урл заметки формируется из алиаса с наибольшим таймштампом, а все старые алиасы редиректят на новые.

Эпл победил

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

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

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

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

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

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

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

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

Тогда было совершенно не очевидно, что они всё делали правильно. И компания была далеко не в таком устойчивом положении, как сейчас. Но они верили в свою правоту и сделали серьёзную ставку на Айфон. Вспомнить хотя бы, сколько инженеров внутри компании перешли работать над ним (из-за чего был сильно задержан выход МакОСа 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 надо читать не как «си», а как «до». Пожалуй, это хороший аргумент в пользу того, чтобы говорить «Си-шарп».

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

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

Видео надо не только слушать, но и смотреть: поведение и эмоции дирижёра (это Густаво Дудамель) сильно радуют (и вызывают зависть). Кстати, ему тут всего 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. Код вам понадобится только перед самой оплатой, так что вы можете спокойно повыбирать-подумать сначала. Напоминаю, что на сайте можно выбрать готовые джинсы и указать стандартный размер, но я вам горячо рекомендую сочинить себе джинсы самостоятельно и не полениться померить себя по специальному гиду. Так джинсы подойдут идеально (а если нет, Гетвеар перешьёт и пришлёт новые).

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

Ранее Ctrl + ↓