なんじゃくにっき

プログラミングの話題中心。

Scala

Akka meetup

akka meetup (2014/09/28 17:30〜) akka meetup - connpass Akka meetupに行ってきました。 歌舞伎座タワーのドワンゴさんにお邪魔しました。 内容は偉い人が詳しく解説付きで書いてくれそうなのでサボります・・ コミッタのKonrad Malawskiさんのスライドは…

ScalaからLuceneを使ってみる

Java製全文検索エンジンのLuceneをScalaから使ってみます http://lucene.apache.org/ まずはプロジェクト定義 build.sbt name := "lucene_sample"version := "1.0"scalaVersion := "2.10.2"scalacOptions ++= Seq("-feature")libraryDependencies ++= Seq( "…

三値論理と群論

以前書いた二値論理を三値論理に拡張します。 二値論理の場合は、演算子は2^(2^2) = 16種類で済みましたが、 三値論理の場合は、演算子は3^(3^3) = 19683種類もあるので全てを書くと大変な量になるので対称性の高い物だけ。 三値論理については体系がいくつ…

Scalaでデータマイニングするためのライブラリ

メモ。 Scalaでデータマイニングするためのライブラリ。 Javaのも含みます。 【ScalaLab】 http://code.google.com/p/scalalab/ MATLABを意識して作られた科学計算環境(?) 実行可能jarで配布されている。 けどプロジェクトがsbtプロジェクトじゃない。 ス…

二値論理と群論

前回の続き 前回挙げた16種類の論理演算と、 {True, False}の2つの値からなる集合とがなす16種類の代数構造のうち、 どれがモノイドや群なのかを調べた。 以下S = {True, False}とする1. 全てはマグマである 演算の結果がやはりSに属するので16種類全てがマ…

16種類の論理演算

↓に乗っている2値論理の16種類の論理演算の2項演算子をScalaで書いてみた。http://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E6%BC%94%E7%AE%97ただ単純に実装するとつまらないので、真偽表を使う(= case文を使う)のは NANDだけにして、あとはNANDから導…

自分でよく使うsbtの設定雛形

・Eclipseプロジェクトにする ・/src/main/javaはいらない ・テストはScalatest %PROJECT_ROOT%/build.sbt name := "xxx"version := "1.0"scalaVersion := "2.10.0"scalacOptions ++= Seq("-feature")libraryDependencies += "org.scalatest" % "scalatest_2…

getOrElseUpdateOpt?

scala.collection.mutable.MapLike[A,B]のgetOrElseUpdateは戻り値の型がBだけど、 Option[B]で返すgetOrElseUpdateOptみたいなのが欲しくなった。 こんなの。 なんか他にいい方法があるきもする・・ trait MyMap[A, B] extends Map[A, B] { def getOrElseUp…

Scalaで集合論・代数 マグマ(Magma)

まとめはこっち前置き半群の前にマグマ(Magma)をやっておくのを忘れていました。 代数的構造まず、代数的構造というのは集合と演算の組です。 例としては【整数と整数上の加法の組】などです。 参考: http://ja.wikipedia.org/wiki/%E4%BB%A3%E6%95%B0%E7%9…

Scala勉強会 第100回に参加

昨日(3/20)はScala勉強会の記念すべき(?)第100回でした。 チームラボさんにお邪魔してきました! 内装が面白かったです。祝日ということでハッカソンでした。 折角5時間くらいコードを書いていたので、一応成果発表してきました(グダグダだったけど)…

Package Object と同階層にObjectを作ってstatic importしようとするとコンパイルエラー

Package Object と同階層にObjectを作ってstatic importしようとするとコンパイルエラーが発生。 再現コードは↓ package object hoge {} package hoge { object Hoge { type Piyo = Int } package huga { import hoge._ import hoge.Hoge._ } }hoge.hoge.Hog…

Scalaで集合論・代数 半群(SemiGroup)【2】

まとめはこっち前回のおさらい半群とは以下の条件を満たす集合Sと演算*の組のこと。 条件1. 集合Sが演算*に対して閉じている すなわち、S上の任意の元a, b に対して、演算結果 a * b は再び S に属する。 条件2. 集合S上の演算*は結合法則を満たす。 すなわ…

Scalaで集合論・代数 半群(SemiGroup)【1】

まとめはこっち 半群とは? Scalaで集合論・代数、ということで第一回は半群(SemiGroup)について勉強します。 そもそも半群とは何か・・というと、 群とか束とか環とかいった代数的構造から共通する性質を抜き出したものです。 先ず代数的構造ってナニ? …

Scalaで集合論・代数

代数を勉強する傍ら、プログラミングの世界ではその代数の表現がどう表せるかを Scalaで実装してみようと思います。 そもそも代数とは何か、とかいうようなことがあまり分かっていないレベルなので、 間違いがあったりするはずなので鵜呑み厳禁。 訂正・助言…

文字の出現頻度を数える

前回、英文に出現する単語の出現頻度を数えてみましたが、 今回は前回よりもさらに細かい単位、文字単位で分割してみます。 前置きとして、シャノンの情報量 の定義では、 確率pで起こる事象の情報量I(p)は I(p) = -log2p bit で与えられます。 簡単のため、…

単語の出現頻度を数える

英文に出現する単語の頻度を数えてみます。 とりあえずは形態素解析とか難しいことは使わずに、アルファベット以外の文字を区切り文字として単語を切り出します。 題材はシェイクスピアのハムレット。 何故か自然言語処理でよく使われます。 約400年前の文章…

形態素解析エンジンIgoをScalaから使う

日本語の形態素解析をScalaで行おうと思う。 日本語の形態素解析エンジンとしてはMecabが有名だが、 MecabはC++製なので、ScalaやJavaから使うにはJNIやらを使わないといけないのでイケてない。 ので、できればJava実装のものが好ましいのだが、幸いJavaで実…

ScalaのWebProjectでCoffeeScriptを使う

enchant.jsというJavaScriptのゲームライブラリがあります。 そのmeetupの会場から投稿。 どうせなら素のJSじゃなくてCoffeeScriptで書こうと思って、 CoffeeScriptを使えるようにしてみた。 CoffeeScripted Sbtというsbtプラグインを使います。 今回はサー…

Bowler Framework プロジェクト作成

※この記事は4月1日に書かれていますが四月莫迦的な要素は含まれておりません。タブンネ。Maybe. Bowler FrameworkというScala製のRESTfulフレームワークを使ってみます。 http://bowlerframework.org/ Twitter: @bowlerweb ざっくりいうと ・View : Scalate …

ScalaでCSVファイルをパース

ScalaでCSVファイルをパースしたいと思います。 CSVファイルっつっても形式がいっぱいあるんですが、ここでは 「区切り文字はカンマで各項目はダブルクオートで囲まれているのと囲まれていないのが混ざっている」 とします。 例)1,2,3,"4",5,"6,6",7 ダブル…

