This media is not supported in your browser
VIEW IN TELEGRAM
Surya OCR выглядит очень мощно для открытой OCR-модели.
Что выделяется:
→ менее 1 млрд параметров
→ поддержка 91 языка
→ до 5 страниц в секунду на RTX 5090
→ работает на CPU, GPU и Apple MPS
→ 83.3% на бенчмарке olmOCR, один из лучших результатов среди моделей до 3B параметров
Surya OCR относится к классу Document Intelligence-моделей. Она не просто извлекает текст с изображения, но также умеет работать со структурой документов: PDF, сканами, таблицами, многостраничными документами и сложной вёрсткой.
Подходит для задач:
• OCR документов и PDF
• оцифровки книг и сканов
• RAG-пайплайнов
• обработки счетов и форм
• извлечения данных из таблиц
• подготовки датасетов для LLM
100% open source.
👉 @SQLPortal
Что выделяется:
→ менее 1 млрд параметров
→ поддержка 91 языка
→ до 5 страниц в секунду на RTX 5090
→ работает на CPU, GPU и Apple MPS
→ 83.3% на бенчмарке olmOCR, один из лучших результатов среди моделей до 3B параметров
Surya OCR относится к классу Document Intelligence-моделей. Она не просто извлекает текст с изображения, но также умеет работать со структурой документов: PDF, сканами, таблицами, многостраничными документами и сложной вёрсткой.
Подходит для задач:
• OCR документов и PDF
• оцифровки книг и сканов
• RAG-пайплайнов
• обработки счетов и форм
• извлечения данных из таблиц
• подготовки датасетов для LLM
100% open source.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Обновить одну таблицу, используя значения из другой таблицы через прямое JOIN-соединение в 26ai:
Такие JOIN-соединения также можно использовать в операторах
👉 @SQLPortal
UPDATE <target_tab>
SET <target_col> = <source_col>
FROM <source_tab>
WHERE <join_condition>
Такие JOIN-соединения также можно использовать в операторах
DELETE.Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Скиллы AI-агентов представляют собой набор инструкций в Markdown, которые объясняют, как выполнять определённую задачу.
Kris Rice создал библиотеку из более чем 100 скиллов для работы с Oracle AI Database, включающую практические примеры, лучшие практики и распространённые ошибки.
Получить их можно здесь: https://github.com/oracle/skills
👉 @SQLPortal
Kris Rice создал библиотеку из более чем 100 скиллов для работы с Oracle AI Database, включающую практические примеры, лучшие практики и распространённые ошибки.
Получить их можно здесь: https://github.com/oracle/skills
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - oracle/skills: Oracle Skills is a curated, open-source collection of practical, installable skills for working with Oracle…
Oracle Skills is a curated, open-source collection of practical, installable skills for working with Oracle technologies. It provides developers, administrators, and AI agents with high-quality, so...
Я сократил расход токенов в Claude Code вдвое с помощью одного файла.
Замерял результат в течение недели.
Секрет прост: научить Claude выбирать модель в зависимости от задачи.
До этого токены тратились без разбора на любые задачи.
После настройки результат остался тем же, а расход снизился примерно вдвое.
Схема состоит из трёх частей.
1. Блок делегирования задач
Вы задаёте правило, по которому Claude создаёт субагентов и выбирает самую дешёвую подходящую модель:
→ Haiku: рутинные задачи без необходимости принимать решения
→ Sonnet: исследования, изучение кодовой базы, анализ и обобщение информации
→ Opus: только для реального планирования и сложных компромиссов
Два важных ограничения:
• Haiku никогда не создаёт собственных субагентов. Если это понадобилось, задача была плохо декомпозирована.
• Максимальная глубина вложенности — два уровня (родитель → субагент → ещё один уровень).
Если субагенту требуется более сильная модель, он возвращает задачу родителю, а не повышает уровень самостоятельно.
2. Блок предпочтительных инструментов
Вы учите Claude сначала выбирать самые дешёвые инструменты:
→ WebFetch для публичных веб-страниц
→ agent-browser CLI для динамических страниц и сайтов с авторизацией (примерно на 82% меньше токенов по сравнению с инструментами на основе скриншотов)
→ Конвертация PDF в текст вместо использования инструмента Read
Если Claude постоянно повторяет один и тот же шаблон действий, вы просите его оформить этот процесс как переиспользуемый инструмент.
3. Две строки в settings.json
Не позволяет загружать огромные контекстные окна, которые часто не нужны.
Запускает автоматическое сжатие контекста при заполнении на 80%, а не после полного заполнения.
Только эти две настройки экономят токены в каждой сессии.
Вся настройка занимает около двух минут.
А экономия начинает накапливаться с каждой следующей задачей.
👉 @SQLPortal
Замерял результат в течение недели.
Секрет прост: научить Claude выбирать модель в зависимости от задачи.
Haiku для массовых механических задач.
Sonnet для исследований и анализа.
Opus только там, где действительно требуется сложное рассуждение.
До этого токены тратились без разбора на любые задачи.
После настройки результат остался тем же, а расход снизился примерно вдвое.
Схема состоит из трёх частей.
1. Блок делегирования задач
Вы задаёте правило, по которому Claude создаёт субагентов и выбирает самую дешёвую подходящую модель:
→ Haiku: рутинные задачи без необходимости принимать решения
→ Sonnet: исследования, изучение кодовой базы, анализ и обобщение информации
→ Opus: только для реального планирования и сложных компромиссов
Два важных ограничения:
• Haiku никогда не создаёт собственных субагентов. Если это понадобилось, задача была плохо декомпозирована.
• Максимальная глубина вложенности — два уровня (родитель → субагент → ещё один уровень).
Если субагенту требуется более сильная модель, он возвращает задачу родителю, а не повышает уровень самостоятельно.
2. Блок предпочтительных инструментов
Вы учите Claude сначала выбирать самые дешёвые инструменты:
→ WebFetch для публичных веб-страниц
→ agent-browser CLI для динамических страниц и сайтов с авторизацией (примерно на 82% меньше токенов по сравнению с инструментами на основе скриншотов)
→ Конвертация PDF в текст вместо использования инструмента Read
Если Claude постоянно повторяет один и тот же шаблон действий, вы просите его оформить этот процесс как переиспользуемый инструмент.
3. Две строки в settings.json
"CLAUDE_CODE_DISABLE_1M_CONTEXT": "1"
Не позволяет загружать огромные контекстные окна, которые часто не нужны.
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "80"
Запускает автоматическое сжатие контекста при заполнении на 80%, а не после полного заполнения.
Только эти две настройки экономят токены в каждой сессии.
Вся настройка занимает около двух минут.
А экономия начинает накапливаться с каждой следующей задачей.
Please open Telegram to view this post
VIEW IN TELEGRAM
Dolt — это SQL-база данных с полноценным Git-подобным контролем версий для данных.
Можно делать ветки, мержить изменения, форкать и клонировать не только код, но и сами данные.
• Подключение через MySQL-протокол, чтение и запись версионируемых данных обычным SQL
• Импорт CSV, коммиты изменений, push, pull и merge через привычные Git-команды
• Публикация баз на DoltHub или самостоятельный хостинг через DoltLab
• Используется как слой памяти для AI-агентов в multi-agent и multi-machine workflow
Если вам когда-нибудь хотелось сделать
Посмотреть проект можно здесь: https://github.com/dolthub/dolt
👉 @SQLPortal
Можно делать ветки, мержить изменения, форкать и клонировать не только код, но и сами данные.
• Подключение через MySQL-протокол, чтение и запись версионируемых данных обычным SQL
• Импорт CSV, коммиты изменений, push, pull и merge через привычные Git-команды
• Публикация баз на DoltHub или самостоятельный хостинг через DoltLab
• Используется как слой памяти для AI-агентов в multi-agent и multi-machine workflow
Если вам когда-нибудь хотелось сделать
git checkout, git diff или git merge для базы данных, Dolt решает именно эту задачу.Посмотреть проект можно здесь: https://github.com/dolthub/dolt
Please open Telegram to view this post
VIEW IN TELEGRAM
Устали постоянно получать:
при создании объектов?
В Oracle AI Database 26ai достаточно выдать одну роль:
После этого пользователь сможет создавать все стандартные объекты базы данных.
👉 @SQLPortal
CREATE ...
ORA-01031: insufficient privileges
при создании объектов?
В Oracle AI Database 26ai достаточно выдать одну роль:
GRANT db_developer_role TO ...
После этого пользователь сможет создавать все стандартные объекты базы данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Supabase и Firebase забрали все ваши деньги?
Butterbase только что открыл исходный код. Полностью open-source бэкенд с нативной поддержкой AI:
- Postgres с RLS
- Auth и OAuth
- Хранилище
- Functions
- AI Gateway
- MCP Server (чтобы ваши агенты могли использовать бэкенд как полноценный набор инструментов)
То есть больше не нужно вручную копировать и вставлять код, чтобы Claude, Cursor или ваши агенты могли взаимодействовать с базой данных.
Всё доступно через инструменты.
Можно развернуть самостоятельно или использовать их managed-версию.
РЕПО ↓
https://github.com/butterbase-ai/butterbase
👉 @SQLPortal
Butterbase только что открыл исходный код. Полностью open-source бэкенд с нативной поддержкой AI:
- Postgres с RLS
- Auth и OAuth
- Хранилище
- Functions
- AI Gateway
- MCP Server (чтобы ваши агенты могли использовать бэкенд как полноценный набор инструментов)
То есть больше не нужно вручную копировать и вставлять код, чтобы Claude, Cursor или ваши агенты могли взаимодействовать с базой данных.
Всё доступно через инструменты.
Можно развернуть самостоятельно или использовать их managed-версию.
РЕПО ↓
https://github.com/butterbase-ai/butterbase
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - butterbase-ai/butterbase: Open-source backend-as-a-service. Postgres, auth, storage, functions, AI gateway, MCP.
Open-source backend-as-a-service. Postgres, auth, storage, functions, AI gateway, MCP. - butterbase-ai/butterbase
Нормализация БД относится к тем темам, которые изучает почти каждый разработчик.
Но со временем многие забывают разницу между:
✅ 1NF
✅ 2NF
✅ 3NF
✅ BCNF
✅ 4NF
Хорошо нормализованная база данных:
• уменьшает дублирование данных
• повышает целостность данных
• предотвращает аномалии при вставке, обновлении и удалении
• упрощает поддержку и развитие системы
Краткая шпаргалка по нормальным формам:
Но со временем многие забывают разницу между:
✅ 1NF
✅ 2NF
✅ 3NF
✅ BCNF
✅ 4NF
Хорошо нормализованная база данных:
• уменьшает дублирование данных
• повышает целостность данных
• предотвращает аномалии при вставке, обновлении и удалении
• упрощает поддержку и развитие системы
Краткая шпаргалка по нормальным формам:
Большинство AI-кодинг-агентов знают SQL.
Намного меньше из них понимают базы данных.
PlanetScale выложили Database Skills. Это набор skills для AI-агентов, которые работают с MySQL, Postgres, Vitess и Neki.
Вместо одного огромного промпта:
→ отдельный skill для MySQL
→ отдельный skill для Postgres
→ отдельный skill для Vitess
→ отдельный skill для Neki
Что умеет:
• проектирование схем
• индексы и оптимизация запросов
• транзакции и блокировки
• MVCC, VACUUM и WAL в Postgres
• шардинг через Vitess
• Online DDL и VReplication
• диагностика медленных запросов
Установка:
или в Cursor:
Мне нравится сама идея.
Сейчас многие используют агентов как очень умный автокомплит. А вот заставить агента понимать, почему этот индекс плохой, почему VACUUM отстаёт или почему шардирование сломает запросы через полгода, уже гораздо интереснее.
Open source. MIT License. GitHub доступен всем.
👉 @SQLPortal
Намного меньше из них понимают базы данных.
PlanetScale выложили Database Skills. Это набор skills для AI-агентов, которые работают с MySQL, Postgres, Vitess и Neki.
Вместо одного огромного промпта:
→ отдельный skill для MySQL
→ отдельный skill для Postgres
→ отдельный skill для Vitess
→ отдельный skill для Neki
Что умеет:
• проектирование схем
• индексы и оптимизация запросов
• транзакции и блокировки
• MVCC, VACUUM и WAL в Postgres
• шардинг через Vitess
• Online DDL и VReplication
• диагностика медленных запросов
Установка:
npx skills add planetscale/database-skills
или в Cursor:
/add-plugin database-skills
Мне нравится сама идея.
Сейчас многие используют агентов как очень умный автокомплит. А вот заставить агента понимать, почему этот индекс плохой, почему VACUUM отстаёт или почему шардирование сломает запросы через полгода, уже гораздо интереснее.
Open source. MIT License. GitHub доступен всем.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - planetscale/database-skills: Skills for AI agents working with databases
Skills for AI agents working with databases. Contribute to planetscale/database-skills development by creating an account on GitHub.
🚀 SudoTeach запустили новый курс — Продвинутый SQL!
SQL — это не только
На работе и собеседованиях SQL — это не только простые запросы, а индексы, транзакции, JOIN’ы, оконные функции, CTE и проектирование БД.
В курсе собрали всё, что нужно, чтобы уверенно работать с базами данных в реальных проектах.
Что внутри:
• продвинутая выборка данных;
• JOIN, подзапросы, агрегации и группировки;
• оконные функции, CTE и рекурсия;
• DML, DDL, нормализация и проектирование таблиц;
• индексы, транзакции, VIEW и MATERIALIZED VIEW;
• сравнение PostgreSQL, MySQL и SQLite;
• обзор NoSQL, MongoDB и Redis;
• финальный проект: спроектируете БД с нуля и напишете запросы к ней.
🎓 8 разделов, 24 урока, практические задания, помощь преподавателя и доступ навсегда.
Прямо сейчас можно забрать курс со скидкой 40%:
🔗 https://sudoteach.com/course/sql-pro
SQL — это не только
SELECT * FROM users.На работе и собеседованиях SQL — это не только простые запросы, а индексы, транзакции, JOIN’ы, оконные функции, CTE и проектирование БД.
В курсе собрали всё, что нужно, чтобы уверенно работать с базами данных в реальных проектах.
Что внутри:
• продвинутая выборка данных;
• JOIN, подзапросы, агрегации и группировки;
• оконные функции, CTE и рекурсия;
• DML, DDL, нормализация и проектирование таблиц;
• индексы, транзакции, VIEW и MATERIALIZED VIEW;
• сравнение PostgreSQL, MySQL и SQLite;
• обзор NoSQL, MongoDB и Redis;
• финальный проект: спроектируете БД с нуля и напишете запросы к ней.
🎓 8 разделов, 24 урока, практические задания, помощь преподавателя и доступ навсегда.
Прямо сейчас можно забрать курс со скидкой 40%:
🔗 https://sudoteach.com/course/sql-pro
🔥3
У Claude Code довольно элегантная структура проекта: одна папка
👉 @SQLPortal
.claude/, в которой живёт всё, что связано с агентом.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Только начинаете знакомство с Oracle AI Database?
Anders Swanson показывает, с чего начать.
Что входит в руководство:
• запуск бесплатной базы данных в Docker
• установка необходимых инструментов для разработки: расширения SQL Developer для VS Code и CLI-интерфейса SQLcl
• подборка бесплатных материалов для изучения Oracle AI Database и экосистемы Oracle
Подойдёт тем, кто хочет быстро поднять локальное окружение и начать работать с Oracle без лишней настройки.
👉 @SQLPortal
Anders Swanson показывает, с чего начать.
Что входит в руководство:
• запуск бесплатной базы данных в Docker
• установка необходимых инструментов для разработки: расширения SQL Developer для VS Code и CLI-интерфейса SQLcl
• подборка бесплатных материалов для изучения Oracle AI Database и экосистемы Oracle
Подойдёт тем, кто хочет быстро поднять локальное окружение и начать работать с Oracle без лишней настройки.
Please open Telegram to view this post
VIEW IN TELEGRAM
andersswanson.dev
Brand new to Oracle AI Database? Start Here - andersswanson.dev
Many Oracle guides are written for DBAs or long-time developers, and as a newcomer it feels like you’re expected to already know the jargon. I started in the same place, learning the as I went, and I’m still learning each day. If you’re considering using…
Любимый паттерн для “последняя запись на группу” в Postgres —
Да, он Postgres-specific. Нет, он не из SQL Standard. Зато для этой задачи он читается почти идеально.
Есть таблица заказов:
Старый классический вариант:
Работает, но есть нюансы.
Таблица читается два раза: сначала ищем
И ещё хуже: если у одного клиента два заказа с одинаковым
В Postgres проще так:
То есть
Чтобы это реально летало, добавляем индекс:
Теперь Postgres может идти по уже отсортированному индексу и не делать отдельную сортировку.
На небольшом тесте с 100k строк и 20k
Без индекса:
•
•
•
С индексом
•
•
•
Главный вывод: для “одна последняя строка на группу” в Postgres я первым беру
Если нужно не одну строку, а top N строк на группу, тогда уже
Window functions — когда нужна гибкость.
👉 @SQLPortal
DISTINCT ON.Да, он Postgres-specific. Нет, он не из SQL Standard. Зато для этой задачи он читается почти идеально.
Есть таблица заказов:
CREATE TABLE orders (
id bigint PRIMARY KEY,
customer_id int,
status text,
created_at timestamptz
);
Старый классический вариант:
SELECT o.*
FROM orders o
INNER JOIN (
SELECT customer_id, MAX(created_at) AS latest
FROM orders
GROUP BY customer_id
) latest ON o.customer_id = latest.customer_id
AND o.created_at = latest.latest;
Работает, но есть нюансы.
Таблица читается два раза: сначала ищем
MAX(created_at) по каждому customer_id, потом джойнимся обратно за полной строкой.И ещё хуже: если у одного клиента два заказа с одинаковым
created_at, запрос может вернуть две строки. Нужен tie-breaker.В Postgres проще так:
SELECT DISTINCT ON (customer_id)
customer_id, status, created_at
FROM orders
ORDER BY customer_id, created_at DESC;
DISTINCT ON (customer_id) оставляет первую строку для каждого клиента после сортировки.То есть
ORDER BY customer_id, created_at DESC сначала кладёт свежий заказ клиента наверх, а DISTINCT ON забирает его.Чтобы это реально летало, добавляем индекс:
CREATE INDEX ON orders (customer_id, created_at DESC);
Теперь Postgres может идти по уже отсортированному индексу и не делать отдельную сортировку.
На небольшом тесте с 100k строк и 20k
customer_id получилось так:Без индекса:
•
MAX + self-join: 32.92ms•
DISTINCT ON: 34.75ms•
ROW_NUMBER(): 38.68msС индексом
(customer_id, created_at DESC):•
DISTINCT ON: 15.99ms•
ROW_NUMBER(): 25.36ms•
MAX + self-join: 38.01msГлавный вывод: для “одна последняя строка на группу” в Postgres я первым беру
DISTINCT ON.Если нужно не одну строку, а top N строк на группу, тогда уже
ROW_NUMBER():SELECT customer_id, status, created_at
FROM (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY customer_id
ORDER BY created_at DESC
) AS rn
FROM orders
) ranked
WHERE rn = 1;
DISTINCT ON — для простого “последний на группу”.Window functions — когда нужна гибкость.
Please open Telegram to view this post
VIEW IN TELEGRAM