このページの記事一覧

2011年3月26日土曜日

Actor使ってみた

Scalaの勉強継続中。関数脳入門を読んでる。
Scalaの特徴的な機能は色々あると思うけど、とりあえずそのうちの1つであるActorを使ってみた。
んで、書いてみたのが↓のプログラム。
   1: package actor
   2:  
   3: import scala.actors._
   4: import scala.actors.Actor._
   5:  
   6: object ActorTest {
   7:  
   8:   def main(args: Array[String]) {
   9:     val receivers = createActor("F", "M", "N")
  10:     receivers.foreach(_.start)
  11:  
  12:     val sender = actor {
  13:       println("sender: sending a message...")
  14:       receivers.foreach(_ ! Unit)
  15:  
  16:       var finishCount = 0;
  17:       loopWhile(receivers.length != finishCount) {
  18:         react {
  19:           case m: String => {
  20:             println("sender: got the reply: " + m)
  21:             finishCount += 1
  22:           }
  23:         }
  24:       }
  25:     }
  26:  
  27:     sender.start
  28:   }
  29:  
  30:   def createActor(label: String*) = {
  31:     label.map(l => actor {
  32:       react {
  33:         case _ => {
  34:           println(l + ": receiver start")
  35:           (0 until 50).foreach(n => println(l + ": " + n))
  36:           reply(l + " done!")
  37:         }
  38:       }
  39:     })
  40:   }
  41: }

何か関数型言語っぽい!・・いや、どうだろう・・w
やっぱ高階関数は便利ですよね。


ちょっとずつScalaにも慣れてきたかなぁ・・。
ただListのメソッドとかが全然浮かばないからダメぽ。
以前から気にはしていたActorモデルとかいうのがどんなものなのかもぼんやり分かってきたので良い感じ。
パーサコンビネータとかは概念的なものは分かってきたけど全く手が動かないんだぜ。
いろんなプログラムを書いてみるしかないなー。

2011年3月13日日曜日

輪番停電(計画停電)についてのまとめ

3月14日(月)から東日本をグループ分けして時間区切って停電するみたいです。

いつまでというのは明言されてないみたいですが、少なくとも1週間は続く模様。

停電中冷凍食品とかピンチですよね?早めに準備をしておきましょう。

ちなみに病院や公共施設も変わらず停電対象のよう(技術的にそこだけ除くのは困難なようです)。

電車は複数の区域にまたがっているため大丈夫だろう、とのことです。

以下、グループ分けの情報

東京都:http://www.tepco.co.jp/images/tokyo.pdf

神奈川県:http://www.tepco.co.jp/images/kanagawa.pdf

千葉県:http://www.tepco.co.jp/images/chiba.pdf

埼玉県:http://www.tepco.co.jp/images/saitama.pdf

群馬県:http://www.tepco.co.jp/images/gunma.pdf

栃木県:http://www.tepco.co.jp/images/tochigi.pdf

茨城県:http://www.tepco.co.jp/images/ibaraki.pdf

山梨県:http://www.tepco.co.jp/images/yamanashi.pdf

静岡県:http://www.tepco.co.jp/images/shizuoka.pdf

 

<グループ毎の停電時間>

第1グループ 6:20~10:00

第2グループ 9:20~13:00

第3グループ 12:20~16:00

第4グループ 13:50~17:00

第5グループ 15:20~19:00

第1グループ 16:50~20:30

第2グループ 18:20~22:00

※第1グループと第2グループは一日に2回(都合7時間程度)の停電になります

 

参考:

http://www.yomiuri.co.jp/atmoney/news/20110313-OYT1T00556.htm

http://mainichi.jp/select/biz/news/20110314k0000m040101000c.html

2011年3月7日月曜日

Scala初め

コップ本を買ったのは結構前のことですが、未だに読み終えていません。

読む気がないのか?と言われるとそうではないはずなんですが。

で、以前はコマンドプロンプト上でREPL実行したりしてたんですが、この際Eclipse使っちゃおう!ということで、Scalaのプラグインを入れて環境を整えました。

以下その手順

※Eclipseの最新は3.6 Heliosですが、Scalaプラグインは対応していないため3.5 Galileoをインストールする必要があります。

 

1.何はともあれScala・・・?

はい、Scalaの公式サイトはこちら(http://www.scala-lang.org/)になります。

全部英語です。へこたれない。右側のメニューのDownload Scalaから落とせます。

The Scala Programming Language

だがしかし!実はいらないのだよ!

Scala IDE for Eclipse入れちゃえば別途入れなくても大丈夫なんだよ。

というわけで、REPL使いたいとかEclipse以外でコンパイルしたいとかじゃなければ1番はいりません(多分)。

 

2.Eclipse

続いてEclipse。前述したとおり3.5の必要がある。ついでに日本語化とか飛ばしたいので今回はPreiadesを入れることにする。

公式サイトはこっち(http://mergedoc.sourceforge.jp/)

Pleiades - Eclipse プラグイン日本語化プラグイン

というわけで、3.5のPreiadesを選択して、今回はJavaのStandard(JREなし)をダウンロード。

日本語化 Eclipse 3.5 Galileo ガリレオ

ダウンロードできたら解凍して適当な場所に置く。

今回は C:\pleiades-e3.5-java_20100226 にそのまんま配置。

ちなみにEclipse本体は C:\pleiades-e3.5-java_20100226\eclipse\eclipse.exe

ショートカットとか作っとくと後が楽。

 

3.Scalaプラグイン

仕上げにScalaプラグイン(Scala IDE for Eclipse)のインストール。

ここ(http://www.assembla.com/wiki/show/scala-ide)が公式サイト。

Home  Scala IDE for Eclipse Space  Assembla

左側の Getting Started をクリックすればインストール手順がちゃんと載ってます。

実際のインストールはEclipseのメニューからやるんですよ。

無題

Eclipseのヘルプ -> 新規ソフトウェアのインストール。

後は「http://download.scala-ide.org/update-current」のサイトを登録して、全部チェック入れてインストール!!(何でキャプチャがないかって?めんどk・・)

後は画面に従って OK とか はい とか押してれば勝手に再起動がかかって準備はおしまい。

 

4.Hello, Scala!

後はもう好きにしちゃえばいいんですよ。

Scalaプロジェクト作ってScalaオブジェクト作ればいいんですよ!

Eclipseのファイル -> 新規 -> その他。

無題2

一覧から Scalaプロジェクトを選択。次へ。

プロジェクト名は適当に入力して完了。すると新しいプロジェクト完成。

んで、srcフォルダの中にScalaオブジェクト(右クリック->新規->Scalaオブジェクト)を作成して、プログラム書いて実行!

無題3

 

・・ていうか、Scala触る人ってJava経験者だよね。

ってことはEclipseの使い方は一通り知ってる可能性が非常に大きいわけで、

結局このエントリは誰得?