Как стать автором
Обновить
0.33
Рейтинг

Scala *

Мультипарадигмальный язык программирования

Сначала показывать
Порог рейтинга

Нагрузочное тестирование Gatling

Тестирование IT-систем *Scala *Тестирование веб-сервисов *
Из песочницы

Последние несколько недель в рамках спринта наша команда занималась написанием нагрузочного тестирования. Чтобы протестировать основные сценарии работы новой группы сервисов. Сервисы взаимодействуют по GRPC, что осложняло процесс тестирования.

В рамках нагрузочного тестирования мы собирались проверить целесообразность выбора в пользу GRPC. А также понять допустимые лимиты и пропускную способность, написанного сервиса.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 3.1K
Комментарии 6

Новости

Книга «Scala. Профессиональное программирование. 5-е изд.»

Блог компании Издательский дом «Питер» Scala *Профессиональная литература *
image Привет, Хаброжители! Мы издали главную книгу по Scala, популярному языку для платформы Java, в котором сочетаются концепции объектно-ориентированного и функционального программирования, благодаря чему он превращается в уникальное и мощное средство разработки.

Этот авторитетный труд, написанный создателями Scala, поможет вам пошагово изучить язык и идеи, лежащие в его основе.

Пятое издание значительно обновлено, чтобы охватить многочисленные изменения, появившиеся в Scala 3.

Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 3.1K
Комментарии 8

Ищем боттлнеки за 30 минут с помощью Jaeger трейсов

Блог компании Joom Высокая производительность *Open source *Серверная оптимизация *Scala *

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


В одном из эндпоинтов чекаута 99 перцентиль латенси пробивает SLO. Нужно это исправить.

Соответственно, возникает вопрос: как максимально быстро и точно найти причину тормозов очень низкочастотного запроса на 99 перцентиле и что делать, чтобы ее устранить? Ответом на него стала библиотека для полуавтоматического поиска узких мест в распределененных системах. Ссылка на гитхаб будет в конце статьи.

Читать дальше →
Всего голосов 29: ↑28 и ↓1 +27
Просмотры 3.7K
Комментарии 3

Написание чата с Akka

Блог компании RUVDS.com Разработка веб-сайтов *Мессенджеры *Scala *
Перевод
Tutorial

Создание чатов — простая и одновременно сложная задача. В этой статье представлен пошаговый туториал по реализации бэкенда для простого многоканального чата.

Сервис будет реализован как комбинация из простого REST API и приложения WebSocket. Чтобы было чуть интереснее, я решил по максимуму использовать связанные с Akka библиотеки и typed actors.

Весь приведённый в статье код доступен в репозитории GitHub.
Читать дальше →
Всего голосов 34: ↑34 и ↓0 +34
Просмотры 3.1K
Комментарии 0

«Независимо от ситуации на рынке стоит учиться на Scala»

Блог компании Криптонит Программирование *Scala *Карьера в IT-индустрии Интервью

О «пороге входа» для Scala-программиста, переходе с Java, востребованности таких спецов на российском рынке в 2022 году мы поговорили с Алексеем Долгим (@sinc86), ведущим инженером-программистом департамента разработки компании «Криптонит».

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

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 12K
Комментарии 18

Эффективные шаблоны case-классов в Scala

Блог компании OTUS Scala *
Перевод

Это руководство, прочитать которое я хотел бы много лет назад, когда только начинал свой путь в Scala. Мне пришлось потратить большое количество времени на бесполезные блуждания вокруг да около, чтобы прийти к простым и действенным советам, описанным в этой статье.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 1.1K
Комментарии 0

О проверке захвата в Scala 3

Блог компании OTUS Программирование *Scala *
Перевод

Несколько дней назад в твите Мартина Одерски (Martin Odersky) была анонсирована новая экспериментальная фича под названием "проверка захвата".

Эта фича — новая глава в десятилетней борьбе за добавление чего-то похожего на систему эффектов в scala 3. Она имеет некоторое сходство с предложением линейных ограничений для Haskell и лайфтайма rust.

Читать далее
Всего голосов 9: ↑5 и ↓4 +1
Просмотры 1K
Комментарии 1

А насколько Loom реактивный?

Высокая производительность *Java *Scala *Kotlin *

Проект Loom добавит в Java 19 виртуальные треды. Что это? Новые перспективы для рынка труда нарисовались в предыдущей части заметки. В аспекте внутренностей JVM про Loom рассказывает Иван Углянский: рекомендую его доклад «Thread Wars — проект Loom наносит ответный удар».

Здесь мы оценим, как добавка повлияет на современные подходы серверной разработки. Потеснит ли новинка Scala и Kotlin с их фреймворками? Заодно ответим на вопрос «а в какой мере Loom — реактивный»?

Читать далее
Всего голосов 18: ↑8 и ↓10 -2
Просмотры 3.2K
Комментарии 11

Loom: зачем?

Блог компании Usetech Высокая производительность *Java *Scala *Kotlin *
Из песочницы

Недавно, 6 мая этого года, в OpenJDK вошёл JEP 425, который добавит к Java 19 в качестве превью-фичи Виртуальные треды.

Пожалуй, этот JEP — самое большое изменение семантики языка после появления Дженериков. Его масштабы трудно оценить. Для начала попробуем прикинуть, как оно может отразиться на нашей зарплате.

Читать далее
Всего голосов 26: ↑11 и ↓15 -4
Просмотры 7.8K
Комментарии 45

Scala: Гексагональная архитектура и DDD на Free Monad в функциональном программировании

Совершенный код *Проектирование и рефакторинг *Scala *Функциональное программирование *

Привет Хабр! Пятничного тру ФП хардкора с Free Monad, Таглес Финал, Монад трансформерами, Refined Types, Smart Constructors и прочим таким вам в ленту. Хардкор сам себя в ленту не принесет так что погнали.

Гексагональная архитектура делит наш код на три основные части.

1) Primary Adapters,

2) Secondary Adapter

3) Logic aka Domain.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 3K
Комментарии 1

Умные конструкторы для case классов

Блог компании OTUS Программирование *Scala *
Перевод

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

Есть несколько подходов, посредством которых мы можем помочь системе типов и языку в целом дать нам еще больше уверенности в коде, который мы проектируем.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 1.3K
Комментарии 1

Scala: Авторизация. Защита API с помошью Bearer токена

Информационная безопасность *Scala *API *Функциональное программирование *

В это пример я буду рассматривать только парсинг и валидацию токенов что уже пришли в мое API в Authorization хедере. Для генерации токенов, регистрации пользователей и прочего SSO есть много готовых решений которые легко установить или даже устанавливать не надо. Например, Auth0, Keyckloak, IdentityServer4. В пример е буду работать с Tapir который может использовать в качестве бекенда http4s, Akk HTTP, Netty, Finatra, Play, ZIO Http, Armeria. Я буду использовать Tapir + Http4s.

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 1.9K
Комментарии 0

О проверке захвата

Блог компании OTUS Программирование *Scala *
Перевод

Несколько дней назад мы увидели новую экспериментальную фичу под названием “проверка захвата” (capture checking), анонсированную в твите Мартина Одерски (Martin Odersky).

Эта фича является новой главой в десятилетней борьбе за добавление какой-либо формы системы эффектов в scala 3. Она имеет некоторое сходство с предложением линейных ограничений (linear constraints) для Haskell и временами жизни (lifetimes) Rust.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 3K
Комментарии 2

Как обрабатывать объекты Avro с помощью датасетов Spark 3.2 & Scala 2.12

Блог компании OTUS Scala *Big Data *Data Engineering *
Tutorial

Привет!

В этом посте разберем, как обрабатывать объекты JVM, сгенерированные из схем Avro, в датасетах Spark. Вместе с этим рассмотрим, как организовать код при помощи шаблона функционального программирования "класс типов" (type class) на языке Scala.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 1K
Комментарии 0

Пулы потоков

Блог компании OTUS Программирование *Scala *
Перевод

Потоки (thread) в приложении можно разделить на три категории:

1. Нагружающие процессор (CPU bound).

2. Блокирующие ввод-вывод (Blocking IO).

3. Неблокирующие ввод-вывод (Non-blocking IO).

У каждой из этих категорий своя оптимальная конфигурация и применение.

Читать далее
Всего голосов 11: ↑6 и ↓5 +1
Просмотры 3.1K
Комментарии 0

DINS SCALA EVENING

Блог компании DINS Scala *

Андрей Обухов из DINS расскажет, что такое Software Transactional Memory. Ахтям Сакаев из компании «Метр квадратный» поделится, как исключить баги на этапе моделирования с использованием ADT. Участие бесплатное, но необходимо зарегистрироваться. Подробности под катом.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 459
Комментарии 0

«Выстрелить и забыть» в Cats Effect

Блог компании OTUS Программирование *Scala *
Перевод

Последнее время меня часто спрашивают о паттерне "fire-and-forget": как его применить в Cats Effect и какие потенциальные проблемы могут возникнуть. Поэтому я решил написать небольшой пост. Надеюсь, вам понравится!

Подробнее о Cats Effect и конкурентности читайте в моей книге Essential Effects.

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 1.4K
Комментарии 0

Стриминговые микросервисы с ZIO и Kafka

Блог компании OTUS Программирование *Scala *
Перевод

В Scalac мы ежедневно разрабатываем и внедряем распределенные приложения с высокой степенью параллелизма. Распределенные системы в настоящее время активно развиваются и не собираются в этом останавливаться. В архитектуре подобных систем, помимо Kubernetes, важное место занимает Apache Kafka.

Мы используем Apache Kafka как основу для асинхронного взаимодействия микросервисов. Простота масштабирования, устойчивость к потере и повреждению данных, репликация и легко достижимый параллелизм через консьюмер-группы (consumer groups) — вот только некоторые из причин, почему Kafka является одним из основных инструментов построения распределенных систем.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 3.4K
Комментарии 1

Lightbend Cloudflow. Разработка конвейеров потоковой обработки данных

Блог компании Neoflex Scala *Big Data *Data Engineering *

Lightbend Cloudflow - open-source фреймворк для построения конвейеров потоковой обработки данных, объединивший в себе тройку популярных сред: Akka, Flink и Spark.

Под катом: demo-проект и обзор фреймворка с точки зрения общей концепции и разработки.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.5K
Комментарии 0

Higher-Kinded Data, или ещё один способ работать с сущностями базы данных (и не только)

Haskell *Scala *Функциональное программирование *

image


Важный дисклеймер


Перед началом хочу позволить себе небольшой, но важный дисклеймер.


Я не стараюсь вам продать этот cпособ как панацею.
Я лишь хочу рассказать вам ещё один способ представлять данные и показать, как его можно использовать, на конкретном примере.
Как и все остальные подходы, этот имеет свои недостатки. И кое-где придётся приседать. С этими приседаниями мы встретимся довольно скоро.


«Не думайте, что я сейчас буду развивать эту концепцию, а затем разочаруюсь в ней. Такой драматургии не будет. Я изначально уже в ней разочарован.»
Роман Михайлов

Ещё хочется заметить, что далее все примеры кода будут приводиться на Haskell. Но в конце я покажу, как можно некоторые из них повторить на Scala.


Что такое HKD


Конечно, прежде, чем писать этот раздел, я полез в интернет, чтобы посмотреть, как этот термин определяют другие люди. Чёткого определения я не нашёл.
Грубо говоря, HKD — это то, что предоставляет возможность держать в одном типе данных сразу несколько представлений. Давайте посмотрим на примеры.

Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 3.6K
Комментарии 3

Вклад авторов

Работа

Scala разработчик
17 вакансий