TGViewer
Channel Public Channel
WebDev+ | Веб-разработка

WebDev+ | Веб-разработка

@webdev_plus

Присоединяйтесь к нашему каналу и погрузитесь в мир веб-разработки

Связь: @devmangx
Subscribers
7.92K
Photos
650
Videos
287
Links
804

Showing posts older than #1543 · Back to latest

Older Posts 19 shown
Post #1542 557
Совет по Design Engineering:

Одно CSS-свойство отвечает за большинство уродливых анимаций раскрытия.

Это height: auto.

Замените его на: grid-template-rows: 0fr → 1fr;

@WebDev_Plus
Post #1541 567
Что из мира БД я бы изучил, чтобы глубоко понять масштабирование:

Сохраните.

- B+ Trees
- LSM Trees
- Write-Ahead Logging
- Two-Phase Commit
- Three-Phase Commit
- Read Replicas
- Leader-Follower Replication
- Partitioning (Шардирование)
- Query Caching
- Secondary Indexes
- Vector Indexes (FAISS, HNSW)
- Distributed Joins
- Materialized Views
- Event Sourcing
- Change Data Capture (CDC)

@WebDev_Plus
Post #1539 542
Скоро: PHP-порт популярной JavaScript-библиотеки Chrono
Разработчик анонсировал PHP-порт одной из самых популярных JavaScript-библиотек — Chrono.
Проект не использует LLM для парсинга: вся обработка выполняется исключительно средствами PHP.
Релиз ожидается уже скоро.

@WebDev_Plus
Post #1538 543
📌 Шпаргалка по API-заголовкам

Заголовки API несут метаданные, обеспечивающие безопасную и эффективную коммуникацию.

- Authorization — отправка токенов доступа безопасно
- Content-Type — определение формата тела запроса
- Accept — указание ожидаемого формата ответа
- User-Agent — идентификация клиентского приложения
- Cache-Control — управление кешированием
- Origin — поддержка валидации CORS
- Cookie — отправка информации о сессии
- Accept-Language — установка языковых предпочтений

Понимание заголовков API помогает создавать более быстрые, безопасные и надёжные приложения.

@WebDev_Plus
Post #1537 545
Недавно в Symfony приняли патч по безопасности, который закрывает классическую дыру — инъекцию заголовков через email.

Проблема выглядела просто: если в адрес электронной почты добавить символы перевода строки (CRLF), можно «разорвать» SMTP-заголовки и вставить дополнительные поля вроде Bcc или даже сырые команды.

Решение внесли в Mime-компонент: теперь он отбрасывает любые управляющие символы в адресе, не только переносы строк, а весь диапазон 0x00–0x1F и 0x7F.

Вывод простой: email-адрес — это данные, а не строка для интерпретации. Проверка должна быть строгой, без попыток «починить» ввод на лету.

@WebDev_Plus
Post #1536 522
Когда-нибудь разбирался, что такое OKLCH-цвета и как они работают, или просто хотел использовать их в проекте?
Можно использовать /oklch-skill — он конвертирует цвета, генерирует палитры, проверяет контраст, помогает с миграцией и другими задачами.

Установка:
npx skills add jakubkrehel/oklch-skill


@WebDev_Plus
Post #1534 524
Brutal SEO Extension for Web Programmers

Новый инструмент для веб-разработчиков — расширение, которое проверяет страницу и показывает проблемы прямо по месту.

Что умеет:
→ находит ошибки на странице
→ детектит битые ссылки
→ подсказывает, что стоит улучшить для SEO

Подходит для быстрого аудита без лишних панелей и отчётов.
Демо: http://metaexplorer.co

@WebDev_Plus
Post #1533 524
Почти 15 000 запросов/сек на скомпилированном PHP.

Сегодня Elephc делает первый шаг в мир веб-серверов.

⭐️ Скачайте v0.25.2, попробуйте и не забудьте поставить звезду на GitHub, если хотите поддержать разработку.

https://github.com/illegalstudio/elephc

На базе Tokio и Hyper, Elephc v0.25.2 теперь может компилировать PHP-приложения в высокопроизводительные веб-серверы.

Это ранняя веха, но будущее выглядит захватывающе!

#php #rust #opensource #webdev #performance

@WebDev_Plus
Post #1531 557
Встроенные хелперы тестов, хоть и удобны, добавляют когнитивную нагрузку: логика подготовки вынесена за пределы теста, и приходится прокручивать к началу/концу файла, чтобы понять, что именно настраивается для прохождения теста.

Первый тест выглядит читаемым, но всё важное скрыто: что на самом деле создаёт makeIncompleteProfile()? Какие поля пусты? Что настраивает makeImportService()? Чему должен соответствовать замокированный lookup?

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

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

Хочу также обратить внимание на границы скриншотов (они намеренные). Они показывают, сколько контекста можно реально охватить за раз при чтении одного теста.

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

Это разрушает ясность, которая была бы, если бы нужно было просто скроллить по вертикали, как при чтении книги.

@WebDev_Plus
Post #1530 522
Хороший UX + меньший показатель отказов.

Беспроигрышный вариант. 📈

@WebDev_Plus
Post #1528 611
PHP не перекомпилирует твой regex при каждом вызове preg_match.

Внутри ext/pcre живёт LRU-кэш на 4096 паттернов. Первый раз: pcre2_compile + pcre2_jit_compile. Все следующие — прямой указатель.

Поэтому один и тот же regex в цикле работает со скоростью нативного кода. JIT-паттерн уже в кэше.

Не генерируй паттерны динамически на лету, если можно этого избежать. Иначе кэш слетает.

@WebDev_Plus
Post #1527 625
20 законов разработки, которые должен знать каждый инженер

1. Закон Галла: Работающая сложная система вырастает из работающей простой.

2. KISS: Делай проще. Всё остальное — оверхеад.

3. Закон Конвея: Компании проектируют системы, которые повторяют структуру их коммуникаций.

4. Закон Хайрума: У достаточно большого API уже неважно, что ты обещал в контракте. Кто-нибудь уже зависит от каждого observable-поведения твоей системы.

5. CAP-теорема: Выбери два: консистентность, доступность, устойчивость к разделению.

6. Закон Завински: Любая программа разрастается до тех пор, пока не научится читать почту.

7. Закон Брукса: Добавление людей в опаздывающий проект делает его ещё более поздним.

8. Эффект Рингельмана: Производительность каждого участника группы падает с ростом группы.

9. Закон Прайса: Половину работы делают квадратный корень от всех людей.

10. Эффект Даннинга — Крюгера: Новички переоценивают свои способности, эксперты — недооценивают.

11. Закон Хофштадтера: Всё занимает больше времени, чем ты планируешь, даже с учётом этого закона.

12. Закон Паркинсона: Работа расширяется, чтобы заполнить всё отведённое на неё время.

13. Закон Гудхарта: Когда метрика становится целью, она перестаёт быть хорошей метрикой.

14. Закон Гилба: Измерять неточно лучше, чем не измерять вообще.

15. Принцип Кнута: Забудь о микрооптимизациях в 97% случаев. Преждевременная оптимизация — корень всех зол.

16. Закон Амдала: Ускорение одной части системы ограничено долей времени, которое эта часть реально используется.

17. Закон Мёрфи: Если что-то может пойти не так, оно пойдёт не так.

18. Закон Постела: Будь консервативен в том, что отправляешь, и либерален в том, что принимаешь.

19. Закон Стерджена: 90% всего на свете — фигня.

20. Закон Каннингема: Лучший способ получить правильный ответ в интернете — не задать вопрос, а написать неправильный ответ.

@WebDev_Plus
Post #1526 560
Astro — лучшее, что случалось с веб-разработкой за последнее время. И только вышла седьмая версия.

Из нового: Vite 8 с Rolldown, компилятор на Rust, сборка до 61% быстрее, улучшения для AI-агентов.

> pnpm create astro

@WebDev_Plus
Post #1525 537
Ты создаёшь отдельные роуты под вебхуки от каждого внешнего сервиса?

Сколько бы сервисов ни слали webhook-события, тебе нужен один роут, один контроллер и один менеджер вебхуков.

@WebDev_Plus
Post #1524 563
Мой племянник учится на втором курсе программной инженерии. Позвонил недавно, попросил помочь с поиском стажировки. И среди прочего спросил, где лучше разобраться с Git. Я удивился. На втором курсе студенты всё ещё обходят Git стороной. А потом это бьёт по ним на собеседованиях.

Я посоветовал ему отличный гайд от Beej.

Он перезвонил сегодня. Полный восторга. Делился впечатлениями. Так что вот, снова рекомендую. Для всех студентов и всех, кто только начинает знакомство с Git.

https://beej.us/guide/bggit/

@WebDev_Plus
Post #1523 594
CSS Tip: Автоматически помечайте внешние ссылки
Если ссылка открывается в новой вкладке через target="_blank", можно добавить к ней визуальный индикатор с помощью CSS.

a[target="_blank"]::after {
content: " ↗️";
}


Преимущества:
✅ Пользователь сразу видит, что ссылка откроется в новой вкладке
✅ Улучшается UX без изменения HTML-разметки
✅ Работает автоматически для всех внешних ссылок с target="_blank"
✅ Не нужно вручную добавлять иконки в каждую ссылку

Небольшая деталь, которая делает интерфейс более понятным.
#CSS #Frontend #WebDev #UIDesign

@WebDev_Plus
Post #1522 611
Anime.js 4.5 уже вышел — и релиз получился интересным.

Представлен адаптер для Three.js 🎉

До 50% меньше кода для создания 3D-анимаций
API для 3D-объектов в стиле CSS-трансформаций (rotate, skew и др.)
Более простая анимация цветов материалов
Удобная анимация инстансированных мешей (Instanced Mesh)
Поддержка Stagger 3D
И это далеко не всё.

На видео показан пример анимации сцены Three.js через новый адаптер Anime.js. Благодаря ему можно анимировать объекты почти так же просто, как DOM-элементы в браузере, но уже в 3D-пространстве.

демо: https://codepen.io/editor/juliangarnier/pen/019ef018-43bb-7333-a6aa-2360a6d0e59b

доки: https://animejs.com/documentation/adapters/threejs-adapter/

чейнджлог: https://github.com/juliangarnier/anime/releases/tag/v4.5.0

@WebDev_Plus
Older posts →
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 →