Prometheus и его хранилище: Архитектура, проблемы и решения
Эта серия из двух статей посвящена мониторингу. В первой части рассказывается о накоплении множества различных показателей в одном месте, обработке разрешений для различных аспектов этих показателей и хранении больших объемов данных. Во второй части мы сосредоточимся на выборе систем мониторинга, основываясь на кратком примере «путешествия» вымышленной компании в борьбе с постоянным расширением системы мониторинга и ростом инфраструктуры.
https://blog.palark.com/prometheus-architecture-tsdb/
#Prometheus@bookflow
👉 @Bookflow
Эта серия из двух статей посвящена мониторингу. В первой части рассказывается о накоплении множества различных показателей в одном месте, обработке разрешений для различных аспектов этих показателей и хранении больших объемов данных. Во второй части мы сосредоточимся на выборе систем мониторинга, основываясь на кратком примере «путешествия» вымышленной компании в борьбе с постоянным расширением системы мониторинга и ростом инфраструктуры.
https://blog.palark.com/prometheus-architecture-tsdb/
#Prometheus@bookflow
👉 @Bookflow
👍9🔥3
Краткое сравнение популярных функций измерения времени
Решил обновить свою старую крохотную библиотечку для тайминга кода. Измерение коротких временнЫх интервалов в ней выполнялось с помощью: инструкции RDTSC при компиляции MSC для x86 и gettimeofday при сборке GCC под Linux. IMHO, на сегодняшний день это не самые правильные методы, и захотелось объективно выбрать что-то более точное и лёгкое. Для этого были измерены несколько параметров наиболее популярных функций измерения времени. Результатами этих измерений и делюсь с вами (вдруг кому тоже интересно).
https://habr.com/ru/articles/818965/
#cpp@bookflow
👉 @Bookflow
Решил обновить свою старую крохотную библиотечку для тайминга кода. Измерение коротких временнЫх интервалов в ней выполнялось с помощью: инструкции RDTSC при компиляции MSC для x86 и gettimeofday при сборке GCC под Linux. IMHO, на сегодняшний день это не самые правильные методы, и захотелось объективно выбрать что-то более точное и лёгкое. Для этого были измерены несколько параметров наиболее популярных функций измерения времени. Результатами этих измерений и делюсь с вами (вдруг кому тоже интересно).
https://habr.com/ru/articles/818965/
#cpp@bookflow
👉 @Bookflow
👍2🥰2
Prometheus и централизованное хранение данных: Когда это нужно, как это работает и что такое Mimir
После того как в первой части цикла были рассмотрены основы архитектуры Prometheus и ее хранилища, мы продолжаем исследовать связанные с хранением данных проблемы и существующие решения. Мы начнем с истории вымышленного стартапа, который занимается разработкой программного обеспечения, сбором метрик и пытается найти оптимальные способы их хранения и обработки. Мы будем наблюдать за тем, как он развивается и как его система мониторинга будет соответствовать растущим требованиям бизнеса.
https://blog.palark.com/prometheus-centralized-storage-mimir/
#Prometheus@bookflow
👉 @Bookflow
После того как в первой части цикла были рассмотрены основы архитектуры Prometheus и ее хранилища, мы продолжаем исследовать связанные с хранением данных проблемы и существующие решения. Мы начнем с истории вымышленного стартапа, который занимается разработкой программного обеспечения, сбором метрик и пытается найти оптимальные способы их хранения и обработки. Мы будем наблюдать за тем, как он развивается и как его система мониторинга будет соответствовать растущим требованиям бизнеса.
https://blog.palark.com/prometheus-centralized-storage-mimir/
#Prometheus@bookflow
👉 @Bookflow
👍4❤1😁1
В сети появилась новая CAPTCHA, основанная на игре DOOM, которая привлекает внимание пользователей. Вместо традиционных задач, таких как распознавание и выбор изображений, эта CAPTCHA предлагает сыграть в мини-версию классического шутера, чтобы подтвердить, что вы не робот. Пользователи должны управлять персонажем и уничтожать врагов, как в оригинальной игре.
https://bookflow.ru/lyudi-igrayut-v-novuyu-kapchu-na-temu-doom/
#статья@bookflow
👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍6🎉4
Vytal
Это расширение позволяет настроить параметры браузера таким образом, чтобы создавалось впечатление, будто вы выходите в интернет из другого места, локации или устройства. Это может быть полезно для тестирования веб-сайтов, обхода региональных ограничений или защиты конфиденциальности в сети. Всего несколькими щелчками мыши вы можете изменить часовой пояс, локаль, геолокацию и user agent в соответствии с желаемыми настройками.
https://github.com/vytal-io/vytal-extension
#Githublib@bookflow
👉 @Bookflow
Это расширение позволяет настроить параметры браузера таким образом, чтобы создавалось впечатление, будто вы выходите в интернет из другого места, локации или устройства. Это может быть полезно для тестирования веб-сайтов, обхода региональных ограничений или защиты конфиденциальности в сети. Всего несколькими щелчками мыши вы можете изменить часовой пояс, локаль, геолокацию и user agent в соответствии с желаемыми настройками.
https://github.com/vytal-io/vytal-extension
#Githublib@bookflow
👉 @Bookflow
👍4
Применение чистой архитектуры в Go
Одна из проблем, с которыми мне часто доводится сталкиваться в различных софтверных проектов — это сильная связанность кода, при которой в него так сложно вносить даже простые изменения, не провоцируя нежелательных побочных эффектов. Дело в том, что программисты склонны сосредотачиваться на разработке конкретных фич, не задумываясь о том, как база кода станет развиваться в будущем. Также не все учитывают, что применяемые сегодня библиотеки и фреймворки могут постепенно сойти со сцены спустя несколько месяцев или лет.
На старте проекта приходится принимать множество решений. Большинство инженеров при этом рассматривают область применения проекта и решают, при помощи каких инструментов он будет реализовываться. Речь, в частности, о языках программирования, фреймворках, базах данных, внешних API, вариантах развёртывания. Принимая такие решения на самых ранних этапах, они замыкаются на этих инструментах, пронизывают ими всю базу кода, в результате чего её становится сложно менять и поддерживать.
https://habr.com/ru/companies/timeweb/articles/810857/
original https://blog.geisonbiazus.com/posts/applying-clean-architecture-in-go
#golang@bookflow
👉 @Bookflow
Одна из проблем, с которыми мне часто доводится сталкиваться в различных софтверных проектов — это сильная связанность кода, при которой в него так сложно вносить даже простые изменения, не провоцируя нежелательных побочных эффектов. Дело в том, что программисты склонны сосредотачиваться на разработке конкретных фич, не задумываясь о том, как база кода станет развиваться в будущем. Также не все учитывают, что применяемые сегодня библиотеки и фреймворки могут постепенно сойти со сцены спустя несколько месяцев или лет.
На старте проекта приходится принимать множество решений. Большинство инженеров при этом рассматривают область применения проекта и решают, при помощи каких инструментов он будет реализовываться. Речь, в частности, о языках программирования, фреймворках, базах данных, внешних API, вариантах развёртывания. Принимая такие решения на самых ранних этапах, они замыкаются на этих инструментах, пронизывают ими всю базу кода, в результате чего её становится сложно менять и поддерживать.
https://habr.com/ru/companies/timeweb/articles/810857/
original https://blog.geisonbiazus.com/posts/applying-clean-architecture-in-go
#golang@bookflow
👉 @Bookflow
👍2
Terraform AWS Provider - Все, что нужно знать о многоаккаунтной аутентификации и настройке
Существует множество вариантов настройки аутентификации между Terraform и AWS. Но две точки входа - это пользователи IAM и пользователи IAM Identity Center (SSO). Аутентификация настраивается в Terraform AWS Provider, выбор опции зависит, в частности, от того, выполняете ли вы Terraform с локальной машины, или из CI/CD, и т.д.
https://hector-reyesaleman.medium.com/terraform-aws-provider-everything-you-need-to-know-about-multi-account-authentication-and-f2343a4afd4b
#devops@bookflow
👉 @Bookflow
Существует множество вариантов настройки аутентификации между Terraform и AWS. Но две точки входа - это пользователи IAM и пользователи IAM Identity Center (SSO). Аутентификация настраивается в Terraform AWS Provider, выбор опции зависит, в частности, от того, выполняете ли вы Terraform с локальной машины, или из CI/CD, и т.д.
https://hector-reyesaleman.medium.com/terraform-aws-provider-everything-you-need-to-know-about-multi-account-authentication-and-f2343a4afd4b
#devops@bookflow
👉 @Bookflow
👍2
Фича-флаги времени компиляции в Rust: зачем, как и когда используются
Возможность указывать фичи (функционал) для компиляции в Rust может повысить быстродействие кода, его обслуживаемость, безопасность и портируемость.
Ниже я аргументирую, почему вам следует активно использовать эти флаги функционала при потреблении зависимостей и предлагать их другим пользователям библиотеки.
https://betterprogramming.pub/compile-time-feature-flags-in-rust-why-how-when-129aada7d1b3
#rust@bookflow
👉 @Bookflow
Возможность указывать фичи (функционал) для компиляции в Rust может повысить быстродействие кода, его обслуживаемость, безопасность и портируемость.
Ниже я аргументирую, почему вам следует активно использовать эти флаги функционала при потреблении зависимостей и предлагать их другим пользователям библиотеки.
https://betterprogramming.pub/compile-time-feature-flags-in-rust-why-how-when-129aada7d1b3
#rust@bookflow
👉 @Bookflow
👍2
Совет по HTML 💡
Легко создайте красивый индикатор выполнения, используя элемент
#frontend@bookflow
👉 @Bookflow
Легко создайте красивый индикатор выполнения, используя элемент
<progress> 🤩#frontend@bookflow
👉 @Bookflow
👍3🤡1
Похоже, я придумал свой алгоритм поиска кратчайшего пути
Я реализовал, похоже, собственный алгоритм поиска кратчайшего пути с отрицательными ребрами графа.
Почему собственный? Я искал подобное решение, но не нашел, возможно, оно уже было реализовано, просто плохо поискал. Жду Нобелевскую премию =)
Додумался я до него путем модификации классического Дейкстры. Прошу адекватно отнестись к содержимому, ибо это моя первая статья, и, возможно, я ничего не придумывал и, вообще, этот алгоритм не работает вовсе (но по многочисленным тестам он работает правильно).
Повторюсь, алгоритм работает с отрицательными ребрами графа (но не с циклическими отрицательными). Чем этот алгоритм отличается от известного Беллмана-Форда?
Эвристической сложностью! У известного алгоритма сложность составляет O(En), где n - количество узлов, Е - количество ребер. У "моего" алгоритма такая же ассимптотическая сложность. Но по моим расчетам худшая сложность в большинстве случаев не достигается. А у Беллмана-Форда худших случаев намного больше (об этом далее). Более того, в среднем алгоритм не превышает оригинальной сложности алгоритма Дейкстры, а именно O(n2+E). Об этом тоже напишу далее. Реализация на языке Python:
P.S.
В статье исправлены многие моменты, спасибо сообществу за тест-кейсы и подсказки. Некоторые комментарии не будут актуальными (в том числе саркастически-оскорбительные), т.к. я считаю, что доказал работоспособность алгоритма.
https://habr.com/ru/articles/811051/
#python@bookflow
👉 @Bookflow
Я реализовал, похоже, собственный алгоритм поиска кратчайшего пути с отрицательными ребрами графа.
Почему собственный? Я искал подобное решение, но не нашел, возможно, оно уже было реализовано, просто плохо поискал. Жду Нобелевскую премию =)
Додумался я до него путем модификации классического Дейкстры. Прошу адекватно отнестись к содержимому, ибо это моя первая статья, и, возможно, я ничего не придумывал и, вообще, этот алгоритм не работает вовсе (но по многочисленным тестам он работает правильно).
Повторюсь, алгоритм работает с отрицательными ребрами графа (но не с циклическими отрицательными). Чем этот алгоритм отличается от известного Беллмана-Форда?
Эвристической сложностью! У известного алгоритма сложность составляет O(En), где n - количество узлов, Е - количество ребер. У "моего" алгоритма такая же ассимптотическая сложность. Но по моим расчетам худшая сложность в большинстве случаев не достигается. А у Беллмана-Форда худших случаев намного больше (об этом далее). Более того, в среднем алгоритм не превышает оригинальной сложности алгоритма Дейкстры, а именно O(n2+E). Об этом тоже напишу далее. Реализация на языке Python:
P.S.
В статье исправлены многие моменты, спасибо сообществу за тест-кейсы и подсказки. Некоторые комментарии не будут актуальными (в том числе саркастически-оскорбительные), т.к. я считаю, что доказал работоспособность алгоритма.
https://habr.com/ru/articles/811051/
#python@bookflow
👉 @Bookflow
👍5
Headless Component: паттерн для создания пользовательских интерфейсов React
По мере того как элементы управления React UI становятся все более сложными, сложная логика может переплетаться с визуальным представлением. Это затрудняет рассуждения о поведении компонента, затрудняет его тестирование и приводит к необходимости создавать похожие компоненты, которым нужен другой внешний вид. Headless Component извлекает всю невизуальную логику и управление состоянием, отделяя мозг компонента от его внешнего вида.
https://martinfowler.com/articles/headless-component.html
#react@bookflow
👉 @Bookflow
По мере того как элементы управления React UI становятся все более сложными, сложная логика может переплетаться с визуальным представлением. Это затрудняет рассуждения о поведении компонента, затрудняет его тестирование и приводит к необходимости создавать похожие компоненты, которым нужен другой внешний вид. Headless Component извлекает всю невизуальную логику и управление состоянием, отделяя мозг компонента от его внешнего вида.
https://martinfowler.com/articles/headless-component.html
#react@bookflow
👉 @Bookflow
👍4
Шпаргалка по C++
Шпаргалка фокусируется на языке, а не стандартной библиотеке, и учитывает особенности C++11/C++14
#cpp@bookflow
👉 @Bookflow
Шпаргалка фокусируется на языке, а не стандартной библиотеке, и учитывает особенности C++11/C++14
#cpp@bookflow
👉 @Bookflow
👍6❤1