Статьи

FrontendCSS

Использование CSS анимации, основанной на прокрутке, для индикации прогресса прокрутки на основе секций

Индикатор прогресса прокрутки — довольно простая вещь, которую можно создать с помощью анимации, основанной на прокрутке в scroll()-стиле. Но мы создадим индикаторы для каждого раздела страницы, используя view()-стиль.
BackendSymfony

Сокращаем размер конфигов Symfony до минимума

Считаю, что в каждом приложении Symfony можно уместить сервисный конфиг в 5 строк. Я поделюсь двумя техниками, которые использую последние пару лет для достижения наилучшей архитектуры с наименьшим количеством строк.
BackendPHPComposer

Composer: Менее известные, но полезные команды

Composer — основной менеджер зависимостей для PHP, и если работаете с PHP, то уже знакомы с такими часто используемыми командами, как composer install и composer update. Composer также предоставляет несколько менее известных, но полезных при работе над приложениями в PHP, команд.
BackendLaravel

Руководство по валидации в Laravel

Валидация — важная часть любого веб-приложения. Она помогает предотвратить уязвимости в системе безопасности, повреждение данных и множество других проблем, которые могут возникнуть при работе с пользовательским вводом.
FrontendHTMLCSS

Бесконечная прокрутка логотипов на чистом HTML и CSS

Помните HTML-элемент marquee? Он устарел, поэтому вряд ли стоит его использовать, когда понадобится что-то вроде горизонтальной автопрокрутки. Вот тут-то и приходит на помощь CSS, потому что в нём есть все необходимые инструменты для реализации этой функции.
BackendPHP

Магические методы PHP

PHP разработчику, нужно знать множество особенностей языка, чтобы облегчить написание и сопровождение кода. Без явного рассказа о той или иной части языка сложно даже узнать о её существовании, поэтому сегодня поговорим о магических методах, которыми обладают классы, и о том, как их использовать при написании кода.
JavaScript

AbortController в JavaScript

В веб-разработке управление асинхронными задачами имеет решающее значение для создания отзывчивых и эффективных приложений. Асинхронные операции, такие как получение данных с сервера или выполнение трудоёмких вычислений, часто требуют возможности отменить или прервать их до завершения. Здесь на помощь приходит AbortController, о котором и пойдёт речь.
FrontendCSS

Atomic CSS: Масштабируемая архитектура в современной веб-разработке

Atomic CSS — новый подход к написанию CSS, позволяющий вместо работы с длинными именами классов и сложными селекторами использовать крошечные, одноцелевые, небольшие классы, о чём и пойдёт речь в статье.
FrontendCSS

Заблуждения о Специфичности CSS

Всякий раз, когда публикуется статья о Специфичности в CSS — и, как следствие, о самом Каскаде — я очень радуюсь, ведь это основная концепция языка, которую должен знать каждый. Чем больше статей об этом, тем лучше!
BackendLaravelEloquent

MongoDB в Laravel: Краткое руководство для начинающих

Laravel известен своим Eloquent ORM, обычно работающим с реляционными базами данных, такими как MySQL. Но что, если нужно выбрать NoSQL-решение, например MongoDB? В статье мы расскажем как начать работу с MongoDB в Laravel.
BackendLaravel

Совет по безопасности: Повышение привилегий через шаблоны домена

Невероятно часто встречаются жёстко закодированные домены, используемые для идентификации администраторов, однако это также делает простой задачей повышение привилегий до уровня администратора!
JavaScriptFrontend

Проблема с new URL(), и как URL.parse() её решает

Часто приходится анализировать множество URL-адресов. Частично для их проверки, а также для нормализации или извлечения определённых частей из URL. API URL в браузерах позволяет это делать, но его эргономика не идеальна.
BackendPHP

Зачем использовать пользовательские исключения в PHP

При создании PHP-приложений исключения играют важную роль в обработке ошибок и сбоев, возникающих во время жизненного цикла приложения. Рассмотрим, как использовать пользовательские исключения для улучшения приложений.
BackendLaravel

Как исключить middleware в определённых роутах Laravel

Middleware в Laravel играет важную роль в перехвате HTTP-запросов, поступающих в приложение, для применения пользовательской логики, прежде чем будет выполнен какой-либо фактический код приложения. Однако существуют сценарии, в которых вам может потребоваться исключить определённые маршруты или методы из обработки middleware.
FrontendJavaScript

Методы жизненного цикла веб-компонента

Вчера мы изучили различные способы инстанцирования веб-компонента. В статье был упомянут метод жизненного цикла connectedCallback(). Сегодня поговорим об остальных методах жизненного цикла веб-компонентов.
FrontendCSS

Что может сломать aspect-ratio в CSS

В CSS есть свойство aspect-ratio, полностью поддерживаемое примерно с 2021 года. Это свойство может быть очень полезным и помочь там, где нельзя использовать фиксированный размер. Но всё может пойти не так, и в результате получится элемент, не соблюдающий aspect-ratio.
BackendLaravel

Laravel Фасады — Пишем тестируемый код

Laravel в значительной степени опирается на фасады. Кто-то может подумать, что это антипаттерны. Но я считаю, что при правильном использовании они могут привести к чистому и тестируемому коду. Давайте посмотрим, как это сделать.
FrontendCSS

Масштабируемый CSS с архитектурой ITCSS

В веб-разработке управление крупными CSS проектами сопряжено со значительными трудностями. Важность масштабируемого и поддерживаемого CSS невозможно переоценить для долгосрочного успеха проекта. В статье рассматривается архитектура Inverted Triangle CSS как решение этих проблем, а также даётся глубокое понимание, причины её использования, практические шаги по реализации и сравнение с другими методологиями.
BackendPHP

Как решить проблему PHP Curl с центром сертификации HTTPS в Windows

В Windows запросы HTTPS, выполняемые с помощью расширения Curl, могут не выполняться, поскольку у Curl нет списка корневых сертификатов для проверки сертификатов сервера. Рассмотрим безопасные и эффективные решения, а также обратим внимание на плохие советы, которые могут сделать PHP-приложения небезопасными.
BackendPHP

PHP 8.4: OpenSSL: минимальная требуемая версия увеличена до 1.1.1

Расширение PHP OpenSSL предоставляет функции шифрования, аутентификации, обмена ключами, хэширования паролей и общего хэширования в PHP. Расширение OpenSSL использует библиотеку OpenSSL для обеспечения этой функциональности.
GitTools

Husky: Форматирование, линтинг и тестирование при коммите или пуше

Когда команда работает над проектом, поддержание кодовой базы в соответствии со стандартами кодирования может оказаться непростой задачей. Возможно, кто-то из членов команды присылает код, не соответствующий установленному стилю кодирования, или вы делаете коммит, исправляющий один компонент, но непреднамеренно ломающий другой. Что можно сделать, чтобы снизить эти риски?
FrontendCSS

Исследование переноса текста и слов

Давайте поговорим о различных способах управления переноса текста на веб-странице. CSS даёт множество инструментов, позволяющих сделать текст таким, каким мы хотим его видеть. Также рассмотрим трюки с использованием HTML и специальных символов.
FrontendCSSJavaScript

Работа с CSS переменными

Одно из преимуществ CSS переменных — хранение таких значений, как цвета, размеры и другие элементы дизайна, в одном месте, с последующим использованием их во всей таблице стилей. Мы расскажем о значении CSS переменных и о том, как упростить поддержку и обновление стилей, что позволит повысить навыки фронтенд-разработки.
BackendPHP

PHP 8.4: Объявление параметров с неявным nullable объявлено устаревшим

PHP поддерживает объявление типов для параметров функций, возвращаемых значений, свойств классов, констант классов и Enum. Будучи динамически типизированным языком и языком с десятилетиями истории, за прошедшие годы PHP получил ряд улучшений и возможностей.
BackendPHP

Добавление текста к изображению с помощью PHP и GD

Может быть множество причин, по которым необходимо добавить текст поверх существующего изображения. Для меня основной причиной было добавление заголовка статьи поверх фонового изображения "шаблона" для создания SEO-изображений.
TypeScript

Как работают дженерики в TypeScript

TypeScript с его мощной системой типов предлагает функцию Дженерики, позволяющую разработчикам писать многократно используемый и типобезопасный код. Дженерики позволяют создавать компоненты, способные работать с различными типами, а не с одним.
BackendPHP

Хватит использовать устаревшие методы оптимизации в PHP

Прекратите использовать приёмы микрооптимизации в PHP, жертвуя читабельностью кода ради мнимого повышения производительности. Более того, перестаньте учить этим трюкам новичков. В этом нет никакого смысла.
FrontendHTML

Доводы против самозакрывающихся тегов в HTML

Хотя мы, как индустрия, в целом отказались от большинства требований XHTML, оформление самозакрывающегося тега, похоже, сохранилось, несмотря на то, что является пережитком спецификации, от которой отказались более 10 лет назад. Люди даже добавляют пробел перед /, который был добавлен для совместимости с браузерным движком из прошлого тысячелетия.
DatabaseSQL

Ошибки в составлении SQL запросов и как их избежать

SQL запросы — рабочие лошадки, получающие данные, манипулирующие и управляющие ими. Создаёте веб-приложение, управляете бизнес-операциями или проводите сложный анализ данных, SQL запросы — это мост, соединяющий данные с приложением. Поэтому важно, чтобы запросы были не только функциональными, но и оптимизированными для повышения эффективности.
BackendPHP

PHP 8.4: Новые функции http_(get|clear)_last_response_headers

В PHP 8.4 добавлены две новые функции http_get_last_response_headers и http_clear_last_response_headers, которые можно использовать для получения и очистки HTTP-заголовков последнего ответа HTTP-обёртки, что может заменить историческую переменную $http_response_header.
FrontendCSS

Декодирование специфичности CSS

CSS — это основа, при помощи которой разработчики превращают HTML-документы в визуально привлекательные и функциональные для посетителей веб-сайты. Для фронтенд-разработчика понимание правил, регулирующих CSS, имеет решающее значение для повышения мастерства в оформлении веб-сайтов. В статье рассмотрим концепцию специфичности CSS, разберём её составляющие и покажем, как более глубокое понимание может улучшить навыки стилизации веб-сайтов.
BackendLaravel

Laravel 11: Руководство по обновлению

Мы стараемся документировать все возможные изменения. Поскольку некоторые из изменений находятся в малоизвестных частях фреймворка, только часть из них может реально повлиять на ваше приложение. Хотите сэкономить время? Используйте Laravel Shift для автоматизации обновления приложений.
BackendPHP

PHP 8.4: Curl: Минимальная требуемая версия libcurl повышена до 7.61.0

Расширение Curl предоставляет функциональность libcurl в PHP. Хотя расширение Curl можно скомпилировать с любой поддерживаемой версией libcurl, расширение требует определённую минимальную версию libcurl. Это позволяет расширению гарантировать, что определённая функциональность и API всегда будут доступны.
BackendPHP

PHP 8.4: Расширение Pspell перенесено из PHP Core в PECL

Расширение Pspell предоставляет возможности проверки правописания в PHP с помощью Pspell или Aspell. Зависимости этого расширения не получали обновлений в течение последних нескольких лет, и расширение Pspell было перенесено из ядра PHP в расширение PECL в PHP 8.4.
BackendPHP

PHP 8.4: round() — неправильные режимы вызывают исключения

Функция round() округляет значение float до ближайшего целого числа или десятичного значения заданной точности. Она поддерживает тонкую настройку метода округления с помощью дополнительного параметра.
BackendPHP

PHP 8.4: Opcache: Изменения в INI, влияющие на включение JIT

В PHP 8.0 была добавлена поддержка компиляции Just-In-Time. По умолчанию JIT отключена, и есть два переключателя, opcache.jit и opcache.jit_buffer_size, контролирующие режим основной функциональности PHP и размер буфера, разрешённый для использования JIT.
BackendPHP

PHP 8.4: Новые режимы округления в функции round()

Функция round() округляет значение float до ближайшего целого числа или десятичного значения заданной точности. Она поддерживает различные режимы округления, а в PHP 8.4 добавлены четыре новых метода округления.
Database

Методы оптимизации SQL-запросов в высоконагруженных приложениях

Успех высоконагруженных приложений зависит от эффективной работы баз данных, лежащих в их основе. По мере роста сложности SQL-запросов, особенно тех, которые включают в себя сложные соединения и проблемы индексирования, оптимизация запросов приобретает первостепенное значение.
FrontendCSS

Как скрыть полосу прокрутки (скроллбар) с помощью CSS

С помощью новых CSS атрибутов полосу прокрутки можно стилизовать и скрывать, не влияя на возможность пользователя прокручивать страницу. Мы покажем, как скрыть полосу прокрутки в большинстве браузеров с помощью CSS.
BackendLaravel

Новые возможности Laravel 11

Привет, веб-разработчики! Недавно появились новости о Laravel 11, и о новых возможностях, с которыми определённо стоит пообщаться. Если вы увлекаетесь Laravel так же, как и я, наверняка не терпится узнать, что нового появилось и как это облегчит жизнь. Так что давайте погрузимся в тему. И да, сделаем это в непринуждённой манере с большим количеством примеров кода, чтобы было понятно и весело.
JavaScriptFrontend

Пользовательские события CustomEvent

JavaScript CustomEvent расширяют функциональность встроенной системы событий. Проще говоря, они позволяют программистам создавать и обрабатывать события, уникальные для их приложения, и в этой статье мы расскажем о них всё.
GitTools

Git: Поддерживайте чистоту ветви с помощью fixup и autosquash

Кто не устал от коммитов "Remove pdb" или "Fix a typo" через несколько минут или часов после коммита чистой фичи? Несколько лет назад я обнаружил в GIT две полезные опции, которые работают вместе: git commit --fixup и git rebase --autosquash. С их помощью можно легко объединить небольшие исправления с оригинальной фичей и сохранить ветвь чистой.
Frontend

Создание меню "вне холста" с <dialog> и веб-компонентами

Меню "вне холста" — распространённый паттерн в веб-дизайне. Его часто можно увидеть на мобильных сайтах, где вы кликаете на кнопку гамбургер, и меню выдвигается сбоку экрана, обычно перекрывая контент, находящийся за ним.
BackendLaravelEloquent

Нетерпеливая загрузка может быть вредна

Да, вы всё правильно поняли. Нетерпеливая загрузка (Eager loading) может быть вредной, очень вредной. Однако мы часто прибегаем к ней, когда имеем дело со сценарием N+1, думая, что решили проблему, а на самом деле, возможно, сделали её ещё хуже. Каким образом? Давайте посмотрим.
BackendSymfony

Модернизация конфигурации Symfony

Конфигурация Symfony — одно из тех изменений, которые трудно заметить, пока они не будут удалены в следующей мажорной версии. Тогда приходится гуглить "сообщение об ошибке invalid option id" и надеяться на решение. Не самый лучший способ провести выходные, не так ли?
BackendSymfonySecurity

Введение в CSRF-токены в Symfony

Начиная знакомство с Symfony, часто приходится следовать документации, не всегда понимая значение тех или иных механизмов. В этом контексте стоит поближе рассмотреть токены CSRF, которые на первый взгляд могут показаться дополнительным усложнением, но их роль крайне важна для безопасности приложения. В этой статье я расскажу, почему CSRF-токен так важен, и проиллюстрирую это на примере популярной социальной сети, которая столкнулась с проблемами безопасности из-за недостаточной проверки этих токенов.
JavaScript

Функции высшего порядка в JavaScript

Функции высшего порядка — одна из самых мощных возможностей JavaScript, позволяющая разработчикам писать лаконичный, гибкий и модульный код. Функция высшего порядка — это просто функция, которая либо принимает одну или несколько функций в качестве аргументов, либо возвращает функцию в качестве результата. В этой статье мы рассмотрим, что такое функции высшего порядка, почему они полезны и как использовать их в своём коде.
BackendLaravelEloquent

Использование $fillable для валидации

Свойство $fillable в моделях Eloquent может оказаться разумным местом для размещения логики валидации. В конце концов, учитывая, что этот список является практически частью валидации, было бы расточительно не использовать ту же структуру для определения правил соответственно.
BackendPHP

Все рекурсивные функции в PHP

Рекурсивная функция — это функция, вызывающая саму себя для решения задачи. Этот тип функций часто используется в ситуациях, когда задачу можно разбить на более мелкие, похожие, но всё же более мелкие задачи. Функция продолжает вызывать себя с изменёнными аргументами до тех пор, пока не будет достигнут базовый случай, после чего функция перестаёт вызывать себя и начинает возвращать значения. Итак, все ли рекурсивные функции в PHP нам известны?
BackendLaravel

Процессы и команды Artisan в Laravel

Узнайте как создавать и тестировать команды для взаимодействия с Laravel приложением и сервером. Откройте для себя новые советы и рекомендации по написанию команд Artisan, а также по использованию фасада Process в Laravel 10.
BackendLaravelEloquent

Привязка Laravel маршрутов для конечных объектов

Инъекция зависимостей в Laravel — сложная тема, и в основном она используется для сторонних пакетов и некоторых внутренних компонентов. Вы можете использовать её и в своём приложении, но, на мой взгляд, она часто усложняет код больше, чем стоит, и значительно затрудняет отладку.
FrontendCSS

Именование переменных в CSS

"Именовать вещи сложно", — гласит аксиома программной инженерии, и CSS не является исключением. Здесь собраны некоторые соображения, связанные с именованием пользовательских свойств CSS. Я буду использовать термины "переменная" и "пользовательское свойство" как взаимозаменяемые, поскольку для целей определения того, как их называть, это фактически одно и то же.
JavaScript

Объектно-ориентированное программирование в JavaScript

В этой статье мы рассмотрим объектно-ориентированное программирование в JavaScript: Узнайте, как использовать классы, наследование и инкапсуляцию для получения более чистого и эффективного кода в ваших веб-проектах.
FrontendCSS

Руководство для начинающих по блочной модели CSS

Блочная модель/Box Model CSS — фундаментальная концепция, позволяющая размещать и выравнивать элементы на веб-странице. Владение блочной моделью необходимо для управления отступами, размерами, позиционированием и разработкой макета веб-страницы в целом.
FrontendCSS

Текучая типографика для отзывчивого дизайна

Внедрение текучей типографики означает создание текста, адаптирующегося к различным размерам экрана. По мере совершенствования технологий продолжают появляться устройства различных форм и размеров. Как фронтенд-разработчик, вы должны создавать приложения, которые хорошо адаптируются к различным размерам экрана. Дизайн с использованием текучей типографики улучшает пользовательский опыт и доступность; в этой статье мы расскажем как это сделать.
Database

Оптимизация запросов MySQL

Оптимизация запросов к MySQL считается актуальной темой среди бэкенд-разработчиков, поскольку ресурсы базы данных имеют решающее значение. Очень важно экономить и избегать перерасхода этих ресурсов. Вот несколько советов для бэкенд-разработчиков по оптимизации запросов:
BackendPHP

Nullsafe оператор на практике

Null-safe оператор был добавлен в PHP 8.1: это новый объектный оператор, предотвращающий фатальную ошибку и последующую остановку выполнения при вызове метода или свойства со значением null. Он имеет большую привлекательность, поскольку называется "безопасным" и сокращает количество проверок перед вызовом метода. Однако на практике у оператора nullsafe есть и свои недостатки.
Frontend

Как создать favicon/фавикон в 2024 году

Отдавайте предпочтение SVG, а не PNG, доверяйте браузерам в вопросах уменьшения масштаба, отказывайтесь от непонятных форматов — это полное, исчерпывающее руководство по favicon/фавикон для современного веба. Включает шаги для статического HTML и Webpack.
FrontendCSS

Как использовать CSS свойство gap

В этой статье мы рассмотрим использование CSS свойства gap, позволяющее очень просто добавлять пространство между элементами и решающее ряд проблем с вёрсткой, беспокоивших разработчиков на протяжении многих лет.
JavaScript

Понимание BOM в JavaScript: Быстрое объяснение с примерами

JavaScript — универсальный язык программирования, позволяющий разработчикам создавать динамичные и интерактивные веб-приложения. Хотя основная функциональность языка заключается в манипулировании веб-контентом с помощью объектной модели документа (DOM), JavaScript также предоставляет объектную модель браузера (BOM) для взаимодействия со средой браузера.
FrontendCSS

Основные псевдоклассы фокуса :focus, :focus-within, и :focus-visible

Состояние фокуса пользователя совершенно не учитывается веб-разработчиками. Представьте себе навигацию по сайту без чёткого указания того, где вы находитесь и с чем взаимодействуете; это сбивает с толку. Именно здесь на помощь приходят CSS-псевдоклассы, такие, как :focus, :focus-within и :focus-visible. Цель этой статьи — пролить свет на важность состояния фокуса в веб-разработке.
BackendSymfonySecurity

Противодействие Login CSRF с помощью Symfony

Подделка межсайтовых запросов (CSRF) - одна из традиционных уязвимостей, с которыми приходится сталкиваться веб-приложениям. Все веб-фреймворки, включая Symfony, поддерживают защиту от CSRF из коробки. Менее известной уязвимостью является Login CSRF, особый вид CSRF-атаки.
BackendLaravelEloquentDatabase

Не полагайтесь на порядок ключей в значениях MySQL JSON

Вы наверняка слышали, что полагаться на то, что ключи массива сохраняют определённый порядок, опасно. В спецификации JSON эти пары ключ/значение даже определяются как "неупорядоченные". Но, возможно, на практике вы никогда не сталкивались с ситуацией, когда порядок изменялся по сравнению с тем, что вы ожидали.
BackendPHP

Продвинутые Value Objects в PHP 8

В предыдущей статье мы рассмотрели возможности Value Objects в повышении качества кода, надёжности системы и минимизации необходимости обширной валидации. Теперь давайте погрузимся глубже, чтобы улучшить понимание и использование этого важнейшего инструмента.
BackendPHP

Value Objects в PHP 8: Создание лучшего кода

В мире программирования поддержание чистоты и надёжности кода имеет большое значение. Паттерн Value Objects способен значительно улучшить качество вашего кода, сделав его более надёжным и удобным для сопровождения.
JavaScriptTypeScript

JSDoc: Надёжная альтернатива TypeScript

Многие разработчики предпочитают использовать TypeScript из-за его функций проверки типов. Однако это требует дополнительного шага транспонирования, который может быть хлопотным и отнимающим время. В этой статье мы расскажем, как использовать JSDoc, чтобы получить все те же элементы контроля, но писать на обычном JavaScript, что позволяет сократить время разработки и улучшить документацию!
TypeScript

Основы TypeScript: ООП практика, классы и наследование

Добро пожаловать в девятую часть нашей серии статей о TypeScript! В этой части мы углубимся в практику объектно-ориентированного программирования (ООП), уделив особое внимание классам и наследованию.
BackendPHP

PHP 8.4: Sodium: Поддержка AEGIS-128L и AEGIS256

AEGIS — это семейство алгоритмов аутентифицированного шифрования на основе AES, которое быстрее, чем AES-GCM. Расширение Sodium в PHP 8.4 поддерживает алгоритмы шифрования AEGIS-128L и AEGIS256, если расширение Sodium скомпилировано с libsodium 1.0.19 или более поздней версии.
BackendPHP

Шифрование AEGIS с расширением PHP Sodium

Расширение Sodium в PHP 8.4 теперь поддерживает шифры аутентифицированного шифрования AEGIS-128L и AEGIS256. Они значительно быстрее, чем AES-GCM и CHACHA20-POLY1305. В этой статье мы сравним их и объясним, как безопасно шифровать и расшифровывать данные с помощью AEGIS-128L и AEGIS256 на PHP.
BackendLaravel

Понимание обработки исключений в Laravel

Обработка исключений — важнейший аспект разработки веб-приложений, гарантирующий, что ваше приложение сможет изящно справиться с неожиданными ошибками и предоставить пользователям содержательные ответы. Laravel поставляется с надёжной системой обработки исключений, которая позволит вам эффективно справляться с ошибками. В этой статье мы рассмотрим основы обработки исключений в Laravel, а также ключевые концепции.
BackendLaravel

Стратегии кэширования в Laravel

При использовании кэширования обещание значительного повышения производительности должно быть сопоставлено с его стоимостью, связанной со сложностью и инфраструктурой. Давайте обсудим доступные варианты, чтобы вы могли использовать наилучшую реализацию для любой ситуации.
TypeScript

Основы TypeScript: Объединение, Литеральные и Размеченные типы

Добро пожаловать в шестую часть нашей серии статей о TypeScript! В этой части мы рассмотрим объединение типов, литеральные типы и размеченное объединение типов, обеспечивающие точность и выразительность в определении типов.
BackendPHPSecurity

Совет по безопасности: Безопасна ли функция strip_tags()

