Λ Takuya71 の日記 Λ

ここに記載の内容は個人的な見解で 勤務先、所属先には関連はございません。最近は scala に はまってます。認定スクラムマスター

Scala

10進数から 2進数、8進数、16進数に変換する。 とその逆

Ruby 2進数 8進数 16進数 to_s(2) to_s(8) to_s(16) 11.to_s(2) => "1011" 11.to_s(8) => "13" 11.to_s(16) => "b" 逆 逆に n進数から 10進数の数字に変換するには to_i(n) を使う '1011'.to_i(2) => 11 '13'.to_i(8) => 11 'b'.to_i(16) => 11 Scala Scala …

permutation と combination

Ruby の permutaion は リストから 組み合わせを簡単に列挙してくれます。 例えば [1,2,3,4] から 任意の3つの数字を抽出する組み合わせは以下のように簡単に記述できます。 [1,2,3,4].permutation(3).to_a.each do |l| p l end [1, 2, 3] [1, 2, 4] [1, 3, …

Scala Macro を試す その2

Javaのファイルの処理の部分をマクロで 前回 試した マクロですが、使える状況なにか無いか考えていたのですが、私の理解ではマクロはコンパイル時にソースを置き換えてくれるもの と理解してます。 そこで 思ったのが scala でプログラム書いていて ファイ…

Scala Macro を試す - いまいちわかってない -

Scala Macro を試す Scala 2.10 から Experimental ですが Macro 機能が入っていますが、 実際使ったことも無く どういうものか わかっていなかったので試してみました。 まず Scala 逆引レシピの付録の 2.10の新機能としても コンパイルの時間を表示すると…

文字列から HtmlUnit の HTMLPage オブジェクトを生成するには

htmlunit のテスト htmlunit を使っているプログラムのテストをしたい javascript で値を生成しているページの情報を取得するのに htmlunit を使ってますが、プログラムの動作のテストで取得した内容を抽出する部分のプログラムのテストをする為に毎回アクセ…

scalatra で作ったプロジェクトを stand alone で使用できるように

scalatra で作ったプロジェクトを jetty の stand alone 環境で使用できるようにする。 jetty を組込み standalone で使いたい。 仕事のチーム内の情報共有用のサイトを scalatra で作ってみたのですが、実際に稼働させるのに jetty の standalone な状態で…

Streamとのzip

Scala で (1,"hoge1"),(2,"hoge2"),(3,"hoge3"),(1,"hoge4"),(2,"hoge5")... のように 1,2,3,1,2,3… の繰り返しと 何かを zip してくっつける val l = List(1,2,3) val sl = List("hoge1","hoge2","hoge3","hoge4","hoge5") Stream.continually(l).flatten.z…

Scala で 基本的IOのパフォーマンス比較

Scala で IOのやり方の違いによる ファイルコピー パフォーマンスの比較 「Javaプラットフォームパフォーマンス」の 第4章の「基本的なIO」 にあるプログラムをScalaつかって比較してみました。 IOが遅くなる原因と性能を稼ぐ方法についてを Scala のプログ…

Scala 2.10 で Stream.const が無くなっていたこと

結論 Scala 2.10 では Stream.const の代わりに Stream.continually を使えます。 発端 Scala 2.9.2 の頃に書いたプログラムの中で Stream.const を使ってました。 同じエレメントで無限配列を作りたかったので 使用していたのですが、 このプログラムを Sca…

したらば掲示板のタイトルとレス数をとる

livedoor のしたらば掲示板の情報から タイトルとレス数を取る。 知人がJavaで作っていたのをまねして Scala で作ってみた。 もとが EUC-JPなのが面倒。。。

unfiltered で 0.0.0.0 で listen するのは apply

仕事で テスト用の HTTPサーバを使うことがあったので、 unfiltered を使ってみたのですが その際に起動するポートと listen するIPについての覚書。 サンプルだと 127.0.0.1 で起動するので どうやったら 0.0.0.0 で listen する状態で起動できるのか 調べ…

JSON4S が (3.2.2) 3.2.3 になっているので 日本語訳も更新

json4s の readme が更新されていたので 日本語訳も更新しました。 今回は 3.1.0 から 3.2.2 3.2.3への更新となってます。

CentOS6.3に typesafe-stack をインストール

centOS で scala を使用したいので CentOSに typesafe-stack をインストールしました。 g8 と sbt がインストールされます。 情報はこちら Typesafe-stack /etc/yum.repos.d/typesafe.repo を作成 まず yum でインストール出来るように レポジトリの登録を行…

すごいH本の 「ヒースロー空港からロンドンへ」を Scala でやってみた

すごいH本の 「ヒースロー空港からロンドンへ」をScalaでやってみました。 ほとんど Haskellそのままです。 英語版はWebで公開されていてココに。 data で定義している Section は case class で定義してみました。 case class Section(getA: Int, getB: Int…

こんどは dispatch 0.9.5 で Github API をつかい github の starred の情報取得

この前は dispatch 0.8.6 を使って Github API をつかってみましたが、新しい dispatch のバージョンの 0.9.5 を使って同じことをやってみました。 0.9.5 では OAuth のモジュールが core モジュールに含まれています。 したがって import は import dispatc…

dispatch で はてなの OAuth認証を使う

dispatch で はてなの OAuth認証を使う 今回も dispatch 使っての OAuth ねたです。 こんどは hatena API にアクセスする際の OAuth 認証の部分を dispatch をつかって認証する方法です。 はてなの OAuth API はてな の OAuth API については はてなのAPIの…

dispatch で Github API をつかい github の starred の情報取得

dispatch で github にOAuth でアクセス github api を使って自分が star 付けているレポジトリの情報を取得してみるプログラムを実験してみました。 token の取得 まず 最初に Github APIに OAuth でアクセス出来るように、Creating an OAuth token for com…

State Monad 実験 in Scalaz

State Monad を試す 環境 Scalaz7 M5 + Scala 2.9.2 どこかで使ってみたい。

IntelliJ IDEA 購入しました

RT @jetbrainsjp: JetBrainsが世界終焉を受けて大幅なセールを行っています jetbrains.com/specials/index… #jbugj— takuya71さん (@takuya71) 12月 20, 2012 2012年12月21日 マヤ歴の世界終焉?を受けて 個人用ライセンスが 75%オフという、すごいセールを…

入れ子になった型を入れ替える(Scalaz)

M[N[_] というようなデータ構造のデータがあって MとNを入れ替える場合 traverse(identity) を使うと簡単に出来る。 scala> Option(List(1,2,3)).traverse(identity) res6: List[Option[Int]] = List(Some(1), Some(2), Some(3)) scala> List(1.some, 2.some…

Play2 conf/application.conf の値を controller から参照する方法

Play framework 2 for Scala でアプリを作っていて システムの設定値等は conf/application.conf に 値を設定しておき それを controller から読み出して使いたい時があります。 例えば OAuth のキーを application.conf に記載しておき、 プログラムからそ…

play2.0 を IntelliJ IDEA で使う

Play 2.0 を IntelliJ IDEA で使う方法 こちらの公式ドキュメントに IntelliJ IDEA 用の プロジェクトの作成方法があります。 IDEA用プロジェクトの作成 play のコマンドラインから idea と実行するだけです。 [sample] $ idea [info] Trying to create an I…

JSON4S の Readme を日本語に訳してみた

@xuwei_k さんの blog書いた d.hatena.ne.jp/xuwei/20121101… "lift-jsonの代わりにjson4sを使うべき?" #scalajp— Kenji Yoshidaさん (@xuwei_k) 10月 31, 2012 JSON4S のこちらのエントリを拝見して JSON4S コンセプトが面白そうなので Readme を訳してみ…

Scalaz IdOps の |>

IdOps の |> Scalaz では 以下のような構文を実行すると ある値を |> で右側の式に渡すようなことができます。 "hoge" |> (_.size) 何が起こっているかというと -Xprint:typer をつけてコンパイラの結果をみると 上記の式は scalaz.this.Scalaz.ToIdOps[java…

Scala コンパイラの動作をしりたいとき

Scala コンパイラの動作をしりたいとき implicit される過程を知りたいとき scalac のオプションに -Xprint: を付けるとコンパイラの動作が確認できる。 implicit の動作を知る場合には-Xprint:typer とするとよい。 Scalaz では implicit 多用されているの…

Scala 型パラメータによる 関数の一般化 例

Monoid, 型パラメータ, implicitを使った加算する関数の一般化 半年ぐらい前ですが、Scalaz の解説のプレゼンテーションである、 Scalaz Presentationという プレゼン動画を見ました。 Nick Partridgeさんというオーストラリアの方が、約1年半前に Scalazの…

play2 + mongodb で チュートリアルの todo list 作成してみる

play2 + mongodb を使う play2 で mongodb がSQLなデータベースと同じように使えるのか チュートリアルをもとに確認してみました。 題材としては チュートリアルにある TODO Listの DBを mongodb にしてみただけというものです。play2 で mongodb 使う leon/…

引数で返す関数が変わるクロージャ(のつもり)

引数で返す関数が変わるクロージャ by Scala 実用性はあると思いませんが、 class の代わりのようなことが Scala のクロージャ使って出来ないかをすこし試してみました。scala で javascript の return{ up : function(num){ i += num; }, get : function(){…

Scalaz7.0.0-M3では ApplicativeBuilder の |@| が deprecation となった

最近 scalaz がお気に入りでいろいろ試しているのですが、 昨日 scalaz-7.0.0-M3 に上げたところ、 |@| を使うと deprecation の 警告がでるようになりました。 scala> 1.some |@| 3.some warning: there were 1 deprecation warnings; re-run with -depreca…

Scala の学習を始めて6ヶ月経過

Scala の学習を始めて6ヶ月経過 今年の目標として関数型のプログラミングを身に付けようという目標を立てました。当初 関数型のプログラミングが出来る言語として、 F#が気になっていたのでF#の元になっている OCaml をはじめに学習し始めたのですが、 命令…

最長重複文字列問題 を scala をつかって解いてみる

先日 買った WEB+DB vol.67 の 「関数プログラミング」の中の記事 記事の中では Haskell を使って問題を解いているのですが、 scala の勉強の為 同じ問題を scala を使って考えてみました。まだ scala のお作法 わかってないので ドキュメント見ながらの結果…

sbtを使って intellij-IDEA のプロジェクトを作る手順 - Mac OSX -

2/18に「Scala初心者向けハンズオン勉強会」#scalahandson に参加しました。 主催者の皆さん 本当にありがとうございました。 その中の最初の 環境構築で sbt を使って intellij-IDEA のプロジェクトを作る手順を教えてもらいましたので、まとめておきます。…

TextMateの Scala bundle の導入

TextMate にScala Bundle を導入 TextMateに Scala 用の Bundle を導入しました。Bundle は こちらのBundle を使いました。 インストール方法 git clone git://github.com/mads379/scala.tmbundle.git open scala.tmbundle インストール後の設定 TextMateのS…

Eclipse に scala IDE をインストール

普段 Eclipse は使っていませんが、 Scala の プラグインをインストール。 最新の情報は http://scala-ide.org/download/current.html から Help -> Install New Software Work with に "http://download.scala-ide.org/releases-29/stable/site" を入力 Add…

再帰をつかって「誕生日問題」のプログラムを書いてみました。

誕生日問題 再帰使用版 先日は for をつかって 書いてましたが、 今回は 同じ問題を 再帰を使って書いてみました。 scala での初再帰(なんのこっちゃ)です。 def f( i:Int ):Double = { def ff( i:Int, acc:Double ):Double = i match { case _ if i == 0 …

簡単に for をためしてみました

簡単にためしてみました。 scala の for の動作を確かめる為、 ちょっと前の Web+DB の乱数思考 の記事であった 「誕生日一致問題」を scala で書いてみました。 もとは ruby で書かれているのですが、 簡単に 動作を見るだけなので、これが scala として正…