Scala Digest. Выпуск 10

7d3882fd516c99ca51af9540a3b895e4.png

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

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

Релизы

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

Tinkoff Scala meetup & open-source

Рубрика для митапов, релизов библиотек и фреймворков, рожденных в недрах scala-комьюнити Тинькофф.

На канале «IT и т. д.» вышел заключительный ролик проекта про особенности Sсala-разработки Scala in Tinkoff. Наши разработчики, лиды и руководители проектов рассказали о деталях работы и жизни Scala-команд: какие задачи решаются, какой стек технологий и библиотек используется, какие особенности встречаются у проектов. Есть инсайты про милые отличительные черточки команд, привычки и забавные кулстори из жизни.
Ролики пятиминутные, динамичные, с прикольной анимацией-рисовкой. Обязательно зацените:) И посмотрите предыдущие ролики, если не сделали этого раньше!

Статьи

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

  • Turning actors inside-out — в статье разбираются особенности акторной модели программирования. Асинхронная по своей природе модель, обработка ошибок с помощью supervisor, сложность дебага и так далее. Стоит ознакомиться, чтобы узнать чуть больше о железе акторов под капотом. А еще в тексте полно ссылочек на другие материалы по акторной модели.

  • In Defence of Mocks — «This is my Mocks. There are many like it, but this one is mine. My Mocks are my best friend. It is my life. I must master it as I must master my life. Without me, my Mocks are useless. Without my Mocks, I am useless. I must test my Mocks true». Возможно, именно так и думал автор ↂ_ↂ

  • Why I Find Scala so Amazing — бывший адепт PHP восхищен возможностями функционального строготипизированного языка с эмблемой в виде красного шарфика и его комфортного синтаксиса.

  • concurrent-cancellation-kotlin-vs-scala — Alex Nedelcu написал gist-заметку на тему прерывания IO-вычислений на Scala и Kotlin и почему в JVM 21 это уже не так важно.

  • Fusing Transformations of Strict Scala Collections with Views — разбирается интересная тема .view-метода на коллекциях. Слайды содержательные, много ссылок на книги по Scala. Жаль, что нет записи оригинального доклада, если такой существует.

  • Tagless Final Encoding — еще слайды от автора выше в формате диалога с Gabriel Volpe о tagless final.

  • How to create Durations in Scala — мини-заметка о том, что можно писать 2.minutes вместо Duration (2, TimeUnit.MINUTES).

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

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

На канале Scala Days Conferences выложили записи докладов и выступлений с прошедшей конференции Scala Days 2023 в Мадриде. Приглашаем посмотреть, а более подробный ретеллинг отдельных докладов будет от нас в следующем месяце  (⊃。•́‿•̀。)⊃━☆゚.*・。゚

  • Saint Scala-митап — три рассказа о Scala. Первый доклад — презентация библиотеки calypso, помогающей корректно перегонять сложные модели в BSON и обратно, в частности для хранения в MongoDB. Второй — о Saga-паттерне и Transactional Outbox и их разнице на конкретном примере сервиса бронирования в путешествиях. Заключительный доклад делится подробностями работы с подходом Vertical slice в Scala.

  • Scala Meetup Lisbon Hub 2023 — Part 2 — 7mind пилят свой build tool с мультимодульными проектами и изолированными билдами. Пока на стадии research, поэтому потыкать нельзя, но интересно послушать о концепциях, на которых базируется проект. Есть небольшая сводка о существующих build tool, поддерживающих сборки на Scala, и чем они не соответствуют хотелкам сегодняшнего дня.

  • Cellular Automata for video games — совсем не про video games. Кусочек теории о клеточных автоматах и о том, куда их можно приложить. В частности, к моделированию реальных процессов. Лайк за расслабляющий тон повествования и капельку самоиронии.

  • Schema management with Scalameta by Lars Albertsson — сложный доклад о Big Data, в котором переплетаются пайплайны инженеров данных с макросами Scala. Слушать тяжеловато, но где мы еще такое увидим.

  • Microservices and gRPC in Scala with FS2 and Scalapb — хорошее введение в grpc через fs2. Компилируем модельки, создаем сервер и клиент. Приятно, что в процессе подсвечиваются неочевидные для новичков моменты.

  • Zymposium — ZIO Q&A — Adam Fraser, недавно назначенный на пост CTO Ziverge, устроил еще одну сессию вопросов и ответов. Помимо прочего объяснил, в чем разница между zio-quill, zio-sql и zio-jdbc.

  • flatmappers 010 — ребята поговорили про K8s, снова вспомнили copilot и прочие ai для написания кода, помянули добрым словом Li Haoyi. Вадим поделился чит-кодами, как стать мейнтейнером Mill.

Highlights

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

  • typo — Typed postgres integration for Scala — библиотека по генерации Scala-кода на основе SQL. Однако Postgres-only. Отметим, что документация сайта выглядит потрясающе!

Tooling

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

  • stryker4s — приходил ли вам в голову когда-либо вопрос, сколько unit-тестов сломается, если мы перепишем наш код? Авторы этого проекта делают попытку отследить качество покрытия тестами, вставляя произвольные баги в source-код и прогоняя на модифицированном коде тесты. Хотя бы из интереса потыкаете в их playground.

  • Integration testing the Typelevel toolkit — мейнтейнеры typelevel-toolkit проводят мультиплатформенное тестирование того, как scala-cli обращается с их toolkit. Почитайте, чтобы проникнуться мозговыносящими техниками тестирования, которые не увидишь в обычном enterprise-коде.

  • ifdef macro in Scala — Eugene Yokota имплементировал фичу, позволяющую писать тесты в src/main/. Зачем это надо — вопрос дискуссионный. Сама концепция кода, который понимает, в какой среде запускается, звучит интригующе. Статья из двух частей: в первой реализация через макроаннотации, во второй — через плагин компилятора.

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

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

  • The Story of AI Graphics at JetBrains — если вам, как и редакции дайджеста, нравятся заставки продуктов JetBrains, то не пропустите этот лонгрид. Рассматриваются две сетки генерации картин Stable Diffusion и CPPN и рассказывается, как подтюнивали базовый алгоритм для себя. «Приходишь к дизайнерам JetBrains посмотреть, как они лого рисуют, а там нейронки в нарды играют» © Карина

  • 2023 Q3 Activity Report — отчет Scala Center за Q3. Подробно и прозрачно. Описаны интересные темы про передачу sbt от Yugene Yokota, sbt-плагин по автомиграции на Scala 3, а еще про попытки сделать процесс контрибьюта в компилятор более понятным.

  • Work-in-Progress Scala 3 Specification — продолжают делать документацию более user-friendly для новичков и не только, а именно допиливают полноценную спецификацию всех фич в Scala 3.

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

Предыдущие выпуски:

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

© Habrahabr.ru