Pull to refresh
6
0
Андрей Найченко @naychenko

Эксперт по цифровизации, платформам, экосистемам

Send message

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

Reading time9 min
Views5.4K

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

Многие из самых быстрорастущих инфраструктурных стартапов сегодня создают продукты для управления данными. Эти системы позволяют принимать решения на основе данных (аналитические системы) и управлять продуктами на основе данных, в том числе с помощью машинного обучения (оперативные системы). Они варьируются от конвейеров, по которым передаются данные, до решений для их хранения, SQL-движков, которые анализируют данные, дашбордов для мониторинга, которые упрощают понимание данных — от библиотек машинного обучения и data science до автоматизированных конвейеров данных, каталогов данных и т.д.

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

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments1

Краткое введение в Машинное обучение

Reading time13 min
Views25K

Пару лет назад я рассказывал жене сказки, что когда я буду старым маразматиком, мое ближайшее окружение не будет страдать от этого, ведь за мной будут ухаживать роботы. Новости о прогрессе искусственного интеллекта впечатляли меня (нейросетки то, нейросетки сё), свет в конце тоннеля манил, как и зарплаты специалистов в этой области. Разумеется, я не смог пройти мимо и решил погрузиться в Machine Learning.

Для старта хотелось почитать что-то совсем базовое, но поиск по строкам "машинное обучение для чайников" вменяемых результатов не дал. Все статьи начинались с тривиальных рассуждений, а потом перепрыгивали на загадочные формулы без особых пояснений. Я не сдавался и добыл несколько книг с хорошими отзывами, но получил то же самое, только уже на 600 страниц. Спустя полгода поисков могу сообщить вам следующее: при текущих темпах развития AI я не увижу роботов в старости, для работы с Machine Learning на самом деле не нужна математика, и как минимум одна статья "машинное обучение для чайников" существует, вы ее сейчас читаете.

Читать далее
Total votes 9: ↑8 and ↓1+9
Comments18

Почему я остаюсь с Лиспом (и вам тоже стоит)

Reading time15 min
Views15K

Зрелый язык может использоваться немногими. Но он остаётся частью моей кодовой базы.

Как давнего пользователя (и активного сторонника) Scheme/Common Lisp/Racket, меня иногда спрашивают, почему я предпочитаю их. К счастью, я всегда возглавлял собственные инженерные организации, поэтому мне никогда не приходилось оправдывать это перед руководством. Но есть еще более важная аудитория - мои собственные коллеги-инженеры, которые никогда не имели удовольствия использовать эти языки. Хотя им не требуются оправдания, они все же спрашивают из интеллектуального любопытства, а иногда и из-за удивления, почему я не схожу с ума по поводу следующей крутой функции, которая будет в этом месяце добавлена в Python или Scala, или что бы там ни было в их вкусе.

Читать далее
Total votes 32: ↑24 and ↓8+24
Comments136

Шпаргалка для собеседования .Net

Reading time9 min
Views104K

Однажды (давно это было) мы с 3-мя коллегами решили на интерес проходить собеседования, вакансии отбирали уровня middle. Занимались этим недели 2, по нескольку собеседований в неделю каждый.

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

Читать далее
Total votes 17: ↑11 and ↓6+10
Comments0

DDD, CQRS, Event-Driven, модель акторов и микросервисы

Reading time11 min
Views15K

Хочу поделиться своим опытом реализации микросервисной архитектуры поверх actor-model фреймоворков, таких как AKKA и Microsoft Orleans.



Моя гипотеза: если использовать один стек для реализации микросервисов, то можно:


  • Существенно снизить сложность разработки и объем кода
  • Упростить отладку и поиск ошибок
  • Упростить деплой
  • Упростить задачу определения границ сервисов
  • Избавится от ограничения применения stateful-сервисов
  • Упростит работу с распределенными транзакциями.

О… Похоже на «серебряную пулю»! Давайте разберемся, так ли это.

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

Простое и удобное журналирование ошибок для сайтов на .NET Core

Reading time3 min
Views6.1K

Возможно, многим знакома библиотека ELMAH (Error Logging Modules and Handlers), которая позволяет организовать простое журналирование ошибок для любого сайта, созданного с помощью .NET Framework.



Этот простой и проверенный временем инструмент выручал меня во многим проектах.
Несколько лет назад, создавая свой новый проект под .NET Core я с досадой обнаружил, что ELMAH не работает под .NET Core.


Но это же opensource проект! Несколько выходных в работе над форком, и вот готова первая версия ELMAH работающая под .NET Core.


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

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

Монады с точки зрения программистов (и немного теории категорий)

Reading time14 min
Views51K

Введение


Как узнать, что человек понял, что такое монады? Он сам вам об этом расскажет в первые 5 минут общения и обязательно попробует объяснить. А ещё напишет об этом текст и по возможности где-нибудь его опубликует, чтобы все остальные тоже поняли, что такое монады.


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


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


Моё изложение во многом основывается на книге Бартоша Милевски "Теория категорий для программистов", которая создавалась как серия блогпостов, доступна в PDF, а недавно вышла в бумаге.


Примеры приводятся на Haskell, предполагается, что читатель знаком с синтаксисом и основными понятиями языка. В упомянутой книге есть примеры и на С++, можете сравнить чистоту и понятность кода.


Читать дальше →
Total votes 56: ↑52 and ↓4+48
Comments267

Как мы делали SCRUM

Reading time20 min
Views39K
Страшный сон команды разработчиков — это когда до начала разработки надо «нырнуть» в неизвестную предметную область и «проэстимейтить» half-baked idea. При этом нужно буквально «подписаться кровью» за результат в назначенный срок за фиксированные деньги.

На деле дать точную оценку неточных требований нереально. Типичный путь в проектном менеджменте — составить подробнейшее ТЗ перед началом разработки. А затем реализовать весь функционал одним большим куском. Но такой "вотерфольный" подход грозит уже другими рисками: запуском проекта в стиле «большого взрыва» — когда ты получаешь первый результат в самом конце проекта. И он может оказаться очень далек от реальных бизнес целей и нужд пользователей.

Зачем так рисковать, если можно пойти совершенно другим путем?

Зачем SCRUM


Когда при ознакомлении с проектом есть понимание «мы знаем, что мы этого не знаем» и даже «мы не знаем, где границы того, чего мы не знаем», выручает SCRUM



Специфика SCRUM может отпугнуть, если никогда не работал с этим фреймворком, тем, что на старте еще не известна длина пути, который предстоит пройти, чтобы получить работающий проект и удовлетворяющий на 100%.

Заказчику трудно — он НЕ может подготовить стратегический план развития проекта с достоверными датами релизов. Неизвестность пугает, особенно когда нужно оплачивать этот путь уже сейчас.
Читать дальше →
Total votes 20: ↑15 and ↓5+10
Comments13

О стримах и таблицах в Kafka и Stream Processing, часть 1

Reading time16 min
Views61K
* Michael G. Noll — активный контрибьютор в Open Source проекты, в том числе в Apache Kafka и Apache Storm.

Статья будет полезна в первую очередь тем, кто только знакомится с Apache Kafka и/или потоковой обработкой [Stream Processing].


В этой статье, возможно, в первой из мини-серии, я хочу объяснить концепции Стримов [Streams] и Таблиц [Tables] в потоковой обработке и, в частности, в Apache Kafka. Надеюсь, у вас появится лучшее теоретическое представление и идеи, которые помогут вам решать ваши текущие и будущие задачи лучше и/или быстрее.

Содержание:

* Мотивация
* Стримы и Таблицы простым языком
* Иллюстрированные примеры
* Стримы и Таблицы в Kafka простым языком
* Пристальный взгляд на Kafka Streams, KSQL и аналоги в Scala
* Таблицы стоят на плечах гигантов (на стримах)
* Turning the Database Inside-Out
* Заключение
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments4

Apache Kafka и RabbitMQ: семантика и гарантия доставки сообщений

Reading time17 min
Views74K


Подготовили перевод следующей части многосерийной статьи, где сравнивается функциональность Apache Kafka и RabbitMQ. В этой публикации речь идёт о семантике и гарантии доставки сообщений. Обращаем ваше внимание, что автор учитывал Кафку до версии 0.10 включительно, а в версии 0.11 появился exactly-once. Тем не менее, статья остаётся актуальной и полна полезных с практической точки зрения моментов.
Предыдущие части: первая, вторая.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments2

О сущностях, DTO, ORM и Lazy Load

Reading time3 min
Views13K
Объектно-ориентированная парадигма — стандарт для прикладного ПО. Реляционные СУБД — стандарт хранения данных в прикладном ПО. Да, можно писать и на Haskell и хранить данные исключительно в ClickHouse. Но речь о мейнстриме.

ORM позволяет натянуть сову на глобус сделать вид, что RDBMS'а нет и данные хранятся в объектной модели, более подходящей для ООП. Остается «маленькая» такая проблемка — эта абстракция, как и многие другие, «течет». Там где в объектной модели ссылка на другой объект в базе данных foreign key и id. В момент материализации сущности мы встаем перед выбором:

  1. Загрузить все и упасть с out of memory / timeout
  2. Явно указать какие зависимости мы хотим загрузить, а какие — нет и нарушить принцип tell don't ask
  3. Загружать зависимости неявно по требованию с помощью Lazy Load и получить проблемы с производительностью где-то в вызываемом коде

Какую-же ногу себе отрезать: левую или правую?

TLDR Lazy Load не так плох, если использовать только для записи и не использовать при чтении. Но все не так просто и есть куча нюансов.
Режь правую!
Total votes 30: ↑26 and ↓4+22
Comments6

Изоморфизм спешит на помощь

Reading time4 min
Views17K

«Изоморфизм» — одно из базовых понятий современной математики. На конкретных примерах на Haskell и C# я не только растолкую теорию для нематематиков (не используя при этом никаких непонятных математических символов и терминов), но и покажу как этим можно пользоваться в повседневной практике.

Читать дальше →
Total votes 51: ↑30 and ↓21+9
Comments105

Создаём систему электронного хронометража гонок

Reading time9 min
Views10K

185282-11516937085b2ed4ea7e36b


По будням, я уже 17 лет занимаюсь разработкой корпоративного софта, у меня было много разных хобби, но в итоге нашёл то, что держит уже 5 лет и не собирается отпускать. С 2013 года большую часть свободного времени я посвящаю мотокроссу и эндуро на внедорожных мотоциклах, в том числе регулярно участвовал в любительских соревнованиях. После неудачного дропа в июне 2017 года я оказался в больнице с полным переломом правой плечевой кости. Вышел из больницы, пришёл в себя и стало ясно, что ездить не получится ещё месяца два — три, а привычка к активной деятельности осталась. Тогда и решил, что надо попробовать самому организовать гонку для своих друзей. С технической точки зрения меня интересовал хронометраж, о том как я делаю собственную систему и провожу гонки читайте под катом.

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

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

Reading time8 min
Views13K
image

Одри Хепбёрн умерла в 1993 году, но в 2013 году она все же снялась в рекламе шоколадной плитки Galaxy. Ее показали едущей в автобусе вдоль побережья Амальфи и смотрящий на проезжающий мимо кабриолет. В 2016 году Питер Кушинг, который умер еще в 1994 году, повторно сыграл свою роль злодея Гранд Мофф Таркина в фильме «Изгой-один: Звёздные войны. Истории». Такие воскрешения не новы, но они все еще достаточно редки, чтобы считаться новостью. Все же достижения в области спецэффектов, все чаще с использованием искусственного интеллекта, упрощают создание убедительных подделок.

В последние месяцы это вызвало беспокойство, потому что пропагандисты смогут использовать эту технологию для создания видеороликов, в которых политические деятели произносят компрометирующие заявления. Например, видео, созданное в апреле на новостном веб-сайте BuzzFeed, сообщает, что Барак Обама, по-видимому, говорит: «Мы вступаем в эпоху, когда наши враги смогут создать впечатление, будто кто-то говорит необходимые им слова в определенный момент времени». В мае бельгийская политическая партия сняла фальшивое видео о том, как Дональд Трамп позволяет себе лживые высказывания о климатической политике Бельгии. В обоих случаях видео выглядит немного нечетко, а голос предоставлен имитатором, но эта технология быстро совершенствуется. Это заставило дюжину исследователей искусственного интеллекта заключить пари о том, что фальшивое видео нарушит промежуточные выборы в Америке в конце 2018 года. Тим Хванг, ученый из Гарварда, следил за этим пари.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments112

Инфраструктура System.Transactions в мире .NET

Reading time33 min
Views30K

Встречали ли вы в C# конструкцию типа using (var scope = new TransactionScope(TransactionScopeOption.Required))? Это значит, что код, выполняющийся в блоке using, заключается в транзакцию и после выхода из этого блока изменения будут зафиксированы или отменены. Звучит понятно, пока не начинаешь копать глубже. И чем глубже копаешь, тем «страньше и страньше» становится. Во всяком случае, у меня при более близком знакомстве с классом TransactionScope и вообще транзакциями .NET возникла целая уйма вопросов.

Что за класс TransactionScope? Как только мы используем конструкцию using (var scope = new TransactionScope()), все в нашей программе сразу становится транзакционным? Что такое «управляющий ресурсами» (Resource Manager) и «управляющий транзакциями» (Transaction Manager)? Можно ли написать свой управляющий ресурсами и как он «подключается» к созданному экземпляру TransactionScope? Что такое распределенная транзакция и правда ли, что распределенная транзакция в SQL Server или Oracle Database — это то же самое, что и распределенная транзакция .NET?

В данной публикации я постарался собрать материал, помогающий найти ответы на указанные вопросы и сформировать понимание транзакций в мире .NET.
Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments44

История создания Pac-Man

Reading time7 min
Views29K
30 ноября RUVDS совместно с Музеем советских игровых автоматов проведут первый в России турнир по олдскульным видеоиграм Game Overnight. Продолжается предварительный турнир на сайте игры, остается все меньше времени до финала. А пока мы решили вспомнить историю создания культовой игры Pac-Man.

Для компании Namco, в начале 1980-х, игра Pac-Man стала огромным событием. Она, без преувеличений, превратилась в настоящий символ 20 века. Вряд ли удастся найти того, кто если и не играл в Pac-Man, то хотя бы не слышал об этой игре, так как она стала одним из первых явлений игрового мира, которое проникло в сферу массовой культуры. На самом деле, игра была такой популярной, что дополнительные доходы Namco, связанные с Pac-Man, превысили те, что компания получила от продажи игровых автоматов.



Интерес к игре был столь велик, что фирмы, занимающиеся игровыми автоматами, заказывали сразу по несколько устройств, а не по одному, что было обычным для новых игр. Такая стратегия выглядела оправданной в свете возможной потери доходов, связанной с тем, что людям, чтобы поиграть в Pac-Man, приходилось стоять в очереди. Поэтому в залах ставили по несколько автоматов, стремясь собрать в их ящики для денег побольше монет, что было хорошо и для владельцев игровых салонов и для Namco.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments33

NewSQL: SQL никуда не уходит

Reading time26 min
Views42K
Tренду NoSQL уже почти 10 лет, и можно смело делать какие-то выводы и обобщения. Этим и займемся, поговорим про развитие NoSQL.

Вспомним, как родился NoSQL. Посмотрим, что в нем хорошо, а что плохо, и что выдержало испытание временем. Разберем возможности, которые уже есть в SQL, и которые теперь появляются в NoSQL СУБД. Выделим уникальные ценности NoSQL, и заглянем чуть-чуть вперед в то, что на рынке будет завтра.

А поможет нам в этом Константин Осипов (@kostja) — разработчик и архитектор СУБД Tarantool, который в своем докладе на РИТ++ 2017 говорил про тренды NewSQL, ведь архитектору полагается понимать, что происходит в мире баз данных, чтобы, как минимум, не изобретать велосипед.


О спикере: Сейчас Константин Осипов работает над Tarantool, но ранее участвовал в разработке MySQL, и, когда Константин начинал работу над новой базой данных, его очень смущало, зачем это делать вообще, зачем нужна очередная база данных. В частности, отношение к NoSQL было очень скептическим, как к «недоSQL».

Однако, развитие продолжается, некоторые изначальные принципы отмирают, и, в то же время, NoSQL базы перенимают возможности от классического SQL. На основании результатов этих нескольких лет бурной трансформации вполне можно подвести промежуточные итоги и позволить себе сделать несколько предсказаний на будущее.
Total votes 65: ↑64 and ↓1+63
Comments65

Мифы и легенды Agile — oт фараонов до наших дней

Reading time6 min
Views12K
«Всё — яд, всё — лекарство; то и другое определяет доза.»
Парацельс



Принято отсчитывать историю Agile от февраля 2001 года, когда появился на свет довольно странный документ — Agile Manifesto. По большому счёту текст документа скомпонован из философских очевидностей (например, «простота — искусство не делать лишней работы») и спорных утверждений (например, «лучшие технические требования, дизайн и архитектура получаются у самоорганизованной команды»). Но этот документ странен не столько своим содержанием (мало ли что может прийти в голову на лыжном курорте), сколько эпичностью последовавших изменений в отрасли разработки программного обеспечения. В кратчайшее время появилось множество методик, реализующих методологию «гибкой» разработки, которые торжественным маршем пошли по миру, захватывая умы Исполнителей и кошельки Заказчиков. Адептами этот движ преподносится как некая волшебная пилюля, решающая всё. Дошло до того, что благородному дону честному программисту уже стало неприличным признаться в причастности к разработке ПО по традиционной ориентации методологии. Попробуем же разобраться в причинах и следствиях явления, на примере Scrum-а, как наиболее распространённого проявления Agile.
Читать дальше →
Total votes 33: ↑24 and ↓9+15
Comments33

GeekBrains научит языку программирования С++

Reading time2 min
Views14K


Наш образовательный портал объявляет о запуске курса обучения С++. Студент-«крестоносец» будет востребован в любой отрасли IT: от проектирования и разработки программного обеспечения до гейм-девелопмента. C++ отлично подходит для решения сложных задач, на нем пишутся все высоконагруженные системы, к примеру, браузеры Google Chrome и Firefox, или легендарная World Of Warcraft. По данным hh.ru, в России сегодня открыто свыше трех тысяч вакансий программистов C++, в том числе в Москве — более тысячи.

Читать дальше →
Total votes 42: ↑26 and ↓16+10
Comments32

Механики геймификации: рейтинг

Reading time12 min
Views15K
Рейтинг. Что это и как его использовать в геймификации? Вопрос кажется простым, даже риторическим, но на деле и у такой очевидной механики есть много нюансов, в том числе, обусловленных эволюцией человека.


Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments6

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity