Позднее Ctrl + ↑

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

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

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

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

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

Пара фоток из Москвы

Шереметьевский автобус радует точным переводом плохого русского:

Попробуйте найти в этом списке аэроэкспресс в Москву:

На Белорусской только я седьмой год наблюдаю непрекращающийся ад под названием «временные неудобства»:

Не понял:

У нас в Москве куда показывают, туда и поворачивают (см. также третье кольцо налево):

Ещё одна удивительная московская фишка — «предбанники» за решёткой в подъездах:

Что почитать на выходных — 26

Вот что:

  1. Definitive answer to message-eating nil argument. Олег Андреев объясняет, почему клёво, когда отправка сообщений несуществующему объекту (nil) не должна быть ошибкой. Мне всегда нравилось, что в Какао это так.
  2. iPhone: The bet Steve Jobs didn’t decline. Почему заняться Айфоном было очень непростым решением для Эпла.
  3. Giant. Гай Инглиш про Нила Армстронга.

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

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

Раньше урлы составлялись из дат: у этой заметки был бы урл /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 (таймштамп, когда этот алиас был назначен заметке). Для того, чтобы поменять заметке урл, нужно просто дописать в эту таблицу запись с новым алиасом и таймштампом. Урл заметки формируется из алиаса с наибольшим таймштампом, а все старые алиасы редиректят на новые.

Четыре дизайнерских вакансии в бюро

У нас-то четыре дизайнерских вакансии в бюро:

  1. Артём Горбунов ищет графического дизайнера. Это потому что мы открываем графический контур.
  2. Коля Товеровский ищет боевого дизайнера.
  3. Я ищу любопытного дизайнера.
  4. Ещё я ищу самостоятельного дизайнера. Не знаю, может таких не бывает, но вдруг бывает, тогда я буду страшно рад познакомиться.

Приходите к нам работать дизайнерами! У нас хорошо (лучше всех).

Пунто и лишняя американская раскладка

Две новости про раскладку:

  1. Яндекс выпустил свежую версию Пунто для Мака, она дружит с Типографской раскладкой 3.0. Спасибо Сергею и Ивану Москалёвым!
  2. Артём Поликарпов нашёл, как выключить невыключаемую американскую раскладку, которая некоторым мешает, а Женя Степанищев автоматизировал процесс. Только делайте это на свой страх и риск, пожалуйста.

Ура.

Эпл победил

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

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

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

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

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

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

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

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

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

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

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

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

Что почитать на выходных — 25

Ох, много всего:

  1. Mars Curiosity Rover Team Spills Mission Details On Reddit. Статья на основе интервью с командой марсохода «Любопытство». Много интересных деталей, например то, что они живут и работают по марсианскому времени (на Марсе сутки очень близки к земным), чтобы максимально эффективно использовать для работы световой день. Заодно посмотрите крутейшую визуализацию посадки марсохода.
  2. Зачем исследовать космос? Ответ одного из высших руководителей НАСА на вопрос о том, как они могут тратить миллиарды долларов на исследования космоса, когда в Африке дети недоедают.
  3. Pointless exercises. Макалоп в ударе. «Armageddon? Or worse, the movie Armageddon? OH, GOD, WHAT IF IT’S THE MOVIE?!». «Also, Apple uses an inherently unfair system call „capitalism“ that benefits the bourgeoisie at the expense of the proletariat!»
  4. Итоги «Пусси райот». Леонид Каганов составил таблицу отношения известных людей к приговору «Пусси райот». Правда, достоверность неясна, например, увидел там Тёму Лебедева в списке «Просили о помиловании», а он вообще по этому поводу не высказывался по приведённой ссылке.
  5. Квебекские ругательства. Рахим Давлеткалиев (на которого вам обязательно надо подписаться) рассказывает, как правительно материться по-французски, если вас занесёт в Квебек.
  6. Why Waiting Is Torture. Всё про ожидание, что нужно знать дизайнерам.
  7. Важная шишка. Почему детские площадки не должны быть чересчур безопасными.
  8. The 9 Most Ridiculous Moments of the Apple vs. Samsung Trial. Подборка смешного с суда.
  9. Black Widow. Дастин Кертис анализирует последние изменения в политике Твиттера. Кстати, подробнейший разбор истории с Твиттером, и особенно их идиотского поста в блоге, слушайте в 81-м выпуске подкаста Джона Сиракьюсы.

Эгея 2.2

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

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

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

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

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

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

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

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