Pull to refresh
2
0
Александр @ShadowsMind

Java/Scala developer

Send message

Scala + MXNet = Микросервис с нейронкой в проде

Reading time 20 min
Views 8.8K

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

Основной, на мой взгляд, недостаток всех этих примеров — ограниченность возможностей. Вы взяли пример, — пусть даже с базовой нейронной сетью, которую предлагает автор, — запустили его, возможно, он даже заработал, а что дальше? Как сделать так, чтобы этот незамысловатый код начал работать на production-сервере? Как его обновлять и поддерживать? Вот тут и начинается самое интересное. Мне не удалось найти полного описания процесса от момента «ну вот, ML-инженер обучил нейронную сеть» до «наконец-то мы выкатили это в production». И я решил закрыть этот пробел.
Читать дальше →
Total votes 42: ↑41 and ↓1 +40
Comments 9

Я растерял веру в разработку, выгорел, но меня спас культ инструмента

Reading time 7 min
Views 71K


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

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

Чем бы оно ни было, я эту фигню не понимал никогда.

Сторонники культов кажутся мне непроходимыми тупицами. А я всегда пытаюсь понять, как тупицы стали тупицами, и почему тупицей не стал я. Начал думать и бам! — понял, что все-таки стал. Я тупица-культист, который восхваляет F#. И конечно за этим есть история.
Читать дальше →
Total votes 154: ↑135 and ↓19 +116
Comments 143

Как я делал комикс-игру по Лавкрафту

Reading time 10 min
Views 22K


Привет, Хабр! Это будет история о тернистом пути разработки 2D-квеста в сеттинге миров Говарда Филлипса Лавкрафта, который целиком оформлен в виде интерактивного комикса. Ну то есть все в игре, начиная от головоломок и заканчивая интерфейсом — это один бесшовный комикс. Если вас заинтересовала такая концепция, прошу под кат, где будет больше гифок, технические детали и опыт публикации на основных платформах.
Читать дальше →
Total votes 89: ↑88 and ↓1 +87
Comments 66

Анализ тональности текстов с помощью сверточных нейронных сетей

Reading time 11 min
Views 57K


Представьте, что у вас есть абзац текста. Можно ли понять, какую эмоцию несет этот текст: радость, грусть, гнев? Можно. Упростим себе задачу и будем классифицировать эмоцию как позитивную или как негативную, без уточнений. Есть много способов решать такую задачу, и один из них — свёрточные нейронные сети (Convolutional Neural Networks). CNN изначально были разработаны для обработки изображений, однако они успешно справляются с решением задач в сфере автоматической обработки текстов. Я познакомлю вас с бинарным анализом тональности русскоязычных текстов с помощью свёрточной нейронной сети, для которой векторные представления слов были сформированы на основе обученной Word2Vec модели.

Статья носит обзорный характер, я сделал акцент на практическую составляющую. И сразу хочу предупредить, что принимаемые на каждом этапе решения могут быть неоптимальными. Перед прочтением рекомендую ознакомиться с вводной статьей по использованию CNN в задачах обработки естественных языков, а также прочитать материал про методы векторного представление слов.
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Comments 9

Надёжность World of Tanks Server

Reading time 21 min
Views 22K

Сегодняшняя тема — надежность World of Tanks Server — достаточно скользкая. Надежность игры — это trade off, потому в разработке игр все нужно делать быстро и быстро изменяться. Нагрузка на серверы большая, а пользователи склонны что-нибудь поломать просто из интереса. Левон Авакян на РИТ++ рассказал, что в Wargaming делают для обеспечения надежности.


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




О спикере: Левон Авакян работает в компании Wargaming в должности Head of WoT Game Services and Reliability и занимается проблемами надежности танкового сервера.


Total votes 47: ↑44 and ↓3 +41
Comments 11

Akka антипаттерны: слишком много акторов

Reading time 4 min
Views 5.8K
image

По akka мало материалов на Хабре. Решил перевести некоторые антипаттерны, описанные Мануэлем в своем блоге. Они действительно могут быть неочевидны людям впервые столкнувшимся с фреймворком.
Читать дальше →
Total votes 17: ↑14 and ↓3 +11
Comments 4

Разработка веб-приложения на Rust

Reading time 11 min
Views 33K
Автор материала, перевод которого мы сегодня публикуем, говорит, что его самым свежим экспериментом в области архитектуры программных проектов стало создание рабочего веб-приложения с использованием исключительно языка Rust и с минимально возможным применением шаблонного кода. В этом материале он хочет поделиться с читателями тем, что он выяснил, разрабатывая приложение и отвечая на вопрос о том, готов ли уже Rust к применению его в различных сферах веб-разработки.


Читать дальше →
Total votes 58: ↑56 and ↓2 +54
Comments 12

Бум бессмысленной занятости

Reading time 11 min
Views 74K
Оригинал статьи опубликован 7 июня 2018 года в журнале The New Yorker

