SlideShare a Scribd company logo
1 of 32
Самурайский путь молодого
Scala-программиста
Лобин Сергей, maps.sputnik.ru
Москва, 2015
Обо мне
• cyberplat.ru
• livejournal.com
• maps.sputnik.ru
• perl 10+ лет
• Scala 2+ лет
О Спутнике
• Поиск по интернету
• Портальные сервисы
– Лекарства
– Спутник.Дети
– Карты
– и т.д.
• Браузер
• Мобильные приложения
О maps.sputnik.ru
• openstreetmap.org
• Открытые источники
• Проприетарные данные (2GIS)
• Смешать, но не взбалтывать
• SPA (JSON API + AngularJS)
• Свой рендеринг тайлов (gopnik)
Как в Спутнике появилась Scala
• Scala for the Impatient:
• Functional Programming Principles in
Scala (coursera)
• Новая задача
Поиск топонимов
План:
• взять elastic (умеет geo-запросы)
• взять play(быстрый и асинхронный)
• написать proxy-server
• profit
Что получилось
PostgreSQL
(PostGIS)
ElasticSearchPrepare
Proxy-server
SPA
Что могут искать
• москва
• удальцова 6
• красная москва
• Нижний Новгород, проезд Ленина
торговый павильон над сходами в ст
метро Двигатель революции напротив
б-цы 33
Как написать поиск,
который ищет
Word 1 …
Word 2 …
… …
Как написать поиск,
который ищет
{
“country”: “Россия”
“region”: “Тверская область”,
“city”: “ Тверь”,
“street: “Тверская площадь”,
“location”: {
“latitude”: 56.85854576573571,
“longitude”: 35.90263366699219
}
}
{
“country”: “Россия”
“city”: “Москва”,
“street: “Тверская улица”,
“location”: {
“latitude”: 55.76402001102562,
“longitude”: 37.60688781738281
}
}
тверская
Какие мы набили шишки на
пути в бой
• Детские ошибки
• Type Erasure
• Упёрлись в парсинг JSON’а
• elastic – полнотекстовый поиск
Visual VM
Что делать дальше?
• Допиливать elastic?
• Писать свой индекс?
Наше решение
PostgreSQL
(PostGIS)
Prepare
SPASearch
Elastic
Proxy-server
О разработке на Scala
+ Δ+
Мультипарадигменный Высокий порог входа
FP - скрипишь мозгом Мало соискателей
ЧСВ зашкаливает Мало вакансий
Повторное использование
кода
Компилируется медленно
JVM IDE тормозит
sbt Java 8
Tests - OK Слишком «живой» язык
Мультипарадигменный
OOP + FP
Functional Programming
Сначала сложно,
потом просто
ЧСВ
Повторное использование кода
JVM
• Работает везде (практически)
• Великое множество библиотек
• Самая фичастая VM
sbt
• Простая сборка
• Удобно писать собстенные задачи
• Упрощает работу с медленным
компилятором
Тестовые фреймворки
• Specs2
• ScalaTest
• Cucumber
• ScalaCheck
• …
Высокий порог входа
Маленький рынок
Компилируется медленно
IDE тормозит
Java 8
Слишком «живой» язык
Не раз ломали обратную
совместимость
Стоит ли трогать Scala?
ДА!
Где искать ответы?
• https://github.com/mr-mig/ru-it-chats
Вопросы?
32
Спасибо за внимание!
ifitwasi@gmail.com

More Related Content

Viewers also liked

Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013ScalaNsk
 
Under the hood of scala implicits (Scala eXchange 2014)
Under the hood of scala implicits (Scala eXchange 2014)Under the hood of scala implicits (Scala eXchange 2014)
Under the hood of scala implicits (Scala eXchange 2014)Alexander Podkhalyuzin
 
Under the hood of scala implicits (kl10tch 10.03.2015)
Under the hood of scala implicits (kl10tch 10.03.2015)Under the hood of scala implicits (kl10tch 10.03.2015)
Under the hood of scala implicits (kl10tch 10.03.2015)Alexander Podkhalyuzin
 
Distributed erlang
Distributed erlangDistributed erlang
Distributed erlangYuri Zhloba
 
Переход на Scala: босиком по граблям
Переход на Scala: босиком по граблямПереход на Scala: босиком по граблям
Переход на Scala: босиком по граблямSveta Bozhko
 
Implicit Implicit Scala
Implicit Implicit ScalaImplicit Implicit Scala
Implicit Implicit ScalaKota Mizushima
 
Scala performance под капотом
Scala performance под капотомScala performance под капотом
Scala performance под капотомRoman Grebennikov
 
Con-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With JavassistCon-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With JavassistAnton Arhipov
 
JavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with JavassistJavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with JavassistAnton Arhipov
 
Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Anton Arhipov
 

Viewers also liked (20)

Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013
 
Under the hood of scala implicits (Scala eXchange 2014)
Under the hood of scala implicits (Scala eXchange 2014)Under the hood of scala implicits (Scala eXchange 2014)
Under the hood of scala implicits (Scala eXchange 2014)
 
Feature suggester
Feature suggesterFeature suggester
Feature suggester
 
Scala #4
Scala #4Scala #4
Scala #4
 
Scala #2
Scala #2Scala #2
Scala #2
 
Under the hood of scala implicits (kl10tch 10.03.2015)
Under the hood of scala implicits (kl10tch 10.03.2015)Under the hood of scala implicits (kl10tch 10.03.2015)
Under the hood of scala implicits (kl10tch 10.03.2015)
 
Scala lecture #4
Scala lecture #4Scala lecture #4
Scala lecture #4
 
Scala #3
Scala #3Scala #3
Scala #3
 
Scala training
Scala trainingScala training
Scala training
 
Scala plugin for IntelliJ IDEA
Scala plugin for IntelliJ IDEAScala plugin for IntelliJ IDEA
Scala plugin for IntelliJ IDEA
 
Scala magic
Scala magicScala magic
Scala magic
 
Erlang
ErlangErlang
Erlang
 
Distributed erlang
Distributed erlangDistributed erlang
Distributed erlang
 
Переход на Scala: босиком по граблям
Переход на Scala: босиком по граблямПереход на Scala: босиком по граблям
Переход на Scala: босиком по граблям
 
Implicit Implicit Scala
Implicit Implicit ScalaImplicit Implicit Scala
Implicit Implicit Scala
 
Scala performance под капотом
Scala performance под капотомScala performance под капотом
Scala performance под капотом
 
Clojure #2 (2014)
Clojure #2 (2014)Clojure #2 (2014)
Clojure #2 (2014)
 
Con-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With JavassistCon-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With Javassist
 
JavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with JavassistJavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with Javassist
 
Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101
 

Similar to Самурайский путь молодого Scala-программиста

Rambler.iOS #2: Введение в RestKit
Rambler.iOS #2: Введение в RestKitRambler.iOS #2: Введение в RestKit
Rambler.iOS #2: Введение в RestKitRAMBLER&Co
 
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++Антон Шестаков
 
OSM for Conservation
OSM for ConservationOSM for Conservation
OSM for Conservationgisproject
 
Александр Тармолов "API Яндекс.Карт"
Александр Тармолов "API Яндекс.Карт"Александр Тармолов "API Яндекс.Карт"
Александр Тармолов "API Яндекс.Карт"Yandex
 
A tale of query languages. Is GraphQL the chosen one? - Victor Shepelev
A tale of query languages. Is GraphQL the chosen one? - Victor ShepelevA tale of query languages. Is GraphQL the chosen one? - Victor Shepelev
A tale of query languages. Is GraphQL the chosen one? - Victor ShepelevRuby Meditation
 
Поездка на IT-DUMP 2012
Поездка на IT-DUMP 2012Поездка на IT-DUMP 2012
Поездка на IT-DUMP 2012Alexey Zinoviev
 
Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»e-Legion
 
YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011CodeCamp
 
Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"Yandex
 
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)Ontico
 
мифы о спарке
мифы о спарке мифы о спарке
мифы о спарке Evgeny Borisov
 
Свободные ГИС
Свободные ГИССвободные ГИС
Свободные ГИСStepan Kuzmin
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest
 
Серверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBСерверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBStepan Stolyarov
 
Антон Тюрин — Облачная платформа Cocaine — облако своими руками
Антон Тюрин — Облачная платформа Cocaine — облако своими рукамиАнтон Тюрин — Облачная платформа Cocaine — облако своими руками
Антон Тюрин — Облачная платформа Cocaine — облако своими рукамиYandex
 
Big Data Science in Scala ( Joker 2017, slides in Russian)
Big Data Science in Scala ( Joker 2017, slides in Russian)Big Data Science in Scala ( Joker 2017, slides in Russian)
Big Data Science in Scala ( Joker 2017, slides in Russian)Anastasia Bobyreva
 
maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014Maxim Dementyev
 

Similar to Самурайский путь молодого Scala-программиста (20)

Rambler.iOS #2: Введение в RestKit
Rambler.iOS #2: Введение в RestKitRambler.iOS #2: Введение в RestKit
Rambler.iOS #2: Введение в RestKit
 
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
 
OSM for Conservation
OSM for ConservationOSM for Conservation
OSM for Conservation
 
Esri и opensource
Esri и opensourceEsri и opensource
Esri и opensource
 
Esri и opensource
Esri и opensourceEsri и opensource
Esri и opensource
 
Александр Тармолов "API Яндекс.Карт"
Александр Тармолов "API Яндекс.Карт"Александр Тармолов "API Яндекс.Карт"
Александр Тармолов "API Яндекс.Карт"
 
A tale of query languages. Is GraphQL the chosen one? - Victor Shepelev
A tale of query languages. Is GraphQL the chosen one? - Victor ShepelevA tale of query languages. Is GraphQL the chosen one? - Victor Shepelev
A tale of query languages. Is GraphQL the chosen one? - Victor Shepelev
 
Поездка на IT-DUMP 2012
Поездка на IT-DUMP 2012Поездка на IT-DUMP 2012
Поездка на IT-DUMP 2012
 
Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»
 
YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011
 
Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"
 
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
 
мифы о спарке
мифы о спарке мифы о спарке
мифы о спарке
 
Intro to apps with maps for series 40 russian
Intro to apps with maps for series 40 russianIntro to apps with maps for series 40 russian
Intro to apps with maps for series 40 russian
 
Свободные ГИС
Свободные ГИССвободные ГИС
Свободные ГИС
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
 
Серверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBСерверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDB
 
Антон Тюрин — Облачная платформа Cocaine — облако своими руками
Антон Тюрин — Облачная платформа Cocaine — облако своими рукамиАнтон Тюрин — Облачная платформа Cocaine — облако своими руками
Антон Тюрин — Облачная платформа Cocaine — облако своими руками
 
Big Data Science in Scala ( Joker 2017, slides in Russian)
Big Data Science in Scala ( Joker 2017, slides in Russian)Big Data Science in Scala ( Joker 2017, slides in Russian)
Big Data Science in Scala ( Joker 2017, slides in Russian)
 
maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014
 

Самурайский путь молодого Scala-программиста