Scalaでjava.util.Enumerationを使うには

Scalaでjava.util.Enumerationを扱うときはimplicit conversionでIteratorとして扱ってしまうと便利。 こんな感じ↓ import java.util.Enumeration import java.util.Vectorobject Piyo extends App { implicit def enum2Iterator[T](e : Enumeration[T]) = n…

集合知 in Scala (2) Jaccard係数、Tanimoto係数、マンハッタン距離、ユークリッド距離、ピアソン相関係数

だいぶ間が空いたけどオライリーの「集合知プログラミング」をScalaで書いていきます。 前回はユークリッド距離だけやったけど、今回は2つのベクトル間の距離を表す係数をいくつか取り上げます。 そういや他にも「集合知プログラミング」をScalaで書いている…

ScalaでAndroid開発 sbt 0.11.2版

一年ぶりくらいにScalaでAndroid開発をしてみることにした。 sbtのバージョンとかも上がってるのでプロジェクト生成の仕方なんかも大分変わってるのでそのへんを書こうかと。 開発環境は CentOS 6.2 64bit jdk 1.6.0.30 scala 2.9.0.1 sbt 0.11.2 ■Android S…

Scalaでゲーム作り(3) lwjglプロジェクト

昨日書いたのだが、 NicolというScala製ゲームフレームワークのScala本体への対応が2.9.0までで、 Scala 2.9.1を使いたかったのでNicolをsbtの依存性管理から外して、 lwjglまでを管理するようにした。 以下、手順。 conscriptとgiter8が既に入っている場合…

Scalaでゲーム作り(2) Nicolを使ってHello, Worldまで

Scala製のゲームフレームワークでNicolというのを見つけたので使ってみた。 https://github.com/scan/Nicol lwjgl(Light Weight JoGL)を使っている2Dゲーム用ライブラリ。余談だが「Scala Nicol」でググるとNicole Scalaという人物ばっかりヒットする。 閑話…

集合知 in Scala (1)

オライリーの集合知プログラミングを買ってきた。 理解を深めるために、Scalaでコードを書きながら読み進めようと思う。 まずは、ユークリッド距離によるスコア。 要はn次元ベクトル2つを比較した際に、 2つのn次元ベクトルを(a1, a2 .... an-1, an), (b1, b…

モンテカルロ法でπを求めるサンプル

モンテカルロ法でπを求める。 無限リストを使って書いてみた。 import util.Random import math._val n = 10000 val stream = Stream continually Random.nextDouble() zip (Stream continually Random.nextDouble()) val len = stream take n filter(x => (…

Lispはじめました

Lispはじめた。 Scala => Haskell => Lisp と逆行して勉強して行ってる感じ。 『はじめての人のためのLisp』を買ってきた。 対話形式の本で、ささっと文法を押さえるには不向きだが、読んでて面白い。 情報科学以外の広い知識が滲み出ている。 ファインマン…

ScalaからRを使う

表題の通り、ScalaからRを使ってみます。 JRI(Java R Interface)というライブラリを使います。 手順説明を超適当に・・ まず、Rをインストールします。 環境変数R_HOMEにRをインストールしたディレクトリを設定します。 %R_HOME%\binにPathを通します。 OSが…

DelayedInitを逆コンパイルしてみる

DelayedInitトレイトについてのブログ記事を見かけた http://d.hatena.ne.jp/Kazuhira/20110605/1307266403 のでどうなってるのかと思って逆コンパイルしてみた。 こういうScalaコードからできたclassが・・package aclass Delayed(value: String) extends D…