ch
Feedback
DevFM

DevFM

前往频道在 Telegram

О разработке: AI, технологии, инструменты, system design, процессы, команды Для связи @sa_bul

显示更多
2 836
订阅者
无数据24 小时
无数据7
+4730
帖子存档
DevFM
2 838
Пагинируем по-всякому Занимательная статья, посвящённая способам реализации пагинации. Достаточно частая задача – отдавать что-то порционно. В зависимости от потребностей, нужно применять разные способы пагинации. Помимо классического page-based pagination автор рассматривает KeySet-based pagination и Cursor-based pagination. Также рассматриваются плюсы и минусы каждого из способов. В конце приводятся примеры, как реализована пагинация у больших ребят: Stripe, Shopify, Github. #skills

DevFM
2 838
Zero-Downtime Deployments with Docker Compose У нас был пост, посвященный стратегиям деплоя приложений. Но во всех практических примерах использовался кубер. Для многих задач это стрельба из пушки по воробьям, и в комментах спрашивали, есть ли что-то подобное, только без использования кубера. Нашли свеженькую статью, где автор реализует blue-green деплоймент без даунтайма с применением docker compose. Из приятного – автор пользуется полюбившимся многим traefik вместо nginx. Также в процессе знакомства можно кое-что новое узнать о композе. Из не очень приятного – bash всё ещё активно применяется. Всё описанное можно потрогать, исходники выложены на github. #skills

DevFM
2 838
Пятничное развлекательное Настало время моего любимого фильма Город грехов (2005). Четыре новеллы с интересными переплетениями между собой. Каждый фрагмент захватывает своими персонажами, вызывая сопереживание. Старик умирает... Девочка остается жить. Честный обмен Фильм в жарне нуара, где во главе угла атмосфера пессимизма, недоверия, разочарования и цинизма. Мы говорили про игру Max Payne и фильм Бегущий по лезвию в этой стилистике. Рекомендую к просмотру. Продолжение 2014 кода мне нравится куда меньше, но атмосферу фильм смог сохранить. Рад был видеть Кристофера Ллойда, хоть и в эпизоде. Кто не знает, это Док из трилогии Назад в будущее. #films

DevFM
2 838
Load balancing Прочитал на одном дыхании замечательную статью о балансировке нагрузки (load balancing). С увеличением нагрузки на приложение один сервер может уже не справляться. Тут-то и вступают в дело алгоритмы балансировки нагрузки. По сути, оптимизировать можно два показателя: задержки при запросах и количество отклонённых сервером запросов. Автор рассматривает: – алгоритм round robin, когда запросы отправляются на сервера по кругу. Этот алгоритм не учитывает, что сервера могут иметь разную мощность. Тогда более мощные сервера будут быстро обрабатывать запросы, а менее мощные могут загибаться и давать отлупы. – алгоритм dynamic weighted round robin учитывает мощность серверов. На основе среднего времени ответа им динамически устанавливаются веса. И, в зависимости от весов, будет автоматически варьироваться количество запросов. – алгоритм least connection учитывает количество подключений, поддерживаемых серверами в текущий момент времени. Запрос будет передан серверу с наименьшим количеством активных подключений. – алгоритм peak exponentially weighted moving average (PEWMA) направлен на уменьшение задержек в запросах. По сути, сочетает в себе dynamic weighted round robin, least connection и немного магии сверху. Каждый из описанных алгоритмов сопровождается красивой и понятной анимацией. А в конце статьи можно поиграться с наглядным симулятором каждого из методов. Помимо теоретических выкладок, автор проводит целое исследование, и смотрит, как в разных ситуациях ведёт себя каждый из алгоритмов. Вас ожидают интересные выводы :) #skills

DevFM
2 838
Backup: апрель Архитектура проекта Межсервисное взаимодействие Выбор брокера сообщений DDD – Domain Driven Design О программировании Вариантность типов Приоритизация технического долга Асинхронность в браузере Базы данных Postgres – как хранить строки? Работа с json в PostgreSQL Инструменты Рисуем схемы VPN — не панацея Софтскиллы Биология поведения человека и лекция о депрессии Курс Learning How to Learn В этом месяце мы отметили три года. Если пропустили, то подборка за март. #backup

DevFM
2 838
Пост о DDD зашёл хорошо. Но всё-таки с чего начать? Классические книги по этой теме могут не зайти с первого раза. Для погружения в тему и отслеживания, что происходит в мире DDD рекомендуем канал DDDevotion.

DevFM
2 838
Приоритизация технического долга Технический долг штука хитрая, сначала незаметная. Но в какой-то момент начинает влиять на производительность системы и эффективность разработки. И вроде всё просто — бери и исправляй. Но когда система разрастается, а бизнес требует новый функционал, появляются вопросики. За что хвататься? Всё явно не успеем, но забивать нельзя, потихоньку нужно закрывать долги. В статье автор размышляет о приоритизации технического долга. На практике сводится к тому, что нужно ответить на два вопроса: — Если мы ничего не будем предпринимать, усугубится ли проблема, или всё в целом останется на прежнем уровне, или вообще всё будет двигаться в сторону улучшения? — Проблема относится к той части системы, которая активно развивается и используется или находится просто на обслуживании? Ответив по каждой проблеме на эти вопросы, можно более осознанно приоритизировать свой технический долг. #procode

DevFM
2 838
Пятничное развлекательное Хочется порекомендовать очень классный бесплатный курс на Coursera – Learning How to Learn. Название говорит само за себя. Курс имеет почти 90 тысяч рецензий с общим рейтингом 4.8. Пересматривал его дважды. Помогает структурировать в целом известные факты о постижении новой информации. Рассказывают о том, как работает мозг и различных техниках освоения нового. Также выступают ученые, занимающиеся исследованиями в этой области. Они рассказывают, почему оно работает именно так. Курс лёгкий для освоения, поэтому можно смотреть, не напрягаясь. #fun #edu

DevFM
2 838
Domain Driven Design Domain Driven Design (DDD) – на первый взгляд, что-то такое сложное. Да и на второй тоже сложное. Не очень понятно, с чего начинать. Начать можно со статьи Domain-driven design: рецепт для прагматика. Автор на примерах проходится по основным концептам DDD: – ubiquitous language – всё обсуждение происходит в терминах единого языка – domain model – некий набор сущностей и сценариев, связанных с предметной областью – bounded context – некие рамочки, в которых существует доменная модель и единый язык Основная идея DDD – борьба со сложностью бизнес-процессов, их автоматизации и реализации в коде. Domain – предметная область и от неё нужно отталкиваться при проектировании и разработке. Бороться со сложностью – звучит многообещающе, но "прежде чем начать бороться со сложностью с помощью Domain-Driven Design, нужно научиться бороться со сложностью самого Domain-Driven Design". Не факт, что будете применять, но знать что это за зверь – стоит. К тому же, можно перенять некоторые полезные практики, например, ubiquitous languge – единый язык общения. На эту тему написан занимательный комментарий, что пример, приведённый в статье из мира продаж всем понятен, тривиален и нет смысла для него составлять ubiquitous languge. На что ему приводят такие термины из мира продаж: ретроскидка, скидка по фактуре, ценовое соглашение, отличное от базового и др. Кажется, не всем понятно. Это я к тому, что использование ubiquitous languge в любой области облегчит взаимодействие. Можете посоветовать что-то толковое на тему DDD? #skills

DevFM
2 838
Ребята из SQL-чатика проводят онлайн-встречу 5 мая в 19:00. Темы: – о работе – как войти в айти – софт скиллы – технические вопросы – о том, что спрашивают на собеседованиях Вопросы, которые хочется обсудить можно оставить в гугл-форме. Ссылка в зум на встречу. Любые вопросы можно уточнить в чате.

DevFM
2 838
Ваш опыт в ИТ
Anonymous voting

DevFM
2 838
Ваша основная сфера деятельности?
Anonymous voting

DevFM
2 838
Три года DevFM Мы создали этот канал 25 апреля 2020 года. Начинался он как инициатива двух друзей, которые делились контентом "для своих". Когда в десятый раз с кем-то поделился одним и тем же интересным материалом, возникло желание такой материал систематизировать и опубликовать. Первые посты не теряют актуальности: – Как правильно постоянно ботатьПаттерны проектирования – Первое пятничное развлекательное – история xkcd – Качественные публичные выступления для студентов – О важности предсказуемости – Не строй велосипед, переиспользуйКак изучать предметную область перед стартом проекта А год назад мы основательно взялись за канал и с тех пор не сбавляем темп. Также иногда пишем видео для ютуба, например, Идеальный скрипт на bash и статьи для Пикабу, которые выходят за формат поста тут. Недавно мы вышли на Хабр со статьёй по реверсу, и набрали почти 50 плюсов и две сотни закладок. В закреплённом посте у нас есть навигация по каналу с продуманной системой тегов. В этом году мы планируем ещё больше и ещё круче. А вам спасибо за интерес, спасибо, что читаете. Хотелось бы узнать подробнее о вас. Чем вы занимаетесь и как долго? Два небольших опроса в следующих постах #ToTheMoon

DevFM
2 838
VPN — не панацея Цикл удачных статей на горячую тему обхода блокировок в сети. В первой статье автор рассказывает о том, как можно выявлять попытки обхода блокировок. Если у вас настроен VPN или прокси, не стоит расслабляться – их можно выявить и заблокировать. В статье автор приводит подобные примеры из реальной жизни. Вторая статья рассказывает, что всё не так уж и плохо. Всё-таки есть технологии обхода блокировок, которые пока не детектируются (хотя наверняка в эту сторону идут активные исследования). Автор рассматривает такие технологии как: V2Ray, XRay, XTLS, Hysteria, Cloak. Статья больше теоретическая, но неплохо так расширяет кругозор. А кому хочется потрогать, что было описано ранее и иметь запасной вариант выхода в мир, есть еще две чисто практические статьи: Обход блокировок: настройка сервера XRay для Shadowsocks-2022 и VLESS с XTLS, Websockets и фейковым веб-сайтом и Программы-клиенты для протоколов недетектируемого обхода блокировок сайтов: V2Ray/XRay, Clash, Sing-Box, и другие. Порядок чтения не столь важен, можно начинать с любой заинтересовавшей. #security

DevFM
2 838
Пятничное развлекательное Столкнулся с удивительным случаем, который вызвал смех и удивление. Проводили собеседование. Заходим в зум, включаем камеры и тут включает камеру кандидат с мобильного. И что мы видим... Сидит чувак на улице, на лавочке, с сигой в зубах и готов проходить собес. Занавес. Сама ситуация комична и вызывает смех, а удивление вызывает отношение к собеседованию. При этом кандидат слёзно заявлял, что очень хочет сменить текущую работу. Искренне не понимаю наличие желания и отсутствие реальных действий, чтобы это желание удовлетворить. Не только развлекательное, но и полезное: у нас в канале есть тег #резюме о подготовке к собеседованиям с личным опытом. Было что-то запоминающееся в вашей практике?

DevFM
2 838
Вариантность типов Интересная тема из теории программирования. В языках программирования существуют типы данных, и они могут образовывать сложную иерархию. Простой пример: тип Natural является подтипом Integer и Positive. И все трое одновременно являются подтипами Real. А тип Prime является подтипом всех вышеперечисленных. Есть у нас функция, которая в качестве параметра принимает на вход определённый тип данных. А можем ли мы передать в качестве параметра подтип или надтип исходного типа данных? За это как раз отвечает вариантность типов. Контравариантность, ковариантность, инвариантность — в статье все эти замечательные термины рассматриваются на конкретных понятных примерах. Также прочтение статьи позволит более глубокого понять принцип подстановки Барбары Лисков (LSP), который фигурирует в известной аббревиатуре soLid. В конце рассматривается реализация вариантности в различных языках программирования –TypeScript, C#, Java, C++. А на тему вариантности в python у Диджи было замечательное видео. #procode

DevFM
2 838
Работа с json в PostgreSQL Цикл супер-полезных практических заметок о работе с json в PostgreSQL. Затрагиваются вопросы: — чем json отличается от jsonb — как парсить json. В том числе: извлечение поля из json-объекта, получение тип данных, проверка существования поля или значения — как разложить json по колонкам — как конвертировать в json. В том числе: перевод строки в json, создание json-объекта из наборов ключей и значений — как индексировать json. В том числе: всю колонку или отдельно взятое поле — как сделать красивый вывод json — как изменять json. В том числе: конкатенация двух json, удаление определенных полей или null-значений Для более глубокого изучения того или иного вопроса автор даёт ссылки на документацию, другие статьи и SO. #database

DevFM
2 838
Асинхронность в браузере Классная обширная статья на тему асинхронности в браузере. Даже если далеки от мира фронтенда, рекомендуем к прочтению, чтобы представлять как у них там все устроено. Автор рассказывает о циклах событий, об очередях задач (оказывается, их несколько), функциях обратного вызова, промисах и корутинах. Всё повествование сопровождается наглядными иллюстрациями и кодом. Для людей, связанных с фронтендом, статья также будет полезна. Автор собирает многие знания воедино, рассказывает о некоторых экспериментальных функциях, а также даёт множество ссылок для более глубокого изучения. Нам показались интересными: Оптимизация производительности фронтенда и Визуализация промисов и Async/Await

DevFM
2 838
Пятничное развлекательное Хочется порекомендовать замечательный курс для небиологов от Стэнфордского университета Биология поведения человека, который ведет Роберт Сапольски. Курс аж на 27 лекций будет интересен увлекающимся подобной тематикой. И абсолютно всем рекомендую посмотреть лекцию курса, посвященную депрессии. Что наука говорит на эту тему. После просмотра, возможно, посмотрите на мир другими глазами. И порой человеку не помочь, просто дав отдохнуть и сказав подбадривающее "крепись". #fun

DevFM
2 838
Выбор брокера сообщений Для асинхронного взаимодействия сервисов используются брокеры сообщений. Читая книгу о микросервисах, нашел набор факторов, которые нужно учесть, выбирая брокер для той или иной задачи. — Поддерживаемые языки программирования. Пункт достаточно банальный, но лучше выбрать брокер с поддержкой широкого диапазона языков программирования. — Поддерживаемые стандарты обмена сообщениями. Поддерживает ли брокер сообщений стандарт вроде AMQP или STOMP? Использует ли он свой закрытый протокол? — Порядок следования сообщений. Сохраняет ли брокер порядок следования сообщений? Кстати неплохой вопрос на собеседовании: гарантирует ли Кафка упорядоченность сообщений и за счёт чего? — Гарантии доставки. Какие гарантии доставки даёт брокер сообщений? — Постоянное хранение. Сохраняются ли сообщения на диск? Могут ли они пережить сбой брокера? — Устойчивость. Если потребитель переподключится к брокеру, получит ли он сообщения, отправленные, пока он был отключен? — Масштабируемость. Насколько масштабируем брокер сообщений? — Латентность. Каковы задержки при передачи информации? — Конкурирующие потребители. Поддерживает ли брокер сообщений конкурирующих потребителей? #skills