Как стать автором
Обновить
11.29

Разработка под macOS *

Пишем под настольную ОС Apple

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

Monkey patching в Go, или грабли от Apple

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 458

Все началось с того, что я в очередной раз немного поменял структуры БД, и в некоторых SQL-запросах добавилась новая колонка. Нормальная ситуация - взять и легким движением руки сломать половину unit test’ов, потому что БДшные моки ожидают определенный текст запроса.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 1

Новости

От идеи до сервера на Mac mini M2 Pro: как мы запускаем новые продукты

Время на прочтение 5 мин
Количество просмотров 5.4K

Меня всегда интересовало, как создают новые гаджеты, автомобили, самолеты и форматы домов. Сейчас я в команде выделенных серверов Selectel и сам участвую в разработке новых продуктов. Под катом делюсь опытом и рассказываю, откуда мы черпаем идеи и как реализуем проекты. На примере новых конфигураций на базе Mac mini®.
Читать дальше →
Всего голосов 31: ↑31 и ↓0 +31
Комментарии 39

Кто ты, SwiftData

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 3.2K

Привет! Я Андрей Зонов, стафф-инженер в Тинькофф и большой фанат CoreData. Моя любовь в CoreData началась на старте карьеры, когда я попал в первый Enterprise-проект. Это были времена iOS 4.3., CoreData не имела parent-контекстов и методов perform. Как-то так сложилось, что за свою карьеру я много фиксил классические проблемы в CoreData, и с появлением SwiftData мне стало интересно, остались ли проблемы в SwiftData и что нам дает этот фреймворк. 

В статье разберем основные концепции и киллер-фичи по SwiftData. Пройдемся по основным отличиям и тому, как можно мигрировать с CoreData на актуальную SwiftData. Копнем внутрь SwiftData, узнаем, как она устроена под капотом, и подведем итоги стоит ли вообще переезжать на новый фреймворк Apple. 

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 8

Как переназначить кнопку dictation на macOS (без стороннего софта)

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

Год назад я купил Mac с функциональными клавишами и столкнулся с кнопкой dictation, которая вызывает стандартную программу для диктовки текста. Перед покупкой я предположил что это кнопка с значком микрофона должна включать и выключать микрофон, каково же было мое разочарование, когда вместо функционала включения и выключения микрофона я получил запуск dictation. Меня не особо устраивал сторонний софт (например: Kabaneri elements), хотелось что-то нативное и небольшое

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 6

Истории

Делаем плавную прокрутку для сторонней мыши в macOS

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 8.3K

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

Читать далее
Всего голосов 32: ↑30 и ↓2 +28
Комментарии 13

Идеальный REST-клиент для iOS

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

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

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 0

Macintosh 128K: от мечты к легенде в мире компьютеров

Время на прочтение 16 мин
Количество просмотров 4.8K

Не так давно вышло обновление macOS 14 Sonoma. Некоторые уже раскритиковали его за то, что Apple отошла от своих же принципов минимализма, добавив на рабочий стол виджеты. На эту тему можно долго спорить, но факт остается фактом: тот привычный образ GUI массовый пользователь узнал еще в 1984 году в первой ОС для «Макинтош» — System 1.

Компьютер Macintosh был разработан в Apple командой под руководством Стива Джобса в 1980-х. Инженеры, включая Баррела Смита и Энди Херцфельда, фокусировались на доступности и простоте. Они интегрировали множество функций в ПЗУ и заменили заказные чипы на экономичные микросхемы PAL. Сталкиваясь с вызовами и жесткими сроками, команда создала инновационные решения, в том числе метод генерации звука через видеосхему. Запуск Macintosh стал переломным в истории персональных компьютеров.

И лучше всего о создании первого «Макинтоша» расскажут его создатели. В этой статье мы приведем «анекдоты» от Энди Херцфельда, автора книги «Революция в Долине: безумно великая история о том, как был создан Mac».

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 5

На пути из Web к Native, часть 1

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 8.9K

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

Оставь надежду, всяк сюда входящий. Или.. нет..?

Имея небольшой опыт в веб-программировании, мне казалось, что все не так плохо. И так по началу и было. За вопрос я взялся основательно: без задачи — нет учебы.

Я решил поставить перед собой большую цель: давным-давно...

Читать далее
Всего голосов 19: ↑17 и ↓2 +15
Комментарии 17

Одна игра, один разработчик, шесть платформ

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

Недавно компания Valve объявила о том, что Counter-Strike 2 не будет поддерживать macOS. Я инди-разработчик, в одиночку выпустивший игру с поддержкой macOS, поэтому поначалу меня удивило это решение Valve. Но вспомнив о своём собственном опыте поддержки шести платформ, я начал понимать точку зрения компании.

Думаю, будет полезно написать пост с перечислением полученных мной уроков. Надеюсь, он поможет другим инди-разработчикам в выборе поддерживаемых платформ. Небольшое предисловие: моя собственная игра Industry Idle в основном основана на веб-технологиях (WebGL + TypeScript). Это означает, что поддержка разных платформ — относительно простая задача, мне не приходится иметь дело с платформенными графическими API (DirectX, OpenGL, Vulkan, Metal) и в основном игра существует в браузерной «песочнице». Это практически идеальная ситуация для кросс-платформенной поддержки. Тем не менее, меня постоянно удивляют и одолевают проблемы, связанные с отдельными платформами.

Читать далее
Всего голосов 30: ↑29 и ↓1 +28
Комментарии 5

LLaMA 2, RWKV, Santacoder и другие LLM на iOS

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

Однажды я решил изучить язык Swift и разработать свое первое приложение для iOS. Для этого я решил создать реальный проект, который заключался в оптимизации нашумевшего LLaMA.cpp под iOS. Я поставил перед собой задачу обеспечить запуск 3B и 7B моделей на iPhone 12 Pro с приемлемой скоростью. Под «приемлемой» скоростью я имею в виду такую, чтобы пользователь не успевал заскучать, читая предсказанный текст, пока генерируется новая часть. Что из этого получилось (и какие трудности были при реализации) читайте в статье.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 5

Запуск потенциально опасного кода в изолированном окружении. Как мы сохраняем безопасность на macOS

Время на прочтение 7 мин
Количество просмотров 7.2K

Мы запустили облачный тест-раннер Emcee. Теперь другие компании могут тестировать приложения, не разворачивая у себя локальную версию раннера. Правда, запуск стороннего кода на наших серверах — это небезопасно. Но мы решили этот вопрос — рассказываем, как это было.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Большинство оконных приложений — это недоработанные real-time приложения

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

В оконных приложениях таких платформ, как Windows, Linux и macOS, скрывается ряд недоработок, которые порой снижают их быстродействие до раздражающе медленного. Сюда относятся нюансы работы в реальном времени, блокирование памяти при доступе к диску и недостаточно эффективное планирование для активного оконного приложения. В статье мы подробно разберём все эти проблемы.

Я программирую уже давно. Под давно я имею в виду не один десяток лет работы. Надеюсь, это достаточно долго. За это время мой опыт в основном заключался в программировании для современных платформ вроде Linux, Windows, macOS для десктопных и серверных архитектур процессоров. Недавно я участвовал в создании MIDI-движка для систем значительно меньшей мощности.

Вскоре после начала я столкнулся с проблемой, которая требовала обеспечить невозможность переполнения очереди событий ввода. По сути, эта задача сводится к тому, чтобы каждый обработчик событий не выполнялся дольше некой максимальной продолжительности времени. Затем меня осенило! Я уже слышал это раньше — «максимальная продолжительность времени», так как занимаюсь разработкой систем, работающих в реальном времени.
Читать дальше →
Всего голосов 59: ↑51 и ↓8 +43
Комментарии 26

Полная неуязвимость? Как устроены защитные механизмы macOS (и при чем тут маркетинг)

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

