#kotlin_dsl — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #kotlin_dsl, aggregated by home.social.
-
Как мы переводили страницу объявления на Beduin в мобильной версии Авито
Всем привет! Меня зовут Егор Савинцев , я Frontend Platform Engineer в Авито . Сейчас я работаю в команде архитектуры, а до этого в команде Phobos в рамках Платформизации переводил страницу объявления на Beduin — разрабатывал клиентскую архитектуру и переписывал блоки. Сразу важное отступление. Beduin — это Backend-Driven UI. Если в нативе в коде клиентского приложения есть компоненты, бэкенд присылает им данные, и всё работает. В Beduin бэкенд присылает и данные, и сами компоненты в специальном виде. На клиенте у нас только рендерер — специальный компонент, который принимает JSON и рендерит то, что мы прислали. В этой статье я расскажу, зачем вообще переписывать работающую страницу, как эволюционировала наша архитектура и с какими компромиссами между нативным кодом и BDUI нам пришлось столкнуться. Статья будет полезна frontend- и mobile-разработчикам, инженерам платформенных команд, архитекторам клиентских приложений и backend-разработчикам, которые внедряют Backend-Driven UI. В общем, всем, кто планирует переводить крупные экраны на BDUI и хочет заранее узнать, что может пойти не так. Спойлер: всё.
https://habr.com/ru/companies/avito/articles/1072198/
#javascript #json #bdui #frontend #BackendDriven_UI #Kotlin_DSL #архитектура_фронтенда #abтестирование
-
Как мы переводили страницу объявления на Beduin в мобильной версии Авито
Всем привет! Меня зовут Егор Савинцев , я Frontend Platform Engineer в Авито . Сейчас я работаю в команде архитектуры, а до этого в команде Phobos в рамках Платформизации переводил страницу объявления на Beduin — разрабатывал клиентскую архитектуру и переписывал блоки. Сразу важное отступление. Beduin — это Backend-Driven UI. Если в нативе в коде клиентского приложения есть компоненты, бэкенд присылает им данные, и всё работает. В Beduin бэкенд присылает и данные, и сами компоненты в специальном виде. На клиенте у нас только рендерер — специальный компонент, который принимает JSON и рендерит то, что мы прислали. В этой статье я расскажу, зачем вообще переписывать работающую страницу, как эволюционировала наша архитектура и с какими компромиссами между нативным кодом и BDUI нам пришлось столкнуться. Статья будет полезна frontend- и mobile-разработчикам, инженерам платформенных команд, архитекторам клиентских приложений и backend-разработчикам, которые внедряют Backend-Driven UI. В общем, всем, кто планирует переводить крупные экраны на BDUI и хочет заранее узнать, что может пойти не так. Спойлер: всё.
https://habr.com/ru/companies/avito/articles/1072198/
#javascript #json #bdui #frontend #BackendDriven_UI #Kotlin_DSL #архитектура_фронтенда #abтестирование
-
Как мы переводили страницу объявления на Beduin в мобильной версии Авито
Всем привет! Меня зовут Егор Савинцев , я Frontend Platform Engineer в Авито . Сейчас я работаю в команде архитектуры, а до этого в команде Phobos в рамках Платформизации переводил страницу объявления на Beduin — разрабатывал клиентскую архитектуру и переписывал блоки. Сразу важное отступление. Beduin — это Backend-Driven UI. Если в нативе в коде клиентского приложения есть компоненты, бэкенд присылает им данные, и всё работает. В Beduin бэкенд присылает и данные, и сами компоненты в специальном виде. На клиенте у нас только рендерер — специальный компонент, который принимает JSON и рендерит то, что мы прислали. В этой статье я расскажу, зачем вообще переписывать работающую страницу, как эволюционировала наша архитектура и с какими компромиссами между нативным кодом и BDUI нам пришлось столкнуться. Статья будет полезна frontend- и mobile-разработчикам, инженерам платформенных команд, архитекторам клиентских приложений и backend-разработчикам, которые внедряют Backend-Driven UI. В общем, всем, кто планирует переводить крупные экраны на BDUI и хочет заранее узнать, что может пойти не так. Спойлер: всё.
https://habr.com/ru/companies/avito/articles/1072198/
#javascript #json #bdui #frontend #BackendDriven_UI #Kotlin_DSL #архитектура_фронтенда #abтестирование
-
[Перевод] Kotlin переходит к деструктурированию по именам
В Kotlin деструктурирование выглядело так: val (name, age) = person . Но компилятор берет значения не по именам, а по позиции component1/component2 . Отсюда проблемы. Если поменяли порядок параметров в data class или сделали age вычисляемым свойством: то та же строка начинает доставать другое поле. Причем иногда код даже скомпилируется, но, конечно, смысл изменится: val (age, name) = person . И вот теперь Kotlin эксперементально переводит круглые скобки на деструктурирование по имени. Синтаксис будет такой: (val name, val age) = person . И порядок внутри скобок не важен. Переименование явно: (val years = age, val theName = name) = person . Позиционное же деструктурирование остается, но переезжает в квадратные скобки для Pair/Triple и коллекций: val [x, y] = point . Разбираемся полностью в новом переводе от команды Spring АйО .
https://habr.com/ru/companies/spring_aio/articles/1035596/
#java #kotlin #spring #spring_boot #java_core #kotlin_multiplatform #kotlin_dsl
-
[Перевод] Kotlin переходит к деструктурированию по именам
В Kotlin деструктурирование выглядело так: val (name, age) = person . Но компилятор берет значения не по именам, а по позиции component1/component2 . Отсюда проблемы. Если поменяли порядок параметров в data class или сделали age вычисляемым свойством: то та же строка начинает доставать другое поле. Причем иногда код даже скомпилируется, но, конечно, смысл изменится: val (age, name) = person . И вот теперь Kotlin эксперементально переводит круглые скобки на деструктурирование по имени. Синтаксис будет такой: (val name, val age) = person . И порядок внутри скобок не важен. Переименование явно: (val years = age, val theName = name) = person . Позиционное же деструктурирование остается, но переезжает в квадратные скобки для Pair/Triple и коллекций: val [x, y] = point . Разбираемся полностью в новом переводе от команды Spring АйО .
https://habr.com/ru/companies/spring_aio/articles/1035596/
#java #kotlin #spring #spring_boot #java_core #kotlin_multiplatform #kotlin_dsl
-
[Перевод] Kotlin переходит к деструктурированию по именам
В Kotlin деструктурирование выглядело так: val (name, age) = person . Но компилятор берет значения не по именам, а по позиции component1/component2 . Отсюда проблемы. Если поменяли порядок параметров в data class или сделали age вычисляемым свойством: то та же строка начинает доставать другое поле. Причем иногда код даже скомпилируется, но, конечно, смысл изменится: val (age, name) = person . И вот теперь Kotlin эксперементально переводит круглые скобки на деструктурирование по имени. Синтаксис будет такой: (val name, val age) = person . И порядок внутри скобок не важен. Переименование явно: (val years = age, val theName = name) = person . Позиционное же деструктурирование остается, но переезжает в квадратные скобки для Pair/Triple и коллекций: val [x, y] = point . Разбираемся полностью в новом переводе от команды Spring АйО .
https://habr.com/ru/companies/spring_aio/articles/1035596/
#java #kotlin #spring #spring_boot #java_core #kotlin_multiplatform #kotlin_dsl
-
Динамические product flavors в Android: когда статической конфигурации уже мало
Рано или поздно каждый Android‑разработчик сталкивается с задачей «одно приложение — много сборок»: white‑label‑решения, региональные версии, отдельные сборки для разных магазинов приложений, демо для клиентов, внутренние окружения. Встроенный механизм product flavors в Android Gradle Plugin отлично справляется со своей задачей — пока количество вариантов умещается в голове и в паре экранов build.gradle.kts . В этой статье я разберу подход, при котором конфигурация flavors строится динамически: список вариантов и их параметры живут вне build.gradle.kts .
https://habr.com/ru/articles/1027280/
#android #gradle #product_flavors #build_variants #kotlin_dsl #whitelabel #android_gradle_plugin #buildgradlekts #android_studio
-
Динамические product flavors в Android: когда статической конфигурации уже мало
Рано или поздно каждый Android‑разработчик сталкивается с задачей «одно приложение — много сборок»: white‑label‑решения, региональные версии, отдельные сборки для разных магазинов приложений, демо для клиентов, внутренние окружения. Встроенный механизм product flavors в Android Gradle Plugin отлично справляется со своей задачей — пока количество вариантов умещается в голове и в паре экранов build.gradle.kts . В этой статье я разберу подход, при котором конфигурация flavors строится динамически: список вариантов и их параметры живут вне build.gradle.kts .
https://habr.com/ru/articles/1027280/
#android #gradle #product_flavors #build_variants #kotlin_dsl #whitelabel #android_gradle_plugin #buildgradlekts #android_studio
-
Динамические product flavors в Android: когда статической конфигурации уже мало
Рано или поздно каждый Android‑разработчик сталкивается с задачей «одно приложение — много сборок»: white‑label‑решения, региональные версии, отдельные сборки для разных магазинов приложений, демо для клиентов, внутренние окружения. Встроенный механизм product flavors в Android Gradle Plugin отлично справляется со своей задачей — пока количество вариантов умещается в голове и в паре экранов build.gradle.kts . В этой статье я разберу подход, при котором конфигурация flavors строится динамически: список вариантов и их параметры живут вне build.gradle.kts .
https://habr.com/ru/articles/1027280/
#android #gradle #product_flavors #build_variants #kotlin_dsl #whitelabel #android_gradle_plugin #buildgradlekts #android_studio
-
Основы DSL в Kotlin
Domain Specific Language (DSL) — это язык, ориентированный на конкретную предметную область, который позволяет выражать решения в терминах этой области. В отличие от языков общего назначения вроде Java или Kotlin, DSL фокусируется на узкой задаче, делая код более читаемым и выразительным. Kotlin благодаря своему синтаксису и возможностям предоставляет отличные инструменты для создания внутренних DSL. В этой статье мы рассмотрим, как создавать собственные предметно-ориентированные языки в Kotlin, какие языковые конструкции для этого используются и как это применяется в реальных проектах. Чтобы статья была практико-ориентированной, мы сосредоточимся на одной области — создании DSL для конфигурации приложений и разберем несколько компактных примеров.
https://habr.com/ru/companies/otus/articles/967488/
#kotlin_dsl #DSL #конфигурация_приложений #лямбды_с_получателем #инфиксные_функции #внутренние_DSL #типобезопасность #конфигурационные_файлы #читаемость_кода
-
Основы DSL в Kotlin
Domain Specific Language (DSL) — это язык, ориентированный на конкретную предметную область, который позволяет выражать решения в терминах этой области. В отличие от языков общего назначения вроде Java или Kotlin, DSL фокусируется на узкой задаче, делая код более читаемым и выразительным. Kotlin благодаря своему синтаксису и возможностям предоставляет отличные инструменты для создания внутренних DSL. В этой статье мы рассмотрим, как создавать собственные предметно-ориентированные языки в Kotlin, какие языковые конструкции для этого используются и как это применяется в реальных проектах. Чтобы статья была практико-ориентированной, мы сосредоточимся на одной области — создании DSL для конфигурации приложений и разберем несколько компактных примеров.
https://habr.com/ru/companies/otus/articles/967488/
#kotlin_dsl #DSL #конфигурация_приложений #лямбды_с_получателем #инфиксные_функции #внутренние_DSL #типобезопасность #конфигурационные_файлы #читаемость_кода
-
Основы DSL в Kotlin
Domain Specific Language (DSL) — это язык, ориентированный на конкретную предметную область, который позволяет выражать решения в терминах этой области. В отличие от языков общего назначения вроде Java или Kotlin, DSL фокусируется на узкой задаче, делая код более читаемым и выразительным. Kotlin благодаря своему синтаксису и возможностям предоставляет отличные инструменты для создания внутренних DSL. В этой статье мы рассмотрим, как создавать собственные предметно-ориентированные языки в Kotlin, какие языковые конструкции для этого используются и как это применяется в реальных проектах. Чтобы статья была практико-ориентированной, мы сосредоточимся на одной области — создании DSL для конфигурации приложений и разберем несколько компактных примеров.
https://habr.com/ru/companies/otus/articles/967488/
#kotlin_dsl #DSL #конфигурация_приложений #лямбды_с_получателем #инфиксные_функции #внутренние_DSL #типобезопасность #конфигурационные_файлы #читаемость_кода
-
Kotlin Multiplatform: как писать код один раз и покорить все платформы
Kotlin Multiplatform — это подход, который позволяет делить до 80% кода между Android, iOS, backend и вебом, не жертвуя нативностью. В статье — без лишнего пафоса о том, как устроена архитектура KMP, чем она отличается от Flutter и React Native, как работает сборка, где границы общего и платформенного кода и почему это решение подходит командам, стремящимся к эффективности без компромиссов.
https://habr.com/ru/companies/otus/articles/908940/
#kotlin #kotlin_multiplatform #kotlin_dsl #кроссплатформенная_разработка #KMP_архитектура
-
Kotlin Multiplatform: как писать код один раз и покорить все платформы
Kotlin Multiplatform — это подход, который позволяет делить до 80% кода между Android, iOS, backend и вебом, не жертвуя нативностью. В статье — без лишнего пафоса о том, как устроена архитектура KMP, чем она отличается от Flutter и React Native, как работает сборка, где границы общего и платформенного кода и почему это решение подходит командам, стремящимся к эффективности без компромиссов.
https://habr.com/ru/companies/otus/articles/908940/
#kotlin #kotlin_multiplatform #kotlin_dsl #кроссплатформенная_разработка #KMP_архитектура
-
Kotlin Multiplatform: как писать код один раз и покорить все платформы
Kotlin Multiplatform — это подход, который позволяет делить до 80% кода между Android, iOS, backend и вебом, не жертвуя нативностью. В статье — без лишнего пафоса о том, как устроена архитектура KMP, чем она отличается от Flutter и React Native, как работает сборка, где границы общего и платформенного кода и почему это решение подходит командам, стремящимся к эффективности без компромиссов.
https://habr.com/ru/companies/otus/articles/908940/
#kotlin #kotlin_multiplatform #kotlin_dsl #кроссплатформенная_разработка #KMP_архитектура
-
Декларативный подход в организации gradle зависимостей в Android проектах
В многомодульных приложениях Android существует проблема организации зависимости gradle. Каждая зависимость указывается отдельно.
-
Декларативный подход в организации gradle зависимостей в Android проектах
В многомодульных приложениях Android существует проблема организации зависимости gradle. Каждая зависимость указывается отдельно.
-
Декларативный подход в организации gradle зависимостей в Android проектах
В многомодульных приложениях Android существует проблема организации зависимости gradle. Каждая зависимость указывается отдельно.