Passing system environment variables to PHP-FPM when using NGINX

Sometimes it comes in handy to set system environment variables (env var from now on!) and get the PHP to use it for something. My tech stack is usually NGINX+PHP-FPM and if you already tried if you set a env var you probably found that it doesn’t appear on $_SERVER or in the getenv(). For this article I will be using a php file with this content: By now you probably know how to set Read more

How speeding up composer install led to reducing PHP docker image build time by up to 5 times

Have you ever profiled how long it takes for your PHP or PHP-FPM docker image to build? Probably, you have noticed that the composer install step accounts for the bulk of the image build time. In this post, I will reveal one of the effective ways that helped us reduce the docker build time by a factor of 5. We decreased it from 5 minutes to 1. he problem Brayan was discussing with us that the Read more

Паттерн: Сага

Есть приложение, к которому применялся паттерн Database per Service. Теперь у каждого сервиса приложения есть своя собственная база данных. Некоторые бизнес транзакции охватывают сразу несколько сервисов, так что нужен механизм, обеспечивающий согласованность данных между этими сервисами. Например: давайте представим, что мы разрабатываем интернет магазин, где у клиента есть кредитный лимит. Приложение должно гарантировать, что новый заказ не превышает кредитный лимит клиента. Так как Заказы и Клиенты — различные базы данных, то приложение не может использовать Read more

Шаблон распределенных транзакций Saga

Шаблон проектирования Saga — это способ управления согласованностью данных между микрослужбами в сценариях распределенных транзакций. Saga — это последовательность транзакций, которая обновляет каждую службу и публикует сообщение или событие для активации следующего шага транзакции. Если шаг завершается ошибкой, Saga выполняет компенсирующие транзакции, которые отменяют предыдущие транзакции. Контекст и проблема Транзакция — это единая единица логики или работы, которая иногда состоит из нескольких операций. В рамках транзакции событие — это изменение состояния, которое происходит с сущностью, Read more

Automatically tag latest commit deployed

As we continue working and increasing our Salesforce projects, even the dynamic deployments can grow a lot between releases (around 1 month of development). So the build at the beginning of the release may take 5 to 10 minutes to deploy and run the specific tests, but by the end of the deployment it may be taking up to 3 hours (deploying almost 10k components and running 8k unit tests). In order to be able Read more

Clean Up Your Docker Registry

Delete unused digests of docker images and save space If you’re using your docker registry to push continuous updates you’ve probably noticed that the disk mount space for the registry is gradually growing. It looks like it’s time to have a registry clean up. Here’s how to do it. First, Let’s Get Familiar With the Jargon One docker image can have multiple tags. Each image has a digest, which is a unique value. When you do continuous pushes (with Read more

Automatic Join on Eloquent Models with relations setup

Since Eloquent doesn't do a real join when using "with" this will add a simple join method without having to worry about the join columns since it's all stored with the models anyway. It will also select all the columns from the joined table with an added prefix of the table name.   /**     * This determines the foreign key relations automatically to prevent the need to figure out the columns.     *     * @param \Illuminate\Database\Query\Builder Read more

LARAVEL 5 ELOQUENT: ЧТО ЗНАЧИТ HAS, WITH, WHEREHAS

With Применяется для жадной загрузки. То есть вместе с самой моделью Laravel загружает и связанные данные. Это полезно, если у вас есть коллекция моделей и для каждой вы хотите загрузить связанные данные. При жадной загрузке будет выполнен только один дополнительный запрос к базе данных. Пример User > hasMany > Post: $users = User::with(‘posts’)->get(); foreach($users as $user){ $users->posts; // посты уже загружены, нет запроса в каждой итерации цикла } Has Применяется для фильтрации по связанным данным. Read more

Which is the best Laravel cache driver for performance?

The Laravel cache can bring speed improvements to your web application. I compare the speed of each Laravel cache driver to see which is the best for performance. If you’re looking to improve the performance of your Laravel web application, then implementing a cache layer could be a good option. As a very high-level overview, using a cache allows data to be stored and then quickly retrieved. Common use cases include replacing slow or repetitive Read more

Разбираем x.509 сертификат

Для начала рассмотрим вариант самоподписанного сертификата корневого уровня.Для упрощения задачи сгенерируем сертификат, который будет содержать только необходимые параметры: Версия сертификата Серийный номер Алгоритм подписи Сведения об издателе Дата начала действия сертификата Дата окончания действия сертификата Сведения о владельце Открытый ключ Сделать это можно с помощью библиотеки Bouncy Castle, следующим образом: private void button1_Click(object sender, EventArgs e) { var KeyGenerate = new RsaKeyPairGenerator(); KeyGenerate.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 1024)); AsymmetricCipherKeyPair kp = KeyGenerate.GenerateKeyPair(); var gen = new Read more


Любишь мемасики?

Подпишись на мой телеграм-канал!

Открыть
Закрыть