Pull to refresh
@resetmeread⁠-⁠only

Скромный пастух нулей и единиц…

Send message

Rust и иммутабельность

Level of difficultyEasy
Reading time5 min
Views3.3K

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

Иммутабельность данных в Rust – это основа для создания систем, устойчивых к ошибкам и сайд-эффектам. В этой статье рассмотрим, как Rust позволяет использовать неизменяемые структуры данных для улучшения производительности и безопасности приложений.

Начнем с синтаксических особенностей.

Читать далее

Как вкусно приготовить «Сельдерей» (Celery)

Level of difficultyHard
Reading time8 min
Views5.4K

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

Читать далее

Чиним замедление YouTube на уровне роутера

Level of difficultyMedium
Reading time6 min
Views667K

Всех категорический приветствую. Буквально первого августа, прямо в ночь, стал у меня жутко лагать YouTube. Естественно, мне это сильно не понравилось. Ну, что же, давайте разбираться, почему и как это исправить в условиях моей личной сети.

Что случилось?

Хорошо описано произошедшее здесь, на Хабре. Если совсем кратко, своими словами - во время установки SSL соединения в открытом виде домен передается к которому мы подключаемся(так называемое SNI). И если это googlevideo.com то начинают твориться "интересные вещи". Можно проверить это локально коммандами из статьи.

$ curl https://speedtest.selectel.ru/100MB -o/dev/null

Читать далее

Самый быстрый фреймворк на Диком Западе: ускоряем Django-rest-framework вместе с Rust

Level of difficultyMedium
Reading time15 min
Views7.6K

Всем привет! Меня зовут Роман Кабаев, я инженер в отделе разработки инструментов тестирования компании YADRO. Вместе с коллегами мы разрабатываем собственную тест-менеджмент систему с открытым исходным кодом TestY.

На этапе запуска TestY в качестве фреймворка для разработки мы выбрали Django, так как он позволяет в максимально короткие сроки реализовать MVP. Однако развивать такой продукт — добавлять фичи, наращивать число пользователей и объем хранимых данных в системе — бывает сложно.

Мы действительно быстро запустили MVP, перевезли данные из TestRail с помощью плагинов, и команды тестирования YADRO уже более года пользуются системой. Но есть одно «но»: пользовательские сценарии разных команд сильно отличаются. Так, добавление в систему более полумиллиона тестов привело к просадке скорости работы определенных эндпоинтов, завязанных на древовидных структурах. 

Спойлер: камнем преткновения для нас стали CPU-bound задачи с большим количеством данных, о том, как я это выяснил, расскажу ниже. Изучив, как можно ускорить выполнение таких задач в Python, я протестировал несколько решений и нашел оптимальное. Если вы разрабатываете веб-приложение на Django или Python и так же, как я, хотите ускорить работу сервиса, читайте эту статью.

Читать далее

Высокая доступность в Kubernetes

Reading time9 min
Views5.2K

Обсудили высокую доступность в k8s: эксперт Слёрма Кирилл Борисов — SRE, инцидент-менеджер и спикер конференций Highload++, Devops, DevOops, ProITFest — рассказал про использование Affinity и Anti-Affinity, Tolerations, PodDiscruption Budget и Horizontal Pod Autoscaler.

Читать далее

Создание собственного API на Python (FastAPI): Router и асинхронные запросы в PostgreSQL (SQLAlchemy)

Level of difficultyMedium
Reading time35 min
Views28K

Друзья, приветствую! Если вы читали мои прошлые статьи из серии «Создание собственного API на Python (FastAPI) и повторяли за мной, то сейчас вы готовы к полноценной интеграции PostgreSQL в ваше API.

Сегодня мы научимся ещё более качественно структурировать своим проекты, разберемся что такое Router и внедрим в свой код все базовые методы по асинхронной работе с базой данных PostgreSQL через FastApi.

Читать далее

Создание собственного API на Python (FastAPI): Авторизация, Аутентификация и роли пользователей

Reading time19 min
Views48K

Друзья, приветствую! К сожалению, не хватает времени, чтобы чаще публиковаться, и надеюсь, что вы ждали этой статьи.

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

Читать далее

Создание собственного API на Python (FastAPI): структура проекта, SQLAlchemy PostgreSQL, миграции и первые модели таблиц

Level of difficultyMedium
Reading time21 min
Views46K

