home.social

#kotlin_dsl — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #kotlin_dsl, aggregated by home.social.

fetched live
  1. Как мы переводили страницу объявления на Beduin в мобильной версии Авито

    Всем привет! Меня зовут Егор Савинцев , я Frontend Platform Engineer в Авито . Сейчас я работаю в команде архитектуры, а до этого в команде Phobos в рамках Платформизации переводил страницу объявления на Beduin — разрабатывал клиентскую архитектуру и переписывал блоки. Сразу важное отступление. Beduin — это Backend-Driven UI. Если в нативе в коде клиентского приложения есть компоненты, бэкенд присылает им данные, и всё работает. В Beduin бэкенд присылает и данные, и сами компоненты в специальном виде. На клиенте у нас только рендерер — специальный компонент, который принимает JSON и рендерит то, что мы прислали. В этой статье я расскажу, зачем вообще переписывать работающую страницу, как эволюционировала наша архитектура и с какими компромиссами между нативным кодом и BDUI нам пришлось столкнуться. Статья будет полезна frontend- и mobile-разработчикам, инженерам платформенных команд, архитекторам клиентских приложений и backend-разработчикам, которые внедряют Backend-Driven UI. В общем, всем, кто планирует переводить крупные экраны на BDUI и хочет заранее узнать, что может пойти не так. Спойлер: всё.

    habr.com/ru/companies/avito/ar

    #javascript #json #bdui #frontend #BackendDriven_UI #Kotlin_DSL #архитектура_фронтенда #abтестирование

  2. Как мы переводили страницу объявления на Beduin в мобильной версии Авито

    Всем привет! Меня зовут Егор Савинцев , я Frontend Platform Engineer в Авито . Сейчас я работаю в команде архитектуры, а до этого в команде Phobos в рамках Платформизации переводил страницу объявления на Beduin — разрабатывал клиентскую архитектуру и переписывал блоки. Сразу важное отступление. Beduin — это Backend-Driven UI. Если в нативе в коде клиентского приложения есть компоненты, бэкенд присылает им данные, и всё работает. В Beduin бэкенд присылает и данные, и сами компоненты в специальном виде. На клиенте у нас только рендерер — специальный компонент, который принимает JSON и рендерит то, что мы прислали. В этой статье я расскажу, зачем вообще переписывать работающую страницу, как эволюционировала наша архитектура и с какими компромиссами между нативным кодом и BDUI нам пришлось столкнуться. Статья будет полезна frontend- и mobile-разработчикам, инженерам платформенных команд, архитекторам клиентских приложений и backend-разработчикам, которые внедряют Backend-Driven UI. В общем, всем, кто планирует переводить крупные экраны на BDUI и хочет заранее узнать, что может пойти не так. Спойлер: всё.

    habr.com/ru/companies/avito/ar

    #javascript #json #bdui #frontend #BackendDriven_UI #Kotlin_DSL #архитектура_фронтенда #abтестирование

  3. Как мы переводили страницу объявления на Beduin в мобильной версии Авито

    Всем привет! Меня зовут Егор Савинцев , я Frontend Platform Engineer в Авито . Сейчас я работаю в команде архитектуры, а до этого в команде Phobos в рамках Платформизации переводил страницу объявления на Beduin — разрабатывал клиентскую архитектуру и переписывал блоки. Сразу важное отступление. Beduin — это Backend-Driven UI. Если в нативе в коде клиентского приложения есть компоненты, бэкенд присылает им данные, и всё работает. В Beduin бэкенд присылает и данные, и сами компоненты в специальном виде. На клиенте у нас только рендерер — специальный компонент, который принимает JSON и рендерит то, что мы прислали. В этой статье я расскажу, зачем вообще переписывать работающую страницу, как эволюционировала наша архитектура и с какими компромиссами между нативным кодом и BDUI нам пришлось столкнуться. Статья будет полезна frontend- и mobile-разработчикам, инженерам платформенных команд, архитекторам клиентских приложений и backend-разработчикам, которые внедряют Backend-Driven UI. В общем, всем, кто планирует переводить крупные экраны на BDUI и хочет заранее узнать, что может пойти не так. Спойлер: всё.

    habr.com/ru/companies/avito/ar

    #javascript #json #bdui #frontend #BackendDriven_UI #Kotlin_DSL #архитектура_фронтенда #abтестирование

  4. [Перевод] 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 АйО .

    habr.com/ru/companies/spring_a

    #java #kotlin #spring #spring_boot #java_core #kotlin_multiplatform #kotlin_dsl

  5. [Перевод] 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 АйО .

    habr.com/ru/companies/spring_a

    #java #kotlin #spring #spring_boot #java_core #kotlin_multiplatform #kotlin_dsl

  6. [Перевод] 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 АйО .

    habr.com/ru/companies/spring_a

    #java #kotlin #spring #spring_boot #java_core #kotlin_multiplatform #kotlin_dsl

  7. Динамические product flavors в Android: когда статической конфигурации уже мало

    Рано или поздно каждый Android‑разработчик сталкивается с задачей «одно приложение — много сборок»: white‑label‑решения, региональные версии, отдельные сборки для разных магазинов приложений, демо для клиентов, внутренние окружения. Встроенный механизм product flavors в Android Gradle Plugin отлично справляется со своей задачей — пока количество вариантов умещается в голове и в паре экранов build.gradle.kts . В этой статье я разберу подход, при котором конфигурация flavors строится динамически: список вариантов и их параметры живут вне build.gradle.kts .

    habr.com/ru/articles/1027280/

    #android #gradle #product_flavors #build_variants #kotlin_dsl #whitelabel #android_gradle_plugin #buildgradlekts #android_studio

  8. Динамические product flavors в Android: когда статической конфигурации уже мало

    Рано или поздно каждый Android‑разработчик сталкивается с задачей «одно приложение — много сборок»: white‑label‑решения, региональные версии, отдельные сборки для разных магазинов приложений, демо для клиентов, внутренние окружения. Встроенный механизм product flavors в Android Gradle Plugin отлично справляется со своей задачей — пока количество вариантов умещается в голове и в паре экранов build.gradle.kts . В этой статье я разберу подход, при котором конфигурация flavors строится динамически: список вариантов и их параметры живут вне build.gradle.kts .

    habr.com/ru/articles/1027280/

    #android #gradle #product_flavors #build_variants #kotlin_dsl #whitelabel #android_gradle_plugin #buildgradlekts #android_studio

  9. Динамические product flavors в Android: когда статической конфигурации уже мало

    Рано или поздно каждый Android‑разработчик сталкивается с задачей «одно приложение — много сборок»: white‑label‑решения, региональные версии, отдельные сборки для разных магазинов приложений, демо для клиентов, внутренние окружения. Встроенный механизм product flavors в Android Gradle Plugin отлично справляется со своей задачей — пока количество вариантов умещается в голове и в паре экранов build.gradle.kts . В этой статье я разберу подход, при котором конфигурация flavors строится динамически: список вариантов и их параметры живут вне build.gradle.kts .

    habr.com/ru/articles/1027280/

    #android #gradle #product_flavors #build_variants #kotlin_dsl #whitelabel #android_gradle_plugin #buildgradlekts #android_studio

  10. Основы DSL в Kotlin

    Domain Specific Language (DSL) — это язык, ориентированный на конкретную предметную область, который позволяет выражать решения в терминах этой области. В отличие от языков общего назначения вроде Java или Kotlin, DSL фокусируется на узкой задаче, делая код более читаемым и выразительным. Kotlin благодаря своему синтаксису и возможностям предоставляет отличные инструменты для создания внутренних DSL. В этой статье мы рассмотрим, как создавать собственные предметно-ориентированные языки в Kotlin, какие языковые конструкции для этого используются и как это применяется в реальных проектах. Чтобы статья была практико-ориентированной, мы сосредоточимся на одной области — создании DSL для конфигурации приложений и разберем несколько компактных примеров.

    habr.com/ru/companies/otus/art

    #kotlin_dsl #DSL #конфигурация_приложений #лямбды_с_получателем #инфиксные_функции #внутренние_DSL #типобезопасность #конфигурационные_файлы #читаемость_кода

  11. Основы DSL в Kotlin

    Domain Specific Language (DSL) — это язык, ориентированный на конкретную предметную область, который позволяет выражать решения в терминах этой области. В отличие от языков общего назначения вроде Java или Kotlin, DSL фокусируется на узкой задаче, делая код более читаемым и выразительным. Kotlin благодаря своему синтаксису и возможностям предоставляет отличные инструменты для создания внутренних DSL. В этой статье мы рассмотрим, как создавать собственные предметно-ориентированные языки в Kotlin, какие языковые конструкции для этого используются и как это применяется в реальных проектах. Чтобы статья была практико-ориентированной, мы сосредоточимся на одной области — создании DSL для конфигурации приложений и разберем несколько компактных примеров.

    habr.com/ru/companies/otus/art

    #kotlin_dsl #DSL #конфигурация_приложений #лямбды_с_получателем #инфиксные_функции #внутренние_DSL #типобезопасность #конфигурационные_файлы #читаемость_кода

  12. Основы DSL в Kotlin

    Domain Specific Language (DSL) — это язык, ориентированный на конкретную предметную область, который позволяет выражать решения в терминах этой области. В отличие от языков общего назначения вроде Java или Kotlin, DSL фокусируется на узкой задаче, делая код более читаемым и выразительным. Kotlin благодаря своему синтаксису и возможностям предоставляет отличные инструменты для создания внутренних DSL. В этой статье мы рассмотрим, как создавать собственные предметно-ориентированные языки в Kotlin, какие языковые конструкции для этого используются и как это применяется в реальных проектах. Чтобы статья была практико-ориентированной, мы сосредоточимся на одной области — создании DSL для конфигурации приложений и разберем несколько компактных примеров.

    habr.com/ru/companies/otus/art

    #kotlin_dsl #DSL #конфигурация_приложений #лямбды_с_получателем #инфиксные_функции #внутренние_DSL #типобезопасность #конфигурационные_файлы #читаемость_кода

  13. Kotlin Multiplatform: как писать код один раз и покорить все платформы

    Kotlin Multiplatform — это подход, который позволяет делить до 80% кода между Android, iOS, backend и вебом, не жертвуя нативностью. В статье — без лишнего пафоса о том, как устроена архитектура KMP, чем она отличается от Flutter и React Native, как работает сборка, где границы общего и платформенного кода и почему это решение подходит командам, стремящимся к эффективности без компромиссов.

    habr.com/ru/companies/otus/art

    #kotlin #kotlin_multiplatform #kotlin_dsl #кроссплатформенная_разработка #KMP_архитектура

  14. Kotlin Multiplatform: как писать код один раз и покорить все платформы

    Kotlin Multiplatform — это подход, который позволяет делить до 80% кода между Android, iOS, backend и вебом, не жертвуя нативностью. В статье — без лишнего пафоса о том, как устроена архитектура KMP, чем она отличается от Flutter и React Native, как работает сборка, где границы общего и платформенного кода и почему это решение подходит командам, стремящимся к эффективности без компромиссов.

    habr.com/ru/companies/otus/art

    #kotlin #kotlin_multiplatform #kotlin_dsl #кроссплатформенная_разработка #KMP_архитектура

  15. Kotlin Multiplatform: как писать код один раз и покорить все платформы

    Kotlin Multiplatform — это подход, который позволяет делить до 80% кода между Android, iOS, backend и вебом, не жертвуя нативностью. В статье — без лишнего пафоса о том, как устроена архитектура KMP, чем она отличается от Flutter и React Native, как работает сборка, где границы общего и платформенного кода и почему это решение подходит командам, стремящимся к эффективности без компромиссов.

    habr.com/ru/companies/otus/art

    #kotlin #kotlin_multiplatform #kotlin_dsl #кроссплатформенная_разработка #KMP_архитектура

  16. Декларативный подход в организации gradle зависимостей в Android проектах

    В многомодульных приложениях Android существует проблема организации зависимости gradle. Каждая зависимость указывается отдельно.

    habr.com/ru/articles/845694/

    #kotlin_dsl #kotlin #gradle #dsl

  17. Декларативный подход в организации gradle зависимостей в Android проектах

    В многомодульных приложениях Android существует проблема организации зависимости gradle. Каждая зависимость указывается отдельно.

    habr.com/ru/articles/845694/

    #kotlin_dsl #kotlin #gradle #dsl

  18. Декларативный подход в организации gradle зависимостей в Android проектах

    В многомодульных приложениях Android существует проблема организации зависимости gradle. Каждая зависимость указывается отдельно.

    habr.com/ru/articles/845694/

    #kotlin_dsl #kotlin #gradle #dsl