Заметки разработчика
471 subscribers
671 photos
4 videos
1.17K links
Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов.

https://www.dev-notes.ru

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

https://www.dev-notes.ru/articles/devops/networking-101/
Если вы читаете эту статью, то, скорее всего, вы использовали систему доменных имён (DNS), даже не подозревая об этом. DNS — фундаментальная часть интернета, которая позволяет нам получать доступ к веб-сайтам и онлайн-услугам, используя вместо цифровых адресов удобные для человека имена. Но как именно она работает? В этой статье я расскажу об основах DNS и о том, как она помогает нам ориентироваться в Интернете.

https://www.dev-notes.ru/articles/devops/everything-you-need-to-know-about-dns/
Со свойствами фона CSS можно сделать очень многое. В этой статье мы рассмотрим, как использовать свойство background-size для установки размера фонового изображения, а также изучим варианты позиционирования фонового изображения с помощью background-position.

https://www.dev-notes.ru/articles/css/how-to-use-css-background-size-and-background-position/
PHP поддерживает замену значений PHP INI на переменные окружения с помощью синтаксиса строковой интерполяции PHP. Если указанная переменная окружения недоступна, парсер INI использует пустую строку. В PHP 8.3 этот синтаксис расширен для поддержки объявления запасного/fallback значения, если переменная окружения не установлена.

https://www.dev-notes.ru/articles/php/php-83-php-ini-envar-fallback-value-syntax/
Для разработчика важно иметь твёрдое представление, что такое интернет и как он работает. Это фундамент, на котором строится большинство современных программных приложений. Чтобы создавать эффективные, безопасные и масштабируемые приложения и сервисы, необходимо хорошо понимать, как работает интернет и как использовать его возможности и связи.

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

https://www.dev-notes.ru/articles/devops/how-does-internet-work/
В PHP CLI предусмотрена функция линтинга, которая проверяет переданное имя файла на наличие синтаксических ошибок. Это удобно для быстрой проверки PHP-файла или фрагмента перед выполнением.

До версии PHP 8.3 не было возможности проверять несколько PHP-файлов в одном вызове; независимо от количества файлов, PHP CLI проверял только первый файл.

https://www.dev-notes.ru/articles/php/php-83-cli-lint-multiple-files/
В этой статье мы рассмотрим несколько способов стилизации полосы прокрутки в CSS, в разных браузерах, чтобы вы могли настроить полосу прокрутки по умолчанию в соответствии с вашим брендом или дизайном.

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

https://www.dev-notes.ru/articles/css/guide-styling-css-scrollbars/
PHP-функция class_alias() создаёт псевдоним для заданного класса. Псевдоним ведёт себя точно так же, как и оригинальный класс.

До версии PHP 8.3 попытка присвоить псевдоним встроенному классу PHP приводила к исключению ValueError.

https://www.dev-notes.ru/articles/php/php-83-class_alias-php-built-in-classes-supported/
Как очистить базу данных удалив ненужные данные с помощью встроенной функции Laravel для повышения производительности запросов.

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

Среди распространённых методов — создание индексов, переписывание запросов и даже перепроектирование базы данных.

Но есть и другое очевидное решение, которое также может быть применено, — это очистка данных.

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

https://www.dev-notes.ru/articles/eloquent/schedule-periodic-database-clean-up-on-laravel/
PHP предоставляет функции parse_ini_string и parse_ini_file, которые повторно используют встроенный в PHP синтаксический анализатор, применяемый для собственных конфигурационных файлов PHP на основе INI.

Помимо разбора текста, парсер INI поддерживает наследование значений системного окружения и констант PHP, объявленных к моменту разбора текста. Начиная с версии PHP 8.3, он также поддерживает синтаксис запасных (fallback) значений для переменных окружения.

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

https://www.dev-notes.ru/articles/php/php-83-parse_ini_string-file-security-considerations/
Исследуем тип Record в TypeScript, чтобы лучше понять, как он работает. Также рассмотрим примеры его использования, например, использование с дженериками.

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

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

https://www.dev-notes.ru/articles/typescript/level-up-typescript-record-types/
Недавно Тейлор выложил бета-версию Laravel Folio на YouTube в видеоролике с ключевой конференции Laracon. В настоящее время документация состоит только из файла readme, что отражает простоту пакета. Благодаря своей простоте мы можем легко догадаться о его внутреннем устройстве. Я решил углубиться в эту тему, и в этой статье мы отправимся на поиски его внутренних механизмов.

https://www.dev-notes.ru/articles/laravel/folio-deep-dive/
Многие веб-сайты и веб-приложения, с которыми вы ежедневно взаимодействуете, предоставляют информацию в режиме реального времени. Например, при использовании приложения для обмена сообщениями сообщения появляются на экране сразу после их отправки, не требуя обновления страницы в браузере.

Как правило, подобная функциональность реального времени реализуется в веб-приложениях с помощью WebSockets.

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

https://www.dev-notes.ru/articles/laravel/a-guide-to-using-websockets-in-laravel/
В программировании на Node.js модули — это самодостаточные единицы функциональности, которые можно совместно использовать и переиспользовать в разных проектах. Они облегчают нам жизнь как разработчикам, поскольку мы можем использовать их для дополнения наших приложений функциональностью, которую нам не пришлось писать самим. Они также позволяют упорядочить и разделить код, что приводит к созданию приложений, которые легче понять, отладить и поддерживать.

В этой статье я рассмотрю, как работать с модулями в Node.js, уделяя особое внимание их экспорту и использованию.

https://www.dev-notes.ru/articles/javascript/understanding-module-exports-exports-node-js/
TLS 1.3 имеет ряд улучшений по сравнению со своим предшественником TLS 1.2, включая повышенную безопасность и более быстрое время соединения. Однако его включение требует тщательной настройки веб-сервера. Если вы используете Apache или Nginx, то в этом руководстве мы пошагово рассмотрим процесс включения TLS 1.3 в Apache и Nginx на двух популярных дистрибутивах Linux (Ubuntu и CentOS).

Прежде чем перейдём к рассмотрению данного руководства, необходимо отметить, что оно предполагает, что вы обладаете базовым пониманием интерфейса командной строки Linux и знакомы с администрированием веб-серверов. Кроме того, на вашем сервере Ubuntu или CentOS уже должны быть установлены Apache или Nginx.

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

Теперь давайте приступим к включению TLS 1.3 на вашем сервере Apache или Nginx.

https://www.dev-notes.ru/articles/devops/how-to-enable-tls-1-3-in-apache-and-nginx-on-ubuntu-and-centos/
Веб-серверы представлены в различных формах, каждая из которых имеет свои уникальные особенности, достоинства и недостатки. От мощного Apache с открытым исходным кодом до высокопроизводительного и эффективного Nginx, от удобного интерфейса IIS от Microsoft до лёгкого и быстрого LiteSpeed — выбор разнообразен и зачастую просто ошеломляет.

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

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

https://www.dev-notes.ru/articles/devops/best-web-server-2023/
Миксины SCSS обеспечивают эффективный способ повторного использования CSS-кода. Миксины уменьшают дублирование и улучшают структуру кода за счёт инкапсуляции стилей в блоки многократного использования. Благодаря возможности принимать аргументы, миксины становятся невероятно адаптивными и универсальными. В этой статье мы расскажем о том, как SCSS-миксины улучшают разработку фронтенда, способствуя модульности и согласованности кода, и упрощая написание CSS.

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

https://www.dev-notes.ru/articles/css/reuse-code-master-scss-mixins/
Сравнение объектов в JavaScript не так просто, как сравнение примитивных типов данных. В статье рассматриваются пять способов глубокого сравнения объектов в JS.

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

https://www.dev-notes.ru/articles/javascript/five-different-ways-to-deep-compare-objects/
#Laravel Совет: после изменения записи Eloquent вы можете получить исходные атрибуты, вызвав getOriginal()
Следование стандартным соглашениям об именовании повышает читабельность и облегчает понимание кода. Однако многие разработчики не знают, как правильно использовать соглашения об именовании, и иногда усложняют ситуацию.

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

https://www.dev-notes.ru/articles/javascript/ten-js-naming-conventions-every-developer-should-know/