Vue-FAQ
920 subscribers
556 photos
90 videos
548 links
Канал сайта https://vue-faq.org
Информация о Vue.js, фронтенд разработке и не только

Contacts: @RuslanMakarov
Download Telegram
Совсем недавно вышла Mistral OCR - первая LLM для качественного парсинга картинок и pdf с картинками

Подключил её в Lissa.

Отлично распознает. Бесплатно. Без лимитов. С санкционной территории работает. Где подстава пока не пойму...

Мучения с Tesseract и Ко закончились, хотя оставил их на фолбэк.

#ocr #ai
Кто не знал, есть в VS Code (Volar) такая команда

Разделяет на два окна один файл по секциям SFC

#vscode
Деривативом к Lissa Health создался телеграмный ботик для AI распознавания текста на фото и картинках

@argus_ocr_bot

Позволяет задать один уточняющий вопрос после распознавания для фильтрации данных, форматирования, перевода на другой язык или еще чего-то

Примеры:
1. Сфотографировать квитанцию СДЭК => Оставь только номер отправления
2. Сфотографировать визитку => Сделай json
3. Сфотографировать непонятный текст => Переведи на русский

Критика и предложения welcome

#lissa #tgbot #argus
Хех... Эван прочел этот пост, но один "meta" все же лишний

Иначе Laravel - это мета-фреймворк над Symfony

#vite #evanyou
При использовании сторов иногда получаются проблемы из-за перекрестных ссылок, которые дают ReferenceEror

При использовании модульных рефов может возникнуть аналогичная ситуация - например, когда переменная refA определяется в модуле А, который использует модуль B, а B вешает watch на refA. Причем это применимо только к системе реактивности Vue, потому что с обычными объектами такой проблемы нет.

#store #reactivity #architecture
Решения для проблемы выше

1. Переделать. Перекрестное использование сущностей - архитектурно плохая практика. Каждая должна содержать в себе только свое состояние и логику работы с собой. Если А использует B, значит B - утилитарен по отношению к А (например, А - какой-то бизнесовый стор, B - отвечает за открытие диалогов). Но тогда коду из А нечего делать в B.

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

Если есть логика, которая работает и с А, и с B, то, скорей всего, она прикладная для этих сторов, и должна лежать в отдельной сущности (компоненте, композабле, простом или реактивном модуле, сторе).

2. setTimeout / nextTick, как на картинке. Работает и с модульными рефами, но выглядит уродливым костылём

3. Шина событий (eventBus) для сообщений между сторами. Как самостоятельное решение возможно, но в данном случае опять же костыль.

4. Если refA в примере вынести в отдельный модуль, то ошибка пропадет. То же самое, скорей всего, справедливо и для сторов, но будет выглядеть неуклюже. Выносить надо не голый стейт, а разделять стор грамотно, по ответственности.

5. Не надо пихать реактивность туда, где можно обойтись без нее. Если переменная B зависит от А, и источников изменения А всего один-два, то необязательно ставить watch над А в B, можно обновлять B императивно напрямую. Это уберет прямую зависимость от А в B (если код в А уже как-то использует B), а также повысит читаемость и производительность. В первую очередь касается кода, который работает с бэкенд API.
Так же приоритетно, как и пункт 1.

#store #reactivity #architecture
В Твиттере обсуждение большого поста разработчика OpenNext (инициативы по облегчению деплоя Next приложений куда-то окромя Vercel)

Отмазывает компанию, говорит, всё это случайности, а не злой умысел. Что в Next.js было мало намеренных изменений, ломающих совместимость, но много ненамеренных багов при обновлениях версий.

Пишет, что Next.js стал популярным благодаря своим достоинствам, но в какой-то момент его "перепродвигали" из-за больших вложений в маркетинг. Теперь разработчики начинают понимать, что Next.js не всегда подходит для их задач. Предостерегает от того, чтобы называть тех, кто чувствует странности в продвижении Next.js, теоретиками заговора

Что сейчас у Vercel небольшая команда по связям с разработчиками (DevRel), и они не платят инфлюенсерам за продвижение. Однако раньше это было не так - Vercel активно спонсировал людей, как официально, так и неофициально.

#react #sst #nextjs #spa
Хорошая статья по использованию ИИ в программировании

Особенно, Заключение

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

Политика "одноразовых" продуктов из внешнего мира приходит в IT

#ai
Вспомнил, что истекли 30 суток моего карцера на @vuejs_ru

Что-то важное пропустил?

#vuejs_ru
Если у вас есть массив, в каждом элементе которого есть computed, то лучше создать один на весь массив, чем много для каждого элемента

// Bad
const rows = productRows.map(row => ({
...row,
total: computed(() => row.price * row.qty),
}));


// Good
const computedRows = computed(() =>
productRows.map(row => ({
...row,
total: row.price * row.qty,
}))
);


#tip #performance #reactivity
Кевин Денг (создатель Vapor) получил ежемесячное спонсорство от VoidZero в размере $1024

Еще столько же дают совместно Эван и Vue.js, и еще около $1000 все остальные

Прошлой осенью Кевин жаловался, что ему не на что содержать семью, и поэтому он забросил Vapor

Как и ожидалось, Эван использует полученные VoidZero инвестиции для вознаграждения работающим во Vue и Vite экосистемах людям, но как-то уж очень экономно он это делает.

#vapor #voidzero
Даже во сне думаешь о UI/UX, реализуешь адаптивность, отзывчивость, тестируешь на всех разрешениях, потом открываешь супер популярный сайт и не можешь до конца меню пролистать, свою станцию выбрать, потому что экран кончился, а меню уходит ниже...

#ux
Эван думает так же

#ai
Мой Argus бот для распознавания текста на фото и изображениях потихоньку раскручивается

Добавил к нему кнопки быстрых действий и увеличил число LLM до четырех - две основные и две на фоллбэк.

Эксперименты показали, что Mistral OCR в среднем по качеству близок к FineReader (где-то лучше, где-то хуже). Но выдают они данные, естественно, в разных форматах.

На неделе добавится распознавание рукописного текста

#tgbot #argus #php #ai
Книжки

Общеполезное


The Pragmatic Programmer by Andrew Hunt and David Thomas
Code Complete by Steve McConnell

Coding

Clean Code by Robert C. Martin
Refactoring by Martin Fowler

Software Architecture

Designing Data-Intensive Applications by Martin Kleppmann
Object-Oriented Analysis and Design with Applications by Grady Booch

Design Patterns

Design Patterns by Eric Gamma and Others
Domain-Driven Design by Eric Evans

Data Structures and Algorithms

Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
Cracking the Coding Interview by Gayle Laakmann McDowell

#learning #book