[1] Дневник разработки AppleInsider.ru для iOS 7

129

Дневник разработки AppleInsider.ru

Приложение AppleInsider.ru давно уже заслужило славу одного из самых лучших информационных приложений, доступных в российском сегменте App Store. Этому стандарту стараются соответствовать разработчики аналогичных программ, и за это мы очень благодарны нашим друзьям из студии разработки мобильных приложений Unreal Mojo. Сегодня мы стоим у порога серьезных изменений: чтобы остаться законодателями тенденций, нам необходимо представить миру радикально обновленную версию приложения AppleInsider.ru, адаптированную под iOS 7. На этот раз мы решили впустить своих читателей за кулисы процесса разработки.

Начиная с сегодняшнего дня, мы будем публиковать дневник директора Unreal Mojo Славы Карпенко, в котором он будет рассказывать о стадиях создания приложения. Так как помимо нас у Славы имеется большое количество других клиентов, и каждый день его расписан по минутам, вряд ли новые записи дневника будут появляться ежедневно. Но надеемся, что это будет происходить максимально регулярно. Итак, день первый.

Поехали!

Начнём, пожалуй.

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

Надо сказать, что у меня помимо непосредственно программирования есть множество других задач, ведь я — директор Unreal Mojo, и потому не могу посвятить всё своё время непосредственно разработке, так что на программирование будет отведено по несколько часов (и то не каждый день, увы). То, как происходит эта разработка, я буду рассказывать тут. Может быть, кому-то будет интересно.

Итак, приступим. Новая версия приложения будет работать только на устройствах с iOS 7.0 и выше, потому было принято решение выкинуть большинство старого кода в помойку и заняться разработкой практически «с нуля», используя самые последние, рекомендованные Apple технологии (заодно и научусь тому, с чем ещё толком не работал).

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

В целях реализации первой задачи я купил и прочитал книжку «Core Data (2nd edition): Data Storage and Management for iOS, OS X, and iCloud» от Pragmatic Programmer. В предыдущей версии AI.ru app использовался «чистый» sqlite3, и мне стало интересно, можно ли без значительной потери производительности перейти на Core Data, тем более что было сильное искушение построить списки новостей на базе NSFetchedResultsController.

Прочитав книжку, я несколько недель экспериментировал вечерами с кодом в «песочнице», создав простенькое приложение, которое бы занималось манипуляциями данных, чтобы понять, насколько быстро и приемлемо всё работает. Похоже, пользоваться Core Data вполне нормально, сильных «тормозов» не заметно. Увижу, так ли это на самом деле уже в процессе непосредственной разработки настоящего приложения.

В качестве сетевой прослойки я решил отказаться от ASIHTTPRequest, на котором была построена предыдущая версия (тем более что от поддержки этой библиотеки её авторы отказались уже пару лет назад), и построить всё на NSURLSession, благо он появился как раз в iOS 7.

В итоге сегодня вечером, после дел домашних и перед ужином, решил начать — создал новый проект в Xcode, набросал черновую модель данных для Core Data и написал первые строчки кода, которые загружают базу данных, в которой потом будут храниться статьи, полученные с сервера.

AppleInsider.ru

Потрачено сегодня времени: 55 минут.

Следующая запись >

