#Собес #networks
🤔 Назовите три метода аутентификации пользователя.
Три метода аутентификации - это биометрия (например, отпечаток пальца), токен (электронное устройство или карта) и пароль. Для повышения безопасности можно использовать двухфакторную аутентификацию, комбинируя два из этих методов.
👉 Новости 👉 База вопросов
Три метода аутентификации - это биометрия (например, отпечаток пальца), токен (электронное устройство или карта) и пароль. Для повышения безопасности можно использовать двухфакторную аутентификацию, комбинируя два из этих методов.
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Топ-7 утечек памяти Android
Утечки памяти — тихие убийцы производительности приложений. Даже в 2025 году, когда Jetpack Compose доминирует в разработке пользовательских интерфейсов и появляются новые модные инструменты, эти ошибки все еще преследуют разработчиков.
Автор статьи разберет 7 наиболее распространенных виновников и вооружит вас проверенными в бою решениями.
Читать статью
👉 Новости 👉 База вопросов
Утечки памяти — тихие убийцы производительности приложений. Даже в 2025 году, когда Jetpack Compose доминирует в разработке пользовательских интерфейсов и появляются новые модные инструменты, эти ошибки все еще преследуют разработчиков.
Автор статьи разберет 7 наиболее распространенных виновников и вооружит вас проверенными в бою решениями.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Как ускорить релизную сборку
Из всех докладов на Mobius, которые мне удалось посмотреть, могу выделить классный доклад о том, как в Т-Банке случайно ускорили релизную сборку в два раза.
Я думаю, у многих в проектах работа R8 занимает больше всего времени из всего процесса сборки, а в крупных проектах выполнение этой таски может доходить до 3 часов — и это требует огромного количества оперативной памяти.
Так что же может значительно увеличивать длительность выполнения этой таски?
1⃣ Неоптимальные правила
Обычно это правила с условием, например, такие встречаются в библиотеке kotlinx-serialization. На них тратится больше всего времени, нужно быть аккуратнее с такими правилами и не дублировать их в своём коде, так как правила для R8 уже поставляются вместе с библиотеками.
2⃣ Огромное количество ресурсов
Таска shrinkResources может потреблять очень много оперативной памяти, и если в вашей дизайн-системе вы предоставляете большую библиотеку иконок, то, возможно, стоит пересмотреть подход и не тащить тысячи иконок, чтобы потом R8 не удалял их очень долго. Как вариант, можно рассмотреть загрузку иконок с CDN по запросу.
А главная проблема в том, что добавление любой библиотеки в проект или изменение правил в одном из модулей может сказаться на времени сборки всего проекта, поэтому нужно не забивать на мониторинг времени сборки приложения и вовремя реагировать на изменения.
👉 Новости 👉 База вопросов
Из всех докладов на Mobius, которые мне удалось посмотреть, могу выделить классный доклад о том, как в Т-Банке случайно ускорили релизную сборку в два раза.
Я думаю, у многих в проектах работа R8 занимает больше всего времени из всего процесса сборки, а в крупных проектах выполнение этой таски может доходить до 3 часов — и это требует огромного количества оперативной памяти.
Так что же может значительно увеличивать длительность выполнения этой таски?
Обычно это правила с условием, например, такие встречаются в библиотеке kotlinx-serialization. На них тратится больше всего времени, нужно быть аккуратнее с такими правилами и не дублировать их в своём коде, так как правила для R8 уже поставляются вместе с библиотеками.
Таска shrinkResources может потреблять очень много оперативной памяти, и если в вашей дизайн-системе вы предоставляете большую библиотеку иконок, то, возможно, стоит пересмотреть подход и не тащить тысячи иконок, чтобы потом R8 не удалял их очень долго. Как вариант, можно рассмотреть загрузку иконок с CDN по запросу.
А главная проблема в том, что добавление любой библиотеки в проект или изменение правил в одном из модулей может сказаться на времени сборки всего проекта, поэтому нужно не забивать на мониторинг времени сборки приложения и вовремя реагировать на изменения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
🛞 Extra Ktor Plugins — это набор мощных плагинов для расширения возможностей Ktor-приложений как на стороне сервера, так и на стороне клиента!
Эти плагины помогают решать распространённые задачи, такие как интеграция с Kafka, планирование задач, ограничение частоты запросов и повышение устойчивости через Circuit Breaker.
Гитхаб
👉 Новости 👉 База вопросов
Эти плагины помогают решать распространённые задачи, такие как интеграция с Kafka, планирование задач, ограничение частоты запросов и повышение устойчивости через Circuit Breaker.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #docker
🤔 Перечислите компоненты Docker.
Docker состоит из трех основных компонентов: Docker Client, Docker Host и Docker Registry. Docker Client взаимодействует с Docker Host, отправляя команды для управления контейнерами, Docker Host управляет контейнерами и их образами, а Docker Registry хранит образы Docker.
👉 Новости 👉 База вопросов
Docker состоит из трех основных компонентов: Docker Client, Docker Host и Docker Registry. Docker Client взаимодействует с Docker Host, отправляя команды для управления контейнерами, Docker Host управляет контейнерами и их образами, а Docker Registry хранит образы Docker.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
😬 Kanji Dojo — это приложение с открытым исходным кодом, предназначенное для изучения японского языка!
Оно помогает пользователям запоминать написание и чтение символов хираганы, катаканы и кандзи, а также изучать их значения и связанные слова. Приложение поддерживает обучение в соответствии с уровнями JLPT или школьными классами, предоставляет возможность создавать собственные наборы для изучения и использовать систему повторения на основе интервалов (SRS) для эффективного запоминания. Кроме того, Kanji Dojo включает встроенный словарь для поиска символов и слов, а также режимы обучения с помощью карточек и написания слов. Приложение работает в офлайн-режиме, что позволяет использовать его без постоянного подключения к интернету.
Гитхаб
👉 Новости 👉 База вопросов
Оно помогает пользователям запоминать написание и чтение символов хираганы, катаканы и кандзи, а также изучать их значения и связанные слова. Приложение поддерживает обучение в соответствии с уровнями JLPT или школьными классами, предоставляет возможность создавать собственные наборы для изучения и использовать систему повторения на основе интервалов (SRS) для эффективного запоминания. Кроме того, Kanji Dojo включает встроенный словарь для поиска символов и слов, а также режимы обучения с помощью карточек и написания слов. Приложение работает в офлайн-режиме, что позволяет использовать его без постоянного подключения к интернету.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒2
#полезное
😊 How to: реализовать кастомный делегат
Чтобы написать кастомный делегат, нужно определить класс, который реализует интерфейс
Классы, реализующие
🟠
🟠
Например, рассмотрим создание кастомного делегата для логирования изменения значения свойства:
Здесь мы определяем класс
Затем мы можем использовать наш кастомный делегат следующим образом:
Здесь мы создаем экземпляр класса
Подробнее в статье
👉 Новости 👉 База вопросов
Чтобы написать кастомный делегат, нужно определить класс, который реализует интерфейс
ReadOnlyProperty для делегата val или ReadWriteProperty для делегата var.Классы, реализующие
ReadOnlyProperty и ReadWriteProperty, содержат два метода:getValue(thisRef: T, property: KProperty<*>): R, который должен возвращать значение свойства.setValue(thisRef: T, property: KProperty<*>, value: R), который должен устанавливать значение свойства.Например, рассмотрим создание кастомного делегата для логирования изменения значения свойства:
class LoggingDelegate(private var value: T) : ReadWriteProperty {override fun getValue(thisRef: Any?, property: KProperty): T {println(«Getting value of ${property.name}: $value»)return value}override fun setValue(thisRef: Any?, property: KProperty, value: T) {println(«Setting value of ${property.name} to $value»)this.value = value}} Здесь мы определяем класс
LoggingDelegate, который реализует интерфейс ReadWriteProperty. Метод getValue выводит в консоль текущее значение свойства и возвращает его, а метод setValue выводит новое значение свойства в консоль и сохраняет его в переменной value.Затем мы можем использовать наш кастомный делегат следующим образом:
class MyClass {var myProperty: Int by LoggingDelegate(0)}fun main() {val obj = MyClass()obj.myProperty = 42 // Setting value of myProperty to 42println(obj.myProperty) // Getting value of myProperty: 42}Здесь мы создаем экземпляр класса
MyClass, который содержит свойство myProperty, использующее наш кастомный делегат LoggingDelegate. При установке значения свойства или получении его значения будут вызываться соответствующие методы нашего делегата, и мы увидим соответствующие сообщения в консоли.Подробнее в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Как K2 mode помогает работать IDE быстрее
Режим K2 вводит новый анализатор кода, общий для компилятора Kotlin и IDE. Он заменяет implicit laziness поэтапным подходом к анализу кода, где каждый этап анализирует определённые части кода и добавляет семантическую информацию в абстрактное синтаксическое дерево (AST). Хотя ядро компилятора остаётся однопоточным, логика разрешения теперь устойчива к параллелизму, что позволяет одновременно анализировать несколько инициализаций
👉 Новости 👉 База вопросов
Режим K2 вводит новый анализатор кода, общий для компилятора Kotlin и IDE. Он заменяет implicit laziness поэтапным подходом к анализу кода, где каждый этап анализирует определённые части кода и добавляет семантическую информацию в абстрактное синтаксическое дерево (AST). Хотя ядро компилятора остаётся однопоточным, логика разрешения теперь устойчива к параллелизму, что позволяет одновременно анализировать несколько инициализаций
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #docker
🤔 Как запустить и остановить Docker-контейнер?
Чтобы запустить Docker-контейнер, используйте команду
👉 Новости 👉 База вопросов
Чтобы запустить Docker-контейнер, используйте команду
docker start < container_id› ; для остановки контейнера используйте команду docker stop ‹container_id>.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 cryptography-kotlin — это мультиплатформенная библиотека на языке Kotlin, предоставляющая унифицированный API для различных криптографических операций, таких как генерация случайных чисел, шифрование, вычисление хешей, цифровые подписи, вывод ключей и соглашения о ключах!
Библиотека поддерживает алгоритмы, включая AES, RSA, ECDSA, ECDH, SHA, HMAC и PBKDF2. Она не реализует криптографические алгоритмы самостоятельно, а оборачивает проверенные решения, такие как OpenSSL 3.x, WebCrypto и JCA, обеспечивая типобезопасный API с согласованным поведением на разных платформах.
Гитхаб
👉 Новости 👉 База вопросов
Библиотека поддерживает алгоритмы, включая AES, RSA, ECDSA, ECDH, SHA, HMAC и PBKDF2. Она не реализует криптографические алгоритмы самостоятельно, а оборачивает проверенные решения, такие как OpenSSL 3.x, WebCrypto и JCA, обеспечивая типобезопасный API с согласованным поведением на разных платформах.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 712. Minimum ASCII Delete Sum for Two Strings
Если даны две строки s1 и s2, верните наименьшую ASCII-сумму удаленных символов, чтобы сделать две строки равными.
Пример:
👨💻 Алгоритм:
1⃣ Создайте двумерный массив dp размером (len(s1) + 1) x (len(s2) + 1), где dp[i][j] будет хранить наименьшую ASCII-сумму удаленных символов для первых i символов s1 и первых j символов s2.
2⃣ Заполните первую строку и первый столбец массива dp суммами ASCII значений символов, которые необходимо удалить для достижения пустой строки.
3⃣ Заполните оставшуюся часть массива dp следующим образом: Если символы s1[i-1] и s2[j-1] равны, dp[i][j] = dp[i-1][j-1]. Иначе, dp[i][j] = min(dp[i-1][j] + ord(s1[i-1]), dp[i][j-1] + ord(s2[j-1])).
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 712. Minimum ASCII Delete Sum for Two Strings
Если даны две строки s1 и s2, верните наименьшую ASCII-сумму удаленных символов, чтобы сделать две строки равными.
Пример:
Input: s1 = "sea", s2 = "eat"
Output: 231
fun minimumDeleteSum(s1: String, s2: String): Int {
val dp = Array(s1.length + 1) { IntArray(s2.length + 1) }
for (i in 1..s1.length) {
dp[i][0] = dp[i - 1][0] + s1[i - 1].toInt()
}
for (j in 1..s2.length) {
dp[0][j] = dp[0][j - 1] + s2[j - 1].toInt()
}
for (i in 1..s1.length) {
for (j in 1..s2.length) {
if (s1[i - 1] == s2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1]
} else {
dp[i][j] = minOf(dp[i - 1][j] + s1[i - 1].toInt(), dp[i][j - 1] + s2[j - 1].toInt())
}
}
}
return dp[s1.length][s2.length]
}Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
👍 EtchDroid — это открытое приложение, которое превращает ваш смартфон в инструмент для записи образов ОС на USB-накопители. Оно выручит, если под рукой нет компьютера, а нужно срочно восстановить систему или установить Linux.
Проект поддерживает большинство современных дистрибутивов, но не работает с официальными ISO Windows и старыми образами. Разработчик честно предупреждает о минимальной телеметрии в версиях с GitHub и Google Play.
GitHub
Google Play
👉 Новости 👉 База вопросов
Проект поддерживает большинство современных дистрибутивов, но не работает с официальными ISO Windows и старыми образами. Разработчик честно предупреждает о минимальной телеметрии в версиях с GitHub и Google Play.
GitHub
Google Play
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #docker
🤔 Как создать Docker-образ с использованием Dockerfile?
Чтобы создать Docker-образ, необходимо использовать команду
👉 Новости 👉 База вопросов
Чтобы создать Docker-образ, необходимо использовать команду
docker build, указав путь к каталогу, содержащему Dockerfile. Например, docker build -t myimage:tag . создаст образ с именем myimage и тегом tag из текущего каталога.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👋 Extra Ktor Plugins — это набор мощных плагинов для расширения возможностей Ktor-приложений как на стороне сервера, так и на стороне клиента!
Эти плагины помогают решать распространённые задачи, такие как интеграция с Kafka, планирование задач, ограничение частоты запросов и повышение устойчивости через Circuit Breaker.
Гитхаб
👉 Новости 👉 База вопросов
Эти плагины помогают решать распространённые задачи, такие как интеграция с Kafka, планирование задач, ограничение частоты запросов и повышение устойчивости через Circuit Breaker.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Galoisenne — это библиотека на Kotlin, предназначенная для работы с графами, конечными полями и дискретными динамическими системами!
Она реализует новый вычислительный подход, называемый графовыми вычислениями, который отличается от традиционных моделей, таких как машина Тьюринга или λ-исчисление Чёрча. Преимущество этого подхода заключается в возможности прямого преобразования в итеративное умножение матриц на GPU, что открывает широкие возможности для параллельных вычислений.
Гитхаб
👉 Новости 👉 База вопросов
Она реализует новый вычислительный подход, называемый графовыми вычислениями, который отличается от традиционных моделей, таких как машина Тьюринга или λ-исчисление Чёрча. Преимущество этого подхода заключается в возможности прямого преобразования в итеративное умножение матриц на GPU, что открывает широкие возможности для параллельных вычислений.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️🔥 Kotlin DataFrame — библиотека для типизированной обработки данных от JetBrains, вдохновленная Pandas.
Проект позволяет загружать данные из CSV/JSON/SQL, фильтровать и агрегировать их через цепочки вызовов в Kotlin-стиле. Интересно, что инструмент поддержи очень быструю генерацию type-safe API: при работе в Jupyter Notebook или с Gradle-плагином система автоматически создаёт extension-свойства для колонок.
Гитхаб
👉 Новости 👉 База вопросов
Проект позволяет загружать данные из CSV/JSON/SQL, фильтровать и агрегировать их через цепочки вызовов в Kotlin-стиле. Интересно, что инструмент поддержи очень быструю генерацию type-safe API: при работе в Jupyter Notebook или с Gradle-плагином система автоматически создаёт extension-свойства для колонок.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
#Собес #docker
🤔 Что такое гипервизоры и их функции?
Гипервизор - это программное обеспечение, которое позволяет виртуализировать ресурсы хост-системы, создавая несколько виртуальных машин (VM). Существуют два типа гипервизоров: нативный (bare-metal), который работает напрямую на хост-системе, и хостинг-гипервизор, который работает через операционную систему хоста.
👉 Новости 👉 База вопросов
Гипервизор - это программное обеспечение, которое позволяет виртуализировать ресурсы хост-системы, создавая несколько виртуальных машин (VM). Существуют два типа гипервизоров: нативный (bare-metal), который работает напрямую на хост-системе, и хостинг-гипервизор, который работает через операционную систему хоста.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 NFCGate — это приложение для Android, предназначенное для захвата, анализа и модификации NFC-трафика!
Основные возможности NFCGate
🟠 Захват на устройстве: позволяет перехватывать NFC-трафик от сторонних приложений, работающих на устройстве.
🟠 Режим ретрансляции: передача NFC-трафика между двумя устройствами через сервер, где одно устройство работает в режиме "ридера", а другое эмулирует NFC-метку с использованием Host Card Emulation (HCE).
🟠 Режим воспроизведения: повторное воспроизведение ранее захваченного NFC-трафика в режиме "ридера" или "метки".
🟠 Клонирование: копирование начальной информации метки, такой как идентификатор (ID).
🟠 Экспорт в pcapng: сохранение захваченного NFC-трафика в формате pcapng для дальнейшего анализа в инструментах, таких как Wireshark.
Гитхаб
👉 Новости 👉 База вопросов
Основные возможности NFCGate
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
😊 Resaca — это библиотека для Jetpack Compose, позволяющая привязывать ViewModel или другие объекты к конкретным Composable функциям, обеспечивая их сохранение во время пересозданий и навигации! Это позволяет создавать более мелкие и переиспользуемые компоненты с собственной логикой, улучшая структуру и поддержку кода.
Гитхаб
👉 Новости 👉 База вопросов
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
👍 Purchases-KMP — это клиентская библиотека для системы отслеживания подписок и покупок RevenueCat, разработанная для Kotlin Multiplatform!
Она предоставляет обертку вокруг BillingClient, StoreKit и серверной части RevenueCat, упрощая реализацию внутриигровых подписок и покупок с валидацией квитанций и отслеживанием статусов.
Гитхаб
👉 Новости 👉 База вопросов
Она предоставляет обертку вокруг BillingClient, StoreKit и серверной части RevenueCat, упрощая реализацию внутриигровых подписок и покупок с валидацией квитанций и отслеживанием статусов.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM