WebCraft - ремесло веб разработки @web_craft Channel on Telegram

WebCraft - ремесло веб разработки

@web_craft


Интересуешься php , js , css , html , Laravel , Vue ? Этот канал для тебя

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

Купить рекламу: https://telega.in/c/web_craft

WebCraft - ремесло веб разработки (Russian)

Если вы интересуетесь php, js, css, html, Laravel, Vue, то канал @web_craft идеально подойдет для вас. Здесь вы найдете самые актуальные новости, полезные советы, интересные статьи и многое другое, связанное с веб-разработкой. nnАдмины канала всегда рады помочь вам и ответить на ваши вопросы. Если у вас есть предложения по сотрудничеству или вы хотите разместить рекламу, обратитесь к админам @seniorFrontPromo или @maria_seniorfront. Менеджер по рекламе @Spiral_Yuri также всегда готов проконсультировать вас и помочь с размещением вашей рекламы. nnНе упустите возможность купить рекламу на канале @web_craft и донести ваше сообщение до тысяч подписчиков. Посетите https://telega.in/c/web_craft для получения дополнительной информации и приобретения рекламного места. Присоединяйтесь к каналу WebCraft - ремесло веб разработки и расширьте свои знания и навыки в области веб-разработки!

WebCraft - ремесло веб разработки

29 Nov, 08:02


А как вы относитесь к лени?

👍 - Это мой козырь, ленивый человек быстрее сделает всю свою работу, чтобы у него осталось больше времени на "ничего не делать".

❤️ - Я к ней не отношусь.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

28 Nov, 14:36


Circus - CSS Doodle

Анимация дудла на CSS.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

28 Nov, 07:12


Новый оператор JavaScript, который значительно упрощает код

Статья описывает новый оператор ?= в JavaScript, который упрощает обработку ошибок при присваивании, делая код более компактным и читабельным, без использования try-catch.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

27 Nov, 06:52


Знакомо? Решение всех проблем одним вопросом.

👍 - Да, это работает.

🤔 - Пробовал, не помогает.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

26 Nov, 14:33


Настраивать xdebug для первого запуска не нужно вообще! Как в Phpstorm запустить отладку за минуту и без браузера

Статья описывает упрощённый метод настройки Xdebug в PhpStorm для отладки PHP-скриптов без необходимости конфигурирования файлов php.ini или xdebug.ini.

👉 @web_craft | #php

WebCraft - ремесло веб разработки

26 Nov, 07:29


Метод FinalizationRegistry для автоматической очистки памяти

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

FinalizationRegistry создаёт "реестр финализации", в который можно зарегистрировать объекты с указанием "очистительной" функции, которая будет вызвана сборщиком мусора, когда объект станет недоступен.

Пример:
const registry = new FinalizationRegistry((heldValue) => {
console.log(`Ресурс "${heldValue}" был очищен из памяти`);
});

(function() {
let userSession = { id: 'session_12345' };
registry.register(userSession, 'User Session Resource');
userSession = null; // Устанавливаем в null, чтобы позволить сборщику мусора освободить память
})();

Здесь объект userSession регистрируется с меткой "User Session Resource", и когда сборщик мусора удалит его, будет выполнена функция, выводящая сообщение об освобождении памяти.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

25 Nov, 08:11


Внедрение Dependency Injection через Service Container в Laravel

Метод Route::macro() в Laravel позволяет добавлять собственные методы в маршрутизацию, это расширяет возможности стандартного роутинга и позволяет создавать более читабельный код.

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

Пример использования:
use Illuminate\Support\Facades\Route;

Route::macro('adminRoutes', function ($callback) {
Route::prefix('admin')
->namespace('Admin')
->middleware('auth')
->group($callback);
});

Route::adminRoutes(function () {
Route::get('/dashboard', 'DashboardController@index');
Route::resource('users', 'UserController');
});

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

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

24 Nov, 09:17


Работа с методом queueMicrotask()

В какой момент выполняется задача, добавленная через queueMicrotask()?

Если забыли, то вернитесь к посту от 05.11.2024.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

23 Nov, 14:15


Работа с методом whenHas()

Для чего используется метод whenHas()?

Если забыли, то вернитесь к посту от 04.11.2024.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

