← All posts tagged iOS

SannySanoff

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

twitter.com

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

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

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

SannySanoff

React Native настолько суров, что (ios) добавление вызова его внутренней лог-функции в его внутренний же метод (рядом вызывался RCTLogError, а я добавил RCTLogInfo), при превышении какого-то количества строк лога во время стартапа сильно влияет в плохую сторону на то, что программа вообще запустится.

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

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

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

НЮНЮ. Смотрим дальше. Видит бог, я с такой открытой душою подошел к сему хипстерскому фреймворку, что заранее распиарил его наверх, теперь не хочу влететь.

SannySanoff

Продолжение драмы про то как 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

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

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

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

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

Интересны людские судьбы в жерновах капитализма. Ну и новые технологии, конечно.

SannySanoff

На волне кросс-платформенных тулкитов, из которых в настоящий момент педалим с товарищами на 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

JetBrains AppCode:

Я было напхал в 1 файл несколько Obj-C классов, потом вздумалось мне таки вынести один некий класс в свой h файл, попросил AppStore вынести декларации в отдельный файл (рефактор), так он и mm файл мне тоже сделал по своей инициативе, и где сцылки на класс есть там все новые инклуды прописал по всему проекту, карочи это вирусная реклама, я прямо плакал весь.

SannySanoff

перевёл единственные 10к своего кода со свифта на обжц. Потому что на текущей тачке не было достаточной версии Хакинтоша, чтобы его конпелять. 20 минут потуг, а затем стало гораздо легче. В принципе, добавились h файлы, кода стало процентов на 15 больше, ушел гемор с неконвертацией целых типов между собой и в плавающие. Такое.. Туплы перевёл в массивы фикс длины, теперь сижу думаю, в какой же момент меня обманули.

SannySanoff

Понадобилось постпроцессить некие типовые сгенеренные по-местному PDFы на IOS-е: слегка распарсить, и добавить несколько аннотаций (PDF аннотаций), потому что нативный местный Quartz не умеет аннотаций.

Чем это сделать? Решил взять Хаскель, наклепать разборщик и сборщик PDF-а, без особой детализации.

Скачал по этому случаю EclipseFP (хаскель под эклипс). И что бы вы думали? Оно таки работает, и даже достаточно приятно, и даже фичастее чем Leksah (да упокоится оно с миром). Но по исходникам местных установленных пакетов все равно не лазит, хотя типы выводит и подсказывает. И даже с локальными перемененными ок. Я рад, я весьма рад! Осталось только будет бинарнег собрать под IOS, допишу, буду кросс-компилировать.

Три любопытные мне кровоточащие технологии в одной маленькой задаче (хаскель, eclipsefp, cross-compilation). Ужос, аж трепещу.

SannySanoff

Знакомьтесь, Swift

Короче, набросал в дизайнере некий UIViewController, там в нем лежит пара кнопок, а в методе viewWillLayoutSubviews я вызываю super, а затем пишу view1.frame = expr1; view2.frame = expr2; для того чтобы эти кнопки расставить по тем правилам которые не вписываются в стандартную концепцию.

И значит оно на втором присваивании мне вылетает по ошибке что Optional value is None (между прочим, они в Swift-е заменили все указатели на optional и теперь вместо NullPointer везде летит вот эта вот ошибка, типа прогресс! А в отладчике все поля имеют тип ImplicitlyUnwrappedOptional )

Казалось бы, присвоение новых координат для кнопки, чему там лететь?. Кнопки одинаковые, не Null, имеют some значение. Где подвох?

Оказалось, что одну кнопку я кинул и выставил в дизайнере чтобы она держалась правого края родителя, а во второй не выставил и осталась по умолчанию держаться левого края родителя. И одно это влияет на ее внутреннее состояние какое-то (это не андроед, не узнать!) так что оно вылетает, что-то там не инициализируется. Такие дела. Такой стыд.

SannySanoff

Знакомьтесь, язык Swift :

/* ux1:Double
scale:Double */

var qq: Double = ux1 * scale + backgroundImageView.frame.origin.x; // float
^^^^^^ error: cannot convert Double to UInt8

UInt8! Очень говорящая ошибка.
А так работает:

var qq: Double = ux1 * scale + Double(backgroundImageView.frame.origin.x);

У него с иерархией numeric types (перемешка с NSNumber) — полный аут.
Ну а вообще ничего, если можно программирование под мак назвать "ничего".

SannySanoff

TLDR: для яблофагов и виндофагов: клиент к жуйку/пойнту/итд набрал первую космическую скорость.

Детально:

Оседлал CodenameOne (это такой кросс-платформенный тулкит на жабе).
Уже второй день усиленно рефакторю сорцы Juick Advanced, выделяю андроедо-зависимую часть, обкладываю остальное интерфейсами и памперсами.
Портирую под CodenameOne всякие либзы, шоб они там собирались, типа org.json, jsoup и вот стандартный java.regex.Pattern (это был ад).
Работа спорится, даже в укро-политику усиленно втыкать перестал.
Гуй (UI) андроедский, конечно, побогаче будет.
А CodenameOne победнее. RichText там очень грустно.
Но вроде для бедного человека на iOS/Win8/J2ME сойдет.
Зато всякие там парсеры/протоколы/структура_данных для жуечки, пойнта, bnw и фейсбука — практически без изменений юзаются.
Короче, первая космическая скорость заключается в том, что я это всё свалил в кучу и оно заработало: листается/скроллится, комментики качаются, авторизация авторизируется.
Настроек будет не слишком много, потому что цели соблюдать концепцию "Advanced" (базовый клиент + все фичи включаются явно) мне здесь без надобности.
Уведомления (push messages) буду писать самому руками с нуля клиентскую часть под все платформы, потому что афтары хотят 75 баксов в месяц чтобы я оплатил наше совместное удовольствие, если сам не хочу руками писать.
Потому что, я думаю, доходы от продаж на ios/win8 не окупят 75 баксов в месяц perpetually, но подкрепят только мой краткий первоначальный enjoyment. Если доживем. Много тут юзеров c гейфонами сидят? Отзовитесь.

Technology preview для андроеда (выкладывание на яббл долго и муторно) :

play.google.com (если нет то появится)

Скриншоты: imgur.com

Такое же точно как в андроеде, будет и на остальных платформах (Win8, J2ME (если влезет)).
Поставил минимальную цену, чтобы сейчас оценить не реальную необходимость в программе (программы нет), но количество технически любопытных и живых юзеров. Предупреждаю!! Там только чтение восьми лент и комментов, без картинок и без ничего вообще. Даже кнопка back там не навигирует из комментов назад в ленту (нужно свайп слева направо делать)

Всем успехов в труде!

P.S. juick advanced в режиме long term support + допил пробелов.

SannySanoff

У нас на раёне внезапно появилось много нубзов в Ингрессе. Пишут в чатег с ошибками, шуток не понимают, шугаются. Это оттого что вышел Ингресс под IOS.

Угничу для привлечения нового мяса надо самому написать клиент к жуйку под IOS, и публика появится. Тока клёви клиент, а не такой как в андроеде. И с уведомлениями, да. Дизайнера надо завлечь, в дизайн радуги подбавить какой-нибудь, аутентичные кнопочки — и полсотни душ получим горячими.