Сегодня хочется рассказать про два интересных паттерна: Retry и Circuit Breaker. На первый взгляд они очень похожи, но используются для решения совершенно разных проблем.
Replacing Mocks with Spies
Mock objects are useful when verifying that a method was called is more important than verifying the outcome of calling that method. Completing a Reservation For example, I have a Reservation class that represents some concert tickets that are being held for a user until they complete their purchase. When you call the complete method on a Reservation, you pass […]
Вернуть пустой результат запроса из Laravel Query Builder
Весьма специфичный случай. Вернуть пустой результат SQL запроса независимо от остальных условий запроса. Необходимо задать заведомо невыполнимое условие, например идентификатор записи < 0. Естественно лучшим вариантом будет выбирать поле с индексом. Совершенно точно не стоит опираться на LIMIT 0. Постраничная навигация обязательно изменит этот параметр. SELECT * FROM entities WHERE […]
Как быстро попробовать CQRS/ES в Laravel или пишем банк на PHP
Недавно в подкасте «Цинковый прод» мы с товарищами обсуждали паттерн CQRS/ES и некоторые особенности её реализации в Elixir. Т.к. я в работе использую Laravel, грех было не покопаться в интернетах и не найти как же можно потягать этот подход в экосистеме данного фреймворка. Всех приглашаю под кат, постарался максимально тезисно […]
Laravel Event Projector и концепция порождения событий
Фрек ван дер Хертен (Freek Van der Herten) и команда Spatie долго трудились над Laravel Event Projector, пакетом, позволяющим применять концепцию порождения событий (Event Sourcing) во фреймворке Laravel. И вот наконец доступна первая стабильная версия (v1.0.0)! Вы можете установить Event Projector в свой проект при помощи composer и благодаря автоматическому […]
Haxe и PHP: статическая типизация, стрелочные функции и метапрограммирование
До того, как присоединиться к Haxe Foundation в качестве разработчика компилятора Haxe, Александр около 10 лет профессионально занимался программированием на PHP, так что он знает предмет доклада. Небольшое введение о том, что такое Haxe — это кроссплатформенный набор инструментов для создания ПО, в состав которого входят: компилятор, который в зависимости […]
Пошаговое руководство по машинному переводу на базе движка OpenNMT
Проект OpenNMT (Open Source Neural Machine Translation) представляет из себя нейросеть, которую, в том числе, можно натренировать переводить тексты с одного человеческого языка на другой, например, с английского на русский или наоборот. Для этого её нужно натренировать на датесэте представляющим из себя параллельный корпус текстов на двух языках. Т.е. нужно […]
Избавляемся от дублирования сквозного кода в PHP: рефакторинг кода с АОП
Думаю, каждому программисту знаком принцип единственной ответственности, ведь не зря он существует: соблюдая его, можно написать код лучше, он будет более понятным, его будет легче дорабатывать. Но чем больше каждый из нас работает с кодом, тем больше приходит понимание того, что на существующем уровне языка — объектно-ориентированном — этого сделать […]
Как предсказать цену акций: Алгоритм адаптивной фильтрации
Группа бразильских ученых опубликовала исследование, посвященное созданию инструмента для предсказания поведения активов, торгующихся на фондовом рынке. В работе представлено подробное описание метода и способа расчетов для подобных прогнозов. Мы представляем вашему вниманию наиболее интересные моменты этого документа.
Техники машинного обучения для прогнозирования цен акций: функции индикаторов и анализ новостей
Существует две методики прогнозирования цен акций: Фундаментальный анализ — в этом случае аналитики оценивают информацию, которая больше относится к компании, чьи акции торгуются на бирже, нежели к самим акциям. Решения о тех или иных действиях на рынке принимаются на основе анализа предыдущей деятельности компании, прогнозах выручки и прибыли и так далее. […]