яндекс
Привет из прошлой жизни
Вчера разбирали старые бумаги, нашли привет из прошлой жизни — когда мы жили в Москве, а я работал в «Яндексе», ещё в старом офисе — на Таганке. В конверте каталог компании Lush,
Деньги начала эры интернета
Бережно храню артефакт конца нулевых — карточку «Яндекс.Денег» на пять тысяч рублей. В то время я работал в «Яндексе» и, несмотря на то что «Яндекс.Деньги» были «отдельным государством», на ресепшене, если ты сотрудник, можно было купить их карточки без наценки, чем через меня пользовались многие мои друзья.
Эту карточку я тоже купил
Такие карточки нужны были, чтобы положить деньги на счёт специальной платёжной системы — она позволяла делать покупки в интернете, как и более популярный международный аналог — «ВебМани». Банковские карты ещё не настолько вошли в обиход, хотя уже тогда было очевидно, что они вытеснят такие
Список изменений «Яндекс Go»
Я смотрю, человек, который описывает список изменений к приложению «Яндекс Гоу», вообще не напрягается:
Капча и архивы
Я работаю в компании, которая производит своё решение для электронного документооборота и много лет назад мне пришла в голову идея, относящаяся к нему, которая так и не пригодилась. Она мне до сих пор нравится, поэтому хочу ей поделиться.
Если вкратце, то кроме печатных документов в документообороте разными путями оказываются и рукописные тексты — в основном их пишут граждане, но это могут быть регистрационные или другие пометки на документах пришедших на бумаге.
Несмотря, что сейчас есть решения, сносно распознающие рукописный текст, но человек с этой задачей,
Идея было в том, чтобы показывать рукописные кусочки этих документов людям как капчу или для подтверждения
В прошлом «Гугл» и «Яндекс» уже распознавали таким образом куски печатного текста и номера домов, почему бы то же самое не сделать с рукописным текстом? Тем более у «Яндекса» есть прекрасный, очень нужный сервис «Поиск по архивам», позволяющий искать по автоматически распознанному тексту. Можно было бы улучшить качество распознанного текста за счёт капчи.
Ужасный поиск «Яндекс.Маркета»
Иронично, что «Маркет»,
«Яндекс»
Удивительно, но спустя столько лет мне, оказывается, всё ещё снится «Яндекс». Сегодня просыпался ночью попить водички, поэтому сон запомнился,
В этот раз снилось, что я сижу на своей текущей работе, в офисе и вижу рекламный видеостенд, который сломался. В последовательности слайдов, которую он показывает, с последним кадром
Интересно, что во сне был определённый коллега, с которым я почти и не общался в реальной жизни. Кстати, он совершенно не постарел за прошедшие десять с лишним лет.
Во сне оказывается, что у меня есть доступ к интранету «Яндекса», которым я иногда пользуюсь. Поэтому я без труда нахожу этого коллегу
«Яндекс.Go»
Интересно наблюдать как суперприложения приходят на мобильные платформы. Они настолько давно на десктопах, что люди про них уже забыли (помните риторический вопрос — «кто первым операционную систему выпустит — ACDSee или Nero»?). Как и в случае с мобильным суперприложениями, тогда это тоже многих возмущало, хотя были такие, кому нравилось.
Отдельной строкой хочу вспомнить браузер «Опера», ещё тогда не китайский, в котором в разные годы появлялись мессенджер, почтовый клиент,
Я плохо знаю, что сейчас происходит в мере «Виндоуз», но на «Маках» суперприложений не видел уже много лет, не прижился формат. Интересно, приживётся ли в смартфонах.
Прочитал на «Интерфаксе», что «Яндекс» выкатит новое суперприложение, для быстрого решения городских задач — в основном, поесть и поехать. Надо будет попробовать, может и удобно будет, но я хочу понедоумевать по поводу названия. Называется оно
Мне совершенно непонятны причины такого названия.
Где теперь описания из «Яндекс.Фоток»
Я был довольно активным пользователем «Яндекс.Фоток» и очень расстроился, когда сервис закрылся. Со стороны «Яндекса» очень благородно, что фотографии переложили на «Диск» вместе с выделением под них места, но кроме фотографий меня очень интересовала сохранность другой информации. Блог «Яндекса» обещал, что ничего не пропадёт.
В частности у меня на «Фотках» была собрана коллекция фотографий кирпичных клейм Казани с указанием в описании где именно встретилось каждое и я не на шутку всполошился, когда не нашёл в интерфейсе «Диска» места, где можно посмотреть описание.
Спасибо бывшим коллегам, объяснили. Оказывается нужно зайти в «Архив» → «Яндекс.Фотки» и в меню конкретной фотографии выбрать пункт «Описание с Яндекс.Фоток».
Конец «Яндекс.Фоток»
Не понимаю что за отношение у «Яндекса» к сервису «Фотки». На момент своего появления это был добротный сервис, который выгодно отличался ото всех остальных отсутствием лимитов — можно было заливать фотографии в исходном качестве и не было никаких ограничений на их количество.
Для меня это было
Потом «Фотки»
Я надеялся, что в «Яндексе» возьмутся за голову, переделают, обновят.
И вот «Фотки» закрывают. Фотографии переезжают на «Диск», свободное место при этом не уменьшится — большое спасибо, правда, хоть это и не безлимит, конечно. Не знаю что станет с аннотациями, с привязкой к карте, с комментариями — для меня эта информация очень важна, но без понятия как её вытягивать, писать
«Чистый веб» Яндекса
У «Яндекса»
Остался ли там
«Яндекс.Пробки» в Казани
Третью неделю езжу с приложением «Яндекс.Карты» в Казани, чтобы посмотреть помогут ли мне «Яндекс.Пробки» быстрее добираться до работы. Вывод неутешительный — точность информации, как у прогноза погоды осенью — ну да, возьмёшь зонтик, вряд ли ошибёшься, но ведь и солнце
Стойкое ощущение, что в казанских «Пробках» не учитывается никаких источников данных, кроме пользовательских устройств (когда вы пользуетесь приложением для «Карт», приложение пользуется вами — передаёт «Яндексу» как быстро вы двигаетесь на этом участке).
Например, вчера я ехал по мосту «Миллениум», на котором была грандиозная пробка, прямо за моим указателем положения дорога на глазах «краснела».
Исправить ситуацию можно следующим образом.

