Search
Write a publication
Pull to refresh
-17
0.1
Василий @Soupbreak

погромист

Send message

Docker Registry на Python с нуля

Level of difficultyEasy
Reading time19 min
Views2.2K

Всем привет! В современном мире разработки docker является одним из краеугольных камней эргономики рабочего пространства разработчика, наряду с git, разного рода IDE и редакторами, а для кого‑то — и GPT. И, хоть в самом по себе docker нет ничего такого уж уникального (LXC, CRI‑O, чистый containerd, различные легкие и средние виртуалки, бессерверные среды, для особых ценителей — chroot. Тысячи их), он подкупает удобством использования и развесистой экосистемой — поддержка Docker есть в большинстве редакторов кода и IDE, про него написаны многочисленные книги, статьи и туториалы от индусов, а по его реестрам (от Docker Hub до локальных реп на гитлабе) удобно разложен практически весь существующий на планете софт.

Вот о реестрах (registry) Docker и хочется сегодня поговорить.

Сам по себе реестр — это просто REST‑сервис и файловое хранилище. Образы прилетают в реестр в виде бинарных слоев (количество и размер которых зависит от Dockerfile, по которому собирался образ) и простого JSON‑файла манифеста.

Читать далее

Планировщик Go — самый подробный гайд простым языком

Level of difficultyMedium
Reading time27 min
Views52K

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

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

Приступить к проектированию

AsyncAPI — Swagger для брокеров сообщений и не только, или Если хочется иметь структурированную доку по асинхрону

Level of difficultyEasy
Reading time12 min
Views13K

В мире интеграций REST API на сегодняшний день занимает по праву свое почетное, королевское место. Сегодня мало какой проект или продукт обходится без стандартных HTTP-методов и документации к ним.

Но если для REST API уже всемирную славу приобрел Open API со своей Swagger-документацией, которая внедряется практически повсеместно и является по праву, так сказать, золотым стандартом, то для брокеров сообщений и, в целом для асинхронного взаимодействия, в большинстве случаев дела обстоят далеко не так однозначно.

В данной статье я хотел бы подробнее остановиться на довольно молодом типе спецификации для асинхронного взаимодействия - AsyncAPI, который, на мой взгляд, имеет огромный потенциал и все шансы на массовое применение в будущем.

На некоторых порталах, в том числе и здесь, уже косвенно поднималась тема AsyncAPI и вызывала у авторов, как правило, смешанные чувства. Описывали преимущества и недостатки, приводили некоторые примеры. Справедливо отметить, что AsyncAPI, конечно же, не идеален.

Но если посмотреть на это с другой стороны: удобно ли будет разработчику читать ТЗ и другую документацию касаемо разработки интеграции по асинхрону, слепленную из кусков текста, таблиц, рисунков, непонятных ссылок и т.д.? Одно дело, если разработчик находится на проекте с самого начала и знает все тонкости и может сам что-то додумать. Но если человек придет на проект уже через один, два или более лет после начала проекта и увидит тонны макулатуры, которую как-то нужно читать и анализировать, то вот тут начинаются трудные времена.

Читать далее

Как я адаптировала CV, Cover letter и профиль в Linkedin для международного поиска работы

Level of difficultyEasy
Reading time14 min
Views14K

Привет, Habr!

В продолжении к статье про международный поиск работы в 2024 году, хочу поделиться опытом создания основных артефактов, которые необходимы для поиска работы за рубежом — резюме (CV), сопроводительного письма (Cover letter) и профиля в LinkedIn.

Читать далее

.NET Digest #3

Reading time4 min
Views5.8K

Добро пожаловать на третий выпуск нашего дайджеста, посвящённого новостям и событиям в мире .NET! Команда PVS-Studio рада представить вам подборку самых интересных и полезных материалов. Поехали!

Читать далее

.NET Digest #2

Reading time4 min
Views5.7K

Добро пожаловать на второй выпуск нашего дайджеста, посвящённого новостям и событиям в мире .NET! Первый выпуск вам понравился, так что C# команда PVS-Studio снова собрала для вас самые интересные и полезные материалы. Поехали!

Читать далее

.NET Digest #1

Reading time4 min
Views8.4K

Добро пожаловать на первый выпуск нашего дайджеста, посвященного новостям и событиям в мире .NET! Команда C# разработчиков из PVS-Studio собрала для вас самые интересные и полезные материалы, чтобы держать вас в курсе последних тенденций и разработок. Поехали!

Читать далее

Дизайн встраиваемой базы данных для ANN запросов: MusyaDB

Level of difficultyHard
Reading time23 min
Views4.3K

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

Читать далее

Подборка докладов по С# 2023-2024

Level of difficultyEasy
Reading time3 min
Views8.1K

Недавно мы публиковали подборку докладов по C++, но не будем же мы обделять и C# разработчиков. Поэтому предлагаем вашему вниманию интересные доклады из мира .NET и C#.

Вперёд к новым знаниям!

Уровни изоляции транзакций с примерами на PostgreSQL

Reading time8 min
Views304K

Вступление


В стандарте SQL описывается четыре уровня изоляции транзакций — Read uncommited (Чтение незафиксированных данных), Read committed (Чтение зафиксированных данных), Repeatable read (Повторяемое чтение) и Serializable (Сериализуемость). В данной статье будет рассмотрен жизненный цикл четырёх параллельно выполняющихся транзакций с уровнями изоляции Read committed и Serializable.


Для уровня изоляции Read committed допустимы следующие особые условия чтения данных:


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


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


Что же касается Serializable, то данный уровень изоляции самый строгий, и не имеет феноменов чтения данных.

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

Топовые подходы к решению алгоритмических задач

Reading time11 min
Views37K

Привет! Меня зовут Дмитрий Королёв, я бэкенд-разработчик в Авито. В этой статье я расскажу про ключевые аспекты и концепции работы с наиболее популярными алгоритмами и структурами данных. Это поможет и в реальных проектах, и чтобы глубже понять алгоритмические принципы. Статья подойдёт специалистам, которые хотят углубить свои знания в программировании, и укрепить навыки нахождения оптимальных решений алгоритмических задач.

Читать далее

Векторные базы данных — набирающий устойчивость тренд в разработке систем ИИ или мимолетное увлечение?

Level of difficultyEasy
Reading time5 min
Views7.8K

В блоге beeline cloud на хабре и в нашем технологическом медиа мы разбираем ключевые технологии и принципы работы отрасли. На этот раз мы решили затронуть стремительно растущий рынок машинного обучения, который «тянет» за собой сегмент векторных БД.

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

Читать далее

Как дизайнеры помогают заменить GitLab: что из этого получилось

Reading time14 min
Views14K

Привет! Меня зовут Валерия, я дизайнер внутренних сервисов в Ozon Tech. Наша команда занимается продуктами, которые коллеги используют для доступа к инфраструктуре Ozon, приоритизации задач, проведения регламентных работ, выкатки и управления релизами.

Сегодня речь пойдёт про последнее упомянутое решение — REpublic или релизный портал, который помогает нашим разработчикам выкатывать более тысячи релизов каждый день. Я расскажу, зачем мы начали его делать и с какими сложностями столкнулись.

Читать далее

Применение DDD. От моделей до EDM — поиск новых форм и архитектурные излишества

Reading time14 min
Views7.3K

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



DDD не на коленке, а за дорого ;)

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

Курс «PostgreSQL для начинающих»: #3 — Сложные SELECT

Level of difficultyMedium
Reading time12 min
Views54K

Продолжаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В этой лекции углубимся в расширенные возможности команды SELECT : как можно "сложить" и "вычесть" выборки (UNION/INTERSECT/EXCEPT), или запомнить и использовать в рекурсивных запросах (CTE), что дают оконные функции (WINDOW) и соединения (JOIN).

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

Читать далее

Вопросы и ответы для собеседования на позицию frontend-разработчик. Часть 1

Level of difficultyEasy
Reading time20 min
Views94K

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

Читать далее

Как на самом деле работает Async/Await в C# (Часть 1)

Level of difficultyHard
Reading time12 min
Views66K

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

Читать далее

Гайд по релокации в Великобританию и получению ВНЖ в 2023 по Innovator Founder Visa

Level of difficultyEasy
Reading time12 min
Views3.9K

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

Читать далее

Вам не нужен для этого JavaScript

Level of difficultyMedium
Reading time11 min
Views29K

Прошу вас не возмущаться названием статьи. Я не ненавижу JavaScript, я люблю его. Ежедневно я пишу на нём кучу кода. Но ещё я люблю CSS и даже люблю JSX HTML. Я люблю все эти три технологии по причине, которая называется…

▍ Правило наименьших полномочий


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

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

В отличие от JS с его императивностью, HTML и CSS декларативны. Вы говорите браузеру, что делать, а не как это делать. Это значит, что браузер сам выбирает, как это делать, и может сделать это наиболее эффективным образом.

Так как функции HTML и CSS обрабатываются браузером, они могут быть более производительными, более нативными, более адаптируемыми к предпочтениям пользователя и в общем случае иметь бОльшую accessibility. Это не значит, что так будет всегда (особенно когда дело касается accessibility), но когда все сложные задачи берёт на себя браузер, от этого обычно выигрывают конечные пользователи.
Читать дальше →

Пишем код, когда пишем код: сорс-генераторы

Level of difficultyMedium
Reading time15 min
Views3.9K

Всем привет! Я Олег, ведущий разработчик в Тинькофф. Расскажу историю про сорс-генераторы и почему именно генерацию кода мы выбрали для решения нашей задачи. Будут неожиданности и открытия, которые мотивировали нас двигаться дальше.

Читать далее
1
23 ...

Information

Rating
3,750-th
Location
Белград, Белград, Сербия
Registered
Activity

Specialization

Backend Developer, Software Architect
Lead
From 8,000 $
C#
.NET Core