Приветствую всех, друзья! Наша последняя статья по созданию собственного API на FastAPI вызвала огромный интерес, и за это я искренне благодарен.

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

Уже на данном этапе код становится громоздким и сложным для понимания. К тому же, хранение данных в JSON‑файлах — это далеко не самый профессиональный подход. «Нормальные ребята» используют SQLAlchemy, причем асинхронно.

Сегодня мы займемся интеграцией асинхронной SQLAlchemy в наше FastAPI‑приложение. Для упрощения навигации и понимания кода я предложу структуру проекта, которую сам использую в каждом FastAPI‑приложении.

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

Читать далее

Постройка простой проволочной КВ антенны с согласующим устройством

Level of difficultyMedium
Reading time8 min
Views28K

Живя вне города с его чудовищной помеховой обстановкой и периодически проводя время с паяльником в руках, грешно не прикоснуться и к миру радио, естественным образом начинающегося с антенны и заземления. Антенно-мачтовое хозяйство — пожалуй, самое крупное, материалоёмкое и дорогостоящее сооружение для КВ радиоустановки — на низкочастотных радиолюбительских диапазонах: это десятки метров вверх и в длину. Существуют, однако, и более скромные укороченные варианты с худшими, но всё ещё приемлемыми параметрами. Ими и займёмся.
Читать дальше →

Лучше гор могут быть только горы: путешествие на Эльбрус

Level of difficultyEasy
Reading time13 min
Views12K

Всем привет!

Меня зовут Артем, я руководитель отдела в компании L-TECH.

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

Далее

Мем айсберг SQL: погружение в глубины баз данных

Level of difficultyMedium
Reading time53 min
Views23K

Мем айсберг SQL: погружение в глубины изучения баз данных

Мем айсберг SQL — это вирусное интернет-изображение, изображающее айсберг с несколькими слоями. Вершина айсберга содержит общеизвестные концепции и инструменты SQL, такие как операторы SELECT и JOIN. Однако по мере погружения под воду становятся видны более абсурдные и малоизвестные аспекты SQL.

Читать далее

Квантовая электродинамика в картинках

Level of difficultyMedium
Reading time11 min
Views22K

Квантовая электродинамика (далее КЭД), любимое, но капризное дитя нерелятивистской квантовой механики и специальной теории относительности — весьма непростая физическая теория с зубодробительным математическим аппаратом. Но, в отличие от многих других сложных теорий, в её инструментарии есть одна небольшая и сравнительно обособленная часть, допускающая примитивную, но наглядную трактовку. Я имею в виду так называемые «диаграммы Фейнмана». Cегодня непросто написать статью по квантовой теории поля, не начертив нескольких таких диаграмм, а в некоторых работах они встречаются чаще, чем знаки элементарной арифметики. Как следует из названия, изобрёл эти диаграммы выдающийся американский физик Ричард Фейнман. Сделал он это в конце 1940-х годов для графического описания некоторых математических выражений, возникающих в КЭД. Сразу оговорюсь: разумеется, вычислять диаграммы Фейнмана, за исключением нескольких самых примитивных, очень непросто. За каждой из них стоит строго определённое математическое выражение, обычно весьма сложное. Но при этом у них есть замечательное свойство — они допускают простую качественную словесную интерпретацию и помогают понять некоторые основополагающие идеи, лежащие в основе современной квантовой теории. Идеи эти скорее непривычны, чем сложны и, как мне кажется, в них вполне может на базовом уровне разобраться даже успевающий школьник.

Про эти диаграммы и содержащиеся в них идеи я и хочу рассказать. При этом никаких формул в тексте не будет вообще — только слова и картинки.

Читать далее

SOLID в Go и щепотка паттернов

Level of difficultyMedium
Reading time23 min
Views11K

SOLID-ная статья о принципах SOLID, которую вы можете предложить тем, кто хочет понять эти принципы в контексте языка Go. Или прочитать самостоятельно, если это интересно и вам.

И да, как сказал бы волк из небезызвестного мультика: «SOLID? Шо, опять?»

Читать далее

Методы формализации требований: Use Case vs User Story

Level of difficultyEasy
Reading time5 min
Views32K

Сегодня мы рассмотрим методы формализации требований: Use Case и User Story. В статье рассмотрим оба метода, сравним их преимущества и недостатки. А также рассмотрим, когда и при каких ситуациях использовать каждый из методов.

Читать далее

У вас новый ремонт? Лучше! Рисунок нового ремонта. Как мы из Stable Diffusion сделали дизайнера интерьеров

Level of difficultyMedium
Reading time19 min
Views15K

Сейчас технологии машинного обучения и нейронных сетей находят широкое применение в различных сферах, не исключая дизайн и ремонт помещений. Одной из таких технологий является методы генеративных нейросетей, которые позволяют преобразовывать изображения, сохраняя основные элементы оригинала, но добавляя новые детали и стилистические изменения. Меня зовут Алексей Луговой, я работаю с Computer Vision в Самолете и уже обзорно рассказывал на Хабре, как мы применяем искусственный интеллект в строительстве. Сегодня же углубимся в задачу по созданию генеративной сети для создания проекта ремонта. Рассмотрю процесс использования диффузионных моделей с различными дополнениями на примере не самой обычной задачи — преобразования интерьера комнаты, начав с оригинального изображения голых стен и завершая итоговой генерацией в фирменном дизайнерском стиле.

Читать далее

Три юзкейса Terraform, к реализации которых вам пора приступать

Level of difficultyHard
Reading time9 min
Views6.8K

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

Мы заметили, что через работу многих команд, занятых администрированием платформ красной нитью проходит явная пробуксовка с освоением философии «as code». Естественно, там используются OpenTofu или Terraform (здесь и далее я буду называть их в совокупности “TF”) для управления вычислительными и прочими облачными ресурсами, но при этом команда обычно не переходит к применению тех же принципов во всех аспектах, связанных с эксплуатацией предметной области.

Читать далее

Обзор OpenTofu 1.7.0: установка, миграция с Terraform, ключевые особенности

Level of difficultyEasy
Reading time11 min
Views7.7K

30 апреля из бета-тестирования вышел OpenTofu 1.7.0. Это Open Source-форк Terraform, который развивается под управлением Linux Foundation. Ранее мы уже писали о причинах разработки OpenTofu, связанных с изменением лицензионной политики HashiCorp в отношении своих продуктов. В этой же статье мы сделаем обзор версии 1.7.0: установим OpenTofu, выполним миграцию инфраструктуры с Terraform, а также рассмотрим ключевые особенности данного релиза.

Читать далее

Выжимаем из Go максимум производительности

Level of difficultyMedium
Reading time11 min
Views24K

Разработчики, которые используют Go, сталкиваются с задачей выжать максимальную производительность из каждой строки кода. Но что делать, если оптимизировать уже нечего, а увеличивать скорость всё равно надо?

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

Читать далее

Как заставить модуль Wemos D1 эффективно спать

Level of difficultyEasy
Reading time3 min
Views4.4K

Сравнительно давно написал на хабре несколько статей

Особенности создания программ в NODEMCU ESP8266 для «интернета вещей» / Хабр

Уменьшаем потребление ESP8266 при автономной работе с датчиками

Как уменьшить потребление wifi модулей в десять и более раз

о ESP8266 и способах уменьшения энергопотребления популярного модуля ESP12x.

За последнее время появилось много новых мало потребляющих модулей с протоколом BLE , но ESP8266 остается уникальным по простоте применения и низкой стоимости для реализации различных поделок IOT.

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

Читать далее

Магия CSS на практике: советы по вёрстке от гика

Level of difficultyMedium
Reading time8 min
Views20K


Хабр, привет! Я частенько пишу про работу CSS, его неизвестные возможности и влияние на доступность. Кажется, этих направлений мало для меня. Теперь я хочу показать техники вёрстки, используемые мной постоянно.


Цель — поделиться опытом с вами. Я использую не только трюки известных экспертов, есть лично мои придумки. Но, пожалуйста, относитесь к этому контенту, как просто альтернативному мнению. Мои техники не являются единственными правильными решениями.


Сегодня я расскажу:

  • как избавиться от соседнего родственного комбинатора + при реализации нестандартных чекбоксов и радиокнопок;
  • про свойство inset, сокращающее код на целых три строки;
  • мой сниппет для расширения интерактивной области у кнопок и ссылок;
  • стиль написания медиа-запросов, позволяющий сократить количество правил;
  • альтернативный способ центрирования элемента без свойства transform.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity