WebCraft - ремесло веб разработки
6.5K subscribers
1.63K photos
242 videos
2 files
205 links
Интересуешься php , js , css , html , Laravel , Vue ? Этот канал для тебя

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

Купить рекламу: https://telega.in/c/web_craft
Download Telegram
Собеседования в IT как драйвер профессионального роста

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

👉 @web_craft | #собес
Работа команды composer check-platform-reqs

Что происходит, если команда composer check-platform-reqs обнаруживает несоответствие?

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

👉 @web_craft | #php
Реагирования на изменения сетевого состояния

Какое событие генерируется объектом window, когда соединение с сетью восстановлено?

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

👉 @web_craft | #frontend
Какое событие генерируется объектом window, когда соединение с сетью восстановлено?
Anonymous Quiz
37%
online;
13%
networkUp;
23%
reconnect;
28%
connectionRestored.
Упрощение добавления нескольких полей в таблицу

Если вам нужно добавить несколько полей в базу данных после определенного поля, сгруппируйте их в одном колбэке, используя метод $table->after(). Это обеспечивает более чистый и логичный код.

Пример:
// Вместо этого:
Schema::table('users', function (Blueprint $table) {
$table->string('phone')->nullable()->after('password');
$table->string('github')->nullable()->after('phone');
$table->string('twitter')->nullable()->after('github');
});

// Вы можете сделать это:
Schema::table('users', function (Blueprint $table) {
$table->after('password', function (Blueprint $table) {
$table->string('phone')->nullable();
$table->string('github')->nullable();
$table->string('twitter')->nullable();
});
});


Этот способ позволяет сразу указать все новые поля, которые должны быть добавлены после уже существующего, избегая многократного использования метода after().

👉 @web_craft | #laravel
Управление промисами в JavaScript

promise.withResolvers() — удобный метод в JavaScript для создания промиса и доступа к его resolve и reject. Это упрощает управление промисами.

Пример:
const { promise, resolve, reject } = promise.withResolvers();

promise.then(value => {
console.log('Промис выполнен с:', value);
}).catch(error => {
console.error('Промис отклонен с ошибкой:', error);
});

// Разрешение промиса
setTimeout(() => resolve('Успех!'), 2000);

// или отклонение промиса
// setTimeout(() => reject('Ошибка!'), 2000);

Реализация promise.withResolvers():

function promiseWithResolvers() {
let resolve, reject;
const promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
return { promise, resolve, reject };
}


Этот метод полезен для управления асинхронными операциями из внешнего контекста.

👉 @web_craft | #frontend
Профилирование PHP (Laravel) приложений с xhprof. Учимся искать ботлнеки

Статья описывает, как профилировать PHP (Laravel) приложения с помощью xhprof для выявления узких мест (bottlenecks). Автор объясняет, что такое профилировщик и как использовать инструменты xhprof, Buggregator и другие для анализа и оптимизации производительности кода.

👉 @web_craft | #php
Объединение веб-приложений и нативных приложений с помощью неизвестных JavaScript API

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

👉 @web_craft | #frontend
This media is not supported in your browser
VIEW IN TELEGRAM
Neuro Noise

Интерактивный фон реализованный с использованием GLSL.

👉 @web_craft | #frontend
Вам помогло Лего?

♥️ - Да.

👍 - У меня такого не было.

👉 @web_craft | #юмор
Конверсия 1 собеседование на 500 откликов на западном рынке. Как так вышло и чем грозит?

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

👉 @web_craft | #собес
Использование User-Agent

Для чего задается собственный User-Agent при использовании сторонних API?

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

👉 @web_craft | #laravel
Верстаешь?

Оцени 7 причин пройти наш бесплатный интенсив по Frontend-разработке:

1. Ты сверстаешь веб-сайт на HTML + CSS;
2. Оживишь страницу с помощью JavaScript;
3. Используешь фронтенд-фреймворк Angular;
4. Подключишь Backend и загрузишь сайт на хостинг;
5. Получишь советы по доработке своего проекта;
6. Добавишь в портфолио 1 качественный проект;
7. Получишь в подарок чек-лист «45 мест для поиска работы».

А главное, ты проведёшь 7 дней в приятной компании Fullstack-разработчика с 10-летним стажем – Романа Чернова.

👉 Проскочить на интенсив бесплатно

Начинаем уже завтра.
Использование хука eloquent.retrieved в Laravel

Хук eloquent.retrieved в Laravel используется для выполнения определенных действий сразу после извлечения модели из базы данных.

Как это работает:

1. Метод Event::listen используется для прослушивания события eloquent.retrieved для модели User.
2. Анонимная функция, которая принимает экземпляр модели User и выполняет необходимые действия с её данными.

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

Рассмотрим пример использования хука eloquent.retrieved для автоматического форматирования поля created_at после извлечения модели User:

use App\Models\User;
use Illuminate\Support\Facades\Event;

Event::listen('eloquent.retrieved: App\Models\User', function (User $user) {
$user->created_at = $user->created_at->format('d-m-Y H:i:s');
});

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

👉 @web_craft | #laravel
Айтишников без опыта берут в Сбер

И в другие IT-гиганты. Но ваш проект должен отличаться в 5-10 раз от кучи стандартных портфолио. Современный стек, модные технологии, отвечать требованиям работодателя, решать реальные проблемы пользователя.

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

Ребята из FAANG School подготовили полезную лекцию, где сэкономят время, нервы и дадут пошаговую инструкцию, как создать идеальный проект для портфолио.

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

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

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

Метод AbortSignal.timeout() позволяет установить тайм-аут для запроса fetch. Если запрос не завершится за заданное время, он будет автоматически отменен.

Пример использования:

async function fetchData() {
try {
const response = await fetch(url, {
signal: AbortSignal.timeout(5000)
});
// Обработка успешного ответа
} catch (e) {
if (e.name === 'TimeoutError') {
// Обработка ошибки тайм-аута
} else {
// Обработка других ошибок
}
}
}


В этом примере запрос будет отменен, если ответ не поступит в течение 5 секунд. Если запрос отменен по причине истечения времени, будет выброшена ошибка TimeoutError.

👉 @web_craft | #frontend
Автоматизация резервного копирования базы данных с Laravel

Статья объясняет, как автоматизировать резервное копирование баз данных с использованием Laravel. Она охватывает установку пакета spatie/laravel-backup, настройку параметров резервного копирования, выполнение команд резервного копирования, установку клиентов MySQL и очистку старых резервных копий. Также обсуждается, как получать уведомления в случае проблем во время процесса резервного копирования.

👉 @web_craft | #laravel