PHP включает несколько очень удобных функций, ориентированных на безопасность, но вы должны знать, как правильно их использовать, иначе рискуете оставить значительную уязвимость, ожидающую своего применения!
TypeScript

Основы TypeScript: Создание типов, перечислений и интерфейсов

Добро пожаловать в пятую часть нашей серии статей о TypeScript! В этой части мы переключим наше внимание на создание пользовательских типов, перечислений и интерфейсов. Эти мощные конструкции позволяют создавать выразительные и чётко определённые структуры кода.
BackendLaravel

Семь советов по добавлению второго сервера приложения

Добавление второго сервера к вашему приложению может стать отличным способом улучшить его производительность и/или повысить надёжность. Однако при добавлении второго сервера необходимо учитывать несколько моментов.
BackendLaravel

Пять полезных встроенных PHP констант

В PHP есть множество встроенных констант. Некоторые из них полезны при работе с файлами, а некоторые — с целыми числами. Но все они имеют одну общую черту — все они доступны глобально. В этой небольшой статье мы рассмотрим типичные примеры и случаи использования констант в Laravel.
TypeScript

Основы TypeScript: JavaScript в сравнении с TypeScript

Добро пожаловать во вторую часть нашей серии статей о TypeScript! В этой части мы проведём сравнение между JavaScript и TypeScript, что поможет вам сделать осознанный выбор при принятии решения о переходе на TypeScript.
BackendPHPTesting

Тестирование абстрактных классов PHP с помощью анонимных классов

Абстрактные классы не могут быть инстанцированы напрямую, что создаёт проблему при тестировании функциональности, реализованной в самом абстрактном классе. В этой статье я поделюсь своим подходом к решению этой проблемы.
BackendPHPComposer

Будьте последовательны в использовании скриптов Composer в CI

Сценарии Composer — это очень удобный способ определения команд, которые вы часто используете. Например, у нас есть скрипты composer для запуска тестов, проверки стиля кодирования или обновления хелперов IDE.
JavaScriptNodeJS

Как использовать файловую систему в Node.js

Веб-приложениям не всегда нужна запись в файловую систему, но Node.js предоставляет для этого обширный интерфейс прикладного программирования (API). Это может понадобиться, если вы ведёте логи отладки, передаёте файлы на сервер или с сервера, или создаёте инструменты командной строки.
JavaScript

Изучение новых методов массивов из ECMAScript 2023

В ECMAScript 2023 появились новые функции, призванные улучшить язык и сделать его более мощным и удобным. Новая версия включает в себя интересные функции и новые методы массивов JavaScript, благодаря которым программирование на JavaScript становится более лёгким и приятным. В этой статье мы подробно рассмотрим функциональные возможности новых методов JavaScript на прототипах массивов.
FrontendCSS

Несколько способов упростить CSS в 2023 году

Мы переживаем некий ренессанс CSS: новые возможности, техники, эксперименты и идеи появляются в таком количестве, какого мы не видели со времён "CSS3". Легко почувствовать себя подавленным, когда, кажется, что твоя профессия развивается с бешеной скоростью, но Джефф Грэм (Geoff Graham) считает, что "современный" CSS в 2023 году фактически сделал CSS "проще" в написании.
BackendLaravelEloquent

Защита от ленивой загрузки не перехватывает все N+1 запросы

Я большой поклонник нового "strict mode" для моделей Laravel. Одна из вещей, которую он помогает отловить, — это ужасный запрос "N+1", вызывающий проблемы с производительностью в продакшене.
DevOpsLaravel

Запуск Laravel Pint как части CI-конвейера с помощью Github Actions

Nuno Maduro из Laravel core-team объявил о выпуске нового пакета Laravel Pint, представляющего собой "[...] специализированный корректор стиля PHP-кода для минималистов. Pint построен на базе PHP-CS-Fixer и помогает убедиться, что стиль вашего кода остаётся чистым и последовательным".
SEOFrontend

Действительно ли редиректы (301, 302, ...) влияют на SEO

Как работать с редиректами и каковы последствия их использования — вот несколько вопросов, возникающих в процессе SEO-аудита. Некоторые SEO-эксперты более фаталистично, чем другие, относятся к тому, как редиректы могут повлиять на рейтинг вашего сайта на страницах результатов поисковых систем (SERP).
TypeScript

TypeScript: Освоение Перегрузки и Дженериков

TypeScript, статически типизированный надмножество JavaScript, привносит в язык дополнительные статические типы и объектно-ориентированное программирование на основе классов. Две важнейшие концепции, которые вводит TypeScript, — это Перегрузка и Дженерики. Эти возможности повышают гибкость, удобство повторного использования кода и безопасность наших программ.
JavaScript

Что такое цепочка прототипов в JavaScript

Цепочка прототипов — это механизм в JavaScript, позволяющий объектам наследовать свойства и методы других объектов, имея общий прототип. В JavaScript каждый объект имеет связанный с ним прототип объекта, и эти прототипы образуют цепочку. Когда свойство или метод не найдены в объекте, JavaScript просматривает цепочку прототипов, чтобы найти его в прототипе объекта или в прототипах его предков.
JavaScript

Очистите свой JavaScript: Избавьтесь от регулярных выражений

В этой статье я рассмотрю регулярные выражения, также известные как Regex, и попытаюсь убедить вас в том, что их наличие в вашей кодовой базе — плохая идея. Для краткости я не буду пытаться объяснить внутреннюю работу и применение Regex, но постараюсь убедить вас в необходимости их рефакторинга из вашей кодовой базы.
JavaScript

Очистите свой JavaScript: Трансформация условных операторов

В программировании, особенно в динамичном и постоянно развивающемся мире JavaScript, путь от новичка до опытного профессионала сопряжён с множеством трудностей и кривых обучения. Один из важнейших выводов, который я вынес из своего богатого опыта, как в качестве интервьюера, так и в качестве интервьюируемого, заключается в огромной важности понимания "почему", стоящего за нашими кодовыми решениями. Именно такое глубокое понимание и способность чётко сформулировать причины каждого решения действительно отличают исключительных специалистов.
DevOps

Что на самом деле происходит при выполнении команды 'Docker Run'

Docker — это инструмент, облегчающий создание, развёртывание и запуск приложений с помощью контейнеров. Контейнеры позволяют инженеру упаковать приложение со всеми необходимыми компонентами, например библиотеками и другими зависимостями, и отправить его в виде единого пакета. Это означает, что приложение будет работать на любой другой машине, независимо от настроек, которые могут отличаться от настроек машины, использовавшейся для написания и тестирования кода.
GitTools

Демистификация git cherry-pick: обзор команды с примерами

Git, широко распространённая система контроля версий, позволяет разработчикам эффективно управлять и отслеживать изменения в кодовой базе. Одной из мощных, но иногда недопонимаемых команд является git cherry-pick. В этой статье рассмотрим git cherry-pick, узнаем её назначение, использование и приведём примеры, раскрывающие суть этой команды.
BackendLaravel

Контроллеры и их истинное предназначение

На прошлой неделе я написал в твиттере о том, как выглядят контроллеры в моих приложениях и как я вообще к ним отношусь. Этот твит быстро стал вирусным и привлёк к себе много внимания, но, к сожалению, не по тем причинам. Поэтому в этой статье я хотел бы пролить свет на то, к чему я стремился, и объяснить, каким должен быть (UI) контроллер в целом.
FrontendCSS

Новые возможности CSS облегчающие вашу жизнь

CSS — постоянно развивающийся язык. С каждой итерацией он становится все лучше и лучше. Поэтому важно следить за новейшими возможностями CSS, чтобы использовать их в своих проектах и меньше зависеть от библиотек сторонних разработчиков.
FrontendCSS

Отзывчивая типографика с CSS clamp

Для frontend-разработчика одним из самых утомительных занятий является определение свойств текстовых элементов для различных размеров экрана с помощью медиа-запроса, что приводит к созданию большого файла css. В этой статье мы расскажем как сделать тексты на сайте отзывчивыми без использования медиа-запроса, тем самым сэкономив время и место.
BackendLaravel

Восемь способов писать чистый и лаконичный код в Laravel

Определение чистого кода субъективно. Оно часто становится источником горячих споров между разработчиками в Интернете. В этой статье мы рассмотрим возможности Laravel, позволяющие писать меньше кода.
BackendLaravel

Начните тестировать Laravel код меньше чем за 5 минут

Кодирование — это весело. А вот отладка? …Не очень. Именно поэтому тестирование имеет решающее значение для успеха любого нетривиального проекта. В этой статье я покажу как легко начать тестировать свои Laravel приложения. Давайте растопим лёд раз и навсегда!
JavaScriptNodeJS

Переменные среды/окружения в Node.js: Как правильно их установить

Вы когда-нибудь сталкивались с проблемой управления различными конфигурациями в Node.js приложениях? Хотелось бы иметь централизованный и организованный способ работы с такими секретами, как ключи API и учётные данные баз данных? Не ищите дальше! На помощь приходят переменные среды. В этой статье мы погрузимся в мир переменных среды в Node.js, рассмотрим их преимущества, примеры использования и лучшие практики эффективного управления ими.
FrontendCSS

9 распространённых ошибок в CSS, которые мы совершаем

Каскадная таблица стилей (CSS) — это мощный язык стилей, помогающий фронтенд разработчикам оформлять обычные веб-страницы. Однако при использовании этого языка стилей можно допустить ряд ошибок мешающих писать эффективный код. В данной статье рассматриваются некоторые распространённые ошибки и предлагается решение для каждой из них.
FrontendCSSBEM

Как CSS @scope может заменить БЭМ

Одним из наиболее распространённых и сложных вопросов, с которыми сталкиваются фронтенд-инженеры, являются соглашения об именовании CSS. С популярностью метода Блок Элемент Модификатор (БЭМ) многие привыкли организовывать свои стили по удобной схеме.
JavaScript

О чем нам говорит удаление свойств объектов в JavaScript

Удаление свойств объекта в JavaScript — не самая интересная задача, но существует множество способов её решения, каждый из которых раскрывает фундаментальный аспект работы JavaScript. В этой статье Juan Diego Rodríguez рассматривает каждый из способов.
BackendLaravel

Laravel Impersonate — Как выдавать себя за других пользователей

Одной из интересных особенностей Laravel Nova является возможность выдавать себя за пользователя прямо из панели управления. Это удобно по многим причинам, но я считаю, что когда вы получаете сообщение об ошибке или проблеме и хотите увидеть, что именно видит пользователь, выдача себя за него экономит массу времени, поскольку вы можете увидеть именно то, что видит пользователь.
JavaScript

Проверка существования свойства объекта в JavaScript

Когда нам необходимо проверить, содержит ли объект JavaScript определённое свойство, мы можем использовать несколько методов, включая операторы JavaScript, специфические статические методы класса Object, методы экземпляра объекта, методы экземпляра массива и пользовательскую функцию JavaScript.
JavaScript

Нюансы base64-кодирования строк в JavaScript

Кодирование и декодирование base64 — это распространённая форма преобразования двоичного содержимого для представления его в виде безопасного для веб-приложений текста. Она широко используется для URL данных, таких как встроенные изображения.
BackendSymfony

Новое в Symfony 6.4: Маршруты на основе FQCN

В приложениях Symfony система маршрутизации требует, чтобы каждый маршрут имел имя, которое представляет собой произвольную строку, однозначно идентифицирующую маршрут. В дальнейшем это имя используется, например, при генерации URL-адресов на основе определений маршрутов.
BackendLaravelEloquent

Руководство по Soft Delete в Laravel

В веб-приложениях могут возникать ситуации, когда необходимо разрешить пользователям удалять данные без их окончательного удаления из базы данных. Например, можно разрешить администратору удалить учётную запись другого пользователя, но при этом сохранить его данные в базе данных на случай ошибки администратора. Это позволит администратору при необходимости восстановить удалённую учётную запись. Именно в этом случае полезно мягкое удаление — soft delete.
FrontendCSS

Новая CSS функция light-dark() для переключения цвета темы

В Интернете существует множество способов переключения между светлыми и тёмными темами. Мы можем использовать JavaScript или медиазапрос prefers-color-scheme в CSS для переключения между темами на основе системных предпочтений пользователя.
JavaScript

Шпаргалка по кодировке символов для JavaScript разработчиков

Кодировка символов — важнейший аспект разработки JavaScript как на фронтенде, так и на бэкенде. В этой статье мы рассмотрим основы кодирования символов, его важность и то, как оно влияет на отображение данных на веб-страницах. Также обсудим лучшие практики и типичные ошибки, которые помогут вам избежать проблем с кодировкой в своих проектах.
Database

Валидация JSON Schema для столбцов

Расширение традиционной схемы базы данных столбцами NoSQL JSON позволяет сделать схему более понятной. При её использовании база данных будет гарантировать, что все JSON-данные, хранящиеся в столбце, являются валидным JSON. Но можно ли также гарантировать наличие определённых свойств в JSON-документе?
Database

Заполнение пропусков в результатах статистических временных рядов

Статистические расчёты на временном интервале должны учитывать недостающие данные. Вместо того чтобы заполнять недостающие записи в приложении, можно изменить запрос, чтобы делать это напрямую.
TypeScript

TypeScript: Сравнение Типа и Интерфейса

TypeScript, мощная надстройка над JavaScript, завоевал популярность среди разработчиков благодаря сложной системе типизации. Он предлагает два способа определения форм данных: типы и интерфейсы. Но как сделать выбор между ними? Знание тонких различий и вариантов использования очень важно для эффективной разработки. В статье мы рассмотрим типы и интерфейсы, изучим их ключевые различия и практические случаи использования, чтобы вы могли принять взвешенное решение о том, когда использовать каждый из них.
BackendPHP

Понимание Value Objects/Объектов Значения в PHP

Value Objects/Объекты Значения — это фантастическая концепция, которую мы можем использовать для улучшения наших приложений. Они представляют собой небольшие объекты, такие как Money, DateRange, Email или Age, которые мы используем в сложных приложениях. Они являются ключевыми элементами при создании эффективного, понятного и сопровождаемого кода.
TypeScript

Полное руководство по типу Never в TypeScript

Тип never в TypeScript очень мало обсуждается, поскольку он не так распространён и не так неизбежен, как другие типы. Начинающий пользователь TypeScript, вероятно, может игнорировать тип never, поскольку он появляется только при работе с расширенными типами, такими как условные типы, или при чтении их загадочных сообщений об ошибках типов.
Database

Размещение NULL значений для ORDER BY с nullable столбцами

Для значений NULL в nullable столбцах применяется определённый порядок. Поведение базы данных может быть унифицировано или изменено в соответствии с намерениями приложения путём корректировки размещения значений NULL.
BackendPHP

Композиция вместо Наследования в PHP

В последнее время в сообществе PHP разработчиков ведутся дебаты о преимуществах и недостатках Композиции и Наследования. В мире объектно-ориентированного программирования (ООП) существует множество мощных инструментов и концепций, каждая из которых имеет свои сильные и слабые стороны и призвана улучшить читаемость, модульность и возможность повторного использования кода.
BackendPHP

Избегайте AOP: Array-Oriented Programming

Массивы — удобный способ организации и передачи данных в PHP-приложениях, но стоит ли это делать? В этой статье я расскажу о минусах злоупотребления использованием ассоциативных массивов и покажу простую альтернативу этому.
BackendPHP

Итерация файлов и каталогов в PHP

Недавно мне пришлось решать задачи, требующие знания сырых функций PHP, таких, как итерация файлов и каталогов. По мере развития все более высоких уровней абстракции мы часто перестаём помнить, как работать на низком уровне. В реальности это имеет множество последствий, особенно с точки зрения производительности.
DatabaseSecurity

Использование UUID для предотвращения атак методом перебора

В большинстве приложений ресурсы адресуются в URL по числовым инкрементным идентификаторам. Злоумышленник может легко увеличить идентификатор, чтобы перебрать все записи, собирая все доступные данные. Однако это легко предотвратить.
DevOps

Как настроить среду разработки Laravel для Windows без Docker

Локальные среды Laravel под Windows, такие, как Vagrant/Homestead, Laravel Sail или Laragon, могут быть очень медленными или ресурсоёмкими. Давайте создадим более нативную установку, которая работает очень хорошо! Нам удалось сократить время выполнения сложных операций с 13 с. до 1,5 с., что составляет прирост около 800%!
FrontendCSS

Более современный сброс CSS

Я написал A Modern CSS Reset почти 4 года назад, и, да, он не слишком хорошо сохранился. Несколько дней назад я заметил, что на него снова ссылаются, и подумал, что, вероятно, это хорошая идея — опубликовать обновлённую версию.
BackendLaravel

Laravel: Глубокое погружение в FormRequest

В Laravel валидация форм является ключевым моментом для обеспечения безопасности и точности пользовательских данных. Компонент FormRequest упрощает эту задачу, поскольку правила валидации хранятся в специальном классе, а не в контроллере. Это также делает код более аккуратным и позволяет использовать специальные функции, связанные с запросом, такие как получение модели или изменение типа данных в поле.
BackendPHPComposer

Менее известные трюки и советы по Composer, которые нужно знать

Менеджер зависимостей Composer является де-факто способом управления зависимостями в PHP-проектах. Вся современная PHP-разработка немыслима без Composer. Но знаете ли вы, что с помощью Composer можно делать многое, кроме установки и обновления зависимостей?
Security

Защита frontend приложений с помощью CORS и CSP

Frontend-приложения играют центральную роль в обеспечении бесперебойной работы пользователей. В современной взаимосвязанной сети, где широко распространены сторонние интеграции и API, обеспечение надёжной безопасности имеет первостепенное значение. Нарушение безопасности может привести к краже данных, несанкционированному доступу и ухудшению репутации бренда. В этой статье мы расскажем вам, как использовать CORS и CSP для обеспечения безопасности ваших веб-страниц.
DatabaseSQL

For each циклы с LATERAL соединениями

Объединять данные с помощью SQL очень просто. Однако иногда очень нужны зависимые соединения, возвращающие лишь небольшое подмножество данных объединённой таблицы. С помощью LATERAL соединения знакомый для каждого цикл может быть воспроизведён в SQL.
DatabaseSQL

Удаление дубликатов строк

В каждом приложении в какой-то момент появляются дубликаты строк. Очистка часто реализуется в логике приложения, хотя база данных может сделать это с помощью одного запроса, включающего выборку того, какие строки следует оставить.
TypeScript

Выведение типов и аннотации типов в TypeScript

TypeScript основывает обнаружение и определение типов на выведении типов (Type Inferences) и аннотациях типов (Type Annotations), и в этой статье мы расскажем о них, чтобы вы могли понять, когда и как их использовать.
BackendLaravelEloquent

Как использовать Soft Delete в Laravel Eloquent (c примером)

Мягкое удаление записей в Laravel позволяет помечать записи как "удалённые", а не удалять их из базы данных навсегда. Это может быть невероятно полезно при работе с информацией, которую в будущем может потребоваться восстановить. К счастью, Laravel поставляется со встроенной функцией soft delete!
BackendLaravel

Как отправить e-mail с Laravel используя Gmail

Laravel предлагает встроенный метод отправки электронной почты из вашего приложения с помощью фасада Mail. Этот метод требует подключения внешнего почтового сервера, например SMTP-сервера Gmail, который мы будем использовать в данной статье.
FrontendCSS

Повышение эффективности кодирования с соглашениями об именовании CSS

Соглашения об именовании CSS улучшают взаимодействие членов команды при работе над проектами, повышают сопровождаемость и масштабируемость проекта, позволяя разработчикам оптимизировать свои рабочие процессы. В этой статье мы погрузимся в мир соглашений об именовании CSS, покажем практические примеры и преимущества, которые они дают в процессе разработки.
BackendLaravelEloquent

Laravel: Шифрование данных моделей с помощью кастов

Если вы хотите избежать хранения конфиденциальных данных БД (например, номеров паспортов) в виде обычного текста, Laravel может зашифровать их в Моделях Eloquent, просто присвоив им значение encrypted. Давайте посмотрим, как это работает.
BackendLaravel

Ошибка Livewire 3 и Laravel Breeze: Конфликт Alpine.js

Если вы попытаетесь использовать Livewire 3 со стартовым набором Laravel Breeze, то можете заметить, что ваши компоненты не реагируют на реакцию, а некоторые функции Livewire просто не работают. Причиной может быть Alpine.js, который загружается дважды. Сейчас я покажу вам, как это исправить.
BackendLaravelEloquent

Пять способов получения последнего вставленного ID в Laravel

В Laravel после вставки данных в таблицу базы данных может потребоваться получить ID последней вставленной после создания записи. Этот идентификатор необходим для решения различных задач, таких как перенаправление пользователей на вновь созданный ресурс или выполнение дальнейших операций.
FrontendCSS

Написание CSS в 2023 году: Отличается ли он от того, что было раньше?

CSS развивается быстрее, чем когда-либо. С учётом всех новых возможностей, которые появились — и ещё появятся — после появления Flexbox и Grid несколько лет назад, меняется и способ написания CSS. В этой статье Geoff Graham рассказывает о том, какие функции оказали наибольшее влияние на его нынешние подходы к CSS, а также о тех, которые не оказали (по крайней мере, пока).
BackendLaravel

firstOrCreate() vs createOrFirst()

В Laravel v10.20 появился совершенно новый метод createOrFirst(), созданный Tony Messias, который может вызвать некоторое недоумение, поскольку в Laravel уже был метод firstOrCreate(). В чем же заключаются различия? Зачем нам нужны два метода? Давайте посмотрим...
FrontendCSS

Как избежать CSS-сдвигов макета связанных с ch

Сдвиги макета CSS означают неожиданное перемещение (или сдвиг) элементов в макете веб-страницы в процессе рендеринга. Это происходит при изменении размеров или положения элементов, что приводит к перетеканию или смещению содержимого на странице. Сдвиги макета могут привести к ухудшению пользовательского интерфейса, так как перемещение может нарушить взаимодействие с пользователем или затруднить чтение, или доступ к содержимому.
FrontendCSS

Преимущества пользовательских свойств в CSS

Пользовательские свойства CSS, известные как переменные, — это мощная функция, позволяющая разработчикам определять многократно используемые значения в таблицах стилей. Использование пользовательских свойств позволяет значительно повысить удобство повторного использования и сопровождения кода, а также создавать динамические стили для своих веб-проектов. Цель данной статьи — всесторонне объяснить пользовательские свойства CSS и их применение с помощью функции var.
JavaScript

Введение в htmx

Современные веб-пользователи ожидают от одностраничных приложений (SPA) плавных и динамичных эффектов. Однако для создания SPA часто используются сложные фреймворки, такие, как React и Angular, которые могут быть сложны для изучения и работы с ними. Появилась htmx — библиотека, позволяющая по-новому взглянуть на создание динамических веб-приложений, используя такие возможности, как Ajax и CSS-переходы, непосредственно в HTML.
JavaScript

Руководство по оптимизации JavaScript файлов

В этой статье мы рассмотрим практические методы оптимизации JavaScript-файлов, способы решения проблем производительности, связанных с JavaScript-файлами, а также инструменты, помогающие в процессе оптимизации. Вы получите знания, позволяющие повысить скорость работы веб-приложений и обеспечить бесперебойную работу пользователей.
FrontendJavaScriptCSSHTML

Как реализовать пагинацию с помощью HTML, CSS и JavaScript

В Интернете пагинация — это способ разбиения больших фрагментов содержимого на более мелкие части. В этой статье мы рассмотрим простой способ разделения содержимого на ряд "страниц" с помощью HTML, CSS и обычного JavaScript.
JavaScript

Ленивая загрузка в JavaScript

Ленивая загрузка — это метод, позволяющий отложить загрузку несущественного содержимого до того момента, когда оно станет необходимым для просмотра пользователем. В отличие от других методов загрузки, при которых все объекты сайта загружаются одновременно при доступе к странице, при ленивой загрузке используется более расчётливый подход. Она откладывает отображение некоторых элементов, таких как изображения, видео и другие мультимедиа, до тех пор, пока пользователь не начнёт активно взаимодействовать с веб-страницей. В этой статье мы расскажем вам, как использовать эту технологию, чтобы пользователи получали больше удовольствия от работы с вашим сайтом.
FrontendCSS

Рефакторинг CSS: Оптимизация размера и производительности (часть 3)

Рефакторинг кодовой базы должен привести к аналогичной или повышенной производительности и улучшению состояния кодовой базы. В конце концов, если развёртывание обновлённой базы вызовет проблемы с загрузкой или производительностью, это приведёт к снижению трафика и доходов. К счастью, существует множество методов оптимизации, которые можно применить для решения потенциальных проблем с размером файлов и производительностью.
DevOps

Отладка ошибок шлюза/Gateway Errors 502 и 504

Иногда возникают ошибки шлюзов, обычно "502 Bad Gateway" или "504 Gateway Timeout". Nginx возвращает эти ошибки, когда посылает запрос PHP, а PHP возвращает ошибку, говорящую, что он не может обработать запрос. Как правило, это НЕ ошибки, возникающие в приложении, а ошибки, возникающие до того.
BackendLaravel

Руководство по шифрованию и хэшированию в Laravel

Хеширование и шифрование — важнейшие концепции безопасности, о которых должен знать каждый веб-разработчик. В этой статье мы рассмотрим, что такое хеширование и шифрование, в чем разница между ними и как их использовать в своих приложениях Laravel.
FrontendCSS

Понимание логических свойств CSS

Логические свойства CSS — эффективный способ управления макетом веб-страниц. С течением времени CSS развивался в соответствии с требованиями современного веб-дизайна, и одним из значительных достижений последних лет стало появление логических свойств CSS. В этой статье мы познакомимся с логическими свойствами CSS, покажем, что они собой представляют, чем отличаются от традиционных (физических) свойств и почему они важны для создания гибких и отзывчивых макетов.
Security

CSRF: Обход ограничений SameSite cookie-файлов

SameSite — это механизм защиты браузера, определяющий, когда файлы cookie сайта включаются в запросы, поступающие с других сайтов. Ограничения на использование файлов cookie SameSite обеспечивают частичную защиту от различных межсайтовых атак, включая CSRF, межсайтовые утечки и некоторые CORS-эксплойты.
FrontendCSS

Освоение z-index в CSS

z-index — свойство, используемое для управления порядком расположения слоёв в документе. Элементы с большим значением z-index располагаются над элементами с меньшим значением. Подобно тому, как оси x и y на странице определяют расположение элементов по горизонтали и вертикали, z-index определяет, как они располагаются друг над другом по оси z.
FrontendCSS

Рефакторинг CSS: Стратегия, тестирование и сопровождение

В этой статье мы подробно рассмотрим сам процесс рефакторинга, стратегию инкрементного рефакторинга, визуальное регрессионное тестирование и сопровождение отрефакторенной кодовой базы.
FrontendCSS

Рефакторинг CSS: Введение

Рефакторинг CSS — задача не из лёгких: его нужно провести так, чтобы не создать проблем. Сначала необходимо проанализировать существующую кодовую базу, провести аудит состояния CSS-кодовой базы, выявить слабые места, согласовать подход и убедить руководство в необходимости вложения времени и ресурсов в этот процесс.
FrontendCSSSCSSSass

Повторное использование кода: Освоение SCSS-миксинов

Миксины SCSS обеспечивают эффективный способ повторного использования CSS-кода. Миксины уменьшают дублирование и улучшают структуру кода за счёт инкапсуляции стилей в блоки многократного использования. Благодаря возможности принимать аргументы, миксины становятся невероятно адаптивными и универсальными. В этой статье мы расскажем о том, как SCSS-миксины улучшают разработку фронтенда, способствуя модульности и согласованности кода, и упрощая написание CSS.
DevOps

Как включить TLS 1.3 в Apache и Nginx на Ubuntu и CentOS

Веб-мастерам и администраторам серверов крайне важно быть в курсе новейших протоколов и технологий. Одной из таких технологий является Transport Layer Security (сокращённо — TLS) 1.3 — последняя версия протокола, обеспечивающего безопасное взаимодействие в компьютерной сети.
BackendLaravel

Глубокое погружение в Laravel Folio

Недавно Тейлор выложил бета-версию Laravel Folio на YouTube в видеоролике с ключевой конференции Laracon. В настоящее время документация состоит только из файла readme, что отражает простоту пакета. Благодаря своей простоте мы можем легко догадаться о его внутреннем устройстве. Я решил углубиться в эту тему, и в этой статье мы отправимся на поиски его внутренних механизмов.
BackendPHP

PHP 8.3: Проблемы безопасности парсинга INI-строк и файлов

PHP предоставляет функции parse_ini_string и parse_ini_file, которые повторно используют встроенный в PHP синтаксический анализатор, применяемый для собственных конфигурационных файлов PHP на основе INI.
FrontendCSS

Руководство по стилизации скроллбара (полосы прокрутки) в CSS

В этой статье мы рассмотрим несколько способов стилизации скроллбара в CSS, в разных браузерах, чтобы вы могли настроить скроллбар по умолчанию в соответствии с вашим брендом или дизайном.
DevOps

Как работает Интернет

Для разработчика важно иметь твёрдое представление, что такое интернет и как он работает. Это фундамент, на котором строится большинство современных программных приложений. Чтобы создавать эффективные, безопасные и масштабируемые приложения и сервисы, необходимо хорошо понимать, как работает интернет и как использовать его возможности и связи.
BackendPHP

PHP 8.3: Поддержка резервных значений в синтаксисе переменных PHP INI

PHP поддерживает замену значений PHP INI на переменные окружения с помощью синтаксиса строковой интерполяции PHP. Если указанная переменная окружения недоступна, парсер INI использует пустую строку. В PHP 8.3 этот синтаксис расширен для поддержки объявления запасного/fallback значения, если переменная окружения не установлена.
FrontendCSS

Как использовать CSS background-size и background-position

Со свойствами фона CSS можно сделать очень многое. В этой статье мы рассмотрим, как использовать свойство background-size для установки размера фонового изображения, а также изучим варианты позиционирования фонового изображения с помощью background-position.
DevOps

Все, что нужно знать о DNS

Если вы читаете эту статью, то, скорее всего, вы использовали систему доменных имён (DNS), даже не подозревая об этом. DNS — фундаментальная часть интернета, которая позволяет нам получать доступ к веб-сайтам и онлайн-услугам, используя вместо цифровых адресов удобные для человека имена. Но как именно она работает? В этой статье я расскажу об основах DNS и о том, как она помогает нам ориентироваться в Интернете.
DevOps

Основы сетевых технологий

Сетевое взаимодействие — это основа современных технологий, необходимая для подключения устройств и служб. В этой статье вы узнаете о ключевых понятиях, терминологии и протоколах, которые используются в сетевых технологиях.
BackendLaravel

Валидация Laravel: Как настроить формат сообщений об ошибках

В Laravel валидация возвращает ошибку в виде JSON-ответа с сообщениями об ошибке в строгом стандартном формате. Что делать, если вы хотите изменить его на совершенно другую структуру, потому что ваши фронтендеры запрашивают определённые пары ключ-значение?
DevOps

Как изменить порт SSH по умолчанию в Linux

SSH (Secure Shell) — широко распространённый протокол для безопасного удалённого доступа и управления Linux-серверами. По умолчанию SSH прослушивает порт 22. Изменение порта SSH по умолчанию может обеспечить дополнительный уровень безопасности сервера, затруднив проведение автоматизированных атак или сканирования.
DevOps

Как настроить оповещения по электронной почте о входе по SSH на Linux

Мониторинг входов в SSH на Linux-сервере очень важен для обеспечения безопасности системы. Одним из способов информирования об активности входа в систему является настройка оповещений по электронной почте при каждом входе в систему через SSH. В этом руководстве мы покажем Вам, как настроить сервер Linux на отправку уведомлений по электронной почте при входе в систему по протоколу SSH.
BackendLaravel

Поиск в PDF-файлах с помощью MySQL и Laravel

Если на сайте представлены документы с большим объёмом текста, например, PDF-файлы, то часто возникает необходимость предоставить пользователям возможность перечисления и поиска в содержимом этих документов.
FrontendCSS

Как использовать CSS aspect-ratio

Бывают случаи, когда действительно необходимо поддерживать определённое соотношение между шириной и высотой отзывчивых элементов на веб-странице. Долгое время это можно было сделать с помощью различных CSS-трюков. Свойство CSS aspect-ratio изменило ситуацию: теперь мы можем задавать соотношение сторон элемента в одной строке кода. Давайте рассмотрим, как использовать свойство aspect-ratio.
BackendLaravel

Автоматическая генерация RSS лент в приложении Laravel

Одним из удобных способов информирования пользователей о ваших материалах является создание RSS-канала. Это позволит им подписываться на него с помощью программы чтения RSS. Усилия, затраченные на реализацию этой функции, стоят того, чтобы принять во внимание, поскольку у сайта появится ещё один канал распространения контента.
BackendLaravel

Laravel Folio — система маршрутизации на основе файлов и каталогов

Laravel Folio — новая система автоматической маршрутизации на основе файлов и каталогов. В результате вы получаете каталог страниц; когда на одну из этих страниц попадает URL, она автоматически загружается.
BackendLaravel

Как исправить ошибку 419 Page Expired/CSRF token mismatch

Использование CSRF-токенов добавляет дополнительный уровень безопасности, подтверждая, что запрос исходит от того же приложения, а не от вредоносного источника. Laravel обеспечивает встроенную защиту от CSRF-атак путём генерации и проверки CSRF-токенов.
Frontend

Варианты использования Web Storage API в HTML

Существуют различные способы использования веб-хранилищ в веб-приложениях. Front-end разработчики используют современный браузерный API веб-хранилища для создания более персонализированных, эффективных и отзывчивых веб-сайтов. В этой статье мы рассмотрим множество примеров использования, которые помогут вам создавать привлекательные веб-приложения.
JavaScript

Свойства API-интерфейса IntersectionObserver

Вчера мы рассмотрели, как определить, когда элемент входит или выходит из области просмотра. Сегодня мы познакомимся с некоторыми подробностями, которые можно получить об этих элементах из объекта IntersectionObserverEntry.
BackendPHP

20 функций PHP, которые вы должны знать в 2023 году

PHP постоянно развивается, и важно быть в курсе последних функций и улучшений. В этой статье представлены 20 функций PHP, которые вы должны знать в 2023 году, каждая из которых проиллюстрирована удобным примером кода.
FrontendCSSHTML

Mobile-First подход с HTML и CSS

В современном цифровом ландшафте подход, ориентированный на мобильные решения (mobile-first), приобрёл большое значение в веб-дизайне и разработке. Применяя подход mobile-first в HTML и CSS, вы отдаёте приоритет потребностям мобильных пользователей и обеспечиваете бесперебойную и увлекательную работу вашего сайта на небольших экранах. В этой статье мы расскажем о принципах и преимуществах mobile-first дизайна и реализации конкретных стратегий в HTML и CSS, чтобы вы могли применить эту методику.
BackendLaravel

Laravel Pagination: Сохранение параметров запроса на второй странице

Одна из типичных проблем с пагинацией возникает, если у вас на странице есть несколько фильтров с GET-параметрами. Как сделать так, чтобы они не исчезали, когда пользователь переходит на страницу /?page=2?
FrontendCSS

Техники рефакторинга CSS

В постоянно развивающемся мире веб-разработки, где CSS является ключевым элементом стиля, освоение техники рефакторинга CSS имеет решающее значение для создания эффективных и удобных в обслуживании таблиц стилей. Рефакторинг CSS позволяет оптимизировать код, устранить избыточность и повысить общее качество кода. Применение правильных техник может превратить запутанные таблицы стилей в хорошо организованный, модульный и легко обслуживаемый код. В этой статье мы расскажем вам о техниках рефакторинга CSS.
DevOps

Что такое URL

URL-адреса встречаются повсюду. Мы используем их для доступа к веб-сайтам, отправки электронной почты, загрузки файлов и многого другого. Но что такое URL и как он работает? В этой статье мы рассмотрим анатомию URL, различные типы URL, способы кодирования и декодирования URL, разработку и отладку URL, а также некоторые советы по безопасности при использовании URL.
FrontendHTML

Руководство по семантическому HTML

Если вы новичок в веб-разработке, то, возможно, слышали термин "Семантический HTML" и задавались вопросом, что он означает. Проще говоря, Семантический HTML — это использование разметки HTML для передачи смысла содержимого веб-страницы, а не только её внешнего вида.
JavaScript

Наследование в объектно-ориентированном программировании JavaScript

Наследование в объектно-ориентированном программировании (ООП) JavaScript — фундаментальная концепция, которая развивалась с течением времени, и в этой статье мы покажем, как она работает и как её использовать.
JavaScript

Знакомство с примитивными объектами в JavaScript (первая часть)

В первой части серии Кирилл Мышкин рассказывает о некоторых аспектах JavaScript, помогающих приблизить объекты к примитивным значениям, что позволяет воспользоваться общими возможностями языка, которые обычно не ассоциируются с объектом, такими как сравнение и арифметические операторы.
BackendLaravel

Работа со сторонними сервисами в Laravel

Итак, чуть более двух лет назад я написал руководство о том, как работать со сторонними сервисами в Laravel. На сегодня это самая посещаемая страниц на моём сайте. Однако за последние два года всё изменилось, и я решил снова обратиться к этой теме.
BackendLaravel

Хуки жизненного цикла в Laravel

Мы, как программисты, должны уметь разбивать большие и сложные задачи на более мелкие и простые в управлении фрагменты. Однако иногда оказывается, что с некоторыми из тех небольших повторяющихся фрагментов кода, которые мы извлекли, чтобы уменьшить дублирование (или по какой-то другой причине), приходится взаимодействовать по-разному в зависимости от некоторого внешнего контекста.
JavaScript

Использование нескольких селекторов в методах селекторов JavaScript

Один из моих любимых трюков ванильного JS заключается в том, что можно передать несколько селекторов в такие методы селектора JavaScript, как Element.querySelector(), Element.querySelectorAll(), Element.closest() и Element.matches().
BackendLaravel

Безопасный способ использования переменных .env в Laravel

При разработке в Laravel обращение к значениям конфигурации и конфиденциальной информации из файла .env — обычное дело. В этой статье мы рассмотрим важность использования вспомогательной функции config() и почему при чтении значений следует избегать использования вспомогательной функции env().
FrontendSass

Sass для веб-разработки

Написание CSS имеет решающее значение для создания красивых и функциональных веб-сайтов, но управление CSS может стать сложной задачей по мере роста размеров и сложности сайтов. Вот тут-то и появляются препроцессоры CSS, такие, как Sass. В этой статье вы познакомитесь с Sass и узнаете, как он может упростить рабочий процесс и помочь писать более эффективный и удобный код.
TypeScript

Дженерики (универсальные типы) в TypeScript

Дженерики играют решающую роль в программировании, поскольку они позволяют создавать типобезопасные функции без предварительного указания точного типа, но допуская ограничения и проверки типов программистом. В этой статье представлена концепция дженериков, перечислены их преимущества и показано, как их использовать.
BackendLaravel

Три причины изучить Laravel

Laravel стал одним из самых популярных PHP фреймворков благодаря своим обширным функциям, простоте использования и удобочитаемости. Это отличный выбор для веб-разработчиков, стремящихся создавать надёжные и масштабируемые приложения. Если вы всё ещё сомневаетесь, стоит ли делать решительный шаг, вот три веские причины изучить Laravel.
DevOpsSecurity

Основы TLS (Transport Layer Security)

Протокол защиты транспортного уровня (TLS) шифрует данные, отправляемые через Интернет, чтобы гарантировать, что перехватчики и хакеры не смогут увидеть, что вы передаёте, что особенно полезно для личной и конфиденциальной информации, такой как пароли, номера кредитных карт и личная переписка. В этой статье объясняется, что такое TLS, как он работает и почему его следует использовать.
BackendLaravel

Как добавить администратора на сайт Laravel в продакшене

Добавление пользователя администратора на сайт в продакшене — одна из самых распространённых вещей, которые делаются при первом развёртывание Laravel проекта на сервере. В этой статье я покажу два способа сделать это.
SEOFrontend

10 лучших SEO рекомендаций для веб-разработчиков

Вы создали замечательный веб-сайт, но как сделать так, чтобы люди могли найти его через поисковые системы? В этой статье мы рассмотрим 10 лучших рекомендаций, чтобы ваша статья не только выделялась, но и хорошо ранжировалась в поисковых системах.
BackendPHP

Создайте сервис контейнер на PHP — минимальный контейнер

В этой мини статье вы узнаете, как создать сервис контейнер для внедрения зависимостей в PHP. Я начну с самого простого контейнера, совместимого с PSR-11, а затем добавлю различные функции, пока у нас не получиться мощный контейнер общего назначения.
SSGJAMStack

7 причин не использовать генераторы статических сайтов

Генераторы статических сайтов (SSGs) популярны и предлагают множество преимуществ, но в этой статье обсуждаются причины, по которым они могут быть неподходящей заменой вашей системе управления контентом (CMS).
SSGJAMStack

7 причин использовать генератор статических сайтов

Является ли CSM излишней для вашего следующего приложения? Может ли генератор статических сайтов улучшить производительность, управление и безопасность? Узнайте о преимуществах использования SSG.
FrontendCSSBEM

Написание более чистого CSS кода с помощью БЭМ

Чистый и организованный код имеет решающее значение в современных веб-проектах, и разработчики постоянно ищут способы улучшить удобство сопровождения и организации кода. К счастью, для достижения этой цели существуют различные методы, включая популярную методологию Блок Элемент Модификатор (БЭМ), и в этой статье объясняется, как работает БЭМ и почему вы должны начать его применять.
BackendLaravelSecurity

Laravel: Как улучшить безопасность приложения с CSP

В этой статье мы рассмотрим, что такое CSP и что он даёт. Затем рассмотрим, как использовать пакет для добавления CSP в Laravel приложении. Также кратко рассмотрим несколько советов по упрощению добавления CSP в существующее приложение.
BackendLaravel

Искусство записи Laravel Логов: Рекомендации и примеры

Laravel — популярный PHP-фреймворк обеспечивающий простой и элегантный способ создания веб-приложений. Одной из особенностей выделяющих Laravel, является его мощная и гибкая система ведения логов/логирование.
DevOpsPHPLaravelBackend

CGI, FastCGI, php-fpm, nginx и Laravel

Если вы запускаете приложения PHP/Laravel в продакшене, есть большая вероятность, что вы используете некоторые из этих вещей:CGI, FastCGI, php-fpm, nginx и Laravel. Как разработчик, я считаю важным понимать хотя бы основы этих компонентов. Итак, давайте разбираться.
BackendLaravel

Laravel: Gate и Policy

Laravel — популярный PHP-фреймворк широко используемый в веб-разработке. Он поставляется со встроенной системой авторизации позволяющей определять контроль доступа для разных пользователей и ролей. Двумя основными компонентами системы авторизации Laravel являются Gate и Policy. В этой статье мы рассмотрим концепцию Gate и Policy Laravel и то, как использовать их для защиты веб-приложений.
FrontendCSS

Тригоно­метриче­ские функции в CSS

В дополнение к математическим функциям CSS были добавлены тригонометрические функции sin(), cos(), tan(), asin(), acos(), atan() и atan2(). Эти функции определены в модуле Значения и единицы измерения CSS уровня 4 и доступны во всех браузерах.
BackendLaravel

Обработка исключений в Laravel: советы и рекомендации

Laravel — это популярный фреймворк, который обеспечивает простой и элегантный способ создания веб-приложений. Одной из особенностей, которая выделяет Laravel, является встроенная система обработки ошибок и исключений. В этой статье мы рассмотрим некоторые советы и рекомендации по эффективной обработке исключений в Laravel.
DevOpsDatabase

Эффективное удаление старых строк с секциони­ро­ва­нием

Удаление сотен тысяч строк происходит медленно, влияет на производительность и не освобождает выделенное место на диске. Используя секционирование, вы можете сделать это очень быстро, освободив место на диске.
BackendPHP

Использование `declare(strict_types=1)` для повышения надежности кода

Прочитайте о том, как вы можете использовать declare(strict_types=1) для повышения безопасности типов PHP-кода. Мы обсудим, как сделать код более надёжным и избежать принудительного приведения типов, что может привести к ошибкам.
BackendLaravel

Улучшение Laravel шаблонов с Blade директивами

Узнайте как создавать собственные директивы Blade, для упрощения шаблонов Laravel Blade. В статье рассказывается, что такое директивы Blade, как они используются во фреймворке, и как создать собственную директиву.
BackendPHP

PHP: Выполнение более строгих проверок

Эти более строгие проверки помогают писать более надёжный и предсказуемый код, выявлять ошибки на ранней стадии и избавиться от потенциальных головных болей в будущем. Хотя к некоторым из этих рефакторингов может потребоваться время для привыкания, они стоят усилий по улучшению качества кода.
Vim

Vim: Установка плагинов

Хотя мы склоняемся к нативной функциональности Vim в этом списке, большинство опытных пользователей Vim в какой-то момент расширяют возможности Vim с помощью любого из тысяч доступных плагинов с открытым исходным кодом. Если вы не живёте и не дышите Vim, вы можете не знать, сколько существует способов установки и управления плагинами, включая встроенный метод, поставляемы с Vim 8.
BackendLaravel

Laravel: Как отложить задания и слушателей в транзакциях базы данных

Если у вас есть задания и слушатели, запускаемые в транзакциях базы данных, это может привести к несогласованности данных при откате транзакции. Узнайте как правильно обращаться с ними.
Security

SQL-инъекции: Исследование базы данных атаками

При эксплуатации уязвимостей SQL-инъекций часто необходимо собрать некоторую информацию о самой базе данных. Это включает тип и версию программного обеспечения базы данных, а также содержимое базы данных с точки зрения содержащихся в ней таблиц и столбцов.
BackendPHPGuidePHP

Нужно ли комментировать свой код?

При обсуждении комментирования кода некоторые разработчики говорят, что вы всегда должны писать комментарии. Другие говорят, что код должен быть достаточно чистым и комментироваться только в исключительных случаях. Давайте рассмотрим примеры.
BackendPHP

Клонирование readonly свойств в PHP 8.3

В PHP 8.3 добавлена возможность перезаписи значения readonly свойств при клонировании объекта. Не заблуждайтесь: вы не можете клонировать любой объект и перезаписывать его readonly значения из любого места. Эта функция касается только очень специфического (но важного) пограничного случая.
Security

SQL-инъекции: UNION атаки

Когда приложение уязвимо для SQL-инъекций и результат запроса возвращаются в ответах приложения, можно использовать ключевое слово UNION для извлечения данных из других таблиц базы данных. Это приводит к SQL-инъекции с UNION атакой.
Security

SQLi: Что такое SQL-инъекция

В этой статье мы объясним, что такое SQL-инъекции (SQLi), опишем несколько распространённых примеров, объясним, как находить и использовать различные виды уязвимостей SQL-инъекций, а также подведём итоги, как предотвратить SQL-инъекции.
BackendPython

Python: Понимание объекта NoneType

В этом руководстве вы узнаете об NoneType объекте None, который действует в Python как null. Этот объект представляет собой пустоту, и вы можете использовать его, чтобы отменить параметры по умолчанию и даже показать, когда у вас нет результата. None — это инструмент для того, чтобы делать всё из ничего!
BackendPython

Python: Идентичность и равенство объектов

В этом кратком и практическом руководстве вы узнаете, когда использовать операторы Python is, is not, == и !=. Вы увидите, что эти операторы сравнения делают под капотом, погрузитесь в некоторые особенности идентификации объекта и интернирования, а также определите пользовательский класс.
BackendLaravel

Laravel: Моделирование бизнес процессов

Как разработчики, мы часто сопоставляем бизнес процессы с цифровыми процессам, от отправки электронного письма до чего-то довольно сложного. Давайте посмотрим, как взять более сложный процесс и написать чистый и элегантный код.
BackendLaravelTesting

Laravel: Всё, что вы можете протестировать в приложении

Общая проблема при тестировании заключается не в том, как что-то протестировать, а в том, что вы можете протестировать. Я составил список всего, что мне нравиться тестировать в своих приложениях.
BackendLaravel

Laravel: Поговорим о запросах формы / Form Request

Запросы формы наиболее известны тем, что переносят логику проверки из контроллеров в класс, который будет выполнять предварительную проверку. Они фантастические, и я постоянно опираюсь на них. Что ещё мы можем сделать с запросами форм?
BackendLaravel

Laravel: Хелперы массива которые нужно знать

Laravel известен своей элегантностью, простотой и выразительностью. Одной из самых мощных возможностей Laravel являются хелперы. Хелперы массивов Laravel — важный инструмент для разработчиков, работающих с массивами данных.
BackendPython

Python: Виртуальные среды — это просто

Большинство новичков не знают, как настроить в Python среду разработки, соответствующую последним стандартам, используемым профессиональными программистами. В этом руководстве вы узнаете, как правильно создать полностью работающую среду разработки Python с использованием лучших отраслевых рекомендаций.
DevOpsnginx

Ошибка Nginx 502 Bad Gateway - Причины и решения

502 Bad Gateway обычно возникает, когда Nginx работает, как обратный прокси-сервер и не может подключиться к серверным службам. Это может быть связано со сбоем службы, сетевыми ошибками, проблемами конфигурации и т.д. Рассмотрим пять основных причин возникновения этой ошибки и то, как их исправить.
FrontendCSS

Что такое CSS маски и зачем они нужны

В мире дизайна маскирование — популярная техника достижения уникальных дизайнерских эффектов. Как дизайнер, я использовал его много раз, но редко использую в Интернете. Думаю, причина, по которой я не использую CSS маски, заключается в поддержке браузеров. Они частично поддерживаются в браузерах blink (Chrome и Edge) и полностью поддерживаются в Safari и Firefox.
BackendLaravel

Laravel: Советы и рекомендации по работе с HTTP клиентом

Как веб-разработчикам, нам часто приходится взаимодействовать с API из Laravel приложений. HTTP-клиент Laravel, представленный в седьмой версии — удобная и интуитивно понятная оболочка для Guzzle HTTP библиотеки. В этой статье мы рассмотрим пять полезных приёмов работы с HTTP-клиентом Laravel, которые помогут сделать ваше разработку более эффективной и приятной.
BackendLaravelPHP

Совместное использование правил PHPCS между проектами и командами

PHPCS — инструмент cli с открытым исходным кодом обнаруживающий нарушения стилей кода заданного стандарта кодирования, а также предоставляющий автоматические исправления для автоматически исправляемых правил.
JavaScript

JavaScript: Delay, Sleep, Pause, & Wait

Многие языки программирования имеют функцию sleep, которая задерживает выполнение программы на заданное количество секунд. Однако эта функциональность отсутствует в JavaScript из-за его асинхронной природы. В этой статье мы рассмотрим почему это произошло, а затем как реализовать функцию sleep самостоятельно.
JavaScript

JavaScript: Управление потоком

В этой статье мы подробно рассмотрим, как работать с асинхронным кодом в JavaScript. Мы начнём с обратных вызовов, перейдём к промисам и закончим более современными async/await. В каждом разделе будет предложен пример кода, изложены основные моменты, о которых следует знать.
JavaScript

JavaScript: Функциона­льное Выражение vs. Объявление Функции

В JavaScript есть два способа создания функции: функциональное выражение и объявление функции. Мы обсудим когда использовать функциональное выражение, а когда объявление и объясним различия между ними.
BackendLaravel

Laravel: Загрузка файлов с помощью FilePond

При создании веб-приложения часто требуется добавить функцию, позволяющую пользователям загружать файлы. Например, вы можете разрешить пользователям обновлять изображения своего профиля или обмениваться файлами друг с другом.
JavaScript

JavaScript: Руководство по async/await, с примерами

Ключевые слова async и await представляют современный синтаксис JavaScript, помогающий обрабатывать асинхронный операции. В этом руководстве мы подробно рассмотрим, как использовать async/await для управления потоком данных.
JavaScript

JavaScript: Спасение из ада обратных вызовов

Ад обратного вызова реален. Разработчики часто рассматривают обратные вызовы как чистое зло, вплоть до того, что избегают их. Гибкость JavaScript совсем не помогает в этом. Но не обязательно избегать обратных вызовов. Хорошая новость в том, что есть простые шаги спасения от ада обратных вызовов.
JavaScript

JavaScript: Что такое функции обратного вызова/Callback

Когда вы начинаете изучать JavaScript, вскоре услышите термин функции обратного вызова. Обратные вызовы — неотъемлемая часть модели выполнения JavaScript, и важно понимать, что они из себя представляют и как работают.
BackendLaravel

Laravel: Погружение в Уведомления / Notifications

В большинстве Laravel приложений необходимо отправлять уведомления, будь то внутри приложения, по электронной почте или в slack — обычно это уведомления о транзакциях, чтобы предупредить пользователя о каком-либо действии или событии в вашем приложении. Давайте разберёмся, что это такое и как действует.
BackendPHP

PHP: Что такое Интерфейс

Что такое PHP-интерфейс? PHP интерфейс определяет контракт, который должен выполнить класс. Если PHP класс — это схема объектов, то интерфейс — это схема классов. Любой класс реализующий данный интерфейс, будет иметь одинаковое поведение с точки зрения того, что можно вызвать, как его можно вызвать и что будет возвращено.
BackendLaravelEloquent

Laravel: События Модели

При работе с Моделями Eloquent обычно используют события, отправляемые в течении жизненного цикла Моделей. Есть несколько разных способов сделать это, и в этой статье я расскажу о них и объясню преимущества и недостатки каждого из них.
BackendLaravel

Laravel: Data Transfer Objects — Зачем и Как

Data Transfer Object (DTO) — шаблон, который при правильном использовании может улучшить качество и удобство сопровождения приложения. В этой статье мы узнаем, зачем вы должны использовать DTO в своих приложениях и как это сделать в Laravel.
BackendPHP

PHP: Продление срока службы легаси приложений

PHP продолжает развиваться с новыми критическими изменениями, и хотя это отлично подходит для большинства PHP-приложений, существуют легаси/устаревшие приложения, которые не могут оправдать затрат на их поддержку. Это руководство о том, как продлить срок службы легаси приложений с помощью обновлений безопасности и обслуживания.
Security

CSRF: Обход защиты основанной на Referer

Помимо средств защиты, использующих CSRF токены, некоторые приложения используют HTTP-заголовок Referer, для попытки защититься от CSRF атак путём проверки того, что запрос исходит из собственного домена приложения. Как правило, этот подход менее эффективен и имеет обходные пути.
Security

XSS: Использование уязвимостей

Традиционный способ доказать, что вы обнаружили XSS уязвимость, — создать всплывающее окно с помощью функции alert(). Это не потому, что XSS имеет какое-то отношение к всплывающим окнам; это просто способ доказать, что вы можете выполнять произвольный JavaScript в заданном домене. Вы могли заметить, что некоторые люди используют alert(document.domain). Это способ сделать явным демонстрацию на каком домене выполняется JavaScrip код.
BackendLaravel

Laravel: Валидация данных приложения

Валидация обязательна для любого современного проекта, и в Laravel очень просто начать. Внутри методов контроллера вы можете вызвать метод, передать запрос и массив правил, на соответствие которыми хотите проверить данные.
BackendLaravel

Laravel: Что такое Pipeline / Пайплайн

Pipeline/Пайплайн — одна из малоизвестных возможностей Laravel. Он часто используется в самом фреймворке, например, маршрутизация, но не так много разработчиков его используют. В этой статье я попытаюсь объяснить их и показать несколько примеров.
BackendLaravelTesting

Тестирование конечных точек JSON:API с PestPHP

JSON:API предоставляет множество возможностей для фильтрации, сортировки и включения дополнительных данных в запрошенные данные с использованием параметров запроса. Тестирование может быть утомительным, но в этом руководстве я расскажу, как подхожу к тестированию этих конечных точек c PestPHP.
BackendLaravel

Laravel API: Переопределе­ние Сообщения об Ошибке 404

Если вы используете привязку модели к маршруту в API Контроллерах и запись не найдена, она автоматически вернёт статус код 404 с сообщением об ошибке, например No query results for model [App\Models\User] 1. Как это изменить?
BackendLaravelEloquent

Eloquent: Оптимизация подсчёта Моделей по Отношениям

При подсчёте записей Модели, сгруппированных по типу в отношении, возникает соблазн загрузить в память слишком много запросов к БД или слишком много данных. Есть несколько способов оптимизировать его, давайте рассмотрим пример.
BackendLaravelEloquent

Laravel: Eloquent Наблюдатели не выполняются при массовых событиях

Если у вас есть события Наблюдателя для обновления или удаления записей, важно знать, что они выполняются только при обновлении отдельных записей, а не при массовом обновлении или удалении.
BackendLaravel

Laravel: Как передать глобальные переменные в Blade.

Представьте, что вы хотите показать некие глобальные данные в Blade: например, количество новых пользователей на этой неделе в верхнем блоке навигации. Не знаете от каких контроллеров будут поступать данные? Вы можете выполнить это действие в Service Provider тремя способами.
BackendLaravelEloquent

Laravel: Eloquent упорядочивание по hasMany отношениям

Представьте, что вы хотите загрузить Модель со многими связанными моделями, но отсортировать эти связанные результаты по некоторому столбцу в этой связанной БД. Как это сделать? Давайте сделаем ещё веселее и возьмём пример двухуровневых отношений.
JavaScript

JavaScript: Более безопасное чтение и запись URL

Создание и манипулирование URL-адресами в виде строк может казаться безопасным, пока не сложатся общие ошибки. Но у современного JavaScript есть решение для этого, Конструктор URL, делает чтение, запись и изменение URL-адресов более безопасным и чистым.
JavaScriptFrontend

JavaScript: Руководство по localStorage

Cookie были единственным способом хранения временной и локальной информации, но теперь у нас есть localStorage. Он широко обсуждается и используется во множестве приложений JavaScript. В этой статье мы рассмотрим всё, что нужно знать о localStorage в JavaScript.
BackendLaravel

Laravel: Стандартные ответы API с Responsable классами

Представьте работу приложения, в котором каждая конечная точка по-разному возвращает данные об успешных вызовах и вызовах с ошибками. Если это маленькое и простое приложение, поддерживаемое одним человеком, это может быть немного проще. Но если приложение начнёт расти и к команде присоединится больше людей, через некоторое время будет полный хаос для поддержки и улучшения приложения.
BackendPHP

PHP: Зачем следовать PSR-20

Недавно была выпущена спецификация PHP Standards Recommendation 20, призванная помочь разработчикам использовать общий интерфейс получения системных даты и времени. Это важная рекомендация, если вам необходимо протестировать PHP код, манипулирующий системной датой и временем.
BackendLaravel

Laravel: Внедрение зависимости и Сервис контейнер

В этой статье я расскажу о принципе внедрения зависимостей, так же известном как контейнер Inversion of Control (IoC). Расскажу как Laravel использует его внутри и предлагает эту концепцию разработчикам, чтобы их код был понятным и менее взаимозависимым.
BackendLaravel

Laravel: Использование логов для отладки API

Недавно мы создавали Laravel API для мобильного приложения созданного отдельной командой. Когда пользователь сообщил о проблеме, одним из первых вопросов был Эта ошибка связана с API или мобильным приложением? В этой статье я поделюсь стратегией ведения лога, которую мы использовали для быстрого поиска причин проблемы.
BackendLaravel

Laravel: Как работают транзакции базы данных

Продолжаем серию статей о происходящем под капотом, на этот раз о транзакциях базы данных в Laravel. Я не буду повторять всё о том, как вы можете использовать транзакции в Laravel. Если вы не знакомы с темой можете всё найти в официальной документации. Сейчас мы сосредоточимся на том, как эти реализации работают в фоновом режиме, что вызывало головную боль и как этого избежать. Итак, давайте разбираться.
FrontendCSS

CSS: em и rem — всё, что нужно знать

CSS — важнейшая часть дизайна любого сайта, но разобраться в тонкостях его использования бывает непросто. Одна из самых важных вещей, которую нужно понять, — это разница между использованием rem и em в CSS и то, зачем/когда следует использовать тот или иной вариант.
BackendLaravel

Laravel: Преимущество минимальных фабрик

Фабрики Laravel значительно экономят время при написании тестов. Раньше я создавал фабрики, чтобы каждое свойство модели находилось в состоянии по умолчанию, но в последнее время я переключился на минимальные фабрики по умолчанию. Я объясню причины этого изменения и какие преимущества я обнаружил.
TypeScript

TypeScript: 11 советов, которые улучшат ваши навыки

Изучение TypeScript часто является путешествием с повторными открытиями. Ваше первоначальное впечатление может быть довольно обманчивым: разве это не способ аннотации JavaScrip, чтобы компилятор помог найти потенциальные ошибки?
JavaScriptNodeJS

JavaScript: различие между require и import

Ключевое слово import используется для импорта привязок, которые экспортируются другим модулем, а функция require() используется для загрузки модуля в приложении Node.js. Эти два механизма похожи, но у них есть важные отличия о которых вам следует знать. Мы обсудим их в этой статье.
BackendToolsDevOps

Использование mkcert для включения https на локальных сайтах

mkcert — невероятный инструмент командной строки с открытым исходным кодом генерирующий доверенные сертификаты, которые можно использовать для включения https на локальных веб-сайтах
BackendPHP

PHP 7.4: Строгая типизация против Слабой

В PHP 5 ввели объявление типов (также известное как подсказки типов), которые позволяют функциям требовать, чтобы параметры имели определённый тип во время вызова. Если заданное значение имеет неправильный тип, то генерируется ошибка: в PHP 5 — исправимая фатальная ошибка, а в PHP 7 — исключение TypeError.
PHPBackend

