Обновить
32K+

Swift *

Открытый объектно-ориентированный язык

25,68
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

AdaEngine 1.0.0: от движка к полноценной среде разработки игр

Уровень сложностиПростой
Время на прочтение32 мин
Охват и читатели9.6K

Ada Studio: код, сцены и инструменты разработки в одном рабочем пространстве.

Мы представляем AdaEngine 1.0.0 — большое обновление нашего открытого игрового движка на Swift.

Первый публичный релиз заложил основу: ECS, рендеринг, сцены, ассеты, физику, звук и AdaUI. С тех пор мы работали над тем, чтобы эти возможности складывались в удобный процесс создания игры.

В версии 1.0.0 появился новый Ada Studio с AI-агентами и интерактивными A2UI-инструментами, значительно выросли возможности AdaScript, добавились нативный запуск на Android, multiplayer, более развитый 3D-рендеринг и облачная инфраструктура для распространения пользовательских игр.

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

Читать далее

Новости

Я написал свитчер раскладки для Mac вместе с ИИ-агентом. Через три месяца он всё ещё портил мне русские слова

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.4K

Punto Switcher для Mac заморожен с ноября 2017 года. Я печатаю на русском и английском целый день, и «ghbdtn» вместо «привет» выскакивает у меня раз двадцать в сутки. В июне я решил, что хватит, и начал писать свой свитчер. Альтернативы есть, ниже я их честно перечислю. Мне хотелось двух вещей: исправление прямо во время набора, без горячей клавиши, и ноль сети. А ещё было интересно проверить на себе: вытянет ли ИИ-агент системное приложение для macOS, где нет фреймворка, который сделает за тебя сложную часть.

Получилось 184 коммита, 18 290 строк Swift в приложении и 12 592 в тестах. Три пользователя: я, друг и моя мама. Приложение бесплатное, код открыт под MIT. В этом тексте расскажу, как оно устроено, где я облажался и что из этого вынес про работу с агентом.

Читать далее

Rich Push Notifications в iOS: Notification Service Extension, Notification Content Extension и неочевидные детали

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели6K

Rich Push Notifications в iOS выглядят просто, пока дело не доходит до Notification Service Extension и Notification Content Extension. Где должна находиться category? Зачем нужен mutable-content? Как передать изображения между расширениями, использовать один Content Extension для нескольких категорий и отладить всё это в Xcode?

В статье на отдельном демо‑проекте разбираю весь пайплайн уведомления — от APNs payload до кастомного UI, а заодно несколько неочевидных моментов, на которых легко потерять время при разработке и отладке.

Читать далее

Кулак вместо хоткея: делаю управление macOS жестами и разбираюсь, куда уходит память

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7.7K

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

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

Читать далее

Как анимировать матрицу на Swift UIKit

Уровень сложностиСложный
Время на прочтение9 мин
Охват и читатели5K

В этой статье Леша, ведущий разработчик Совкомбанк Технологий, поделится опытом реализации необычной и сложной анимации в приложении Рокетбанка. А именно матрицы чисел, которая появляется, когда пользователь входит в оформление цифровой кредитной карты.

Читать далее

Мышь 1000 Гц на macOS 26: NSEvent даёт ~119 событий в секунду, GCMouse ~844. Замер тремя способами

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели5.6K

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

Читать далее

0.0000008 Мбит/с при оценке A+: как тихий 403 от Cloudflare сломал половину теста bufferbloat

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели8.2K

Фаза загрузки в моём тесте bufferbloat не нагружала линию: speed.cloudflare.com отвечал на запрос гигабайта кодом 403 и одним байтом, а код этого не замечал. Как это исказило вердикты, как ошибка всплыла при скорости 0.0000008 Мбит/с и почему генератор нагрузки обязан измерять собственную нагрузку.

Читать далее

Применение gRPC при разработке приложений под iOS

Время на прочтение6 мин
Охват и читатели7.8K

Всем привет! При широком распространении REST подхода для клиент-серверного взаимодействия всегда существовали и существуют альтернативные решения, иногда незаслуженно обделенные вниманием. Об одном из них речь пойдет в сегодняшней статье. В ней будут даны некоторые теоретические основы, необходимые для работы и создан небольшой проект, который можно использовать для перехода на gRPC.