22 Nov, 08:06


Все так и было.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

21 Nov, 15:10


YSWS - Cascade Submission

Пример анимации на СSS.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

21 Nov, 07:31


Как JavaScript обрабатывает синтаксические ошибки до выполнения вашего кода

Статья объясняет, как JavaScript обрабатывает синтаксические ошибки перед выполнением кода. Автор рассказывает о процессе "парсинга" (разбора) кода, когда движок JavaScript проверяет его на ошибки перед запуском. Если в коде есть синтаксическая ошибка, выполнение прерывается, и программа не запускается. Также рассматриваются типичные примеры синтаксических ошибок и объясняется, как их избежать для стабильной работы приложений.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

20 Nov, 08:31


Возникают сложности, когда используете чужой код?

👍 — Нет, я всё понимаю.

🤔 — Иногда встречаются сюрпризы.

❤️ — Проще самому все сделать.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

19 Nov, 18:00


Как запретить выполнение опасных команд базы данных в Laravel

Статья рассказывает, как в Laravel можно предотвратить выполнение опасных команд базы данных (например, db:wipe, migrate:fresh) в продакшене, используя метод DB::prohibitDestructiveCommands(). Это помогает защитить данные от случайного удаления или изменения в рабочей среде.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

19 Nov, 14:00


💭 Многие разработчики представляют себе IT как сферу постоянного развития, высоких зарплат и интересных проектов. Однако, на практике часто оказывается иначе: работа с устаревшим стеком, рутинные задачи и стагнация дохода. Это вызывает вопросы: как перейти на новые технологии, как выйти на более высокий уровень и добиться зарплаты, соответствующей вложенным усилиям?

Эти вопросы — не редкость. Множество программистов сталкиваются с такой ситуацией, но выйти из неё вполне реально. В своём канале я делюсь конкретными действиями, которые помогают:

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

Подписаться на канал

WebCraft - ремесло веб разработки

19 Nov, 08:10


Метод Reflect.construct() для динамического создания экземпляров классов

Метод Reflect.construct() предоставляет инструмент для динамического создания экземпляров классов в JavaScript. В отличие от обычного вызова конструктора через new, Reflect.construct() позволяет вызывать конструкторы с массивом аргументов и даже устанавливать прототип для нового объекта.

Например, создадим класс User и динамически создадим его экземпляр с помощью Reflect.construct():
class User {
constructor(name, age) {
this.name = name;
this.age = age;
}
}

const user = Reflect.construct(User, ['Alice', 25]);
console.log(user); // User { name: 'Alice', age: 25 }


В этом примере Reflect.construct() вызывает конструктор User с массивом аргументов ['Alice', 25]. Такой подход позволяет гибко инициализировать объекты, когда их тип и параметры неизвестны на этапе компиляции.

Дополнительно можно передать третий параметр — прототип для создаваемого объекта.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

18 Nov, 07:40


Внедрение Dependency Injection через Service Container в Laravel

Dependency Injection (DI) — паттерн, позволяющий передавать зависимости объекта извне, а не создавать их внутри. В Laravel DI реализуется через Service Container.

С помощью Service Container мы можем привязывать классы и интерфейсы, позволяя Laravel автоматически разрешать зависимости. Представьте, что у нас есть интерфейс PaymentGatewayInterface и его реализация StripePaymentGateway. Мы можем зарегистрировать его в контейнере:
$this->app->bind(PaymentGatewayInterface::class, StripePaymentGateway::class);

Теперь, при вызове PaymentGatewayInterface, Laravel передаст объект StripePaymentGateway. Это упрощает подмену реализаций, например, для тестирования.

Также можно использовать singleton, если нужно, чтобы зависимость создавалась один раз на весь жизненный цикл приложения:
$this->app->singleton(PaymentGatewayInterface::class, StripePaymentGateway::class);

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

17 Nov, 09:13


Работа с Symbol.iterator

Какую роль выполняет Symbol.iterator в объекте?

Если забыли, то вернитесь к посту от 29.10.2024.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

16 Nov, 15:14


Использование метода replicate()

Что происходит с полями модели в процессе выполнения replicate()?

Если забыли, то вернитесь к посту от 28.10.2024.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

16 Nov, 06:52


Чему я научился, пройдя множество собеседований в компаниях и стартапах из сферы ИИ

В статье автор делятся выводами о подготовке к собеседованиям в крупных IT-компаниях, таких как DeepMind и Microsoft. Автор рассказывает о создании портфолио, GitHub-профиля, успешном прохождении интервью, а также о выборе компаний по их целям и возможностям для развития.

ИИ - это не совсем по теме нашего канала, но опыт, практики и советы автора будут полезны всем, кто ищет работу в области разработки.

👉 @web_craft | #собес

WebCraft - ремесло веб разработки

15 Nov, 08:02


Сколько времени уходит на обдумывание кода?

👍 — Больше половины времени.

❤️ — Чуть-чуть, сразу код пишу.

🤔 — Всё зависит от задачи.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

14 Nov, 14:36


BOUNCY Radio Selector

Прыгающий селектор кнопок на CSS.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

14 Nov, 07:12


Как заставить все показатели Lighthouse показывать 100 баллов с помощью JavaScript

Статья описывает простой JavaScript-код, который временно меняет отображаемые баллы в отчёте Google Lighthouse на 100. Этот трюк предназначен исключительно для забавы или демонстрации, так как он не влияет на реальные показатели производительности или качества сайта. Автор объясняет, как вставить код в браузерную консоль, чтобы измененные баллы отобразились в интерфейсе Lighthouse.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

13 Nov, 06:52


Как реагируете, когда фичу отменяют после долгой работы?

👍 — Обида и грусть.

❤️ — Принимаю как есть.

🤔 — Зависит от фичи.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

12 Nov, 14:33


Как реализовать классы-обёртки в PHP

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

👉 @web_craft | #php

WebCraft - ремесло веб разработки

12 Nov, 07:29


Создание глубокой копии объекта с помощью structuredClone()

Метод structuredClone() — это встроенная функция JavaScript для создания глубокой копии объектов, включая сложные структуры, такие как вложенные массивы и объекты. Раньше для этого использовали различные техники, такие как JSON.stringify/parse или рекурсивные функции.

Преимущество structuredClone() в том, что он корректно обрабатывает многие типы данных, включая Map, Set, ArrayBuffer, и даже циклические ссылки, с которыми не справляется метод JSON.stringify().

Пример:
const original = { name: "Alex", data: { age: 25, hobbies: ["reading", "gaming"] } };
const copy = structuredClone(original);
copy.data.age = 26;

console.log(original.data.age); // 25, оригинальный объект не изменился
console.log(copy.data.age); // 26, независимая копия

Здесь structuredClone() создаёт полную копию объекта original, позволяя изменять данные в copy без влияния на оригинальный объект.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

11 Nov, 10:08


Как не терять сообщения в Symfony при отправке через внешний брокер?

Разберёмся на бесплатном открытом уроке «Надёжная отправка и получение сообщений через RabbitMQ в Symfony»

Дата и время: 12 ноября, 20:00 МСК

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

🔥Вебинар проведёт Михаил Каморин, техлид в Skyeng

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

После открытого урока можно записаться на курс «Symfony Framework», который доступен в рассрочку

👉🏻
Записаться на событие

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 erid 2SDnjdtxCPu

WebCraft - ремесло веб разработки

10 Nov, 18:07


Проверка подписанных URL-адресов с помощью signedRoute() в Laravel

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

Пример создания подписанного URL:
use Illuminate\Support\Facades\URL;

$url = URL::signedRoute('user.verify', ['user' => 1]);

В этом примере создается URL с подписью для маршрута user.verify. Если кто-то изменит параметры URL, подпись станет недействительной, и Laravel отклонит запрос.

Проверка подписи:
Для этого достаточно добавить Middleware signed, который автоматически проверяет действительность ссылки:
Route::get('/email/verify', function () {
// действие
})->name('user.verify')->middleware('signed');

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

10 Nov, 09:17


Работа с методом Object.getOwnPropertySymbols()

Что возвращает метод Object.getOwnPropertySymbols()?

Если забыли, то вернитесь к посту от 22.10.2024.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

09 Nov, 14:15


Работа с методом метод assertViewIs()

Что проверяет метод assertViewIs() в Laravel?

Если забыли, то вернитесь к посту от 21.10.2024.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

08 Nov, 17:45


Как пройти собеседование на backend в топовую IT-компанию

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

👉 @web_craft | #собес

WebCraft - ремесло веб разработки

08 Nov, 15:40


Закрытый клуб для айтишников

FAANG School, чьи выпускники работают в Яндексе, СБЕРЕ и других гигантах, запустили бесплатное сообщество для всех, кто изучает Java.

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

В чате уже больше 10 000 человек, а новенькие, которые подключатся сейчас, получат доступ к большой библиотеке Java Junior с полезными материалами:

– Пошаговая RoadMap по Java
– Мануал по Docker. Основные команды и концепции
– Микросервисы. Вопросы с собеседований
– Шпаргалка по Kafka
– Инструкция по работе с Git
– Подробный гайд, как найти работу в IT без опыта
– Подборка платформ с вакансиями для java-разработчиков

Вступай сейчас. Открыли доступ всего на 24 часа!

WebCraft - ремесло веб разработки

08 Nov, 08:06


Когда не хочешь разбираться в регулярных выражениях.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

07 Nov, 13:00


CSS 16x16 display

Примеры пиксельных анимаций на CSS.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

07 Nov, 06:02


Приходите на курс “PHP Performance”

Хороший программист не только умеет пилить классные фичи, но и знает, как работает его код в продакшене, а также может разобраться, почему его сервис тормозит. Для этого слово «телеметрия» должно стать не просто словом, а инструментом для поиска и устранения проблем.

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

🌐 В программе курса:

▪️
Архитектура бекенд-серверов на PHP и её особенности: php-fpm, RoadRunner, использование ресурсов, параметры конфигурации
▪️OpenTelemetry: применение на примере SigNoz
▪️Суб-real-time телеметрия поверх UDP c PINBA и промстэком (Grafana/Prometheus).

🥸 Кто мы: R&D-центр https://devhands.ru, наш канал (https://t.me/rybakalexey). Автор курса — Михаил Курмаев, эксперт по сложным распределённым системам. Долгое время строил платформу в Badoo/Bumble, сейчас в Т-банке развивает дата-платформу.

🗓 Старт курса: 28 ноября, 4 недели обучения.
Изучить программу и записаться можно здесь.

Ждем вас!

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqufgxJq

WebCraft - ремесло веб разработки

06 Nov, 14:00


Ставить точку с запятой в JavaScript или нет?

Статья обсуждает дилемму в JavaScript: стоит ли использовать точку с запятой. В языке есть механизм автоматической вставки точек с запятой (ASI), который позволяет пропускать их в некоторых случаях. Однако есть ситуации, когда их отсутствие может привести к ошибкам.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

06 Nov, 12:00


💻 10 лет в IT, и я публикую только то, что сам читаю или собираюсь прочитать.
Это самые важные статьи и новости, которые действительно нужны разработчику.

Решил поделиться тем, что помогает мне быть в курсе всего.

Подписывайся на DevDrafts | RSS — здесь только то, что стоит твоего времени!

👉 @devdrafts_rss

WebCraft - ремесло веб разработки

06 Nov, 08:31


А у вас бывали такие же глупые ошибки?

👍 - Да.

❤️ - Нет.

🤔 - Жду бригаду в комментах.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

05 Nov, 15:20


Автоматизация резервного копирования баз данных c Laravel

Статья рассказывает, как автоматизировать резервное копирование баз данных в Laravel. В ней объясняется, как использовать планировщик задач Laravel и сторонние облачные хранилища, такие как AWS S3, для создания и хранения бэкапов базы данных. Пошагово описывается создание пользовательской команды Artisan, настройка регулярных резервных копий и конфигурация для безопасного хранения данных в облаке.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

05 Nov, 08:10


Метод queueMicrotask() в JavaScript

Метод queueMicrotask() добавляет микрозадачу в очередь для выполнения после текущего синхронного кода, но перед макрозадачами. Это полезно, когда нужно выполнить что-то асинхронно, но без задержек.
function simulateHeavyOperation() {
console.log('Начало операции');
queueMicrotask(() => {
console.log('Микрозадача 1');
});

for (let i = 0; i < 1e6; i++) {
if (i === 1e6 - 1) {
console.log('Операция завершена');
}
}

queueMicrotask(() => {
console.log('Микрозадача 2');
});

console.log('Завершение основной задачи');
}

simulateHeavyOperation();

// Макрозадача
setTimeout(() => {
console.log('Макрозадача');
}, 0);

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

Микрозадачи будут выполнены между завершением основной операции и перед макрозадачей setTimeout().

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

04 Nov, 07:40


Условная фильтрация через наличие реляционных данных

Метод whenHas() в Laravel Eloquent позволяет гибко управлять запросами, добавляя условия только тогда, когда существуют связанные реляционные данные. Это упрощает работу с запросами к базе данных, где нужно учитывать наличие связи с другой таблицей. Например, можно динамически добавлять фильтрацию по записям, у которых есть связанные комментарии. Это сокращает количество ненужных запросов и повышает производительность, так как дополнительная логика применяется только к тем данным, где она необходима.

Пример:
$posts = Post::query()
->whenHas('comments', function ($query) {
$query->where('approved', true);
})
->get();

В этом примере запрос вернёт только те записи из модели Post, у которых есть одобренные комментарии.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

03 Nov, 09:13


Работа с Object.preventExtensions()

Что произойдёт при попытке добавить новое свойство в объект после вызова Object.preventExtensions(obj)?

Если забыли, то вернитесь к посту от 14.10.2024.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

02 Nov, 15:14


Работа с хуком eloquent.restoring

Когда срабатывает хук eloquent.restoring?

Если забыли, то вернитесь к посту от 14.10.2024.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

02 Nov, 06:52


Вопросы и ответы для собеседования на позицию frontend-разработчик

Статья рассматривает типовые вопросы, с которыми можно столкнуться на техническом собеседовании для frontend-разработчика. Она охватывает ключевые темы, такие как работа с циклом событий, различие между типами данных, работа с this, разница между var, let, const, замыкания и другие концепции JavaScript.

👉 @web_craft | #собес

WebCraft - ремесло веб разработки

01 Nov, 08:02


Вам тяжело дался CSS?

👍 - Без особых проблем.

🤔 - Он мне еще не дался.

❤️ - Новые навыки это всегда нелегко.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

31 Oct, 14:36


Spinner

Анимация узора на чистом CSS.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

31 Oct, 07:12


Компиляторы лучше людей

Статья о том, почему компиляторы могут быть эффективнее человека в рутинных задачах программирования, приводя примеры использования Kotlin и его корутин. Автор рассматривает, как Kotlin упрощает многопоточность и управление асинхронными процессами.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

30 Oct, 06:52


Похоже на ваши комментарии?

❤️ - 100%

👍 - Вы просто еще не видели мои комментарии.

🤔 - Нет, первый раз такое вижу.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

29 Oct, 14:33


Гибкое кэширование в Laravel — это очень просто

Статья рассказывает о функции кэширования в Laravel — Cache::flexible(), которая позволяет балансировать между производительностью и свежестью данных с помощью двухуровневой системы TTL (Time to Live). Обсуждаются сценарии применения метода, такие как рекомендации в интернет-торговле, работа с аналитикой, и рассматриваются примеры реализации. Также описаны ситуации, когда эту функцию не следует использовать.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

29 Oct, 07:29


Symbol.iterator в JavaScript

Symbol.iterator — это встроенный символ в JavaScript, который позволяет объектам быть итерируемыми с помощью цикла for...of. Это важно для создания собственных итераторов и управления последовательным доступом к данным объекта.

Пример:
const iterableObj = {
items: ['apple', 'banana', 'cherry'],
[Symbol.iterator]() {
let index = 0;
return {
next: () => ({
value: this.items[index],
done: index++ >= this.items.length
})
};
}
};

for (const item of iterableObj) {
console.log(item); // 'apple', 'banana', 'cherry'
}

В этом примере объект становится итерируемым с использованием собственного итератора, реализованного через Symbol.iterator.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

28 Oct, 08:11


Хук eloquent.replicating в Laravel

В Laravel eloquent.replicating позволяет обработать момент клонирования модели с помощью метода replicate(). Этот хук предоставляет возможность изменения или очистки данных перед созданием копии. Например, можно исключить чувствительные данные, такие как email, или сбросить уникальные поля, чтобы избежать конфликтов при сохранении клонированной записи в базе данных.

