Почему Apache Kafka стала стандартом и основой архитектуры микросервисов. Как Kafka не только заменяет другое промежуточное ПО, но и позволяет создавать сами микросервисы с помощью DDD и нативных API Kafka: Kafka Streams, ksqlDB и Kafka Connect.
Программирование *
Искусство создания компьютерных программ
- Новые
- Лучшие
- Все
- ≥0
- ≥10
- ≥25
- ≥50
- ≥100
Новости
PHP на стероидах: Swoole in production
Представьте себе ситуацию, большой маркетплейс, 60 тыс. посетителей в сутки (600 тыс. просмотров) и это только веб, а с мобильного приложения, плюс еще 100 тыс уникальных посетителей. С точки зрения HTTP API запросов к PHP бекенду - это порядка 13 млн. запросов (в пиковых нагрузках ~300-400 RPS). И это всё (PHP only) обрабатывает сервер с 8 vCPU (ядрами) и 32 Gb RAM и самое главное, что сервер практически не напрягается (см. КДПВ).
Улучшаем дизайн React приложения с помощью Compound components
Сегодня я хочу рассказать про один не очень популярный но очень классный паттерн в написании React приложений - Compound components.
Что это вообще такое
Compound components это подход, в котором вы объединяете несколько компонентов одной общей сущностью и общим состоянием. Отдельно от этой сущности вы их использовать не можете, тк они являются единым целым. Это как в BEM нельзя использовать E - элемент, отдельно от B - блока.
Самый наглядный пример такого подхода, который знают все фронты - это select с его option в обычном HTML.
CatBoost, XGBoost и выразительная способность решающих деревьев
Сейчас существенная часть машинного обучения основана на решающих деревьях и их ансамблях, таких как CatBoost и XGBoost, но при этом не все имеют представление о том, как устроены эти алгоритмы "изнутри".
Данный обзор охватывает сразу несколько тем. Мы начнем с устройства решающего дерева и градиентного бустинга, затем подробно поговорим об XGBoost и CatBoost. Среди основных особенностей алгоритма CatBoost:
• Упорядоченное target-кодирование категориальных признаков
• Использование решающих таблиц
• Разделение ветвей по комбинациям признаков
• Упорядоченный бустинг
• Возможность работы с текстовыми признаками
• Возможность обучения на GPU
В конце обзора поговорим о методах интерпретации решающих деревьев (MDI, SHAP) и о выразительной способности решающих деревьев. Удивительно, но ансамбли деревьев ограниченной глубины, в том числе CatBoost, не являются универсальными аппроксиматорами: в данном обзоре приведено собственное исследование этого вопроса с доказательством (и экспериментальным подтверждением) того, что ансамбль деревьев глубины N не способен сколь угодно точно аппроксимировать функцию . Поговорим также о выводах, которые можно из этого сделать.
«Раздвижное» решето Эратосфена
Простые числа, согласно известному определению – такие числа, которые делятся только на 1 и само себя. Иначе, число считается составным, и его можно разложить на произведение простых чисел. Единица формально соответствует определению простого числа, но это число принято не относить ни к простым, ни к составным.
Как искать простые числа? Можно действовать напрямую, применяя определение: просто делить каждое данное число N подряд на все числа m<N.Такая стратегия тоже имеет смысл, и ее можно обсуждать, и даже думать о том, как ее совершенствовать, но сегодня у нас будет другая история.
Как НЕ надо учить TypeScript
Добрый день, меня зовут Павел Поляков, я Principal Engineer
в каршеринг компании SHARE NOW, в Гамбурге в 🇩🇪 Германии. А еще я автор телеграм канала Хороший разработчик знает, где рассказываю обо всем, что обычно знает хороший разработчик.
Сегодня хочу поговорить про то как НЕ надо учить TypeScript
. Какие ошибки чаще всего делают новички и почему TypeScript
может так сильно раздражать? Это перевод оригинальной статьи.
Карманный справочник: сравнение синтаксиса MS SQL Server и PostgreSQL
Приветствую, уважаемые хаброжители!
Так как занимаюсь переводом кода с MS SQL в Postgre SQL с начала 2019 года, то решил продолжить сравнение этих двух СУБД.
В прошлой публикации мы рассматривали отличия в быстродействии MS SQL и PostgreSQL для 1C.
Сегодня давайте сравним основные конструкции синтаксиса MS SQL и PostgreSQL для правильного чтения кода, а также для того, чтобы быстро изменить код из MS SQL для PostgreSQL или наоборот.
Начнем рассмотрение с сопоставления типов.
Охотничьи истории
Навеяно вот этим постом. Люблю этот жанр, прочитал и вспомнил свои истории, захотелось поделиться. Не везде был виноват именно я, но в той или иной степени участвовал. Надеюсь, получилось интересное пятничное чтиво.
Так сложилось, что бо́льшую часть своей жизни я провел в финтэке, поэтому все истории связаны с банками и/или финансами, так что иногда удавалось нанести вполне реальный ущерб. Истории в хронологическом порядке, при этом самая "тяжелая" - последняя, что логично, с накоплением опыта инженер может нанести больше вреда. Истории эти старые, так что не исключено, что какие-то детали я забыл или переврал - это не специально.
Пишем чат под Android на Websocket'ах
Привет Хабр!
Во время локдауна я решил поупражняться в разработке под Android. Начать решил с простой гиперказуальной игры с элементами дуэли. Взаимодействие игроков решил реализовать через отдельный сервер и websocket'ы, но пока читал про все это дело, понял, что простого туториала на русско-язычных ресурсах почему-то нет. Поэтому, решил восполнить этот пробел.
В этой статье я постараюсь описать как настроить WebSocket'ы на примере чата с сервером на SpringBoot и клиенте под Android.
5 советов для C#-программистов, которые вы, наверняка, уже знаете
Я понимаю, что вы, возможно, уже знаете большинство из этих советов. Но я пишу в надежде, что может быть кто-то в сообществе все-таки сможет извлечь пользу из этих знаний. Вы можете узнать, есть ли что-то полезное для вас в этой статье, просто бегло просмотрев заголовки.
Капля здравого смысла для Windows-разработки на C и C++
Функции в скриптах Роутер ОС Микротик. Интересные решения и недокументированные возможности
В этой статье, не претендующей на полное руководство к разделу, мы рассмотрим одну из интересных и важных рубрик «скриптинга», а именно — функции.
Перед прочтением статьи, пользователям, начинающим изучать скрипты, рекомендую ознакомиться с официальным руководством Микротик по скриптам по ссылке выше, либо с его переводом (например, здесь). Следует знать типы переменных в скриптах Микротик, иметь понятие об областях видимости, окружении переменных и т.д… Также будет весьма полезна статья habr.com/ru/post/270719, в которой автор подробно разбирает типы переменных LUA Микротик и варианты их объявления и использования.
Всё о fsync
В PHP (как и в других языках программирования с похожим интерфейсом) при записи в файл нет никаких гарантии, что ваши изменения сразу же будут записаны на диск. В действительности происходит следующее: ваша запись поступает в буфер (process buffer) PHP, и в определенный момент (PHP сам решает когда) содержимое буфера записывается на диск через операционную систему.
Проверка контрагентов. Парсинг fedresurs
В этой статье хочу познакомить читателя с таким ресурсом, как «Единый федеральный реестр сведений о фактах деятельности юридических лиц» (fedresurs.ru), рассказать о его применимости и показать возможность прошерстить ресурс не руками по большому количеству клиентов, а с использованием C# (в вашем случае можете использовать любой другой язык, который вам нравится, подходы, думаю, не изменятся) и море проксей, ну разумеется будем парсить. Возможно, тем кто этим займется, пригодятся статья, идеи или, чем черт не шутит, куски кода, а тем, кто просто проводит проверку контрагентов сможет либо понять, что можно взять с сайта либо придумает, что можно еще проверить.
Периодически возникает потребность в получении данных для анализа клиентов/заемщиков/контрагентов и эти данные мы можем получить из этого сайта. Что же нам предлагается?!
Возникновение обременений (залог, лизинг и т.д.) – посмотреть, например, на возможность заключения фиктивных договоров лизинга или на уже заложенное имущество и т.д.
Различные сообщения по клиенту, например, сообщения о банкротстве и уже с ними – проверка, все ли сообщает клиент и может пора пошевелиться в сторону него и предпринять какие-либо меры.
Торги и т.д.
Кроссплатформенный переключатель прокси-сервера на Python + Qt
Устав искать нормальный портативный инструмент для переключения между моим рабочим прокси-сервером и прямым подключением дома (который, к тому же, работал бы на Windows и Linux), я решил-таки запилить собственную тулзу для этих целей. Вооружившись Python и Qt, начал клепать код в VSCode... Что из этого вышло -- читаем под катом.
[Окончание] Новогодний детектив: странный хайзенбаг в «питоньих» часах
Здесь лежит окончание "расследования" Новогодний детектив: странный хайзенбаг в «питоньих» часах.
Изначально хотел просто обновить статью и написать соответствующий комментарий, но понял что апдейт выходит чуть не длиннее самой статьи.
Напомню краткое содержание предыдущей части: python, как впрочем и всё на нем написанное, временами прыгает в будущее, а конкретно в 2023-й год в локальной временной зоне, и по некоторым данным в 2024-й в UTC/GMT (но это не точно) и побыв там некоторое время возвращается обратно в настоящее.
Во время прыжка оно ведет себя довольно стабильно (т.е. считает нано-, микро- и миллисекунды, а то и секунды, как будто время идет как ни в чём не бывало) в 2023-м т.е. локально, при том что в результате повторных прыжков время вновь продолжается как будто по возвращению оно (время) течет в какой-то параллельной вселенной. Однако странное его "отражение" в UTC/GMT, ну то что как будто бы в 2024-м, выглядит менее стабильно, ибо для него наблюдается странные дрейфы дополнительно к смещению прыжка.
Хотя куда уж страннее.
Symfony Panther: зверь в мире тестирования
Тестирование приложения — это не самое простое занятие на земле, не самый быстрый процесс и не самая захватывающая часть процесса разработка приложения. Но это необходимо. Вы не можете позволить себе рисковать стабильностью вашего приложения — если оно начнет крашиться, то вы потеряете пользователей, а заодно и деньги. Добавление нового кода в вашу продукцию не должно быть поводом для стресса. По этой причине и существуют тесты, которые проверяют отсутствие регрессии вашего приложения. Если ваш продукт покрыт тестами (и если вы написали хорошие тесты, что в свою очередь является еще одной обширной темой), вы будете намного увереннее добавлять новые фичи и исправления в свой продукт, не опасаясь что-нибудь сломать.
C#: разбираем бинари
Написание кода на любом языке программирования сопряжено с исследованием особенностей, которые позволяют быстро и эффективно написать алгоритм. В этой статье попробуем рассказать чуть больше о структуре файлов, которые получаются в результате компиляции приложений, написанных на языке программирования C#.
Android NDK компиляция OpenCPN
Когда вы несете вахту ночью и вокруг только звезды и где то в паре метров от вас слегка подсвеченный компас. В этот момент для полного комфорта управления желательно иметь под рукой надежное навигационное устройство.
В предыдущих статьях я написал как сделать станционарное устройство с вложением 300 евро. А сегодня разберём как сделать такое устройство с нулевыми вложениями, при условии что у вас уже есть любое Android устройство и опыт в кросс-компиляции.
Автоматизация оптимизаций в Go
Привет, Хабр! Меня зовут Денис Лимарев, я разработчик платежной системы в Delivery Club.
Недавно мы провели два митапа: по оптимизациям и по нашему новому линтеру. На первом митапе разобрали оптимизации кода на Go, а в рамках второго поговорили про создание и возможности нашего нового линтера, который может искать и самостоятельно применять эти оптимизации, и не только. Как делался линтер и поиск каких оптимизаций смогли автоматизировать — читайте под катом.
Вклад авторов
-
olegchir 3287.2 -
alizar 3032.2 -
tangro 2672.2 -
haqreu 2566.0 -
DmitrySpb79 2296.0 -
grigoryvp 2158.2 -
MaxRokatansky 2037.4 -
ru_vds 1933.8 -
tagir_valeev 1740.0 -
sahsAGU 1576.6