Подводные камни Service Workers

В этом коротеньком очерке я опишу те вещи о service workers, о которых я бы хотел прочесть год или хотя бы полгода назад и тем самым избежать очень долгого и мучительного периода отладки приложения. Для тех, кто вообще не в курсе о чем речь, то очень вкратце — service worker […]

Под капотом Redis: Хеш таблица и Список

Судите сами — LISTсостоит из ziplist/linkedlist, SET состоит из dict/intset, а SORTED SET это ziplist/skiplist. Мы уже рассмотрели словарь (dict), а во второй части статьи будем рассматривать структуру ziplist — вторую наиболее часто применимую структуру под капотом Redis. Посмотрим на LIST — вторая часть его «кухни» это простая реализация связного списка. Это пригодится нам, чтобы внимательно рассмотреть […]

Как в MySQL удалить первичный ключ?

Допустим вы внезапно осознали, что первичным ключом в таблице выбрано не то поле, которое больше подходит на эту роль. Но прежде чем добавить другой первичный ключ — нужно удалить старый. Сделать это можно так: ALTER TABLE mytable DROP PRIMARY KEY;

Интерфейс командной строки

Операционная среда или окружение environment — интерфейс, предоставляемый пользователю или программе операционной системой. В частности, пользовательский интерфейс является частью операционной среды. Командная строка command line — принцип организации пользовательского интерфейса на основе ввода текстовых команд с клавиатуры и текстового вывода результатов на экран. Интерфейс на основе командной строки — command line interface, CLI.   Оболочка командной строки или […]

Doctrine 2 для Symfony 3.3.6: Создание сущности, ассоциации и рекурсивные связи

Создание сущности Буду все консольные команды писать в манере, как если Composer не установлен в системе. Установим для начала Symfony: # Не забудьте на этом этапе указать верные пароль и логин для базы данных. php composer.phar create-project symfony/framework-standard-edition ./gentlemans_set «v3.3.6» # Переходим в папку проекта после установки cd gentlemans_set/ # […]

Битовые операции в PHP на примерах

 Обратил внимание, что несмотря на то, что коды ошибок в PHP специально заточены под битовые операции, тем не менее, что в примерах статьи, что в комментариях, для проверки кодов ошибок используются обычные операторы сравнения. Например, встречались такие варианты: if ($error[‘type’] == E_ERROR || $error[‘type’] == E_PARSE || $error[‘type’] == E_COMPILE_ERROR){…} […]

Инкремент в PHP

Возьмите переменную и увеличьте её на 1. Звучит просто, верно? Ну… С точки зрения PHP-разработчика, наверное, да. Но так ли это на самом деле? Здесь могут возникнуть некоторые трудности. Существует несколько способов инкрементировать значения, они могут выглядеть равноценными, но под капотом PHP работают по-разному, что может привести к, так сказать, […]

Разработка транзакционных микросервисов с помощью Агрегатов, Event Sourcing и CQRS

Микросервисная архитектура становится всё более популярной. Это модульный подход, при котором приложение функционально разделяется на отдельные сервисы. В результате разработчики больших и сложных приложений могут быстрее выпускать качественный софт. При таком подходе им проще осваивать новые технологии, так как появляется возможность реализовывать каждый отдельный сервис с помощью наиболее подходящего и современного […]

Установка и управление supervisor на сервере Ubuntu и Debian

В среде многих выделенных серверов часто встречается ряд программ, которые должны работать постоянно, будь то небольшие сценарии оболочки, приложения Node.js, некоторые объемные пакеты. Конечно, для каждой из этих программ можно написать init-скрипт, но такой подход  требует больших затрат времени и ресурсов и не всегда понятен новичкам.