Search
Write a publication
Pull to refresh
0
Mikalai @Selmanovichread⁠-⁠only

PM

Send message

Дайджест интересных материалов для мобильного разработчика #313 (26 августа — 1 сентября)

Reading time3 min
Views5.6K
В новом дайджесте боремся с потерями пушей, разбираемся с музыкой Apple, изучаем работу звука в Android, экономим деньги при разработке игры, ищем приложение Росстата, отличаем плохой дизайн от хорошего и даже пытаемся понять, безопасен ли будет шарф от Xiaomi.

Читать дальше →

Не всплывай! Прерываемые транзишены в iOS

Reading time8 min
Views11K

Вас тоже бесят всплывающие окна в приложениях? В этой статье я покажу, как интерактивно скрывать и показывать всплывающие окна, делать анимацию прерываемой и не бесить своих клиентов.


Читать дальше →

Компонентная архитектура UI в iOS-приложении

Reading time10 min
Views13K


Привет, Хабр!

Меня зовут Валера, и уже два года я разрабатываю iOS-приложение в составе команды Badoo. Один из наших приоритетов — легкосопровождаемый код. Из-за большого количества новых фич, еженедельно попадающих к нам в руки, нам нужно в первую очередь думать об архитектуре приложения, иначе будет крайне сложно добавить новую фичу в продукт, не ломая уже существующие. Очевидно, что это также относится и к реализации пользовательского интерфейса (UI) независимо от того, делается это с помощью кода, Xcode (XIB) или смешанного подхода. В этой статье я опишу некоторые методики реализации UI, которые позволяют нам упрощать разработку пользовательского интерфейса, делая её гибкой и удобной для тестирования. Также есть версия этой статьи на английском.

Прежде чем начать…


Я буду рассматривать методики реализации пользовательского интерфейса на примере приложения, написанного на Swift. Приложение по нажатию на кнопку показывает список друзей.

Оно состоит из трёх частей:

  1. Компоненты — кастомные UI-компоненты, то есть код, относящийся только к пользовательскому интерфейсу.
  2. Демоприложение — демонстрационные view models и другие сущности пользовательского интерфейса, имеющие только UI-зависимости.
  3. Реальное приложение — view models и другие сущности, которые могут содержать специфические зависимости и логику.

Почему такое разделение? На этот вопрос я отвечу ниже, а пока ознакомьтесь с пользовательским интерфейсом нашего приложения:
Читать дальше →

Теория Universal Links

Reading time5 min
Views61K
image

Введение


WWDC15 – Apple анонсирует переход на Universal Links. Их смысл непомерно прост – отправлять пользователя в приложение, если он переходит на страницу сайта, которую приложение поддерживает. Наиболее часто это применяется в письмах, которые отправляются после регистрации для подтверждения электронной почты. Таким образом, Universal Links избавляет пользователя от необходимости самостоятельно возвращаться в приложение – а это хорошо как для пользовательского опыта, так и для статистики.
Читать дальше →

Apple Wallet. Что это такое и как интегрировать в него свою карту

Reading time8 min
Views73K

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


Что такое Wallet? Он позволяет держать в телефоне различного вида карты (билеты, скидочные карты и т.п.), облегчая жизнь пользователям продукта. Более того, есть возможность актуализировать информацию о карте посредством push-уведомлений, но это тема для отдельной статьи. Но если у вас есть карта/билет/абонемент, которые можно интегрировать в телефон, то для этого есть решение! Как это сделать – читайте ниже.

Читать дальше →

Реализуем UI в iOS: улучшаем, ускоряем, масштабируем

Reading time9 min
Views11K


Привет! Меня зовут Азат Зулькарняев, я занимаюсь разработкой iOS-приложений в компании Badoo. При создании мобильных приложений большая часть времени уходит на разработку UI, и оптимизация этого процесса всегда является актуальной темой в среде разработчиков. Мой коллега Алексис Сантос написал статью о том, с какими проблемами мы столкнулись и как двигались в сторону их разрешения при работе над этой задачей. Я решил поделиться с вами переводом. Также рекомендую посмотреть запись недавнего доклада Игоря Савельева на Mobius 2018.

Несколько месяцев назад я наткнулся на очень интересный документальный сериал от Netflix — «Абстракция: Искусство дизайна». В нём подробно рассматривается работа дизайнеров из разных сфер: архитектура, графический дизайн, мода и т. д. Нетрудно заметить определённое сходство их работы с деятельностью iOS-разработчиков, занимающихся реализацией пользовательских интерфейсов. В частности, ведя работу над крупным проектом, дизайнеры стараются разбить её на множество мелких задач по принципу «разделяй и властвуй» и получают возможность собрать все элементы воедино на более позднем этапе.
Читать дальше →

Таймер в iOS

Reading time9 min
Views37K
Представьте, что вы работаете над приложением, в котором нужно периодически выполнять некоторые действия. Именно для этого в Swift используется класс Timer.

Timer используется для планирования действий в приложении. Это может быть разовое действие или повторяющаяся процедура.

В этом руководстве вы разберётесь, как в iOS работает таймер, как он может влиять на отзывчивость UI, как оптимизировать потребление батареи при использовании таймера и как использовать CADisplayLink для анимации.

В качестве тестового полигона мы будем использовать приложение — примитивный планировщик задач.
Читать дальше →

Пишем свой сетевой слой на Swift: протокол-ориентированный подход

Reading time10 min
Views31K


Сейчас практически 100% приложений используют работу с сетью, поэтому вопрос организации и использования сетевого слоя встает перед каждым. Есть два основных подхода к решению этой проблемы, это либо использование сторонних библиотек, либо собственная реализация сетевого слоя. В данной статье мы рассмотрим именно второй вариант, причем попробуем реализовать сетевой слой с использованием всех последних возможностей языка, применяя протоколы и перечисления. Это избавит проект от лишних зависимостей в виде дополнительных библиотек. Те, кто хоть раз видел Moya, сразу узнают множество схожих деталей в реализации и использовании, так оно и есть, только в этот раз мы все сделаем своими руками, не трогая Moya и Alamofire.
Читать дальше →

Немного практики функционального программирования в Swift для начинающих

Reading time34 min
Views108K


Я хотела бы представить концепцию Функционального Программирования новичкам самым простейшим образом, выделив некоторые его преимущества из множества остальных, которые реально позволят сделать код более читаемым и выразительным. Я подобрала для вас интересные демонстрационные примеры, которые находятся на Playground в Github.

Функциональное Программирование: Определение


Прежде всего, Функциональное Программирование — это не язык или синтаксис, а скорее всего — способ решения проблем путем разбиения сложных процессов на более простые и последующей их композиции. Как следует из названия "Функциональное программирование", единицей композиции для данного подхода является функция; и цель такой функции — избежать изменения состояния или значений за пределами своей области действия (scope).

В Мире Swift для этого есть все условия, ибо функции здесь являются такими же полноправными участниками процесса программирования, как и объекты, а проблема изменяемости (mutation) решается на уровне концепции value ТИПОВ (структур struct и перечислений enum), которые помогают управлять изменяемостью (mutation) и четко сообщают о том, как и когда это может произойти.

Однако Swift не является в полном смысле языком Функционального программирования, он не принуждает вас к Функциональному программированию, хотя и признает преимущества Функциональных подходов и находит способы встраивания их.

В этой статье мы сфокусируемся на использовании встроенных в Swift (то есть «из коробки») элементов Функционального программирования и понимании того, как можно их комфортно использовать в вашем приложении.
Читать дальше →

10 навыков и знаний необходимых начинающему iOS разработчику

Reading time7 min
Views87K
image

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

Ко мне и коллегам на собеседования приходит много кандидатов на открытые у нас вакансии, и я отчетливо вижу у многих новичков отсутствие базовых знаний или просто неуверенное владение ими. Хотя в интернете и много статей, книг и курсов (платных и бесплатных), из которых можно получить необходимые знания, не всегда просто понять, на изучении каких тем стоит сконцентрироваться.

В этой заметке я поделюсь информацией про то, какие навыки и знания я считаю важными для начинающего iOS разработчика, попробую объяснить зачем они нужны и дам ссылки на материалы для их изучения. 
Читать дальше →

Split Controller без этих ваших сторибордов

Reading time5 min
Views8.4K

Раньше для поддержки iPad делали отдельный xib. Чтобы унифицировать лейаут, в 2014 году Apple представила Auto Layout и Size Classes, а для адаптивной навигации UISplitViewController.



Split-контроллер — это контейнер, который разместит два контроллера рядом. Слева будет навигационный контроллер (речь не про Navigation Controller), справа соответсвующий выбору в навигационном. Короче, как в Настройках.


Разберем как настроить UISplitViewController и его поведение на экранах.

Читать дальше →

Всплывай! Транзишены в iOS

Reading time8 min
Views29K

Привет, Хабр! Всем нравятся отзывчивые приложения. Ещё лучше, когда в них есть уместные анимации. В этой статье я расскажу и покажу со всем «мясом», как правильно показывать, скрывать, крутить, вертеть и делать всякое с всплывающими экранами.


Читать дальше →

15 книг по машинному обучению для начинающих

Reading time5 min
Views175K
Сделал подборку книг по Machine Learning для тех, кто хочет разобраться, что да как.
Добавляйте в закладки и делитесь с коллегами!

Книги по машинному обучению на русском


1. «Математические основы машинного обучения и прогнозирования» Владимир Вьюгин.

О чем

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

2. «Верховный алгоритм» Педро Домингос.

О чем

Книга, благодаря которой даже ничего не смыслящие в математике и статистике люди поймут, что такое алгоритмы машинного обучения и каково их применение в жизни. Профессор Педро Домингос рассказывает о пяти основных школах Machine Learning и о том, как они используют идеи из различных областей научного знания — нейробиологии, физики, статистики, биологии, — чтобы помогать людям решать сложные задачи и упрощать рутину с помощью алгоритмов.
Читать дальше →

Небольшой мод превращает «Теслу» в станцию видеонаблюдения

Reading time3 min
Views14K

Программа Surveillance Detection Scout обнаружила знакомого человека и предлагает кадры из архива с его лицом

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

Исследователь безопасности Трумэн Кейн (Truman Kain) на хакерской конференции DEF CON представил любопытный мод для автомобиля Tesla под названием Surveillance Detection Scout (слайды презентации, демо). С его помощью автомобиль превращается в настоящую платформу видеонаблюдения на колёсах. Он распознаёт номера машин на дороге и лица людей в реальном времени.

Десяток Книг по Agile, Которые Точно Понадобятся Менеджеру Проекта в 2020 Году

Reading time6 min
Views34K
Профессиональная литература с термином «Agile» в названиях стала появляться на полках IT-экспертов после 2001 года, когда термин был использован во время представления Манифеста Agile.

Agile описывает методологию разработки программного обеспечения, которая характеризуется коротким жизненным циклом, способствующим частым релизам продуктов. Сегодня итеративный метод влияет на различные аспекты развития бизнеса, включая управление проектами. Где лучше всего получить полное представление о гибком подходе? В этом обзоре — 10 мощных и актуальных книг, которые помогут усовершенствовать навыки руководителей проектов и их команд.

image

С чего начать изучение Python: книги для начинающих

Reading time4 min
Views255K
image

Друзья, забирайте в закладки подборку из 17 книг по Python.

Подборка поможет вам освоить язык программирования с нуля или с минимальными знаниями.
Готовы приступить к изучению Python?

Тогда начнем!
Читать дальше →

Четыре правила интуитивного UX

Reading time12 min
Views36K
Это советы по улучшению UX ваших проектов БЕЗ многочасовых сессий по изучению пользовательского поведения, бумажного прототипирования или любых других модных словечек.

(Серьёзно, поищите «дизайн-мышление». 100500 результатов!)

Для кого эта статья?

  • Разработчики. Вы создали собственное приложение, но каждый пользователь мучается с ним. И вы знаете: если они говорят вам это в лицо, то дело действительно плохо.
  • Графические дизайнеры. Изучать UX по статьям в интернете — это какой-то… очень болезненный способ умереть.
  • Менеджеры проектов. Вы уже на четверть UX-дизайнер. Было бы неплохо освоить остальные навыки.
  • И остальные проходимцы. Все, кто корпит над своими проектами по вечерам и выходным. Вам тоже пригодится.

Хакаем CAN шину авто. Виртуальная панель приборов

Reading time14 min
Views232K


В первой статье «Хакаем CAN шину авто для голосового управления» я подключался непосредственно к CAN шине Comfort в двери своего авто и исследовал пролетающий траффик, это позволило определить команды управления стеклоподъемниками, центральным замком и др.

В этой статье я расскажу как собрать свою уникальную виртуальную или цифровую панель приборов и получить данные с любых датчиков в автомобилях группы VAG (Volkswagen, Audi, Seat, Skoda).

Мною был собран новый CAN сниффер и CAN шилд для Raspberry Pi на базе модуля MCP2515 TJA1050 Niren, полученные с их помощью данные я применил в разработке цифровой панели приборов с использованием 7″ дисплея для Raspberry Pi. Помимо простого отображения информации цифровая панель реагирует на кнопки подрулевого переключателя и другие события в машине.

В качестве фреймворка для рисования приборов отлично подошел Kivy для Python. Работает без Иксов и для вывода графики использует GL.

  1. CAN сниффер из Arduino Uno
  2. Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
  3. Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
  4. Софт панели приборов на Python и Kivy (UI framework)
  5. Видео работы цифровой панели приборов на базе Raspberry Pi

Под катом полная реализация проекта, будет интересно!

Ради денег: поиск и эксплуатация уязвимостей в мобильных платежных терминалах

Reading time10 min
Views8.1K


Карточные платежи становятся все более популярными. Мобильные платежные терминалы (mPOS-терминалы) способствуют развитию этой тенденции, снижая барьеры входа на рынок карточных платежей для небольших фирм и частных предпринимателей. При этом при определенных условиях операции все еще можно осуществлять во множестве стран (включая Россию) при помощи магнитной полосы. Каждый новый виток технологического прогресса ставит под угрозу платежную экосистему. К каким проблемам безопасности может привести облегчение доступа на рынок карточных платежей? И чем мы рискуем, продолжая полагаться на старые карточные технологии, в частности на магнитную полосу?

За последние годы число операций, осуществляемых с помощью mPOS-терминалов, существенно возросло. Острая конкуренция среди поставщиков mPOS привела к тому, что получить такой платежный терминал стало чрезвычайно просто. Подписание договора занимает меньше пяти минут, а сами mPOS-терминалы зачастую предоставляются бесплатно. Теперь их можно увидеть повсюду. Как и обычные POS-терминалы, они являются конечным звеном платежной инфраструктуры. Это делает их интересными и легко доступными для злоумышленников.
Читать дальше →

Эти токсичные парни: они отравляют проекты

Reading time11 min
Views59K
Сделаем осторожное предположение, что вы хотите получать удовлетворение от работы, реализовывать интересные и полезные проекты за адекватное вознаграждение, время от времени отдыхать с пониманием, что жизнь проходит не зря.



Ах-ха, как бы не так! Что за скучная жизнь без борьбы? Чтобы вы не расслаблялись, на страже вашего жизненного тонуса и постоянного напряжения во всех сфинктерах стоят токсичные парни и девчонки (да-да, про них я тоже не забыл, не думайте).

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

Тараканы Корпоративные (токсичность:☣☣☣)


Ареал обитания и повадки:
Заводятся в крупных корпорациях, в маленьких компаниях приживаются плохо. Тараканам нужно много бегать и утверждать переутверждение согласованных согласований. Максимум движений с отрицательной пользой.
Читать дальше →

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity