Рубрика «Блог компании Mail.Ru Group» - 118

image

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

Python — один из немногих динамических языков, в которых отсутствует встроенная поддержка регулярных выражений, но это компенсируется проработанной базовой системой (с точки зрения API). В то же время он весьма причудлив. К примеру, поведение написанного на Python парсера может вас удивить. Если вы попытаетесь в ходе импорта профилировать Python, то, скорее всего, 90% времени вы проведёте в работе с модулем re.
Читать полностью »

image

В этом посте изложены советы, как не написать код, производительность которого окажется гораздо ниже ожидаемой. Особенно это касается ситуаций, когда движок V8 (используемый в Node.js, Opera, Chromium и т. д.) отказывается оптимизировать какие-то функции.
Читать полностью »

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

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

Сегментация аудитории при разработке игр - 1
Читать полностью »

image

В английском есть такая аббревиатура — TIFU. Привести здесь её точное значение мы не можем, но вы без труда найдёте его в Сети. А после «литературной обработки» TIFU можно перевести как «сегодня я всё испортил». В контексте этого поста данная фраза относится к использованию функции Math.random() в JavaScript-движке V8. Хотя случилось это не сегодня, а пару лет назад. Да и дров я наломал не по своей вине, корень зла таится в самой этой функции.

«Многие генераторы случайных чисел, используемые сегодня, работают не слишком хорошо. Разработчики обычно стараются не вникать, как устроены такие подпрограммы. И часто бывает так, что какой-то старый, неудовлетворительно работающий метод раз за разом слепо перенимается многими программистами, которые зачастую просто не знают о присущих ему недостатках.»

Дональд Кнут, «Искусство программирования», том 2.

Надеюсь, что к концу этого поста вы согласитесь с двумя утверждениями:

  • Мы были идиотами, поскольку использовали генератор псевдослучайных чисел в V8, не понимая его ограничений. И если очень лень, то безопаснее использовать криптографически стойкие генераторы псевдослучайных чисел.
  • В V8 необходима новая реализация Math.random(). Работу текущего алгоритма, кочующего от одного программиста к другому, нельзя считать удовлетворительной из-за слабой, неочевидной деградации, часто встречающейся в реальных проектах.

Хочу подчеркнуть, что сам движок V8 — замечательный продукт и его создатели очень талантливы. Я ни в коей мере не обвиняю их. Просто эта ситуация иллюстрирует, насколько сильно влияют на процесс разработки даже небольшие нюансы.
Читать полностью »

Персонажи сказок Старой Руси, Эпизод II - 1

Некоторое время назад на этом ресурсе была опубликована первая часть картинок из моего проекта «Сказки Старой Руси». Если вы не читали статью, я бы посоветовал сделать это, поскольку там представлена полная информация о самом проекте — как он появился на свет, и с какой целью. С тех пор произошло немало событий, я нарисовал много картинок, провел массу исследований и определился с точной формулировкой проекта: «рисовальная кабинетная мифология» в чистом виде (потому что сижу в домашнем кабинете, придумываю новую игровую мифологию и рисую). Еще раз напомню, что проект этот не для детей, но взрослым его не стоит воспринимать слишком серьезно.
Читать полностью »

Каток в спортзале: версия вторая, улучшенная и дополненная - 1

В прошлом декабре, незадолго до Нового Года, в спортзале Mail.Ru Group был впервые устроен настоящий каток. Сотрудники всячески одобрили эту затею, каток пользовался большой популярностью. Поэтому мы решили в этом году снова построить его, но на этот раз решили несколько улучшить его.
Читать полностью »

Приглашаем на Tarantool meetup 28 января - 1

28 января 2016 года в московском офисе Mail.Ru Group пройдёт вторая встреча Tarantool meetup. Если кто-то ещё не знает: Tarantool — это NoSQL In-Memory СУБД с открытым исходным кодом, создающаяся для обеспечения максимально возможной производительности. На втором митапе мы рассмотрим главные преимущества и особенности Tarantool, расскажем о своём опыте использования этого продукта и планах на будущее. В первую очередь эта встреча будет интересна разработчикам, Unix-сисадминам и прочим специалистам, так или иначе работающим с базами данных. Программу встречи смотрите под катом.
Читать полностью »

Поддержка тредов в Android-приложении Почты Mail.Ru: добиваемся полного синхрона - 1

Треды, или цепочки писем в почте, — одна из фич, на которые у гиков и массовой аудитории полярные взгляды. Гики активно ими пользуются; обычные пользователи, как показывают наши опросы, относятся к ним скорее настороженно. Во-первых, непривычно, во-вторых, люди опасаются, что не смогут сориентироваться в цепочках. Когда мы реализовывали треды в веб-версии Почты Mail.Ru, мы помнили об этом челлендже — и нашли, как нам кажется, максимально удобный и интуитивно понятный алгоритм группировки, который будет удобен и гикам, и менее продвинутым юзерам. За основу в работе над мобильными тредами мы взяли систему, разработанную большой Почтой, так как мы не хотели запутать пользователей и делать разную логику. Наша задача с точки зрения продукта заключалась в том, чтобы и веб-треды, и мобильные треды работали для пользователя одинаково. Но многие вещи пришлось переделывать с учетом офлайн-работы. О том, как мы сделали в Android-приложении Почты Mail.Ru цепочки, где письма не теряются даже при сбоях в сети, я расскажу в этой статье (о том, как сделали то же самое в iOS-приложении, расскажем в одном из следующих постов).
Читать полностью »

image

Я помню то замечательное время, когда сборка релизной версии мобильного приложения сводилась к тому, что нужно было выставить debug = false и запустить экспорт apk-файла. Проходит 2 минуты, пока пыхтит IDE, и все готово. Все усилия сосредотачивались на необходимости указать данные сертификата подписи. Это было совсем недавно. Cейчас процесс сборки того самого приложения разросся настолько, что, если мне, вдруг, потребуется выполнить все операции самостоятельно, и даже если я все вспомню и проделаю безошибочно (во что я не верю), то это займет не час, который сегодня кажется непозволительно долгим, а, скорее всего, сутки, после чего терапевт обязан будет прописать мне больничный по усталости недели на две.

Итак, процесс сборки мобильного приложения. Попробую рассказать, из чего он у нас состоит — не потому, что в последнее время стало модным катать посты о CI той или иной мобильной команды (с покером, русалками и прочими обязательными атрибутами), а потому, что это отличный опыт, который я получил, работая над Почтой Mail.Ru для Android, и потому, что этой возможности, вероятнее всего, не было бы, работай я в другой команде, над другим проектом или в другой компании.
Читать полностью »

Новый год в Сисадминье, или Как самому собрать гик-индикатор праздника - 1

Станислав Мушинский, специалист технической поддержки Mail.Ru Group

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

Идея эта у меня появилась после того, как друг показал найденную в интернете карту России, созданную из материнских плат. Большие города на ней подсвечивались диодами, а посередине располагался монитор. Насколько я помню, карта играла роль рекламного логотипа. Восхитившись реализацией, я в шутку сказал, что можно создать что-нибудь аналогичное без особых усилий и из подручных средств. А затем шутка стала реальностью.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js