Как стать автором
Обновить
342.13
TINKOFF
IT’s Tinkoff — просто о сложном

Scala Digest. Выпуск 4

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

Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.

Мы собираем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем другие интересные моменты и собственные комментарии. Свою мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Релизы

Собрали последние обновления популярных и полезных библиотек за пару месяцев:

Статьи

В этом разделе — свежие статьи, репозитории и исследования, которые нам показались интересными. В отдельном блоке собрали ресурсы, где авторы используют Scala 3. Enjoy:

  • ZIO SQL: Type-safe SQL for ZIO applications — обзор новой библиотеки для написания SQL-запросов. Судя по анонсу, совмещает в себе лучшее от двух миров: гибкость в виде raw SQL и преимущество валидации на уровне типов во время компиляции. Приятно видеть, что авторы статьи не поскупились досконально пройтись и разобрать основные фичи, нужные для FRM-библиотек: join-ы, пулы соединений, работа с raw SQL, транзакции и прочие функциональные радости.

  • Integrating Akka with Cats-Effect 3 — Alexandru Nedelcu вышел из зимней спячки и рассказал, как можно зачать здорового ребенка, если маму зовут Akka, а папу Cats Effect скрестить инструменты управления ресурсами Cats Effect с Akka.

  • Lila Scavenger Hunt — заполняем прописи, отвечая на вопросы об устройстве Lichess.org. Но начать советуем со статьи-ретроспективы про устройство сервиса.

  • Telemetry with Scala, part 2: Kamon — туториал по настройке Kamon — фреймворка для мониторинга и трейсинга. Это альтернатива OpenTelemetry. К сожалению, не умеет экспортировать логи, но во всем остальном не уступает. Статья подробная, код сервиса и настройка окружения прилагается.

  • Using Vulcan Codecs with Kafka Java APIs — теперь с Avro в Kafka работать так же просто, как с JSON в Circe.

  • Beginner’s guide to toolkits in Scala — комментарий о том, что значит scala-cli станет Scala runner и что есть суть Scala Toolkit и Typelevel Toolkit.

  • Immutability by Example — Building a Purely Functional Data Validator — практикуясь в написании аналога Validated из cats-core, осваиваем функциональную парадигму обработки ошибок.

  • Functional Error Handling in Scala — работа с ошибками как обычными типами данных. Перефразируя автора статьи: «Семь бед — flatMap ответ» ( °ᴗ°)~ð (/❛o❛)

  • Top 10 pattern matching tips in Scala — советы для самых маленьких: использование паттерн-матчинга.

  • Underrated Scala Features and Hidden Gems in the Standard Library.

Статьи по Scala 3

  • Go-like channels using project Loom and Scala — Adam Warski продолжает свои жутко увлекательные эксперименты с проектом Loom. Имплементация go-like-каналов, выросшая из статьи о direct-style-библиотеке асинхронного/конкурентного программирования Ox. Не забыл обсудить реализации pull/push- и eager/lazy-моделей работы со стримами.

  • Good practices for schema evolution with Protobuf using ScalaPB and fs2grpc — cheat sheet по всем типам совместимости полей в контракте для protobuf, а также хаки по гибкой настройке генерации case-классов из этих protobuf-файлов.

  • Concurrency with Cats Effect — добротная статья про то, что такое файберы и как ими управлять в Cats Effect.

Видео и доклады

Собрали ссылки как на уже известные и популярные, так и на ноунейм-каналы и видео про Scala:

  • Java Virtual Threads — How Virtual Threads Work, Scheduling, Cooperation and More — все, что вы хотели знать, но боялись спросить о виртуальных потоках в Loom! Ну, или не все. ┐(シ)┌ По крайней мере упомянуты ForkJoin-пулы и семантические блокировки. Здесь же запускаются примеры, иллюстрирующие разницу с обычными потоками JVM.

  • Ziverge — новые выпуски Zymposium: пишем свои примитивы конкурентности для игрушечной модели рантайма ZIO, а также разбираемся с механизмом, стоящим за FiberRef!

  • MUnit + Expecty = 💞

Появились записи докладов с Scalar Conference 2023:

  • Martin Odersky DIRECT STYLE SCALA Scalar Conference 2023 — «здесь должна быть остроумная игра слов про будущее Future». Мartin Odersky — о том, как достичь новых высот конкурентности и асинхронности, скрестив direct-style-код с Future, вводя новые абстракции в виде контекстуальных break-ов (boundary/break). В докладе есть пара симпатичных слайдов о том, как это устроено под капотом и как может облегчить написание реального кода.

  • Adam Warski OXES, TAPIRS AND STTPS SCALAR CONFERENCE 2023 — Adam Warski с обзором на Ox — библиотеки для structured concurrency с интеграцией Loom из jdk19 в Scala. В конце доклада приводится сравнение этого проекта с системами эффектов.

  • Wojciech Mazur THE FUTURE OF WEBASSEMBLY FOR SCALA Scalar Conference 2023 — мейнтейнер Scala Native о WebAssembly — о том, что это и зачем нужно. Разбираются два альтернативных подхода по поддержке этой платформы в Scala, а также возникающие в каждом из них проблемы. Доклад получился информативным, от редакции однозначно лайк (* ̄▽ ̄)b

  • Daniel Ciocîrlan FULL-STACK SCALA 3 WITH TYPELEVEL STACK Scalar Conference 2023 — RockTheJVM засветил лицо в прямом эфире и представил full-stack-приложение на Scala 3, попутно рассказав про архитектуру, выбор библиотек и внутрянку. Вторая половина доклада про UI и небольшой обзор Tyrian — библиотеки для фронтенда на Scala.js. Рекомендуем оценить красоту, получилось действительно круто (ノ>ω<)ノ :。・::・゚’★,。・::・゚’☆

  • Magda Stożek GET MORE CLARITY WITH OPAQUE TYPES IN SCALA 3 Scalar Conference 2023 — 20-минутная сводка по best practices для работы с opaque types в Scala 3. К сожалению, на текущий момент эта фича не может заменить собой value types/type aliases/newtypes, так как все равно требуется писать бойлерплейтный код, pattern matching не работает, а до api скрываемых внутри типов не достучаться. Тем не менее в этом докладе можно увидеть, как исправить часть этих недостатков.

  • Nicolas Rinaudo THINGS THAT ARE THINGS, BUT NOT OTHER THINGS Scalar Conference 2023 — вас всегда интересовали примеры типов данных, которые могут образовать applicative, но не могут monad? Вы по адресу! Доклад на основе статьи, но смотреть в видеоформате еще приятнее.

  • Ayush Mittal IMPLICITS IN SCALA 3 Scalar Conference 2023 — yet another speech about implicits. Паттерны работы с ними и как изменился их интерфейс в Scala 3.

  • В Москве прошел митап по Scala, организованный компанией «Криптонит»: 

