Рубрика «разработка мобильных приложений» - 105

Как правильно чистить лук, или Почему разработка ПО выходит из-под контроля - 1

Вы придумали стартап и с самыми лучшими намерениями нанимаете разработчика для реализации своей идеи. Но идет неделя за неделей, а приложение по-прежнему нуждается в доработке. Как-то незаметно появляются новые функции, и масштаб задачи понемногу расширяется.

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

Как правильно чистить лук, или Почему разработка ПО выходит из-под контроля - 2

Как так случилось? Может, наняли плохого разработчика? Кто-то ошибся в планировании проекта? А вдруг сама идея проекта была ужасной?

Возможно. Но часто проект бывает с самого начала обречен на провал из-за недопонимания одного важного момента.

Мы предполагаем, что продукт определяется набором функций, записанных на листочке бумаги: иногда что-то добавляется, иногда убирается — но масштаб проекта всегда будто бы можно понять с одного взгляда.

Это предположение — неверно.

Проект — это не лист бумаги, не двумерный объект — у него есть глубина.

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

Переведено в AlconostЧитать полностью »

Теме чистого кода на одном только habrahabr посвящено тысячи статей. Никогда бы не подумал, что захочу написать свою. Но после проведения компанией курсов для желающих связать карьеру с разработкой ПО, в частности разрабатывать под Android, мое мнение поменялось.

За основу статьи взяты советы из классики “Роберт К. Мартин: Чистый код”. Отобрал из них те, которые наиболее часто встречались в виде проблем у студентов. Приведенные советы написаны с учетом моего опыта разработки коммерческих Android приложений. Поэтому не ко всем Android-проектам приведенные ниже советы подойдут, я уже не говорю про другие системы.

Советы в основном приводил с примерами кода как НЕ НУЖНО делать. Как ни странно, у большинства студентов были одни и те же ошибки. Все примеры кода были придуманы, любые совпадения с реально существующим кодом случайны.

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

image

Есть у меня приложение, написанное на Ionic Framework. На его основе хочу поделиться со всеми своим опытом разработки и напишу как создать кроссплатформенное приложение по шагам.

В этой статье будем с нуля разрабатывать приложение, которое позволяет читать статьи (публикации). У публикации будет название (заголовок), заглавное фото, краткое содержание, полное содержание, категория, автор, дата публикации. Все данные для приложения будут браться с сервера посредством Http-запросов.

В приложении будет несколько страниц (экранов):

  • список всех публикаций, отсортированный по дате.
  • список категорий, отсортированный по алфавиту.
  • список авторов, отсортированный по имени.
  • список публикаций выбранной категории, отсортированный по дате.
  • список публикаций выбранного автора, отсортированный по дате.
  • содержание публикации.

Результатом статьи получится приложение, которое выглядит как на картинке выше.
Плюс ссылка на исходники всего проекта.
Читать полностью »

В этой статье я продемонстрирую реализацию внедрения зависимости, репозитория и единицы работы, используя Castle Windsor в качестве DI-контейнера и NHibernate как инструмент объектно-реляционного отображения (ORM).

Внедрение зависимости и реализация единицы работы с помощью Castle Windsor и NHibernate - 1
Читать полностью »

Прошёл четвёртый по счёту традиционный iOS Meetup в Avito. Мы обсуждали Data Driven подход к разработке, практическое применение Mach-O, lldb и dSYM, возможности расширения lldb, методологию Type Driven и концептуальные различия архитектур. Если же вы не успели к нам на доклады и глинтвейн, или просто были не в Москве, то под катом мы выложили видеозаписи выступлений, слайды от докладчиков и немного фидбэка от участников встречи.

Avito iOS Winter Edition — видео, фото, слайды, отзывы - 1

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

Распознавание лиц. Создаем и примеряем маски - 1

Пока сообщество iOS-разработчиков спорит, как писать проекты, пока пытается решить, использовать ли MVVM или VIPER, пока пытается подSOLIDить проект или добавить туда реактивную турбину, я попытаюсь оторваться от этого и рассмотреть, как работает под капотом еще одна технология с графика Hype-Driven-Development.

В 2017 году на вершине графика хайпа — машинное обучение. И понятно почему:

  • Появилось больше открытых наборов данных.
  • Появились соответствующее аппаратные средства. В том числе облачные решения.
  • Технологии из этой области стали применяться в production-проектах.

Машинное обучение — широкая тема, остановлюсь на распознавании лиц и попытаюсь разобраться, какие технологии были до рождества христова CoreML, и что появилось после релиза фреймворка Apple.

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

Приглашаем 15 декабря на Moscow CocoaHeads Meetup в Mail.Ru Group - 1

Друзья, мы приглашаем iOS/macOS-разработчиков 15 декабря в московский офис Mail.Ru Group, где пройдёт очередная встреча сообщества CocoaHeads. Вас ждут три интересных доклада, традиционная викторина и, конечно, неформальное общение с докладчиками и остальными гостями. Программа встречи под катом.

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

Промо-коды.apk

Сейчас у многих магазинов популярны так званые «промо-коды», по которым покупатели могут получить скиду на товар. В среднем клиентская база магазинов, использующих такие «инновации» состоит из покупателей в возрасте от 16 до 30 лет. Люди данной возрастной категории практически не расстаются со своими смартфонами. На лицо актуальность мобильных приложений, которая растёт с каждым годом. Это и навело нас с ребятами на мысль о создании приложения для раздачи этих самых промо-кодов.

Концепция и маркетинг

После краткого обсуждения мы остановились на разработке лабиринта в котором пользователь должен отыскать промо-код. Количество промо-кодов, как и частота генерации лабиринта будет зависеть от заказчика. Найти промо-код в лабиринте может каждый пользователь, но получат его только первые N клиентов.

Преимущества для пользователя:

  • приложение бесплатное, клиент не должен ни за что платить;
  • увлекательная «гонка» за промо-кодом.

Преимущества для заказчика:

  • увеличение клиентской базы, за счёт оригинального игрового формата раздачи промо-кодов;
  • минимальные затраты на разработку и хостинг приложения;
  • являясь владельцами приложения, возможность внедрения рекламы.

Преимущества для разработчиков:

  • при имеющемся шаблоне, быстрая разработка под конкретный магазин, путём изменения дизайна и минимального изменения механики;
  • постоянный доход в виде поддержки исправности хостинга и устранения проблем работы приложения;
  • возможность внедрения рекламы (при согласии заказчика).

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

В новом дайджесте мы обсуждаем учебные проекты, странную покупку старого Mac Mini, самые популярные приложения, потерю данных 31 миллиона пользователей одной из мобильных клавиатур, правильные продуктовые метрики и многое другое.

Дайджест интересных материалов для мобильного разработчика #233 (4 декабря — 10 декабря) - 1Читать полностью »

Это вторая часть лекции Дмитрия Свирихина — разработчика из команды мобильной Яндекс.Почты.

— Мы с вами продолжаем рассматривать типичные проблемы Android-разработчика и способы их решения. Мы уже рассмотрели, как решить проблему неконсистентности UI у нас в приложении, проблемы, которые могут возникнуть при взаимодействии с клавиатурой, и проблемы потери state, а также узнали, как мы можем эффективно применять кастомные view. Всю вторую часть мы посвятим ещё одной проблеме — она называется «недостаточная интерактивность». Посмотрим, как мы можем сделать наше приложение более интерактивным и понятным для пользователя.

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

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


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