Telegram Web
​​Как стать разработчиком, которого хочет в свою команду каждый
#разработка #конференции

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

На Mobius 2019 был доклад про то, как стать разработчиком, которому будут рады в любой команде разработки.
Этот доклад вызвал бурную реакцию среди участников Mobius 2019, и сейчас эксперты в области мобильной разработки проведут разбор этого доклада со своими комментариями.

Кто будет участвовать?
• Йонатан Левин, руководитель группы разработки в monday.com, ex-GDE, активный спикер международных конференций, основатель Android Academy.
• Денис Неклюдов, Android GDE, разработчик в Lyft.
• Евгений Кот, team lead, член Программного Комитета конференции HolyJS, руководитель офиса разработки.
• Игорь Луканин, Product Marketing Manager в компании JUG Ru Group, ex-devrel в компании Контур.

За два часа мы посмотрим доклад, услышим разные мнения на счет него, ну и спикеры поотвечают на наши вопросы.

Организуют данное событие ребята из GDG St. Petersburg. Мероприятие бесплатное, но нужно зарегистрироваться на него здесь.
Как на удаленке жить хорошо
#разработка #конференции

В современном мире никого особенно не удивишь удалённой работой. Особенно сегодня, когда вся работа по умолчанию стала «временно удалённой».

Но каково это работать удалённо долгое время? Как совмещать путешествия, работу и разные часовые пояса?

Завтра есть отличная возможность послушать Артура Бадретдинова об опыте совмещения работы и путешествий на стриме «Как на удаленке жить хорошо». Автор уже несколько лет работает вне офиса, и за это время накопил множество знаний, связанных с удалённой работой.

Ссылка на стрим тут, он абслолютно бесплатный.
​​Эволюция Find Views by ID

Последние 10 лет, разработчики под Android частенько сталкивались с одной простой, но раздражающей проблемой — поиска view в xml-классах layouts.

Начинающие разработчики сразу берутся за самый простой способ — метод findViewById(). Он предоставляет ссылку на объект View, если найдет её в xml файле, иначе — выдаст null.

Сегодня есть несколько способов получения View. Кроме findViewById(), есть библиотека Butterknife, уменьшаяющая количество кода, а также DataBinding и ViewBindings. А если вы пишите приложение на Kotlin, то сюда добавляется ещё и Kotlin Synthetics.
Какой же способ оптимальнее?

Ответ на этот вопрос можно узнать в этой статье. Автор сравнивает всех эти способы по влиянию на скорость сборки, null-safety, наличию Boilerplate Code и поддерживаемым языкам. В его сравнении победил View Binding, хотя мой личный фаворит — это Kotlin Synthetics.

А что используете вы?
​​Получение частей коллекции в Kotlin
#разработка #новичкам #опрос

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

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

take() — семейство функций, которое оставит нужное количество элементов. Помимо простого take, есть takeLast(), который возьмёт последние элементы из списка, takeWhile(), который оставит первые элементы с условием и takeLastWhile(), который вернёт последние элементы с условием.

drop() — похожее семейство функций, которое не возвращает, а отсекает указанное число элементов. Имеется также dropWhile() и dropLastWhile(), являющиеся противоположностями таких же операторов в take.

chunked() — довольно интересная функция, которая разделяет ваш список на несколько списков указанного размера. Например, если применить chunked(2) к списку (2, 4, 3, 10, 8, 7, 9), то на выходе получим ((2, 4), (3, 10), (8, 7), (9)).

windowed() — ещё более интересная функция, разделяющая список на несколько списков указанного размера, но в отличии от chunked делает этого для каждого следующего элемента. Это можно сравнить с тем, что вы двигаете «окошко» для каждого из элементов списка и получаете новый подсписок. Для предыдущего примера результат windowed(2) будет выглядеть так: ((2, 4), (4, 3), (3, 10), (10, 8), (8, 7), (7, 9)).
Также, здесь есть параметры step — где можно указать шаг, а также partialWindows, который поможет вам, если вы хотите разрешить использование «частичных окошек». Для нашего списка функция windowed(2, 2, true) вернёт аналогичный chunked(2) результат.

Ссылка на документацию по этим операторам тут.

Вам полезна подобная информация?
​​Не часто на канале появляется рубрика «Интервью с разработчиком». Сегодня именно тот день, когда копилка интервью пополнится.

Думаю, что многие из вас слышали про программу GDE (Google Developer Experts) – это технические эксперты и лидеры, которые являются профессионалами в своей области и зачастую выступают в качестве спикеров на различных мероприятиях, являются авторами статей и других активностей.

В России не так много GDE: если зайти на сайт, то можно увидеть 10 экспертов из России по различным направлениям, от Firebase до Payments.

Совсем недавно к списку GDE присоединились Евгений Мацюк и Александр Денисов.
Евгений стал экспертом по Android, а Александр по Flutter.

Соответственно, у них есть наиболее свежая и полная информация о всем, что связано с GDE. У каждого из вас есть возможность спросить их об этом. Возможно, вам интересно, какие преимущества получают GDE или вы сами думаете о том, чтобы стать экспертом.

Свои вопросы вы можете задать тут, а интервью появится на канале позже!
​​Android View Binding c Kotlin
#разработка #статьи

Судя по этому посту, работа с View Binding находится на третьем месте после kotlinx.synthetic и findViewById(). Если вы активно работаете с View Binding, то следующая статья сделает этот процесс удобнее.

В стандартной реализации View Binding можно столкнуться со следующими проблемами:
• лишний код;
• дублирование кода в разных Fragment;
• viewBinding получается nullable и модифицируемым.

Для того, чтобы убрать эти ограничения, автор статьи использовал Kotlin Delegated Property, при помощи которого появилась обертка над viewBinding и его автоматическая очистка в зависимости от жизненного цикла. Получилось весьма неплохо, это убрало весь лишний код с фрагментов.

Ссылка на исходный код делегата тут.
​​Flow в ConstraintLayout
#разработка #статьи

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

По сути, Flow — это некий виртуальный layout, дающий большую функциональность родительскому ConstraintLayout. Например, если вы хотите отобразить сетку из 3 строк, то без Flow вам понадобилось бы использовать 3 chain. С ним же вы просто перечисляете элементы и выставляете WrapMode.Chain.

Есть и дополнительная функциональность: расстояние между элементами, стили, выравнивание. Почитать подробнее можно тут.
​​Coil, Kotlin First Image Loader
#статьи #разработка #опрос

Coil — это новая библиотека для загрузки изображений, которая написана на Kotlin и использует его возможности, такие как работа с coroutines и extension-функции. Кроме этого, она добавляет сравнительно немного функций в проект: около 1500, при том что Glide добавляет более 2500. Плюсом она совместима с R8, поэтому не нужно добавлять никаких новых правил.

Её использование выглядит действительно неплохо. Для базовой загрузки изображений есть функция:
imageView.load("https://www.example.com/image.jpg").

Подробнее о функциональности библиотеки можно почитать тут.

А что вы используете для загрузки изображений?
​​Как происходит рендеринг экрана сообщений ВКонтакте
#статьи #разработка

Показ сложных списков внутри RecyclerView — довольно нетривиальная задача. Стандартный DiffUtil может не спасти и лаги все равно будут оставлять осадок при использовании приложения. Как же сделать максимально быстрый RecyclerView?

Разработчик из VK делится своим опытом создания чата в мобильном приложении VK. Такая лента включает в себя огромное количество типов сообщений, индикаторов загрузки, вложений. Статья подойдет всем разработчикам, которые хотят улучшить производительность списков в своих проектах.
Podlodka Teamlead Crew
#конференции

Уже через неделю (1 июня) можно будет присоединиться к двухнедельному интенсиву для тимлидов от команды Podlodka.

Вот как это будет:
• zoom-сессии с экспертами и СТО, готовыми делиться своим опытом;
• сообщество интересующихся людей в slack, где всегда можно получить рекомендации по решению проблемы любого уровня;
• фокус на теме недели и ежедневные доклады с домашними заданиями.

Мероприятие будет полезно не только действующим тимлидам, но и разработчикам, которые думают о том, как стать тимлидом в будущем.
Цена билета — 3900 рублей, что в разы дешевле среднестатистической конференции для разработчиков.

Но у подписчиков Android Live, есть шанс получить билет бесплатно. Тем более, что для этого нужно просто оставить свой никнейм в Telegram в этой форме. Победитель будет выбран рандомно, в четверг – 28 мая, в 18:00.

Торопитесь прокачать свои навыки! 🤓Ссылка на детальное описание тут.
С днём рождения, шикарнейший язык программирования!
Forwarded from Java Developer
​​Java 25 лет!

Java, выпущенная в 1995 году под руководством Джеймса Гослинга, используется на 3 миллиардах устройств по всей планете, от мобильного телефона и PC, до холодильника и компьютера в автомобиле.

Более 10 миллионов разработчиков пишут на Java и других мощных языках, которые используют JVM: Kotlin, Scala, Groovy, Jython, JRuby, Clojure.

Поздравляю всех причастных: разработчиков, тестировщиков, менеджеров, аналитиков! Java — это сила!

Мы не знаем точно, что будет дальше в мире технологий, но Java явно войдет в историю. Быть причастным к этому и кодить на одном языке с массой крутых разработчиков очень приятно! С 25-летием, родная

@java_developer
​​Kotlin Serialization Library
#разработка #статьи #опрос

В мире Android разработки существует пара распространённых библиотек для парсинга и сериализации данных — Moshi и Gson. Но не так давно появилось решение от Kotlin. Для чего же оно нужно?

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

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

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

Сейчас Kotlin Serialization Library поддерживается Retrofit, который является самым распространённым кейсом использования сериализации. О том, как использовать эту библиотеку, можно прочитать тут.

А что вы используете для сериализации данных?
​​Анатомия RecyclerView
#разработка #статьи

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

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

Автор рассказывает о следующих вещах:
• из каких компонентов состоит RecycledViewPool, как туда попадают ViewHolder;
• pre-layout и post-layout стадии работы RecyclerView;
• для чего нужны функции setIsRecyclable() и setHasTransientState();
• надо ли игнорировать вызов метода onFailedToRecycleView();
• как работает view cache.
​​Напоминаю, что сегодня до 18:00 есть возможность поучаствовать в конкурсе и выиграть билет на Podlodka Teamlead Crew. Подробности можно узнать в этом посте.
​​Презентация Android 11
#конференции

Уже совсем скоро в мире Android произойдет важное событие — презентация новой версии Android 11. Обычно эта презентация происходит в рамках Google I/O, но в этом году она будет проходить целиком онлайн, 3 июня в 18:00 по Москве.

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

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

1) Просмотр от Android Broadcast, совместно с Android Dev Podcast.
Эксперты: Кирилл Розов , Александр Блинов, Михаил Емельянов, Сергей Боиштян, Вадим Котов, Антон Дудаков

Анонс Android 11 Beta - Смотрим вместе

2) Просмотр от GDG Russia совместно с Google.
Эксперты: Звиад Кардава, Денис Неклюдов, Александр Ефременков, Катя Петрова

Android 11 Beta Launch Show с комментариями экспертов

Также совсем скоро будут локальные мероприятия от GDG, где мы подробнее рассмотрим, как все эти фишки применить. Обязательно следите за анонсами! 🤓
​​Результаты конкурса Podlodka Teamlead Crew
#конкурс

Итак, наконец пришло время опубликовать результаты конкурса, описанного тут.

В конкурсе приняло участие 40 человек, при помощи генератора случайных чисел был выбран победитель — @i30mb1, с чем я его и поздравляю 😎.

Мероприятие стартует 1 июня. Кстати, уже известно полное расписание и список экспертов. Ещё есть шанс присоединиться и получить огромный пласт новых знаний. Ссылка с подробностями здесь.

Видео с выбором победителя тут. До новых конкурсов!
Презентация Android 11 отменилась
#конференции

На прошедней неделе мы получили не самое приятное зявление. 😕 Презентация Android 11 перенесена на неопределенный срок. Будем ждать будущих анонсов. Мероприятия, связанные с презентацией, также отменены.
​​Чат в приложении
#разработка #вопрос #комментарии

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

У меня есть к вам всем вопрос. В текущем проекте есть такая задача — это создание внутреннего чата приложения. Чтобы не создавать всю инфраструктуру с нуля, было принято решение поискать готовые решения. Требования к чату следующие:
• обмен личными сообщениями между пользователями;
• возможность развернуть чат на своём сервере;
• не обязательна, но желательна поддержка чатов;
• наличие SDK под Android или примера приложения;
• open source или единовременная плата за проект.

Сейчас выбор пал на проект Matrix, который удовлетворяет требованиям и имеет рабочие приложения на своей базе. Правда, текущий SDK написан на Java и тянет за собой довольно много библиотек. Возможно, есть другие крутые продукты, которые не получилось найти.

Вопрос к вам, уважаемые подписчики: какие крутые решения для добавления чата в приложение вы знаете? Поделитесь в комментариях.
2025/09/07 06:11:47
Back to Top
HTML Embed Code: