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

Scala *

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

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

Как я осознал, что такое распределенные системы

Время на прочтение12 мин
Количество просмотров14K
Привет, Хабр!

В скором времени у нас выходит изысканная новинка для разработчиков высшего класса — "Реактивные шаблоны проектирования".

Автор книги Роланд Кун — звезда первой величины в области распределенных систем, один из разработчиков Akka. Под катом предлагаем перевод его программной статьи о распределенных системах и акторной модели, размещенной на сайте GitHub
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии7

DevDay на функционале

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


Планов на декабрь много: и завалы на проекте разгрести, и новогодние праздники распланировать. Если среди всей этой предновогодней беготни захотелось пищи для ума, айда к нам — 15 декабря обсудим функциональное программирование. Мы поделимся секретами написания быстрого бекенда, вместе разрушим десяток мифов о ФП и устроим холивар про будущее ФП/ООП.
Хочу пищи для ума
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

DevDay про микросервисы. Запись лучших докладов

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


В прошлую пятницу мы собрали 140 разработчиков, чтобы поговорить о микросервисах — деплое, координации, согласованности. Делимся с вами записью двух лучших, по мнению участников, выступлений.
Смотрите, что получилось
Всего голосов 19: ↑15 и ↓4+11
Комментарии1

Scala в ЕРАМ: обучение и проекты

Время на прочтение4 мин
Количество просмотров6K
Scala резко стала популярной несколько лет назад. Несмотря на это, на рынке технология остается редкой: если сравнивать количество вакансий для Scala-разработчиков и, например, тех, кто пишет на Java или Python, становится ясно – у первых выбор не так велик. Но это говорит и о том, что хорошие Scala-разработчики – на вес золота.

В ЕРАМ таких специалистов пока немного, но потребность растет: у нас появляется больше Scala-проектов. Мы даже открыли лабораторию по Scala в Петербурге, где сами учим разработчиков почти с нуля. Как туда попасть, кто осваивает Scala в ЕРАМ и какие проекты мы делаем – под катом.


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

Истории

Паттерн Model-Update-View и зависимые типы

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


Model-Updater-View — функциональный паттерн, успешно применяемый в языке Elm в основном для разработки пользовательских интерфейсов. Что бы им воспользоваться надо создать тип Model, представляющий полное состояние программы, тип Message, описывающий события внешней среды, на которые программа должна реагировать, меняя свое состояние, функцию updater, которая из старого состояния и сообщения создает новое состояние прораммы и функции view, которая вычисляет по состоянию программы требуемые воздействия на внешнюю среду, которые порождают события типа Message. Паттерн очень удобный, но у него есть маленький недостаток — он не позволяет описать какие события имеют смысл для конкретных состояний программы.

Схожая проблема возникает (и решается) и при использовании ОО-паттерна State.

Язык Elm простой, но очень строгий — он проверяет, что функция updater хоть как-то обрабатывает все возможные сочетания модели-состояние и сообщения-события. По этому приходится писать лишний, пусть и тривиальный — как правило оставляющий модель без изменений, код. Я хочу продемонстрировать, как этого можно избежать в более сложных языках — Idris, Scala, C++ и Haskell.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

Микросервисы: деплой, координация и согласованность данных

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


Про микросервисы не рассказывал только ленивый. Вот и мы не ленивые. Решили поговорить о микросервисах. Но только не ещё раз о том, что это такое, а о том, как мы их сервируем в 2ГИС. Например, наши бекенды держат 15 млн пользователей в месяц. На встрече поговорим о деплое, координации и согласованности данных.
Подробности про DevDay
Всего голосов 33: ↑23 и ↓10+13
Комментарии9

Глобальная теплокарта Strava: теперь в 6 раз горячее

Время на прочтение8 мин
Количество просмотров23K
Рад объявить о первом крупном обновлении глобальной тепловой карты в Strava Labs c 2015 года. Это обновление включает в себя в шесть раз больше данных, чем раньше —  в сумме 1 миллиард активностей со всей базы Strava по сентябрь 2017 года.

Наша глобальная теплокарта — самая крупная и подробная, и это самый прекрасный в мире набор данных такого рода. Это прямая визуализация активностей глобальной сети атлетов Strava. Чтобы дать представление о масштабе, то новая теплокарта включает в себя:

  • 1 миллиард активностей
  • 3 триллиона точек долготы/широты
  • 13 триллионов пикселей после растрирования
  • 10 терабайт исходных данных
  • Общая дистанция маршрутов: 27 миллиардов километров
  • Запись общего времени активности: 200 тысяч лет
  • 5% земной суши покрыто тайлами


