Sergey L.
Оказалось у Docker Desktop (во всяком случае под MacOS) имеется чудная возможность свободно передавать volume между Docker хостами. Для этого должно быть установлено это расширение "Volumes Backup & Share". Кроме этого есть возможность и импорта, просмотра…
Конкретно данное расширение более не обновляется и недоступно в перечне расширений для Docker Desktop
Пробую создание собственного MCP сервера
Цель - реализовать собственный MCP сервер, который бы позволял получать актуальную документацию по нужным мне фреймворкам и библиотекам. индексировал ее. А также чтобы мог выполнять валидацию соответствия кода основным паттернам .
Итак, написана пробная версия. Что под капотом ?
✅ Ollama - работает (нужно загрузить модель, после первого запуска (около 10-15 мин))/
✅ 13 предустановленных источников документации:
- PHP 8.4, 8.5
- Laravel 12
- Vue 3, Nuxt 4
- Filament 4, Livewire 3
- Tailwind CSS 4
- Telegraph, Spatie пакеты
Возможности:
🔍 Гибридный поиск (тест + семантический)
🧠 Семантический поиск через Ollama
📝 Быстрый текстовый поиск через SQLite FTS5
✅ Валидация кода (backend + frontend)
📚 Добавление своих источников через понятный json конфиг
На скринах видно как работет .
Иногда возникают моменты, что индексация занимает продолжительное время (думаю из-за 16гб оперативной памяти у меня)
Чуть позже проект появится на github.com и его можно будет пощупать самостоятельно и опробовать в работе
Цель - реализовать собственный MCP сервер, который бы позволял получать актуальную документацию по нужным мне фреймворкам и библиотекам. индексировал ее. А также чтобы мог выполнять валидацию соответствия кода основным паттернам .
Итак, написана пробная версия. Что под капотом ?
✅ Ollama - работает (нужно загрузить модель, после первого запуска (около 10-15 мин))/
✅ 13 предустановленных источников документации:
- PHP 8.4, 8.5
- Laravel 12
- Vue 3, Nuxt 4
- Filament 4, Livewire 3
- Tailwind CSS 4
- Telegraph, Spatie пакеты
Возможности:
🔍 Гибридный поиск (тест + семантический)
🧠 Семантический поиск через Ollama
📝 Быстрый текстовый поиск через SQLite FTS5
✅ Валидация кода (backend + frontend)
📚 Добавление своих источников через понятный json конфиг
На скринах видно как работет .
Иногда возникают моменты, что индексация занимает продолжительное время (думаю из-за 16гб оперативной памяти у меня)
Чуть позже проект появится на github.com и его можно будет пощупать самостоятельно и опробовать в работе
👍2
Sergey L.
Пробую создание собственного MCP сервера Цель - реализовать собственный MCP сервер, который бы позволял получать актуальную документацию по нужным мне фреймворкам и библиотекам. индексировал ее. А также чтобы мог выполнять валидацию соответствия кода основным…
Как и обещал, публикую текущую версию MCP сервера https://github.com/sleleko/leko-mcp
В планах попробовать вариант реализации на базе Laravel MCP https://laravel.com/docs/12.x/mcp
В планах попробовать вариант реализации на базе Laravel MCP https://laravel.com/docs/12.x/mcp
GitHub
GitHub - sleleko/leko-mcp: Local MCP server for indexing and semantic search across documentation using Ollama.
Local MCP server for indexing and semantic search across documentation using Ollama. - sleleko/leko-mcp
🗄 MySQL: как мгновенно очистить таблицу на 11 ГБ без боли
Внимание ❗️: предлагаемое ниже решение не для production баз
В одной из баз данных столкнулся с таблицей craft_blitz_elementfieldcaches весом 11 620 МБ, которую нужно было полностью очистить.
Как я определил вес таблиц?
Взвесил таблицы запросом:
Получил результат:
Казалось бы - TRUNCATE и готово. Но не тут-то было:
TRUNCATE на больших InnoDB таблицах может вызвать лавину блокировок и откат транзакций на несколько часов.
Батчевый DELETE - рабочий вариант, но медленный.
Есть элегантный трюк:
Почему это работает:
RENAME TABLE - атомарная операция.
Приложение моментально переключается на пустую таблицу и продолжает работу.
DROP старой таблицы может идти сколько угодно - он уже никому не мешает.
Если есть внешние ключи - добавь перед rename:
Итог: 11 ГБ "исчезли" за секунды, сервис не заметил ничего.
Этот же приём лежит в основе таких инструментов как pt-online-schema-change и gh-ost.
Примечание: Чтобы в MySQL обновилась информация о весе проблемной таблицы понадобилось дополнительно выполнить
#mysql #devops #performance #backend #craftcms #blitz_cache #blitz
Внимание ❗️: предлагаемое ниже решение не для production баз
В одной из баз данных столкнулся с таблицей craft_blitz_elementfieldcaches весом 11 620 МБ, которую нужно было полностью очистить.
Как я определил вес таблиц?
Взвесил таблицы запросом:
SELECT table_name, ROUND((data_length + index_length) / 1024 / 1024, 2) AS MB FROM information_schema.tables WHERE table_schema = 'roke' ORDER BY MB DESC LIMIT 20;
Получил результат:
+------------------------------------+----------+
| craft_blitz_elementfieldcaches | 11620.97 |
| craft_elements_sites | 816.38 |
| craft_blitz_elementcaches | 707.72 |
| craft_blitz_elementqueries | 86.27 |
| craft_elements | 37.67 |
| craft_changedfields | 28.67 |
| craft_entries | 19.64 |
| craft_redirect_404_log | 12.50 |
| craft_blitz_elementquerycaches | 9.03 |
| craft_formie_submissions | 8.27 |
| craft_searchindex | 7.95 |
| craft_revisions | 7.55 |
| craft_entries_authors | 6.55 |
| craft_blitz_caches | 4.20 |
| craft_structureelements | 3.16 |
| craft_redirect_hits | 1.72 |
| craft_projectconfig | 1.52 |
| craft_feedme_logs | 0.64 |
| craft_redirects | 0.52 |
| craft_blitz_elementqueryattributes | 0.42 |
+------------------------------------+----------+
20 rows in set (0.07 sec)
Казалось бы - TRUNCATE и готово. Но не тут-то было:
TRUNCATE на больших InnoDB таблицах может вызвать лавину блокировок и откат транзакций на несколько часов.
Батчевый DELETE - рабочий вариант, но медленный.
Есть элегантный трюк:
-- 1. Создаём пустой клон структуры
CREATE TABLE craft_blitz_elementfieldcaches_new
LIKE craft_blitz_elementfieldcaches;
-- 2. Атомарная подмена — занимает миллисекунды
RENAME TABLE
craft_blitz_elementfieldcaches TO craft_blitz_elementfieldcaches_old,
craft_blitz_elementfieldcaches_new TO craft_blitz_elementfieldcaches;
-- 3. Удаляем старую в фоне — приложение уже не при делах
DROP TABLE craft_blitz_elementfieldcaches_old;
Почему это работает:
RENAME TABLE - атомарная операция.
Приложение моментально переключается на пустую таблицу и продолжает работу.
DROP старой таблицы может идти сколько угодно - он уже никому не мешает.
Если есть внешние ключи - добавь перед rename:
SET FOREIGN_KEY_CHECKS = 0;
-- после rename вернуть = 1
Итог: 11 ГБ "исчезли" за секунды, сервис не заметил ничего.
Этот же приём лежит в основе таких инструментов как pt-online-schema-change и gh-ost.
Примечание: Чтобы в MySQL обновилась информация о весе проблемной таблицы понадобилось дополнительно выполнить
USE craft_db;
ANALYZE craft_blitz_elementfieldcaches;
#mysql #devops #performance #backend #craftcms #blitz_cache #blitz
Sergey L.
Photo
Между этим событием и первым сертификатом не так много времени прошло
Выхожу на финишную прямую!
В процессе было разработано несколько сервисов, часть из которых уже опубликовано у меня на гите https://github.com/sleleko
В процессе было разработано несколько сервисов, часть из которых уже опубликовано у меня на гите https://github.com/sleleko
Please open Telegram to view this post
VIEW IN TELEGRAM