#advanced #rabbitmq
О RabbitMQ в микросервисной архитектуре.
https://www.cloudamqp.com/blog/why-use-rabbitmq-in-a-microservice-architecture.html
О RabbitMQ в микросервисной архитектуре.
https://www.cloudamqp.com/blog/why-use-rabbitmq-in-a-microservice-architecture.html
CloudAMQP
Microservices - why use RabbitMQ? - CloudAMQP
Today’s monolithic systems are being replaced at a rapid pace by microservice architecture. To understand why this is the case requires a closer look into the core of message queuing and the benefits of using RabbitMQ as a message broker in a microservice…
#advanced #phpfpm
Подробный материал о том, что такое php-fpm, зачем он нужен и как оптимизировать его работу.
https://geekflare.com/php-fpm-optimization/
Подробный материал о том, что такое php-fpm, зачем он нужен и как оптимизировать его работу.
https://geekflare.com/php-fpm-optimization/
Geekflare
Optimizing PHP-FPM for High Performance
PHP is everywhere and is arguably the language most widely deployed on the Internet Web. However, it's not exactly known for its high-performance
#junior #rest
Исчерпывающая статья на тему того, что такое REST. Вы узнаете многое про клиент-серверное общение, заголовки, http и посмотрите примеры реализаций.
https://www.codecademy.com/articles/what-is-rest
Исчерпывающая статья на тему того, что такое REST. Вы узнаете многое про клиент-серверное общение, заголовки, http и посмотрите примеры реализаций.
https://www.codecademy.com/articles/what-is-rest
Codecademy
What is REST?
Learn about the REST (Representational State Transfer) paradigm and how rest architecture streamlines communication between web components.
#advanced #laravel
Большой туториал по laravel tinker.
https://beyondco.de/blog/the-ultimate-guide-to-php-artisan-tinker
Большой туториал по laravel tinker.
https://beyondco.de/blog/the-ultimate-guide-to-php-artisan-tinker
Tinkerwell
The ultimate guide to php artisan tinker
The tinker command is built into every Laravel application and you can use it to run code within the context of your application. Let's explore what this means.
#advanced
Как TDD меняет отношение к тестированию приложений и немного полезных графиков о том, как происходи процесс TDD.
https://proglib.io/w/28da9918
Как TDD меняет отношение к тестированию приложений и немного полезных графиков о том, как происходи процесс TDD.
https://proglib.io/w/28da9918
Medium
TDD changed my relationship with Software Testing
TDD has many benefits, but, for me, the best one is that you have to think how you are going to implement the code before doing it…
ReleaseIt!.pdf
8.4 MB
#advanced #book
Книга о том, как проектировать и правильно эксплуатировать ПО. В книге рассматриваются различные паттерны и антипаттерны, ситуации, при которых нужно действовать быстро, популярные решения многих проблем: отказы, интеграция с API, ретраи, медленные запросы и многое другое. Также в книге рассматриваются примеры плохих решений: слишком много JS, большие Cookie, плохой SQL код, кэширование и т.д.
Книга о том, как проектировать и правильно эксплуатировать ПО. В книге рассматриваются различные паттерны и антипаттерны, ситуации, при которых нужно действовать быстро, популярные решения многих проблем: отказы, интеграция с API, ретраи, медленные запросы и многое другое. Также в книге рассматриваются примеры плохих решений: слишком много JS, большие Cookie, плохой SQL код, кэширование и т.д.
#advanced
Статья для тех, кто часто вовлечен в процессы, связанные с оплатой. Автор рассматривает проблемы дублированных платежей и как их избежать.
https://medium.com/airbnb-engineering/avoiding-double-payments-in-a-distributed-payments-system-2981f6b070bb
Статья для тех, кто часто вовлечен в процессы, связанные с оплатой. Автор рассматривает проблемы дублированных платежей и как их избежать.
https://medium.com/airbnb-engineering/avoiding-double-payments-in-a-distributed-payments-system-2981f6b070bb
Medium
Avoiding Double Payments in a Distributed Payments System
How we built a generic idempotency framework to achieve eventual consistency and correctness across our payments micro-service…
#advanced
Список алгоритмов, используемых в стандартных функциях PHP.
https://stackoverflow.com/questions/2473989/list-of-big-o-for-php-functions/2484455#2484455
Список алгоритмов, используемых в стандартных функциях PHP.
https://stackoverflow.com/questions/2473989/list-of-big-o-for-php-functions/2484455#2484455
Stack Overflow
List of Big-O for PHP functions
After using PHP for a while now, I've noticed that not all built-in PHP functions are as fast as expected. Consider these two possible implementations of a function that finds if a number is prime ...
#advanced #testing
Очередная статья от Матьяса Нобака с вызывающим названием: «Не тестируйте конструкторы».
https://matthiasnoback.nl/2021/05/dont-test-constructors/
Очередная статья от Матьяса Нобака с вызывающим названием: «Не тестируйте конструкторы».
https://matthiasnoback.nl/2021/05/dont-test-constructors/
matthiasnoback.nl
Don't test constructors
Common constructor problems will be caught by your static analyzer | Exposing state breaks encapsulation | The test doesn't explain why you need the property assignments | Replace the constructor unit test with some higher-level test | What if I just want…
#advanced #laravel
Пагинация в Laravel с помощью курсора и офсета: за и против.
https://www.laravel-enlightn.com/blog/laravel-offset-vs-cursor-pagination/
Пагинация в Laravel с помощью курсора и офсета: за и против.
https://www.laravel-enlightn.com/blog/laravel-offset-vs-cursor-pagination/
Enlightn
Offset vs Cursor Pagination in Laravel [In-Depth Guide]
Curious to learn pagination strategies in Laravel? Here's an in-depth guide on offset and cursor pagination, and the pros and cons of each.
#advanced
Nginx vs. Apache: практические примеры отличий двух веб-серверов. А на чьей вы стороне?
https://www.digitalocean.com/community/tutorials/apache-vs-nginx-practical-considerations
Nginx vs. Apache: практические примеры отличий двух веб-серверов. А на чьей вы стороне?
https://www.digitalocean.com/community/tutorials/apache-vs-nginx-practical-considerations
Digitalocean
Apache vs Nginx: Practical Considerations | DigitalOcean
Apache and Nginx are the two most common open source web servers in the world. Together, they are responsible for serving over 50% of traffic on the internet…
#advanced #testing
Пишем тесты без использования фреймворков для создания моков.
https://blog.frankdejonge.nl/testing-without-mocking-frameworks/
Пишем тесты без использования фреймворков для создания моков.
https://blog.frankdejonge.nl/testing-without-mocking-frameworks/
Frank on Software
Testing without mocking frameworks.
By creating your own fakes, you can free yourself from using mocking frameworks. Find out how you can benefit from it.
#advanced
Статья об SSL-сертификатах, о том, как их установить, как получить бесплатный сертификат и зачем они вообще нужны. Кстати, внизу статьи есть ссылки на другие интересные публикации, связанные с безопасностью передаваемых данных: https, шифрование с помощью ключей, SSL рукопожатие и некоторые другие.
https://www.cloudflare.com/learning/ssl/what-is-an-ssl-certificate/
Статья об SSL-сертификатах, о том, как их установить, как получить бесплатный сертификат и зачем они вообще нужны. Кстати, внизу статьи есть ссылки на другие интересные публикации, связанные с безопасностью передаваемых данных: https, шифрование с помощью ключей, SSL рукопожатие и некоторые другие.
https://www.cloudflare.com/learning/ssl/what-is-an-ssl-certificate/
#advanced #video
Серия видео от Мартина Клепмана, автора книги "Высоконагруженные приложения", о распределенных системах, из которой вы узнаете:
1. Про RPC;
2. Об основных проблемах распределенных систем;
3. Как добиться отказоустойчивости;
4. Как синхронизировать время;
5. Про широковещательные оповещения;
7. О так называемой Eventual Consistency;
8. Двухфазовых коммитах и многом другом.
https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB
Серия видео от Мартина Клепмана, автора книги "Высоконагруженные приложения", о распределенных системах, из которой вы узнаете:
1. Про RPC;
2. Об основных проблемах распределенных систем;
3. Как добиться отказоустойчивости;
4. Как синхронизировать время;
5. Про широковещательные оповещения;
7. О так называемой Eventual Consistency;
8. Двухфазовых коммитах и многом другом.
https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB
YouTube
Distributed Systems lecture series
Accompanying lecture notes: https://www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf These videos form an 8-lecture series on distributed systems...
#advanced #video
Интересное обсуждение на тему того, почему code review – это плохо.
https://www.youtube.com/watch?v=IDj3x__YZgE
Интересное обсуждение на тему того, почему code review – это плохо.
https://www.youtube.com/watch?v=IDj3x__YZgE
YouTube
CodeReview:долго, пл*хо, дорого /Ф. Дельгядо, В. Фабриченко, А. Агейченко, В. Дмитриев, В. Шароватов
Понравилось видео и хочешь узнать что-то еще про тимлидство? Забирай весь плейлист на https://is.gd/kChYnl или купи билет на следующий сезон конференции https://is.gd/auKynm
Подпишись на канал – каждую неделю мы выкладываем новые видео про то, как устроена…
Подпишись на канал – каждую неделю мы выкладываем новые видео про то, как устроена…
#advanced #video
Интервью с Мэтью Брауном, автором статического анализатора Psalm.
http://phptownhall.com/episode-81-the-book-of-psalm/
Интервью с Мэтью Брауном, автором статического анализатора Psalm.
http://phptownhall.com/episode-81-the-book-of-psalm/
#advanced #architecture
Домены, поддомены, ограниченные контексты и другие понятия из мира DDD в большой обзорной статье.
https://medium.com/nick-tune-tech-strategy-blog/domains-subdomain-problem-solution-space-in-ddd-clearly-defined-e0b49c7b586c
Домены, поддомены, ограниченные контексты и другие понятия из мира DDD в большой обзорной статье.
https://medium.com/nick-tune-tech-strategy-blog/domains-subdomain-problem-solution-space-in-ddd-clearly-defined-e0b49c7b586c
Medium
Domain, Subdomain, Bounded Context, Problem/Solution Space in DDD: Clearly Defined
Domain-Driven Design is an approach to designing systems, usually software, that emphasises creating a common language between domain…
#advanced #library
Библиотека для удобного поиска по json с помощью декларативного языка jmespath.
https://github.com/jmespath/jmespath.php
Библиотека для удобного поиска по json с помощью декларативного языка jmespath.
https://github.com/jmespath/jmespath.php
GitHub
GitHub - jmespath/jmespath.php: Declaratively specify how to extract elements from a JSON document, in PHP
Declaratively specify how to extract elements from a JSON document, in PHP - jmespath/jmespath.php
#advanced
Command Bus, или Message Bus, или Event Bus – как только ни называют шину сообщений. Удобный инструмент, который позволяет иметь единую точку входа для сообщений/команд/событий и абстрагироваться от выбора обработчика и их количества. Также некоторые продвинутые шины сообщений позволяют подключать очереди для асинхронной обработки сообщений. На данный момент для php доступны неколько реализаций:
1. https://github.com/SimpleBus/message-bus – шина от Матьяса Нобака. Достаточно скромная реализация, которая тем не менее послужила вдохновением для symfony/messenger.
2. https://github.com/onliner/command-bus – молодой command bus от onliner, очень перспективный проект с хорошим кодом и возможностью использовать брокеры очередей.
3. https://github.com/thephpleague/tactician – command bus от ребят из phpleague, из коробки не умеет откладывать сообщения, но можно подключить bernard, как советуют в документации https://tactician.thephpleague.com/plugins/bernard/.
https://github.com/symfony/messenger - мессенджер Symfony в представлении не нуждается, однако вызывает смешанные чувства. За сложностью реализации скрываются недочеты, некоторые неудобства, а в экспериментальной версии были баги. В целом, инструмент взрослый, можно попробовать.
Command Bus, или Message Bus, или Event Bus – как только ни называют шину сообщений. Удобный инструмент, который позволяет иметь единую точку входа для сообщений/команд/событий и абстрагироваться от выбора обработчика и их количества. Также некоторые продвинутые шины сообщений позволяют подключать очереди для асинхронной обработки сообщений. На данный момент для php доступны неколько реализаций:
1. https://github.com/SimpleBus/message-bus – шина от Матьяса Нобака. Достаточно скромная реализация, которая тем не менее послужила вдохновением для symfony/messenger.
2. https://github.com/onliner/command-bus – молодой command bus от onliner, очень перспективный проект с хорошим кодом и возможностью использовать брокеры очередей.
3. https://github.com/thephpleague/tactician – command bus от ребят из phpleague, из коробки не умеет откладывать сообщения, но можно подключить bernard, как советуют в документации https://tactician.thephpleague.com/plugins/bernard/.
https://github.com/symfony/messenger - мессенджер Symfony в представлении не нуждается, однако вызывает смешанные чувства. За сложностью реализации скрываются недочеты, некоторые неудобства, а в экспериментальной версии были баги. В целом, инструмент взрослый, можно попробовать.
GitHub
GitHub - SimpleBus/message-bus: [READ ONLY] Generic classes and interfaces for messages and message buses. Full documentation can…
[READ ONLY] Generic classes and interfaces for messages and message buses. Full documentation can be found here: - SimpleBus/message-bus