Pull to refresh
46
0
Владислав Раструсный @FractalizeR

CTO

Send message

Теория шардирования

Reading time 26 min
Views 115K
Кажется, мы так глубоко погрузились в дебри highload-разработки, что просто не задумываемся о базовых проблемах. Взять, например, шардирование. Чего в нем разбираться, если в настройках базы данных можно написать условно shards = n, и все сделается само. Так-то, он так, но если, вернее когда, что-то пойдет не так, ресурсов начнет по-настоящему не хватать, хотелось бы понимать, в чем причина и как все починить.

Короче, если вы контрибьютили свою альтернативную реализацию хэширования в Cassandra, то вряд ли тут для вас найдутся откровения. Но если нагрузка на ваши сервисы уже прибывает, а системные знания за ней не поспевают, то милости просим. Великий и ужасный Андрей Аксёнов (shodan) в свойственной ему манере расскажет, что шардить плохо, не шардить — тоже плохо, и как это внутри устроено. А еще совершенно случайно одна из частей рассказа про шардинг вообще не совсем про шардинг, а черт знает про что — как объекты на шарды мапить.

Фотография котиков (хоть они случайно и оказались щеночками) уже как бы отвечает на вопрос, зачем это всё, но начнем последовательно.
Total votes 37: ↑37 and ↓0 +37
Comments 6

Потратить время сейчас, чтобы сэкономить потом: как мы выстраивали процессы разработки и планирования на игровом проекте

Reading time 14 min
Views 16K

Несколько лет назад небольшой командой сделали тестовый прототип PvP-шутера, который внезапно выстрелил. Тогда ни разработчики, ни процессы не были готовы к такой популярности, мы развивали проект здесь и сейчас — с энтузиазмом хватались за все понравившиеся идеи и старались реализовать их к ближайшему апдейту. 

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

Материал для тех, кто задумался о долгосрочном планировании или только начал выстраивать процессы у себя. Внутри я подробно рассказал про наш опыт: как мы целиком обновили воркфлоу разработки, внедрили Jira, систему оценки фичей ICE, методологию планирования GIST, а также целую пачку новых инструментов и гуглдоков. Теперь мы на несколько месяцев вперед точно знаем, что будет в проекте. 

Читать далее
Total votes 42: ↑39 and ↓3 +36
Comments 6

Шаблон проектирования Entity-Component-System — реализация и пример игры

Reading time 22 min
Views 80K
image


В этой статье я хочу обсудить шаблон проектирования «сущность-компонент-система» (Entity-Component-System, ECS). По этой теме можно найти много информации в Интернете, поэтому я не буду глубоко вдаваться в объяснения, а больше расскажу о моей собственной реализации.

Часть 1: Реализация шаблона Entity-Component-System на C++


Начнём сначала. Полный исходный код моей реализации ECS можно найти в репозитории на github.

Entity-Component-System, в основном используемый в играх — это шаблон проектирования, обеспечивающий огромную гибкость в проектировании общей архитектуры программного обеспечения[1]. Такие большие компании, как Unity, Epic или Crytek используют этот шаблон в своих фреймворках, чтобы предоставить разработчикам очень богатый возможностями инструмент, с помощью которого они могут разрабатывать собственное ПО. Прочитать более широкое обсуждение по этой тематике можно в этих постах [2,3,4,5].
Total votes 15: ↑15 and ↓0 +15
Comments 6

Введение в архитектуры нейронных сетей

Reading time 31 min
Views 185K


Григорий Сапунов (Intento)


Меня зовут Григорий Сапунов, я СТО компании Intento. Занимаюсь я нейросетями довольно давно и machine learning’ом, в частности, занимался построением нейросетевых распознавателей дорожных знаков и номеров. Участвую в проекте по нейросетевой стилизации изображений, помогаю многим компаниям.

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

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

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

После этого рассмотрим 2 сравнительно продвинутых темы и закончим небольшим обзором фреймворков и библиотек для работы с нейросетями.
Читать дальше →
Total votes 54: ↑51 and ↓3 +48
Comments 2

Топливо для ИИ: подборка открытых датасетов для машинного обучения

Reading time 6 min
Views 80K


Связанные проекты сообщества Open Data (проект Linked Open Data Cloud). Многие датасеты на этой диаграмме могут включать в себя данные, защищенные авторским правом, и они не упоминаются в данной статье


Если вы прямо сейчас не делаете свой ИИ, то другие будут делать его вместо вас для себя. Ничто более не мешает вам создать систему на основе машинного обучения. Есть открытая библиотека глубинного обучения TensorFlow, большое количество алгоритмов для обучения в библиотеке Torch, фреймворк для реализации распределенной обработки неструктурированных и слабоструктурированных данных Spark и множество других инструментов, облегчающих работу.


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


