Pull to refresh
28
0
Aleksandr Tavgen @alextavgen

Technical Architect

Send message

Sampler. Консольная утилита для визуализации результата любых shell команд

Reading time5 min
Views84K

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


Sampler


Наблюдение за изменением состояния в базе данных, мониторинг размера очередей, телеметрия с удаленных серверов, запуск деплой скриптов и получение нотификации по завершению — конфигурируется за минуту простым YAML файлом.


Код доступен на гитхабе. Инструкции по установке — для Linux, macOS и (экспериментально) Windows.

Читать дальше →
Total votes 298: ↑297 and ↓1+296
Comments54

Три истории микросервисов, или MSA для Enterprise

Reading time21 min
Views7.9K
Идея микросервиса заключается в том, чтобы строить приложение как набор небольших сервисов с выделенной функциональностью, каждый из которых работает в собственном процессе. Такой подход имеет ряд преимуществ, но не это тема сегодняшнего рассказа, а то, как идея микросервисной архитектуры выглядит с точки зрения российского корпоративного бизнеса и управленцев IT на предприятиях.


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

Микросервисы — одна из самых важных и значимых составляющих Web-scale архитектуры, имеющая наибольшие последствия для переделки устройства техник и паттернов в Enterprise. Трудно сейчас сказать, на каком участке сейчас находится сама технология — может быть, на самом верхнем пике, и нам предстоит еще десять раз разочароваться. Но, тем не менее, это не повод не изучать её прямо сейчас.
Total votes 24: ↑23 and ↓1+22
Comments1

Флаппи Бёрд: — Поехали

Reading time11 min
Views24K

Это рассказ о том, как написать свою игру на Corona.
Уровень вхождения — минимальный (и ботаник с кафедры алгебры поймет).

Я напомню, что Corona — это движок для создания 2D игр на все платформы и, touch-touch, сегодня День космонавтики. Сюжет для игры выбран соответсвующий и, разумеется, мы повторяем за первым космонавтом
-Поехали!
Total votes 56: ↑53 and ↓3+50
Comments31

Never Fail Twice, или как построить мониторинговую систему с нуля

Reading time10 min
Views12K
У нас было 2 виртуальные машины, 75 сайтов, десятки тысяч машин для мониторинга, тысячи метрик, две базы данных и одна очередь ActiveMQ, Python и целое множество библиотек всех сортов и расцветок, pandas, а также numpy, dash, flask, SQL Alchemy. Не то чтобы это был необходимый запас для системы, но если начал собирать компоненты, становится трудно остановиться. Единственное, что вызывало у меня опасение — это JavaScript. Ничто в мире не бывает более беспомощным, безответственным и порочным, чем JS зомби. Я знал, что рано или поздно мы перейдем и на эту дрянь.

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

Лабораторная работа: введение в Docker с нуля. Ваш первый микросервис

Reading time26 min
Views337K
Привет, хабрапользователь! Сегодня я попробую представить тебе очередную статью о докере. Зачем я это делаю, если таких статей уже множество? Ответов здесь несколько. Во-первых не все они описывают то, что мне самому бы очень пригодилось в самом начале моего пути изучения докера. Во-вторых хотелось бы дать людям к теории немного практики прямо по этой теории. Одна из немаловажных причин — уложить весь накопленный за этот недолгий период изучения докера опыт (я работаю с ним чуть более полугода) в какой-то сформированный формат, до конца разложив для себя все по-полочкам. Ну и в конце-концов излить душу, описывая некоторые грабли на которые я уже наступил (дать советы о них) и вилы, решение которых в докере просто не предусмотрено из коробки и о проблемах которых стоило бы задуматься на этапе когда вас распирает от острого желания перевести весь мир вокруг себя в контейнеры до осознавания что не для всех вещей эта технология годна.

Что мы будем рассматривать в данной статье?

В Части 0 (теоретической) я расскажу вам о контейнерах, что это и с чем едят
В Частях 1-5 будет теория и практическое задание, где мы напишем микросервис на python, работающий с очередью rabbitmq.
В Части 6 — послесловие
Читать дальше →
Total votes 108: ↑107 and ↓1+106
Comments36

Почему дизайн Go плох для умных программистов

Reading time7 min
Views74K

На протяжении последних месяцев я использую Go для имплементаций Proof of Concept (прим.пер.: код для проверки работоспособности идеи) в свободное время, отчасти для изучения самого языка программирования. Программы сами по себе очень просты и не являются целью написания статьи, но сам опыт использования Go заслуживает того, чтобы сказать о нем пару слов. Go обещает быть (прим.пер.: статья написана в 2015) массовым языком для серьезного масштабируемого кода. Язык создан в Google, в котором активно им пользуются. Подведя черту, я искренне считаю, что дизайн языка Go плох для умных программистов.

Читать дальше →
Total votes 175: ↑159 and ↓16+143
Comments358

Винеровский хаос или Еще один способ подбросить монетку

Reading time9 min
Views23K

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

  • Первый «вау-эффект» я испытал от Центральной предельной теоремы. Берем кучу случайных величин, устремляем их количество в бесконечность и получаем нормальное распределение. И совсем неважно как распределены эти величины, неважно, будь это подбрасывания монетки или капли дождя на стекле, вспышки на Солнце или остатки кофейной гущи, результат будет всегда один — их сумма всегда стремится к нормальности. Разве что, нужно потребовать их независимость и существование дисперсии (позднее я узнал, что существует теорема и для экстремальных тяжелохвостых распределений с бесконечной дисперсией). Тогда этот парадокс долго не давал мне заснуть.
  • В какой-то момент учебы в университете такие предметы как дискретная математика и функциональный анализ слились вместе и всплыли в теорвере под видом выражения «почти наверное». Стандартный пример: вы случайно выбираете число от 0 до 1. С какой вероятностью вы ткнёте в рациональное число (привет, функция Дирихле)? Спойлер: 0. Ноль, Карл! Бесконечное множество не имеет никакой силы, если оно счетно. У вас бесконечное число вариантов, но вы не выберете ни один из них. Вы не выберете 0, или 1, или 1/2, или 1/4. Вы и не выберете 3/2.

    Да-да, что выбрать 1/2, что выбрать 3/2, вероятность нулевая. Вот только в 3/2 вы не ткнёте точно, таковы условия, а в 1/2 вы не попадёте ну… «почти наверное». Концепция «почти всюду»/«почти наверное» забавляет математика, а обывателя заставляет крутить пальцем у виска. Многие ломают себе мозг в попытке классифицировать нули, но результат того стоит.
  • Третий по счёту, но не по силе, «вау-эффект» настиг уже на переходе в advanced level
Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments25

Взаимодействие веб-страницы с Ethereum

Reading time4 min
Views18K
В сети появилось довольно много материалов про разработку для блокчейн Ethereum и про смарт-контракты, а так же про то, как создавать эти самые смарт-контракты.

В конце концов, есть официальная документация и stackoverflow.

В то же время, долго разбираться в документации не хочется, и многие разработчики в последнее время хотят побыстрее что-то пощупать руками и написать что-нибудь под эфириум, а так как вопросов возникает масса и источники разрознены, я решил собрать в одном месте простой пошаговый мануал с картинками по созданию своего первого dapp (от decentralized app) — децентрализованного приложения. Он будет представлять из себя связку смарт-контракта с веб-интерфейсом. То есть чтобы с помощью веба можно было доставать информацию из блокчейна и пихать ее туда. Постараюсь быть кратким, шаги буду объяснять по ходу дела.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments1

Как мы музицировали с нейронными сетями

Reading time5 min
Views4.7K
В 2016 год Google Brain Group выпустил проект Magenta в открытый доступ. Magenta позиционируется как проект, который задает и отвечает на вопросы:«Можем ли мы использовать машинное обучение для создания музыки и искусства достойных внимания? Если да, то как? Если нет, то почему нет?». Вторая цель проекта — это построить сообщество художников, музыкантов и исследователей в области машинного обучения.


Total votes 6: ↑5 and ↓1+4
Comments0

Краткий курс машинного обучения или как создать нейронную сеть для решения скоринг задачи

Reading time28 min
Views209K
image

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

Если тебе интересно машинное обучение, то приглашаю в «Мишин Лернинг» — мой субъективный телеграм-канал об искусстве глубокого обучения, нейронных сетях и новостях из мира искусственного интеллекта.

Вопросы, которые разобраны в статье:

• Как собрать и подготовить данные для построения модели?
• Что такое нейронная сеть и как она устроена?
• Как написать свою нейронную сеть с нуля?
• Как правильно обучить нейронную сеть на имеющихся данных?
• Как интерпретировать модель и ее результаты?
• Как корректно оценить качество модели?
Поехали!
Total votes 51: ↑42 and ↓9+33
Comments43

Книга «Масштабирование приложений. Выращивание сложных систем»

Reading time7 min
Views11K
imageМы живем в мире растущих приложений. Практически любые программные продукты рано или поздно приходится расширять, надстраивать, адаптировать к обслуживанию растущей пользовательской аудитории и к пиковым нагрузкам. Для того чтобы подобное масштабирование протекало гладко и быстро, нужно закладывать такие возможности уже на уровне архитектуры приложения. В этой прикладной книге Ли Атчисон рассказывает не только об архитектурных тонкостях, необходимых для эффективного масштабирования приложений, но и о рисках, присущих такой работе, о грамотной организации масштабирования и об использовании облачных сервисов. Книга описывает ключевые решения и практики масштабируемых систем: доступность, классы сервисов, плановые проверки, матрицы рисков.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments0

Подборка: 10 полезных инструментов для интернет-маркетолога

Reading time3 min
Views13K


В работе интернет-маркетолога важно тратить время эффективно и оставаться собранным. В новом материале я собрала десять удобных инструментов, которые помогут генерировать идеи, писать качественные тексты, самостоятельно создавать картинки, отслеживать упоминания бренда, улучшать рекламу и проводить исследования.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments1

Особенности Jupyter Notebook, о которых вы (может быть) не слышали

Reading time10 min
Views356K
Jupyter Notebook – это крайне удобный инструмент для создания красивых аналитических отчетов, так как он позволяет хранить вместе код, изображения, комментарии, формулы и графики:



Ниже мы расскажем о некоторых фишках, которые делают Jupyter очень крутым. О них можно прочитать и в других местах, но если специально не задаваться этим вопросом, то никогда и не прочитаешь.
Читать дальше →
Total votes 49: ↑45 and ↓4+41
Comments14

AsyncIO для практикующего python-разработчика

Reading time16 min
Views381K
Я помню тот момент, когда подумал «Как же медленно всё работает, что если я распараллелю вызовы?», а спустя 3 дня, взглянув на код, ничего не мог понять в жуткой каше из потоков, синхронизаторов и функций обратного вызова.

Тогда я познакомился с asyncio, и всё изменилось.
Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments12

Делаем сервис по распознаванию изображений с помощью TensorFlow Serving

Reading time12 min
Views33K

image

Всегда наступает то самое время, когда обученную модель нужно выпускать в production. Для этого часто приходится писать велосипеды в виде оберток библиотек машинного обучения. Но если Ваша модель реализована на Tensorflow, то у меня для Вас хорошая новость — велосипед писать не придется, т.к. можно использовать Tensorflow Serving.


В данной статье мы рассмотрим как использовать Tensorflow Serving для быстрого создания производительного сервиса по распознаванию изображений.

Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments3

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

Reading time27 min
Views340K

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


Посмотрим на то, как с ними работать в Python, какие возможные методы и модели можно использовать для прогнозирования; что такое двойное и тройное экспоненциальное взвешивание; что делать, если стационарность — это не про вас; как построить SARIMA и не умереть; и как прогнозировать xgboost-ом. И всё это будем применять к примеру из суровой реальности.


UPD 01.2022: С февраля 2022 г. ML-курс ODS на русском возрождается под руководством Петра Ермакова couatl. Для русскоязычной аудитории это предпочтительный вариант (c этими статьями на Хабре – в подкрепление), англоговорящим рекомендуется mlcourse.ai в режиме самостоятельного прохождения.


Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).

Читать дальше →
Total votes 55: ↑53 and ↓2+51
Comments19

Нестандартная кластеризация, часть 3: приёмы и метрики для кластеризации временных рядов

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

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

Кластеризация временных рядов — неблагодарное дело. Даже при группировке статических данных часто получаются сомнительные результаты, что уж говорить про информацию, рассеянную во времени. Однако нельзя игнорировать задачу, только потому что она сложна. Попробуем разобраться, как выжать из рядов без меток немного смысла. В этой статье рассматриваются подтипы кластеризации временных рядов, общие приёмы и популярные меры расстояния между рядами. Статья рассчитана на читателя, уже имевшего дело с последовательностями в data science: о базовых вещах (тренд, ARMA/ARIMA, спектральный анализ) рассказываться не будет.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments5

Как научить свою нейросеть генерировать стихи

Reading time10 min
Views54K
Умоляю перестань мне сниться
Я люблю тебя моя невеста
Белый иней на твоих ресницах
Поцелуй на теле бессловесном

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

Вернее, нейронная сеть нужна лишь для первого этапа — расстановки слов в правильном порядке. С рифмовкой справляются правила, применяемые поверх предсказаний нейронной сети. Хотите узнать подробнее, как мы это реализовывали? Тогда добро пожаловать под кат.
Читать дальше →
Total votes 76: ↑75 and ↓1+74
Comments30

Вещи, которые мне надо было знать прежде, чем создавать систему с очередью

Reading time5 min
Views27K
Фото очереди в мавзолей Мао Цзэдуна —  BrokenSphere / Wikimedia Commons

В проекте, над которым я сейчас работаю, применяется распределённая система обработки данных: сначала несколько десятков машин одновременно производят некоторые сообщения, затем эти сообщения отправляются в очередь, из очереди три потока извлекают сообщения и после финальной обработки выкладывают данные в базу Redis. При этом имеется требование: от «зарождения» события в машине, производящей сообщение, до выкладывания обработанных данных в базу должно проходить не более четырёх секунд в 90% случаев.

В какой-то момент стало очевидно, что мы это требование не выполняем, несмотря на затрачиваемые усилия. Несколько произведённых измерений и маленький экскурс в теорию очередей привели меня к выводам, которые я бы хотел донести до себя самого несколько месяцев назад, когда проект только начинался. Отправить письмо в прошлое я не могу, но могу написать заметку, которая, возможно, избавит от неприятностей тех, кто только задумывается над тем, чтобы применять очереди в собственной системе.
Читать дальше →
Total votes 46: ↑44 and ↓2+42
Comments36

Отжиг и вымораживание: две свежие идеи, как ускорить обучение глубоких сетей

Reading time4 min
Views15K


В этом посте изложены две недавно опубликованные идеи, как ускорить процесс обучения глубоких нейронных сетей при увеличении точности предсказания. Предложенные (разными авторами) способы ортогональны друг другу, и могут использоваться совместно и по отдельности. Предложенные здесь способы просты для понимания и реализации. Собственно, ссылки на оригиналы публикаций:


Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments21
1

Information

Rating
Does not participate
Location
Таллин, Эстония, Эстония
Date of birth
Registered
Activity