#funny
Кто там не верил, что PHP — это самый современный язык программирования?! Не показывайте им это.
https://twitter.com/sasha_goebbels/status/1484658646332149762
Кто там не верил, что PHP — это самый современный язык программирования?! Не показывайте им это.
https://twitter.com/sasha_goebbels/status/1484658646332149762
Twitter
Dr. Sasha Volker Göbbels 🏳️⚧️⚗️📚
Me at the PHP Conference, how it started (2003) and how it's going (2021)
👎13💩7👍2😁1
#beginner #video
Теория и примеры SQL инъекций, а также способы защититься от них в новом видео от Евгения Кувшинова.
https://www.youtube.com/watch?v=a8tEQmY3jZY
Теория и примеры SQL инъекций, а также способы защититься от них в новом видео от Евгения Кувшинова.
https://www.youtube.com/watch?v=a8tEQmY3jZY
YouTube
PHP, PDO SQL Injection #3
SQL Injection минимум который должен знать каждый разработчик код которого работает в production
00:00 Вступление и оглавление
01:06 Определения (теория)
01:45 Чем опасны SQL Injection
03:34 Практический стенд
06:12 Обхода аутедентификации
09:23 Модификации…
00:00 Вступление и оглавление
01:06 Определения (теория)
01:45 Чем опасны SQL Injection
03:34 Практический стенд
06:12 Обхода аутедентификации
09:23 Модификации…
👍4🔥3
#advanced #laravel
Недавно релиз Laravel 9 перенесли с 25-го января на 8-е февраля. Тем не менее, релиз уже совсем скоро и пора бы уже обновляться. В Release Notes представлен практически полный список новых фич будущего релиза:
– С этой версии Laravel будет требовать PHP 8.0;
– Обновлены компоненты Flysystem и Symfony Mailer;
– Улучшены акссесоры;
– В аргументах роута можно использовать енамы;
– Группировка роутов по контроллеру;
– Енамы в качестве кастов атрибутов моделей (доступно только для PHP 8.1+);
– Поддержка индексов для полнтекстового поиска;
– И много других мелких изменений.
https://laravel.com/docs/master/releases
Недавно релиз Laravel 9 перенесли с 25-го января на 8-е февраля. Тем не менее, релиз уже совсем скоро и пора бы уже обновляться. В Release Notes представлен практически полный список новых фич будущего релиза:
– С этой версии Laravel будет требовать PHP 8.0;
– Обновлены компоненты Flysystem и Symfony Mailer;
– Улучшены акссесоры;
– В аргументах роута можно использовать енамы;
– Группировка роутов по контроллеру;
– Енамы в качестве кастов атрибутов моделей (доступно только для PHP 8.1+);
– Поддержка индексов для полнтекстового поиска;
– И много других мелких изменений.
https://laravel.com/docs/master/releases
👍5
#worker
Когда вы пишете долгоживущие (синхронные) воркеры, возникает необходимость следить за таймаутом задач, иначе одна задача может выполняться очень долго, заблокировав весь воркер. Это могут быть долгие вызовы по сети, особенно если вы не используете таймауты при http запросах, продолжительные вычисления, парсинг файлов и так далее.
Что можно с этим сделать? Например, использовать сигналы. Для этого вам потребуется расширение
Разберем, что здесь происходит:
1. Включаем асинхронную обработку сигналов, так как синхронно сигнал вы не получите, если воркер будет заблокирован:
2. Задаем таймер для сигнала
3. Устанавливаем обработчик данного сигнала:
4. Запускаем долгую задачу.
5. Сбрасываем обработчик сигнала:
Теперь каждая ваша задача не может выполняться дольше, чем 3 секунды.
На тему обработки сигналов есть хорошая библиотека от автора монолога, которая позволяет обрабатывать любые сигналы, отправленные процессу, и как-то на них реагировать.
Когда вы пишете долгоживущие (синхронные) воркеры, возникает необходимость следить за таймаутом задач, иначе одна задача может выполняться очень долго, заблокировав весь воркер. Это могут быть долгие вызовы по сети, особенно если вы не используете таймауты при http запросах, продолжительные вычисления, парсинг файлов и так далее.
Что можно с этим сделать? Например, использовать сигналы. Для этого вам потребуется расширение
pcntl
:pcntl_async_signals(true);
while (1) {
pcntl_alarm(3);
pcntl_signal(SIGALRM, function (): void {
throw new RuntimeException();
});
doWork(); // running too slow task.
pcntl_alarm(0);
}
Разберем, что здесь происходит:
1. Включаем асинхронную обработку сигналов, так как синхронно сигнал вы не получите, если воркер будет заблокирован:
pcntl_async_signals(true);
2. Задаем таймер для сигнала
SIGALRM
, которые будет отправлен текущему процессу через 3 секунды:pcntl_alarm(3);
3. Устанавливаем обработчик данного сигнала:
pcntl_signal(SIGALRM, function (): void {
throw new RuntimeException();
});
4. Запускаем долгую задачу.
5. Сбрасываем обработчик сигнала:
pcntl_alarm(0);
Теперь каждая ваша задача не может выполняться дольше, чем 3 секунды.
На тему обработки сигналов есть хорошая библиотека от автора монолога, которая позволяет обрабатывать любые сигналы, отправленные процессу, и как-то на них реагировать.
GitHub
GitHub - Seldaek/signal-handler: Simple unix signal handler that silently fails on windows for easy cross-platform development
Simple unix signal handler that silently fails on windows for easy cross-platform development - Seldaek/signal-handler
👍22
Привет! «Библиотека программиста» проводит анонимный опрос по теме: «Как вы управляете своими финансами?» Опрос займет не более 3 минут вашего времени.
Пройти его можно по ссылке
Пройти его можно по ссылке
💩7👍2
#worker
По следам вчерашней публикации.
Оказалось, такой сигнал, к сожалению, не сможет прервать выполнение кода, если выполняется какой-нибудь длительный запрос через
Решение для
Для
Спасибо @the_toster за ссылку.
По следам вчерашней публикации.
Оказалось, такой сигнал, к сожалению, не сможет прервать выполнение кода, если выполняется какой-нибудь длительный запрос через
file_get_contents
, curl
, etc. Решение для
curl
можно найти на stackoverflow. Для
file_get_contents
можно использовать контекст:$ctx = stream_context_create(['http'=> ['timeout' => 3]]);
echo file_get_contents(filename: 'https://example.com/', context: $ctx);
Спасибо @the_toster за ссылку.
Telegram
Библиотека пхпшника
#worker
Когда вы пишете долгоживущие (синхронные) воркеры, возникает необходимость следить за таймаутом задач, иначе одна задача может выполняться очень долго, заблокировав весь воркер. Это могут быть долгие вызовы по сети, особенно если вы не используете…
Когда вы пишете долгоживущие (синхронные) воркеры, возникает необходимость следить за таймаутом задач, иначе одна задача может выполняться очень долго, заблокировав весь воркер. Это могут быть долгие вызовы по сети, особенно если вы не используете…
👍12
#advanced #video #spiral
Новости от команды фреймворка Spiral.
https://www.youtube.com/watch?v=VIoGqpn3eyc
Новости от команды фреймворка Spiral.
https://www.youtube.com/watch?v=VIoGqpn3eyc
YouTube
Spiral Ecosystem news #2
После каждого релиза R&D команда Spiral собирается, чтобы обсудить новые фичи вошедшие в релизы наших проектов, а так-же последние новости по Roadrunner, Cycle ORM и Spiral Framework.
👍5
#advanced
Разбираемся, почему
https://www.exakat.io/en/speeding-up-array_merge/
Разбираемся, почему
array_merge
может быть медленным и что можно с этим сделать.https://www.exakat.io/en/speeding-up-array_merge/
👍1
#symfony
В последних обновлениях Symfony (6.0.3 и 5.4.3) настройка, включающая CSRF защиту, оказалась по умолчанию выключена, если не была включена явно. Обновляйте фреймворк до последних версий — 6.0.4 и 5.4.4 —, так как ваша версия может быть уязвимой для CSRF атак.
https://symfony.com/blog/cve-2022-xxxx-csrf-token-missing-in-forms
В последних обновлениях Symfony (6.0.3 и 5.4.3) настройка, включающая CSRF защиту, оказалась по умолчанию выключена, если не была включена явно. Обновляйте фреймворк до последних версий — 6.0.4 и 5.4.4 —, так как ваша версия может быть уязвимой для CSRF атак.
https://symfony.com/blog/cve-2022-xxxx-csrf-token-missing-in-forms
Symfony
CVE-2022-23601: CSRF token missing in forms (Symfony Blog)
CVE-2022-23601 fixes CSRF token missing in forms.
#advanced
Матьяс Нобак делится своим мнением о том, что код надо коммитить так, будто его могут случайно задеплоить.
https://matthiasnoback.nl/2022/01/commit-your-code-as-if-it-could-be-accidentally-deployed/
Матьяс Нобак делится своим мнением о том, что код надо коммитить так, будто его могут случайно задеплоить.
https://matthiasnoback.nl/2022/01/commit-your-code-as-if-it-could-be-accidentally-deployed/
matthiasnoback.nl
Commit your code as if it could be accidentally deployed
Consultancy secrets
#advanced #video
Евгений Кувшинов продолжает ликбез по PDO и базам данных. На этот раз он разбирает разницу между
https://www.youtube.com/watch?v=crDvjTUvdi4
Евгений Кувшинов продолжает ликбез по PDO и базам данных. На этот раз он разбирает разницу между
PREPARE
и EXECUTE
.https://www.youtube.com/watch?v=crDvjTUvdi4
YouTube
PHP, PDO Подготовленные запросы, EXECUTE vs PREPARE Statement
Что такое PREPARE и EXECUTE Statement в чем отличия подготовленных запросов, как с этим работать с PHP и PDO
00:00 Вступление
00:24 EXECUTE и PREPARE
00:50 EXECUTE Statement
03:08 PREPARE Statement
07:09 Пример именованные placeholder
07:53 Пример неименованные…
00:00 Вступление
00:24 EXECUTE и PREPARE
00:50 EXECUTE Statement
03:08 PREPARE Statement
07:09 Пример именованные placeholder
07:53 Пример неименованные…
👍13
#hollywar
Скорее всего, разработчики вокруг вас (да и вы сами) очень сильно увлекаются абстрагированием от базы данных, аргументируя это тем, что в будущем вы можете перейти на другую базу данных. Это заставляет разработчиков отказываться от использовании особенностей текущей СУБД. Но так ли это оправдано? Автор треда считает, что так вы себя ограничиваете при работе с БД и только очень маленькая часть команд действительно решается на миграцию.
А как считаете вы?
https://twitter.com/reibitto/status/1489678892785111040
Скорее всего, разработчики вокруг вас (да и вы сами) очень сильно увлекаются абстрагированием от базы данных, аргументируя это тем, что в будущем вы можете перейти на другую базу данных. Это заставляет разработчиков отказываться от использовании особенностей текущей СУБД. Но так ли это оправдано? Автор треда считает, что так вы себя ограничиваете при работе с БД и только очень маленькая часть команд действительно решается на миграцию.
А как считаете вы?
https://twitter.com/reibitto/status/1489678892785111040
Twitter
reibitto
I still don't understand the people who abstract out their DB layer and avoid certain vendor-specific features because "we might one day switch the DB in the future". I had a former coworker who felt strongly about this topic.
#release #laravel
Вышла 9-я версия Laravel. Со всеми новшествами мажорной версии, как всегда, можно познакомиться в release notes.
Вышла 9-я версия Laravel. Со всеми новшествами мажорной версии, как всегда, можно познакомиться в release notes.
Laravel
Release Notes - Laravel 12.x - The PHP Framework For Web Artisans
Laravel is a PHP web application framework with expressive, elegant syntax. We’ve already laid the foundation — freeing you to create without sweating the small things.
👍24💩13🎉3
Что из новых фичей Laravel 9 вам больше всего понравилось?
Anonymous Poll
28%
Новые аксессоры/мутаторы
29%
Енамы в качестве кастов в моделях
18%
Енамы в биндингах роутов
30%
Новый дизайн сайта laravel.com
30%
Группировка роутов по контроллерам
36%
Поддержка полнотекстового поиска
26%
Улучшенный вывод команды `route:list`
#advanced
Список алгоритмов и их реализаций на разных языках программирования, включая PHP. Однозначно будет полезно для общего развития. Не только же json-ы перекладывать.
https://github.com/tayllan/awesome-algorithms
Список алгоритмов и их реализаций на разных языках программирования, включая PHP. Однозначно будет полезно для общего развития. Не только же json-ы перекладывать.
https://github.com/tayllan/awesome-algorithms
GitHub
GitHub - tayllan/awesome-algorithms: A curated list of awesome places to learn and/or practice algorithms.
A curated list of awesome places to learn and/or practice algorithms. - tayllan/awesome-algorithms
🔥6👍1
#docker
Скрипт, который поможет вам легко устанавливать расширения для PHP в Docker.
https://github.com/mlocati/docker-php-extension-installer
Скрипт, который поможет вам легко устанавливать расширения для PHP в Docker.
https://github.com/mlocati/docker-php-extension-installer
GitHub
GitHub - mlocati/docker-php-extension-installer: Easily install PHP extensions in Docker containers
Easily install PHP extensions in Docker containers - mlocati/docker-php-extension-installer
Хотите переходить с PHP на Go?
14 февраля в 19:00 приходите на открытое собеседование на позицию middle Go-разработчика, где каждый сможет узнать:
- Какие вопросы задают на собеседовании по Go?
- Что нужно сделать для получения крутого оффера?
- Как быстрее всего стать гофером?
Как все происходит?
- Вы увидите настоящее собеседование: реальные вопросы, кейсы, задачи
- Интервьюер будет отвечать на вопросы из чата
- В конце вебинара мы расскажем про нашу менторскую программу
Кто будет проводить интервью?
Сергей Парамошкин
- Руководит центром разработки и автоматизации в МТС.Digital
- В подчинении три команды разработки
- Интервьюирует респондентов на позиции Junior, Middle и Senior
- Больше 10 лет в IT, 7 лет опыт в Go
Напишите нашему боту, чтобы зарегистрироваться на вебинар!
@mock_interviews_bot
14 февраля в 19:00 приходите на открытое собеседование на позицию middle Go-разработчика, где каждый сможет узнать:
- Какие вопросы задают на собеседовании по Go?
- Что нужно сделать для получения крутого оффера?
- Как быстрее всего стать гофером?
Как все происходит?
- Вы увидите настоящее собеседование: реальные вопросы, кейсы, задачи
- Интервьюер будет отвечать на вопросы из чата
- В конце вебинара мы расскажем про нашу менторскую программу
Кто будет проводить интервью?
Сергей Парамошкин
- Руководит центром разработки и автоматизации в МТС.Digital
- В подчинении три команды разработки
- Интервьюирует респондентов на позиции Junior, Middle и Senior
- Больше 10 лет в IT, 7 лет опыт в Go
Напишите нашему боту, чтобы зарегистрироваться на вебинар!
@mock_interviews_bot
💩16👍4
Middle/Senior PHP Developer
З/П 120000 - 250000 рублей
Обязанности:
- Разработка WEB-сервисов
- Оптимизация WEB-сервиса под высокую нагрузку, масштабирование, поиск узких мест
- Участие во всем процессе разработки, начиная с проектирования архитектуры и заканчивая поддержкой и рефакторингом
- Интеграция платёжных систем (Stripe, Solid и т.п.)
Требования:
- Опыт работы PHP-разработчиком от 4-х лет
- Продвинутый уровень владения PHP (версия 7.0 и выше)
- Опыт работы с БД (MySQL, PostgreSQL)
- Опыт работы с Yii2 или Symfony или Laravel или Slim
- Владение GIT
- Владение Composer
- Опыт работы с PSR
- Умение работать в команде, соблюдать сроки, вовремя сообщать о проблемах
Будет плюсом:
- Опыт применения NoSql решений
Мы предлагаем:
- Восьмичасовую пятидневку с плавающим временем прихода/ухода;
- У нас Вы получите оплачиваемые отпуска и больничные в 100% объеме Вашей заработной платы
- У нас Вы встретите отсутствие жёстких рамок и бюрократии
- Если Вы человек, жаждущий постоянного роста и развития, наша компания с удовольствием предоставит такую возможность, будь это курсы повышения квалификации или карьерный рост внутри организации
- Полная удалёнка либо офис в Санкт-Петербурге в 2 минутах от ст. м. "Маяковская".
- Достойная заработная плата, определяющаяся по результатам собеседования
- Уютный офис, где всегда можно перекусить и расслабиться в игровой зоне с Playstation 5
- Кофе, печеньки и т.п.
Контакт: @web_product_devs
З/П 120000 - 250000 рублей
Обязанности:
- Разработка WEB-сервисов
- Оптимизация WEB-сервиса под высокую нагрузку, масштабирование, поиск узких мест
- Участие во всем процессе разработки, начиная с проектирования архитектуры и заканчивая поддержкой и рефакторингом
- Интеграция платёжных систем (Stripe, Solid и т.п.)
Требования:
- Опыт работы PHP-разработчиком от 4-х лет
- Продвинутый уровень владения PHP (версия 7.0 и выше)
- Опыт работы с БД (MySQL, PostgreSQL)
- Опыт работы с Yii2 или Symfony или Laravel или Slim
- Владение GIT
- Владение Composer
- Опыт работы с PSR
- Умение работать в команде, соблюдать сроки, вовремя сообщать о проблемах
Будет плюсом:
- Опыт применения NoSql решений
Мы предлагаем:
- Восьмичасовую пятидневку с плавающим временем прихода/ухода;
- У нас Вы получите оплачиваемые отпуска и больничные в 100% объеме Вашей заработной платы
- У нас Вы встретите отсутствие жёстких рамок и бюрократии
- Если Вы человек, жаждущий постоянного роста и развития, наша компания с удовольствием предоставит такую возможность, будь это курсы повышения квалификации или карьерный рост внутри организации
- Полная удалёнка либо офис в Санкт-Петербурге в 2 минутах от ст. м. "Маяковская".
- Достойная заработная плата, определяющаяся по результатам собеседования
- Уютный офис, где всегда можно перекусить и расслабиться в игровой зоне с Playstation 5
- Кофе, печеньки и т.п.
Контакт: @web_product_devs
👍7
#advanced
Стратегии кэширования и как выбрать правильную из них для конкретного случая.
https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
Стратегии кэширования и как выбрать правильную из них для конкретного случая.
https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
CodeAhoy
Caching Strategies and How to Choose the Right One
Compare the pros and cons of various caching strategies to choose the best one for your use case.
👍1