Читать далее

Почему спидтест говорит «всё хорошо», а игра лагает: как я построил Latency Dashboard и научил пинг не врать

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7K

Спидтест показывает 200 мегабит, а в PUBG Mobile 180 мс — и оба числа правда. Пропускная способность и задержка измеряют разные вещи, и про вторую спидтест не говорит ничего.

Я собирал для своего iOS-приложения панель задержек: пинговать не «интернет вообще», а те серверы, которыми человек реально пользуется в своей стране, и сортировать их от худшего. Семь раундов измерений против лежащего рядом MacBook дали пять дефектов подряд — и вытащили баг, который жил в приложении с версии 1.0: два параллельных пинга забирали ответы друг у друга, потому что ICMP-сокет отдаёт и чужие echo reply тоже.

Читать далее

iPhone Duo для iOS-разработчика: что реально меняется в вашем Swift-коде

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.7K

iPhone Duo сломал часть допущений, зашитых в iOS-приложения с 2007 года: экранов теперь два, safe area асимметрична, «только портрет» больше не значит что думаете. Разбираю по докладам Apple, что реально меняется в вашем Swift-коде — size classes, reserved regions, arrangements, hinge и камера.

Читать далее

Вайбкодинг. iOS приложение от идеи до стора

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели12K

На разработку ушло 16 выходных дней и примерно 250$

Решил я значит разработать свое приложение, начитавшись материалов про ИИ и вайбкодинг, захотелось попробовать самому. Так как я являюсь UX/UI дизайнером, который занимается разработкой дизайна для приложений, я поставил себе несколько целей, которые должны были закрыться в процессе разработки аппы...

Читать далее

Swift 6.4

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.1K

Swift 6.4 теперь доступна. Swift стремится быть отличным выбором для всего стека — от приложений и серверов до системного кода, встраиваемых устройств и браузера. Этот выпуск углубляет эту поддержку и делает повседневный код проще для написания. Основные моменты:

Читать далее

Адаптация iOS-приложений под iPhone Duo

Уровень сложностиСредний
Время на прочтение27 мин
Охват и читатели10K

Привет! Я Валерия Кудрявцева, iOS-разработчик в KTS. Пора поговорить о новинке.

9 сентября 2026 года Apple представила iPhone Duo, свой первый складной смартфон. Пока пользователи обсуждали новый форм-фактор, у нас, iOS-разработчиков, вопрос был другой: как поддерживать приложение на устройстве с двумя экранами и сгибом. Для нас Apple подготовила раздел HIG о проектировании под Duo, шесть Tech Talks и хаб Get Ready for iPhone Duo.

Статья основана на опубликованных Tech Talks Apple. Xcode 27.1 beta на момент подготовки ещё не вышел, поэтому возможности 27.1 описаны по презентациям. Проверить их на практике нужно после выхода SDK.

Сразу оговорюсь. По информации Apple, существующие приложения запустятся на Duo и без пересборки. Но адаптацию интерфейса это не отменяет: то, как приложение займёт внутренний дисплей и как поведут себя стандартные панели, зависит от SDK, с которым оно собрано. Различия разберу ниже.

Отдельный интерфейс под каждую pose Duo делать не нужно. А вот допущения в текущей вёрстке проверить придётся. Если код берёт доступное пространство из модели устройства или ориентации и считает отступы симметричными, на Duo такие расчёты дадут неверный результат. Основа остаётся одна: адаптивный UI, который смотрит на размер текущего окна и на size class.

Дальше разберу изменения iOS 27, что система сделает сама и что нужно править в коде, новые API 27.1 и типичные ошибки при аудите. В конце сравню подходы с Android foldable и расскажу, что из этого уже есть в Compose Multiplatform.

Читать далее

Ближайшие события

Как разрабатывать приложения для iPhone на iPad

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.6K

Звучит как противоречие: iPad стал вполне рабочим инструментом разработчика, а собрать под него (и под iPhone) приложение всё равно нельзя без Mac. Xcode — единственная официальная среда сборки и подписи iOS-приложений — существует только под macOS, и Apple явно не планирует это менять. Значит ли это, что весь цикл разработки придётся выполнять, сидя за компьютером? Нет — если Mac всегда доступен по сети, а с iPad до него можно дотянуться удалённо.

