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

Видимо, повышенная работоспособность авторов контента, вспыхнувшая после майских, подошла к концу. Люди разъехались по отпускам и конференциям, а потому в этом выпуске будет не так много материала. Но в этом плюс: есть возможность успеть прочитать-просмотреть все ⸜( ˊᵕˋ )⸝

Релизы

????Подобно тихому шелесту осенних листьев к нам падают свежие обновления библиотек ????

Tinkoff Scala meetup & open-source

???????????? Осень — пора увядания. В эту золотистую пору на неопределенное время увядает и эта наша рубрика — почтим уютным молчанием заблокированные github-учетки и ушедшие в public archive библиотеки и фреймворки, рожденные в недрах scala-комьюнити Тинькофф ????????????

Статьи

????‍???? Предлагаем разбудить в себе внутреннего студента и погрызть гранит науки вместе с авторами статей ????‍????

  • Slack Bot in Scala and 12 Ways to Run It — эксперименты с запуском slack-бота в разных средах исполнения и на разных платформах деплоймента. Стоит почитать хотя бы ради цитат вроде: I will spare you all the exhausting, painful, traumatic, agonizing, soul-crushing, morale-draining, and gut-wrenching details of setting up cross-compilation. If you want them, you can look into build.sbt, as long as you’re prepared for it to look back into you.

  • Native app development with sttp and Scala Toolkit — как же легко и просто стало собирать приложения на Scala Native с новым, модным и молодежным Scala Toolkit. И про старичка-sbt не забыли.

  • Getting started with ZIO, part 2 — продолжаем изучать ZIO. На этот раз строим потоковый сервис на вебсокетах, попутно затрагивая ZSTM в контексте structured concurrency и ZStreams.

  • Cats Effect vs ZIO — разбираются базовые особенности двух экосистем, читается на одном дыхании.

  • Principles of developing applications in Scala — обзор нескольких основных фич Scala, выросших из дизайна языка и культуры разработки на нем. Без приукрас, со ссылками на различные сопутствующие материалы.

  • Best Plugins For JetBrains IDEs — топ плагинов для Intelij IDEA по мнению softwaremill. Загляните! Скорее всего, найдете для себя парочку мемов. Ну и плагинов тоже (b ᵔ▽ᵔ)b

  • Cost of Boxing — в один прекрасный день John A De Goes написал твит о том, насколько высокая цена у абстракций в Scala и как прекрасен, безгрешен и безупречен в этом плане Rust. Но отважный jarekratajski нырнул в эту кроличью нору чуть дальше и бенчмарками показал, что выводы из твита справедливы лишь отчасти: современные дистрибутивы JDK и GraalVM умеют just-in-time выявлять подобные паттерны и устранять оверхед.

  • N-Queens Combinatorial Puzzle meets Cats — задача о восьми ферзях. На сайте представлены все возможные материалы выступления, кроме… самого выступления. Впрочем, код есть, слайды есть, коты и Scala 3 на месте.

Статьи по Scala 3

  • Exploring Scala 3 Macros: A Toy Quoted Domain Specific Language — отличная статья о том, как, уподобившись quill, написать свой compile-time транслятор из Scala в linux-утилиту awk. Основной фокус — введение в макросы Scala 3 и концепции Quoted DSL. Решают нетипичную и непростую задачу по сравнению с теми, которые обычно приводятся в документации и статьях с демонстрацией API-макросов. Напоминаем, что от самого автора quill есть подробный гайд, как сверстать такой проект с нуля. Но если по какой-то неизвестной редакции причине вы не хотите смотреть 10 двухчасовых эпизодов лайвкодинга, то можно начать как раз с этой работы!

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

????☕ Готовим плед, горячий шоколад и, уютно окопавшись в районе окон, смотрим подборку новых видео про Scala ????☕

  • Saint Scala-митап — наши коллеги из Яндекс Вертикали провели митап в славном городе Санкт-Петербурге и оперативно выложили запись происходившего. Три доклада:

В первом расскажут о реализации kafka + grpc CRM-сервиса с интересными деталями рабочих процессов и того, как принимались те или иные архитектурные и бизнес-решения.

Второй доклад вы могли видеть в июле, если посетили благотворительный Тинькофф ИТ-ФЕСТ в Казани. Но для пропустивших и адептов присказки «Повторенье — мать учения» — наш коллега Иван Лягаев с рассказом о Project Loom. Акцент на нетипичном подходе к работе с конкурентностью, принятом в экосистемах Scala, и сравнении их с тем, что дает Project Loom. Или, кратко, «Зачем нужна Scala, если есть Java 21».

Заключительный доклад — услада для любителей спойлеров и тех, кто любит трогать неизвестное и пробовать все новое. Автор на месяц погрузился в темные воды nightly-сборок и экспериментальных фич и принес нам выловленные жемчужины. Не упустите шанс узреть эволюцию языка на наших глазах и рождение возможных будущих киллер-фич!

  • OAuth Authentication in Scala with Http4s — Даниэль поясняет, что такое OAuth, как это работает и как это настроить в http4s. Не поленитесь заглянуть в блог RockTheJVM, где найдете целую серию статей об аутентификации/авторизации, включая сопроводительную к этому видео.

  • Ziverge — несколько рассказов о проекте Golem от «приглашенной» звезды John De Goes. Будьте аккуратны, Rust прилагается!

Недавно прошла конференция Scala Days 2023. В рамках эксперимента хотим предложить вам рубрику с индивидуальными рекомендациями редакции к просмотру. Не стоит воспринимать как топ докладов. Как минимум Daniel Spiwak и Haoyi Li стоит посмотреть из уважения! А остальных — из интереса ૮˶ᵔᵕᵔ˶ა

Рома посмотрел доклады, которые зацепили своим названием. Книги не принято судить по обложке, но кто в школьные годы делал по-другому?

Поэтому в честь приближающегося Дня знаний решил поступить аналогичным образом.

  • Mark Hammons — Slinc: A Library for Scala to C Interoperability — Mark Hammons рассказывает о своей библиотеке slinc для связи Scala и C. Это короткий обзорный доклад с перечислением проблем, которые пришлось преодолеть: маппинг структур данных, аллокации в JVM Heap и Native Memory и абстрагирование от платформы исполнения. На протяжении многих выпусков мы освещали некоторые статьи о разработке этого проекта, например про multi-stage programming или про паттерн containers. Если бы мы жили во вселенной Гарри Поттера, автора давно бы арестовали за использование темнейшей магии и чернейших хаков.

  • Ryan Peters — Writing a Database in Scala.js — о TinyDB, основанной на CSV браузерной базе данных. Ryan рефлексирует на тему трейдофов и концептов, лежащих в основе TinyDB. И, что еще интереснее, затрагивает принципы функционирования main loop из tyrian, а также проблемы, с которыми пришлось столкнуться при разработке на Scala.js.

  • Jack Viers — Testable Compiler Plugin Development in Scala 3 — плагины компилятора — нечастый гость среди докладов и статей. Еще реже можно встретить гайды о том, как надо писать такого рода код. И уж совсем редкая информация, передаваемая от отца к сыну от разработчика к разработчику — тайна о том, что плагины можно и нужно тестировать. Разработчики из Xebia решили устранить эту ауру запретных знаний: рассказали о сущности плагинов компилятора и выложили в открытый доступ munit-compiler-toolkit — утилиту для тестирования с помощью munit, а также шаблон для g8 и утилиту для sbt.

Карина выбирала доклады покороче, чтобы вы точно успели все посмотреть!

  • Jamie Thompson — How does Incremental Compilation Work with Scala 3 — несмотря на то, что в Scala 3 уже встроена поддержка инкрементальной компиляции, есть куда расти! Создатели инкрементального компилятора для Scala 2 — Zinc — рассказали о принципах его работы, а также погрузили в мир экспериментального проекта Pipelined Building. Киллер-фича — возможность распараллелить компиляцию нескольких файлов, даже если один завязан на другой. Уже есть несколько радующих глаз бенчмарков.

  • August Nagro — Magnum: A “New Look” for Scala 3 Database Clients — презентация database-клиента, объединяющего в себе сразу три существующих паттерна, на которых построены существующие клиенты к базам данных: объектно-ориентированный подход, функциональный DSL и подход, основанный на описании запросов через строковую интерполяцию.

Настя старалась подобрать слабо связанные непосредственно с Scala доклады.

Выбирала те, которые будут интересны любому разработчику.

  • Maria Livia Chiorean — From Managing Scala to Managing People — профессия Scala-разработчика взрослеет и идет в первый класс, и вот уже специалист с семилетним опытом работы рассказывает, как, зачем и почему важно становиться менеджером, тимлидом или ментором. Будет полезно послушать всем, чей уровень >= middle и кто чувствует в себе души прекрасные порывы по причинению добра окружающим.

  • Rafa Paradela — Monolith vs. Microservices — стрелочка поворачивается, и вот в 2023 году можно послушать о том, что не мазаны елеем эти ваши микросервисы и вообще, при монолите было лучше. Из доклада узнаете, какие компании вернулись с микросервиса на монолит, почему у них грустили разработчики и, возможно, HR тоже. А еще будет список признаков, по которым можно принять решение о не-переезде на другую архитектуру.

  • Integrating AI workflows into your project: Introducing Xef.ai — хайповоз Xebia останавливается на станции «Искусственный интеллект». Рассказывают про библиотеку, через которую можно взаимодействовать с существующими AI. Подробно демонстрируют каждую фичу и понятно объясняют на примерах с картинками. Сейчас доступно на языках Scala, Kotlin, Java.

Highlights

???????? Можно вечно любоваться милыми поделками школьников, сделанными из желудей и спичек. Но еще приятнее полюбоваться на opensource-проекты из аналогичных материалов ????????

  • inject — микробиблиотека (один файл!) для dependency injection. Работает лениво в runtime. Каких-то убийственных фич не обещают, что оправдано совсем минималистичной реализацией. Лайк за самое честное описание FAQ: that is, I have just asked them myself».

  • spark-setup — шаблон проекта на Spark для быстрого старта.

  • http4s-stir — небольшой мостик между Pekko HTTP и http4s для более плавной миграции на typelevel. Проект находится на стадии демо.

  • sbt-svelte — «Я честно не поняла, как Svelte связан с Play» © Карина.

  • ZIO Chat — теперь можно разгрузить ChatGPT и адресовать все вопросы, связанные с ZIO, в этот чат.

Tooling

???????????? «Мам, ты уже спишь? Я вспомнил, что завтра на урок труда нужно принести собранный проект» ????????????

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

???????????? Мы обежали все цветочные лавки, чтобы собрать вам букетик из самых интересных новостей в мире Scala ????????????


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

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

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

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