Scala Digest. Выпуск 11

3a0a95b06672d1fc961aab6d27b56147.png

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

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

Релизы

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

Tinkoff Scala meetup & open source

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

Статьи

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

  • Limits of Loom«s performance — Adam Warski продолжает исследовать потенциал своей библиотечки абстракций над виртуальными потоками Ox. Разбирается, почему бенчмарки решения задачи на Loom сильно отстают от бенчмарков с корутинами из Kotlin.

  • Теория типов — огромная статья про теорию типов с кусочками кода на Scala. Плавное введение, изложение на приятном человеческом языке. Советуем почитать на досуге.

Теория типов

Так нейронные сети понимают «теорию типов». Мы так привыкли к типам, что редко задаёмся во…

habr.com

Основы библиотеки Circe или простой JSON-парсер на Scala

Всем привет! Во время нашей работы часто приходится сталкиваться с таким форматом обмена данных как …

habr.com
  • Getting started with ZIO, part 3 — заключительная часть серии, в которой написанный в предыдущих частях функционал покрывается тестами, используя фреймворк zio-test.

  • AI for programmers — перед вами письменная версия разговора в курилке с коллегами на тему AI. Кто что попробовал у себя в рабочих процессах и какие мысли на эту тему появились. Статья не про инструменты, а про субъективные выводы от их использования.

  • Web Scraping with Scala & ChatGPT — «Ask ChatGPT to explain web scraping…», «Ask ChatGPT to suggest ways to improve your prompt…». Интересно, а зарплату тоже ChatGPT будет получать? Мы стоим на пороге нового поколения статей, когда учат не основам предметной области, а тому, как задать вопрос AI-ассистенту. Эта — одна из первых по Scala.

Квитанции как способ отражения сделанной работы на уровне типов

Функциональное программирование одной из целей ставит отражение логики программы в типах входных/вых…

habr.com

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

В функциональном программировании широко используются так называемые алгебраические типы данных. Так…

habr.com
  • Что такое класс типов? — мы поняли эту статью как попытку потрогать кусочек теории категорий и монаду через математические законы полугруппы объяснить, что тайпклассы — это не только интерфейсы с методом.

Что такое класс типов?

Код написан на Scala версии 3.3.1 . Что такое класс типов? Давайте разберем, что такое класс типов. …

habr.com
  • How to convert an Option to an Either in Scala — у этих ребят никогда не было проблем с объемом дипломной работы. На ScalaJobs вышла наилегчайшая статья о том, как превратить Option в Either.

  • How scala-cli Shines in Automation — ребята используют scala-cli для автоматизации рутины, интегрируясь с gitlab и slack, и радуются жизни.

  • In Scala 3, use 4 Spaces for Indentation — шалости кончились, говорим о ДЕЙСТВИТЕЛЬНО серьезных вещах или «спаси дерево — сожги книгу» зарабатывай больше — используй четыре пробела.

  • How to retry a Future in Scala — как запилить retry на Future. Если сами такое не писали, обязательно взгляните, как разбирается типовая ошибка с eagerness вычислениями. Вопрос открытый: насколько концептуально правильно в .fallbackTo передавать ту же Future. Тем не менее статья куда интереснее, чем о маппинге Option в Either.

  • Custom logic from Accept header with Tapir — небольшая статья с кусками кода, в которой показывается, как tapir умеет красиво работать с хидерами в запросах.

  • Rendezvous Benchmark Analysis: When Threads (Don«t) Meet — вдохновившись работой Adam Warski, автор статьи замерил свои бенчмарки работы потоков на нескольких системах эффектов. Итог — выиграла библиотека Kyo. Экспериментатор еще заметил, что медленная работа потоков может быть связана с постоянным и, возможно, излишним вызовом sleep и wake up операций.

Lightbend выпускают новый инструмент Akka Edge и подготовили серию статей, в которых:

  • What is Akka Edge? — рассказывают, какой класс задач он решает.

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

Новый год еще не настал, а нас уже любезно осыпали ворохом докладов с записями прошедших конференций. Возможно, в декабре вы будете не смотреть «Гарри Поттера», а любоваться магией вне Хогвартса в рамках scala-мира.

Делимся обещанным сторителлингом со Scala Days:

Дисклеймер: обзор не всех докладов, сделан при посильной помощи коллег:

  • Daniel Ciocirlan — Lessons from Teaching Scala to 80,000 People — наверное, многие знают Rock the JVM как платформу с качественным образовательным контентом. Имея за плечами большой опыт преподавания, Daniel Ciocirlan решил поделиться тем, как выстроить план обучения и структурировать информацию так, чтобы ее было легко и интересно воспринимать.

  • Maciej Gorywoda — The State of the IntelliJ Scala Plugin 2023 — нечасто встретишь выступления от разработчиков Scala Plugin в IntelliJ Idea, а ведь это ключевая разработка в экосистеме языка. Maciej Gorywoda показывает фишечки плагина, делится деталями внутреннего устройства и рассказывает о проделанной работе.

  • Haoyi Li — A Deep Dive into the Mill Scala Build Tool — широкий обзор билд-тула Mill от Haoyi Li! Стоит послушать, каким образом они совместили лучшее из sbt и bazel и получили простой и удобный инструмент для сборки.

  • Andrei Kucharavy — Universal Patterns of Evolution — интересный доклад про современный подход к теории эволюции и его применение к языкам программирования, с особым фокусом на ML и LLM.

  • Noel Welsh — Simple and Speedy UIs in Scala 3 — автор рассказывает о библиотеке на Scala 3, которая позволяет быстро и с минимальными усилиями создавать интерфейсы. Представлен комбинаторный подход к описанию и генерации пользовательского интерфейса, использование union types для решения expression problem и примеры реализации библиотеки с использованием особенностей Scala 3.

  • Jan-Pieter van den Heuvel — Saving Christmas Using Scala — о том, почему Scala — отличный выбор для решения Advent of Code. P.S: если не знакомы с активностью AoC, в комьюнити-движе есть анонс этого мероприятия.

  • Nicolas Stucki — Implementing a Macro — от кого, как не от создателя макросов, слушать о том, как правильно работать с метапрограммированием в Scala 3. Без соответствующей подготовки воспринимать на слух тяжело. Стоит относиться к докладу как к подробному комментарию к репозиторию и разбирать в первую очередь сам код.

  • Chris Kipp — Closing Panel — дискуссия на самые горячие темы в мире Scala с Martin Odersky, Haoyi Li, Chris Kipp и другими участниками Scala Days.

Конференция F[Scala] прошла осенью на базе Вертикали.Яндекс — записи уже доступны:  

  • Позвольте уточнить — решаем задачу навешивания ограничений на значения полей в Scala 3. Сначала самописно, а затем сравниваем, как это можно решить с помощью библиотеки iron. 

  • DDD Aggregate — идея DDD Aggregate, обнаружение границ транзакционной консистентности и практическое применение на PostgreSQL и MongoDB.

  • Шансы на мэйнстрим — считаете ли вы, что Scala умирает? Вадим, один из ведущих подкаста flatmappers, c докладом о будущем Scala. Доклад не технический, но очень рефлексивный, интересный, с позитивным мейнлайном, за вступление — отдельный лайк. Рекомендуется всем посмотреть и перестать ныть на Reddit-e.

Northeast Scala Symposium — one more conferense:  

  • Где будет Scala через 10 лет? — пожаловались на «Джаву», на сложность поиска и выбора библиотеки под парсер-комбинаторы, рассказали про починку макбука и горячо обсудили доклад Мартина Одерски со Scala Days (ノಠ益ಠ)ノ彡┻━┻

  • Ziverge YouTube Channel — за месяц на канале вышло немало материалов про имплементацию акторов на ZIO, в главных ролях — zio-http.

  • Idiomaticsoft YouTube Channel — открыли для себя новый обучающий канал. Предназначен для новичков в ФП, только пробующих Scala. Сейчас на канале три видео по теме ADT.

Highlights

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

Библиотеки, вызывающие желание их потрогать:

Тренировочные проекты и демо:

Tooling

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

  • The Best of IntelliJ IDEA«s HTTP Client — для ultimate edition завезли «свой постман» в intelij idea. А именно: добавили http-клиент, grpc, graphQl и webSocket, а также пре- и постскрипты и генерацию запроса из OpenAPI спецификации!

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

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

  • Scala 3 support subscription — VirtusLab обращается к комьюнити с призывом перевозить свои проекты со Scala 2 на Scala 3 и обещает моральную поддержку советами.

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

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

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

© Habrahabr.ru