#Собес #docker
🤔 Как использовать Docker для множества окружений приложений?
Для работы с несколькими окружениями в Docker используется Docker Compose. Создаются отдельные файлы
👉 Новости 👉 База вопросов
Для работы с несколькими окружениями в Docker используется Docker Compose. Создаются отдельные файлы
docker-compose для каждой среды (например, docker-compose.dev.yml ), и на основе этих файлов запускаются соответствующие окружения с нужными настройками.Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
👋 Gitnuro — кроссплатформенный Git-клиент без подписок и слежки. Этот полностью открытый клиент на Kotlin предлагает альтернативу тяжеловесным решениям вроде GitKraken или SourceTree.
В отличие от веб-ориентированных аналогов, он работает нативно на Linux, Windows и macOS, при этом не требуя активаций или подписок. Особенность проекта в поддержке сложных операций через минималистичный интерфейс.
Гитхаб
👉 Новости 👉 База вопросов
В отличие от веб-ориентированных аналогов, он работает нативно на Linux, Windows и macOS, при этом не требуя активаций или подписок. Особенность проекта в поддержке сложных операций через минималистичный интерфейс.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
👨💻 Jooby — лаконичный веб-фреймворк для Java и Kotlin. Этот проект предлагает минималистичный подход к созданию API — без лишних абстракций, но с поддержкой популярных серверов вроде Jetty и Netty. Инструмент универсален: один и тот же код работает как в традиционных Java-приложениях, так и в Kotlin-проектах.
Фреймворк сохраняет совместимость с существующими решениями, позволяя подключать модули для GraphQL, WebSocket или авторизации. При этом стартовый шаблон умещается в несколько строк — достаточно вызвать
Гитхаб
👉 Новости 👉 База вопросов
Фреймворк сохраняет совместимость с существующими решениями, позволяя подключать модули для GraphQL, WebSocket или авторизации. При этом стартовый шаблон умещается в несколько строк — достаточно вызвать
runApp и описать роуты. Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #docker
🤔 Чем отличается логирование контейнера от логирования демона?
Логирование на уровне демона касается самого процесса работы Docker (системных сообщений и ошибок), в то время как логирование контейнера фокусируется на выводе, генерируемом внутри конкретных контейнеров. Логи демона содержат информацию о работе Docker, а логи контейнера - данные, связанные с выполнением приложений в контейнерах.
👉 Новости 👉 База вопросов
Логирование на уровне демона касается самого процесса работы Docker (системных сообщений и ошибок), в то время как логирование контейнера фокусируется на выводе, генерируемом внутри конкретных контейнеров. Логи демона содержат информацию о работе Docker, а логи контейнера - данные, связанные с выполнением приложений в контейнерах.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😎 Feeder — приватный RSS-ридер для Android без синхронизации. Этот open-source инструмент работает полностью локально на устройстве, не отправляя ваши подписки и историю чтения на сторонние серверы.
Проект развивается с 2014 года и сохраняет минималистичную философию: поддержка RSS/Atom/JSONFeed, нотификации о новых статьях и импорт/экспорт через OPML. Недавно добавили экспериментальную поддержку Nostr-лент. Установить можно через F-Droid или собрать вручную (`./gradlew installDebug`).
Гитхаб
👉 Новости 👉 База вопросов
Проект развивается с 2014 года и сохраняет минималистичную философию: поддержка RSS/Atom/JSONFeed, нотификации о новых статьях и импорт/экспорт через OPML. Недавно добавили экспериментальную поддержку Nostr-лент. Установить можно через F-Droid или собрать вручную (`./gradlew installDebug`).
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😱 Android Showcase 2.0 — проект для изучения современных подходов в Android-разработке. Этот open-source репозиторий демонстрирует полный цикл создания приложения: от модульной архитектуры и работы с API до тестирования и CI/CD.
Проект построен на Kotlin с использованием Jetpack Compose, Clean Architecture и популярных библиотек. Особое внимание уделено тестированию — доступны примеры unit-тестов, проверки кодстайла и даже архитектурных правил через Konsist.
Для разработчиков это отличная возможность изучить:
🟠 Организацию feature-модулей
🟠 Работу с Kotlin Flow и корутинами
🟠 Настройку GitHub Actions
🟠 Динамические темы
Гитхаб
👉 Новости 👉 База вопросов
Проект построен на Kotlin с использованием Jetpack Compose, Clean Architecture и популярных библиотек. Особое внимание уделено тестированию — доступны примеры unit-тестов, проверки кодстайла и даже архитектурных правил через Konsist.
Для разработчиков это отличная возможность изучить:
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
💅2❤1🔥1
#полезное
😵💫 lets-plot — мультиплатформенная библиотека для построения графиков и диаграмм, написанная на Kotlin и Python
—
Графики, созданные с помощью lets-plot можно встраивать в JVM (Swing, JavaFX) и Kotlin/JS-приложения.
Гитхаб
👉 Новости 👉 База вопросов
—
pip install lets-plotГрафики, созданные с помощью lets-plot можно встраивать в JVM (Swing, JavaFX) и Kotlin/JS-приложения.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #docker
🤔 Есть ли ограничения на количество контейнеров, которые можно запустить в Docker?
B Docker нет явного ограничения на количество контейнеров. Ограничения зависят от аппаратных ресурсов, таких как обьем памяти и количество процессорных ядер.
👉 Новости 👉 База вопросов
B Docker нет явного ограничения на количество контейнеров. Ограничения зависят от аппаратных ресурсов, таких как обьем памяти и количество процессорных ядер.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
👨💻 github-workflows-kt — инструмент на Kotlin для создания рабочих процессов GitHub Actions
github-workflows-kt поможет писать типобезопасный код на Kotlin для организации надежных рабочих процессов, планирования GitHub Actions и т.д.
Гитхаб
Доки
👉 Новости 👉 База вопросов
github-workflows-kt поможет писать типобезопасный код на Kotlin для организации надежных рабочих процессов, планирования GitHub Actions и т.д.
Гитхаб
Доки
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Chucker — удобный инструмент для отладки сетевых запросов в Android-приложениях. Этот форк проекта Chuck работает как перехватчик OkHttp, фиксируя все HTTP-взаимодействия и предоставляя понятный интерфейс для их анализа.
Инструмент имеет встроенный UI с возможностью просмотра заголовков, тел запросов/ответов и даже изображений. Для релизных сборок есть no-op версия, которая полностью исключает его из конечного APK. Также проект поддерживает кастомизацию: можно скрывать чувствительные данные в заголовках, настраивать период хранения логов и добавлять декодеры для бинарных форматов.
Гитхаб
👉 Новости 👉 База вопросов
Инструмент имеет встроенный UI с возможностью просмотра заголовков, тел запросов/ответов и даже изображений. Для релизных сборок есть no-op версия, которая полностью исключает его из конечного APK. Также проект поддерживает кастомизацию: можно скрывать чувствительные данные в заголовках, настраивать период хранения логов и добавлять декодеры для бинарных форматов.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Jooby — лаконичный веб-фреймворк для Java и Kotlin. Этот проект предлагает минималистичный подход к созданию API — без лишних абстракций, но с поддержкой популярных серверов вроде Jetty и Netty. Инструмент универсален: один и тот же код работает как в традиционных Java-приложениях, так и в Kotlin-проектах.
Фреймворк сохраняет совместимость с существующими решениями, позволяя подключать модули для GraphQL, WebSocket или авторизации. При этом стартовый шаблон умещается в несколько строк — достаточно вызвать
Гитхаб
👉 Новости 👉 База вопросов
Фреймворк сохраняет совместимость с существующими решениями, позволяя подключать модули для GraphQL, WebSocket или авторизации. При этом стартовый шаблон умещается в несколько строк — достаточно вызвать
runApp и описать роуты. Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #docker
🤔 Что такое Docker Compose?
Docker Compose - это инструмент для управления многоконтейнерными приложениями. С помощью простого YAML-файла (
👉 Новости 👉 База вопросов
Docker Compose - это инструмент для управления многоконтейнерными приложениями. С помощью простого YAML-файла (
docker-compose. yml ) можно настроить и запустить несколько контейнеров, определяя их сервисы, сети и тома.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Как подружить LifecycleOwner и Decompose
Некоторые API в Jetpack библиотеках принимают в качестве параметра LifecycleOwner, например, так сделано в CameraX. Однако если в вашем проекте используется Decompose, и вы используете LocalLifecycleOwner для получения текущего значения в Composable функции, то жизненный цикл будет работать некорректно: он будет соответствовать жизненному циклу Activity или Fragment, так как Decompose нигде не переопределяет этот CompositionLocal и использует собственный жизненный цикл из библиотеки Essenty.
Чтобы исправить эту проблему, необходимо сконвертировать LifecycleOwner из Decompose в его аналог из Jetpack. Однако из коробки пока что такого адаптера нет, и придётся написать его самостоятельно, по аналогии с конвертацией ЖЦ в Essenty.
В версии Decompose 3.4.0 эта проблема будет решаться проще: появится JetpackComponentContext, как отдельная зависимость, и можно будет сразу получить нужный lifecycle прямо из компонента.
Поэтому будьте внимательны при использовании CompositionLocal для работы с жизненным циклом, если навигация в проекте построена на Decompose.
👉 Новости 👉 База вопросов
Некоторые API в Jetpack библиотеках принимают в качестве параметра LifecycleOwner, например, так сделано в CameraX. Однако если в вашем проекте используется Decompose, и вы используете LocalLifecycleOwner для получения текущего значения в Composable функции, то жизненный цикл будет работать некорректно: он будет соответствовать жизненному циклу Activity или Fragment, так как Decompose нигде не переопределяет этот CompositionLocal и использует собственный жизненный цикл из библиотеки Essenty.
Чтобы исправить эту проблему, необходимо сконвертировать LifecycleOwner из Decompose в его аналог из Jetpack. Однако из коробки пока что такого адаптера нет, и придётся написать его самостоятельно, по аналогии с конвертацией ЖЦ в Essenty.
В версии Decompose 3.4.0 эта проблема будет решаться проще: появится JetpackComponentContext, как отдельная зависимость, и можно будет сразу получить нужный lifecycle прямо из компонента.
Поэтому будьте внимательны при использовании CompositionLocal для работы с жизненным циклом, если навигация в проекте построена на Decompose.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
🛞 Как встроить SwiftUI в Compose Multiplatform
Обычно я стараюсь избегать использования кастомных CompositionLocal в Compose, так как это добавляет неявные зависимости, и если не предоставить значение, приложение упадёт в рантайме. Я придерживаюсь подхода, в котором CompositionLocal можно использовать только тогда, когда значение действительно может быть полезно любой Composable-функции в дереве. Яркий пример — тема приложения.
И при работе с Compose Multiplatform я подсмотрел классное применение этого механизма для встраивания SwiftUI вьюшек в Composable функции.
1⃣ В сорсете iosMain создаём CompositionLocal и интерфейс NativeViewFactory.
2⃣ На стороне Swift реализуем этот интерфейс и передаём его в функцию создания UIViewController.
3⃣ В этой функции пробрасываем фабрику через CompositionLocalProvider.
4⃣ Далее в любом месте поддерева в iosMain можно получить доступ к этой нативной вьюшке.
Посмотреть пример приложения для сканирования QR-кодов с этим подходом можно в репозитории, который я подготовил для лекции в онлайн-университете.
👉 Новости 👉 База вопросов
Обычно я стараюсь избегать использования кастомных CompositionLocal в Compose, так как это добавляет неявные зависимости, и если не предоставить значение, приложение упадёт в рантайме. Я придерживаюсь подхода, в котором CompositionLocal можно использовать только тогда, когда значение действительно может быть полезно любой Composable-функции в дереве. Яркий пример — тема приложения.
И при работе с Compose Multiplatform я подсмотрел классное применение этого механизма для встраивания SwiftUI вьюшек в Composable функции.
Посмотреть пример приложения для сканирования QR-кодов с этим подходом можно в репозитории, который я подготовил для лекции в онлайн-университете.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
🥄 Sandwich — удобная обработка API-ответов в Kotlin. Библиотека упрощает работу с сетевыми запросами, предлагая унифицированный подход к обработке успешных ответов, ошибок и исключений. Вместо создания собственных обёрток вроде Resource или Result, разработчики могут использовать готовые компоненты с функциональными операторами.
Инструмент имеет встроенную поддержку корутин и возможность глобальной обработки ошибок через механизм операторов. Например, можно автоматически обновлять токен доступа при получении кода 401 или логировать все исключения в едином месте.
Гитхаб
👉 Новости 👉 База вопросов
Инструмент имеет встроенную поддержку корутин и возможность глобальной обработки ошибок через механизм операторов. Например, можно автоматически обновлять токен доступа при получении кода 401 или логировать все исключения в едином месте.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #docker
🤔 Можно ли потерять данные, если контейнер существует?
Пока контейнер существует, данные не теряются. Потеря данных может произойти только при удалении контейнера, если данные не были сохранены в постоянном хранилище.
👉 Новости 👉 База вопросов
Пока контейнер существует, данные не теряются. Потеря данных может произойти только при удалении контейнера, если данные не были сохранены в постоянном хранилище.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😵💫 Jimmer — революционный ORM для JVM (Java/Kotlin), переосмысливающий работу с данными. Этот инструмент позволяет оперировать не отдельными сущностями, а целыми графами объектов любой сложности, как при чтении, так и при сохранении.
Инструмент имеет встроенную поддержку DTO с кодогенерацией, самостоятельного устранения проблемы N+1 запросов и работы с рекурсивными структурами. ORM автоматически оптимизирует SQL-запросы, убирает лишние JOIN'ы и поддерживает многоуровневое кеширование. Проект предлагает удобные DSL для запросов, интеграцию с GraphQL и работает через APT/KSP, что обеспечивает безопасность типов на этапе компиляции.
Гитхаб
👉 Новости 👉 База вопросов
Инструмент имеет встроенную поддержку DTO с кодогенерацией, самостоятельного устранения проблемы N+1 запросов и работы с рекурсивными структурами. ORM автоматически оптимизирует SQL-запросы, убирает лишние JOIN'ы и поддерживает многоуровневое кеширование. Проект предлагает удобные DSL для запросов, интеграцию с GraphQL и работает через APT/KSP, что обеспечивает безопасность типов на этапе компиляции.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😎 Генерация сетевых моделей
Сейчас AI используют везде, где только можно и довольно часто можно встретить в опросах, что AI применяют для преобразования JSON в сетевые модели для взаимодействия с API бэкенда. Однако эту задачу довольно легко решает OpenAPI Generator, при условии, что бэкендеры сделали нормальную документацию, конечно
Использование автогенерации моделей по спеке OpenAPI даёт сразу несколько преимуществ:
🟠 Вы не тратите время на написание бойлерплейт кода
🟠 Исключаете человеческий фактор, например, можно случайно забыть сделать поле nullable или наоборот
🟠 Всегда поддерживаете API-сущности в актуальном состоянии, так как спецификация OpenAPI напрямую связана с кодом бэкенда (ну, почти )
При этом благодаря Mustache шаблонам можно реализовать очень гибкое решение:
🔴 Использовать любую библиотеку для сериализации
🔴 Сразу маппить данные в нужные типы, например, в Instant из kotlinx-datetime
🔴 Поддерживать полиморфную сериализацию, когда ответы от API могут сильно различаться
🔴 И даже генерировать не только модели, но и код для взаимодействия с HTTP-клиентом, например, с Ktor
👉 Новости 👉 База вопросов
Сейчас AI используют везде, где только можно и довольно часто можно встретить в опросах, что AI применяют для преобразования JSON в сетевые модели для взаимодействия с API бэкенда. Однако эту задачу довольно легко решает OpenAPI Generator, при условии, что бэкендеры сделали нормальную документацию, конечно
Использование автогенерации моделей по спеке OpenAPI даёт сразу несколько преимуществ:
При этом благодаря Mustache шаблонам можно реализовать очень гибкое решение:
Please open Telegram to view this post
VIEW IN TELEGRAM