Обновить
1141.72

Программирование *

Искусство создания компьютерных программ

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

Представлен онлайн-ресурс для изучения языков программирования Coddy. Внутри полная геймификация: обучение через игру, квесты и допы за активность. За каждый урок ваш персонаж двигается по карте к финишу. Ежедневные испытания дают дополнительный опыт, а за стрик капают «огоньки». Опыт можно тратить на бустеры, включая премиум подписку на 2 недели. Темы выбираете сами — можно сменить в любой момент.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Присоединяйтесь к обновленной реферальной программе 💰

Перезапустили реферальную программу, чтобы вы могли с большей выгодой рекомендовать наши сервисы клиентам, коллегам или друзьям. Теперь можно получить 20% от суммы чеков приведенных пользователей в первый год и 15% — в последующие годы.

Кому подойдет:

  • Разработчикам — можете предлагать облачные услуги как часть своих пакетов;

  • DevOps-инженерам — рекомендуйте сервисы для размещения решений;

  • Веб-студиям — советуйте облако для размещения сайтов;

  • Системным интеграторам — интегрируйте облачные решения в свои проекты.

Как принять участие:

Регистрируйтесь в программе до 31 мая и приводите новых пользователей в течение трех месяцев. Участвовать могут самозанятые, ИП и юридические лица. 

А еще приведенные пользователи получат до 26 000 бонусов — их хватит, чтобы запустить проект, протестировать гипотезы или проверить интересующее решение на практике.

👉 Присоединиться

Теги:
Рейтинг0
Комментарии0

Знакомьтесь с программой и регистрируйтесь на GoCloud 2025 ☁️

Делимся с вами программой предстоящей масштабной конференции про облака и AI, которая состоится 10 апреля GoCloud 2025.

10:00 – 11:00 Регистрация

11:00 – 12:00 Открытие конференции

12:20 – 18:00 Доклады. Три трека

  • Инфраструктура и сервисы: K8s, Bare Metal, платформа данных и другие сервисы Cloud.ru Evolution для ваших задач в облаке. Покажем новые и популярные инструменты, а также возможности личного кабинета. Все, чтобы развернуться по максимуму.

  • AI & ML: загляните в будущее искусственного интеллекта. Мы расскажем об AI-инструментах, поделимся опытом и анонсируем продукты, меняющие индустрию. Узнайте, как мы работаем с сообществом и какие возможности открываются для вас.

  • Сценарии работы в облаке: не только доклады, но и дискуссии с лидерами рынка, которые уже в облаке. Будем обсуждать популярные сценарии, гибридные решения, GenAI, миграцию в облако, вопросы безопасности, а также кейсы наших клиентов.

18:00 – 20:00 Afterparty и нетворкинг

Для участия подключайтесь к онлайн-трансляции (ссылка придет зарегистрированным участникам в письме) или приходите в Цифровое деловое пространство (ЦДП) в Москве.

🔎 Смотреть темы докладов и зарегистрироваться

А пока можно почитать, как проходили предыдущие конференции Cloud.ru:

Теги:
Рейтинг0
Комментарии0

На ресурсе OverAPI собраны все шпаргалки для разработчиков по популярным языкам программирования и технологиям. Информация там постоянно обновляется. Можно нажать на любую команду и узнать о ней всё. Ресурс бесплатный и без регистрации.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Поздравляем с 0x8 марта девушек в IT!

В этом году мы решили не просто на словах поздравить девушек с праздником. Мы сделали видео с девушками и о девушках в IT. На то есть несколько причин:

  • Мы хотим сказать: коллеги, мы вам благодарны за ваш труд! Мы гордимся вами!

  • Мы хотим показать вам реальных людей из разных сфер IT, а не просто цифры в статистике.

  • Надеемся, примеры участниц покажут, что IT — это не для избранных. Здесь есть место каждой, если ей интересно и она этого захочет.

Смотрите видео по ссылкам:

Вдохновляйтесь, делитесь своими историями и отправляйте своим друзьям, коллегам, знакомым и всем, кто имеет отношение к IT!

А мы желаем всем айтишницам счастливого праздника, безопасности и простого человеческого счастья!

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии1

