👾 Кодогенерация: кому нужна и как настроить
Кодогенерация — замечательный инструмент, но его нужно использовать обдуманно. Злоупотребление кодогенерацией может ограничить возможности кастомизации, однако это, в свою очередь, заставляет команды работать эффективнее.
В этой статье автор расскажет о кодогенерации в мобильной разработке: кто действительно нуждается в ней, как она применяется на практике и какую ценность можно извлечь из этого процесса.
👉 Читать статью
#новость
Кодогенерация — замечательный инструмент, но его нужно использовать обдуманно. Злоупотребление кодогенерацией может ограничить возможности кастомизации, однако это, в свою очередь, заставляет команды работать эффективнее.
В этой статье автор расскажет о кодогенерации в мобильной разработке: кто действительно нуждается в ней, как она применяется на практике и какую ценность можно извлечь из этого процесса.
👉 Читать статью
#новость
❤3
👾 Свойства, методы get и set
Свойства класса — это переменные, которые хранят состояние объекта класса. Как и любая переменная, свойство может иметь тип, имя и значение.
В классе можно объявить свойства с помощью ключевого слова
При создании своего класса мы хотим сами управлять его свойствами, контролируя то, какие данные могут быть предоставлены или перезаписаны. С этой целью создаются get и set методы (геттеры и сеттеры). Цель get-метода — вернуть значение, а set-метода — записать полученное значение в свойство класса.
В данном примере свойство
Если get и set методы не были созданы вручную, то для таких свойств Kotlin незаметно сам их генерирует. При этом для свойства, объявленного с
#kotlin
Свойства класса — это переменные, которые хранят состояние объекта класса. Как и любая переменная, свойство может иметь тип, имя и значение.
В классе можно объявить свойства с помощью ключевого слова
var
или val
. Свойства, объявленные с var
, могут быть изменены после их инициализации, а свойства, объявленные с val
, только для чтения.class Person {
var name: String = «»
val age: Int = 0
}
При создании своего класса мы хотим сами управлять его свойствами, контролируя то, какие данные могут быть предоставлены или перезаписаны. С этой целью создаются get и set методы (геттеры и сеттеры). Цель get-метода — вернуть значение, а set-метода — записать полученное значение в свойство класса.
var name: String = «»
get() = field.toUpperCase()set(value) {
field = «Name: $value»
}
В данном примере свойство
name
имеет тип String
и начальное значение пустой строки. Геттер возвращает значение свойства, преобразованное к верхнему регистру. Сеттер устанавливает значение свойства с добавлением префикса «Name: "
перед переданным значением. Слово field
используется для обращения к текущему значению свойства.Если get и set методы не были созданы вручную, то для таких свойств Kotlin незаметно сам их генерирует. При этом для свойства, объявленного с
val
, генерируется get-метод, а для свойства, объявленного с var
— и get, и set методы.#kotlin
❤2👍1
⚙️ Корутины в Kotlin: как сделать «Optimised Out» переменные видимыми
Отладка корутинов в Kotlin иногда может напоминать распутывание паутины невидимых нитей — в буквальном смысле. Одна из распространенных ошибок, с которой сталкиваются разработчики — появление страшного сообщения «optimised out» при проверке переменных в приостановленной корутине.
В этой статье автор расскажет, как динамически включать удобные для отладки настройки с помощью свойства
👉 Читать статью
#новость #android #kotlin
Отладка корутинов в Kotlin иногда может напоминать распутывание паутины невидимых нитей — в буквальном смысле. Одна из распространенных ошибок, с которой сталкиваются разработчики — появление страшного сообщения «optimised out» при проверке переменных в приостановленной корутине.
В этой статье автор расскажет, как динамически включать удобные для отладки настройки с помощью свойства
idea.active
, что позволит вам проверять переменные корутин в IntelliJ IDEA и Android Studio без ущерба для производительности.👉 Читать статью
#новость #android #kotlin
❤2😁1
🔧 Строим архитектуру для SwiftUI
SwiftUI фундаментально отличается от UIKit, поэтому он требует своего подхода к архитектуре. Известные паттерны, такие как MVP, MVVM и другие, в чистом виде не адаптированы под особенности SwiftUI.
В статье автор рассказывает о создании собственной архитектуры для разработки на SwiftUI.
👉 Читать статью
#новость #ios #swift
SwiftUI фундаментально отличается от UIKit, поэтому он требует своего подхода к архитектуре. Известные паттерны, такие как MVP, MVVM и другие, в чистом виде не адаптированы под особенности SwiftUI.
В статье автор рассказывает о создании собственной архитектуры для разработки на SwiftUI.
👉 Читать статью
#новость #ios #swift
😁4❤1🥱1
👨💻 Blueprint — декларативный UI-конструктор
Blueprint предоставляет архитектуру, которая позволяет декларативно определять иерархию пользовательского интерфейса с помощью значений (структур и перечислений Swift), отображать эту иерархию в приложении, обновлять её при изменении состояния приложения (включая анимированные переходы).
Blueprint появился раньше SwiftUI и работает немного по-другому. Вы можете разместить BlueprintView в SwiftUI, чтобы встроить Blueprint в SwiftUI, а также использовать предоставленный ElementView для создания предварительных просмотров Blueprint в Xcode.
⚙️ Blueprint на GitHub
#новость #ios
Blueprint предоставляет архитектуру, которая позволяет декларативно определять иерархию пользовательского интерфейса с помощью значений (структур и перечислений Swift), отображать эту иерархию в приложении, обновлять её при изменении состояния приложения (включая анимированные переходы).
Blueprint появился раньше SwiftUI и работает немного по-другому. Вы можете разместить BlueprintView в SwiftUI, чтобы встроить Blueprint в SwiftUI, а также использовать предоставленный ElementView для создания предварительных просмотров Blueprint в Xcode.
⚙️ Blueprint на GitHub
#новость #ios
❤4
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
Представьте, вы попали на собеседование мечты. Всё идёт гладко, но пара неудачных фраз могут свести на нет все ваши старания. Например, если вы слишком скромны или, наоборот, перегибаете с самоуверенностью, это может вызвать недоверие. Или фраза, которая должна показать вашу гибкость, внезапно делает акцент на недостатке опыта. Знакомо?
Есть проверенные подходы, которые помогут избежать таких ситуаций, выстроить грамотное общение и оставить положительное впечатление. Готовы узнать больше? 🌟
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
✍️ Открытая редакция: ищем авторов для рубрики DevLife
Друзья, нас часто спрашивают про публикацию материалов о личном опыте и знаниях в IT. Пора это систематизировать!
Пишите нам, если у вас есть история о том, как вы:
• выросли в профессии
• освоили новые технологии
• сделали крутой карьерный скачок
• эпично лажанулись
• создали интересные проекты
Требования к статье простые:
• Реальный опыт
• Конкретные шаги
• От 5000 знаков
• Ссылка на Google Docs
Лучшие истории опубликуем на сайте и в наших соцсетях с общим охватом 1 млн+ человек.
⚡ ️Присылайте свои статьи на почту [email protected] с темой «DevLife»
Друзья, нас часто спрашивают про публикацию материалов о личном опыте и знаниях в IT. Пора это систематизировать!
Пишите нам, если у вас есть история о том, как вы:
• выросли в профессии
• освоили новые технологии
• сделали крутой карьерный скачок
• эпично лажанулись
• создали интересные проекты
Требования к статье простые:
• Реальный опыт
• Конкретные шаги
• От 5000 знаков
• Ссылка на Google Docs
Лучшие истории опубликуем на сайте и в наших соцсетях с общим охватом 1 млн+ человек.
⚡ ️Присылайте свои статьи на почту [email protected] с темой «DevLife»
😁2
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
🚙 Переезжаем с фрагментов на (De)compose
В процессе перевода проекта на Jetpack Compose рано или поздно появляются вопросы: зачем нужны фрагменты, активити и вьюмодели, ведь можно реализовать навигацию прямо между Composable-функциями.
В приложении Мой Beeline разработчики двигаются в сторону компонентного подхода с помощью Decompose, так как он показался им самым надёжным и стройным в своей красоте.
Своим докладом автор хочет показать, что жизнь за пределами стека Google существует. А также поделиться опытом, учитывая количество существующего кода, модульность проекта и стремление остаться в балансе с простотой решения.
👀 Смотреть доклад
#новость #android
В процессе перевода проекта на Jetpack Compose рано или поздно появляются вопросы: зачем нужны фрагменты, активити и вьюмодели, ведь можно реализовать навигацию прямо между Composable-функциями.
В приложении Мой Beeline разработчики двигаются в сторону компонентного подхода с помощью Decompose, так как он показался им самым надёжным и стройным в своей красоте.
Своим докладом автор хочет показать, что жизнь за пределами стека Google существует. А также поделиться опытом, учитывая количество существующего кода, модульность проекта и стремление остаться в балансе с простотой решения.
👀 Смотреть доклад
#новость #android
😁3🥰2
🍏 typealias в Swift
Вы можете создать его следующим образом:
Теперь вы можете использовать
#swift
Typealias
, как следует из названия, является псевдонимом для существующего типа данных.Вы можете создать его следующим образом:
typealias Weight = Float
Теперь вы можете использовать
Weight
вместо Float
:let mass1: Weight = 150.0
let mass2: Weight = 220.0
let total: Weight = mass1 + mass2
#swift
🥱5❤3
📦 MMKV — эффективное key-valu хранилище от Tencent
MMKV — это эффективный, небольшой и простой в использовании мобильный фреймворк для хранения ключевых значений (key-value), используемый Tencent в приложении WeChat. В настоящее время он доступен для Android, iOS/macOS, Windows, POSIX и HarmonyOS NEXT.
Фичи:
🔹 эффективность — MMKV использует mmap для синхронизации памяти с файлами и protobuf для кодирования/декодирования значений, максимально используя возможности Android для достижения наилучшей производительности;
🔹 многопроцессный параллелизм — MMKV поддерживает одновременный доступ процессов к чтению-чтению и чтению-записи;
🔹 простота — можно использовать MMKV по мере необходимости, все изменения сохраняются немедленно;
🔹 небольшой — 50K в бинарнике.
⚙️ MMKV на GitHub
#новость #android
MMKV — это эффективный, небольшой и простой в использовании мобильный фреймворк для хранения ключевых значений (key-value), используемый Tencent в приложении WeChat. В настоящее время он доступен для Android, iOS/macOS, Windows, POSIX и HarmonyOS NEXT.
Фичи:
🔹 эффективность — MMKV использует mmap для синхронизации памяти с файлами и protobuf для кодирования/декодирования значений, максимально используя возможности Android для достижения наилучшей производительности;
🔹 многопроцессный параллелизм — MMKV поддерживает одновременный доступ процессов к чтению-чтению и чтению-записи;
🔹 простота — можно использовать MMKV по мере необходимости, все изменения сохраняются немедленно;
🔹 небольшой — 50K в бинарнике.
⚙️ MMKV на GitHub
#новость #android
❤1🥰1
📱 YPay & YPay Inventory для Flutter — приложений
В этой статье автор делится опытом работы над YPay и YPay inventory для Flutter, рассказывает про возможности библиотек и как их использовать, а также о проблемах, с которыми столкнулся. В полезных ссылках указано всё необходимое для желающих подробнее узнать о Яндекс Пэй.
Может, после прочтения появится желание интегрировать библиотеки в своё мобильное приложение 📚
👉 Читать статью
#новость #flutter
В этой статье автор делится опытом работы над YPay и YPay inventory для Flutter, рассказывает про возможности библиотек и как их использовать, а также о проблемах, с которыми столкнулся. В полезных ссылках указано всё необходимое для желающих подробнее узнать о Яндекс Пэй.
Может, после прочтения появится желание интегрировать библиотеки в своё мобильное приложение 📚
👉 Читать статью
#новость #flutter
❤2
🌵🕵️♂ Git-квест: 10 испытаний для повелителя репозиториев
От простого push до таинственного cherry-pick — пройдите все уровни нашего Git-квеста и докажите, что достойны звания Git-мастера.
✅ Пройти тест
От простого push до таинственного cherry-pick — пройдите все уровни нашего Git-квеста и докажите, что достойны звания Git-мастера.
✅ Пройти тест
😁10
📝 Вызов защищённого API из iOS-приложения на Swift
Как Swift‑разработчику, в какой‑то момент вам, скорее всего, понадобится добавить в своё приложение аутентификацию пользователей или, как её ещё называют, логин и логаут.
В этой статье автор показывает, как настроить Auth0 для получения токена доступа OAuth 2.0, который позволит вам безопасно, надёжно и от имени пользователя вызывать защищённый API из вашего приложения.
👉 Читать статью
#новость #ios #swift
Как Swift‑разработчику, в какой‑то момент вам, скорее всего, понадобится добавить в своё приложение аутентификацию пользователей или, как её ещё называют, логин и логаут.
В этой статье автор показывает, как настроить Auth0 для получения токена доступа OAuth 2.0, который позволит вам безопасно, надёжно и от имени пользователя вызывать защищённый API из вашего приложения.
👉 Читать статью
#новость #ios #swift
🔥2
📱 Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
🔹 Костыли, костыли и ещё раз костыли. Или поддержка ios15 на SwiftUI
🔹 SwiftUI: алхимия приложений — превращаем идеи в реальность
🔹 Go в GUI, я создал
🔹 Как устроена разработка в Яндекс.Клавиатуре
🔹 CodeStyle на Flutter-проектах: базовые принципы и правила — шаблон на все случаи жизни
#дайджест
🔹 Костыли, костыли и ещё раз костыли. Или поддержка ios15 на SwiftUI
🔹 SwiftUI: алхимия приложений — превращаем идеи в реальность
🔹 Go в GUI, я создал
🔹 Как устроена разработка в Яндекс.Клавиатуре
🔹 CodeStyle на Flutter-проектах: базовые принципы и правила — шаблон на все случаи жизни
#дайджест
👍4🎉1
👾 Kotlinx.serialization и работа с JSON
Наверное, все мы хотя бы раз сталкивались с задачей сериализации данных, будь то обмен данными с сервером, сохранение состояния объекта в файл или передача данных между различными приложениями. В Kotlin для этих целей удобно использовать библиотеку Kotlinx.serialization, которая позволяет работать с данными, сериализуя и десериализуя их в различные форматы, такие как JSON, CBOR, и Protocol Buffers.
В статье автор рассказывает, как настроить и использовать kotlinx.serialization в своём проекте, а также показывает примеры эффективной работы с JSON.
👉 Читать статью
#новость #kotlin #android
Наверное, все мы хотя бы раз сталкивались с задачей сериализации данных, будь то обмен данными с сервером, сохранение состояния объекта в файл или передача данных между различными приложениями. В Kotlin для этих целей удобно использовать библиотеку Kotlinx.serialization, которая позволяет работать с данными, сериализуя и десериализуя их в различные форматы, такие как JSON, CBOR, и Protocol Buffers.
В статье автор рассказывает, как настроить и использовать kotlinx.serialization в своём проекте, а также показывает примеры эффективной работы с JSON.
👉 Читать статью
#новость #kotlin #android
🥰4👍1
🛠️ Кастомизация лейаутов на Compose
В этом докладе — полноценный обзор средств для кастомизации лейаутов на Compose.
Автор разбирает механизм работы layout-фазы в Compose. Рассказывает, как работают стандартные лейауты, а также какие возможности существуют для написания кастомных. Рассматривает нюансы и хаки, о которых не написано в документации.
👀 Смотреть доклад
#новость #android #kotlin
В этом докладе — полноценный обзор средств для кастомизации лейаутов на Compose.
Автор разбирает механизм работы layout-фазы в Compose. Рассказывает, как работают стандартные лейауты, а также какие возможности существуют для написания кастомных. Рассматривает нюансы и хаки, о которых не написано в документации.
👀 Смотреть доклад
#новость #android #kotlin
❤4👍1
🌐 Такие разные Slivers: обзор и применение во Flutter
Многие из вас наверняка уже знакомы с Slivers, ведь это мощный инструмент для создания динамичных и адаптивных прокручиваемых областей в приложениях Flutter.
В статье автор рассмотрит все существующие sliver-виджеты во Flutter, чтобы познакомиться с каждым из них, понять, какие задачи они решают, и как их можно применять.
👉 Читать статью
#новость #flutter
Многие из вас наверняка уже знакомы с Slivers, ведь это мощный инструмент для создания динамичных и адаптивных прокручиваемых областей в приложениях Flutter.
В статье автор рассмотрит все существующие sliver-виджеты во Flutter, чтобы познакомиться с каждым из них, понять, какие задачи они решают, и как их можно применять.
👉 Читать статью
#новость #flutter
❤2
👾 Преимущества Data-классов в Kotlin
Основное преимущество: для параметров, переданных в основном конструкторе, автоматически будут переопределены методы
Также для каждой переменной, объявленной в основном конструкторе, автоматически генерируются функции
Благодаря этому внутри
#kotlin
Data
-класс предназначен исключительно для хранения каких-либо данных.Основное преимущество: для параметров, переданных в основном конструкторе, автоматически будут переопределены методы
toString()
, equals()
, hashCode()
, copy()
.Также для каждой переменной, объявленной в основном конструкторе, автоматически генерируются функции
componentN()
, где N — номер позиции переменной в конструкторе.Благодаря этому внутри
data
-класса мы исключаем написание шаблонного кода.#kotlin
❤3
🌗 Темы в современных iOS-приложениях с UITraitCollection
Совсем недавно (с iOS 17) Apple представила удобный способ обработки смены тем в приложениях для iOS. Раньше это было довольно сложно, но с появлением UITraitAppearance стало проще.
Эта статья представляет собой законченное описание того, как добавить тематическое оформление в реальное приложение.
👉 Читать статью
#новость #ios #swift
Совсем недавно (с iOS 17) Apple представила удобный способ обработки смены тем в приложениях для iOS. Раньше это было довольно сложно, но с появлением UITraitAppearance стало проще.
Эта статья представляет собой законченное описание того, как добавить тематическое оформление в реальное приложение.
👉 Читать статью
#новость #ios #swift
🥰3
🎨 Как использовать смешивание цветов в SwiftUI
В последнем обновлении SwiftUI Apple представила новую функцию под названием «смешивание цветов». Эта функция открывает новые творческие возможности для разработчиков, позволяя выполнять различные задачи с цветами.
Автор статьи рассматривает смешивание цветов в SwiftUI и его потенциальное применение.
👉 Читать статью
#новость #ios #swift
В последнем обновлении SwiftUI Apple представила новую функцию под названием «смешивание цветов». Эта функция открывает новые творческие возможности для разработчиков, позволяя выполнять различные задачи с цветами.
Автор статьи рассматривает смешивание цветов в SwiftUI и его потенциальное применение.
👉 Читать статью
#новость #ios #swift
🤩2