Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 3047 сообщений
Cообщения с меткой

kotlin - Самое интересное в блогах

«  Предыдущие 30 Следующие 30  »
rss_habr

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

Среда, 27 Июля 2022 г. 12:18 (ссылка)



Всем привет! Наверняка каждый Android-разработчик хоть раз сталкивался с проблемой скорости сборки своего проекта. После нехороших слов в адрес кодогенерации, покупок более мощного железа и многочисленных попыток распилить проект на небольшие параллельно собираемые модули и прохождений всех стадий торга мы продолжаем искать решение этой проблемы. К счастью, за годы развития и в Gradle, и Android Gradle Plugin (AGP) появилось много полезных штук для ускорения сборки, о которых я расскажу дальше.



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



Я расскажу на примере мобильного Яндекс Браузера. У нас было ~150 Gradle-модулей, ~2 млн LoC на Java/Kotlin, десяток Gradle-плагинов, тысячи строк кода в buildSrc и лёгкая дрожь от вопроса, сколько ещё может переварить билд-система. Не скажу, что это всё было категорически необходимо, но к написанным строчкам кода надо проявлять уважение.

Читать дальше →

https://habr.com/ru/post/678786/?utm_source=habrahabr&utm_medium=rss&utm_campaign=678786

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Telegram Bot на Kotlin: Командуем

Воскресенье, 24 Июля 2022 г. 17:53 (ссылка)

Это промежуточная часть туториала о том, как можно создавать телеграм ботов на базе plagubot фреймворка и tgbotapi библиотеки. Конкретно в данной получасти речь пойдет про достаточно простой (по меркам будущих частей) плагин для регистрации команд на старте и их установке/очистке далее в рантайме

Читать далее

https://habr.com/ru/post/677624/?utm_source=habrahabr&utm_medium=rss&utm_campaign=677624

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Telegram Bot на Kotlin: Командуем

Воскресенье, 24 Июля 2022 г. 17:53 (ссылка)

Это промежуточная часть туториала о том, как можно создавать телеграм ботов на базе plagubot фреймворка и tgbotapi библиотеки. Конкретно в данной получасти речь пойдет про достаточно простой (по меркам будущих частей) плагин для регистрации команд на старте и их установке/очистке далее в рантайме

Читать далее

https://habr.com/ru/post/677624/?utm_source=habrahabr&utm_medium=rss&utm_campaign=677624

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Как войти в блокчейн-разработку через Java и Kotlin: представляем JVM SDK смарт-контрактов

Четверг, 21 Июля 2022 г. 12:01 (ссылка)

Всем привет! Меня зовут Степан Кашинцев, я руководитель группы разработки в Waves Enterprise, а конкретно — подразделения, отвечающего за создание децентрализованных приложений, реализующих процессы реального бизнеса на базе нашего блокчейна. В этом посте я хочу рассказать о нашем SDK для JVM-языков программирования, с помощью которого каждый Java/Kotlin-разработчик сможет попробовать себя в создании блокчейн-приложений.

Читать далее

https://habr.com/ru/post/678062/?utm_source=habrahabr&utm_medium=rss&utm_campaign=678062

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Получение generic-типа в runtime

Воскресенье, 17 Июля 2022 г. 11:17 (ссылка)





В Java 5 появились generic-типы, а вместе с ним и концепция type erasure, которая буквально означает стирание информации о generic-типе после компиляции. Действительно, во многих случаях это просто синтаксический сахар, помогающий писать типо-безопасный код на уровне компиляции, и в runtime с такими типами работать нельзя. Например, невозможно получить тип T внутри ArrayList, поэтому он в своей реализации создает массив Object[], а не T[] для хранения элементов.



Однако, в ряде случаев это очень даже возможно. Например, можно объявить поле

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanPostProcessor;
...
@Autowired
private Set beanPostProcessors;


и spring в него заинжектит все объекты контекста, которые реализуют интерфейс BeanPostProcessor.



Можно написать и так:

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
...
List strings = new ObjectMapper()
.readValue("[1, 2, 3]", new TypeReference<>() {});
// все элементы strings - строки (не Integer и не Long)
List ints = new ObjectMapper()
.readValue("[1, 2, 3]", new TypeReference<>() {});
// все элементы ints - Integer (не String и не Long)


Можно написать даже так:
Читать дальше →

https://habr.com/ru/post/588252/?utm_source=habrahabr&utm_medium=rss&utm_campaign=588252

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Подробно о мониторинге и профилировании JVM

Пятница, 15 Июля 2022 г. 17:28 (ссылка)

Управление доступными ресурсами в облачной среде по запросу – тема, которая бывает очень непростой. Но эта работа стоит того, поскольку вы сможете использовать ресурсы гораздо эффективнее. Поэтому многие компании и проекты решаются мигрировать на облачные платформы, в частности, на Azul, AWS, Google Cloud или другие. С точки зрения программиста, есть одна истина, которая сохраняется и в облаке: рекомендуется понимать поведение и ограничения того JVM-приложения, что вы развернули (или не приложений, а подов, минимальных развертываемых единиц в Kubernetes). Платформа Java является многопоточной, и, даже если вы не собираетесь использовать какие-либо доступные для этого API, платформа все равно порождает множество потоков-демонов, работающих в фоновом режиме. Такие потоки нужны не только для очистки и подхватывания неиспользуемой памяти. Они относятся к платформе, а что насчет фреймворков? Фреймворки Java пытаются обслуживать большие эксплуатационные мощности; следовательно, инициируется работа множества вспомогательных потоков. Ниже мы немного заглянем под капот. В этой статье будет подробнее рассмотрено, как устроены популярные фреймворки Quarkus и Spring-Boot, сколько потоков они инициируют, чтобы обслужить все результаты. Давайте вместе пробежимся по примерам и для начала разберемся, какова разница между мониторингом и профилированием.

Читать далее

https://habr.com/ru/post/677212/?utm_source=habrahabr&utm_medium=rss&utm_campaign=677212

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Мой первый бот для Сервисдеска: умещается в кармане, расширяется как Вселенная

Четверг, 14 Июля 2022 г. 17:54 (ссылка)

Привет, меня зовут Юрий, и я фулстек-разработчик в DataLine. В компании занимаюсь созданием и развитием внутренних и внешних ИТ-сервисов: Сервисдеска, мастер-справочников, учета оборудования.

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

Читать далее

https://habr.com/ru/post/677022/?utm_source=habrahabr&utm_medium=rss&utm_campaign=677022

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[recovery mode] Чемпионат или викторина? Сколково разыграет 2,5 месячных оклада Java-разработчика

Вторник, 12 Июля 2022 г. 15:17 (ссылка)

Фонд «Сколково» и IT_One организуют чемпионат среди Java-специалистов на платформе All Cups. Участникам предлагают побороться за призовой фонд в 700 000 рублей, что в среднем по рынку соответствует 2,5-3 окладам разработчиков уровня middle и выше. Прием заявок для участия в онлайн-чемпионате открыт до 10 августа.

Понять дотягивает ли ваш уровень компетенций до борьбы с топовыми специалистами по Java вы сможете в рамках квалификационного раунда. За 5 дней участникам потребуется создать собственный сервис на заданном API. Тест квалификационных работ пройдет автоматически.

Победители, занявшие в финале чемпионата с 1 по 5 места, получат денежные призы от 80 до 250 тысяч рублей. Участники с наибольшим количеством баллов по итогам двух раундов и авторы лучших решений также получат возможность присоединиться к команде IT_One.

Павел Новиков, директор центра инноваций в финансовом секторе Фонда «Сколково» уверен, что чемпионаты – отличная возможность для компаний побороться за крутых специалистов: «Игроки рынка IT ведут активную борьбу за талантливых java-разработчиков. Хакатоны и соревнования — это один из самых востребованных и успешных инструментов для популяризации бренда компании, позволяет представить реальные рабочие задачи для потенциальных сотрудников и лучших привлечь в команду».

Вопрос: Какой должна быть ваша мотивация, чтобы вы приняли участие в подобном турнире?

Читать далее

https://habr.com/ru/post/676520/?utm_source=habrahabr&utm_medium=rss&utm_campaign=676520

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Kotlin — ещё меньше копипасты с делегатами локальных переменных

Четверг, 07 Июля 2022 г. 12:45 (ссылка)

TLDR: используем имя переменной при инициализации ее значения

Читать далее

https://habr.com/ru/post/675552/?utm_source=habrahabr&utm_medium=rss&utm_campaign=675552

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Kotlin — ещё меньше копипасты с делегатами локальных переменных

Четверг, 07 Июля 2022 г. 12:45 (ссылка)

TLDR: используем имя переменной при инициализации ее значения

Читать далее

https://habr.com/ru/post/675552/?utm_source=habrahabr&utm_medium=rss&utm_campaign=675552

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

14 задач по Kotlin lists, которые заставят вас подумать

Четверг, 30 Июня 2022 г. 15:40 (ссылка)

Привет Хабр! Меня зовут Леонид Иванькин, я ведущий Android-разработчик в МТС Digital, работаю над приложением Мой МТС. В этой статье – сложные и не очень задачи, чтобы проверить, насколько хорошо вы разбираетесь в операторах для списков. Готовы испытать свои скиллы? Тогда переходите под кат!

Пройти испытания

https://habr.com/ru/post/674040/?utm_source=habrahabr&utm_medium=rss&utm_campaign=674040

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

14 задач по Kotlin lists, которые заставят вас подумать

Четверг, 30 Июня 2022 г. 15:40 (ссылка)

Привет Хабр! Меня зовут Леонид Иванькин, я ведущий Android-разработчик в МТС Digital, работаю над приложением Мой МТС. В этой статье – сложные и не очень задачи, чтобы проверить, насколько хорошо вы разбираетесь в операторах для списков. Готовы испытать свои скиллы? Тогда переходите под кат!

Пройти испытания

https://habr.com/ru/post/674040/?utm_source=habrahabr&utm_medium=rss&utm_campaign=674040

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Re2j вместо стандартного regEx в Java: в каких случаях и как использовать

Среда, 29 Июня 2022 г. 19:35 (ссылка)

Всем привет! Я Даниил, java разработчик в Just AI, и в этой статье я расскажу, как мы столкнулись с проблемой backtracking’а в регулярных выражениях и как ее решили с помощью библиотеки re2j.

Читать далее

https://habr.com/ru/post/674178/?utm_source=habrahabr&utm_medium=rss&utm_campaign=674178

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

We need to go deeper: диплинки и кодогенерация

Вторник, 28 Июня 2022 г. 14:49 (ссылка)

Привет! Мы написали свою систему диплинков на основе кодогенерации. В этой статье поговорим, как мы упростили работу с диплинками и смогли отловить устаревшие, добавили мониторинг и как собрали все диплинки в одной статье в конфлюенсе.

Диплинк — это uri на конкретный ресурс в приложении. Они нужны бизнесу, чтобы упрощать пользовательский опыт. Так вместо нескольких переходов внутри приложения диплинки позволяют направить пользователя на определённый экран в один клик (польза для пользователя) и снимать статистику (пользах для бизнеса). Например: на внешней площадке компания разместила баннер, в котором предлагается заказать виртуальную карту, пользователь может кликнуть по баннеру и сразу попасть на экран заказа карты, а бизнес сможет оценить, какая из площадок более эффективна.

Самая большая проблема — это проблема безопасности. Объясню на примере активити, которая открывает веб-страницы. Активити открывается по диплинку, в нём указывается URL в качестве параметра. Один из вариантов атаки — когда злоумышленник может заставить пользователя пройти по диплинку с URL на вредоносный сайт и таким образом провести атаку. Ещё одна из возможных проблем — на некоторых экранах нам нужно валидировать параметры, а это иногда занимает значительную часть активити. Было бы хорошо вынести валидацию в отдельное место.

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

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

Читать далее

https://habr.com/ru/post/673850/?utm_source=habrahabr&utm_medium=rss&utm_campaign=673850

Комментарии (0)КомментироватьВ цитатник или сообщество

«  Предыдущие 30 Следующие 30  »

<kotlin - Самое интересное в блогах

Страницы: 1 ..
.. 7 8 [9] 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda