-Xlint, -Xfatal-warnings, ãã㊠Scalafix ãçšãã Scala ã®å³æ Œå
ã³ã³ãã€ã«ããããããªããã°ã³ã³ãã€ã«ããªããèŠåãªã©ãããªããæè¿æ°ã«å ¥ã£ãŠãã Scala ã³ã³ãã€ã©ã®ãã©ã°ã¯ "-Xlint" ãš "-Xfatal-warnings" ã® 2ã€ã ã 以äžã¯ããµããããžã§ã¯ããšå ±ã«äœ¿ããã»ããã£ã³ã°ã®äŸã : ThisBuild / scalaVersion := "2.12.6" lazy val commonSettings = List( scalacOptions ++= Seq( "-encoding", "utf8", "-deprecation", "-unchecked", "-Xlint", "-feature", "-language:existentials", "-language:experimental.macros", "-language:higherKinds", "-language:implicitConversions" ), scalacOptions ++= (scalaVersion.value match { case VersionNumber(Seq(2, 12, _*), _, _) => List("-Xfatal-warnings") case _ => Nil }), Compile / console / scalacOptions --= Seq("-deprecation", "-Xfatal-warnings", "-Xlint") ) lazy val foo = (project in file("foo")) .settings( commonSettings, name := "foo", ) -Xlint ãšã¯?git gone: stale ãªããŒã«ã«ãã©ã³ãã®ã¯ãªãŒã³ã¢ãã
GitHub ã® pull request ãäžå¿ã«äœæ¥ããŠãããšãããããšãããªããã©ã³ããããŒã«ã«ã«æºãŸã£ãŠãããæ¬çš¿ã§ã¯ããã®ãããªãããŒã«ã«ãã©ã³ããæé€ããæ¹æ³ãã¿ãŠã¿ãã åºæ¬çã« 2ã€ã®æŠç¥ããããšæã: “master” ãã©ã³ããéžãã§ãããã«ããŒãžæžã¿ã®ãã®ãåé€ãã GitHub äžã§æ¢ã«ãã©ã³ãã¯åé€ãããŠããåæã§ããªã¢ãŒãã® “origin” ã«ã¯ããç¡ãããŒã«ã«ã®ãã©ã³ããåé€ãã Erik Aybar ããã® Git Tip: Deleting Old Local Branches ãšããããã°èšäºã¯ç¬¬2ã®æ¹æ³ããšã£ãŠããã This just helped clean up 150+ old local branches for me this morning, so I thought I should share! #githttps://t.co/VLKLtl5inp — Erik Aybar (@erikaybar_) January 31, 2017 git gone git gone ã¯ãErik Aybar ããã®ãã¯ããã¯ãããŒã¹ã«åãæžããã«ã¹ã¿ã git ã³ãã³ãã ãBash ã§ã¹ã¯ãªããæžãã®ã¯äžæ £ããªã®ã§ Google ãšã Stackoverflow ãèŠãªããæžããããäžå¿åããŠãããŠãããšæããeed3si9n/git-gone ã«ãœãŒã¹ã貌ã£ãã®ã§ããã ~/bin ãªã©é©åœãªå Žæã« git-gone ãšããŠä¿åããã 䜿ãæ¹ã¯ git gone ãšæãŠã°åºãŠããããã«ãã:Scala ã§æžãã³ã³ãœãŒã«ã»ã²ãŒã
æè¿ãªãããªã³ã³ãœãŒã«ã¢ããªã®ããšãèããããšãããããã è¡ãè¿œå ããŠããããããªããŠãã°ã©ããã£ãã¯çãªäºããã£ãŠããã¢ããªã ãå€åãããªã¹ãæžãããããã®æ å ±ã¯éããã®ã§ããã«ãŸãšããŠããã ANSI X3.64 control sequences ã¿ãŒããã«ç»é¢ã®ä»»æã®äœçœ®ã«ããã¹ãã衚瀺ããããã«ã¯ããŸãã¿ãŒããã« (terminal) ãšã¯äœããç解ããå¿ èŠãããã1960幎代äžç€ã«å瀟㯠PDP-8 ãªã©ãã£ãããã³ã³ãã¥ãŒã¿ãŒãçºå£²ããããã㯠PDP-11ãVAX-11 ãšç¶ãããããã¯å·èµåº«ãããã®å€§ããã®ã³ã³ãã¥ãŒã¿ãŒã§ããèšç®æ©ã»ã³ã¿ãŒããè³Œå ¥ããRT-11 ãå ç¥ UNIX system ãšãã£ããªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ãèµ°ãããåæã«å€ãã®ãŠãŒã¶ (12 ~ æ°çŸäºº?) ããµããŒãããããšãã§ãããããã³ã³ãã¥ãŒã¿ãžæ¥ç¶ããããã«ããŠãŒã¶ã¯ã¢ãã¯ãç»é¢ãšããŒããŒããåãããç©ç端æ«ã䜿ã£ãã端æ«ã®äžã§ãæãæåãªã®ã¯ 1978幎㫠DEC瀟ãçºå£²ãã VT100 ã ã VT100 㯠80x24æåããµããŒãããã«ãŒãœã«å¶åŸ¡ã« ANSI X3.64 æšæºãæ¡çšããåæã®ã¿ãŒããã«ã®äžã€ã ãèšãæãããšãããã°ã©ã ã¯æåã®åãåºåããããšã§ä»»æã®äœçœ®ã«ããã¹ãã衚瀺ããããšãã§ãããçŸåšã®ãã¿ãŒããã«ãã¢ããªã±ãŒã·ã§ã³ã¯ããã¿ãŒããã«ã»ãšãã¥ã¬ãŒã¿ããšåŒã°ããããšããããããã㯠VT100 ãšãã£ãç©ç端æ«ããšãã¥ã¬ãŒãããŠããããšã«ç±æ¥ããã VT100 å¶åŸ¡ã·ãŒã±ã³ã¹ã®ã¬ãã¡ã¬ã³ã¹ã¯ä»¥äžãåèã«ãªã: Console Virtual Terminal Sequences - Windows Console 11.1 Control Sequences - Screen User Manual CUP (Cursor Position) ESC [ <y> ; <x> H CUP Cursor Position *Cursor moves to <x>; <y> coordinate within the viewport, where <x> is the column of the <y> linesbt 1.2.0
@eed3si9n è çããããã«ã¡ã¯ãLightbend Tooling team ã«ããã£ãŠ sbt 1.2.0 ãã¢ããŠã³ã¹ããŸãããã㯠sbt 1 ã®ãã£ãŒãã£ãŒãªãªãŒã¹ç¬¬äºåŒŸã§ããã€ããªäºææ§ã¯ç¶æãã€ã€æ°æ©èœã«ãã©ãŒã«ã¹ãåœãŠããªãªãŒã¹ãšãªã£ãŠãããsbt 1 㯠Semantic Versioning ã«ããšã¥ããŠãªãªãŒã¹ãããã®ã§ããã©ã°ã€ã³ã¯ sbt 1.x ã·ãªãŒãºäžæ©èœããããšãæåŸ ãããŠããã 2018幎7æ31æ¥ã« 1.2.0 final çããªãªãŒã¹ãããã 2018幎7æ6æ¥ãŸã§ã«å€§ããªåé¡ãèŠã€ãããªããã°ã1.2.0-RC1 㯠1.2.0 final çãšãªãäºå®ã ã sbt 1.2 ã®äž»ãªæ°æ©èœã¯ã¯ãã¹JDK forkingãcomposite projectããããŠå®éšç㪠thin client ã ãsbt 1.1 ãã 6ã¶æã®éä»ã«ãè²ã ãªãã°ä¿®æ£ãæ¹åç¹ãããŸã£ãŠããã ãã©ã°ã€ã³éçºã®ããã® SbtPlugin SbtPlugin ã¯ããããžã§ã¯ãã sbt plugin ã§ããããšã宣èšããããã®ãã©ã°ã€ã³ã ãããã¯èªåçã« scripted test ãå°å ¥ããŠãsbtPlugin := true ãèšå®ããã lazy val root = (project in file(".")) .enablePlugins(SbtPlugin) äºææ§ã«é¢ãã泚æ: ScritpedPlugin 㯠triggered plugin ã§ã¯ãªããªã£ãã #3875 by @eed3si9nåéã® JDK ã¯å šãŠ jabba ãããã ãã
OpenJDK 11-ea, GraalVM, Eclipse OpenJ9 ãè©ŠããŠã¿ãããæªã ã« OpenJDK 6 ã§ãã«ãããªããã°ãããªãã£ãããããšããŠã jabba ãªãäžå šã ãjabba 㯠Stanley Shyiko (@shyiko) ãããäœã£ãã¯ãã¹ãã©ãããã©ãŒã 㪠Java ã®ããŒãžã§ã³ãããŒãžã£ãŒã ã AdoptOpenJDK 8 and 11 以äžã¯ jabba ã䜿ã£ãŠ Travis CI äžã§ AdoptOpenJDK 8 ãš 11 ãçšããŠã¯ãã¹ãã«ãããæ¹æ³ã : sudo: false dist: trusty group: stable language: scala scala: - 2.12.7 env: global: - JABBA_HOME=/home/travis/.jabba matrix: include: - env: - TRAVIS_JDK=adopt@1.8.192-12 - env: - TRAVIS_JDK=adopt@1.11.0-1 before_install: - curl -sL https://raw.githubusercontent.com/shyiko/jabba/0.11.0/install.sh | bash && . ~/.jabba/jabba.sh install: - $JABBA_HOME/bin/jabba install $TRAVIS_JDK - unset _JAVA_OPTIONS - export JAVA_HOME="$JABBA_HOME/jdk/$TRAVIS_JDK" && export PATH="$JAVA_HOME/bin:$PATH" && java -Xmx32m -version script: sbt -Dfile.Expecty ãçšãã power assert ã埩掻ããã
å é±ã¯ sbt-sriracha ãçšãããœãŒã¹äŸåããã¹ãã«äœ¿ãæ¹æ³ã玹ä»ãããä»é±ã¯ Expecty ã䜿ã£ãŠ power assert ãããæ¹æ³ãèŠãŠããã power assert (ããã㯠power assertion) 㯠assert(...) é¢æ°ã®å€çš®ã§ãèªåçã«è©³çŽ°ãªãšã©ãŒã¡ãã»ãŒãžã衚瀺ããŠããããããã¯ãPeter Niederwieser (@pniederw) ããããŸã Spock ã®ããã«å®è£ ããŠã2009 幎㫠Groovy 1.7 ã«åã蟌ãŸãããpower assert 㯠RubyãJavaScriptãRust ãªã©ä»ã®èšèªã«ãåºãŸã£ãŠããã åŸæ¥ã® assert æ äŸããšã㊠a * b ãèãããåŸæ¥ã® assert ã䜿ã£ãå Žå以äžã®ããã«æžã: scala> assert(a * b == 7, s"a = $a; b = $b; a * b = ${a * b}") java.lang.AssertionError: assertion failed: a = 1; b = 3; a * b = 3 ãã¡ããã¡ããšå šéšã®å€æ°ãžã®æ€æ»ããã°ããšã©ãŒã¡ãã»ãŒãžã«æžããšãã£ãããšãåŸã ã«ããŠè¡ããããsbt-sriracha ãçšããããããªãœãŒã¹äŸå
ãœãŒã¹äŸåæ§ã¯ããªãåãã sbt ã«ååšããããããŸãããã¥ã¡ã³ãåãããŠããªãæ©èœã®äžã€ã ã immutable ãªãœãŒã¹äŸå 以äžã®ããã«ã㊠scopt ã³ãã³ãã©ã€ã³ããŒã·ã³ã°ã©ã€ãã©ãªã®ææ°ã®ã³ããããžã®ãœãŒã¹äŸåã宣èšã§ããã lazy val scoptJVMRef = ProjectRef(uri("git://github.com/scopt/scopt.git#c744bc48393e21092795059aa925fe50729fe62b"), "scoptJVM") ThisBuild / organization := "com.example" ThisBuild / scalaVersion := "2.12.2" lazy val root = (project in file(".")) .dependsOn(scoptJVMRef) .settings( name := "Hello world" ) sbt ãèµ·åã㊠compile ãèµ°ããããšãsbt ã¯èªåçã« scopt/scopt ãã¹ããŒãžã³ã°ã»ãã£ã¬ã¯ããªã«ã¯ããŒã³ããŠããã«ããã€ãªãåãããã ãã®ãã sbt ããŒãžã§ã³ãäºæã§ããå¿ èŠãããããŸããèŠããªãããªã¬ãŒãã©ã°ã€ã³ãæ··å ¥ããå¯èœæ§ãããããšã«ã泚æããŠã»ããã ããäžã€ã®å¶çŽã¯ãæåã®ã¯ããŒã³ã®åŸã¯ã¹ããŒãžã³ã°ã»ãã£ã¬ã¯ããªãæŽæ°ãããªãããšã ã ãã€ããªããäŸåæ§ åã代ããã«ã»ããã®ã¯ãã€ããªããäŸåæ§ã§è€æ°ã®ãªããžããªãã€ãªãåãããŠãã³ãŒããæžããŠãã¹ããèµ°ãããããšãã§ããããå ¬éæã«ã¯ Maven ã®ãã€ããªäŸåæ§ãšãªããã®ã ã ãããå®çŸããããã« sbt-sriracha ãšããå®éšçãªãã©ã°ã€ã³ãæžãããproject/plugins.sbt ã«ä»¥äžãè¿œå ãã: addSbtPlugin("com.eed3si9n" % "sbt-sriracha" % "0.1.0") ãããšä»¥äžã®ããã«æžããããã«ãªã: lazy val scoptJVMRef = ProjectRef(workspaceDirectory / "scopt", "scoptJVM") lazy val scoptJVMLib = "com.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 - cd citest && ./test.sh jdk: oraclejdk8 ## build using JDK 8, test using JDK 8, on macOS - script: - sbt universal:packageBin - cd citest && .Travis CI ãçšããã¯ãã¹ JVM ãã¹ã
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 - script: - sbt universal:packageBin - jdk_switcher use oraclejdk9 - cd citest && .sbt-nocomma ãçšããã«ã³ãã®æ¶å»
2016幎8æ SIP-27 æ«å°Ÿã®ã«ã³ã (trailing commas) ã«é¢ãããã£ã¹ã«ãã·ã§ã³ã®ãšãã«æãã€ããã®ã¯äžéšã®ã«ã³ãã®çšæ³ãã»ãã³ãã³ãšçµ±äžã§ããã°ãã»ãã³ãã³æšè«ãæµçšããããšãã§ããããããªãããšããããšã ã Aug 10 2016 20:46: ç¹ã«å¯å€é·åŒæ° (vararg) ã®åºåãæåãšããŠã»ãã³ãã³ãèš±ãã°äŸ¿å©ããã ãããããå®éã«ã¯ããã¯ããŸããããªãã@Ichoran ãããå ·äœäŸãçšããŠææããŠããã: Seq( a b c ) ããã¯çŸç¶ã® Scala ã§ã¯ Seq(a.b(c)) ãšè§£éãããã 2018幎1æ æè¿ @swachter ããã Comma inference ãšããã¹ã¬ãããç«ãŠãã®ã§ãåã³ãã®è©±é¡ã®ããšãæãåºããã Scala ã«ã¯ãã»ãã³ãã³æšè«ããšããããç¥ãããæ©æ§ããããããã©ã¡ãŒã¿ãåŒæ°ã®ãªã¹ãã«åæ§ã®æ©æ§ããã³ã³ãæšè«ããšããŠå°å ¥ã§ããã°äŸ¿å©ã§ã¯ãªãã ãããã åã®ããã«å¯Ÿããè¿çã¯: Scala (èšèªä»æ§ãšããŠãæã ãŠãŒã¶ãšããŠã) 㯠1ã€ä»¥äžã®å¥èªç¹æšè«ãåãæ±ãã®ã¯é£ãããšæãããè©Šã䟡å€ã®ããããªãã¯ã¯ãããããããªãã ããŒãµãŒãééããå¿ èŠãããã®ã§ãScala ãšããŠåæ³ãªã圢ã(shape) ããŸãå¿ èŠã«ãªããäŸãã°ã scala> List({ 1 2 3 }) res1: List[Int] = List(3) 以äžã¯åæ³ãª Scala ã ãäžæ¬åŒ§ã¯ã³ã³ãã€ã©ã®äžã§ã¯ Block ããŒã¿åãšããŠããŒã¹ããããå¯å€é· Int* ã®åŒæ°ãåãåã£ãŠããã Block ãæž¡ãããå Žåã«ã¯åã¹ããŒãã¡ã³ããå±éãããã¯ããå®çŸ©ããããšã¯å¯èœãããããªãã ã€ãŸããèšèªã®å€æŽãç®æããããã«ãæ§ææšã®æžãæããè©ŠããŠã¿ãããšãææ¡ããããããã㯠{ ... } ã䜿ãããšã§ Rex ãããææããŠãããåé¡ãåé¿ã§ããã scala> :paste // Entering paste mode (ctrl-D to finish) class A { def b(c: Int) = c + 1 } lazy val a = new A lazy val b = 2 lazy val c = 3 // Exiting paste mode, now interpreting.sbt-sticker
以åãã€ãŒããããšãããsbt ã¹ããã«ãŒãèªäœããã
ç«çª: 17æ¥ç®
ç«çª: 17æ¥ç®ãæžãããå§å¯Ÿè±¡ãšçµå¯Ÿè±¡ãç©ãå察æ§ãäœç©ãªã©æœè±¡æ§é ãèŠãŠããã€ã€ãEither ã coproduct ãšããŠäœ¿ãæ¹æ³ã玹ä»ããŸãã
Neovim ãš sbt server
ãã¡ã€ã«ãã¹ã® URI åç §ãžã®ãšã³ã³ãŒãæ¹æ³
æ¬çš¿ã§ã¯å€ããŠæ°ããåé¡ã§ãããã¡ã€ã«ãã¹ã® Uniform Resource Identifier (URI) ãžã®ãšã³ã³ãŒãæ¹æ³ã«ã€ããŠè°è«ããã 2017幎çŸåšãæš©åšããæ å ±ã®å 㯠Matthew Kerwin æ°ã«ãã£ãŠæžããã RFC 8089 - The “file” URI Scheme ã ã RFC 8089 The "file" URI Scheme https://tools.ietf.org/html/rfc8089 Wow, it actually happened. — Matthew Kerwin (@phluid61) February 18, 2017 æªæ¥ã®èªè ã®äººã¯ “file URI scheme RFC” ã§æ€çŽ¢ããŠææ°çãæ¢ããŠã»ãããããã°ã©ãã®äººã¯ RFC ãèªãã§äžããããã®èŠãæžã㯠URI ãšã³ã³ãŒãã£ã³ã°ã«é¢é£ããåé¡ã®èªèãé«ããããã®ãã®ã ããRFC ã®ä»£æ¿ãšã¯ãªããªãã æè¿ file:/foo/bar ãããŒã¹ã§ããªããšãããã©ãããã©ãŒã éã®çžäºä¹ãå ¥ãåé¡ã«åºããããããã¡ã€ã«ãã¹ã URI ãšããŠè¡šçŸããã®ã«é¢é£ããåé¡ã«æ©ãŸãããã®ã¯ãããæåã§ããªãããã¡ã€ã«ã·ã¹ãã ãšããæŠå¿µã¯ 1960幎代ã«é¡ãã1990幎代ãã URL ãããããšãèãããšããã®ã³ã³ã»ã³ãµã¹ãåããŠããªããšããã®ã¯æå€ãªããšã ãããããåé²æ³å°æ°ã®ããã«ãæ·±ãæãäžããããããŒã¿ã亀æãã¯ããããšãMatrixãã®ã»ããã³ãèŠããŠããã®ãããããªãã tl;dr 2020幎11æçŸåšã§ã®å®è£ : import java.io.File import java.net.{ URI, URISyntaxException } import java.util.Locale private val isWindows: Boolean = sys.Sublime Text 3 ãš sbt server
Tech Hub blog ã«ãŠ sbt server ã VS Code ãšäœµçšããŠå®è¡äžã® sbt ã»ãã·ã§ã³ããã³ã³ãã€ã©ãšã©ãŒã衚瀺ã§ããããšããã¢ãããæ¬çš¿ã§ã¯ Sublime Text 3 ã§ããããã£ãŠã¿ãã sbt server ã®ããã® Sublime Text 3 ã®ã»ããã¢ããæ¹æ³ ãŸã㯠Sublime Text 3 ã« tomv564/LSP ãã©ã°ã€ã³ãè¿œå ããã cd ~/Library/Application\ Support/Sublime\ Text\ 3/Packages git clone https://github.com/tomv564/LSP.git ‘Preferences > Package Control > Satisfy Dependencies’ ãå®è¡ãã 次㫠sbt-server-stdio.js ãããŠã³ããŒãã㊠~/bin/ ãããã¯æ®æ®µã¹ã¯ãªãããä¿åããŠããå Žæã«ä¿åãããsbt server ã¯ãPOSIX ã·ã¹ãã ã§ã¯ããã©ã«ã㧠Unix ãã¡ã€ã³ãœã±ãããWindows ã§ã¯ååä»ããã€ããçšãããããšãã£ã¿ã¯åºæ¬çã«æšæºåºå ¥åãæåŸ ããŠããã¿ããã ããã㯠VS Code ãšã¯ã¹ãã³ã·ã§ã³çšã«åãæžããå®è¡äžã®ãœã±ãããçºèŠããŠãæšæºåºå ¥åã§ããã³ããäœã Node ã¹ã¯ãªããã ã ãã㧠Language Server ã¯ã©ã€ã¢ã³ãã®èšå®ãã§ããããã«ãªã£ãã ‘Preferences > Package Settings > LSP > Settings’ ãéããErgodox
sbt 1.1.0-RC1 ã® sbt server ãšçµ±äžã¹ã©ãã·ã¥æ§æ
Lightbend ã®æè¡ç³»ããã° Tech Hub blog ã« sbt 1.1.0-RC1 with sbt server and slash syntax ãšããèšäºãæžããã®ã§ãèš³ããŸããã @eed3si9n è çããããã«ã¡ã¯ãLightbend Tooling team ã«ããã£ãŠ sbt 1.1.0-RC1 ãã¢ããŠã³ã¹ããŸããããã¯ãsbt 1 åã®ãã£ãŒãã£ãŒãªãªãŒã¹ã§ããã€ããªäºææ§ã¯ç¶æãã€ã€æ°æ©èœã«ãã©ãŒã«ã¹ãåœãŠããªãªãŒã¹ãšãªã£ãŠããã sbt 1 㯠Semantic Versioning ã«ããšã¥ããŠãªãªãŒã¹ãããã®ã§ããã©ã°ã€ã³ã¯ sbt 1.x ã·ãªãŒãºäžæ©èœããããšãæåŸ ãããŠããã2017幎12æ14æ¥ãŸã§ã«å€§ããªåé¡ãèŠã€ãããªããã°ã1.1.0-RC1 㯠1.0.0 final çãšãªãäºå®ã ã sbt 1.1 ã®äž»ãªæ°æ©èœã¯çµ±äžã¹ã©ãã·ã¥æ§æ (unified slash syntax) ãš sbt server ã ããããã¯äž¡æ¹ãšãåãå人çã«ãã°ããé¢ãã£ãŠããæ©èœã ããsbt 1.0 ã«ã¯å ¥ããã«å»¶æããããã®ã ããã®ããããã£ãšããããäžã«åºããã®ãã²ãšããå¬ããã ã»ããã£ã³ã°ããŒã®çµ±äžã¹ã©ãã·ã¥æ§æ sbt ã® 1ãŠãŒã¶ãšããŠãsbt ã·ã§ã«ãš build.sbt ã§ã»ããã£ã³ã°ãšã¿ã¹ã¯ããŒã« 2ã€ã®è¡šèšæ¹æ³ãããã®ããsbt ã®åŠç¿ãé£ããããŠããçç±ã ãšé·ãããšæã£ãŠãããã³ãã¥ããã£ãŒã®çãããšè°è«ãéããããã€ãã®ãããã¿ã€ããäœã£ãåŸãsbt 1.1.0-RC1 ããçµ±äžã¹ã©ãã·ã¥æ§æããµããŒããããããšã«ãªã£ãã (sbt 0.13 è¡šèšãåŒãç¶ãåäœããã®ã§ãå¿é ç¡ã) build.sbt ãš sbt shell ã®äž¡æ¹ã«ãããŠãã»ããã£ã³ã°ã¯ã¹ã³ãŒã軞ãã¹ã©ãã·ã¥ã§åããŠä»¥äžã®ããã«æžãããšãã§ãã:sbt 1.0.4 hotfix ãšããã©ãŒãã³ã¹ãŸããã®ä¿®æ£
Lightbend ã®æè¡ç³»ããã° Tech Hub blog ã« sbt 1.0.4 hotfix and the performance fixes ãšããèšäºãæžããã®ã§ãèš³ããŸããã @eed3si9n) è çããããã«ã¡ã¯ãã¢ã¡ãªã«ã«äœãã§ãã人ãã¡ã¯ãè¯ãæè¬ç¥ (Thanksgiving) ã®é£äŒããããã§ããããã é ãããã®èŠªæãåéãéãŸã£ãŠé£äºãäœã£ãããå°åã亀ãã幎äžè¡äºãšããæå³ã§ã¯ãæ¥æ¬ã®æ£æäŒã¿ã«è¿ããã®ããããšæãã ããšãsbt 1.0.4 ããªãªãŒã¹ããããšãã¢ããŠã³ã¹ããŸãããã㯠sbt 1.0.x ã·ãªãŒãºã® hotfix ã§ããã°ä¿®æ£ã«ãã©ãŒã«ã¹ãåœãŠããã€ããªäºæãªãªãŒã¹ã ã sbt 1 㯠Semantic Versioning ã«ããšã¥ããŠãªãªãŒã¹ãããã®ã§ããã©ã°ã€ã³ã¯ sbt 1.x ã·ãªãŒãºäžæ©èœããããšãæåŸ ãããŠããã ããã©ãŒãã³ã¹ãã°ã¬ã®ä¿®æ£ æè¬ç¥ãšããããšã§ããäžè©±ã«ãªã£ãŠãã人ãã¡ã®äºãèããããã ãã©ãå㯠Scala ã®ããŒãªã³ã°ãšã³ã·ã¹ãã ã«ã³ã³ããªãã¥ãŒãããŠãããŠããçããã«æè¬ããŠãããããã¯ãsbt ãžã®ã³ãŒãã®ã³ã³ããªãã¥ãŒãã ããããªããèããããããããã° (Haoyi ããã® So, what’s wrong with SBT? ãªã©)ãããŒã¯ (Jeff ããã® Beyond the Build Tool ãªã©)ãããã¥ã¡ã³ããŒã·ã§ã³ãIDE/ãšãã£ã¿çµ±åãã代æ¿ãã«ãããŒã« (Chris ããã® cbt ãªã©) ãå«ããŠãããå·ç¬çã«ãsbt ã¯ãã¡ãã£ãŠèšã£ãŠçµããã«ããããããªãããã®äººãã¡ã¯è ããŸãã£ãŠãsbt ãã®ãã®ãçŽãããã代æ¿æ¡ãèãåºããŠããããã ã sbt 1 ã«é¢é£ããŠããã©ãŒãã³ã¹ã®ãã°ã¬ãå ±åãããŠããããäœäººãã®äººãé£ã³èŸŒãã§åãçµãã§ãããŠããã Scala Center ã® Jorge ãã (@jvican) ã¯æ§èœåäžé¢ä¿ãè²ã ãã£ãŠããŠãsbt 1.sbt 1 ãã€ã°ã¬ãŒã·ã§ã³ç¶æ³å ±åãš 1.0.2 hotfix
Lightbend ã®æè¡ç³»ããã° Tech Hub blog ã« sbt 1 migration status and 1.0.2 hotfix ãšããèšäºæžããã®ã§ãèš³ããŸããã @eed3si9n è ããã«ã¡ã¯ãsbt 1.0.0 ãªãªãŒã¹åŸã«äœããã£ããã®ã¬ããŒãã ã åãã¡ã® sbt 1 ãžã®ãã€ã°ã¬ãŒã·ã§ã³ã®ãã©ã³ã¯ä»¥äžã®ããã«ãªã£ãŠãã: sbt 1.0.0 ããªãªãŒã¹ããã ã³ãã¥ããã£ãŒã®çãããšäžç·ã«ãã©ã°ã€ã³ãå šéšç§»è¡ãããã ãã°ãä¿®æ£ããã ã©ã€ãã©ãªã®ãã«ãã移è¡ãããã ãã©ã°ã€ã³ã®ç§»è¡ ãã©ã°ã€ã³ã®ç§»æ€ã®é²æã远跡ããããã«ãç¥ãããŠãããã©ã°ã€ã³ã®äžèŠ§ãäœã£ãŠ GitHub star é ã«ãœãŒããããããã¯ãããã¥ã¡ã³ããŒã·ã§ã³ãã¹ã¯ãªãŒã³ã¹ã¯ã¬ã€ãã³ã°ããã®ãå ã«ãæåã§ãè²ã è¿œå ããŠãããããã«æžããã 258åã®ãã©ã°ã€ã³ã¯æ°ããã®ãå€ãã®ãæ··ãã£ãŠããŠãsbt ãã©ã°ã€ã³ãšã³ã·ã¹ãã ã®è£Ÿéã®åºããããåããã æ¬æ¥ä»ã§ã¯ãäžèŠ§ã®ãã¡ 70åã®ãã©ã°ã€ã³ãããªãªãŒã¹æžã¿ããšãªã£ãŠããŠãä»ã«ããã©ã°ã€ã³äœè ãã¢ã¯ãã£ããªãŠãŒã¶ã«ãã£ãŠç§»è¡éäžã®æ§ã ãªã¹ããŒãžã«ãããã®ãè²ã ãããäžã§ãåç°ãã (xuwei-k) ã¯ãè€æ°ç®æã«åæã«ååšãããã®ãããªå¢ãã§å€ãã®ãã©ã°ã€ã³ã®ç§»æ€äœæ¥ãè¡ã£ãŠããã以äžã¯åãèŠã€ããç¯å²: https://github.com/scalikejdbc/scalikejdbc/pull/714 https://github.com/thesamet/sbt-protoc/pull/30 https://github.com/sbt/sbt-unidoc/pull/42 https://github.com/ktoso/sbt-jmh/pull/121 https://github.com/xuwei-k/sbt-class-diagram/ https://github.com/rtimush/sbt-updates/pull/75 https://github.com/sbt/sbt-dirty-money/pull/12 https://github.com/sbt/sbt-site/pull/107 https://github.com/sbt/sbt-ghpages/releases/tag/v0.6.2 https://github.com/sbt/sbt-multi-jvm/pull/34 https://github.com/sbt/sbt-testng/issues/19 https://github.com/sbt/sbt-onejar/pull/34 ããããšãããããŸã! sbt hotfix 1.0.2 ããšãsbt 1.0.2 ããªãªãŒã¹ããããšãã¢ããŠã³ã¹ããŸãããã㯠sbt 1.0.x ã·ãªãŒãºã® hotfix ã§ããã°ä¿®æ£ã«ãã©ãŒã«ã¹ãåœãŠããã€ããªäºæãªãªãŒã¹ã ã ã¿ãŒããã«ã® echo åé¡ã®ä¿®æ£ã #3507 by @kczulko deliver ã¿ã¹ã¯ã®ä¿®æ£ãããã³ååçã«æ¹åãã makeIvyXml ãšããã¿ã¹ã¯ã®è¿œå ã #3487 by @cunei å»æ¢å§åãåºãŠãã OkUrlFactory ã®ãªãã¬ãŒã¹ãšã³ãã¯ã·ã§ã³ã®ãªãŒã¯ã®ä¿®æ£ã lm#164 by @dpratt ã»ããã£ã³ã°ããŒã«å¯Ÿã㊠DSL ãã§ãã«ãŒãåœéœæ§ãåºããŠããããšã®åä¿®æ£ã #3513 by @dwijnand run ãš bgRun ãã¯ã©ã¹ãã¹ã®ãã£ã¬ã¯ããªå ã®å€æŽãæ€ç¥ããŠããªãã£ãããšã®ä¿®æ£ã #3517 by @dwijnand ++ ãä¿®æ£ã㊠crossScalaVersion ãå€æŽãããªãããã«ããã #3495/#3526 by @dwijnand sbt server ãã¡ãã»ãŒãžãéãã®ãä¿®æ£ããã #3523 by @guillaumebort consoleProject ã®åä¿®æ£ã zinc#386 by @dwijnand sbt.sbt ãçšãã Scala language server
sbt 1.0 ããªãªãŒã¹ãããŠããããäžã¶æã«ãªãããã£ãšå°ãèœã¡çã㊠sbt server ã®ããšãèãããããã«ãªã£ããé±æ«ã®æéããããŠæè¿ Scala language server (èšèªãµãŒããŒ) ã sbt server äžã«ããã¯ããŠããã language server ã£ãŠäœ? language server ãšã¯ãVisual Studio Codeã Eclipse Cheã Sublime Text 3 ãšãã£ããšãã£ã¿ã«å¯Ÿã㊠Language Server Protocol ãéããŠäœããã®èšèªãµãŒãã¹ãæäŸããããã°ã©ã ã®ããšã ãæŒç®ã®äžäŸãæãããš textDocument/didOpen ã¯ãšãã£ã¿å ã§ãœãŒã¹ãã¡ã€ã«ãéãããããšããµãŒããŒã«äŒããã ããã¯è³¢ãã¢ã€ãã£ã¢ã§ããšãã£ã¿äœè ã (åŸæ¥ã® IDE ã®ããã«) åäžã®èšèªã«ã¹ã£ããã«ãªãããšãã解æŸãããŸãåæã«èšèªãããã€ããŒã¯ãæŒç®ãã«å°å¿µããã°ããããã«ãªããJSON ããŒã¹ã®ãããã³ã«ãªã®ã§ãweb ã¢ããªã®ããã¯ãšã³ããæžããŠããæèŠã«è¿ããããäžã€å¬ããã®ã¯ãäžåºŠã«å šãŠã®æ©èœãæäŸããªããŠãããããšã ã Scala language server ã¯ãIulian Dragosããã«ãã dragos-vscode-scala ãšããå®è£ ãæ¢ã«ãã£ãŠããã㯠ENSIME ãããã¯ãšã³ããšããŠäœ¿ããåã¯ãã ããã Sublime ãš sbt ã ãã§ã³ãŒããæžããŠããã®ã§ãäžæãããŠçŽæ¥ Zinc ã®ã€ãã³ãã䜿ãã°ããããããªãããšæã£ãã sbt server sbt server ã®èãæ¹ãšããŠã¯ããŠãŒã¶ã®æŒç®ã¯ã³ãã³ããšã¯ãšãªãšããŠè¡šçŸã§ããã³ã³ãœãŒã«ã«è¡šç€ºãããæ§ã ãªåºåã¯ã€ãã³ããšããŠè¡šçŸã§ãããšãããã®ã (sbt server ãªããŒããåç §)ãå€ãã®å Žåããã«ããŠãŒã¶ã䟡å€ãèŠåºãã®ã¯ã¿ã¹ã¯ã®æ»ãå€ã§ã¯ãªããã³ã³ãã€ã©ã®èŠåããã¹ãã®åºåãšãã£ãã³ã³ãã³ãã ã ãã®èšèšã¯ãlanguage server protocol ã«ããããããããŠããŠã圌ãã¯ã¹ããªãŒã ãããã€ãã³ãã«å¯ŸããŠãéç¥ã (notification) ãšããçšèªã䜿ã£ãŠãããPersistent Versioning
æ¬çš¿ã§ã¯ãåã Persistent Versioning ãšåŒãã§ãããŒãžã§ã³æ¹æ³ã玹ä»ãããæ¬çš¿äžã«åºãŠããã¢ã€ãã£ã¢ã®å€ãã¯æ°ããããªããã°åãèæ¡ãããã®ã§ããªããæ¢ã«ååããããªãã°æ¯éæããŠã»ããã 2015幎㫠Jake Wharton (@JakeWharton) ããã ã¡ãžã£ãŒããŒãžã§ã³ã¢ããããŒãã®ããã® Java çžäºäºææ¹é (Java Interoperability Policy for Major Version Updates) ãšããããã°èšäºãæžãã: A new policy from @jessewilson and I for the libraries we work on to ensure major version updates are interoperable: https://t.co/zKqYRwrXmq — Jake Wharton (@JakeWharton) December 11, 2015 Java ããã±ãŒãžåã«ããŒãžã§ã³çªå·ãå«ãããã«ååãå€ããã ããã«ãã£ãŠãéæ¥çäŸåã©ã€ãã©ãªãè€æ°ã®ããŒãžã§ã³ãæã€å Žåã® API äºææ§ã®åé¡ãå³æã«è§£æ±ºãããåãã¯ã©ã¹ãã¹ããåã ã®ã¯ã©ã¹ãçžäºå¹²æžããããšãªãèªã¿èŸŒãããšãã§ããã(äžç¥) (ã¡ãžã£ãŒããŒãžã§ã³ã 0 ã 1 ã®ã©ã€ãã©ãªã¯ãã®æ¹éãé£ã°ããŠãã¡ãžã£ãŒããŒãžã§ã³ã 2 ã«äžãã£ãŠããå§ããŠãããã) Maven 座æšã® group ID ã®äžéšãšããŠã©ã€ãã©ãªåãå«ãŸããããšã ããšãåäžã®ã¢ãŒãã£ãã¡ã¯ãããæããªããããžã§ã¯ãã§ããgroup ID ã«ãããžã§ã¯ãåãå ¥ããŠãããšå°æ¥çã«è€æ°ã®ã¢ãŒãã£ãã¡ã¯ããæã£ããšãã«ã«ãŒãã®åå空éãæ£ããããªããŠããããæåããè€æ°ã®ã¢ãŒãã£ãã¡ã¯ããæã€å Žåã¯ãMaven Central ãªã©ã«ãããŠã¢ãŒãã£ãã¡ã¯ãããŸãšããæ¹æ³ãšãªãã ….sbt 1.0.0 ã¯ãããŸãã
sbt 1.0.0 Lightbend ã®æè¡ç³»ããã° Tech Hub blog ã« sbt 1.0.0 is now available ãšããèšäºãæžããã®ã§ãèš³ããŸããã 詳现㯠sbt 1.0.0 ãªãªãŒã¹ããŒããèŠãŠãã ããã Eugene Yokota (@eed3si9n) 2017幎8æ11æ¥ è Lightbend瀟 Tooling ããŒã ã«ä»£ãã£ãŠ sbt 1.0.0 ã®ãªãªãŒã¹ãçºè¡šããŸã! Mark Harrah ããã 2008 幎ã«æåã«ãªãªãŒã¹ãã sbt ããæ°ãããšãsbt 1 ã¯äœå¹ŽããããŠéçºããã倧ããªéçšæšã§ãããšèšãããçŽè¿ã®ã¡ãžã£ãŒãªãªãŒã¹ã® sbt 0.13.x ããæåã®ãªãªãŒã¹ã 2013幎8æãªã®ã§ 4幎éç¶ããããšã«ãªãã Lightbend瀟 Tooling ããŒã 㯠0.13 ã®ã¡ã³ããšäžŠè¡ã㊠sbt 1 ãžåããŠã®é²åãç¶ç¶ããŠããããã®æéäžã« sbt newãAutoPluginãcached resolution ãªã©ãè¿œå ãããããŸããã³ãã¥ããã£ã«ãã£ãŠäœçŸãã®ãã©ã°ã€ã³ãæžãããsbt ã®èœåã¯ãã ã®ã·ã³ãã«ãã«ãããŒã«ã®èœåãæ¡åŒµãããã®ãšãªã£ãŠãã£ãã äž»ãªæ©èœ sbt 1 㯠Scala 2.12 ãæ¡çšããããããã«ãå ã§ãã£ãšã¢ãã³ãª Scala ã䜿ããããã«ãªã£ã! ããã«ãã£ãŠ 2.10 ããµããŒãããããã¬ãã·ã£ãŒã軜æžããã®ã§ããã©ã°ã€ã³äœè ãã©ã€ãã©ãªäœè ã«ãšã£ãŠãæå ±ã ã sbt 1 㯠Zinc 1 ãšãããã¯ã©ã¹ããŒã¹ã® name hashing ã䜿ãé«éãªã€ã³ã¯ãªã¡ã³ã¿ã« (å·®å) ã³ã³ãã€ã©ãå°å ¥ãããScala ã®ã€ã³ã¯ãªã¡ã³ã¿ã«ã»ã³ã³ãã€ã©ãç¬ãå ãã«ããã«ã¯ããŸãã«ãéèŠã ãšæã£ãã®ã§ãZinc 1 㯠sbt/zinc ãšããå¥ã®ãªããžããªã«åããããLightbend 瀟㚠Scala Center ã®å ±åã§ç®¡çãããŠããã sbt 1 ã¯ããã©ã«ã㧠Gigahorse HTTP ã¯ã©ã€ã¢ã³ã (å éšã¯ Square OkHttp) ã䜿ã£ãŠã¢ãŒãã£ãã¡ã¯ãã䞊åããŠã³ããŒããããLibrary Mangement API ãè¿œå ãããå°æ¥ã® 1.Travis-CI ããã® (website ã®) èªåå ¬é
GitHub Pages 㯠OSS ãããžã§ã¯ãã®ããã¥ã¡ã³ãããã¹ãã£ã³ã°ããã®ã«äŸ¿å©ã ã ããã§ã¯ Travis CI ã䜿ã£ãŠ pull request ã® merge æã«èªåãããã€ããæ¹æ³ã説æããã 1. æ°ãã RSA ããŒãé©åœãªãã£ã¬ã¯ããªå ã§çæããã ãããžã§ã¯ãå€ã«ãŸãã¯ãã£ã¬ã¯ããªãäœãã ããŒã®åå㯠deploy_yourproject_rsa ãªã©ãšã€ããŠãä»ã®ããŒãšåºå¥ã§ããããã«ããã $ mkdir keys $ cd keys $ ssh-keygen -t rsa -b 4096 -C "yours@example.com" Generating public/private rsa key pair. Enter file in which to save the key (/Users/xxx/.ssh/id_rsa): deploy_website_rsa Enter passphrase (empty for no passphrase): ãã¹ãã¬ãŒãºã¯ç©ºã®ãŸãŸã«ããã 2. ãŠã§ããµã€ããããžã§ã¯ãã«ç§»åããã ãããžã§ã¯ãã«ç§»åããŠããã©ã³ããç«ãŠãŠã.travis ãšããååã®ãã£ã¬ã¯ããªãäœãã $ cd ../website $ mkdir .travis 3. travis ãŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ããŠãç§å¯éµãæå·åããã travis encrypt-file --repo foo/website .Atreus ã®ããã®ãã¬ã€
åå Atreus ã®çµã¿ç«ãŠã«ã€ããŠæžãããšãã«ãããŒããŒãã®é 眮ã«ã€ããŠã¡ãã£ãšæžããã ããã«ããšãã¬ã€ã¢ãŠããå æããŠæ§ã ãªã·ã³ãã«ã®å ŽæãæèšããŠãæ®ã£ãŠããåé¡ãäžã€ãã£ãŠãããã¯çœ®ãå Žæã ãã©ããããããšèªåã®éã«çœ®ããšç»é¢ãé ãããæ°ãããã ãã®åé¡ã®è§£æ±ºæ¹æ³ãšããŠãMacBook Pro ã®ããŒããŒãäžã« Atreus ãé 眮ã§ããããã«ãã¬ã€ãäœã£ãŠã¿ãã Great post; thanks. For the positioning, have you tried disabling the internal keyboard and placing the Atreus on top of the laptop? — technomancy (@technomancy) June 19, 2017 ãã£ãããšãªã£ãã®ã¯ãAtreus ã®äœè ã® @technomancy ããã« Atreus ã MacBook Pro ã®ããŒããŒãäžã«çŽæ¥ä¹ããŠã¿ãŠã¯ã©ããã®æèšããã ã圌㮠Thinkpad ã¯äžå€«ãªã®ãããããªãããåã®æ°åã®ã©ãããããã®äžã«çŽä¹ããªããŠåè«ãããªãã ææ 1 “1/4 in x 6 in x 48 in” Oak hobby board ($8.52) 1 3M Garnet Sandpaper Med 100 grit ($3.97) 1 Sandpaper 200 grit 1 Small Parts General Purpose Rubber, 70A Durometer, Smooth Finish, Adhesive Backed, 0.Atreus
ãã°ããåã«ãããã§è²·ã£ã Atreus ãæšæ¥ã®å€äœãçµããã詳现ã¯ãããªæã: Matias Quiet Click ã¹ã€ããã®ãªãã·ã§ã³ãéžãã ïŒã¹ã©ã€ããŒã¯ã°ã¬ãŒïŒãã¯ãªãã¯ãšããååã¯ä»ããŠãããã¯ãªãã¯æã¯ç¡ãããšã«æ³šæã 修食ããŒã«ã¯ Matias Quiet Linear ã¹ã€ããã䜿çšïŒã¹ã©ã€ããŒã¯èµ€ïŒã ãããã ortholinear ç³»ã®æ Œåç¶ã®ãã¹ããªããã¬ã€ã¢ãŠãã§ã42 ã®ããŒãããã ããã¬ããŒæã®åæ¿ã ææ ãããã«ã¯ Arteus ããŒããŒããçµã¿ç«ãŠãã®ã«å¿ èŠãªãã®ã¯ã»ãŒããã£ãŠãããèªåã§çšæããå¿ èŠãããã®ã¯ã©ãã«ãŒãåç°ããŠããã³ãããšããããŒã ã Minwax Clear Aerosol Lacquer, Clear Gloss Hakko Digital FX888D & CHP170 bundle, includes Soldering Station & CHP170 cutter Hakko T18-C2 - T18 Series Soldering Tip for Hakko FX-888/FX-8801 DMiotech 0.8mm 50G 63/37 Rosin Core Tin Lead Soldering Solder Wire ããã§æ³šæããŠã»ããã®ã¯ Matias瀟ã®ã¹ã€ããã¯ã80幎代ãšã 90幎代㫠Apple Standard Keyboard ãªã©ã§æ¡çšãããæ¥æ¬ã®ã¢ã«ãã¹é»æ°ã® Alps SKCM ã®ã¯ããŒã³ã§ããããšã ããã®ãããCherry MX ã¹ã€ããçšã®ãããããªããŒãã£ããã¯äžå䜿ãããšãã§ããªããããããããã人㯠Cherry äºæã®ããŒã·ã£ã«ãããã泚æããå¿ èŠããããGigahorse 0.3.0
Gigahorse 0.3.0 ããªãªãŒã¹ãããGigahorse ãäœãã¯ããã¥ã¡ã³ããŒã·ã§ã³ãã¿ãŠã»ããã
OkHttp ãµããŒã
0.3.0 㯠Square OkHttp ãµããŒããè¿œå ããã Gigahorse-OkHttp 㯠Scala 2.10, 2.11, 2.12 åãã«ã¯ãã¹ãã«ããããŠããã
JavaDoc ã«ãããšãOkHttpClient
ã®ã€ã³ã¹ã¿ã³ã¹ã¯ close ããªããŠããããããã
scala> import gigahorse._, support.okhttp.Gigahorse
import gigahorse._
import support.okhttp.Gigahorse
scala> import scala.concurrent._, duration._
import scala.concurrent._
import duration._
scala> val http = Gigahorse.http(Gigahorse.config) // don't have to close
http: gigahorse.HttpClient = gigahorse.support.okhttp.OkhClient@23b48158
sbt 1.0 ããŒãããããš beta-1
Lightbend ã®æè¡ç³»ããã° Tech Hub blog ã« sbt 1.0 roadmap and beta-1 ãšããèšäºæžããã®ã§ãèš³ããŸããã @eed3si9n è sbt 1.0 ã¯ããããæ°å¹Žéå¶äœäžãšããç¶æ ãç¶ããŠããŠãã³ãã¥ããã£ãŒã®äžã«ã¯ãããåºãªãã®ã§ã¯ããšããæç掟ãããŠããããããªãããã®ãããªæžå¿µã¯ä»¥äžã®è«ç¹ã«ãã£ãŠææã§ãããšæã£ãŠãã: æ¬æ¥ 1.0 ã«äºå®ããŠãã (AutoPlugin ã Dotty ãµããŒãã®ãããª) æ©èœã¯ãã§ã«ãã¯ãããžãŒã»ãã¬ãã¥ãŒãšã㊠0.13 ç³»ã«ãŠãªãªãŒã¹ãããŠããã 1.0 ã«äºå®ãããŠããæ©èœã®ãã¡ãããæ欲çãªãã®ã¯å»¶æãŸãã¯æ©èœãçž®å°ã㊠1.0 ãæ©æã«å®çŸã§ããããã«ãããïŒãã£ãã·ã¥åãããã³ã³ãã€ã«ã Ivy ã®çœ®ãæããªã©ïŒ sbt 1.0 ã¯ããŒããŒãŠã§ã¢ã§ã¯ãªããææ°ã ãš 1.0.0-M5 ãªã©ãã€ã«ã¹ããŒã³ãåºãŠããŠãä»ããè©Šãããšãã§ããã ãã®ããã2017幎å€ãŸã§ã« sbt 1.0 ãã©ã³ãå®çŸå¯èœã ãšæã£ãŠããã ãã€ã©ã€ã sbt 1.0 ã¯ãåããæ°å¹Žéç¶ãå®å®çã§ããããšãšãsbt 0.13 ç³»ããã®ã¹ã ãŒãºãªç§»è¡ãå¯èœã§ããããšãç®æšãšãããsbt 0.12 ã¹ã¿ã€ã«ã®æŒç®åã Build ãã¬ã€ãã¯åé€ããããæ¬æ¥ 1.0 ã«äºå®ããŠããæ©èœã¯ãã§ã«ãã¯ãããžãŒã»ãã¬ãã¥ãŒãšã㊠0.13.x ã·ãªãŒãºã«ãŠãªãªãŒã¹ãããŠããã sbt 1.0 ã«ãããå©ç¹ããŸãšãããš: ãã«ãå®çŸ©ããã©ã°ã€ã³ã« Scala 2.12 ã䜿ããããã«ãªã 倧èŠæš¡ã³ãŒãããŒã¹ã«ãããŠé«éåãèŠèŸŒãŸããæ°ã€ã³ã¯ãªã¡ã³ã¿ã«ã³ã³ãã€ã©ãZinc 1 ä»åŸã® IDE çµ±åã®æ¹åã®äžå°ãšãªã sbt server ã¿ã€ãã³ã° sbt 1.sbt-sidedish ã䜿ã£ãã¢ããªã®ããŠã³ããŒããšå®è¡
sbt ãã©ã°ã€ã³ãã JAR ãããŠã³ããŒãããŠãããå®è¡ããããšããèŠæãåºãŠããŠãã æè¿ã ãš Brooklyn ã§ã® nescala 㧠Shane Delmore (@shanedelmore) ããã«èãããã ã¢ã³ã«ã³ãã¡ã¬ã³ã¹ã®ã»ãã·ã§ã³ã§ãã¢ã£ãœããã®ããã£ã€ãã§äœã£ããã©ãã家ã«åž°ã£ãŠãããè²ã ããã£ãã®ã§ããã«å ±åããã sbt-sidedish sbt-sidedish ã¯ã¢ããªããµã€ãã¡ãã¥ãŒçã«èœãšããŠããŠå®è¡ããããã®ãã©ã°ã€ã³äœè ã®ããã®ããŒã«ãããã ããããã®ãã®ã¯ç¹ã«ãã©ã°ã€ã³ãå®çŸ©ããªãã rewritedemoãã³ãã³ãã©ã€ã³ã¢ã㪠ãµã€ãã§èµ°ããããã¢ããªãäœãããã㯠Scala 2.11 ã 2.12 ã䜿ã£ãŠãããã Scalafix ã䜿ã£ãŠ import æãè¿œå ãããã¢ã¢ããªãæžãããScalafix 㯠Scala ã³ãŒãã®æžãæãããŒã«ãšã©ã€ãã©ãªã§ scala.meta ã䜿ã£ãŠããã詳现㯠Scalafix ã®ããã¥ã¡ã³ããŒã·ã§ã³ãšãœãŒã¹ãåç §ã sbt-rewritedemoãsbt ãã©ã°ã€ã³ 次ã«ãrewritedemo ã¢ããªããããµããããžã§ã¯ãçžæã«å®è¡ããŠå¥ã®ãµããããžã§ã¯ããå°åºããããšããã sbt-sidedish ã䜿ã£ãŠä»¥äžã®ãããªãã©ã°ã€ã³ãæžããã package sbtrewritedemo import sbt._ import Keys._ import sbtsidedish.Sidedish object RewriteDemoPlugin extends AutoPlugin { override def requires = sbt.plugins.JvmPlugin object autoImport extends RewriteDemoKeys import autoImport._ val sidedish = Sidedish("sbtrewritedemo-metatool", file("sbtrewritedemo-metatool"), // scalaVersion "2.ç«çª: 16æ¥ç®
ç«çª: 16æ¥ç®æžããã
sbt 0.13.15 ãªãªãŒã¹ããŒã
äºææ§ã«åœ±é¿ã®ããæ°æ©èœãå€æŽç¹ããã°ä¿®æ£ sbt 0.13.14 㯠Maven ã®ããŒãžã§ã³ã¬ã³ãžãã§ããéãåãé€ãã詳现ã¯åŸã»ã©ã æ¹åç¹ äºåãšã㊠JDK 9 ãšã®äºææ§ãè¿œå ããããã®æ©èœã¯ 0.13.14 以éã®ãã€ãã£ãããã±ãŒãžãå¿ èŠãšããã #2951/143 by @retronym ãªãã©ã€ã³ã»ã€ã³ã¹ããŒã«çšã« “local-preloaded” ã¬ããžããªãè¿œå ããã詳现ã¯åŸã»ã©ã ãŠã©ãŒãã³ã°ã¢ããããã JVM ã«çãŸãããã«ããããã¢ãŒã㧠sbt ãå®è¡ãããš [ENTER] ãæŒã㊠shell ã«åãæ¿ããããéç¥ããããã«ããã #2987/#2996 by @dwijnand .taskValue ã䜿ããã« sourceGenerators += Def.task { ... } ãšæžããããã«ããããã« Append ã®ã€ã³ã¹ã¿ã³ã¹ãè¿œå ããã #2943 by @eed3si9n JUnitXmlTestsListener ãçæãã XML ãç¡èŠãã¹ããããä¿çç¶æ ã®ãã¹ãã«ãããããã©ã°ãç«ãŠãããã«ããã #2198/#2854 by @ashleymercer ãããžã§ã¯ãã Dotty ã䜿ã£ãŠã³ã³ãã€ã«ããŠãããšæ€ç¥ããå Žåã«ãèªåçã« scalaCompilerBridgeSource ãèšå®ããŠãDotty ãããžã§ã¯ãã®ãã€ã©ãŒãã¬ãŒãã軜æžããããã«ããããã ããsbt ã«ããã Dotty ãµããŒãã¯çŸåšå®éšçã§ãããæ£åŒã«ã¯ãµããŒããããŠããªãããšã«æ³šæã詳现㯠dotty.epfl.ch åç §ã #2902 by @smarter sbt new ã®ã¬ãã¡ã¬ã³ã¹å®è£ ã§ãã Giter8 ã 0.Contrabandãcase class ã®ä»£æ¿æ¡
ãã°ããèããŠããçåãããã€ããã: ããŒã¿ã API ã¯ã©ãæžãããã¹ãã ããã? ãã®ããŒã¿ã¯ Java ã Scala ã§ã¯ã©ãè¡šçŸãããã¹ãã? ãã®ããŒã¿ã¯ JSON ãªã©ã®ã¯ã€ã€ãŒãã©ãŒãããã«ã©ãå€æããããšãã§ããã? ãã®ããŒã¿ãã©ããã£ãŠãã€ããªäºææ§ã厩ããã«é²åãããããšãã§ããã? case class ã®éç Scala ã§ããŒã¿åãè¡šçŸããæ £çšçãªæ¹æ³ã¯ sealed trait ãš case class ã ãããã€ããªäºææ§ãä¿ã£ããŸãŸãã£ãŒã«ããè¿œå ããããšãã§ããªããç°¡å㪠Greeting ãšãã case class ãäŸã«åã£ãŠããããã©ã®ãããªã¯ã©ã¹ãšã³ã³ãããªã³ãªããžã§ã¯ãã«å±éããããèå¯ããŠã¿ãã: package com.example class Greeting(name: String) { override def equals(o: Any): Boolean = ??? override def hashCode: Int = ??? override def toString: String = ??? def copy(name: String = name): Greeting = ??? } object Greeting { def apply(name: String): Greeting = ?sbt 0.13.xãsbt ãµãŒããŒãsbt 1.0 ã®åå
ååã® Dale Wijnand (@dwijnand) ãšäžç·ã« ScalaSphere ã§ããŒã¯ãããŠãããThe state of sbt 0.13, sbt server, and sbt 1.0 (ScalaSphere ver):
Gigahorse 0.2.0
Gigahorse 0.2.0 ããªãªãŒã¹ãããæ°æ©èœã¯ 2ã€ã®ããã¯ãšã³ããéžã¹ãããã«ãªã£ãããšã ã @alexdupre ããã AHC 1.9 ãã Netty 4 ããŒã¹ã® AHC 2.0 ãžã®ç§»è¡ãã³ã³ããªãã¥ãŒãããŠãããã#12
ããã«ã#15 ã§åãå®éšç㪠Akka HTTP ãµããŒããè¿œå ããã
詳ãã㯠Gigahorse ããã¥ã¡ã³ããåç §ããŠã»ããã
Scala 2.12.0 ãªãªãŒã¹ããŒã
æšæ¥ãªãªãŒã¹ãããã°ããã® Scala 2.12.0 ã®ãªãªãŒã¹ããŒãã翻蚳ããŸããã Lightbend 瀟 Scala ããŒã ã®ã³ã³ãã€ã©éãæãåãããããã¢ãªå 容ã«ãªã£ãŠããŸãã
Scala 2.12.0 ããªãªãŒã¹ãããŸãã!
Scala 2.12 ã³ã³ãã€ã©ã¯ Java 8 ãã䜿ããããã«ãªã£ãæ°ãã VM æ©èœãå©çšããããã«ãå®å šãªãªãŒããŒããŒã«ãè¡ãããã
- ãã¬ã€ãã¯ãããã©ã«ãã¡ãœããä»ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã«çŽã«ã³ã³ãã€ã«ããããããã¯ãã€ããªäºææ§ãš Java ãšã®çžäºéçšæ§ãåäžãããã
- Scala ãš Java 8 ã®çžäºéçš (interop) ãšããç¹ã§ã¯ãé¢æ°ãåãåãã¡ãœãããäž¡æ¹åãããã©ã ãæ§æã§åŒã³åºããããã«ãªã£ãã®ã§é¢æ°åãªã³ãŒãã«ãããŠãæ¹åãããScala æšæºã©ã€ãã©ãªã®
FunctionN
ã¯ã©ã¹çŸ€ã¯ãSingle Abstract Method (SAM) åãšãªããå šãŠã® SAMåã¯ãåæ€æ»ããã³ãŒãçæã«ããããŸã§çµ±äžçã«åãæ±ããã (ã¯ã©ã¹ãã¡ã€ã«ã¯çæãããã代ããã«invokedynamic
ãçšãããã)ã
gigahorse-github 0.1.0
gigahorse-github 0.1.0 ããªãªãŒã¹ãããããã¯ãGithub API v3 ã®ããã® Gigahorse ãã©ã°ã€ã³ã ã
Gigahorse 0.1.0
æŽæ°: Gigahorse 0.1.1ãã䜿ã£ãŠãã ããã
Gigahorse 0.1.0 ããªãªãŒã¹ããããã㯠Scala ã®ããã® HTTP ã¯ã©ã€ã¢ã³ãã§ãå éšã«Async Http Client ã䜿ã£ãŠããã詳ãã㯠Gigahorse ããã¥ã¡ã³ããæžããã®ã§ããããåç §ããŠã»ãããã©ã€ãã©ãªãã©ãããæããªã®ããäŸã§ã¿ããšãããªæãã ã
scala> import gigahorse._
scala> import scala.concurrent._, duration._
scala> Gigahorse.withHttp(Gigahorse.config) { http =>
val r = Gigahorse.url("http://api.duckduckgo.com").get.
addQueryString(
"q" -> "1 + 1",
"format" -> "json"
)
val f = http.run(r, Gigahorse.asString andThen {_.take(60)})
Await.result(f, 120.seconds)
}
registry and reference ãã¿ãŒã³
ããæè¿èããŠããããã¿ãŒã³ãããã£ãŠããªããžã§ã¯ããæ°žç¶å/ã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ããã¿ãããªç¶æ³ã§åºãŠããã åé¡æèµ·ãšããŠã以äžã®ãã㪠case class ãèããŠã¿ãŠã»ãã: scala> case class User(name: String, parents: List[User]) defined class User scala> val alice = User("Alice", Nil) alice: User = User(Alice,List()) scala> val bob = User("Bob", alice :: Nil) bob: User = User(Bob,List(User(Alice,List()))) scala> val charles = User("Charles", bob :: Nil) charles: User = User(Charles,List(User(Bob,List(User(Alice,List()))))) scala> val users = List(alice, bob, charles) users: List[User] = List(User(Alice,List()), User(Bob,List(User(Alice,List()))), User(Charles,List(User(Bob,List(User(Alice,List())))))) 泚ç®ããŠã»ããã®ã¯ parents ãšããä»ã®ãŠãŒã¶ãåç §ãããªã¹ããä¿æããŠãããšã ã 次ã«ãusers ãªã¹ãã JSON ã«å€æããããšããã [{ "name": "Alice", "parents": [] }, { "name": "Bob", "parents": [{ "name": "Alice", "parents": [] }] }, { "name": "Charles", "parents": [{ "name": "Bob", "parents": [{ "name": "Alice", "parents": [] }] }] }] ãã®æ¹æ³ã ãšè€æ°ã®åé¡ç¹ãããããŸããJSON ã®è¡šèšãšããŠå¹çãæªãã JSON ããŒã¿ãšããŠæåŸ ãããèªç¶ãªæãã§ã¯ãªãããšã ã次ã«ãããã case class ã«å€æããªããããšãã«ãªããžã§ã¯ãã®ã°ã©ãããšã€ã³ã¹ã¿ã³ã¹åããå¿ èŠããã£ãŠããããéå¹çã ããæãŸãããªãç¶æ³ãå€ããšæããsjson-new ãšã¢ãºã«ãã³ã®å人
æ¬çš¿ã¯ sjson-new ã«é¢ãã第3éšã ãããŒã1ãããŒã2ãæ¯éèªãã§ã¿ãŠã»ããã sbt ã®ã³ãŒãå ã«ã¯ããŒã¿æ°žç¶åãæ°çŸã¡ã¬ãã€ãã®ãªãŒããŒã«éããŠããéšåãããã€ããã£ãŠãç¹ã«ãã·ã³ã« SSD ãç©ãŸããŠããªãå Žåã¯æ§èœããã«ããã¯ã«ãªãçããããããããªãããšæã£ãŠããã åœç¶ãæåã«é£ã³ã€ããã®ã¯ Google Protocol Buffers ã®ãšã³ã³ãŒãã£ã³ã°ãåèã«ç¬èªã®ãã€ããªãã©ãŒããããå®è£ ããããšã ã£ãã sbt-jmh ãçšãããã€ã¯ããã³ãããŒã¯ åããŸãããã¹ãã ã£ãã®ã¯ããã³ãããŒã¯ãåãããšã ã@ktosopl (Konrad Malawski)åã® sbt-jmh ã䜿ããšãã€ã¯ããã³ãããŒã¯ã¯ç°¡åã«äœãããšãã§ããããã«ãã«ãã©ã°ã€ã³ãå ¥ããŠãJmhPlugin ãæå¹åãããµããããžã§ã¯ããå®çŸ©ããã ãã ã lazy val benchmark = (project in file("benchmark")). dependsOn(supportSpray). // add other subprojects you want to test enablePlugins(JmhPlugin). settings( libraryDependencies ++= Seq(jawnSpray, lm), // sbt-jmh forks the run, so you would need these javaOptions in (Jmh, run) ++= Seq("-Xmx1G", "-Dfile.encoding=UTF8"), publish := {}, publishLocal := {}, PgpKeys.publishSigned := {} ) äžã€æ³šæãå¿ èŠãªã®ã¯ sbt-jmh ã¯ãã©ãŒã¯ãã run ã䜿ã£ãŠããã®ã§ãjavaOptions in (Jmh, run) ã®èšå®ãå¿ èŠãªããšã ãsjson-new ãš LList ãçšããã«ã¹ã¿ã ã³ãŒããã¯
2ã¶æãããåã« sjson-new ã«ã€ããŠæžãããé±æ«ã«ãŸãã¡ãã£ãšããã£ãŠã¿ãã®ã§ãããã«å ±åããã åå㯠Scala ãšã³ã·ã¹ãã ã«ããã JSON ã©ã€ãã©ãªã®å®¶ç³»ããã©ã£ãŠãè€æ°ããã¯ãšã³ãã«å¯Ÿå¿ãããã€åã¯ã©ã¹ããŒã¹ã® JSON ã³ãŒããã¯ã©ã€ãã©ãªãšããæŠå¿µãå°å ¥ããã課é¡ã¯ãã«ã¹ã¿ã ã³ãŒããã¯ãç°¡åã«å®çŸ©ã§ããããã«ããå¿ èŠããããšããããšã ã£ãã ç§å®¶ç shapeless 4æã«æžããã®ãšå é±ãŸã§ã®éã« flatMap(Oslo) 2016 ãš Scala Days New York 2016 ãšãã 2ã€ã®ã«ã³ãã¡ã¬ã³ã¹ããã£ããæ®å¿µãªãããå㯠flatMap ã®æ¹ã«ã¯è¡ããªãã£ããã©ããDaniel Spiewak ããã® “Roll Your Own Shapeless” (ãç§å®¶ç Shapeless ã®ãããã) ãšããããŒã¯ã New York ã§èãããflatMap çã®æ¹ãå®å šçã§ãã㯠vimeo ã«ãåºãŠãã®ã§ãæ¯éãã§ãã¯ããŠã¿ãŠã»ããã sbt ã®å éšã§ã¯ãsbinary ãçšãããã£ãã·ã³ã°ã« HList ãçšããããŠãããã: implicit def mavenCacheToHL = (m: MavenCache) => m.name :*: m.rootFile.getAbsolutePath :*: HNil implicit def mavenRToHL = (m: MavenRepository) => m.name :*: m.root :*: HNil .foundweekends
é±æ«ã«è¶£å³ããã°ã©ãã³ã°ããã人ã®ããã® Github organization ãšã㊠foundweekends ãäœã£ããåå ããã人㯠twitter ã Gitter ã§å£°ããããŠãã ããã
åœé¢ã®æŽ»å㯠@n8han ãã conscriptãgiter8ãpamflet ãåŒãç¶ãããšã ã
sjson-new
èæ¯ ãœãããŠã§ã¢ãããžã§ã¯ããèããé¢çœãæ¹æ³ã®äžã€ãšããŠãæåŠçãªè§£æããããšæããã€ãŸããå®éã®ã³ãŒãã®åé¢ãè¿œãã ããããªããŠã誰ãããã€ãäœæ (ã©ããã£ãåé¡ã解決ããããã«) ã©ã®ããã«ã㊠(äœã®åœ±é¿ãåããŠ) æžããã®ããèå¯ããããšã ããããã£ãæå³ã§ã¯ãScala ãšã³ã·ã¹ãã ã«ãããŠã¯ JSON ã©ã€ãã©ãªã»ã©è±ããªãžã£ã³ã«ã¯ä»ã«ç¡ãã®ã§ã¯ãªãã ãããã 2008幎12æã« Programming in Scala ã®åçãåºãŠãJSON ã¯ããŒãµã»ã³ã³ãããŒã¿ã®äžäŸãšããŠåºãŠããŠãJSON ããŒãµã 10è¡ãããã®ã³ãŒãã§æžããããšã瀺ãã: import scala.util.parsing.combinator._ class JSON extends JavaTokenParsers { def value : Parser[Any] = obj | arr | stringLiteral | floatingPointNumber | "null" | "true" | "false" def obj : Parser[Any] = "{"~repsep(member, ",")~"}" def arr : Parser[Any] = "["~repsep(value, ",")~"]" def member: Parser[Any] = stringLiteral~":"~value } å幎ã®äžã¶æåã« Real World Haskell ãšããæ¬ãåºãŠãŠãããã JSON ã©ã€ãã©ãªãäŸãããŠäœ¿ã£ã (Chapter 5.sbt server ãªããŒã
ããã¯å æ¥æžãã sbt 1.0 ããŒããããã®ç¶ç·šã ããã®èšäºã§ã¯ sbt server ã®æ°ããå®è£ ã玹ä»ãããææ³ãã³ã¡ã³ããããã° sbt-dev mailing list ã«ãé¡ãããŸãã
sbt server ã®åæ©ã¯ IDE ãšã®çµ±åã®æ¹åã ã
ãã«ãã¯ã巚倧ã§ãå¯å€ã§ãå ±æããããç¶æ ã®ããã€ã¹ã ããã£ã¹ã¯ã®ããšã ã! ãã«ãã¯ãã£ã¹ã¯äžã§åäœããã®ãã§ãã£ãŠããã£ã¹ã¯ããéããããšã¯ã§ããªãã
– Josh SuerethãThe road to sbt 1.0 is paved with server ãã
ãã·ã³ã«ç©ãã§ãããã£ã¹ã¯ã¯æ ¹æ¬çã«ã¹ããŒããã«ãªãã®ã§ãããsbt ãã¿ã¹ã¯ã䞊è¡å®è¡ã§ããã®ããããäœçšã«é¢ããå®å šãªã³ã³ãããŒã«ãæã£ãŠããããšã倧åæã«ãªã£ãŠãããåããã«ãã«å¯Ÿã㊠sbt ãš IDE ãåæã«å®è¡ããŠããããè€æ°ã® sbt ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããŠããå Žåã¯ãsbt ã¯ãã«ãã®ç¶æ ã«é¢ããŠäžåä¿èšŒããããšãã§ããªãã
sbt 1.0 ããŒãããã
sbt 1.0 ã«ã«é¢ã㊠TLäžãšãã§è°è«ããã£ãã®ã§ãå©ãå°ãšããŠãããæžãããšã«ãããäœããã¡ãããšãªãªãŒã¹ã§ããããã«ä»åãçŽãããããã®äžæçãªããã·ã§ã³ã»ã¹ããŒãã¡ã³ãã ãšæã£ãŠã»ãããsbt-dev mailing list ã«ãŠä»åŸãè°è«ãç¶ããŠããããã ã¿ã€ãã³ã° ã〠sbt 1.0 ããªãªãŒã¹ã§ããããšããäºå®ã¯ãŸã èŠåœãä»ããŠããªãã sbt 1.0 ã®æ倧ã®æ©èœã¯ã³ãŒãã®åçµç¹ã§ãããã¯æ¢ã«é²ãã§ãã: http://www.scala-sbt.org/0.13/docs/Modularization.html sbt/ioã sbt/utilã sbt/librarymanagementã sbt/incrementalcompiler ãšãã£ãã¢ãžã¥ãŒã«ããããå®è£ ãšãã芳ç¹ãããããšã€ã³ã¯ãªã¡ã³ã¿ã«ã³ã³ãã€ã©ã sbt ã®äžã§äžçªè€éãªéšåã ãšæãã®ã§ããŸãã¯ãããã¢ãžã¥ãŒã«åããããšãç®æšãšããŠãããå šéšã®ã¢ãžã¥ãŒã«ã® API ãå®å®ãããšãããsbt æ¬äœã«ã 1.0 ãä»ãããæã«ãªãã ã¢ãžã¥ãŒã«åã®åæ© sbt/sbt ã®çŸåšã®ã³ãŒãã¯ããã«ããŠãŒã¶ããã©ã°ã€ã³äœè ã«å éšãæããããŠãããããã«ãã£ãŠãšã£ã€ãã¥ããã³ãŒãã«ãªã£ãŠãããããã«ããã€ããªäºææ§ãä¿ã€ã®ãé£ãããªã£ãŠããã ã¢ãžã¥ãŒã«åã®ç®æšã¯ã©ããŸã§ã public 㪠API ã§ã©ãããã private ãªå®è£ ãªã®ãã®å¢çãããããªãããããšã ã ããšããããã®ã¢ãžã¥ãŒã«ã¯ä»ãŸã§äœ¿ã£ãŠããã㪠Ivy ãªããžããªãããªã㊠Maven Central ã«ä¹ããã sbt/zinc æ°ããã€ã³ã¯ãªã¡ã³ã¿ã«ã³ã³ãã€ã©ã¯å®å šã« name hashing ã«ç§»è¡ãããname hashing ã¯ãã°ããå (sbt 0.13.6) ããããã©ã«ãã§ãªã³ã«ãªã£ãŠãããããã ããããªããŠãã¯ã©ã¹ããŒã¹ã® name hashing ã䜿ãäºå®ã§ãããã¯æ§èœæ¹åãæåŸ ãããŠããã Java ããŒãžã§ã³ sbt 0.13 㯠JDK 6 ã®äžã«æžãããŠãããsbt 1.0 㯠JDK 8 ããŒã¹ã ãã©ã€ãã¹ã¿ã€ã«ãšããŠã® ScalaMatsuri
åã«ãšã£ãŠ ScalaMatsuri ãšã¯ã©ã€ãã¹ã¿ã€ã«ã®ãããªãã®ã (ä»ã® 27åè¿ããããªãŒã¬ãã€ã¶ãŒãåãããã«æã£ãŠããããããªãã ããã)ã確ãã«ãè¿æ¥æ±äº¬ã§ 550åãåå¡ããã«ã³ãã¡ã¬ã³ã¹ããã£ãŠãããã¯æåã«çµãã£ãããããããªãŒã¬ãã€ã¶ãŒã¯ 2015幎㮠2/28 ãããããã 11ã¶æéæºåããŠãããåãé¢ãã£ãã®ã¯äžéšã§ãããªããã©ããScalaMatsuri 2016 ã¯ãããŸã§ã§äžçªé¢ããã®æ·±ãã«ã³ãã¡ã¬ã³ã¹ã«ãªã£ããšæãããã®äœã¶æã®é SlackãHangout ããŸã«ã¯å¯Ÿé¢ã§ãããŸããŸãªè°è«ãéããŠãããé¢çœãã£ãã®ã¯ãäžç·ã«ã¢ã€ãã£ã¢ãåºãåã£ãŠãããå®çŸãããã®ãã¿ãããšã ã£ããšæããåãå¥æãªã¢ã€ãã£ã¢ãåºããŠããã®è©³çŽ°ã誰ããå®è¡ããŠãããããšãããã°ãä»ã®äººãå§ããããšãå ã«åãçŸå Žã®äœæ¥ãããããšããã£ãã è²ã èšãããããšã¯ãã°ããŒãã«ãªæè¡ã«ã³ãã¡ã¬ã³ã¹ããšãæ¥æ¬ã®ã³ãã¥ããã£ã®äº€æµãã®äž¡ç«ã§ãæžãã¡ãã£ãã®ã§ããã¶ãéšåããããšæãã 2015幎3æ 2015幎㮠3/16 ã®æ®µéã§æ¢ã« ScalaMatsuri 2015 ã®æºåã¯åãå§ããŠãããäœæ èŠããŠããããšãããšããã¯éº»æ€ãã (@oe_uia) ãæ³è¢«ãæ¥ãŠ Scala Days San Francisco ã«ç»å Žããããã ãã«ã³ãã¡ã¬ã³ã¹ãšäžç·ã«ã¹ããŒãã¹ãããã§ããããã«ãšããããšã§ããã®å Žã®é°å²æ°ã§ 2016幎㮠1æã«ãããããšããã¢ã€ãã£ã¢ãçãŸããã ããã«è¡ã¯ Scala Days ã®äŒå Žããå°ãæ©ãæã«ãã£ãŠãã®åž°ãéã§éº»æ€ãããš CFP ãå ¬éããŠåºå®è²»ã§æ è²»ãµããŒããä»ããããšãã話ãããã®ãèŠããŠãããããã¯å°ãªããšã 2014幎 (ã«ã³ãã¡ã¬ã³ã¹ã§ã®ãŠãããŒãµã«ã»ã¢ã¯ã»ã¹ãžåããŠ) ãããããèããŠãã¢ã€ãã£ã¢ã§ãéå ¬éã§èª°ããæåŸ ããŠãã®äººéã®æ è²»ãæãã®ã«æ¯ã¹ãŠããã€ãã®å©ç¹ããããšæã£ãŠãããã«ã³ãã¡ã¬ã³ã¹ã延æããããšã§ä»¥åããé·ãæºåæéãåŸãããšãã§ããã®ã§ããã£ãŠã¿ãèŠèŸŒã¿ããã£ãã Github issue all the things ä»åãã以åã®ã«ã³ãã¡ã¬ã³ã¹æºåã§äœ¿ãããŠãã Trello ã co-meeting ãã Slack ãš Github issue ã®çµã¿åããã«ä¹ãæããã äž¡è ã¯ãããããè£å®ããé¢ä¿ã«ãã£ãŠããã決æã ã£ããšæããã©ãã«ã䜿ã£ãŠ issue ãæ åœããŒã ã«å²ãåœãŠããšããéçšãããŠããŠããããããŸããã£ãŠãããšæãã å°ããã¿ã¹ã¯ã倧éã«ã§ããŠã㊠Github issue ã§å°ã£ãã®ã¯ãç¹å®ã®ã¿ã¹ã¯ãä»ã©ãããç¶æ³ã«ããã®ããææ¡ããã®ãé£ãããšããããšã ã£ããäœããèµ·ããã®ãåŸ ã£ãŠããã®ãããããã¯èª°ããäœæ¥äžãªã®ãããšãã£ãããšã ãissue ã® subject ã«æ¬åŒ§æžãã§ããã»ã¹ããŒã¿ã¹ãæžããšããããšããã£ãŠã¿ããã©ãã翻蚳ã¿ã¹ã¯ãªã©äºåã«æ確ã«ã¹ããããå®çŸ©ãããŠããã¿ã¹ã¯é¡ã«é¢ããŠã¯ãã®æ¬åŒ§æžãæ¹åŒã¯ããŸããã£ããšæãã ãåããæ³èµ·ããã web ãµã€ã æºåã®æ©æã®æ®µéã§ã¯ãªãŒã¬ãã€ã¶ãŒã¯æäžãããã®ããŒã¹ã§äŒã£ãŠãããšæããåãå«ãæ±äº¬ã«äœãã§ãªã人ãããã®ã§ãããŒãã£ã³ã°ã¯ Google Hangout ã§ã¹ããªãŒã ãããŠãHangout ããã㯠Slack çµç±ã§è°è«ã«åå ã§ããããã°ããŒãã«ãªæè¡ã«ã³ãã¡ã¬ã³ã¹ããšãæ¥æ¬ã®ã³ãã¥ããã£ã®äº€æµãã®äž¡ç«
ScalaMatsuri éå¶ããã°ã«ãã°ããŒãã«ãªæè¡ã«ã³ãã¡ã¬ã³ã¹ããšãæ¥æ¬ã®ã³ãã¥ããã£ã®äº€æµãã®äž¡ç«ãæžããŸããã
-Yno-lub ãçšãã Scala ã®å³æ Œå
Scala ã¯æè»ãªããã°ã©ãã³ã°èšèªãªã®ã§ãå人ç㪠Good Parts ã®ãããªèšèªã®ãµãã»ããããããã¯äž»çŸ©äž»åŒµã®ããã¹ã¿ã€ã«ã¬ã€ããäœãããšã¯æçšã ã ã»ããã¢ãã -Yno-lub ãè©ŠããŠã¿ãã人ã¯ã以äžã project/ynolub.sbt ã«æžã㊠sbt ãã©ã°ã€ã³ãåŒã£åŒµã£ãŠãã: addSbtPlugin("com.eed3si9n" % "sbt-ynolub" % "0.2.0") lub Scala ã®åæšè«ãå A ãšå B ãçµ±åãããšãããããã® <:< ã«é¢ãã lub (least upper bounds, æå°äžç) ãèšç®ããããã®éçšã lubbing ãšåŒã¶ããšããããå ·äœäŸã§èª¬æãã: scala> if (true) Some(1) else None res0: Option[Int] = Some(1) scala> if (true) List(1) else Nil res1: List[Int] = List(1) ããæ°å¹ŽèããŠããã®ã¯ãå°ãªããšãä»ãã圢ã§ã® lubbing ã¯æçã§ã¯ãªãã®ã§ã¯ãªããããšããããšã ã2013幎ã«ããããªããšãèšã£ãŠãã: are non-imported implicits and lubing useful in #scala? Map to List[Tuple2], Int to Double, Foo and Bar to Any.ç«çª: 1æ¥ç®
ç«çªãšããæ°ããã·ãªãŒãºãå§ããã(ããã¯æåãã Pamflet ã§æžããŠãã)
Cats 㯠Scala ã®ããã®é¢æ°åããã°ã©ãã³ã°ã®ã©ã€ãã©ãªã§ãããã¯åãããã䜿ã£ãŠã¿ãèšé²ã ã Cats ã¯ãçŸåšéçºäžã§æªã å®éšæ®µéã«ããã