Как меня не позвали в Яндекс на собеседование

В конце прошлого года один из сотрудников Яндекса нашел меня в “Моём Круге” (а где же ещё им искать сотрудников?) и, так как у меня указано в специализации “Perl-программист”, предложил рассмотреть вакансию Perl-разработчика в Яндексе. Со времен заполнения профиля в “Моём Круге” прошло достаточно много времени, я уже давно пересел на PHP и программировал на Perl’е достаточно редко и в специфичных задачах. Однако, давняя мечта работать в Яндексе в тот момент все ещё витала (и витает до сих пор) в моей голове, поэтому я решил попробовать свои силы. Но с другой стороны, туманная перспектива переезжать в Москву и увольняться с текущей работы совершенно не радовала. Не люблю я Москву. Работа у меня в моем городе очень хорошая. Нужно будет программировать на Perl. Родственники опять же, друзья. Зарплата примерно такая же (если вычесть аренду жилья).

“Поехали!” – сказал я Денису (назовем его так) и отправил ему свой E-mail. Ждать пришлось недолго.

Денис 14.11.2011

Антон, добрый день!

Мы хотим предложить вам решить следующую задачу.

Реализовать специализированный crawler, сохраняющий “фавиконки” (http://ru.wikipedia.org/wiki/Favicon) сайтов.

Входом для программы является текстовый файл, содержащий домены для обхода (по одному на строке), и название директории для сохранения результатов.

Требуется определить правильную иконку для каждого из файлов, с учетом де-факто стандартов (/favicon.ico, указание ссылки в теле документа), скачать ее, если она доступна, конвертировать в общий для всех формат (PNG, при необходимости – с альфа-каналом), и сохранить в указанной директории, под названием типа www.example.com.png.

Дополнительно: на всех этапах общения с сайтами нужно поддерживать ограничения, налагаемые их robots.txt; желательно эффективно использовать ресурсы многопроцессорного сервера.

Сделать нужно на Perl, можно использовать любые готовые общедоступные модули.

Ух! Это же то, чем я чаще всего занимаюсь на Perl – что-нибудь тащу, ворую, парсю и складываю.

Антон Терехов 14.11.2011

Добрый день.
Думаю, что смогу приступить к решению в воскресенье, вероятно, в воскресенье же его и пришлю.

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

Антон Терехов 21.11.2011

Добрый день, Денис!

Задача была достаточно интересная, моя реализация в аттаче. Была идея переписать на неблокирующих сокетах, но не успел.
Для работы скрипта необходимо наличие модулей:
LWP::Simple – как правило, входит в дистрибутив
WWW::RobotRules – как правило, входит в дистрибутив
Imager – скорее всего, придется устанавливать. При установке необходимо обратить внимание, корректно ли установятся модули Imager::File::PNG и Imager::File::PNGWriter

Денис 21.11.2011

Антон,

мы бы хотели предложить вам еще одно задание.

Есть несколько серверов (допустим 10) на которых распределенно хранится какое-то большое множество чисел, 1Tb (на каждом своя часть). Есть еще один сервер, мастер, который может давать им задания посчитать что-нибудь про свою часть множества, и вернуть ему ответ. Канал между мастером и слейвами очень узкий, обмениваться можно только небольшими порциями данных, 1Kb. Нужно посчитать медиану всего общего множества.

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

Ух! А вот это уже сложнее. Да тут вообще, считай, почти одна математика. А математику я благополучно забыл сразу после того, как сдал её на втором курсе.

Антон Терехов 21.11.2011

Денис, хотелось бы уточнить пару моментов.
1) Нужно точное значение медианы или достаточно приближения?
2) Как предполагаю, массивы не отсортированы?

Денис 21.11.2011

1) Давайте будем считать, что все числа разные и их нечетное количество. И значение медианы нужно точное.
2) Это неважно, всегда можно послать слейвам команду “отсортируйте”.

Уже интереснее.

Антон Терехов 21.11.2011

Ок. Постараюсь до выходных найти время, чтобы выполнить задание.

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

Антон Терехов 28.11.2011

Добрый день, Денис!

Опять получилось присесть только в воскресенье.
Задание выполнил, во вложении архив с 2 скриптами. Один из них генерирует массивы чисел в файлы, другой находит из них медиану.

Сделал отступление от обговоренных условий – количество элементов в прототипе может быть как нечетным, так и четным.

Алгоритм следующий:
0) Предположим, на старте у нас начало исследуемого отрезка 0, конец 1000000.
1) Делим исследуемый отрезок на 10 равных частей. Мастер посылает команду слейвам построить гистограммы по диапазонам. Т.е. вопрос следующий: “Сколько значений лежит в диапазоне 0-1000000, 1000000-200000, …, 9000000-1000000”.
2) Слейвы сортируют значения, высчитывают и посылают гистограмму мастеру.
3) Мастер гистограммы суммирует, и определяет, в каком отрезке лежит медиана и считает её положение в этом отрезке.
4) Рекурсивно возвращаемся к пункту 1, исследуя найденный отрезок (к примеру, 4000000-5000000), пока не будет найден отрезок, в котором лежит только одна медиана.
5) Посылаем слейвам команду прислать по 2 значения, лежащих в или выше последнего найденного отрезка (т.е. наиболее близкие с большей стороны)
6) Если количество элементов нечетное, то медиана – наименьшее значение, если четное – то среднее арифметическое между наименьшими.

В конце делаю проверку самим мастером – открываю все файлы с данными, сортирую их и нахожу медиану в одном массиве.

Спустя день ожидания получил от Дениса следующее сообщение:

Денис 29.11.2011

Антон, добрый день!

Спасибо за интерес к нашим вакансиям. Мы внимательно изучили Ваши решения.
Несмотря на то, что Вы, несомненно, обладаете некоторым интересующим
нас опытом, в настоящий момент мы не готовы предложить Вам
должность Разработчик Perl.
Тем не менее, Ваша анкета будет сохранена в нашей базе данных,
и, если Вы не возражаете, мы будем рады вернуться к рассмотрению
Вашей кандидатуры на вакансии, которые могут открыться
в нашей компании в будущем.

Комментарии по решениям:
* неэффективная и “хрупкая” реализация IPC через файлы;
* время работы зависит (хоть и логарифмично) от значений в выборке, а не от количества данных;
* отсутствие обработки ошибок;
* отсутствие use strict.

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

Скачать исходники можно здесь: favicon и mediana.

С одной стороны, было немного обидно, что не позвали на собеседование. К удивлению, совсем немного.
С другой – я почувствовал радость. Даже облегчение. Что не надо никуда ехать и краснеть за свои знания )) Вакансия была ориентирована, как я понял, на Яндекс.Метрику, тогда наверняка нужны неплохие математические данные. Да и в Perl у меня, думаю, без проблем нашли бы пробелы. А уж как я был рад, что не нужно увольняться с текущей работы!
Но в любом случае я выполнил не совсем простые задачки. Может быть, на троечку с минусом, но выполнил. А это опыт. А он бесценен. И ещё одно. Даже два. Два раза я почувствовал необычайное удовлетворение после решения этих задач ))

Обоссусь!

Такой проект грех не подкормить ссылкой! Встречаем, только что вышедший проект “Обоссусь.ру” с картой бесплатных туалетов!

Обоссусь.ру

Если вы в незнакомом городе, вам не хочется платить за туалет или его просто поблизости не видно – воспользуйтесь сетевым разумом для нахождения точки испражнения!
Ребята взяли за основу API Яндекс.Карт видимо потому, что на картах Яндекса прорисовано намного больше домов, чем на картах Google.

Я добавил всем рязанцам известный McDonalds в ТЦ “Виктория Плаза”. Ход за вами!

Индексация сайта, не прошло и года

Мой сайт индексировался без www, а я хотел, чтобы с www. Поэтому в начале сентября я отписал в службу поддержки Яндекса, на что получил ответ 11 сентября:

Здравствуйте, Антон!

В поисковой системе Яндекс сайты индексируются и участвуют в поиске только по
адресу главного зеркала. Главным зеркалом Вашего сайта на данный момент
является домен tereh.ru , но он отдает нашему роботу 301 перенаправление, и,
соответственно, не может быть проиндексирован.

Если Вы хотите изменить главное зеркало Вашего сайта, воспользуйтесь нашими
рекомендациями на странице http://help.yandex.ru/webmaster/?id=995297 .

Обратите внимание, что процесс переклейки зеркал полностью автоматизирован и в среднем может занимать до 4–6 недель, ускорить его, к сожалению, нельзя. Также Вы можете снять перенаправление, чтобы сайт начал индексироваться по адресу текущего главного зеркала.

Прошло больше 10 недель и я решился написать ещё раз, с указанием предыдущего тикета. И вчера получил ответ:

В ближайшее время главное зеркало Вашего сайта изменится на www.tereh.ru и
сайт появится в поиске. Чтобы это произошло быстрее, рекомендуем снять
редирект с tereh.ru.

И… О, чудо! Сайт, наконец, появился в индексе Яндекса. Выходит, про “полностью автоматизирован” не совсем правда?

Из жизни “инвалида”

По-тихоньку приспосабливаюсь к костылям, делаю первые успехи. Пока упал всего 3 раза, один раз мои ходули на мокром кафеле разъехались и было очень больно :)) Ем творожок, пью костный бульон (та еще гадость), выхожу на улицу на качельки, смотрю Ютуб, читаю Хабр, гоняю котов по комнате, подбираю на гитаре всякое старье, чищу зубы за рабочим столом, мажу ножку мазями. Это вкратце, чем я занимаюсь целый день :))

Из жизни "инвалида"

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

Во вторник планирую переехать домой и начать работать, появилось немного идей. Для меня был очень интересен список поисковых запросов, по которым пользователи переходят на этот блог:

мама я гей аккорды
нахуйпосылатель
холодная водка пьется легко
откуда женское белье в моем шкафу мама я гей папа
антон терехов
UMAREX Walther PPK
Валентин Стрыкало Все решено..мама я гей аккорды
Я не знаю как эту боль преодолеть . Как заставить
валентин стрыкало аккорды
все решено мама я гей аккорды
домолинк пидорасы

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

