Обновить

Бэкенд

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

CPython простыми словами: всё, что нужно знать начинающему

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

Привет, Хабр!

Сегодня вместе заглянем за дверки Python и разберемся, что же там внутри. Оказывается, под привычным синтаксисом Python скрывается целая машина – интерпретатор CPython, написанный на языке C.

Это самая популярная и каноничная реализация Python. Существует и другие реализации (PyPy, Jython, IronPython и т.д.), но 99% времени, говоря Python, имеют в виду именно CPython – оригинальный и наиболее поддерживаемый интерпретатор. Без строгой формальной спецификации языка Python, именно поведение CPython во многом определяет, что такое Python.

Изучить внутреннее устройство

Ошибки, которые инженеры совершают при код-ревью

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

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

В новом переводе от команды Spring АйО эксперты сообщества подробно и на собственном опыте рассказали про нюансы код-ревью.

Читать далее

ИТ-архитектура: что читать и чему учиться в ноябре

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

Привет, Хабр. Это дайджест по ИТ-архитектуре: системный дизайн и практики от Kafka/gRPC и RabbitMQ до наблюдаемости на Prometheus/Grafana, PostgreSQL HA (Patroni+etcd), TOGAF 10/ArchiMate, CQRS/Event Sourcing, Cassandra и Kubernetes/Nomad. Внутри — актуальные программы повышения квалификации и приглашения на бесплатные открытые уроки от действующих практиков.

Читать далее

Работа с аудио в Rust: от записи до сжатия

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

🦀 Практическое руководство по работе с аудио в Rust: от захвата с микрофона через CPAL до эффективного сжатия в Opus. Реализация системы с задержкой <50 мс и сжатием 42:1. Исходный код, тесты и метрики производительности.

Материал отлично подходит для использования AI-агентами: поставил задачу ИИ-ассистенту и он написал работающий диктофон всего с одной правкой.

Читать далее

WebREPL и uPyLoader: Выбираем способ беспроводного управления ESP

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

Практикуемся создавать и загружать постоянные инструкции в виде файлов, которые ESP устройство (микроконтроллер) будет выполнять автономно с помощью:

 uPyLoader — файловый менеджер и редактор в одном флаконе, как блокнот с закладками: и файлы видно, и поправить можно.

 WebREPL — удаленное управление по Wi-Fi без проводов, как пульт управления по воздуху: управляй устройством, изменяй, корректируй и добавляй инструкции (файлы), вообщем, проводи отладку без подключения кабеля.

Разберем:

 - Как работать с файлами на устройстве с помощью uPyLoader.

- Как настроить беспроводное управление через WebREPL.

- Как настроить Wi-Fi в двух режимах: точка доступа и клиент.

 Только практические шаги с объяснением, которые вы сможете повторить.

Приступаем

Кен Томпсон о взломе замков и рождении Unix

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

У 82-летнего Кена Томпсона сохранились потрясающие воспоминания о первых днях операционной системы Unix и о буйной команде её разработчиков-гиков.

В этом месяце Музей компьютерной истории Кремниевой долины в партнёрстве с Ассоциацией вычислительной техники выпустил специальный выпуск на четыре с половиной часа, записанный полтора года назад историком технологий Дэвидом Броком. В этом выпуске Томпсон подробно перечислил многие из важных моментов своей карьеры — от работы над языком программирования C и Unix до операционной системы «Plan 9 from Bell Labs» и языка программирования Go.

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

Также по ходу дела Томпсон рассказывает историю о маленьком аллигаторе, которого друг отправил его в офис в Bell Labs. («Его просто принесли, как почту… Не самый лучший из питомцев»).

Читать далее

Первый опыт использования новой IDE для ROS2

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

Добрый день! В этой статье я расскажу о своём первом опыте использования новой IDE для ROS2. Кому интересно прошу под кат.

https://medium.com/p/593fcf9a22eb/edithttps://medium.com/p/593fcf9a22eb/edit

There was a thread with announcement of new IDE for ROS2 developers on Reddit.

Download it: https://github.com/rovium/rovium-beta

Установка

Читать далее

Как работает Docker под капотом

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

Всем привет, меня зовут Дмитрий Желудков, я архитектор по эксплуатации в одной корпорации, а ещё один из авторов курса учебного центра Слёрм «Docker для админов и разработчиков». Сегодня мы заглянем под капот и разберёмся, на каких китах держится вся эта магия.

Читать далее

Fullstack monorepo: как перестать дублировать код между фронтом и бэком

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

Сколько раз вы меняли поле в API, обновляли тип на бэкенде, а потом вспоминали, что надо поправить ещё и фронтенд? А если есть мобилка? А если схемы валидации тоже дублируются? Я устал от этого и создал шаблон монорепозитория, где TypeScript типы, Zod схемы и константы живут в одном месте и используются везде.

Читать далее

Как сделать идемпотентные API в Go: Idempotency-Key, дедуп в Redis/БД и защита от гонок

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

Привет, Хабр!

Представьте: клиент отправил важный POST-запрос (например, создание заказа или списание денег), но из-за сетевого сбоя не получил ответ. Не зная, что на сервере операция уже выполнилась, клиент пробует повторить запрос. Если бэкенд не подготовлен к таким дублям, итог может быть печальным: мы создадим две одинаковые записи вместо одной или, хуже того, спишем деньги с пользователя два раза. Как этого избежать? Правильный ответ — реализовать идемпотентность в API.

Смотреть реализацию

По следам CPython. Часть 1. Настройка VS Code и первые шаги

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

Привет, читатель! Меня зовут Александр Щербанюк, и я Python-разработчик. Это первая статья цикла, который посвящен разбору внутреннего устройства CPython.

Читать далее

От REST к gRPC и GraphQL: современный подход к API

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

В статье сравним REST, gRPC и GraphQL с точки зрения производительности, гибкости и архитектуры микросервисов. Покажем, как объединить GraphQL и gRPC для фронтенда и бэкенда, чтобы получить мощный API без лишнего трафика и задержек.

Читать далее

Семь кругов финтеха глазами разработчика: что ломается в платёжных интеграциях

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

Снаружи финтех выглядит безупречно: есть подробная документация, надёжные провайдеры, а платёжные интеграции будто можно внедрять «на автопилоте». Но стоит заглянуть внутрь, и вы попадаете в «семь кругов финтеха», где любая мелочь превращается в драму, отнимающую выходные и нервы всей команды.

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

Читать далее

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

Изучаем ООП Python: наследования для начинающих с домашним заданием

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

Наследование — это механизм, который позволяет создавать новый класс (наследник или дочерний класс) на основе уже существующего (родителя или базового класса). Дочерний класс автоматически «забирает» все атрибуты и методы своего родителя. Ему не нужно определять их заново.

Проще говоря, вместо того чтобы говорить: «Гоблин — это что-то, у чего есть здоровье и атака. Дракон — это что-то, у чего есть здоровье и атака», мы говорим: «Сначала создадим общий шаблон "Враг" с базовыми характеристиками. А гоблин и дракон — это разновидности этого врага, которые наследуют всё от него и добавляют что-то своё».

Читать далее

Уровни изоляции транзакций: практическая механика и сравнение PostgreSQL, MySQL, Oracle, SQL Server и DB2

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

Транзакции — не про «магическое ACID», а про конкретную механику согласованного доступа к данным под нагрузкой.

Эта статья объясняет как реально работают уровни изоляции и чем отличаются популярные СУБД на практике.

Мы разберём:

Читать далее

Когда база устала искать: архитектура OpenSearch для больших данных

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

БигДата всегда звучит красиво — пока не нужно по ним искать и за нее платить.

Когда данные перестают влезать в индекс, а поиск тормозит — дело не в БД, а в архитектуре.Рассказываю, как мы перестроили систему на связке PostGIS + OpenSearch и добились отклика в десятки миллисекунд.

Читать далее

ORM в Node.js — когда от него больше вреда чем пользы. Почему вам, не нужен дополнительный абстрактный слой

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

Object-Relational Mapping (ORM) — технология, призванная «поженить» реляционную природу SQL-баз (PostgreSQL, MySQL, SQLite и т.п.) с объектной моделью языков программирования. Она настолько популярна, что её пытаются реализовать даже в необъектных языках — например, в Go или Erlang.

Если в Java без ORM действительно неудобно, то в экосистеме Node.js (и TypeScript в частности) ситуация принципиально иная. И ORM здесь — зачастую избыточная абстракция. В большинстве случаев рациональнее обойтись компактным SQL-билдером который сильно упрощает построение запросов, оставляя над ними полный контроль, и который совсем не занимается управлением объектами. Почему в Node.js ORM почти не даёт преимуществ...

Читать далее

IT-сектор после перегрева, часть 2: наплыв нейросетей, бесконечные собеседования и конфликт интересов

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

В первой части этого материала мы объясняли, что IT-рынок не умер — он перестраивается. Что за громкими заголовками про «массовые увольнения» и «схлопнувшийся пузырь» скрывается не катастрофа, а «нормализация» и «взросление отрасли». 

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

Читать далее

Как мы перестали хранить Pydantic в JSON и в 7 раз сократили расход памяти в Redis

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

У нас был большой продакшен-сервис с ~10M MAU, где Redis использовался как основное хранилище состояния пользователей. Все данные лежали в нём в виде JSON-сериализованных Pydantic-моделей. Это выглядело удобно, пока не стало больно.

На определённом этапе мы выросли до Redis Cluster из пяти нод – и он всё равно задыхался по памяти. JSON-объекты раздувались в разы относительно полезных данных, и мы платили за тонны пустоты — буквально деньгами и деградацией.

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

Читать далее

Что еще могёт курсор

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

Началось все весьма прозаично, клиент позвонить к нам в техподдержку и спросил «а как бы мне поставить ваш софт но в другую схему БД». Собственно вопрос проще некуда — мы писали на спринге, а значит лезем в application.yml и ставим схему. Но, клиент не из тупых и уже это попробовал — не сработало.

Начинаем разбираться что сломалось и кто виноват. Первым делом ДевОпс повторяет кульбиты клиента и выдает простой вердикт: «В 151 миграции лажа». Я открываю и: «батюшки родный, да это же лосенок явное указание схемы!»

Читать далее