Работа с памятью
На практике редко приходится работать с памятью напрямую, но под капотом компьютер шуршит шестерёнками — выделяет и освобождает память.
Познавательная статья с очень качественной визуализацией, посвящённая основам работы с памятью.
Автор рассказывает базовые концепции, как выделяется и как освобождается память, затрагивает проблему фрагментации, утечки памяти, и другие причины полнейших крахов, от которых мы не защищены.
#skills
На практике редко приходится работать с памятью напрямую, но под капотом компьютер шуршит шестерёнками — выделяет и освобождает память.
Познавательная статья с очень качественной визуализацией, посвящённая основам работы с памятью.
Автор рассказывает базовые концепции, как выделяется и как освобождается память, затрагивает проблему фрагментации, утечки памяти, и другие причины полнейших крахов, от которых мы не защищены.
#skills
❤10👍3🌭2
Сам читаю недавно, но уже хочется посоветовать живой и приятный канал Николая Хитрова о разработке на python.
Автор пишет много практических постов о разработке, например, пост о логировании или какие нюансики стоит знать, внедряя loguru. Периодически поток информации разбавляется юмором. А ещё узнал из этого канала об интересной такой утилите deptry.
Автор пишет много практических постов о разработке, например, пост о логировании или какие нюансики стоит знать, внедряя loguru. Периодически поток информации разбавляется юмором. А ещё узнал из этого канала об интересной такой утилите deptry.
Telegram
Николай Хитров | Блог
Личный бложик про IT новости, инструменты из мира python и различные методологии по типу DDD, TDD, OOP vs FP и прочие модные абревиатуры
Tg: @nkhitrov
Github: https://github.com/nkhitrov
Tg: @nkhitrov
Github: https://github.com/nkhitrov
👍6❤5🔥2
Пятничное развлекательное
Мы уже говорили о Роберте Сапольски. Хочется порекомендовать ещё одну захватывающую лекцию. На этот раз о религии. Просто послушайте и делайте выводы сами.
А кто хочет лёгкого и интересного чтения обратите внимание на его книгу о жизни и работе в Африке – Записки примата. Необычайная жизнь ученого среди павианов. Путешествия по континенту, исследование влияния стресса на другие биологические показатели, быт местных племен.
#fun #books
Мы уже говорили о Роберте Сапольски. Хочется порекомендовать ещё одну захватывающую лекцию. На этот раз о религии. Просто послушайте и делайте выводы сами.
А кто хочет лёгкого и интересного чтения обратите внимание на его книгу о жизни и работе в Африке – Записки примата. Необычайная жизнь ученого среди павианов. Путешествия по континенту, исследование влияния стресса на другие биологические показатели, быт местных племен.
#fun #books
Telegram
DevFM
Пятничное развлекательное
Хочется порекомендовать замечательный курс для небиологов от Стэнфордского университета Биология поведения человека, который ведет Роберт Сапольски. Курс аж на 27 лекций будет интересен увлекающимся подобной тематикой.
И абсолютно…
Хочется порекомендовать замечательный курс для небиологов от Стэнфордского университета Биология поведения человека, который ведет Роберт Сапольски. Курс аж на 27 лекций будет интересен увлекающимся подобной тематикой.
И абсолютно…
👍8❤2🌭2
Backup: май
Архитектура проекта
1. Load balancing
2. Zero-Downtime Deployments with Docker Compose
3. Как проектировать микросервисы
4. Кеширование на бекенде
5. Асинхронное взаимодействие сервисов с применением Kafka
Копаем вглубь
1. Пагинируем по-всякому
2. Как работает ChatGPT
3. Попробуйте HTMX
4. Работа с памятью
Базы данных
1. О производительности Postgres
2. TOAST – проблемы откуда не ждали
Разное
1. Как мы стали делать офигенно длинные собрания, и почему это больше не вселенское зло
2. Роберт Сапольски — Биология религиозности
3. Вы, конечно, шутите, мистер Фейнман!
4. Сравниваем лампы и батарейки
Если пропустили, то подборка за апрель.
#backup
Архитектура проекта
1. Load balancing
2. Zero-Downtime Deployments with Docker Compose
3. Как проектировать микросервисы
4. Кеширование на бекенде
5. Асинхронное взаимодействие сервисов с применением Kafka
Копаем вглубь
1. Пагинируем по-всякому
2. Как работает ChatGPT
3. Попробуйте HTMX
4. Работа с памятью
Базы данных
1. О производительности Postgres
2. TOAST – проблемы откуда не ждали
Разное
1. Как мы стали делать офигенно длинные собрания, и почему это больше не вселенское зло
2. Роберт Сапольски — Биология религиозности
3. Вы, конечно, шутите, мистер Фейнман!
4. Сравниваем лампы и батарейки
Если пропустили, то подборка за апрель.
#backup
🔥7❤2👍2
Попробуйте ruff
Ранее мы рассказывали о целом наборе линтеров, которые постоянно применяем в своих проектах.
Недавно обратили внимание на достаточно молодой и интересный линтер для python – ruff. Он объединяет в себе правила многих других линтеров – по сути всех, которые используем.
Мы уже сделали для себя конфиг и испробовали его на одном из сервисов. Полёт нормальный, ощущения только положительные.
Из плюсов:
– ощутимая скорость. Линтеры у нас прогоняются с помощью pre-commit на каждом коммите, поэтому скорость имеет значение. Пару раз даже ловил себя на мысли, что не делаю лишний коммит, чтобы не ждать прогона линтеров. А ruff отрабатывает практически моментально
– в pre-commit не нужно держать целый зоопарк линтеров. Достаточно один раз сконфигурировать и подключить ruff
Так что категорически рекомендую попробовать. У них, кстати, есть playground для этих целей.
#python
Ранее мы рассказывали о целом наборе линтеров, которые постоянно применяем в своих проектах.
Недавно обратили внимание на достаточно молодой и интересный линтер для python – ruff. Он объединяет в себе правила многих других линтеров – по сути всех, которые используем.
Мы уже сделали для себя конфиг и испробовали его на одном из сервисов. Полёт нормальный, ощущения только положительные.
Из плюсов:
– ощутимая скорость. Линтеры у нас прогоняются с помощью pre-commit на каждом коммите, поэтому скорость имеет значение. Пару раз даже ловил себя на мысли, что не делаю лишний коммит, чтобы не ждать прогона линтеров. А ruff отрабатывает практически моментально
– в pre-commit не нужно держать целый зоопарк линтеров. Достаточно один раз сконфигурировать и подключить ruff
Так что категорически рекомендую попробовать. У них, кстати, есть playground для этих целей.
#python
Telegram
DevFM
Делаем код мягким и шелковистым
Мы уже говорили об утилите pre-commit, которая автоматизирует рутинный запуск анализаторов кода и не позволяет сделать коммит, пока проблемы не будут исправлены.
Теперь расскажем о тех утилитах, которые применяются в каждом…
Мы уже говорили об утилите pre-commit, которая автоматизирует рутинный запуск анализаторов кода и не позволяет сделать коммит, пока проблемы не будут исправлены.
Теперь расскажем о тех утилитах, которые применяются в каждом…
👍9🔥6❤3
Управление данными в микросервисах
В микросервисной архитектуре у каждого сервиса обычно своя база данных. Для организации доступа одного сервиса к данным другого сервиса нужно либо каждый раз делать запрос к сервису, ответственному за данные, либо иметь копию нужных данных. И тут важен баланс.
Например, у нас есть сервис, который хранит и обслуживает актуальный справочник городов. А навигационный сервис предоставляет информацию о маршрутах общественного транспорта в выбранном городе. Как правильно организовать доступ навигационного сервиса к справочнику городов?
В статье автор рассказывает о способах управления данными в микросервисной архитектуре:
– Дублирование мастер-систем. Каждый сервис хранит и поддерживает данные независимо друг от друга
– API. Сервис, ответственный за данные, предоставляет доступ к данным по API другим сервисам
– DWH. Сервис, ответственный за данные, сливает их в единое хранилище, а другие сервисы имеют доступ к хранилищу
– Очереди. Сервис, ответственный за данные, публикует информацию обо всех изменениях в очередь. А другие сервисы, считывая данные из очереди, хранят на своей стороне и актуализируют.
По каждому способу автор рассказывает о достоинствах и недостатках. Подробнее останавливается на последнем, как на наиболее интересном, и рассказывает о нюансах реализации.
Способ через очереди мне особенно нравится тем, что позволяет делать сервисы более независимыми, хотя он, конечно, более трудозатратный.
#systemdesign
В микросервисной архитектуре у каждого сервиса обычно своя база данных. Для организации доступа одного сервиса к данным другого сервиса нужно либо каждый раз делать запрос к сервису, ответственному за данные, либо иметь копию нужных данных. И тут важен баланс.
Например, у нас есть сервис, который хранит и обслуживает актуальный справочник городов. А навигационный сервис предоставляет информацию о маршрутах общественного транспорта в выбранном городе. Как правильно организовать доступ навигационного сервиса к справочнику городов?
В статье автор рассказывает о способах управления данными в микросервисной архитектуре:
– Дублирование мастер-систем. Каждый сервис хранит и поддерживает данные независимо друг от друга
– API. Сервис, ответственный за данные, предоставляет доступ к данным по API другим сервисам
– DWH. Сервис, ответственный за данные, сливает их в единое хранилище, а другие сервисы имеют доступ к хранилищу
– Очереди. Сервис, ответственный за данные, публикует информацию обо всех изменениях в очередь. А другие сервисы, считывая данные из очереди, хранят на своей стороне и актуализируют.
По каждому способу автор рассказывает о достоинствах и недостатках. Подробнее останавливается на последнем, как на наиболее интересном, и рассказывает о нюансах реализации.
Способ через очереди мне особенно нравится тем, что позволяет делать сервисы более независимыми, хотя он, конечно, более трудозатратный.
#systemdesign
👍6🔥3🌭3
За что мы любим командную строку
В повседневной деятельности мы активно применяем командную строку. Иногда слышим вопросы о том, зачем это вообще нужно, вроде и без неё все хорошо? Этот вопрос вполне логичен, если не погружался в эту тему, не пытался решать реальные задачи.
На хабре мы написали лёгкую статью, где на примерах рассказали, за что мы любим командную строку. Профессиональный навык работы с командной строкой – один из шагов к 10х программисту.
В повседневной деятельности мы активно применяем командную строку. Иногда слышим вопросы о том, зачем это вообще нужно, вроде и без неё все хорошо? Этот вопрос вполне логичен, если не погружался в эту тему, не пытался решать реальные задачи.
На хабре мы написали лёгкую статью, где на примерах рассказали, за что мы любим командную строку. Профессиональный навык работы с командной строкой – один из шагов к 10х программисту.
❤7🌭5🔥3
Зачем разработчику нужен Linux вообще и терминал в частности
Эта статья существует! Вчерашний анонс из-за путешествий во времени вышел не вовремя. Так зачем вам терминал?
– легко поставить софт
– легко автоматизировать процессы
– легко вспомнить
– легко настроить под себя
легко…(злобный закадровый смешок)
Покажем, чем терминал важен для разработчиков и не только на разных примерах.
#devfm #skills
Эта статья существует! Вчерашний анонс из-за путешествий во времени вышел не вовремя. Так зачем вам терминал?
– легко поставить софт
– легко автоматизировать процессы
– легко вспомнить
– легко настроить под себя
легко…(злобный закадровый смешок)
Покажем, чем терминал важен для разработчиков и не только на разных примерах.
#devfm #skills
Хабр
Зачем разработчику нужен Linux вообще и терминал в частности
Тема "Windows vs Linux" является частой причиной холиваров. Спорить бессмысленно, так как для каждой задачи требуется свой инструмент. Позвольте заинтересовать вас чудесным миром Linux и теми...
👍14❤4🔥3👎2😁1
Backup: подборка по базам
Экспертиза в базах данных – супер востребованный скилл среди разработчиков. У нас накопилось приличное количество постов, посвящённых базам данных. Собрали все в один пост, чтобы было удобно.
Практика
– Подробный гайд по работе с json в postgres
– Какой тип данных использовать для хранения строк в postgres
– Куда смотреть, если postgres начала тупить
– Базовые настройки Postgres
– Работа с NULL в Postgres
– Тестирование миграций alembic
– Сравниваем базы данных с помощью data-diff
– Временные интервалы в postgres
– Порядок имеет значение
– Утилита postgres_dba
Теория
– TOAST – проблемы откуда не ждали
– Индексы в PostgreSQL
– Буфферный кеш в PostgreSQL
– Этапы выполнения запросов в PostgreSQL
– ACID в PostgreSQL
–Понимаем EXPLAIN в PostgreSQL
– Миграции без даунтайма
– Храним данные по-разному, в зависимости от цели – создаем аналитическую базу
– Введение в Greenplum и пример реального использования
– Введение в Manticore и сравнение с Elastic
– Тернистый путь к ClickHouse
– Оптимизатор Join в Postgres
– Как мы боролись с Manticore
– Посмотрите на keydb
– TimescaleDB для хранения временных рядов
Эту подборку мы добавим в закреплённое сообщение и будем поддерживать в актуальном состоянии. Пробейте палец вверх, если считаете подобные тематические подборки полезными.
#backup
Экспертиза в базах данных – супер востребованный скилл среди разработчиков. У нас накопилось приличное количество постов, посвящённых базам данных. Собрали все в один пост, чтобы было удобно.
Практика
– Подробный гайд по работе с json в postgres
– Какой тип данных использовать для хранения строк в postgres
– Куда смотреть, если postgres начала тупить
– Базовые настройки Postgres
– Работа с NULL в Postgres
– Тестирование миграций alembic
– Сравниваем базы данных с помощью data-diff
– Временные интервалы в postgres
– Порядок имеет значение
– Утилита postgres_dba
Теория
– TOAST – проблемы откуда не ждали
– Индексы в PostgreSQL
– Буфферный кеш в PostgreSQL
– Этапы выполнения запросов в PostgreSQL
– ACID в PostgreSQL
–Понимаем EXPLAIN в PostgreSQL
– Миграции без даунтайма
– Храним данные по-разному, в зависимости от цели – создаем аналитическую базу
– Введение в Greenplum и пример реального использования
– Введение в Manticore и сравнение с Elastic
– Тернистый путь к ClickHouse
– Оптимизатор Join в Postgres
– Как мы боролись с Manticore
– Посмотрите на keydb
– TimescaleDB для хранения временных рядов
Эту подборку мы добавим в закреплённое сообщение и будем поддерживать в актуальном состоянии. Пробейте палец вверх, если считаете подобные тематические подборки полезными.
#backup
Telegram
DevFM
Работа с json в PostgreSQL
Цикл супер-полезных практических заметок о работе с json в PostgreSQL.
Затрагиваются вопросы:
— чем json отличается от jsonb
— как парсить json. В том числе: извлечение поля из json-объекта, получение тип данных, проверка существования…
Цикл супер-полезных практических заметок о работе с json в PostgreSQL.
Затрагиваются вопросы:
— чем json отличается от jsonb
— как парсить json. В том числе: извлечение поля из json-объекта, получение тип данных, проверка существования…
👍30🔥6❤2
Типы кабелей
Немного выбивающаяся из общей канвы канала статья, но всё же. Довольно любопытное чтиво для общего развития. В статье рассказывается о разных кабелях с большим количеством картинок.
– силовые кабели
– витая пара и DAC-кабель. Какие категории кабелей бывают и как и что на это влияет: скорость передачи данных, экранирование
– оптика. Что за мода такая, что за сердцевина, какие бывают коннекторы
Из полезного: позволяет немного погрузиться в тему и, например, не растеряться, когда будете выбирать кабель для домашних или рабочих нужд.
Немного выбивающаяся из общей канвы канала статья, но всё же. Довольно любопытное чтиво для общего развития. В статье рассказывается о разных кабелях с большим количеством картинок.
– силовые кабели
– витая пара и DAC-кабель. Какие категории кабелей бывают и как и что на это влияет: скорость передачи данных, экранирование
– оптика. Что за мода такая, что за сердцевина, какие бывают коннекторы
Из полезного: позволяет немного погрузиться в тему и, например, не растеряться, когда будете выбирать кабель для домашних или рабочих нужд.
Хабр
Какие кабели можно встретить в стойке дата-центра?
Приступая к работе в ЦОД, можно легко запутаться в различных типах кабелей, которые используются для соединения и подключения сетевых устройств и серверов. Некоторые из них распространены и в...
👍4❤3🔥2🌭2
Путь от монолита к микросервисам
Лёгкая для понимания статья, проводящая грань между монолитом, микросервисным монолитом, микросервисами и так называемым оркестратором бизнес-сервисов (последнее – это какая-то ненаучная фантастика).
Каждый из вариантов имеет свои плюсы и свои недостатки, о которых говорит автор. Пожалуй, самое грустное – зависнуть на микросервисном монолите и словить все проблемы, какие только можно придумать.
Статья мне понравилось ещё тем, что по пути автор даёт ссылки на интересные материалы для погружения в тему. Например, о CirquitBreaker от Мартина Фаулера.
Тема достаточно холиварная, поэтому советую ещё заглянуть в комменты.
#systemdesign
Лёгкая для понимания статья, проводящая грань между монолитом, микросервисным монолитом, микросервисами и так называемым оркестратором бизнес-сервисов (последнее – это какая-то ненаучная фантастика).
Каждый из вариантов имеет свои плюсы и свои недостатки, о которых говорит автор. Пожалуй, самое грустное – зависнуть на микросервисном монолите и словить все проблемы, какие только можно придумать.
Статья мне понравилось ещё тем, что по пути автор даёт ссылки на интересные материалы для погружения в тему. Например, о CirquitBreaker от Мартина Фаулера.
Тема достаточно холиварная, поэтому советую ещё заглянуть в комменты.
#systemdesign
Хабр
От микросервисного монолита к оркестратору бизнес-сервисов
Когда компании решают разделить монолит на микросервисы, в большинстве случаев они последовательно проходят четыре этапа: монолит, микросервисный монолит, микросервисы, оркестратор бизнес-сервисов....
👍6🌭3🔥1
Retrying consumer in Kafka
В кафке консьюмер получает сообщение из топика и приступает к его обработке. Но в процессе обработки могут возникать разного рода проблемы. Если проблема временная, то её можно решить, сделав ретрай через какое-то время.
Кафка не предоставляет возможность пропустить сообщение и вернуться к нему позже.
Самое топорное решение, которое приходит на ум – сделать ретраи на уровне обработчика сообщений. Просто в цикле гонять обработку сообщения, пока не будет успех. Но при такой реализации мы заблокируем процесс обработки новых сообщений из топика.
В статье автор предлагает организовать систему ретраев через добавление новых топиков и специальной логики работы с ними.
После прочтения, возможно, возникнет лёгкий дискомфорт, с ощущением того, что предлагается сделать какую-то вундервафлю. Соглашусь, решение получается громоздкое, но более элегантного я не видел.
#skills
В кафке консьюмер получает сообщение из топика и приступает к его обработке. Но в процессе обработки могут возникать разного рода проблемы. Если проблема временная, то её можно решить, сделав ретрай через какое-то время.
Кафка не предоставляет возможность пропустить сообщение и вернуться к нему позже.
Самое топорное решение, которое приходит на ум – сделать ретраи на уровне обработчика сообщений. Просто в цикле гонять обработку сообщения, пока не будет успех. Но при такой реализации мы заблокируем процесс обработки новых сообщений из топика.
В статье автор предлагает организовать систему ретраев через добавление новых топиков и специальной логики работы с ними.
После прочтения, возможно, возникнет лёгкий дискомфорт, с ощущением того, что предлагается сделать какую-то вундервафлю. Соглашусь, решение получается громоздкое, но более элегантного я не видел.
#skills
Pragmatists
Retrying consumer architecture in the Apache Kafka
In this article I would like to explain what kind of problems can we encounter in Kafka messages processing and how can we deal with them. Before you go further basic Kafka knowledge is recommended…
❤6👍5🔥1
Мониторинг — боль
Интересное чтиво на тему мониторинга.
Казалось бы, логи и метрики облегчают жизнь, наблюдаемость системы растет, отладка становится проще. Или не совсем?
Автор проходится по основным моментам логирования и сбора метрик. Описывает боли, с которыми неоднократно сталкивался. Многое из написанного оказалось знакомо.
По каждому из пунктов даются практические советы. Один из интересных подходов, который хочется попробовать — семплирование логов.
Отдельно автор останавливается на трассировке, как на недооценённом инструменте.
В общем, по прочтении статьи появляется пища для размышлений и желание более критически посмотреть на то, что мы собираем.
#skills #logging
Интересное чтиво на тему мониторинга.
Казалось бы, логи и метрики облегчают жизнь, наблюдаемость системы растет, отладка становится проще. Или не совсем?
Автор проходится по основным моментам логирования и сбора метрик. Описывает боли, с которыми неоднократно сталкивался. Многое из написанного оказалось знакомо.
По каждому из пунктов даются практические советы. Один из интересных подходов, который хочется попробовать — семплирование логов.
Отдельно автор останавливается на трассировке, как на недооценённом инструменте.
В общем, по прочтении статьи появляется пища для размышлений и желание более критически посмотреть на то, что мы собираем.
#skills #logging
matduggan.com
Monitoring is a Pain
And we're all doing it wrong (including me)
I have a confession. Despite having been hired multiple times in part due to my experience with monitoring platforms, I have come to hate monitoring. Monitoring and observability tools commit the cardinal sin of…
I have a confession. Despite having been hired multiple times in part due to my experience with monitoring platforms, I have come to hate monitoring. Monitoring and observability tools commit the cardinal sin of…
👍8❤3🔥2🌭1
Бесплатный курс "Командная строка для разработчиков"
Мы довольно давно готовим молодых python-разработчиков, и начинаем именно с базовых знаний в Linux, прививая желание и умение работать в терминале. Вдохновляясь курсом "Поколения Python" на степике, мы решили сделать свой бесплатный курс "Командная строка для разработчиков", посвящённый терминалу Ubuntu, языку bash и базовому администрированию. Начинающим разработчикам поможем преодолеть неловкость перед текстовым терминалом, опытным разработчикам покажем неочевидные и полезные в работе фишки для увеличения продуктивности.
Курс начинался с оффлайна, а переход в онлайн требует существенной переработки материала. Поэтому релизимся поэтапно, выпуская новые уроки по мере готовности.
Введение и первое занятие уже доступно на степике. Примерная программа курса тут, будем рады замечаниям, дополнениям и лайкам.
#devfm
Мы довольно давно готовим молодых python-разработчиков, и начинаем именно с базовых знаний в Linux, прививая желание и умение работать в терминале. Вдохновляясь курсом "Поколения Python" на степике, мы решили сделать свой бесплатный курс "Командная строка для разработчиков", посвящённый терминалу Ubuntu, языку bash и базовому администрированию. Начинающим разработчикам поможем преодолеть неловкость перед текстовым терминалом, опытным разработчикам покажем неочевидные и полезные в работе фишки для увеличения продуктивности.
Курс начинался с оффлайна, а переход в онлайн требует существенной переработки материала. Поэтому релизимся поэтапно, выпуская новые уроки по мере готовности.
Введение и первое занятие уже доступно на степике. Примерная программа курса тут, будем рады замечаниям, дополнениям и лайкам.
#devfm
Stepik: online education
Командная строка для разработчиков – cli-for-dev
Вы научитесь выжимать максимум из клавиатуры, работая в Linux-терминале на примере Ubuntu. В курс входит достаточная теория по внутренностям Linux и много практики в терминале.
🔥31👍8❤2
Пятничное развлекательное
Недавно нашел милый гиковский проект Cooklang для тех, кто любит готовить.
Позволяет управлять своими рецептами, составлять по рецепту список покупок. Также есть приложение, веб-морда и даже cli-интерфейс.
А ещё есть видео, где ребята рассказывают, как этим всем пользоваться.
#fun
Недавно нашел милый гиковский проект Cooklang для тех, кто любит готовить.
Позволяет управлять своими рецептами, составлять по рецепту список покупок. Также есть приложение, веб-морда и даже cli-интерфейс.
А ещё есть видео, где ребята рассказывают, как этим всем пользоваться.
#fun
Cooklang: recipe markup language
Cooklang – Recipe Markup Language
Cooklang is a markup language for recipes.
❤7👍4🔥2
Как документировать архитектуру
В архитектуру входят сервисы, базы данных, брокеры сообщений, внешние интеграции и хорошо бы понимать, кто на ком стоял и кто с кем взаимодействует.
Замечательная статья, охватывающая многие аспекты документирования. Начинает автор с главного, объясняя, зачем нужно документировать архитектуру.
В качестве структурного шаблона для документирования предлагается использовать arc42. Для визуализации — C4 model. Кстати, C4 оказалась вполне удобной, и мы активно применяем её у себя.
Из приятного — для arc42 и C4 автор приводит ссылки на хорошие примеры реализации.
В конце автор рассказывает, как можно всё описанное организовать, применяя подход — documentation as code, а так же приводит полезные тулзы для этого.
#systemdesign #tools
В архитектуру входят сервисы, базы данных, брокеры сообщений, внешние интеграции и хорошо бы понимать, кто на ком стоял и кто с кем взаимодействует.
Замечательная статья, охватывающая многие аспекты документирования. Начинает автор с главного, объясняя, зачем нужно документировать архитектуру.
В качестве структурного шаблона для документирования предлагается использовать arc42. Для визуализации — C4 model. Кстати, C4 оказалась вполне удобной, и мы активно применяем её у себя.
Из приятного — для arc42 и C4 автор приводит ссылки на хорошие примеры реализации.
В конце автор рассказывает, как можно всё описанное организовать, применяя подход — documentation as code, а так же приводит полезные тулзы для этого.
#systemdesign #tools
workingsoftware.dev
The Ultimate Guide To Software Architecture Documentation
This guide shows you how to write, structure, visualize and manage software architecture documentation using appropriate documentation tools.
👍8🔥4❤2🌭1
Пятничное развлекательное
Anki-карточки — отличный способ набить словарный запас, заучивая фразы и предложения на релевантные для вас темы.
Ещё давно, когда ничего не знал про anki, использовал этот метод. Делал подписи на бумажках, чтобы готовиться к госам и ботать формулировки разных, не очень интересных теорем.
Существующие решения обычно просят бабосики и имеют перегруженный функционал. Недавно нашли приятное опенсорсное решении — Scholarsome (github) с минимально достаточным функционалом.
#fun #edu
Anki-карточки — отличный способ набить словарный запас, заучивая фразы и предложения на релевантные для вас темы.
Ещё давно, когда ничего не знал про anki, использовал этот метод. Делал подписи на бумажках, чтобы готовиться к госам и ботать формулировки разных, не очень интересных теорем.
Существующие решения обычно просят бабосики и имеют перегруженный функционал. Недавно нашли приятное опенсорсное решении — Scholarsome (github) с минимально достаточным функционалом.
#fun #edu
❤9🌭3👍2
Event storming для проектирования сервисов
Скажу честно, я в event storming не бум-бум и никогда не применял на практике. На просторах хабра нашел вводную статью — Моделирование микросервисов с помощью Event storming.
Event Storming помогает быстро получить стратегический дизайн, определив границы, в рамках которых технические решения можно принимать автономно.
Сомневаюсь, что буду применять на практике этот метод, но какие-то идеи точно стоит взять на вооружение. Например, правильное распределение приоритетов разработки и выделение контекстов.
А вот официальный сайт, если заинтересовались концепцией.
#systemdesign
Скажу честно, я в event storming не бум-бум и никогда не применял на практике. На просторах хабра нашел вводную статью — Моделирование микросервисов с помощью Event storming.
Event Storming помогает быстро получить стратегический дизайн, определив границы, в рамках которых технические решения можно принимать автономно.
Сомневаюсь, что буду применять на практике этот метод, но какие-то идеи точно стоит взять на вооружение. Например, правильное распределение приоритетов разработки и выделение контекстов.
А вот официальный сайт, если заинтересовались концепцией.
#systemdesign
Хабр
Моделирование микросервисов с помощью Event storming
Event storming — метод, который смещает акцент у событий с технического на организационный и бизнес уровни и помогает создать устойчивую модульную систему. Он нередко используется в контексте...
🔥6👍2🌭2
Как находить время "на почитать"
Я всегда любил читать. Раньше больше художку, потом больше нон-фикшн. Однажды заметил, что совсем перестал читать. И не из-за того что не хочется, а потому что всегда находится что-то важнее, всегда есть какой то вытесняющий фактор.
В итоге задумался, а что я делаю каждый день, на что я всегда нахожу время? Каждый день я пью кофе, полчаса точно, а значит, именно это время я могу выделить на почитать. И так делаю уже пару лет. Каждый день минимум полчаса на чтение — неплохой результат, если до этого было ноль.
Разумеется, не обязательно пить кофе по утрам, и, вероятно, вы и так вдоволь читаете, но вектор понятен.
Мы писали про анализ предметной области перед стартом проекта и откуда вообще брать источники технической литературы. Рекомендации от нас по интересным книгам вы найдёте по тегу #books.
Какую последнюю книгу вы прочитали и готовы рекомендовать?
#edu
Я всегда любил читать. Раньше больше художку, потом больше нон-фикшн. Однажды заметил, что совсем перестал читать. И не из-за того что не хочется, а потому что всегда находится что-то важнее, всегда есть какой то вытесняющий фактор.
В итоге задумался, а что я делаю каждый день, на что я всегда нахожу время? Каждый день я пью кофе, полчаса точно, а значит, именно это время я могу выделить на почитать. И так делаю уже пару лет. Каждый день минимум полчаса на чтение — неплохой результат, если до этого было ноль.
Разумеется, не обязательно пить кофе по утрам, и, вероятно, вы и так вдоволь читаете, но вектор понятен.
Мы писали про анализ предметной области перед стартом проекта и откуда вообще брать источники технической литературы. Рекомендации от нас по интересным книгам вы найдёте по тегу #books.
Какую последнюю книгу вы прочитали и готовы рекомендовать?
#edu
Telegram
DevFM
Любая работа по программированию начинается с анализа предметной области. Рекомендуется пара этих ресурсов - для русского и английского поиска.
https://cyberleninka.ru
https://www.researchgate.net
https://scholar.google.com/
В начале ищутся самые популярные…
https://cyberleninka.ru
https://www.researchgate.net
https://scholar.google.com/
В начале ищутся самые популярные…
🔥9🌭4👍3❤1
Tracing Python
Обычно для отслеживания работы кода достаточно отладчика в любимой среде разработки. Но если, например, проблема не воспроизводится локально, приходится расчехлять что-то большее…
В статье автор приводит всевозможные способы трассировки кода, останавливаясь на возможностях каждого:
— sys.settrace
— самописный logging-декоратор
— autologging
— icecream
— snoop и birdseye
В дополнение из наших постов: статья про разухабистое логирование, где одним из аспектов является поиск узких мест.
#python
Обычно для отслеживания работы кода достаточно отладчика в любимой среде разработки. Но если, например, проблема не воспроизводится локально, приходится расчехлять что-то большее…
В статье автор приводит всевозможные способы трассировки кода, останавливаясь на возможностях каждого:
— sys.settrace
— самописный logging-декоратор
— autologging
— icecream
— snoop и birdseye
В дополнение из наших постов: статья про разухабистое логирование, где одним из аспектов является поиск узких мест.
#python
Die wunderbare Welt von Isotopp
Tracing Python
Kris Köhntopp's blog (Fedi: @isotoppinfosec.exchange)
👍12🔥2🌭2❤1⚡1