Pull to refresh
0
0
Send message

Торжественное переоткрытие Store: загрузка данных в Android с помощью корутин

Reading time13 min
Views5K

Предлагаю вашему вниманию перевод оригинальной статьи от Mike Nakhimovich


Давным-давно я работал в «Нью-Йорк Таймс» и создал библиотеку под названием Store, которая была «библиотекой Java для легкой, реактивной загрузки данных». Мы создали Store, используя RxJava и шаблоны, взятые из реализации Guava’s Cache. Сегодняшние пользователи приложений ожидают, что обновления данных будут происходить в UI без необходимости делать такие вещи, как pull-to-refresh, чтобы обновить данные или переходить между экранами туда-сюда. Реактивный фронтенд заставил меня задуматься о том, как мы можем иметь декларативные хранилища данных с простыми API, которые абстрагируют сложные функции, такие как многозадачный троттлинг и дисковое кэширование, которые необходимы в современных мобильных приложениях. За три года работы у Store 45 контрибьютеров и более 3500 звёзд на GitHub. Отныне я рад объявить, что Dropbox возьмет на себя активное развитие Store и выпустит его полностью на Kotlin с поддержкой Coroutines и Flow. И теперь Store 4 — это возможность воспользоваться тем, что мы узнали, переосмысливая API и текущие потребности экосистемы Android.




Загрузить данные

Трансформация. Управление как компетенция

Reading time13 min
Views9.9K
Рассмотрим задачу. Дано: технический специалист на позиции синьора с широким набором технических навыков. Напишите функцию, на вход которой подается разработчик, а на выходе получается тимлид. Дополнительные условия задачи: тимлид должен быть лидером, независимо от того экстраверт он или интроверт; соответствовать трем критериям хорошего управленца; отличаться от технаря, как минимум, по четырем параметрам; не должен совершать распространенных ошибок руководителя.



«Что за странная задача, какая функция? Просто берем синьора, назначаем тимлидом и готово!» Но мы знаем, что когда хорошего технического специалиста пытаются перевести в касту менеджеров, чаще теряют хорошего технаря и приобретают плохого менеджера. Все потому, что тимлид это именно менеджер: ему нужно управлять людьми, организовывать командную работу и решать самые разные проблемы. Здесь нужен набор навыков руководителя и новые шаблоны поведения, а технические скилы часто мешают.

Чтобы разобраться в задаче трансформации технического специалиста в руководителя, нам нужен человек, который знает о тимлидах практически все — это Дмитрий Смирягин. Дмитрий 20 лет в разработке ПО, из них 15 лет руководил группами архитектуры, разработки и внедрения продуктовых решений для 20th Century Fox, Wells Fargo Bank, Zurich Insurance, BoA и подразделениями производства ПО полного цикла, от аналитики до поддержки решений. Работал разработчиком, тимлидом и руководителем тимлидов, а сейчас обучает последние две группы и консультирует по вопросам IT-управления. Это идеальный опыт, чтобы решить нашу задачу — приступим.

Тимлид, или Туда и обратно

Reading time13 min
Views24K
Есть среди разработчиков те, кому хочется не только писать красивый код, но и создавать эффективные практики, упрощающие командную работу. Получив заветные лавры тимлида, окунувшись в водоворот постоянных коммуникаций, решения бытовых вопросов и, о боже, лишившись возможности писать тот самый красивый код, некоторые впадают в депрессию. А наш гость AppsCast Сергей Боиштян пошел иным путем и, вкусив реалии жизни тимлида, вернулся в ряды инженеров. Почему тимлидство не для всех и почему рост — это не всегда новая «лычка» на рукаве, в диалоге с Сергеем.


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

Не морочьте мне голову со своим функциональным программированием

Reading time19 min
Views68K
Адепты функционального программирования любят завлекать новичков обещаниями идеальной выразительности кода, 100% корректностью, лёгкостью поддержки и простотой рефакторинга, а иногда даже пророчат высочайшую производительность. Однако, опытные разработчики знают, что такого не бывает. Программирование — это тяжёлый труд, а «волшебных таблеток» не существует. 

