Сине-зеленый деплой

Я и мои коллеги всегда склоняем своих клиентов полностью автоматизировать процесс деплоя. Автоматизация помогает сократить количество конфликтов и задержек, которые возникают в процессе между «завершением» работы над программой и введением в эксплуатацию. Дэйв Фарли (Dave Farley) и Джез Хамбл (Jez Humble) заканчивают книгу «Непрерывная доставка» (Continuous Delivery) на эту тему. Она основывается на множестве идей, которые в целом связаны с непрерывной интеграцией и подталкивают к возможности быстро пустить софт в работу. Глава о сине-зеленом деплое Read more

Task Scheduling in Packages

In your package’s service provider, you can use: use Illuminate\Console\Scheduling\Schedule; class ServiceProvider extends \Illuminate\Support\ServiceProvider { public function boot() { $this->app->booted(function () { $schedule = app(Schedule::class); $schedule->command('foo:bar')->everyMinute(); }); } } <?XML:NAMESPACE PREFIX = «[default] http://www.w3.org/2000/svg» NS = «http://www.w3.org/2000/svg» />

Время до первого байта: что это такое и почему это важно

Сейчас я работаю над проектом для одного клиента. Речь идёт о сайте из сферы электронной коммерции, поэтому меня очень сильно интересуют некоторые аспекты производительности. Для начала это — различные показатели, характеризующие время загрузки сайта. Дальше — это время начала рендеринга страницы, которое важно для тех посетителей, которые хотят, после захода на сайт, увидеть его содержимое как можно быстрее (в эту категорию, естественно, попадают все посетители сайта). Есть среди интересующих меня показателей производительности и такие, которые Read more

Простой способ узнать Time To First Byte (TTFB) используя cURL

Немного Википедии (хоть и переведенной на русский) Time To First Byte («Время до первого байта, TTFB) — это измерение, используемое как указание на отзывчивость веб-сервера или другого сетевого ресурса. TTFB измеряет продолжительность от пользователя или клиента, делающего HTTP-запрос к первому байту страницы, получаемой браузером клиента. Это время составлено из времени соединения сокета, времени, затраченного на отправку HTTP-запроса, и времени, затраченного на получение первого байта страницы. Хотя иногда неправильно понимается как вычисление после DNS, исходный расчет Read more

Live reload Prometheus configuration in docker(-compose)

prometheus: restart: always container_name: prometheus image: prom/prometheus:v2.10.0 privileged: true volumes: - ./configuration/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - prometheusdata:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--web.enable-admin-api' - '--web.enable-lifecycle' ports: - 9090:9090 POST /-/reload HTTP/1.1> Host: prometheus

How to Set API Rate Limiting in Laravel

What is rate limiting? Rate limiting is the control of the number of requests per unit time. It can be applied to ports, IPs, routes, etc. when used correctly, it can efficiently block out malicious bots. In the case of our API, it can mitigate DOS attacks , thus, making our API accessible without downtime for legitimate users. Note, rate limiting can also be done via a firewall. For example using IPTables on Debian based Read more

Laravel: Conditional Validation of Arrays and Nested Items

One of the features Laravel comes bundled with is validation. Validator comes with Laravel and it is amazing (IMHO)! Take it from someone who has had to validate input in a lot of frameworks and languages. A lot of what Laravel Validator can do is already in docs, I will just provide a semi-real-world example. I will start with a fresh Laravel install (5.6.*). First let’s set up this semi-real-world scenario. We have a page Read more

PHPUnit worst practices

One of my recent larger projects at work was to improve our pretty large PHPUnit test suite, which consists of nearly 7000 test cases. While accomplishing this useful but exhausting work, I made my notes of the most common bad coding, architecture and setup patterns, and this compilation I’d like to offer to you. Mostly, the examples refer to test code, although some were a consequence of poor design decisions. The order in which I Read more

Кратко об SSO через OAuth2

Устройство SSO Как устроено SSO? Принцип всегда один — всегда есть кто-то, кто авторизует первым — это провайдер. Дальше все сервисы получают от провайдера какой-то вид ключа (токен). Точнее в OAuth2 пара токенов — access и refresh, но не суть. С токеном ты идёшь в API провайдера и спрашиваешь — это кто? Провайдер говорит — ну типа вот, это юзер такой-то. Вот и всё SSO. Второй вариант — ты сам извлекаешь детали пользователя из токена Read more


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

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

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