WebCraft - ремесло веб разработки – Telegram
WebCraft - ремесло веб разработки
5.53K subscribers
2.16K photos
322 videos
2 files
352 links
Интересуешься php , js , css , html , Laravel , Vue ? Этот канал для тебя

Админ, сотрудничество, реклама: @seniorFrontPromo, @maria_seniorfront

Купить рекламу: https://telega.in/c/web_craft
Download Telegram
Как передать параметры в addEventListener

Попытка передать параметры в обработчик addEventListener напрямую часто приводит к тому, что функция выполняется сразу, а не по событию. Статья наглядно объясняет, почему так происходит, и разбирает правильные подходы. Рассматриваются чистые решения с использованием анонимных функций и метода .bind() для корректной передачи данных.

👉 @web_craft | #frontend
3
Поведение при сбое в пуле

Что произойдет по умолчанию, если один из запросов в пуле исчерпает все повторные попытки, указанные в методе retry?

Забыли? Вернитесь к посту от 25.08.2025.

👉 @web_craft | #laravel
2
Типы аргументов

Что из перечисленного может выступать аргументом для import.meta.resolve()?

Забыли? Вернитесь к посту от 26.08.2025.

👉 @web_craft | #frontend
3
Что из перечисленного может выступать аргументом для import.meta.resolve()?
Anonymous Quiz
40%
Только относительные пути.
19%
Только имена пакетов.
30%
Импорт из node_modules.
12%
Только URL-адреса.
3
Создание коллекций с повторяющимися элементами

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

Статический метод Collection::times() предлагает более декларативный подход. Он создает новую коллекцию, запуская переданную функцию указанное количество раз. Индекс текущей итерации передается в функцию, что позволяет легко генерировать уникальные значения.

use Illuminate\Support\Collection;

// Задача: создать коллекцию из 10 пользователей
// с уникальными именами User 1, User 2 и т.д.

// Традиционный подход с циклом for:
$users = new Collection();
for ($i = 1; $i <= 10; $i++) {
$users->push((object)['name' => 'User ' . $i]);
}

// Подход с методом times():
$users = Collection::times(10, function (int $number) {
return (object)['name' => 'User ' . $number];
});


👉 @web_craft | #laravel
👍7🤔2
Асинхронная координация потоков

SharedArrayBuffer можно создавать с изменяемым размером, указав опцию maxByteLength и вызывая метод resize(). Для координации потоков без блокировок предназначен Atomics.waitAsync(). Он асинхронно ожидает, пока другой поток изменит значение в указанной ячейке памяти. После изменения worker вызывает Atomics.notify().

// Главный поток
const sab = new SharedArrayBuffer(1024, { maxByteLength: 4096 });
const int32 = new Int32Array(sab);

console.log('Ожидаем изменения от воркера...');
const asyncWait = Atomics.waitAsync(int32, 0, 0); // Ждем, пока значение в 0-м индексе станет не 0

asyncWait.promise.then((result) => {
console.log('Ожидание завершено:', result); // 'ok'
console.log('Новый размер буфера:', sab.byteLength);
});

// Код, который мог бы быть в воркере (worker.js)
/*
// ... получает sab и int32 ...
// Растит буфер
sab.resize(2048);
// Обновляет флаг
Atomics.store(int32, 0, 1);
// Уведомляет главный поток
Atomics.notify(int32, 0);
*/


👉 @web_craft | #frontend
4
Атрибут #[\NoDiscard] в PHP 8.5

Случайное игнорирование возвращаемого значения «чистой» функции может привести к трудноуловимым багам. Статья рассказывает об атрибуте #[\NoDiscard] в PHP 8.5, который решает эту проблему. При его использовании PHP выдаст предупреждение, если результат выполнения функции не был использован, что помогает статическим анализаторам находить потенциальные ошибки в коде.

👉 @web_craft | #php
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Ваши ожидания от удалёнки оправдались?

👍 – Да, всё как мечтал(а) — работаю и кайфую.

❤️ – Есть и плюсы, и минусы, но в целом устраивает.

🤔 – Не моё, максимум гибрид.

👉 @web_craft |#юмор
👍167🤔3
This media is not supported in your browser
VIEW IN TELEGRAM
Button Animation

Кнопка с многоступенчатой анимацией на чистом CSS.

👉 @web_craft | #frontend
2👍1
АНТИ-План по устройству в бигтех, или Как всё пошло не по плану

Многие разработчики месяцами готовятся к поиску работы мечты: доделывают портфолио и «тренируются» на неинтересных вакансиях. Автор статьи не стал исключением.

👉 @web_craft | #собес
2
Похоже на ваш рабочий день?

👍 – Да, если бы не было тимлида.

❤️ – Нет, я потом до вечера проверяю код от нейронки.

👉 @web_craft |#юмор
11🤔2
Сила Intl API: нативная интернационализация в браузере

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

👉 @web_craft | #frontend
3
Назначение метода guest

Какую основную задачу решает метод guest() фасада Auth?

Забыли? Вернитесь к посту от 01.09.2025.

👉 @web_craft | #laravel
3
Механизм работы top-level await

Как top-level await влияет на процесс загрузки модулей?

Забыли? Вернитесь к посту от 02.09.2025.

👉 @web_craft | #frontend
3
Условное определение атрибута disabled

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

Чтобы упростить подобные случаи, в Laravel была добавлена директива @disabled. Она принимает булево выражение и автоматически добавляет атрибут disabled, если условие истинно. Такой подход делает код более лаконичным и удобным для восприятия.

Предположим, требуется отключить кнопку, если пользователь не имеет права совершать определенное действие. Проверка осуществляется через метод $user->cannot('delete', $post).

Стандартный подход:
<button type="submit"
@if ($user->cannot('delete', $post))
disabled
@endif>
Удалить пост
</button>


Решение с директивой @disabled:
<button type="submit"
@disabled($user->cannot('delete', $post))>
Удалить пост
</button>


👉 @web_craft | #laravel
3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Cat Loader

Анимированный милый лоадер в виде котика.

👉 @web_craft | #frontend
1
Stateless сервисы в PHP

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

👉 @web_craft | #php
3
А вы кто в этой ситуации?

👍 - Мангальщик

❤️ - Проджектменеджер

👉 @web_craft |#юмор
4👍3🤔2