Developer Box
33 subscribers
50 photos
8 videos
37 links
channel unstoppable developer

author: @normno
github: github.com/NORMss
website: normno.ru
Download Telegram
Developer Box
Это кстати мое тестовое задание)))
Кстати тестовое приняли и даже на собеседование попал, но получил отказ. Ничего, фигачим дальше)
😢2
Забавно встречать знакомые лица связанные с мобильной разработкой на сайтах, где ты их не ожидаешь найти.
Сейчас разбираюсь с принципом работы навигатора в XML и периодический сталкиваюсь с ошибками. При одном из таких поисков исправления ошибки наткнулся на автора популярного блога по мобильной разработке, Никиту Розова. Очень рад таким случайностям.
🔥1
Несколько часов назад вышел kotlin 2.1.0 и я решил вспомнить про давно анонсированную фичу k2, "explicit backing fields (явные резервные поля)". Получилось с первого раза запустить проект с этим новым представлением state'ов.

Только пред запуском надо:

1. Поднять версию kotlin до 2.0.0 и выше.
2. Включить K2 в IDE
"Settings -> Languages & Frameworks -> Kotlin: Check the "Enable K2 Kotlin Mode"
3. И разрешить использование "ExplicitBackingFields" прописав в \app\build.gradle.kts
kotlin {
sourceSets.all {
languageSettings.enableLanguageFeature("ExplicitBackingFields")
}
}


Можно пользоваться!
Привет, первый подписчик!

Попробовал значит свой первый Хакатон и понял, что идти в соло против команд по 4-6 человек и пытаться сделать всё и сразу - это ОЧЕНЬ НЕУДАЧНЫЙ первый опыт.

Разбор ошибок...
1. Первый день я тупо потратил на планирование, составление моделей, подбор стека, инициализацию проекта, когда это можно было сделать все заранее, потому что я знал какую тему буду реализовывать.

2. Когда всегда писал нативно под android, и хочешь за 48 часов сделать проект на KMP и хоть каким-то настоящим backend'ом, то это гарантированный провал.

3. Надо делать то, что умеешь, а не что знаешь в теории, иначе потратишь кучу времени на разбор множества микромоментов, которым учит только практика. Например, кто знал, что аннотация Preview напрочь не будет работать в CMP, когда JetBrains показывал у себя в статьях что все работает.

4. Ну и самое важное - это не пытаться сделать красивый проект, а надо максимально быстро вкладывать свои знания и показать максимум своих возможностей. То есть не сидим, вспоминая все паттерны, антипаттерны и принципы разработки.

KMP очень мощный инструмент, который реально даёт возможность за короткое время сделать одному разработчику большие количество задач, но при этом сложный и требует какого-то опыта. Ktor уже показал мне, каким он бывает крутым со стороны клиента, но теперь я обязательно сделаю на нём бэк для этого проекта, хоть уже и не в рамках хакатона.
1
Ровно год назад я пошел в коворкинг, открыл Android Studio и понеслось...
Июль не считается. Был вдали от интернета и цивилизации
2
Благодаря недавнему часовому падению рунета, узнал про такую классную утилиту, как Uptime Kuma
Развернул на своем сервере в России web-приложение через контейнер, за пол часа добавил интересные (и не очень) мне сайты и подключил уведомление в тг бота в случае "инцидентов"
Наконец-то не придется самому постоянно следить за работой другого сервера, где развернут сервис на 3 буквы для шифрования трафика. Если завалялся лишний сервер, то однозначно рекомендую
🔥1
Зашел сейчас в GitHub и увидел на главной странице с лентой последних действий новое окошко Copilot от GitHub. Вроде как он раньше был только по какой-то подписке, а теперь вроде бесплатный и даже без лимитов. Имеет полный доступ к аккаунту и все действия выполняет с помощью API GitHub. Настроен только на ответы связанные с разработкой.

Наверное, полезная штука для тех, кто не очень ориентируется в интерфейсе GitHub. Чем-то напомнило бота Макс с ГосУслуг, только этот реально работает и будет полезен.
🔥1
Сегодня 10 лет исполняется IDE Android Studio. Благодаря ей я узнал, что среды для разработки бывают удобными, после чего пошел знакомиться с другими продуктами JetBrains и целиком удалил Visual Studio.
Успел попробовать целый зоопарк версий с названием зверушек, начиная с Dolphin в 2022 году.
Радует, что в последних версиях Google и JetBrains решили начать исправлять баги, а не только их добавлять.
🔥1
Недавно случайно обнаружил, что Google сняла жесткий геоблок с Gemini и теперь им можно без проблем пользоваться в России с VPN. Наконец-то решил проверить его в написании документаций и пишет он их отлично. Основывается на контексте происходящего в проекте.

p.s а код на kotlin для android еще ни одна языковая модель не способна писать, даже для самых простых вещей
1
Продолжаем тему языковых моделей...
Сейчас резко стала популярна китайская моделька от компании DeepSeek. На первый взгляд, один в один ChatGPT ни больше ни меньше. По графикам сравнения точность ответов почти как у ChatGPT-o1.
Такое ощущение, что китайцы полностью украли разработки OpenAi и сделали открытыми. API полностью обратно совместимо с ChatGPT. То есть там где сейчас работает разработка OpenAi, можно в одно действие заменить разработкой DeepSeek.
Я же могу сказать, что сейчас многие модельки могут отвечать красиво и правдоподобно, но чтобы понять какая из них реально работает, надо самому шарить в теме задаваемого запроса.

Постараюсь в ближайшее время не публиковать посты по этой теме
🔥21
Разработчики Koin (библиотека для внедрения зависимостей) выпустили два дня назад из ограниченного доступа плагин для визуализации зависимостей в проекте. Показывает не так подробно как у Hilt, но уже проще определять что забыл подключить.

Немного о канале:
Да, посты редкие, но это не значит, что я меньше стал программировать или нет ничего нового и интересного. Просто не знаю как преподнести информацию, чтобы она не была слишком узконаправленной. Также на меня подписалось много ботов по неизвестной мне причине.
Если ты не бот, то поставь реакцию
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Еще с октября 2024 начали выходить альфа версии обновленной CameraX. Теперь в Compose не надо работать с камерой через AndroidView, который представлял View, а применять новое API напрямую. В январе 2025 Google выпустила несколько полезных статей по работе с обновленной библиотекой камеры:
1. Создание базового видоискателя
2. Создание автофокуса и фокуса по нажатию
3. Реализация поиска лица/лиц (видео в закрепе)
4. Работа с видоискателем для складных устройств (не нашел)

Вот как раньше приходилось внедрять логику камеры на примере моего дипломного проекта в ВУЗе
Вот проект реализованный по статьям выше
Официальный канал Kotlin предлагает кешировать сборки, чтобы после перезапуска проекта сборка совершалась быстрее
Не очень понимаю о чем речь, так как по ощущениям Gradle и так кеширует все подряд и комментарии под постом Kotlin полностью это подтверждают
Developer Box
Официальный канал Kotlin предлагает кешировать сборки, чтобы после перезапуска проекта сборка совершалась быстрее Не очень понимаю о чем речь, так как по ощущениям Gradle и так кеширует все подряд и комментарии под постом Kotlin полностью это подтверждают
Примерно раз в 3 месяца целиком удаляю папку caches в .gradle

Хочу попробовать отключать кеширование во всех своих проектах
org.gradle.caching=false

и посмотреть насколько сильно будет заполняться папка .gradle/caches
Это не роадмап или рекомендации по изучению мобильной разработки под android. Просто хочу поделиться с источниками информации которые я нашел за время нахождения в области и выделить особенно понравившийся.

Если не считать курса в университете, то начинал я с YT канала NecoRu с прекрасным русскоговорящим автором из Испании. Сейчас он не так активно публикует видео, но когда-то благодаря ему я понял азы работы android приложений, работа с сетью, базами данных и прочими нужными вещами около мобильной разработки. UI начинал создавать я с языка разметки XML и потом перешел на Compose у него же.
Через 1-2 месяца мне перестало хватать материала NecoRu и я случайно наткнулся на бриллиант мобильной разработки Philipp Lackner, автор канала из Германии с прекрасным английским, который не сложно воспринимать . Уже у него я стал активно повторять и изучать все его лучшие практики для разных проблем. Позже наткнулся на еще одного хорошего автора видео по мобильной разработке
Ahmed Guedmioui. У него я впервые попробовал создавать крупные проекты и делать их с наилучшей архитектурой.

Параллельно начал читать статьи Хабр и Medium от разных авторов. На классном сайте с переводом документации Kotlin kotlinlang.ru узнал о великолепной книге "Kotlin в Действии" у которой в конце 2024 вышло второе издание.

Ну и конечно, куда же без телеграм каналов:
@android_broadcast (Один из серии каналов про мобильную разработку легенды сферы, Кирилла Розова)
@kotlin_lang (Очень большой чат с большим количеством веток по разным технологиям, где обязательно помогут)
@kotlin_adept (Хороший блог мобильного разработчика из "Контур")

Так же не хочу упустить большую полезность курсов и интенсивов от компаний. Очень сильно бустят скилы, указывают на ошибки, которые раньше мог не замечать и расширяют кругозор развития. Тчоно могу порекомендовать для жителей Сибири школу Eltex.

Удачи!
1🔥1
Просто картинка с эволюцией маскотов версий, которая не влезла по лимитам в пост выше
3
Base URL или домен к которому надо обращаться чтобы получить доступ к API (https://example.com). Наверное многие его просто помещают в object Constants или сразу в companion object в классе где у вас реализована работа с API. Но что делать если есть тестовый сервер, который должен использоваться только в дебажной сборке? Есть красивое решение - добавить base URL в сборщик, а именно в Gradle.

В build.gradle.kts добавляем debug и buildConfig выставляем в true.
android {
...
buildTypes {
debug{
buildConfigField("String", "BASE_URL", "\"https://test.example.com/\"")
}
release {
...
buildConfigField("String", "BASE_URL", "\"https://example.com/\"")
}
}
...
buildFeatures {
buildConfig = true
...
}
}

Теперь собираем проект и получаем в любом месте модуля строку из base URL с помощью
BuildConfig.BASE_URL
2🔥2