Обновить
32K+

Swift *

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

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

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

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

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

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

Читать далее

Новости

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

Что нового в Swift: Август 2026 года

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

Представляем обновление от приглашённого автора Симона Либа (Simon Leeb) о прогрессе Swift как языка для веб-сценариев:

Читать далее

Миллион частиц на iPhone: строим аттрактор Лоренца на GPU с Metal

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

Привет! Я Максим Савченко, iOS-разработчик. Эта история началась с вопроса, как сделать живую форму в духе иконки Siri — и довольно быстро уехала в другую сторону: аттрактор Лоренца на сотнях тысяч, а потом и на миллионе частиц, где и расчёт, и отрисовка живут на GPU.

Вся схема держится на одной идее: состояние частиц на CPU больше не возвращается. Compute-шейдер читает один буфер, пишет в другой, render-pass сразу рисует результат, на следующем кадре буферы меняются местами.

В статье разбираю это по шагам: математика и выбор интегратора, ping-pong-буферы, compute/render-пайплайн, point primitives и additive blending. А в конце — GPU Frame Capture и замеры на физическом iPhone. Спойлер, который я сам не ожидал: RK4 в этой конфигурации оказался далеко не самым дорогим местом. Основная цена ушла в отрисовку и overdraw.

Если коротко: это не гайд «как нарисовать красивую картинку», а разбор того, зачем вообще лезть в Metal и где кадр упирается на реальном устройстве.

Читать далее

ChromaDB Manager [macos] — графический интерфейс для построения локальных RAG

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

Всем привет! Для меня электричество — это магия, и ИИ — тоже. После того, как я приделал к стене водостойкую розетку, решил что и ИИ можно покорить.

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

Сразу к делу — вот репозиторий на ГитХабе, в нем исходники по лицензии MPL 2.0. Приложение для macos 14+, написано на SWIFT и для своей работы тянет только системные зависимости и (при необходимости) пакет установки ChromaDB.

А что внутри

Улучшения Embedded Swift, грядущие в Swift 6.4

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

Embedded Swift — это подмножество Swift, предназначенное для работы с низким потреблением ресурсов, что позволяет ему работать в ограниченных средах, таких как микроконтроллеры. Используя специальный режим компиляции, Embedded Swift создает значительно меньшие исполняемые файлы по сравнению с обычным Swift. Хотя это и подмножество полного языка, подавляющее большинство возможностей Swift работает в Embedded Swift точно так же. Дополнительная информация описана в документе «Видение Embedded Swift».

Embedded Swift быстро развивается. После наших обновлений об улучшениях Embedded Swift в Swift 6.3 в конце прошлого года, этот пост описывает ряд дополнительных улучшений, сделанных в предстоящем выпуске Swift 6.4. Вы можете опробовать их уже сегодня, используя снапшот разработки Swift.

Улучшения языка

Embedded Swift продолжает расширять свое подмножество языка, включая все больше аспектов «полного» Swift, что упрощает обеспечение совместимости существующих кодовых баз Swift с Embedded Swift. Многие из этих функций имеют динамический аспект, что означает их влияние на производительность во время выполнения (например, из-за косвенных вызовов) и размер кода (из-за необходимости дополнительных метаданных). Однако это влияние проявляется только там, где эти динамические функции языка действительно используются: код, критически важный к размеру и производительности, может избегать их, например, включив предупреждения в группе диагностики PerformanceHints.

Обобщенная поддержка экзистенциальных (any) типов

Читать далее

Делегирование работы облачным агентам

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

DoorDash построили внутреннюю платформу для облачных AI-агентов под названием Flux. Масштаб уже впечатляющий: за один месяц 2026 года через неё прогнали 130 000 инженерных задач, включая свыше 25 000 автоматических код-ревью в неделю и более 10 000 запусков playbook'ов из более чем 300 уникальных сценариев — всё это работает без участия человека, параллельно и круглосуточно.

Почему ушли от локальных агентов на ноутбуках

Команда описывает три конкретных ограничения агентных воркфлоу, запущенных прямо на машинах инженеров:

Читать далее

Swift на Apple II. Часть 2: среда разработки и сборка с ИИ

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

В первой части мы разобрали язык, компилятор и байткод SwiftII — Swift-подобной среды для Apple II 1977 года. Но чтобы на этой машине действительно писать код, одного интерпретатора мало: клавиатура без строчных букв и обратного слэша, дисплей без половины нужных символов, 64 КБ памяти, которые приходится переключать банками. Во второй части — как автор всё это обошёл (собственный редактор, файловый браузер, ввод через диграфы) и, отдельно, как весь проект собирался с помощью Claude Code и Codex: честный разбор, где ИИ реально помог, а где им пришлось управлять вручную.

Читать далее

Как мой RDP-клиент для macOS незаметно превратился в комбайн для администрирования

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

Selective Remote начинался как небольшой RDP-клиент для macOS, а к версии 0.22.0 вырос в рабочее пространство для RDP, SSH, SFTP и SSH-туннелей. Рассказываю, зачем SFTP понадобилась передача Server → Server, почему Drag & Drop пришлось спускать со SwiftUI на AppKit и как несколько отдельных экранов превратились в связанные Workspace.

Читать далее

Как мы научили XCUITest тапать в контролы на глубине 136 уровней вложенности

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

