-rw-r--r-- 2.6K 31 июля 2025 · 043C479 · ~2 мин

История одного бага в Leaf

swift vapor leaf open source

История одного бага в Leaf

Этот сайт работает на Vapor — серверном фреймворке для Swift. Он довольно старый, популярный и известный.

Я использую его уже несколько лет, и мне всегда нравилось, что он быстрый и не требует много памяти на сервере.

Я поддерживаю все зависимости в актуальном состоянии. Но недавно я заметил, что сайт начал потреблять слишком много памяти. Использование начинается примерно с 20 МБ, но спустя несколько недель я обнаружил, что на сервере оно разрослось до 750 МБ.

Для такого простого сайта это очень много, поэтому я начал копать. Изучив код сайта (который я долгое время не менял), я не смог найти никаких проблем (как и AI-агенты).

Для рендеринга HTML я использую Leaf — шаблонизатор от команды Vapor. И в их репозитории на GitHub как раз был открытый тикет, описывающий точно такую же проблему.

Поэтому я попросил Copilot помочь мне разобраться, в чем дело. Он довольно быстро добавил в мой форк новые тесты, которые выполняли множество рендерингов в цикле. И утилита leak обнаружила циклы сильных ссылок (retain cycles). Я исправил это с помощью аннотации weak, но во время проверки моего PR мейнтейнер предложил просто использовать unowned.

И вот и всё. 2 строки кода исправили рост потребления памяти. Трудно поверить, но спустя несколько часов после деплоя сайт всё еще потребляет всего 2 МБ памяти. Так что сегодня я очень собой горжусь.

Мораль: вносите вклад в Open Source проекты, которыми вы пользуетесь.

[↵] открыть пост a-story-of-one-bug-in-leaf.md
-rw-r--r-- 848B 10 июля 2025 · A43AF6A · ~1 мин

Swift package для проверки орфографии с использованием Яндекс Спеллер

swift open source yandex speller

Swift-пакет для проверки орфографии с использованием Yandex.Speller

Для своих личных целей я хотел добавить проверку орфографии в одно из своих приложений. Она должна проверять текст и автоматически исправлять его. Встроенные инструменты macOS для работы с текстом отлично работают с английским, но не работают с русским.

Так что, когда всё было готово, почему бы не поделиться этим?

https://github.com/makoni/YaSpellChecker

[↵] открыть пост a-swift-package-for-spell-checking-using-yandex-speller.md
-rw-r--r-- 1.4K 9 июля 2025 · EDE172F · ~1 мин

HTML редактор на SwiftUI для macOS с подсветкой HTML синтаксиса

swiftui html macos open source

Текстовый редактор SwiftUI для macOS с подсветкой синтаксиса HTML

Несколько месяцев назад я захотел добавить в одно из своих приложений текстовый редактор с подсветкой синтаксиса HTML. Я попробовал пару библиотек, найденных на GitHub, но ни одна из них мне не подошла. В основном они слишком тяжеловесные и пытаются уместить в себе всё сразу. И в конечном итоге они работают нестабильно и с багами.

Вдохновившись концепцией «vibe coding», я сделал свой собственный вариант. Он отлично работает и не пытается быть полноценной IDE или серьезным редактором кода. Это просто простой SwiftUI компонент с текстовым редактором и подсветкой синтаксиса. Цвета можно настроить с помощью простой структуры.

Проект на GitHub: https://github.com/makoni/HTMLEditor-SwiftUI

[↵] открыть пост swiftui-text-editor-for-macos-with-html-syntax-highlighting.md
-rw-r--r-- 3.2K 8 июля 2025 · 931C7C2 · ~2 мин

Недавние обновления моих проектов

swift couchdb app store release informer open source ai

В последнее время я много экспериментирую с AI-агентами, и это серьёзно вдохновило меня обновить мои проекты. Работа с реальными задачами делает процесс гораздо интереснее.

Swift клиент для CouchDB

Вышло 2 новых релиза библиотеки couchdb-swift. Copilot любезно добавил в библиотеку больше юнит-тестов для покрытия различных сценариев использования. В основном они завершались ошибками. Мне всё ещё пришлось многое дорабатывать вручную, но это подкинуло мне пару идей. Поэтому в этих двух последних релизах я добавил более детальную обработку ошибок. Также он нашел и исправил несколько мелких багов, проверил мой PR и предложил некоторые улучшения. Он еще далеко не идеален, но всё равно впечатляет.

Бот Release Informer для Telegram

В какой-то момент я обнаружил, что Copilot Agent стал доступен для моей учетной записи, и теперь я могу просто создать issue на GitHub, назначить его на агента и посмотреть, что он сделает. Я начал с запроса обновить README для Release Informer Bot, добавив подробности о том, как он работает и как его настроить.

После того как агент закончил работу над обновленным README, у меня появилась еще одна идея: процесс настройки можно автоматизировать. Поэтому я открыл Visual Studio Code и попросил Copilot добавить автоматическое создание необходимой базы данных и её настройку с нужными индексами CouchDB.

Он и тут справился неплохо, но всё равно потребовались некоторые ручные правки и изменения. И в процессе этого появился еще один релиз библиотеки CouchDB client, так как я захотел полагаться на корректную ошибку «not found».

Трудно сказать, сколько времени мне сэкономил Copilot. Но определенно много. Включая мой любимый автоматический перевод строк. Надеюсь, это вдохновит меня выпускать еще больше обновлений.

[↵] открыть пост recent-updates-of-my-projects-july-2025.md
-rw-r--r-- 722B 19 мая 2025 · ED4BA57 · ~1 мин

AppMetric 1.13.0

macos приложения appmetric appmetrica

AppMetric 1.13.0

Вышло обновление AppMetric версии 1.13.0. Теперь на Swift 6, слегка подправил UI и убрал открытие поповера при запуске (кроме первого запуска) — пришёл к выводу, что это скорее раздражает, особенно если приложение запускается автоматически после перезагрузки. Ну и добавил локализацию на несколько новых языков.

Загрузить

[↵] открыть пост appmetric-1-13-0.md
-rw-r--r-- 1.9K 16 апр. 2025 · B2756B3 · ~1 мин

Swift клиент для CouchDB версия 2

swift couchdb swift package vapor open source

Клиент CouchDB для Swift, версия 2

Недавно я выпустил несколько новых версий CouchDB клиента для Swift. Последняя версия — 2, и она включает в себя несколько ключевых изменений:

  • Обновлена минимально необходимая версия Swift до 6.0.
  • Внедрена поддержка Swift Concurrency. CouchDBClient был обновлен и теперь является actor.
  • Библиотека была переименована из couchdb-vapor в couchdb-swift, чтобы лучше отражать её назначение как универсального клиента CouchDB для Swift, а не только для использования с Vapor.
  • Внесены изменения в инициализатор. Вместо передачи множества параметров теперь используется структура Config.
  • Теперь вы можете передать собственный экземпляр HTTPClient для использования в клиенте.
  • Добавлены переводы сообщений об ошибках.
  • Представлен специальный туториал по интеграции CouchDBClient с серверным фреймворком Hummingbird.
  • Добавлен метод shutdown() для корректного освобождения ресурсов, связанных с HTTPClient.

CouchDB Client на GitHub | Документация с примерами и руководствами.

Star Fork

[↵] открыть пост couchdb-client-for-swift-version-2.md
-rw-r--r-- 2.0K 14 янв. 2025 · D4F1C96 · ~1 мин

Добавление локализации приложению или библиотеке с помощью ИИ

xcode ai localization

Переведенный String Catalog

В предыдущей статье я рассказал, как добавить Strings Catalog в Swift-пакет для поддержки локализации. Теперь мы попробуем перевести его на большее количество языков.

[↵] открыть пост adding-translations-to-an-app-or-a-package-with-ai-help.md
makoni@arm1:~/blog$ cd ../page-3/ // ← предыдущая cd ./page-5/ // ещё посты →