Пример:
use App\Models\User;
use Illuminate\Support\Facades\Event;

Event::listen('eloquent.replicating: ' . User::class, function (User $user) {
// Очищаем уникальные поля перед копированием
$user->email = null;
$user->api_token = null;
});

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

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

27 Oct, 09:17


Тонкости точного сравнения в JS

Что произойдет при сравнении двух объектов с одинаковыми свойствами через Object.is()?

Если забыли, то вернитесь к посту от 08.10.2024.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

26 Oct, 14:15


Реакция на ложные выражения в assert()

Что произойдет, если выражение в assert() окажется неверным?

Если забыли, то вернитесь к посту от 07.10.2024.

👉 @web_craft | #php

WebCraft - ремесло веб разработки

26 Oct, 08:50


Вас просто стало слишком много

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

👉 @web_craft | #собес

WebCraft - ремесло веб разработки

25 Oct, 13:54


🔥Крупнейшая региональная IT–конференция Merge ждет вас в Сколково 15-16 ноября
 
Что ждет участников конференции Merge:

🔺 6 тематических направлений: Разработка, Управление, Маркетинг, HR, Тренды, IT-рынки
🔺 150+ докладов от топовых спикеров российских и международных компаний
🔺 2000+ участников из 60+ городов
🔺 Мастер-классы, воркшопы, BoF-сессии, круглые столы, панельные дискуссии

Мероприятие будет полезно разработчикам, QA, тимлидам, Project/Product-менеджерам, маркетологам, аналитикам, редакторам, PR-специалистам, HR-менеджерам, а также тем, кто только начинает свой путь в IT. 

По промокоду KR10  - скидка 10% на билеты.
Все подробности о Merge на сайте.

#реклама
О рекламодателе

WebCraft - ремесло веб разработки

25 Oct, 08:06


Согласны?

👍 — Да.

❤️ — Сложно не согласиться.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

24 Oct, 16:50


Анимированная собака на CSS

Анимация собаки на чистом CSS.

👉 @web_craft |#frontend

WebCraft - ремесло веб разработки

24 Oct, 12:50


⁉️Хотите повысить свою квалификацию в php-разработке?

🐘 Инвестируйте в успех своей карьеры прямо сейчас!
На курсе «PHP Developer. Professional» вы получите:

✔️ Инфраструктура — Docker, виртуальные машины, облака, сетевое взаимодействие, обеспечение безопасности приложения, Composer, управление зависимостями, очереди и построение асинхронного взаимодействия.
✔️ Хранилище — PostgreSQL, MySQL, NoSQL (Clickhouse, ElasticSearch) и взаимодействие PHP с различными типами хранилищ.
✔️ Тестирование — не только unit-тесты, но и покрытие тестами всех слоёв приложения

➡️ Пройдите короткий тест прямо сейчас, чтобы получить специальную цену на обучение: https://vk.cc/cDbsZq

🎁 А еще приятный бонус: до конца октября действует скидка 10% на обучение.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 erid 2SDnjc7hFj9

WebCraft - ремесло веб разработки

24 Oct, 07:31


Хойстинг в JavaScript: почему это важно и как это работает

В статье объясняется концепция хойстинга в JavaScript, при которой объявления переменных и функций перемещаются в начало своей области видимости во время компиляции. Рассматриваются примеры работы всплытия для переменных, функций, стрелочных функций и блоков let и const. Также обсуждается, как всплытие влияет на выполнение кода, и рассматривается концепция "Временной мёртвой зоны" (TDZ) для let и const.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

23 Oct, 08:31


Запомни, одна ошибка и ты ошибся.
(с) JSON Statham.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

22 Oct, 17:15


Как Pinkary избегает регистрации с временных электронных адресов

В статье описывается, как платформа Pinkary (построенная на Laravel и Livewire) использует специальное правило валидации UnauthorizedEmailProviders для блокировки регистраций и обновлений email с временных доменов. Правило проверяет домен электронной почты с помощью списка запрещенных провайдеров, чтобы не допускать использования одноразовых адресов при регистрации на платформе.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

22 Oct, 13:15


Laravel - ключ к успешной карьере PHP-разработчика!

🦾 Пройди тест по Laravel! 🦾

➡️ Проверь себя и свои знания. Сможешь сдать — пройдёшь на продвинутый курс "Framework Laravel" от OTUS по специальной цене.

👩‍💻 Присоединяйся к новому потоку онлайн-курса «Framework Laravel» в OTUS. В программе курса — удобные и мощные наработки огромного Laravel-сообщества, а практика — решение бизнес-задач.

👨‍💻 За 3 месяца обучения твое портфолио пополнится мини-проектами и выпускной работой.

Приятный бонус Курс можно приобрести в рассрочку и без переплаты

👉 ПРОЙТИ ТЕСТ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru erid 2SDnjeSXktB

WebCraft - ремесло веб разработки

22 Oct, 08:10


Метод для работы с символами в JavaScript

Object.getOwnPropertySymbols() возвращает массив символов, которые являются свойствами указанного объекта. В JS символы — это уникальные идентификаторы, которые могут использоваться в объектах для создания скрытых свойств, не отображаемых при обычных обходах объекта.

Пример:
const sym1 = Symbol('first');
const sym2 = Symbol('second');
const obj = {
[sym1]: 'Первое значение',
[sym2]: 'Второе значение',
regularKey: 'Обычное свойство'
};

// Получаем все символы объекта
const symbols = Object.getOwnPropertySymbols(obj);
console.log(symbols); // [Symbol(first), Symbol(second)]

// Доступ к значению символа
console.log(obj[symbols[0]]); // 'Первое значение'

В этом примере создаются два символа sym1 и sym2, которые добавляются как свойства объекта obj. Метод Object.getOwnPropertySymbols() возвращает массив символов, позволяя получить доступ к их значениям.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

21 Oct, 07:40


Метод assertViewIs() для тестирования представлений в Laravel

assertViewIs() проверяет, что контроллер или маршрут возвращают конкретное представление, которое вы ожидаете увидеть.

Проверка, что страница входа использует правильный шаблон:
public function testLoginPageReturnsCorrectView() {
$response = $this->get('/login');
$response->assertViewIs('auth.login');
}

Проверка представления на основе ролей пользователей:
public function testAdminUserSeesAdminPanel() {
$user = User::factory()->create(['role' => 'admin']);
$this->actingAs($user);

$response = $this->get('/dashboard');
$response->assertViewIs('admin.panel'); // Проверка на представление для админа
}

public function testRegularUserSeesHomePage() {
$user = User::factory()->create(['role' => 'user']);
$this->actingAs($user);

$response = $this->get('/dashboard');
$response->assertViewIs('home'); // Проверка на представление для обычного пользователя
}

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

20 Oct, 09:13


Работа с методом Object.freeze()

Какой эффект оказывает метод Object.freeze() на удаление свойств объекта?

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

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

19 Oct, 15:14


Работа с моделями Laravel

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

Если забыли, то вернитесь к посту от 23.09.2024.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

19 Oct, 06:52


Не так страшно собеседование, как его себе представляют: технические собесы и необычные кейсы в Сбере

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

👉 @web_craft | #собес

WebCraft - ремесло веб разработки

18 Oct, 08:02


Тонкости эволюции с точки зрения IT.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

17 Oct, 14:36


Kubrick much?

Абстрактная анимация на CSS.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

17 Oct, 10:30


🐘 Что нового в PHP 8.4 и как это повлияет на вашу работу?

Приглашаем на открытый урок

🗓 23 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «PHP Developer. Professional»

На вебинаре разберем:

- какие нововведения появятся в PHP 8.4;
- как эти изменения повлияют на вашу работу;
- какие новые функции и улучшения ждут разработчиков.

Спикер Александр Пряхин — технический руководитель юнита в Авито, ITIL4 Certified.

Все участники вебинара получат специальную цену на обучение!

🔗 Ссылка на регистрацию: https://vk.cc/cCFijf

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru erid 2SDnjdPS7e3

WebCraft - ремесло веб разработки

17 Oct, 07:12


Мастерство работы с DOM в JavaScript: Обзор основных вопросов для собеседований

Статья объясняет ключевые вопросы и концепции, связанные с Document Object Model (DOM) в JavaScript, которые часто задаются на собеседованиях. Рассматриваются такие темы, как выбор элементов, работа с методами querySelector и querySelectorAll, добавление и удаление элементов, управление событиями через делегирование, а также различия между innerHTML и textContent. Это поможет лучше подготовиться к техническим собеседованиям, где проверяются фундаментальные знания DOM.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

16 Oct, 06:52


Работаете из дома?

👍 - Да.

❤️ - Нет.

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

15 Oct, 16:00


Новый функционал для работы с массивами в PHP 8.4

Статья описывает новые функции для работы с массивами, которые появились в PHP 8.4: array_find, array_find_key, array_any и array_all. Эти функции позволяют проще и удобнее проверять наличие элементов в массиве, получать ключи по условию и проверять элементы на соответствие заданным критериям. Приведены примеры использования каждой функции с объяснением, как они работают.

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

14 Oct, 16:12


Оптимизация объектов с помощью Object.preventExtensions()

Метод Object.preventExtensions(obj) запрещает добавление новых свойств в объект obj.

Пример:
const config = { apiEndpoint: '/api', timeout: 5000 };
Object.preventExtensions(config);

// Попытка добавить новое свойство
config.retryAttempts = 3; // Не будет добавлено

console.log(config.retryAttempts); // undefined

При создании объектов настроек, где важно сохранить неизменяемую структуру, можно использовать функцию:
function createImmutableConfig(options) {
const config = { ...options };
Object.preventExtensions(config);
return config;
}

const appConfig = createImmutableConfig({ debug: true, version: '1.0.0' });

appConfig.newFeature = true; // Не будет добавлено
console.log(appConfig); // { debug: true, version: '1.0.0' }

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

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

14 Oct, 08:11


Хук для отмены восстановления удалённых моделей

Хук eloquent.restoring вызывается перед тем, как восстановить мягко удалённую модель. Если вернуть false в функции-обработчике, Laravel отменит восстановление модели, и она останется помеченной как удалённая.
use App\Models\User;
use Illuminate\Support\Facades\Event;

// Запрещаем восстановление заблокированных пользователей
Event::listen('eloquent.restoring: ' . User::class, function (User $user) {
if ($user->isBlocked) {
return false;
}
});

Также можно использовать хук eloquent.restoring для логирования попыток восстановления или выполнения асинхронных операций перед тем, как модель будет восстановлена:
Event::listen('eloquent.restoring: ' . User::class, function (User $user) {
Log::info('Попытка восстановления пользователя: ' . $user->id);

if ($user->restorationAttempts >= 3) {
$user->sendRestorationWarning(); // Отправка предупреждения при частых попытках
return false;
}
});

👉 @web_craft | #laravel

WebCraft - ремесло веб разработки

13 Oct, 09:17


Работа с Symbol.species

Как Symbol.species влияет на методы класса-наследника?

Если забыли, то вернитесь к посту от 24.09.2024.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

12 Oct, 14:15


Работа с массивом $guarded

Что делает массив $guarded в модели Laravel?

Если забыли, то вернитесь к посту от 23.09.2024.

👉 @WebCraft | #laravel

WebCraft - ремесло веб разработки

12 Oct, 08:50


Удавка на собесе

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

👉 @web_craft | #собес

WebCraft - ремесло веб разработки

11 Oct, 08:06


Дети раньше: играют в игры на улице, смотрят мультики, дурачатся.

Дети сейчас:

👉 @web_craft |#юмор

WebCraft - ремесло веб разработки

10 Oct, 16:00


CSS-only game: find 10 differences

Игра с поиском отличий на CSS.

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

10 Oct, 07:31


Промисы с нуля

Статья объясняет, как работают промисы в JavaScript, начиная с основ. Автор рассказывает, почему промисы важны для работы с асинхронным кодом, и сравнивает их с колбэками. Описаны создание промисов, их цепочка, обработка ошибок, а также использование async/await для упрощения работы с асинхронностью. Статья включает практические примеры и решает проблему "Callback Hell".

👉 @web_craft | #frontend

WebCraft - ремесло веб разработки

09 Oct, 08:31


Что предпочитаете?

❤️ — MySQL.

👍 — MongoDB.

👉 @web_craft |#юмор

6,469

subscribers

1,794

photos

262

videos