sbt-sriracha を用いたホットなソース依存

in

ソース依存性はかなり前から sbt に存在するが、あまりドキュメント化されていない機能の一つだ。

sbt-sriracha を使って、µTest へのハイブリッド依存性は以下のように定義できる:

lazy val utestJVMRef = ProjectRef(uri("git://github.com/eed3si9n/utest.git#5b19f47c"), "utestJVM")
lazy val utestJVMLib = "com.lihaoyi" %% "utest" % "0.6.4"
 
lazy val root = (project in file("."))
  .sourceDependency(utestJVMRef % Test, utestJVMLib % Test)
  .settings(
    name := "Hello world",
    testFrameworks += new TestFramework("utest.runner.Framework"),
  )

これらの変更によって改造版の µTest を Scala 2.13.0-M4 上で走らせられるようになった。

Bash からの Java バージョンの検知

昨日 Travis CI を用いてクロス JVM テスト する方法を書いた。

Travis CI を用いた macOS 上での Scala アプリのテスト

Travis CI を用いて macOS 上で Scala アプリのテストを行うことも可能だ。これは Lars さんと Muuki さんの方法 Testing Scala programs with Travis CI on OS X をアレンジしたものだ。

dist: trusty
 
language: scala
 
matrix:
  include:
    ## build using JDK 8, test using JDK 8
    - script:
        - sbt universal:packageBin

Travis CI を用いたクロス JVM テスト

in

Oracle は non-LTS JDK を 6ヶ月おき、LTS JDK を 3年おきにリリースする計画だ。また、今後は OpenJDK に集約されていくらしい。計画どおりにいけば、JDK 9 は 2018年3月に EOL、JDK 10 は 2018年3月にリリースされ、2018年9月に EOL、そして 2018年9月に JDK8 をリプレースする LTS JDK 11 は 2021年まで続くということになる。

今後立て続けにリリースされる JDK に備えて、Travis CI を使ってアプリを JDK 8, JDK 9, そして JDK 10 Early Access でテストする方法を紹介する。

dist: trusty
 
language: scala
 
matrix:
  include:
    ## build using JDK 8, test using JDK 8
    - script:
        - sbt universal:packageBin
        - cd citest && ./test.sh
 
    ## build using JDK 8, test using JDK 9

sbt-nocomma を用いたカンマの消去

in

本稿は build.sbt からカンマを消去する nocomma { ... } マクロを導入する sbt-nocomma を紹介する。

import Dependencies._
 
lazy val root = (project in file("."))
  .settings(nocomma {
    ThisBuild / organization := "com.example"
    ThisBuild / scalaVersion := "2.12.4"
    ThisBuild / version      := "0.1.0-SNAPSHOT"
 
    name := "Hello"
 
    // comment works
    libraryDependencies += scalaTest % Test
  })

sbt-sticker

in

以前ツイートしたとおり、sbt ステッカーを自作した。

自分が欲しいから作ったわけだが、sbt エコシステムのコントリビューターの皆さんにも配っている。

過去にバグ報告したり、Stackoverflow や社内で質問に答えたり、プラグイン作ったり、sbt の勉強会をやったり、プルリクを送ってくれた人は是非 ScalaMatsuri や Scala Days で声をかけてください。

猫番: 17日目

in

猫番: 17日目を書いた。始対象と終対象、積、双対性、余積など抽象構造を見ていきつつ、Either を coproduct として使う方法を紹介します。

Neovim と sbt server

in

sbt server 統合シリーズ・パート3 は Neovim だ。これまでに VS CodeSublime Text 3 をカバーした。

vim-scala-sbt

ファイルパスの URI 参照へのエンコード方法

in

本稿では古くて新しい問題であるファイルパスの Uniform Resource Identifier (URI) へのエンコード方法について議論する。

2017年現在、権威ある情報の元は RFC 8089 - The "file" URI Scheme だ。未来の読者の人は "file URI scheme RFC" で検索して最新版を探してほしい。プログラマの人は RFC を読んで下さい。この覚え書きは URI エンコーディングに関連した問題の認識を高めるためのものだが、RFC の代替とはならない。

最近 file:/foo/bar がパースできないというプラットフォーム間の相互乗り入れ問題に出くわした。ファイルパスを URI として表現するのに関連した問題に悩まされるのはこれが最初でもない。ファイルシステムという概念は 1960年代に遡り、1990年代から URL があることを考えると、このコンセンサスが取れていないというのは意外なことだ。しかし、十進法小数のように、深く掘り下げたり、データを交換しはじめると、Matrix のほころびが見えてくるのかもしれない。

Sublime Text 3 と sbt server

in

Tech Hub blog にて sbt server を VS Code と併用して実行中の sbt セッションからコンパイラエラーを表示できることをデモした。本稿では Sublime Text 3 でそれをやってみる。

sublime-sbt-scala

Ergodox

in

週末にほったらかしていた Ergodox を組み立てた。

  • Infinity ErgoDox Ergonomic Keyboard Kit via massdrop
  • Cherry MX Brown スイッチ
  • Datamancer Infinity Ergodox Hardwood Case (Black Walnut / Original) via massdrop
  • Plum Blossom PBT Dye-Subbed Keycap Set (OEM, Blank) via massdrop

Syndicate content