Читать далее

Whisper больше не нужен, русская диктовка мгновенно и без видеокарты

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели17K

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

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

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

Держишь правый ⌘ command, говоришь, отпускаешь, текст с пунктуацией и заглавными уже вставлен туда, где стоял курсор.

Замеры дали такие параметры: фраза на 6 сек вставляется за 0.08 сек, запись 30 сек транскрибируется меньше чем за полсекунды, а загрузка модели поднимается за 0,22 сек.

Все локально звук не покидает комп, сама модель весит 204 МБ, а приложение 32 мб и работает на процессоре, видеокарту не используем, код открыт, лицензия MIT, с названием мудрить не стал, раз пишет под диктовку, пусть будет Писарь

Почему Писарь, а не Whisper

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

GigaAM, на базе которого я собрал Писаря, обучена Сбером специально на русском, и на нём она заметно точнее, плюс расставляет пунктуацию и заглавные, английские вкрапления в русской речи (термины, названия) она тоже переваривает как надо.

Читать далее

Я хотел сделать быстрый сжатый диск для macOS. А в итоге научился не верить собственным бенчмаркам

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели7.7K

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

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

Читать далее

Как я собрал нативный SwiftUI-контроллер для TorrServer на macOS

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели7K

Я пользуюсь TorrServer на Mac и хотел избавиться от постоянных переходов между Терминалом, Web UI и плеером. Так появился TorrServe Silicon — нативное open-source приложение на SwiftUI для Apple Silicon. В статье рассказываю, почему выбрал прямую работу с API вместо WebView, как устроены библиотека, метаданные, поиск через Jackett, запуск внешних плееров и управление сервером из строки меню.

Читать далее

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

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.9K

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

Читать далее

Как frontend‑разработчик за два дня завайбкодил нативное приложение для macOS, не зная Swift

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели8.2K

Я frontend-разработчик, мой основной стек — Vue. До этой истории я не писал на Swift и практически не работал с Xcode. Тем не менее за два дня у меня появилось нативное приложение для macOS: прямой эфир с PoE-камеры, непрерывная перемотка архива с её карты памяти, календарь, экспорт роликов, скриншоты и локальное распознавание движения людей и машин.

Приложение называется MiniCam. Его исходный код открыт на GitHub, а готовую universal-сборку для Intel и Apple Silicon можно скачать в разделе Releases.

Это не рассказ о том, как я написал идеальную программу одним промптом. Наоборот: чёрный экран, рывки видео, неудачные гипотезы, откаты, зависшие процессы и десятки итераций здесь были важнее первого сгенерированного кода. Но именно поэтому эксперимент получился интересным.

Читать далее

«Я, робот», или история о том, как я начал учиться в IT, когда AI был только в кино. Это заняло у меня 10 лет

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели9.8K

Всем привет! Сегодня я хочу поделиться историей, которая длится уже порядка 10 лет.

Это история не про успешный успех или очередное нытье о том, как сложно и несправедливо, это просто про меня и мой путь. Она началась много лет назад, в далеком 2016, когда Tilda только приобрела свою первую популярность и из всех кипятильников кричали: «Web-разработчикам конец», «Убийца веб-разработки».

В 2016 году мне было 22 года, и я толком не понимал, чем заниматься. У меня был закончен специалитет и бакалавриат по финансам и банковскому делу. Я застал кризис 2014 года, уйдя с хорошей должности в банке в армию на срочку. Вернувшись, я полгода обивал пороги во Владивостоке в то время, когда все банки массово сокращали персонал. В целом, если у тебя не было «волосатой руки», твой максимум составлял 50 тысяч рублей, и то с премией!

Работал я в тот момент в одном дочернем банке одного очень известного Зеленого Банка, на должности кредитного эксперта. Единственное, что занимало мою голову, был вопрос: «Что я вообще здесь делаю и какого будущего я хочу?»

Этот вопрос я задавал себе сотни раз, и единственный ответ, который находил: «Хочу создать что-то свое, хочу помогать людям, хочу, чтобы это было красиво и супер удобно». Но что конкретно делать я не имел ни малейшего понятия.

Читать далее
1
23 ...