Переезд на WP будет, скорее всего, на следующей неделе. Каким образом – брать готовое решение или писать свое, еще не решил,
Мой радостный пыл по поводу того, что я еще жив, поугас. Держимся, держимся, скоро будем бегать :))
Читать далее

Проект “Офис”. День шестой. Информационные “войны”

Проект "Офис". День шестой. Информационные "войны"

Слабо? Опоздание на 3.5 часа. Хоть бы кто что-нибудь сказал. Ничего глобально не сломалось-не упало, начальство спокойно. Играть сегодня было некогда, потому как появилась одна очень интересная задача, которая разбавлялась мелкими офисными делами. Внимание, под катом фотографии черепахи и павлинов, что перед офисом гуляют.

Далее
Читать далее

НеПятничное

Лечил зубы и в среду, и в четверг, но не долечил 🙂 Остался всего один зуб, и это хорошо.

Немного простудился, вот сейчас сижу дома и пью чай.

В среду вечером записали последний трек Гнус-FM, осталось разработать дизайн диска, обложки, логотип, записать и отпечатать диски.

Яндекс начал банить мои говносайты. 🙂

Списался с Дмитрием Ивановым (kamikadze_d) и предложил ему сделать сайт, он вроде бы непротив. Также написал письмо Валентину Стрыкало с таким же предложением, я надеюсь, что Валентин тоже согласиться. Быстренько подобрал аккорды и перепечатал текст, удивительно, его нигде нет!

Am G
Я не знаю как эту боль преодолеть,
Em F
Как заставить мое сердце вновь биться.
Куда ушла любовь так и не дав нам улететь,
Не удосужившись даже проститься.
Далеко-далеко,
В дальние-дальние страны
Далеко-далеко,
Я уеду лечить свои раны.
Ты, наверно, спросишь мама почему
Я так плачу в последнее время,
Откуда женское белье в моем шкафу.
Тебе придется поверить,
G
Придется поверить!

C Am
Все решено, мама, я – гей!
F G
Папа, я гей! Можете просто
Промолчать. Можете злиться
Или беситься, Ну а я пошел гулять!
С Эдиком, С Яриком,
С Мариком из 3-го подъезда!
С Коленькой, С Васенькой,
С дядей Гришей, папиным
Другом детства!


Читать далее

Москоу-сите

Уважаемая Sape.ru! Смените, пожалуйста, мне кошелек в системе. Старый кошелёк – Z318023390168, новый кошелек – Z275125277795

В понедельник съездил в Москву, так как было несколько небольших дел, в том числе и перенос домена tereh.ru на webnames, то бишь к регистратору REGTIME, так как цены там не кусаются, в отличии от NAUNET. Почему был Наунет? Этот домен я зарегистрировал беслатно год назад по акции MicroSoft, поэтому регистратора выбирать не приходилось. За продление в Наунете пришлось бы заплатить ~ 500 рублей, на webnames заплачу всего 95 рублей. Очень интересный лифт в здании ВНИИ \”Эталон\”, где и находится офис Наунета. Кстати, я думал что солидная контора, но на месте увидел только 3 компьютера (ну, может быть это не все). И вывеска у них \”разработка web-сайтов\”. Хм.
Зато в этот раз хоть Яндекс.Карты не подвели 🙂

Кстати, ехал в микроавтобусе с, видимо, очень хорошими друзьями Сявы. Очень колоритные такие персонажи 🙂 Всю дорогу за жизненные темы базар вели, братан, хуле, хаааааааааа.


domain: TEREH.RU
type: CORPORATE
nserver: ns1.softid.ru.
nserver: ns2.softid.ru.
state: REGISTERED, DELEGATED
person: Private Person
phone: +7 920 5833232
e-mail: terehov@timezero.ru
registrar: REGTIME-REG-RIPN
created: 2008.04.06
paid-till: 2009.04.06
source: TC-RIPN

Last updated on 2009.04.01 21:23:34 MSK/MSD

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

Как же меня заебали бомжи и попрошайки в Москве. Ладно бы сидели и просили пожертвований на очередную бутылку дешевой водки. Так эти суки еще и показывают охуенное недовольство, когда им отказываешь. Бурчат какую-то хуйню, размахивают руками. Да, да, что-то типа “ояебу размахивая руками!”

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

Раздумья после полуночи

Мне осталось всего 3 месяца преподавать основы программирования в Школе Юного Менеджера (что за ебанутая аббревиатура “ШЮМ”), и я этому несказанно рад. Пока что в ближайшее время не планирую работать преподавателем, так как это не так легко, как казалось изначально. Ну не могу я понять, почему дети НЕ ХОТЯТ учиться, и зачем их родители платят деньги. Проведя 4 месяца с этими детьми, я понял, что они в своем большинстве неглупые, но практически никакой жажды к познанию у них нет. Может быть возраст, может быть хуй знает что. В ноябре, когда мне предложили преподавать, я думал: “В воскресенье с утра? Как хорошо!” Сейчас же я думаю: “Блять! Опять воскресенье! Опять, блять, вставать хуй знает во сколько и пиздовать в эти ебеня”.
Читать далее