Тепловая карта Москвы демонстрирует функцию поворота/наклона в Mapbox GL
Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии22

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

Время на прочтение6 мин
Количество просмотров16K
image Привет, Хаброжители! Наконец-то мы можем предложить вам результаты титанического труда наших переводчиков и редакторов – долгожданное классическое издание по языку Scala. Все, кому известна аббревиатура JVM и не чуждо функциональное программирование, несомненно, оценят эту книгу (переоценить ее невозможно). Основной автор этого фолианта — Мартин Одерски, разработчик и идеолог языка Scala, стоявший у самых его истоков. Эта книга станет незаменимым приобретением для всех серьезных специалистов, имеющих опыт работы с Java и JVM. Авторы преследовали цель научить читателя всему необходимому, чтобы уверенно писать на языке Scala работоспособные и даже боеспособные приложения. Все примеры в издании скомпилированы с использованием Scala версии 2.11.7, за исключением тех, что имеют пометку 2.12, — они скомпилированы с использованием версии 2.12.0-M3

Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии25

Приглашаем на конференцию FPConf 2017

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

2 декабря ждем всех, кто любит делать это функционально на третьей конференции FPConf — конференции о Haskell, Scala, Clojure, Elixir, Kotlin, F# и функциональных подходах в программировании фронтендов, бэкендов и чего угодно на чем угодно. Больше монад, лямбд, замыканий! Всем иммутабельность, друзья :)

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

Цена билета сейчас — 5000 рублей. Регистрация тут.

Что в программе:

image Arnaud Spiwack, core-разработчик Coq Proof Assistant, старший архитектор в Tweag I/O

USING HASKELL TO GREAT EFFECT

It is beyond cliché, nowadays, to say that testing is really important. This is even more so in I/O intensive applications because so many things can go wrong. Unfortunately, testing I/O intensive applications is particularly hard. We have to mock all our files, data-bases, and so on. But even so, we're only scratching the surface: so many things can go wrong. How do we test for absence of deadlocks? Of races?

I came to the conclusion that Haskell's insistence on purity made it, paradoxically, one of the best languages to write I/O intensive programs. The reason for this is that Haskell makes it very easy to mock every single aspects of the I/O fabric, hence testing is more powerful. Up to checking for the absence of deadlocks and races. This talk will discuss the programming patterns which emerge from this point of view, and, of course, encourage you do use them in your programs.
Смотреть всю программу
Всего голосов 15: ↑15 и ↓0+15
Комментарии1

Анонс Moscow Spark #3

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

Всем привет! Мы долго готовились, искали крутых докладчиков и, наконец, анонсируем Moscow Spark #3, который состоится 16 ноября на Мансарде Rambler&Co! Предыдущий митап собрал почти 250 человек, и мы рассчитываем, что сможем собрать не меньше в этот раз. Ключевой темой этого мероприятия станет Spark Streaming, актуальная и очень интересная часть фреймворка Apache Spark.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии1

«Иногда приходится заглядывать в код Spark»: Александр Морозов (SEMrush) об использовании Scala, Spark и ClickHouse

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


В случае с SEMrush бессмысленно спрашивать «какие языки и технологии использует компания»: здесь каждой команде предоставляют максимальную степень автономности, сводя «общее для всех» к минимуму. А вот конкретную команду вполне есть о чём расспросить.

Мы узнали, что в одном из проектов используют Scala, C++, Spark и ClickHouse. Выбор Scala сам по себе нестандартный, сочетание с C++ можно встретить ещё реже, СУБД ClickHouse от Яндекса тоже не самый распространённый выбор — поэтому мы решили задать несколько вопросов о том, как со всем этим живётся. На них нам ответил Александр Морозов.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии2

Снизить косты? Easy

Время на прочтение5 мин
Количество просмотров9.5K
Добрый день, я занимаюсь разработкой сервиса по прогнозированию спроса на базе Microsoft Azure, Spark Apache в IT компании. В цикле статей я расскажу про реальные бизнес кейсы из российских реалий, с которыми сталкивается IT компания. В основном статьи будут про бизнес: есть клиент, есть его задачи, нужно найти способ как их решать и доказать менеджменту адекватность расчётов, далее уже внедрение.

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

Первый бизнес-кейс


Компания хочет понять сколько у неё потерь (очень круто, когда компания сразу знает, что хочет), и как можно их уменьшить.



Цель поставлена. Теперь немного о компании: Федеральная сеть 400 розничных магазинов. Пилотную версию проекта договорились проводить с одной категорией товара – 20 sku, средний срок годности продукта 15 дней.
Читать дальше →
Всего голосов 21: ↑11 и ↓10+1
Комментарии13

«Если бы сейчас начали сначала, снова выбрали бы Scala»: Tinkoff.ru о Scala-разработке

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


У Scala репутация языка, с которым сложности подстерегают с разных сторон: порог входа выше, чем у Java, а разработчиков куда меньше (так что может быть сложнее собрать команду). В итоге российские компании нечасто решаются его использовать. Но в Tinkoff.ru активно используют далеко не первый год — и мы решили расспросить компанию, как на практике живётся с Scala. Поскольку сложности могут быть и техническими, и кадровыми, вопросы задали двум разным сотрудникам: руководителю отдела разработки программных интерфейсов Роману Докучаеву и руководителю HR-проектов Ольге Шпунтенко.

Читать дальше →
Всего голосов 42: ↑33 и ↓9+24
Комментарии17

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

Андрей Ершов об эволюции Future в Java и Scala на jug.msk.ru

Время на прочтение2 мин
Количество просмотров4.8K
31 августа 2017 года в офисе компании КРОК прошла встреча московского сообщества Java-разработчиков с участием Андрея Ершова, рассказавшего об эволюции базового примитива асинхронной разработки Future и его реализации в языках программирования Java и Scala.


Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии0

Простой Java-код, ломающий систему вывода типов Scala

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

Простой код на Java: generic интерфейс, класс который его реализует, и метод, принимающий его экземпляр:


//Gen.java:
public interface Gen<A> {
    A value();
}

//GenInt.java:
public class GenInt implements Gen<Integer> {
    private final int i;
    public GenInt(int i) {
        this.i = i;
    }
    @Override
    public Integer value() {
        return i;
    }
}

//GenTest.java:
public class GenTest {
    public static <A extends Gen<T>, T> T test(A a) {
        return a.value();
    }
    public static void main(String[] argv) {
        GenInt g = new GenInt(42);
        Integer i = test(g);
    }
}

Он компилируется и даже запускается. Как вы думаете, что будет, если вам захочется вызывать метод test из Scala?


object TestFail extends App {
  val genInt = new GenInt(42)
  val i = GenTest.test(genInt)
}
Что может пойти не так?
Всего голосов 21: ↑16 и ↓5+11
Комментарии11

Обзор возможностей библиотеки Apache Curator для Apache Zookeeper

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

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

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

Dotty – будущее языка Scala

Время на прочтение17 мин
Количество просмотров19K
В конце мая я оказался среди слушателей конференции Scala Days в Копенгагене. Одним из ключевых спикеров был создатель языка Scala Мартин Одерски. Он рассказал о развитии языка и, в частности, о разработке компилятора, названного Dotty. Планируется, что на основе Dotty будет разработан новый компилятор для версии 3.0.

Мартин не раз выступал на эту тему, и я бы хотел собрать здесь всю актуальную информацию о Dotty – новые ключевые возможности и элементы, удаленные за ненадобностью.


Мартин Одерски. План развития Scala на ближайшие несколько лет

Этот пост будет полезен и знатокам, и совсем новичкам, для которых разговор о Dotty я предваряю рассказом об особенностях Scala, а также о том, что лежит в его математической основе.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии51

Scala коллекции: секреты и трюки

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

Представляю вашему вниманию перевод статьи Павла Фатина Scala Collections Tips and Tricks. Павел работает в JetBrains и занимается разработкой Scala плагина для IntelliJ IDEA. Далее, повествование идет от лица автора.


В этой статье вы найдете упрощения и оптимизации, характерные для повседневного использования API Scala коллекций.


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


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


Тем не менее, эти рецепты ценны сами по себе. Они могут помочь вам углубить понимание стандартной библиотеки коллекций Scala и сделать ваш код быстрее и выразительнее.


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

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

RAML-роутинг в Play Framework

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

Play framework — очень гибкий инструмент, но информации о том, как изменить формат route-файла, на просторах интернета мало. Я расскажу о том, как можно заменить стандартный язык описания маршрутов на основе route-файла на описание в формате RAML. А для этого нам придется создать свой SBT-плагин.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии5

Анонс Moscow Spark #2

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

Как мы и обещали, наше мероприятие становится регулярным – 27 июля состоится Moscow Spark #2! Moscow Spark #1, организованный группой компаний Rambler&Co, собрал больше 200 участников, и мы надеемся, что жаркая погода, которая когда-нибудь установится в московском регионе, не помешает нам собрать столько же (и даже больше) участников в этот раз. Тем более, что мы нашли новых, интересных докладчиков.
Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии4