Как стать автором
Обновить
3
0
Сергей @sd1ver

Scala developer

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

Scala: структура данных в пространстве типов — множество

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров2.1K

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


В настоящей заметке мы рассмотрим реализацию структуры "множество типов" на основе кортежей с использованием инструментов Scala 3.

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии0

Airflow — инструмент, чтобы удобно и быстро разрабатывать и поддерживать batch-процессы обработки данных

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

image


Привет, Хабр! В этой статье я хочу рассказать об одном замечательном инструменте для разработки batch-процессов обработки данных, например, в инфраструктуре корпоративного DWH или вашего DataLake. Речь пойдет об Apache Airflow (далее Airflow). Он несправедливо обделен вниманием на Хабре, и в основной части я попытаюсь убедить вас в том, что как минимум на Airflow стоит смотреть при выборе планировщика для ваших ETL/ELT-процессов.


Ранее я писал серию статей на тему DWH, когда работал в Тинькофф Банке. Теперь я стал частью команды Mail.Ru Group и занимаюсь развитием платформы для анализа данных на игровом направлении. Собственно, по мере появления новостей и интересных решений мы с командой будем рассказывать тут о нашей платформе для аналитики данных.

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

Основы библиотеки Circe или простой JSON-парсер на Scala

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.9K

Всем привет!

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

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

Apache Flink ML – прогнозирование в реальном времени

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.3K

Всем привет!

В этой статье рассмотрим применение библиотеки Apache Flink ML для построения конвейеров машинного обучения. Затем реализуем простой проект по прогнозированию поведения системы, а также ответим на вопросы: какие задачи Machine Learning подходят для Flink и какие особенности Flink делают его подходящим для использования в задачах Machine Learning.

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Как подружить Spark и S3 для обработки файлов

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров3.9K

Всем привет!

В этой статье мы расскажем, как нам удалось настроить взаимодействие Apache Spark и S3 для обработки больших файлов: с какими проблемами пришлось столкнуться и как нам удалось их решить.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Объяснение парадокса Ферми в рамках космической социологии Лю Цысиня

Время на прочтение7 мин
Количество просмотров27K
Млечный путь

Не будем спойлерить сюжет или технологии, описанные в увлекательной трилогии «Память о прошлом Земли», нас интересует объяснение парадокса Ферми, данное китайским писателем, и только оно.
Читать дальше
Всего голосов 38: ↑34 и ↓4+30
Комментарии558

Осознанное употребление воды

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

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

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

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

Читать далее
Всего голосов 19: ↑15 и ↓4+13
Комментарии45

Построение потоковой stateful обработки данных на Akka

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

В одном из исследовательских проектов нам с коллегами пришла идея совместить Akka Stream, Akka event sourcing (typed persistence) и Akka cluster sharding для реализации stateful stream processing. На мой взгляд, получилось достаточно интересное и лаконично решение, которым я бы и хотел с вами поделиться.

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

Потоковый захват изменений из PostgreSQL/MySQL с помощью Apache Flink

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

Привет! Сегодня мы поговорим и попробуем на практике реализацию паттерна Change Data Capture (далее – CDC) в Apache Flink. 

Статья разделена на несколько частей: в первой мы рассмотрим теоретические основы Change Data Capture, варианты реализации и сферы применения. Во второй – обратимся к особенностям CDC-коннекторов экосистемы Apache Flink, а также выделим самые интересные фичи (а заодно и немного расскажем об Apache Flink для тех, кто раньше с ним не сталкивался). В третьей части – перейдем к практике, закатаем рукава и реализуем несложный сценарий захвата изменений из WAL PostgreSQL, приправленный объединениями, агрегацией, стеком ELK и целым кластером Flink, правда в миниатюре.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии4

Разрабы работают медленно и дорого — и люди считают нас лентяями. Просто в разработке всё сложно

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

— Люди не из индустрии вечно не понимают программистов: что они там такое сложное делают, если видно только две кнопки? Что за непонятные слова говорят? Почему так много получают?


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


Читать дальше →
Всего голосов 188: ↑152 и ↓36+147
Комментарии533

Пол Грэм «Как стать богатым» (глава из книги Hackers&Painters)

Время на прочтение28 мин
Количество просмотров12K
Это эссе было впервые опубликовано в книге Hackers & Painters, и в онлайн появилось только в декабре 2005 года. Я решил воскресить его с веб-архива, потому что это одно из самых важных эссе в моей жизни, а я сейчас делаю коллекцию лонгридов, которые оказали влияние на мировоззрение: проект Ontol

image

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

Обычно понятие стартап связано с высокими технологиями. Настолько сильно, что выражение «технологический стартап» — почти тавтология. Как правило, это небольшая компания, которая взялась за решение сложной технической проблемы.

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

Тезис


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

Давайте порассуждаем. Предположим, что вы хороший хакер (в первоначальном, положительном смысле этого слова) 20-25 лет.
Читать дальше →
Всего голосов 17: ↑14 и ↓3+20
Комментарии2

Наиболее интересные факты о Ceph по результатам опроса пользователей в 2019 году

Время на прочтение3 мин
Количество просмотров4.3K
TL;DR: наиболее интересные факты о Ceph в таблицах и графиках, полученных из результатов опроса пользователей Ceph в 2019 году.


Читать дальше →
Всего голосов 14: ↑13 и ↓1+18
Комментарии0

Тонкости авторизации: обзор технологии OAuth 2.0

Время на прочтение14 мин
Количество просмотров78K
Информационная система Dodo IS состоит из 44 различных сервисов, таких как Трекер, Кассы ресторана или Базы знаний и многих других. Чтобы не отвлекаться на несколько аккаунтов, 3 года назад мы написали сервис Auth для реализации сквозной аутентификации, а сейчас пишем уже вторую версию, в основе которого лежит стандарт авторизации OAuth 2.0. Этот стандарт довольно сложный, но если у вас сложная архитектура с множеством сервисов, то OAuth 2.0 вам пригодится при разработке своего сервиса аутентификации. В этой статье я постарался рассказать о стандарте максимально просто и понятно, чтобы вы сэкономили время на его изучение.


Читать дальше →
Всего голосов 28: ↑27 и ↓1+33
Комментарии19

Ищем утечки памяти с помощью Eclipse MAT

Время на прочтение7 мин
Количество просмотров10K
Пожалуй, все java-разработчики, участвующие в коммерческих проектах рано или поздно сталкиваются с проблемой утечки памяти, влекущей за собой медленную работу приложения и почти неизбежно приводящую в итоге к известной OutOfMemoryError. В данной статье будет рассмотрен реальный пример такой ситуации и способ поиска ее причины с помощью Eclipce Memory Analizer.
Читать дальше →
Всего голосов 10: ↑8 и ↓2+12
Комментарии2

Монадные трансформеры для практикующих программистов

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

Прикладное введение в монадные трансформеры, от проблемы к решению


Представьте, что вы сидите за рабочим столом, допиваете кофе и готовитесь к написанию кода на Scala. Функциональное программирование оказалось не так страшно, как его малюют, жизнь прекрасна, вы усаживаетесь поудобнее, сосредотачиваетесь и начинаете писать новый функционал, который нужно сдать на этой неделе.


Всё как обычно: несколько лаконичных однострочных выражений (да, детка, это Scala!), несколько странных ошибок компилятора (о, нет, Scala, нет!), лёгкое сожаление о том, что вы написали такой запутанный код… И вдруг вы сталкиваетесь со странной проблемой: выражение for не компилируется. «Ничего страшного», — думаете вы: «сейчас гляну на StackOverflow», как вы это делаете ежедневно. Как все мы это делаем ежедневно.


Но сегодня, похоже, неудачный день.


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

Руководство Google по форматированию кода на Java

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

1. Введение


В данном документе описаны стандарты написания кода на языке программирования Java в корпорации Google. Исходный код Java считается соответствующим этим стандартам тогда и только тогда, когда он удовлетворяет всем описанным в документе правилам.

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

Читать дальше →
Всего голосов 16: ↑7 и ↓9+3
Комментарии5

Теория категорий для программистов: предисловие

Время на прочтение5 мин
Количество просмотров109K
Вот уже некоторое время я обдумываю идею написать книгу о теории категорий для программистов. Не компьютерных теоретиков, программистов — скорее инженеров, чем ученых. Я знаю, что это звучит безумно, и я сам достаточно напуган. Я знаю, что есть огромная разница между наукой и техникой, потому, что я работал по обе стороны баррикад. Но у меня всегда был очень сильный порыв объяснить вещи. Я восхищаюсь Ричардрм Фейнманом, который был мастером простых объяснений. Я знаю, я не Фейнман, но я буду стараться изо всех сил. Я начинаю с публикации этого предисловия, которое должно мотивировать читателя изучить теорию категорий, и надеюсь на начало дискуссии и обратную связь.

Я постараюсь в нескольких параграфах убедить вас, что эта книга написана для вас, и развеять все ваши сомнения в необходимости изучения этой, одной из самых абстрактных областей математики, в свое драгоценное свободное время.
Читать дальше →
Всего голосов 55: ↑51 и ↓4+47
Комментарии25

Вероятно, хватит рекомендовать «Чистый код»

Время на прочтение13 мин
Количество просмотров187K
Возможно, мы никогда не сможем прийти к эмпирическому определению «хорошего кода» или «чистого кода». Это означает, что мнение одного человека о мнении другого человека о «чистом коде» обязательно очень субъективно. Я не могу рассматривать книгу Роберта Мартина «Чистый код» 2008 года с чужой точки зрения, только со своей.

Тем не менее, для меня главная проблема этой книги заключается в том, что многие примеры кода в ней просто ужасны.
Читать дальше →
Всего голосов 128: ↑118 и ↓10+137
Комментарии427

Робот-тележка 2.0. Часть 1. Автономная навигация домашнего робота на базе ROS

Время на прочтение7 мин
Количество просмотров11K
Проект строился на базе достаточно известного в своих кругах другого проекта — linorobot (linorobot.org), при этом использовались доступные простому обывателю компоненты. Цели, которые были поставлены: добиться автономного перемещения робота в домашних условиях, используя low-cost компоненты, оценить производительность мини-пк для заявленных целей, настроить стек навигации для перемещения в узких пространствах хрущевок.


Статьи цикла:
Робот-тележка 2.0. Часть 3. Внутри навигационного стека ROS, немного majordomo
Робот-тележка 2.0. Часть 2. Управление в rviz и без.Элементы красоты в rviz
Робот-тележка 2.0. Часть 1. Автономная навигация домашнего робота на базе ROS
Всего голосов 22: ↑22 и ↓0+22
Комментарии12

Гетерогенная конкурентная обработка данных в реальном времени строго один раз

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

Конкурентная сосиска


Аннотация


Обработка данных в реальном времени ровно один раз (exactly-once) — задача крайне нетривиальная и требующая серьезного и вдумчивого подхода на всей цепочке вычислений. Некоторые даже считают, что такая задача невыполнима. В реальности хочется иметь подход, обеспечивающий отказоустойчивую обработку вообще без каких-либо задержек и использование различных хранилищ данных, что выдвигает новые еще более жесткие требования, предъявляемые к системе: concurrent exactly-once и гетерогенность персистентного слоя. На сегодняшний день такое требование не поддерживает ни одна из существующих систем.


Предложенный подход последовательно раскроет секретные ингредиенты и необходимые понятия, позволяющие относительно просто реализовать гетерогенную обработку concurrent exactly-once буквально из двух компонент.


Введение


Разработчик распределенных систем проходит несколько стадий:


Стадия 1: Алгоритмы. Здесь происходит изучение основных алгоритмов, структур данных, подходов к программированию типа ООП и т.д. Код исключительно однопоточный. Начальная фаза вхождения в профессию. Тем не менее, достаточно непростая и может длиться годами.


Стадия 2: Многопоточность. Далее возникают вопросы извлечения максимальной эффективности из железа, возникает многопоточность, асинхронность, гонки, дебагинг, strace, бессонные ночи… Многие застревают на этом этапе и даже начинают с какого-то момента ловить ничем не объяснимый кайф. Но лишь единицы доходят до понимания архитектуры виртуальной памяти и моделей памяти, lock-free/wait-free алгоритмах, различных асинхронных моделях. И почти никто и никогда — верификации многопоточного кода.


Стадия 3: Распределенность. Тут такой треш творится, что ни в сказке сказать, ни пером описать.

Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии6
1
23 ...

Информация

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