Деривативом к Lissa Health создался телеграмный ботик для
@argus_ocr_bot
Позволяет задать один уточняющий вопрос после распознавания для фильтрации данных, форматирования, перевода на другой язык или еще чего-то
Примеры:
1. Сфотографировать квитанцию СДЭК => Оставь только номер отправления
2. Сфотографировать визитку => Сделай json
3. Сфотографировать непонятный текст => Переведи на русский
Критика и предложения welcome
#lissa #tgbot #argus
AI
распознавания текста на фото и картинках@argus_ocr_bot
Позволяет задать один уточняющий вопрос после распознавания для фильтрации данных, форматирования, перевода на другой язык или еще чего-то
Примеры:
1. Сфотографировать квитанцию СДЭК => Оставь только номер отправления
2. Сфотографировать визитку => Сделай json
3. Сфотографировать непонятный текст => Переведи на русский
Критика и предложения welcome
#lissa #tgbot #argus
При использовании сторов иногда получаются проблемы из-за перекрестных ссылок, которые дают
При использовании модульных рефов может возникнуть аналогичная ситуация - например, когда переменная
#store #reactivity #architecture
ReferenceEror
При использовании модульных рефов может возникнуть аналогичная ситуация - например, когда переменная
refA
определяется в модуле А
, который использует модуль B
, а B
вешает watch
на refA
. Причем это применимо только к системе реактивности Vue
, потому что с обычными объектами такой проблемы нет.#store #reactivity #architecture
Решения для проблемы выше
1. Переделать. Перекрестное использование сущностей - архитектурно плохая практика. Каждая должна содержать в себе только свое состояние и логику работы с собой. Если
К созданию сторов / модульных рефов надо подходить так же ответственно, как к проектированию схемы реляционной базы данных. Это координатный базис, и в нем не может быть перекрестных зависимостей.
Если есть логика, которая работает и с
2.
3. Шина событий (
4. Если
5. Не надо пихать реактивность туда, где можно обойтись без нее. Если переменная
Так же приоритетно, как и пункт 1.
#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
В Твиттере обсуждение большого поста разработчика
Отмазывает компанию, говорит, всё это случайности, а не злой умысел. Что в Next.js было мало намеренных изменений, ломающих совместимость, но много ненамеренных багов при обновлениях версий.
Пишет, что Next.js стал популярным благодаря своим достоинствам, но в какой-то момент его "перепродвигали" из-за больших вложений в маркетинг. Теперь разработчики начинают понимать, что Next.js не всегда подходит для их задач. Предостерегает от того, чтобы называть тех, кто чувствует странности в продвижении Next.js, теоретиками заговора
Что сейчас у
#react #sst #nextjs #spa
OpenNext
(инициативы по облегчению деплоя Next
приложений куда-то окромя Vercel
)Отмазывает компанию, говорит, всё это случайности, а не злой умысел. Что в Next.js было мало намеренных изменений, ломающих совместимость, но много ненамеренных багов при обновлениях версий.
Пишет, что Next.js стал популярным благодаря своим достоинствам, но в какой-то момент его "перепродвигали" из-за больших вложений в маркетинг. Теперь разработчики начинают понимать, что Next.js не всегда подходит для их задач. Предостерегает от того, чтобы называть тех, кто чувствует странности в продвижении Next.js, теоретиками заговора
Что сейчас у
Vercel
небольшая команда по связям с разработчиками (DevRel
), и они не платят инфлюенсерам за продвижение. Однако раньше это было не так - Vercel
активно спонсировал людей, как официально, так и неофициально.#react #sst #nextjs #spa
Хорошая статья по использованию ИИ в программировании
Особенно,
Можно добавить, что большой бизнес все проблемы решит, а средний, малый и непрофильный столкнется с одноразовыми приложениями, накодеными vibe кодерами. Будет много недовольных клиентов.
Политика "одноразовых" продуктов из внешнего мира приходит в IT
#ai
Особенно,
Заключение
Можно добавить, что большой бизнес все проблемы решит, а средний, малый и непрофильный столкнется с одноразовыми приложениями, накодеными vibe кодерами. Будет много недовольных клиентов.
Политика "одноразовых" продуктов из внешнего мира приходит в IT
#ai
Хабр
Какие проблемы создает использование ИИ программистами
Структура статьи Введение Часть 1. Появился ИИ, ну и в чем проблемы? - Появились отличия в “программистах” Часть 2. Ну поменялись программисты и что? Важен же код. - Появились отличия в коде. Часть 3....
Если у вас есть массив, в каждом элементе которого есть
#tip #performance #reactivity
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
Мой Argus бот для распознавания текста на фото и изображениях потихоньку раскручивается
Добавил к нему кнопки быстрых действий и увеличил число
Эксперименты показали, что
На неделе добавится распознавание рукописного текста
#tgbot #argus #php #ai
Добавил к нему кнопки быстрых действий и увеличил число
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
Общеполезное
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
This media is not supported in your browser
VIEW IN TELEGRAM
Дожили
В
Теперь сайт Аэроэкспреса пофиксят...
#chrome #css
В
Chrome 135
появилась возможность стилизовать нативный <select>
Теперь сайт Аэроэкспреса пофиксят...
#chrome #css