Pull to refresh
12
0
Igor Polyakov @ihoru

Python/Django Developer

Send message

1 января 1904, 1970, Youtube, международный конфликт и кривые руки

Reading time2 min
Views79K
К сожалению, давно пропали топики-ссылки, но иногда бывают крайне занимательные вещи из первых рук. Рекомендую пост Анатолия Воробея (работает разработчиком в «Гугле»).

В видеоформате MP4 (стандарт MPEG-4) есть возможность записать «время создания» любого потока данных, с помощью специальной метки. Значение этой метки в стандарте: количество секунд, прошедших с 1 января 1904 года, или так называемое «время по эпохе макинтоша», потому что маки первыми стали использовать такой отсчет времени. Меж тем, в современных серверах намного проще иметь дело с «временем по эпохе Юникса», а именно количеством секунд, прошедших с 1 января 1970 года. В результате этого, во множестве программ, которые работают на Линуксе или других юниксовских операционных системах, есть кусок кода, который выглядит примерно так:
  • получить «время сейчас по юниксу»;
  • добавить разницу между временем по юниксу и временем по макинтошу — это некая константа;
  • полученное «время сейчас по макинтошу» записать в файл MP4, который мы создаем.

Чему равна константа «разница между временем по юниксу и временем по макинтошу»? Она равна в точности числу секунд, прошедших между 1 января 1904 и 1 января 1970. Это 66 лет, из которых 17 были високосными (проверьте, если не доверяете мне). Всего дней получается: 66 * 365 + 17 = 24 107, а секунд, учитывая 86 400 секунд в сутках: 24 107 * 86 400 = 2 082 844 800. Это правильное значение константы.
А как же обстоят дела в Ютьюбе
Total votes 270: ↑246 and ↓24+222
Comments25

Centrifuge — так просто, как возможно, но не проще этого

Reading time5 min
Views13K

Привет!

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

Суть отдельностоящих серверов рассылки сообщений в реальном времени такова, что клиенты из браузера должны подключиться к серверу, подписаться на нужные каналы и ждать сообщений из этих каналов.
Читать дальше →
Total votes 42: ↑36 and ↓6+30
Comments8

Разработка мобильных приложений: с чего начать

Reading time10 min
Views470K


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

Читать дальше →
Total votes 89: ↑72 and ↓17+55
Comments31

Обработка и классификация запросов. Часть вторая: навигационные запросы

Reading time9 min
Views19K
Чего мы больше всего хотим, когда открываем интернет-поисковик? Мы хотим как можно быстрее его покинуть, как это ни парадоксально. Формулируем наше желание, жмём кнопку и скорее отправляемся туда, где оно должно исполниться (мы надеемся).



Есть всего два основных способа выражения желаний: либо описать, что нужно получить (или сделать), либо указать, куда нужно «телепортироваться». В первом случае система пытается понять запрос, правильно выбрав лучшие из ответов cети, взвешивая сотни их свойств на деревьях принятия решений. Во втором правильный ответ, как правило, всего один, и мы ожидаем, что поисковик его знает.

Запросы второго типа, отвечающие на вопросы куда или где — навигационные запросы. Предлагаю вашему вниманию небольшой рассказ о том, как мы с ними работаем.
Читать дальше →
Total votes 52: ↑51 and ↓1+50
Comments10

Обработка и классификация запросов. Часть первая: парсер запросов

Reading time7 min
Views24K
Чем занят отдел обработки запросов в Поиске Mail.Ru? Если одним предложением, мы пытаемся «понять» запрос, то есть осуществляем подготовку запроса к поиску, приводим его в вид, пригодный для взаимодействия с нашим индексом, ранжированием, подмесами и прочими компонентами. Если же вы хотите узнать о нашей работе подробнее — добро пожаловать под кат. В этом посте я расскажу об одной из областей нашей работы — парсере запросов.
Читать дальше →
Total votes 73: ↑67 and ↓6+61
Comments16

intro.js — пошаговое руководство для веб-страницы

Reading time1 min
Views51K


Эта маленькая библиотека позволяет очень просто создать пошаговое введение для сайта или приложения. Достаточно добавить атрибуты data-intro и data-step с описанием и номером шага соответственно к нужным элементам страницы. Вот так:

<a href='http://google.com/' data-intro='Hello step one!' data-step='1'></a>
Читать дальше →
Total votes 139: ↑134 and ↓5+129
Comments24

Pilot: многофункциональный JavaScript роутер

Reading time9 min
Views36K
С каждым днем сайты становятся все сложнее и динамичнее. Уже недостаточно просто «оживить» интерфейс — все чаще требуется создать полноценное одностраничное приложение. Ярким примером такого приложения является любая web-почта (например, Mail.Ru), где переходы по ссылкам приводят не к перезагрузке страницы, а только к смене представления. А это значит, что задача получения данных и их отображения в зависимости от маршрута, которая всегда была прерогативой сервера, ложится на клиент. Обычно эту проблему решают с помощью простенького роутера, на основе регулярных выражений, и дальше не развивают, в то время как на back-end этой теме уделяют гораздо больше внимания. В этой статье я постараюсь восполнить этот пробел.

Читать дальше →
Total votes 113: ↑91 and ↓22+69
Comments17

Просто о безопасности почты

Reading time13 min
Views215K
У этого поста две цели. Первая: слегка приоткрыть завесу над правилами игры, которых придерживается крупная почтовая служба в вопросах безопасности. Мы хотим, чтобы меры, которые мы принимаем для защиты пользователей, стали понятней сообществу. Пост написан на основе опыта Почты Mail.Ru, но рекомендации универсальны и применимы к любому почтовому сервису.

Вторая цель — рассказать о том, как защитить ящик. Мы пройдемся по базовым моментам и напомним те пункты в «плане безопасности», о которых редко задумываются. Может быть, сведения из этой статьи пригодятся вам, а возможно — вашему беспечному другу, родителям или коллеге. Возможно, нам даже удастся сделать так, чтобы звонков «У меня, кажется, ящик взломали, ты же программист, сделай что-нибудь!!!11» стало чуть меньше.

Читать дальше →
Total votes 64: ↑54 and ↓10+44
Comments54

«Джаггернаут: Месть Соверинга»: разработка мобильной игры и продвижение на международные рынки

Reading time7 min
Views66K
На прошедшей недавно Winter Nights 2013: Mobile Games Conference я рассказывал об истории успеха нашей мобильной игры «Джаггернаут: Месть Соверинга» — о создании, подводных камнях процесса разработки, запуске проекта на разных территориях и о том, как игра смогла достичь рекордных позиций по скачиваниям в России и выйти на первое место в рейтинге приложений в Корее. Сегодня я хочу поделиться своим докладом на Хабре.


Читать дальше →
Total votes 113: ↑87 and ↓26+61
Comments60

Автоматическая блокировка экрана в GNU/Linux

Reading time4 min
Views33K
Часто ли уходя за очередной чашечкой кофе или выйдя из кабинета/офиса совершить личный звонок, ты ловишь себя на мысли что забыл заблокировать экран своего компьютера? А на компьютере в это время осталась открытая переписка в Skype/почте или еще хуже — сессия root'а в консоли? В результате ты стараешься вернуться к своему компьютеру как можно быстрее, чтобы добрые коллеги не успели поставить фоном рабочего стола обои с Черным Властелином.
В данной статье приведу пример решения этой проблемы с блокировкой экрана, которое поможет закрыть доступ к рабочему столу в тот момент когда ты отойдешь от компьютера.
Читать дальше →
Total votes 80: ↑65 and ↓15+50
Comments61

Создание виртуальной волны

Reading time7 min
Views60K


Как всем известно, 71% поверхности Земли занимает вода. К сожалению или к счастью, корректно изобразить океан умеют единицы. Иван Айвазовский вошел в учебники живописи благодаря одним только морским пейзажам. В компьютерных играх все еще сложнее. Когда-то море в них обозначали скоплением синих пикселей, раскрашенных белыми квадратами пены. Со временем виртуальные моря стали больше похожи на снимки из отпуска, научились качать волну и покрываться рябью, в которой иногда даже отражались очертания парусников. Но они оставались самостоятельной стихией: натолкнувшись на берег, волна превращалась в незамысловатые угловатые полигоны. Настоящий прибой логично взаимодействует с пляжем, увлажняет песок и с шуршанием откатывается назад. Такого правдоподобия удалось добиться только в современных играх. В том числе в нашем Skyforge. И хоть в основные события будут разворачиваться на суше, игроки попадут и на тропические острова, и в шумные порты. Вода будет постоянно рядом. Ее «правильный» облик будет играть большую роль. И воссоздание морской стихии – серьезная математическая задача. Расскажу об этапах ее реализации.
Читать дальше →
Total votes 178: ↑164 and ↓14+150
Comments25

Список команд чата Skype

Reading time6 min
Views692K
...Skype — это дьявольски хитрая программа, написанная бесспорно талантливыми людьми...Крис Касперски

Доброго времени суток!

Skype сейчас я встречаю чаще на компьютерах чем другие IM клиенты, мне он практически заменил icq, вся рабочая переписка ведется в skype, но речь пойдет не о том, что лучше или популярней. Часто бывает так, что участвуешь сразу в нескольких чатах где количество участников превышает 10, что собственно и приводит к тому, что на рабочем столе и в трее постоянно обновляется количество новых сообщений, а также уведомления в виде всплывающих сообщений, а теперь представьте что у вас 3 окна чата с друзьями, 1 с вашим боссом, другой с девушкой — все это в сумме начинает запутывать, отвлекать и порой раздражать. Хотелось бы расставить приоритеты…

Раньше я чаще всего настраивал «политику» уведомлений только через глобальные настройки программы
Случилось так, что я узнал, что в каждом окне чата skype возможно использование команд, например /alertsoff отключит уведомления для конкретного окна чата, соответственно /alertson включит их обратно.
Поискав немного я наткнулся на некое how-to, оказывается у skype чата довольно много текстовых команд, подобие IRC команд. Далее я постарался попробовать все возможные из них на двух имеющихся у меня платформах, как оказалось не все и не везде работает… Прошу под кат.

Читать дальше →
Total votes 187: ↑174 and ↓13+161
Comments79

Шаг за шагом, или Как мы строили свой поиск

Reading time13 min
Views39K
В прошлом посте мы рассмотрели примеры архитектуры поисковиков. Везде ключевую роль играет база данных, над которой удобно производить некоторые операции, исследовать и анализировать содержащиеся в ней документы.

До весны 2012 года у нас вместо такой базы существовали две базы данных разного уровня — со стороны спайдера, который имел свою собственную базу URL-ов, и со стороны индексатора. Это было крайне неудобно: допустим, если пользователь жаловался, что его сайт не индексируется, то для того, чтобы найти причину, при старой архитектуре пришлось бы анализировать массу данных. На это требовалось день-два, иногда даже неделя.

Задачи, которые обрабатывали данные, такие как антиспам или ссылочный граф, вынуждены были работать отдельно, создавая еще большую путаницу. Мы понимали, что нужно что-то менять.

Читать дальше →
Total votes 99: ↑88 and ↓11+77
Comments20

Полнотекстовый поиск: как это делают в Почте Mail.Ru

Reading time7 min
Views32K
Исторически в Почте Mail.Ru использовался механизм от «большого» Поиска (go.mail.ru); однако для задач поиска по почтовым ящикам такой вариант не был оптимальным ввиду большого потребления ресурсов и относительной сложности в обслуживании. Поиском по почте пользуются около 3% владельцев почтовых ящиков; однако, хотя эта цифра кажется относительно небольшой, ящики этих людей обычно достаточно объемны, и поиск им действительно необходим. Поэтому мы приняли решение написать специализированный поисковый демон, который будет заниматься именно поиском по почте. Основными требованиями к нему стали ограничения по потребляемым ресурсам (размер индекса — не более 3% от размера почтового ящика, среднее потребление оперативной памяти — не более 100 Мб, средняя утилизация CPU — не более 3%) и скорости исполнения запросов (среднее время — не более 200 мс). О том, как он был организован, я расскажу ниже.
Читать дальше →
Total votes 147: ↑129 and ↓18+111
Comments24

В поисках идеального css-фреймворка. Требования, реализация, maxmertkit

Reading time14 min
Views70K


Я обожаю twitter bootstrap. Прост, местами логичен, достаточно красив, подходит для быстрого прототипирования веб-интерфейсов. Но этого оказалось недостаточно. Взяв twitter bootstrap в большой проект, мне пришлось целиком его разобрать и переосмыслить css-фреймворки как боевые единицы в веб-проектах. В результате переосмысления родились требования к любому css-фреймворку, удобному как верстальщику, так и frontent-разработчику.
Требования и реализация
Total votes 208: ↑199 and ↓9+190
Comments135

Разукрашиваем вывод mysql-client в консоли

Reading time4 min
Views30K
Цвет и звук — это те небольшие радости, которые могут разукрасить и облегчить будние администратора при постоянной работе с консолью. Вывод цветовой информации регулируется так называемым escape-последовательностями, определяющими среди прочего цвет текста и цвет фона.

Общий вид: \033[Xm, где X — это значение параметра (цифра). Например, echo -ne "\033[34mHELLO" выведет синим цветом «HELLO». Таблицу цветов и других доступных параметров (подчеркивание, мигание и т.п.) можно получить в документации man console_codes в разделе «ECMA-48 Set Graphics Rendition». Обычно поддержка цвета интегрирована в само приложение, но mysql-client не входит в число таких программ.

В интернете не раз был встречен вопрос о разукрашивании консоли mysql, но нигде не нашлось рецепта. Только общие слова «может быть состряпать обертку» или «посмотрите в исходном коде». Такой вопрос на StackOverflow жил без ответа более 2 лет! «Жил» было специально употреблено в прошедшем времени, потому что ответ нашелся.

Поможет нам утилита grc. Она доступна в большинстве дистрибутивов и о ней многие знают. Но как обернуть в нее вывод mysql-client?


Читать дальше →
Total votes 103: ↑102 and ↓1+101
Comments30

Продуктивная работа с MySQL в командной строке

Reading time3 min
Views40K
Даже если Вы используете GUI-инструменты для работы с MySQL, однажды Вам предстоит столкнуться с командной строкой. Поэтому полезно знать некоторые трюки, которые облегчают работу.

Примечание: эти команды работают только для Unix/Linux.
Читать дальше →
Total votes 109: ↑103 and ↓6+97
Comments18

Тренды на осеннем Форуме Технологий 2012: хабраопрос

Reading time5 min
Views3.7K
Друзья, у нас планируется большое событие — осенний Форум Технологий Mail.Ru Group (те, кто не был с нами этой весной и в прошлом году, могут почитать про Форум тут). Проходить он будет 17 октября в Москве, в информационно-выставочном центре «ИнфоПространство».

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

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

Читать дальше →
Total votes 28: ↑22 and ↓6+16
Comments8

Адаптивный веб-дизайн на практике

Reading time12 min
Views85K
Мы уже писали о методах (Mobile First и Response Web Design), которые используем при разработке нашего сервиса. В этой статье я хочу поделиться с вами нашим опытом. То, что в теории кажется простым, на практике порой оборачивается кошмаром. Речь пойдет о том, как нам удается создавать универсальный веб-сервис, способный работать на большом количестве устройств.
Читать дальше →
Total votes 139: ↑133 and ↓6+127
Comments34

Новая Главная портала Mail.Ru

Reading time10 min
Views43K
Думаю, многие из вас хоть раз видели старую главную страницу Mail.Ru, которая довольно долго не менялась. Поэтому для общего понимания, небольшая преамбула: технический апдейт, о котором пойдет речь в этом посте, стал возможен после внутренних изменений в компании.



Разработкой новой главной занималась довольно большая команда: в нее входили дизайнеры, специалисты по юзабилити и, конечно, разработчики, среди которых я и note.
Читать дальше →
Total votes 164: ↑139 and ↓25+114
Comments123

Information

Rating
Does not participate
Location
Таиланд
Works in
Date of birth
Registered
Activity