Как стать автором
Обновить
17
0

Пользователь

Отправить сообщение
Живу в Сингапуре, домашний интернет (Singtel) говно и дорого (около 60S$ в месяц, честно забыл цену ибо первые пол года бесплатно)
Умею писать алгоритмы на листе так как учился в такие времена и таких местах что даже олимпиада по программированию проходила на листочках с карандашем )) Первые свои программы на С++ писал в тетрадке
<sarcasm_mode_on>
Ну как где, забрал наверное у репрессированных татар или украинцев или тп. )))
<sarcasm_mode_off>
Самые лучшие технические статьи набирают так мало плюсиков ((
Вы правы, затупил.
Аналогичную оптимизацию строковых констант выполняет и gcc при компиляции кода на Си. Например,
#include <stdio.h>
void main(){
char *a = «123456789»;
char *b = «123456789»;
printf("%p %p\n", a, b);
}

Здесь к char * надо добавить const что бы дальнейшие рассуждения были верными
давно себе сделал подобный велосипед ) потому как нужен был мне
>>> Чтобы iPhone перейдя по ссылке начал устанавливать приложение, эта ссылка должна быть вида itms-services://?action=download-manifest&url=http://server/projectname.plist

У них там свой testflight — with blackjack and hookers. Чтобы враги не украли( дизассемблировали ) драгоценные приложения. git, небось, тоже сами хостят.
Корпорасты иногда выдвигают подобные требования…
>>> А как с номерами версий у вас устроено дело?
xCode plug-in умеет сам версию в нужный Info.plist «вшивать».

>>> Допустим, есть текущая версия 7.0, над которой все работают, а надо выпустить срочно 6.4 SR, которая решает какие-то проблемы.
То есть, вопрос «как вы пользуетесь git tag/branch»?
Каждый выбирает для себя. А иногда за вас выбирает начальство и заставляет сидеть на уродливом SVN…
>>> Там все только начинается, еще даже не сделан окончательный выбор инструментов.

Итого, я пришел к следующему набору job-ов и инструментов.
Надеюсь, будет вам полезно.

1. OTA (Over the Air) distribution
Jenklins xCode plug-in + script для заливки в testflight. «Родной» testflight pug-in пока нормально настроить не получилось
Иногда собираю под симулятор когда QA «дрались» за device-ы (один смотрит на device, а другой — увы через iphonesim).

2. Static analyzer.
Clang «scan-build» с принудительным выставлением компилятора в тот, что поставляется с xCode

3. Unit test (Sen testing kit)
Обычный xcodebuild (не привязывая к application/library в качестве dependence).
Для них можно считать coverage с помощью gcovr + cobertura plug-in

4. gh-unit тесты
Гоняются через «iphonesim» и скриптовую магию (см. презентации по ссылкам выше). Coverage для них пока считать не умею

5. UI тесты
calabash + Jenkins TAP plug-in

6. Документация
Пока только appledoc. Latex еще не осилил (да и вряд ли понадобится).

Небольшой бонус для любителей framework-ов.

P.S. CocoaPods я не забыл, а намеренно не упомянул.
>>> Я так понимаю Hudson у вас установлен на Mac OS?
Для запуска xcodebuild и пр. обязательно нужен slave на Mac OS.
При этом если собираетесь запускать симулятор, то Hudson нужно ставить не демоном (читай «из *.dmg»), а в userspace (читай «из *.war плюс скриптовая магия»).
В моём случае (не путать с автором статьи) это один mac mini, поскольку ведроидом пока не занимаюсь.

>>> Мне бы было очень интересно прочитать статью о том
А я-то думал, здесь все ну оооочень умные — вот и не пишу. Надо будет подумать над этим…

А пока вот вам немного устаревший материал.
Раз, Два

Обновлять пока смысла не вижу. И не я один такой

Для тестов использую calabash
Почитать про Build&Analyze можно в документации clang
Я что-то пропустил или Россия отобрала Крым обратно?
** поправьте, пожалуйста, флаг напротив iOSonRailsConf **
Как-то очень уж вычурно.
Почему бы не засунуть освобождение ресурсов в лямбду или любую другую сущность с operator() без параметров? Или иначе статьи для хабра состряпать не получилась бы?

Вот вариант для Objective-C.
Header
Implementation

Где-то в закромах валялся такой же, но на шаблонах и для любого объекта-функции. Работал задолго до появления C++11. Если будет интерес — откопаю да выложу «на посмотреть».
А под iOS кто-то осилил собрать?
Что-то у меня не получилось с первого раза…

P.S. RTFM не помог
А с Obj-C блоками эта штука умеет работать?
То есть, создать блок в Native code и вызвать из C#.

P.S. В примерах из документации monotouch описан обратный процесс.
Или же тихо отписать observer, аналогичное решение в: iAsync
>>> Плюс, всегда можно написать свой класс WeakRef, благо Objective-C в данный момент позволяет.
Вариант «в лоб» не проканал — тест «Returns nil if not stored otherwise» валится.
github.com/dodikk/MotionBlocks/blob/master/MotionBlocksTests-Ruby/spec/WeakRef_spec.rb

Следовательно, ObjC не совсем позволяет. Очень надеюсь что где-то ошибся…
* Может, вместо строк лучше использовать более честный объект? С литеральными массиами поведение такое же.
* Шаманство с garbage collector тоже не помогло

>>> Я помню пару лет назад ее мусолили в MacRuby, и тогда Лаурент писал что-то вроде того, что «или GC сам все сделает как надо, или это архитектурная проблема вашего приложения».
Про RubyMotion он примерно то же самое говорит. Но полноценной замены делегатам пока не предлагает.
>>> Использую RubyMotion + RubyMine уже полтора месяца. Балдею от легкости разработки.
И как, не «течет»/не тормозит?
>>> Насколько я помню, указатели в RM как раз таки со слабой связанностью, и если закинуть ссылку на объект в указатель – то это будет некий «unsafe_unretained».
Proof никакой не подкинешь? У самого нагуглить не особо получается.

>>> «или GC сам все сделает как надо, или это архитектурная проблема вашего приложения»
И на что мне переползать с уютных делегатов? Делать все через NSNotificationCenter?

>>> и если закинуть ссылку на объект в указатель – то это будет некий «unsafe_unretained». Плюс, всегда можно написать свой класс WeakRef, благо Objective-C в данный момент позволяет.

Ну, это понятно
Тесты пока не успел на сие написать. О результатах отпишусь, если интересно. Ну, и ты тоже держи в курсе, ежели желание «покопать» перерастет в действие ))
Не понял, что есть «FFI». Молви человеческим языком, будь добр.

>>> Есть приватный метод -invoke
Насколько я понял, это на стороне ObjC, что, по сути, эквивалентно моему костылю.

Так как же правильно готовить memory management на стороне RubyMotion? Особенно без поддержки __weak?
Методом «don't worry — пусть себе течет»?

Информация

В рейтинге
Не участвует
Откуда
Днепр, Днепропетровская обл., Украина
Дата рождения
Зарегистрирован
Активность