Привет! Меня зовут Даниил, я iOS-инженер в Циане. В этой статье расскажу, как мы заставили XCUITest работать с экраном, к которому он в принципе не мог подойти.

У нас есть server-driven UI экран, наш BDUI, про движок которого была отдельная статья. Дерево вьюх у него настолько глубокое, что любое обращение теста к элементам падало. Причём двумя разными способами, и оба — не из-за кода, а из-за жёстких лимитов внутри самого фреймворка автоматизации.

В итоге мы научились читать дерево произвольной глубины и тапать/вводить текст в поля, которые лежат глубже ~60 уровней AX-дерева, где публичный XCUITest бессилен. Далее я буду фокусироваться на общей технике для XCUITest, а не на внутреннем устройстве нашего движка. Так что статья пригодится, даже если у вас никакого BDUI нет, а просто есть очень глубокий экран.

Читать далее

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

Как работали три уязвимости IOS которые apple залатали в новом beta обновлении IOS 27

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

Привет Хабр! На момент написание данной статьи три уязвимости о котрых пойдет речь уже залатали в IOS 27 beta 5 для разработчиков а сами уязвимости уже слиты разработчиком johnny (@0xjohnny в X). всего вышло четыре уязвимости о которых пойдет речь

Читать далее

Kotlin? Swift? Flutter? Нет, кириллица: пишем production-приложение с картой и push-ами на 1С: Элемент

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

Привет, Хабр! (И тебе, 1С-ник, который открыл статью только чтобы убедиться, что пока точно не надо изучать новый продукт. И тебе, питонист, который сейчас будет морщиться. И тебе, мобильный разработчик, который уверен, что без Kotlin/Swift нормальное приложение не родится - держи кружку крепче.)

Эта статья будет посвящена технологии, на которой можно написать своё мобильное приложение за пару дней. И я вам на примере реализованного мною полноценного проекта логистического приложения покажу, что сейчас из себя представляет эта технология на нашей родной КИРИЛЛИЦЕ, и что на ней можно сделать прямо сейчас. И самое главное, как…

Читать далее

Как мы построили систему регрессионного UI-тестирования для iOS-приложения: XCUITest, mock backend и XcodeBuildMCP

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

По мере роста UI-регрессии сложнее всего становится управлять не тестами, а их окружением: состоянием приложения, ответами backend и воспроизводимостью сценариев. В статье разбираю архитектуру, которая связывает тест-кейсы QA, mock-профили, XCUITest и XcodeBuildMCP в единый процесс — от подготовки сценария до запуска в CI.

Читать далее

Swift на Apple II. Часть 1: язык, компилятор и байткод

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

Swift — язык, на котором пишут приложения для iPhone и Mac. Apple II — 8-битный компьютер 1977 года с процессором на 1 МГц, где под всю вашу программу остаётся ровно 40 704 байта. Автор оригинала соединил эти два полюса и собрал SwiftII: работающее подмножество Swift, которое компилируется в байткод и исполняется виртуальной машиной прямо на «яблочной» восьмибитке — по той же идее, по которой в 1979-м на Apple II приносили Pascal. В первой части — как устроены язык, однопроходный компилятор и байткод и на какие жертвы пришлось пойти, чтобы код всё ещё читался как Swift.

Читать далее

Picture-in-Picture в iOS: от запуска до переключения контента

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

С системной функцией Picture-in-Picture (PiP) сталкивались, пожалуй, все владельцы iPhone: кто-то смотрит видео на фоне переписки, кто-то общается по видеосвязи в любимых мессенджерах. Для пользователя это просто удобство, а для разработчика видеосервиса — отдельный механизм со своей инфраструктурой, жизненным циклом и набором ограничений. В этой статье я разберу интеграцию PiP как встроенного плеера: от первого запуска до переключения контента. Поделюсь нюансами, с которыми вы точно столкнётесь на практике, и покажу, как обойти типовые грабли.

Читать далее

Три паттерна написания Agent Skills

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

Еще год-два лет назад большинство разработчиков даже не задумывались о том, что будут программировать агентами с помощью обычных Markdown-файлов. Сегодня ситуация изменилась буквально за несколько месяцев.

Практически каждый современный AI-агент, будь то Claude Code, Cursor, Codex, Gemini CLI или OpenCode, предлагает один и тот же механизм расширения своих возможностей - напишите Skill, опишите процесс решения задачи, добавьте примеры, подключите документацию и агент начнет выполнять эту работу значительно лучше.

Десятилетиями мы учили разработчиков, что Markdown - это документация. Средство общения между людьми. Формат, который не исполняется и никак не влияет на поведение программы, а затем неожиданно оказалось, что один Markdown-файл способен изменить проект сильнее, чем сотни строк кода и здесь индустрия практически мгновенно наступила на старые грабли.

Читать далее

Один HomeKit-дашборд для iPadOS и tvOS: архитектура HomeDeck for HomeKit и ограничения двух платформ

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

Как хобби-проект для Apple TV вырос в HomeDeck for HomeKit для двух платформ. Разбираю, как собрать единый дашборд из неоднородного графа HomeKit, разделить общий слой данных и интерфейсы iPadOS и tvOS, синхронизировать конфигурацию через iCloud и учесть ограничения большого домашнего экрана.

Читать историю
1
23 ...