<rss version="2.0">
	<channel>
		<title>Arm1.ru</title>
		<link>https://arm1.ru/blog</link>
		<description>A blog about IT and software development.</description>
            
                <item>
					<title>Видеопроигрыватели для Linux</title>
					<link>https://arm1.ru/blog/video-players-for-linux</link>
					<description><![CDATA[<p style="text-align: center;">
	<img alt="Видеопроигрыватели для Linux" src="https://arm1.ru/img/uploaded/video-players-for-linux.webp" style="width: 100%;">
</p>

<p>
	Сегодня расхваливал товарищу из айти-завтрака Video Player — видеопроигрыватель из GNOME, который раньше назывался Showtime. Насколько я понимаю, в какой-то момент он стал проигрывателем по умолчанию, в том числе и в последней версии Ubuntu.
</p>

<p>
	Мне нравится его минимализм, нужные мне файлы он воспроизводит, и приятно, что при выборе аудиодорожки показывает название перевода (студии озвучки) — почему-то не все проигрыватели это умеют.
</p>

<p>
	Пришёл домой, решил сравнить его с другими проигрывателями, открыл файл с HDR и Dolby Vision — кажется, зря я его так хвалил. На снимке экрана сверху вниз: Video Player (Showtime), <a href="https://github.com/diegopvlk/Cine">Cine</a> и VLC.
</p>

<p>
	Все три отличаются по цветам. Пожалуй, перейду на Cine. Судя по репозиторию, это довольно молодой видеопроигрыватель. Он тоже основан на MPV и тоже написан на Python, как и Showtime. Только развивается активнее, обновления выходят чаще, и, главное, цвета показывает корректно. У Showtime, насколько я помню, почему-то проблемы с HDR уже не первый год, а обновления выходят раз в три-шесть месяцев.
</p>

<p>
	VLC, конечно, легенда, способная проиграть всё, что вообще возможно проиграть, но интерфейс, на мой взгляд, изрядно устарел. Дорогу молодым.
</p>]]></description>
					<pubDate>Fri, 15 May 2026 13:05:40 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/video-players-for-linux</guid>
					<comments>https://arm1.ru/blog/video-players-for-linux#comments</comments>
				</item>
            
                <item>
					<title>Swifty Notes - менеджер markdown заметок для Linux на Swift</title>
					<link>https://arm1.ru/blog/swifty-notes-a-markdown-notes-manager-for-linux-in-swift</link>
					<description><![CDATA[<p style="text-align: center;">
	<img alt="Swift Notes для Linux" src="https://arm1.ru/img/uploaded/swift-notes-1.0.0.webp" style="width: 100%;">
</p>

<p>
	После выпуска <a href="https://github.com/makoni/swift-adwaita">swift-adwaita</a> я сосредоточился на создании своего первого приложения с его использованием. Что-то простое, но полезное для меня самого. И вот, первое приложение готово к использованию.
</p>

<p>
	Swifty Notes — это нативное приложение для заметок в формате Markdown под Linux, использующее GTK/libadwaita и написанное на языке Swift.
</p>

<p>
	Основной интерфейс — десктопное приложение: пишите, организуйте и просматривайте Markdown-заметки с помощью нативных виджетов GTK, функции автосохранения, сохранения состояния рабочего пространства и настраиваемых параметров редактора (размер шрифта, перенос строк, отступы и внешний вид).
</p>

<p>
	В комплекте идет CLI (интерфейс командной строки), который работает с теми же файлами, поэтому shell-скрипты, инструменты автоматизации и AI-агенты могут безопасно просматривать или обновлять заметки без необходимости использования отдельной базы данных или фоновых служб.
</p>

<ul>
	<li>
		Создание, переименование, дублирование, экспорт и удаление Markdown-заметок.
	</li>

	<li>
		Автосохранение изменений, сохранение состояния рабочего пространства и хранение локальных изображений прямо вместе с каждой заметкой.
	</li>

	<li>
		Настройка размера шрифта и других параметров редактора под разные экраны и рабочие процессы.
	</li>

	<li>
		Выбор места хранения заметок, включая папки с облачной синхронизацией, что позволяет поддерживать актуальность одних и тех же файлов на разных устройствах.
	</li>

	<li>
		Импорт изображений простым перетаскиванием (drag and drop) и рендеринг Markdown через нативный виджет GTK вместо использования веб-представления (web view).
	</li>

	<li>
		Использование CLI для удобной автоматизации заметок в формате JSON с помощью скриптов, конвейеров оболочки (shell pipelines) и AI-агентов.
	</li>
</ul>

<p>
	<video style="width: 100%;" height="auto" controls preload="auto" poster="/img/uploaded/swift-notes-1.0.0.webp">
		<source src="/videos/swifty-notes.webm">
	</video>
</p>

<p style="text-align: center;">
	<a href="https://flathub.org/en/apps/me.spaceinbox.swiftynotes"><img style="height: 56px;" height="56" alt="Скачать на Flathub" src="https://flathub.org/api/badge?locale=en"/></a >
</p>

<p>
	Swifty Notes для Linux — это проект с открытым исходным кодом, исходный код доступен на <a href="https://github.com/makoni/swifty-notes-gtk" target="_blank">GitHub</a>.
</p>

<p>
	<a class="github-button" href="https://github.com/makoni/swifty-notes-gtk" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star Swifty Notes on GitHub">Star</a>
	<a class="github-button" href="https://github.com/makoni/swifty-notes-gtk/fork" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-repo-forked" data-size="large" data-show-count="true" aria-label="Fork Swifty Notes on GitHub">Fork</a>
</p>

<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
]]></description>
					<pubDate>Fri, 10 Apr 2026 14:00:22 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/swifty-notes-a-markdown-notes-manager-for-linux-in-swift</guid>
					<comments>https://arm1.ru/blog/swifty-notes-a-markdown-notes-manager-for-linux-in-swift#comments</comments>
				</item>
            
                <item>
					<title>Swift Adwaita 1.1.0</title>
					<link>https://arm1.ru/blog/swift-adwaita-1-1-0</link>
					<description><![CDATA[<p>
	<img alt="Swift Adwaita" src="https://arm1.ru/img/uploaded/swift-adwaita-2.webp" style="width: 100%;">
</p>

<p>
	Вышел релиз Swift Adwaita 1.1.0. Поскольку я работаю над первым приложением, созданным с использованием этой библиотеки, я расширил её возможности и исправил некоторые баги.

<h2>Основные изменения</h2>

<ul>
	<li>
		Добавлена интеграция с <b>GtkSourceView</b> с использованием типизированных оберток на Swift для редактирования кода, подсветки синтаксиса, поддержки языков и схем стилей.
	</li>

	<li>
		Расширен API виджетов в части работы с поповерами (popovers), окнами, совместимостью с календарем и обработкой жизненного цикла во время выполнения (runtime lifecycle).
	</li>

	<li>
		Повышена стабильность релиза благодаря улучшенной интеграции с основным циклом GLib (main-loop), расширению покрытия CI и добавлению новых регрессионных тестов.
	</li>
</ul>

<h2>Добавлено</h2>

<ul>
	<li>
		<b>SourceView</b>, <b>SourceBuffer</b>, <b>SourceLanguage</b>, <b>SourceLanguageManager</b>, <b>SourceStyleScheme</b> и <b>SourceStyleSchemeManager</b>.
	</li>

	<li>
		Типизированные идентификаторы для языков и схем стилей <b>GtkSource</b>.
	</li>

	<li>
		Новый демонстрационный пример редактора кода.
	</li>

	<li>
		<b>MainContext.task { ... }</b>, <b>task(after:)</b> и <b>task(every:)</b> как отменяемые дескрипторы (handles) задач в основном цикле GLib.
	</li>

	<li>
		Асинхронные помощники Async MainContext.run, yield и sleep(for:) для безопасного соединения конкурентности Swift (Swift concurrency) с циклом GLib.
	</li>

	<li>
		<b>Widget.unparent()</b> и <b>PopoverMenu.unparent()</b>.
	</li>

	<li>
		Удобные помощники для работы с <b>Popover</b> и <b>PopoverMenu</b>.
	</li>

	<li>
		Дополнительные регрессионные тесты для поиска родителя в цепочке виджетов/окон, а также расширенное покрытие для функций редактирования кода и поведения медиафайлов.
	</li>
</ul>

<h2>Изменено</h2>

<ul>
	<li>
		<b>GtkWindow.present()</b> теперь удерживает окна открытыми до их закрытия, что делает использование временных или локально ограниченных окон более безопасным.
	</li>

	<li>
		<b>Widget.window</b> теперь находит содержащее окно через цепочку родителей виджета, вместо того чтобы предполагать, что GTK root всегда является окном.
	</li>

	<li>
		Обработка дат в календаре теперь использует прослойку (shim) для совместимости с GTK, что позволяет чисто собирать пакет как на старых, так и на новых версиях GTK.
	</li>

	<li>
		Обновлены конфигурация генерации документации и хостинга документации.
	</li>

	<li>
		В CI теперь выполняется установка и тестирование с системными зависимостями <b>GtkSourceView 5</b>.
	</li>
</ul>

<h2>Исправлено</h2>

<ul>
	<li>
		Исправлена отложенная очистка сигналов/пользовательских данных (user-data): теперь она освобождает захваченные замыкания через основной цикл GLib, а не через задачи Swift main-queue, что позволяет избежать проблем с жизненным циклом в GTK-приложениях.
	</li>

	<li>
		Исправлена распространенная ошибка планирования (scheduling pitfall) в GTK путем предложения API в стиле Task, который работает в основном цикле GLib вместо <b>DispatchQueue.main</b>.
	</li>

	<li>
		Исправлены проблемы с видимостью сериализованного набора функций в Swift 6.1 в тестовом наборе.
	</li>

	<li>
		Исправлены регрессионные тесты для popover/window, чтобы избежать путей падения (crash paths) GTK в CI при сохранении проверки ожидаемого поведения.
	</li>

	<li>
		Обновлена документация по релизу и инструкции по установке: теперь они включают пакеты разработки GtkSourceView 5.
	</li>
</ul>

<h2>Документация и CI</h2>

<ul>
	<li>
		В README добавлена ссылка на API-документацию.
	</li>

	<li>
		Обновлены инструкции по установке для Ubuntu/Debian и Fedora.
	</li>

	<li>
		Улучшена согласованность встроенной документации во всем API обертки.
	</li>

	<li>
		Расширено покрытие CI для документации, форматирования и тестовых прогонов на Swift 6.1 / 6.2 / 6.3.
	</li>
</ul>

<p>
	Это проект с открытым исходным кодом под лицензией MIT. Исходный код доступен на <a href="https://github.com/makoni/swift-adwaita/">GitHub</a>. Документация с руководствами доступна <a href="https://spaceinbox.me/docs/swift-adwaita/documentation/adwaita">здесь</a>.
</p>

<p>
	<a class="github-button" href="https://github.com/makoni/swift-adwaita" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star makoni/swift-adwaita on GitHub">Star</a>
	<a class="github-button" href="https://github.com/makoni/swift-adwaita/fork" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-repo-forked" data-size="large" data-show-count="true" aria-label="Fork makoni/swift-adwaita on GitHub">Fork</a>
</p>

<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
]]></description>
					<pubDate>Fri, 10 Apr 2026 08:56:33 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/swift-adwaita-1-1-0</guid>
					<comments>https://arm1.ru/blog/swift-adwaita-1-1-0#comments</comments>
				</item>
            
                <item>
					<title>HTMLEditor для SwiftUI 1.1.0</title>
					<link>https://arm1.ru/blog/html-editor-for-swiftui-1-1-0</link>
					<description><![CDATA[<p>
	<img alt="HTMLEditor для SwiftUI 1.1.0" src="https://arm1.ru/img/uploaded/html-editor-for-swiftui-1-1-0.webp" style="width: 100%;">
</p>

<p>
	Этот релиз посвящен обеспечению совместимости с Swift 6.3, существенному переписыванию обработки подсветки синтаксиса и значительному улучшению отзывчивости при редактировании очень больших HTML-документов.
</p>

<h3>Добавлено</h3>

<ul>
	<li>
		Добавлен исполняемый таргет <b class="target">HTMLEditorBenchmarks</b> для проведения повторяемых замеров производительности.
	</li>

	<li>
		Добавлена поддержка бенчмарков для: полного планирования подсветки, повторного использования перекрытий (overlap reuse), инвалидации правок, переназначения видимой подсветки и путей локальной перерисовки больших документов.
	</li>

	<li>
		Добавлены специализированные регрессионные тесты для:
		<ul>
			<li>
				повторного использования кэша планировщика и инвалидации в рамках документа;
			</li>

			<li>
				крайних случаев с некорректными <b class="range">NSRange</b> и кодировкой UTF-16;
			</li>

			<li>
				подсветки значений атрибутов в кавычках и без них;
			</li>

			<li>
				переназначения состояния видимой подсветки;
			</li>

			<li>
				покрытия подсветки на уровне блоков;
			</li>

			<li>
				политик редактирования и прокрутки больших документов.
		</li>
		</ul>
	</li>
</ul>

<h3>Изменено</h3>

<ul>
	<li>
		Runtime редактора была отрефакторена на более мелкие специализированные компоненты, включая отдельные файлы для жизненного цикла координатора, вьюпорта, редактирования, политик, покрытия, структурных диапазонов и состояния видимой подсветки.
	</li>

	<li>
		Синтаксический анализатор был разбит на компоненты на базе планировщика и исполнителя для более четкого разделения этапов сканирования, планирования и применения подсветки.
	</li>

	<li>
		Редактор переведен на адаптивную модель выполнения, которая меняет свое поведение в зависимости от размера документа, вместо того чтобы обрабатывать все HTML-документы одинаково.
	</li>
</ul>

<h3>Улучшено</h3>

<ul>
	<li>
		Значительно улучшена производительность при редактировании больших документов благодаря:
		<ul>
			<li>
				приоритетной подсветке видимой области;
			</li>

			<li>
				кэшированию планировщика в пределах документа и целевой инвалидации;
			</li>

			<li>
				кэшированию планов видимых диапазонов;
			</li>

			<li>
				отслеживанию покрытия подсветки на уровне блоков;
			</li>

			<li>
				выравниванию структурных «грязных» диапазонов вокруг правок;
			</li>

			<li>
				двухфазному редактированию больших файлов с немедленным микро-проходом и отложенной расширенной перерисовкой;
			</li>

			<li>
				объединению частых правок для снижения частоты перерисовок;
			</li>

			<li>
				семантической подсветке во время простоя прокрутки;
			</li>

			<li>
				отложенной синхронизации привязок для больших документов;
			</li>

			<li>
				автоматическому включению режима <b class="property">allowsNonContiguousLayout</b> в режиме работы с большими файлами.
			</li>
		</ul>
	</li>

	<li>
		Повышена стабильность подсветки при наборе текста в середине очень большого HTML-документа за счет сохранения состояния видимого оверлея и уменьшения частоты перерисовок вокруг курсора.
	</li>

	<li>
		Улучшена настройка производительности для больших файлов с помощью выделенных бенчмарков и runtime-зондов.
	</li>
</ul>

<h3>Исправлено</h3>

<ul>
	<li>
		Исправлены проблемы компиляции и конкурентности, необходимые для совместимости с <b class="version">Swift 6.3</b>.
	</li>

	<li>
		Исправлено несколько проблем в путях обновления редактора, связанных с состоянием координатора, задачами подсветки и поведением main-actor.
	</li>

	<li>
		Исправлены регрессии подсветки и крайние случаи, связанные с:
		<ul>
			<li>частичными тегами;</li>

			<li>пустым вводом;</li>

			<li>большими объемами данных;</li>

			<li>раскраской значений атрибутов;</li>

			<li>потерей видимой подсветки при редактировании больших файлов;</li>

			<li>некорректными или обрезанными видимыми диапазонами.</li>
		</ul>
	</li>
</ul>

<h3>Примечания</h3>

<ul>
	<li>
		Для небольших HTML-документов по-прежнему используется семантическая подсветка всего документа.
	</li>

	<li>
		Очень большие HTML-файлы теперь автоматически переключаются в более консервативный, ориентированный на производительность режим редактирования, чтобы обеспечить плавность прокрутки и набора текста.
	</li>
</ul>

<p>
	Попробуйте на GitHub: <a href="https://github.com/makoni/HTMLEditor-SwiftUI">https://github.com/makoni/HTMLEditor-SwiftUI</a>
</p>

<p>
	<a class="github-button" href="https://github.com/makoni/HTMLEditor-SwiftUI" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star makoni/HTMLEditor-SwiftUI on GitHub">Star</a>

	<a class="github-button" href="https://github.com/makoni/HTMLEditor-SwiftUI/fork" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-repo-forked" data-size="large" data-show-count="true" aria-label="Fork makoni/HTMLEditor-SwiftUI on GitHub">Fork</a>
</p>

<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>



]]></description>
					<pubDate>Mon, 06 Apr 2026 17:39:07 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/html-editor-for-swiftui-1-1-0</guid>
					<comments>https://arm1.ru/blog/html-editor-for-swiftui-1-1-0#comments</comments>
				</item>
            
                <item>
					<title>Библиотека Swift Adwaita</title>
					<link>https://arm1.ru/blog/swift-adwaita-library</link>
					<description><![CDATA[<p>
	<img alt="Swift Adwaita" src="https://arm1.ru/img/uploaded/swift-adwaita-2.webp" style="width: 100%;">
</p>

<p>
	Это проект, который я всегда хотел создать: библиотека, позволяющая разрабатывать приложения для GNOME, используя Swift. Хотя существуют и другие подобные библиотеки, они кажутся либо неполными, либо заброшенными. Благодаря подходу Vibe Coding мне удалось завершить проект примерно за неделю.
</p>

<p>
	<b>swift-adwaita</b> — это императивная обертка на Swift 6 для GTK4 и libadwaita, созданная для разработки нативных десктопных приложений GNOME под Linux.
</p>

<p>
	Библиотека предоставляет современный Swift API поверх GTK и Adwaita с типобезопасными виджетами, сигналами, привязками свойств (property bindings), поддержкой асинхронных операций и удобными вспомогательными инструментами, сохраняя при этом нативный стиль, поведение и эстетику платформы GNOME.
</p>

<ul>
	<li>
		Разработка нативных приложений для GTK4 и libadwaita на языке Swift.
	</li>
	
	<li>
		Императивный API без использования кастомного DSL.
	</li>
	
	<li>
		Типобезопасные перечисления (enums), сигналы и API свойств.
	</li>
	
	<li>
		Поддержка Async/await для интеграции с основными возможностями платформы.
	</li>
	
	<li>
		Широкая поддержка виджетов, подкрепленная полноценным демонстрационным приложением.
	</li>
</ul>

<p>
	Вот демо-приложение, созданное с использованием <b>swift-adwaita</b>:
</p>

<p>
	<video style="width: 100%;" height="auto" controls preload="auto" poster="/img/uploaded/swift-adwaita-2.webp">
		<source src="/videos/swift-adwaita.webm">
	</video>
</p>

<p>
	Это проект с открытым исходным кодом под лицензией MIT. Исходный код доступен на <a href="https://github.com/makoni/swift-adwaita/">GitHub</a>. Документация с руководствами доступна <a href="https://spaceinbox.me/docs/swift-adwaita/documentation/adwaita">здесь</a>.
</p>

<p>
	<a class="github-button" href="https://github.com/makoni/swift-adwaita" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star makoni/swift-adwaita on GitHub">Star</a>
	<a class="github-button" href="https://github.com/makoni/swift-adwaita/fork" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-repo-forked" data-size="large" data-show-count="true" aria-label="Fork makoni/swift-adwaita on GitHub">Fork</a>
</p>

<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
]]></description>
					<pubDate>Tue, 31 Mar 2026 17:43:50 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/swift-adwaita-library</guid>
					<comments>https://arm1.ru/blog/swift-adwaita-library#comments</comments>
				</item>
            
                <item>
					<title>Swift клиент для CouchDB 2.4.0</title>
					<link>https://arm1.ru/blog/couchdb-client-for-swift-2-4-0</link>
					<description><![CDATA[<p>
	<img src="https://arm1.ru/img/uploaded/couchdb-client-swift.webp" style="width: 100%;">
</p>

<h2>Основные изменения</h2>

<ul>
	<li>
		Проведен рефакторинг внутреннего устройства выполнения запросов в <b>CouchDBClient</b> для использования более чистых потоков в стиле async/await и уменьшения дублирования логики обработки ответов.
	</li>

	<li>
		Улучшены пути буферизации и декодирования для сырых и типизированных запросов с упором на более безопасное выполнение в <b>EventLoopGroup</b> и повышение производительности при обработке ответов.
	</li>

	<li>
		Расширено тестовое покрытие для выполнения запросов на базе <b>EventLoopGroup</b>, включая сырые и типизированные <b>get</b>, сырые и типизированные <b>find</b>, загрузку вложений, вывод списков индексов Mango и объяснение запросов Mango.
	</li>

	<li>
		Обновлена документация для пользователей: README, статьи DocC и руководства (tutorials).
	</li>

	<li>
		Обновлены инструменты документирования для новых рабочих процессов DocC, включая поддержку экспорта в Markdown.
	</li>
</ul>

<h2>Улучшения API и поведения</h2>

<ul>
	<li>
		Добавлена и доработана поддержка <b>EventLoopGroup</b> для большего количества путей запросов в <b>CouchDBClient</b>.
	</li>

	<li>
		Улучшены внутренние пути обработки ошибок и поведение декодирования ответов для операций CouchDB.
	</li>

	<li>
		Упрощена многоуровневая структура помощников запросов и уменьшено дублирование кода обработки запросов/ответов.
	</li>

	<li>
		Улучшено поведение, связанное с вложениями, и соответствующие тесты.
	</li>

	<li>
		В манифест пакета добавлена поддержка <b>visionOS</b>.
	</li>
</ul>

<h2>Документация</h2>

<ul>
	<li>
		Исправлены и обновлены примеры в README для использования CRUD и запросов Mango.
	</li>

	<li>
		Обновлены целевые страницы DocC для лучшего отражения текущего API.
	</li>

	<li>
		Исправлены фрагменты кода в руководстве по продвинутым запросам Mango, чтобы они соответствовали текущему типизированному API запросов.
	</li>

	<li>
		Исправлены примеры в руководстве по Vapor.
	</li>

	<li>
		Исправлена настройка пакета и зависимостей в руководстве по Hummingbird.
	</li>

	<li>
		Обновлен <b>buildDocs.sh</b> для поддержки:

		<ul>
			<li>
				настраиваемого пути вывода и базового пути хостинга;
			</li>

			<li>
				встраивания контента для статического хостинга;
			</li>

			<li>
				экспериментального вывода в Markdown;
			</li>

			<li>
				генерации манифеста Markdown.
			</li>
		</ul>
	</li>

	<li>
		Добавлен этап постобработки в <b>buildDocs.sh</b>, который внедряет относительную ссылку на <b>Markdown</b> в сгенерированные HTML-страницы DocC.
	</li>
</ul>


<h2>Инструменты и зависимости</h2>

<ul>
	<li>
		Обновлены зависимости пакета в <b>Package.resolved</b>.
	</li>

	<li>
		Обновлена матрица версий Swift для процесса сборки под Ubuntu.
	</li>
</ul>

<p>
	<a href="https://github.com/makoni/couchdb-swift">CouchDB Client</a> на GitHub | <a href="https://spaceinbox.me/docs/couchdbclient/documentation/couchdbclient">Документация</a> с примерами и руководствами.
</p>

<p>
	<a class="github-button" href="https://github.com/makoni/couchdb-swift" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star makoni/couchdb-swift on GitHub">Star</a>

	<a class="github-button" href="https://github.com/makoni/couchdb-swift/fork" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-repo-forked" data-size="large" data-show-count="true" aria-label="Fork makoni/couchdb-swift on GitHub">Fork</a>
</p>

<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
]]></description>
					<pubDate>Sat, 28 Mar 2026 20:36:59 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/couchdb-client-for-swift-2-4-0</guid>
					<comments>https://arm1.ru/blog/couchdb-client-for-swift-2-4-0#comments</comments>
				</item>
            
                <item>
					<title>Actioneer для Linux 1.0.8</title>
					<link>https://arm1.ru/blog/actioneer-for-linux-1-0-8</link>
					<description><![CDATA[<p>
	<img alt="Actioneer для Linux 1.0.8" src="https://arm1.ru/img/uploaded/actioneer-for-linux-1-0-8.webp" style="width: 100%;">
</p>

<p>
	Новый релиз Actioneer 1.0.8 направлен на повышение надежности мониторинга GitHub Actions в реальном времени и более эффективное использование GitHub API.
</p>

<h2>Основные изменения</h2>

<ul>
	<li>
		Запускаемые процессы (workflow runs) теперь продолжают обновляться, пока они активны, благодаря чему расширенные данные о задачах и шагах остаются актуальными до завершения запуска.
	</li>

	<li>
		Расширенная информация о запусках стала более стабильной и читаемой: появились четкие значки, сохранение контекста задач и непрерывная нумерация шагов.
	</li>

	<li>
		Значки статуса workflow теперь переводятся более единообразно на все поддерживаемые в приложении языки.
	</li>

	<li>
		Фоновое обновление стало менее нагруженным для GitHub API, что уменьшает количество дублирующих запросов и помогает сохранить запас лимита запросов.
	</li>
</ul>

<h2>Технические улучшения</h2>

<ul>
	<li>
		Исправлено несколько проблем с жизненным циклом «живого» обновления в панели деталей: теперь переключение репозиториев или пересоздание строк больше не прерывает активный цикл обновления.
	</li>

	<li>
		Удалены дублирующие запросы начальных задач, вызванные состоянием гонки при повторном рендеринге только что развернутых запусков.
	</li>

	<li>
		Снижена нагрузка от ненужных запросов за счет оптимизации управления обновлением выбранного репозитория и повторного использования данных об обновлениях задач.
	</li>
</ul>

<p style="text-align: center;">
	<a href="https://snapcraft.io/actioneer"><img style="width: 182px;" alt="Скачать из Snap Store" src="https://snapcraft.io/en/dark/install.svg" /></a><br>
	<a href="https://flathub.org/en/apps/me.spaceinbox.actioneer"><img style="width: 182px;" alt="Скачать на Flathub" src="https://flathub.org/api/badge?locale=en"/></a>
</p>
]]></description>
					<pubDate>Thu, 12 Mar 2026 18:02:53 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/actioneer-for-linux-1-0-8</guid>
					<comments>https://arm1.ru/blog/actioneer-for-linux-1-0-8#comments</comments>
				</item>
            
                <item>
					<title>Actineer для Linux получил локализации</title>
					<link>https://arm1.ru/blog/actioneer-for-linux-got-translations</link>
					<description><![CDATA[<p>
	<img alt="Actioneer для Linux 1.0.7" src="https://arm1.ru/img/uploaded/actioneer-1-0-7.webp" style="width: 100%;">
</p>

<p>
	Actioneer для Linux доступен на множестве языков, включая русский, испанский, французский, португальский (Бразилия), хинди, упрощенный китайский, арабский, бенгальский, урду, немецкий и нидерландский.
</p>

<p>
	Приложение также включает встроенную систему отчетов о сбоях: вы можете скопировать отчет и вставить его куда угодно или просто создать issue на GitHub. Кроме того, были внесены некоторые внутренние исправления и улучшения.
</p>

<p style="text-align: center;">
	<a href="https://snapcraft.io/actioneer"><img style="width: 182px;" alt="Скачать из Snap Store" src="https://snapcraft.io/en/dark/install.svg" /></a><br>
	<a href="https://flathub.org/en/apps/me.spaceinbox.actioneer"><img style="width: 182px;" alt="Скачать на Flathub" src="https://flathub.org/api/badge?locale=en"/></a>
</p>
]]></description>
					<pubDate>Thu, 05 Mar 2026 20:39:52 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/actioneer-for-linux-got-translations</guid>
					<comments>https://arm1.ru/blog/actioneer-for-linux-got-translations#comments</comments>
				</item>
            
                <item>
					<title>Недавние обновления Actioneer для Linux</title>
					<link>https://arm1.ru/blog/actioneer-1-02-1-05</link>
					<description><![CDATA[<p>
	<img alt="Actioneer для Linux" src="https://arm1.ru/img/uploaded/actioneer-1-02-1-05.webp?1" style="width: 100%;">
</p>

<p>
	За последнее время вышло несколько обновлений Actioneer для Linux, о которых я забыл рассказать здесь. Вот что нового в этих версиях:
</p>


<h3>1.02</h3>

<ul>
	<li>
		Более быстрый и плавный интерфейс с обновленными списками репозиториев/workflow и улучшенным поведением прокрутки.
	</li>

	<li>
		Новые инструменты фильтрации запусков с улучшенным кэшированием: переключение фильтров происходит мгновенно и не требует перезагрузки данных.
	</li>

	<li>Улучшено автообновление workflow и статусов запусков, включая уменьшение количества дублирующих запросов.
	</li>

	<li>
		Уведомления стали надежнее в Snap/Flatpak благодаря улучшенной обработке иконок и наличию резервных вариантов.
	</li>

	<li>
		Улучшено хранение учетных данных в песочнице с использованием secret portal для Snap/Flatpak.
	</li>

	<li>
		Добавлена устойчивость к работе в офлайн-режиме: сохранение кэша для workflow, запусков и задач.
	</strong>

	<li>
		Обновления упаковки и CI для Snap, Flatpak и AppImage для лучшей совместимости.
	</li>

	<li>
		Обновление зависимостей и исправления стабильности.
	</li>
</ul>

<h3>1.03</h3>

<ul>
    <li>
        Логи задач теперь поддерживают ANSI-цвета, группировку разделов workflow и более четкое форматирование команд и вывода.
    </li>

    <li>
        Выравнивание временных меток и префиксов команд улучшило читаемость логов, а также было усилено выделение ошибок.
    </li>

    <li>
        Обновлен процесс сборки с поддержкой мультиархитектуры для AppImage/Snap/Flatpak.
    </li>

    <li>
        Обновление зависимостей и обновление демо-логов для повышения точности.
    </li>
</ul>

<h3>1.04</h3>

<ul>
    <li>
        Обработка истекших логов задач (HTTP 410): теперь вместо сломанного отображения выводится понятное сообщение.
    </li>

    <li>
        Удаление маркеров BOM в логах задач, чтобы временные метки на первой строке отображались корректно.
    </li>
</ul>

<h3>1.05</h3>

<ul>
    <li>
        Ручной запуск workflow теперь поддерживает входные данные workflow_dispatch с динамическими полями параметров.
    </li>

    <li>
        Обновление зависимостей для ryu, unicode-ident и zmij.
    </li>
</ul>

<p style="text-align: center;">
	<a href="https://snapcraft.io/actioneer"><img style="width: 182px;" alt="Скачать из Snap Store" src="https://snapcraft.io/en/dark/install.svg" /></a><br>
	<a href="https://flathub.org/en/apps/me.spaceinbox.actioneer"><img style="width: 182px;" alt="Скачать на Flathub" src="https://flathub.org/api/badge?locale=en"/></a>
</p>
]]></description>
					<pubDate>Fri, 13 Feb 2026 18:16:01 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/actioneer-1-02-1-05</guid>
					<comments>https://arm1.ru/blog/actioneer-1-02-1-05#comments</comments>
				</item>
            
                <item>
					<title>Claw Screenshot - консольная утилита для создания скриншотов в Linux</title>
					<link>https://arm1.ru/blog/claw-screenshot-0-1-0</link>
					<description><![CDATA[<p>
	<img alt="Claw Screenshot - консольная утилита для создания скриншотов в Linux" src="https://arm1.ru/img/uploaded/claw-screenshot-0.1.0.webp" style="width: 100%;">
</p>

<p>
	В последнее время я экспериментировал с <s>Clawd</s> / <s>Moltbot</s> / Openclaw ботом. Конечно, всё закончилось тем, что я попросил его написать какой-то код. Поскольку я запускаю его в виртуальной машине с Ubuntu Linux, я пробовал разрабатывать для него некоторые приложения. И в какой-то момент я осознал, что отправляю скриншоты приложения, но каждый раз мне приходится делать это вручную.
</p>

<p>
	Поэтому я решил автоматизировать эту часть. Я пробовал некоторые консольные приложения для Linux, которые обещали, что умеют делать скриншоты, но по какой-то причине ни одно из них у меня не заработало.
</p>

<p>
	В итоге я решил написать своё. Я выбрал Rust, а Openclaw провел для меня небольшое исследование того, как это должно быть реализовано. Результатом стало консольное приложение, использующее FreeDesktop Screenshot portal. Понадобилось создать .desktop файл, чтобы я мог увидеть запрос разрешений от Gnome и нажать «Разрешить». Это требуется всего один раз, так что теперь я всё автоматизировал. 
</p>

<p>
	Честно говоря, это довольно крутая штука, которую я уже пробовал с iOS-приложением, используя UI-тесты: ИИ-агент просто запускает UI-тесты, берет скриншоты из отчета, анализирует их и понимает, что не так с интерфейсом приложения.
</p> 

<p>
	Я выложил приложение на GitHub и опубликовал релиз с бинарными файлами, а также пакетами .deb и .rpm для архитектур arm64 и amd64. К нему прилагается отличный скрипт для автоматической установки. Поскольку я создал его с помощью Openclaw, я назвал его Claw Screenshot.
</p>

<p>
	Попробуйте сами: <a href="https://github.com/makoni/claw-screenshot">https://github.com/makint/claw-screenshot</a>
</p>
]]></description>
					<pubDate>Tue, 03 Feb 2026 17:38:53 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/claw-screenshot-0-1-0</guid>
					<comments>https://arm1.ru/blog/claw-screenshot-0-1-0#comments</comments>
				</item>
            
                <item>
					<title>AppMetric 1.14.0</title>
					<link>https://arm1.ru/blog/appmetric-1-14-0</link>
					<description><![CDATA[<p style="text-align: center;">
  <picture>
    <!-- Dark-mode image -->
    <source srcset="/img/uploaded/appmetric-1.14.0-dark.webp" media="(prefers-color-scheme: dark)">

    <!-- Light-mode image (used as fallback if prefers-color-scheme is light or not supported) -->
    <img
      src="https://arm1.ru/img/uploaded/appmetric-1.14.0-light.webp"
      alt="AppMetric screenshot"
      style="width: 100%; max-width: 960px;"
      loading="lazy"
    >
  </picture>
</p>

<p>
	Вышло обновление AppMetric версии 1.14.0. 
</p>

<h3>Новое</h3>

<ul>
	<li>Окно настроек с переключателем «Запускать при входе».</li>
	<li>Обновлённые иконки приложения для Liquid Glass.</li>
</ul>


<h3>Улучшения</h3>

<ul>
	<li>Более быстрые и стабильные обновления: параллельные запросы с backoff при лимитах и учётом дневной квоты.</li>
	<li>Поповер подстраивается под контент.</li>
	<li>Улучшено форматирование дат в графиках.</li>
</ul>

<p style="text-align: center;">
    <a href="https://apps.apple.com/ru/app/appmetric/id1147094095?mt=12" target="_blank"><img alt="Загрузить" src="https://arm1.ru/img/mac_app_store_badge.svg" style="width: 165px;"></a>
</p>]]></description>
					<pubDate>Wed, 21 Jan 2026 11:49:42 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/appmetric-1-14-0</guid>
					<comments>https://arm1.ru/blog/appmetric-1-14-0#comments</comments>
				</item>
            
                <item>
					<title>Actioneer 1.01</title>
					<link>https://arm1.ru/blog/actioneer-1-01</link>
					<description><![CDATA[<p style="text-align: center;">
  <picture>
    <!-- Dark-mode image -->
    <source srcset="/img/uploaded/actioneer-dark.webp" media="(prefers-color-scheme: dark)">

    <!-- Light-mode image (used as fallback if prefers-color-scheme is light or not supported) -->
    <img
      src="https://arm1.ru/img/uploaded/actioneer-light.webp"
      alt="Скриншот Actioneer"
      style="width: 100%; max-width: 960px;"
      loading="lazy"
    >
  </picture>
</p>

<p>
	Вышло первое обновление Actioneer. Вот что нового:
</p>

<ul>
	<li>Обновление workflow происходит в фоновом режиме, поэтому новые запуски, запущенные вручную, появляются автоматически.</li>

	<li>Снижено использование API и количество превышений лимита запросов благодаря кэшированию на основе ETag — списки загружаются быстрее, а ваша кэш-квота расходуется медленнее.</li>
	
	<li>Приложение запоминает репозиторий, который вы просматривали, между запусками.</li>

	<li>Улучшенная диагностика и надежность для более комфортной повседневной работы.</li>
</ul>

<p style="text-align: center;">
	<a href="https://apps.apple.com/us/app/actioneer-command-your-ci/id6753989681" target="_blank"><img src="https://arm1.ru/img/mac_appstore_badge_en.svg" alt="Загрузить" style="width: 165px;"></a>
</p>

<p>
	Следите за обновлениями в X: <a href="https://x.com/ActioneerCI">https://x.com/ActioneerCI</a>
</p>
]]></description>
					<pubDate>Tue, 20 Jan 2026 15:07:52 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/actioneer-1-01</guid>
					<comments>https://arm1.ru/blog/actioneer-1-01#comments</comments>
				</item>
            
                <item>
					<title>CompareShots 1.7</title>
					<link>https://arm1.ru/blog/compareshots-1-7</link>
					<description><![CDATA[<p>
	<img alt="CompareShots 1.7" src="https://arm1.ru/img/uploaded/compareshots-1.7.webp" style="width: 100%;">
</p>

<p>
	На этой неделе я выпустил новую версию CompareShots. Ничего особенного, просто обновил пользовательский интерфейс для поддержки Liquid Glass. Также при сохранении итогового изображения элементы интерфейса больше не будут захватываться.
</p>

<p>
	Трудно поверить, но в этом году CompareShots исполняется 10 лет. Время летит быстро.
</p>

<p style="text-align: center;">
	<a href="https://apps.apple.com/ru/app/compareshots/id987237199"><img alt="Загрузить" src="https://arm1.ru/img/mac_appstore_badge_en.svg"></a>
</p>
]]></description>
					<pubDate>Tue, 25 Nov 2025 18:50:27 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/compareshots-1-7</guid>
					<comments>https://arm1.ru/blog/compareshots-1-7#comments</comments>
				</item>
            
                <item>
					<title>Actioneer для Linux</title>
					<link>https://arm1.ru/blog/actioneer-for-linux</link>
					<description><![CDATA[<p style="text-align: center;">
  <picture>
    <!-- Dark-mode image -->
    <source srcset="/img/portfolio/actioneer-linux-dark.webp" media="(prefers-color-scheme: dark)">

    <!-- Light-mode image (used as fallback if prefers-color-scheme is light or not supported) -->
    <img
      src="https://arm1.ru/img/portfolio/actioneer-linux-light.webp"
      alt="Скриншот Actioneer"
      style="width: 100%; max-width: 960px;"
      loading="lazy"
    >
  </picture>
</p>

<p>
	Actioneer — это нативный десктопный клиент для GitHub Actions под GNOME. Он сочетает в себе интерфейс GTK4/libadwaita с API-клиентом на базе Tokio, что позволяет просматривать репозитории, изучать запуски рабочих процессов (workflows), следить за логами задач и получать уведомления, не покидая рабочий стол.
</p>

<h2>Основные возможности</h2>
<ul>
	<li>
		Быстрый просмотр ваших репозиториев GitHub, рабочих процессов и последних запусков.
	</li>

	<li>
		Проверка статуса запуска (успех, ошибка, в очереди, в процессе) с помощью четких значков и счетчиков.
	</li>

	<li>
		Просмотр логов задач: загрузка и предпросмотр логов для быстрого поиска неисправностей.
	</li>

	<li>
		Запуск рабочих процессов, отмена текущих и перезапуск неудачных прямо из приложения.
	</li>

	<li>
		Избранное и быстрый поиск позволяют сосредоточиться на наиболее важных репозиториях и рабочих процессах.
	</li>

	<li>
		Десктопные уведомления о завершении или сбое запусков, чтобы вы не пропустили важные результаты.
	</li>

	<li>
		Кэширование в оперативной памяти и эффективное обновление обеспечивают отзывчивость приложения при соблюдении лимитов GitHub API.
	</li>

	<li>
		Безопасная аутентификация через OAuth; токены надежно хранятся в системной связке ключей (keyring).
	</li>
</ul>

<p>
	<video style="width: 100%;" height="auto" controls preload="auto" poster="/img/portfolio/actioneer-linux-dark.webp">
		<source src="/videos/actioneer-linux.webm">
	</video>
</p>


<p style="text-align: center;">
	<a href="https://snapcraft.io/actioneer"><img alt="Скачать из Snap Store" src="https://snapcraft.io/en/dark/install.svg" /></a> <a href="https://flathub.org/en/apps/me.spaceinbox.actioneer"><img height="56" alt="Скачать на Flathub" src="https://flathub.org/api/badge?locale=en"/></a>
</p>

<p>
	Actioneer для Linux — это проект с открытым исходным кодом, исходный код доступен на <a href="https://github.com/makoni/actioneer-gtk" target="_blank">GitHub</a>.
</p>

<p>
	<a class="github-button" href="https://github.com/makoni/actioneer-gtk" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star makoni/actioneer-gtk on GitHub">Star</a>

	<a class="github-button" href="https://github.com/makoni/actioneer-gtk/fork" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-repo-forked" data-size="large" data-show-count="true" aria-label="Fork makoni/actioneer-gtk on GitHub">Fork</a>
</p>

<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
]]></description>
					<pubDate>Sat, 08 Nov 2025 08:03:23 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/actioneer-for-linux</guid>
					<comments>https://arm1.ru/blog/actioneer-for-linux#comments</comments>
				</item>
            
                <item>
					<title>Actioneer - командуй своим CI</title>
					<link>https://arm1.ru/blog/actioneer-command-your-ci</link>
					<description><![CDATA[<p style="text-align: center;">
  <picture>
    <!-- Dark-mode image -->
    <source srcset="/img/uploaded/actioneer-dark.webp" media="(prefers-color-scheme: dark)">

    <!-- Light-mode image (used as fallback if prefers-color-scheme is light or not supported) -->
    <img
      src="https://arm1.ru/img/uploaded/actioneer-light.webp"
      alt="Скриншот Actioneer"
      style="width: 100%; max-width: 960px;"
      loading="lazy"
    >
  </picture>
</p>

<p>
	Actioneer — это легкое приложение для macOS, созданное для разработчиков и DevOps-инженеров, которым нужен быстрый и надежный доступ к GitHub Actions прямо с рабочего стола.
</p>

<h2>Основные возможности</h2>
<ul>
	<li>
		Просматривайте свои репозитории GitHub, быстро изучая рабочие процессы (workflows) Actions и недавние запуски.
	</li>

	<li>
		Отслеживайте статус запусков (успех, ошибка, в очереди, в процессе) с помощью понятных бейджей и счетчиков.
	</li>

	<li>
		Просматривайте логи заданий: скачивайте и просматривайте логи запусков для быстрого поиска неисправностей.
	</li>

	<li>
		Запускайте рабочие процессы, отменяйте текущие и перезапускайте упавшие задачи прямо в приложении.
	</li>

	<li>
		Функции «Избранное» и быстрый поиск позволяют сосредоточиться на наиболее важных репозиториях и рабочих процессах.
	</li>

	<li>
		Уведомления на рабочем столе о завершении или сбоях запусков, чтобы вы никогда не пропускали важные результаты.
	</li>

	<li>
		Кэширование в памяти и эффективное обновление делают приложение отзывчивым, соблюдая при этом лимиты запросов GitHub.
	</li>

	<li>
		Безопасная аутентификация с использованием OAuth (PKCE); токены надежно хранятся в связке ключей macOS (macOS Keychain).
	</li>
</ul>

<h2>Конфиденциальность и безопасность</h2>

<p>
	Мы запрашиваем только минимально необходимые области доступа GitHub, требуемые для использования функций. Аутентификация использует OAuth PKCE, а токены хранятся в связке ключей macOS. Мы не передаем ваши логи или токены сторонним серверам без вашего явного согласия. Подробности см. в Политике конфиденциальности приложения.
</p>

<h2>С чего начать</h2>

<p>
	Войдите под своей учетной записью GitHub (OAuth), предоставьте запрашиваемые разрешения, и приложение отобразит ваши репозитории и рабочие процессы. Как для администраторов CI/CD, так и для индивидуальных разработчиков, Actioneer делает мониторинг и простое управление GitHub Actions быстрым и удобным.
</p>

<p style="text-align: center;">
	<a href="https://apps.apple.com/us/app/actioneer-command-your-ci/id6753989681" target="_blank"><img src="https://arm1.ru/img/mac_appstore_badge_en.svg" alt="Скачать" style="width: 165px;"></a>
</p>

<p>
	Следите за обновлениями в X: <a href="https://x.com/ActioneerCI">https://x.com/ActioneerCI</a>
</p>
]]></description>
					<pubDate>Thu, 16 Oct 2025 11:37:18 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/actioneer-command-your-ci</guid>
					<comments>https://arm1.ru/blog/actioneer-command-your-ci#comments</comments>
				</item>
            
                <item>
					<title>CompareShots 1.6</title>
					<link>https://arm1.ru/blog/compareshots-1-6</link>
					<description><![CDATA[<p>
	<img alt="CompareShots 1.6" src="https://arm1.ru/img/uploaded/compareshots-1.6.webp" style="width: 100%;">
</p>

<p>
	Вышла новая версия CompareShots. Это простое приложение, которое я написал несколько лет назад для сравнения двух изображений.
</p>

<p>
	Новая версия 1.6 была переписана на SwiftUI. Также я реализовал несколько идей из отзывов, которые предложили пользователи.
</p>

<p>
	Что нового:
</p>

<ul>
	<li>
		Выбор режима отображения: легко переключайтесь между режимами aspect fill и aspect fit с помощью новой кнопки.
	</li>

	<li>
		Перемещение изображений: в режиме aspect fill используйте два пальца, чтобы изменить положение изображений для идеального сравнения.
	</li>

	<li>
		Более быстрая настройка: выбирайте до двух изображений одновременно для сравнения бок о бок.
	</li>

	<li>
		Расширенная языковая поддержка и улучшенная доступность.
	</li>

	<li>
		Различные исправления ошибок и оптимизация производительности для более быстрого и надежного приложения.
	</li>

	<li>
		Различные исправления ошибок и улучшения производительности.
	</li>
</ul>

<p style="text-align: center;">
	<a href="https://apps.apple.com/ru/app/compareshots/id987237199"><img alt="Скачать" src="https://arm1.ru/img/mac_appstore_badge_en.svg"></a>
</p>
]]></description>
					<pubDate>Wed, 13 Aug 2025 18:56:13 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/compareshots-1-6</guid>
					<comments>https://arm1.ru/blog/compareshots-1-6#comments</comments>
				</item>
            
                <item>
					<title>HTMLEditor для SwiftUI 1.0.3</title>
					<link>https://arm1.ru/blog/htmleditor-for-swiftui-1-0-3</link>
					<description><![CDATA[<p>
	<img alt="Текстовый редатор SwiftUI для macOS с подсветкой синтаксиса HTML" src="https://arm1.ru/img/uploaded/swiftui-text-editor-for-macos-with-html-syntax-highlighting.webp" style="width: 100%;">
</p>

<p>
	Потратил еще немного времени на HTMLEditor для SwiftUI. В новой версии 1.0.3 внесены значительные улучшения производительности (спасибо Claude Code).
</p>

<p>
	Попробуйте его на GitHub: <a href="https://github.com/makoni/HTMLEditor-SwiftUI">https://github.com/makoni/HTMLEditor-SwiftUI</a>
</p>
]]></description>
					<pubDate>Mon, 11 Aug 2025 20:50:18 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/htmleditor-for-swiftui-1-0-3</guid>
					<comments>https://arm1.ru/blog/htmleditor-for-swiftui-1-0-3#comments</comments>
				</item>
            
                <item>
					<title>Swift клиент для CouchDB 2.3.0</title>
					<link>https://arm1.ru/blog/couchdb-client-for-swift-2-3-0</link>
					<description><![CDATA[<p>
	<img alt="Клиент CouchDB для Swift 2.3.0" src="https://arm1.ru/img/uploaded/couchdb-client-for-swift-2-3-0.webp" style="width: 100%;">
</p>

<p>
	Недавно я реализовал функцию, которую давно хотел добавить в CouchDB Swift client. Это поддержка Mango Queries. Наконец-то всё готово в версии <b>2.3.0</b>. Кажется, это последняя крупная функция.
</p>

<p>
	Список изменений:
</p>

<ul>
	<li>
		Представлен надежный и типобезопасный MangoQuery API для построения сложных селекторов, проекций, сортировки и пагинации в CouchDB.
	</li>
	
	<li>
		Добавлена поддержка указания индексов через useIndex в запросах для оптимизации производительности.
	</li>
	
	<li>
		Добавлена полноценная поддержка загрузки, скачивания и удаления вложений документов (файлов/изображений).
	</li>
	
	<li>
		Комплексный набор тестов для Attachments API обеспечивает надежность операций с файлами.
	</li>
	
	<li>
		Добавлены модели и API для создания, перечисления и управления индексами Mango (MangoIndex, IndexDefinition).
	</li>
	
	<li>
		В документацию теперь включены обучающие примеры и фрагменты кода для создания индексов.
	</li>
	
	<li>
		Добавлена поддержка эндпоинта CouchDB Mango <b>_explain</b> через MangoExplainResponse, чтобы можно было проверить, как выполняются запросы и какие индексы используются.
	</li>
</ul>

<p>
	<a href="https://github.com/makoni/couchdb-swift">CouchDB Client</a> на GitHub | <a href="https://spaceinbox.me/docs/couchdbclient/documentation/couchdbclient">Документация</a> с примерами и руководствами.
</p>

<p>
	<a class="github-button" href="https://github.com/makoni/couchdb-swift" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Поставить звезду (Star) makoni/couchdb-swift на GitHub">Star</a>

	<a class="github-button" href="https://github.com/makoni/couchdb-swift/fork" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-repo-forked" data-size="large" data-show-count="true" aria-label="Сделать форк (Fork) makoni/couchdb-swift на GitHub">Fork</a>
</p>

<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
]]></description>
					<pubDate>Fri, 01 Aug 2025 19:25:49 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/couchdb-client-for-swift-2-3-0</guid>
					<comments>https://arm1.ru/blog/couchdb-client-for-swift-2-3-0#comments</comments>
				</item>
            
                <item>
					<title>История одного бага в Leaf</title>
					<link>https://arm1.ru/blog/a-story-of-one-bug-in-leaf</link>
					<description><![CDATA[<p>
	<img alt="История одного бага в Leaf" src="https://arm1.ru/img/uploaded/a-story-of-one-bug-in-leaf.webp" style="width: 100%;">
</p>

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

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

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

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

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

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

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

<p>
	Мораль: вносите вклад в Open Source проекты, которыми вы пользуетесь.
</p>
]]></description>
					<pubDate>Thu, 31 Jul 2025 22:18:04 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/a-story-of-one-bug-in-leaf</guid>
					<comments>https://arm1.ru/blog/a-story-of-one-bug-in-leaf#comments</comments>
				</item>
            
                <item>
					<title>Swift package для проверки орфографии с использованием Яндекс Спеллер</title>
					<link>https://arm1.ru/blog/a-swift-package-for-spell-checking-using-yandex-speller</link>
					<description><![CDATA[<p style="text-align: center;">
	<img alt="Swift-пакет для проверки орфографии с использованием Yandex.Speller" src="https://arm1.ru/img/uploaded/a-swift-package-for-spell-checking-using-yandex-speller.webp?1" style="width: 100%; max-width: 800px;">
</p>

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

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

<p>
	<a href="https://github.com/makoni/YaSpellChecker">https://github.com/makoni/YaSpellChecker</a>
</p>
]]></description>
					<pubDate>Thu, 10 Jul 2025 14:05:58 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/a-swift-package-for-spell-checking-using-yandex-speller</guid>
					<comments>https://arm1.ru/blog/a-swift-package-for-spell-checking-using-yandex-speller#comments</comments>
				</item>
            
                <item>
					<title>HTML редактор на SwiftUI для macOS с подсветкой HTML синтаксиса</title>
					<link>https://arm1.ru/blog/swiftui-text-editor-for-macos-with-html-syntax-highlighting</link>
					<description><![CDATA[<p>
	<img alt="Текстовый редактор SwiftUI для macOS с подсветкой синтаксиса HTML" src="https://arm1.ru/img/uploaded/swiftui-text-editor-for-macos-with-html-syntax-highlighting.webp" style="width: 100%;">
</p>

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

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

<p>
	Проект на GitHub: <a href="https://github.com/makoni/HTMLEditor-SwiftUI">https://github.com/makoni/HTMLEditor-SwiftUI</a>
</p>
]]></description>
					<pubDate>Wed, 09 Jul 2025 23:01:48 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/swiftui-text-editor-for-macos-with-html-syntax-highlighting</guid>
					<comments>https://arm1.ru/blog/swiftui-text-editor-for-macos-with-html-syntax-highlighting#comments</comments>
				</item>
            
                <item>
					<title>Недавние обновления моих проектов</title>
					<link>https://arm1.ru/blog/recent-updates-of-my-projects-july-2025</link>
					<description><![CDATA[<p>
	В последнее время я много экспериментирую с AI-агентами, и это серьёзно вдохновило меня обновить мои проекты. Работа с реальными задачами делает процесс гораздо интереснее. 
</p>

<p style="text-align: center;">
	<img alt="" src="https://arm1.ru/img/uploaded/recent-updates-of-my-projects-july-2025-1.webp" style="width: 100%;">
</p>

<h2>Swift клиент для CouchDB</h2>

<p>
	Вышло 2 новых релиза библиотеки <a href="https://github.com/makoni/couchdb-swift">couchdb-swift</a>. Copilot любезно добавил в библиотеку больше юнит-тестов для покрытия различных сценариев использования. В основном они завершались ошибками. Мне всё ещё пришлось многое дорабатывать вручную, но это подкинуло мне пару идей. Поэтому в этих двух последних релизах я добавил более детальную обработку ошибок. Также он нашел и исправил несколько мелких багов, проверил мой PR и предложил некоторые улучшения. Он еще далеко не идеален, но всё равно впечатляет.
</p> 

<p style="text-align: center;">
	<img alt="" src="https://arm1.ru/img/uploaded/recent-updates-of-my-projects-july-2025-2.webp" style="width: 100%;">
</p>

<h2>Бот Release Informer для Telegram</h2>

<p>
	В какой-то момент я обнаружил, что Copilot Agent стал доступен для моей учетной записи, и теперь я могу просто создать issue на GitHub, назначить его на агента и посмотреть, что он сделает. Я начал с запроса обновить README для <a href="https://github.com/makoni/ReleaseInformerBot">Release Informer Bot</a>, добавив подробности о том, как он работает и как его настроить. 
</p>

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

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

<p>
	Трудно сказать, сколько времени мне сэкономил Copilot. Но определенно много. Включая мой любимый автоматический перевод строк. Надеюсь, это вдохновит меня выпускать еще больше обновлений. 
</p>
]]></description>
					<pubDate>Tue, 08 Jul 2025 19:57:59 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/recent-updates-of-my-projects-july-2025</guid>
					<comments>https://arm1.ru/blog/recent-updates-of-my-projects-july-2025#comments</comments>
				</item>
            
                <item>
					<title>AppMetric 1.13.0</title>
					<link>https://arm1.ru/blog/appmetric-1-13-0</link>
					<description><![CDATA[<p>
	<img alt="AppMetric 1.13.0" src="https://arm1.ru/img/uploaded/appmetric-1.13.0.webp" style="width: 100%;">
</p>

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

<p style="text-align: center;">
    <a href="https://apps.apple.com/ru/app/appmetric/id1147094095?mt=12" target="_blank"><img alt="Загрузить" src="https://arm1.ru/img/mac_app_store_badge.svg" style="width: 165px;"></a>
</p>]]></description>
					<pubDate>Mon, 19 May 2025 08:00:34 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/appmetric-1-13-0</guid>
					<comments>https://arm1.ru/blog/appmetric-1-13-0#comments</comments>
				</item>
            
                <item>
					<title>Swift клиент для CouchDB версия 2</title>
					<link>https://arm1.ru/blog/couchdb-client-for-swift-version-2</link>
					<description><![CDATA[<p>
	<img alt="Клиент CouchDB для Swift, версия 2" src="https://arm1.ru/img/uploaded/swift-couchdb-client-2-0-0.webp" style="width: 100%;">
</p>

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

<ul>
	<li>
		Обновлена минимально необходимая версия Swift до <b>6.0</b>.
	</li>

	<li>
		Внедрена поддержка <b>Swift Concurrency</b>. <b>CouchDBClient</b> был обновлен и теперь является <b>actor</b>.
	</li>

	<li>
		Библиотека была переименована из couchdb-vapor в <b>couchdb-swift</b>, чтобы лучше отражать её назначение как универсального клиента CouchDB для Swift, а не только для использования с Vapor.
	</li>

	<li>
		Внесены изменения в инициализатор. Вместо передачи множества параметров теперь используется структура <b>Config</b>.
	</li>

	<li>
		Теперь вы можете передать собственный экземпляр <b>HTTPClient</b> для использования в клиенте.
	</li>

	<li>
		Добавлены переводы сообщений об ошибках.
	</li>

	<li>
		Представлен специальный туториал по интеграции CouchDBClient с серверным фреймворком <b>Hummingbird</b>.
	</li>

	<li>
		Добавлен метод <b>shutdown()</b> для корректного освобождения ресурсов, связанных с HTTPClient.
	</li>
</ul>

<p>
	<a href="https://github.com/makoni/couchdb-swift">CouchDB Client</a> на GitHub | <a href="https://spaceinbox.me/docs/couchdbclient/documentation/couchdbclient">Документация</a> с примерами и руководствами.
</p>

<p>
	<a class="github-button" href="https://github.com/makoni/couchdb-swift" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Поставить звезду (Star) makoni/couchdb-swift на GitHub">Star</a>

	<a class="github-button" href="https://github.com/makoni/couchdb-swift/fork" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-repo-forked" data-size="large" data-show-count="true" aria-label="Сделать форк (Fork) makoni/couchdb-swift на GitHub">Fork</a>
</p>

<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
]]></description>
					<pubDate>Wed, 16 Apr 2025 09:48:58 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/couchdb-client-for-swift-version-2</guid>
					<comments>https://arm1.ru/blog/couchdb-client-for-swift-version-2#comments</comments>
				</item>
            
                <item>
					<title>Добавление локализации приложению или библиотеке с помощью ИИ</title>
					<link>https://arm1.ru/blog/adding-translations-to-an-app-or-a-package-with-ai-help</link>
					<description><![CDATA[<p>
	<img alt="Переведенный String Catalog" src="https://arm1.ru/img/uploaded/adding-translations-to-an-app-or-a-package-with-ai-help-1.webp" style="width: 100%;">
</p>

<p>
	В <a href="https://arm1.ru/blog/localizing-a-swift-package-with-a-string-catalog">предыдущей статье</a> я рассказал, как добавить Strings Catalog в Swift-пакет для поддержки локализации. Теперь мы попробуем перевести его на большее количество языков.
</p>]]></description>
					<pubDate>Tue, 14 Jan 2025 10:44:53 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/adding-translations-to-an-app-or-a-package-with-ai-help</guid>
					<comments>https://arm1.ru/blog/adding-translations-to-an-app-or-a-package-with-ai-help#comments</comments>
				</item>
            
                <item>
					<title>Локализация Swift Package с помощью String Catalog</title>
					<link>https://arm1.ru/blog/localizing-a-swift-package-with-a-string-catalog</link>
					<description><![CDATA[<p>
	<img alt="" src="https://arm1.ru/img/uploaded/localizing-a-swift-package-with-a-string-catalog-2.webp" style="width: 100%;">
</p>

<p>
	Недавно я работал над Swift-пакетом, в котором были строки, требующие локализации. Документация Apple по этой теме кажется немного устаревшей. В ней всё еще предлагается использовать специальные директории для каждого языка для локализации ресурсов и строк.
</p>

<p>
	Но на WWDC 2023 Apple представила String Catalogs. Это гораздо удобнее — просто JSON-файл, который Xcode может заполнить всеми строками, которые нужно локализовать. Большинство примеров, которые можно найти, относятся к приложениям, а не к пакетам. Поэтому я потратил некоторое время на то, чтобы разобраться, как использовать String Catalogs в Swift-пакете.
</p>]]></description>
					<pubDate>Tue, 14 Jan 2025 09:13:59 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/localizing-a-swift-package-with-a-string-catalog</guid>
					<comments>https://arm1.ru/blog/localizing-a-swift-package-with-a-string-catalog#comments</comments>
				</item>
            
                <item>
					<title>Забавный момент в macOS Sequoia с функцией iPhone Mirroring</title>
					<link>https://arm1.ru/blog/funny-thing-in-macos-sequoia-with-iphone-mirroring</link>
					<description><![CDATA[<p>
	Одной из новых функций macOS Sequoia является iPhone Mirroring. Вы можете подключиться к своему iPhone, видеть его экран и управлять им.
</p>

<p>
	На моем Mac приложения хранятся в двух папках: одна находится в пользовательской папке <b>~/Applications</b>, вторая — в системной папке приложений <b>/Applications</b>.
</p>

<p>
	Однажды я создал фильтр поиска в Finder и сохранил его, чтобы все доступные приложения были в одном месте, а также добавил его в боковую панель в раздел «Избранное».
</p>

<p>
	<img alt="Поиск в Finder" src="https://arm1.ru/img/uploaded/funny-thing-in-macos-sequoia-with-iphone-mirroring-1.webp" style="width: 100%;">
</p>

<p>
	 Но мне также нравится иметь ярлык в Dock. Поэтому я добавил сетку и туда. Все работало так, как я ожидал, пока я не обновился до macOS Sequoia и однажды не попробовал приложение iPhone Mirroring. Теперь в этой сетке отображаются некоторые приложения и с моего iPhone тоже:
</p>

<p>
	<img alt="Apps list" src="https://arm1.ru/img/uploaded/funny-thing-in-macos-sequoia-with-iphone-mirroring-2.webp" style="width: 100%;">
</p>

<p>
	Интересно то, что приложения с моего iPhone отображаются только в ярлыке-сетке в Dock, но не в поиске Finder.
</p>

<p>
	И вот здесь начинается самое смешное — вот это появится, если попытаеться запустить приложение с iPhone:
</p>

<p style="text-align: center;">
	<img alt="macOS error" src="https://arm1.ru/img/uploaded/funny-thing-in-macos-sequoia-with-iphone-mirroring-3.webp" style="width: 100%; max-width: 372px;">
</p>

<p>
	macOS 18.0 или новее? Серьезно? Интересно, не является ли это какой-то функцией, запланированной для будущего обновления macOS. Посмотрим :)
</p>
]]></description>
					<pubDate>Fri, 20 Sep 2024 15:51:40 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/funny-thing-in-macos-sequoia-with-iphone-mirroring</guid>
					<comments>https://arm1.ru/blog/funny-thing-in-macos-sequoia-with-iphone-mirroring#comments</comments>
				</item>
            
                <item>
					<title>AppMetric 1.12.0</title>
					<link>https://arm1.ru/blog/appmetric-1-12-0</link>
					<description><![CDATA[<p>
	<img alt="AppMetric 1.12.0" src="https://arm1.ru/img/uploaded/appmetric-1.12.0.webp" style="width: 100%;">
</p>

<p>
	Вышло обновление для AppMetric, версия 1.12.0. Допиливал его в свободное время. Из нового в последних версиях:
</p>

<ul>
	<li>Ревьюверам Apple почему-то не нравится теперь OAuth-авторизация через Safari, пришлось переделать через встроенное окно с WKWebView. Надеюсь, в следующем SwiftUI наконец-то появится свой WebView, и больше не придется использовать обертку.</li>
	<li>Добавил кнопку для быстрого перехода на статистику приложения на сайте Appmetrica.</li>
	<li>Добавил просмотр статистики в виде графиков - как каждого показателя, так и всех показателей вместе. Всего спустя 7 лет после того, как один из пользователей попросил добавить графики :)</li>
	<li>Добавил перевод интерфейса на несколько языков. Благо, с помощью ИИ это сделать теперь <a href="https://arm1.ru/blog/revamping-documentation-with-ai">совсем просто</a>.
</ul>

<p style="text-align: center;">
    <a href="https://apps.apple.com/ru/app/appmetric/id1147094095?mt=12" target="_blank"><img alt="Загрузить" src="https://arm1.ru/img/mac_app_store_badge.svg" style="width: 165px;"></a>
</p>
]]></description>
					<pubDate>Mon, 27 May 2024 23:06:24 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/appmetric-1-12-0</guid>
					<comments>https://arm1.ru/blog/appmetric-1-12-0#comments</comments>
				</item>
            
                <item>
					<title>Обновление документации с помощью ИИ</title>
					<link>https://arm1.ru/blog/revamping-documentation-with-ai</link>
					<description><![CDATA[<p>
	<img alt="Обновление документации с помощью ИИ" src="https://arm1.ru/img/uploaded/revamping-documentation-with-ai-1.webp" style="width: 100%;">
</p>

<p>
	Недавно я занимался обновлением документации для библиотеки <a href="https://github.com/makoni/couchdb-swift">CouchdbClient</a>. Помучившись с некоторыми фразами, я решил попробовать использовать ИИ, чтобы он сделал это за меня. У Microsoft есть <b>Copilot</b> как часть поиска Bing в браузере <b>Edge</b>.
</p>
]]></description>
					<pubDate>Fri, 24 May 2024 17:18:07 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/revamping-documentation-with-ai</guid>
					<comments>https://arm1.ru/blog/revamping-documentation-with-ai#comments</comments>
				</item>
            
                <item>
					<title>AppMetric 1.9</title>
					<link>https://arm1.ru/blog/appmetric-1-9</link>
					<description><![CDATA[<p>
	<img alt="AppMetric 1.9" src="https://arm1.ru/img/uploaded/appmetric-1.8.webp" style="width: 100%;">
</p>

<p>
	Обновил AppMetric для macOS - клиент для сервиса AppMetrica от Яндекса. 
</p>

<ul>
	<li>Исправлена ошибка, когда при выборе сегодняшней даты она не обновлялась при смене дня.</li>
	<li>Добавлено форматирование цифр показателей (в зависимости от языка и региона в системе).</li>
	<li>Небольшие исправления.</li>
</ul>

<p style="text-align: center;">
	<a href="https://apps.apple.com/ru/app/appmetric/id1147094095?mt=12" target="_blank"><img alt="Загрузить" src="https://arm1.ru/img/mac_app_store_badge.svg" style="width: 165px;"></a>
</p>]]></description>
					<pubDate>Tue, 23 Apr 2024 13:41:39 +0300</pubDate>
					<guid isPermaLink="true">https://arm1.ru/blog/appmetric-1-9</guid>
					<comments>https://arm1.ru/blog/appmetric-1-9#comments</comments>
				</item>
            
	</channel>
</rss>