PHP 8.3: unserialize() обновление ошибки E_NOTICE до E_WARNING

PHP представляет функции serialize() и unserialize() для сериализации любого значения PHP (строки, целые числа, объекты, NULL, массивы, перечисления и т. д.) и восстановление PHP-значения из этого строкового представления.
LaravelBackend

Laravel: Сервис Контейнер — что нужно знать новичкам

Сервис Контейнер (Контейнер Служб), пожалуй, одна из самых запутанных тем для новичков в Laravel. Официальная документация объясняет его хорошо, но с большим количеством теоретических слов. Давайте приступим к практике, и я покажу основные практические примеры, которые вам нужно знать.
LaravelBackend

Laravel: Логирование в приложении

Чтобы помочь вам узнать больше что происходит в вашем приложении, Laravel предоставляет надёжные службы логирования. Логирование в Laravel основано на каналах. Каждый канал представляет определённый способ записи информации в лог.
BackendPHP

PHP 8.2: Readonly-классы / классы только для чтения

В PHP 8.2 введён новый способ объявления классов: readonly-классы. Поскольку readonly-классы — просто синтаксический сахар для того, что бы сделать все свойства класса доступными только для чтения, это означает, что те же правила применяются и к readonly-классам.
BackendPHP

PHP 8.1: Клонирование и изменение readonly-свойств

В PHP 8.1 введены readonly-свойства. Они избавляют от множества проблем, но и добавляют новую — запрет на переопределение readonly-свойств клонированного объекта. Давайте разберёмся с решением этой проблемы и найдём обходной путь.
LaravelBackend

Laravel: 20 полезных советов

Итак, я решил составить список из 20 моих любимых советов, которые я размещал в своих аккаунтах в соцсетях, чтобы все могли познакомиться с ними. Они не размещены в каком-то определённом порядке, но я надеюсь, что вы найдёте хотя бы один новый совет, который окажется полезным.
BackendSSG

Топ-5 генераторов статических сайтов в 2022

Многие страницы сайтов динамические. Это означает, что содержимое страницы может меняться от сеанса к сеансу в зависимости от того, кто её загружает, вошёл ли он в систему или вышел, а также от ряда других факторов. Если ваш сайт этого не делает, значит, вы имеете дело со статическими страницами.
JavaScript

JavaScript: Понимание асинхронных вызовов

При написании кода для web, в конечном итоге вам требуется выполнить некий процесс, который может занять несколько минут. JavaScript не может работать в многозадачном режиме, поэтому нам нужен способ обработки этих длительных процессов.
JavaScriptNodeJS

Сравнение Node.js с JavaScript в браузере

Способность понимать Node по-прежнему остаётся важным навыком, если вы фронтэнд разработчик. Deno появился как ещё один способ запуска JavaScript вне браузера, но огромная экосистема инструментов и программного обеспечения Node, означают, что в ближайшее время он никуда не денется.
JavaScriptFrontend

Зачем нужны веб-фреймворки и как обойтись без них

В этой статье подробно рассматривается несколько технических возможностей, которые являются общими для всех фреймворков. Объясняется как они реализуются в различных фреймворках и какова стоимость их применения.
JavaScript

Возможности ES2022: блоки статической инициализации класса

Для настройки статической части класса у нас есть только статические поля. Предложение ECMAScript вводит статические блоки инициализации для классов, которые, грубо говоря, являются для статических классов тем же, чем конструкторы являются для экземпляров.
SymfonyBackend

Symfony: лучший способ быстрого запуска проектов

При создании новых проектов Symfony вы можете начать с bare-bones skeleton или kitchen sink skeleton. Я никогда не использовал kitchen sink skeleton, так как предпочитаю начинать с минимального количества зависимостей и добавлять пакеты только тогда, когда они мне нужны. Symfony делает это безболезненным, так как в большинстве случаев сообщает, какой пакет добавить, когда вы пытаетесь использовать что-то, что ещё не входит в ваш набор зависимостей.
LaravelBackend

Laravel: Получение информации о пользователе

При разработке веб-приложения может возникнуть ситуация, когда вам нужно узнать некоторую информацию о браузере и операционной системе вашего пользователя. В этой статье мы рассмотрим как это сделать.
LaravelBackend

Laravel: Чистка контроллеров

Контроллеры играют огромную роль в любом проекте основанном на MVC (Model View Controller). По сути, они являются "клеем", который принимает пользовательский запрос, выполняет какую-то логику, а затем возвращает ответ. Если вы когда-либо работали над какими-либо довольно большими проектами, вы замечали, что у вас много контроллеров, и они могут довольно быстро начать превращаться в бардак. В этой статье мы рассмотрим, как можно очистить раздутый контроллер в Laravel.
LaravelBackend

Laravel: Использование транзакций

В веб-разработке важны целостность и точность данных. Поэтому необходимо быть уверенным, что мы пишем код, который безопасно хранит, обновляет и удаляет данные в наших базах данных. В этой статье мы рассмотрим, что такое транзакции базы данных, почему они важны и как начать их использовать в Laravel. Мы так же рассмотрим типичные проблемы связанные с заданиями в очереди и транзакциями баз данных.
PHPBackend

PHP: Интерфейсы vs Абстрактные классы

Недавно я опубликовал статью об улучшении PHP кода с помощью интерфейсов. Она охватывает основы того что такое интерфейс, что он может делать. И как вы можете использовать его сделав свой PHP код более расширяемым и поддерживаемым. Один из вопросов, заданных в комментариях к статье был от разработчиков, которые хотели знать "когда я должен использовать интерфейс вместо абстрактного класса?". Я подумал и решил написать статью, что бы объяснить различия между абстрактными классами и интерфейсами в PHP и дать краткий обзор того, когда вы должны использовать каждый из них.
GitTools

Git: Руководство по исправлению ошибок (Часть 2)

Ошибки. Эти жестокие злодеи не останавливаются даже на прекрасном мире разработки программного обеспечения. Мы не можем избежать ошибок, но мы можем научиться их исправлять! В этой статье будут рассмотрены инструменты, подходящие для повседневной работы с Git.
GitTools

Git: Руководство по исправлению ошибок (Часть 1)

Независимо от того, насколько вы опытны, ошибки - неизбежная часть разработки программного обеспечения. Но мы можем научиться исправлять их! И это то, что мы рассмотрим в этой серии из двух частей: Руководства по исправлению ошибок с помощью Git.
TailwindCSSFrontend

Рассмотрим Tailwind CSS

В этом году было много шумихи вокруг популярного CSS фреймворка Tailwind. Хочу поделиться мыслями и опасениями по поводу UI этого фреймворка. У меня был небольшой опыт написания utility-first CSS кода, когда я начинал свою карьеру во фронтенде несколько лет назад.
JavaScriptFrontendBackend

JavaScript: Четыре хитрых концепции в одной строке

На днях коллега подошёл ко мне со строкой кода, которую нашёл на StackOverflow, и спросил, как это работает. И я подумал, что это отличный пример четырёх концепций от среднего до продвинутого уровня JavaScript, поэтому решил записать и обосновать своё объяснение.
JavaScript

Введение в деструктуризацию массивов в ES6

Деструктуризация в JavaScript — упрощенный метод извлечения нескольких свойств из массива путем извлечения структуры и разложения её на составные части с помощью присваивания, используя синтаксис, похожий на литералы массива.
JavaScript

Объяснение JSON простым языком

Долгое время XML был предпочтительным форматом данных для обмена между двумя точками. Затем, в начале 2000 года, был представлена JSON как альтернативный формат данных для обмена информацией. В этой статье вы узнаете всё о JSON. Вы поймёте, что это такое, как им пользоваться, и мы проясним несколько заблуждений.
CSSFrontend

Защитный CSS — коллекция сниппетов

Часто хочется, чтобы был способ избежать возникновения определённой проблемы или поведения CSS. Вы знаете, что контент динамический, и на веб-странице всё может измениться, что увеличивает вероятность возникновения проблемы с CSS или странного поведения.
CSS

CSS: Современные селекторы псевдоклассов

Проект черновика рабочей группы CSS для Selectors Level 4 включает несколько селекторов псевдоклассов, которые уже поддерживаются в большинстве современных браузеров. В этом руководстве будут рассмотрены те из них, которые имеют наилучшую поддержку, а так же приведены примеры, демонстрирующие как вы можете их использовать уже сейчас.
SymfonyBackend

Новое в Symfony 5.4: Различные улучшения (часть 3)

Улучшения в Symfony 5.4: более длинные интервалы для компонента RateLimiter; простой способ создания ошибок в компоненте Validator; блокировка файлов при добавлении данных в методе Filesystem; экстрактор метаданных PhpStan для компонента PropertyInfo
SymfonyBackend

Новое в Symfony 5.4: Различные улучшения (часть 2)

Улучшения в Symfony 5.4: настраиваемый статус-код HTTP для шаблонов из маршрутов; новый метод innerText() в компоненте DomCrawler; рекурсивная поддержка .gitignore в компоненте Finder, и новая команда для отладки переменных окружения.
SymfonyBackend

Новое в Symfony 5.4: Улучшения сериализатора

Symfony 5.4 вышел несколько дней назад, но у нас ещё есть записи в блоге об улучшениях основных функций ожидающие своей публикации. В этой публикации мы расскажем об улучшениях добавленных в компонент Serializer.
SymfonyBackend

Новое в Symfony 5.4: Улучшения компонента Messenger

В Symfony версии 5.4 значительно улучшили компонент Messenger, теперь можно любой класс назначить обработчиком компонента, стало проще получать метаданные воркера и появилась обработка сообщений в пакетном режиме.
SymfonyBackend

Symfony: Обновление основной версии (c 5.4.0 до 6.0.0)

Каждые два года Symfony выпускает новый релиз основной/мажорной версии (изменяется первый номер). Эти выпуски довольно сложно обновить, поскольку они могут нарушать обратную совместимость. Однако, Symfony максимально упрощает процесс обновления. Это означает, что вы можете обновить большую часть своего кода до того, как основная версия будет выпущена в релиз. Это называется "сделать ваш код совместимым с будущим релизом".
CSSFrontend

CSS: Соотношение сторон или aspect-ratio

Важно иметь постоянное соотношение ширины и высоты изображений и других отзывчивых элементов. Мы много лет использовали в CSS хак с отступами, но сейчас у нас есть встроенная поддержка соотношения сторон в CSS. В этой статье я расскажу, что такое соотношение сторон, как мы его использовали и как это делать по-новому. Конечно, будут варианты использования с подходящими запасными вариантами.
CSSFrontend

CSS: Отзывчивые макеты, меньше CSS медиа запросов

Мы не можем говорить о веб-разработке, не упоминая Отзывчивый Дизайн. В наши дни это просто данность, и так было уже много лет. Медиа запросы — часть отзывчивого дизайна, и они никуда не денутся. С момента появления медиа-запросов (буквально десятилетия назад) CSS эволюционировал до такой степени, что существует множество трюков, которые могут нам помочь существенно сократить количество медиа-запросов. В некоторых случая я покажу вам, как заменить несколько медиа-запросов только одним CSS объявлением. Эти подходы могут привести к уменьшению объёма кода, упрощению обслуживания и большей степени привязаны к имеющемуся контенту.
GitTools

Объяснение Git: Диапазоны коммитов

Команды Git log и diff полезны для проверки изменений вашего репозитория. Обе команды принимают диапазоны коммитов в разных форматах, что может сбивать с толку. В этой статье я пролью свет на различия между диапазонами коммитов a b, a..b, a...b.
GitTools

Объяснение Git: Переписывание истории

Одной из основных возможностей Git является переписывание истории, т.е. изменение существующих коммитов. Я использую кавычки, потому что — несмотря на видимость — история Git неизменна. Изменить или удалить существующий коммит обычными командами Git невозможно.
CSSFrontend

CSS: Анимация подчёркивания ссылок

Недавно я добавил в этот блог простой визуальный эффект, который мне быстро понравился: когда вы наводите курсор на ссылку, анимированное подчёркивание ссылки раскрывается из центра. Создать этот эффект на удивление легко и не требует добавления каких-либо дополнительных элементов в DOM HTML.
VimTools

Vim: 7 вещей, которые вы должны знать

В этой статье я хотел бы объяснить некоторые вещи о Vim, которые большинство людей не знают. От причин, по которым он был разработан таким, какой он есть. До некоторых замечательных скрытых функций, которые вы, вероятно, (ещё) не используете.