Обновить
24.28

macOS *

Настольная ОС компании Apple

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

Разработка Air Native Extensions (ANE) для OS X

Время на прочтение13 мин
Просмотры6.7K
Привет всем хаброюзерам. Хотел бы поделиться опытом создания нативных расширений для OS X.

AIR — просто потрясающая в своей кроссплатформенности среда. Пока дело не доходит до использования каких-то уникальных для платформы фишек. Именно с этой проблемой я столкнулся, когда передо мной была поставлена задача превратить браузерную flash-игру в десктопную для OS X. Всё это с использованием среды AIR мной было сделано за несколько часов и я не буду описывать этот процесс, так как в гугле на эту тему полно информации. Самое интересное началось тогда, когда появилась необходимость подключить к игре различные сервисы Apple, такие как GameCenter, In-App-Purchase и т.д. И здесь я столкнулся с трудностями. Дело в том, что есть куча готовых ANE, в том числе и бесплатных. Но вся беда в том, что все эти решения работают только для iOS. Для OS X же нет ни то, что готовых библиотек, но даже информацию по созданию этих библиотек приходилось собирать по крупицам с пары-тройки интернет ресурсов многолетней давности, постоянно натыкаясь на какие-то подводные камни или даже айсберги.

Сейчас же я хочу собрать все накопленные знания и опыт в одном месте и поделиться с вами, чтобы хоть немного уменьшить ту боль, через которую вам придётся пройти, если всё таки вы тоже решитесь на создание нативных библиотек для мака. Хотя после четырёх разработанных расширений для OS X они не кажутся такими уж сложными и мудрёными.
Читать дальше →

Objective-C Runtime для Си-шников. Часть 3

Время на прочтение4 мин
Просмотры11K
image

Всем привет. Сегодня я продолжу рассказывать вам о внутреннем устройстве Objective-C Runtime, а конкретно — о его реализации на уровне языка C.

В прошлых статьях мы с вами подробно разобрались с селекторами и механизмом посылки сообщений объектам и классам. Сегодня я хотел бы закончить с сообщениями и рассказать о принципах работы некоторых встроенных возможностей языка Objective C.

Тем, с кем мы ещё не знакомы, я предлагаю для начала прочитать первую и вторую части, а прочитавших и заинтересовавшихся прошу под кат.
Читать дальше →

Objective-C Runtime для Си-шников. Часть 2

Время на прочтение8 мин
Просмотры20K


Снова здравствуйте. Мой цикл статей посвящён тем программистам, которые перешли с языка C на Objective-C, и хотели бы ответить для себя на вопросы «каким именно образом Objective-C основывается на языке C?» и «как это все происходит изнутри?».

Большое спасибо всем за обратную связь, именно проявленный вами интерес служит для меня стимулом продолжать свои статьи по доскональному изучению Objective-C Runtime. Я начал эту часть именно с тематики своих статей, потому что хочу сделать пару уточнений:

  1. Мои статьи — не руководство по Objective C. Мы изучаем именно Objective-C Runtime настолько низкоуровнево, чтобы понимать его на уровне языка C.
  2. Мои статьи — не руководство по языку C и дебаггерам. Мы опускаемся до уровня языка C, но не ниже. Поэтому такие вопросы, как представление данных в памяти, я не затрагиваю. Предполагается, что вы знаете все это и без меня.


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

Если вы еще не читали первую статью, то настоятельно рекомендую прочитать сначала её: http://habrahabr.ru/post/250955/. А если уже читали, то добро пожаловать под кат.
Читать дальше →

Обработка больших запакованных файлов на Mac и не только

Время на прочтение2 мин
Просмотры8.3K
Возникла у меня как-то задача обработать файл с логами. В принципе, задача банальная, я для этого использую Perl и в Linux и в Windows. Но дело в том, что всё это происходит на Mac, файл находится в архиве и он большой. Распакованным, он занимает около 20 ГБ.
Какое будет обычное решение?
Читать дальше →

Objective-C Runtime для Си-шников. Часть 1

Время на прочтение6 мин
Просмотры31K


При первом знакомстве с Objective C он произвёл на меня впечатление уродливого и нелогичного языка. На тот момент я уже имел достаточно сильную базу в C/C++ и ассемблере x86, а так же был знаком с другими высокоуровневыми языками. В документации писалось, что Objective C это расширение языка C. Но, как бы я ни старался, мне всё же не удавалось применить свой опыт в разработке приложений для iOS.

Сегодня он всё так же кажется мне уродливым. Но однажды окунувшись в глубины Objective-C Runtime я влюбился в него. Изучение Objective-C Runtime позволило мне найти те тонкие ниточки, которые связывают Objective C с его «отцом» — великолепным и непревзойдённым языком C. Это тот самый случай, когда любовь превращает недостатки в достоинства.

Если вам интересно взглянуть на Objective C не просто как на набор операторов и базовых фреймворков, а понять его низкоуровневое устройство, прошу под кат.
Читать дальше →

Подключаем NTFS на запись в Mac OS X Yosemite 10.10

Время на прочтение2 мин
Просмотры117K
С недавних пор по воле судеб стал обладателем Mac OS X Yosemite 10.10 и столкнулся с неприятной особенностью, что не могу записывать на внешний диск отформатированный под ntfs. Написал небольшую инструкцию, вдруг кому пригодится. Если интересно, прошу под кат.
Читать дальше →

Научно-исследовательское программное обеспечение в ВУЗах Великобритании

Время на прочтение10 мин
Просмотры12K
От переводчика

В этой заметке коротко о том:
  • сколько исследователей пользуется научно — исследовательским программным обеспечением (ПО) в ВУЗах Великобритании?
  • какое именно ПО используется?
  • сколько исследователей разрабатывает свое исследовательское ПО, сколько является просто пользователями исследовательского ПО, как это зависит от дисциплины, их пола и других факторов?
  • какая компьютерная операционная система выбирается разработчиками и пользователями исследовательского ПО?

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


Читать дальше →

Минимализм Objective-C

Время на прочтение2 мин
Просмотры17K
Я часто пишу небольшие тестовые проекты на Objective-C, чтобы поэкспериментировать или поиграться с чем-нибудь. Обычно, я помещаю код в main.m и избавляюсь от всего остального:

#!/usr/bin/env objc-run
@import Foundation;

@implementation Hello : NSObject
- (void) sayHelloTo:name
{
    printf("Hello %s, my address is %p\n", [name UTF8String], self);
}
@end

int main ()
{
    id hello = [Hello new];
    [hello sayHelloTo:@"sunshine"];
}


Это полноценный проект из одного файла, готовый к выполнению. Под катом — описание приемов, позволивших прийти к данному минимализму.
Читать дальше →

Новый Office 365 как платформа для разработчиков под Windows, Android, iOS и Web

Время на прочтение3 мин
Просмотры24K

В календаре евангелиста Microsoft TechEd всегда отмечен особенно, потому что эта конференция о будущем как компании, так и индустрии в целом. TechEd Europe 2014, который состоялся на прошлой неделе в Барселоне, как и ожидалось, полон анонсов и новых решений, при этом главная для меня новость связана с Office 365.

Во-первых, OneDrive для пользователей Office 365 стал безлимитным и без дополнительной платы.

Во-вторых, добавится новый и очень важный для безопасности данных бизнесса функционал Built-in Mobile Device Management (MDM) for Office 365. MDM позволит IТ администраторам централизованно управлять смартфонами и планшетами, включая iOS, Android и Windows Phone. Данный функционал будет доступен в первом квартале 2015 года.

Но самая долгожданная новость связана именно с разработкой под Office 365. Команда разработчиков платформы выразила это в одной фразе:

Write once, run anywhere

Читать дальше →

Уменьшаем потребление CPU Skype под Linux и Mac OS

Время на прочтение1 мин
Просмотры71K
image Skype. Как мы его любим и одновременно ненавидим. Долгое время, Skype был единственной программой, которую я старался закрывать при работе лаптопа от батареи: потреблял около 4% CPU, будил процессор 250-300 раз в секунду, ничего при этом не делая, оставляя процессору меньше времени на нахождение в более энергосберегающем состоянии.

Увидел я однажды комментарий пользователя Vayun:
Возможно проблема проявляется не у всех, проверить легко: запускаем скайп, запускаем top (на ноутбуке работающем от батареи наглядней будет powertop) и смотрим сколько он отъедает cpu.

Я долго не возился, придавил только poll, увеличив timeout. Это даёт наибольший выигрыш (уменьшая %CPU скайпа раз в 5), но наверное можно лучше.

Собственно, вот: Skype-poll-fix. Увеличивает таймаут у вызовов poll (Linux) и kevent (Mac OS), снижая потребление процессора в 4-5 раз.
Читать дальше →

Локализация приложений под OS X

Время на прочтение5 мин
Просмотры11K


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

Наша команда трудится над проектом ICQ и Агентом Mail.Ru (привет Дима, Вова, Леша) под OS X, и локализация продукта на разных этапах развития осуществлялась по-разному, для каждого из подходов обнаруживались свои достоинства и недостатки. Некоторым накопленным опытом я и хочу поделиться.
Читать дальше →

Как рубисту пережить апдейт OSX 10.10 Yosemite

Время на прочтение3 мин
Просмотры23K
На днях вышла очередная версия OSX 10.10 Yosemite, и если для обычных пользователей маков вопрос «обновляться или нет» не стоит, то разработчики подобным вопросом вполне могут задаться. Редкий большой апдейт прошлых лет не приносил нам тех или иных проблем с софтом, библиотеками и консолью. Не может похвастаться отсутствием проблем и нынешнее обновление.

Одним из лучших советов тут конечно было бы подождать месяц-другой и только затем обновляться — избавит от многих проблем и потери времени. Но ждать не хочется, а посему после обновления у вас гарантированно всё сломается (речь далее в основном идёт о ruby и rails): будут выскакивать seg fault'ы, не будут собираться некоторые гемы, возникнут проблемы со скриптами в консоли.
Исправление некоторых проблем нагуглить будет легко, а для некоторых предлагают лишь хаки в виде задания дополнительных параметров компиляции и переменных окружения.
Читать дальше →

Как поменять параметры ускорения движения курсора мыши в Мак ОС

Время на прочтение1 мин
Просмотры31K
Те, кто пробовал играть в игры с использованием мыши на маке, наверняка замечали «замечательный» эффект, который когда то давно придумали в недрах компании Эппл для медленных компьютеров — а именно динамическое изменение ускорения курсора мыши.
К чему это приводит — если вы перемещаете мышь незначительно — то все работает как и обычно. Но, стоит вам только передвинуть мышь на 1-1.5 см и начинаются чудеса — вместо ожидаемого линейного перемещения — мы наблюдаем резкий скачок.
Например, в игре Counter Strike это приводит к тому, что вместо прицеливания вы разворачиваетесь на 180 градусов.
Читать дальше →

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

Docker контейнеры для web-разработчика под OS X

Время на прочтение3 мин
Просмотры24K
Всю свою текущую разработку я веду, используя docker контейнеры, и если под Linux такой подход не вызывает никаких проблем, то под OS X некоторые моменты могут отнять невероятное количество сил и времени.

Об одном из таких моментов я и хочу рассказать.
Читать дальше →

ForkLift — продвинутая замена Total Commander для Mac OS

Время на прочтение2 мин
Просмотры68K
image

Очень много ребят жалуется на отсутствие замены Total Commander под Mac OS и не знают о существовании файлового менеджера ForkLift, который вполне может заменить Total Commander.

Краткий обзор возможностей:

Поддерживаемые протоколы
image FTP, SFTP, WebDAV, S3, iDisk, SMB, AFP, NIS
Возможность монтировать удаленную файловую систему и работать с ней, как с локальной. При редактировании файлов на удаленной системе в локальном редакторе, изменения сразу применяются без необходимости отдельного подтверждения «загрузить новую версию файла?».

Также существует возможность подмонтировать любую из удаленных файловых систем как локальный диск, таким образом файлы будут доступны из системы как локальные.
Читать дальше →

Автоматизация монтирования samba-разделов в Mac OS

Время на прочтение5 мин
Просмотры20K
Третьего дня поднял сервер для файлопомойки, бэкапов, торрентов и прочих домашних нужд. Там развернулась samba с множеством шар, в частности с личнми данными и местом под бэкапы ноутбука через TimeMachime. Сразу же не понравилось постоянное ручное монтирование шары и образа для бэкапа. Ниже хочу поделиться с сообществом скриптами по автоматизации этого процесса.
Читать дальше →

Монтируем диски NTFS для записи в MacOS X 10.9 Mavericks

Время на прочтение2 мин
Просмотры34K
Понадобилось мне на днях сделать бэкап (около 75 гигабайт разных файлов) на внешний жесткий диск, да вот незадача — отформатирован он в файловую систему NTFS — вроде бы другие операционные системы давно пишут на нее без проблем, а в MacOS пришлось использовать «свое решение».

И так, изучив, то что мне предлагает google, выяснилось что надо купить либо Paragon NTFS, либо Tuxera NTFS, либо использовать бесплатное решение.

После ряда экспериментов, выяснилось, что наиболее простой способ — это поставить пакет ntfs-3g из MacPorts и подменить /sbin/mount_ntfs

Система портов MacPorts была у меня давно установлен (я ставил из него mc, wget и другие полезные утилиты, к которым привык в ОС Linux, такие как pwgen, например).

На чистой системе его нет — следовательно его необходимо установить согласно инструкциям на www.macports.org — скачать и запустить скрипт установки.

Далее, установим osxfuse и ntfs-3g

sudo port install osxfuse ntfs-3g

И чтобы была полная автоматизация, то есть автоматически монтировался носитель (а не вручную) подменяем mount_ntfs

sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig
sudo vi /sbin/mount_ntfs
Читать дальше →

Автозапуск программ с подключением к сетевым дискам в требуемой последовательности

Время на прочтение4 мин
Просмотры9.8K
Поскольку системник в себе несет всего 256 Гб под систему и софт, бОльшую часть рабочих файлов, библиотеки, архивы и т.п. храню на нЕком файл-сервере под управлением XP который по гигабитному Ethernet подключен к рабочему компу. СтоИт сей девайс в подвале, шумом не напрягает ))) А так-же по Wi-Fi расшарены папки с музыкой и кино с этой файло-свалки для нубуков, планшетов, смартфонов.

Задался вопросом как все эти сетевые диски автоматом монтировать в МАК-ОСь? Начитался интернетов и написал скриптик, оформив его в стандартную программу и заснув ее в автозагрузку.

image

Итак, что в нем используется:
Поскольку комп грузится на столько быстро, что DHCP роутера не успевает присвоить IP-адрес МАКу выдавая ошибку, что команде не удалось подключить внешний диск. Посему пришлось поставить десяти-секундную задержку перед выполнением команд монтирования сетевых дисков:

set pause to (10)
delay pause


Следующим этапом создаем тома в МАКе и монтируем сетвые диски.
Уточнение: МАК и файл-сервер висят в рабочей группе WORKGROUP, а сервер имеет сетевое имя serverX32 (хотя можно использовать и IP-адрес сервера):

do shell script ("mkdir /Volumes/My_DOCs") <!--  создание директории сетевого диска My_DOCs в МАКе -->
do shell script ("mount -t smbfs //login:password@serverx32/My_DOCs /Volumes/My_DOCs") <!-- Подключение по SMB-протоколу Виндового диска с именем My_DOCs с логином и паролем, для доступа на чтение/запись, если заход на данный диск происходит без логина/пароля диск имеет статус только чтение (для смартфонов и планшетов). -->
do shell script ("mkdir /Volumes/Video") <!-- создание директории второго сетевого диска в МАКе -->
do shell script ("mount -t smbfs //login:password@serverx32/Video /Volumes/Video")
и т.д. сколько нужно подключить дисков…


Читать дальше →

Простейший информер на Automator

Время на прочтение4 мин
Просмотры26K
Automator

В первом своем посте на данном ресурсе хотел бы описать простейший пример создания информера, с помощью колоссально удобной утилиты Automator, идущей в комплекте с Mac Os X.

Буквально на днях, при радикальном снижении уличной температуры в Москве у меня внезапно появилась задача: визуально отслеживать температуру в серверном помещении (а точнее в стойке), с определенным интервалом, т.к. кондиционер, обслуживающий помещение, отказался работать при T < -15 ºC.

Читать дальше →

Сворачивание приложений в Dock для ленивых с помощью AppleScript

Время на прочтение7 мин
Просмотры10K
Как часто вы пользуетесь опциями некоторых программ (iTerm 2, Total Finder, Adium), которые позволяют показать окно приложения по нажатию на глобальный хоткей и скрыть это приложение при потере фокуса? Лично я — постоянно. А что если некая программа не имеет такого функционала и постоянно маячит перед глазами? Тот же Skype, например. Под катом вариант приведения своего рабочего пространства в порядок.
Читать дальше →

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