Pull to refresh
26
0
Роман @Keks650

IT, Электроника

Send message

Kafka Connect на примере Debezium PostgresConnector

Level of difficultyMedium
Reading time19 min
Views9.1K

В предыдущей статье про микросервисную архитектуру на основе событий с использованием Kafka Streams достаточно поверхностно был упомянут io.confluent.connect.jdbc.JdbcSourceConnector, который использовался для вычитания данных из SQLite и отправки их в топик Kafka. Сейчас я бы хотел более подробно разобрать технологию Kafka Connect на примере io.debezium.connector.postgresql.PostgresConnector. Как и в прошлый раз, я реализовал небольшой демо проект, код которого доступен на GitHub. В проекте кода совсем немного, однако чтобы понять все настройки, примененные в коннекторе, придется достаточно подробно пройтись по теоретической части. Итак, приступим.

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

Программисты всё вымирают и вымирают

Level of difficultyEasy
Reading time18 min
Views124K

Да вымереть не могут.

Откуда это всё пошло? Чем так условные «программисты» не угодили? И почему именно программисты?

Читать далее
Total votes 397: ↑385 and ↓12+373
Comments583

Свободная музыка со словами, созданная нейронными сетями в «Бесконечном нейронном радио»

Level of difficultyEasy
Reading time3 min
Views7.3K

Привет, поклонники музыки! Думали ли вы о том, что наступит день, когда нейронные сети начнут генерировать музыкальные композиции в различных жанрах, начиная от Heavy Metal и заканчивая 80-ми? Недавно я выпустил большой апдейт для своего проекта с открытым исходным кодом «Нейронное радио», где музыка и подкасты созданы нейронными сетями. Однако в первых релизах музыка была без слов, и, мягко говоря, слабая. Но сегодня все изменилось. Качество музыки улучшилось, и появилась музыка со словами и голосами под жанры.

Послушать подробнее
Total votes 25: ↑24 and ↓1+23
Comments22

Исследуем внутренности Linux версии 0.01

Level of difficultyMedium
Reading time7 min
Views33K

Ядро Linux часто упоминают как ужасно масштабное опенсорсное ПО. На момент написания этой статьи последняя версия 6.5-rc5 состоит из 36 миллионов строк кода. Не нужно говорить, что Linux — это плод упорного многолетнего труда множества участников проекта.

Однако первая версия Linux, v0.01, была довольно маленькой. Она состояла всего из 10239 строк кода. Если исключить комментарии и пустые строки, то остаётся всего 8670 строк. Это достаточно малый объём для анализа и хорошее начало для изучения внутренностей ядер UNIX-подобных операционных систем.

Я получил удовольствие от чтения кода v0.01. Это походило на посещение Музея компьютерной истории в Маунтин-Вью — я наконец-то убедился, что легенды верны! Я написал эту статью, чтобы поделиться с вами этим восхитительным опытом.

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

Я бы пересмотрел вообще всё

Reading time4 min
Views76K

В программировании нет вообще никаких непреложных истин. Даже самые очевидные правила могут иметь контекст, в которых их применять нельзя. К сожалению в 99% организаций есть прям заповеди, обязательные к исполнению. И есть правила, которые считаются правилами хорошего тона (как не сморкаться в занавеску). Однако всегда бывают ситуации, когда лучше все-таки сморкаться.


Вот примеры.


1) Например, DRY — don’t repeat yourself. Хорошее полезное правило, но его можно довести до маразма. Из того что я встречал на практике: есть два разных по бизнес-смыслу раздела, которые начинались с простого CRUD, и многие части (и фронта и бека) выглядели во многом абсолютно одинаково. Если их объединить с помощью общей высосанной из пальца абстракции и тем самым избавиться от небольшого дублирования кода, то потом (очень скоро) можно будет сойти с ума, потому что эти две вещи скоро разъедутся, обрастая кастомными фичами, и абстракция будет только вредить. Нельзя абстрагировать неабстрагуемое, даже если DRY нарушен.


«[Немного] дублирования обходится гораздо дешевле, чем неправильная абстракция» — Сэнди Мец

Т.е. DRY — хороший принцип, но бывают исключения.

Читать дальше →
Total votes 261: ↑219 and ↓42+177
Comments346

Развлекаемся с электрофоретическими дисплеями

Level of difficultyEasy
Reading time21 min
Views25K

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

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

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

Messaging для чайников. Утилизируем все возможности RabbitMQ на Python

Level of difficultyEasy
Reading time9 min
Views10K

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

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

Простых и понятных примеров на Python тоже мало, так как они заставляют вас вникать не только в особенности различных вариантов маршрутизации RabbitMQ, но и в особенности используемых библиотек. Для человека, который видит что-то pika-подобное первый раз, это может быть испытанием.

Поэтому я и решил написать эту статью: она нацелена на "чайников" - вы легко можете показать ее вашим джунам, и этого уже должно быть достаточно для начала работы с RabbitMQ.

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

Поехали
Total votes 13: ↑13 and ↓0+13
Comments9

Переходы и конверсии — что вы упускаете, фокусируясь только на этих показателях в programmatic-рекламе

Reading time7 min
Views971

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

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

Читать далее
Total votes 4: ↑2 and ↓20
Comments2

SectorC: компилятор Си в пределах 512 байт

Level of difficultyMedium
Reading time9 min
Views20K

SectorC (github) – это компилятор Си, написанный на ассемблере x86-16 и умещающийся в загрузочный сектор 512 байт машины x86. Он поддерживает достаточно обширную функциональность Си для создания реальных и интересных программ, являясь при этом, пожалуй, самым миниатюрным компилятором Си из когда-либо написанных.
Читать дальше →
Total votes 152: ↑150 and ↓2+148
Comments45

Легенда о слоне: как IT-компания Steepler создала Dendy и основала российский консольный рынок

Level of difficultyEasy
Reading time49 min
Views33K
image
Dendy Junior II Автор: Ravy

Рисковый проект, который осчастливил миллионы детей.

17-го декабря 2022-го года исполнилось 30 лет с момента выхода Dendy на российский рынок. Кажется, что за последние десять лет о консоли сказали уже всё: популярные ютуберы регулярно делятся историями об играх своего детства, а блогеры и коллекционеры давно разобрали все виды картриджей и особенности клонов Nintendo Famicom.

Но эти материалы зачастую поданы через призму ностальгии и детских воспоминаний. Для полноты картины не хватало только всеобъемлющей бизнес-истории бренда, которая охватила бы весь период от запуска Dendy на российский рынок до закрытия компании Steepler.

Изначально этот текст я написал эксклюзивно для российского издания третьего тома серии «История Nintendo» от Флорана Горжа. С разрешения издательства «Белое Яблоко» я адаптировал материал и сильно дополнил его.
Читать дальше →
Total votes 176: ↑175 and ↓1+174
Comments74

Гайд для новичков по установке Kubernetes

Level of difficultyMedium
Reading time33 min
Views61K

© кадр из к/ф «Пираты Карибского моря»

С чего начинается практическое освоение любой системы? Правильно, с установки. Данный гайд является компиляцией из народной мудрости, официальной документации, а также собственного опыта и призван помочь новичкам разобраться с тем, как же все таки устанавливать Kubernetes.

Мы потренируемся ставить как вырожденный кластер «все-в-одном», состоящий только из одного узла, так и настоящий высокодоступный (high available) кластер с полным резервированием. В процессе работы мы рассмотрим применение различных контейнерных движков (Container Runtimes): cri-o, containerd, связки Docker + cri-dockerd plugin. Кроме этого, потренируемся настраивать отказоустойчивый балансировщик нагрузки на базе keepalived и haproxy.

Весь процесс установки будет детальным образом прокомментирован и разложен по шагам, а в реперных точках мы будем делать снимки состояния виртуальных машин (snapshots), что позволит рассмотреть различные варианты установки без необходимости делать одну и ту же работу по несколько раз.
Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments13

После GPT-4

Level of difficultyEasy
Reading time24 min
Views104K

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

Далее
Total votes 244: ↑230 and ↓14+216
Comments346

Как работает ChatGPT: объясняем на простом русском эволюцию языковых моделей с T9 до чуда

Level of difficultyEasy
Reading time30 min
Views368K

В последнее время нам почти каждый день рассказывают в новостях, какие очередные вершины покорили языковые нейросетки, и почему они уже через месяц совершенно точно оставят лично вас без работы. При этом мало кто понимает — а как вообще нейросети вроде ChatGPT работают внутри? Так вот, устраивайтесь поудобнее: в этой статье мы наконец объясним всё так, чтобы понял даже шестилетний гуманитарий!

Погнали →
Total votes 357: ↑350 and ↓7+343
Comments283

Bittorrent с нуля на Go

Reading time15 min
Views21K


