Как стать автором
Обновить
317.08

Веб-разработка *

Делаем веб лучше

Сначала показывать
Порог рейтинга

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

Но:

  1. Это не композабл по определению

  2. Там не обязательно рефы

  3. Они не "глобальны"

В общем случае структура данного объекта - экспортируемые из ES модуля реактивные данные и функции для работы с ними.

Функционально они заменяют "сторы" Pinia. Называть их тоже stores - двусмысленно и нелогично. Вообще, молиться на "глобальный стейт" после появления идеи JavaScript signals и их всевозможных реализаций, включая Vue Reactivity API, архаично.

Мне кажется, самое подходящее название для данной конструкции - [реактивный] бизнес объект (РБО) или Vue Business Object (VBO). В них инкапсулируется логика предметной области и приложения, они не привязаны к конкретным компонентам, и по аналогии с другими языками и фреймворками, этот паттерн - Business Object, - выглядит вполне подходящим.

Техническая реализация может быть через ES классы, ES модули, closures, Pinia stores, с использованием singleton или DI.

Кроме того, позиционирование именно как "бизнес объект" будет требовать явного отделения от него презентационного и инфраструктурного слоев - работы с Backend API, например. То есть, стимулировать использование лучших практик и наработок из других сфер разработки ПО, еще более переводя Vue.js из фреймворка для небольших проектов в разряд enterprise level решений.

--------------

Telegram-канал о Vue и фронтенд-разработке: @vuefaq и вебсайт: Vue‑FAQ.org.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Генератор плагина для Joomla 4 и Joomla 5

Данный генератор для Joomla-разработчиков помогает создать болванку плагина по структуре файлов и классов Joomla 4 и Joomla 5. Создаётся сервис-провайдер, основной класс плагина, языковые файлы для русского языка.

Созданный плагин будет не совместим с Joomla 3. Также автор генератора предупреждает, что версия Joomla 4 должна быть не ниже 4.4.4, хотя судя по генерируемому коду всё должно быть ОК. В любом случае разработчик разберется что с этим делать и может сэкономить время.

Генератор болванки плагина для Joomla 4 / Joomla 5

Также добро пожаловать в Telegram-чат русскоязычного Joomla сообщества

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии0

Google Firebase сдался и добавил в свои сервисы SQL базу данных (облачную PostgreSQL) в форме Firebase Data Connect.

Пока в виде preview сервис можно попробовать бесплатно. Потом собираются брать плату и за саму базу, и за API доступа к ней.

Вряд ли Google с такими политиками сможет конкурировать с Supabase.На данный момент это две основные площадки, с которыми фронтендер или мобильный разработчик может без излишних усилий сделать удобный облачный бэкенд, как без логики (просто CRUD доступ), так и с ней (Functions), и оставаясь в рамках стандартов (не сильно привязываясь к проприетарным решениям сервисов).

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Привет всем! ?

Сегодня в 19:00 (мск) у нас запланирован стрим по Moonshine. Обсудим обновления и изменения за последний месяц, а также покажу как проходит работа по MoonShine v3.

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

Заходите - https://www.youtube.com/watch?v=bM-rgGFnO88 . Будет интересно!

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

10 мая 2024 года Cloudflare представила второй публичный релиз открытого проекта Pingora v0.2.0. Это асинхронный многопоточный фреймворк на Rust, который помогает создавать прокси-сервисы HTTP. Проект используется для создания сервисов, обеспечивающих значительную часть трафика в Cloudflare (вместо применения Nginx). Исходный код Pingora опубликован на GitHub под лицензией Apache 2.0.

Pingora предоставляет библиотеки и API для создания сервисов поверх HTTP/1 и HTTP/2, TLS или просто TCP/UDP. В качестве прокси-сервера он поддерживает сквозное проксирование HTTP/1 и HTTP/2, gRPC и WebSocket. (Поддержка HTTP/3 — в планах). Pingora также включает в себя настраиваемые стратегии балансировки нагрузки и аварийного переключения. Чтобы соответствовать требованиям и безопасности он поддерживает как широко используемые библиотеки OpenSSL, так и BoringSSL, которые соответствуют требованиям FIPS (федеральных стандартов обработки информации США) и пост-квантового шифрования.

Изменения в новой версии:

  • добавлена поддержка установки фильтров для дополнительных заголовков HTTP/2;

  • добавлена возможность изменения размера буфера входящих пакетов для TCP;

  • добавлена функция body_bytes_read();

  • добавлен фильтр cache_not_modified_filter;

  • добавлена возможность ведения лога TLS-ключей;

  • добавлена callback-функция purge_response.

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

Теги:
Всего голосов 3: ↑3 и ↓0+6
Комментарии0

Профессиональный плагин формы обратной связи Radical Form совместим с Joomla 5

Профессиональный плагин-обработчик форм обратной связи Radical Form получил совместимость с Joomla 5 с релизом 3.1.5. Особенность плагина в том, что он позволяет отправлять абсолютно любые формы: стандартные callback формы, квизы, опросы и т.д., но не предоставляет готового фронтенда.

Такой подход предоставляет разработчикам практически неограниченную гибкость в разработке, но при этом требует от них определенного уровня знаний и умений. Radical Form даёт возможность сторонним разработчикам обрабатывать данные форм в момент отправки с помощью плагинов, что позволяет очень удобно и быстро интегрировать его со сторонними сервисами. Для плагина существуют сторонние плагины для интеграции Radical Form с Битрикс 24 и AmoCRM.

Разработчик Radical Form - @progreccor

Страница расширения GitHub расширения

Также добро пожаловать в Telegram-чат русскоязычного Joomla-сообщества

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии0

? Вышел релиз MoonShine v.2.13.0 с кодовым именем "Red Velvet"!?

Напомню, что MoonShine это open-source админ-панель для проектов на Laravel.

Давайте взглянем на самое интересное в этом обновлении!

Возможноcть изменить query builder у HasMany

HasMany::make()->modifyBuilder(fn(Builder $q) => $q->where('active', 1));

Улучшения для BelongsTo/BelongsToMany полей

Получение значений для BelongsTo/BelongsToMany полей приведено к единому виду и теперь для них всегда доступен valuesQuery и при большом запросе вы сможете самостоятельно его оптимизировать

BelongsTo::make(
    __('moonshine::ui.resource.role'),
    'moonshineUserRole',
    formatted: static fn (MoonshineUserRole $model) => $model->name,
    resource: MoonShineUserRoleResource::class,
)
    ->valuesQuery(fn(Builder $q) => $q->select(['id', 'name']))

Обновилось поле MoonShine Layouts

  • Исправлена проблема ререндера предыдущих шаблонов

  • Исправлена проблема исключения декораций

Еще ряд изменений:

  • Логотип на 404 странице теперь выводится из конфига и если есть желание вывести на 404 логотип отличающийся от дефолтного, то воспользуйтесь ключом logo404

  • Исправили реактивность внутри HasOne/HasMany

  • Исправили morphMap для морф полей

  • Исправили удаление файла при замене и удалении

Сайт MoonShine - https://moonshine-laravel.com

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

Apple подготовила свой сайт к предстоящему «специальному мероприятию» под названием Let loose, которое состоится 7 мая и сопровождается рисунком Apple Pencil, что позволяет предположить, что в центре внимания будет обновлённые iPad Air, iPad Pro и аксессуары для планшетов, включая Magic Keyboard и стилус Apple Pencil с новым жестом сжатия с тактильной обратной связью.

В рамках этого ивента на сайте Apple курсор мышки — это ластик, которым пользователь может стирать разноцветные вариации фигур, вписанных в логотип Apple.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии1

Обновление модуля WT Quick links v.2.2.0 для Joomla 4 / Joomla 5

Модуль позволяет создавать быстрые наборы элементов: ссылки на различные сущности на сайте Joomla: категории материалов, Virtuemart, JoomShopping, пункт меню или пользовательскую ссылку. Есть условия для исключений показа элементов списка.

Вы можете создавать собственные макеты вывода модуля, создавая таким образом почти всё, что угодно: от простого списка ссылок до стены фотографий на главную страницу или ссылки-теги для перелинковки категорий интернет-магазина. Модуль позволяет выводить изображения, адаптивные изображения, видео, адаптивные видео. Также это могут быть не только ссылки, но и список вопросов FAQ, элементы Bootstrap Tabs, Accordion и т.д.

v.2.2.0 Что нового?

  • Атрибут Onclick. Добавлена возможность указания атрибута onclick. Его можно использовать для указания целей систем аналитики или же для собственного js-кода.

  • Wrapped Editor. Поле редактора для дополнительного текста занимало большую часть экрана, что доставляло неудобство при работе с большим количеством элементов. Теперь поле редактора спрятано за Bootstrap Accordion.

  • Поддержка тёмной темы Joomla 5. Исправлены случаи неверного отображения при использовании тёмной темы в Joomla 5.

  • Рефакторинг кода. Проведена небольшая чистка кода.

Страница расширения GitHub

Также добро пожаловать в Telegram-чат русскоязычного Joomla-сообщества

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Вышел React 19 beta.

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

В релизе всё то, о чём рассказывала команда next.js - action для формы, новые хуки, серверные компоненты и серверные действия, метаданные страницы и предзагрузка ресурсов из коробки. Из нового (или упущенного мной) - для передачи ref больше не нужно использовать forwardRef, обновлённое API контекстов и продвинутая поддержка таблиц стилей.

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

Также вчера вышел React 18.3.0, а уже сегодня вышла минорка - React 18.3.1. Это промежуточные релизы, в которых добавили предупреждения о том, что будет помечено как устаревшее или удалено. Так можно подготовить проекты к предстоящему обновлению.

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Препарируем React и находим родовые травмы

Выбор двух миллионов разрабов, но..

  • Не умеет в реактивность.

  • Ререндеры по любому чиху.

  • Смешивает инициализацию и обновление, логику и шаблон.

  • Путается между пересозданиями и перемещением.

  • Все компоненты либо неуправляемые, либо неполноценные, либо ожиревшие.

  • Кривая эмуляция объектов через функции с хуками.

  • Не типизируемый VDOM на выходе.

  • Разобщённая экосистема со слабой поддержкой TS.

  • Горы бойлерплейта по мере приближения к проду.

В продолжение темы: Реактивный React, Читерские бенчмарки.

Копилка благодарностейhttps://boosty.to/hyoo

Теги:
Всего голосов 12: ↑8 и ↓4+5
Комментарии6

Alfa Frontend Meetup #3 — только технические доклады

Программа.

Статический анализ зависимостей

Спикер: Алексей Охрименко, техлид в Yandex Cloud Tracker

Рассмотрим статический анализ кода и попробуем применить этот подход к статическому анализу зависимостей с помощью программирования в ограничениях, Parser Combinators, Jora и Discovery.

Как жить с монорепой

Спикер: Алексей Николаев, тeamlead в Sendsay.ru

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

Как перевести 45 приложений на webpack module federation и ничего не сломать

Спикер:Степан Иваньков, главный frontend-разработчик в Альфа-Банке

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

Где пройдет митап: Москва, просп. Андропова, 18 к3, Альфа-Банк, минута от станции метро Технопарк.

Когда: 25 апреля, в 19:00 первый доклад, в 18.30 начинается регистрация на входе, закончим в 22 часа. 

Для записи на митап зарегистрируйтесь в форме по ссылке

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0

Привет, поклонники Laravel!

Недавно состоялось обновление админ-панели для Laravel MoonShine v2.11.0 с кодовым названием “Minimal Twist”.

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

Инструкции по использованию - в PR.

Также в плейлист с гайдами по применению MoonShine добавлено несколько видео из серии tips&tricks.

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

В последнее время в MoonShine появилось много нововведений. 11 апреля в 19:00(мск) проведу прямой эфир по MoonShine на канале CutCode. Программа:

  • установка компактной темы,

  • обзор новых пакетов для MoonShine,

  • планы на MoonShine 3,

  • демонстрация нового концепта организации шаблонов,

  • еще пара интересных новостей, о которых узнаете на стриме .

Ссылка на эфир - https://www.youtube.com/watch?v=QK_79ct1m1w

Если есть вопросы - можете задать здесь.

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Ближайшие события

Рецепт создания ИИ-ассистента, который быстро отвечает пользователям по базе знаний

Ребята из компании AGIMA AI недавно сделали для NL International бота Nelly, который умеет моментально находить ответ на любой вопрос пользователя. Работает это так: человек заходит на сайт компании, понимает, что ему нужна консультация, и пишет в чат. Тут же он получает список статей, в которых, скорее всего, найдет ответ на свой вопрос.

Если нужной статьи нет, всегда можно попросить ассистента перевести вас на оператора
Если нужной статьи нет, всегда можно попросить ассистента перевести вас на оператора

В отдельной статье подробно описываем весь ход работы над ассистентом, а здесь приведем только те технологии, которые использовали. Их пять:

  • Chatwoot — интерфейс оператора с открытым исходным кодом и база знаний.

  • Rasa — фреймворк с открытым исходным кодом для создания чат-ботов.

  • Botfront — визуальный интерфейс для создания чат-ботов на RASA.

  • Qdrant — векторная база данных для хранения векторных представлений статей из базы знаний.

  • Datapipe — ETL, с помощью которого мы извлекаем статьи из Chatwoot, обрабатываем их и помещаем в Qdrant.

В результате количество запросов в поддержку, обрабатываемых чат-ботом, увеличилось с 30% до 70%. Команда контента продолжает добавлять статьи, чтобы чат-бот мог обрабатывать всё больше и больше запросов. Все подробности — в блоге.

Теги:
Всего голосов 10: ↑7 и ↓3+4
Комментарии1

7 апреля 2024 года российский национальный домен .RU отмечает день рождения и юбилей. Сегодня ему исполняется 30 лет. Эта дата официально считается Днём рождения Рунета. 30 лет назад в базу данных IANA была внесена запись о российском домене, и с этого момента началось его активное развитие.

Немного фактов:

  • .RU – один из крупнейших доменов мира, в нем зарегистрировано более 5,5 млн имен. Каждый день регистрируется около 5000 новых доменов;

  • .RU занимает 5 место среди национальных доменов и входит в топ-10 доменов верхнего уровня;

  • с доменами в зоне .RU работает 131 аккредитованный регистратор и почти 2 млн администраторов;

  • 85% доменов в зоне .RU зарегистрированы гражданами РФ. Лидеры по числу регистраций: Москва (26,2%), Московская область (9,5%), Санкт-Петербург (7,3%), Краснодарский край (3,1%) и Свердловская область (2,1%);

  • 96,5% доменов в зоне .RU делегированы и 96% активно используются. 74% доменов зарегистрированы физическими лицами, а 26% – юрлицами.

«30-летие домен .RU встречает в фазе активного роста: много проектов возвращаются в национальные домены, направляя вектор развития на внутренний российский рынок, а также многие компании малого и среднего бизнеса запускают новые проекты. Мы справляемся с вызовами, связанными с кибербезопасностью и необходимостью импортозамещения и обеспечение безопасности российского доменного пространства», — рассказал директор Координационного центра доменов .RU/.РФ Андрей Воробьёв.

Первым созданным в зоне .RU сайтом стал www.1-9-9-4.ru.

Теги:
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Проблема с id в URL материалов Joomla при обновлении большого старого сайта до Joomla 5

В старых версиях Joomla URL адрес формировался по схеме [id материала + алиас материала]. Например, 145-my-article-alias. Однако, старый роутер Joomla был не идеален и плодил дубли страниц, с чем усиленно боролись СЕО специалисты с помощью различных плагинов и хаков ядра CMS.

Начиная с версии Joomla 3.8 в ядро был включён новый роутер, лишенный этих недостатков. Так же его отличало то, что он убирал id статьи из URL адреса. А это в свою очередь приводило к проблемам на больших сайтах, так как у них уже много страниц было в индексе поисковых систем. Поэтому, даже при обновлении сайта на Joomla 4 и Joomla 5 многие старые сайты вынуждены были оставлять включённым старый роутер.

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

Для этой задачи был написан плагин Console - Save old articles aliases.

Страница расширения.

Также поможет в работе с SSH и Joomla статья Joomla 4: мощь CLI приложений.

GitHub плагина

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

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

Теги:
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

Прекрасный и ужасный Kubernetes

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

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

? Помещают внутрь Supervisorctl несколько процессов.

? У каждого свои лог-файлы для разных мест.

? Состояние лежит рядом в виде файла.

Понятно, что такой катавасией невозможно управлять. Kubernetes к тому же и сложный инструмент, который нужно использовать правильно. И при условии, что разработка и эксплуатация работают вместе. Можно сказать, что разработчик и инженер едут в двухместных санях по бобслейной трассе.

Чтобы ехать хорошо и быстро, нужно правильно написать, собрать и доставить код.

? Если конвейер CI/CD построен правильно, мы успешно доедем до финиша.

? Чтобы было куда доставить код, нужен правильно приготовленный Kubernetes.

? Приложение должно быть написано в соответствии с 12 факторами:

Источник тут


? И еще 7 факторами:

  • наблюдаемость (observable);

  • прогнозируемость (schedulable);

  • обновляемость (upgradable);

  • минимальные привилегии (least privilege);

  • контролируемость (auditable);

  • защищенность (securable);

  • измеримость (measurable).

Теги:
Всего голосов 14: ↑14 и ↓0+14
Комментарии0

Вышла библиотека WT JMoodle library v.1.1.0

LMS Moodle является, пожалуй, самой известной и популярной бесплатной Learning Management System — движком для создания онлайн‑курсов. Для того, чтобы было удобно работать с данными Moodle внутри Joomla через встроенное REST API Moodle создана нативная библиотека для Joomla 4 / Joomla 5

v.1.1.0 Что нового?

  • Helper\Course. В REST API более 700 методов. Библиотека поддерживает хелперы для методов, которые позволяют проверять структуру отправляемых данных до отправки собственно запроса и тем самым не нагружать лишний раз API Moodle. Добавлены правила проверки структуры данных для методов core_course_

  • Поле списка курсов Courselist Joomla Form. Добавлено Joomla Form поле, отображающее в Joomla список курсов Moodle. Для работы поля требуется разрешённый метод core_course_get_courses и настроенные в Moodle права доступа. Поля Joomla Form позволяют легко использовать в интерфейсе своих расширений (в модулях, плагинах и т. д.) данные, получаемые из Moodle по API.

Страница расширения

Помощь в развитии библиотеки приветствуется на GitHub расширения

Расширение в Joomla Extensions Directory

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Financial Times запустила собственного чат-бота с генеративным ИИ под названием Ask FT, который обучен отвечать на различные вопросы подписчиков издания.

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

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии2