← All posts tagged iOS

SannySanoff
тоталитаризм iOS Тред о том, как американских деток обрабатывают в школе на предмет лояльности брендам.

twitter.com

TLDR: у чувака сын андроедоед , но вынужден пользовать айфон, потому что в общешкольных чатах все сидят на imessage, и люди попадают на бабки, если в чатике участвует чувак не с айфоном (т.к. в imessage там изначально коварно смешаны платные SMS и бесплатные instant messages).

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

Но в штатах тяжело конечно. Там в принципе даже взрослые люди на SMS сидят, потому что многим из них в принципе сложно осилить головой IM, и вот яббл вовремя это прохавал и теперь стрижет купоны.
SannySanoff
programming iOS faggots Info.plist для приложений в IOS — это пример того как НЕ использовать XML:

<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
SannySanoff
programming iOS React Native настолько суров, что (ios) добавление вызова его внутренней лог-функции в его внутренний же метод (рядом вызывался RCTLogError, а я добавил RCTLogInfo), при превышении какого-то количества строк лога во время стартапа сильно влияет в плохую сторону на то, что программа вообще запустится.

Короче, вставил вызов RCTLogInfo — программа не запускается. Убрал — запускается.

Они в RCTLog* оказывается не только в stderr льют но еще и делают вызовы из натива в юзерский коллбек JS, который тоже может быть заинтересован в логах (!!!), а JS еще не проинициализировался/очереди/всетакое/карочи стыдобище.

Мало мне было тошноты от хипстерского MongoDB — нынче по причине не полной удовлетворенности от отнюдь не хипстерского Codename One взял React Native, хипстерскую технологию номер 2 в моем списке попыток.

НЮНЮ. Смотрим дальше. Видит бог, я с такой открытой душою подошел к сему хипстерскому фреймворку, что заранее распиарил его наверх, теперь не хочу влететь.
SannySanoff
programming faggots Блютус LE в андроеде еще более ужасен чем в ios.
Смотрите, я объявил GATT Server, там залистил сервис:

public static final String MY_SERVICE = "a8a80b14-7958-42e5-9c69-26e20107ef8a";

В те редкие моменты, когда другой девайс смог подключиться к моему GATT серверу и прочитать список сервисов, он выдал вот что:

12-07 21:02:48.448 27602 27635 I BLEAPP : Service found 8aef0701-e226-699c-e542-5879140ba8a8

Байты в UUID идут задом наперед!!! Да, все ююиды у меня принимает и возвращает android bluetooth API, это не я нахомутал. И нет, это не endianness.

Это faggotry.

SannySanoff
Java programming iOS faggots Продолжение драмы про то как MS закопал RoboVM и в продолжение к моему посту #2828904

Да, как я и предсказывал, вся команда осталась работать на MS/.NET, источник — twitter.com

Да, как я и предсказывал, афтар строит из себя дерево и отмазывается тем, что их прикрыли "because they didn't sell enough licenses to make it profitable for Xamarin" — reddit.com

Да, пользователи на форуме жалуются: "чувак, мы писали 2 года нашу игру, завтра релиз, ты и твои приятели получили бабла от продажи лавки Xamarin-у, и нас кинули, как же так чувак? <8-o ". Чувак рекомендует переводить все на дотнет, не медля и дня.

pbs.twimg.com а это сам афтар, "OOPS!" говорит нам его фотография.

Таковы судьбы людские в жерновах капитализма.
SannySanoff
Java programming iOS faggots Когда RoboVM (компилятор жабы для iOS) был куплен Xamarin-ом, все удивленно подняли брови и заподозрили неладное, потому что Xamarin это .NET, и жаба там ну вообще никуда. Ребята из RoboVM говорили, что это всё для общей пользы, для концентрации на дальнейшем развитии итп.

Когда MS некоторое время спустя купил Xamarin, все огорченно вздохнули и стали ждать неизбежного, а кто был с верой в доброту, тот спрашивал "как-то они там будут? надеемся на лучшее". Ребята из RoboVM говорили что-то там такое, но их никто не слушал.

Когда сегодня объявили о том, что MS убил RoboVM, как-то появилась определенность. Товарищи из LibGDX вон даже расписали план badlogicgames.com , а товарищам из Интела надо готовиться нести тяжкое бремя ответственности. Ребята из RoboVM не знаю, что там щас говорят.

Я с верой в доброту, и мне интересна судьба форка RoboVM, который полнофункциональный, но без некоторых важных фишек. Чо там коммьюнити? Что там главный афтор? Как-то он теперь людям в глаза смотреть будет? Может у них там какой рейдерский захват случился, афтор будет плакаться прилюдно что его кинули? А может МС ему бабла отсыпал для работы над iKVM или над Mono/iOS, и начальником поставил, и он теперь навостряет лыжи в новом направлении?

Интересны людские судьбы в жерновах капитализма. Ну и новые технологии, конечно.
SannySanoff
Apple programming faggots Релизить яблочный апп это значит удовлетворить его запросы по иконкам и startup (launch) images.

Держится в большом секрете от дизайнеров каких размеров должны быть картинки (куча их). Официальные доки туманно выражаются иногда в пойнтах, и инчах экрана, а иногда и просто так, словами ни о чем. Наверняка можно найти outdated доки, которые как правило неполные. Даже для одного устройства требуются разные размеры: со статус баром и без статус бара. Пример "исчерпывающей" таблицы вот developer.apple.com или вот itunesconnect.apple.com или вот developer.apple.com , или еще целый сонм подобного бесполезного добра

И единственное нормальное место где можно наконец-таки узнать полную сводку размеров — это сообщение об ошибке которые выскакивает после компиляции приложения (аттач).

SannySanoff
programming iOS матерьяльчег На волне кросс-платформенных тулкитов, из которых в настоящий момент педалим с товарищами на Codename One аппликуху в продакшн, попробовал позырить еще GluonHQ.

GluonHQ это коммерческий порт JavaFX на устройства. Я не в курсе что именно они там свое напилили в дополнение к открытому порту JavaFX (который есть, но я не щупал), но в демо апп есть гуй с видом как Android Material (круглая кнопка добавить, список, боковое меню итд).

Под IOS это все компилируется посредством robovm: поставляется один универсальный gradle файл, который и компилятор и зависимости все тянет сам, он билдит и ios и android. Очень аккуратненько сделано. Гуй очень аккуратненько выглядит (почти, см ниже)

Перфоманс на Iphone 4S драматичный: например левое меню открывается за отчетливых 3 кадра продолжительностью около 1.5 секунд. Текстовые поля — нативные, динамические, сделаны достаточно убого как и везде (то есть в Codename One).

Вердикт:

— удобство/девелопмент: 5+
— полнота гуя: 5
— графический движок: 2-.

Сравнительные технологии (для productivity app), соответственные оценки

Codename One: 5/3/4
Qt Quick: 3/4/5+
LibGDX: 5/1/5+

Такие дела.

Ссылка: bitbucket.org
SannySanoff
programming Вот CodenameOne превращается в секту (токошо главный гуру анонсировал гугл-группу "codenameone advocacy" где накачивает своих последователей как нести благую весть о CN1 в массы)

Шозанах?

Их и так воспринимали как сектантов (я один из них), которые пиарят продукт. Если чувак (я в том числе) писал где-то псто или коммент на реддите, то ему говорили "Shai, перелогинься", т.к. пиарит в основном один этот чувак, очень активный, основатель этого продукта.

Правда в том, что продукт — сырой, для общей публики подходит поэтому слабо, бизнес план (монетизация) рассчитан на инопланетян, или таких же точно ентерпренёров, ентерпренизм которых в том, чтобы поддерживать других пациентов палаты в которой сами лежат^W^W^W^W^W^W ентерпренёров, компилятор не выдающийся (но достаточный). Поэтому сильно зависит от пиара.

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

Короче, из похожих сектантов на жуйке я нахожу только SOM-сектантов, оберон-сектантов, iOS-сектантов, хаскель-сектантов (самые несектанты, т.к. надо очень упороться, а это непросто) . Они тоже бурлят по своим поводам, а публика проходит мимо, улыбаясь себе в усы, не всегда вникая в их псто, т.к. надо быть немного в теме, а оно кому-то надо?

SannySanoff
programming Некоторое время назад проходила информация, что ИНТЕЛ выпускает свою кросс-платформенную платформу (хехе) под Android/IOS. Я еще тогда возбудился, подписался, а вот давеча пришло.

Скачал это MOE (Multi-Os-Engine), поставил, запустил, сконпелял, запустил на девайсе (IOS). Работает. Но не нужно. Что это такое? Внутри — это видимо их интерпретатор или AOT компилятор жабы, но дюже тяжелый. Снаружи — дается плагин к Android Builder-у, в нем 3 модуля в проекте: common, android, ios. Гуй платформо-специфичный, в common его нет. Дальше решайте сами.

Сравниваем с альтернативными Java платформами на IOS: Codename One (CN1), RoboVM, LibGDX(over RoboVM) (все бинарники универсальные, размеры несжатые минус ресурсы )

1) кросплатформенный гуй: CN1 (gui-oriented) LibGDX (игры и совсем немного гуя)
2) отладка на устройстве через жабопротокол: MOE, RoboVM (лицензия), LibGDX (лицензия)
3) маленький бинарник: CN1 (от 8мб), RoboVM ну наверное в районе 12.
4) быстрый бинарник: CN1, RoboVM, LibGDX
5) сгенеренный C/ObjC проект для Xcode: CN1

1) медленный запуск: MOE (ок 4-5 сек висит application splash screen)
2) медленное первое выполнение метода/загрузка класса: MOE
3) большой бинарник: MOE — ок 77 MB, LibGDX — 44 MB

Компиляция (итерация во время девелопмента, на IOS — до запуска симулятора)

CN1: жабо цикл (неск секунд), на IOS: в среднем 30 секунд (с бубном), с пиками до 60-120 секунд.
LibGDX: жабо цикл (неск секунд), на IOS: стабильно 20 секунд без бубна с отладкой
RoboVM: не мерял IOS, без груза LibGDX наверное секунд 10-12.
MOE: на IOS: 30 секунд с отладкой.

Генерация IPA с нуля:
LibGDX: 5:30
CN1: 4 минуты
MOE: 1.5 минуты

Мораль: возможно, будет круто портануть CN1 на LibGDX, потому что в нем графика быстрее (втч на андроиде), и потому что там отладка под IOS (нужна редко, но нужна). Портануть CN1 на MOE не нужно, тк будет медленно, хотя опять-таки отладка, но нафига она такая нужна. Само по себе ничего кроме CN1 не нужно (кроме разве еще LibGDX если писать только игрушки).

Приятно удивлен отладкой (JDWP) жабы на девайсе. Раньше не щупал, щас сподобился посмотреть.

Такие дела.
SannySanoff
тоталитаризм faggots Где-то несколько месяцев назад жена приносит гейфон (которым она пользуется по нужде!), а там внезапно обнимаются мужыки на лок-скрине, и на скрин-сейвере маленькая картинка такая же. Оказалось, с эпловской музыки как-то скачался какой-то альбом U2, на обложке которого обнимаются мужики. Называется "Песни невинности", мля.

В тот раз я подумал, что это дети нажали на какой-то баннер и получили бесплатный альбом, но когда я увидел, что этот же альбом скачался на телефон обучаемой мною особы, и потом сам снялся с паузы (запустился играть музыку) после того, как я подключил ее телефон к блютусу автомобиля и телефонный звонок завершился (и правоверный гомосячий ios гениально автоматически нажал сам play и стал играть, потому что он во время звонков ставит на паузу, а снимает с паузы просто всегда, без разницы, каким образом была нажата пауза)

Короче, а когда я еще и гугловый navigation настроил, чтобы он шел не по A2DP (медиа/аудио) блютусному тракту, который глючил, а по Handsfree (низкого качества канал для телефона), так U2 в машине стал играть не замолкая, потому что naviation при работе по этому каналу эмулирует отдельный телефонный звонок на время каждой фразы "поверните налево", и когда эмулируемый звонок заканчивается, то начинает играть плеер с альбомом, пропагандирующим обнимание мужиков.

Надо заметить, что в прошлый раз (на телефоне моей жены) я не смог найти способа удалить этот альбом с телефона. Потому что это CLOUD, играет с облака, и ОНО ПРОСТО У ВАС ЕСТЬ. Нету гуя на телефоне, чтобы удалить альбом. "Нам это не нужно (ТМ)".

В случае с телефоном жены я промучался 40 минут, не веря своим глазам на отсутствие кнопки delete итд. Я вообще программист, и считаю, что если что-то не так, то глюк у меня в голове (итд: в моей программе, в моем подходе, итп), потому что компилятор всегда прав, и процессор, который выполняет буквально программу, ошибаться не может. Равно как и немеряно популярный продукт, коим является гейфон, не может не иметь delete album, наверное я где-то пропустил.

Как-то через одно место я тогда решил это, но это было настолько нетривиально, что я уже забыл этот костыль.

Тут же ситуация была критичная: тетка из гугла постоянно перебиваемая рекламой обнимания мужиков — это было невыносимо.

Я решил повести себя нестандартно и поэтому срочно забил в гугл: "удалить нафиг U2 из гейфона".

Каково же было мое удивление когда на строчку "get rid of U2" гугл дополнил: "gayphone itunes". Оказывается, множество людей столкнулись с этой проблемой, и гей-корпорация даже согласилась с тем, что проблема распространена, и даже создала специальный landing page для этих целей: itunes.com/soi-remove . (SOI — это название альбома U2). Оказывается этот альбом бесплатно для вашего удовольствия попадает без вашего ведома к вам на телефон — барская щедрость.

В прошлый раз ( #2792167 ) я уже сообщал о неприятной картинке целующихся мужыков на глагне в твиторе во время логина. Мне тогда сообщили, что это целуются спортсмены от радости победы. Ну твитор, ну главная, ну спортсмены, ну прости их.

Мне сейчас тоже сообщат, что на картинке, если погуглить, — солист U2 обнимает за голую талию своего родного сына отроческого возраста (голова сына из кадра изъята, но я должен был понять что ему лет 16-18, и что это наверняка отец и сын), и что я опять вижу глюки в своей голове, а не эстетику.

Мне-то уже пофигу на сообщающих: осадочек-то остался. И паттерн уже вырисовывается, граждане.....

Ждем очередного "совпадения". Почему я называю это "совпадением"? Потому что охват аудитории, граждане.. Это сотни миллионов. Тут случайностей не бывает.
SannySanoff
Java programming А новая-то ИДЕЙка уже поддерживает лямбды в evaluate expression!
Ребята работают!

А хлопцы из RoboVM пиарят свой продукт (см видео там), позволяющий на жабке педалить под кокос прямо на ios девайс, так они взяли ИДЕЮ, и в ней тоже евалюейтят експрешны, а оно (идея) дергает девайс по JPDA , и с баржи ей даже правильно отвечают! (за дебаг RoboVM хочет 20 баксов в месяц, наживаются на бедных программистах, изверги)
SannySanoff
Google А вот Chromecast.

Придумал кто-то в гугле девайс. Девайс простой, одним концом тыкается в HDMI (в телевизор), а другого конца у него нет (вру, конечно, в нем есть USB дырка для питания 5 вольт через проводок в соседний USB разъем в телевизоре, получается Вечный Кайф).

Внутри девайса аппаратные аудио-видео кодеки и Wi-Fi с веб-сервером, и небольшое место для микро-программ, которые тоже вертятся на местном ЦПУ и умеют показывать заголовки и логотипы поверх видео не телевизоре, куда он воткнут.

Сверхлегкая установка: если девайс включен в 5 вольт и не видит знакомой Wifi сети, он запускает wifi-хотспот, который виден с венды или с андроеда (линух не проверял), там ты запускаешь софтинку, оно соединяется, уговаривает его перейти на домашний wifi, и дальше все уже в родной сети, все видят друг друга.

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

А дальше гугловое счастье: открытый SDK, и извращайтесь в указанных рамках как хотите.

А рамки хитрые: SDK работает только под андроедом, под IOS и под Google Chrome (который работает под остальными платформами).

Злой, коварный гугл. Гугл контролирует (смотрим конфигурацию с десктопом)
1) апдейты в девайс — и стало быть протокол, которым девайс общается с инициатором
2) google chrome chromecast addon — реализацию протокола на стороне инициатора и javascript API
3) галерею приложений, которые могут вертеться на девайсе (хостит всё у себя)

Но тем не менее, пространство для маневра есть, и остаток этого поста — про манёвр.

Первоначально SDK к этому всем не было, и можно было втыкать на телеке только в Ютуб и еще в несколько сайтов. Потом chromecast addon в гугле допилили, и можно кастить таб в бровзере. Почему таб? Потому что внутри хрома можно получить картинку из таба и звук из таба, зажать это в видеопоток и сказать железке, торчащей в телевизоре, играть его over wifi. А если в табе открыто чисто mp4 видео, то можно его даже отдавать железке как есть, оригинальный поток.

Но народ хотел играть любое видео. Поэтому какие-то умники откомпилировали под NaCl весь ffmpeg, и пережимают видео с диска на лету во время отдачи. NaCl — это такая платформа тоже под хром, с байткодом, который сначала эффективно транслируется в машинный код, но без фишек типа garbage collection, потому что в него компилят с языка C/C++ всякие Doom-ы и ffmpeg-и.

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

(На фоне этого Apple TV конечно размахивает лозунгом "а у нас всё — просто работает" и внизу лозунга приписано мелкими буквами "под MacOS и iOS конечно".)

Это всё очень забавно, и всё это заради только того, шобы не сувать HDMI кабель из ноута или телефона в dumb телек, и посмотреть на телеке south park.