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

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

@web_craft

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

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

Купить рекламу: https://telega.in/c/web_craft
Subscribers
5.02K
Photos
2.1K
Videos
322
Links
291
Recent Posts 20 shown
Post #3893 756
Собрали статический сайт. А дальше что?

Привычные хостинги для статических сайтов вроде Cloudflare Pages, Vercel и Netlify в России работают нестабильно. А опубликовать сайт где-то нужно, и желательно бесплатно.
Поднимать ради лендинга VPS с nginx и certbot скучно. А сайт на вашем компьютере никто, кроме вас, не увидит.
Выложить статический сайт на свой домен в WebShield можно в несколько простых шагов:

⚡️ сборка Hugo, Vite, Astro, Next.js и других: для каждого генератора есть готовая настройка (если пишете HTML вручную, этот шаг не нужен)
🚀 публикация из веб-интерфейса или через CLI, который заливает только изменённые файлы
🔁 автодеплой из GitHub Actions по пушу в main
📬 формы обратной связи работают без собственного бэкенда
webshield sites publish www.example.com --dir ./dist
Всё, сайт в интернете.

👉 Руководство по публикации статического сайта

#hosting #hugo #vite #astro #nextjs #webshield
  • ❤ 1
Post #3828 4.29K
Scroll-driven анимации в CSS постепенно выходят на новый уровень.

Раньше для анимаций при прокрутке почти всегда использовали JavaScript: Intersection Observer, GSAP, обработчики scroll-событий и сложную синхронизацию состояния. Теперь браузеры начинают предлагать нативный подход.

Новые CSS-возможности вроде animation-timeline, view() и обсуждаемого animation-trigger позволяют запускать анимации в момент появления элемента во viewport — без постоянного «scrubbing», когда прогресс анимации жёстко привязан к позиции скролла.

Что это даёт на практике:

➖меньше JavaScript-кода
более стабильный FPS
➖снижение нагрузки на main thread
➖декларативное описание поведения прямо в CSS
➖упрощение поддержки UI-анимаций

Подход особенно хорошо подходит для reveal-анимаций, появления карточек, секций лендингов и контентных интерфейсов.

Фактически frontend постепенно движется к модели, где браузер сам управляет жизненным циклом анимаций, а разработчик описывает только правила и состояния.

👉 @web_craft
Post #3796 3.84K
Параллельное выполнение заданий в очередях

Какой метод в Laravel позволяет объединять задания (jobs) в группу для параллельного выполнения и отслеживания их статуса?

Посмотреть ответ.

👉 @web_craft | #laravel
  • ❤ 1
Post #3789 3.74K
И он терпит наши глупости и мы его глупости тоже потерпим.

👉 @web_craft |#юмор
Post #3785 2.75K
Snow (Pure CSS)

Анимация падения снега на чистом CSS.

👉 @web_craft | #frontend
  • 👍 5
  • 👎 1
  • 🔥 1
Post #3780 2.61K
Как устроены перечисления в PHP

В этой статье разбирают, что скрывается под капотом enum’ов в PHP. Спойлер: это почти обычные классы, но с особым флагом и хитростями! Узнайте, как кейсы превращаются в константы, почему enum’ы нельзя собрать сборщиком мусора и как их сравнение работает на уровне опкодов. Плюс — немного о будущих оптимизациях и мечтах о дженериках.

👉@web_craft | #php
  • 👍 4
Post #3778 2.36K
Оптимизация работы с большими данными в Laravel с помощью Lazy Collections

Lazy Collections и PHP-генераторы - это спасение от перегрузки памяти. В Laravel 11 Lazy Collections стали ещё мощнее благодаря улучшенной интеграции с Eloquent и поддержке асинхронных операций. Это идеально для обработки больших CSV-файлов, импорта данных или работы с огромными наборами записей.

Пример обработки CSV-файла с минимальным потреблением памяти:
use Illuminate\Support\LazyCollection;
use App\Models\User;

LazyCollection::make(function () {
$handle = fopen('large_data.csv', 'r');
while (($row = fgetcsv($handle)) !== false) {
yield $row; // Генератор возвращает строки по одной
}
fclose($handle);
})->chunk(1000)->each(function ($rows) {
// Пакетная вставка в БД
User::insert(
$rows->map(fn($row) => [
'name' => $row[0],
'email' => $row[1],
'created_at' => now(),
'updated_at' => now(),
])->toArray()
);
});


👉@web_craft | #laravel
  • 👍 7
Post #3774 1.64K
Метод withCache() в HTTP-запросе

Что произойдёт при использовании метода withCache() в HTTP-запросе?

Посмотреть ответ.

👉 @web_craft | #laravel
Post #3771 1.76K
Carousel with drag and wheel

Интерактивная карусель изображений на JavaScript.

👉 @web_craft | #frontend
  • ❤ 3
  • 👍 1
Post #3766 2.69K
События и слушатели в Laravel

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

Например:
php artisan make:event UserRegistered
php artisan make:listener SendWelcomeEmail --event=UserRegistered

Событие:
class UserRegistered {
public function __construct(public User $user) {}
}

Слушатель:
class SendWelcomeEmail {
public function handle(UserRegistered $event) {
Mail::to($event->user->email)->send(new WelcomeMail());
}
}

Запуск:
event(new UserRegistered($user));


Код становится чище, а новые реакции легко добавлять без правки контроллеров.

👉 @web_craft | #laravel
  • 👍 7
Post #3761 1.22K
И куда они едут?

❤️- Устраиваться на завод

👍- Так все ясно, уже в доставке работают

👉 @web_craft |#юмор
  • 👍 8
  • 🤔 1
Post #3760 1.18K
Solar system

Путешествие по планетам солнечной системы на чисто CSS.

👉 @web_craft | #frontend
  • 👍 4
Post #3757 1.16K
Как ускорить портал в 15 раз: кейс ВДНХ

Команда разработчиков делится опытом, как им удалось радикально сократить время отклика на новом портале ВДНХ. В статье — практические приёмы оптимизации на Laravel + Nuxt, подход к построению масштабируемой архитектуры и реальные метрики до и после. Отличный пример того, как грамотные решения влияют на производительность.

👉 @web_craft | #laravel
  • ❤ 3
Post #3756 1.11K
Параллельное выполнение заданий в очередях

В Laravel задания (jobs) по умолчанию обрабатываются последовательно. Но иногда требуется запустить несколько заданий параллельно и дождаться их выполнения перед продолжением логики. Для этого используется метод Bus::batch().

Batch позволяет объединить набор заданий в "пакет", запускать их одновременно и отслеживать статус выполнения всего набора. Это особенно полезно, если нужно обработать много однотипных задач (например, экспорт данных или массовую отправку уведомлений).

use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Bus;
use Throwable;

Bus::batch([
new ProcessPodcast(1),
new ProcessPodcast(2),
new ProcessPodcast(3),
])->then(function (Batch $batch) {
// Все задания выполнены успешно
})->catch(function (Batch $batch, Throwable $e) {
// Какое-то из заданий завершилось ошибкой
})->finally(function (Batch $batch) {
// Выполнится в любом случае
})->dispatch();


👉 @web_craft | #laravel
  • 🔥 4
  • 👍 2
Older posts →

About this channel

How can I read @web_craft without a Telegram account?
TGViewer shows the public web preview Telegram publishes for WebCraft - ремесло веб разработки: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does WebCraft - ремесло веб разработки have?
WebCraft - ремесло веб разработки (@web_craft) has 5.02K subscribers on Telegram, refreshed roughly every 30 minutes.
Does WebCraft - ремесло веб разработки know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →