Как стать автором
Поиск
Написать публикацию
Обновить
6

Scala *

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

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

Какой язык программирования выбрать? Часть 2. Scala

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

Продолжаем серию статей об особенностях, применении, плюсах и минусах языков, которые используются в «Криптоните». Опытом разработки на Scala поделится Олег Булатов, старший программист направления серверной разработки.

Читать далее

Наиболее распространённые мифы о Scala: сеанс с разоблачением

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

В этом посте развенчивается ряд очень существенных мифов о языке Scala, которые, как нам известно, циркулируют в блогосфере. Для каждого развенчанного мифа мы представим альтернативную точку зрения, подкреплённую данными из надёжных источников.
Читать дальше →

Scala Digest. Выпуск 3

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

Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и стараемся его популяризировать.

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

Читать третий выпуск

Балансировка в Finagle: как работает и как сделать свой балансировщик

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.9K

Finagle — библиотека от разработчиков Twitter. Ее используют для организации межсервисного RPC и построения mesh-микросервисной архитектуры. У библиотеки богатая функциональность по тонкой настройке и интроспекции, но сегодня мы рассмотрим клиентскую балансировку.

Читать далее

Решение задачи о 8 ферзях на трёх уровнях Scala — программа, типы, метапрограмма

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

В заметке Ричарда Тауэрса (Richard Towers) Typescripting the technical interview (есть перевод на Хабре: Руны и лёд: техническое собеседование по TypeScript) по ходу повествования была решена классическая задача расстановки 8 ферзей на шахматной доске. Для решения использовалась система типов TypeScript. Мне захотелось посмотреть, как эта задача будет выглядеть на Scala. Т.к. Scala 3 помимо развитой системы типов предлагает превосходную поддержку метапрограммирования, то здесь мы рассмотрим не только решение на типах, но и мета-программное решение.

Читать дальше →

Шаблон Строитель в Scala 3

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

По определению шаблон Строитель (Builder) отделяет конструирование сложного объекта от его представления, что особенно хорошо, когда нужно провести валидацию параметров перед получением итогового экземпляра. Особенно удобно комбинировать шаблон Строитель с уточняющими типами.

Рассмотрим использование Строителя на Scala версии 3.2.2.

Читать далее

Повторные вызовы функций в Scala

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

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

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

Читать далее

Apache NlpCraft 1.0.0. Упрощение использования и расширение возможностей

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

Apache NlpCraft - библиотека с открытым исходным кодом, предназначенная для интеграции языкового интерфейса с пользовательскими приложениями. Новая версия 1.0.0 привнесла в проект наиболее существенные изменения за все время его существования. 

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

1. Предельное упрощение, отказ от всех вспомогательных enterprise возможностей, предельно точная фокусировка продукта.

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

Читать далее

Scala Digest. Выпуск 2

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

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

Читать далее

Точность — вежливость Scala’лазов: разбираем уточняющие типы данных и практику их применения

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

Привет, Хабр! Я ведущий инженер по обработке данных в компании «Криптонит» и пишу на Scala. В этой статье хочу поделиться своим опытом и рассказать о паре лайфхаков, которые помогут избежать распространённых ошибок.

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

Scala Digest. Выпуск 1

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

В статье я шаг за шагом разбираю всю логику игры, рассказываю, как она была продумана.
Читать дальше →