← All posts tagged Apple

OCTAGRAM
Windows Apple iCloud Windows10 Обновил Windows до Падших Создателей.

Проверил, как там iCloud. Не работает. Всё так же, крутится индикатор после Войти, e-mail приходит о том, что мой Apple ID использовался для входа. Увижу ли я когда-нибудь, как эта штука работает? Windows 2003 ей была слишком старая. Windows 10, похоже, перманентно слишком новая. Удивительно просто, как столько лет не могут починить.
OCTAGRAM
Java API gnustep objectiveC YellowBox Думал, в Swift будут утилиты на Swift, а оказалось, что нет (см. #2891656). Ладно, посмотрим, какие есть ещё варианты. У нас же мостов для Java есть целых три штуки. А как там парсинг сделан?

Первым в голову приходит Rococoa. И там парсинг не сделан никак. Согласно документации, надо писать привязки вручную.

Про Apple Cocoa-Java известно мало, потому что он с закрытым кодом, но оттуда можно взять ручные коррекции, написанные прямо в Apple. Похоже, полновесного парсера типа GCC там нет. clang в те времена не было.

Порадовал GNUStep JIGS. Там есть и парсер, и ручные коррекции.
OCTAGRAM
API Swift objectiveC BridgeSupport Думаю, что бы лучше взять для парсинга Objective-C API? То ли Рагель, то ли парсер комбинатор, то ли Виссером вдохновиться.

Решил подсмотреть, как сделано в Swift. А там — по-чёрному работа с clang идёт. Опыт BridgeSupport по переходу на clang был не самым удачным. С одной стороны, больше стало распознаваться, с другой стороны — стало фиг собрать. Moving target, понимаешь. А уж из-под винды это пытаться запустить я б не стал особенно сильно пытаться. Зря не пошли по пути аналогично COM TLB, SOMobjects IR, GObject IR и WinRT WinMD, в общем, как у всех остальных. BridgeSupport прямо-таки прокладывал дорогу в направлении здравомыслия. Но нет, теперь надо как-то по особенному подпрыгивать, чтоб всего лишь парсить API.
OCTAGRAM
книги objectiveC Некоторые факты.

Из описания ко второй редакции «Brad J. Cox. Object-Oriented Programming: An Evolutionary Approach »
This new second edition covers the changes that have occurred in Objective C version 4.0, the newest release, and the tools that assist in developing object-oriented software.
То есть, Objective-C 2.0 перезагрузил нумерацию, на самом деле он пятый или шестой, в зависимости от того, считать ли версию с дефисом в имени следующей версией после версии с пробелом в имени.

И он был не один. Кроме модификаций C++ (Sun OBI, SGI Delta/C++, DirectToSOM C++, ZL), ранее было, можно сказать, целое поколение модификаций C.

C-talk — это запатентованный язык для MS-DOS и Apple Macintosh, созданный отделом программных продуктов фирмы CNS Inc, специализирующейся на продуктах диагностики для медицины. Синтаксис языка основан на Си с дополнительными конструкциями, поддерживающими классы и методы, наследование и посылку сообщений. Предоставляется набор основных классов для структур данных типа Buffer, Stream и ByteArray. Он поставляется в виде пакета, содержащего препроцессор для преобразования файлов на C-talk в исходные тексты на Си, и среды программирования, называемой C-talk Browser, основанной на оконном интерфейсе.
Complete Computer Corporation, New York работает над созданием объектно-ориентированной среды разработки программ, называемой Complete C. Она состоит из прекомпилятора, генерирующего стандартный Ansi С из объектно-ориентированного Си, набора инструментов (отладчика, компоновщика, генератора документов) и библиотеки основных классов.
OCTAGRAM
OCaml CPC Прошлый раз потерпел неудачу с запуском Continuation Passing C, и вроде это было связано с устареванием CPC и встроенной в него версии CIL относительно OCaml. Так что в этот раз пытаюсь взять старый OCaml. В cpc/README указан Ocaml >= 3.12. Вот, значит, лучше всего и взять. Нашёл установщик OCaml 3.12.1. В предупреждении написано, что он уничтожит PATH, если переменные среды занимают больше 1024 байт, но я к этому могу подготовиться. На установщиках IBM VisualAge и Apple WebObjects уже натренирован.
OCTAGRAM
objectiveC BridgeSupport Всё же я погорячился насчёт BridgeSupport XML как аналога IDL/TLB/SOMIR для Objective-C. Например:

<function name='NSStringFromClass'>
<arg type='#'/>
<retval type='@'/>
</function>

Здесь видно, что на вход должен идти потомок NSClass, но это по историческим причинам. Видимо, не всегда в Objective-C поддерживались метаклассы, и ссылки на классы, как в Delphi, были разных типов со ссылками на объекты. Кроме NSClass, другие классы и протоколы чести попасть в кодирование типов не удостоились, а каким-то другим образом имена не пробрасываются. Вот, например, в данном примере потеряна информация о том, что результат — ссылка на NSString.Таким образом, это даже хуже, чем CORBA TypeCode, которые мне не нравились за то, что там терялась информация о пространстве имён класса и структуры.

Вот ещё пример метода NSString:

<method selector='getCString:maxLength:encoding:'>
<arg c_array_length_in_arg='1' index='0' type_modifier='o'/>
<retval type='B'/>
</method>

Я здесь вообще не могу понять, какого типа первый и второй аргумент. o значит out. А больше тут ничего и нету. А есть ещё третий, NSStringEncoding, между прочим.

Внимательно всмотрелся в кодирование типов на предмет char32_t, char16_t или wchar_t. Нету! А что же тогда будет возвращать NSString, если читать её по кусочкам? Пошёл смотреть сигнатуру метода в NSString.h:
— (unichar)characterAtIndex:(unsigned)index;А в Foundation.bridgesupport такого метода тупо нету. Интересный вопрос, почему. Если бы он как-то ставился в игнор, я бы его увидел в исключениях BridgeSupport\exceptions\Foundation.xml, но там тоже нету. Впрочем, учитывая, что
typedef unsigned short unichar;… я бы должен был увидеть S, формально не отличимый от unsigned short, и только эвристически, зная, что программисты становятся идиотами, экономящими два байта, только когда работают со строками, и что-то очень редко, работая с целыми числами и даже массивами из них, думают, ой нет, 4 байта-то многовато будет, надо два, понять, что S следует проецировать на Standard.Wide_Character в языке Ада и System.WideChar в языке Делфи, а не Interfaces.Unsigned_16 или Interfaces.C.unsigned_short в языке Ада и System.Word в языке Делфи.

Подводя итог, парсер для Objective-C придётся делать. Или делать clang -ast-dump или GCC-XML, если там Objective-C поддерживается, а BridgeSupport — вспомогательный инструмент.

Впрочем, довольно полезный с учётом того, что там промаркировали c_array_length_in_arg и модификаторы in, out, in out, имеющие синтаксическую поддержку в таких сравнительно более продвинутых нативных языках программирования, как Делфи и Ада. Первое в языке Делфи называется «открытыми массивами», а в языке Ада недоопределённые массивы — вообще органичная часть языка, ведь самые обычные строки там такие, и передача их как аргумент — это просто частный случай того, что можно сделать. Ну и когда сишную звёздочку не понятно, проецировать ли на in out, out или именно на указатель, это весьма раздражает. Если спроецируешь на in out или out, то нельзя без хаков передать null в языке Ада или nil в языке Делфи, а в некоторых API это можно и нужно, а в некоторых API — нельзя, и если язык мешает это сделать без хаков, то это к лучшему. Проекция на указатель более универсальна, но по сравнению с окружающим кодом, который нередко вообще без указателей, выглядит как что-то инопланетное.
OCTAGRAM
Apple Иран Apple удалила все иранские приложения из App Store
Представитель иранской компании Digikala — крупнейшего в стране сайта электронной коммерции — рассказал, что примерно десять дней назад работа приложений была прекращена. По его словам, приложение Digikala было удалено из-за "нового типа санкций, которые были наложены на Иран".
Терпилам с айфончиками остаётся только утереться.
OCTAGRAM
qr WeChat Нашёл @WeChatApp в Mac App Store. Вот Виндоуз-версия изначально была нерабочая, а версия для Мак, оказывается, как любой нормальный нехипстерский Скайп, когда-то пускала по логину-паролю. А потом перестала. И пошли отзывы:

Не логинится по паролю ★★★★☆
от Irriius

> В версии 1.2.0.18 не логинется по паролю.
> Сканировать QR код каждый раз крайне не удобно!!! Разработчики верните логин!!!
> И сделайте наконец сохранение истории, хотябы опционально.

Верификация по QR коду ★★☆☆☆
от Имантяй

> Теперь и в приложение добавили верификацию по QR коду, это очень не удобно у кого нет смартфона, каждый раз просить кого-то помочь залогиниться сводит с ума.
> Верните обратно окно логина и пароля.

Бесполезная ерунда ★☆☆☆☆
от naunet

> Каждый раз нужно сканировать код чтобы зайти в приложение. В приложении нет истории сообщений, файлов. Единственный плюс, это то, что можно использовать клавиатуру компьютера, чтобы попечатать сообщения. Отвратительно, впрочем как и версия для андроида.

Из 40 отзывов набралось 11 колов, не считая моего.
OCTAGRAM
Apple SOM carbon Copland HIObject На накосе смог открыть, наконец, образы Copland, которые не кололись 7zip’ом. SOM DTK там внутри не обнаружил, а это, например, IDL для SOMObject. Но системные IDL там были в изобилии. Однако, что показалось мне странным, многие из них не содержат описание классов. Там только структуры и обратные вызовы.

Но были и те, что с классами, например, всё, что начинается на HI. Это была интересная наводка. Я вспомнил, что в накосе для более лёгкого портирования была (и сейчас есть, но только для 32х бит) система библиотек Carbon. Теперь, когда в экосистеме классической макос мне известно что-то объектное, кроме OpenDoc, стало логичным посмотреть, а куда это делось в Carbon. В статье на Википедии про Carbon прочитал такое:

HIObject — a completely new object-oriented API which brings to Carbon an OO model for building GUIs. This is available in Mac OS X v10.2 or later, and gives Carbon programmers some of the tools that Cocoa developers have long been familiar with. Starting with Mac OS X v10.2, HIObject is the base class for all GUI elements in Carbon. HIView is supported by Interface Builder, part of Apple's developer tools. Traditionally GUI architectures of this sort have been left to third-party application frameworks to provide. Starting with Mac OS X v10.4, HIObjects are NSObjects and inherit the ability to be serialized into data streams for transport or saving to disk.
Но какой может быть «completely new» в системе библиотек, которые нужны только для портирования? Это осколок былого величия, наскоро сделанная замена SOM. Вместо somBuildClassHIObjectRegisterSubclass, вместо somDataResolveHIObjectDynamicCast и т.п. Кстати, доступ к полям через HIObjectDynamicCast значит, что это нехрупкое ABI. Также, через QuickTime SDK, HIObject попал и на Виндоуз тоже, в собственно плеер, Сафари и айТюнс.
OCTAGRAM
почта imap Мучаюсь с уже трёмя мёртвыми почтовыми ящиками. С живым-то хорошо, в крайнем случае создал учётку на новом компе, и через несколько часов он уже всё слил и проиндексировал. А вот как сделать, чтобы почта, которая есть в установленном клиенте на другом компе, со всеми папками попала из одного клиента в другой — это очень весёлая история. В Apple Mail при первом запуске апгрейд почтового ящика завершался сегфолтом, пока я не переименовал ~/Library/Mail в ~/Library/Mail.old и не начал заново. Если теперь попытаться импортировать из другой папки, импортёр очень долго думает, а потом показывает список с галочками из десятков тысяч файлов. Так как там и живые ящики, и мёртвые, надо будет переместить директории так, чтоб для импорта остались только мёртвые. Но всё ещё не понятно, куда эти письма пойдут, будет ли структура как была раньше.

Есть идейка поставить уже наконец Citadel и влить туда на IMAP архив всех старых ящиков, а оттуда разлить по компам.
OCTAGRAM
Apple xcode Попробовал собрать приложение для теста (TextEdit) и обнаружил, что оно на Mac OS X 10.11 El Capitan даже не запускается, собрано под 10.12 Sierra. Ну ладно, подумал я, и попытался переключить SDK и цель на 10.11. А нету SDK для 10.11! Xcode может работать на 10.11, но собрать может только для 10.12.

Весь Xcode прежней версии качать неохота было, качнул только утилиты командной строки. Поставил. Поставились. Теперь компилятор для 10.11 есть. А SDK нету. Так уж и быть, качнул Xcode 7.3.1. Поставил. Теперь есть и компилятор, и SDK для 10.11. Но только для них (не считая забекапленной 10.12, конечно). Странно, а вроде раньше по-другому было. В те дни, когда я думал, что 10.6.8 — потолок, я поставил Xcode 3, и там были 10.4u, 10.5, 10.6, то есть, начиная от самой первой x86’ой до самой последней поддерживаемой. А тут одна.

Вычитал такое:
I can copy MacOSX10.11.sdk from another host, but presumably Apple has something else in mind here.
Just to be clear, Apple policy since Xcode 7 has been to only distribute the newest SDK with Xcode.app.

Так, теперь понятно, как Эппл пасёт чебурашек. Ставим разработчиков в дурацкое положение, когда они не могут просто взять и собрать для минимальной достаточной версии OS, как это делается на Windows, со слабым связыванием опциональных фич. Если не предпринимать специальных действий, если не писать на Delphi, C++ Builder или GNAT Ada, а именно из Xcode, то получаются приложения с неоправданно завышенными системными требованиями. Пользователи вынужденно обновляют ОС и/или железо, Эппл собирает кассу, разработчикам с этого пирога ничего не перепадает.

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

И это отличный источник входных файлов для BridgeSupport и анализатора, которым я также собираюсь прочесать GNUStep (до и после отравления TGC) и Cocotron на предмет пересечения. Где что появилось, где устарело, где изчезло. Пока что это мутная толща воды, и в неё надо забуриться.
OCTAGRAM
Apple BridgeSupport Как же не люблю, когда всё пропадает из Интернета. Ну было же великое событие, появление BridgeSupport, до которого описание было только в заголовочных файлах Objective-C и не было аналога COM TLB, SOM.IR и т.п. Для Qt что-то такое уже было, для Gtk+ было, и только Cocoa была последней крепостью. И эта крепость пала. Всё это было в Mac OS X 10.5 Leopard, а у меня был Mac OS X 10.4 Tiger, но я следил за этими событиями, в частности, ставил MacPorts, и через него всё замечательно ставилось и на Тигре тоже. Недальновидные разработчики не могли придумать ничего лучше моста в Python и Ruby. Чуть более дальновидные на его основе сделали взамен устаревшего встроенного моста Cocoa-Java новый RoCocoa. И совсем то, что доктор прописал, было в первую очередь поступить с этой метаинформацией как в COM TLB, то есть, конечно же, привязки для Delphi и Ada, а уж потом всякие скрипты-шкрипты.
OCTAGRAM
Apple PowerPC ЭмуляцияCPU Пока не установил МакОС, из которого выпилили эмуляцию PowerPC, я даже не подозревал, сколько у меня таких программ. Причём, каких! Игры!

Ricochet Lost Worlds, Marble Blast Gold, Luxor 2, Luxor Mahjong, Monster Fair Pinball, Nanosaur — всё это оказалось PowerPC. Кто говорил про обязательные нативные порты, теперь посрамлён. Можно пользоваться программами в эмуляции и даже не знать об этом, пока эмуляцию не отключат. А если не отключать, так и вообще хорошо.
OCTAGRAM
Apple MacOSX ElCapitan Запарился мигрировать всё с Хакинтоша, на котором Ассистент миграции вообще не может в сеть (Mac OS X 10.4.10 Tiger). В принципе, там был порт FireWire, но какой с него толк для миграции, если на Хакинтоше нет Open Firmware и Эпловской разновидности EFI, в которую нужно загрузить донора. Короче, полный голяк. Некоторое время полюбовался на Mac OS X 10.6.8 Snow Leopard на купленном устройства. Там всё ещё узнаваемый стиль Аква и шрифт Lucida Grande. Антиалиасинг без хинтинга и мыла. Всё такое приятное, круглое, пластмассовое.

Сделать образ диска, с которого запущена операционка — это оказалась творческая задача. В Хакинтоше у меня два диска, и можно бекапить первый на второй. Очень мудро я в своё время поступил, разбив основной ЖД на кучу мелких разделов, хоть как-то себе жизнь облегчил. Ещё бы привод DVD никуда не делся, я б прямо с Хакинтошного DVD загрузился бы и Дисковой Утилитой сделал образ как надо. Но привода нет. А hdiutil в Single Mode не заработал. Пришлось dd'шечкой делать. На 10.6.8 образ в таком формате сходу не подключился (нет таблицы разделов), но его оказалось возможным сконвертировать, и этот сконвертированный уже работал лучше. Его подмонтировал, запустил Ассистент Миграции, выбрал вариант «с другого раздела», и этот виртуальный образ был в списке кандидатов.
OCTAGRAM
Apple macOS MacOSX Этот макОС — какой-то новый Турбо Паскаль
Exception Type:        EXC_ARITHMETIC (SIGFPE)
Exception Codes:       EXC_I386_DIV (divide by zero)
Exception Note:        EXC_CORPSE_NOTIFY

SOLVED: My MacBook Pro didn't have a battery installed. I had to remove it b/c it got bloated one day. I installed a new battery and the upgrade didn't crash. Upgraded successfully to El Capitan.
Кто ж мог знать, что без батареи установщик превратит макбук в макбрик. Ни туда и ни сюда теперь.
OCTAGRAM
Apple ПК Затарился макбуком. Пятый комп уже получается. Теперь смогу скомпилировать Cocotron и пощупать движок Objective-C 2.0. И заказов смогу больше принимать.
OCTAGRAM
Linux ada mips Windows10 WSL Windows 10 Creators Update: что нового в Bash/WSL и Windows Console
В то время как Win10 Anniversary Update поставлялся с поддержкой Ubuntu 14.04, в новом обновлении Win10 CU теперь WSL поддерживает Ubuntu 16.04.То есть, если хочется писать на Аде под роутер на MIPSe, теперь не надо искать, как бы так обновить встроенную Ubuntu до 15, чтобы не сломать.

Главой целью создания WSL было уменьшить «разрыв» по ощущениям, когда запускаешь инструменты Windows рядом с инструментами командной строки и окружениями Linux. Когда мы выпустили WSL в Windows 10 AU, то поместили Linux и Windows рядом друг с другом, но всё ещё был большой «разрыв» между ними — хотя обе системы могли иметь совместный доступ к некоторым файлам, каждое из окружений было довольно сильно изолировано от другого. Пользователи часто говорили, что хотят иметь возможность запускать приложения Windows и консоли Bash, и запускать приложения Linux и Windows. Так что мы добавили эту функцию! В Windows 10 Creators Update вы можете запускать приложения и инструменты Windows из консоли Bash.
Как раз то, чего не хватало. А то хочется dcclinux64.exe вызвать из линуксовых скриптов, а никак, или хочешь прямо из ФАРа запускать mips-linux-gnu-gnatmake и не можешь, тоже не очень здорово. Да, я знаю, что можно через plink и XMing как минимум в одну сторону срастить, и у меня Windows 2003 и Debian в соседних доменах Xen так и живут. А тут-то из коробки теперь. Удивительно видеть, как Microsoft опережает Apple в том, чтобы поддерживать Linux.

Ещё одной частой просьбой сообщества была поддержка в консоли больше чем 16 цветов. Поддержка 256 цветов и более очень важна при работе с современными всё более сложными и насыщенными инструментами командной строки, шеллами и т. д. В Win10 Creators Update консоль обновилась и поддерживает полный, прекрасный 24-битный цвет!
Я даже побежал в MSDN смотреть, какое там новое Console API для этого дела. Но не увидел. Тут советуют начинать любить Escape-последовательности. Эм, а как же гасить панели во всяких ФАР Менеджерах, если мы не можем прочитать буфер и потом восстановить его? Или теперь предлагаете буфер на виртуальном экране ncurses хранить? Вот так поворот.

В общем, пошёл обновляться.
OCTAGRAM
Apple objectiveC YellowBox Эмпирически выясняю, что нужно, чтобы запустить приложения под YellowBox, по возможности не устанавливая их. Самый свежий — это WebObjects, проверяю на нём. Опытным путём установлено, что перед тем, как запускать программы, нужно запустить все 4 служебных процесса в таком порядке:
%NEXT_ROOT%\Library\System\machd.exe -d
%NEXT_ROOT%\Library\System\nmserver.exe -d
%NEXT_ROOT%\Library\System\WindowServer.exe
%NEXT_ROOT%\Library\Frameworks\AppKit.framework\Resources\pbs.exe

Причём, обычный установщик YellowBox ставит первые два как службы (также можно вручную установить ключиком -install с правами админа) с указанием зависимости, а последние два — ставит в автозагрузку каждому пользователю, отсюда и их порядок после служб. Между последними двумя порядок либо не критичен, либо они как-то ждут друг друга, тут сложно понять. Ключик -d позволяет запустить службы как обычные процессы, таким образом, не требуя прав админа.

С точки зрения возможности выбрать в качестве кроссплатформенного движка не какой-нибудь дебильный Qt, Gtk+ или ещё куда ни шло VCL, wxWidgets и иже с ними, а всё же что-нибудь, основанное на спецификации OpenStep, это фиговенький, но всё же вариант для Windows. Сдаётся мне, Cocotron-то во многом получше будет, но там инструменты разработки кросскомпилируют с Mac OS X, да ещё с каким-то движком Objective-C, будто бы отличным от всех остальных, которые можно найти в природе. Что касается GNUStep, то эти ребята, когда я прочитал, как они «сделали» ARC, у меня просто волосы дыбом встали. Они додумались Boehm GC впихнуть в движок для всех программ без разбора. Если оно там теперь так и осталось неизвлекаемое, GNUStep начиная с этого момента можно считать безнадёжно сломанным, непригодным для серьёзной разработки. Надо отследить ревизию, в которой эти умники насвинячили, игнорировать всё, что было после, а то вдруг там начали появляться программные ошибки, а я считаю циклы владения безусловно программными ошибками, нарушением причинности, и, может быть, в таком виде от GNUStep ещё будет какая-то польза.

Необходимость разрабатывать кроссплатформенно плюс плохое качество библиотек, обычно берущихся для этого, плюс проблемы с реализациями OpenStep на не-Windows платформах — всё это поспособствовало тому, что я надолго ушёл из фронтенда на сервера и никак не могу вернуться, кроме как заработков на Delphi VCL Windows. А хочется.
OCTAGRAM
Apple MacOSX ComputeStick Жаль, у Эпл нет официального решения в виде HDMI-свистка. Хотел пятый комп именно в таком формате взять попробовать, но по всему выходит, что если хочу там макос, то опять будет хакинтош.

@vt тут топит за то, чтоб я выбросил Мозиллу. А я бы и рад, но Сафари под Винду давно сдулся, а Эпл Мэйл и вовсе никогда не было.
OCTAGRAM
Apple objectiveC YellowBox Посравнивал даты файлов AppKit.dll, если установить OPENSTEP/Enterprise 4.2.4, WebObjects 4.0.1.3, YellowBox 5.1
Раньше мне казалось, что их развитие было именно в таком порядке, ведь в WebObjects 4.0.1 вроде бы как YellowBox 1.0, a 5.1 > 1.0. Но по датам получается следующее:
OPENSTEP/Enterprise 4.2.4 (Bastion5U1) : NextLibrary\Executables\AppKit.dll 1997-03-26
YellowBox 5.1 (Pluto1W1) : Library\Executables\AppKit.dll 1998-05-05
WebObjects 4.0.1.3 (Picasso2Z) : Library\Executables\AppKit.dll 1999-02-23

И это замечательно объясняет, почему версия SokoSave, собранная для WebObjects, не пашет под YellowBox.