Подход Apple к информационной безопасности приводит к тому, что некоторые пользователи Mac не обращают внимание на то, что происходит с их компьютерами. В этом посте я старался разобраться в основных механизмах защиты macOS от вредоносных программ и выделить их недостатки, но в результате выяснилось, что «проблема» — это сама репутация macOS.

Читать далее
Всего голосов 40: ↑39 и ↓1 +38
Комментарии 7

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Установка macOS при помощи Windows

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

Описываю свой рабочий опыт установки macOS на старенький macbook, так как другие способы описанные в интернете не дали результатов, либо привели к новым ошибкам.

Для начала скачиваем дистрибутив в формате *.dmg. Сделать это можно из App Store со второго macbook, либо с торрент (важно чтобы это была чистая копия из App Store).

Берем флешку на 8Гб и более, вставляем в компьютер с Windows, нажимаем Win+R, пишем cmd.

Запускается консоль и в ней уже пишем diskpart потом list disk, на экран выводиться список дисков windows, теперь важно не перепутать диски и выбрать именно диск с флешкой. Пишем select disk (номер флешки):

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Комментарии 12

Osquery&SIEM. Вы правила мониторинга продаёте? Нет, просто показываем

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

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

Статья является продолжением первой части из микросерии аналитических статей, посвящённых тому, как мы мониторим macOS в Ozon.

Тут будут боль мемы и немного примеров инцидентов :)

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 0

Как обеспечить безопасность корпоративных данных на macOS-устройствах?

Время на прочтение 9 мин
Количество просмотров 2.2K

Для контроля действий на рабочих станциях в Solar Dozor применяется отдельный модуль — Dozor Endpoint Agent (агент), с помощью которого можно своевременно отследить и при необходимости заблокировать передачу данных. Этот модуль адаптирован и может работать под управлением разных операционных систем - компания-разработчик "Ростелеком-Солар" предлагает версии для Windows, Linux и macOS. На нашем портале уже приводились обзоры модуля Dozor Endpoint Agent для Linux и Windows. В этой статье речь пойдет о модуле Dozor Endpoint Agent для macOS, который разрабатывается с 2021 г. Он стал флагманом движения российского рынка DLP-систем к полнофункциональному мониторингу рабочих мест на базе устройств Apple и по сей день занимает лидирующую позицию на рынке.  

Читать далее
Всего голосов 16: ↑10 и ↓6 +4
Комментарии 5

Топ утилит для создания Forensic Triage: их особенности и возможности

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

Камиль Камалетдинов, младший эксперт по реагированию на инциденты Центра киберустойчивости Angara SOC, подготовил обзор полезных утилит для triage. В материале практические инструменты и небольшой опрос для вас в самом конце.

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

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

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

Именно для этого был разработан инструмент Forensic Triage Tool, потому что снимать полную копию устройства займет большое количество времени, а снятие triage занимает примерно от 5 до 30 минут в (зависимости от устройства и количества информации на нем) и содержит в себе достаточное количество данных для расследования инцидента.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 0

«Бизнес-юнит — как семья». Незрячий сотрудник VK водит экскурсии по офису и развивает цифровую доступность

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

Привет! Я Артем Плаксин, незрячий специалист по цифровой доступности в VK. Я делаю наши сервисы удобными для людей с ограниченными возможностями здоровья и работаю над социальными проектами. Ещё я веду блог — как пользователь той самой доступной среды, айтишник и просто живой человек.

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

Читать далее
Всего голосов 61: ↑58 и ↓3 +55
Комментарии 7

Насколько Swift удобен для DSL?

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

SE-0195 Dynamic Member Lookup
SE-0216 Dynamic callable
SE-0253 CallAsFunction
Исходя из мотивационной секции proposal, @dynamicCallable и @dynamicMemberLookupбыли добавлены для интеропа с динамическими языками, такими как Python, JavaScript. Но их использование этим не ограничивается.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 2

Библиотека криптования ChaCha20

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

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

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Комментарии 1

Вклад авторов