BitTorrent — протокол загрузки и распространения файлов через Интернет. В отличие от традиционных отношений клиент/сервер, когда загрузчики подключаются к центральному серверу (например, для просмотра фильма на Netflix или загрузки веб-страницы), участники сети BitTorrent, называемые одноранговыми узлами, загружают фрагменты файлов друг с друга. Это то, что делает BitTorrent одноранговым протоколом. Исследуем, как он работает, и создадим собственный клиент, который сможет находить одноранговые узлы и обмениваться с ними данными.

Читать дальше →
Total votes 59: ↑56 and ↓3+53
Comments9

Среда разработки PHP на базе Docker

Reading time12 min
Views56K

Решение на базе Docker, которое позволит создать на локальном компьютере универсальную среду разработки на PHP за 30 - 40 минут. Несколько версий PHP — 7.3 и 7.1 с набором наиболее востребованных расширений. Готовый к работе монитор процессов Supervisor. Предварительно сконфигурированный веб-сервер Nginx. Базы данных: MySQL 5.7MySQL 8PostgreSQLMongoDB 4.2Redis. Настройка основных параметров окружения через файл .env. Возможность модификации сервисов через docker-compose.yml.

Читать далее
Total votes 23: ↑21 and ↓2+19
Comments38

Управление Яндекс.Станцией и другими колонками с Алисой из Home Assistant

Reading time4 min
Views112K

Мы привыкли называть умными устройства, которыми можем управлять, не вставая с дивана. Включить лампочку, вентилятор, кофеварку или стиральную машину.


Колонки с Яндекс Алисой хоть и называются умными, но вы не можете изменить громкость не находясь рядом с колонкой (орать через всю комнату не считается). Вы не можете перемотать песню из мобильного приложения Яндекса. Или остановить сказку, запущенную на колонке в детской, из своей кровати в спальне.


В январе 2020 кто-то обнаружил, что Яндекс.Станция поддерживает некий локальный протокол. На GitHub начали появляться проекты по управлению Яндекс.Станцией. Мне хватило пару часов, чтоб разобраться и выпустить первую версию компонента для Home Assistant. Это достаточно популярная система домашней автоматизации, написанная на языке Python.


На сегодняшний день компонент поддерживает управление всеми колонками с Яндекс Алисой и при желании может выглядеть так:


Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments42

Учим Алису здороваться

Reading time5 min
Views38K

Хочу поделиться опытом добавления некоторой вольности Алисе (внутри колонок поддерживающих локальный API).

Идея заключается в том, чтобы Алиса реагировала на присутствующих людей. Для этого их необходимо идентифицировать, например, с помощью распознавания лиц. В статье будет использован самый простой (на мой взгляд) вариант создания модели для распознавания лиц – тренировка модели в Google Teachable Machine, так как он не требует знаний и хорошего железа.

Читать далее
Total votes 25: ↑23 and ↓2+21
Comments21

AiPainter — цифровой AI-художник

Reading time3 min
Views6.2K

Доброго времени суток, уважаемые коллеги по цеху! Хочу рассказать о своём последнем проекте, написанном по фану - обёртке для трёх нейросетевых проектов: нашумевшей StableDiffusion (используется её форк InvokeAI) и более старых - lama-cleaner и rembg.

Вроде интересно, почитаю подробности
Total votes 17: ↑17 and ↓0+17
Comments11

Вселенная Стивена Вольфрама

Reading time11 min
Views48K

Примерно полтора года назад я опубликовал на Хабре перевод статьи Стивена Вольфрама: "Кажется, мы близки к пониманию фундаментальной теории физики, и она прекрасна". С тех пор Вольфрам и его коллеги по Physics Project продвинулись далеко вперед в своих исследованиях теории всего. И как мне кажется, результаты этих исследований поистине ошеломительны не только с точки зрения физики и математики, но и с точки зрения стоящей за этими научными изысканиями философии. Сегодня я представляю вашему вниманию свой пересказ новой статьи Стивена Вольфрама "Why Does the Universe Exist?", в которой подробно излагается его целостный взгляд на природу Вселенной.

Читать далее
Total votes 62: ↑60 and ↓2+58
Comments426

На создание участка карты мозга дрозофилы ушло 12 лет, усилия 250 человек и $40 млн

Reading time3 min
Views49K


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

Пригодились эти мушки и ученым, которые занимаются изучением мозга. Поскольку ганглий у этих насекомых небольшой, то и отсканировать его можно без особых проблем. На днях ученые из Janelia Research Campus опубликовали результат своей 12-летней работы — карту мозга дрозофилы, самую подробную на текущий момент.
Total votes 77: ↑76 and ↓1+75
Comments134
1
23 ...

Information

Rating
Does not participate
Registered
Activity