Город условно делится на две части — левый берег и правый берег реки Казанки. Больша́я часть казанцев ежедневно пересекает реку в обеих направлениях, а сделать это можно строго по одному из четырёх мостов Казани (слева направо) — Кировский дамбе, Ленинской дамбе, мосту Миллениум и Третьей транспортной дамбе (сейчас последняя перекрыта, но работает её дублёр).
Мосты очень важная штука, там необходимо поставить по камере, причём камеры хватит одной, мост смешная вещь — с него машине в середине пробки некуда свернуть, так что если в середине затор, то и по всей протяжённости тоже затор.
Далее, к Универсиаде 2013 года Казань строит кучу двухуровневых развязок, часть важных дорог (а зачем строить развязки на неважных дорогах) перекрыта, но город, увы, не позаботился о дублёрах, поэтому автолюбители сами нашли объезды, кажется, самая болезненная ситуация перед Миллениумом — прямой выезд перекрыт и там часто пробка, но исключительно важно знать действительно ли она сейчас там есть, так как от этого зависит решение стоит ли вообще ехать через Миллениум. Напоминаю, что мосты (Миллениум — это мост) — важная штука.
В общем, вывод такой — надо работать с местными водителями и выяснять какие дороги являются основными и где заторы возникают часто, а пока информация сервиса никак не помогает ориентироваться в пробках, точность очень низкая.
Специальный вид «Яндекса» для speeddial «Оперы»

