Как стать автором
Обновить

Присоединяйся Google Play Вебинар 29 Марта

Время на прочтение2 мин
Количество просмотров3K


Последние изменения в политиках и правилах Google Play вызвали самые оживленные дискуссии среди разработчиков, в том числе среди русскоговорящих разработчиков. Так как нам важно мнение разработчиков, мы решили провести в эту пятницу специальный вебинар для всех русскоговорящих разработчиков на тему Policy от команды Google Play. Присоединяйся к предстоящему вебинару от Google Play чтобы узнать больше о свежих новостях и самых часто возникающих у разработчиков проблемах. После вебинара будет возможность задать вопросы, не пропусти шанс встретить экспертов онлайн!

Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии16

Прямой эфир: как обуздать iOS-разработку в больших командах

Время на прочтение3 мин
Количество просмотров3.9K

Всем привет! Меня зовут Женя Суворов, я руководитель команды мобильной архитектуры в Авито. 4 апреля на нашем ютуб-канале и в социальных сетях мы проведем прямой эфир и обсудим, как в iOS-разработке удержать качество продукта на высоком уровне даже при сильном масштабировании проекта и команды.


Поговорим на разные темы: как понять, что твой проект вырос, и нужно менять подходы к разработке, какие сложности возникают, как правильно организовать командную работу, коснемся архитектуры и кодовой базы, сравним метрики разработки в маленьких и крупных проектах, а дальше — библиотеки, фреймворки, языки — глубже и интереснее. Сами не знаем, куда заведёт разговор. В дискуссии будут участвовать эксперты из Яндекса, Сбербанка, HeadHunter, OK.RU и Авито.


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


Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии0

Dependency Injection in Flutter

Время на прочтение4 мин
Количество просмотров14K

We’re currently experimenting with Flutter while developing our side project for step challenges with colleagues. This side project should also be considered as a playground, where we can check if we can use Flutter in more serious projects. That’s why we want to use some approaches there that can look like an over-engineering for such a small project.


So one of the first questions was what can we use for dependency injection. A quick search in the internet revealed 2 libraries with positive reviews: get_it and kiwi. As get_it turned out to be a Service Locator (and I’m not a fan of this pattern), I was going to play with kiwi, which looked more promising, but then I’ve found another one library: inject.dart. It is heavily inspired by Dagger library, and as we use the latest one in our other Android projects, I’ve decided to dig into it.

Read more →
Всего голосов 13: ↑12 и ↓1+11
Комментарии0

Kaspersky Mobile Talks #1. Многомодульность

Время на прочтение8 мин
Количество просмотров9.3K

В конце февраля мы запустили новый формат встреч Android-разработчиков Kaspersky Mobile Talks. Основное отличие от обычных митапов — здесь вместо сотни слушателей и красивых презентаций на несколько различных тем собрались «бывалые» разработчики, чтобы обсудить всего лишь одну тему: как они реализуют многомодульность в своих приложениях, с какими проблемами сталкиваются, и как их решают.


Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии0

Authenticate me. If you can…

Время на прочтение14 мин
Количество просмотров7.1K


I frequently hear questions like "How to implement authentication in an Android app?", "Where to store a PIN?", "Hey man, will I be secure if I implement an authentication feature in such a way?" and a lot of the kind. I got really tired answering these questions so I decided to write all my thoughts about it once to share with all questioners.

Read more →
Всего голосов 13: ↑10 и ↓3+7
Комментарии0

Redux — подобные контейнеры состояния в SwiftUI. Основы

Время на прочтение5 мин
Количество просмотров4.3K
image

На этой неделе мы поговорим о создании контейнера состояний схожим с тем, который используется в Redux. Он является единственным источником значений для разрабатываемого приложения. Единое состояние для всего приложения облегчает отладку и проверку. Единый источник истинностных значений устраняет тысячи ошибок, возникающих при создании нескольких состояний в приложении.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

How to Implement Tinder Swipe Cards in SwiftUI

Время на прочтение7 мин
Количество просмотров14K
In June, we heard about SwiftUI for the first time — a totally new way of creating and working with UI elements in iOS and macOS (also iPadOS) apps. It felt like Christmas in the summer. It's new, it's declarative, it's sexy! And now, just a few weeks after iOS 13 has been released, we can start to use SwiftUI in all our projects. Let's learn how to use this amazing tool that Apple gave us, to create the classic Tinder-esque Swipe Cards.

In this article, I would like to show you how to achieve a Tinder-like card view and behavior (swipe to action), with just a few lines of code.

To achieve this, we need to do the following things, in order:

  • Create UserView
  • Create NavigationView
  • Create BottomBarView
  • Create SwipeView
  • Put all this together inside ContentView

So let's get started.
Read more →
Всего голосов 7: ↑6 и ↓1+5
Комментарии0

Разработка мобильного приложения без сервера

Время на прочтение10 мин
Количество просмотров13K
Очень часто при разработке мобильных приложений (возможно с веб-приложениями та же проблема) разработчики попадают в ситуацию, когда бэкэнд не работает или не предоставляет нужных методов.

Такая ситуация может происходить по разным причинам. Однако, чаще всего на старте разработки, бэкэнд просто не написан и клиент начинает без него. В таком случае начало разработки затягивается на 2-4 месяца.

Иногда сервер просто отключился (упал), иногда не успевает выкатывать нужные методы, иногда есть проблемы с данными и т.п. Все эти проблемы привели нас к написанию небольшого сервиса Mocker, который позволяет подменить реальный бэкэнд.


Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии15

От веба до приложения за один DeepLink

Время на прочтение5 мин
Количество просмотров14K


Android-приложения являются отражением сайта или сервиса и зачастую представляют собой сходный функционал в удобной оболочке. Из-за этого становится насущным вопрос навигации между страничкой в вебе и установленным клиентом. Для решения этой проблемы были изобретены диплинки (deeplink). Под катом вас ждёт увлекательная история о том, как мы внедряли их у себя и обрабатывали случай, когда у пользователя ещё не было установлено наше приложение.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии5

Flutter: рисуем текст вдоль окружности

Время на прочтение5 мин
Количество просмотров7.4K

Понадобилось мне тут на днях в одном мини-проекте (проект, можно сказать, экспериментальный, сделан на Flutter Web) реализовать такого вида штуку:


Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии6

Создание инкрементального сервера для iOS Team

Время на прочтение3 мин
Количество просмотров2.9K
image

Бесплатная книга

После пяти лет наступаний на одни и те же грабли, и полугода поисков DevOps-а, который знает что-такое Provision Profile и как от него зависит развертывание приложения, было принято решение составить пошаговую инструкцию, в картинках, о том, настраивать рабочее окружение в iOS Team с минимальными финансовыми вложениями (к примеру, когда нет проплаченных аккаунтов GitHub или Jira), а работа кипит.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии1

Против всех: in-app голосовые помощники

Время на прочтение5 мин
Количество просмотров6.8K

Вы пользуетесь каждый день голосовыми помощниками? Я — нет. Хотя разрабатываю их уже более 7-ми лет!
Такими словами открывалась девелоперская сессия нашей конференции по разговорным технологиям в Москве.

А что, собственно, не так со всеми этими «Алисами», «Марусями» и «Google Ассистентами»? Почему пользователям с ними неудобно, а бизнесу — непонятно? И какая этому всему есть open source альтернатива?

Давайте разбираться
Всего голосов 10: ↑10 и ↓0+10
Комментарии19

Почему я отказался от кросс-платформенных решений в мобильной разработке

Время на прочтение9 мин
Количество просмотров11K
image
Позвольте мне с вами кое-чем поделиться. Мне нравится идея кросс-платформенной разработки. Возможность использовать один набор инструментов для всех моих задач — это мечта. Кто не хотел бы использовать только один инструмент, чтобы успешно выполнять свои задачи? Пиши один раз, запускай везде? Я хочу!
Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Комментарии27

Находим потерянные файлы в нескольких Xcode таргетах

Время на прочтение3 мин
Количество просмотров2.2K

Привет, я Саня — iOS-разработчик в Surf, и в этой статье поделюсь своим способом решения головной боли, которая возникает при работе на проекте с несколькими таргетами.


Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии14

Here's an Update on Flutter 1.9 Release Coupled With Dart 2.5 Programming

Время на прочтение5 мин
Количество просмотров1.8K


Recently during the Google Developer Days Conference in China that was held on September 10, 2019, Flutter 1.9 was released along with the updated Dart 2.5 programming language.h

The major highlights from the conference can be summed into three major points:

  • Google has announced Dart 2.5 programming update and a new Flutter 1.9 Version upgrade.
  • Dart 2.5 will support calling C code and intelligent code completion.
  • Flutter 1.9 will support iOS 13, macOS Catalina, and new Material widgets.

In this blog, I am going to discuss the major pointers in detail for you to understand the highlights and updates in detail!

Let’s begin!

What’s in store for Dart 2.5 as a programming language?

Dart is a Google borne programming language that has been used to develop mobile, web and desktop based applications. It is an object-oriented, class defined, garbage collected language with a C-style syntax, which is used to optionally compile into JavaScript.



The latest version of Dart 2.5 comes with these major highlights:

-> Support for Calling C Code straight through Dart using Dart FFI Library:

Developers who have knowledge about low-level programming languages will be excited from this announcement. The event also saw the launch of dart:ffi library, the preview of which allows calling into C code directly from Dart and Flutter.
Read more →
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

Быстрое ознакомление с SwiftUI

Время на прочтение2 мин
Количество просмотров7.9K
SwiftUI — это новый удобный способ для создания пользовательских интерфейсов на Xcode. Если хотите быстрое ознакомление с SwiftUI, тогда этот блог пост для вас.

Для начала давайте создадим проект с поддержкой SwiftUI. Минимально необходимые для этого требования системы — это macOS Catalina и Xcode 11. Создайте новый проект “File > New > Project…”, выберите “Single View App” и убедитесь, что выбрано “User Interface: SwiftUI”.



Проект будет выглядеть примерно так:



Как могли заметить, теперь можно видеть все изменения сразу же на Preview. Например, попробуйте изменить текст на “Привет, Хабр!”. Круто да?
Читать дальше →
Всего голосов 21: ↑17 и ↓4+13
Комментарии0

How to cook reactive programming. Part 1: Unidirectional architectures introduction

Время на прочтение7 мин
Количество просмотров2.1K

Recently I wrote an article What is Reactive Programming? iOS Edition where in a simple way I described how to build your own Reactive Framework, and helped you to understand that no-one should be scared by the reactive approach. The previous article could now be named How to cook reactive programming. Part 0., since this is a continuation. I would recommend reading the previous article if you are not familiar with the reactive programming concepts.

Read more →
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Организация Flavors во Flutter

Время на прочтение7 мин
Количество просмотров8.3K

Для чего нужны Flavors


Представьте ситуацию: есть приложение с аналитикой. Есть команда разработки, тестировщики и конечные пользователи. И те, и те пользуются одной версией приложения. Допустим мы хотим проанализировать насколько пользователям интересна фича А. Что в этом случае мы делаем? Идём в аналитику и смотрим сколько было использований данной фичи (например, переходов на экран).


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


Здесь можно заменить слово аналитика на любое другое: пуш-нотификации, креш-репортинг и т.д.


И в этой ситуации нас спасает разделение приложения на две версии отличающиеся минимально, например Bundle ID(package-name). Разработчики и тестеры используют только специальную dev версию, а пользователи продовую.


Больше кейсов команды Surf >>

Это как раз и есть одна из задач flavor’ов. Здесь будет использоваться именно flavor, так как именно это название используется Flutter'ом. Люди, которые знакомы с Android-разработкой, думаю сразу узнали этот механизм.


Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии4

Масштабируемая архитектура для больших мобильных приложений

Время на прочтение5 мин
Количество просмотров7.6K

В этой статье мы не будем разбирать MVP, MVVM, MVI или что-то подобное. Сегодня мы поговорим о более глобальной вещи, чем просто архитектура уровня представления. Как спроектировать действительно большое приложение, в котором смогут комфортно работать десятки или сотни разработчиков? То приложение, которое легко расширять независимо от того, как много кода мы уже написали.

Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии10

7 Best Fitness Apps For Android Users

Время на прочтение4 мин
Количество просмотров1.6K
The excuses from the series “to want, but not to do” are known: “I’ll start from Monday,” “a subscription to fitness is expensive,” “there is nobody to go with”… It’s probably worth fighting with them yourself.

But for those who want to start putting themselves in order, we conducted an examination of mobile applications for sports and identified the best among them. According to the results of the study of mobile fitness applications, a rating has been compiled that you can (and should!) Use when choosing a pocket assistant for training.



We present you 7 fitness apps for Android, which received the highest overall score after checking for 100+ parameters.
Read more →
Рейтинг0
Комментарии3