Привет, Хабр!
Сегодня я хочу поговорить о двух правилах С++: правиле трех и правиле пяти.
Правильное понимание этих правил способно уберечь код от утечек и неопределенных поведений.
Пишу обзоры на библиотеки и инструменты
Привет, Хабр!
Сегодня я хочу поговорить о двух правилах С++: правиле трех и правиле пяти.
Правильное понимание этих правил способно уберечь код от утечек и неопределенных поведений.
Привет, Хабр!
Actor-Critic — это класс алгоритмов в RL, суть которого довольно проста на словах, он сочетает в себе такие полтики как policy-based и оценки value-based. У нас есть два главных действующих лица: Actor и Critic. Actor отвечает за выбор действий, т.е формирование политики поведения, он принимает решения исходя из текущего состояния окружающей среды. Critic оценивает, насколько хорошо или плохо Actor справляется со своей задачей, предоставляя обратную связь через оценку действий Actor'a.
Привет, Хабр!
На старте блокчейн-технологий стояла задача создания системы, которая могла бы функционировать надежно и без централизованного контроля. Здесь помогают консенсусные алгоритмы. Консенсус в блокчейне — это согласие всех участников сети относительно ее текущего состояния, т.е это механизм, который позволяет децентрализованным сетям достигать общего согласия о том, какие транзакции считаются действительными и добавляются в блокчейн.
Для достижения консенсуса в блокчейне существуют механизмы Proof of Stake и Proof of Stake. Рассмотрим их в этой статье.
Привет, Хабр!
Nameko, как фреймворк для Python, предлагает удобные абстракции и инструменты для создания микросервисов, ориентированных на сообщения и события.
С Nameko можно получить не только инструмент для создания микросервисов, но и платформу для реализации распределенных систем с поддержкой Dependency Injection, позволяющей легко интегрировать различные компоненты приложения.
Привет, Хабр!
Система модулей в Java 9, известная как Project Jigsaw, была задумана и реализована для решения ряда проблем, включая «Ад JAR‑файлов» и сложностей с обеспечением сильной инкапсуляции.
И вот с Java 9 можно явно контролировать, какие части их модулей доступны внешнему миру, а какие скрыты и защищены от несанкционированного доступа.
Модульность вносит ясность и порядок в то, как приложения связываются с библиотеками и друг с другом. Благодаря системе модулей, зависимости становятся явными и управляемыми.
Рассмотрим, как выглядит работы с системой модулей в Java.
Привет, Хабр!
Сегодня я хочу поговорить о GDPR – регуляции, которая изменила понимание приватности данных в Европе и за ее пределами. На первый взгляд, GDPR может показаться очередной бюрократической головной болью, но на самом деле это очень большой шаг в сторону уважения и защиты личной информаций.
GDPR выступает не как какой-то набор ограничений, а как стимул для повышения качества работы с данными.
Санкции за несоблюдение GDPR могут быть очень большими, в некоторых случаях доходя до 10 миллионов евро или 2% от общего мирового годового оборота за предыдущий финансовый год, а в других случаях — до 20 миллионов евро или до 4% от общего мирового годового оборота. Размер штрафа оценивается индивидуально и зависит от множества факторов, как серьезность нарушения, степень причиненного ущерба, наличие умысла, и многое другое.
В этой статье мы рассмотрим несколько основных принципов GDPR.
Sphinx был разработан 21 марта 2008 года, и является генератором документации в Python. Сам он так же был написан Python и преобразует файлы reStructuredText в HTML-вебсайты и другие форматы, включая PDF, EPub, Texinfo и man. Sphinx позволяет автоматически генерировать документацию из исходного кода, поддерживает математические записи и подсветку кода. Он используется для автоматизации создания и загрузки документации с помощью Read the Docs после каждого commit.
Привет, Хабр!
Pgpool-II позволяет юзерам PostgreSQL управлять пулами соединений БД, реализовывать репликацию данных между серверами БД. Pgpool-II работает как прокси-сервер между клиентскими приложениями и серверами PostgreSQL, перехватывая запросы от клиентов и направляя их к соответствующим серверам БД согласно настроенным правилам и политикам.
Pgpool-II также поддерживает множественные режимы репликации, включая репликацию на уровне строки и репликацию на уровне транзакций. Репликация на уровне строки позволяет синхронизировать изменения данных между серверами в реальном времени, в то время как репликация на уровне транзакций сосредотачивается на синхронизации транзакций целиком.
Привет, Хабр!
В последние годы понятие клиентского опыта стало чуть ли не мантрой в бизнесе, и ведь не зря. Пользовательский интерфейс частенько становится причиной успеха того или иного продукта, поэтому анализ клиентского опыта становится не просто nice to have, а must have для каждой компании, считающей себя современными.
Привет, Хабр!
Утренний будильник, кофеварка, микроволновка, телевизор, кондиционер – все они оборудованы микроконтроллерами. Микроконтроллеры управляют функциями устройства, обеспечивая пользовательский интерфейс и взаимодействие с другими устройствами. Микрокотроллеры также используются в автомобилях, к примеру для контроля работы двигателя или системы ABS. А в медицине практически все оборудование работает на микроконтроллерах.
Протоколы в микроконтроллерах позволяют устройствам «понимать» друг друга и работать вместе, создавая общую систему. Протоколы определяют, как устройства подключаются, обмениваются данными, синхронизируют действия, управляют форматированием, временем и последовательностью сообщений между микроконтроллерами и другими компонентами в системах.
В этой статье рассмотрим такие протоколы взаимодействия как SPI, IDC, UART, CAN
Привет, Хабр!
Начало истории в модульности в JavaScript положил хаос: глобальные переменные, конфликты имен и сложности с зависимостями. Со временем сообщество предложило несколько подходов для организации модулей, начиная от CommonJS, которое легло в основу Node.js, до AMD, предпочтительного для асинхронной загрузки кода в браузерах. И приближаясь к настоящему времени появился ES Modules стандартизированный и встроенный в язык механизма модулей, который стал частью ECMAScript в 2015 году.
В этой статье рассмотрим кратко про CommonJS, AMD, и наконец - как появился ES Modules.
Привет, Хабр!
История Darth Vader началась в 2011 году. Целью создания Dart было предложить альтернативу JavaScript, которая позволила бы создавать более сложные, высокопроизводительные веб-приложения, облегчая при этом процесс разработки.
Со временем Dart претерпел множество апдейтов, но его основной рывок произошел с запуском Flutter — фреймворка для создания нативных интерфейсов для мобильных, веб- и настольных приложений из единой кодовой базы.
Язык поддерживает ООП с классами и множественным наследованием, а также функциональные возможности, такие как высшие порядки функций, замыкания и асинхронность и т.п.
Система типов в Dart поддерживает как статическую типизацию, так и типизацию во время выполнения.
Привет, Хабр!
Traefik - современный и мощный балансировщик нагрузки.
Traefik может автоматически обнаруживать и настраивать маршруты к новым сервисам без необходимости перезагрузки или внесения изменений в его конфигурацию вручную.
Привет, Хабр!
Мульти-тенант (multi-tenancy) — это подход, который позволяет одному экземпляру приложения обслуживать множество клиентов или арендаторов (тенатов). Каждый арендатор изолирован от других, имея возможность кастомизации под свои нужды, при этом основной кодовой базой и инфраструктурой делится между всеми.
Когда применять эту замечательную концепцию? Если говорить простыми словами, то мульти-тенант подход наиболее ценен для SaaS-продуктов, когда одно и то же приложение предоставляется разным клиентам, и каждый клиент работает со своим набором данных. Все это серьезно экономит ресурсы на обслуживание инфраструктуры, тк все изменения вносятся централизованно и мгновенно становятся доступны всем клиентам.
В Django мульти-тенант реализовывается довольно часто и для этого есть библиотека django-multitenant.
Patroni – опенсоурсный инструмент, с которым можно подключить аварийное управление для кластеров Постгресе. Т.е можно автоматически преключать работу на резервный сервер в случае сбоя основного.
Patroni может интегрироваться с различными системами распределенной конфигурации, включая etcd, ZooKeeper, Consul и Kubernetes.
Привет, Хабр!
Аналитики данных часто сталкиваются с грязными данными, которые могут существенно замедлить процесс анализа. Грязны данные – это пропущенные значения, дубликаты, неконсистентные данные. Пропущенные значения заставляют нас гадать, что же было замыслено нашим коллегой; дубликаты вводят в заблуждение, умножая одно и то же на количество их копий, а неконсистентные данные заставляют нас сомневаться в каждой цифре.
Очищать грязные данные можно c Pandas. Рассмотрим основные методы.
Привет, Хабр!
Celery – это асинхронная распределенная очередь задач, написанная на Python, она предназначена для обработки сообщений в реальном времени при помощи многозадачности. Используя Celery, можно организовать выполнение задач в фоновом режиме, не загружая основной поток приложения.
Используя Celery можно легко организовать выполнение фоновых задач.
Vert.x – это экосистема для создания реактивных приложений на JVM, которые могут масштабироваться и обрабатывать огромные объемы данных в реальном времени. Это полиглоттная платформа, поддерживающая не только Java, но и Kotlin, Groovy, Scala, и еще js. В контексте статьи работать будем на java
Одна из фич vert.x - это набор абстракций и API для асинхронной работы с сетью, файловой системой и другими ресурсами. С его помощью можно легко создавать масштабируемые веб-приложения, микросервисы, сетевые утилиты и многое другое.
Packer – это инструмент для создания однородных образов виртуальных машин и контейнеров для использования на различных платформах от HashiCorp. C ним можно легко автоматизировать процесс сборки образов на основе одного исходного конф. файла, используя предопределённые шаблоны.
Рассмотрим создание базового образа с Packer.
Привет, Хабр!
Packer — это open-source инструмент для создания идентичных машинных образов для множества платформ из одного исходного файла конфигурации. Т.е с пакером можно автоматизировать создание образов для Amazon EC2, VMware, Docker и т.д, используя единый процесс сборки.
Рассмотрим его возможности мультисборки, пост-процессоров и пользовательских плагинов.