Веб-версияОткрыть в Telegram
ЗЗаметки разработчика

Заметки разработчика

@dev_notes_ru · канал · Технологии · в индексе с 2026-05-29
457подписчиков−1 за неделю
1 568постов в индексе
З
Заметки разработчика
Фотография
нажмите — покажем
Firefox 148: обновления для разработчиков и улучшения безопасности 24 февраля 2026 года состоялся релиз стабильной версии Firefox 148. В этом выпуске представлен ряд изменений, направленных на повышение производительности, расширение поддержки веб-стандартов и усиление безопасности. Ниже приведён обзор ключевых нововведений. 🚀 Улучшения для веб-разработчиков HTML Синхронная загрузка about:blank. Изменён механизм загрузки первоначального пустого документа. Теперь при навигации на about:blank документ загружается синхронно, что устраняет избыточную асинхронную замену и оптимизирует событие load. Изменение направлено на ускорение начальной отрисовки страниц. CSS Якорное позиционирование. Реализована поддержка свойства position-try-order, позволяющего задавать порядок перебора запасных позиций для элементов с якорным позиционированием. Свойство position-area теперь гарантирует корректное удержание привязанного элемента в пределах видимой области. Обработка переполнения. Свойства overflow, overflow-x и overflow-y стали применимы к заменяемым элементам (например, изображениям) аналогично другим элементам, обеспечивая предсказуемое поведение при переполнении контейнера. Функция shape(). Стандартизирована и включена по умолчанию поддержка функции shape() для создания сложных фигур в свойствах clip-path и offset-path. В отличие от path(), функция использует синтаксис CSS, что позволяет применять единицы измерения и математические функции для большей гибкости. JavaScript Комбинирование итераторов. Добавлены статические методы Iterator.zip() и Iterator.zipKeyed(), предназначенные для объединения данных из нескольких итераторов в позиционно согласованные группы. Модернизация устаревших возможностей RegExp. В рамках реализации предложения TC39 Legacy RegExp Features проведена нормализация статических свойств RegExp ($1-$9, input и др.). Теперь они являются настраиваемыми и неперечисляемыми, что позволяет, например, удалять их с объекта RegExp. API Защита от XSS-атак
1 · 217 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Чистое API для чтения PHP-атрибутов Сколько строк кода вы пишете, чтобы просто прочитать один атрибут у класса? Обычно это 3-5 строк с ReflectionClass, проверкой count($attributes) > 0 и вызовом newInstance(). А если нужно найти все атрибуты Validate в свойствах, методах и параметрах — код разрастается до неприличных размеров. Spatie выпустили элегантное решение spatie/php-attribute-reader, которое превращает это безобразие в одну строку. Зацените: $route = Attributes::get(MyController::class, Route::class); Что ещё умеет пакет: 🔹Искать атрибуты по всей иерархии классов (с поддержкой IS_INSTANCEOF). 🔹Работать с повторяющимися атрибутами (например, #[Middleware]). 🔹Возвращать удобный объект с контекстом: к какому свойству или методу привязан атрибут. В статье рассматриваем, как искать атрибуты по всему классу разом и работать с иерархиями. 🖥 Читать статью 📱 @dev_notes_ru #PHP8 #PHP
3 · 265 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Экосистема JavaScript 📱 @dev_notes_ru #Joke
1 · 251 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Вайб-кодинг vs Вайб-дебагинг 📱 @dev_notes_ru #Joke
1 · 225 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Trusted Publishing в npm: пошаговое руководство по настройке В связи с участившимися атаками на цепочки поставок и отзывом долгоживущих npm-токенов, разработчикам необходимо перейти на механизм доверенной публикации (trusted publishing). При обновлении рабочего процесса выяснилось, что ряд важных деталей в официальной документации npm либо опущены, либо изложены недостаточно явно. В статье собраны практические шаги для успешной настройки: ✅ Регистрация доверенного издателя через интерфейс npm (и где его искать). ✅ Корректная конфигурация package.json и прав доступа в GitHub Actions. ✅ Типичные ошибки при публикации и способы их устранения (включая ошибку 403). Материал будет полезен всем, кто поддерживает публичные npm-пакеты и использует автоматическую публикацию через GitHub Actions. 🖥 Читать статью 📱 @dev_notes_ru #NodeJS #NPM
4 · 235 ·
З
Заметки разработчика
Фотография
нажмите — покажем
URL Pattern API: Руководство по нативной маршрутизации в JavaScript Обработка URL — одна из типовых задач как на клиенте, так и на сервере. Традиционный подход с ручным разбором строк быстро становится громоздким при появлении опциональных параметров или вложенных путей. С сентября 2025 года у JavaScript-разработчиков появился встроенный инструмент для этой задачи — URL Pattern API. Он предоставляет единый синтаксис для валидации URL и извлечения параметров, который работает во всех современных браузерах и в Node.js/Deno/Bun. В статье подробно разбираются: ✅ Синтаксис шаблонов: именованные группы, модификаторы, регулярные выражения. ✅ API: методы test() для проверки соответствия и exec() для извлечения данных. ✅ Практика: примеры использования в Service Worker, SPA и серверном приложении. Также в материале затронуты вопросы производительности и ограничения использования API для высоконагруженных серверных проектов. 🖥 Читать статью 📱 @dev_notes_ru #JavaScript #WebAPI
5 · 257 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Атрибуты и свойства HTML: в чём разница Распространённая ситуация: разработчик пытается прочитать значение поля ввода через getAttribute('value'), но получает не актуальные данные, введённые пользователем, а первоначальное значение из HTML-разметки. Это не ошибка JavaScript, а следствие фундаментального различия между атрибутами и свойствами DOM. Атрибуты — это исходные параметры, заданные в HTML (чертёж элемента). Свойства — это текущее состояние DOM-объекта в памяти браузера (реальность). И они могут расходиться. В новой статье детально разбирается: ✅ Почему input.value и getAttribute('value') ведут себя по-разному. ✅ Как работает defaultValue и для чего он нужен. ✅ Особенности логических атрибутов (checked, disabled). ✅ Что важно знать о свойствах и атрибутах разработчикам на React. Материал будет полезен как начинающим, так и опытным разработчикам, желающим систематизировать знания о DOM. 🖥 Читать статью 📱 @dev_notes_ru #HTML #JavaScript #DOM #Frontend
2 · 228 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Зачем нужен figcaption, если есть alt При верстке изображений у разработчиков часто возникает вопрос: чем отличается атрибут alt от элемента <figcaption> и можно ли их использовать взаимозаменяемо? На первый взгляд оба элемента отвечают за описание, но их функции принципиально различаются. О чем статья: ✅ alt — это замена изображения для тех, кто не может его увидеть (пользователи скринридеров, отключенные изображения). ✅ <figcaption> — это видимая подпись, поясняющая роль изображения в тексте для всех читателей. ✅ Простой тест, который поможет определить, нужна ли изображению подпись или достаточно грамотно заполненного alt. Материал будет полезен всем, кто работает с контентом и стремится сделать верстку семантически правильной и доступной. 🖥 Читать статью 📱 @dev_notes_ru #A11y #HTML #Frontend
223 ·
Заметки разработчика
Фотография
нажмите — покажем
Понижаем приоритет группы CSS-правил с помощью @layer Управление приоритетами CSS-правил — одна из ключевых задач при поддержке проекта любого масштаба. Традиционные методы (контроль порядка подключения, повышение специфичности) не всегда эффективны, особенно при работе со сторонними библиотеками или унаследованным кодом. Альтернативный подход — использование каскадных слоёв (@layer). Помещение "базовых" стилей (например, reset.css) в отдельный слой гарантирует, что они будут уступать основным правилам проекта, написанным вне слоя. В статье рассматриваются: ✅ Три типовых сценария для применения этой техники. ✅ Особенности интеграции слоёв в существующую архитектуру. ✅ Специфика работы !important внутри каскадного слоя. Будет полезно всем, кто стремится выстроить чистую и предсказуемую CSS-архитектуру. 🖥 Читать статью 📱 @dev_notes_ru #CSS #Frontend
2 · 218 ·
З
Фотография
нажмите — покажем
📰 Ежемесячный дайджест Baseline: январь 2026 Привет! Встречайте первый в этом году выпуск Baseline Digest. Мы собрали для вас все важные новинки веб-платформы, которые в январе достигли новых этапов в проекте Baseline. Поехали! 🚀 ✅ Новое в категории Newly Available Эти функции теперь стабильно работают во всех основных браузерах. 1. Псевдокласс :active-view-transition Позволяет стилизовать корневой элемент документа во время перехода между состояниями страницы (View Transition). Это дает тонкий контроль над анимацией смены контента. 2. JavaScript-модули в Service Workers Теперь и в Service Worker можно использовать стандартные import/export! Просто добавьте { type: 'module' } при регистрации. Это упрощает организацию кода и управление зависимостями. 3. Navigation API Современная замена устаревшему History API, созданная специально для Single Page Applications (SPA). Дает единый способ управления навигацией, включая кнопки «назад/вперед», с меньшим количеством шаблонного кода. 4. Новые CSS-единицы (относительно root): rcap: Высота заглавных букв корневого элемента. Идеально для точной типографики. rch: Ширина символа 0 в шрифте корневого элемента. rex: Высота строчных букв (ex) корневого элемента. Полезно для вертикального выравнивания. ric: Ширина/высота иероглифа (CJK) корневого элемента. Незаменимо для многоязычных интерфейсов. 🌐 Новое в категории (Widely Available Эти функции уже давно с нами, а теперь окончательно подтвердили свою стабильность и готовы к использованию в любых проектах. 1. Двухзначное свойство display Вместо inline-flex можно писать display: inline flex. Это разделяет «внешний» (как элемент взаимодействует с потоком) и «внутренний» (как ведут себя дочерние элементы) типы отображения. Более логично и гибко. 2. Свойство animation-composition Определяет, как накладываются друг на друга несколько анимаций, влияющих на одно и то же свойство. Доступны режимы: replace (заменить), add (добавить) и accumulate (накопить). 3. Иммутабельные метод
1 · 254 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Вайб-кодер пытается объяснить функциональность и архитектуру своего приложения 📱 @dev_notes_ru #Joke
2 · 256 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Soft Delete в Laravel: Как настроить, использовать и восстанавливать данные Soft delete часто воспринимается как простая тема, однако на практике возникает множество вопросов: как правильно тестировать эту функциональность, учитывать требования GDPR, настраивать привязку к маршрутам и автоматически очищать устаревшие записи. В статье последовательно разобраны следующие темы: ✅ Настройка SoftDeletes и создание миграции ✅ Работа с методами withTrashed(), onlyTrashed() и restore() ✅ Применение Prunable для автоматической очистки базы данных ✅ Тестирование soft delete с использованием встроенных assertion-методов Материал будет полезен как для внедрения мягкого удаления в новых проектах, так и для рефакторинга существующего кода. 🖥 Читать статью 📱 @dev_notes_ru #Laravel #Eloquent #PHP #SoftDelete
6 · 400 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Как сделать Laravel-контроллер тестируемым и перестать бояться рефакторинга Вы уверены, что ваши тесты действительно что-то тестируют? 🤔 Представьте: вы случайно (ну, бывает) закомментировали ключевой вызов сервиса в контроллере подписки. Прогоняете тесты — все зеленое! Отличная работа, можно деплоить. А подписчики в это время не подписываются. Знакомое чувство ложной безопасности? Статья как раз об этой проблеме: когда тесты проверяют ответ, но игнорируют поведение. Разобрал на живом примере, как один new в контроллере делает ваш код непроверяемым. Что внутри: 🔹 Почему создание сервисов через new — путь к хрупким тестам. 🔹 Как внедрение зависимости (Dependency Injection) спасает ситуацию. 🔹 Прием с resolve() для "легаси-кода", когда менять сигнатуру метода нельзя. 🔹 Сравнение $this->mock() и чистого Mockery — чувствуем разницу. Если хотите писать тесты, которые находят проблемы, а не просто «проходят», — заглядывайте. 🖥 Читать статью 📱 @dev_notes_ru #Laravel #TDD #PHP
3 · 285 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Интернет без adblocker 📱 @dev_notes_ru #Joke
1 · 284 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Приёмы работы с PostgreSQL, меняющие архитектуру решений Когда речь заходит о проверке целостности данных, например, запрете пересекающихся интервалов бронирования, возникает вопрос: где разместить эту логику? В коде приложения или на стороне базы данных? PostgreSQL предоставляет инструменты, которые позволяют делегировать такие проверки уровню СУБД, снижая нагрузку на прикладной код и минимизируя риски состояний гонки. В статье рассматриваются: ✅Ограничение EXCLUDE — декларативный способ запретить пересечение интервалов без дополнительных проверок в коде. ✅Генерируемые колонки (GENERATED) — вычисление производных значений непосредственно в базе. ✅Рекурсивные CTE — обход иерархий и графов в несколько строк вместо императивных конструкций. ✅JSONB и композитные типы — сравнение подходов к моделированию гибких структур данных. Материал будет полезен разработчикам, которые стремятся писать более лаконичный и надёжный код, опираясь на возможности реляционной модели. 🖥 Читать статью 📱 @dev_notes_ru #PostgreSQL #SQL #Database
4 · 330 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Быстрый совет: не используйте <abbr> Элемент <abbr> предназначен для обозначения аббревиатуры. Идея в том, что вы вставляете сокращение, а затем с помощью атрибута title показываете его полную расшифровку. <p>Без <abbr title="Cascading Style Sheets">CSS</abbr> любая HTML-страница будет выглядеть как простой текстовый документ из 90-х.</p> Проблема в том, что <abbr> — не интерактивный элемент. На него нельзя переключиться по табуляции. Он будет прочитан точно так же, как любое другое слово в предложении. Если навести мышь на элемент, вы увидите подсказку title. Но если вы используете клавиатуру — нет никакого способа её отобразить. Далее, скринридеры. Большинство скринридеров не озвучивают атрибут title. Гораздо лучше вернуться к старому газетному стилю: в первый раз напишите полную фразу, а затем в скобках — аббревиатуру. После этого можете использовать только сокращение. #a11y #HTML
1 · 231 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Практическое руководство по элементу <img>: от основ до LCP Смещение контента при загрузке страницы, избыточный трафик на мобильных устройствах, потерянные баллы Core Web Vitals — всё это часто следствие недооценки возможностей элемента <img>. В новом руководстве рассматриваются ключевые аспекты работы с изображениями в HTML: ✅ указание width и height для предотвращения смещения макета (CLS); ✅ адаптивность через srcset и sizes — как браузер выбирает нужный размер; ✅ поддержка современных форматов (AVIF, WebP) с помощью <picture>; ✅ управление приоритетами загрузки: loading, decoding, fetchpriority; ✅ стратегия для LCP с предварительной загрузкой адаптивных изображений. В финале — сравнение ручного подхода и использования Image CDN с акцентом на практическую целесообразность. 🖥 Читать статью 📱 @dev_notes_ru #HTML #LCP #CoreWebVitals
4 · 238 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Taskfile: Когда пора отказаться от Makefile (а когда — нет) Makefile — инструмент с почти полувековой историей, который продолжает оставаться стандартом во многих проектах. Однако его синтаксис, ориентированный на shell-сценарии, не всегда удобен при решении современных задач: кросс-платформенная работа, интерактивные запросы, модульная организация кода. Taskfile предлагает альтернативную модель: конфигурация на YAML, где многие сложные сценарии реализованы как встроенные механизмы, а не требуют самодельных конструкций. В статье рассматриваются ключевые различия между двумя подходами: ✅ документация и навигация по задачам; ✅ работа на разных операционных системах; ✅ инкрементальные сборки и контроль изменений; ✅ интерактивные сценарии и валидация; ✅ модульность и переиспользование конфигураций. Также приводится три стратегии внедрения Taskfile в существующие проекты — от нового проекта до постепенного рефакторинга проблемных мест. 🖥 Читать статью 📱 @dev_notes_ru #Taskfile #Makefile #DevOps #автоматизация #инструменты
3 · 317 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Проксирование fetch() в серверном JavaScript Стандарт Fetch не специфицирует проксирование HTTP-запросов, поэтому каждый серверный JavaScript-рантайм реализует эту возможность по-своему. В результате разработчики сталкиваются с несовместимостью решений при смене среды исполнения. В статье рассматриваются следующие подходы: ✅ Bun и Deno — встроенная поддержка прокси через опции fetch() ✅ Node.js — два пути: глобальные переменные окружения или пакет undici для per-request настройки ⚠️ Cloudflare Workers — отсутствие нативной поддержки и три архитектурных альтернативы (Docker-контейнер, TCP-сокеты, вынос логики в отдельный микросервис) Также приведён чек-лист для проверки, действительно ли трафик идёт через прокси, и разбор типовых ошибок. 🖥 Читать статью 📱 @dev_notes_ru #JavaScript #Nodejs
310 ·
З
Заметки разработчика
Фотография
нажмите — покажем
JSON в браузере: import или fetch — руководство по выбору Спойлер: import из JSON — это не замена fetch() Кажется, что новый синтаксис import data from './file.json' with { type: 'json' } проще и современнее. Но у него есть три жёстких ограничения: 🔹 Пожизненное кеширование — данные останутся в памяти на всю сессию 🔹 Нет отмены запроса — AbortController не подключается 🔹 Минимум информации об ошибках — не поймёшь, 404 это или CORS В статье сравнили оба подхода по безопасности, кешу, стримингу и контролю. В конце — готовый чек-лист: когда брать import, а когда только fetch с проверкой Content-Type. 🖥 Читать статью 📱 @dev_notes_ru #JavaScript #JSON #import #fetch
299 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Валидация массивов в Laravel без N+1: Form Request как построитель контекста Применение правила exists к массивам в Form Request порождает проблему N+1 запросов: каждый идентификатор проверяется отдельным SQL-запросом. При росте количества элементов это создает неоправданную нагрузку на базу данных и увеличивает время ответа. В статье рассматривается метод решения этой проблемы с помощью prepareForValidation(). Подход позволяет заменить серию отдельных запросов одним whereIn, сохранив при этом возможность точного указания ошибочного поля в ответе валидатора. Основные темы: — Анализ затрат стандартного правила exists для массивов. — Ограничения метода after() в контексте сохранения структуры ошибок. — Реализация предзагрузки допустимых значений и легитимность расширения ответственности Form Request. 🖥 Читать статью 📱 @dev_notes_ru #Laravel #PHP #Backend #ВалидацияДанных
2 · 292 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Статические переменные в PHP: использование static внутри функций По данным исследования Exakat, конструкция static $var в теле функции встречается в каждой третьей PHP-кодовой базе. Несмотря на удобство реализации ленивой инициализации и мемоизации, этот подход сопряжён с рядом архитектурных ограничений. В статье рассмотрены: ✅ Критерии допустимости использования в CLI-скриптах и средах с постоянными воркерами. ✅ Изменение поведения статических переменных при наследовании методов в PHP 8.1. ✅ Возможность динамической инициализации выражениями в PHP 8.3. Практическое применение метода и альтернативы. 🖥 Читать статью 📱 @dev_notes_ru #php #php8
3 · 353 ·
З
Заметки разработчика
Фотография
нажмите — покажем
Уникальный индекс при мягком удалении: решаем проблему дубликатов При использовании мягкого удаления стандартный уникальный индекс перестаёт выполнять свою функцию: запись помечена как удалённая, но её данные по-прежнему участвуют в проверке уникальности. Результат — пользователь не может восстановить аккаунт на прежний e-mail. В новом материале рассмотрены два способа решения этой архитектурной задачи: ✅ Частичные индексы в PostgreSQL — условие WHERE deleted_at IS NULL прямо в определении индекса. ✅ Генерируемые столбцы в MySQL — использование семантики NULL в составном уникальном ключе. Оба метода разобраны с готовыми миграциями для Laravel и интеграционными тестами. Также затронуты вопросы производительности, восстановления записей и соответствия GDPR. 🖥 Читать статью 📱 @dev_notes_ru #SoftDelete #Laravel #Eloquent #PostrgeSQL #MySQL
1 · 339 ·

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем