Как стать автором
Обновить

Разработка

Сначала показывать
Порог рейтинга
Уровень сложности

Развёртывание боевого кластера Cassandra. Часть 1

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

Это первая статья из цикла, рассказывающая о практике развёртывания небольшого кластера Cassandra: от дефолтного деплоя «из коробки» до готовности к производственной эксплуатации.

Apache Cassandra — это распределенная высокомасштабируемая NoSQL СУБД, предназначенная для надежного хранения огромных массивов данных. Cassandra используют такие гиганты как Netflix, Apple, Instagram*, Twitter* (*Запрещены в РФ), Spotify и множество других известных компаний и брендов.

Здесь не будет рассказа об архитектуре Cassandra — о ней опубликовано очень много статей и снято настолько же много видео. Особо отмечу суперский «Cassandra Day Russia» на Youtube на русском языке, записанный нашими соотечественниками из Datastax. Поэтому, если вы вообще ничего не знаете о Cassandra, то посмотрите, например, вебинар «Введение в фундаментальные принципы и основы Apache Cassandra», а уже затем добро пожаловать в подготовку боевого кластера.

Что касается самого кластера, который мы будем разворачивать, то мне достался раскатанный через Ansible деплой на 5 хост‑машин с единственным образом Cassandra 4.0 в docker‑compose и дефолтными настройками. Пятерка хост‑машин представляет собой Core i5 / 64 GB RAM / 2 x 512 GB NVMe SSD / 16 TB SATA c Debian 11.

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

Приступим?

Читать далее

Тактовая кнопка для управления питанием Raspberry Pi

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

Сказ о том, как я реализовал «взрослое» управление питанием одноплатника на одной тактовой кнопке с потреблением в выключенном состоянии 1,2 мкА.

Power On-Off

О контроллере батареи ИБП (часть 2)

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

О сколько нам открытий чудных
...

Судя по результатам голосования и комментариям к предыдущей статье, к вопросу контроля АКБ у самых простых ИБП есть некоторый интерес. Данная статья - продолжение данной темы.

Сейчас прототип собран на макетной плате (токовый шунт к которому подключено два АПЦ). Измеритель напряжения и тока INA3221, как рекомендовали в комментариях, я решил не использовать, так как дискретность его измерения 8мВ сравнима с дискретностью 12-ти битного АПЦ в обычном микроконтроллере (для ESP32 получается точность измерения около 6мВ).

Читать далее

Embedded Linux для начинающих (Часть первая)

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

Однажды по работе мне прилетела задача по сборке и запуску Linux на одноплатном ПК. Тогда я, будучи разработчиком ПО для микроконтроллеров, встал в небольшой ступор — задачка явно не решалась установкой IDE и нажатием в ней кнопки «Собрать проект». Гугл помог узнать о том, что существует некий Buildroot. В материалах по теме всё выглядело довольно просто: скачай, настрой, дерни пару команд, загрузи результат на одноплатник — и можно запускать! Получается, процесс не многим сложнее установки дистрибутива Linux или Windows на обычный ПК? Конечно же, нет. Ведь если у тебя в руках кастомный одноплатник неизвестного китайского бренда, а не BeagleBone или Raspberry Pi, то зарыться в Buildroot придётся с головой...

Читать далее

16 перемен, которые уже меняют корпоративный подход к генеративному ИИ

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

В 2023 году генеративные ИИ стремительно ворвались в потребительский сегмент, достигнув миллиарда долларов пользовательских расходов за рекордно короткий срок. В 2024-м, по нашим оценкам, потенциал выручки в enterprise-сегменте будет в несколько раз выше.

Пока в прошлом году потребители часами общались с новыми AI-компаньонами или создавали изображения и видео с помощью diffusion-моделей, корпоративное внедрение genAI, казалось, ограничивалось лишь очевидными кейсами и выпуском «GPT-оберток» в виде новых SKU. Скептики задавались вопросами: действительно ли genAI может масштабироваться в enterprise? Разве мы не застряли а трёх одинаковых сценариях? Способны ли стартапы вообще зарабатывать на этом деньги? А вдруг это просто хайп?

За последние несколько месяцев мы пообщались с десятками топ-менеджеров компаний из списка Fortune 500 и других лидеров enterprise-сегмента, а также провели опрос среди ещё 70 компаний, чтобы понять, как они используют genAI, как покупают решения и как планируют бюджеты. Мы были поражены тем, насколько сильно изменилась структура инвестиций и отношение к генеративным ИИ всего за полгода. Хотя у этих лидеров всё ещё остаются определённые опасения по поводу внедрения generative AI, они почти утроили бюджеты, расширили число рабочих кейсов, реализованных на меньших open-source моделях, и начали активно выводить задачи из стадии эксперимента в продакшн.

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

Читать далее

Software 3.0: теория Карпатого vs реальность

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

«Самый горячий язык программирования сегодня — английский», — заявил Андрей Карпатый в своей лекции о Software 3.0. Звучит как мем, но за этой фразой стоит серьезная концепция эволюции разработки ПО.


Карпатый предложил простую, но мощную модель: как мы дошли от написания кода на C++ до промптов на естественном языке. При этом сама концепция остается спорной — одни называют её «новой операционной системой», другие видят дорогой эксперимент с непредсказуемым поведением.


Разобрал лекцию, убрал пафос и оставил практические выводы для разработчиков, продакт-менеджеров и CTO, которые решают, когда и как внедрять LLM в свой продукт. Ниже — основные тезисы Карпатого и контраргументы из реальной практики.

Читать дальше →

Что не пишут в документации Kotlin Contracts: тёмные закоулки и пасхалки

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров1.6K

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

Привет! Меня зовут Виталий. Я работаю Android‑разработчиком в Альфа‑Банке. В этой статье я делюсь пасхалками и неожиданными фичами Kotlin компилятора, связанными с Kotlin Contracts: как парсится список эффектов, как работает новый Contracts API изнутри, и почему, чёрт возьми, на уровне компилятора можно использовать контракты не только на уровне функций.

Всё просто, лампово и с примерами из исходников. Даже если вы никогда не ковырялись в кишках компилятора, гарантирую: после прочтения контракты станут чуть ближе, а компилятор — чуть менее пугающим.

Читать далее

Процедурная генерация воксельных рогаликовых уровней

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

Процедурная генерация воксельных рогаликовых уровней с использованием клеточных автоматов и алгоритмов работы с сеткой ячеек на Python. Описана начальная генерация уровней, их упорядочивание, прокладка путей.

Читать далее

Инструмент оценки рисков безопасности: что нужно учесть при выборе

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

Привет, Хабр! Меня зовут Ирина Созинова, я эксперт по информационной безопасности в Авито. Моя прошлая публикация была о том, как мы выстраиваем в Авито процесс оценки рисков безопасности. В этой же статье рассказываю, на какой функционал стоит обратить внимание при выборе инструмента в целом и что было важно конкретно для нас. А еще — разбираю плюсы и минусы системы класса GRC для управления рисками. 

Читать далее

2D-скролл во Flutter

Уровень сложностиСложный
Время на прочтение18 мин
Количество просмотров2K

Да кто такой этот ваш 2D-скролл? Зачем он нужен, если ты не делаешь аналог excel? На самом деле, двунаправленная прокрутка нужна в огромном количестве сценариев использования мобильных приложений, в виде таблицы можно представить самые разные сущности — как, например, наш видеоредактор. 

Есть только одна маленькая проблема: видеоредактор Yappy кроссплатформенный, написан на Flutter, а до недавнего времени команда фреймворка предлагала только один способ реализовать 2D-скролл — очень не производительный. В статье рассказываю, в чём была была загвоздка, что есть во Flutter сейчас и каких впечатляющих результатов можно добиться собственной реализацией. 

Читать далее

Навигация без хаоса: архитектура маршрутов в масштабируемом TypeScript-проекте

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

Нам важно, чтобы поддержка пользователей была на высоком уровне, поэтому у нас есть десятки сервисов для организации обучения специалистов поддержки. Я работаю над одним из таких проектов. Он активно развивается: ежемесячно добавляем более 10 новых страниц — сейчас в проекте их больше 120.

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

Читать далее

Как работает ingress-nginx: нырнем еще глубже. Часть 2 — балансировка

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

В первой части мы разобрались с принципами работы Ingress-nginx контроллера. Теперь пришло время углубиться в то, как в Ingress-nginx устроен механизм обновления бэкендов и как реализована балансировка нагрузки на примере sticky sessions. Готовы узнать больше? Поехали!

Напомню, если вдруг забыли, эта статья написана по мотивам выступления на DevOpsConf’25, а меня зовут Алексей Колосков, я Lead DevOps из Hilbert Team.

Итак, рассмотрим, как реализовано обновление бэкендов в самом контроллере.

Читать далее

System Design: Чек-лист по сбору и фиксации требований на все случае жизни

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

Если на собеседовании по System Design не уделить внимание требованиям, это почти гарантированно приведёт к провалу — даже если ваше техническое решение идеально. Игнорирование требований — главная причина провала на собеседовании. Уделите этому 5-10 минут, и ваше решение сразу станет в разы сильнее. Расскажем, как собрать и зафиксировать требования чтобы повысить свои шансы при прохождении собеседования в IT-компанию.

Читать далее

Ближайшие события

Работа с данными в DuckDB или не pandas’ом единым сыт DS

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

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

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

Читать далее

Статья 4: Готовим MVI

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

Серия статей с очередным разбором MV* шаблонов, но с интересными деталями
Даже опытные разработчики смогут найти что-то новое для себя

Это четвертая статья из серии,
в которой разбираем как собирается MVI и что же такое Model

Статья 4: Готовим MVI
- 🧩 Собираем MVI-пазл воедино
- 🤔 А что если вообще написать свою реализацию MVI?
- 📜 Ты так и не понял, что такое Model?

На вкус и цвет салаты разные

Программирование «в уме»

Время на прочтение9 мин
Количество просмотров304

Вытаскиваем максимум пользы из привычного проектного артефакта в условиях внедрения систем с высоким уровнем кастомизации.

Читать далее

Гексапараллакс, как модель разработки ПО

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

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

Читать далее

Практический опыт построения надежной защиты российских веб-приложений

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

Современные веб-приложения требуют не только высокой производительности, но и надёжной защиты — от классических SQL-инъекций до сложных атак, включая перегрузку API. В условиях растущих киберугроз и ограничений на использование западного программного обеспечения особенно важно выбрать эффективную архитектуру, отвечающую требованиям российского рынка.
В этой статье мы делимся практическим опытом построения системы безопасности с использованием аппаратного балансировщика DS Proxima и решения SolidWall WAF для защиты веб-приложений и API. Рассматриваем архитектурные особенности, результаты тестирования и ключевые преимущества подхода, который объединяет безопасность, масштабируемость и предсказуемую производительность.

Читать далее

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

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

Привет, коллеги! Меня зовут Юля, я системный аналитик в компании EvApps.

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

Читать далее

Telegram-бот, который умеет слушать: разработка на grammY

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

Представьте: собеседник отправляет голосовое сообщение на пять минут, а вы не можете отвлечься и прослушать все от начала до конца? Что делать? Максим, ведущий канала RED Group, подошел к вопросу творчески и показал, как на базе grammY и SpeechService в NestJS разработать бота, который будет слушать и структурировать по таймкодам голосовые сообщения.

Инструкция будет полезна новичкам, которые только погружаются в работу с Telegram Bot API с помощью JavaScript. Кроме того, в конце материала мы разберем, как задеплоить готового бота на сервер, чтобы он работал вне зависимости от локальной машины. Подробности под катом!
Читать дальше →