129 комментариев

  1. 0

    Поскорее бы уже сделали новую версию) (отправлено из приложения AppleInsider.ru)

  2. 0

    Нихрена не понимаю но жутко интересно))) (отправлено из приложения AppleInsider.ru)

  3. 0

    Новая версия будет работать на ios7 это отлично.Это сразу откинет тех,кто еще сидит на ios6 и надеюсь сразу исчезнет из комментов нытье про то,что ios7 убогая и верните назад ios6 а также глупое хвастовство про то что есть еще крутые чуваки,которые не обервились до семерки, а остальные лохи обновились. (отправлено из приложения AppleInsider.ru)

  4. 0

    …. остаться законодателями тенденций…
    Все хотят быть первыми, лучшыми. Но законодателями есть апл. (отправлено из приложения AppleInsider.ru)

  5. 0
    Прихожанин

    Теперь остаётся только замутить сбор средств под лозунгом: «Дадите денег — будет приложение под iOS»
    Чем вы хуже чудо-песателей из одного любимого для местных песателей аглицкого ресурса?

  6. 0

    Получается так, что на устройствах с iOs6 и ниже , приложение работать не будет? Если обновить… (отправлено из приложения AppleInsider.ru)

  7. 0

    Я думал приложение уже на модерации. А его только начали писать на коленке.. Мда..
    (отправлено из приложения AppleInsider.ru)

  8. 0

    Хорошее приложение. Но тупит при запуске (отправлено из приложения AppleInsider.ru)

  9. 0

    Спасибо!!! Всегда мечтал о таких статьях))) (отправлено из приложения AppleInsider.ru)

  10. 0

    Ооо….
    Ожидал длиннопост, а статья завершилась так неожиданно.
    Но всё равно спасибо! Читать интересно! (отправлено из приложения AppleInsider.ru)

  11. 0

    Пожалуйста, сделайте так, чтобы когда у вас перегружен сервер, выводилось сообщение «перегружен сервер» вместо «отсутствует соединение с интернет». Замучался я перепроверять после таких сообщений, что. У меня с инетом. А такое часто вечером бывает. (отправлено из приложения AppleInsider.ru)

  12. 0

    >>мне стало интересно, можно ли без значительной потери производительности перейти на Core Data
    Кхм, мне такие вопросы джуниоры задают, но я так понимаю пишет опытный разработчик. Очень горестно это слышать.

    >>В качестве сетевой прослойки я решил отказаться от ASIHTTPRequest
    Правильно ли я понимаю, что в прошлой версии отказались от Core Data в пользу производительности перейдя на sqlite, и при этом использовали ASIHTTPRequest? очень забавно.

    И еще позабавили названия файлов/классов: модель данных называется DataMode, контроллеры — «Первый контроллер», «Второй контроллер». Осталось в комментарии написать //это коментарий

    • 0
      Евгений

      erudenko, Ах да, лучше написать от балды название контролера, а потом думать что это за контролер и перелопачивать код (отправлено из приложения AppleInsider.ru)

    • 0
      SergeyShibaev

      erudenko, Слава написал что создал приложение по шаблону представленному Xcode с префиксом AI судя по скрину, добавил дата модель по стандарту она так и называется. Покури системку и поймешь (отправлено из приложения AppleInsider.ru)

      • 0

        SergeyShibaev, Что значит создал по стандарту ? Core data изучил вдоль и поперек уже за 6 лет работы с ней. Никаких стандартов именования схемы данных нет. Только здравый смысл. (отправлено из приложения AppleInsider.ru)

        • 0
          Слава Карпенко

          erudenko, То есть DataModel в кач-ве названия единственной модели данных в приложении противоречит здравому смыслу? Mmmkay. (отправлено из приложения AppleInsider.ru)

          • 0

            Слава, С такой логикой и FirstViewController не противоречит. Он же один первый. Сегодня у вас одна модель, а завтра появится вторая. Назовёте её DataModel2? (отправлено из приложения AppleInsider.ru)

    • 0
      SergeyShibaev

      erudenko, + SQLlite и Прослойка между приложением и сервером была тоже выбрана ради удобства (отправлено из приложения AppleInsider.ru)

      • 0

        SergeyShibaev, То есть вы утверждаете, что Работать с SQLite удобней напрямую нежели с CoreData? В статье явно автор сомневается в производительности CoreData как мне показалось. Даже провел техисследование на эту тему. (отправлено из приложения AppleInsider.ru)

        • 0
          Слава Карпенко

          erudenko, А что, это как раз тот вопрос, что не может быть подвергнут сомнению? 🙂 Core Data явно быстрее sqlite3, и точка? (отправлено из приложения AppleInsider.ru)

          • 0

            Слава, Если бы шла речь о сравнении, то было бы сравнение. А тут явно сомнение именно по отношению к CoreData. Да и как вообще в таком приложении модель может стать узким местом ? (отправлено из приложения AppleInsider.ru)

            • 0
              Слава Карпенко

              erudenko, С 18 тысячами записей? Да запросто. Вы со своим опытом использования Core Data, как никто другой, должны это понимать. (отправлено из приложения AppleInsider.ru)

              • 0

                Слава, Да, я знаю, что от количества записей ничего не зависит абсолютно. Причем в любом случае SQLite или CoreData. По опыту даже пару десятков миллионов записей не вносят коррективу при правильном использовании инструментов. (отправлено из приложения AppleInsider.ru)

                • 0
                  Слава Карпенко

                  erudenko, Меня смущает лишь один вопрос — отчего же Вы строем не ходите? 🙂 умоляю, не насилуйте свою психику и не читайте следующие посты из той же серии. Я хочу сохранить вашу веру в человечество! (отправлено из приложения AppleInsider.ru)

                  • 0

                    Слава, Ахаха. Строем я три года отходил — хватит 🙂 а чего это вы меня прогоняете ? Я помоему единственный пока, кто с критикой отписался. (отправлено из приложения AppleInsider.ru)

                    • 0
                      Слава Карпенко

                      erudenko, Да и критикой это пока не назовешь. Придирки к именам файлов из темплейта проекта Xcode и размышления о том, что Core Data — единственно расово верное решение таковой не считаю. :р (отправлено из приложения AppleInsider.ru)

                      • 0

                        Слава, С такой логикой критиковать то и нечего. Но если уж решили показательно разработку делать — то мне кажется как раз нужно всё расово правильно делать 🙂 (отправлено из приложения AppleInsider.ru)

                        • 0
                          Слава Карпенко

                          erudenko, Ну я пишу заметки для себя, это ребята решили делать репост. А относительно решений — доверяй, но проверяй. Такими темпами можем придти к тому, что писать надо только с ARC 🙂 (отправлено из приложения AppleInsider.ru)

                          • 0

                            Слава, Я понял — вы старовер-консерватор. ARC — большое добро практически в любом случае. Интуитивно верю в то, что есть варианты, когда ручное управление предпочтительнее. Но пока я не не встретил такого проекта, если под кинете пример — буду очень благодарен (серьезно, не сарказм). (отправлено из приложения AppleInsider.ru)

                            • 0
                              Слава Карпенко

                              erudenko, Нет, я считаю, что ARC весьма удобен (да и этот проект делаю с ним), но излишне расслабляет, что не всегда хорошо. Кроме того, полюбопытствуйте на досуге в репе llvm — сколько до сих пор вылавливается и исправляется багов, связанных с ARC — а прошло уже несколько лет с момента внедрения технологии. (отправлено из приложения AppleInsider.ru)

                              • 0

                                Слава, да по сравнению с GCC, LLVM — это прям подарок с неба. А существует GCC уже огогошеньки солько. Не так много и проблем есть, лично натыкался на 2-е проблемы в ARC c LLVM и все решались достаточно протыми костылями. А вот с GCC всё на порядок сложнее, он себя порой ведет крайне непредсказуемо и нелогично на разных платформах.
                                А про вменяемость текста ошибок в LLVM по сравнению с GCC я вообще молчу.

                    • 0

                      erudenko, Моряк ? (отправлено из приложения AppleInsider.ru)

                • 0

                  erudenko, Не зависит сто процентов, имею бд на 10 лямов, никаких проблем, тормоза только от неправильных запросов (отправлено из приложения AppleInsider.ru)

  13. 0

    Я конечно в этом не чего не смыслю. И мне как обычному пользователю интересно видеть результат. А каждый день читать как ДИРЕКТОР уделяет по двадцать минут разработке…дальше грубая не цензурная брань))) (отправлено из приложения AppleInsider.ru)

  14. 0

    Когда выйдет приложение с дизайном новой оси?!? (отправлено из приложения AppleInsider.ru)

  15. 0

    Вы прикалываетесь?!? А как же скрины нового приложения, которые вы выкладывали месяца 2 назад??? Где все, что уже было наработано? Зачем все заново начинать??? (отправлено из приложения AppleInsider.ru)

  16. 0
    TsaryovArtem

    Я думал уже вот вот обновится приложение) вы то по идеи одни из самых первых должны были это сделать (отправлено из приложения AppleInsider.ru)

  17. 0

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

    • 0
      Королев Миша

      Filonov.S80, Смешно.

    • 0
      Ренат Гришин

      Filonov.S80, Ты чо такой дерзкий, епт!!?? (отправлено из приложения AppleInsider.ru)

      • 0

        Ренат, В ваших коментах с самого начала несло не уважением и наплевательством!Уважать нужно своих читателей!Вы себя позиционируете как один из ведущих ресурсов. Так будьте же первыми во всем. Читатели же ждут от вас этого. А выиговорите что не должны (отправлено из приложения AppleInsider.ru)

        • 0

          Filonov.S80, И да…смех продлевает жизнь…штаны смени… (отправлено из приложения AppleInsider.ru)

        • 0
          Ренат Гришин

          Filonov.S80, Когда человек начинает со слов «Тебя епт!!!» в жизни либо разварачиваются и уходят, либо бьют в тарбан, зависит от воспитания. То, что ты умеешь пользоваться браузером и тебя такого красивого занесло к нам в гости не делает тебя уважаемым, понимаешь? 🙂 Уважание надо заслужить. И это должны были объяснить родители в детстве. Если ты этого не понимаешь — скажу прямо и на твоем языке: епт быдло тут не уважают, нах. Достаточно понятно? (отправлено из приложения AppleInsider.ru)

  18. 0
    evgeniyqwerty

    Такой позор, iOS 7 уже скоро пол года будет, а appleinsider даже не думает шевелиться!!
    Помнится мне iGuides обновили своё приложение ещё летом))))) (отправлено из приложения AppleInsider.ru)

  19. 0

    Самое интересное впереди. Споры по поводу цвета и формы иконки. Кто кого и сколько послал на йух и ТД. Очень интересная тема. (отправлено из приложения AppleInsider.ru)

  20. 0

    Честно говоря неприятно удивлен. В том смысле что Ренат уже два месяца говорит что ждите скоро будет. И ждешь и проверяешь обновления, а нет и нет. А тут выясняется что только созрели для сборки. И по сути непонятно когда выйдет. Так что согласен с некоторыми комментариями что фигли было так рано обещать. (отправлено из приложения AppleInsider.ru)

  21. 0
    videooperator

    Ренат, спасибо за замечательный ресурс! (отправлено из приложения AppleInsider.ru)

  22. 0
    newcastleunited

    Прочитал я то что выше писали, и сижу в шоке от некоторых пользователей,народ успокойьесь,и поддержите Appleinsider,наоборот это мы им должны сказать спасибо,за отличный ресурс,сделали бы на скорую руку приложение,все бы ныли что приложение косячное (отправлено из приложения AppleInsider.ru)

  23. 0

    Вы ещё не начинали!!! (отправлено из приложения AppleInsider.ru)

  24. 0

    Хорошая идея с дневником разработчика! Жду следующих выпусков.

  25. 0

    Как и iOS 7 ,приложение Appleinsider.ru будет переписан с нуля:)
    Главное,чтобы работало не хуже. (отправлено из приложения AppleInsider.ru)

  26. 0
    apple_master

    Когда выйдет гта сан Андреас ? (отправлено из приложения AppleInsider.ru)

  27. 0
    abdul95letif

    Где приложения для Винфона и Sailfish? Если владельцев ведроида и яблоида больше это не значит остальные должны идти мимо. (отправлено из приложения AppleInsider.ru)

  28. 0

    Осталось переместить кнопочку Избранное вверх, справа от кнопки Назад. Вот тогда будет отличное приложение. (отправлено из приложения AppleInsider.ru)

Авторизуйтесь Чтобы оставить комментарий