Уже несколько дней сложно себя заставить ни то что работать, вообще что-либо делать.
Сегодня буду пытаться все же что-то полезное сделать по работе, а фоном вместо новостей и прочего шлака поставил 37 часовой курс по Flutter для начинающих
Надеюсь, у вас все хорошо.
Берегите себя!
Сегодня буду пытаться все же что-то полезное сделать по работе, а фоном вместо новостей и прочего шлака поставил 37 часовой курс по Flutter для начинающих
Надеюсь, у вас все хорошо.
Берегите себя!
YouTube
Flutter Course for Beginners – 37-hour Cross Platform App Development Tutorial
Learn how to use Flutter in this complete course for beginners. Flutter is an open-source UI software development kit used to create cross-platform applications for iOS, Android, Windows, Mac, and more.
💻 GitHub repo: https://github.com/vandadnp/mynotes…
💻 GitHub repo: https://github.com/vandadnp/mynotes…
👍3
Любопытный факт, о котором, я, например, не знал.
Во многих учебниках по программированию моего времени переменные в циклах обычно обозначаются как i. Знаете почему?
Дело в том, что более 60 лет назад в первоначальной версии языка Fortran (на синтаксис которого оказала большое влияние алгебра) переменные, имена которых начинались на буквы от I до N, были целочисленными.
В современных языках, понятное дело, лучше переменные циклов называть более осмысленно.
Во многих учебниках по программированию моего времени переменные в циклах обычно обозначаются как i. Знаете почему?
Дело в том, что более 60 лет назад в первоначальной версии языка Fortran (на синтаксис которого оказала большое влияние алгебра) переменные, имена которых начинались на буквы от I до N, были целочисленными.
В современных языках, понятное дело, лучше переменные циклов называть более осмысленно.
👍3
Заметили тренд на коррекцию рублевых зарплат?
Некоторые компании, конечно, и раньше могли себе позволить платить столько архитекторам, но и в Mobile на рядовые позиции коррекция намечается.
И, как обычно, индексация не коснется тех, кто работает по текущим договоренностям. Нужно будет идти и клянчить повышение (либо заключать новый договор).
p.s. потихоньку приходим в себя. Начал набрасывать вторую часть статьи про работу в банке. Поговорим в этот раз о процессах.
Некоторые компании, конечно, и раньше могли себе позволить платить столько архитекторам, но и в Mobile на рядовые позиции коррекция намечается.
И, как обычно, индексация не коснется тех, кто работает по текущим договоренностям. Нужно будет идти и клянчить повышение (либо заключать новый договор).
p.s. потихоньку приходим в себя. Начал набрасывать вторую часть статьи про работу в банке. Поговорим в этот раз о процессах.
👍1
Работа в банке. Часть 2. Процессы.
Запасаемся по традиции кофейком или чем покрепче и продолжаем разговор про работу в банке.
В этот раз про процессы.
Запасаемся по традиции кофейком или чем покрепче и продолжаем разговор про работу в банке.
В этот раз про процессы.
Telegraph
Работа в банке. Часть 2. Процессы.
Все начинается с планирования. Первые этапы планирования начинаются еще в конце года, где верхнеуровнево накидываются планы на следующий год. Далее, каждый квартал проходит более детальное планирование. На этом планировании мы как ни странно планируем, пытаемся…
👍5
Работа в банке. Часть 3. Люди.
Продолжаем про работу в банке. В этот раз максимально позитивный пост получился, да и кофе скорее всего вам не понадобится.
Люди - наше все?
Продолжаем про работу в банке. В этот раз максимально позитивный пост получился, да и кофе скорее всего вам не понадобится.
Люди - наше все?
Telegraph
Работа в банке. Часть 3. Люди.
DroidDevNotes Да, эта будет самая позитивная часть нашего цикла. Люди в банке (по крайней мере в нашем) отзывчивые, всегда готовы созвониться и помочь. Вопросов в этом плане вообще нет. Есть только несколько но: Много кто уволился. Особенно топы, что настораживает.…
👍3
Работа в банке. Часть 4. Код.
Ну что, соскучились?
Пока еще производительность хромает. Как в работе, так и вообще везде. Медленно, медленно приходим в себя, но все еще больше с акцентом на просмотр новостей 😞
Но я таки набросал последний пост про работу в банке.
Запасайтесь по классике любимым напитком, букв много.
Всем хороших выходных!
Ну что, соскучились?
Пока еще производительность хромает. Как в работе, так и вообще везде. Медленно, медленно приходим в себя, но все еще больше с акцентом на просмотр новостей 😞
Но я таки набросал последний пост про работу в банке.
Запасайтесь по классике любимым напитком, букв много.
Всем хороших выходных!
Telegraph
Работа в банке. Часть 4. Код.
Вот мы и подобрались к финишу. Теперь самое интересное - код. И самое неоднозначное. Архитектура. У нас многомодульный проект. Модулей порядка 30-40 (список не помещается на экране iMac 5к). Модули связаны между собой через некие медиаторы (по сути аналог…
👍3
Попробовал удобный и быстрый способ протестировать диплинки в Android-приложении.
Просто запускаем команду:
Красота!
Просто запускаем команду:
adb shell am start -a android.intent.action.VIEW -d "deep_link_url" app_package_name
И приложение запускается с нужным диплинком. Красота!
👍1🔥1
Любопытный баг нашелся в Compose:
https://issuetracker.google.com/issues/192433071
Суть: при нажатии на Back сперва сбрасывается фокус поля вместо перехода на предыдущий в стеке экран. Приходится дополнительно тапать на Back.
Статус у бага вроде бы уже fixed, но пока не ясно до конца в какой версии исправят. На текущей стабильной версии Compose 1.1.0 вроде бы еще проявляется.
Вариантов исправить несколько, но если не сильно заморачиваться, то просто к полю ввода добавляем такой вот костыль-модификатор:
p.s. Давненько я что-то ничего не постил… в общем как вы там поживаете в ваших Грузиях / Армениях ? 🙂
https://issuetracker.google.com/issues/192433071
Суть: при нажатии на Back сперва сбрасывается фокус поля вместо перехода на предыдущий в стеке экран. Приходится дополнительно тапать на Back.
Статус у бага вроде бы уже fixed, но пока не ясно до конца в какой версии исправят. На текущей стабильной версии Compose 1.1.0 вроде бы еще проявляется.
Вариантов исправить несколько, но если не сильно заморачиваться, то просто к полю ввода добавляем такой вот костыль-модификатор:
modifier = Modifier
.onKeyEvent {
if (it.key == Key.Back) {
// presenter.onBackPressed() or something like
true
} else {
false
}
}
Ждем включения фикса в основную версию.p.s. Давненько я что-то ничего не постил… в общем как вы там поживаете в ваших Грузиях / Армениях ? 🙂
👍4
Я снова с вами!
Решил продолжить таки писать небольшие заметки в канал хотя бы потому что недавно делая диплинки, очень кстати под рукой оказался пост из тележки.
Кстати, теперь у постов будут теги для быстрого поиска.
Что новенького?
1️⃣ В банке сменилось руководство (теперь российское), но изменений в плане работы пока особых нет. Работаем как и раньше. Ограничений на работу из-за рубежа тоже нет, в отличии от Альфы, Сбера и еще парочки банков. Вот коллегам из Открытия (по слухам) тяжелее всего. Хотя, ВТБ многих заберет к себе, если покупка осуществится.
2️⃣ Потихоньку наша махина переходит на рельсы MVI + Compose. MVI пока самописный, благо не так чтобы сложно его реализовать в базовом виде. По Compose вроде дела идут неплохо: переносим свои компоненты на него, что-то выкидываем, ибо хватает стандартной поддержки, но все упирается как всегда во время.
3️⃣ Активнее начали заниматься написанием тестов и скоро их количество в конкретном функционале будет проверяться на CI. Сделаем минимально допустимое покрытие перед мержем ветки в dev.
4️⃣ В Сентябре переболел ковидом, но в легкой форме, поэтому полет нормальный.
А как у вас дела?
Решил продолжить таки писать небольшие заметки в канал хотя бы потому что недавно делая диплинки, очень кстати под рукой оказался пост из тележки.
Кстати, теперь у постов будут теги для быстрого поиска.
Что новенького?
1️⃣ В банке сменилось руководство (теперь российское), но изменений в плане работы пока особых нет. Работаем как и раньше. Ограничений на работу из-за рубежа тоже нет, в отличии от Альфы, Сбера и еще парочки банков. Вот коллегам из Открытия (по слухам) тяжелее всего. Хотя, ВТБ многих заберет к себе, если покупка осуществится.
2️⃣ Потихоньку наша махина переходит на рельсы MVI + Compose. MVI пока самописный, благо не так чтобы сложно его реализовать в базовом виде. По Compose вроде дела идут неплохо: переносим свои компоненты на него, что-то выкидываем, ибо хватает стандартной поддержки, но все упирается как всегда во время.
3️⃣ Активнее начали заниматься написанием тестов и скоро их количество в конкретном функционале будет проверяться на CI. Сделаем минимально допустимое покрытие перед мержем ветки в dev.
4️⃣ В Сентябре переболел ковидом, но в легкой форме, поэтому полет нормальный.
А как у вас дела?
👍4
В xml-разметке когда привязываете элемент к top и bottom других элементов, используя ConstraintLayout, по-умолчанию нужный кусок макета займет не всю область между двумя другими и нужно проставить ему height = 0dp. Частый кейс!
В Compose если поставить у этого элемента в модификаторе height = 0.dp это не сработает.
Оказывается, подобная опция есть в методе constrainAs и нужно выбрав либо ширину, либо высоту указать опцию fillToConstraints:
#Compose #ConstraintLayout
В Compose если поставить у этого элемента в модификаторе height = 0.dp это не сработает.
Оказывается, подобная опция есть в методе constrainAs и нужно выбрав либо ширину, либо высоту указать опцию fillToConstraints:
Modifier
.constrainAs(content) {
bottom.linkTo(termsAndConditions.top)
top.linkTo(topBar.bottom, margin = 32.dp)
...
height = Dimension.fillToConstraints }
Теперь элемент растянется по всей высоте.#Compose #ConstraintLayout
👍1
Любопытное, хотя уже и немного старенькое видео о том, как устроен Compose Runtime: https://www.youtube.com/watch?v=6BRlI5zfCCk
Самое интересное с 13 минуты.
Самое интересное с 13 минуты.
YouTube
KotlinConf 2019: The Compose Runtime, Demystified by Leland Richardson
Recording brought to you by American Express. https://americanexpress.io/kotlin-jobs
Jetpack Compose is an ambitious multi-team effort to reimagine Android's UI Toolkit more than 10 years after the Android Platform launched with the original UI Toolkit.
…
Jetpack Compose is an ambitious multi-team effort to reimagine Android's UI Toolkit more than 10 years after the Android Platform launched with the original UI Toolkit.
…
👍3
Кто бы мог подумать, что в 2023 я буду прикручивать к Android-приложению снова веб-сокеты? Еще когда только технология появилась все в мобильном мире считали как должное, что нужно обязательно их попробовать затянуть в проект. Потом все как хапанули с ними, особенно, в кейсах, когда нужно работать с сокетом из нескольких мест в приложении и держать коннект в фоне, который так и хотел где-то закрыться или память покушать. Видимо mobile-мир, как и человечество развивается по кругу (ну или просто архитекторы у нас вызывают вопросы?). Теперь ждем снова, когда будем хапать кое-чего на лопате.
Благо, если не нужна очень гибкая его настройка, можно воспользоваться либой, которая подключена почти в любом проекте - OkHttp:
Минус реализации в OkHttp в том, что вы не можете гибко контролировать коннект. Есть только открытие сокета, закрытие и отправка / получение сообщения. Хотя может и есть, я пока не встретил сходу, при том что в исходник тоже заглянул.
Как думаете зачем в банке могли потребоваться веб-сокеты в 2023?
Нет, не для чата 🙂
#WebSocket
Благо, если не нужна очень гибкая его настройка, можно воспользоваться либой, которая подключена почти в любом проекте - OkHttp:
webSocket = builder.newWebSocket(
Request.Builder().url(url).build(),
webSocketListener
)
и дальше работать с объектом WebSocket.Минус реализации в OkHttp в том, что вы не можете гибко контролировать коннект. Есть только открытие сокета, закрытие и отправка / получение сообщения. Хотя может и есть, я пока не встретил сходу, при том что в исходник тоже заглянул.
Как думаете зачем в банке могли потребоваться веб-сокеты в 2023?
Нет, не для чата 🙂
#WebSocket
👍4
Небольшой нюанс многомодульности в Android Studio Electric Eel
Как вы уже знаете, у нас в проекте очень много модулей (больше 100 наверное уже), поэтому иногда возникают забавные кейсы.
Вот один из них.
Суть: коллега закончил перенос конфигов в build.gradle для всех модулей на KTS и слил это в dev.
Но при мерже в ветку с новым модулем, который был только локально в этой самой ветке произошла аказия: студия САМА добавила вот такие строки в КАЖДЫЙ build.gradle:
Мораль простая: подливайте почаще изменения в свою ветку, правда, вряд ли в данном случае это бы вас сильно спасло, но по крайней мере можно заложить время на определенные правки, дабы они не были сюрпризом перед созданием PR.
#Многомодульность
Как вы уже знаете, у нас в проекте очень много модулей (больше 100 наверное уже), поэтому иногда возникают забавные кейсы.
Вот один из них.
Суть: коллега закончил перенос конфигов в build.gradle для всех модулей на KTS и слил это в dev.
Но при мерже в ветку с новым модулем, который был только локально в этой самой ветке произошла аказия: студия САМА добавила вот такие строки в КАЖДЫЙ build.gradle:
apply plugin: 'org.jetbrains.kotlin.android'
implementation("androidx.core:core-ktx:+")
implementation("androidx.core:core-ktx:+")
Неприятно.Мораль простая: подливайте почаще изменения в свою ветку, правда, вряд ли в данном случае это бы вас сильно спасло, но по крайней мере можно заложить время на определенные правки, дабы они не были сюрпризом перед созданием PR.
#Многомодульность
👍2🤔1
При переходе с MVP на MVI очень спасает мини-библиотека kotlinx.coroutines.rx2.
Проект старый, весь код работающий с API в основном возвращает Rx-сущности. А методы Middleware в котором как раз мы и дергаем этот API, возвращает flow.
Поток данных внутри flow-билдера должен быть синхронным, что как раз и позволяет сделать эта маленькая библиотечка, добавляющая метод-расширение await() к SingleSource/CompletableSource/MaybeSource и тд. Внутри расширения используется блок suspendCancellableCoroutine, который оборачивает каллбеки Rx, возвращая результат.
В итоге, код будет выглядеть примерно так:
#MVI #Coroutines #Rx
Проект старый, весь код работающий с API в основном возвращает Rx-сущности. А методы Middleware в котором как раз мы и дергаем этот API, возвращает flow.
Поток данных внутри flow-билдера должен быть синхронным, что как раз и позволяет сделать эта маленькая библиотечка, добавляющая метод-расширение await() к SingleSource/CompletableSource/MaybeSource и тд. Внутри расширения используется блок suspendCancellableCoroutine, который оборачивает каллбеки Rx, возвращая результат.
В итоге, код будет выглядеть примерно так:
val response = interactor.apiRequest().await()
Крайне рекомендую, если у вас все еще смешанное использование Coroutines/Rx. #MVI #Coroutines #Rx
👍4🤔1
В Compose 1.2.0 появились Chips.
Раньше контрол на скрине был у нас на базе RadioGroup, а теперь элементарно переехал на LazyRow + FilterChip.
Отличие FilterChip от обычного Chip в настройках цвета для выбранного/обычного состояний:
#Compose
Раньше контрол на скрине был у нас на базе RadioGroup, а теперь элементарно переехал на LazyRow + FilterChip.
Отличие FilterChip от обычного Chip в настройках цвета для выбранного/обычного состояний:
FilterChip(
modifier = Modifier,
onClick = { dayClick(index) },
content = {
...
Text(text)
},
colors = ChipDefaults.filterChipColors(
backgroundColor = .. ,
contentColor = ... ,
selectedBackgroundColor = ... ,
selectedContentColor = ...
),
selected = index == currentDay
)
Анимация нажатия тоже есть 🙂#Compose
👍3💩2🌚1
Знаете в чем основная проблема ревью пулл-реквестов?
У вас никогда не хватает времени (или желания?) скопировать себе чужую ветку из ревью, запустить и прогнать функционал 🙈
В итоге, основная проблема нового кода никак не решается. Вы просто проверяете стилистику, а не функционал.
#потрындеть
У вас никогда не хватает времени (или желания?) скопировать себе чужую ветку из ревью, запустить и прогнать функционал 🙈
В итоге, основная проблема нового кода никак не решается. Вы просто проверяете стилистику, а не функционал.
#потрындеть
🌚2
Хороший вводный доклад по KMM с примерами того, какие части архитектуры можно вынести в общий модуль и с некоторым количеством интересных вопросов в конце.
https://www.youtube.com/watch?v=3nyBxrAtF-M
#KMM
https://www.youtube.com/watch?v=3nyBxrAtF-M
#KMM
YouTube
Александр Соколинский — Почему KMM — не кроссплатформа?
Подробнее о конференции Mobius: https://jrg.su/ojGU3B
— —
Александр уже полтора года делает приложения с использованием технологии KMM в продакшене. В докладе он рассмотрит концепцию KMM и ее принципиальные отличия от остальных кроссплатформенных решений.…
— —
Александр уже полтора года делает приложения с использованием технологии KMM в продакшене. В докладе он рассмотрит концепцию KMM и ее принципиальные отличия от остальных кроссплатформенных решений.…
🤔1
Слушайте, ну не так уж и страшно выглядит Аврора 😁
Или многие разрабы уже не учат плюсы в универе?
Понятно, что после Kotlin/Swift/Dart чуть-чуть больновато.
С другой стороны - новая ниша, новые возможности. Тут Алексей прав 👍
А доклад хороший:
https://www.youtube.com/watch?v=vPbAHQy7OBw
Или многие разрабы уже не учат плюсы в универе?
Понятно, что после Kotlin/Swift/Dart чуть-чуть больновато.
С другой стороны - новая ниша, новые возможности. Тут Алексей прав 👍
А доклад хороший:
https://www.youtube.com/watch?v=vPbAHQy7OBw
YouTube
Алексей Гладков — ОС «Аврора» глазами Android- и iOS-разработчика
Подробнее о конференции Mobius: https://jrg.su/ojGU3B
— —
В современном мире нельзя быть до конца уверенным, что завтра у нас будут работать Android или iOS. Поэтому спикер решил взглянуть на альтернативные мобильные ОС из России и начать с самой перспективной…
— —
В современном мире нельзя быть до конца уверенным, что завтра у нас будут работать Android или iOS. Поэтому спикер решил взглянуть на альтернативные мобильные ОС из России и начать с самой перспективной…
🆒2🤡1🤨1
Уже интереснее 👍
Работы по полноценной поддержи Flutter-разработки еще много, конечно. Особенно не хватает пока поддержки Blocs, но круто.
https://www.youtube.com/watch?v=6k3C1hjvTe4
Работы по полноценной поддержи Flutter-разработки еще много, конечно. Особенно не хватает пока поддержки Blocs, но круто.
https://www.youtube.com/watch?v=6k3C1hjvTe4
YouTube
Денис Глазков — ОС Аврора и Flutter. Статус поддержки
Ближайшая конференция: Mobius 2025 Spring, 9–10 апреля, Москва + онлайн. Подробности и билеты: https://jrg.su/ojGU3B
— Ближайшая конференция: Mobius 2023 Autumn — 1–2 ноября (Online), 9-10 ноября (Offline, Санкт-Петербург)
Подробности и билеты: https://cutt.ly/XwrLVnLV…
— Ближайшая конференция: Mobius 2023 Autumn — 1–2 ноября (Online), 9-10 ноября (Offline, Санкт-Петербург)
Подробности и билеты: https://cutt.ly/XwrLVnLV…
Forwarded from Открытая мобильная платформа
Приложения для Авроры будут публиковаться в RuStore. Скоро в мобильном приложении. https://www.omp.ru/news1/tpost/soj12068f1-natsionalnaya-mobilnaya-ekosistema-avror
www.omp.ru
Национальная мобильная экосистема Аврора планирует сделать RuStore своим основным публичным магазином приложений
Стартовала разработка RuStore для мобильной операционной системы Аврора
🤡3👍1🖕1🆒1