Обновлено руководство по диагностике и устранению ошибки 503 Service Temporarily Unavailable в Nginx. Материал был дополнен детальными конфигурациями, алгоритмами поиска причин и методами повышения отказоустойчивости инфраструктуры.
В статье представлен структурированный подход: от экспресс-чек-листа для оперативного реагирования до настройки балансировки нагрузки, пассивных health checks и планирования масштабирования. Рассмотрены типичные сценарии возникновения ошибки, анализ логов и корректировка ключевых параметров, таких как
proxy_read_timeout и max_fails.Руководство призвано помочь системным администраторам и разработчикам не только устранять инциденты, но и выстраивать профилактические механизмы для стабильной работы сервисов.
#Nginx #DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
Vinyl и vinyl-fs: сквозные потоки в GulpПока инструменты вроде Vite решают задачи сборки фронтенда «из коробки», Gulp нашёл свою нишу как гибкая платформа для автоматизации на основе потоков файлов. В новой статье мы исследуем его ядро — объект
Vinyl и модуль vinyl-fs.Вы узнаете:
▸ Как виртуальный файловый формат
Vinyl абстрагирует работу с файлами.▸ Почему функция
gulp.src() — это интерфейс к vinyl-fs.▸ На каких современных паттернах строится управление потоками вместо устаревшего
passthrough.▸ Как применять эти знания на практике: сборка JS-проектов, генерация контента, оптимизация ресурсов.
Статья поможет понять архитектурные принципы, которые превращают Gulp в конструктор для сложной автоматизации, где важна не только сборка, но и многоэтапная обработка гетерогенных данных.
#Gulp #NodeJS
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥2
useEffect к data-first архитектуреИспользуете
useEffect для задач, которые можно решить иначе? React продолжает развиваться, предлагая более эффективные подходы к управлению состоянием и побочными эффектами.В новой статье рассматривается эволюция работы с хуками в сторону data-first архитектуры. Ключевые темы:
useEffect в пользу декларативных методов работы с данными.useSyncExternalStore для интеграции с внешними состояниями и API браузера.useDeferredValue и механизма переходов.Современные практики React позволяют создавать более предсказуемые, производительные и сопровождаемые приложения.
#React #Hook #JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
Вышло очередное обновление фреймворка — версия 12.48.0. Как всегда, релиз сфокусирован на стабильности, исправлении багов и внесении небольших, но полезных улучшений в различные компоненты.
Illuminate\Queue\SerializesModels в отложенных заданиях.Cache::restoreLock() для драйвера MemoizedStore.Filesystem::sharedGet().Enum для правил валидации теперь реализует интерфейс Stringable.HandleCors добавлен метод skipWhen(), позволяющий гибко управлять применением CORS-правил.BatchFinished, упрощающее отслеживание завершения пакетной обработки заданий.alias().failed_jobs: Удалены лишние индексы из таблицы failed_jobs, что должно повысить производительность.Reflection API в пользу прямого создания.Illuminate\Support\Str и PendingRequest, добавлены соответствующие тесты.Полный список изменений можно найти в официальном релизе.
#Laravel #Laravel12
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Release v12.48.0 · laravel/framework
[12.x] Fix missing variable reassignment by @nunomaduro in #58376
[12.x] Improve PendingRequest types by @cosmastech in #58386
[12.x] Fix backward compatibility with third-party guards by @daniser ...
[12.x] Improve PendingRequest types by @cosmastech in #58386
[12.x] Fix backward compatibility with third-party guards by @daniser ...
🔥3❤2👍1
Вы тоже сталкивались с тем, что асинхронные запросы в цикле выполняются последовательно и медленно, хотя должны работать параллельно? 🤔
Частая причина — неочевидное поведение
await в forEach, map и for…of.В новой статье разбираем:
🔹 Почему циклы ведут себя не так, как мы ожидаем
🔹 4 рабочие стратегии — от Promise.all() до управляемого параллелизма
🔹 Готовые шаблоны кода, чтобы сразу применять
Выберите правильный подход и перестаньте бороться с асинхронностью.
#JavaScript #NodeJS #Async #Await
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
Команда jQuery выпустила первую за почти 10 лет мажорную версию — jQuery 4.0.0, приуроченную к 20-летию библиотеки. Это масштабное обновление, которое модернизирует код, удаляет устаревшие API и вносит ряд изменений ломающих совместимость.
📅 Сроки поддержки браузеров:
jQuery 4.0 перестаёт поддерживать IE10 и старше, Edge Legacy (не-Chromium), очень старые версии iOS, Firefox и Android Browser. Поддержка IE11 пока остаётся, но будет удалена в jQuery 5.0.
1️⃣ Удалены давно устаревшие методы (их следует заменить на нативные аналоги):
🔹
jQuery.isArray → Array.isArray()🔹
jQuery.parseJSON → JSON.parse()🔹
jQuery.trim → String.prototype.trim()🔹
jQuery.type, jQuery.now, jQuery.isNumeric и другие.🔹 Это сократило размер библиотеки более чем на 3 КБ в gzip.
2️⃣ Модернизация кодовой базы:
🔹 Исходный код переведён с AMD на ES-модули, что улучшает совместимость с современными сборщиками.
🔹 Добавлена поддержка Trusted Types для безопасной работы с HTML под строгими политиками CSP.
3️⃣ Изменения в поведении:
🔹Порядок событий фокуса (
focus, blur, focusin, focusout) теперь соответствует актуальной спецификации W3C, а не старому решению jQuery.🔹Автоматическое добавление "
px" к unitless-значениям в .css() сильно ограничено. Теперь px добавляется только к известному набору свойств.🔹Slim-сборка стала ещё меньше: из неё удалены модули
Deferred и Callbacks (размер ~19.5 КБ в gzip), так как в поддерживаемых браузерах (кроме IE11) можно использовать нативные Promise.🛠 Как обновляться? Важные шаги:
1️⃣ Внимательно изучите официальное руководство по обновлению до версии 4.0.
2️⃣ Используйте плагин jQuery Migrate для выявления проблем в существующем коде.
3️⃣ Если нужна поддержка удалённых старых браузеров (IE10 и др.) — оставайтесь на ветке 3.x.
💾 Ссылки для скачивания:
Полная версия: https://code.jquery.com/jquery-4.0.0.js
Slim-версия: https://code.jquery.com/jquery-4.0.0.slim.js
Через npm:
npm install jquery@4.0.0Это историческое обновление очищает библиотеку от исторического багажа, делая её более современной и ориентированной на будущее. Для новых проектов стоит рассматривать нативные API браузеров, но для поддержки legacy-кода jQuery 4.0 — отличный путь вперёд.
#jQuery #JavaScript #Frontend #WebDev #jQuery4
Please open Telegram to view this post
VIEW IN TELEGRAM
Знаете ли вы, что классическая цепочка
items.filter().map().slice(0,10) обрабатывает тысячи элементов, хотя нужны лишь первые десять? Это как перелопатить тонну песка ради щепотки золота.В статье разбираем нативное решение — хелперы итераторов (Iterator Helpers). Они позволяют:
Это меняет подход к оптимизации в JavaScript. Разбираемся, как их внедрять и каких подводных камней избегать.
#JavaScript #IteratorHelpers
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
В Pull Request #58379 для ветки 12.x было добавлено полезное улучшение в HTTP-клиент Laravel. Теперь в объекте
💡 В чём суть
Раньше метод
Тихие ошибки:
Потеря данных: PHP может некорректно обрабатывать очень большие числа (например,
Как теперь можно решить
В метод
❗️ Сценарии использования
✅ Защита от потери больших чисел (часто встречается в платежных системах и соц. сетях):
✅ Строгий режим для отладки:
При малейшей ошибке в JSON будет выброшено исключение, а не возвращён NULL.
✅ Комбинированный режим для продакшена:
И данные целы, и ошибки не пройдут незамеченными.
⚡️ Что изменилось для разработчика
Раньше для такого контроля нужно было вручную парсить
Небольшое изменение, которое устраняет целый класс проблем при интеграции с реальными, неидеальными API.
📱 @dev_notes_ru
#Laravel #Laravel12
Response можно устанавливать флаги для декодирования JSON.Раньше метод
$response->json() просто парсил JSON с настройками PHP по умолчанию. Это могло приводить к скрытым проблемам:Тихие ошибки:
json_decode() по умолчанию молча возвращает NULL при ошибке в структуре JSON, что усложняет отладку.Потеря данных: PHP может некорректно обрабатывать очень большие числа (например,
transaction_id или Snowflake ID из Discord/X), что ведёт к повреждению данных.Как теперь можно решить
В метод
json() добавлен параметр flags. Это позволяет передавать стандартные константы PHP для управления парсингом.$data = $response->json(flags: JSON_BIGINT_AS_STRING);
Большие целые числа будут возвращены как строки, что гарантирует их сохранность.
$data = $response->json(flags: JSON_THROW_ON_ERROR);
При малейшей ошибке в JSON будет выброшено исключение, а не возвращён NULL.
$data = $response->json(
flags: JSON_BIGINT_AS_STRING | JSON_THROW_ON_ERROR
);
И данные целы, и ошибки не пройдут незамеченными.
Раньше для такого контроля нужно было вручную парсить
$response->body(). Теперь всё решается одним параметром встроенного метода.Небольшое изменение, которое устраняет целый класс проблем при интеграции с реальными, неидеальными API.
#Laravel #Laravel12
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
[12.x] Allow setting flags for decoding json in the Http Client's Response by cosmastech · Pull Request #58379 · laravel/framework
I really want to be able to specify that when I'm parsing JSON from a response, it should throw when receiving invalid JSON.
How to use
Call-site
$response = Http::get('https://some...
How to use
Call-site
$response = Http::get('https://some...
🔥2
Symbol.iteratorЧто, если ваш объект мог бы быть и структурой с понятными свойствами, и коллекцией для мгновенного разворачивания через
...? Оказывается, в JavaScript это встроенная возможность через Symbol.iterator.В статье разбираем на конкретной задаче:
🔹 Как работает spread «под капотом» и почему
Map разворачивается парами.🔹 Решаем дилемму «объект или массив» — пишем утилиту, результат которой можно и читать как
fileInit.bytes, и подставить в new File(...fileInit).🔹 Плюсы, минусы и когда это реально нужно — чтобы не усложнять код без дела.
Инструмент мощный, но требует осмысленного применения.
#JavaScript #SymbolIterator #Symbol
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤔1
Устали выбирать между быстрой первой загрузкой и моментальными переходами по сайту? Словари сжатия в HTTP/3 решают эту проблему, сокращая объём передаваемых CSS до минимума.
В статье разбираем:
🔹 Как технология устраняет дублирование кода
🔹 Пошаговая настройка
🔹 Стратегия внедрения с fallback для всех браузеров
Это не теория — метод уже работает в Chromium и готов к использованию в production.
#DevOps #CSS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤔1
Работаете над фичей, но срочно нужен хотфикс? Не хотите терять контекст и грязные файлы?
🚀 Git Worktree создаёт изолированные рабочие директории для параллельной работы над разными ветками! Теперь можно:
✅ Вносить срочные исправления, не трогая основную ветку
✅ Работать над несколькими задачами одновременно
✅ Экспериментировать без риска для продакшена
✅ Тестировать PR и чужие ветки в чистом окружении
📖 В статье:
🔹 Как создать, переместить и удалить рабочее дерево
🔹 Архитектура и принципы работы
🔹 Когда использовать (а когда не стоит)
🔹 Сравнение с
git stash и clone🔹 Ответы на частые вопросы
#Git #Worktree
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Вышло очередное обновление фреймворка — версия 12.49.0. Как всегда, релиз нацелен на стабильность, исправление ошибок и добавление небольших, но полезных улучшений в различные компоненты системы.
🛠 Исправления ошибок и улучшения
simplePaginate() в связке с withQueryString().queue:prune-batches — теперь корректно удаляются устаревшие записи в таблице job_batches.mimetypes теперь корректно обрабатывает файлы без расширения.BelongsToMany отношениях.channel() в маршрутах.Queue::extend().Paginator: В Paginator добавлен метод appendsQueryString(), позволяющий тонко управлять параметрами строки запроса.Pipeline, Conditionable, ValidatedInput.JobProcessing, JobProcessed, JobFailed для улучшенного мониторинга очередей через Horizon.TestResponse добавлены методы assertSessionHasErrorsIn() и assertSessionDoesntHaveErrorsIn() для точной проверки ошибок по ключам.make:model появилась опция --pivot для быстрого создания моделей сводных таблиц.HttpClient, DatabaseManager, BladeCompiler.Полный список изменений можно найти в официальном релизе
#Laravel #Laravel12
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Release v12.49.0 · laravel/framework
[12.x] Clean up compiled views after parallel testing by @dxnter in #58440
[12.x] Support "where subquery between columns" by @gdebrauwer in #58441
[12.x] Use searchable prompt for db:tab...
[12.x] Support "where subquery between columns" by @gdebrauwer in #58441
[12.x] Use searchable prompt for db:tab...
❤2🔥1
А вы знали, что можно получить все преимущества TypeScript, оставаясь в рамках чистого JavaScript? Всё благодаря JSDoc — системе типизации, которая работает через комментарии. В обновлённой статье:
Этот подход идеален для легаси-проектов, скриптов и случаев, где важна скорость разработки без настройки сборки. Обновление делает материал ещё более прикладным.
#JavaScript #JSDoc #TypeScript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Используете JSDoc только для подсказок в редакторе? Тогда вы теряете главное: сквозную проверку типов от локальной разработки до продакшена.
В свежей статье рассматриваем профессиональную настройку системы типов через TypeScript Compiler:
🔹 Как за 5 минут включить проверку типов во всём проекте.
🔹 Автоматическая генерация
.d.ts файлов для ваших библиотек.🔹 Интеграция строгой проверки в CI/CD — код с ошибками не попадёт в main.
Это не хак, а легитимный подход для больших проектов. Если вы до сих пор просто ставите
// @ts-check и думаете, что это всё — вам сюда.#JavaScript #JSDoc #TypeScript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
location в Nginx: Полное руководство с примерамиЭффективная и безопасная конфигурация веб-сервера требует чёткого понимания принципов работы директивы location в Nginx. В новом материале представлено полное руководство, охватывающее ключевые аспекты:
root и aliasРуководство также актуально для пользователей Angie, сохраняя полную совместимость конфигураций.
#Nginx #Angie #location #DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
matchMedia()Знаешь, как в JavaScript проверить, соответствует ли текущий viewport мобильному виду?
Не нужно городить
window.innerWidth и слушать resize вручную.Используй
matchMedia — тот же самый медиа-запрос, что и в CSS:const mq = matchMedia('(max-width: 550px)');
// Текущее состояние
console.log(mq.matches); // true / false
// Реагируем на изменения
mq.addEventListener('change', e => {
console.log('Мобильный?', e.matches);
});#JavaScript #CSS #Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Вышла новая версия PHPStan 2.1.38
Этот релиз продолжает курс проекта на постоянное повышение производительности и приносит очередное значительное ускорение анализа.
🔥 Главная новость: еще быстрее!
Разработчикам удалось добиться еще 5–10% прироста скорости работы статического анализатора. Это улучшение — результат масштабной работы по оптимизации, которая ведется уже несколько релизов.
Основные изменения
Исправления ошибок:
✅ Исправлена обработка экранированного символа
✅ Устранена ошибка в определении типов (type inference) для замыканий (closures), связанная с сокращенными именами функций (Function Normalization and Shortening Rule, FNSR).
Улучшения:
✅ Убрано ограничение на версию PHP для правил, проверяющих атрибут
✅ Улучшен анализ для выражений с
✅ Улучшен вывод типов при сравнении результатов двух функций (
✅ Теперь
Оптимизация производительности (основная часть работы):
Большинство изменений в этом выпуске направлены на повышение скорости. Были оптимизированы:
✅ Наследование phpDoc-комментариев (теперь используется рефлексия).
✅ Работа с шаблонными типами (
✅ Логика в
✅ Кэширование результатов для предотвращения повторных вычислений.
Прочие правки:
✅ Исправление сигнатур функций.
✅ Внутренние улучшения кода и тесты.
Скачать обновление и увидеть все изменения можно как обычно на GitHub.
Обновляйтесь и наслаждайтесь еще более быстрым анализом кода! Если вы заметили какие-либо проблемы, сообщайте о них в трекере проекта.
📱 @dev_notes_ru
Этот релиз продолжает курс проекта на постоянное повышение производительности и приносит очередное значительное ускорение анализа.
🔥 Главная новость: еще быстрее!
Разработчикам удалось добиться еще 5–10% прироста скорости работы статического анализатора. Это улучшение — результат масштабной работы по оптимизации, которая ведется уже несколько релизов.
Основные изменения
Исправления ошибок:
# в регулярных выражениях в расширенном режиме.Улучшения:
#[\Override].New_ при использовании StaticMethodParameterClosureTypeExtension.FuncCall === FuncCall).array_merge() не теряет информацию о типах известных ключей (offset-types) массивов.Оптимизация производительности (основная часть работы):
Большинство изменений в этом выпуске направлены на повышение скорости. Были оптимизированы:
TemplateTypeHelper), постоянными массивами (ConstantArrayType) и пересечениями типов (IntersectionType).ImpossibleCheckTypeHelper, CombinationHelper и MutatingScope.Прочие правки:
Скачать обновление и увидеть все изменения можно как обычно на GitHub.
Обновляйтесь и наслаждайтесь еще более быстрым анализом кода! Если вы заметили какие-либо проблемы, сообщайте о них в трекере проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Release 2.1.38 · phpstan/phpstan
This version brings another 5-10 % faster performance! 🏎️
Improvements 🔧
Remove PHP version constraint from the #[\Override] attribute rules (#4436), thanks @johnbillion!
OverridingPropertyRule - ...
Improvements 🔧
Remove PHP version constraint from the #[\Override] attribute rules (#4436), thanks @johnbillion!
OverridingPropertyRule - ...
👍2