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
Как распарсить строку в sql
Для того чтобы распарсить строку в SQL, можно использовать различные функции и операторы, в зависимости от конкретных требований и формата строки.
Например, если строка содержит разделители, такие как запятые или пробелы, то можно использовать функцию
Результатом запроса будет строка Привет.
Если же требуется извлечь определенный набор символов из строки, то можно использовать функцию SUBSTRING(). Например, следующий запрос извлекает первые три символа из строки Привет:
Результатом запроса будет строка При.
Также можно использовать функцию
Результатом запроса будет строка Привет.
#db@bookflow
👉 @Bookflow
Для того чтобы распарсить строку в SQL, можно использовать различные функции и операторы, в зависимости от конкретных требований и формата строки.
Например, если строка содержит разделители, такие как запятые или пробелы, то можно использовать функцию
SUBSTRING_INDEX() для извлечения определенного фрагмента строки. Например, следующий запрос извлекает первое слово из строки Привет, мир:SELECT SUBSTRING_INDEX('Привет, мир', ' ', 1);Результатом запроса будет строка Привет.
Если же требуется извлечь определенный набор символов из строки, то можно использовать функцию SUBSTRING(). Например, следующий запрос извлекает первые три символа из строки Привет:
SELECT SUBSTRING('Привет', 1, 3);Результатом запроса будет строка При.
Также можно использовать функцию
REGEXP_SUBSTR() для извлечения определенного фрагмента строки, используя регулярные выражения. Например, следующий запрос извлекает первое слово из строки Привет, мир:SELECT REGEXP_SUBSTR('Привет, мир', '^[^ ]+');Результатом запроса будет строка Привет.
#db@bookflow
👉 @Bookflow
🥰6❤2👍2
5 трюков с командами Linux, которые изменят вашу жизнь как программиста
Интерфейс командной строки — это основа работы для большинства технических специалистов, особенно разработчиков и системных администраторов. Будь то написание скриптов, настройка серверов или автоматизация задач, знание Linux-команд может сэкономить вам часы работы.
Для многих Linux может показаться пугающим на первый взгляд, но, освоив потенциал его интерфейса командной строки (CLI), вы поймёте, что это лучший друг программиста. От навигации по директориям до работы с файлами и даже отладки — освоение этих простых, но мощных команд Linux может значительно улучшить ваш рабочий процесс.
В этой статье мы рассмотрим пять трюков работы с командной строкой, которые облегчат жизнь разработчикам. Это не просто «приятные бонусы» — это настоящие «игровые изменения», которые помогут вам сэкономить время и сделают взаимодействие с терминалом гораздо более эффективным.
#статья@bookflow
👉 @Bookflow
Интерфейс командной строки — это основа работы для большинства технических специалистов, особенно разработчиков и системных администраторов. Будь то написание скриптов, настройка серверов или автоматизация задач, знание Linux-команд может сэкономить вам часы работы.
Для многих Linux может показаться пугающим на первый взгляд, но, освоив потенциал его интерфейса командной строки (CLI), вы поймёте, что это лучший друг программиста. От навигации по директориям до работы с файлами и даже отладки — освоение этих простых, но мощных команд Linux может значительно улучшить ваш рабочий процесс.
В этой статье мы рассмотрим пять трюков работы с командной строкой, которые облегчат жизнь разработчикам. Это не просто «приятные бонусы» — это настоящие «игровые изменения», которые помогут вам сэкономить время и сделают взаимодействие с терминалом гораздо более эффективным.
#статья@bookflow
👉 @Bookflow
👍2