А еще на днях прошла конференция ZIO World! Записей докладов пока нет, но ожидаем увидеть их к следующему выпуску дайджеста.

Highlights

В этом блоке не всегда свежие, но зацепившие наш взгляд ресурсы под флагом «очумелые ручки». Авторы творят что-то интересное, необычное, но не обязательно полезное:

  • Scala Native for cross-platform binaries — реализованный на Scala Native аналог утилиты csplit. Интерес вызывает не только сама утилита, но и изложенный подход к написанию подобных cli-приложений с помощью cats-effect и fs2.

  • Caliban — замена всем приевшегося REST-а новомодным GraphQL. Запрашиваем сложноструктурированный набор данных с сервера, не производя лишних вычислений. Основные фичи: встроенный валидатор и оптимизатор обработчиков запросов и генерация клиента на основе scala-моделей. Подробнее о работе с библиотекой — в цикле статей.

  • Signals3 — связующее звено между UI и логикой scalaFX/javaFX/Android-приложения в виде event-streaming-библиотеки, работающей на wire-signals. Добротная интерактивная документация идет в комплекте!

  • Batcher Library — в основе библиотеки лежит довольно интересная идея: оптимизация работы сервера за счет объединения одинаковых запросов в батчи и выполнения их в единой точке. Однако приведенный пример нерепрезентативный: хотелось бы видеть реальный серверный путь.

  • ZIO Redis — экосистема ZIO продолжает свое развитие. На этот раз представляют нативный клиент к Redis, использующий вторую версию zio.

Tooling

Кусочек дайджеста, где мы рассказываем о появлении новых и улучшении существующих инструментов для разработки:

  • New Scala Build Tool — пока Eugene Yokota пишет sbt 2.0, John A De Goes бубнит, что надо не так, надо по-другому рисует радужный мир идеального инструмента сборки для scala-проектов. Впрочем, обещает финансовую и рекламную поддержку стартапу, который удовлетворит его критериям. А еще угрожает перевезти экосистему ZIO на этот волшебный инструмент.

  • Faster Scala.js development with front-end tooling and new tutorials — анонс плагина vite-plugin-scalajs, позволяющего вносить изменения на ваш UI в реальном времени. Все как любят фронтендеры ԅ(≖‿≖ԅ) Туториалы по работе со Scala.js прилагаются.

  • The Secret VS Code Hack for Indentation Guides! — DevInsideYou рассказывает, как использовать в свою пользу настройки VS Code не так, как задумывали разработчики.

Комьюнити-движ

Это раздел с курьезными и любопытными событиями в мире scala-общества, и мы хотим видеть его объемным и живым. Если что-то пропустили или у вас есть предложения — ждем в комментариях:

  • Scala Tooling Summit Recap — прошел трехдневный Tooling Summit, в котором приняла участие большая часть организаций, ответственных за развитие Scala. Список поднятых тем и промежуточных итогов обсуждения прилагается.

  • Scala Center Activity Report for 2023 Q1 — подробный отчет за первый квартал. Указаны направления работы и соответствующие им pull request-ы.

  • Programming in Scala: Carbon Footprint — пока вы оцениваете качество кода по его скорости выполнения, мы оцениваем его по количеству выделяемого углекислого газа ヽ(ˇヘˇ)ノ

  • Новость о слиянии со стороны VirtusLab Group и со стороны SoftwareMill — VirtusLab Group поглощает SoftwareMill (๑ᵔ⤙ᵔ๑)

  • Twitter’s Recommendation Algorithm — Twitter поделился исходным кодом алгоритма подбора рекомендаций. В сопровождении есть статья с разбором всех этапов, которые проходит твит перед попаданием в вашу новостную ленту.

  • sbt Plugins Community Repository — о сбое, произошедшем 7 апреля, с репозиторием repo.scala-sbt.org. Если кратко, закончился оплаченный на год период работы artifactory-инстанса в JFrog и автоматического обновления не произошло. Работа над ошибками уже ведется.

Женя, Гриша и Вадим из scalalaz запустили новый подкаст о функциональном программировании —

уже можно послушать первые два эпизода. 

До встречи через месяц! ♡\( ̄▽ ̄)/♡

А вот ссылки на предыдущие выпуски: первый, второй и третий.

Над дайджестом работали @Melkaya_150cm, @Ivoya, @tcarina. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>

Теги:
Хабы:
+11
Комментарии0

Публикации

Информация

Сайт
www.tinkoff.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия