В предыдущей статье про микросервисную архитектуру на основе событий с использованием Kafka Streams достаточно поверхностно был упомянут io.confluent.connect.jdbc.JdbcSourceConnector
, который использовался для вычитания данных из SQLite и отправки их в топик Kafka. Сейчас я бы хотел более подробно разобрать технологию Kafka Connect на примере io.debezium.connector.postgresql.PostgresConnector
. Как и в прошлый раз, я реализовал небольшой демо проект, код которого доступен на GitHub. В проекте кода совсем немного, однако чтобы понять все настройки, примененные в коннекторе, придется достаточно подробно пройтись по теоретической части. Итак, приступим.
IT, Электроника
Программисты всё вымирают и вымирают
Да вымереть не могут.
Откуда это всё пошло? Чем так условные «программисты» не угодили? И почему именно программисты?
Свободная музыка со словами, созданная нейронными сетями в «Бесконечном нейронном радио»
Привет, поклонники музыки! Думали ли вы о том, что наступит день, когда нейронные сети начнут генерировать музыкальные композиции в различных жанрах, начиная от Heavy Metal и заканчивая 80-ми? Недавно я выпустил большой апдейт для своего проекта с открытым исходным кодом «Нейронное радио», где музыка и подкасты созданы нейронными сетями. Однако в первых релизах музыка была без слов, и, мягко говоря, слабая. Но сегодня все изменилось. Качество музыки улучшилось, и появилась музыка со словами и голосами под жанры.
Исследуем внутренности Linux версии 0.01
Ядро Linux часто упоминают как ужасно масштабное опенсорсное ПО. На момент написания этой статьи последняя версия 6.5-rc5 состоит из 36 миллионов строк кода. Не нужно говорить, что Linux — это плод упорного многолетнего труда множества участников проекта.
Однако первая версия Linux, v0.01, была довольно маленькой. Она состояла всего из 10239 строк кода. Если исключить комментарии и пустые строки, то остаётся всего 8670 строк. Это достаточно малый объём для анализа и хорошее начало для изучения внутренностей ядер UNIX-подобных операционных систем.
Я получил удовольствие от чтения кода v0.01. Это походило на посещение Музея компьютерной истории в Маунтин-Вью — я наконец-то убедился, что легенды верны! Я написал эту статью, чтобы поделиться с вами этим восхитительным опытом.
Я бы пересмотрел вообще всё
В программировании нет вообще никаких непреложных истин. Даже самые очевидные правила могут иметь контекст, в которых их применять нельзя. К сожалению в 99% организаций есть прям заповеди, обязательные к исполнению. И есть правила, которые считаются правилами хорошего тона (как не сморкаться в занавеску). Однако всегда бывают ситуации, когда лучше все-таки сморкаться.
Вот примеры.
1) Например, DRY — don’t repeat yourself. Хорошее полезное правило, но его можно довести до маразма. Из того что я встречал на практике: есть два разных по бизнес-смыслу раздела, которые начинались с простого CRUD, и многие части (и фронта и бека) выглядели во многом абсолютно одинаково. Если их объединить с помощью общей высосанной из пальца абстракции и тем самым избавиться от небольшого дублирования кода, то потом (очень скоро) можно будет сойти с ума, потому что эти две вещи скоро разъедутся, обрастая кастомными фичами, и абстракция будет только вредить. Нельзя абстрагировать неабстрагуемое, даже если DRY нарушен.
«[Немного] дублирования обходится гораздо дешевле, чем неправильная абстракция» — Сэнди Мец
Т.е. DRY — хороший принцип, но бывают исключения.
Развлекаемся с электрофоретическими дисплеями
Как-то перебирая старый хлам в попытке навести порядок, я наткнулся на старую электронную книжку, купленную больше 15 лет тому назад. Когда-то я ей активно пользовался, но, несмотря на то, что операционка была на базе Linux, она была очень склонна к подвисаниям. Разогнутая скрепка, с помощью которой можно было сбросить устройство, стала ее непременным атрибутом. Потом я купил другую книжку, уже за смешные деньги, но у нее никаких проблем не наблюдалось.
А старая лежала, постепенно превращаясь в тыкву. Нет, с электроникой было все в порядке, и даже аккумулятор не умер за это время. Но вот приятный на ощупь мягкий пластик задней крышки превратился в какую-то сопливую субстанцию, которую в руки без омерзения уже не взять.
Messaging для чайников. Утилизируем все возможности RabbitMQ на Python
Всем привет! Так уж получилось, что совсем недавно, в процессе написания документации для проекта, мне пришлось перерыть всю официальную документацию RabbitMQ и тонну статей разного качества на тему разных видов маршрутизации в этом брокере.
Оказалось, что материала на эту тему много, но он либо объясняет совсем базовые случаи, либо уходит в такие дебри, которые крайне далеки и тяжелы для человека, который хочет "просто разобраться".
Простых и понятных примеров на Python тоже мало, так как они заставляют вас вникать не только в особенности различных вариантов маршрутизации RabbitMQ, но и в особенности используемых библиотек. Для человека, который видит что-то pika
-подобное первый раз, это может быть испытанием.
Поэтому я и решил написать эту статью: она нацелена на "чайников" - вы легко можете показать ее вашим джунам, и этого уже должно быть достаточно для начала работы с RabbitMQ.
Примеры в статье будут приведены с использованием фреймворка Propan, чтобы не утруждать джуновский мозг лишними деталями установления соединения, канала и тд.
Переходы и конверсии — что вы упускаете, фокусируясь только на этих показателях в programmatic-рекламе
В мире цифровой рекламы мы всегда стремимся к измеримым результатам, которые бы позволили посчитать отдачу от вложений в маркетинг. Переходы и конверсии, безусловно, играют важную роль в оценке эффективности кампаний. Однако фокусировки только на этих метриках может быть недостаточно для полного понимания ценности programmatic-рекламы.
Часто считается, что охватная реклама (т. е. целью которой являются просмотры и частота взаимодействия с аудиторией) менее полезна, и ее обязательно и всегда должны сопровождать конкретные результаты. Например, таким результатом может быть добавление в корзину определенных товаров или пополнение депозита игровых онлайн-сервисов на минимальную сумму. Но, на наш взгляд, есть несколько причин, почему эта точка зрения не совсем основательна.
SectorC: компилятор Си в пределах 512 байт
SectorC (github) – это компилятор Си, написанный на ассемблере x86-16 и умещающийся в загрузочный сектор 512 байт машины x86. Он поддерживает достаточно обширную функциональность Си для создания реальных и интересных программ, являясь при этом, пожалуй, самым миниатюрным компилятором Си из когда-либо написанных.
Легенда о слоне: как IT-компания Steepler создала Dendy и основала российский консольный рынок
Dendy Junior II Автор: Ravy
Рисковый проект, который осчастливил миллионы детей.
17-го декабря 2022-го года исполнилось 30 лет с момента выхода Dendy на российский рынок. Кажется, что за последние десять лет о консоли сказали уже всё: популярные ютуберы регулярно делятся историями об играх своего детства, а блогеры и коллекционеры давно разобрали все виды картриджей и особенности клонов Nintendo Famicom.
Но эти материалы зачастую поданы через призму ностальгии и детских воспоминаний. Для полноты картины не хватало только всеобъемлющей бизнес-истории бренда, которая охватила бы весь период от запуска Dendy на российский рынок до закрытия компании Steepler.
Изначально этот текст я написал эксклюзивно для российского издания третьего тома серии «История Nintendo» от Флорана Горжа. С разрешения издательства «Белое Яблоко» я адаптировал материал и сильно дополнил его.
Гайд для новичков по установке Kubernetes
© кадр из к/ф «Пираты Карибского моря»
С чего начинается практическое освоение любой системы? Правильно, с установки. Данный гайд является компиляцией из народной мудрости, официальной документации, а также собственного опыта и призван помочь новичкам разобраться с тем, как же все таки устанавливать Kubernetes.
Мы потренируемся ставить как вырожденный кластер «все-в-одном», состоящий только из одного узла, так и настоящий высокодоступный (high available) кластер с полным резервированием. В процессе работы мы рассмотрим применение различных контейнерных движков (Container Runtimes): cri-o, containerd, связки Docker + cri-dockerd plugin. Кроме этого, потренируемся настраивать отказоустойчивый балансировщик нагрузки на базе keepalived и haproxy.
Весь процесс установки будет детальным образом прокомментирован и разложен по шагам, а в реперных точках мы будем делать снимки состояния виртуальных машин (snapshots), что позволит рассмотреть различные варианты установки без необходимости делать одну и ту же работу по несколько раз.
После GPT-4
Если одной метафорой, то произошли первые испытания термоядерной бомбы. Специалисты с благоговейным ужасом и радостью смотрят на поднимающийся над планетою гриб. Остальное человечество живёт обычной жизнью, пока не зная, современниками какого события они являются. Мне нравилось изучение цифровых технологий, сильнее интересовала только работа человеческой психики и междисциплинарное знание, которое можно объединить под условным названием «общая теория информации». Эти увлечения позволили увидеть в смене цифр смену эпох. Постараюсь объяснить суть случившегося максимально доступно.
Как работает ChatGPT: объясняем на простом русском эволюцию языковых моделей с T9 до чуда
В последнее время нам почти каждый день рассказывают в новостях, какие очередные вершины покорили языковые нейросетки, и почему они уже через месяц совершенно точно оставят лично вас без работы. При этом мало кто понимает — а как вообще нейросети вроде ChatGPT работают внутри? Так вот, устраивайтесь поудобнее: в этой статье мы наконец объясним всё так, чтобы понял даже шестилетний гуманитарий!
Bittorrent с нуля на Go
BitTorrent — протокол загрузки и распространения файлов через Интернет. В отличие от традиционных отношений клиент/сервер, когда загрузчики подключаются к центральному серверу (например, для просмотра фильма на Netflix или загрузки веб-страницы), участники сети BitTorrent, называемые одноранговыми узлами, загружают фрагменты файлов друг с друга. Это то, что делает BitTorrent одноранговым протоколом. Исследуем, как он работает, и создадим собственный клиент, который сможет находить одноранговые узлы и обмениваться с ними данными.
Среда разработки PHP на базе Docker
Решение на базе Docker, которое позволит создать на локальном компьютере универсальную среду разработки на PHP за 30 - 40 минут. Несколько версий PHP — 7.3 и 7.1 с набором наиболее востребованных расширений. Готовый к работе монитор процессов Supervisor. Предварительно сконфигурированный веб-сервер Nginx. Базы данных: MySQL 5.7, MySQL 8, PostgreSQL, MongoDB 4.2, Redis. Настройка основных параметров окружения через файл .env. Возможность модификации сервисов через docker-compose.yml.
Управление Яндекс.Станцией и другими колонками с Алисой из Home Assistant
Мы привыкли называть умными устройства, которыми можем управлять, не вставая с дивана. Включить лампочку, вентилятор, кофеварку или стиральную машину.
Колонки с Яндекс Алисой хоть и называются умными, но вы не можете изменить громкость не находясь рядом с колонкой (орать через всю комнату не считается). Вы не можете перемотать песню из мобильного приложения Яндекса. Или остановить сказку, запущенную на колонке в детской, из своей кровати в спальне.
В январе 2020 кто-то обнаружил, что Яндекс.Станция поддерживает некий локальный протокол. На GitHub начали появляться проекты по управлению Яндекс.Станцией. Мне хватило пару часов, чтоб разобраться и выпустить первую версию компонента для Home Assistant. Это достаточно популярная система домашней автоматизации, написанная на языке Python.
На сегодняшний день компонент поддерживает управление всеми колонками с Яндекс Алисой и при желании может выглядеть так:
Учим Алису здороваться
Хочу поделиться опытом добавления некоторой вольности Алисе (внутри колонок поддерживающих локальный API).
Идея заключается в том, чтобы Алиса реагировала на присутствующих людей. Для этого их необходимо идентифицировать, например, с помощью распознавания лиц. В статье будет использован самый простой (на мой взгляд) вариант создания модели для распознавания лиц – тренировка модели в Google Teachable Machine, так как он не требует знаний и хорошего железа.
AiPainter — цифровой AI-художник
Доброго времени суток, уважаемые коллеги по цеху! Хочу рассказать о своём последнем проекте, написанном по фану - обёртке для трёх нейросетевых проектов: нашумевшей StableDiffusion (используется её форк InvokeAI) и более старых - lama-cleaner и rembg.
Вселенная Стивена Вольфрама
Примерно полтора года назад я опубликовал на Хабре перевод статьи Стивена Вольфрама: "Кажется, мы близки к пониманию фундаментальной теории физики, и она прекрасна". С тех пор Вольфрам и его коллеги по Physics Project продвинулись далеко вперед в своих исследованиях теории всего. И как мне кажется, результаты этих исследований поистине ошеломительны не только с точки зрения физики и математики, но и с точки зрения стоящей за этими научными изысканиями философии. Сегодня я представляю вашему вниманию свой пересказ новой статьи Стивена Вольфрама "Why Does the Universe Exist?", в которой подробно излагается его целостный взгляд на природу Вселенной.
На создание участка карты мозга дрозофилы ушло 12 лет, усилия 250 человек и $40 млн
Дрозофилы, или плодовые мушки — отличный материал для исследований. Просто потому, что они очень быстро размножаются, давая потомство, и эволюционные изменения можно отслеживать в течение недель, а не месяцев или лет.
Пригодились эти мушки и ученым, которые занимаются изучением мозга. Поскольку ганглий у этих насекомых небольшой, то и отсканировать его можно без особых проблем. На днях ученые из Janelia Research Campus опубликовали результат своей 12-летней работы — карту мозга дрозофилы, самую подробную на текущий момент.
Information
- Rating
- Does not participate
- Registered
- Activity