2008-01-01から1ヶ月間の記事一覧

http://www.rubyist.net/~matz/20080129.htmlを読んで思うこと、 「言語」というものは、自然言語、プログラミング言語を問わず、 「思考」を方向付けるものであり、「文化」を導出するものである。 思考と文化は、考える葦である文化的存在な「人」にとって…

Ruby(そしてScala) Redditができたという話

via Matz日記:http://www.rubyist.net/~matz/tb.rb/20080126海外では、Ruby、Scalaとも結構盛り上がってきているのかな? 日本もがんばろう!・Scalaで、さらに、トップページから「Scala」で検索した結果がこれ・reddit.com: search results - scala

あえて、要望など・・・

まだほんの2ヶ月ほどしか触っていないのだが、 Scalaは「かなりイイ」と言う事はよくわかった。 簡潔な記述、十分な性能、拡張性、将来への期待・・・ で、あえてここで、Scalaに望みたいことを考えてみた。 (大きなところから小さなところまで、思いつい…

正規表現についてのアイデア

正規表現を hoge\/\. の様に表記できれば、 「\\.」を「\.」と 「\\\\」を「\\」と 書けるね・・・

CodeReposに参加しました。

http://coderepos.org/share/の、 http://svn.coderepos.org/share/lang/scala/sandbox/ 内に手持ちをいくつかコミットしました。みんなで、持ち寄ってScalaを遊び倒しましょう。 (もちろん、仕事にも使いたい!!)簡単なルールが ここ→http://coderepos.o…

正規表現クラス

すこし、拡張した。 package ryugate.text import java.util.regex.Pattern import java.util.regex.Matcher object Regexp { class RyuString(str:String) { def re_match(re:String) = Regexp.re_match(re, str) } implicit def string2ext(self:String) =…

Specsを使ってみる。

正規表現クラスのテストをするために、Specs - http://code.google.com/p/specs/ を使ってみる。 基本的には下記の様なスペックコードとRunnerを書けば動く import org.specs.runner.SpecsFileRunner object SpecsRunner extends SpecsFileRunner("src/**/*.…

正規表現

Ruby ライクな正規表現クラスを作り始めてみる。 package ryugate.text import java.util.regex.Pattern import java.util.regex.Matcher class Regexp(ptn:Pattern) { def this(str:String) = this(Pattern.compile(str)) def re_match(str:String):Matcher…

Jetty+Velocityを実験してみた

ScalaのXMLモードは少々癖がある <br />が<br></br>になるので。 Velocityを使ってみた。以下はそのコード、 import java.io.PrintWriter import javax.servlet.http.HttpServlet import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletRespo…

BoxedArrayがらみの挙動

詳しくはhttp://www.lingr.com/room/scala-jaを参照の事# val arr = Array("1", "2") を実行したあと、arrはBoxedArrayのサブクラスだが、 # context.put("array2", arr) にて、putに渡されるときに(コンパイラによって?)自動的に Stringに変換される。 …

今日の授業

昨日に引き続き、Scala-ja(at Lingr)より、 勉強させていただいております。 可変長引数の使いかた def hoge(i:int, args:Any*) = { println(args.getClass) } argsは「scala.runtime.BoxedObjectArray」と言う、 ちょっと特殊(具体的な違いはちょっと不明…

クラスオブジェクトの取得

LingrのScala-ja(http://www.lingr.com/room/scala-ja)で教えていただきました。 classOf[T] で得られます。これは、PreDefで以下のように定義されています。 // classOf /** Return the runtime representation of a class type. */ def classOf[T]: Class …

Jettyでサーバ起動

とりあえず、動くところまではいきました。 import java.io.PrintWriter import javax.servlet.http.HttpServlet import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletResponse import org.mortbay.jetty.Connector import …

BufferedImageのSerialize

結構大変だぁ! と言うことであっさり方向転換して、 Jetty6を使ってRESTで通信してみることにした。 現在Jetty6.1.7をダウンロード中なのですが、 なんだかとってもサーバが遅いのね・・・

Remote Actor

すぐ終わると思ってたのだが、 ・Remote Actorとは、Serializeできるオブジェクトしか、やりとりできない。 にぶつかった。Serializableをimplementするにはどうすればよいんだ?面倒になったので、今日はこれまで。

テストも書いてゆこう

ということで、とりあえずメモ。JUnit 5 Google Code Archive - Long-term storage for Google Code Project Hosting. Google Code Archive - Long-term storage for Google Code Project Hosting.

連番画像作成アプリ(Actor版)

Actorを利用して、マルチコア環境で高速化する(はずの)ものにしてみた。「actor { ... }」って、Rubyのthreadの様に書けるので便利ね、 この場合「loop { ... }」の存在が生きてくるように感じる。あと、senderがあるので、 erlangみたいに、わざわざself…

実践1:連番画像を作成する

今まで作った、クラスを使って、 (少し)実用的なプログラムを作ってみた。 実行すると、カレントディレクトリ内の 「images」ディレクトリ内に、画像を自動作成します。後は、これをなんらかのツールで動画にするのだが、 いっそのこと、JMFでもつかって、…

関数定義について

def hoge() { "hoge" } と def piyo() = { "piyo" } の違いは def hoge() { "hoge" } は返り値が無い。 ということ。ブロックに名前を付けている(バインドしている)感じかな? 対話環境で実験するとわかりやすい。もちろん、戻り値を明記した場合は、 def …

sprintf

Scalaでのちょうどいいsprintf実装がみつからなかったので、 java.lang.String.format を少し使い易くしてみた。まったく、パターンマッチ様々な感じ。args:List[a]と書かなければならないところは完全に理解していないけど、 いまのところはスルーしておく…

コンストラクタ

クラスのコンストラクタの中では、valや、if..elseなどが(きっと他にもいろいろ)使えない模様。実はこちらのページを参考にタイムコードを表すクラスと書いてみたのだけれど、 上記の制限(仕様?)にぶちあたりまして、 んでしょうがないから、ファクトリ…

疑問など

今まで少しいじってきて、感じたことをメモ Actorクラスのact関数の定義のしかたについての疑問 act関数を def act() = { : } だけでなく def act() { : } と「=」が無くてもよいのはなぜ?(仕様書を見てもわからん??) 無名関数を引数に関数を呼ぶときの…

Scala de image

勉強をかねて作り中 以下のように画像生成できる奴 import ryugate.image._ import java.io.File import java.awt.Color object graph_test extends Application { val img = new Image(300,200) img.process { g.setFont("IPAGothic", Font.BOLD, 20) g.set…

FizzBuzz

を書いてみた object fizzbuzz extends Application { def main(n:int, ans:List[String]):List[String] = n match { case 0 => ans case _ if (n%3 == 0) && (n%5 == 0) => main(n-1, "Fizz Buzz" :: ans) case _ if (n%3 == 0) => main(n-1, "Fizz" :: ans…

Actors Ring

今度はRingにしてみた。 import scala.actors._ import scala.actors.Actor._ import java.lang.management._ object actor_ring extends Application { class myactor(no:int, nb:Actor, d:Boolean) extends Actor { var neighbour:Actor = nb var dec:bool…

Scalaな新年

新年早々、Scalaでの実験を繰り返す。 かなり、わかってきた。 200万のプロセス(Actor)をチェインしての実験などをしてみる。 ヒープのサイズを768M程度にしてやれば問題なく動く模様。コンパイルが面倒になったので、 ついでにRakeの実習も兼ねられて…