Scala Digest. Выпуск 11
Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на 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.comGetting 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.comHow 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. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>