• Как мы обновили и переписали iOS-приложение банка «Открытие»: кейс

    • Tutorial
    В жизненном цикле мобильного продукта рано или поздно наступает момент, когда нужно радикально обновиться. Потому что за время, прошедшее с запуска, выросли требования бизнеса и ожидания клиентов, изменились возможности платформы и средства разработки — и обновления становится невозможно реализовать путем “косметического ремонта”. В мире мобильных приложений жизненный цикл ПО составляет 2-3 года против 10-15 лет в обычном Enterprise-сегменте. Для нас с командой “Открытие Digital” момент радикального обновления мобильного банка настал в конце прошлого года.


    Читать дальше →
  • Запуск cron внутри Docker-контейнера


      Так уж вышло, что запуск cron в Docker-контейнере — дело весьма специфическое, если не сказать сложное. В сети полно решений и идей на эту тему. Вот один из самых популярных (и простых) способов запуска:
      cron -f
      

      Но такое решение (и большинство других тоже) обладает рядом недостатков, которые сходу обойти достаточно сложно:
      • неудобство просмотра логов (команда docker logs не работает)
      • cron использует свой собственный Environment (переменные окружения, переданные при запуске контейнера, не видимы для cron заданий)
      • невозможно нормально (gracefully) остановить контейнер командой docker stop (в конце концов в контейнер прилетает SIGKILL)
      • контейнер останавливается с ненулевым кодом ошибки
      Читать дальше →
    • iMessage в iOS 10: новые возможности для разработчиков



        На WWDC 2016 Apple представила обновление iMessagе. По презентации Keynote могло показаться, что не произошло ничего интересного: добавлены стикеры, большие эмоджи и анимированные фейерверки. Но на самом деле Apple представила целую новую платформу и открыла Messages для разработчиков. Подробно об этом было рассказано на лекциях iMessage Apps and Stickers, Part 1 и Part2. Для тех же, кто пока не успел их посмотреть, но хоть немного заинтересован, ниже будут рассмотрены новые возможности для разработчиков.

        Читать дальше →
        • +14
        • 12,1k
        • 2
      • Автоматизация развертывания Docker-контейнеров на произвольной инфраструктуре



          Контейнеризация приложений сегодня является не просто модным трендом. Объективно такой подход позволяет во многом оптимизировать процесс серверной разработки путем унификации поддерживаемых инфраструктур (dev, test, staging, production). Что в итоге приводит к значительному сокращению издержек на протяжении всего цикла жизни серверного приложения.

          Хотя большая часть из перечисляемых достоинств Docker является правдой, тех, кто на практике столкнется с контейнерами, может постигнуть легкое разочарование. И так как Docker не является панацеей, а всего лишь входит в список из «лекарственных средств» от рецепта автоматического деплоя, разработчикам приходится осваивать дополнительные технологии, писать дополнительный код и т.д.
          Читать дальше →
        • Путеводитель по WWDC’16 для мобильных разработчиков

          • Tutorial

          Вид из Moscone West


          После WWDC на сайте Apple размещается очень много сессий. Чтобы разобраться, что смотреть, а что нет, требуется куча времени. Так как я провел всю неделю на конференции и просмотрел множество топиков, захотелось собрать в одном месте краткий список новинок и видео, которые нужно посмотреть по каждой теме.


          Статья будет наиболее актуальна для мобильных разработчиков, использующих возможности и встроенные фреймворки iOS при разработке нативных приложений.

          Читать дальше →
        • WWDC 16: первые впечатления с места событий

            Месяц назад прошел Google I/O, где самые интересные анонсы касались сервисов работы с данными и умных систем. Сейчас же пришло время Apple: посмотрим, какие новинки приготовила для потребителей и разработчиков компания, не признающая компромиссов. Keynote проходил не в Moscone Center, как обычно, а аж в Bill Graham Auditorium — историческом здании посреди San Francisco Civic Center. Обычно здесь презентуют потребительские новинки компании, но в этот раз позвали разработчиков. Как всегда, первое место в очереди нужно занимать за сутки, а за два часа до презентации можно встать где-то в середине толпы из 5 000 разработчиков.



            В этом отчете я ( mc_murphy ) собрал информацию с двух презентаций: Keynote и Platform State of the Union, чтобы рассказать обо всех анонсах первого дня.
            Читать дальше →
            • +20
            • 12,5k
            • 5
          • iOS Localization: XLIFF

            • Tutorial


            В интернете легко найти статьи по локализации iOS, где описываются все основные этапы. Проблема в том, что чаще нам на глаза попадается вариант ручного заполнения файла *.strings. Это довольно муторный подход и даже небольшая автоматизация в этом нам бы пригодилась. Ещё в iOS 8 Apple добавила возможность частичной автоматизации перевода приложения посредством экспорта и импорта локализованных строк через XLIFF-документ.

            Читать дальше →
          • Свой UX приложения ЖКХ Москвы с чатом и крутилками

              image

              Технологии развиваются со сверхзвуковой скоростью, а проектирование интерфейсов, как и любой навык, нуждается в постоянной практике. Совокупность двух этих факторов открывает целую галактику для полёта дизайнерской мысли.

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

              • если решение интуитивно понятно
              • если решение упрощает процесс взаимодействия
              • если решение реализуемо


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

              Не так давно вышло приложение ЖКХ Москвы, призванное облегчить жизнь граждан. Его описание гласит:

              «С помощью приложения возможно ввести показания счетчиков водоснабжения, узнать, когда отключат горячую воду, получить информацию об управляющей компании, узнать задолженность по услугам ЖКХ, принять участие в опросе, а также обсудить с соседями проблемы обслуживания вашего дома на форуме.»


              Интригующе. Рассмотрим под микроскопом
            • Generics в Kotlin vs. Generics в JAVA: cходства, различия, особенности

              • Tutorial

              Эта статья про Generics в Kotlin — особенности их использования, сходства и различия с Generics в Java.

              В двух словах про Generics
              Если коротко, то Generics — это способ сказать, что класс, интерфейс или метод будут работать не с каким-то конкретным типом, а просто с каким-то. С каким именно будет определено из контекста. Например:

              public interface List<E> extends Collection<E> {
              	//...
              }

              Заранее неизвестно, объекты какого класса будут содержаться в списке, но это определится при его использовании:

              List<String> list = new ArrayList<>();

              Теперь это не просто список, а список строк. Generics помогают обеспечить типобезопасность: в List можно попытаться положить любой объект, но в List<String> — только String или один из его потомков.

              Я разделю рассказ про Generics на две части: собственно Generics и использование Wildcards. Пока речь не заходит про Wildcards, использование Generics в Kotlin мало чем отличается от Java.
              Читать дальше →
            • Лучший друг киномана: переделываем приложение CBS под Android


                Любите ли вы сериалы, так как люблю их я? У многих из нас есть друг, который подсаживает на долгоиграющие истории. Лично я не успеваю следить за бесконечным многообразием новинок кинорынка, но с удовольствием прожгу часок-другой у экрана, жаря овощные котлетки после напряженной дизайн-недели. Так о чем я? Каждому хотелось бы иметь верного друга, сообщающего про все киносвежести и эпизодики, чтобы забыть наконец про долгие и изнурительные поиски захватывающего фильма для вечера пятницы. Но что если его нет?
                There is an app for that!

              Самое читаемое