Scala
研究という程でもないんだけど、ScalaやJavaの列挙型は気持ち悪いなあと思い、ちょっと考えてcase objectがいいと思い至った。調べてみると同じような事をされている先達がいるものです。 http://xerial.org/scala-cookbook/recipes/2012/06/29/enumeration/…
日々の雑務が激しくScalaのことを勉強できていないけど、こんなことを合間合間にやってます。 1.Excelのファイルを読みこみ、定位置のフィールドを取得。所定のルールに従っているかチェックする。 ただし、ファイルが100MByteを超えるときもざらなのでUse…
sbt 0.13.8をインストールするには、以下を参照に This page has moved http://d.hatena.ne.jp/kanbayashi/20080412/p1 $ echo "deb http://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list $ sudo apt-get update $ sudo apt…
CodeIQのこちらの問題、https://codeiq.jp/q/1587 をWindows7のPCで行っていました。 spark-shellから一行ずつ入力して、一応それなりの結果を得ることはできた。 が、やっていてなんだかちょっとなあ、と感じた。シェルにコマンドを打ち込むというのがなん…
「関数型待ち行列」をつくる、という題材を通して型のパラメータ化を学ぶ章です。関数型待ち行列の要件は1.head:待ち行列の先頭要素を返す 2.tail:先頭要素を取り除いた形で待ち行列を返す 3.enqueue:指定した要素を末尾に追加した新しい待ち行列を…
昨日、5/14と書いた以下のエントリでは、関数に指定する型パラメータで悩んでいたけど、結局戻ってくる値がわからないのであればAnyを返す、というのでちゃんと動くようにできた。僕が2015/5/14に書いた型パラメータに関するエントリがすごく間違っている気…
数日前の記事(共変とか反変とかわからないので躓いている - 趣味プログラマがまれになんかしたことの記録 )にて、僕は下のように書いたけど、 def get[A >: Any](i:Int):K[A] これは下限境界というやつで、AnyまたはAnyのスーパークラスのみ型パラメータに…
直前のエントリで気になったのでIterator.duplicateの動きを調べてみた。 val it = Iterator.continually... val (it1, it2) = it.duplicate println(it.foldLeft(0)((c, _) => c+1)) println(it1.foldLeft(0)((c, _) => c+1)) println(it2.foldLeft(0)((c, …
Iterator.continuallyの動作がどれぐらい大きいファイルまで耐えられるのか確認したく、以下の様なスクリプトを書いてみた。 import java.io.{FileInputStream, InputStreamReader, BufferedReader} val br = new BufferedReader(new InputStreamReader(new …
こんなクラスを作ってみた scala> case class K[A](l:List[A]) そしてこんな関数を作ってみる。しかし実行してみるとうまくいかない。 scala> def returnK(a:A):K[A] = K[A](List(a)) returnK: (a: A)K[A] scala> returnK(1) <console>:15: error: type mismatch; fou</console>…
せっかくSpecsにスペックを書いているのに、Jenkinsの結果にて(It is not a test)と出てしまうのは嫌な気分です。(下図) これはSpecs2のIssueでSpecs2の3.3では治りました。(下図) 参考リンク→ sbt (0.13) junit xml reporter: "It is not a test" · I…
argonautを使うようにしたら、Monocleという謎のライブラリが追加されていた。HaskellのLensというのをScalaに移植したものらしい。 Lensって最近良く見る。でもなんだかよくわからんなあ、と思ってました。が、下のリンク先を見て一発で分かりました。 Mono…
設定をXMLよりももっと簡単に記述して読み込みたい、という希望のもとにあれこれ調べるまでもなく、実際Jsonを使ってやってみるのが標準のようだ。Scala標準のJsonパーサーはどうやら使いにくいし今後無くなる方向だそうです。(こちら参照→標準ライブラリのJ…
Jenkinsも導入したことだし、scoverageを使ってみた。しかしjarファイルを起動したらこんなエラー。 (ちなみに僕はassemblyプラグインを使って、依存ライブラリをすべて含めたFatJarにしている) Exception in thread "main" java.lang.NoClassDefFoundErro…
HtmlUnitDriverでPOSTするのはどうやるの? と調べてみた。結果的にWebクライアントらしく、ユーザー名パスワードを入れて、ボタンをクリックという動きになります。以下、githubにログインしてトップページを開くという動き。 object MainApp extends App {…
僕は開発者じゃないので、めったにIntelliJ IDEA+Scala+Sbt開発を行う機会がない。 そんなわけで、さて、今からなにかを作ろう、と思うと超基本的なことからして忘れていて、常にまごつきます。 なぜって年寄りだから。1. 外部ライブラリの追加 プロジェ…
IntelliJ IDEAでsbtをつかいビルドしていたところ、ふとテストにSpecs2が使えることに気づいた。気づくのが遅すぎかもしれないが気づいた。あちらこちらの情報を収集して、 コードカバレッジにはscctがいいよ scalastyleつかうと便利だよ ということがわかっ…
以下のサイトを参考にしました。http://blog.takumibaba.com/post/62023920631/sbt-scala sbtでpublishLocalしたjarを取り込んで開発サイクルを回す - Qiita 以下の作業はIntelliJ IDEAを使っているという仮定です。 1.ライブラリのプロジェクト(というか…
いかの2つを参考にして、 Introduction — Slick 2.1.0-M1 documentation Connections / Transactions — Slick 2.1.0-M1 documentationこんなソースコードを書いてみた。 動かなかった例 import com.typesafe.slick.driver.ms.SQLServerDriver.simple._ objec…
MS SQL Serverにアクセスしたくて、scalaのSlick2というのを使おうと思った。その苦労。 sbtの作法にぶつかる。あれって、一行ずつ空白行をあけないとダメなの? 空白をあけずに書くとエラーが出ます。 libraryDependenciesを複数追加する方法がわからなくて…
巷ではScalaの開発にはIntelliJ IDEAを使うと捗るよ、とのことで、初めて見ました。 以下参考にしたサイトEclipseユーザがIntelliJ IDEAを使い始める時に見ておいたほうがよいページのメモとか - 新しいフォルダ (3) Eclipseユーザの為のIntelliJ IDEA Q&A -…
手順として gitをインストール sbtをインストール(これはインストーラーじゃないほうが便利かも) conscriptをsbtでビルド、--> 失敗 conscriptにjarを取得 giter8をsbtでビルド まず、giter8を作っている、n8hanさんのgithubより、以下を取得。 git clone …
使っているビューが、Java−パッケージ・エクスプローラーでないと、プロジェクトを右クリックしたメニューにBuild Fat Jarが選択肢に表示されません。一般カテゴリのプロジェクトエクスプローラーやナビゲータでは使えないので注意が必要です。
ScalaTestをEclipseから実行していて2つほど困ったことが起きてます。 ファイル単位でのテストを実行できるのに、パッケージ単位では実行できない いつのまにやらファイル単位でのテストも実行できなくなる 1の問題は、テストが開始されるが実際にテストが…
思いつくままにやってみた版(ミュータブルなSetを使う) C列目の値を取ってくる val br = new(BufferedReader(new InputStreamReader(new FileInputStream(“hogehoge.csv”))) def distinctCsv(br: BufferedReader, c: Int): Set [String]= { val it = Itera…
Specs2が一番スマートに書けそうなので、まずはEclipseにて導入。しかしどうやっても実行できない。わけが分からない。sbtとか導入するんでもいいけど、なんだか面倒になってEclipse内で完結できるのがないかと探したらScalaTestというのが見つかった。こっ…
Fat Jarというのは、依存する外部ライブラリをすべてまるまる一つのJarに入れておいたもの。Jarのサイズはかなりでかくなるが、他の人に渡すときにJar一つで実行できるので便利。Uber JarともOne-Jarとも言われる。で、こちらを参考にFat Jar プラグインをEc…
プロジェクトフォルダで、sbtで.ensimeを作る必要がある。しかし以下のようなエラーで作れない時がある。なぜだろう?とハマりました。 % sbt ensime generate : : : [error] Not a valid command: generate [error] Expected ‘/’ [error] Expected ‘:’ [err…
EmacsでのScala開発にはEnsimeというプラグインらしい - 趣味プログラマがまれになんかしたことの記録の続きです。前回ステップ8まで終わったから、続きで9から書きます。 9. どこでもよいので、Scalaのプロジェクトのディレクトリを作成します。自分の場…
Java開発にはmalabar-modeでこっちはなんとかビルドはできるようになったのでそこそこ満足。実行するのは未だにeshellつかってるのがなんか違うような気がするが、こまかいことは後で考えよう。 じゃあ、Scalaは、となるとEnsime一択らしい。まずとっかかり…