Как стать автором
Обновить
6
0
Евгений @BoDRbI

VoIP-разработчик

Отправить сообщение

Как я запустил свою первую мобильную игру и провалился

Время на прочтение19 мин
Количество просмотров55K

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

Читать далее
Всего голосов 106: ↑105 и ↓1+131
Комментарии84

Чистые транзакции в гексагональном Go

Время на прочтение9 мин
Количество просмотров15K

В современной микросервисной разработке очень популярна чистая архитектура (она же луковая). Этот подход ясно отвечает на много архитектурных вопросов, а также хорошо подходит для сервисов с небольшой кодовой базой. Другая приятная особенность чистой архитектуры состоит в том, что она отлично сочетается с Domain Driven Development — они отлично дополняют друг друга.


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


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


Читать дальше →
Всего голосов 17: ↑16 и ↓1+16
Комментарии34

Система динамического разрушения стен в Radio Viscera

Время на прочтение16 мин
Количество просмотров5.2K

В этой статье я расскажу о системе динамических разрушений, созданной для видеоигры Radio Viscera.

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


Рисунок 1. Базовые концепции, лежащие в основе системы
Всего голосов 23: ↑23 и ↓0+23
Комментарии1

Делаем сервер из Android-телефона

Время на прочтение8 мин
Количество просмотров122K

Некоторое время назад мне пришла в голову интересная идея — превратить свои старые телефоны (их скопилось немало за десять лет) в серверы, в качестве альтернативы покупке Raspberry Pi.


image


На то было несколько причин: во-первых, у телефонов есть батарея, что для сервера практически бесплатный мини-UPS, во-вторых, внутренняя память смартфона (UFS) работает быстрее и надёжнее, чем SD-карта. В-третьих, у телефонов имеется экран, по которому можно отслеживать состояние сервера.


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


TL;DR: в этом посте будут разобраны вопросы установки PostmarketOS на смартфон,
поднятия на нём в качестве примера Docker и веб-приложения в нём.

За длинной версией под кат
Всего голосов 99: ↑98 и ↓1+128
Комментарии97

Разработка REST-серверов на Go. Часть 1: стандартная библиотека

Время на прочтение9 мин
Количество просмотров81K
Это — первый материал из серии статей, посвящённой разработке REST-серверов на Go. В этих статьях я планирую описать реализацию простого REST-сервера с использованием нескольких различных подходов. В результате эти подходы можно будет сравнить друг с другом, можно будет понять их относительные преимущества друг перед другом.

Первый вопрос разработчиков, которые только начинают применять Go, часто выглядит так: «Какой фреймворк стоит использовать для решения задачи X». И хотя это — совершенно нормальный вопрос, если задавать его, имея в виду веб-приложения и серверы, написанные на многих других языках, в случае с Go при ответе на этот вопрос нужно принять во внимание множество тонкостей. Существуют серьёзные аргументы как «за», так и «против» использования фреймворков в Go-проектах. Я, работая над статьями из этой серии, вижу своей целью объективное разностороннее исследование этого вопроса.


Читать дальше →
Всего голосов 35: ↑32 и ↓3+41
Комментарии8

Учимся писать информативные комментарии к GIT-коммитам используя общепринятую семантику

Время на прочтение5 мин
Количество просмотров38K

Когда я только знакомился с системами контроля версий (особенно с git), я рассматривал их только как приложения, которые помогают мне хранить историю изменений моего кода. Т.е. когда случается что-то нехорошее, я могу просмотреть историю коммитов и вернуться к последнему «хорошему» состоянию кода в моем репозитории.

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

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

Читать далее
Всего голосов 17: ↑14 и ↓3+17
Комментарии35

Теория инвестиций для начинающих, часть 1

Время на прочтение16 мин
Количество просмотров71K
Эдвард Мэтью Ворд. Пузырь Компании Южных морей. 1847 г. Галерея Тейт, Лондон.

В какие ценные бумаги вкладывать деньги? Как накопить на пенсию? Кто такие ETF’ы и почему все с ними носятся? Зачем покупать акции, если рынок может упасть? Такие вопросы я слышу от студентов и коллег, когда читаю лекции о деривативах. В принципе, неудивительно. Деривативы — это что-то далёкое из мира больших банков, а личные инвестиции намного ближе к телу.

Можно было бы ответить коротко: «Покупайте индексные фонды, это хорошо!» К сожалению, такой ответ не объясняет, почему это хорошо. Если бы я услышал его 15 лет назад, когда ещё не интересовался финансами, то он не нашёл бы отклика в моём сердце. Пришлось прослушать не один курс лекций, чтобы осознать, какая экономическая теория стоит за этим советом, и начать применять его на практике.

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

Не секрет, что в финансах много математики. Я постарался соблюсти баланс. Я считаю, что интуитивное понимание главных экономических идей важнее, чем конкретная формула. Даже если вы пропустите вообще все формулы, то вы всё равно поймёте суть и получите полезные знания. С другой стороны, если вы хотели бы размять мозги не ахти какой сложной математикой, то у вас будет такая возможность.
Читать дальше →
Всего голосов 31: ↑31 и ↓0+31
Комментарии18

Как правильно составить ТЗ на администрирование: наши грабли

Время на прочтение10 мин
Количество просмотров14K
Вообще, тема неисчерпаемая. Ковыряется как-то Лёшка (наш инженер) в стойке в ЦОДе повышенной ответственности, где стоит несколько банков. В соседнем ряду наблюдает совершенно дикую картину: парень подошёл к блейду. Выдернул жёсткий диск, что-то записал, ВОТКНУЛ ЕГО НАЗАД, выдернул второй, записал, поставил, выдернул третий. Лёша ему: «Пссс, парень, ты чего?» Он: «Ну так инвентаризация же!» И сразу как-то всё стало понятно.

Я работаю в департаменте вычислительных систем КРОК, мы поддерживаем всё то, что можно кинуть в стену. То есть сервера, системы хранения данных и прочее дорогое железо в дата-центрах. Ну и то, что на нём — операционки, базовую инфраструктуру. Простейшая базовая услуга — ЗИП, то есть замена комплектующих вовремя. Более сложные — это заменять сисадминов заказчика.

Самый страшный момент контракта — это составление техзадания. Расскажу про те грабли, которые мы ощупали вместе с клиентами и о том, как их избежать. Ну и приложу пример шаблона ТЗ, который используем мы.
Читать дальше →
Всего голосов 48: ↑47 и ↓1+51
Комментарии26

Советы руководителю от руководителя

Время на прочтение11 мин
Количество просмотров117K
Привет, Хабр! Я управляю командами разработки уже 10 лет.

Недавно меня попросили поделиться на внутренней конференции «секретами управления» с другими руководителями. Поводом стала низкая текучка в моём подразделении и здоровый дух внутри команды — так было на всех моих работах. Я отказался, сославшись на то, что не делаю для этого ничего особенного. Сработала внутренняя установка «не будь выскочкой».

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

Поэтому выключаю тумблер «не будь выскочкой» и делюсь «секретами».



Тут не будет стандартных «делегируй», «налаживай процесс», «стой в правильной позе на стендапе» — об этом написано уже достаточно. Будет о другом.
Читать дальше →
Всего голосов 124: ↑121 и ↓3+149
Комментарии201

Go и кэши CPU

Время на прочтение8 мин
Количество просмотров21K

Источник: unsplash.com

По словам Джеки Стюарта, трехкратного чемпиона мира по гонкам Формулы-1, понимание автомобиля помогло ему стать лучшим пилотом: «Гонщику не обязательно быть инженером, но нужен интерес к механике».

Мартин Томпсон (создатель LMAX Disruptor) применил эту концепцию к программированию. Если в двух словах, то понимание базового оборудования улучшит ваши навыки, когда речь заходит о разработке алгоритмов, структур данных и так далее.

Команда Mail.ru Cloud Solutions перевела статью, автор которой углубился в устройство процессора и рассмотрел, как понимание некоторых концепций CPU помогает принимать оптимальные решения.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+66
Комментарии17

Yargy-парсер и библиотека Natasha. Извлечения структурированной информации из текстов на русском языке

Время на прочтение12 мин
Количество просмотров85K
В 2020 году библиотека Natasha значительно обновилась, на Хабре опубликована статья про актуальную версию. Чтобы использовать инструменты, описанные в этом тексте, установите старую версию библиотеки pip install natasha<1 yargy<0.13.

Раздел про Yargy-парсер актуален и сейчас.


Есть стандартная задача извлечения именованных сущностей из текста (NER). На входе текст, на выходе структурированные, нормализованные объекты, например, с именами, адресами, датами:



Задача старая и хорошо изученная, для английского языка существует масса коммерческих и открытых решений: Spacy, Stanford NER, OpenNLP, NLTK, MITIE, Google Natural Language API, ParallelDots, Aylien, Rosette, TextRazor. Для русского тоже есть хорошие решения, но они в основном закрытые: DaData, Pullenti, Abbyy Infoextractor, Dictum, Eureka, Promt, RCO, AOT, Ahunter. Из открытого мне известен только Томита-парсер и свежий Deepmipt NER.

Я занимаюсь анализом данных, задача обработки текстов одна из самых частых. На практике оказывается, что, например, извлечь имена из русского текста совсем непросто. Есть готовое решение в Томита-парсере, но там неудобная интеграция с Python. Недавно появилось решение от ребят из iPavlov, но там имена не приводятся к нормальной форме. Для извлечения, например, адресов («ул. 8 Марта, д.4», «Ленинский проезд, 15») открытых решений мне не известно, есть pypostal, но он чтобы парсить адреса, а не искать их в тексте. C нестандартными задачами типа извлечения ссылок на нормативные акты («ст. 11 ГК РФ», «п. 1 ст. 6 Закона № 122-ФЗ») вообще непонятно, что делать.

Год назад Дима Веселов начал проект Natasha. С тех пор код был значительно доработан. Natasha была использована в нескольких крупных проектах. Сейчас мы готовы рассказать о ней пользователям Хабра.
Natasha — это аналог Томита-парсера для Python (Yargy-парсер) плюс набор готовых правил для извлечения имён, адресов, дат, сумм денег и других сущностей.
В статье показано, как использовать готовые правила из Natasha и, самое главное, как добавлять свои с помощью Yargy-парсера.
Читать дальше →
Всего голосов 87: ↑86 и ↓1+85
Комментарии33

One-cloud — ОС уровня дата-центра в Одноклассниках

Время на прочтение22 мин
Количество просмотров23K


Алоха, пипл! Меня зовут Олег Анастасьев, я работаю в Одноклассниках в команде Платформы. А кроме меня, в Одноклассниках работает куча железа. У нас есть четыре ЦОДа, в них около 500 стоек более чем с 8 тысячами серверов. В определенный момент мы поняли, что внедрение новой системы управления позволит нам более эффективно загрузить технику, облегчить управление доступами, автоматизировать (пере)распределение вычислительных ресурсов, ускорить запуск новых сервисов, ускорить реакции на масштабные аварии.


Что же из этого получилось?

Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии7

Предсказываем отток с помощью нейросети

Время на прочтение6 мин
Количество просмотров17K
image

Проблема предсказания оттока клиентов — одна из самых распространенных в практике Data Science (так теперь называется применение статистики и машинного обучения к бизнес-задачам, уже все знают?). Проблема достаточно универсальна: она актуальна для многих отраслей — телеком, банки, игры, стриминг-сервисы, ритейл и пр. Необходимость ее решения довольно легко обосновать с экономической точки зрения: есть куча статей в бизнес-журналах о том, что привлечь нового клиента в N раз дороже, чем удержать старого. И ее базовая постановка проста для понимания так, что на ее примере часто объясняют основы машинного обучения.

Для нас в Plarium-South, как и для любой игровой компании, эта проблема также актуальна. Мы прошли длинный путь через разные постановки и модели и пришли к достаточно оригинальному, на наш взгляд, решению. Все ли так просто, как кажется, как правильно определить отток и зачем тут нейросеть, расскажем под катом.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии3

Эксфильтрация в Metasploit: DNS туннель для Meterpreter

Время на прочтение5 мин
Количество просмотров11K
Тема DNS туннеля для организации скрытного канала связи c командным сервером — (С2 или С&C) не нова, но мне многие годы не давало покоя одна вещь — отсутствовала реализация полнофункционального решения с пентестерской(хакерской) точки зрения (не считая кастомные вещи для себя). Не было удобного пути загрузки пейлода и контроля удаленного агента (трояна) в одном флаконе без использования сторонних сервисов типа Iodine или DNSCat2, которые не были созданы для скрытного прибывания в системе и делали много локального шума: открывали TCP порты, открывали активные соединения самостоятельно и вообще висели отдельным процессом, и все это характеризуется одним словом — «палево».

Год назад, мы в рамках нашей DEF CON группы DC7812, чисто ради «fun and profit» и для пользы сообщества, задались задачей решить эту проблему, и сделать нормальный DNS туннель в транспорте Metasploit для Meterpreter агента (пока только для MS Windows). Другими словами, что бы Meterpreter сам использовал этот туннель, нативным образом. Очевидно, что это же подразумевало и создание stager нагрузки (шеллкодов), что бы этот самый meterpreter (или иной другой пейлод MSF) грузить по тому же DNS прям из засплойченого процесса. Таким образом мы будем иметь стандартную нативную поддержку транспорта, что добавит дополнительные возможности пентестерам. Ну и я рад сообщить, что мы закончили разработку и теперь любой может это использовать или хотя бы потестить. Под катом можно почитать про интересные фичи и возможности нашей разработки (о чем мы рассказывали на конференции ZeroNights прошедшей в Москве в Ноябре).

Всего голосов 27: ↑24 и ↓3+21
Комментарии5

Две крупнейших CRM — Salesforce и Zoho — сравнение телефонных интеграций

Время на прочтение5 мин
Количество просмотров6.5K

Недавно мы интегрировали облачную телефонию Zadarma с двумя крупнейшими мировыми CRM системами — Salesforce и Zoho CRM. Интеграция традиционно бесплатна. Но функционал интеграций значительно отличается, как и функционал самих CRM систем. Через что пришлось пройти для каждой интеграции, и что в итоге получилось, опишем подробнее.
Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии2

Видеонаблюдение в подъезде своими силами

Время на прочтение20 мин
Количество просмотров162K


Прочитал относительно недавнюю публикацию о видеонаблюдении и решил описать свой опыт. Считаю мое решение оптимальным по соотношению цена/функциональность, но с удовольствием выслушаю критику более опытных людей.

Итак, задача — минимальными материальными и временными ресурсами сделать видеонаблюдение в подъезде перед входной (в квартиру) дверью. Желательно не записывать круглые сутки “пустые” картинки, т.е. необходимо детектирование движения. Также хорошо бы иметь удаленный доступ к записям.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии60

Сервис оповещения миллиона пользователей с помощью RabbitMQ

Время на прочтение20 мин
Количество просмотров57K

Почти в самом начале создания платформы (некоего фундамента, фреймворка на котором базируются все прикладные решения) нашего облачного веб-приложения СБИС мы поняли, что без инструмента, позволяющего сообщить пользователю о каком-либо событии с сервера, жить будет довольно-таки трудно. Все мы хотим мгновенно видеть новое сообщение от коллеги (которому лень пройти 10 метров), поднимающую корпоративный дух новость от руководства, очень важную задачу от отдела тестирования или получение поощрения (особенно денежного). Но путь становления был тернист, поэтому расскажем немного про трудности, которые мы встретили при взрослении от 5.0e3 до 1.0e6 одновременных подключений от пользователей.


Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии24

Телефония в офис за палку колбасы

Время на прочтение4 мин
Количество просмотров9.1K


Многие представители бизнеса еще живут в предрассудках, мол телефония для офиса — это дорого. Мы хотим избавить от разочарований и показать пример, как можно телефонизировать свой офис любых размеров: подключить облачную АТС, да еще и привязать телефонию к бесплатной CRM-системе и тратить на всё про всё 300-500 рублей в месяц. Кстати палку сырокопченой колбасы за такие деньги найти очень сложно.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии11

Выводим бизнес на международный рынок за 5 минут

Время на прочтение3 мин
Количество просмотров4.2K
Один из самых частых запросов наших клиентов — покупка виртуального номера для ведения бизнеса в другой стране или в другом регионе. Раскладываем по полочкам и рассказываем, как всего за 5 евро в месяц увеличить географию своего бизнеса.

Zadarma
Читать дальше →
Всего голосов 8: ↑6 и ↓2+4
Комментарии7

Кластер Asterisk. Централизация информации о регистрации

Время на прочтение4 мин
Количество просмотров13K
У большинства администраторов, работающих с телефонией на базе Asterisk, в компаниях, где штат превышает 500+ сотрудников, рано или поздно встает вопрос о полноценной кластеризации Active/Active. Предпосылками к этому может быть и наличие региональных ответвлений, и желание сделать систему надежнее. Тема обширная и не является целью данной статьи в полном объеме, которая написана с целью показать один из самых быстрых и надежных способов добыть информацию о регистрации устройств на серверах в кластере, с целью последующей централизации или/и дистрибуции внутри кластера. Логично предположить, что самый производительный способ — это быть частью самого Asterisk.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии62

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность