Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на 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. Плавное введение, изложение на приятном человеческом языке. Советуем почитать на досуге.
Основы библиотеки Circe или простой JSON-парсер на Scala — введение в кодирование/декодирование JSON-ов через библиотечку circe. Про ручной, полуавтоматический и автоматический вывод кодеков не забыли.
Getting started with ZIO, part 3 — заключительная часть серии, в которой написанный в предыдущих частях функционал покрывается тестами, используя фреймворк zio-test.
Getting internal JVM metric to GCP Monitoring with OpenTelemetry — пошаговая инструкция по развертыванию и подключению OpenTelemetry для своего проекта на уровне облака.
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.
Квитанции как способ отражения сделанной работы на уровне типов — предлагается для нечистых по предназначению функций возвращать тип F[Mark] вместо F[Unit]. Где Mark — условный тип того, для чего предназначен сайд-эффект. А еще приятно видеть, как кто-то играется с фишками Scala 3 на уровне типов.
Применение алгебраических типов данных для моделирования ошибок и сообщений в журнале — статья про алгебраические типы данных и примеры моделирования ими различных предметных областей, включая создание типобезопасного логирования.
Что такое класс типов? — мы поняли эту статью как попытку
потрогать кусочек теории категорий и монадучерез математические законы полугруппы объяснить, что тайпклассы — это не только интерфейсы с методом.
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 и подготовили серию статей, в которых:
Akka Edge: Unifying the Cloud and Edge — представляют новый инструмент и рассказывают предпосылки его создания.
What is Akka Edge? — рассказывают, какой класс задач он решает.
Webinar: Akka Edge Sample Project Overview — привели пример своеобразного hello world.
Deep-dive of Event-Driven communication between Edge and Cloud — описали некоторые специфичные кейсы использования.
Видео и доклады
Новый год еще не настал, а нас уже любезно осыпали ворохом докладов с записями прошедших конференций. Возможно, в декабре вы будете не смотреть «Гарри Поттера», а любоваться магией вне Хогвартса в рамках scala-мира.
Делимся обещанным сторителлингом со Scala Days:
Дисклеймер: обзор не всех докладов, сделан при посильной помощи коллег:
Martin Odersky — Scala’s Role in the Programming Languages Ecosystem — Martin Odersky делится достижениями своего любимого детища — Scala. О том, что было. О том, что есть. О том, что будет.
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. Без соответствующей подготовки воспринимать на слух тяжело. Стоит относиться к докладу как к подробному комментарию к репозиторию и разбирать в первую очередь сам код.
Wojciech Mazur — Explaining Different Coroutine Flavours using Scala Native — о возможности добавить корутин в рантайм Scala Native с использованием трансформаций AST.
Chris Kipp — Closing Panel — дискуссия на самые горячие темы в мире Scala с Martin Odersky, Haoyi Li, Chris Kipp и другими участниками Scala Days.
Конференция F[Scala] прошла осенью на базе Вертикали.Яндекс — записи уже доступны:
Позвольте уточнить — решаем задачу навешивания ограничений на значения полей в Scala 3. Сначала самописно, а затем сравниваем, как это можно решить с помощью библиотеки iron.
R&D: Динамические SQL-запросы на Scala в рамках проблемы text-to-sql — под специфичные шутки коллеги из госсекора слушаем доклад, как они в команде написали NLP дляSQL-запросов, используя графовую базу данных TypeDB.
Alien: Typesafe DSL для доступа к Java foreign memory API — освещается использование примитивов памяти с гарантиями компилятора и представлена библиотека для удобного доступа к offheap-памяти из кода на Scala.
DDD Aggregate — идея DDD Aggregate, обнаружение границ транзакционной консистентности и практическое применение на PostgreSQL и MongoDB.
Шансы на мэйнстрим — считаете ли вы, что Scala умирает? Вадим, один из ведущих подкаста flatmappers, c докладом о будущем Scala. Доклад не технический, но очень рефлексивный, интересный, с позитивным мейнлайном, за вступление — отдельный лайк. Рекомендуется всем посмотреть
и перестать ныть на Reddit-e.Protobuf в движении — о внутрянке protobuf-дескрипторов и их применении в межсервисном взаимодействии.
Northeast Scala Symposium — one more conferenсe:
Где будет Scala через 10 лет? — пожаловались на «Джаву», на сложность поиска и выбора библиотеки под парсер-комбинаторы, рассказали про починку макбука и горячо обсудили доклад Мартина Одерски со Scala Days (ノಠ益ಠ)ノ彡┻━┻
Full-Stack ZIO by Daniel Ciocirlan — 5 декабря планируется трансляция с лайв-кодингом от Daniel Ciocirlan.
Helix and Scala — смотрите! Это же Eugene Yokota в телевизоре!
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 спецификации!
JDK 21 and 22-ea on GitHub Actions — код-сниппеты github action от Yokota по тестированию вашего приложения на jdk 21 и 22-ea.
Комьюнити-движ
Раздел курьезных и любопытных событий в мире scala-общества, и мы хотели бы видеть его объемным и живым. Если что-то пропустили или у вас есть предложения — ждем в комментариях:
Join us for the Advent of Code 2023 — анонс ежегодного Advent of Code! Выходи решать (˶ᵔ ᵕ ᵔ˶)
Contribution Equals Impact: A Spotlight on Spotify — Quality over Quantity and the Importance of Community Contributions — покажи, где у вас находится опенсорс? Туть •ﻌ•ฅ♡” или скала-центр продолжает серию интервью с компаниями, для которых опен-сорс — это где-то в сердечке. На этот раз выпуск со Spotify.
Scala 3 support subscription — VirtusLab обращается к комьюнити с призывом перевозить свои проекты со Scala 2 на Scala 3 и обещает
моральнуюподдержку советами.GSoC 2023 results — милые впечатления и how it was одного из участников — менторов google summer of code.
До встречи через месяц! ♡\( ̄▽ ̄)/♡
Предыдущие выпуски:
Над дайджестом работали @Melkaya_150cm, @Ivoya, @tcarina. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>