С другой стороны, элементы функционального стиля программирования уже проникли в промышленные языки программирования, такие как Swift и Kotlin. Разработчики этих языков прекрасно знакомы с функциональным программированием, поэтому смогли применить его «в малом», предусмотрев многие, хотя и не все, необходимые компоненты. Чем дальше — тем больше части ФП внедряются в промышленные ЯП, и тем качественнее и полнее реализуется поддержка.

Уметь программировать в функциональном стиле полезно, чтобы упрощать себе работу, и сейчас мы посмотрим, как этим воспользоваться!


Виталий Брагилевский — преподаватель ФП, теории алгоритмов и вычислений, автор книги «Haskell in Depth» и участник комитетов Haskell 2020 и наблюдательного комитета компилятора GHC.

devleads — поговорим о профессиональном выгорании

Reading time13 min
Views28K
Привет! В рамках проекта devleads мы с ребятами решили сделать подкаст для всех неравнодушных к менеджменту в IT-сфере — тимлидов, руководителей разработки и им подобных.

Кто мы:

  • Я, Илья Царев, руководитель мобильной разработки Альфа-Банка.
  • Илья Кузнецов, imJustik, iOS-тимлид Альфа-Банка.
  • Никита Майданов, NikoGenn, руководитель мобильной разработки в Welps.


В этом выпуске мы затронем тему профессионального выгорания (в частности — выгорания тимлида) и связанных с ним мифов. А поможет нам в этом психолог Анастасия Калашникова.

Мы поговорим о профилактике выгорания, о том, почему нормально говорить коллегам «Нет», что делать, если шеф сидит на работе по 10 часов, а вам неудобно из-за этого уходить вовремя, и о многом другом.

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

— Расскажи, пожалуйста, что такое вообще «выгорание».
Читать дальше →

Разработка библиотеки: от API до публичного релиза

Reading time24 min
Views13K
Давайте посмотрим на библиотеки не с той стороны, которая нам привычнее всего, то есть пользовательской, а с точки зрения разработчика библиотеки мобильной разработки. Поговорим, каких подходов стоит придерживаться, разрабатывая свою библиотеку. Начнем, конечно, с проектирования такого API, которым вы сами хотели бы пользоваться, который был бы удобен. Подумаем, что нужно учесть, чтобы сделать не просто работающий код, а по-настоящему хорошую библиотеку, и дойдем до того, как выпускать настоящий взрослый публичный релиз. Поможет нам в этом Ася Свириденко, которая поделится своим немалым опытом разработки мобильной библиотеки SpeechKit в Яндексе.

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

Для всех остальных рассказ будет наполнен неподдельными историями из жизни команды мобильного SpeechKit, так что должно быть весело.

30 Android-библиотек и инструментов, которые не должны пройти мимо вас в 2018 году

Reading time9 min
Views38K

30 Android-библиотек и инструментов, которые не должны пройти мимо вас в 2018 году


В течение лета 2018 года было разработано и обновлено множество отличных Android-библиотек и инструментов.


Я составил самый новый неупорядоченный список Android-библиотек, инструментов и проектов, которые могут оказаться интересными или полезными во время вашей повседневной работы. Они также отлично подойдут для вдохновения или экспериментов.


Надеюсь, вам понравится. Давайте начнём!

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

Kodein. Основы

Reading time20 min
Views27K
Не нашел понятных гайдов для тех, кто Kodein видит в первый раз, а документация не во всех местах прозрачная и последовательная, поэтому хочу поделиться основными возможностями библиотеки с вами. Некоторые возможности библиотеки будут выпущены, но это в основном advanced часть. Здесь же вы найдете всё, чтобы по ходу чтения статьи нормально стартовать и начать внедрять зависимости с Kodein. Статья базируется на Kodein 5.3.0, так как Kodein 6.0.0 требует Support Library 28 или AndroidX и далеко не скоро все перейдут на них, так как многие сторонние библиотеки ещё не предлагают совместимых версий.

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

25 занимательных Android библиотек. Весна 2018

Reading time5 min
Views20K
Это список из 25 новейших Android-библиотек, проектов и инструментов, выпущенных за последние 3 месяца. Здесь нет первого и последнего места, это просто список интересных библиотек. Они определённо заслуживают вашего внимания. Наслаждайтесь!


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

Велосипед для гика: как прокачать байк

Reading time6 min
Views21K


Джон Толкиен, автор «Властелина колец» и уважаемый профессор Оксфорда, в качестве транспорта пользовался в основном велосипедом. На нем он в любую погоду ездил на лекции из своего домика вблизи университета. Семья могла позволить себе машину (и впоследствии ее все-таки купила), но двухколесный транспорт был личным протестом Толкиена против индустриализации и ее плодов: уничтожения зеленых уголков и упадка традиционной английской деревни.

Сегодня верность «педальному коню» для многих тоже остается выражением идеи: для одних — протестом против проблем с парковкой и высоких налогов; для других — в защиту экологичного или здорового образа жизни. При этом велолюбителей с каждым годом все больше, а велосипеды — все совершенней и дороже. Двухколесный транспорт производят не только специализированные бренды, но и такие автомобильные гиганты как BMW, Land Rover, Mini, Mercedes-Benz, Peugeot, Skoda и даже Ferrari. А цена двухколесных устройств премиум-класса сравнима со стоимостью автомобиля.

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

Обзор TeamLead Conf: 2 дня по 2 трека, 25 докладов, 474 участника, излитая боль неизмерима

Reading time17 min
Views15K


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

  1. Нужен ли вообще тимлид?
  2. Что есть тимлид, какие у него задачи?
  3. Что сначала: команда или тимлид?
  4. Необходимы ли тимлиду технический навыки?
  5. Вырастить или нанять?
  6. Как понять, можно ли и нужно ли выращивать из инженера тимлида?
  7. Сколько времени нужно, чтобы вырастить тимлида?
  8. Менеджерские роли тимлида, какая роль предпочтительней?
  9. Насколько важны эмоциональный интеллект и социальные навыки?
  10. Что делать если руководитель сам является техническим специалистом и падок на микроменеджмент?
  11. Тимлид ушел на неопределенное время (отпуск, больничный, форс-мажор), что делать?
  12. Что делать, если тимлид уходит насовсем?
  13. Какое должно быть соотношение менеджмента и разработки в работе тимлида?
  14. Есть ли путь назад (и вперед)?
  15. Какие перспективы карьеры тимлида?
  16. Что может помешать стать тимлидом?
  17. В чем разница между тимлидом и техлидом?
  18. Как выявить неэффективного тимлида на ранней стадии?
  19. Как начинающему тимлиду справиться с потоком информации?
  20. Нужен формальный или неформальный лидер?
  21. Junior и Senior тимлид, в чем различия и как держать их в одной команде?

Такой поток запросов выдали участники TeamLead Conf на круглый стол. Если вы уже сталкивались с какими-то из них, то, вероятно, и остальные могут вас настигнуть, есть, о чем подумать.

Под катом — обзор лучших докладов TeamLead Conf с видеозаписями и презентациями.

Не Dagger'ом едины

Reading time8 min
Views22K
В последнее время многим программистам очень понравилась библиотека для реализации внедрения зависимостей Dagger2. Хотя, как мне кажется, из-за неочевидной работы под капотом и большим семейством аннотаций Dagger долго заходил в комьюнити. И так получается что сейчас куда не глянь многие использую эту библиотеку почти везде. И уже Dependancy Injection становится синонимом этой самой библиотеки. Хотя это всего лишь библиотека. Да, хорошая, не спорю. Статья будет не о свержение Dagger'a с трона короля библиотек DI. А я бы хотел рассказать о другом инструменте для подобных целей — это Koin.
Читать дальше →

Работа с ConstraintLayout через XML-разметку

Reading time22 min
Views131K

ConstraintLayout


Привет! Меня зовут Гавриил, я Android-лид Touch Instinct.


В марте Google выкатил релизное обновление ConstraintLayout. Презентовали его еще на прошлом Google I/O. С того момента прошел почти год, ConstraintLayout стал лучше, быстрее и оброс новыми возможностями. Например, приятно, что появилась возможность объединения элементов в цепи — это позволяет использовать ConstraintLayout вместо LinearLayout.


О всех новых и старых возможностях ConstraintLayout я и постараюсь рассказать в этой статье. Предупрежу сразу — статья будет длинная и других семи частей не будет. Про визуальный редактор ConstraintLayout в статье не будет ни слова — только XML-разметка (по старинке) и немного кода.

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

Delegate Adapter — зачем и как

Reading time11 min
Views36K
Практически во всех проектах, которыми я занимался, приходилось отображать список элементов (ленту), и эти элементы были разного типа. Часто задача решалась внутри главного адаптера, определяя тип элемента через instanceOf в getItemViewType(). Когда в ленте 2 или 3 типа, кажется, что такой подход себя оправдывает… Или нет? Что, если завтра придет требование ввести еще несколько типов да еще и по какой-то замысловатой логике?



В статье хочу показать, как паттерн DelegateAdapter позволяет решить эту проблему. Знакомым с паттерном может быть интересно посмотреть реализацию на Kotlin с использованием LayoutContainer.
Читать дальше →

Заблуждения Clean Architecture

Reading time15 min
Views447K
Превращаем круги в блоки

­­ 


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

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

Kotlin code style

Reading time6 min
Views20K

За полтора года работы с языком Kotlin, мы перевели на него все свои проекты и фреймворки. Чтобы разработчики могли быстрее включаться в работу над проектом, а код ревью не превращался в бесконечный спор, мы решили формализовать накопленный опыт и разработали собственный код-стайл.


Поехали!

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

Локальная автоматизация билдов(Crashlytics + Slack + FastLane)

Reading time2 min
Views6.5K
Автоматизация билдов(Crashlytics + Slack + FastLane).

Раньше (Черно-белая картинка, угрюмый разработчик сидит за столом)

1. Повышает версию кода в build.gradle
2. Собирает билд
3. Грузит билд в crashlytics
4. Пишет в слак что залил новый билд

Теперь (Яркая картинка, веселый парень):

консоль: fastlane new_build
Читать дальше →

Лекция Яндекса: Advanced UI, часть первая

Reading time23 min
Views13K
Мы опубликуем несколько лекций Школы мобильной разработки 2017 года. Эта школа — часть проекта Яндекса «Мобилизация». Здесь можно найти видеокурсы, составленные по итогам «Мобилизации» прошлого года.

Лекцию «Advanced UI» прочитал Дмитрий Свирихин — разработчик из команды мобильной Яндекс.Почты. Дмитрий объясняет, как при разработке интерфейса Android-приложения решать самые распространённые проблемы.


Давайте резюмируем все вышесказанное про темы. Единообразные UI-элементы мы должны стилизовать с помощью тем, при этом нам не нужно писать всю тему с нуля, мы можем унаследоваться от какой-то системной темы и первоначально задавать некоторое подмножество атрибутов для этой темы.

Лекция Яндекса: Advanced UI, часть вторая

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

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


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

Распознавание жестов движений на Android используя Tensorflow

Reading time10 min
Views18K
image

Введение


В сегодняшние дни есть много разных способов взаимодействия со смартфонами: тач-скрин, аппаратные кнопки, сканер отпечатков пальцев, видео камера (например система распознавания лиц), D-PAD, кнопки на гарнитуре, и так далее. Но что насчет использования жестов движений?

Например быстрое перемещение телефона вправо или влево держа его в руке может очень точно отражать намерение перейти на следующую или предыдущую песню в плей-листе. Или же вы можете быстро перевернуть телефон верх ногами и потом назад для обновления контента приложения. Внедрение такого взаимодействия выглядит многообещающим и буквально добавляет новое измерение в UX. Эта статья описывает как реализовать подобное используя машинное обучение и библиотеку Tensorflow для Android.

Information

Rating
Does not participate
Registered
Activity