Рубрика «swift» - 2

Дисклеймер

Статья рассчитана на iOS‑разработчиков, которые уже знакомы с базовой настройкой пуш‑уведомлений и хотят разобраться с Notification Service Extension и Notification Content Extension. Здесь не рассматривается подключение пушей с нуля — основной фокус сделан на работе расширений, структуре payload, категориях уведомлений, кастомном UI и типичных проблемах при настройке. Все примеры приведены на отдельном демо‑проекте и основаны на публичной документации и открытых источниках. Цель статьи — собрать в одном месте детали, на которых легко потерять время при настройке rich notifications.

Практический разбор на демо‑проекте

Читать полностью »

Привет! Меня зовут Артем и у меня есть хобби. Я обожаю копаться в финтехах, банках, денежных переводах и прочих штуках, связанных с личными финансами. Последние несколько лет я живу в Европе и пользуюсь множеством финансовых сервисов. За это время я слышал десятки историй о том, как люди лишались счетов, теряли крупные суммы денег и даже были на грани уголовного преследования, потому что не осознали, что мир изменился.

Читать полностью »

Мышь на 1000 Гц, экран MacBook Pro на 120 Гц. Я записал одно и то же движение тремя способами сразу. Системный CGEventTap увидел 843,5 события в секунду. NSEvent.mouseMoved в окне обычного Cocoa-приложения получил 118,5, по одному на кадр экрана. GCMouse из GameController отдал 843,6 и в моём прогоне ни о каких разрешениях не спросил. Ниже подробности, 17 строк кода на Swift, рекордер целиком и список того, чего я не проверял.

Всё снято на одной мыши, одном маке и одной версии macOS, по одному прогону на условие.

Откуда вопрос

Читать полностью »

Случайно услышал на просторах интернета, что у Сбера, оказывается, есть открытая модель, которая по бенчмаркам русского языка бьёт Whisper, проверил, и понял, что она не просто не хуже, она работает мгновенно да еще и на обычном процессоре, без GPU, а текст появляется быстрее, чем успеваешь отпустить кнопку

Дальше понеслось, собрал диктовку для себя, раздал друзьям, всем понравилось, начали пользоваться, и разумеется, повалились хотелки, а давай сделаем это, а пусть оно ещё вот так, из этого за пару недель вырос целый продукт.

Что получилось и как работает:

Читать полностью »

Полгода назад я начал писать сжатую файловую систему для macOS. Идея была довольно простой. В macOS уже существует decmpfs — встроенный механизм прозрачного сжатия файлов. Приложение продолжает видеть обычный файл, хотя физически его содержимое может храниться в сжатом виде. Но у этого подхода есть неприятное для моей задачи свойство: после изменения файла сжатие может исчезнуть.

Например, можно сжать node_modules, получить приличную экономию места, потом запустить сборку — часть файлов перезапишется, распакуется, и каталог постепенно снова начнёт занимать почти исходный объём. Мне хотелось другого поведения: Читать полностью »

Зачем понадобилась нативная оболочка

Я пользуюсь TorrServer на Mac и в какой-то момент поймал себя на том, что для обычного просмотра постоянно переключаюсь между Терминалом, Web UI и плеером. Сам сервер меня устраивал — не хватало именно нормальной оболочки вокруг него.

Так появился TorrServe Silicon — open-source приложение на SwiftUI для Mac с Apple Silicon. Сначала я хотел сделать буквально две кнопки: запустить и остановить сервер. Но проект довольно быстро вырос в медиатеку, поиск через Jackett, работу с метаданными, запуск внешних плееров и управление из строки меню.

Это не WebView и не новая реализация TorrServer.Читать полностью »

Экранный OCR-переводчик для macOS: читаем статьи и смотрим видео без переключения окон

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

Встречаешь незнакомый термин или редкое слово и начинается возня: выделить мышкой, скопировать в буфер, переключиться в браузер, вставить в переводчик, прочитать значение, вернуться обратно к чтению.

Читать полностью »

В зрелом iOS-проекте автоматизированные тесты — давно не экзотика. Unit-тесты проверяют отдельные компоненты, интеграционные тесты контролируют взаимодействие между слоями, а XCUITest проходит критичные пользовательские маршруты. Проблема начинается не с отсутствия автоматизации, а с её масштабирования.

Читать полностью »

Когда пытаешься починить сложный механизм простым напильником, в какой-то момент неизбежно приходится шаманить свой собственный швейцарский нож.

Читать полностью »

Всем привет! Хочу поделиться своим первым опытом в разработке мобильной игры для iOS — в жанре roguelite. Это pet‑проект, который неожиданно для меня самого дорос до релиза в App Store, так что расскажу и про идею, и про технические идеи. Надеюсь, будет интересно почитать:)

С чего всё началось

Я проходил курс по разработке под iOS и решил, что лучший способ реально закрепить материал — сделать несколько реальных проектов. Одним из таких проектов стал LootShrine — ссылка на игру в App Store.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js