The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)Eugene Yokota
Talk given at ScalaMatsuri 2017. A review of:
- the sbt 0.13.x series that’s been under development as a technology preview since 2014
- the sbt server feature which is planned to be shipped with the next major sbt release
- and the rest of sbt 1.0
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)Eugene Yokota
Talk given at ScalaMatsuri 2017. A review of:
- the sbt 0.13.x series that’s been under development as a technology preview since 2014
- the sbt server feature which is planned to be shipped with the next major sbt release
- and the rest of sbt 1.0
Weaving Dataflows with Silk - ScalaMatsuri 2014, TokyoTaro L. Saito
Silk is a framework for building dataflows in Scala. In Silk users write data processing code with collection operators (e.g., map, filter, reduce, join, etc.). Silk uses Scala Macros to construct a DAG of dataflows, nodes of which are annotated with variable names in the program. By using these variable names as markers in the DAG, Silk can support interruption and resume of dataflows and querying the intermediate data. By separating dataflow descriptions from its computation, Silk enables us to switch executors, called weavers, for in-memory or cluster computing without modifying the code. In this talk, we will show how Silk helps you run data-processing pipelines as you write the code.
Node.js vs Play Framework (with Japanese subtitles)Yevgeniy Brikman
Video: http://www.nicovideo.jp/watch/1410857293
Here's the showdown you've been waiting for: Node.js vs Play Framework. Both are popular open source web frameworks that are built for developer productivity, asynchronous I/O, and the real time web. But which one is easier to learn, test, deploy, debug, and scale? Should you pick Javascript or Scala? The Google v8 engine or the JVM? NPM or Ivy? Grunt or SBT? Two frameworks enter, one framework leaves.
This version of the presentation has Japanese subtitles. For the English only version, see http://www.slideshare.net/brikis98/nodejs-vs-play-framework
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Magneta AI
Антон Кириллов, Zeptolab (Москва)
Доклад посвящен обзору ключевых технологий стека Typesafe и анализу ключевых преимуществ и недостатков на примере реального проекта:
* Действительно ли Scala - “более лучшая” Java? Что следует знать, начиная внедрять Scala.
* Play Framework: больше чем просто контейнер. Архитектура и возможности.
* Доступ к базам данных: библиотеки и подходы, эволюция схемы БД во времени
* Actors: безболезненная многопоточность!
* Simple Build Tool: не совсем simple, но крайне функциональный инструмент автоматической сборки.
Рассматриваемые технологии позволяют “из коробки” начать создавать прототипы веб-приложений за очень короткое время и в дальнейшем наращивать их функционал. Тем не менее, из-за молодости стека существует большое количество “граблей”, о которых следует знать, принимая решение об использовании данного набора технологий.
A short introduction (with many examples) to the Scala programming language and also an introduction to using the Play! Framework for modern, safe, efffcient and reactive web applications.
6. settings
•transformation of key-value map
セッティングは key-value マップの変換
key
value
name
helloWorld
version
0.1.0-SNAPSHOT
organization
com.example
7. settings
•transformation of key-value map
key := {
val x = otherKey.value
x + 1
}
key += { ... }
key ++= Seq(...)
セッティングは key-value マップの変換
8. scoped keys
•entry point for sbt shell
•Attributes:
–key name
–key type
–project (default "This")
–configuration (default "This")
–in-task (default "This")
–(implicitly, scalaVersion)
スコープ付けされたキー キー名、キー型、プロジェクト、コンフィギュレーション、in タスク、(scalaVersion)
9. scoped keys
•entry point for sbt shell
{url}proj-id/config:inTask::keyName
keyName in (proj, Compile, inTask) := { ... }
•in build.sbt
sbt シェルへの入り口
build.sbt での記法と異なる
10. when "This" is used
•shell will default to "This"
•default delegation rule
–project: x, ThisBuild, then Global
–configuration: in the order of ivyConfigurations, then Global
–task: no delegation
シェルで軸に指定が無い場合は This
This の委譲のルール
11. configuration
•sets of source and library dependencies
–Compile
–Test
–etc.
コンフィギュレーションはソースとライブラリ依存性の集合
14. sbt 1.0 technology previews
•adding features to 0.13.x without breaking binary compatibility
sbt 1.0 は出したいけど、API が固定化する前に入れたいものもある
15. 0.13.5/6: Auto plugins
•default features as auto plugins
•manages plugin dependencies
–triggered plugins (e.g. coffeescript on all web)
次世代プラグイン。プラグイン同士の依存性を追跡
自動的にセッティング順を計算
16. 0.13.6: HTTPS by default
•Maven Central
•Typesafe repositories
•sbt plugin repository
HTTPS がデフォルト
17. 0.13.6: Consolidated resolution
•resolution performance improvement sponsored by LinkedIn
•consolidates sub-project dependency resolution with identical dependency graph
def commonSettings = Seq( updateOptions := updateOptions.value.withConsolidatedResolution(true) ) lazy val app = (project in file("app")). settings(commonSettings: _*)
ライブラリ依存性のグラフが同一な場合に解決を一括化
18. 0.13.6: Eviction warning
•eviction
–when multiple versions are found on resolved dependencies tree, sbt selects the latest by default.
•0.13.6 guesses binary incompatible evictions
[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn] * commons-io:commons-io:1.3 -> 2.1
[warn] Run 'evicted' to see detailed eviction warnings
eviction: 同じライブラリの複数のバージョンがあった場合の「追い出し」
バイナリ互換性が無い eviction の推論
20. 0.13.6: –SNAPSHOT handling
•checks all resolvers for the latest (This could slow things down)
•sbt used to pick the first one it found
-SNAPSHOT 処理の改善
以前はキャッシュから JAR を消す必要があった
21. 0.13.x: sbt server
•better integration with IDE, vim/emacs/sublime, Jenkins, Activator, etc
•many possibilities (remote compilation, caching, inter-project communication)
IDE や他のツールとの統合 リモートコンパイルなど多くの可能性がある
22. 0.13.x: more performance updates
•cablecar: Ivy "rewrite" prototype in Scala
–https://github.com/sbt/sbt/tree/wip/cablecar
•or, enhancement on consolidated resolution (global cache, support for different graphs)
•resolution performance improvement sponsored by LinkedIn
cablecar: Ivy のライブラリ解決機能の Scala rewrite プロトタイプ 解決の一括化をさらに改善すればその方向の方が速くなるかも