Я.Субботник по Go - мой короткий отчёт
О чём были доклады:
• Сеть и ядро. Показали как обходить узкие места на уровне ядра и что это даёт под большой нагрузкой. Я узнал как такие вещи вообще делают и почему важно оставаться в экосистеме Go.
• Сборщик мусора. Разобрали текущий GC и новый Green Tea – на слайдах всё наглядно, как метятся объекты и как происходит очистка. Забавный факт – автор назвал его так просто потому, что любит зелёный чай.
• KV-хранилища. Конкретные кейсы и выгоды использования. Загорелся идеей попробовать YDB в будущих проектах.
• Debug Tree. Как навести порядок в отладке под высокой нагрузкой и даже на проде – шаги операции видно как на ладони.
Немного про людей:
• Кофе-брейк зашёл отлично – познакомился с несколькими людьми, обсудили идеи и наметил для себя как переносить процессы и даже проекты на Go.
Что возьму в работу:
• Продолжу изучать возможности Go
• Поработаю с кэшем и попробую оценить YDB на своих тестах.
• Подумаю над оптимизацией процесса отладки на подобие того, что был показан на субботнике.
Итог:
День получился практичным и живым. Ушёл с понятным списком экспериментов и несколькими новыми контактами.
#Go #конференция #yandex #ЯСубботник #networking #KV #GC #DebugTree #ydb
О чём были доклады:
• Сеть и ядро. Показали как обходить узкие места на уровне ядра и что это даёт под большой нагрузкой. Я узнал как такие вещи вообще делают и почему важно оставаться в экосистеме Go.
• Сборщик мусора. Разобрали текущий GC и новый Green Tea – на слайдах всё наглядно, как метятся объекты и как происходит очистка. Забавный факт – автор назвал его так просто потому, что любит зелёный чай.
• KV-хранилища. Конкретные кейсы и выгоды использования. Загорелся идеей попробовать YDB в будущих проектах.
• Debug Tree. Как навести порядок в отладке под высокой нагрузкой и даже на проде – шаги операции видно как на ладони.
Немного про людей:
• Кофе-брейк зашёл отлично – познакомился с несколькими людьми, обсудили идеи и наметил для себя как переносить процессы и даже проекты на Go.
Что возьму в работу:
• Продолжу изучать возможности Go
• Поработаю с кэшем и попробую оценить YDB на своих тестах.
• Подумаю над оптимизацией процесса отладки на подобие того, что был показан на субботнике.
Итог:
День получился практичным и живым. Ушёл с понятным списком экспериментов и несколькими новыми контактами.
#Go #конференция #yandex #ЯСубботник #networking #KV #GC #DebugTree #ydb
🔥2❤1
Forwarded from Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
💡 Совет по Laravel: Получение исходных атрибутов
Аксессоры Laravel позволяют преобразовывать атрибуты модели при их извлечении. Но иногда может потребоваться получить исходное значение. Laravel предоставляет специальный метод для этого:
Аксессоры Laravel позволяют преобразовывать атрибуты модели при их извлечении. Но иногда может потребоваться получить исходное значение. Laravel предоставляет специальный метод для этого:
getRawOriginal 🚀Оказалось у Docker Desktop (во всяком случае под MacOS) имеется чудная возможность свободно передавать volume между Docker хостами.
Для этого должно быть установлено это расширение "Volumes Backup & Share".
Кроме этого есть возможность и импорта, просмотра, клонирования и удаления volume
Обновление от 10.12.2025: вероятно данное расширение более не поддерживается . В последних версиях Docker desktop перестало работать и пропало из каталога расширений .
Думаю иногда буду пробовать новые расширения и писать о них краткие заметки
#docker #extensions #transfer #data #volume
Для этого должно быть установлено это расширение "Volumes Backup & Share".
Кроме этого есть возможность и импорта, просмотра, клонирования и удаления volume
Обновление от 10.12.2025: вероятно данное расширение более не поддерживается . В последних версиях Docker desktop перестало работать и пропало из каталога расширений .
Думаю иногда буду пробовать новые расширения и писать о них краткие заметки
#docker #extensions #transfer #data #volume
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
Между этим событием и первым сертификатом не так много времени прошло