Обновить
9.28

Scala *

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

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

Scala Digest. Выпуск 23

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели522

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

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

Асинхронная обработка Stripe событий с помощью Scala

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели419

Каждый стартап рано или поздно сталкивается с необходимостью обработки платежей онлайн.

В эпоху SaaS, PaaS, IaaS и других «As a Service» инициатив (их число постоянно растет), многие полагаются на бизнес модель платных подписок, так как она обеспечивает возможность регулярно в автоматическом режиме собирать платежи с пользователей и дает лучшую прогнозируемость финансовых потоков.

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

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

Читать далее

Scala Digest. Выпуск 22

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели988

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

Теперь вы можете поделиться собственными материалами!

Читать двадцать второй выпуск

Уйти из айти – бросаем разработку ради психологии и смотрим, что получится

Время на прочтение10 мин
Охват и читатели1.9K

(спойлер: возвращение обратно на апгрейде)

Анна Пономарева руководит группой серверной разработки в компании «Криптонит». Она прошла путь от художественной школы через психологию в разработку платформенных сервисов. Помогает ли знание психологии лучше управлять командой? Есть ли взаимосвязь между темпераментом человека и парадигмой программирования, которую он выбирает? Правда ли, что все айтишники — необщительные интроверты? Читайте в интервью. 

Читать далее

Scala Digest. Выпуск 21

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели554

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

Теперь вы можете поделиться собственными материалами!

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

Создание data lineage в Apache Atlas из логических планов Spark (не без «костылей»)

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели701

В статье обсуждается процесс интеграции Apache Spark с Apache Atlas для визуализации выполнения ETL-процессов на основе построения связей между операциями в Spark. Автор описывает создание пользовательских сущностей в Apache Atlas, таких как Process и DataSet, которые необходимы для отражения трансформаций данных.

Основной фокус статьи заключается в построении графа lineage (происхождения данных) для операций в Spark. Автор выделяет ограничения архитектуры Apache Atlas, например, необходимость наследования от стандартных типов Process и DataSet для корректного отображения lineage. Также описывается создание и отправка новых типов сущностей в Apache Atlas с использованием REST API, а также проблемы, возникающие при попытках обновления сущностей.

Читать далее

Жизнь, смерть и ̶р̶о̶б̶о̶т̶ы̶ управление ресурсами в Scala

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели564

Вы когда-нибудь задумывались о том, как выделяется память для переменных, и в какой конкретно момент она очищается? Как сборщик мусора «решает», что переменная уже не нужна и можно ли как-то повлиять на его решение?

В новой статье директор департамента разработки компании «Криптонит» Алексей Шуксто рассказал об интересных особенностях управления жизненным циклом объектов в Scala и Java разных версий. С необходимостью вникать в эту внутреннюю кухню сталкиваются все, кто использует в своих программах потоки, подключения к БД и другим сторонним сервисам, анализирует метрики, обрабатывает исключения… все, кто пишет что-то сложнее «Hello World!» и хочет добиться предсказуемого результата.

Читать далее

Поиск всех последовательностей чисел от 1 до n, где сумма соседних чисел является квадратом

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

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

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

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

Читать далее

Spark Essentials: Руководство по настройке и запуску проектов Spark с помощью Scala и sbt

Время на прочтение18 мин
Охват и читатели2K

В этой статье представлено подробное руководство по инициализации проекта Spark с помощью Scala Build Tool (SBT). Это руководство охватывает все этапы процесса, включая создание проектов, управление зависимостями, локальное тестирование, компиляцию и развертывание проекта Spark на кластере.

Это руководство было тщательно продумано, чтобы помочь новичкам, так что даже те, кто только начинает изучать Spark, смогут легко ему следовать. Более того, эта статья послужит ценным пособием для тех, кто хочет создавать, тестировать и развертывать пакетные задания Spark в среде JVM.

Цель этой статьи — предоставить вам подробное руководство по инициализации проекта Spark, в котором будут подробно рассмотрены все ключевые идеи. В руководстве будет рассмотрен пошаговый процесс создания проектов с помощью Scala Build Tool (SBT), а также продемонстрировано управление зависимостями, локальное тестирование, компиляция и развертывание проекта Spark на кластере.

Читать далее

Scala Digest. Выпуск 20

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели781

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

Теперь вы можете поделиться собственными материалами!

Читать двадцатый выпуск

Основы фреймворка Combine для ML в Swift

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

Combine — это фреймворк, представленный Apple в 2019 году, предназначенный для работы с асинхронными потоками данных на платформе Swift. Основная задача Combine заключается в том, чтобы упростить и унифицировать обработку асинхронных событий, таких как сетевые запросы, таймеры, уведомления и пользовательские действия.

Фреймворк является частью экосистемы Swift и доступен начиная с iOS 13, macOS 10.15, watchOS 6.0 и tvOS 13. Если вы работаете с более ранними версиями, обновление Xcode до версии 11 или выше автоматом предоставит вам доступ к Combine.

В этой статье мы рассмотрим основы этого замечательного фреймворка.

Читать далее

Scala Digest. Выпуск 19

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели765

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

Приветствуем любую обратную связь! (づ ◕‿◕ )づ Теперь вы можете поделиться собственными материалами!

Читать девятнадцатый выпуск

Генерация Фракталов методом хаоса, UI на ScalaFX

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели912

В данной статье подробно описан процесс создания оконного приложения для рисования фракталов методом хаоса с использованием фреймворка ScalaFX. Автор описывает выбор технологий и подходов, делая акцент на их гибкость и настраиваемость, а также делится опытом работы с CSS для стилизации интерфейса. Рассматриваются основные компоненты приложения: область для рисования, панель настроек и кнопка запуска, а также детально объясняется, как настроить параметры для генерации фракталов. В статье приведены примеры кода и даны пояснения, чтобы помочь читателям понять и воспроизвести представленный метод. Автор также указывает на использование функционала из предыдущей статьи, касающегося обработки арифметических выражений.

Читать далее

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

Scala Digest. Выпуск 18

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели890

Привет, Хабр! Наша коллега Карина в этом месяце защитила диплом и принимает по этому поводу поздравления в комментариях (。•̀ᴗ-)✧ 

А тем временем мы — Рома, Настя и Эвелина, бэкенд-разработчики Т-Банка — пишем код на Scala и продолжаем гореть желанием его популяризировать.

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

Теперь вы можете поделиться собственными материалами!

Читать восемнадцатый выпуск

Динамическое создание UDF в Apache Spark из строк кода: проблемы и решение («костыль»)

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели882

В данной статье рассматривается подход к созданию пользовательских функций (UDF) в Scala, специфически в контексте использования в Apache Spark. Автор исследует проблему динамической генерации и передачи лямбда-выражений через JSON, обсуждая ограничения сериализации функций в Spark и возможные решения с использованием типа Any для универсальной обработки различного числа аргументов. Статья призывает к дискуссии и поиску альтернативных подходов, не претендуя на единственно верное решение, и представляет предложенный метод лишь как один из возможных вариантов решения задачи.

Читать далее

Как я решила задачу нахождения t-критерия Стьюдента как функции от доверительного интервала и числа степеней свободы

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели2.2K

статья представляет подробное описание реализации функции Стьюдента (Student's t-distribution) в языке программирования Scala с использованием алгоритма ACM395 и ACM209. Функция Стьюдента является важным инструментом в статистике для вычисления критических значений t-статистики и вероятностей в t-распределении.

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

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

Читать далее

Гибкая обработка арифметических вырожений с AST на Scala

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели719

Обработка арифметических выражений с AST в Scala

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

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

Читать далее

[Туториал] Пишем собственные Spark Native Functions (Часть 2)

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели669

В предыдущей своей статье Почему стоит начать писать собственные Spark Native Functions? (Часть 1), которая является переводом и которая вдохновила меня на собственные изыскания, был разобран пример, как написать свою Spark Native Function по генерации UID. Это, конечно, здорово, но вот только данная функция не принимает аргументы на вход, в то время как в реальной практике нам требуются обычно функции, которым надо передать на вход 1, 2 или 3 аргумента. Такие случаи не рассматриваются в упомянутой выше переводной статье - ну что ж, попробуем восполнить этот пробел!

Ниже я предлагаю вашему вниманию результаты своих изысканий по созданию собственных Spark Native Functions, которые бы принимали на вход несколько аргументов.

Читать далее

Scala Digest. Выпуск 17

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели953

Привет, Хабр! Мы — Рома, Настя, Карина — приветствуем свежую кровь в нашей небольшой, но уютной команде! Эвелина присоединилась к нам месяц назад с горящими глазами и желанием нести Scala в программистский народ. Естественно, в качестве первого испытания Эвелина ходила с томиком Одерски по офисам ИТ-компаний и спрашивала: «Верите ли вы в функциональную парадигму?»

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

Читать выпуск 17

Plane-based геометрическая алгебра для описания движения тел

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели4.3K

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

Читать далее