#github #library
Мы часто используем коллекции элементов: коллекции строк, чисел, объектов. Коллекции предоставляют удобный API по добавлению, удалению, обходу, слиянию, фильтрации элементов и многому другому. Ниже собран список самых популярных на данный момент коллекций.
https://github.com/loophp/collection
https://github.com/ramsey/collection
https://github.com/schmittjoh/php-collection
https://github.com/illuminate/collections
https://github.com/doctrine/collections
Мы часто используем коллекции элементов: коллекции строк, чисел, объектов. Коллекции предоставляют удобный API по добавлению, удалению, обходу, слиянию, фильтрации элементов и многому другому. Ниже собран список самых популярных на данный момент коллекций.
https://github.com/loophp/collection
https://github.com/ramsey/collection
https://github.com/schmittjoh/php-collection
https://github.com/illuminate/collections
https://github.com/doctrine/collections
GitHub
GitHub - loophp/collection: A (memory) friendly, easy, lazy and modular collection class.
A (memory) friendly, easy, lazy and modular collection class. - loophp/collection
#release
PHP 8.1 уже можно потрогать в альфа версии.
https://www.php.net/archive/2021.php#2021-07-08-1
PHP 8.1 уже можно потрогать в альфа версии.
https://www.php.net/archive/2021.php#2021-07-08-1
#advanced #rabbitmq
Большой подробный туториал по основам работы с RabbitMQ.
https://proglib.io/w/c8551529
Большой подробный туториал по основам работы с RabbitMQ.
https://proglib.io/w/c8551529
ajaxblog.ru
RabbitMQ для начинающих | Ajaxblog
#cheatsheet
Находим все процессы, слушающие конкретный порт.
https://sebastiandedeyne.com/unix-things/finding-out-which-ports-are-in-use/
Находим все процессы, слушающие конкретный порт.
https://sebastiandedeyne.com/unix-things/finding-out-which-ports-are-in-use/
Sebastiandedeyne
Finding out which ports are in use
Sometimes you want to spin up a process, but the port it wants to bind to is already in use. Or a port isn't listening to a process as you expected. lsof is a debugging life saver in these situations.
lsof -i -P -n | grep LISTEN
This will list all processes…
lsof -i -P -n | grep LISTEN
This will list all processes…
Вакансия: автор образовательных курсов в сфере IT
Кого мы ищем? Профессионала c опытом создания образовательного IT-контента для специалистов уровня middle.
Обязанности:
- Составление учебной программы
- Подготовка текстовых материалов курса: методические материалы, домашние задания, программный код
Требования:
Владение инструментами разработчика, одним или несколькими языками программирования:
– Python
– HTML, CSS, JS
– Java
– SQL
Условия работы. Нам интересно длительное сотрудничество, работаем удалённо. Загрузка: 10-14 тыс. знаков в день, оплата: от 450 руб. за 1000 знаков.
В отклике на вакансию укажите образование, опыт работы и ссылки на ваши материалы.
Контакт для связи: @proglib_producer
Кого мы ищем? Профессионала c опытом создания образовательного IT-контента для специалистов уровня middle.
Обязанности:
- Составление учебной программы
- Подготовка текстовых материалов курса: методические материалы, домашние задания, программный код
Требования:
Владение инструментами разработчика, одним или несколькими языками программирования:
– Python
– HTML, CSS, JS
– Java
– SQL
Условия работы. Нам интересно длительное сотрудничество, работаем удалённо. Загрузка: 10-14 тыс. знаков в день, оплата: от 450 руб. за 1000 знаков.
В отклике на вакансию укажите образование, опыт работы и ссылки на ваши материалы.
Контакт для связи: @proglib_producer
Вакансия: спикер (преподаватель) образовательных IT-курсов
Кого мы ищем? Разработчиков с опытом публичных выступлений.
Обязанности:
– Запись видеокурсов по подготовленным нашими авторам материалам
– Проверка домашних заданий студентов
Требования. Нам важно, чтобы спикер обладал грамотной речью и хорошей дикцией, имел навыки программирования на одном или нескольких языках
– Python
– HTML, CSS, JS
– Java
– SQL
Условия работы. Мы рассчитываем на долгосрочное сотрудничество. Загрузка от 5 часов в неделю, оплата — от 1500 рублей за час съемки. Работа в нашей студии в Москве.
В отклике на вакансию укажите образование, опыт выступлений и разработки. Будет классно, если вы сможете записать краткий видеорассказ о себе — 30-40 секунд.
Контакт для связи: @vlad_proglib
Кого мы ищем? Разработчиков с опытом публичных выступлений.
Обязанности:
– Запись видеокурсов по подготовленным нашими авторам материалам
– Проверка домашних заданий студентов
Требования. Нам важно, чтобы спикер обладал грамотной речью и хорошей дикцией, имел навыки программирования на одном или нескольких языках
– Python
– HTML, CSS, JS
– Java
– SQL
Условия работы. Мы рассчитываем на долгосрочное сотрудничество. Загрузка от 5 часов в неделю, оплата — от 1500 рублей за час съемки. Работа в нашей студии в Москве.
В отклике на вакансию укажите образование, опыт выступлений и разработки. Будет классно, если вы сможете записать краткий видеорассказ о себе — 30-40 секунд.
Контакт для связи: @vlad_proglib
#laravelshit
Ребята из spatie делают не только пакеты среднего уровня качества, но и рекомендуют и пишут статьи не лучше своих пакетов. Например, статья под гордым названием «5 простых советов» на самом деле рекламирует как минимум три ужасных:
1. Предлагается использовать
2. Используйтеговна плохого кода другим. Чтобы уяснить для себя, почему это плохо, советую прочитать данный тред со ссылкой на оригинальный твит, приведенный в статье, https://twitter.com/pierrejoye/status/1286441723724324864?s=21.
3. "Используйте
https://ryangjchandler.co.uk/posts/5-simple-laravel-tips-and-tricks
Ребята из spatie делают не только пакеты среднего уровня качества, но и рекомендуют и пишут статьи не лучше своих пакетов. Например, статья под гордым названием «5 простых советов» на самом деле рекламирует как минимум три ужасных:
1. Предлагается использовать
User::all()->dd()
вместо dd(User::all())
, ссылаясь на то, что разработчиков может раздражать необходимость заводить переменную для вызова dd
. Зато разработчиков не раздражает дебажить код с помощью dd
вместо xdebug
и тянуть на продакшн код для дебага https://github.com/laravel/framework/blob/8.x/src/Illuminate/Database/Query/Builder.php#L3406-L3409 (🤦♂️).2. Используйте
Auth::id()
вместо Auth::user()->id()
, – гордо кричит автор статьи, предлагая заменить один кусок 3. "Используйте
->withDefault()
при определении отношений, чтобы в случае отсутствия модели получать пустышку". Как и автор статьи, документация заявляет, что это пример реализации паттерна Null Object
, но это не так. Null Object
нужен, чтобы соответствовать типу и ничего не делать (например, NullLogger), а null
от объекта модели только вводит в ступор: придется проверять на существование id
модели, чтобы отличить его от реальных данных, что не сильно отличается от if ($post->user === null)
. https://ryangjchandler.co.uk/posts/5-simple-laravel-tips-and-tricks
GitHub
framework/src/Illuminate/Database/Query/Builder.php at 8.x · laravel/framework
The Laravel Framework. Contribute to laravel/framework development by creating an account on GitHub.
#symfony #advanced
Все знают про мощный
Например, если вы хотите получить переменную как
Также он может проверить файл на существование:
Больше процессоров можно найти тут.
Недавно нам потребовалось из строки получать массив, где каждый элемент должен быть числом. Написали свой процессор. Можно указать любой разделитель и привести к
Теперь вы можете из такой строки
Все знают про мощный
Dependency Injection
компонент Symfony. Также он поддерживает работу с переменными окружения – не только их загрузкой, но и их валидацией и приведением к типам.Например, если вы хотите получить переменную как
int
, вы можете сделать так:AppSomeService:
arguments:
$timeout: '%env(int:SOME_TIMEOUT)%'
Также он может проверить файл на существование:
%env(file:PRIVATE_KEY)%
Больше процессоров можно найти тут.
Недавно нам потребовалось из строки получать массив, где каждый элемент должен быть числом. Написали свой процессор. Можно указать любой разделитель и привести к
int/float
: %env(explode:dot:integer:SOME_ENV)%
%env(explode:comma:integer:SOME_ENV)%
%env(explode:dash:float:SOME_ENV)%
%env(explode:bar:SOME_ENV)% // cast to string by default.
Теперь вы можете из такой строки
435423,923592,8235823
, лежащей в env, получить массив чисел или строк.Symfony
Environment Variable Processors (Symfony Docs)
Using env vars to configure Symfony applications is a common practice to make your applications truly dynamic. The main issue of env vars is that their values can only be strings and your application …
#laravelshit
В тему разговора о том, почему фасады плохие, можно вспомнить ишьюс на гитхабе, в котором разработчики жалуются на то, что фасады превращают любой сервис в синглтон, потому что кэшируют их в текущем рантайме. Можно, конечно, обойти этот баг следующим образом, но все это говорит не в пользу фасадов. Главное не вздумайте использовать фасады в долгоживущих приложениях.
https://github.com/laravel/ideas/issues/1088
В тему разговора о том, почему фасады плохие, можно вспомнить ишьюс на гитхабе, в котором разработчики жалуются на то, что фасады превращают любой сервис в синглтон, потому что кэшируют их в текущем рантайме. Можно, конечно, обойти этот баг следующим образом, но все это говорит не в пользу фасадов. Главное не вздумайте использовать фасады в долгоживущих приложениях.
https://github.com/laravel/ideas/issues/1088
GitHub
Facades always returning a singleton · Issue #1088 · laravel/ideas
Is there any reason or design decision that dictates that the use of a Facade always returns a singleton, and ignores the binding method specified in the ServiceProvider?
#advanced #video
Полезное видео о том, как правильно работать с Redis и предотвращать отказы.
https://www.youtube.com/watch?v=9qvr920dWtk
Полезное видео о том, как правильно работать с Redis и предотвращать отказы.
https://www.youtube.com/watch?v=9qvr920dWtk
YouTube
Отказоустойчивая работа с Redis - Сергей Шамбир, iSpring
Казалось бы, есть универсальный способ ускорить любой сервис: просто использовать Redis. Но всегда ли это пойдёт на пользу? В докладе мы обсудим подводные камни использования Redis, а затем рассмотрим практический опыт построения системы, устойчивой к его…
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
#symfony #advanced Все знают про мощный Dependency Injection компонент Symfony. Также он поддерживает работу с переменными окружения – не только их загрузкой, но и их валидацией и приведением к типам. Например, если вы хотите получить переменную как int…
#library #symfony
В тему поста наш подписчик сделал более усовершенствованный бандл для разбиения строки из переменных окружения в массив по разделителям и приведения его значений к любому необходимому типу.
https://github.com/nbgrp/env-bundle
В тему поста наш подписчик сделал более усовершенствованный бандл для разбиения строки из переменных окружения в массив по разделителям и приведения его значений к любому необходимому типу.
https://github.com/nbgrp/env-bundle
GitHub
GitHub - nbgrp/env-bundle: Bundle with a few useful Symfony environment variable processors.
Bundle with a few useful Symfony environment variable processors. - nbgrp/env-bundle
Хотите стать IT-специалистом крупной компании? Тогда обучающий курс «Профессия Go-разработчик» для вас!
За год обучения вы:
- получите базовые знания программирования;
- научитесь разрабатывать и тестировать приложения на Golang;
- освоите принципы работы с алгоритмами поиска и сортировки;
- научитесь взаимодействовать с файловой системой.
Переходите по ссылке и регистрируйтесь. Первые 3 месяца обучения бесплатно!▶️ https://clc.am/kABWww.
За год обучения вы:
- получите базовые знания программирования;
- научитесь разрабатывать и тестировать приложения на Golang;
- освоите принципы работы с алгоритмами поиска и сортировки;
- научитесь взаимодействовать с файловой системой.
Переходите по ссылке и регистрируйтесь. Первые 3 месяца обучения бесплатно!▶️ https://clc.am/kABWww.
#symfony #advanced
Пакет для Symfony, который необходимо использовать в долгоживущих процессах: например, очередях и консольных командах. Пакет помогает следить за используемой памятью и вовремя очищать ее, например, почистив EntityManager.
https://github.com/LongRunning/LongRunning
Пакет для Symfony, который необходимо использовать в долгоживущих процессах: например, очередях и консольных командах. Пакет помогает следить за используемой памятью и вовремя очищать ее, например, почистив EntityManager.
https://github.com/LongRunning/LongRunning
GitHub
GitHub - LongRunning/LongRunning: Mono repository for everything long running
Mono repository for everything long running. Contribute to LongRunning/LongRunning development by creating an account on GitHub.
Forwarded from PHP Digest
В PHP 8.1 будут readonly свойства
https://wiki.php.net/rfc/readonly_properties_v2
Такие свойства нельзя изменить после инициализации.
Инициализировать можно только в том же скоупе, то есть в объявлении или в методе класса (можно обойти через Reflection или старый трюк с Closure::bind).
Свойства с флагом
Если
https://wiki.php.net/rfc/readonly_properties_v2
Такие свойства нельзя изменить после инициализации.
Инициализировать можно только в том же скоупе, то есть в объявлении или в методе класса (можно обойти через Reflection или старый трюк с Closure::bind).
Свойства с флагом
readonly
должны быть типизированные, но можно использовать тип mixed
.Если
readonly
свойство инициализировано объектом, то иммутабельным он не становится. То есть его внутреннее состояние все еще можно изменить.#advanced #laravel
Полезный PR от Тейлора, в котором улучшена обработка ошибок при тестировании эндпоинтов. Например, раньше при сравнении статус-кодов вы могли получить ошибку приложения, но не понять, что именно произошло, так как вы получали не полный стак-трейс.
https://github.com/laravel/framework/pull/38025
Полезный PR от Тейлора, в котором улучшена обработка ошибок при тестировании эндпоинтов. Например, раньше при сравнении статус-кодов вы могли получить ошибку приложения, но не понять, что именно произошло, так как вы получали не полный стак-трейс.
https://github.com/laravel/framework/pull/38025
GitHub
[8.x] Track exceptions and display them on failed status checks for dx by taylorotwell · Pull Request #38025 · laravel/framework
This feature is inspired by feedback from @jessarcher and my own poor experience with testing endpoints that throw unexpected exceptions.
This problem typically arises when asserting against the st...
This problem typically arises when asserting against the st...
#advanced #rabbitmq
Серия статей по лучшим практикам при работе с
https://www.cloudamqp.com/blog/part1-rabbitmq-best-practice.html
https://www.cloudamqp.com/blog/part2-rabbitmq-best-practice-for-high-performance.html
https://www.cloudamqp.com/blog/part3-rabbitmq-best-practice-for-high-availability.html
https://www.cloudamqp.com/blog/part4-rabbitmq-13-common-errors.html
Серия статей по лучшим практикам при работе с
RabbitMQ
: как добиться высокой производительности, высокой доступности, как не совершать и решать популярные ошибки при настройке и работе с брокером. https://www.cloudamqp.com/blog/part1-rabbitmq-best-practice.html
https://www.cloudamqp.com/blog/part2-rabbitmq-best-practice-for-high-performance.html
https://www.cloudamqp.com/blog/part3-rabbitmq-best-practice-for-high-availability.html
https://www.cloudamqp.com/blog/part4-rabbitmq-13-common-errors.html
CloudAMQP
Part 1: RabbitMQ Best Practices - CloudAMQP
We have been working with RabbitMQ a long time, and we have probably seen way more configuration mistakes than anybody else. We know how to configure for optimal performance and how to get the most stable cluster. We will in this series share our knowledge!
#advanced #jwt
Статья с громким названием "Почему JWT сосет?". Когда вместо jwt токенов нужно использовать обычную сессию и для чего на самом деле можно использовать jwt токены.
https://scotch.io/bar-talk/why-jwts-suck-as-session-tokens
Статья с громким названием "Почему JWT сосет?". Когда вместо jwt токенов нужно использовать обычную сессию и для чего на самом деле можно использовать jwt токены.
https://scotch.io/bar-talk/why-jwts-suck-as-session-tokens
#advanced #architecture
Большая статья, в которой рассматриваются примеры технологий и подходов при построении высоконагруженных приложений:
1. Балансировщики нагрузки;
2. SQL или NoSQL базы данных;
3. Шардинг;
4. Репликация;
5. Кэширование;
6. CDN;
7. Long-polling vs Websockets vs SSE.
https://proglib.io/w/4bc624df
Большая статья, в которой рассматриваются примеры технологий и подходов при построении высоконагруженных приложений:
1. Балансировщики нагрузки;
2. SQL или NoSQL базы данных;
3. Шардинг;
4. Репликация;
5. Кэширование;
6. CDN;
7. Long-polling vs Websockets vs SSE.
https://proglib.io/w/4bc624df
Medium
How to design a system to scale to your first 100 million users
Think Big, Do Small, Learn Fast
#advanced #php81
Обзор новых фич грядущей версии php 8.1.
https://stitcher.io/blog/php-81-before-and-after
Обзор новых фич грядущей версии php 8.1.
https://stitcher.io/blog/php-81-before-and-after
stitcher.io
PHP 8.1: before and after - stitcher.io
The impact of PHP 8.1 on my code