2018-08-20
/ 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 å¶åŸ¡ã·ãŒã±ã³ã¹ã®ã¬ãã¡ã¬ã³ã¹ã¯ä»¥äžãåèã«ãªã:
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> line
2018-07-31
/ sbt
@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 forking
run ã test ã fork ããå Žåãjava++ ã䜿ã£ãŠ Java Home ãåãæ¿ãããããã«ãªã£ãã
2018-06-11
/ scala
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.encoding=UTF8 -J-XX:ReservedCodeCacheSize=256M ++$TRAVIS_SCALA_VERSION! test
before_cache :
- find $HOME/.ivy2 -name "ivydata-*.properties" -delete
- find $HOME/.sbt -name "*.lock" -delete
cache :
directories :
- $HOME/.ivy2/cache
- $HOME/.sbt/boot
- $HOME/.jabba/jdk
ãžã§ããèµ°ããšã以äžã®ããã«è¡šç€ºãããã¯ãã :
2018-05-28
å
é±ã¯ 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
ãã¡ããã¡ããšå
šéšã®å€æ°ãžã®æ€æ»ããã°ããšã©ãŒã¡ãã»ãŒãžã«æžããšãã£ãããšãåŸã
ã«ããŠè¡ãããã
Expecty
Scala ã«ã¯ããªããš Peter Niederwieser ããæ¬äººã 2012幎ããã«æžãã Expecty ãšããããã©ã€ãã©ãªããã£ãŠãpower assert ãå®è£
ãããããã¯ãè¯ãç¥ããã§ãããæªãç¥ããã§ããããããããããšããããšãã®ãã®ã¯è¯ãããšã ãéšåçã«æªãã®ã¯ããªãªãžãã«ã® Expecty 㯠2014å¹Žä»¥éæŽæ°ãããŠããããå€å Gradle ããã«ãã«äœ¿ã£ãŠããããã¯ãã¹ãããªãã·ã¥ã®æ
£äŸãæ¡çšããŠããªãããŸããGitHub ããªããžããªãšããŠäœ¿ããšããæããŸã«ãã£ãŠã人ããããã£ãŠããããããã£ãŠãããã€ãŸããæŸçœ®ãããç¶æ
ã«ããã¿ããã ã
2018-05-20
/ sbt
ãœãŒã¹äŸåæ§ã¯ããªãåãã 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.github.scopt" %% "scopt" % "3.7.0"
lazy val root = ( project in file( "." ))
. sourceDependency( scoptJVMRef, scoptJVMLib)
. settings(
name : = "Hello world"
)
ããã©ã«ãã§ã¯ãããã¯æ®éã®ãã€ããªäŸåæ§ãçšãããlibraryDependency ã»ããã£ã³ã°ã䜿ã£ãŠããã確èªã§ãã:
$ sbt
sbt:helloworld> libraryDependencies
[ info] * org.scala-lang:scala-library:2.12.6
[ info] * com.github.scopt:scopt:3.7.0
ãœãŒã¹ã¢ãŒãã«åãæ¿ããã«ã¯ sbt ã -Dsbt.sourcemode=true ãšå
±ã«å®è¡ãã:
2018-02-16
/ scala
æšæ¥ 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 && ./test.sh
## https://github.com/travis-ci/travis-ci/issues/2316
language : java
os : osx
osx_image : xcode9.2
## build using JDK 8, test using JDK 9
- script :
- sbt universal:packageBin
- jdk_switcher use oraclejdk9
- cd citest && ./test.sh
jdk : oraclejdk8
## build using JDK 8, test using JDK 10
- script :
- sbt universal:packageBin
- citest/install-jdk10.sh
- cd citest && ./test.sh
jdk : oraclejdk8
scala :
- 2.10.7
before_install :
# https://github.com/travis-ci/travis-ci/issues/8408
- unset _JAVA_OPTIONS
- if [[ "$TRAVIS_OS_NAME" = "osx" ]]; then
brew update;
brew install sbt;
fi
cache :
directories :
- $HOME/.ivy2/cache
- $HOME/.sbt/boot
before_cache :
- find $HOME/.ivy2 -name "ivydata-*.properties" -delete
- find $HOME/.sbt -name "*.lock" -delete
æ®éã¯ãããã¬ãã«ã§ jdk: oraclejdk8 ãšæžãããmacOS ã®ã€ã¡ãŒãžã« jdk_switcher ã¹ã¯ãªãããå
¥ã£ãŠããªããšãåé¡ travis/travis#2317 ãããããããmatrix å
ã® osx 以å€ã®ãšã³ããªãŒã« jdk ãæžãå¿
èŠãããã
2018-02-15
/ sbt
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 && ./test.sh
## build using JDK 8, test using JDK 10
- script :
- sbt universal:packageBin
- citest/install-jdk10.sh
- cd citest && ./test.sh
scala :
- 2.10.7
jdk :
- oraclejdk8
# Undo _JAVA_OPTIONS environment variable
before_script :
- _JAVA_OPTIONS=
cache :
directories :
- $HOME/.ivy2/cache
- $HOME/.sbt/boot
before_cache :
- find $HOME/.ivy2 -name "ivydata-*.properties" -delete
- find $HOME/.sbt -name "*.lock" -delete
ãã®äŸã§ã¯ãsbt ãš sbt-native-packager ã䜿ã£ãŠããããã©ã®ãã«ãããŒã«ã§ãåãã¯ãã ã
2018-02-03
/ scala
2016幎8æ
SIP-27 æ«å°Ÿã®ã«ã³ã (trailing commas) ã«é¢ãããã£ã¹ã«ãã·ã§ã³ã®ãšãã«æãã€ããã®ã¯äžéšã®ã«ã³ãã®çšæ³ãã»ãã³ãã³ãšçµ±äžã§ããã°ãã»ãã³ãã³æšè«ãæµçšããããšãã§ããããããªãããšããããšã ã
Aug 10 2016 20:46 :
ç¹ã«å¯å€é·åŒæ° (vararg) ã®åºåãæåãšããŠã»ãã³ãã³ãèš±ãã°äŸ¿å©ããã ãããããå®éã«ã¯ããã¯ããŸããããªãã@Ichoran ãããå
·äœäŸãçšããŠææããŠããã:
ããã¯çŸç¶ã® 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 ãæž¡ãããå Žåã«ã¯åã¹ããŒãã¡ã³ããå±éãããã¯ããå®çŸ©ããããšã¯å¯èœãããããªãã
2018-01-30
/ sbt
以åãã€ãŒããã ãšãããsbt ã¹ããã«ãŒãèªäœããã
2018-01-05
/ scala
ç«çª: 17æ¥ç® ãæžãããå§å¯Ÿè±¡ãšçµå¯Ÿè±¡ãç©ãå察æ§ãäœç©ãªã©æœè±¡æ§é ãèŠãŠããã€ã€ãEither ã coproduct ãšããŠäœ¿ãæ¹æ³ã玹ä»ããŸãã
2017-12-18
/ sbt
2017-12-12
/ scala
æ¬çš¿ã§ã¯å€ããŠæ°ããåé¡ã§ãããã¡ã€ã«ãã¹ã® Uniform Resource Identifier (URI) ãžã®ãšã³ã³ãŒãæ¹æ³ã«ã€ããŠè°è«ããã
2017幎çŸåšãæš©åšããæ
å ±ã®å
㯠Matthew Kerwin æ°ã«ãã£ãŠæžããã RFC 8089 - The “file” URI Scheme ã ã
æªæ¥ã®èªè
ã®äººã¯ “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. props( "os.name" ). toLowerCase( Locale . ENGLISH ). contains( "windows" )
private final val FileScheme = "file"
/** Converts the given File to a URI. If the File is relative, the URI is relative, unlike File.toURI*/
def toURI( input: File ) : URI = {
def ensureHeadSlash( name: String ) =
if ( name. nonEmpty && name. head != File . separatorChar) File . separatorChar. toString + name
else name
def normalizeToSlash( name: String ) =
if ( File . separatorChar == '/' ) name
else name. replace( File . separatorChar, '/' )
val p = input. getPath
if ( isWindows && p. nonEmpty && p. head == File . separatorChar)
if ( p. startsWith( """\\""" )) new URI ( FileScheme , normalizeToSlash( p), null )
else new URI ( FileScheme , "" , normalizeToSlash( p), null )
else if ( input. isAbsolute)
new URI ( FileScheme , "" , normalizeToSlash( ensureHeadSlash( input. getAbsolutePath)), null )
else new URI ( null , normalizeToSlash( p), null )
}
/** Converts the given URI to a File. */
def toFile( uri: URI ) : File =
try {
val part = uri. getSchemeSpecificPart
if ( uri. getScheme == null || uri. getScheme == FileScheme ) ()
else sys. error( s"Expected protocol to be ' $FileScheme ' or empty in URI $uri " )
Option ( uri. getAuthority) match {
case None if part startsWith "/" => new File ( uri)
case _ =>
if (!( part startsWith "/" ) && ( part contains ":" )) new File ( "//" + part)
else new File ( part)
}
} catch { case _: URISyntaxException => new File ( uri. getPath) }
ãã¡ã€ã«ãã¹ãšã¯äœã?
以äžã¯ãç¶²çŸ
çãªãªã¹ãã§ã¯ãªããããã䜿ããã OS ã§ãã macOSãLinuxãWindows ã®å€§éšåãã«ããŒãã:
2017-12-08
/ sbt
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’ ãéãã
2017-12-04
/ diy
2017-12-01
/ sbt
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 ã®äž¡æ¹ã«ãããŠãã»ããã£ã³ã°ã¯ã¹ã³ãŒã軞ãã¹ã©ãã·ã¥ã§åããŠä»¥äžã®ããã«æžãããšãã§ãã:
ref / Config / intask / key
äžã® ref ã¯å
žåçã«ã¯ãµããããžã§ã¯ãåããã㯠ThisBuild ãå
¥ããConfig 㯠Compile ã Test ãªã©ã³ã³ãã£ã®ã¥ã¬ãŒã·ã§ã³ã® Scala èå¥åãå
¥ããããããã®è»žã¯çç¥ããããç¹æ®ãª Zero ãšããå€ã§çœ®ãæããããšãå¯èœãªã®ã§ãå®éã¯ä»¥äžã®ããã«ãªã£ãŠãã:
2017-11-27
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.0.4 ã§äœ¿ãããŠãã Zinc 1.0.5 ã§ã¯ã¯ã©ã¹ãã¹äžã® JAR ã®ããã·ã¥èšç®ã®ããã©ãŒãã³ã¹ãèœã¡ã察çãšããŠãJAR ããšã«ãã£ãã·ã¥ããä¿®æ£ãæäŸããŠãããã
Sam Halliday ãã (@fommil )â ãã¯ã©ã¹ãã¹ããã·ã¥åé¡ã«åãçµãã§ãåçŸãããžã§ã¯ããæäŸããããpull request ãéã£ãŠãããã
OlegYch ãã (@OlegYch ) 㯠testQuick ã®ããã©ãŒãã³ã¹ããã°ã¬ãä¿®æ£ããŠãããã #3680 /#3720
Leonard Ehrenfried ãã (@leonardehrenfried ) ãããã©ãŒãã³ã¹ã®ãã³ãããŒã¯ ã«åãçµãã§ãSam ããã®åçŸãããžã§ã¯ããããšã«èªåã§å®è¡ããŠæ§èœãæ¯èŒããããŒãã¹ãäœã£ãŠãããããŸããIvy-log4j ã®ããã©ãŒãã³ã¹ãã°ã¬ãä¿®æ£ããŠãããã #3711 /util#132
Lightbend Tooling team ãã㯠Dale (@dwijnand ) ãããã©ãŒãã³ã¹é¢é£ã® issue ã«åãçµãã ãã瀟å
ã®ãšãã¹ããŒãããç¥èŠãåŸããããŠããã
以äžã¯ãLeonard / Sam ã® 25åã®ãµããããžã§ã¯ãã䜿ã£ããã¹ããããžã§ã¯ãã§ no-op compile ãè¡ã£ã sbt 1.0.4 ã®ããã©ãŒãã³ã¹ã :
2017-09-20
/ sbt
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 ) ã¯ãè€æ°ç®æã«åæã«ååšãããã®ãããªå¢ãã§å€ãã®ãã©ã°ã€ã³ã®ç§»æ€äœæ¥ãè¡ã£ãŠããã以äžã¯åãèŠã€ããç¯å²:
ããããšãããããŸã!
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.gigahorse ãšãã JVM ãã©ã°ã远å ããŠãGigahorse ãå
éšã§äœ¿ããããåŠããæå®ã§ããããã«ãããããã¯ãrepositories ãªãŒããŒã©ã€ããšäœµçšãããšãã«çºçãã JavaNetAuthenticator ã® NPE ã®ããã®åé¿çã ã lm#167 by @cunei
sbt.server.autostart ãšãã JVM ãã©ã°ã远å ããŠãsbt shell ãèµ·åããæã« sbt server ãèªåã¹ã¿ãŒããããåŠããæå®ã§ããããã«ãããæåã§ã¹ã¿ãŒããããããã®ãstartServer ã³ãã³ãã远å ããã by @eed3si9n
æªäœ¿çšã® import èŠåã®ä¿®æ£ã #3533 by @razvan-panda
sbt ã Zinc 1 ãå®éã«äœ¿ã£ããããã°å ±åãããã¥ã¡ã³ããŒã·ã§ã³ã®æ¹åããã©ã°ã€ã³ãç§»è¡ããããpull request ãéã£ãŠãããçãããããããšãããããŸãã!
2017-09-19
/ sbt
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) ãšããçšèªã䜿ã£ãŠããã
InitializeResult
ãŸãæå§ãã«ããäºãã«æšæ¶ãããäœæ³ãšãªã£ãŠãããVS Code ã¯ãinitialize ãšãããªã¯ãšã¹ããéä¿¡ããã®ã§ãããã«å¯Ÿã㊠InitializeResult ã§è¿äºããããMicrosoftç€Ÿã®æžãã仿§ã¯ TypeScript ã§æžãããŠããã®ã§ãããã Contraband ã§äœ¿ããããã« GraphQL ã«ç¿»èš³ãã:
2017-08-21
æ¬çš¿ã§ã¯ãåã Persistent Versioning ãšåŒãã§ãããŒãžã§ã³æ¹æ³ã玹ä»ãããæ¬çš¿äžã«åºãŠããã¢ã€ãã£ã¢ã®å€ãã¯æ°ããããªããã°åãèæ¡ãããã®ã§ããªããæ¢ã«ååããããªãã°æ¯éæããŠã»ããã
2015幎㫠Jake Wharton (@JakeWharton ) ããã ã¡ãžã£ãŒããŒãžã§ã³ã¢ããããŒãã®ããã® Java çžäºäºææ¹é (Java Interoperability Policy for Major Version Updates) ãšããããã°èšäºãæžãã:
Java ããã±ãŒãžåã«ããŒãžã§ã³çªå·ãå«ãããã«ååãå€ããã
ããã«ãã£ãŠã鿥çäŸåã©ã€ãã©ãªãè€æ°ã®ããŒãžã§ã³ãæã€å Žåã® API äºææ§ã®åé¡ã峿ã«è§£æ±ºãããåãã¯ã©ã¹ãã¹ããåã
ã®ã¯ã©ã¹ãçžäºå¹²æžããããšãªãèªã¿èŸŒãããšãã§ããã(äžç¥)
(ã¡ãžã£ãŒããŒãžã§ã³ã 0 ã 1 ã®ã©ã€ãã©ãªã¯ãã®æ¹éãé£ã°ããŠãã¡ãžã£ãŒããŒãžã§ã³ã 2 ã«äžãã£ãŠããå§ããŠãããã)
Maven 座æšã® group ID ã®äžéšãšããŠã©ã€ãã©ãªåãå«ãŸããããšã
ããšãåäžã®ã¢ãŒãã£ãã¡ã¯ãããæããªããããžã§ã¯ãã§ããgroup ID ã«ãããžã§ã¯ãåãå
¥ããŠãããšå°æ¥çã«è€æ°ã®ã¢ãŒãã£ãã¡ã¯ããæã£ããšãã«ã«ãŒãã®åå空éãæ£ããããªããŠããããæåããè€æ°ã®ã¢ãŒãã£ãã¡ã¯ããæã€å Žåã¯ãMaven Central ãªã©ã«ãããŠã¢ãŒãã£ãã¡ã¯ãããŸãšããæ¹æ³ãšãªãã ….
Maven 座æšäžã® group ID ã«ããŒãžã§ã³çªå·ãå«ãããã«ååãå€ããã
2017-08-11
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.x ã«ãããŠè±Ivy ãå¯èœãšãªãããã«ããã
äºææ§ã«åœ±é¿ã®ãã倿Žç¹ãæ°æ©èœããã°ä¿®æ£ãªã©ã®ãç¶²çŸ
ãããªã¹ã㯠sbt 1.0.0 ãªãªãŒã¹ããŒã ã«ããã®ã§åç
§ããŠã»ããã
2017-07-19
/ sbt
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 ../website_keys/deploy_website_rsa .travis/deploy_rsa.enc ãå®è¡ãããããã§ã--repo 㯠GitHub ã¬ããžããªãæå®ããã
2017-07-01
/ keeb / dyi
åå Atreus ã®çµã¿ç«ãŠã«ã€ããŠæžãããšãã«ãããŒããŒãã®é
眮ã«ã€ããŠã¡ãã£ãšæžããã
ããã«ããšãã¬ã€ã¢ãŠããå
æããŠæ§ã
ãªã·ã³ãã«ã®å ŽæãæèšããŠãæ®ã£ãŠããåé¡ãäžã€ãã£ãŠãããã¯çœ®ãå Žæã ãã©ããããããšèªåã®éã«çœ®ããšç»é¢ãé ãããæ°ãããã
ãã®åé¡ã®è§£æ±ºæ¹æ³ãšããŠãMacBook Pro ã®ããŒããŒãäžã« Atreus ãé
眮ã§ããããã«ãã¬ã€ãäœã£ãŠã¿ãã
ãã£ãããšãªã£ãã®ã¯ãAtreus ã®äœè
ã® @technomancy ããã« Atreus ã MacBook Pro ã®ããŒããŒãäžã«çŽæ¥ä¹ããŠã¿ãŠã¯ã©ããã®æèšããã ã圌㮠Thinkpad ã¯äžå€«ãªã®ãããããªãããåã®æ°åã®ã©ãããããã®äžã«çŽä¹ããªããŠåè«ãããªãã
ææ
éå
·ãšããŠã¯ã
2017-06-19
/ diy
ãã°ããåã«ãããã§è²·ã£ã 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 äºæã®ããŒã·ã£ã«ããããæ³šæããå¿
èŠãããã
2017-04-27
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 @ 23 b48158
2017-04-18
/ sbt
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.0.0-M5 ã¯æåã®ããŒã¿çã§ãããæ®ã£ãŠãã課é¡ã®ãã¡éèŠãªãã®ã¯:
2017-03-27
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.12.1" ,
// ModuleID of your app
List ( "com.eed3si9n" %% "rewritedemo" % "0.1.2" ),
// main class
"sbtrewritedemo.RewriteApp" )
override def extraProjects: Seq [ Project ] =
List ( sidedish. project
// extra settings
. settings(
// Resolve the app from sbt community repo.
resolvers += Resolver . bintrayIvyRepo( "sbt" , "sbt-plugin-releases" )
))
override def projectSettings = Seq (
rewritedemoOrigin : = "example" ,
sourceGenerators in Compile +=
Def . sequential(
Def . taskDyn {
val example = LocalProject ( rewritedemoOrigin. value)
val workingDir = baseDirectory. value
val out = ( sourceManaged in Compile ). value / "rewritedemo"
Def . taskDyn {
val srcDirs = ( sourceDirectories in ( example, Compile )). value
val srcs = ( sources in ( example, Compile )). value
val cp = ( fullClasspath in ( example, Compile )). value
val jvmOptions = List ( "-Dscalameta.sourcepath=" + "\"" + srcDirs. mkString( java. io. File . pathSeparator) + "\"" ,
"-Dscalameta.classpath=" + "\"" + cp. mkString( java. io. File . pathSeparator)+ "\"" ,
"-Drewrite.out=" + out)
Def . task {
sidedish. forkRunTask( workingDir, jvmOptions = jvmOptions, args = Nil ). value
}
}
},
Def . task {
val out = ( sourceManaged in Compile ). value / "rewritedemo"
( out ** "*.scala" ). get
}
). taskValue
)
}
trait RewriteDemoKeys {
val rewritedemoOrigin = settingKey[ String ]( "" )
}
object RewriteDemoKeys extends RewriteDemoKeys
sbt 0.13.13 ã§å
¥ã£ãã·ã³ã»ãã£ãã¯ã»ãµããããžã§ã¯ããšããæ©èœã䜿ã£ãŠããã
2017-03-21
ç«çª: 16æ¥ç® æžããã
2017-03-12
/ sbt
äºææ§ã«åœ±é¿ã®ããæ°æ©èœã倿Žç¹ããã°ä¿®æ£
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.7.2 ã«ã¢ããããŒãããã
ãã°ä¿®æ£
.triggeredByã.storeAs ãªã©ãã:= ãš .value ãã¯ããšåäœããªãåé¡ã®ä¿®æ£ã #1444 /#2908 by @dwijnand
JLine ãæŽæ°ããŠãWindows ãã Ctrl-C ãåäœããªãåé¡ã®ä¿®æ£ã #1855 by @eed3si9n
ãã«ãã¬ãã«ã®ããŒã®åŠçã誀ã£ãŠãã 0.13.11 ãã 0.13.13 ã®ãªã°ã¬ãã·ã§ã³ã®ä¿®æ£ã #2851 /#2460 by @eed3si9n
Compile ãç¶æ¿ããªãã³ã³ãã£ã®ã¥ã¬ãŒã·ã§ã³ã«ãããŠã Scala ããŒãžã§ã³ã®åŒ·å¶ãè¡ã£ãŠãã sbt 0.13.12 ã«ããããªã°ã¬ãã·ã§ã³ã®ä¿®æ£ã #2827 /#2786 by @eed3si9n
ã¹ã¯ãªããã¢ãŒãã«ãããŠã¯ã©ãŒããŒã·ã§ã³ãç¡èŠãããŠããããšã®ä¿®æ£ã #2551 by @ekrich
Ivy ããšããã IllegalStateException ã«ãªãããšã®ä¿®æ£ã #2827 /#2015 by @eed3si9n
sourceFile ã null ã®ãšãã« NPE ãã§ãããšã®ä¿®æ£ã #2766 by @avdv
Maven ã®ããŒãžã§ã³ã¬ã³ãžã®æ¹å
以åã¯ãäŸåæ§è§£æ±º (Ivy) ã [1.3.0,) ãšãã£ã Maven ã®ããŒãžã§ã³ã¬ã³ãžãèŠã€ãããš Internet ã«è¡ã£ãŠææ°ã®ããŒãžã§ã³ãæ¢ãã«è¡ã£ãŠãããããã¯ãç¯å²ã®æ¡ä»¶ãæºããã©ã€ãã©ãªããã«ãå
ã«ãã£ããšããŠã æçµçãªããŒãžã§ã³ãçµå¹Žå€åãããšããé©ãã¹ãæ¯ãèããããŠããã
2017-03-06
/ scala
ãã°ããèããŠããçåãããã€ããã:
ããŒã¿ã 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 = ???
def unapply( v: Greeting ) : Option [ String ] = ???
}
次ã«ãx ãšããæ°ãããã£ãŒã«ãã远å ãã:
package com.example
class Greeting ( name: String , x: Int ) {
override def equals( o: Any ) : Boolean = ???
override def hashCode: Int = ???
override def toString: String = ???
def copy( name: String = name, x: Int = x) : Greeting = ???
}
object Greeting {
def apply( name: String ) : Greeting = ???
def unapply( v: Greeting ) : Option [( String , Int )] = ???
}
èŠãŠåããéããcopy ã¡ãœãããš unapply ã¡ãœããã¯ãã€ããªäºææ§ã厩ãã
2017-03-05
ååã® Dale Wijnand (@dwijnand ) ãšäžç·ã« ScalaSphere ã§ããŒã¯ãããŠãããThe state of sbt 0.13, sbt server, and sbt 1.0 (ScalaSphere ver) :