Показаны сообщения с ярлыком Apple. Показать все сообщения
Показаны сообщения с ярлыком Apple. Показать все сообщения

29 мар. 2016 г.

Unicode последовательности и NSString. Unicode composed sequence and NSString.

Завязался с оперированием эмотиконками из набора Unicode символов строке NSString. Одна из сложностей с Unicode в том, что он бывает не только UTF-8, но и UTF-16, и UTF-32. В данном случае стояла задача удаления последней эмотиконки из строки текста. Посимвольное удаление не работает, поскольку даже при том, что для этих значков используется UTF-32 (то есть длина символа понятна — 4 байта), существую так называемые Композиционные последовательности Unicode (вольный перевод). Например, такой неоднозначный значок как "👨‍👨‍👦‍👦"(Family: MAN, MAN, BOY, BOY) состоит из 7 символов: U+1F468 U+200D U+1F468 U+200D U+1F466 U+200D U+1F466. Соответственно, чтобы удалить одну иконку, нужно удалять до 7 символов. Причем от иконки к иконке их количество меняется. У NSString для этих случаев есть набор методов для работы с такими последовательностями. Они описываются в статье "NSString and Unicode", поэтому их все я тут описывать не буду. Конкретная задача удаления последней иконки, вне зависимости от количества составляющих ее Unicode символов была решена так:

NSRange rng = [str rangeOfComposedCharacterSequenceAtIndex:[str length]-1];
        str = [str substringToIndex:rng.location];

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

17 февр. 2016 г.

Mac OS (10.11) El Capitan: Запись/чтение на USB диск в NTFS формате

В Mac OS (10.11) El Capitan отвалилась возможность записи на NTFS диски. Короткий серфинг показал, что связано это с тем, что обычно используемый драйвер NTFS-3G стал несовместим с новой осью. Apple по этому поводу не особо переживает, ибо NTFS — вражеская FS. Решение в моем конкретном случае было найдено этой ветке форума на discussions.apple.com. Paragon выпустил для Seagate версию своего NTFS драйвера под Mac OS, совместимую с El Capitan, но поддерживающую только диски Samsung: ссылка. Зато бесплатно. В той же ветке на discussions.apple.com даются ссылки на менее бесплатные или более крякнутые варианты, но их я решил не пробовать, так как бесплатный вариант подошел.

15 окт. 2015 г.

23 дек. 2013 г.

iOS рзаработка: зачем тестировать приложения на таргет-устройствах?! Есть же симулятор!

Решил сохранить цитаты из App Distribution Guide:

If you have an iOS app, make sure you test it not only in iOS Simulator but on all the devices and releases that your app supports. Testing on more than one kind of device ensures that your app operates exactly as you thought it would, no matter which device it’s running on. 
и из раздела "Beta Testing Your iOS App" 
Important: Rigorously test your app on a variety of devices and iOS versions. Because different kinds of devices and iOS releases have different capabilities, it’s not sufficient to test your app on a device provisioned for development or the simulator. iOS Simulator doesn’t run all threads that run on devices, and launching apps on devices through Xcode disables some of the watchdog timers. At a minimum, test the app on all devices you support and have available. In addition, keep prior versions of iOS installed on devices for compatibility testing. If you don’t support certain devices or iOS versions, indicate this in the project target settings in Xcode, as described in “Setting Deployment Info.” 
, чтобы ссылаться на них в случае возникновения вопросов у заказчика/работодателя по поводу ненадобности хардварных тестовых устройств. 

15 дек. 2013 г.

Генератор ссылок на iTunes от авторов iTunes

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

9 дек. 2013 г.

Напоминалка: Найти UDID своего iOS-устройства

Простая WEB-напоминалка как узнать UDID у iOS-девайса: http://leftbit.com/findudid/  Не часто нужно, но потому и нужна, что успеваешь забыть, где его искать :)

5 нояб. 2013 г.

Bzzzer - скромный напоминатель

Выложил в Аппстор свою программу под названием Bzzzer. Функционал программы прост. После нажатия кнопки Start Bzzzer воспроизводит выбранный звук с выбранной же периодичностью. Периодичность предоставлена набором из 5, 10, 15 или 30 минут.
Однако смысл программы гораздо глубже, чем может показаться! Когда человек занимается каким-то увлекательным, а возможно совсем не увлекательным и рутинным, делом (листание какого-нибудь агрегатора фан-контента, чтение, рисование, программирование), легко забыть про течение времени. Но вместе с тем, не всегда есть возможность или желание отвлекаться, чтобы посмотреть на часы, вспомнить когда ты последний раз засекал время, сколько прошло с тех пор... Bzzzer ненавязчиво напоминает, что прошло пять минут. Или тридцать. И не отвлекаясь от работы ты отмечаешь, что с момента пуска Bzzzer прошло около 2 часов. Надо бы встать, размяться, подышать воздухом.
Таким образом Bzzzer скромно напоминает, что время уходит, что нужно подсуетиться и успеть больше.
Сам я Базззера пользую уже около 3 лет. Всегда очень помогает держать себя в рамках времени и при этом не просыпаться :)

Так что, welcome, как говорится.


24 сент. 2013 г.

Mac OS: Штатная цветовая пипетка (Color picker)

Понадобилось узнать составляющие цвета в окошке программы. Оказалось, что в Mac OS есть штатная утилита DigitalColor Meter. Имеет все, что нужно для периодического определения цвета: разнообразные цветовые модели (RGB, CMYK, etc), отображение в десятичном и хекс форматах, копирование в текста и битмапе. Интересная фишка - кастомный размер пипетки. Если пипетка больше, чем 1 пиксел, выводится усредненный цвет.
Вообще, приятно удивило наличие в стандартном наборе системных утилит шахмат и графопостроителя.

21 сент. 2013 г.

iOS 6.1 standard fonts list

Стндартный набор шрифтов из iOS 6.1

AcademyEngravedLetPlain,
AmericanTypewriter,
AmericanTypewriter-Bold,
AmericanTypewriter-Condensed,
AmericanTypewriter-CondensedBold,
AmericanTypewriter-CondensedLight,
AmericanTypewriter-Light,
AppleColorEmoji,
AppleSDGothicNeo-Bold,
AppleSDGothicNeo-Medium,
Arial-BoldItalicMT,
Arial-BoldMT,
Arial-ItalicMT,
ArialHebrew,
ArialHebrew-Bold,
ArialMT,
ArialRoundedMTBold,
Avenir-Black,
Avenir-BlackOblique,
Avenir-Book,
Avenir-BookOblique,
Avenir-Heavy,
Avenir-HeavyOblique,
Avenir-Light,
Avenir-LightOblique,
Avenir-Medium,
Avenir-MediumOblique,
Avenir-Oblique,
Avenir-Roman,
AvenirNext-Bold,
AvenirNext-BoldItalic,
AvenirNext-DemiBold,
AvenirNext-DemiBoldItalic,
AvenirNext-Heavy,
AvenirNext-HeavyItalic,
AvenirNext-Italic,
AvenirNext-Medium,
AvenirNext-MediumItalic,
AvenirNext-Regular,
AvenirNext-UltraLight,
AvenirNext-UltraLightItalic,
AvenirNextCondensed-Bold,
AvenirNextCondensed-BoldItalic,
AvenirNextCondensed-DemiBold,
AvenirNextCondensed-DemiBoldItalic,
AvenirNextCondensed-Heavy,
AvenirNextCondensed-HeavyItalic,
AvenirNextCondensed-Italic,
AvenirNextCondensed-Medium,
AvenirNextCondensed-MediumItalic,
AvenirNextCondensed-Regular,
AvenirNextCondensed-UltraLight,
AvenirNextCondensed-UltraLightItalic,
BanglaSangamMN,
BanglaSangamMN-Bold,
Baskerville,
Baskerville-Bold,
Baskerville-BoldItalic,
Baskerville-Italic,
Baskerville-SemiBold,
Baskerville-SemiBoldItalic,
BodoniOrnamentsITCTT,
BodoniSvtyTwoITCTT-Bold,
BodoniSvtyTwoITCTT-Book,
BodoniSvtyTwoITCTT-BookIta,
BodoniSvtyTwoOSITCTT-Bold,
BodoniSvtyTwoOSITCTT-Book,
BodoniSvtyTwoOSITCTT-BookIt,
BodoniSvtyTwoSCITCTT-Book
BradleyHandITCTT-Bold,
ChalkboardSE-Bold,
ChalkboardSE-Light,
ChalkboardSE-Regular,
Chalkduster,
Cochin,
Cochin-Bold,
Cochin-BoldItalic,
Cochin-Italic,
Copperplate,
Copperplate-Bold,
Copperplate-Light,
Courier,
Courier-Bold,
Courier-BoldOblique,
Courier-Oblique,
CourierNewPS-BoldItalicMT,
CourierNewPS-BoldMT,
CourierNewPS-ItalicMT,
CourierNewPSMT,
DevanagariSangamMN,
DevanagariSangamMN-Bold,
Didot,
Didot-Bold,
Didot-Italic,
EuphemiaUCAS,
EuphemiaUCAS-Bold,
EuphemiaUCAS-Italic,
Futura-CondensedExtraBold,
Futura-CondensedMedium,
Futura-Medium,
Futura-MediumItalic,
GeezaPro,
GeezaPro-Bold,
Georgia,
Georgia-Bold,
Georgia-BoldItalic,
Georgia-Italic,
GillSans,
GillSans-Bold,
GillSans-BoldItalic,
GillSans-Italic,
GillSans-Light,
GillSans-LightItalic,
GujaratiSangamMN,
GujaratiSangamMN-Bold,
GurmukhiMN,
GurmukhiMN-Bold,
Helvetica,
Helvetica-Bold,
Helvetica-BoldOblique,
Helvetica-Light,
Helvetica-LightOblique,
Helvetica-Oblique,
HelveticaNeue,
HelveticaNeue-Bold,
HelveticaNeue-BoldItalic,
HelveticaNeue-CondensedBlack,
HelveticaNeue-CondensedBold,
HelveticaNeue-Italic,
HelveticaNeue-Light,
HelveticaNeue-LightItalic,
HelveticaNeue-Medium,
HelveticaNeue-UltraLight,
HelveticaNeue-UltraLightItalic,
HiraKakuProN-W3,
HiraKakuProN-W6,
HiraMinProN-W3,
HiraMinProN-W6,
HoeflerText-Black,
HoeflerText-BlackItalic,
HoeflerText-Italic,
HoeflerText-Regular,
Kailasa,
Kailasa-Bold,
KannadaSangamMN,
KannadaSangamMN-Bold,
MalayalamSangamMN,
MalayalamSangamMN-Bold,
Marion-Bold,
Marion-Italic,
Marion-Regular,
MarkerFelt-Thin,
MarkerFelt-Wide,
Noteworthy-Bold,
Noteworthy-Light,
Optima-Bold,
Optima-BoldItalic,
Optima-ExtraBlack,
Optima-Italic,
Optima-Regular,
OriyaSangamMN,
OriyaSangamMN-Bold,
Palatino-Bold,
Palatino-BoldItalic,
Palatino-Italic,
Palatino-Roman,
Papyrus,
Papyrus-Condensed,
PartyLetPlain,
STHeitiSC-Light,
STHeitiSC-Medium,
STHeitiTC-Light,
STHeitiTC-Medium,
SinhalaSangamMN,
SinhalaSangamMN-Bold,
SnellRoundhand,
SnellRoundhand-Black,
SnellRoundhand-Bold,
Symbol,
TamilSangamMN,
TamilSangamMN-Bold,
TeluguSangamMN,
TeluguSangamMN-Bold,
Thonburi,
Thonburi-Bold,
TimesNewRomanPS-BoldItalicMT,
TimesNewRomanPS-BoldMT,
TimesNewRomanPS-ItalicMT,
TimesNewRomanPSMT,
Trebuchet-BoldItalic,
TrebuchetMS,
TrebuchetMS-Bold,
TrebuchetMS-Italic,
Verdana,
Verdana-Bold,
Verdana-BoldItalic,
Verdana-Italic,
ZapfDingbatsITC,
Zapfino

26 июн. 2013 г.

Mac OS: Afloat — повышение функциональности окон


Утилита Afloat устанавливается, как системное расширение в MacOS X и добавляет несколько функций для управления окнами приложений. Несколько пунктов меню добавляется в меню Window Cocoa-приложений. Я этот плагинчик ставлю, в основном, из-за двух функций: перетаскивание окна за любое место (по нажатию Cmd+Ctrl) и изменение размера окна (та же комбинация + драг правой клавишей мыши). В дополнение есть функция Always On Top, регулировка прозрачности окна и еще несколько других. Единственное ограничение — поддерживаются только Cocoa-приложения.
Программа бесплатна и удобна. Рекомендую :)

14 апр. 2013 г.

Фантомные обновления в iTunes

Столкнулся с ситуацией, когда iTunes не моем маке показывает, что имеются несколько обновлений купленных приложений. Однако при входе в в раздел скачивания обновлений Apple Store количество обновлений равно нулю или минус то, что показывается iTunes. Какое-то время я не обращал внимания на это различие в показаниях. Но недавно число фантомов увеличилось до 4. Решил разобраться.
Выяснилось вот что. На Новый Год я подарил подруге iPod. Инициализировал я его со своего компа. И ставил несколько программ. Потом ее iPod я отвязал от своей учетки и прописал на нем ее данные. Дальнейшая синхронизация ведется с ее компа. Свой комп я так же деавторизовал от ее учетки. Но эти несколько программок остались в локальном хранилище iTunes. И поэтому программа при проверке наличия обновлений учитывала и эти программы, а Apple Store мне показывал только те, которые куплены на мою учетку.
При очередной синхронизации своего iPhone мне iTunes показала примерно такое окошко:
Это меня и навело на догадку о происхождении фантомов. Открыл список приложений в iTunes, отыскал указанные программки и удалил их оттуда. Фантомы пропали.
В форумах Apple (https://discussions.apple.com/) периодически возникают темы про Phantom updates. Но там четкого ответа я не увидел. А он тут лежит. :)

21 янв. 2013 г.

Небольшая шутка в Apple-документации

В обычно сухой и строгой документации от Apple написано: "Они могут содержать любые объекты, и эти объекты могут быль любого типа. Объект NSArray может содержать, например, кошек, собак, вомбатов и их комбинации."

1 нояб. 2012 г.

Отключение автозапуска CameraWindow.app в Mac OS

После установки софта, идущего с зеркалками Canon, при подключении к компу iOS-устройств (iPhone, iPad) стало выскакивать такое окошко
Анноит. Окно открывается приложением Canon CameraWindow. Первая мысль - снести приложение. Но немного терпения, и оказалось, что приложение прописано в штатном iPhoto в качестве обработчика подключения внешней камеры (или устройства, содержащего оную). Приложение сносить не стал. Просто отключил его в свойствах iPhoto.

developer.apple.com на обслуживании

Перестал у меня открываться http://developer.apple.com - основной портал разработчика на сайте Apple. Сообщает "We'll back soon". Начали уже возникать мысли о теракте и отключении Украины от интернета. С зарубежного хостинга открывается нормально. А из Украины - никак.
Оказалось все просто и пОшло. Почистил кэш и куки броузера и поротал стал открываться. Загадка, однако.

10 сент. 2012 г.

Mac OS. Калькулятор внутри Spotlight

Недавно открыл для себя калькулятор, встроенный в Spotlight в Mac OS. Просто вводим математическое выражение и получаем автоматически обновляемый ответ. Очень удобно.
Понятно, что спотлайт навряд ли сам считает выражения, а скорее всего вызывает штатный (или какой другой) системный калькулятор. Но делается это учень красиво и юзабельно. Поддерживаются в том числе программистские функции типа <<  и ^.

17 июл. 2012 г.

Mac OS: встроенный словарь

Открыл для себя встроенный в Mac OS словарь. Словари - вообще очень полезное изобретение человечества. А встроенные в оконный менеджер - вообще архиполезная вещь. В условиях изучения инородного языка с постоянным чтением статей на нем я предпочитаю пользовать толкователь. Только в крайних случаях пользую перевод слов. Сабж в этом очень помогает.

Открывать словарь можно как отдельное приложение Dictionary, а можно использовать его всплывающую по Cmd-Ctrl-D ипостась. Слово для обработки будет выбрано под курсором мыши.

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

29 июн. 2012 г.

Tips and tricks in Xcode.

    Дорвался до видео с WWDC 2012. Видео бесплатны, в хорошем качестве, с субтитрами. Но и без субтитров все понятно - язык технический. Первое из-за чего проспал на работу - сессия по советам работы с Xcode (про Delphi и Visual Studio умолчали). Выступали три инженера. Лиц на видео не показывали, поэтому выдержана ли была политкорректность - не знаю. Но два голоса были мужские и один, кажется, женский. Описывались три схемы работы с IDE: однооконная, с несколькими закладками и многооконная. Хинты, показанные на сессии удобны для всех схем работы. Главный тезис, звучавший сквозь всю сессию, - хоткеи, хоткеи и еще раз автоматизация!
    ИтаГ, какие хоткеи я вынес для себя из просмотра видео:

  • Cmd+Shift+{ напару с Cmd+Shift+} - переключение между закладками приложения (я и раньше эти хоткеи пользовал, но пришлись к столу)
  • Ctrl-Cmd-E - позволяет редактировать идентификатор, на котором установлен текстовый курсор, одновременно со всеми его упоминания в его области видимости (функция, цикл, блок...).
  • Cmd-J - открывает декоративное окошко выбора панели IDE, в которое нужно поместить фокус ввода. В принципе, есть комбинация Cmd-Opt-., которая переключает циклично этот фокус по панелям окна, но про нее почему-то скромно умолчали
  • Мышинный Opt-Click или клавиатурный Cmd-Ctrl-Shift-/ - отобразить всплывающую подсказку по объекту клика. Причем не просто тип, а довольно объемный талмуд 
  • Cmd-Option-[ - переместить текущую строку текста вниз 
  • Cmd-Option-] - переместить текущую строку текста вверх (этих двух я сам нашел - иногда полезно) 
  • Cmd-Shift-O - удобная фича (почти мега-) быстрый поиск идентификатора сквозняком по проекту во всплывающем окошке. После выбора подходящей строки Return открывает соответствующий файл в текущем окне редактора, Opt-Return открывает декоративное окошко, в котором можно выбрать куда поместить файл, Opt-Shift-Return открывает файл во второстепенном редакторе (вертикальное окно рядом с основным).
  • Cmd-Opt-Return - открывает файл объявления идентификатора над текстовом курсором во второстепенном редакторе
  • Cmd-Return - закрывает окно второстепенного редактора.
  • Cmd+Opt+Click (Cmd-Ctrl-Opt-J) - открывает объявление идентификатора в главном редакторе
  • Cmd+Opt+2Click - открывает объявление идентификатора в новом окне. Вообще, двойной клик в Xcode в основном приводит к открытию нового окна
  • Cmd-T - дублирует текущую закладку в новую со всеми текущими настройками
  • Cmd-E - поместить выделенный текст в поле поиска (и в окне редактора, и в окне навигатора проекта). При этом выделенный текст уже считается результатом поиска и можно использовать следующую комбинацию:
  • Cmd-G - перемещаться между результатами поиска в текущем окне
  • Opt-Return в форме поиска в окне редактора - замена в выделенном тексте
  • Двойной клик по скобке выделяет содержимое всего блока внотри пары скобок 
  • Комментарии, предваренные текстом TODO: и FIXME: работают так же, как #pragma mark, то бишь отображаются в списке методов вверху окна редактора
  • При открытом списке этих самых методов можно вводить текст, который будет фильтровать список.
Пара хоткеев от меня - странно, что их не упомянули на сессии:

  • Cmd-Ctrl-D - отобразить словарную карточку слова над текстовым курсором. Имена сущностей должны соответствовать их назначению и писаться орфографически правильно. Фишка эта общекокошная, но и в Xcode ее игнорировать не стоит.
  • Cmd-Ctrl-Down - открыть counterpart (связанный с текущим файл - заголовок или имплементацию)
  • Cmd-Shift-J - отбразить текущий файл в Project Navigator.


    На другом видео рассказывали про навороченность работы Xcode с системами контроля версий - SVN и Git. Работа с репозиториями находится в соответствующем разделе Organizer. Commit, Add и проче команды находятся в меню File/Source Control. Режимы просмотра логов, конфликтов и merging-а переключаются в правом верхнем наборе пиктограмок. Внизу навигатора проекта имеется пиктограммка с хинтом "Show only files with source-control status". Она заставляет навигатор показывать только те файлы, которые каким-то образом отмечены в рабочей версии - A, M, C и т.д. Инструменты для работы с контролем версий довольно стандартны и ничего нового про них рассказать не получится. Но сделаны они с умом. Таймлайн для SVN я первый раз увидел тут. До сих пор видел его только в перфорсе.

    Очень понравился трик, не относящийся, однако, напрямую к Xcode. Это вариант использования Automator. Xcode, как любое Cocoa-приложение работает с ним, как с родным. Точнее, он с Xcode. Записал видюшку с примером.




28 июн. 2012 г.

Менеджер буфера обмена для Mac OS

Недавно нашел и начал успешную эксплуатацию на маке бесплатной программки ClipMenu. Функционал примерно соответствует упоминавшейся ранее утилите для MS Windows Clip Cache. Есть средства автоматизации, отображение списка сохраненных блоков в виде меню с подменюшками, настройка горячих клавиш для отображения меню, кастомизация действий по сохранению, запоминанию и прочим нужным событиям. В общем, программа достаточно удобна и настраиваема. Учитывая функционал и бесплатность - рекомендую.

8 мая 2012 г.

Mac OS. Смена IP-адреса и других свойств принтера

В Mac OS интуитивно сделано только добавление принтера. Как ни странно. Замена IP-адреса и других свойств принтеров делается только через их удаление. Но можно обойтись и Unix-way :). Достаточно отредактировать любимым vim файлик /etc/cups/printers.conf.

13 мар. 2012 г.

iPad-макет

Набросал себе макет (mockup) iPad-а для планирования интерфейса программ. SVG-файл сделан в InkScape и прилагается. Мелкая сетка соответствует 8 пикселям, большая — 64-м. Download here.