Forwarded from Библиотека задач по PHP | тесты, код, задания
Где будет доступно сообщение 'Data saved successfully!' после выполнения этого кода?
Anonymous Quiz
17%
В следующем запросе HTTP
23%
В текущем запросе HTTP
3%
В базе данных
57%
В сессии пользователя
😁9
Forwarded from Книги для программистов
Это книга о том, как распилить монолит на такие мелкие кусочки, что потом их сложно не только собрать, но и найти
Автор — Сэм Ньюман, ваш микросервисный гуру, который прошёл через боль продакшена и вернулся с диаграммами. Во втором издании он делится не только как это строить, но и как это всё потом поддерживать и не сойти с ума.
Что внутри:
🔧 Как заставить сервисы разговаривать друг с другом, не вызывая слёз у девопсов
🔍 Как тестировать микросервисы, не нарушая каноны
🚢 Как деплоить всё это счастье независимо и желательно без жертв
🛡️ И, конечно, как не дать хакеру превратить ваш gRPC в трагедию
Please open Telegram to view this post
VIEW IN TELEGRAM
«Как мы снизили время отклика в 15 раз на новом портале ВДНХ через Laravel + Nuxt и масштабируемую архитектуру»
В конце мая 2025 года ВДНХ представил обновлённый сайт, объединивший все проекты выставки на одной платформе. 🎨 Новый дизайн, интерактивная 3D-карта и возможность купить билеты — всё это стало возможным благодаря масштабной модернизации, которая включала в себя новые технологии и архитектурные решения.
💡 Основные моменты:
🔹 Старый сайт: 14 отдельных сайтов с различными дизайнами и техническими решениями, что создавало путаницу для пользователей и трудности для контент-менеджеров.
🔹 Новая архитектура: Система, построенная на Laravel (бэкенд) и Nuxt.js (фронтенд), решала задачи масштабируемости и высокой производительности. Преимущества — гибридный рендеринг, быстрый отклик страниц и улучшенная SEO-оптимизация.
🔹 Производительность: Время отклика сократилось почти в 15 раз — с 900 мс до 62 мс, что значительно улучшило пользовательский опыт, особенно во время пиковых нагрузок. 🌐
🔹 Микросервисы и кэширование: Модульная архитектура с поддержкой Redis, Memcached и Nginx обеспечила высокую нагрузочную способность и быстрый доступ к данным.
🔹 Интерфейс и поддержка контента: Удобная админ-панель на Laravel Orchid позволяет легко обновлять контент и настраивать страницы. Многоязычная поддержка и адаптивное меню делают сайт доступным для широкой аудитории.
⚙️ Под капотом:
Гибридный рендеринг (SSR + клиентская подгрузка)
Многоуровневое кэширование для динамических и статичных данных
Прогрессивные веб-приложения с функцией офлайн-режима
📊 Результаты: по тестам, время загрузки страницы улучшилось на 40%, а сайт теперь способен выдерживать многократный рост трафика без потери качества.
🔗 Хабр
Библиотека пхпшника
В конце мая 2025 года ВДНХ представил обновлённый сайт, объединивший все проекты выставки на одной платформе. 🎨 Новый дизайн, интерактивная 3D-карта и возможность купить билеты — всё это стало возможным благодаря масштабной модернизации, которая включала в себя новые технологии и архитектурные решения.
💡 Основные моменты:
🔹 Старый сайт: 14 отдельных сайтов с различными дизайнами и техническими решениями, что создавало путаницу для пользователей и трудности для контент-менеджеров.
🔹 Новая архитектура: Система, построенная на Laravel (бэкенд) и Nuxt.js (фронтенд), решала задачи масштабируемости и высокой производительности. Преимущества — гибридный рендеринг, быстрый отклик страниц и улучшенная SEO-оптимизация.
🔹 Производительность: Время отклика сократилось почти в 15 раз — с 900 мс до 62 мс, что значительно улучшило пользовательский опыт, особенно во время пиковых нагрузок. 🌐
🔹 Микросервисы и кэширование: Модульная архитектура с поддержкой Redis, Memcached и Nginx обеспечила высокую нагрузочную способность и быстрый доступ к данным.
🔹 Интерфейс и поддержка контента: Удобная админ-панель на Laravel Orchid позволяет легко обновлять контент и настраивать страницы. Многоязычная поддержка и адаптивное меню делают сайт доступным для широкой аудитории.
⚙️ Под капотом:
Гибридный рендеринг (SSR + клиентская подгрузка)
Многоуровневое кэширование для динамических и статичных данных
Прогрессивные веб-приложения с функцией офлайн-режима
📊 Результаты: по тестам, время загрузки страницы улучшилось на 40%, а сайт теперь способен выдерживать многократный рост трафика без потери качества.
🔗 Хабр
Библиотека пхпшника
🥱3
🚀 How to: Использовать pluck() с замыканиями в Laravel для упрощения кода
Если вы когда-либо использовали
Пример:
Этот код заменяет громоздкое использование
Реальные примеры:
Пользователи: Формируем полные имена для выпадающего списка.
Продукты: Добавляем валюту к ценам.
Категории: Создаём слаги для категорий.
Теперь можно использовать простые преобразования в
👉 Medium
Если вы когда-либо использовали
pluck()
в Laravel и нуждались в преобразовании значений или ключей, то знаете, как громоздким может быть использование mapWithKeys()
. Теперь, с поддержкой замыканий в pluck()
, можно сделать код чище и проще.Пример:
$countries = Country::get()
->pluck(fn (Country $country) => «{$country->flag} {$country->name}», 'id');
Этот код заменяет громоздкое использование
mapWithKeys()
для простых преобразований.Реальные примеры:
Пользователи: Формируем полные имена для выпадающего списка.
Продукты: Добавляем валюту к ценам.
Категории: Создаём слаги для категорий.
Теперь можно использовать простые преобразования в
pluck()
без лишнего кода. Отлично подходит для Blade-шаблонов!👉 Medium
👍3❤1
🤓 Git Gud — игра для изучения Git
Это игра с командной строкой. В ней уровни разделены от простого к экспертному.
🔗 Ссылка
Это игра с командной строкой. В ней уровни разделены от простого к экспертному.
🔗 Ссылка
Переворачиваем календарь — а там скидки, которые уже закончились.
Но мы их вернули на последний день 🤔
До 00:00 третьего сентября (цены как до 1 сентября):
▪️ Математика для Data Science — 35.199 ₽ вместо 44.900 ₽
▪️ Алгоритмы и структуры данных — 31.669 ₽ вместо 39.900 ₽
▪️ Основы IT — 14.994 ₽ вместо 19.900 ₽
▪️ Архитектуры и шаблоны — 24.890 ₽ вместо 32.900 ₽
▪️ Python — 24.990 ₽ вместо 32.900 ₽
▪️ ML для Data Science — 34.000 ₽ вместо 44. 000 ₽
▪️ AI-агенты — 49.000 ₽ вместо 59.000 ₽
👉 Хватаем скидки из прошлого
P.S. Машину времени одолжили у дяди Миши
Но мы их вернули на последний день 🤔
До 00:00 третьего сентября (цены как до 1 сентября):
▪️ Математика для Data Science — 35.199 ₽ вместо 44.900 ₽
▪️ Алгоритмы и структуры данных — 31.669 ₽ вместо 39.900 ₽
▪️ Основы IT — 14.994 ₽ вместо 19.900 ₽
▪️ Архитектуры и шаблоны — 24.890 ₽ вместо 32.900 ₽
▪️ Python — 24.990 ₽ вместо 32.900 ₽
▪️ ML для Data Science — 34.000 ₽ вместо 44. 000 ₽
▪️ AI-агенты — 49.000 ₽ вместо 59.000 ₽
👉 Хватаем скидки из прошлого
P.S. Машину времени одолжили у дяди Миши
📂 Шпаргалка по вводу-выводу в PHP
Чтобы не гуглить каждый раз: как читать из STDIN, быстро проглатывать целый файл, дописывать в конец и копировать потоки — собрали базовые, но практичные примеры.
Чтение одной строки из STDIN:
Основано на CLI-константе STDIN.
Чтение всего STDIN:
Чтение файла целиком:
Построчное чтение файла:
Используем классический цикл с
Запись в файл (перезапись):
Запись в файл (добавление в конец):
Флаг
Reintech
Копирование файлов (быстро и потоково):
Работа с буфером (in-memory I/O):
Библиотека пхпшника
#буст
Чтобы не гуглить каждый раз: как читать из STDIN, быстро проглатывать целый файл, дописывать в конец и копировать потоки — собрали базовые, но практичные примеры.
Чтение одной строки из STDIN:
<?php
$line = trim(fgets(STDIN)); // читает строку до перевода строки
echo "Введено: $line\n";
Основано на CLI-константе STDIN.
Чтение всего STDIN:
<?php
$all = stream_get_contents(STDIN); // либо file_get_contents('php://stdin')
echo $all;
php://stdin
— стандартный поток ввода процесса PHP. Чтение файла целиком:
<?php
$data = file_get_contents('file.txt');
if ($data === false) {
fwrite(STDERR, "Не удалось прочитать файл\n");
exit(1);
}
echo $data;
file_get_contents()
— предпочтительный способ прочитать файл в строку. Построчное чтение файла:
<?php
$fh = fopen('file.txt', 'r');
if (!$fh) { die("Не удалось открыть файл\n"); }
while (($line = fgets($fh)) !== false) {
echo $line; // обработка строки
}
fclose($fh);
Используем классический цикл с
fgets()
. Запись в файл (перезапись):
<?php
$bytes = file_put_contents('out.txt', "Привет, PHP!\n", LOCK_EX);
if ($bytes === false) {
die("Ошибка записи\n");
}
file_put_contents()
перезапишет файл (или создаст, если нет). Можно добавить LOCK_EX
для блокировки. Запись в файл (добавление в конец):
<?php
$ok = file_put_contents('out.txt', "Новая строка\n", FILE_APPEND | LOCK_EX);
if ($ok === false) { die("Ошибка записи\n"); }
Флаг
FILE_APPEND
дописывает, а не перезаписывает. Reintech
Копирование файлов (быстро и потоково):
<?php
$src = fopen('src.txt', 'r');
$dst = fopen('dst.txt', 'w');
if (!$src || !$dst) { die("Ошибка открытия файлов\n"); }
$copied = stream_copy_to_stream($src, $dst); // копирует весь остаток
fclose($src);
fclose($dst);
echo "Скопировано байт: $copied\n";
stream_copy_to_stream()
копирует данные из одного потока в другой (удобно и для сетевых/памятных потоков). Работа с буфером (in-memory I/O):
<?php
$buf = fopen('php://temp', 'r+'); // авто-переключение в файл при больших объёмах
fwrite($buf, "Hello, ");
fwrite($buf, "World!");
rewind($buf);
echo stream_get_contents($buf); // -> Hello, World!
fclose($buf);
php://temp/php://memory
— удобные «псевдо-файлы» для буферизации в памяти.Библиотека пхпшника
#буст
❤5🥱1
Наш подписчик спрашивает:
Я только начинаю работать с обработкой исключений. В учебниках часто приводят примеры с try-catch, но в реальных проектах я не встречал их так часто. Насколько часто в реальных проектах используется обработка исключений? И в каких случаях она действительно необходима?
🔹 Как вы используете обработку исключений в своих проектах?
— В каких ситуациях вы предпочитаете использовать try-catch?
— Какие ошибки чаще всего приходится обрабатывать?
— Какие подходы к обработке исключений сработали для вас лучше всего?
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😎 Сколько баллов набрали вы?
Голосуйте, какой у вас уровень разработчика:
😁 — 5-12 баллов (стажер)
👍 — 13-25 баллов (джуниор)
⚡️ — 26-40 баллов (джуниор+)
👏 — 41-60 баллов (миддл)
🔥 — 61-80 баллов (миддл+)
🎉 — 81-100 баллов (сеньор)
🤩 — 100+ баллов (тимлид)
Но вот в чем прикол — опытный разработчик набирает баллы не случайными косяками, а осознанными решениями.
👉 Научим, как быстро прокачаться от стажера до сеньора
Голосуйте, какой у вас уровень разработчика:
😁 — 5-12 баллов (стажер)
👍 — 13-25 баллов (джуниор)
⚡️ — 26-40 баллов (джуниор+)
👏 — 41-60 баллов (миддл)
🔥 — 61-80 баллов (миддл+)
🎉 — 81-100 баллов (сеньор)
🤩 — 100+ баллов (тимлид)
Но вот в чем прикол — опытный разработчик набирает баллы не случайными косяками, а осознанными решениями.
👉 Научим, как быстро прокачаться от стажера до сеньора
🤩2😁1