У всё большего количества людей работа становится бессмысленной. Есть ли какая-то польза от однообразной рутины?


В своей новой книге антрополог Дэвид Грэбер ищет диагноз и эпидемиологию того, что он называет «бесполезными работами, о которых никто не хочет говорить». Иллюстрация: Martina Paukova

Бредовая работа как бумажные отходы накапливается в офисах с неизбежностью февральского снега. Отчёты об обоснованиях… Что это? Никто не знает. И всё же они накапливаются вокруг, согретые ксероксом, чтобы их никто не читал. Документы о передовом опыте? Никто понятия не имеет, даже авторы. Кто-то думал, что электронный документооборот избавит нас от этой чуши. Он ошибся. Теперь весь день вы получаете электронные письма о «близости к потребителю» (о, боже); «нашей команде» (чьей команде?); а ещё новое ПО отчётности о расходах требует, чтобы все квитанции сохранялись на бумаге, сканировались и загружались на сервер, который их отклоняет, потому что вы не смогли предзагрузить постфактум важную форму. Если повезёт, подобная чушь отнимет лишь несколько часов обычной рабочей недели. Но если вы среди миллионов менее удачливых американцев, то это суть всей вашей трудовой деятельности.
Читать дальше →
Total votes 50: ↑47 and ↓3 +44
Comments 127

DevDay на функционале. Запись докладов

Reading time 1 min
Views 3.6K


Возможно, вы уже знаете, что раз в месяц 2ГИС проводит DevDay — открытые встречи для общительных разработчиков. Так, 15 декабря мы собрали 140 человек, чтобы потолковать про функциональное программирование.

Делимся с вами записью двух выступлений. Первое видео будет полезно для входа в тему ФП, второе — расскажет о подводных камнях Akka Streams.
Давайте посмотрим
Total votes 20: ↑19 and ↓1 +18
Comments 0

GraphQL — новый взгляд на API. Ч.1

Reading time 4 min
Views 43K
Всем привет, хочу поделиться накопленными знаниями по GraphQL, которые сформировались на основе около сотни прочитанных статей/доков и месяца построения API используя GraphQL.

Ну что ж, начнем с того, что такое GraphQL?


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

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

Рассмотрим пример простого запроса пользователя.



Клиент точно указывает, какие данные он хочет получить, используя декларативную, графо-подобную структуру, которая очень напоминает формат JSON.
Читать дальше →
Total votes 31: ↑24 and ↓7 +17
Comments 90

Иерархические структуры данных и производительность

Reading time 14 min
Views 22K

Введение



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

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

Читать дальше →
Total votes 123: ↑120 and ↓3 +117
Comments 27

Как расправиться с читерами и не переписать весь код

Reading time 4 min
Views 31K


Несколько лет назад появился прототип игры War Robots (тогда она еще называлась Walking War Robots). Это был первый опыт Pixonic в жанре тактического PvP, поэтому многие будущие проблемы были заложены в коде изначально. Но несмотря на ряд трудностей (популярность проекта стремительно росла, небольшая команда не могла полностью изменить архитектуру игры в краткие сроки), нам в итоге удалось свести к минимуму количество читеров, а также исправить другие недостатки оригинального кода. Расскажу немного подробнее.
Читать дальше →
Total votes 36: ↑33 and ↓3 +30
Comments 72

10 уроков рекомендательной системы Quora

Reading time 11 min
Views 9.5K


Привет, Хабр! Как директор по аналитике Retail Rocket, я периодически посещаю различные профильные мероприятия, и в сентябре 2016 года мне посчастливилось побывать на конференции RecSys, посвященной рекомендательным системам, в Бостоне. Было очень много интересных докладов, но мы решили сделать перевод одного из них Lessons Learned from Building Real­-Life Recommender Systems. Он очень интересен с позиции того, как Machine Learning применять в production системах. Про сам ML написано множество статей: алгоритмы, практика применения, конкурсы Kaggle. Но вывод алгоритмов в production — это отдельная и большая работа. Скажу по секрету, разработка алгоритма занимает всего 10%-20% времени, а вывод его в бой все 80-90%. Здесь появляется множество ограничений: какие данные где обрабатывать (в онлайне или оффлайне), время обучения модели, время применения модели на серверах в онлайне и т.д. Критически важным аспектом также является выбор оффлайн/онлайн метрик и их корреляция. На этой же конференции мы делали похожий доклад Hypothesis Testing: How to Eliminate Ideas as Soon as Possible, но выбрали вышеупомянутый учебный доклад от Quora, т.к. он менее специфичный и его можно применять за пределами рекомендательных систем.
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Comments 6

Асинхронность 3: Субъекторная модель

Reading time 30 min
Views 19K
Двое из ларца

Предисловие


Эта статья является продолжением цикла статей про асинхронность:

  1. Асинхронность: назад в будущее.
  2. Асинхронность 2: телепортация сквозь порталы.

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

  1. Универсальный адаптер

Введение


Рассмотрим электрон. Что он из себя представляет? Отрицательно заряженная элементарная частица, лептон, обладающий некоторой массой. Это означает, что он может участвовать по меньшей мере в электромагнитных и гравитационных взаимодействиях.
Читать дальше →
Total votes 42: ↑42 and ↓0 +42
Comments 58

ИИ для покера: как научить алгоритмы блефовать

Reading time 16 min
Views 37K
image

О том как совершенствуется искусственный интеллект, можно судить по обычным играм. За последние два десятилетия алгоритмы превзошли лучших мировых игроков: сначала пали нарды и шашки, затем шахматы, «Своя Игра» (Jeopardy!), в 2015 году — видеоигры Atari и в прошлом году — Го.


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


Но как обстоит дело с играми с неполной информацией?


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

Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Comments 17

Работа с Aerospike на scala при помощи магии макросов

Reading time 11 min
Views 14K

N|Solid


В нашем отделе бигдаты часть данных хранится в Aerospike. Потребителей довольно много, среди них два приложения, написанных на Scala, взаимодействие с базой в которых будет расширено в связи с постоянно растущими требованиями бизнеса. Единственным приличным драйвером для нас был джавовый клиент, упомянутый на сайте самой базы данных aerospike.com (http://www.aerospike.com/docs/client/java). Конвертация скаловых типов данных (а особенно иерархических) в соответствующие аэроспайковские типы приводит к большому количеству бойлерплейта. Чтобы этого избежать, необходим более удобный, а заодно и типобезопасный интерфейс.


Инженеры не любят писать много раз один и тот же код и стараются упростить и оптимизировать все повторяющиеся действия. Такие задачи часто решает кодогенерация. Поэтому мы решили написать свою библиотеку для работы с Aerospike, пользуясь макросами.


Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Comments 34

Особенности разработки мобильной MMO RTS. Часть 1

Reading time 5 min
Views 23K
В цикле статей «Особенности разработки мобильной MMO RTS» мы расскажем о работе большой команды над масштабным проектом Stormfall: Rise of Balur. Этот опыт будет полезен независимым разработчиками и студиям, которые еще не определились с выбором технологий, архитектуры и структуры команды для своей RTS.


Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Comments 32

Dive into BerkeleyDB JE. Introduction to DPL API

Reading time 9 min
Views 2.8K

Введение


Немного о сабже. BerkeleyDB — высокопроизводительная встраиваемая СУБД, поставляемая в виде библиотеки для различных языков программирования. Это решение предполагает хранение пар ключ-значение, также поддерживается возможность ставить одному ключу в соответствие несколько значений. BerkeleyDB поддерживает работу в многопоточной среде, репликацию, и многое другое. Внимание данной статьи будет обращено в первую очередь в сторону использования библиотеки, предоставленной Sleepycat Software в бородатых 90х. В этой статье будут рассмотрены основные аспекты работы с DPL (Direct Persistence Layer) API.

Примечание: все примеры в данной статье будут приведены на языке Kotlin.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Comments 10

Зачем изучать Spark?

Reading time 5 min
Views 26K
Зачем разработчикам изучать Spark? Как освоить технологию в домашних условиях? Что умеет, а чего не умеет Spark и что ждет его в будущем? Об этом – в интервью с тренером по Java и Big Data в ЕРАМ Алексеем Зиновьевым.

Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 9

MMO с нуля. С помощью Netty и Unreal Engine. Часть 1

Reading time 58 min
Views 51K
Всем привет! В нескольких статьях я хотел бы поделиться опытом создания подобия ММО игры используя Unreal Engine и Netty. Возможно архитектура и мой опыт кому-то пригодится и поможет начать создавать свой игровой сервер в противовес unreal dedicated server, который слегка прожорлив или заменить собой фреймворки для разработки многопользовательских игр такие как Photon.

В конечном итоге у нас будет клиент, который логинится или регистрируется в игре, может создавать игровые комнаты, пользоваться чатом и начинать игры, соединение будет зашифровано, клиенты будут синхронизироваться через сервер, в игре будет присутствовать одно оружие — лазер, выстрел будет проверяться на проверочном сервере. Я не стремился сделать красивую графику, тут будет только необходимый минимум, дальнейший функционал добавляется по аналогии. Логику можно легко расширить на сервере, добавить например случайные игры и балансер. Для меня было важно создать ММО базу и разобраться с тем что понадобится для создания полноценной мобильной ММО игры.

Часть 1. Общая картина, сборка библиотек, подготовка клиента и сервера к обмену сообщениями
Часть 2. Наращивание игрового функционала + алгоритм Diamond Square


Total votes 17: ↑16 and ↓1 +15
Comments 9

Information

Rating
4,349-th
Location
Усть-Каменогорск, Восточно-Казахстанская обл., Казахстан
Date of birth
Registered
Activity