Мы разобрались в этом вопросе и собрали данные по датасетам, удовлетворяющим критериям открытости, востребованности, скорости работы и близости к реальным задачам.

Читать дальше →
Total votes 65: ↑65 and ↓0 +65
Comments 10

Онлайн-консультанты: тест-обзор 7 популярных систем. Что вы получите, если откинуть рекламу?

Reading time 13 min
Views 33K
Прислушайтесь. На рынке поднят очередной технохайп. Биткоины, майнинг, искусственный интеллект, машинное обучение, нейросети, чат-боты, омниканальность. Умы поглощены технологиями, притом, что у подавляющего большинства российских компаний нет даже нормальной CRM.


О чем это я? Когда ты продажник в компании “Вася Пупкин и Ко”, то чихать ты хотел на высокие технологии, даже если сам работаешь в большой IT-компании. Хочется побольше продать (равно) получить побольше процент (равно) заработать на шикарный отпуск где-нибудь на Бали (в идеале свалить туда в релокацию на какое-то время).

Заказы к нам в фирму приходят в основном по телефону и электронной почте (куда также приходят заявки с нашего сайта). После нескольких вебинаров и поездки на конференцию по увеличению интернет-продаж, я предложил руководству плотнее поработать с чатом. Конечно, меня встретил скепсис — несколько лет назад они уже поставили на сайт онлайн-консультант и особого эффекта не было. В результате до недавнего времени на сайте висела бесплатная версия чата, в которую даже иногда писали клиенты, но в онлайне никто из сотрудников никогда не сидел. Почти все менеджеры в отделе противились этой “лишней работе”, по их мнению чат — это пятое колесо в телеге. Но я был настойчив: ведь чуть больше года назад моим местом работы была компания-разработчик достаточно известного чата, и у меня скопилось несколько весомых кейсов компаний, которые таким способом подняли продажи. Я знал, что никаких чудес в этом нет, нужно лишь грамотно встроить чат в бизнес-процессы компании. Но за год в отрасли произошло много изменений, которые хотелось сначала пощупать, чтобы понять, как с ними работать.
Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Comments 20

20 полезных сервисов для продакт-менеджеров

Reading time 5 min
Views 20K
Мы в редакции «Нетологии» вместе с преподавателями курса «Руководитель
digital-продукта
» собрали подборку сервисов, которые помогут тимлиду, продакту или проджекту наладить работу в команде и сделать свою жизнь лучше. Возможно, многие из них будут вам знакомы — по рабочему процессу или по слухам. Будем рады, если в комментариях вы предложите свои варианты или расскажете, чем понравился/не понравился тот или иной сервис.


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



В таком случае приходят на помощь сервисы. Мы опросили четырех преподавателей курса «Руководитель digital-продукта» и сделали подборку сервисов, которые облегчат жизнь и помогут наладить эффективную работу.
Total votes 9: ↑9 and ↓0 +9
Comments 3

Описание алгоритмов сортировки и сравнение их производительности

Reading time 24 min
Views 662K

Вступление


На эту тему написано уже немало статей. Однако я еще не видел статьи, в которой сравниваются все основные сортировки на большом числе тестов разного типа и размера. Кроме того, далеко не везде выложены реализации и описание набора тестов. Это приводит к тому, что могут возникнуть сомнения в правильности исследования. Однако цель моей работы состоит не только в том, чтобы определить, какие сортировки работают быстрее всего (в целом это и так известно). В первую очередь мне было интересно исследовать алгоритмы, оптимизировать их, чтобы они работали как можно быстрее. Работая над этим, мне удалось придумать эффективную формулу для сортировки Шелла.

Во многом статья посвящена тому, как написать все алгоритмы и протестировать их. Если говорить о самом программировании, то иногда могут возникнуть совершенно неожиданные трудности (во многом благодаря оптимизатору C++). Однако не менее трудно решить, какие именно тесты и в каких количествах нужно сделать. Коды всех алгоритмов, которые выложены в данной статье, написаны мной. Доступны и результаты запусков на всех тестах. Единственное, что я не могу показать — это сами тесты, поскольку они весят почти 140 ГБ. При малейшем подозрении я проверял и код, соответствующий тесту, и сам тест. Надеюсь, что статья Вам понравится.
Читать дальше →
Total votes 80: ↑76 and ↓4 +72
Comments 55

Проведение ретроспективы по методу шести шляп

Reading time 5 min
Views 35K
В следующие несколько абзацев хочу поделиться не так давно случившимся у меня опытом проведения ретроспективы по методу шести шляп. Метод шести шляп (англ. Six Thinking Hats) — метод организации мышления, помогает взглянуть на проблему с разных сторон, а также одна из разновидностей мозгового штурма при работе в команде.

Интересно будет тем, кто ищет новые способы проведения ретроспектив, кто интересуется командной работой, подходами к принятию решений и генерации идей.

Цель текста — рассказать, что такой метод есть, на основе простого примера показать, как его можно использовать для организации ретроспективы; вызвать интерес у читателя для дальнейшего самостоятельного изучения этого метода.
Читать дальше →
Total votes 23: ↑17 and ↓6 +11
Comments 0

Нечеткий поиск по названиям

Reading time 21 min
Views 35K
Добрый день. Проблема с поиска, услуг или продукта, возникает на подавляющем большинстве сайтов. И в основной свой массе реализация подобной возможности ограничиваются поиском по точному слову, которое ввели в поисковой строке.

Если есть время, и заказчик хочет чуть большего, то гуглят реализацию наиболее популярного алгоритма (коим является «расстояние Левенштейна») и вписывают его.

В данной статье, я опишу сильно доработанный алгоритм, основанный, правда, на расстояния Левенштейна, и приведу примеры кода на C# нечеткого поиска по названиям, например: кафе, ресторанов или неких сервисов… В общем всё, что можно перечислить и имеет от одного до нескольких слов в своем составе:

«Яндекс», «Mail», «ProjectArmata», «world of tanks», «world of warships», «world of warplanes» и т.д.
Читать дальше →
Total votes 45: ↑44 and ↓1 +43
Comments 21

Ansible v.s. Salt (SaltStack) v.s. StackStorm

Reading time 19 min
Views 24K

image


Дисклеймер


За последний месяц я слушал интервью с разработчиками на всех трех продуктах и слышал утверждение «считайте [Ansible / Salt / StackStorm] клеем». А теперь я, как самоделкин-любитель, с удовольствием скажу, что у меня в гараже отнюдь не единственный горшок с клеем. У меня 6 разных типов клея для разного применения, различных склеиваемых материалов и условий среды. Все эти 3 продукта находятся в одном и том же лагере, и каждый может быть с успехом использован для достижения совершенно разных целей. Недавно произошел большой перехлест функционала, состоящий в том, что все они проникают в область сетевой автоматизации. Мнения, приведенные ниже, принадлежат мне, а не моему работодателю (который продает продуктов сетевой инфраструктуры и развертывания на миллиарды долларов).

Total votes 15: ↑15 and ↓0 +15
Comments 6

Gixy — open source от Яндекса, который сделает конфигурирование Nginx безопасным

Reading time 10 min
Views 35K
Nginx, однозначно, один из крутейших веб-серверов. Однако, будучи в меру простым, довольно расширяемым и производительным, он требует уважительного отношения к себе. Впрочем, это относится к почти любому ПО, от которого зависит безопасность и работоспособность сервиса. Признаюсь, нам нравится Nginx. В Яндексе он представлен огромным количеством инсталляций с разнообразной конфигурацией: от простых reverse proxy до полноценных приложений. Благодаря такому разнообразию у нас накопился некий опыт его [не]безопасного конфигурирования, которым мы хотим поделиться.



Но обо всем по порядку. Нас давно терзал вопрос безопасного конфигурирования Nginx, ведь он — полноправный кубик веб-приложения, а значит, и его конфигурация требует не меньшего контроля с нашей стороны, чем код самого приложения. В прошлом году нам стало очевидно, что этот процесс требует серьезной автоматизации. Так начался in-house проект Gixy, требования к которому мы обозначили следующим образом:

— быть простым;
— но расширяемым;
— с возможностью удобного встраивания в процессы тестирования;
— неплохо бы уметь резолвить инклюды;
— и работать с переменными;
— и про регулярные выражения не забыть.
Читать дальше →
Total votes 112: ↑112 and ↓0 +112
Comments 18

Делаем простейший фильтр по свойствам товаров с помощью ElasticSearch на Symfony2

Reading time 5 min
Views 48K
Написать эту статью меня сподвигло отсутствие в интернете готового пошагового руководства «как реализовать фильтр товаров на ElasticSearch», а задача сделать это у меня стояла чётко и непоколебимо. Удавалось находить отрывочную справочную информацию, но никак не cookbook по решению самых тривиальных задач.

Акцентирую ваше внимание именно на symfony2, поскольку буду использовать FOSElasticaBundle, который позволяет описывать mapping индексов elasticsearch в удобных yaml конфигах и привязывать к ним сущности Doctrine ORM или документы Doctrine ODM. Промаппленные индексы заполняются из связанных доктриновских сущностей с помощью одной единственной консольной команды. Кроме того, он включает в себя вендорную библиотеку для конструирования поисковых и фильтрационных запросов. Результаты поиска возвращаются в виде массива объектов сущности или документа Doctrine ORM/ODM, привязанной к поисковому индексу. Подробнее о FOSElasticaBundle, традиционно, на гитхабе: github.com/FriendsOfSymfony/FOSElasticaBundle

Использование бандла позволяет полностью абстрагироваться от манипуляций с чистым JSON, что-то кодировать и декодировать функциями json_encode и json_decode, лезть куда-то с помощью сurl. Здесь только ООП подход!

Немного о схеме данных в SQL

Поскольку мои товары хранятся в реляционной СУБД, мне понадобилось реализовать EAV модель для их свойств и значений (подробнее: en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model )

В результате, у меня вышла вот такая схема данных:
image
Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 22

Интересные алгоритмы кластеризации, часть вторая: DBSCAN

Reading time 10 min
Views 90K
Часть первая — Affinity Propagation
Часть вторая — DBSCAN
Часть третья — кластеризация временных рядов
Часть четвёртая — Self-Organizing Maps (SOM)
Часть пятая — Growing Neural Gas (GNG)

Углубимся ещё немного в малохоженные дебри Data Science. Сегодня в очереди на препарацию алгоритм кластеризации DBSCAN. Прошу под кат людей, которые сталкивались или собираются столкнуться с кластеризацией данных, в которых встречаются сгустки произвольной формы — сегодня ваш арсенал пополнится отличным инструментом.


Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Comments 4

Javascript-фреймворки: должен остаться только один

Reading time 24 min
Views 57K

Сергей Аверин ( XEK )


Сергей Аверин

Изначально я хотел сделать доклад про сравнение фреймворков, но потом подумал, что закидают помидорами, поэтому доклад — просто адский троллинг, как водится у меня. И он, скорее, не про HighLoad, а про менеджерскую задачу, которая стоит над всем этим делом, включая фронтенд.

Про что же, все-таки, получился доклад? Доклад про то, как выбирали новый фреймворк, почему выбирали, и какие задачи решали.
Читать дальше →
Total votes 103: ↑93 and ↓10 +83
Comments 184

5 идей по игровой аналитике

Reading time 6 min
Views 15K
… которые можно почерпнуть из вебинара наших партнеров из detodev. Этот вебинар проводился 25 августа вместе с друзьями с отличного портала по геймдизайну GDCuffs на тему “Аналитика в играх”. Про игровую аналитику рассказывали Сергей Гимельрейх, учредитель в ORC WORK, Александр Пашин, Senior Game Designer в Silly Penguin и ведущий аналитик devtodev Василий Сабиров, который кстати скоро будет проводить отдельный мастер-класс по игровой аналитике для слушателей нашей программы «Менеджмент игровых интернет-проектов».

Под катом вы найдете конспект ключевых идей с вебинара, а также ссылку на видео.


Total votes 19: ↑16 and ↓3 +13
Comments 0

Пять видов систем крафтинга в играх

Reading time 9 min
Views 35K
За последние годы крафтинг развился от редкоприменимой механики ролевых игр до практически повсеместного дополнения ко всем последним новинкам индустрии. Сегодня он используется не только в почти любой RPG, но также в шутерах от первого лица, экшн-играх, симуляторах вождения и даже в системе присвоения значков пользователям Steam.

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


Читать дальше →
Total votes 18: ↑15 and ↓3 +12
Comments 18

Дайджест материалов о email-рассылке: Полезные руководства из мира электронной почты

Reading time 3 min
Views 7.3K
Сегодня мы публикуем подборку материалов о email-маркетинге и электронных письмах: виды рассылок, их эффективность и метрики, активация подписчиков, различные сервисы, советы экспертов и удачные примеры.


Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Comments 0

Аналитика для геймдизайнеров и продюсеров. Часть I

Reading time 8 min
Views 36K
Зачем нужна аналитика геймдизайнерам, продюсерам и другим сотрудникам, отвечающим за продуктовую составляющую, качество игры и её контент, за успешность на рынке и бизнес-показатели? В этой статье я расскажу, какие показатели статистики принято анализировать для того, чтобы предотвратить возможные проблемы и повысить выручку.


Читать дальше →
Total votes 22: ↑19 and ↓3 +16
Comments 5

Введение в GitLab CI

Reading time 6 min
Views 236K

Публикую перевод моей статьи из блога ГитЛаба про то как начать использовать CI. Остальные переводы гитлабовских постов можно найти в блоге компании Softmart.




Представим на секунду, что вы не знаете ничего о концепции непрерывной интеграции (Continuous Integration — CI) и для чего она нужна. Или вы всё это забыли. В любом случае, начнем с основ.


Представьте, что вы работаете над проектом, в котором вся кодовая база состоит из двух текстовых файлов. Более того, очень важно, чтобы при конкатенации этих файлов в результате всегда получалась фраза "Hello world." Если это условие не выполняется, вся команда лишается месячной зарплаты. Да, все настолько серьезно.


Hello wolrd


Читать дальше →
Total votes 45: ↑44 and ↓1 +43
Comments 21

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

Chief Technology Officer (CTO)