Приглашаем на первый Cloud․ru Tech Lab: Golang — митап для Go-разработчиков и технических лидеров 🎙️

📅 Дата: 13 марта, 19:00
📍 Место: Москва, Большая Почтовая улица, 40с7, Гоэлро Лофт

В программе четыре доклада от разработчиков Cloud․ru и приглашенного гостя. А еще — нетворкинг и afterparty с диджеем, музыкой и ужином.

Темы докладов:

  • Как устроена Go-разработка в Cloud․ru — Александр Шакмаев и Андрей Рацеров, технические лидеры;

  • Балансировка gRPC в Kubernetes — Михаил Абраш, старший Go-разработчик;

  • Как мы бутстрапим пользовательское окружение с Go, Temporal и Kubernetes — Евгений Третьяков, ведущий Go-разработчик;

  • Осторожно unsafe! Практические примеры и ошибки использования — Владимир Балун, основатель balun․courses.

👉 Зарегистрироваться

А еще заглядывайте в наши статьи и делитесь размышлениями в комментариях:

Теги:
Рейтинг0
Комментарии0

Хочу поделиться своим максимально ненужным проектом на Python, под названием flexpasm.

Это билдер кода для FASM под Linux. Работает ограниченно, но вроде-бы работает.

Проект, лично для меня, интересный.

Установить эту библиотеку можно через PyPi:

from flexpasm import ASMProgram
from flexpasm.constants import LinuxInterrupts
from flexpasm.instructions.registers import get_registers
from flexpasm.instructions.segments import Label
from flexpasm.mnemonics import IntMnemonic, MovMnemonic, XorMnemonic
from flexpasm.settings import Settings


def main():
    settings = Settings(
        title="Example ASM Program",
        author="alexeev-prog",
        filename="example.asm",
        mode="64",
    )
    asmprogram = ASMProgram(settings, __name__)
    regs = get_registers(settings.mode)

    start_lbl = Label("start")

    start_lbl.add_instruction(MovMnemonic(regs.AX, 4))
    start_lbl.add_instruction(MovMnemonic(regs.CX, "message"))
    start_lbl.add_instruction(MovMnemonic(regs.DX, "message_size"))
    start_lbl.add_instruction(IntMnemonic(LinuxInterrupts.SYSCALL))
    start_lbl.add_instruction(MovMnemonic(regs.AX, 1))
    start_lbl.add_instruction(XorMnemonic(regs.BX, regs.BX))
    start_lbl.add_instruction(IntMnemonic(LinuxInterrupts.SYSCALL))

    asmprogram.add_label(start_lbl)
    asmprogram.main_rws.add_string("message", "Hello, World!")

    asmprogram.save_code()
    # asmprogram.restore_backup()


if __name__ == "__main__":
    main()
$ fasm example.asm example
$ ld example -o example
$ ./example

Hello, World!

А сам код генерируется такой:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Author: alexeev-prog                                                                                               ;;
;; Example ASM Program                                                                                                ;;
;; Program generated by FLEXPASM (github.com/alexeev-pro/flexpasm)                                                    ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

format ELF64 executable 3;                      ; ELF64 EXECUTABLE
entry start                                     ; Set Start Entry


;; Segment readable executable in FASM is a directive for defining a section of code with readable and executable attributes.
segment readable executable

start:                                          ; Label start with 7 commands
    MOV RAX, 4                                      ; Loading 4 value into RAX register.
    MOV RCX, message                                ; Loading message value into RCX register.
    MOV RDX, message_size                           ; Loading message_size value into RDX register.
    INT 128                                         ; Call software interrupt 128: SYSCALL
    MOV RAX, 1                                      ; Loading 1 value into RAX register.
    MOV RBX, RBX                                    ; Exclusive OR operation RBX and RBX using XOR
    INT 128                                         ; Call software interrupt 128: SYSCALL


;; Segment readable writeable in FASM is a definition of a segment of program data codes, where the attributes readable (the contents of the segment can be read) and writeable (program commands can both read codes and change their values) are specified for it.
segment readable writeable

message db 'Hello, World!', 0xA                 ; Var message (string)
message_size = $-message                        ; Var message (string) length

Я его написал довольно давно, вот решил поделиться. Может кому-то пригодится. Если есть баги - создавайте PR и Issue, буду рад)

github.com/alexeev-prog/flexpasm

Теги:
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Новый релиз языка Zig 0.14.0

Github Release

Описания изменений версии

Я информирую о релизе постом только потому, что у меня лично сейчас нет свободного времени написать полноценную статью об всех изменениях. Изменений много.

Важное изменение, которое всё же я упомяну - появился свой backend для компилятора. То есть отказ от LLVM состоялся, но на данный момент только для Linux x86_64.

Теги:
Всего голосов 4: ↑3 и ↓1+4
Комментарии0

SRE PUB #5 Судный день

Интерактивный стримкаст со зрителями 9 марта в 19:00

Максим будет писать веб интерфейс для вики (с выделением текста и возможностью отставлять инлайн комментарии) с помощью последней версии Copilot agent.
А все мы (включая вас) — токсично (и не очень) комментировать.

Посмотреть нас можно будет на следующих платформах:
Youtube - https://www.youtube.com/@srepubstreamcast
Twitch - https://www.twitch.tv/srepubstreamcast
Telegram - https://t.me/sre_pub

Готовьте попкорн, напитки, хорошее настроение и колкие комментарии.

Пишите в календари: 9 марта, 19:00

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Исследование выявило ключевые тенденции в том, как open-source проекты работают с документацией:
✅ README-файлы появляются на ранних этапах жизни проекта.
✅ Руководства по внесению вкладов (CONTRIBUTING) добавляются позже, когда активность растёт.
✅ Документация в основном сосредоточена на использовании и внесении изменений, а не на развитии сообщества, несмотря на частые рекомендации уделять больше внимания именно этому аспекту.

Хотя развитие сообщества считается важным фактором устойчивости FLOSS-проектов, не все основатели сразу ставят эту цель. Более того, излишний упор на построение сообщества на ранних этапах может усложнить процесс и отпугнуть потенциальных участников.

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

https://arxiv.org/pdf/2502.18440

Теги:
Рейтинг0
Комментарии0

Шаблон записи о принятии архитектурного решения

# Идентификатор и заговолок

Утверждение о принятом решении.

# Статус

Черновик\Утверждено\Заменено на ADR-XXX

# Контекст

Почему решение необходимо. Предположения, ограничения, мотиваторы принятия решения.

# Критерий оценки

Какие приоритеты в принятии решения? Какие из параметров и характеристик системы рассматриваются или используются в принятии этого решения. Какие мотиваторы и ограничения использовались при принятии решения?

# Доступные варианты

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

# Решение

Сделанный выбор и аргументация в его пользу.

# Последствия

Положительные и отрицательные последствия принятого решения.

# Консультации

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

Теги:
Рейтинг0
Комментарии0

Представлен локальный ИИ-ассистент DeepSeek Code Companion для разработчиков на базе DeepSeek R1. Для работы с ним не нужен даже API. Пишет код на уровне сеньора. Во время компиляции помогает в отладке и исправлении багов. Даёт рекомендации по архитектуре и масштабированию. На выбор есть две модели: для быстрых ответов и для более сложных задач.

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии5

Из серии "мелких удивлений", почему так всё странно:
Когда появилась двоичная плавающая точка, естественно было бы ожидать, что сразу появится и вариант текстового ввода-вывода в двоичном виде (возможно, свёрнутого до восьмеричного или шестнадцатиричного), который даёт:
1) точность передачи значения;
2) избавление от сложного и дорогого кода преобразования путём умножения и деления (который ещё долго был неточным, а для точного требуется многословная арифметика - для double это 1000+ бит в предельном случае, а ещё база констант).

Пример: "0x1.921fb54442d18p+1" (число π в double).

Тем не менее, в Fortran этого нет до сих пор, насколько я знаю - а там я ожидал бы в первую очередь. В C появилось в C99 ("%a" в printf, scanf). Аналогичные форматные методы ещё в десятке актуальных языков (Go, Lua, Matlab, OCaml, Perl, PHP, R, Ruby, Rust, Swift, Zig, спасибо ИИ за поиск). В C++ - режим iostream, с C++11 (std::hexfloat). В Python, Ada, Java, Julia, Haskell - нет форматного знака, есть отдельные методы (например, hex(), from_hex()). В некоторых других - требуются отдельные библиотеки, особенно странно про Javascript, где и целых-то нет, есть double на всё.

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

(Ну, и опробуем "посты". На статью это не тянет, а просто поговорить - почему бы и нет.)

Теги:
Всего голосов 4: ↑4 и ↓0+5
Комментарии17

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

🗓 23.02.1993 — Создан язык программирования Ruby [вехи_истории]

Японский программист Юкихиро Мацумото (Matz) начал разработку языка программирования Ruby, который позже стал одним из самых популярных скриптовых языков. Его цель заключалась в создании удобного, элегантного и продуктивного языка, который сочетал бы мощь Perl и объектно-ориентированный подход Smalltalk, но при этом был простым и интуитивно понятным.

🗓 23.02.1993 - Создан язык программирования Ruby
🗓 23.021993 — Создан язык программирования Ruby

Его популярность резко выросла в 2000-х благодаря веб-фреймворку Ruby on Rails, который упростил создание веб-приложений. Ruby ценится за лаконичный синтаксис, гибкость и философию минимального удивления (Principle of Least Surprise), что делает его любимым инструментом разработчиков.


📼 Мир IT не стоит на месте и постоянно развивается, а некоторые истории уже на канале:

1️⃣ История КРАХА Twitter. Как Илон Маск ЗАХВАТИЛ синюю птичку
YouTube | VkVideo

2️⃣ ВЕЛИКИЙ Китайский Файрвол! Как устроен КРУПНЕЙШИЙ блокировщик интернета в мире 
YouTube | VkVideo

3️⃣ Удивительная история Android! Вы этого НЕ ЗНАЛИ
YouTube | VkVideo

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

В начале года я опубликовал статью про гибридное кэширование.

Гибридное кэширование в ASP.NET Core
В .NET 9 появилась новая библиотека для кэширования — HybridCache . В статье расскажу, что это такое...
habr.com

Прошло уже больше месяца, а стабильная версия nuget-пакета Microsoft.Extensions.Caching.Hybrid так и не вышла.

Я не делаю прогнозы по датам выхода, но хочу порассуждать на тему того, чего ожидаю от стабильной версии. И чего — точно нет.

Начну с последнего — каких изменений я не ожидаю

Изменение состава и сигнатур текущих методов. Если следить за выходом новых версий пакета Microsoft.Extensions.Caching.Hybrid, можно заметить, что методы объекта HybridCache не меняются уже давно. Из этого можно сделать вывод, что в стабильной версии мы увидим тоже самое, что наблюдаем сейчас.

Какие изменения я ожидаю увидеть

Удаление объекта из кэша по тегам. На момент написания статьи метод RemoveByTagAsync вообще не имел реализации. Сейчас в версии 9.2.0-preview.1.25105.6 он реализован и вполне себе работает, так что в релизную версию явно войдёт.

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

  await cache.GetOrCreateAsync(
    "someKey",
    async ct => await SomeFuncAsync("someKey", ct),
    options,
    ["tag1", "tag2", "tag3"],
    cancellationToken);

  await cache.GetOrCreateAsync(
    "someKey",
    async ct => await SomeFuncAsync("someKey", ct),
    options,
    ["tag1", "tag4"],
    cancellationToken);

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

И тут у меня два варианта развития событий: или логика поменяется и теги будут перезаписываться всегда — независимо от того, берётся объект из кэша или хранилища. Или при написании программы нужно будет следить, не передаём ли мы разные наборы тегов.

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

Создать Telegram-бота и получить за это подарок от Selectel?

Да, это возможно, если вписаться в наш интерактив. Вот что нужно сделать:

  1. Создайте бота и опубликуйте репозиторий на GitHub.

  2. Пришлите ссылку на репозиторий в Telegram-канал SelectelFeedbackBot, чтобы получить бонусные рубли для панели управления.

  3. Задеплойте бота в облаке Selectel, оплатив услуги полученными баллами.

  4. Отправьте ссылку на бота в Telegram-канал SelectelFeedbackBot.

Мы будем ждать ваших сообщений до 2 марта 2025 года, после чего подведем итоги. 10 счастливчиков получат комплект мерча Selectel: картхолдер, кружку и плюшевого Тирекса 🦖

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

Полные правила конкурса доступны по ссылке. Узнать обо всем чуть подробнее можно в нашем Telegram-канале.

Теги:
Всего голосов 8: ↑8 и ↓0+9
Комментарии0

Ежемесячный дайджест: новое за январь 🌨️

🧊 Заморозили цены на облачные услуги для новых клиентов на три года. Вы можете выбрать виртуальные машины, GPU-ресурсы, объектные хранилища, базы данных и другие облачные сервисы — тарифы останутся неизменными в течение трех лет. Предложение действует до 31 марта 2025 для юрлиц и индивидуальных предпринимателей. Оставить заявку.

☁️ Открыли регистрацию на главную конференцию про облачные технологии и искусственный интеллект — GoCloud 2025. Хотите узнать про глобальные тренды в AI, пополнить список инструментов и сценариев работы в облаке, обменяться опытом с коллегами-экспертами, а также увидеть, какой простор открывают облачные и AI-технологии для ваших IT-проектов? Тогда мы ждем вас 10 апреля онлайн и офлайн в Москве в Цифровом деловом пространстве (ЦДП). Зарегистрироваться.

🚀 Запустили новую зону доступности ru.AZ-3 в облаке Cloud.ru Evolution — сейчас в ней можно размещать ресурсы IaaS-сервисов. А благодаря сетевой связности с уже существующими AZ, созданные в AZ-3 ресурсы могут обмениваться данными по сети со всеми другими вашими IaaS-ресурсами.

📺 Провели вебинары и их можно посмотреть в записи:

А также 27 февраля в 11:00 мск приглашаем на вебинар Evolution Bare Metal: как мы решили строить Bare Metal и что у нас получилось. На нем вы узнаете, как эффективно использовать выделенные серверы для разработки и тестирования, обработки больших данных, а также виртуализации и контейнеризации.

🦾 Обновили наши облачные платформы. Например, добавили новые асинхронные методы для удаления и остановки Jupyter Servers. А еще в документации платформы Cloud.ru ML Space рассказали, как собрать Docker-образ для задачи обучения на основе любого пользовательского образа. Про остальные обновления подробно рассказали в дайджесте на сайте

⚙️ Расширили возможности в облаке Cloud.ru Evolution — теперь аренда виртуальной машины с GPU NVIDIA® Tesla® V100 доступна и физическим лицам. Для этого достаточно расширить квоту через техническую поддержку.

💸 Предлагаем зарабатывать вместе с Cloud.ru: присоединяйтесь к реферальной программе, рекомендуйте наши облачные сервисы клиентам, коллегам или друзьям и получайте вознаграждение 15%. Участвовать могут не только юридические лица и ИП, но и физические лица, а также самозанятые.

До встречи в следующем выпуске!

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии6

Одним из серьёзных вызовов для Delphi-разработчиков сегодня является модернизация давно работающих проектов и переход на свежую версию языка и среды разработки Delphi. Габриэль Морару – опытный программист, евангелист Delphi, автор книг и блогер – обратился ко всем желающим с предложением бесплатно обновить их проект до современных стандартов в программировании, обеспечив совместимость с Delphi 11.3 и 64-битными ОС.

Что он может сделать для вас:

  • Перейти от ANSI-строк к Unicode.

  • Устранить указатели (Pointer, ^, @), применив безопасные альтернативы.

  • Заменить избыточные TStringList более эффективными структурами данных.

  • Удалить операторы goto и реструктуризовать циклы.

  • Избавиться от ненужных таймеров.

  • Избежать злоупотребления Application.ProcessMessages.

  • Сократить использование глобальных переменных.

  • Обеспечить 64-битную совместимость.

  • Добавить менеджер памяти FastMM для обнаружения утечек памяти.

  • Реализовать проверки на переполнение буфера, переполнение целочисленных значений и перезапись памяти.

  • Выделить в коде повторно используемые процедуры.

  • Разделить проект на библиотеки.

  • Сделать код читабельнее и лёгким в сопровождении.

Если в процессе многолетних доработок ваш код стал запутанным, он даже может сделать ПОЛНУЮ переделку!

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

Если вас не пугает такая публичность, можете подробнее ознакомиться с этим предложением и записаться на рефакторинг здесь.

Теги:
Рейтинг0
Комментарии1

Регистрируйтесь на GoCloud 2025, чтобы увидеть весь масштаб облаков и AI 🦾☁️

Хотите узнать про глобальные тренды в AI, пополнить список инструментов и сценариев работы в облаке, обменяться опытом с коллегами-экспертами, а также увидеть, какой простор открывают облачные и AI-технологии для ваших IT-проектов? Тогда приходите на главную конференцию про облачные технологии и искусственный интеллект — GoCloud 2025.

Что вас ждет в этом году:

  • три трека: инфраструктура и инструменты, AI и R&D и сценарии работы в облаке;

  • 30+ спикеров из Cloud.ru и ведущих российских компаний;

  • live-демонстрации облачных платформ и нетворкинг с экспертами;

  • не только доклады: интерактивные зоны, afterparty с музыкальной программой и кастомный мерч.

Кому будет полезно

Техническим лидерам, IT-директорам, разработчикам, DevOps-инженерам, архитекторам, дата-инженерам, AI/ML-инженерам, дата-сайентистам, SRE-инженерам, системным администраторам, специалистам по информационной безопасности.

Как принять участие

Можно подключиться к онлайн-трансляции (ссылка придет зарегистрированным участникам в письме) или прийти в Цифровое деловое пространство (ЦДП) в Москве. Собираемся 10 апреля в 10:00, основную программу начинаем в 11:00. 

👉 Зарегистрироваться на GoCloud 2025

Скоро мы начнем анонсировать доклады программы — не переключайтесь! А как прошли предыдущие конференции Cloud.ru можно почитать в статьях:

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Docker в каждый дом
Стрим FastAPI+Docker породил бурное обсуждение, а нужен ли докер в таком небольшом проекте. Наш ответ — обязательно! В современном мире разработки docker является такой же неотъемлемой частью разработки, как и git. Есть некоторые области без докера, например, разработка GUI, операционных систем или микроконтроллеров. Но весь backend, frontend и data science без докера вообще не живут. Давайте посмотрим, какие прямые выгоды даёт докер:

1. Всегда понятно, как запустить код. Dockerfile является однозначной инструкцией по сборке проекта. Bus-factor не мешает жить.

2. Легко включать новых людей в разработку. Инструкция в ридми сводится к docker build & docker run, что понятно даже junior-разработчикам.

3. Деплой можно производить где угодно. В пару команд можно запуститься на компе разработчика, на test или prod сервере, у заказчика на ноутбуке – и везде всё будет одинаково, нужен только сам Docker.

4. Проект одинаково себя ведёт везде. Это упрощает воспроизведение проблемы и сокращает время на багфикс.

5. Нет проблем с конфликтом зависимостей-библиотек. Вы можете на одной машине запустить проекты с условным django 3 и django 4, они никак друг другу не помешают.

6. Легко поднимать зависимости-компоненты. Для любой базы данных берётся готовый докер-образ, меняется конфиг и в одну команду запускается. С выходом на docker compose можно одной командой поднимать сборную солянку из backend, frontend, базы данных, nginx и Let's Encrypt.

7. Просто откатываться к старой версии. Версионирование докер-образов позволяет запустить новую версию, и, если что-то пошло не так, откатиться назад за десятки секунд.

8. Понятные внешние эффекты проекта. В команде docker run указаны проброшенные в контейнер каталоги и порты. Всё остальное изолированно.

В общем, со всех сторон одна польза. Минусы? Требуется изучить новый инструмент и best practices. Кажется, на этом всё. Даже дополнительных накладных расходов на виртуализацию нет. И помните – если docker вам мешает, скорее всего, вы что-то делаете неправильно.

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Вклад авторов