Как стать автором
Обновить
8.8

Scala *

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

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

Пишем простой чат с консольным интерфейсом используя трубно-ориентированное программирование с котами

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров5.4K

Если в процессе изучения gRPC хотите попрактиковаться с Bidirectional Streaming (двунаправленная потоковая передача данных), c запросами в рамках одного соединения, инициированием событий со стороны сервера, то создание простого чата может быть отличным способом.

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

Неявные параметры. Когда их следует использовать? Часть 1

Время на прочтение11 мин
Количество просмотров1.7K

Имплиситы (implicits) – одна из наиболее вызывающих опасения фич языка программирования Scala, и на то есть веские причины!

Во-первых, понятие имплиcитов довольно специфично для Scala. Ни один другой основной язык программирования не имеет подобной концепции. Это означает, что у начинающих разработчиков Scala нет шаблонов, на которые можно было бы опереться, чтобы правильно использовать имплиситы.

Во-вторых, в Scala 2 ключевое слово implicit используется слишком часто (подобно _). Поэтому потребуется достаточное количество времени и практики, чтобы провести грань между различными вариантами использования имплиcитов. В этом отношении Scala 3 значительно улучшила ситуацию, введя специальный синтаксис для каждого случая использования имплиcита.

Данная публикация блога будет посвящена Scala 2, поскольку в настоящее время это наиболее используемая основная версия Scala. Однако по ходу статьи я буду упоминать о тех различиях, которые появились в Scala 3 относительно имплиcитов.

Читать далее
Всего голосов 11: ↑9 и ↓2+10
Комментарии4

Scala Digest. Выпуск 1

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2.3K

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

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

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии3

Автоматический подбор параметров для Spark-приложений на примере spark.executor.memory

Время на прочтение7 мин
Количество просмотров1.8K

Привет! Я – Валерия Дымбицкая, технический руководитель команды дата-инженеров в OneFactor. Это вторая часть статьи о том, как автоматически подбирать параметры для Spark-приложений на примере spark.executor.memory.

В первой части мы разбирали, как читать логи событий Spark и как достать из них три показателя того, насколько можно уменьшить память экзекьюторам (а также зачем это делать). Здесь я расскажу о том, как превратить это всё в работающую систему на продуктиве, используя довольно простые средства. 

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

Истории

Извилистый путь через «скалу» в Spark: как одинэсник стал дата-инженером и полюбил строго типизированные языки

Время на прочтение8 мин
Количество просмотров2.7K

В этом интервью своим уникальным опытом освоения Scala и Spark поделится Михаил Кузнецов, ведущий инженер департамента разработки компании «Криптонит». Его карьерная лестница сделала крутой разворот, в результате которого из ритейла он перешёл в Big Data и анализ данных, полностью сменив не только привычные инструменты, но и сами подходы к программированию.

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

Функциональный поиск событий с помощью cats-effect

Время на прочтение13 мин
Количество просмотров1.7K

Достижение максимальной выразительности и абстракции домена при сохранении точности протокола актора с помощью библиотеки endless4s Scala.

Код, описывающий бизнес-логику, несомненно, является самым ценным активом в системе программного обеспечения. Также называемый кодом домена среди специалистов по доменно-ориентированному проектированию, он отражает опыт и ценностное предложение и постепенно аккумулирует в себя все богатство знаний. Хотя для зрелости таких углубленных моделей требуется время, тенденции и технологии программного обеспечения быстро меняются и даже подвергаются лицензионным изменениям, как это недавно произошло с Akka. Вместе с тем, по мере устаревания языка, методов и фреймворков, ценность программного обеспечения растет по мере расширения клиентской базы.

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

Физика вращения 3д тел

Время на прочтение11 мин
Количество просмотров11K

Когда я раньше задумывался о вращении в 3д, мне было неуютно. Оно казалось сложным. Вспомнить, например, эффект Джанибекова с прецессией свободно вращающейся гайки. Настало время разобраться!

В статье Вас ждут математика, физика, а заодно численное моделирование и визуализация в libgdx.

Можно провести аналогии между массой тела в поступательном движении и моментом инерции. Разница только в том, что масса выражается одним-единственным числом, а момент инерции - матрицей 3х3. В большинстве примеров ограничиваются вращением в 2д, где существует только одна возможная ось вращения, либо симметричными телами типа мяча, когда момен инерции по всем осям одинаковый. Вместо этого я рассмотрю наиболее общий случай.

Читать далее
Всего голосов 45: ↑45 и ↓0+45
Комментарии19

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

Время на прочтение6 мин
Количество просмотров770

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

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

Читать далее
Всего голосов 8: ↑6 и ↓2+5
Комментарии1

Автоматический подбор параметров для Spark-приложений

Время на прочтение8 мин
Количество просмотров4.1K

Всем привет! Меня зовут Валерия Дымбицкая, я технический руководитель команды дата-инженеров в OneFactor. В этой статье я расскажу о том, как мы научились автоматически подбирать параметры для Spark-приложений на основе логов.

Проблема, которую мы решали, может встретиться при регулярном, предсказуемом, интенсивном использовании Hadoop-кластера. Я расскажу, как мы простыми средствами сделали рабочую автономную систему тюнинга, сэкономив в итоге 15-16% ресурсов кластера. Вас ждут детали с примерами кода.

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

Зачем нам вообще понадобился автоматический тюнинг?

Начнём с инфраструктуры. Сетап у нас "классический": ограниченный Hadoop-кластер из купленных серверов. В нём на тот момент, когда мы начали всё это делать, было около 30Тб RAM и 5к CPU. В этом кластере запускается множество разноплановых приложений на Apache Spark и в какой-то момент им стало тесновато. Всё больше приложений висели в PENDING значительное время, потребление памяти утроилось за последние 4 месяца. Сохранять такую тенденцию не хотелось.

Довольно много приложений были от продукта Лидогенерация. Базово он устроен так: есть список номеров телефонов (база) и есть Spark ML Pipeline, который каким-то образом отбирает из этой базы лидов абонентов для некоего целевого действия – например, для предложения продукта клиенту. База может меняться от раза к разу. Вот такую пару из

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии10

Как написать игру «Змейка» на Scala

Время на прочтение9 мин
Количество просмотров3.1K
image

Эта статья написана по приколу. В ней я за считанные минуты расскажу, как создать игру «Змейка» на Scala с использованием ScalaFX.

Ранее я выложил эту игру в видеоформате. В этом видео я хотел преодолеть психологический барьер (10 минут) и реализовать игру (почти) с нуля. Так что можете посмотреть следующее видео, если предпочитаете «экшн».

В статье я шаг за шагом разбираю всю логику игры, рассказываю, как она была продумана.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+21
Комментарии2

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

Время на прочтение5 мин
Количество просмотров6.1K

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

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

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

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

Время на прочтение15 мин
Количество просмотров5.4K
image Привет, Хаброжители! Мы издали главную книгу по Scala, популярному языку для платформы Java, в котором сочетаются концепции объектно-ориентированного и функционального программирования, благодаря чему он превращается в уникальное и мощное средство разработки.

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

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

Читать дальше →
Всего голосов 7: ↑6 и ↓1+8
Комментарии9

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

Время на прочтение8 мин
Количество просмотров5.2K

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


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

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

Читать дальше →
Всего голосов 22: ↑21 и ↓1+27
Комментарии3

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн

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

Время на прочтение11 мин
Количество просмотров4.8K

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

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

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

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

Время на прочтение7 мин
Количество просмотров16K

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

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

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

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

Время на прочтение13 мин
Количество просмотров2.9K

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

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

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

Время на прочтение9 мин
Количество просмотров1.6K

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

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

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

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

Время на прочтение4 мин
Количество просмотров4.7K

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

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

Читать далее
Всего голосов 17: ↑7 и ↓10-2
Комментарии11

Loom: зачем?

Время на прочтение3 мин
Количество просмотров9.7K

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

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

Читать далее
Всего голосов 21: ↑6 и ↓15-4
Комментарии45

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

Время на прочтение8 мин
Количество просмотров4.1K

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

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

1) Primary Adapters,

2) Secondary Adapter

3) Logic aka Domain.

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