Я рад, что явился катализатором в «Яндексе» появления визуальных закладок для «Оперы» (для плагина FireFox «SpeedDial» тоже будет работать).
Проект «Погоды» я даже поменеджерил.
К сожалению, пока нет технической возможности делать то же самое для «Хрома» и «Сафари», так как использовать media queries (как для «Оперы» и FF) не получится, браузеры на WebKit ведут тут себя нелогично, нужно проверять особый
«Переговорки»: панихида
Проект «Переговорки» — внутренний
Используется он теми, кто не может установить себе Outlook — ребятами с «Маками» и разнообразными «Линуксами» (а таких очень много). Кроме того, что от Exchange мы будем постепенно уходить, а интерфейс бронирования останется без изменений.
Никогда я ещё так не выкладывался, так не радовался, не расстраивался, не оставался с таким упорством допоздна в офисе. Звучит просто — вытаскивать время от времени данные из Exchange и отсылать обратно новую бронь. К сожалению, MS Exchange, который использовался тогда в компании, не умел общаться с внешним миром никак иначе, кроме протокола MAPI — бинарному исчадию ада, причём не просто через MAPI, а через так называемый MAPI через RPC — диалект
Помню, первое, что пришло на ум использовать — impacket, модуль для Python, который позволял работать с «сырыми» пакетами, но к нему не было документации, а примеров в сети нашлось всего ничего — несколько эксплоитов и только. Впрочем, разобраться
Из бесплатных библиотек уровнем повыше нашлась
Это и положило начало проекта «Переговорки».
Процедура компиляции оказалась весьма нетривиальной, собиралась только версия из транка, и та только с моими правками. Ещё сложнее оказалось разобраться с утилитами, которые требовалось запустить после исталляции, но и эту проблему удалось победить, собрав скудные крохи по форумам и написав несколько писем разработчикам. Позднее Сергей Белов сумел установить появившийся свежий
Через несколько дней после того как я в первый раз скомпилировал libmapi, тестовые утилиты на Си благополучно подключились к Exchange и уже умели отпределять дают им правильные данные для авторизации или нет. Эти несколько дней ушли на то, чтобы разобраться как создавать профиль, как настраивать библиотеку и Samba4 для работы и так далее. Оставалось
1275 строк основного модуля, 647 строк файла описаний структур MAPI, 4046 констант, 457 строк для описания
Ничего, пара дней корпения над бинарной распечаткой с последующими уточнениями в противоречивой документацией от Microsoft и я написал класс, который такие встречи умеет разбирать. Впрочем, это было уже позднее, а сначала надо было догадаться что делать после логина. Из документации у libmapi — только перечень функций и исходники на Си. Пришлось внимательно просматривать первое и читать второе. Тут нельзя не упомянуть Сергея Андрюхина, несколько очень ценных его идей и исследований вошли в тот код. Кстати, местами исходники на Си написаны так плохо, что приходилось упрощать код — не всё, что можно позволить себе в Си, можно позволить себе в менее шустром «Пайтоне».
Разобраться с порядком вызова этого великолепия было непросто, плюс ещё множество более мелких проблем, вроде странного формата хранения времени (Exchange хранит число минут с 1 января 1601 года). Плюс утечки libmapi, которые пришлось изолировать, решать проблему с передачей данных в родительский процесс, мучаться с Python 2.4, который, как оказалось, никогда не освобождает память, выделением памяти на куче «про запас» через Python API (спасибо ctypes), определением по косвенным признакам, что память закончилась, пора отдать данные в родительский и умереть, и так далее.
Сначала мы научились читать freebusy информацию — просто даты и время, когда переговорка
Класс пережил четыре рефакторинга, например, я обернул некоторые структуры классами с деструктором, чтобы было проще следить за памятью (так как ctypes работает с бинарным кодом за памятью приходилось следить самостоятельно), что, правда, всё равно не спасло от всех проблем — структуры, в некоторых случаях, нужно было уничтожать в строго определённом порядке.
Спасибо Саше Покатилову, который правил мой код, пока я был в отпуске и занимался
Наверняка я не помню ещё массу сложностей, которые мы решали, например, я совсем не рассказал как мы отправляли бронь встречи по протоколу SMTP, как долго я готовил разные версии письма
Думаю, если попробовать вспомнить всё, хватит на небольшую книгу… Я рад, что эту невероятную задачу удалось решить. С моей стороны, как мне кажется, это 100% моей «мощности» как программиста. Будущее покажет, но пока все задачи я буду оценивать по этой.
К счастью, в новом Exchange, который появился у нас в компании, появилась поддержка SOAP и «Переговорки» переделали с использованием этого протокола. Есть предварительное согласие на выкладывание модуля, который у меня тогда получился в интернет. Пожалуй, сейчас он бесполезен (хотя, может авторы libmapi запрограммируют на его примере чтение повторяющихся встреч, попробую им его кинуть), но пусть он всё равно полежит у меня, как памятник полугоду моей жизни.
TestLink
Время от времени занимаюсь модификацией используемого внутри компании инструмента «TestLink». Сложная задача — приделать к нему ЧПУ (TestLink целиком на фреймах, у него не то что ЧПУ,
С задачей справился чуть менее, чем полностью — осталась пара мелочей, а в пятницу по половины одиннадцатого вечера боролся с деревом
Осложняется всё тем, что дерево снаружи недоступно (изолируется внутри функции), а менять
function fireEvent(element, eventname){
if (document.createEventObject){
return element.fireEvent('on' + eventname, document.createEventObject())
} else{
var event = document.createEvent("HTMLEvents")
event.initEvent(eventname, true, true)
return !element.dispatchEvent(event)
}
}В итоге получилась дикая вещь — когда человек вводит этот самый понятный ему URL, браузер спрашивает у сервера путь по дереву, получает его, по таймеру долбит дерево в плюсики (дерево грузит каждый узер через AJAX), чтобы развернуть каждый узел по пути следования к test case, а когда добирается до цели, таймер тушится.
Такие развесистые клюквы там приходится программировать на каждом шагу. Зато все URL абсолютно понятны пользователю и роутинг правится очень просто.
Добавлено 8 декабря 2009 0:41: потом я переписал всё на чистом ExtJS, воспользовавшись getCmp, expandPath и внутренней реализацией fireevent, но код всё равно тут оставлю — пригодится.
Yandex.ru.
Две ссылки: http://yandex.ru и http://yandex.ru. Я не знал, что так можно. Век живи, век учись. Кстати, FireFox 3.5 загружает всё правильно, но конечную точку отрубает, поэтому после перезагрузки страница меняется.
Измеритель удара
У нас в «Яндексе» много всяких интересных штук на этажах. Сегодня нашёл
В общем, прямой удар правой без разминки — 185 кгс. Больше я не сделаю — суставы протестуют. В принципе, это неплохо, но есть к чему стремиться, если я, конечно, надумаю стремиться.
Модуль XScript для PHP
Писал для PHP биндинг в XScript. Си++ я не знаю (и знать не хочу), поэтому писал на Си. Огромое спасибо Antony Dovgal за помощь, без него я бы ещё долго разбирался как писать модули для PHP на Си внутри вражеского Си++, с его же помощью причесал
Что я хочу сказать. Опыт, конечно, полезный, но грустно, что сейчас, как и несколько лет назад (когда я писал первый модуль), практически нет документации о том как писать модули, не говоря уже о хороших, обзорных статьях, где все шаги были бы расписаны и рассказано было бы что и зачем делается.
Чистого времени я потратил половину дня (вместе с хождением по «Яндексу», перепиской, установкой пакетов XScript и прочее — ещё 1,5 дня), но это только потому, что Тони согласился помочь (и у него был опыт написания Си++ модулей на Си на примере биндинга к архиватору RAR, который мы и разбирали).
Думаю, этим и объясняется небольшое количество бинарных модулей на PHP, а так же их низкое качество. Жаль.
Интранет-вики
Мнение о том, что использование
Дима Смирнов уволился из «Яндекса»
Ничего не предвещало…
Многим известный Дима Смирнов уволился из «Яндекса» по собственному. Куда уходит отказывается, зараза, говорить.
Если Магомет не идёт к горе
Работа, устав ждать, когда я перееду к ней поближе, переехала поближе сама, т. е. гора пошла к Магомету. И что, Scheiße, я стал приходить на работу пораньше? Нет, я стал из дома выходить попозже.
Ребята, я щас буду.