
Scala *
Мультипарадигмальный язык программирования
Новости
Делаем кастомное параллельное чтение по JDBC в Spark 3.0.1
Привет, Хабр! Мы — команда DATA ОАТС в билайн. В этой статье расскажем о кейсе, когда стандартный Spark JDBC не справился с параллельным чтением огромной таблицы из ClickHouse, и мы написали свой «мини-движок». Под катом — разбор ограничений, схема с пулом потоков на экзекуторах и опыт, который может пригодиться не только для ClickHouse.
Категории типов. Часть 4. Монады

И вот, в четвёртой части обзора мы наконец-то встретимся с главным героем! Мы рассмотрим анатомию и морфологию монад и попробуем выяснить, почему их бывает сложно композировать. Попутно познакомимся с аппликативными функторами и комонадами.
Использование чистых функций в грязном мире: как писать долговечный код (почти) без багов

Привет, Хабр! Меня зовут Артём Корсаков. Я руководитель группы серверной разработки в компании "Криптонит". Пишу на Scala и веду проект scalabook.ru. В этой статье мы разберём основы функционального программирования (ФП) на примерах и с поправкой на суровую действительность.
Многие слышали о преимуществах ФП, но пока не понимают, как применить эти концепции на практике. Теория монад и функторов и вовсе отпугивает, кажется чем-то заумным и непонятно где применимым. Поэтому мы отбросим сложную теорию и сосредоточимся на основных моментах, которые вы сразу сможете начать использовать в своём коде.
Scala Digest. Выпуск 33

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

Всем привет! Меня зовут Артём Корсаков, я руковожу группой разработчиков на Scala в компании «Криптонит». Хочу рассказать про мой проект, которым я занимаюсь уже 4 года — Scalabook.
За последние 20 лет язык Scala завоевал прочные позиции в backend-разработке, машинном обучении, обработке данных, создании распределённых систем и во многих других областях. Есть тысячи ресурсов по Scala: книги, статьи, курсы, подкасты, проекты с открытым исходным кодом, хакатоны и специализированные мероприятия, вроде Advent of Code. Однако часто возникают вопросы: с чего начать изучение Scala, или как систематизировать уже имеющийся опыт?
Вот так у меня и появилась идея создать русскоязычную базу знаний по Scala — Scalabook. Это уникальный проект, в котором представлены материалы о функциональном программировании, алгоритмах и структурах данных, классах типов, переводы статей, а также ресурсы различного уровня сложности для изучения Scala. Это собрание материалов по разным темам в русскоязычном пространстве.
Также уделено внимание практическим аспектам функционального программирования: создан тренажёр с набором задач возрастающей сложности, которые позволяют освоить ключевые концепции функционального программирования на Scala.
На сайте можно оставлять комментарии, получать обратную связь по решениям задач или предлагать дополнения для расширения базы знаний. Scalabook регулярно обновляется: добавляются новые упражнения, пояснения и материалы. Пользователи также могут внести свой вклад в этот процесс. Таким образом, изучение Scala становится более систематизированным, а не просто набором разрозненных ресурсов, в которых легко запутаться. Scalabook способствует обмену знаниями в сообществе Scala.
Scala Digest. Выпуск 32

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

Реализация системы с микросервисной архитектурой редко обходится без классического разруливающего REST-гейтвея. Но когда ваша система растёт годами, а в гейтвее плодятся сотни ручек с просачивающейся бизнес-логикой, можно внезапно обнаружить, что ваш REST-гейтвей стал монолитом со всеми вытекающими последствиями.
Мы в Авто.ру шли к этому состоянию гейтвея довольно долго. История его началась в 2015 году: десятки разработчиков, сотни ручек, почти 300 000 строк кода — и релизы, которые можно катить неделю. Чтобы спасти наш стремительно деградирующий time-to-market и вернуть разработке гибкость, мы решили попробовать GraphQL-федерацию. Спойлер: кажется, получилось.
Меня зовут Кирилл Ершов, я бэкенд-разработчик в Авто.ру, и в этой статье я расскажу, как мы перешли от REST к федерации GraphQL: зачем нам это понадобилось, с какими подводными камнями мы столкнулись, как выглядели первые миграции трафика, к чему всё это привело на данный момент в цифрах и инфраструктуре.
Категории типов. Часть 2. Функторы

Это вторая вводная часть обзора, посвящённого применению теории категорий в программировании. В первой части представлены некоторые основные определения теории, в том числе, hom-типы, их значения-морфизмы, а также их композиция, позволяющая строить пути вычислений в рамках одной категории. В данной же публикации мы рассмотрим, как пути вычислений можно прокладывать через разные категории.
Конечный автомат (FSM – finite state machine)

В данной статье хочется взглянуть на конечный автомат больше с точки зрения практического применения и меньше как на математическую модель.
Scala Digest. Выпуск 31

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

Данный обзор посвящён применению теории категорий в программировании. Акцент сделан на то, что стремление к повышению качества программ неизбежно приводит к абстракциям («функтор», «монада» и прочие), которые уже появились в математике при решении другого рода задач.
В этой части будет рассказано об основных свойствах категорий, приведены примеры наиболее важных для дальнейшего изложения. Но сразу предупреждаю, что это лишь «скучное введение» — полезность представленных здесь сведений раскроется лишь в последующих частях обзора.
Ближайшие события
Scala Digest. Выпуск 30

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

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

В 2021 году Мартин Одерски представил Scala 3. С тех пор экосистема адаптируется, а интерес к ней растет: Scala 3 становится стандартом для новых проектов, в то же время Scala 2 постепенно сворачивается.
В этой статье — наш опыт миграции проекта на Scala 3. Рассказываем, как справлялись с типовыми ограничениями и совместимостью, переписывали макросы и адаптировали популярные библиотеки, и почему архитектура модульного монолита помогла нам пройти этот путь безболезненно.
Scala Digest. Выпуск 28

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями.
Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Потоковая фильтрация CommonCrawl с Apache Spark для обучения языковых моделей
Для обработки Common Crawl на терабайтных объёмах широко используются архитектуры обработки данных, построенные на фреймворках вроде Apache Spark. Благодаря распределённой обработке данных и структурированному стримингу Spark позволяет разработчикам создавать масштабируемые пайплайны, применять логику фильтрации и формировать итоговые очищенные корпусы для обучения. Эта статья перевод моей статьи на medium.com, я хотел рассматреть, как на практике формируются обучающие наборы из Common Crawl (например, в проектах C4, CCNet, OSCAR, GPT-3, BLOOM, Falcon и др.), а затем показать пример Spark Streaming-приложения, который я написал и опубликовал в GitHub. Мы также приводим пример подхода, реализованного в DeepSeek, для фильтрации математического контента — узкоспециализированная задача, которая способна дать существенный прирост в качестве моделей.
Мартин Одерски и Ли Хаои: Эволюция Scala

Дискуссии о будущем языка Scala не утихают. Как быстро он должен развиваться? Что необходимо улучшить? Должен ли он вообще претерпеть какие‑либо изменения? В этой статье мы обсудим, как Scala должен эволюционировать в дальнейшем, почему эта эволюция необходима и в каких направлениях мы ее ожидаем в первую очередь. Мы надеемся, что сможем ответить на многие часто задаваемые вопросы о будущем языка и поможем сообществу понять, в каком направлении будет развиваться Scala в ближайшие месяцы и годы.
Классические абстракции используемые в ФП

Это продолжение статьи про имплиситы и тайпклассы в Scala (если вы не знакомы с ними, то предлагаю начать с предыдущей статьи). А в этой статье рассмотрим классические примеры тайпклассов и их свойства и научимся писать максимально обобщенный код на Scala
Вклад авторов
krokhmalyuk 206.0Underskyer1 205.0EvieLynn 201.0barbalion 183.1lgorSL 159.6ppopoff 149.2vuspenskiy 129.0primetalk 127.8ImLiar 125.0alextokarev 120.0

