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

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

Релизы

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

Tinkoff Scala open-source

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

  • mockingbird v3.4.0 - v3.5.0 — сервис гибкой эмуляции REST и GRPC-сервисов, а еще сервисов с интерфейсами-очередями. Облегчает жизнь, позволяя мокать или проксировать ответы стороннего приложения. В последних релизах добавились возможности использовать сегменты пути для поиска стейтов и скипать проверку сертификата на определенных хостах. Из доработок — отображение источника падения в ошибке, замена async-http-client на Armeria. Кроме того, предлагаем вам посмотреть доклад про mockingbird со стороны QA:

  • phobos v0.19.2 — эффективная работа с XML в Scala, реализованная через потоковый парсинг. Позволяет задавать структуру XML-документа через аннотации в case-классах и sealed-трейтах. В последнем релизе исправлен баг с параметрами higher-kinded type.

Статьи

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

  • Scala Resurrection — с чего же начать первый выпуск на Хабре? Правильно! С разгромного обзора экосистемы Scala от John De Goes, CEO компании Ziverge. Каждый получил камень в свой огород. От пакетного менеджера (maven) с его заточенностью под JVM до IDE — Intellij Idea с ее проблемами со Scala 3 и выводом типов, дающим результат, отличающийся от scalac-a, и VSCode + Metals с его периодическими багами. От akka с эпопеей перехода на платную лицензию до typelevel с вызывающими гнев коммьюнити высказываниями и своего детища — zio с разношерстной экосистемой и местами отсутствующей документацией. От «Почему все плохо?» до «Как же сделать так, чтобы было хорошо?». 

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

Но нельзя верить, чтобы такой язык не был дан великому коммьюнити! (И. С. Тургенев Дж. ДеГуз)

  • Implicit parameters when to use them? Part 1 и Implicit parameters when to use them? Part 2 — хорошие статьи про механизм имплиситов в Scala. Детально разобрано использование имплиситов для передачи аргументов, а еще паттерн тайп-классов с качественными примерами и обсуждением применимости. Но не затронули более сложные кейсы с конверсиями и имплисит-классами.

  • Early adventures in ZIO land — матерый scala-разработчик делится опытом и ощущениями от первых шагов в мире zio. Статья солидная, затронуты довольно «неновичковые» темы вроде дебаггинга и профилирования и множество отдельных модулей экосистемы zio. Но считать полноценным туториалом по созданию приложения с нуля нельзя.

  • Deploy http4s on your domain with fly.io — в самом начале своего пути разработчика у @Ivoya, одного из авторов этого дайджеста, был насущный вопрос: как написать доменное имя в строке браузера так, чтобы попасть на тобой же написанный код серверного приложения? Эта статья дает один из возможных ответов. Пишем cats-effect + http4s + decline-приложение, пакуем в docker и деплоим на fly.io, попутно разбираясь с сертификатами и кастомным доменом.

  • fs2-kafka introduction: deserialization with careful error handling — о том, как написать небольшое приложение с cats-effect и fs2-kafka. Из интересностей — фокус статьи на том, чтобы никакое poison-pill-сообщение не выбило из колеи запущенный консьюмер.

Статьи по Scala 3

  • Scala CLI Tutorial: Creating a CLI Sudoku Solver — больше чем туториал с использованием scala-cli. Пишем простой судоку-solver — с тестами, форматированием и упаковкой в Scala Native. Без регистрации и СМС.

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

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

  • Vivisecting the Veil of Variance — Kit Langton, один из основных контрибьюторов zio с отличным рассказом о том, зачем нужна инвариантность и ковариантность в Scala (да-да, контрвариантность ожидаем в следующей серии).

  • Is FP Really That Easy to Reason About? (For Beginners) — о том, как работают map, flatMap и traverse и почему их присутствие в функциональном программировании — это услада или как достигается читаемость кода в Scala.

  • Rock the JVM — прекрасный авторский канал Daniel Ciocîrlan. Испытательный полигон, где автор кромсает алгоритмические задачи, обкатывает как новые, так и уже известные библиотеки, а еще пробует нестандартные техники программирования в Scala. Практически к каждому видео прилагается пост-компаньон с блога.

  • Ziverge — официальный канал компании Ziverge, мейнтейнеров zio. Записи вебинаров, конференций, дискуссий, интервью и докладов.

Highlights

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

  • scala-torch — scala-аналог PyTorch в виде оберток над LibTorch для работы с нейронными сетями. Документацию пока не завезли, однако синтаксис максимально приближен к оригиналу. Тут же для заинтересованных прикладываем ссылку на TensorFlow Scala.

  • Tour of Scala — редизайн сайта со сборниками материалов по Scala. Во всех темах есть теоретический материал и интерактивный пример, интегрированный в Scastie.

  • zio-ulid — либа для генерации ULID в экосистеме zio. В разделе «Статьи» есть материал о том, что это такое.

  • Veautiful — фронтенд-либа, написанная для Scala.js.

Tooling

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

Nix Flake for Scala — a Nix Introduction, Overview and Demo — туториал по настройке окружения для разработки на Scala с помощью пакетного менеджера Nix. Репозиторий с окружением.

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

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

  • Sttp client 4: improving the developer experience — Adam Warski, CTO softwaremill, собирает обратную связь по изучению и использованию sttp. В планах — перелопатить часть api для упрощения работы. Подробнее о предложенных изменениях можно прочитать на GitHub.

  • sbt 2.x — первый пулл-реквест от Eugene Yokota по новой мажорной версии sbt, написанной на Scala 3.

  • 2022 Year of Scala Recap — рассказ о том, как я провел лето как питонист Daniel Tan провел год, изучая и используя Scala в работе и домашних проектах. В конце — впечатления, которые оставил язык.

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

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

Комментарии (3)


  1. fenom82
    00.00.0000 00:00
    +1

    А как сейчас развивается Scala в Tinkoff? Слышал что активно переходят на Kotlin.


    1. Ivoya Автор
      00.00.0000 00:00

      Привет! Каких-то общих тенденций по миграции со Scala не наблюдается. Штат скалистов постоянно пополняется)


  1. Des96
    00.00.0000 00:00
    +1

    Спасибо за дайджест:)
    Шанс прочитать материалы, которые не заметил за предыдущий месяц