Как стать автором
Обновить
55.58

Kotlin *

Статически типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Как сделать пароль менеджер

Уровень сложностиПростой
Время на прочтение55 мин
Количество просмотров11K

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

Читать далее
Всего голосов 16: ↑9 и ↓7+3
Комментарии22

Новости

Мастер карт или как объединить Google и Яндекс карты в Android

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров10K

Интеграция различных геосервисов в проект может быть сложной задачей, особенно когда требуется поддержка нескольких провайдеров одновременно. Наиболее популярные провайдеры карт, такие как Google Maps и Яндекс.Карты, предлагают различные API и функциональные возможности, что может привести к ряду проблем при создании абстракции для работы с ними.

В этой статье я расскажу о создании обертки для самых популярных провайдеров карт и о проблемах, с которыми можно столкнуться. Мы разберем различия интеграции и создание интерфейса для работы с разными провайдерами.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

Как и зачем мы затащили GeckoView в Почту

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров6.3K

Начиная с июня 2023 года мы стали получать жалобы от пользователей о том, что у них не отображаются письма в Android-клиенте Почты Mail.ru. В ходе исследования мы даже приглашали пользователя к нам в офис для отладки. В конце концов мы поняли, что проблема на стороне WebView, компонента, с помощью которого мы можем отображать веб страницы. Ни для кого не секрет, что WebView используется во многих банковских и почтовых клиентах, в приложениях интернет-магазинов, сервисов доставки и многих других. Также изучили другие почтовые сервисы, нам хотелось понять, как они с этим справились. Оказалось — никак :)

А теперь обо всём в подробностях и с кодом
Всего голосов 46: ↑46 и ↓0+52
Комментарии3

Как сломать скомпилированный код, не нарушая бинарную совместимость

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3K

Привет! Я Антон, Android-разработчик в команде Тинькофф Бизнеса. Занимаюсь интеграцией нескольких наших внутренних SDK в приложение и иногда участвую в их разработке.

Хочу поговорить про проблемы обратной совместимости, которые я встречал в своей работе, и предостеречь от выстрела себе или клиентам вашей библиотеки в ногу.

Читать далее
Всего голосов 8: ↑8 и ↓0+10
Комментарии1

Истории

Как мы разобрали монолитное приложение для бизнеса на модули

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.7K

Привет, Хабр! Я Анатолий, главный инженер-программист разработки мобильных приложений в ПСБ. В этой статье делюсь опытом миграции крупного монолитного приложения «Мой Бизнес» на модули. Расскажу все ключевые моменты, и с какими сложностями мы столкнулись на этом пути.

Читать далее
Всего голосов 2: ↑1 и ↓1+2
Комментарии1

Комбинаторы синтаксического анализа на Kotlin

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров1.1K

Существуют разные способы реализации синтаксических анализаторов для заданной грамматики. В статье рассматривается реализация комбинаторов синтаксического анализа на языке Kotlin для разбора контекстно-свободных и контекстно-зависимых языков.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Разбираемся с coroutine в Kotlin — 3

Время на прочтение5 мин
Количество просмотров3.6K

Прошлая статья была про реализацию функции на языке Си, которая может быть приостановлена и возобновлена. В этой статье придумаем задачу, набросаем примерные решения и в конце сравним корутины с другими способами. Примеры и код будут условными и нужны для понимания идеи и различий. Код будет на языке, похожим на Kotlin...

Читать далее
Всего голосов 4: ↑2 и ↓2+2
Комментарии2

Mobius 2024 offline. День первый

Время на прочтение4 мин
Количество просмотров2.1K

Привет, Хабр!

Сегодня по горячим следам расскажу, как прошёл первый день конференции мобильных разработчиков Mobius в этом году.

Он был очень насыщенным, мне удалось побывать на шести докладах, в основном по android-разработке.

Проходит мероприятие в кластере Ломоносов - очень красивая и технологичная площадка снаружи и внутри. Сегодня, правда, было очень жарко, встречаем лето. При регистрации дают фигурку очаровательного Mobius-утенка, сохраню на память.

Тулкиты кодогенерации Android vs iOS, Анна Жаркова, Usetech

Первый доклад сегодня был насыщенным и хардкорным: Аня кратко рассказала о компиляции в целом и подробно - о способах кодогенерации в Android Studio (IntelliJ IDEA) и Xcode. С помощью кодогенерации можно решить самые разные задачи: от генерации View до упрощения генерации архитектурных компонентов.
Рассмотрели PSI (Programming Structure Interface), Xcode template, Android Studio Wizard template, создание собственных плагинов, Xcode Source Editor и SPM плагины, Android build-time генераторы (KSP, KCP). Упомянули ChatGPT, Copilot и Gemini, куда же без них.
Провели соревнование между Android и iOS, у кого инструменты удобнее. Спойлер: победила дружба)

https://mobiusconf.com/talks/536b1d2f4e0b4be8a60da58d4095c8c7/?referer=/schedule/today/

Нетворкинг

На первой “переменке” удалось побывать у стендов Ozon Tech и hh.ru. У обоих классные квесты, от классических опросов до призов за потение на гребном тренажёре. Лайк стикерам hh.ru, особенно с горящей перед дедлайном попой)

Как избавиться от рекурсии, или Как мой код попал в Google, Максим Сидоров, SberDevices

Читать далее
Всего голосов 7: ↑5 и ↓2+4
Комментарии4

Разработка REST API с использованием Kotlin и Spring Boot: сочетание простоты и мощи

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.1K

В мире разработки программного обеспечения создание эффективных и масштабируемых веб-API является ключевой задачей для большинства проектов. Использование правильного инструментария и языка программирования может существенно облегчить этот процесс. В этой статье мы рассмотрим, как использование языка программирования Kotlin с фреймворком Spring Boot упрощает создание REST API, обеспечивая при этом высокую производительность и надежность.

Почему Kotlin и Spring Boot?

Kotlin, разработанный компанией JetBrains, и Spring Boot, один из наиболее популярных фреймворков для создания веб-приложений на языке Java, образуют мощное сочетание для разработки REST API. Kotlin предоставляет чистый и современный синтаксис, что упрощает разработку и делает код более читаемым. Spring Boot, с другой стороны, предоставляет множество готовых компонентов и упрощает конфигурацию, что позволяет сосредоточиться на бизнес-логике приложения.

В добрый путь
Всего голосов 3: ↑2 и ↓1+3
Комментарии13

SQL vs NoSQL: как выбрать архитектуру БД для мобильного приложения, чтобы потом не пришлось ничего переписывать

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров6.7K

Привет! Меня зовут Никита Грибков, я Flutter-разработчик в AGIMA. В сети море статей о различиях между SQL и NoSQL, но в большинстве из них много теории и почти совсем нет прикладных советов. Я пошел другим путем: ниже постараюсь внятно объяснить, какую систему и в каком случае выбирать. Спойлер: всё зависит от проекта и амбиций заказчика. Конечно, сосредоточусь на мобильной разработке, но основные принципы подойдут и в вебе.

Читать далее
Всего голосов 25: ↑17 и ↓8+9
Комментарии16

Как я делаю build больших Android/iOS проектов со 128 GB памяти на старом Mac

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.8K

Наверняка вы не раз сталкивались с проблемой нехватки памяти на вашем ПК при билде проектов? Недавно мне стало не хватать основной памяти на диске, где установлена система MacOS. Решением проблемы послужило приобретение внешнего SSD диска. Как же настроить работу билдов Android и iOS на внешнем диске и перенести все проекты и приложения? Об этом и пойдет речь в этой статье. Приятного чтения!

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии22

Утечки памяти в мобильных приложениях: руководство для QA-инженеров

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров5.6K

Меня зовут Ира и я руковожу отделом тестирования мобильной платформы: наш отдел занимается разработкой инструментов для автоматизации тестирования мобильных приложений Ozon и тестированием внутренних библиотек, которые используются в наших приложениях. Около года назад мы пытались понять, почему у одной из команд джоба с автотестами отваливается по тайм-ауту. К слову, это был проект мобильного приложения для продавцов, и на нем у нас для автоматизации тестирования используются нативные фреймворки: Kaspresso + Kotlin для Android и XCTest + Swift для iOS.

Одна из гипотез заключалась в том, что в приложении могут быть утечки памяти и что-то зависает. Спойлер: дело было не в этом. В общем, около года назад я проверяла, что к чему там у нас с памятью приложения, а сейчас поняла, что полученными знаниями можно и поделиться.

Эта статья будет полезна тем, кто только начинает изучать, что происходит со стабильностью мобильного приложения. Внутри статьи разберёмся с тем, как приложение работает с оперативной памятью; что такое утечки памяти и когда они возникают; как утечки влияют на стабильность работы приложения и как их находить.

Читать далее
Всего голосов 66: ↑65 и ↓1+73
Комментарии11

Как использовать Python в нативном Android приложении. Мой опыт

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров6.2K

Привет, Хабр! В этой статье я хочу поделиться опытом разработки самого популярного загрузчика видео в RuStore и рассказать, как я использовал потрясающую библиотеку для интеграции Python кода в свой проект.

Читать далее
Всего голосов 10: ↑8 и ↓2+7
Комментарии4

Ближайшие события

Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

Разбираемся с coroutine в Kotlin — 1

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.6K

Я начну от идеи и истоков и надеюсь дойти до понимания реализации в Kotlin. Мне удалось найти статью Design of a Separable Transition-diagram Compiler от 1963 года. Люди пишут, что это одно из самых ранних упоминаний идеи корутин. В статье есть часть с названием "Coroutines and Separable Programs", про которую я узнал из поста Why using Kotlin Coroutines?. С этой части, а точнее с ее перевода я и начну.

Назад в прошлое
Всего голосов 4: ↑2 и ↓2+4
Комментарии4

Поэтапный гайд Android-разработчика с нуля

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров9.6K

10 лет назад я был неопытным самоучкой, пытающимся стать разработчиком. И я на своём опыте знаю, как сложно понять, что и в какой последовательности изучать, и когда уже пора идти на собеседование.

Этот гайд — попытка помочь таким же начинающим, каким я когда‑то был, быстрее попасть в профессию.

Читать полностью
Всего голосов 21: ↑7 и ↓14+1
Комментарии19

Как написать свой клиент для YouTube, не привлекая внимания санитаров

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров15K

Привет, Хабр! Когда‑то давно я наткнулся на ролик, где парень писал консольный клиент для YouTube. Идея была просто потрясающей!

Написать свой минималистичный и быстрый клиент, который не будет надоедать
лентами рекомендаций, рекламой, комментариями и т. д. Но вот беда, автор, не найдя возможности использовать YouTube API, решил спарсить одну из фронтенд обёрток над YouTube.

Стоит ли говорить о том, что такое решение сильно теряет в производительности и абсолютно нежизнеспособно на какой‑либо длительный период времени?

Читать далее
Всего голосов 16: ↑16 и ↓0+21
Комментарии54

Реализуем балансировку нагрузки на сервер с помощью Envoy и gRPC API на Kotlin

Время на прочтение6 мин
Количество просмотров2K

В наши дни архитектуры на базе микросервисов стали внедряться практически повсеместно. И нередки ситуации, когда какая-нибудь бизнес-функция может генерировать большое количество сетевого трафика в форме обмена сообщениями между несколькими микросервисами, которые она использует. Если мы сможем сделать способ передачи сообщений более эффективным за счет, например, уменьшения размера сообщений, то мы сможем использовать ту же инфраструктуру для работы с более высокими нагрузками.

Читать далее
Всего голосов 9: ↑9 и ↓0+12
Комментарии1

Как мы реализовали кнопку со свайпом на Jetpack Compose

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров4.9K

Привет, Хабр! Меня зовут Женя Мельцайкин, я работаю в команде мобильной разработки Контура.

Мы разрабатываем экосистему для бизнеса, которая оптимизирует рутинные задачи: работу с маркировкой, проверку контрагентов, товароучет, документооборот, отчетность. И в одном из продуктов работаем с подписанием электронных документов. Электронная подпись — это юридически значимая операция, поэтому важно не допустить ошибки пользователя.

В статье расскажу, как мы сделали кнопку по проведению жеста свайпом на Jetpack Compose, чтобы избежать случайной подписи документа.

Читать далее
Всего голосов 24: ↑24 и ↓0+29
Комментарии5

Kotlin JS: непокоренная вершина VK

Время на прочтение4 мин
Количество просмотров5.4K

После окончания нативного Android приложения от заказчика последовало предложение написать мини-приложение VK. Так как я имел опыт написания кода только для нативных приложений, то для меня это был интересный челенж. Немного погуглив пришел к тому, что добрые разработчики из Jet Brains разработали Kotlin JS - оболочку над React (а Kotlin мой основной язык). Вдохновившись статьей https://habr.com/ru/companies/vk/articles/521192/ я приступил к написанию кода.

Итак, чем хорош Kotlin для разработки такого рода приложений - использование всех фишек (экстеншены, дата классы, корутины, конструкции и пр.) языка и в то же время возможность реализации компонентов и хуков React. Поэтому, сомнений у меня не было.

Несмотря на то, что в статьях указывается как легко имплементируются в проект библиотеки, действительность оказалось другой. Gradle сыпал ошибками несовместимости библиотек между собой. При этом, при одинаковых номерах версий дружба никак не зарождалась. В итоге, поэкспериментировав с различными версиями пришлось перейти к изучению списка оберток в https://github.com/JetBrains/kotlin-wrappers/. Здесь меня ожидало решение проблемы совместимости - https://github.com/JetBrains/kotlin-wrappers/tree/master/kotlin-wrappers-bom. Добавление имплементации этой библиотеки позволяет не заморачиваться и передать это заботу этой библиотеке:

Читать далее
Всего голосов 7: ↑3 и ↓4+2
Комментарии2

Room для Kotlin Multiplatform. Пробуем нативное решение

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.6K

Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. В начале мая Google нас порадовали релизами нескольких библиотек для локальных хранилищ. Наконец, в приложения Kotlin Multiplatform можно полноценно использовать Room (версия 2.7.0-alpha01 и выше).
И сегодня мы опробуем работу с данной библиотекой на примере небольшого приложения Todo, написанного на KMP с использованием Compose Multiplatform.


Кроме Room, в проекте используется библиотека Lifecycle-viewmodel для KMP. И Koin для DI и гармонии.

Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии8
1
23 ...