💉 💉 🤖 Kodein DI для Android
В мире DI (dependency injection) есть Dagger 2, Hilt или Koin. Есть еще Kodein ‼️
Он создавался изначально как DI для Kotlin (в то время для Android все DI были написаны на Java). Отсюда он и получил своё название — KOtlin DEpendency INjection. Поэтому за основы были взяты новые возможности, которые давал Kotlin, в отличие от Java:
➖ декларативный DSL,
➖inline функции и reified типы,
➖ infix функции.
Кто же он: DI или Service Locator
Service Locator — это паттерн, когда мы запрашиваем и получаем зависимости.
DI — это паттерн, когда наши классы получают зависимости откуда-то извне.
Опираясь на официальную доку, Kodein — это все вместе:
👉 если мы инджектим зависимости, то у нас режим Injection (DI);
👉 если мы запрашиваем и получаем зависимости, то у нас режим Retrieval (Service Locator)
Хотите подробностей? Вот!
#новость
В мире DI (dependency injection) есть Dagger 2, Hilt или Koin. Есть еще Kodein ‼️
Он создавался изначально как DI для Kotlin (в то время для Android все DI были написаны на Java). Отсюда он и получил своё название — KOtlin DEpendency INjection. Поэтому за основы были взяты новые возможности, которые давал Kotlin, в отличие от Java:
➖ декларативный DSL,
➖inline функции и reified типы,
➖ infix функции.
Кто же он: DI или Service Locator
Service Locator — это паттерн, когда мы запрашиваем и получаем зависимости.
DI — это паттерн, когда наши классы получают зависимости откуда-то извне.
Опираясь на официальную доку, Kodein — это все вместе:
👉 если мы инджектим зависимости, то у нас режим Injection (DI);
👉 если мы запрашиваем и получаем зависимости, то у нас режим Retrieval (Service Locator)
Хотите подробностей? Вот!
#новость
👍6❤1🥰1🥱1
В веселенькой форме познаем синглтон 😂
Синглтон гарантирует, что у определенного класса есть только один экземпляр, и предоставляет способ доступа к его экземпляру из любой точки кода. Это может показаться тривиальным, но возможности, которыми он обладает для последовательного поддержания состояния в разных частях приложения, часто бывают очень крутыми.
Ничего не понятно 😂😂 Поймем лучше на примере.
У вас есть универсальный пульт дистанционного управления (Singleton), управляющий всеми электронными девайсами в доме. Вам не понадобятся отдельные пульты (экземпляры) для каждого устройства, и где бы вы ни находились, вы знаете, что есть только один пульт (экземпляр), который нужно искать.
Преимущества синглтона 🌟
🔹 Общий доступ: Любая часть вашего приложения может получить доступ к Singleton.
🔹 Управление состоянием: Если бы наш универсальный пульт дистанционного управления имел функцию «last-used», он был бы последовательным, независимо от того, кто обращался к нему последним.
🔹 Управление ресурсами: Иногда создание нескольких экземпляров может быть дорогостоящим. С синглтонами вы управляете только одним.
Подробнее читаем здесь
Синглтон гарантирует, что у определенного класса есть только один экземпляр, и предоставляет способ доступа к его экземпляру из любой точки кода. Это может показаться тривиальным, но возможности, которыми он обладает для последовательного поддержания состояния в разных частях приложения, часто бывают очень крутыми.
Ничего не понятно 😂😂 Поймем лучше на примере.
У вас есть универсальный пульт дистанционного управления (Singleton), управляющий всеми электронными девайсами в доме. Вам не понадобятся отдельные пульты (экземпляры) для каждого устройства, и где бы вы ни находились, вы знаете, что есть только один пульт (экземпляр), который нужно искать.
Преимущества синглтона 🌟
🔹 Общий доступ: Любая часть вашего приложения может получить доступ к Singleton.
🔹 Управление состоянием: Если бы наш универсальный пульт дистанционного управления имел функцию «last-used», он был бы последовательным, независимо от того, кто обращался к нему последним.
🔹 Управление ресурсами: Иногда создание нескольких экземпляров может быть дорогостоящим. С синглтонами вы управляете только одним.
Подробнее читаем здесь
👍4
🔍Насколько легко «войти в айти»?
IT — перспективная отрасль с высокими зарплатами и огромной конкуренцией. Собираем ваши истории: расскажите, как вам удалось сменить профессию (или сразу найти себя), какие шаги вы для этого предприняли и с какими сложностями пришлось столкнуться.
👉Пройдите наш 10-минутный опрос по ссылке.
IT — перспективная отрасль с высокими зарплатами и огромной конкуренцией. Собираем ваши истории: расскажите, как вам удалось сменить профессию (или сразу найти себя), какие шаги вы для этого предприняли и с какими сложностями пришлось столкнуться.
👉Пройдите наш 10-минутный опрос по ссылке.
👍1
Jetpack Compose: осваиваем состояния
Состояние в Jetpack Compose — это то, с чем приходится сталкиваться примерно в 90% случаев в проектах, поэтому важно иметь представление, что это, и с чем его едят.
MutableState — это интерфейс, который содержит значение, которое можно изменить. Этот объект запускает рекомпозицию при изменении значения. Когда появляется новое значение, он проверяет, изменилось ли новое значение структурно — отличаются ли свойства старого объекта от свойств нового.
Всю эту деятельность можно контролировать:
➖ structuralEqualityPolicy() - распознает изменения, основанные на структурных изменениях объекта.
➖ neverEqualPolicy() - сравнивает отличия старого и нового объектов
➖ referentialEqualityPolicy() - учитывает изменение, если ссылка на память старого объекта отличается от ссылки на память нового.
#новость
Состояние в Jetpack Compose — это то, с чем приходится сталкиваться примерно в 90% случаев в проектах, поэтому важно иметь представление, что это, и с чем его едят.
MutableState — это интерфейс, который содержит значение, которое можно изменить. Этот объект запускает рекомпозицию при изменении значения. Когда появляется новое значение, он проверяет, изменилось ли новое значение структурно — отличаются ли свойства старого объекта от свойств нового.
Всю эту деятельность можно контролировать:
➖ structuralEqualityPolicy() - распознает изменения, основанные на структурных изменениях объекта.
➖ neverEqualPolicy() - сравнивает отличия старого и нового объектов
➖ referentialEqualityPolicy() - учитывает изменение, если ссылка на память старого объекта отличается от ссылки на память нового.
#новость
👍7
😱 Как выйти из IT: опасный бизнес 💣
По каким критериям оценивается программист? Что хочет бизнес? Как просить повышения? Когда стоит увольняться? Как быстро расти в компании?
Вышел новый видос-интервью Гладкова.
Это видео не для новичков. Оно для тех, кто уже все познал в мире программирования и хочет двигаться дальше. Но также оно и для новичков, потому что позволит вам взглянуть на ваше дело глазами другой стороны, глазами человека, который был программистом, а теперь думает как бизнесмен.
#новость
По каким критериям оценивается программист? Что хочет бизнес? Как просить повышения? Когда стоит увольняться? Как быстро расти в компании?
Вышел новый видос-интервью Гладкова.
Это видео не для новичков. Оно для тех, кто уже все познал в мире программирования и хочет двигаться дальше. Но также оно и для новичков, потому что позволит вам взглянуть на ваше дело глазами другой стороны, глазами человека, который был программистом, а теперь думает как бизнесмен.
#новость
👍1
🚙🚙 Подъехал очень познавательный материал по основам алгоритмов.
Это отличный вариант подтянуть знания, которые точно пригодятся на собесе, да и в работе 100%.
Штука эта интерактивная, состоящая из секций с чекбоксами. Некоторые из тем: техники проектирования алгоритмов, решение практических задач по программированию, последовательные алгоритмы и далее по списку.
Рекомендуем ознакомиться 👍
#новость
Это отличный вариант подтянуть знания, которые точно пригодятся на собесе, да и в работе 100%.
Штука эта интерактивная, состоящая из секций с чекбоксами. Некоторые из тем: техники проектирования алгоритмов, решение практических задач по программированию, последовательные алгоритмы и далее по списку.
Рекомендуем ознакомиться 👍
#новость
👍7
😎 Очередной #дайджест полезных статей по мобильной разработке
👉 Как получить работу в Apple без колледжа и LeetCode — реалистичная история попавшего в I-чертоги, без всяких «я не спал, прошел курс и теперь я тут»
👉 Как не забросить свой пет-проект. Мой кейс запуска приложения в App Store — как замотивироваться на долгострой (и не сдуться) с помощью посторонних
👉 Скрипт для автоматической сборки Android-приложений — запускаем скрипт (с сигнатурой ключа Google Play) из командной строки и ждем. Класс, же?!
👉 Одно PWA, чтоб править всеми —- зачем писать PWA, если есть нативные приложения? Практика-практика-практика
👉 Фишки React Native для реализации личного кабинета — создание интерфейса с прослушиванием аудиозаписей с помощью React Native Track Player и графиками на Bridge
👉 Миграция приложения на Jetpack Compose — объемный материал про подводные камни, возможности и стратегии миграции UI, архитектуры и дизайн-системы
👉 Как получить работу в Apple без колледжа и LeetCode — реалистичная история попавшего в I-чертоги, без всяких «я не спал, прошел курс и теперь я тут»
👉 Как не забросить свой пет-проект. Мой кейс запуска приложения в App Store — как замотивироваться на долгострой (и не сдуться) с помощью посторонних
👉 Скрипт для автоматической сборки Android-приложений — запускаем скрипт (с сигнатурой ключа Google Play) из командной строки и ждем. Класс, же?!
👉 Одно PWA, чтоб править всеми —- зачем писать PWA, если есть нативные приложения? Практика-практика-практика
👉 Фишки React Native для реализации личного кабинета — создание интерфейса с прослушиванием аудиозаписей с помощью React Native Track Player и графиками на Bridge
👉 Миграция приложения на Jetpack Compose — объемный материал про подводные камни, возможности и стратегии миграции UI, архитектуры и дизайн-системы
👍2
Сколько времени вы уделяете обучению?
Anonymous Poll
32%
1-3 часа в день
23%
Пару часов в неделю
4%
Не обучаюсь я уже - достаточно!
7%
Более 4 часов в день
31%
После работы ничего не хочется
4%
Свой вариант
🤔3🎉1
Делаем бизнес на опенсорсе
Видос с основателем крупной компании, который расскажет о своем пути из команды MySQL, в свое дело, которое успешно функционирует до сих пор.
Все развивалось, казалось бы, по одному пути: получил опыт, создал блог, создал компанию, реклама компании в блоге — все стандартно, но история хорошо выстрелила и из нее можно почерпнуть что-то полезное.
Смотреть
#новость
Видос с основателем крупной компании, который расскажет о своем пути из команды MySQL, в свое дело, которое успешно функционирует до сих пор.
Все развивалось, казалось бы, по одному пути: получил опыт, создал блог, создал компанию, реклама компании в блоге — все стандартно, но история хорошо выстрелила и из нее можно почерпнуть что-то полезное.
Смотреть
#новость
❤1👍1
🕹️Наткнулись мы тут на создание красивой анимированной кнопки авторизации на SwiftUI и делимся с вами видосиком.
Создание крутой кнопки
Создание крутой кнопки
❤3
❗Ищем копирайтера
Нам нужен человек, который:
— Любит IT и русский язык.
— Понимает разницу между бэкендом и фронтендом, OWASP и MISRA, функциональным программированием и ООП, микроконтроллером и миникомпьютером, UX и UI.
— Имеет опыт работы от 1 года.
— Будет плюсом, если вы программируете на каком-нибудь языке на уровне стажера/джуна.
Что нужно делать:
— Готовить подборки, ТОПы книг, ютуб- и телеграм-каналов по языкам программирования.
— Делать расшифровки топовых Ютуб-роликов по теме программирования и оформлять их в виде статей.
— Готовить новостные заметки.
— Актуализировать старые статьи.
— Брать интервью у экспертов. Мы поможем с поиском экспертов.
— Иногда писать небольшие рекламные посты в телеграм.
— Писать статьи с кодом, переводить статьи (по желанию, оплачивается отдельно).
Можно использовать нейронки?
— Да, главное, чтобы материал получился интересный.
Условия:
— Белая зарплата: 50 000 руб.
— Возможность работать удаленно.
👉Присылайте свои резюме: hello@proglib.io
Нам нужен человек, который:
— Любит IT и русский язык.
— Понимает разницу между бэкендом и фронтендом, OWASP и MISRA, функциональным программированием и ООП, микроконтроллером и миникомпьютером, UX и UI.
— Имеет опыт работы от 1 года.
— Будет плюсом, если вы программируете на каком-нибудь языке на уровне стажера/джуна.
Что нужно делать:
— Готовить подборки, ТОПы книг, ютуб- и телеграм-каналов по языкам программирования.
— Делать расшифровки топовых Ютуб-роликов по теме программирования и оформлять их в виде статей.
— Готовить новостные заметки.
— Актуализировать старые статьи.
— Брать интервью у экспертов. Мы поможем с поиском экспертов.
— Иногда писать небольшие рекламные посты в телеграм.
— Писать статьи с кодом, переводить статьи (по желанию, оплачивается отдельно).
Можно использовать нейронки?
— Да, главное, чтобы материал получился интересный.
Условия:
— Белая зарплата: 50 000 руб.
— Возможность работать удаленно.
👉Присылайте свои резюме: hello@proglib.io
❤3🤔3
По ту сторону фидбека: как проходят Android-собеседования
Всем понятно, что одна сторона этого действа ищет команду, где научится чему-то, вырастет в крутого специалиста, а другая — плечо, на которое можно положиться и доверить задачи.
Любой современный собес проходит в несколько этапов, а бывает и в несколько подходов. Про всю эту кухню подробно расскажут в этом материале. Будет интересно 🧑🍳
#новость
Всем понятно, что одна сторона этого действа ищет команду, где научится чему-то, вырастет в крутого специалиста, а другая — плечо, на которое можно положиться и доверить задачи.
Любой современный собес проходит в несколько этапов, а бывает и в несколько подходов. Про всю эту кухню подробно расскажут в этом материале. Будет интересно 🧑🍳
#новость
❤2
🚒🚒🚒 Оперативно подвезли новый Kotlin 1.9.10
Пофиксили много багов, среди них, самые интересные:
В компиляторе:
KT-60659 unresolved reference: addFirst в JDK 21
KT-60986 Статические кеши в рантайме на Linux
KT-60231 NoClassDefFoundError: $$$$$NON_LOCAL_RETURN$$$$$ после обновы до 1.9.0
Gradle:
KT-61147 Компилятор 1.9.0 и Gson
KT-60543 NoClassDefFoundError для com/gradle/scan/plugin/BuildScanExtension
Native:
KT-60230 "unknown options: -ios_simulator_version_min -sdk_version" на Xcode 15 beta 3
KT-60758 'iOS-simulator' в dylib сборке для 'iOS' в Xcode 15 beta 4
#новость
Пофиксили много багов, среди них, самые интересные:
В компиляторе:
KT-60659 unresolved reference: addFirst в JDK 21
KT-60986 Статические кеши в рантайме на Linux
KT-60231 NoClassDefFoundError: $$$$$NON_LOCAL_RETURN$$$$$ после обновы до 1.9.0
Gradle:
KT-61147 Компилятор 1.9.0 и Gson
KT-60543 NoClassDefFoundError для com/gradle/scan/plugin/BuildScanExtension
Native:
KT-60230 "unknown options: -ios_simulator_version_min -sdk_version" на Xcode 15 beta 3
KT-60758 'iOS-simulator' в dylib сборке для 'iOS' в Xcode 15 beta 4
#новость
🔥3
Вопрос по Kotlin
#вопросы_с_собеседований
Что такое reified?
...............................................................................................................
reified — это ключевое слово, которое может быть использовано только в inline-функциях. reified позволяет получить информацию о типе generic-параметра во время выполнения программы. В обычном случае, информация о типах стирается и недоступна во время выполнения, но с помощью reified можно сохранять эту информацию и использовать в других частях приложения.
#вопросы_с_собеседований
Что такое reified?
...............................................................................................................
👍5🌚3❤1👾1
😎 Очередной #дайджест полезных статей мира Mobile:
👉 Анализ производительности для ускорения сборок в Xcode — Xcode Build Timeline для изменения скорости сборки, а Build Timing Summary для анализа производительности
👉 Swift 6: подготовьте ваши проекты к будущему — подготовить async/await, existential и макросы, а остальное уже по месту
👉 Jetpack Compose Tricks: модификаторы для Dynamic UIs — работа с модификаторами с примерами кода
👉 Ultron — простые, стабильные, поддерживаемые тесты Android UI
👉 Создание расширения Chrome с помощью Flutter — всего 5 этапов и приложение готово. Главное не забыть поддержку вэба включить 😉
👉 Домашняя автоматизация на Flutter — использование Flutter для отправки команд подключенным смарт-вилкам и устройствам, установленным по всему дому
👉 Анализ производительности для ускорения сборок в Xcode — Xcode Build Timeline для изменения скорости сборки, а Build Timing Summary для анализа производительности
👉 Swift 6: подготовьте ваши проекты к будущему — подготовить async/await, existential и макросы, а остальное уже по месту
👉 Jetpack Compose Tricks: модификаторы для Dynamic UIs — работа с модификаторами с примерами кода
👉 Ultron — простые, стабильные, поддерживаемые тесты Android UI
👉 Создание расширения Chrome с помощью Flutter — всего 5 этапов и приложение готово. Главное не забыть поддержку вэба включить 😉
👉 Домашняя автоматизация на Flutter — использование Flutter для отправки команд подключенным смарт-вилкам и устройствам, установленным по всему дому
❤2👍2
Кастомные модификаторы в Android Jetpack Compose
Модификаторы в Jetpack Compose — это функции, преобразующие или улучшающие поведение и внешний вид composable-материалов. Jetpack Compose поставляется со встроенными модификаторами, но пользовательские модификаторы позволяют расширить возможности фреймворка, создавая свои собственные индивидуальные изменения.
Зачем их применять?
Абстракция и переиспользование — модификаторы инкапсулируют сложное поведение или визуальные модификации в единую функцию. Эта абстракция способствует повторному использованию в различных частях вашего приложения.
Организация кода — обеспечивается чистота и упорядоченность кода за счет выделения определенного поведения внутри функции-модификатора. Такое разделение повышает удобство обслуживания и читабельность.
Компонуемость — инкапсулируя функциональность в пользовательские модификаторы, вы можете создавать модульные компоненты UI.
Подробнее
#новость
Модификаторы в Jetpack Compose — это функции, преобразующие или улучшающие поведение и внешний вид composable-материалов. Jetpack Compose поставляется со встроенными модификаторами, но пользовательские модификаторы позволяют расширить возможности фреймворка, создавая свои собственные индивидуальные изменения.
Зачем их применять?
Абстракция и переиспользование — модификаторы инкапсулируют сложное поведение или визуальные модификации в единую функцию. Эта абстракция способствует повторному использованию в различных частях вашего приложения.
Организация кода — обеспечивается чистота и упорядоченность кода за счет выделения определенного поведения внутри функции-модификатора. Такое разделение повышает удобство обслуживания и читабельность.
Компонуемость — инкапсулируя функциональность в пользовательские модификаторы, вы можете создавать модульные компоненты UI.
Подробнее
#новость
❤4
Konsist — это статический анализатор кода Kotlin. Он облегчает стандартизацию кода, применяя соглашения о кодировании и защищая архитектуру проекта. Позволяет выполнять проверку согласованности в виде модульных тестов, которые предназначены для выполнения на уровне запроса на извлечение (PR) в качестве проверки подлинности.
Софт пока в разработке, а статус можно узнать тут.
#новость
Софт пока в разработке, а статус можно узнать тут.
#новость
👍6
29 августа, в 18:30 пройдет митап iOS-разработчиков со специалистами из ЮMoney, Сбера и ВКонтакте.
Что будет:
➖ Четыре свежих доклада
➖ Опыт разработчиков ЮMoney, Сбера и ВКонтакте, общение со спикерами
➖ Вопросы и ответы
Доклады:
➖ Кодогенерация из OpenAPI — как перестать писать код для работы с API и подружиться с кодогенератором.
➖ Сердце Большого Проекта — как держать пульс технологий, управлять ростом и обеспечивать бесперебойность.
➖ Зачем автоверсионирование и как сделать его правильно — почему стоит сделать на проекте автоверсионирование и как его сделать, чтобы было удобно им пользоваться.
➖ Разработка платёжного SDK — как быстро встроить mSDK в мобильные сценарии, чтобы он был удобным способом принимать деньги.
Регистрация
Что будет:
➖ Четыре свежих доклада
➖ Опыт разработчиков ЮMoney, Сбера и ВКонтакте, общение со спикерами
➖ Вопросы и ответы
Доклады:
➖ Кодогенерация из OpenAPI — как перестать писать код для работы с API и подружиться с кодогенератором.
➖ Сердце Большого Проекта — как держать пульс технологий, управлять ростом и обеспечивать бесперебойность.
➖ Зачем автоверсионирование и как сделать его правильно — почему стоит сделать на проекте автоверсионирование и как его сделать, чтобы было удобно им пользоваться.
➖ Разработка платёжного SDK — как быстро встроить mSDK в мобильные сценарии, чтобы он был удобным способом принимать деньги.
Регистрация
❤3
История боли джунов не нова — их никто не берет на работу, как ее вообще искать, вакансий очень мало, после курсов обещают успешный успех сразу за порогом😞. Есть рекомендации врать на счет опыта, приукрасить свои навыки, но сказка закончится на первой задаче.
Нам попался видос, где объясняют, как честным путем попасть на первую работу, как пройти собес, что нужно знать и как не бояться, как оценивают, на что обращают внимание, что будет после стажировки.
Нам попался видос, где объясняют, как честным путем попасть на первую работу, как пройти собес, что нужно знать и как не бояться, как оценивают, на что обращают внимание, что будет после стажировки.
❤3😁2