Что необходимо передать вторым аргументом в метод whereRelation при работе с morphTo-связью?
Anonymous Quiz
14%
Название колонки для фильтрации.
20%
Замыкание с дополнительными условиями.
63%
Класс родительской модели, к которой применяется условие.
2%
Массив возможных типов моделей.
👍3❤2
Клиентский интерфейс
Какой интерфейс используется на стороне клиента для подключения к потоку серверных событий (SSE)?
Забыли? Вернитесь к посту от12.05.2025 .
👉 @web_craft | #frontend
Какой интерфейс используется на стороне клиента для подключения к потоку серверных событий (SSE)?
Забыли? Вернитесь к посту от
👉 @web_craft | #frontend
❤2
Какой интерфейс используется на стороне клиента для подключения к потоку серверных событий (SSE)?
Anonymous Quiz
55%
WebSocket.
4%
MessagePort.
22%
EventStream.
18%
EventSource.
❤2👍1
Проверка статуса пользователя
Для проверки того, что пользователь не аутентифицирован, часто используется конструкция \!Auth::check(). Хотя это работает, отрицание может незначительно снижать читаемость кода.
В Laravel для этой же цели существует более выразительный метод guest(). Он возвращает true, если пользователь является гостем, делая код семантически более понятным и легким для восприятия.
👉 @web_craft | #laravel
Для проверки того, что пользователь не аутентифицирован, часто используется конструкция \!Auth::check(). Хотя это работает, отрицание может незначительно снижать читаемость кода.
В Laravel для этой же цели существует более выразительный метод guest(). Он возвращает true, если пользователь является гостем, делая код семантически более понятным и легким для восприятия.
<?php
// Задача: показать блок с кнопками входа и регистрации
// только для неавторизованных пользователей (гостей).
// Распространенный подход с отрицанием:
@if (!Auth::check())
<a href="/login">Войти</a>
<a href="/register">Регистрация</a>
@endif
// Более читаемый подход с методом guest():
@if (Auth::guest())
<a href="/login">Войти</a>
<a href="/register">Регистрация</a>
@endif
👉 @web_craft | #laravel
1👍6👎3
Асинхронная инициализация модулей
Раньше асинхронные операции на верхнем уровне модуля требовали сложных конструкций. С появлением
👉 @web_craft | #frontend
Раньше асинхронные операции на верхнем уровне модуля требовали сложных конструкций. С появлением
top-level await в ES-модулях (стандарт ES2022) стало возможным использовать await вне async-функций. Это позволяет модулю дождаться выполнения асинхронной задачи, прежде чем его код будет доступен для импорта в других модулях. Данный механизм упрощает инициализацию ресурсов или загрузку конфигурации.// file: config.js
// Имитируем асинхронное получение конфигурации
const response = await fetch('/api/config');
const config = await response.json();
// Экспортируем данные только после их получения
export default config;
// file: main.js
// Импорт модуля с top-level await
import config from './config.js';
// Этот код выполнится только после того,
// как промис в config.js будет разрешен.
console.log('Конфигурация загружена:', config);
function startApp() {
// Логика запуска приложения с использованием config
}
startApp();
👉 @web_craft | #frontend
❤2👍1
Декларативные запросы по дате в Laravel
Запросы для фильтрации по датам часто загромождаются конструкциями с
👉 @web_craft | #laravel
Запросы для фильтрации по датам часто загромождаются конструкциями с
Carbon или ручными сравнениями. Статья разбирает новые декларативные методы, такие как whereNowOrPast и whereFuture, которые упрощают подобные выборки. Использование данных хелперов делает код более чистым и выразительным.👉 @web_craft | #laravel
👍3❤1
Какая документация в вашем проекте самая «чувствительная»?
👍 – Та, которую никто не обновлял 5 лет.
❤️ – Мой собственный код.
🤔 – У вас есть документация?
👉 @web_craft |#юмор
👍 – Та, которую никто не обновлял 5 лет.
❤️ – Мой собственный код.
🤔 – У вас есть документация?
👉 @web_craft |#юмор
🤔9❤1👍1
Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования:
Выбирай своё направление:
Please open Telegram to view this post
VIEW IN TELEGRAM
Про IT в 2025 году
Раздутые зарплаты, сомнительное качество работы, фейковые резюме и требования работать по 2-3 часа в день являются реалиями современного IT. Статья представляет собой трезвый и критический взгляд на индустрию от разработчика с 20-летним опытом. Автор анализирует, как рынок дошёл до текущего состояния и прогнозирует, как он будет меняться в ближайшем будущем.
👉 @web_craft | #собес
Раздутые зарплаты, сомнительное качество работы, фейковые резюме и требования работать по 2-3 часа в день являются реалиями современного IT. Статья представляет собой трезвый и критический взгляд на индустрию от разработчика с 20-летним опытом. Автор анализирует, как рынок дошёл до текущего состояния и прогнозирует, как он будет меняться в ближайшем будущем.
👉 @web_craft | #собес
🤔3
Какая «оптимизация» в итоге обошлась вам дороже всего?
👍 – «Давай пока без тестов, потом напишем».
❤️ – «Зачем нам бэкапы? У нас надежный сервер».
🤔 – «Я напишу свой фреймворк, он будет быстрее».
👉 @web_craft |#юмор
👍 – «Давай пока без тестов, потом напишем».
❤️ – «Зачем нам бэкапы? У нас надежный сервер».
🤔 – «Я напишу свой фреймворк, он будет быстрее».
👉 @web_craft |#юмор
👍10🤔5
О странностях Javanoscript
Все знают о причудах
👉 @web_craft | #frontend
Все знают о причудах
== в JavaScript, но в языке есть и более коварные особенности, которые редко обсуждаются. Статья разбирает именно такие нетривиальные моменты. Рассматривается разное поведение eval, хитрый захват переменных в циклах, разреженные массивы и сложности перебора строк с Unicode.👉 @web_craft | #frontend
👍2
Условие вывода атрибута
В каком случае директива
Забыли? Вернитесь к посту от18.08.2025 .
👉 @web_craft | #laravel
В каком случае директива
@checked выводит атрибут checked?Забыли? Вернитесь к посту от
👉 @web_craft | #laravel
❤2
В каком случае директива @checked выводит атрибут checked?
Anonymous Quiz
10%
Всегда, когда переменная существует.
62%
Только если переданное ей условие истинно (true).
17%
Если значение переменной равно строке "checked".
11%
Если в форме есть хотя бы один отмеченный элемент.
👍3❤1
Определение окружения
Какое свойство браузера помогает определить операционную систему пользователя?
Забыли? Вернитесь к посту от19.08.2025 .
👉 @web_craft | #frontend
Какое свойство браузера помогает определить операционную систему пользователя?
Забыли? Вернитесь к посту от
👉 @web_craft | #frontend
❤2
Какое свойство браузера помогает определить операционную систему пользователя?
Anonymous Quiz
44%
Navigator.platform.
40%
Navigator.userAgent.
9%
Window.os.
7%
Document.system.
❤2
Фильтрация записей по времени
Фильтрация данных по текущей дате часто требует передачи
В Laravel существуют элегантные методы
👉 @web_craft | #laravel
Фильтрация данных по текущей дате часто требует передачи
now() в запросы, что может выглядеть громоздко. Особенно при сложных условиях, объединяющих прошлое и будущее.В Laravel существуют элегантные методы
whereDate(), whereNowOrPast() и whereFuture(), которые упрощают такие запросы. whereNowOrPast выбирает записи с датой в прошлом или настоящем, а whereFuture — только с датой в будущем. Это делает код более читаемым и декларативным.<?php
use App\Models\Event;
// Задача: получить все прошедшие и будущие события отдельно.
// Стандартный подход:
$pastEvents = Event::where('starts_at', '<=', now())->get();
$futureEvents = Event::where('starts_at', '>', now())->get();
// Подход с новыми методами:
$pastEventsClean = Event::whereNowOrPast('starts_at')->get();
$futureEventsClean = Event::whereFuture('starts_at')->get();
👉 @web_craft | #laravel
👍7❤1
Безопасные динамические шаблоны
При создании регулярного выражения из динамической строки возникает проблема специальных символов. Символы вроде
👉 @web_craft | #frontend
При создании регулярного выражения из динамической строки возникает проблема специальных символов. Символы вроде
. или + имеют особое значение. Для их корректной обработки предназначен статический метод RegExp.escape(). Он экранирует все спецсимволы в строке, подготавливая её для безопасного включения в шаблон. Данный метод является кандидатом в стандарт ECMAScript (Stage 3).// Строка от пользователя, которую нужно найти
const userQuery = 'node.js (v18+)';
// Неправильный подход: спецсимволы ломают шаблон
const brokenRegex = new RegExp(userQuery);
// Получится /node.js (v18+)/, что ищет совсем не то, что нужно.
console.log(brokenRegex.test('I use node.js (v18+)')); // false
// Правильный подход с использованием предложенного метода
const escapedQuery = RegExp.escape(userQuery);
// escapedQuery станет 'node\\.js \\(v18\\+\\)'
const correctRegex = new RegExp(escapedQuery);
console.log(correctRegex.test('I use node.js (v18+)')); // true
👉 @web_craft | #frontend
❤2👍1
Автоматизация анонимизации данных для GDPR в Symfony
Процесс анонимизации пользовательских данных для GDPR-запросов часто выполняется вручную и подвержен ошибкам. Статья предлагает решение для автоматизации этой задачи в Symfony. В ней разбирается паттерн с использованием PHP-атрибутов для разметки персональных данных, что позволяет запускать анонимизацию для связанных сущностей одной консольной командой.
👉 @web_craft | #php
Процесс анонимизации пользовательских данных для GDPR-запросов часто выполняется вручную и подвержен ошибкам. Статья предлагает решение для автоматизации этой задачи в Symfony. В ней разбирается паттерн с использованием PHP-атрибутов для разметки персональных данных, что позволяет запускать анонимизацию для связанных сущностей одной консольной командой.
👉 @web_craft | #php
👍3