Метка «магия» - 2

Лечу Crash'и NSLog'ами. Недорого. Многолетний опыт. 100% гарантия.

Примерно таким заголовком можно было бы описать то, что три с половиной месяца назад происходило у меня на одном из проектов. Вернее, это даже был не мой проект, но с проблемой crash'а пришлось разбираться именно мне.

Все началось с того, что на одном из относительно больших проектов начало стабильно вываливаться исключение при авторизации пользователя. «Ну и что тут такого? У всех бывает. Проверку на nil забыли поставить или где-то накосячили. „Тоже, мне, большое событие — crash на проекте“, — подумает большая часть программистов. В принципе — абсолютно согласен. Crash — не такое уж и редкое явление в программировании под iPhone, и с ним сталкиваешься по десять раз на день. Но этот был особенным. От него уже начало попахивать „магией“, когда мне сказали про его некоторые параметры и особенности:

  • Воспроизводимость на симуляторе: 100%
  • Воспроизводимость на устройстве: 0%
  • Путь к крэшу (после локализации крэша): ~ 40 секунд
  • Настройки оптимизации при компиляции (-O1,-O2...) не влияют на воспроизводимость
  • XIB'ы в проекте не используются

Да выглядел он довольно безобидно:

// Code
UITextView * textView = [ [UITextView alloc] initWithFrame:CGRectMake(0, 150, _width, _height)];

// Exception
*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', 
    reason: 'CALayer bounds contains NaN: [0 0; nan 200]'

»Ну тут же и ежу понятно, что width — после вычисления — NaN!", — подумал я. Бегло поглядев где и как вычисляется ширина вьюхи, и не найдя ничего особого опасного, я, для утверждения своей догадки, поставил перед созданием вьюхи NSLog. А вдобавок, и точку останова на строке с созданием элемента.

// Source:
NSLog(@"width = %f", _width);

//Output:
width = 200

«Гм», — подумал про себя я, и продолжил выполнение программы после точки останова. И крэша не произошло…

Читать полностью »

На eBay запретили продавать «магические» товары

Если вы — черный или белый маг, ведьма или суккуб, и собираетесь продавать свои магические товары/услуги на eBay, придется вас разочаровать. На днях администрация сервиса запретила это делать. В список попали все типы «магических» товаров, включая проклятия, препараты, всякие там «заряженные» фото и прочая, и прочая. Так что Гарри Поттеру в нашем мире пришлось бы туго. Во всяком случае, зарабатывать при помощи eBay он бы не смог.

Читать полностью »

Необычный и амбициозный фреймворк Meteor, пребывая в статусе preview (текущая версия — 0.3.8) уже получил 4500 подписчиков на Гитхабе и восторженные отзывы сооснователя Facebook Дастина Московица. Теперь на него обратили внимание акулы венчурного капитализма. Основным инвестором стал фонд Andreessen Horowitz. По словам Джефа Шмидта — CEO Meteor Development Group, одиннадцать с лишним миллионов гарантируют активную разработку проекта на протяжении ближайших нескольких лет.

Читать полностью »

Можно, конечно, и подождать, пока сей замечательный девайс появится в магазинах стран СНГ. Но сколько ждать никто не знает. Одни уверены, что Nexus 7 появится в Украине в сентябре, другие говорят, что устройств не хватит и их все распродадут в США, Канаде и прочих странах-счастливчиках. Я это сделал. Я купил Nexus 7 в Google Play Store. Потратил на решение всех проблем, с которыми я столкнулся, полтора дня. Далее я опишу, как мне это удалось. Сразу стоит заметить, что скриншотов нет. Делать их при покупке я не додумался, а повторить процесс не удастся. Но я постараюсь описать все достаточно доходчиво.
Читать полностью »

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

Обычный сценарий: вы читаете книги сильных мира сего о том, как правильно развивать стартап. Изучаете умные статьи о различных методиках и правилах его продвижения. Обучаетесь у “просвещенных” как правильно делать то и вот это. Вооружаетесь умными системами управления проектом и мощными правилами тайм-менеджмента. Посещаете мега-семинары, стартап-тусовки и прочие места средоточия бизнес-мудрости. Ну и как следствие — наконец, заправляете свой проект инвестициями, находите ментора и активно начинаете развиваться. Короче, все “по уму” и вроде бы правильно… Но оказывается, что не так уж и правильно.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js