image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2007年4月 | トップページ | 2007年6月 »

2007-05-31

ピックアップ: Ruby/Tk Primer, 次世代の3D地図サービスいろいろ, etc...

Linux world にいく時間がとれない!

- http://www.macdevcenter.com/pub/a/mac/2004/06/25/ruby_pt1.html
> > MacDevCenter.com -- Ruby/Tk Primer: Creating a <i>cron</i> GUI Interface with Ruby/Tk

- http://www.comsearch.jp/release/archives/2007/05/agendablog.html
> > 社内ブログパッケージ『Agenda.BLOG』の提供を開始 ComSearch プレスリリース(無料記載)

- http://d.hatena.ne.jp/Rommy/20070514/1179164848
> > 半隠遁日記 - 分散DB対応ライブラリ Magic Multi-Connections を試してみる

- http://www.popxpop.com/archives/2007/05/google_maps3d.html
> > Google Mapsだけじゃない?次世代の3D地図サービスいろいろ | P O P * P O P

- http://gigazine.net/index.php?/news/comments/20070539_yoggie_pico/
> > USBメモリで動作するハードウェアファイアウォール「Yoggie Pico」 - GIGAZINE

USB に xfy を入れて、OS を問わず、サクサクと編集作業はできなくていいからっ各種の xml, html, text, PDF, MSOffice 文書 などを閲覧できるようになるといいなぁ。

- http://gigazine.net/index.php?/news/comments/20070530_lina/
> > LinuxのプログラムをWindowsやMacOS X上で動かせる「Lina」 - GIGAZINE

| | コメント (0) | トラックバック (0)

2007-05-30

ピックアップ:砂の彫刻がすごい、Java6でLogger.globalが非推奨, etc...

- http://d.hatena.ne.jp/ramyana/20070529/1180431058
> > 19790401173.4 - Ruby + Rails + Windows + MeCab

- http://diaspar.jp/node/150
> > XPath と繰り返し処理 | Diaspar Journal

- http://portal.nifty.com/2007/05/29/b/
> > @nifty:デイリーポータルZ:砂の彫刻がすごいことになっていた

- http://www.100shiki.com/archives/2007/05/listening_to_words.html
> > 教育コンテンツのみを対象とした検索エンジン『Listening To Words』 | 100SHIKI.COM

- http://blogs.itmedia.co.jp/hiranabe/2007/05/ruby_x_agile_27f0.html
> > Ruby x Agile まつもとさん、角谷さん、平鍋の鼎談 - An Agile Way [ITmedia オルタナティブ・ブログ]

- http://blogs.msdn.com/brian_jones/archive/2007/05/29/simple-spreadsheetml-file-part-3-formatting.aspx
> > Brian Jones: Open XML Formats : Simple SpreadsheetML file Part 3 - Formatting

- http://d.hatena.ne.jp/nowokay/20070529#1180430016
> > きしだのはてな: Java6でLogger.globalが非推奨になっている

- http://zen.seesaa.net/article/43222888.html
> > メディア・パブ: Googleイメージ検索,ちょっと便利な小技が使える

- http://ohnishi.livedoor.biz/archives/50316343.html
> > 大西 宏のマーケティング・エッセンス:グループ・インタビュー 10のポイント - livedoor Blog(ブログ)

| | コメント (0) | トラックバック (1)

多重キーのハッシュのためのよいパッケージがどこかにないか?

多次元配列で、その添字が、ハッシュになるようなものが欲しい、
すでにどこかによいライブラリーはないかなぁ。

ruby で単純に考えるなら、kye がハッシュになっているハッシュということでいい。

vals ={
  ['A','a']=>2,
  ['A','b']=>12,
  ['B','a']=>'Ba',
  ['B','b']=>99,
}

p vals
puts vals[['B','a']]

vals.each_pair { |k,v|
  puts "#{k}: #{v}"
}

実行結果はこんなふうになる。

{["A", "a"]=>2, ["A", "b"]=>12, ["B", "a"]=>"Ba", ["B", "b"]=>99}
Ba
Aa: 2
Ab: 12
Ba: Ba
Bb: 99

欲しい機能は、key に曖昧な条件をつけて、サブセットを得るというものだ。
vals.select(B='b') 
  key が Ab, Bb のものが返る。

vals.select(val=99)
  val が 99 のものが返る。

RDB でいえば、 select * from * 文そのものだが。

REBを持ち出さずに、メモリー上だけ処理をしたい...

実装は ruby か java のものが欲しい。
xfy/xvcd からの利用を考えているからだ。

| | コメント (0) | トラックバック (0)

2007-05-29

ピックアップ: ブロガーの解雇の危険, R25 デジタル雑誌, etc...

- http://www.machu.jp/diary/20060727.html
> > まちゅダイアリー - irb で覚える共通鍵暗号 (AES)

ruby での暗号処理を勉強してみるかなぁ。
xfy/xvcd から利用することで、xfy に多彩な暗号処理を組み込めるかもしれない。

- http://www.itmedia.co.jp/enterprise/articles/0705/28/news046.html
> > ITmedia エンタープライズ:ブロガーの4割に解雇の危険?

- https://www.fujisan.co.jp/magazine/1281681904/
> > R25 デジタル雑誌-雑誌のネット書店 Fujisan.co.jp

R25 のデジタルは配信があるとは知らなかった...
フリーペーパーの有効活用 (発行者側、読者側) はまだまだいろいろ考えられそうです。

- http://slashdot.jp/articles/07/05/28/1225254.shtml
> > スラッシュドット ジャパン | Mona OS が関数型言語 Scheme のシェルを搭載してリリース

シェルにもまだまだイノベーションの可能性はある?

- http://www.itmedia.co.jp/enterprise/articles/0705/24/news051.html
> > ITmedia エンタープライズ:Googleは方向を誤った? Dell PCに潜む「スパイウェア的」ソフトに疑問の声

- http://itpro.nikkeibp.co.jp/article/OPINION/20070521/271639/
> > APOPのぜい弱性で見えてきたMD5の「ご臨終」:ITpro

- http://plusd.itmedia.co.jp/pcuser/articles/0705/18/news078.html
> > ITmedia +D PC USER:AV-Test研究員インタビュー:国内セキュリティソフトの“格付け”は、ちょっとヘン? (1/2)

- http://www.atmarkit.co.jp/fnetwork/rensai/5minwlansec/01.html
> > ニンテンドーDSで学ぶ無線LANのセキュリティ − @IT

- http://internet.watch.impress.co.jp/cda/news/2007/05/16/15719.html
> > ファイルを“人質”にして金銭を要求するウイルスを懸念、Kaspersky氏

| | コメント (0) | トラックバック (1)

2007-05-28

ピックアップ: RubyCocoa, 仕事のやり方を180度変える, etc...

映画 "ロッキーファイナル" を観た。悪くはないが、何かが足りない。
もしかしたら悪人が出てこない事かも知れない。

- http://www.moongift.jp/2007/05/rubycocoa/
> > MOONGIFT: » RubyでCocoaアプリケーション「RubyCocoa」:オープンソースを毎日紹介

- http://www.popxpop.com/archives/2007/05/180.html
> > 仕事のやり方を180度変えるためのヒント | P O P * P O P

- http://lifehacking.jp/2007/05/7-way-to-crank-out-articles/
> > ブログ記事を大量に書き続ける7つの方法 | Lifehacking.jp

- http://ruby.gfd-dennou.org/tutorial/ruby-ext/
> > Ruby拡張ライブラリ作成チュートリアル

| | コメント (0) | トラックバック (0)

ピックアップ: セカンドライフは使えるかもしれない, FLASH XMLイメージギャラリー, etc...

5月でこの暑さ! 今年の夏は最高気温はどこまでいくだろう。水不足も心配だ。

- http://d.hatena.ne.jp/ku-ma-me/20070527/p1
> > まめめも - rirb : remote irb

- http://kirik.tea-nifty.com/diary/2007/05/post_ecca.html
> > 切込隊長BLOG(ブログ): セカンドライフは使えるかもしれない

- http://e0166.blog89.fc2.com/blog-entry-186.html
> > フリーで使えてカテゴリ分けも出来るクールなFLASH XMLイメージギャラリー*ホームページを作る人のネタ帳

| | コメント (0) | トラックバック (0)

2007-05-27

racc で xvcd を生成することを試し始めた

racc の参考書として上の本を買ってきた。(racc とは ruby 版 yacc)

第1章の例に対して、ちょっと手をいれて、xml を吐くようにしてみた。
(まだまだ、全然ゴールには遠いが、xfy/xvcd 風の xml を出す第一歩としては十分でしょう。変数の扱い、コマンド定義、条件文 などをサポートしていこう...)

現状はこんな感じ。
-----------

$ cat src
message = "test ok"
puts( "abc", "xyz" )

-----------

$ ruby main.rb src          
<instruction:variable name="message" select="'test ok'"/>
<instruction:message>
  <xvcd:value-of>abc</xvcd:value-of>
  <xvcd:value-of>xyz</xvcd:value-of>
</instruction:message>

ソースは以下。

---------
$ cat intp.y

class IntpParser
rule

  program :
          | program stmt EOL

  stmt    : funcall
          | assign

  funcall : IDENT '(' args ')'
              {
                result = do_funcall( val[0], val[2] )
              }
          | IDENT '(' ')'
              {
                result = do_funcall( val[0], [] )
              }

  args    : primary
              {
                result = val
              }
          | args ',' primary
              {
                result.push val[2]
              }

  assign  : IDENT '=' primary
              {
                result = do_assign( val[0], val[2] )
              }

  primary : IDENT
              {
                result = do_varref( result )
              }
          | NUMBER
          | STRING

end

---- inner
  require 'rubygems'
  require 'builder'

  def initialize
    @builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2)
    @vtable = {}
  end

  def parse( f )
    @q = []

    f.each do |line|
      line.strip!
      until line.empty? do
        case line
        when /¥A¥s+/, /¥A¥#.*/
          ;
        when /¥A[a-zA-Z_]¥w*/
          @q.push [ :IDENT, $&.intern ]
        when /¥A¥d+/
          @q.push [ :NUMBER, $&.to_i ]
        when /¥A"(?:[^"¥¥]+|¥¥.)*"/
          @q.push [ :STRING, eval($&) ]
        when /¥A./
          @q.push [ $&, $& ]
        else
          raise RuntimeError, 'must not happen'
        end
        line = $'
      end
      @q.push [ :EOL, nil ]
    end

    do_parse
  end

  def next_token
    @q.shift
  end

  def do_funcall( func, args )
    if func == :puts
       @builder.tag!("instruction:message") {
         args.each do |k|
           @builder.tag!("xvcd:value-of", k)
         end
       }
    end
  end

  def do_assign( vname, val )
    @builder.tag!("instruction:variable", "name"=>"#{vname}", "select"=>"'#{val}'")
  end

  def do_varref( vname )
    @vtable[ vname ] or raise NameError, "un-initialized variable #{vname}"
  end

---- footer

parser = IntpParser.new
if ARGV[0] then
  File.open( ARGV[0] ) do |f|
    parser.parse f
  end
else
  parser.parse $stdin
end

| | コメント (0) | トラックバック (0)

java クラスローダを利用する例を作成した

java クラスローダを利用する例を以下に置いた。

- http://homepage2.nifty.com/youichi_kato/src.html
> > java のクラスロード (plugin 機構と、クラス再ロード)
    plugin-2007-05-27.tgz(2007-05-27)
    00README.txt(2007-05-27)

これは、blog 機能の投稿した内容の plugin 機構の例と、クラス定義ソースコードを編集すると自動で compile/再ロードする例 を組み合わせてみた物だ。

グラフを描くアプリで、
数式 Editor/解釈処理を作らず 直接 関数処理を java コードで定義させてしまうという利用法も考えられる。

ここでつかった dynacode (自動再ロード)の仕組みは、そのまま xfy でも利用できると思う。

| | コメント (0) | トラックバック (0)

2007-05-26

java classloder の利用記事

- http://www.javaworld.com/javaworld/jw-06-2006/jw-0612-dynamic_p.html?page=1
> > Add dynamic Java code to your application - Java World

この記事では、特定の folder に置いた java ソースを編集すると、自動的に compile してクラスを再ロードする例が示されている。

- http://codezine.jp/a/article/aid/487.aspx
> > CodeZine:Javaのクラスローディングを制御する(java, クラスローディング, フレームワーク)

- http://codezine.jp/a/article/aid/1271.aspx
> > CodeZine:プラグインで拡張できるJavaプログラムを作る(プラグイン, java)

- http://www.nminoru.jp/~nminoru/java/class_unloading.html
> > Java のクラスアンロード (Class Unloading)

xfy はプラグイン機構を持っている。
上の一番目の記事の方式もサポートするとよいかもしれない。
xfy を再起動しなくても、xvcd ファイルを編集するとすぐに再表示しなおすとか、java で書いたプラグインソースの編集が有効になるとか...
さらには、xvcd, java とは別のシンタックスの言語で 文書の雛形/プラグインを記述すると、
javaソース/xvcd ファイル/初期 xml ファイルを生成し、
プラグインのコンパイル/再ロード が行なわれ、初期文書が表示がされる
と good。
つまり xfy on rails だな。

このあとはピックアップを。

- http://i.loveruby.net/ja/lldn/
> > LLDN / キミならどう書く規定部門 Ruby 編

- http://blog.antenna.co.jp/PDFTool/archives/2007/05/26/#000699
> > PDF 千夜一夜: 2007年05月26日 アーカイブ: xfyの未来は?

- http://hint.at.webry.info/200705/article_21.html
> > 問題点の多い現場と問題点の少ない現場 経営のヒント/ウェブリブログ

- http://d.hatena.ne.jp/hmiyaza1/20070525/1180078958
> > Forgot the Milk. - これは楽しい!10秒でWeb2.0風のボタンをサクサク作れちゃうボタン・ジェネレータ・サービス | My cool button

| | コメント (0) | トラックバック (0)

2007-05-25

ピックアップ:jQuery 開発者向けメモ, 自由なWebツール「PositLog」, etc...

- http://bcj.way-nifty.com/xbrl/2007/05/edinet_xbrl_bf59.html
> > XBRLと内部統制、J-SoX: EDINET XBRLパイロット説明会盛況

- http://technohippy.developer.drecom.jp/blog/articles/275
> > スペル修正プログラム Ruby版 - Spirit of Apprenticeship (みならいだましい)

- http://recompile.net/2007/05/jruby.html
> > JRubyのコンパイルについてちょっと調べてみた (recompile.net)

- http://www.atmarkit.co.jp/news/200705/22/java.html
> > Javaの父、Java以外の開発言語を語る − @IT

- http://sqs-xml.sourceforge.jp/
> > Shared Questionnaire System

- http://journal.mycom.co.jp/special/2007/javafx/index.html
> > 【特集】体験! JavaFXの世界 - "Javaが放つRIAプラットフォーム"の魅力を徹底解説 (1) あらゆるデバイスで実行可能なリッチなアプリケーションUIを実現 | エンタープライズ | マイコミジャーナル

- http://www-06.ibm.com/jp/developerworks/xml/library/x-ajaxjquery.shtml
> > IBM jQuery を使って Ajax 開発を単純化する - Japan

- http://www.mikage.to/jquery/
> > jQuery 開発者向けメモ

- http://gamenokasabuta.blog86.fc2.com/blog-entry-177.html
> > かさぶた。 増えるセカンドライフ終わった論

- http://e0166.blog89.fc2.com/blog-entry-182.html
> > ブログのページビューを3倍にする8つの秘訣*ホームページを作る人のネタ帳

- http://kokogiko.net/m/archives/002011.html
> > ここギコ!: 「それ××でできるよ」が通用しない企業文化が悲しい

- http://www.100shiki.com/archives/2007/05/pdfdocufarm.html
> > PDFやワードファイルをウェブ上で閲覧できる『DocuFarm』 | 100SHIKI.COM

xfy で作った文書を ウェブ上で閲覧 で閲覧できるようにするにはどうしたら良い?

- http://db2.jugem.cc/?eid=1105
> > Unofficial DB2 BLOG | 使いやすいSQL実行環境「黒猫 SQL Studio」

- http://www.moongift.jp/2007/05/positlog/
> > MOONGIFT: » 必見!物凄く自由なWebツール「PositLog」:オープンソースを毎日紹介

| | コメント (0) | トラックバック (2)

ピックアップ:キャプチャを利用した人力高性能OCR, rubyで暗号化文字列, etc...

- http://labs.cybozu.co.jp/blog/akky/archives/2007/05/recaptcha-human-group-ocr.html
> > 秋元@サイボウズラボ・プログラマー・ブログ: reCAPTCHA - キャプチャを利用した人力高性能OCR

- http://rakuto.blogspot.com/2007/05/ruby-memoizationrubymemoize.html
> > Young risk taker.: [Ruby] MemoizationのRubyによる高機能な実装Memoizeを作った。

- http://labs.unoh.net/2007/05/ruby.html
> > ウノウラボ Unoh Labs: rubyで手軽に暗号化文字列やハッシュ値を生成

- http://codezine.jp/a/article/aid/1329.aspx
> > CodeZine:REXML:RubyによるXML処理(XML解析)

| | コメント (0) | トラックバック (0)

xfy でのアプリ作成のデザインパターンや Hack のページはないのか?

xfy でのアプリ作成は、既存の発想とちょっと頭を切り替える必要がある。
xfy,xvcd, java を組み合わせる上でのデザインパターンや、tips/hack の情報が必要だ。
まだそういったページ/サイトが無いなら、自分でつくるか?

例えば、
  xvcd:text-of は他の要素を依存を持たない編集には向く。
  でも 別要素と関係があり編集結果のチェック/更新反映が煩雑になる場合は、ダイアログを使うのがよい。

  ダイアログを使うときは、ダイアログ用の xml を用意するのがよい。
  そして、その xml を直接 xvcd で処理することは避ける。
  xml に相当する java クラス(DOMではなく、必要な操作に特化したメソッドをもった) を用意し、そのインスタンス上で操作をするようにする。
  当然 ダイアログを [OK] ボタンで閉じる時は、ダイアログ用の java インスタンスから srcDOM に値を反映させるようにする, ...

なんて、いろいろネタはある。
サンプルコードや図と共に示していかないと...

| | コメント (0) | トラックバック (0)

2007-05-24

ピックアップ:情報処理推進機構 プレス発表, JavaVM上で動く言語, etc...

- http://www.ipa.go.jp/about/press/20070523.html
> > 情報処理推進機構:プレス発表

- http://d.hatena.ne.jp/mitsygh/20070523/1179899976
> > ふログ - なんて読むんだろう?えくすたる?

- http://www.mgsoft.org/jikanbae/blog/archives/2007/05/javavm.html
> > JavaVM上で動く言語 (丸井.net)

- http://d.hatena.ne.jp/emergent/20070523/1179848200
> > にたまごほうれん草 - JRubyでgem

- http://www.popxpop.com/archives/2007/05/2007_3.html
> > あなたはわかる?「錯覚コンテスト2007」の最優秀作品とは? | P O P * P O P

- http://pc.nikkeibp.co.jp/article/NPC/20070523/271935/
> > 韓国で「セカンドライフ」が盛り上がらないわけ:日経パソコンオンライン

- http://labs.cybozu.co.jp/blog/akky/archives/2007/05/invisibilia.html
> > 秋元@サイボウズラボ・プログラマー・ブログ: Invisibilia - 人物を線画に

- http://d.hatena.ne.jp/t_yano/20070523/1179929891
> > 矢野勉のはてな日記 - Google Trendsが面白いよ

- http://www.ariel-networks.com/blogs/tokuriki/cat36/cat37/aboutme.html
> > アバウトミー (ブログをSNSにするプロフィールサービス) : ワークスタイル・メモ

- http://bany.bz/tamtam33/entry_70344.php
> > ◆題名のない日記◆:  米国の高校生、自宅で手製の核融合炉(原子炉)を作る

| | コメント (0) | トラックバック (1)

2007-05-23

racc で xvcd を吐き出す言語を設計しようかな

java の世界には javacc という コンパイラコンパイラがある。
ruby では、racc というものがあることを知った。

- http://www.mnet.ne.jp/%7Etnomura/racc.html
> > Racc で遊ぼう

別の言語を設計して、実行結果として xvcd を吐き出すような処理系をつくったらどうだろう。
ミニ言語設計といえば、コンパイラコンパイラを使ってみたいものだ。

その言語上で差分プログラミングをサポートすることで、xvcd の再利用や継承利用を可能のしようというもくろみだ。

あるいは、xfy の java での xpath 関数実装や、インストラクション実装を吐き出すという案もある。

| | コメント (0) | トラックバック (0)

ピックアップ: jruby 1.0.0.RC2 ,Javaのみで記述するビルドツール, etc...

- http://dist.codehaus.org/jruby/
> > jruby-src-1.0.0RC2.tar.gz   16-May-2007 19:49
と jruby 1.0.0.RC2 が出ているのに気がついた。

- http://blogs.msdn.com/brian_jones/default.aspx
> > Brian Jones: Open XML Formats

- http://d.hatena.ne.jp/t_yano/20070522/1179857725
> > 矢野勉のはてな日記 - JRubyがなぜ速いといわれているか:JRubyはJITコンパイラを組み込もうとしているから

- http://gasuki.seesaa.net/article/42493511.html
> > …が好き!: セカンドライフ:東京タワーとAKB48

- http://japan.cnet.com/news/media/story/0,2000056023,20349323,00.htm
> > 情報の“流れ”が変わる--イベント「Business Blog & SNS World 07」開催 - CNET Japan

- http://japan.zdnet.com/oss/story/0,3800075264,20349166,00.htm
> > Ant/Mavenに続け—Wicketコミッタ、Javaのみで記述するビルドツール開発中 - ZDNet Japan

- http://www.rubyist.net/~matz/20070515.html#p03
> > Matzにっき(2007-05-15): コードが複雑になってくると、新規蒔き直しをしたくなるのは世の常だが、そういう試みはたいていうまくいかない。

- http://takekuma.cocolog-nifty.com/blog/2007/05/post_81b3.html
> > たけくまメモ : 昨日今日のアクセスはすごい

- http://opentechpress.jp/news/article.pl?sid=07/05/22/0913245&from=rss
> > Open Tech Press | ウイルス:OpenOfficeを狙う、Win、Mac、Linuxに感染

- http://blogs.itmedia.co.jp/mm21/2007/05/post_98d3.html
> > 図で整理する際に陥りがちな罠 - 永井孝尚のMM21 [ITmedia オルタナティブ・ブログ]

| | コメント (0) | トラックバック (2)

2007-05-22

ruby cairo で svg を生成してみた

http://jp.rubyist.net/magazine/?0019-cairo
るびま 19号の cairo: 2 次元画像描画ライブラリ の記事中の最初のサンプルは
png を出力するものだが、これを svg 出力に変更してみた。

----------

cat hinomaru-svg.rb
# See http://jp.rubyist.net/magazine/?0019-cairo

require "rubygems"
require 'cairo'

width = 300
height = 200
radius = height / 3

surface = Cairo::SVGSurface.new('hinomaru.svg', width, height)
context = Cairo::Context.new(surface)

#
context.set_source_rgb(1, 1, 1)
context.rectangle(0, 0, width, height)
context.fill

#
context.set_source_rgb(1, 0, 0)
context.arc(width / 2, height / 2, radius, 0, 2 * Math::PI)
context.fill

context.show_page
surface.finish

---------

$ cat hinomaru.svg   
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300pt" height="200pt" viewBox="0 0 300 200" version="1.1">
<defs>
<clipPath id="clip0">
  <rect width="300" height="200"/>
</clipPath>
</defs>
<g id="surface0" clip-path="url(#clip0)">
<path style="stroke: none; fill-rule: nonzero; fill: rgb(100%,100%,100%); opacity: 1;" d="M 0 0 L 300 0 L 300 200 L 0 200 Z M 0 0 "/>
<path style="stroke: none; fill-rule: nonzero; fill: rgb(100%,0%,0%); opacity: 1;" d="M 216 100 C 216 136.45079 186.45079 166 150 166 C 113.54921 166 84 136.45079 84 100 C 84 63.54921 113.54921 34 150 34 C 186.45079 34 216 63.54921 216 100 "/>
</g>
</svg>

jruby でも実行しようとおもったが、
gem install cairo で、mkmf が無いとかのエラーでインストールできない...
ruby の lib 以下には mkmf.rb はあるが、jruby の lib 以下に mkmf.rb が無い。

| | コメント (0) | トラックバック (0)

Youtube を扱える ruby API, Rubyで作るProlog処理系, etc...

Youtube を扱える ruby API があることを知った。

- http://d.hatena.ne.jp/t-imaizumi/20070207/1170814526
> > t-imaizumiのMacとかのはなし - YouTubeのAPIを使ってみる。

このページによれば、他にもおもしろそうな API がたくさんあるようだ。

xfy 実験室 (http://xfy.justblog.jp/labs/ )で、 こういった ruby/perl のライブリーを利用した例も取り上げてみて欲しいなぁ。

ああ、こんな例も見つけた。
- http://codezine.jp/a/article/aid/461.aspx
> > CodeZine:Rubyで作るProlog処理系(Ruby, Prolog, 自動推論, 記号処理)

先日、"yaml <-> xml の相互変換 (名前空間に対応)"
http://youichi-kato.cocolog-nifty.com/blog/2007/05/xaml_xml_1777.html
を投稿した。
これを作っていて、思いついたことが1つある。
xfy の xvcd を ruby をつかって生成するのだ。

ちょっとした条件判定は if ()...else()  のような書式で書いておいて、
ruby で変換させるようにするとか...
また、共通で使う xvcd 記述を #incllude "lib/foo.xvcd" みたい記述しておいて、
ruby で include を展開させた結果を生成するとか...

ともかく xvcd の差分プログラミングを可能にする手法を構築したいものだ。
そのための手段 として、java でなく ruby のようなスクリプトを使うのが楽な気がする。

| | コメント (0) | トラックバック (0)

2007-05-21

ピックアップ: IBM's BPM Simulator, Java SE 6 時代のHelloWorld, etc...

- http://d.hatena.ne.jp/gan2/20070520/1179662167
> > gan2 の Ruby 勉強日記 - Firemacs を導入

- http://www.nslabs.jp/rb2html.rhtml
> > Netsphere Laboratories: rb2html - some sources to HTML

- http://www.arclamp.jp/blog/archives/processing.html
> > Processing (arclamp.jp アークランプ)

- http://jisi.dreamblog.jp/blog/927.html
> > Sneak Preview - IBM's BPM Simulator - DogEar 犬の耳

- http://www.rubyinside.com/3-fresh-presentations-from-railsconf-2007-502.html
> > 3 Fresh Presentations from RailsConf 2007

- http://zen.seesaa.net/article/42316594.html
> > メディア・パブ: 突然出くわす恐怖のWebダウン,人気サイトのダウン時間は?

- http://d.hatena.ne.jp/mkusunok/20070520/dejavu
> > 雑種路線でいこう - いつかきた道: ソフト部品の共通化はなぜ難しいのか

- http://espion.just-size.jp/archives/07/140235419.html
> > ウェブユーザビリティの法則は読んでおくべき

- http://www.02.246.ne.jp/~torutk/javahow2/HelloWorldJavaSE6.html
> > Java Platform, Standard Edition 6(Java SE 6)時代のHelloWorld

- http://canaria.cocolog-nifty.com/fusigi/2007/05/3d_7ffb.html
> > fusigi: 3Dソフト・グーグルスケッチアップは凄い

| | コメント (0) | トラックバック (0)

2007-05-20

ピックアップ:XMLは人間が読むものではない, JavaScriptによるガントチャート, etc...

- http://www.rubyist.net/~matz/20070511.html#p04
> > Matzにっき(2007-05-11)
> ... 「XMLは人間が読むものではない」、「DSLの台頭によって(Java界における)XMLの地位は下がりつづけている」という話。...

- http://jp.rubyist.net/magazine/?0019
> > Rubyist Magazine - Rubyist Magazine 0019 号

- http://rakuto.blogspot.com/2007/05/ruby-and-erlang-rbridgeerlang.html
> > Young risk taker.: [Ruby and Erlang] そろそろRBridge::Erlangについて一言いっておくか

- http://journal.mycom.co.jp/news/2007/05/19/001/index.html
> > RubyでTwitterしちゃおう - Twitter4R登場 | エンタープライズ | マイコミジャーナル

- http://www.itmedia.co.jp/news/articles/0705/19/news006.html
> > ITmedia News:MS、マッシュアップなWebデザインソフト「Popfly」を発表

- http://d.hatena.ne.jp/ktat/20070519/1179549664
> > Practice of Programming - JavaScriptによるガントチャート作ってみた(まだ途中)

- http://kirik.tea-nifty.com/diary/2007/05/post_7b08.html
> > 切込隊長BLOG(ブログ): ついに、取引メールでデコメを使う奴が出現

- http://level.s69.xrea.com/mozilla/index.cgi?id=20070519_10Tips
> > Firefox の結構使える10の基本機能 - えむもじら

- http://blogs.itmedia.co.jp/hiranabe/2007/05/post_893a.html
> > 『ソフトウェア開発に役立つマインドマップ』本が出ます! - An Agile Way [ITmedia オルタナティブ・ブログ]

- http://www.yasuhisa.com/could/entries/001139.php
> > COULD:インターフェイスガイドラインいろいろ

- http://e0166.blog89.fc2.com/blog-entry-171.html
> > あなたのブログの間違った5つの設計*ホームページを作る人のネタ帳

- http://ohnishi.livedoor.biz/archives/50313770.html
> > 大西 宏のマーケティング・エッセンス:セカンドライフってもう終わった? - livedoor Blog(ブログ)

| | コメント (0) | トラックバック (1)

druby での超簡易チャットシステム(jruby版)

jruby で書いたチャットシステムが jruby で動作しなかったのは、
$stdout の druby での扱いが ruby/jruby で異なっているのが原因のようだ。

そこで, $stdout の参照を直接 あつかうのではなく、ruby のクラスで包むことにした。
その版では、ruby, jruby とも動作した。
以下にソースを示す。
jserver.rb, jclient.rb, MyStream.rb がある。

$ cat jserver.rb
# 2007-05-20 katoy
# usage: $jruby server.rb
#     or $ruby server.rb
#

require 'drb/drb'
require 'MyStream'

class Chatroom
  def initialize
    @member = Hash.new
    @member["*"] = MyStream.new  # "*" is id for server.
  end

  def login name, stream
    @member[name] = stream
    broadcast "_", "login: #{name}"  # system information
  end

  def logout name
    broadcast "_", "logout: #{name}" # system information
    @member.delete name
  end

  def broadcast name, str
    @member.each {|key, val|
      val.xxputs "#{name}> #{str}"  if key != name
    }
  end

  def list name
    stream = @member[name]
    @member.each {|key, val|
      stream.xxputs " #{key}" unless key == "*"
    }
  end
end

uri = 'druby://localhost:12345'
DRb.start_service uri, Chatroom.new
puts 'Start Chat server...'
DRb.thread.join
#--- End of File ---

$ cat jclient.rb
# 2007-05-20 katoy
# usage: $ruby kato druby://loalhost:12350
#     or $jruby kato druby://loalhost:12350

require 'drb/drb'
require 'MyStream'

name = ARGV.shift
uri = ARGV.shift

DRb.start_service(uri)
room = DRbObject.new_with_uri 'druby://localhost:12345'

stream = MyStream.new

room.login(name, stream)

while s = gets.chop
  next  if s == ""              # ignore empty line
  break if s == 'exit'          # logout
  room.list(name) if s == "list" # show all member
  room.broadcast(name, s)        # send message to all member
end
room.logout(name)
#--- End of File ---

$ cat MyStream.rb
# 2007-05-20 katoy
#

require 'drb/drb'

class MyStream
  include DRbUndumped

  def xxputs(str)
    puts str
  end
end
#--- End of File ---

今度はさらに、$stdout の代わりに、java の System.out を使ってみよう。

cat MyStream.rb
# 2007-05-20 katoy
#

require 'drb/drb'
require 'java'
include_class 'JMyStream'

class MyStream
  include DRbUndumped

  def initialize
    @jstream = JMyStream.new
  end

  def xxputs str
    @jstream.xxputs str
  end
end
--- End of File ---

$ cat JMyStream.java
public class JMyStream {

    public JMyStream() {
    }

    public void xxputs(final String str) {
        System.out.println(str);
    }
}
--- End of File ---

これで、ruby クラス/java クラスを リモート/ローカルで呼び出せるようになったことになる。
これらのことを応用すれば、
  java クラスを ruby を使って張り合わせ、それらを適宜 分散させて実行するテストフレームワーク
を作れそうな気がする。

来週は java から jruby エンジンを稼働させたとき、呼び出し側のjava 環境の変数/メソッドを  jruby コードからアクセスできるかを試したい。
これができれば、xfy の xvcd で書きにくいビジネスロジックを ruby 構文をつかって記述することの実現がぐっと近くなってくる。

| | コメント (0) | トラックバック (0)

druby での超簡易チャットシステム

druby の解説ページ
- http://www2a.biglobe.ne.jp/%7Eseki/ruby/d205.html
> > 5 pass by reference, pass by value
に、stdout の参照をサーバー側に登録する例がある。

これを応用して、簡易チャットシステムを作ってみた。
アイデアは次のとうり。
- サーバー側では、ハッシュで {name, $stdout} の組で、クライアント情報を保持する。
- クライアントからのメッセージを、ハッシュ中のすべての $stdoutに puts する。

使い方は
  ターミナル1: $ ruby server.rb
  ターミナル2: $ ruby client.rb foo druby://localhost:12340
  ターミナル3: $ ruby client.rb foo druby://localhost:12341
                  (クライアント毎に port は異なるものを指定する必要がある)

client では、 "exit" を入力すると、logout してプログラム終了する。
              "list" を入力すると、login しているユーザー名一覧を表示する。
              空行は無視
              それ以外の入力行は、他のクライアント、サーバーのコンソールに表示される。

以下にプログラムを示す。

$ cat server.rb
# 2007-05-20 katoy
# usage: $ruby server.rb
#      

require 'drb/drb'

class Chatroom
  def initialize
    @member = Hash.new
    @member["*"] = $stdout  # "*" is id for server.
  end

  def login name, stream
    @member[name] = stream
    broadcast "_", "login: #{name}"  # system information
  end

  def logout name
    broadcast "_", "logout: #{name}" # system information
    @member.delete name
  end

  def broadcast name, str
    @member.each {|key, val|
      val.puts "#{name}> #{str}"  if key != name
    }
  end

  def list name
    stream = @member[name]
    @member.each {|key, val|
      stream.puts " #{key}" unless key == "*"
    }
  end
end

uri = 'druby://localhost:12345'
DRb.start_service uri, Chatroom.new
puts 'Start Chat server...'
DRb.thread.join
--- End of File ---

$ cat client.rb
# 2007-05-20 katoy
# usage: $ruby kato druby://loalhost:12350
#

require 'drb/drb'

name = ARGV.shift
uri = ARGV.shift

DRb.start_service(uri)
room = DRbObject.new_with_uri 'druby://localhost:12345'

room.login name, $stdout

while s = gets.chop
  next  if s == ""              # ignore empty line
  break if s == 'exit'          # logout
  room.list name if s == "list" # show all member
  room.broadcast name, s        # send message to all member
end
room.logout name
#--- End of File ---

この程度の行数で作れてしまうとは驚き。(エラー処理、mutex 処理などは抜けてるけど)
java で同様のものを作ろうとしたら、それなりの量を記述する必要があるし、
修正の度に compile が必要で、時間もかかるだろう。

上記のプログラムは、jruby では なぜか動作しない。
server は起動できるが、client を起動すると、次のエラーが出て起動できない。
/Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:585:in `load': Ruby "NativeException" object can not be allocated (TypeError)
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:585:in `load'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:633:in `exclusive'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:594:in `load'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:633:in `recv_reply'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:921:in `recv_reply'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:1195:in `send_message'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:1086:in `method_missing'
        from client.rb:14:in `open'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:1087:in `method_missing'
        from client.rb:14:in `with_friend'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:1089:in `method_missing'
        from client.rb:14

このチャットシステムの GUI を xfy/xvcd で作る事はできるか?
$stdout へ出力されたことのイベントをキャッチして、xfy の画面更新するが出来る必要がある。どうすれば良い?...

xfy の メモリー上の srcDOMの参照を server に登録して、サーバーが srcDOM に変更を加える?
srcDOM を変更する xfy メソッドを server から呼び出す?

| | コメント (0) | トラックバック (0)

2007-05-19

wirble で irb が使いやすくなる

便利なツールを見つけた。

- http://journal.mycom.co.jp/articles/2006/12/22/wirble/index.html
> > 【ハウツー】Rubyの小技 - irbに補完・シンタックスハイライト機能をつけてみる | エンタープライズ | マイコミジャーナル

この機能は便利!
jruby 1.0.0 の jirb でも動作する。

jruby でつかうには install は $ jruby $JRUBY_HOME_bin/gem install wirble
のように jruby を使って行うことが必要。

| | コメント (0) | トラックバック (0)

yaml <-> xml の相互変換 (名前空間に対応)

yaml <-> xml の相互変換。
完全な変換はできないが、そこそこの動作をするものが出来た。

(jruby でも動作する。
  gem で builder, xml-simple を install することが必要。
  $ jruby $JRUBY_HOME/bin/gem install buildre
  $ jruby $JRUBY_BOME/bin/gem install xml-simple
)

以下に xml->yaml のソース、yaml->xml のソースを示し、変換結果例を示そう。

xml->yaml は次のようにする。
  xml -> Hash -> yaml

---- yaml2xml.rb ----
# See http://www.namikilab.tuat.ac.jp/%7Esasada/prog/yaml.html#i-2

# gem install xml-simple

require 'yaml'
require 'rexml/document'
require 'rubygems'
require 'xmlsimple'
require 'pp'

good_xml = %{
<groceries>
<bread>Wheat</bread>
<bread>Quadrotriticale</bread>
</groceries>}

# puts "----------------"
# doc = XmlSimple.xml_in good_xml
# pp doc
# puts doc.to_yaml

doc = XmlSimple.xml_in File.open(ARGV[0])
puts "----------------"
puts doc.to_yaml
puts "----------------"
pp doc

yaml->xml は、http://www.unfitforprint.com/articles/2005/09/23/yaml2xml-in-33-lines-or-your-money-back
にあったコードを元に、xml 宣言を出力する/namespace, prefix 指定を可能にするようにしてみた。

---- yaml2xml.rb ----
# See  http://www.xml.com/lpt/a/1637
#      http://www.unfitforprint.com/articles/2005/09/23/yaml2xml-in-33-lines-or-your-money-back
#
# Modifyed by katoy 2007-05-18

require 'yaml'
require 'rubygems'
require 'builder'
require 'pp'

class Yaml2Xml

  def initialize roottagname, prefix="", uri=""
    @roottagname = roottagname
    @prefix, @url = prefix
    @url = uri

    # @builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2)
    @buffer=""
    @builder = Builder::XmlMarkup.new(:target=>@buffer, :indent=>2)
  end

  def buffer
    return @buffer
  end

  def to_xml src
    @builder.instruct!
    if @prefix == ""
      @builder.method_missing(gentag(@roottagname)) {
        process_source src
      }
    else
      @builder.method_missing(gentag(@roottagname), "xmlns:" + @prefix => @url) {
        process_source src
      }
    end
  end

  def yaml2xmlChild src, tagname
    if src.is_a?(Hash)
      @builder.method_missing(gentag(tagname)) {
        process_source src, tagname
      }
    elsif src.is_a?(Array)
      process_source src, tagname
    else
      @builder.method_missing(gentag(tagname), src)
    end
  end

  def process_source src, tagname=""
    if src.is_a?(Hash)
      src.each do |name, value|
        unless value.kind_of?(Hash) or value.kind_of?(Array)
          @builder.method_missing(gentag(tagname), value)
        else
          yaml2xmlChild value, name
        end
      end
    elsif src.is_a?(Array)
      src.each do |value|
        unless value.kind_of?(Hash) or value.kind_of?(Array)
          yaml2xmlChild value, tagname
        else
          if value.empty?
            yaml2xmlChild "", tagname
          else
            yaml2xmlChild value, tagname
          end
        end
      end
    else
      @builder.method_missing(gentag(tagname), value)
    end
  end

  def gentag tagname   
    return tagname if @prefix == ''
    return @prefix + ":" + tagname
  end

end

yaml = YAML::load(File.open(ARGV[0]))
# puts "---- YAML ----"
# pp yaml
# puts yaml.to_yaml

puts "---- XML ----"
x = Yaml2Xml.new 'root', 'ab', 'http://xxx.com'
x.to_xml yaml
puts x.buffer

これを利用して、xml -> yaml -> xml 変換した結果を示そう。
最初のxml:
========

  xfy のチュートリアル中の住所録 xml の形式をまねたものだ。

<?xml version="1.0" encoding="UTF-8"?>
<ab:root xmlns:ab="http://xxx.com">
  <ab:entry>
    <ab:address>Rochester, NY USA</ab:address>
    <ab:person>George Adams</ab:person>
  </ab:entry>
  <ab:entry>
    <ab:address>Denver, Colorado USA</ab:address>
    <ab:person>Betty Jackson</ab:person>
  </ab:entry>
  <ab:entry>
    <ab:address></ab:address>
    <ab:person></ab:person>
  </ab:entry>
  <ab:entry></ab:entry>
</ab:root>

xml->yaml 結果
=============
実際のコンソール出力から yaml 部分を抜粋したもののみを示す。

$ ruby xml2yaml rb 1.xml
entry:
- address:
  - Rochester, NY USA
  person:
  - George Adams
- address:
  - Denver, Colorado USA
  person:
  - Betty Jackson
- address:
  - {}

  person:
  - {}

- {}

xmlns:ab: http://xxx.com

yaml->xml 結果
=============

上の結果の最後の行の xmlns:ab: http://xxx.com を削除したものについて実行する。(実際のコンソール出力から xml 部分を抜粋したもののみを示す)

$ ruby yaml2xml.rb 2.yaml
<?xml version="1.0" encoding="UTF-8"?>
<ab:root xmlns:ab="http://xxx.com">
  <ab:entry>
    <ab:address>Rochester, NY USA</ab:address>
    <ab:person>George Adams</ab:person>
  </ab:entry>
  <ab:entry>
    <ab:address>Denver, Colorado USA</ab:address>
    <ab:person>Betty Jackson</ab:person>
  </ab:entry>
  <ab:entry>
    <ab:address></ab:address>
    <ab:person></ab:person>
  </ab:entry>
  <ab:entry></ab:entry>
</ab:root>

これで、ruby で生成したデータを xml 化して、xfy/xvcd に送り込むことが出来そうだ。
ruby で RDB などにアクセスして得たデータや、druby や rinda 上で取得したデータなども xml に加工して xfy/xvcd に送り込める。

逆に xfy/xvcd から 渡される xml を ruby 側で hash/yaml にして、それ以降の処理を行うこともできる。

| | コメント (0) | トラックバック (0)

2007-05-18

ピックアップ: 連想検索エンジンreflexaのAPI, UISpec4J:Java GUI Testing, etc...

- http://www.xml.com/pub/a/2007/05/16/xml-parser-benchmarks-part-2.html
> > XML.com: XML Parser Benchmarks: Part 2

xfy がつかっている XML parser はどれ?

- http://api.zuzara.com/archives/147
> > using API; 連想検索エンジンreflexaのAPI

- http://today.java.net/pub/a/today/2007/05/17/uispec4j-java-gui-testing-made-simple.html
> > java.net: UISpec4J: Java GUI Testing Made Simple

- http://www.100shiki.com/archives/2007/05/starts_in_you.html
> > 写真をアップするとどの有名人に似ているか教えてくれる『Starts In You』 | 100SHIKI.COM

文字検索 + 画像検索 + 位置情報

- http://markezine.jp/a/article/aid/1193.aspx
> > MarkeZine:◎タグでニュースを自動分類、これからのニュースサイトのかたちが見える「mediajam」プレオープン

| | コメント (0) | トラックバック (0)

映画 "明日、君がいない" を観た

映画 "明日、君がいない"
  http://www.eigaseikatu.com/title/17543/
を観た。
重い映画だけど、観て損はない!おすすめ。
Mo5084_2
237_1

原題は "2:37"。邦題の "明日、君がいない" も悪くない。だれが考えたんだろう。

とても演劇的な脚本に驚いた。ドックウィルも演劇的だったけど、それとは違う。
冒頭で結末を部分的に示し、そこに至るまでを描く。
モノクロのインタービュー画面をはさみながら。一つのシーンを複数の立場/視点で繰り返し描いたりしている。

また、メロディ役を始め、どの役者の演技も素晴らしい。

リストカットする場面のリアルさには驚き。

監督は19才で脚本を書いたとのこと。凄い!
映画の公式サイトは http://www.kimigainai.com/

次回作はどんなものを作るのだろう。ただの一発屋では終って欲しくない。

DVDが出たら、購入しようと思う。

| | コメント (0) | トラックバック (1)

2007-05-17

ピックアップ:setter/getterのないJavaへ, Googleはsecond lifeをどうしてつくれないのか, etc...

- http://java.sun.com/mailers/techtips/corejava/2007/tt0307.html#1
> > Compiler APIs and Regular Expressions: Core Java Technologies Tech Tips - April 2007

- http://www.javaworld.com/javaworld/jw-06-2006/jw-0612-dynamic.html
> > Add dynamic Java code to your application - Java World

こういったテクニックを xfy にいれたら何ができるだろう?

- http://journal.mycom.co.jp/articles/2007/05/16/java7/index.html
> > 【レポート】Java SE 7の「プロパティ」が見えてきた - setter/getterのないJavaへ (1) Java SE 7の新文法「プロパティ」とは | エンタープライズ | マイコミジャーナル

- http://www.dakiny.com/archives/010computer-and-internet/it_3/
> > 今日のコラム:ITは終わった。次は何だ!?: 世界中の1%の人々へ

◯◯は死んだ、◯◯は終わった というのはよくあるタイトル。新しい発想を得るパターンのひとつてして有効なものの1つだ。

- http://www.100shiki.com/archives/2007/03/ruby_on_railsrailscast.html
> > 映像による「Ruby On Rails」チュートリアルが満載!『RailsCast』 | 100SHIKI.COM

- http://netafull.net/macsoft/020149.html
> > [N] メモリを最適化してMacのパフォーマンスを向上する「iFreeMem」

- http://zudajijp.web.fc2.com/km/
> > 開発マイルストーン

> ... 「開発マイルストーン」は、プロジェクト開発などで必要な工程管理のためのツールです。
MicrosoftExcelを使用して、簡単に入力でき、かつグラフィカルに表現することができます。...

こういうのを xfy でつくらないと...

- http://www.100shiki.com/archives/2007/05/linebuzz.html
> > ブログの文章にピンポイントでコメントがつけられる『LineBuzz』 | 100SHIKI.COM

- http://affiliate-blog.amazon.co.jp/2007/05/post_6.html
> > Amazon アソシエイト・プログラム ブログ: 第2回アソシエイトコンテスト 受賞サイト

- http://pc.nikkeibp.co.jp/article/NPC/20070516/271261/
> > WinHEC 2007を通して見えたもう1つのマイクロソフト:日経パソコンオンライン

- http://d.hatena.ne.jp/essa/20070515/p1
> > アンカテ(Uncategorizable Blog) - マスメディアが「魚眼レンズ」的ブログを補完しつつ活用する可能性

- http://ameblo.jp/yahooseo/entry-10033915192.html
> > Googleはsecond lifeをどうしてつくれないのか?|web2.0

| | コメント (0) | トラックバック (0)

2007-05-16

jruby1.0.0 で druby 動作が確認できた

数日前に、jruby 1.0.0 で druby サンプルを動作させてみたときは、上手くできなかったが、やっと解決した。

http://www2a.biglobe.ne.jp/%7Eseki/ruby/d203.html
の druby の例はそのままでは、jruby1.0.0 では動作しなかった。
(もちろん ruby 1.8.6 ではそのままで動作した)

次のように outs00.rb を変更した。(太字が変更部分)

require 'drb/drb'

class Puts
  def initialize(stream=$stdout)
    @stream = stream
  end

public
  def puts(str)
    @stream.puts(str)
  end
end

uri = ARGV.shift
DRb.start_service('druby://localhost:12345', Puts.new)
puts DRb.uri
# sleep
DRb.thread.join

まず、sleep というのは、引数がないということでエラーになってしまう。

次に puts メソッドを public 指定をしないと、次のようなエラーがでた。

/opt/local/lib/ruby/1.8/drb/drb.rb:736:in `open': druby://localhost:12345 - #<Errno::ECONNREFUSED: Connection refused - connect(2)> (DRb::DRbConnError)

明日は jruby で rinda の例を動作させることに挑戦しよう。

その後は、xfy/xvcd からの druby/rinda の利用だ。

| | コメント (0) | トラックバック (0)

ピックアップ: プラグインで拡張できるJavaプログラム,エクスプローラを3ペイン/タブ化, etc..

- http://www.everes.net/2007/may/16/ruby-on-rails-commercial-like-apples/
> > RubyOnRailsのアップルライクなCM | スパムとか

- http://codezine.jp/a/article/aid/1271.aspx
> > CodeZine:プラグインで拡張できるJavaプログラムを作る(プラグイン, java)

- http://blog.livedoor.jp/dankogai/archives/50831500.html
> > 404 Blog Not Found:円周率を延々と表示しつづけるだけの javascript

- http://www.arclamp.jp/blog/archives/parallel_multiple.html
> > アプリケーションにおける足回りの質的変化 (arclamp.jp アークランプ)

- http://blog.creamu.com/mt/2007/05/3xplorer2.html
> > エクスプローラを3ペインにしてタブ化もしてくれる『xplorer2』 | CREAMU

- http://canaria.cocolog-nifty.com/fusigi/2007/05/post_74e3.html
> > fusigi: ソースネクストのオンラインアプリのオフィスソフトはすごい

- http://weblogs.java.net/blog/kohsuke/archive/2007/05/my_javaone_repo.html
> > Kohsuke Kawaguchi's Blog: My JavaOne report

- http://d.hatena.ne.jp/higayasuo/20070514#1179113438
> > ひがやすを blog: JavaOneの現地レポート

- http://e0166.blog89.fc2.com/blog-entry-167.html
> > 次のページランクには具体的にいくつのバックリンクが必要なのか*ホームページを作る人のネタ帳

- http://d.hatena.ne.jp/m-hiyama/20070515/1179203855
> > 檜山正幸のキマイラ飼育記 - 僕もErlangを試してみたよ -- 軽量プロセスを中心に

- http://labs.cybozu.co.jp/blog/akky/archives/2007/05/web20-us-and-japan.html
> > 秋元@サイボウズラボ・プログラマー・ブログ: 日米Web2.0対応表

| | コメント (0) | トラックバック (0)

rinda と xfy の組み合わせ

ruby には rinda という分散処理のフレームワークがある。

- http://www2a.biglobe.ne.jp/%7Eseki/ruby/rinda.html
> > Rinda2

> Rindaは分散処理システムLindaのtuple spaceのRubyによる実装です Lindaではタプルとタプル空間の二つの概念があります。タスクはタプルをタプル空間へ書き込んだり、タプル空間からタプルを取り出したりすることで通信を行ないます。書き込み、取り出しはアトミックな操作です。パターンマッチングによって取り出すタプルを指定するところが特徴です。

ruby クックブックにも rinda の利用例がある。

- http://www.oreilly.co.jp/books/9784873113241/toc.html
> > レシピ7.12 共有「ホワイトボード」の作成
> > レシピ7.14 RindaによるDRbサービスの自動検出

xvcd をネット経由で提供する仕組みとして、この rinda をつかってみてはどうだろうか?
ローカルマシン上では解決できない未知の xml ボキャブラリーがあったら、
ネット経由で検索しに行くようにするのだ。

あるいは、xml文書の断片をホワイトボード上に置き、複数の xfy クライアントで同時に
編集/閲覧をするようにするのだ。
ネット対戦のボードゲーム(オセロとかトランプとか)をつくろに利用できそうな気がする。

私の環境上の jruby1.0.0 では rinda は動作しなかったけど、ruby をつかえばいいだけの話。

rinda についてgoogle していて、ついでにこんな例を見つけた。
- http://www.druby.org/ilikeruby/ruby_amazon.html
> > ruby-amazonでAmazonWebService
キーボードから単語を入れると、amazon 上で検索をした結果が返ってくるという例だ。

これを動作させるには アマゾンウェブサービスを利用するための id を~/.amazon_key におく必要がある。

このサンプルプログラムの GUI を xfy を使って作るというのも面白かもしれない。

| | コメント (0) | トラックバック (0)

2007-05-15

ピックアップ: Processing by Ruby,twitterにセマンティック, etc...

- http://d.hatena.ne.jp/dewdrop/20070513/p5r
> > Quietstar - Processing by Ruby #2

- http://d.hatena.ne.jp/huixing/20070513/nanoformats
> > huixingの日記 - twitterにセマンティックの要素を加えるTwitter nanoformats

- http://espion.just-size.jp/archives/07/133223712.html
> > livedoorReader の未読数を munin でグラフ化する

- http://d.hatena.ne.jp/satonaoki/20070511/p1
> > S/N Ratio (by SATO Naoki) - 10代のいないJavaOne

- http://blog.livedoor.jp/dankogai/archives/50830694.html
> > 404 Blog Not Found:ソフトウェアの競争力は誰に宿るか

- http://gigazine.net/index.php?/news/comments/20070514_nhk_nikki/
> > NHKの中学生日記で「腐女子」がテーマに - GIGAZINE

- http://business.nikkeibp.co.jp/article/manage/20070501/124013/
> > あの技術が期待外れに終わった理由 (イノベーション解剖学):NBonline(日経ビジネス オンライン)

- http://plusd.itmedia.co.jp/lifestyle/articles/0705/14/news007.html
> > ITmedia +D LifeStyle:「非ケータイ」ネットワークの未来 (1/3)

- http://japanese.engadget.com/2007/05/14/lg-14inch-color-e-paper/
> > LGフィリップス、曲げられるA4カラー電子ペーパーを開発 - Engadget Japanese

- http://www.100shiki.com/archives/2007/05/twittermonitwitter.html
> > ウェブサイトをモニターしてTwitterに通知する『monitwitter』 | 100SHIKI.COM

- http://adinnovator.typepad.com/ad_innovator/2007/05/itunes.html
> > Ad Innovator: レポート:iTunesのようなビデオ配信の仕組みには未来がない

| | コメント (0) | トラックバック (0)

2007-05-14

jruby から java メソッドを呼び出す

jruby から java メソッドを呼び出す例を試してみた。無事 動作する。
ここでは、
  標準クラスのメソッド呼び出し、
  自作の java クラスのメソッド呼び出し、
  Exception の扱い
を試している。

kato$ cat Sample.java
public class Sample {

    public void sub() {
        System.out.println("sub");
    }
}


kato$ cat java00.rb
# See http://jruby.codehaus.org/The+JRuby+Tutorial+Part+1+-+Getting+Started

require 'java'
include_class 'java.util.TreeSet'

# java の TreeSet を使う
set = TreeSet.new
set.add "foo"
set.add "Bar"
set.add "baz"

set.each do |v|
  puts "value: #{v}"
end

# String は ruby が利用済みなので、
# java.lang.String を JString として使えるようにする。
include_class('java.lang.String') {|package,name| "J#{name}" }

s = JString.new "a"
puts "s.class: #{s.class}"

rs = String.new
puts "rs.class: #{rs.class}"

# java の例外を扱う
begin
  s1 = JString.new "0123456789"
  p s1.substring(2)
#  p s1.substring(20)
rescue RuntimeError => e
  puts "Java or Ruby exception: #{e}"
  raise
end

include_class 'Sample'

sample = Sample.new
sample.sub

#--- End of File ---

| | コメント (0) | トラックバック (0)

jruby 1.0.0 で druby は動作しないのか?

- http://www2a.biglobe.ne.jp/%7Eseki/ruby/d203.html
> > 3 Hello, dRuby.
にある、ちいさな druby のサンプルを jruby で動作させてみたが、動作しない。

kato$ jruby puts00.rb druby://localhost:12345
druby://localhost:12345
puts00.rb:[16,16]:[204,236]: wrong number of arguments(0 for 1) (ArgumentError)
kato$

drury は jruby ではまだ動作しないのかなぁ。

サーバーは ruby で動作させ、client を jruby で動作させてみたけど、これも駄目だった。

kato$ jirb
irb(main):001:0> require 'drb/drb'
=> true
irb(main):002:0> there = DRbObject.new_with_uri('druby://localhost:12345')
=> #<DRb::DRbObject:0xe7ed2d @uri="druby://localhost:12345", @ref=nil>
irb(main):003:0> there.puts('Hello, World.')
DRb::DRbConnError: druby://localhost:12345 - #<Errno::ECONNREFUSED: Connection refused>
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:736:in `open'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:1189:in `each'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:738:in `open'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:1189:in `initialize'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:1169:in `new'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:1169:in `open'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:1087:in `method_missing'
        from (irb):1:in `with_friend'
        from /Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/drb/drb.rb:1089:in `method_missing'
        from (irb):1:in `binding'
irb(main):004:0>

| | コメント (0) | トラックバック (0)

2007-05-13

『鰐〜ワニ〜』 を観た

0afcea15

キム・ギドクのデビュー作 『鰐〜ワニ〜』 を観た。
http://www.eurospace.co.jp/detail.html?no=80

2時間前に券を買いにいったのに、整理番号は27。好きな人が多いんだなぁ。
この劇場は結構狭いので、いい場所で観れないかもと思った。
でも幸いなことに この劇場での俺にとってのベストポジション最後方列のほぼ中央の席が取れた。

デビュー作からすでに  水、青、暴力、素直でない愛の表現 の特徴は十分に出ている。
でも他の作品に比べると、脚本が粗い。脇役の おじさんや子供もいい味を出している。

キム・ギドクの DVD-BOX が出たら、それなりに売れるんじゃないかなぁ。


| | コメント (0) | トラックバック (0)

ピックアップ:めちゃくちゃきれいなiTunesのビジュアライザ,usrの由来, etc...

しまった、西村由紀江の江ノ島でのコンサートを忘れてた。

- http://blog.goo.ne.jp/sado-mujina/e/3703d858ba868c51d4cd4b1e6e5c4ee6
> > 新潟・佐渡の話題と東京の適当情報〜むじなのひとりごとblog ver, 2007/05/12--「西村由紀江のピアノコンサート」
新譜も出るようだ。

- http://gigazine.net/index.php?/news/comments/20070512_magnetosphere/
> > めちゃくちゃきれいなiTunesのビジュアライザ「magnetosphere」 - GIGAZINE

- http://www.youtube.com/watch?v=MKRsLyL2NZ0
> > YouTube - Exteme Photoshop

人物全身の画像をこんなに上手く変形できるのか!凄い!

- http://kakutani.com/20070511.html
> > 角谷HTML化計画(2007-05-11): Martin Fowler シグネチャシリーズで進む世代交代と、その底知れなさ

- http://www.hinet.mydns.jp/~hiraku/tDiary/?date=20070508
> > 忘れたときに備えた記録 - usrの由来

- http://www.tez.com/blog/archives/000902.html
> > 京都相国寺「若冲展」に急げ!−業界初ブロガー向けプレビューに奥さんが参加

- http://e0166.blog89.fc2.com/blog-entry-165.html
> > 日本を代表するトップFLASHデザイナーの凄技を見て、デザイン力を学ぶ*ホームページを作る人のネタ帳

- http://d.hatena.ne.jp/mkusunok/20070513/spec
> > 雑種路線でいこう - 情報サービス産業に明日がなくても構わない

| | コメント (0) | トラックバック (0)

jruby で gzip を扱う。

Rubyist Magazine の Zlib の紹介記事を読んだ。
   http://jp.rubyist.net/magazine/?0018-BundledLibraries

簡単に zip/gzip を扱えるな。
以下のコードは ruby/jruby ともに動作する。

# See http://jp.rubyist.net/magazine/?0018-BundledLibraries

require 'zlib'

orig = 'foo.txt'
gziped = orig + '.gz'

# create gziped file
#-------------------
Zlib::GzipWriter.open(gziped, Zlib::BEST_COMPRESSION) do |gz|
  gz.mtime = File.mtime(orig)
  gz.orig_name = orig
  gz.write File.open(orig, 'rb'){|f| f.read }
end

# gzcat
#------------------
Zlib::GzipReader.open(gziped) do |gz|
  puts gz.read
end

#--- End of File ---

xfy で、zip 保存したり、zip された xml を開くようなプラグイン
http://youichi-kato.cocolog-nifty.com/blog/2006/11/xfy_m.html
を java でつくって公開したことがあるけど、jruby で書いたほうが極めて簡単にかけるな。

xfy の Open/Save  コマンドへのフックを PRagger の confi.yaml 形式で書いて、そのなかに zip/unzip plagin を指定すると、save 時のダイアログに zip 圧縮をするか否かのチェックボックスが現れるなんていうようになると便利になるだろう。

同様の発想で、cvs アクセス、svn アクセス、webdav アクセス、XML-DB アクセス、gspace アクセスなプラグイン、PDF 化、暗号化、etc... のプラグインをつくればよいかもしれない。

| | コメント (0) | トラックバック (0)

2007-05-12

xfy blog editor の変形で、 xfy mixi editor はつくれるか?

PRagger で mixi や google 検索を扱うものはあるようだ。

- http://ruby.g.hatena.ne.jp/emergent/20070321/1174494118
> > はてな?Rubyグループ - emergentの日記 - mixi投稿プラグイン:mixi_diary_writer.rb

- http://ruby.g.hatena.ne.jp/garyo/20070223/1172219371
> > はてな?Rubyグループ - Rubyの魔神 - PRaggerプラグイン Mixi新着日記プラグイン

- http://ruby.g.hatena.ne.jp/garyo/20070226/1172480219
> > はてな?Rubyグループ - Rubyの魔神 - PRaggerプラグイン Google検索プラグイン

これを流用/応用して、xfy と組み合わせればなんとかなりそうな気がする。
xvcd も小さな xvcd を yaml で連結して使えるようにするといいかもしれない。
xfy/xvcd でサクッと拡張機能をつくれるようにするのは何が必要なんだろう。
xml を意識しないで済むような開発環境が提供されれば、xfy利用がもっと増えると思う。

| | コメント (0) | トラックバック (0)

ピックアップ:CSSとJQueryでマック風ドックメニュー,Windows Updateが終了しない場合の対応策, etc...

- http://www.simplexsimple.com/archives/2007/05/cssjquery.html
> > CSSとJQueryでマック風ドックメニューを実現 | S i M P L E * S i M P L E

xfy でもできるかな?

- http://www.youtube.com/results?search_query=JavaOne
> > YouTube - Broadcast Yourself.
JavaOne の映像がたくさん アップロードされているもんだなぁ。

- http://yoosee.net/d/archives/2007/04/08/002.html
> > 家電店のポイント還元を効率よく使うために知っておくべきたった1つのルール - World Wide Walker

こういう誤解があるとは! こういうひとを 落語の壷算みたいな話術で騙すのは簡単かも知れない。

- http://blog.livedoor.jp/dankogai/archives/50828720.html
> > 404 Blog Not Found:あなたのページを最速にする14の掟

- http://gigazine.net/index.php?/news/comments/20070511_windows_update_patch/
> > マイクロソフト、Windows Updateが終了しない場合の対応策を発表 - GIGAZINE

- http://ameblo.jp/yahooseo/entry-10033270516.html
> > web2.0化したSEO対策。トラックバックの重要性|web2.0

google の評価だけが1つではない。複数の評価が共存するようにできるのは、どうしたらよいだろ う? google とは別の勢力が台頭してこないと。

| | コメント (0) | トラックバック (3)

2007-05-11

Google Analytics のインタフェースが変わった。

https://www.google.com/analytics/ のレポート画面が変わった。
こんな画面もある。四角の部分をドラッグできる。おもしろいインターフェースだ。

Google

| | コメント (0) | トラックバック (0)

ピックアップ: 会議をデザインする, あなたが知らないMac OS Xのコマンドライン, etc...

- http://blog.creamu.com/mt/2007/05/mac_os_xten_os_x_command_line.html
> > あなたがきっと知らないMac OS Xのコマンドライン『Ten OS X Command Line Utilities you might not know about』 | CREAMU

うーん、知らなかった!
xfy から、この say コマンドを呼べるようしたら、おもしろいデモアプリができるかも知れない。外部コマンドラインを呼び出す xvcd は作成済みなので、これの利用例として使えそうだ。

- http://japanese.engadget.com/2007/05/05/xbox-360-wii-ovo-360/
> > Xbox 360をWii風にする交換シェル OVO 360 - Engadget Japanese

- http://d.hatena.ne.jp/fuku33/20070504/1178277118
> > 福耳コラム - 「女子大で講義する余談の多い経営学 #2」付加価値を目方で測るの巻

- http://www.simplexsimple.com/archives/2007/05/25_4.html
> > 小粋なインターフェースを実現する25のコード (パート4) | S i M P L E * S i M P L E

- http://adinnovator.typepad.com/ad_innovator/2007/05/second_life783_1.html
> > Ad Innovator: 今日の解説:Second Lifeの過去7日のログイン者数は、登録者の8.3%

- http://www.yasuhisa.com/could/entries/001136.php
> > COULD:世界が見えるインフォグラフィック

- http://gitanez.seesaa.net/article/41321215.html
> > 会議をデザインするのに必要な3つのポイント:DESIGN IT! w/LOVE

> 1.ゴールはもちろんシナリオも描く
> 2.資料の準備よりその場での記述
> 3.その場で考えるんじゃなく事前にあらかじめ考えてくる

- http://db2.jugem.cc/?eid=1090
> > Unofficial DB2 BLOG | 無料のOmniFind Y! Editionに日本語GUIが追加

Omnifind は前から興味をもっているのだが、試していない。これを機会に挑戦してみるか。

- http://ameblo.jp/yahooseo/entry-10033205729.html
> > 米ヤフーと日本ヤフー 事実上全く別の会社だった|web2.0

- http://homepage2.nifty.com/igat/igapyon/diary/2007/ig070510.html
> > 2007/05/10 日記: Java: サンプル: トリプルDES アルゴリズムによるファイル暗号化

- http://ohnishi.livedoor.biz/archives/50311784.html
> > 大西 宏のマーケティング・エッセンス:どうぞ反撃してくださいね。お手並み拝見 - livedoor Blog(ブログ)

| | コメント (0) | トラックバック (1)

アマゾンインスタンストアで2ヶ月振りに売り上げがあった

アマゾンインスタンストア http://astore.amazon.co.jp/katoy-22 で2ヶ月振りに売り上げがあった。

年末の頃は一日1 件弱の売り上げがあったのだが、年明け、特に2月以後、すっかり売り上げがなくなってしまっています。
(アマゾンリンクのクリック数自体が激減している)

映画 "東京タワー ~オカンとボクと、時々、オトン" を観た。
オカン(樹木希林)の若い頃を演じた内田也哉子、なかなか良いです。娘だからというのを差し引いても。
映画はなかなかよかったが、原作には及ばなかった。(TVドラマはみていない...)
線路をあるく場面と、横断歩道を歩く場面の対比は素晴らしい。


| | コメント (0) | トラックバック (0)

jruby の $: の設定はどうなっているのか?

xfy から jruby の次のスクリプトを実行させたら、
requiere の部分でそんなファイルはないとのエラーになった。

require 'mathn'
1/2 + 1/3

jruby のライブラリーパスが通っていないようなので、つぎのようにスクリプトを書き換えたら、動作した。

$:<< "/Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/site_ruby/1.8"
$:<< "/Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/site_ruby"
$:<< "/Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8"
$:<< "/Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/java"
$:<< "lib/ruby/1.8"
$:<< "."

require 'mathn'
1/2 + 1/3

ここでの代入値は、普通にコンソールから jirb を動作させて $: を評価させた時の
値から導いている。

$ jirb
$irb(main):001:0> $:
=> ["/Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/site_ruby/1.8", "/Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/site_ruby", "/Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8", "/Users/kato/work/www/jruby-1.0.0RC1/lib/ruby/1.8/java", "lib/ruby/1.8", "."]
irb(main):002:0>


$: の内容を明示的に指定しなくても、xfy の xvcd から jruby スクリプトを評価できるようするには、どうしたらいいんだろう。

jruby のソースを読むかな?

あるいは google すれば同じ事で悩み、かつ解決させた人をみつけられるか?

| | コメント (0) | トラックバック (0)

2007-05-10

ピックアップ: JavaDocにタグレット, JavaFX Script 入門, etc...

- http://www.arclamp.jp/blog/archives/metadi.html
> > DIコンテナとGenericsを利用して品質や効率をあげるテクニック (arclamp.jp アークランプ)

面白いアイデアと思う。今晩にでもサンプルを試してみようと思う。

- http://journal.mycom.co.jp/news/2007/05/09/014/index.html
> > JavaDocにタグレットを導入する「JavaDoc Taglets Collection 2.0.0」登場 | エンタープライズ | マイコミジャーナル

- http://satoshi.blogs.com/life/2007/05/javafx_script.html
> > Life is beautiful: JavaFX Script 入門、とりあえず言語仕様に目を通してみた

- http://hoshi.air-nifty.com/diary/2007/05/javaone2007_0c7e.html
> > 星暁雄の"情報論"ノート: JavaOne2007でErlang、Ruby、Java FX Scriptの話を聞く

| | コメント (0) | トラックバック (0)

2007-05-09

jruby 実行する xpath 関数を xfy1.5 対応して再公開 その2

http://youichi-kato.cocolog-nifty.com/blog/2007/05/jruby_xpath_xfy_cfe7.html
>> katoy: cocolog: jruby 実行する xpath 関数を xfy1.5 対応して再公開
で書いたけど、
jruby 0.9.9 では、exception が発生していたので、0.9.8 を使っていた。

jruby 1.0.0RC1 を download してみたら、こんどは動作した。
素晴らしい。

http://dist.codehaus.org/jruby/talks/  には、
  JRuby-GoRuCo-2007.pdf (24-Apr-2007 11:36)
なんてプレゼン資料があるのにも気がついた。

jruby を interprited でなく compiled で実行すると、ずいぶん速くなるようなことが書かれている。

| | コメント (0) | トラックバック (0)

ピックアップ: JRuby 1.0.0 RC1リリース, 技術の盗み方, etc..

一年前の xfy 1.3 の頃に書いた自作の小さな plugin を 1.5 で動作させようと思ったのだが、
なかなか動かない。
プラグインが上手くシステムに認識されていないようなのだが、
どこを直せばいいのかさっぱりわからない...

後は、web からのピックアップを...

- http://plaza.rakuten.co.jp/mytechmemo/diary/200705080001/
> > JRuby 1.0.0 RC1リリース - 技術メモBlog - 楽天ブログ(Blog)

- http://blog.livedoor.jp/dankogai/archives/50826413.html
> > 404 Blog Not Found:勝手に添削 - 技術の盗み方

- http://www.mashupedia.jp/mashups/view/141
> > 検索レンズ : MASHUP一覧 : MASHUPEDIA - マッシュペディア - : Web API x Mashup

- http://hint.at.webry.info/200705/article_3.html
> > 変わる公共の図書館 経営のヒント/ウェブリブログ

- http://blogs.itmedia.co.jp/kurikiyo/2007/05/post_bdf9.html
> > 見出しやタイトルは著作物ではない(今さらではありますが) - 栗原潔のテクノロジー時評Ver2 [ITmedia オルタナティブ・ブログ]

- http://ameblo.jp/bonedaddy/entry-10032979858.html
> > 変わる人財と変わらぬ人材|ある30代のビジネスライフ~超前向きな人生創造~

   > ...
   >  時は流れ、時の意味・価値さえも変容していくのが社会
   >  社会が変わっているのに、個人が変わらない
   >  ・・・それは企業が変わらないことにもつながりますビル
   > ...

- http://bcj.way-nifty.com/xbrl/2007/05/ermxbrl_c7e2.html
> > XBRLと内部統制、J-SoX: ERMとXBRL

   > ... ERMの日本語訳である「全社的リスクマネジメント」適用技法編(八田進二監訳)を読んでいたら、
   > ... XBRLとウェブサービスを使った貸付金や売掛金の報告プロセスの効率化、監査証跡の例が挙げられています。
   > ...

- http://blogs.itmedia.co.jp/speedfeed/2007/05/xml_b379.html?ref=atom
> > XMLコンソーシアムに参加します。 - Speed Feed [ITmedia オルタナティブ・ブログ]

- http://www.rubyinside.com/railsbrain-fast-ajax-powered-rails-documentation-482.html
> > RailsBrain: Fast, AJAX-powered Rails documentation

- http://blogs.sun.com/nishigaya/entry/custom_jmx_client_using_jruby
> > Nishigaya's Weblog: Custom JMX Client using JRuby (Part 1)

- http://kmo.air-nifty.com/kanamori_marketing_office/2007/05/post_22e4.html
> > Kanamori Marketing Office: 携帯電話イノベーションの可能性?

- http://www.future-planning.net/x/modules/news/article.php?storyid=2307
> > FPN-コミュニケーションの法則 男性にはSOS・女性にはAUTO

| | コメント (0) | トラックバック (0)

2007-05-08

xml <-> yaml の相互変換に挑戦中

ruby では、 xml -> yaml は次のようにできる。

require 'yaml'
require 'rexml/document'
require 'rubygems'
require 'xmlsimple'
require 'pp'

doc = XmlSimple.xml_in File.open(ARGV[0])
# puts "----------------"
puts doc.to_yaml
# puts "----------------"
# pp doc

xmlsimple は、XMLを(連想)配列にマップしてくれます.

この yaml を xml に戻す方法を作成中。

- http://www.unfitforprint.com/articles/category/development/page/4
> > Unfit For Print

には、yaml2xml.rb の例があるが、私の望みとは少し違う動作をしているのでdebug 中。

あと、namespace の扱いがこれらではできていない。
これをなんとかごまかさないと、xfy で yaml をそれなりに扱うのは難しい。

| | コメント (0) | トラックバック (0)

2007-05-07

ピックアップ: 電卓として使うRuby, アホほど本音で素直にブログを書く, etc...

- http://rogiken.org/wiki/index.php?%C5%C5%C2%EE%A4%C8%A4%B7%A4%C6%BB%C8%A4%A6Ruby
> > 東京工業大学ロボット技術研究会: 電卓として使うRuby

xfy で GUI フロントエンドを書いたり、
小学生の分数計算ドリルをつくったり出来そう。

$irb -m
irb(main):001:0> 1/2+1/2
=> 1
irb(main):002:0> 1/2+1/3
=> 5/6
irb(main):003:0> 1/2+1/3*3
=> 3/2
irb(main):004:0>

- http://zapanet.info/blog/item/997
> > PHPで動いている高度なオープンソースWebアプリレビュー

- http://gitanez.seesaa.net/article/40972570.html
> > デザインってスゴイんだってことをもっと本気で言わなきゃダメだと思う:DESIGN IT! w/LOVE

- http://blogs.itmedia.co.jp/knowledge/2007/05/post_dc41.html
> > 「デジタル・ワークスタイル」の感想と私の最近のワークスタイルについて - ナレッジ!?情報共有・・・永遠の課題への挑戦 [ITmedia オルタナティブ・ブログ]

- http://jabdrop.weblogs.jp/home/2007/05/google_spreadsh_c8ef.html
> > jab drop: Google Spreadsheetsが使いやすい

- http://www.rubyinside.com/activescaffold-ajax-powered-rails-scaffolding-redux-481.html
> > ActiveScaffold: AJAX-powered Rails scaffolding redux

- http://ameblo.jp/yahooseo/entry-10032864643.html
> > アホほど本音で素直にブログを書く|web2.0

> ... 一番の間違いは、正しい情報を出すという使命だけを目的として、それ以外の目的を持たない事。
このようなブログは、たいてい、更新頻度が低くなり、月に1回しか更新しないブログへ変化してしまう。...

- http://blog.livedoor.jp/engine4/archives/50536308.html
> > XHTML読書II/*Clip&cutUp ; editorial engineer's works:内部告発!Google社員がSEOについて語る! - livedoor Blog(ブログ)

- http://www.ringolab.com/note/daiya/#bc70339a2289b3f6fb3cc261ed738373
> > 情報考学 Passion For The Future: 魂の文章術—書くことから始めよう

- http://espion.just-size.jp/archives/07/125234012.html
> > redMine で trac の trac-post-commit-hook のような事をやる

| | コメント (0) | トラックバック (4)

2007-05-06

結局、三谷のコンフィダントが観れなかった

三谷のコンフィダントの舞台
   http://www.parco-play.com/web/play/les/
を観ようと ここ4日間、キャンセル待ち電話をし続けたが、結局、みることはできなかった。
土曜の夜の回は、キャンセル待ち番号は取得できたが、後一人というところで、券が回ってこなかった orz ....

その代わりという訳ではないが、映画を2つ観た。

- パフューム 〜ある人殺しの物語〜
   http://www.eigaseikatu.com/theater/am-1300400-16962

- 神童
   http://www.eigaseikatu.com/title/16879/

パフュームの映像の色調は好み。また音楽もとても良い。
好き嫌いが別れる映画と思うが、私は好きですね。
ダスティン ホフマン、上手だなぁ。

神童は、脚本が練れていないと感じた。
脇役にキムラ緑子、柄本明、吉田日出子といった人を 集めているのにあまり上手く使われていなくて残念。
演奏のシーンはどれもなかなか良い。

| | コメント (0) | トラックバック (2)

2007-05-05

jruby 実行する xpath 関数を xfy1.5 対応して再公開

以前に公開していた xfy での拡張 xpath 関数の例
 * 外部コマンド呼び出し、jruby スクリプト評価、jruby の外部ファイルスクリプト評価の xpath 関数
を、xfy1.5 用にして動作確認したソースを以下に置きました。
(本質的な変更は特にない。build.xml の変更と ソースの多少の整理のみ)
 
  - http://homepage2.nifty.com/youichi_kato/src.html
    >> xfy 1.5 対応
    >>   plugins-2007-05-05.tgz(2007-05-05)

tgz ファイルに含まれている 00Readme.txt の内容を引用します。

--------------------------------------------------------

環境:
  xfy : xfy-be1_5-070322 Folder
  jruby: 0.9.8

build:
  ant

動作例:
  $ run.sh   // xfy を起動する
  hello.xml を読み込む。

  この xml  中では
    OS コマンドの "pwd" の実行結果の表示
    ruby スクリプト "1+2*3" の実行結果の表示
    ruby スクリプト sample.rb の実行結果の表示
  をしている。

備考:
jruby 0.9.9  では、
   edu/emory/mathcs/backport/java/util/concurrent/locks/ReentrantLock
の例外が発生する。
web 上でも類似のことが報告されている。
- http://archive.jruby.codehaus.org/user/MPG.2098353cf4ec0ae8989ab6@news.gmane.org
>> Problem moving from 0.9.8 to 0.9.9, probably setup issue

--------------------------------------------------------
この環境を基にして
   yaml 形式のデータ -> xfy で表示
   xfy での編集結果 -> yaml 形式で保存
といった例や、
   住所データを記入する際に RDB から郵便番号を検索し選択できる
といった例を jruby と組み合わせて作成していく予定です。

| | コメント (0) | トラックバック (2)

redMine の設定ができた

前日は失敗した mysql5, redMine の設定だが、今朝 再挑戦して解決した。
現時点の環境は以下の様になっている。

Mac OS X  10.4.9
port list
  mysql5 @5.0.37
  ruby @1.8.6
  rb-rubygems @0.9.2
  sqlite3 @3.3.17
...
gem list rails
  rails (1.2.3)
  sqlite3-ruby (1.2.1)
  ...

mysql5 は 一旦、port uninstall して、再度 install した。
その際に画面に表示される説明文に従って操作したら、問題なく設定できた。
(ただし、説明文中の各種のパスが正しくない点があるので注意が必要)

redMine 設定は、そもそも マシン上の rails 環境が壊れていた。
古い rails や rake が /usr/local/bin に残っていて、そちらが参照されていたりしたようだ。
単純な rail アプリの作成ができなくなってしまっていた。
(PATH は /opt/local/bin を先頭に設定しているのだが)
古いrails, rake は別名にして参照されないようにした。
そして、
 - http://www.machu.jp/diary/20061002.html
 > > まちゅダイアリー - Rails に(再)挑戦 , model と scaffold を作る
の設定例が動作することで、正常な rails 環境になったことを確認した。
(記事中の rake migrate は rake db:migrate に読み替える必要があったが)

その後、redMine の設定に再挑戦した。
database.ym に socket 指定を追加しないでいたら、
rake db:migrate でエラーになった点以外はすんなりと設定できた。

以下は参考にしたページだ。
- http://espion.just-size.jp/archives/07/110233227.html
> > redMine 使ってみる

- http://www.res-system.com/fuku/item/77
> > WEBサイト リスタートの情報発信|ReStart Weblog

- http://espion.just-size.jp/archives/07/111000819.html
> > redMine をいじる

- http://demo.redmine.org/
> > redMine のデモページ

日本語で表示されているし、プロジェクトの設定法/表示例を見ることができる。

xfy + xvcd + java で redMine モドキを構築できるか?
構築は可能と思われるが、構築にはどれくらいの工数がかかるか?

| | コメント (0) | トラックバック (0)

ピックアップ:Railsで作られたプロジェクト管理ツール"redMine", etc...

下でリンクを紹介してるが、redMine が面白しそう。
(Rails で作成されてプロジェクト管理ツール)

早速, インストールしてみようとしたが、mysql5 のインストールでつまずいている。
いままでは、Fink 入れた mysql を使っていたのだが、今年の始めにFink でいれたものをすべてやめて、darwinport に移行したのだ。
それで、まだ mysql はインストールしていなかったのだ。
port install mysql5 で簡単に入ると思っていたが、大違い。
(mysql-5.0.37 が入るようだ.)

net 上で port をつかった mysql5 設定を検索して眺めているが...
mysql5 を走らせたときに Access denied for user 'root'@'localhost' となるのを解消できずにいる。

redMine を Sqlite3 で構築しようとおもったが、
    rake db:migrate RAILS_ENV="production"

    No such file to load -- initializer
なんてエラーがでる。rails の問題なのか、redMine の問題なのかもよく判らない...

解決させたら、設定方法をこの blog に投稿するつもりだ。(Mac で上手く設定できている方からの情報があればお知らせしてもらえるととても嬉しいのだが...)

- http://dev.chrisryu.com/2007/02/railsredmine.html
> > Railsで作られたプロジェクト管理ツール"redMine" (でぃべろっぱーず・さいど)

- http://paopao-sahari.jugem.jp/?eid=97
> > Triplets SaHaRi(三つ子と共に) | プロジェクトツールの勉強

- http://dev.chrisryu.com/2007/02/redmine_1.html
> > redMine インストール&日本語化手順 (でぃべろっぱーず・さいど)

- http://db2.jugem.cc/?eid=1087
> > Unofficial DB2 BLOG | DB2 Express-C新イメージ(V9 FP2)

- http://d.hatena.ne.jp/tkmr2000/20070503
> > tkmr2000の日記 - Twitterで勤怠管理のするためのRubyスクリプト

- http://www.100shiki.com/archives/2007/05/walk_2_web.html
> > 地図上を歩くようにウェブを探検できる『Walk 2 Web』 | 100SHIKI.COM

| | コメント (0) | トラックバック (0)

2007-05-03

sqlite3 に郵便番号を読み込んだ

apache derby での郵便番号処理はデータサイズ的に無理があったので、
sqlite3 に読み込んだ。(sqlite3 は darwinport でインストール)

参考にしたのは
- http://www.tuyudaku.net/sqlite/import.html
> > SQLite - CSVファイルのインポート

- http://d.hatena.ne.jp/rudeboyjet/searchdiary?word=*%5Bruby%5D
> > よしだメモ:ダミーの住所データを作るスクリプト

これとは別に、郵便番号検索 できる XML-RPC サービスも見つけた。
- http://rubyist.g.hatena.ne.jp/garyo/20061129/1164780228
> > Rubyist - ピジョン・ブラッド - XML-RPCメソッド一覧 - 郵便専門ネット

# See - http://yubin.senmon.net/service/xmlrpc/introspect.php
#     - http://rubyist.g.hatena.ne.jp/garyo/20061129/1164780228
require 'xmlrpc/client'
require "kconv"

client = XMLRPC::Client.new2('http://yubin.senmon.net/service/xmlrpc/')

result = client.call("yubin.fetchAddressByPostcode", '1000001')
result[0].each do |key,value|
  puts "#{key} #{Kconv.tosjis(value.to_s)}"
end

puts "==============="
result = client.call("yubin.getMaxFetchCount")
puts result

puts "==============="
result = client.call("yubin.fetchAddressByPostcode", '692%')
result.each do |r|
  puts "----------------"
  r.each do |key,value|
    puts "#{key} #{Kconv.tosjis(value.to_s)}"
  end
end

# town_kana ちよだ
# city_kana ちよだく
# city 千代田区
# jiscode 13101
# postcode 1000001
# addr_name_kana
# data_type p
# pref_kana とうきょうと
# addr_name
# town 千代田
# pref 東京都
# other
# yid 36495
# ===============
# 100
# ===============
# 以下省略 ...

これで xfy で 郵便番号を扱う例を sqllite や web-service で作る準備が出来た。
(忘れてた! ruby, jruby から sqlite を呼び出す方法を取得しないと...)

| | コメント (0) | トラックバック (0)

xfy meets yaml

xfy から ruby スクリプトを実行して文字列を得られるようにしただけでも、
いろいろ可能性が広がった気がする。
(xvcd や java でロジックを書くのは ryby に比べると格段に面倒だ)

簡単なウイザードの例があった。
- http://www.mnet.ne.jp/~tnomura/note.html
> > note: 簡単 Q&A 作成プログラム note.rb

これは、ウイザードの画面内容と画面遷移関係を yaml で定義している。
このアイデアを使うと、xfy でも ウィザードを簡単に作れそうな気がする。

yaml については次から始まる一連の記事が参考になる。
- http://jp.rubyist.net/magazine/?0009-YAML
> > Rubyist Magazine - プログラマーのための YAML 入門 (初級編)

サンプル例をいくつか実行してみた。

# See http://jp.rubyist.net/magazine/?0009-YAML

require 'yaml'
require 'pp'

str  =<<EOS
- aaa
- bbb
- ccc
EOS

data = YAML.load(str)
pp data
# ["aaa", "bbb", "ccc"]

#----------------------
str =<<EOS
A: aaa
B:
  B1: bbb1
  B2: bbb2
C: ccc
EOS

data = YAML.load(str)
pp data
# {"A"=>"aaa", "B"=>{"B1"=>"bbb1", "B2"=>"bbb2"}, "C"=>"ccc"}

#----------------------
str =<<EOS
[aaa, bbb, ccc]
EOS

data = YAML.load(str)
pp data
# ["aaa", "bbb", "ccc"]

#----------------------
str =<<EOS
{ A: aaa, B: bbb, C: ccc }
EOS

data = YAML.load(str)
pp data
# {"A"=>"aaa", "B"=>"bbb", "C"=>"ccc"}

#----------------------
str =<<EOS
decimal1:  123                           # 整数 (10 進数)
decimal2:  1,234,567,890                 # 整数 (10 進数)
octal:     0644                          # 整数 (8 進数)
hexa:      0xFF                          # 整数 (16 進数)
float1:    0.05                          # 浮動小数点
bool1:     true                          # 真
bool2:     yes                           # 真
bool3:     on                            # 真
bool4:     false                         # 偽
bool5:     no                            # 偽
bool6:     off                           # 偽
null1:     ~                             # Null 値
null2:     null                          # Null 値
date:      2005-01-01                    # 日付
stamp:     2005-01-01 00:00:00 +09:00    # タイムスタンプ
str1:      'true'                        # 文字列
str2:      "2005"                        # 文字列
symbol:    :foo                          # シンボル (Syck の独自機能)
EOS

data = YAML.load(str)
pp data

# {"str1"=>"true",
#  "bool5"=>false,
#  "str2"=>"2005",
#  "bool6"=>false,
#  "symbol"=>:foo,
#  "date"=>#<Date: 4906743/2,0,2299161>,
#  "null1"=>nil,
#  "float1"=>0.05,
#  "null2"=>nil,
#  "octal"=>420,
#  "decimal1"=>123,
#  "decimal2"=>1234567890,
#  "hexa"=>255,
#  "stamp"=>Sat Jan 01 00:00:00 JST 2005,
#  "bool1"=>true,
#  "bool2"=>true,
#  "bool3"=>true,
#  "bool4"=>false}

#-----------------
## YAML ドキュメント
str = <<EOS
- name: Shiina
  birth: 1998-01-01
  age: 6
  favorite:
    - Thomas
    - Pokemon
- name: Sumire
  smoker: false
  birth: 2000-02-02
  age: 4
EOS

## オブジェクトに変換する
require 'yaml'
require 'pp'
yaml = YAML.load(str)
pp yaml

# [{"name"=>"Shiina",
#   "age"=>6,
#   "birth"=>#<Date: 4901629/2,0,2299161>,
#   "favorite"=>["Thomas", "Pokemon"]},
#   {"name"=>"Sumire",
#   "smoker"=>false,
#   "age"=>4,
#   "birth"=>#<Date: 4903153/2,0,2299161>}]

#-------------------
## YAML データ (「---」で区切って複数のデータを記述している)
str = <<END
---
name:   Ruby
url:    http://www.ruby-lang.org
---
name:   Python
url:    http://www.python.org
---
name:   PHP
url:    http://www.php.net
END

## YAML ドキュメントをひとつずつ読み込む
require 'yaml'
YAML.load_documents(str) do |doc|
  p doc
end

# {"name"=>"Ruby", "url"=>"http://www.ruby-lang.org"}
# {"name"=>"Python", "url"=>"http://www.python.org"}
# {"name"=>"PHP", "url"=>"http://www.php.net"}

#--- End of File ---

| | コメント (0) | トラックバック (0)

ピックアップ: ユーザー造反で Digg が敗北宣言, プログラミングの6大10項目, etc...

- http://cappuccino.jp/keisuken/logbook/20070501.html#p07
> >  [3DCMS][Java][Ruby] JRubyコンパイラがやっぱり欲しい - 航海日誌 (2007-05-01)

xfy の xvcd のコンパイラや, xvcd へのアスペクト機能とかも欲しいなぁ。

- http://www.metamix.com/210.php
> > |M|E|T|A|M|i|X| 『Googleで検索できないものはない』という迷信を過度に信じる人たちについて。非インターネット的業界、群れるユーザー・・

- http://e0166.blog89.fc2.com/blog-entry-158.html
> > iGoogleにさらっと個人情報の一部をもっていかれた。きっとこの先の広告展開に使われますよね*ホームページを作る人のネタ帳

- http://randomnotes.weblogs.jp/maclalalaweblog/2007/05/digg_ec1f.html
> > maclalalaweblog: ユーザー造反で Digg が敗北宣言

- http://blog.creamu.com/mt/2007/05/ajaxgtdsimple_gtd.html
> > Ajaxでぐりぐり動くシンプルGTDツール『simple GTD』 | CREAMU

- http://www.aoky.net/articles/jeff_atwood/top_6_list_of_programming_top_10_lists.htm
> > プログラミングの6大10項目リスト

- http://e0166.blog89.fc2.com/blog-entry-156.html
> > Goolge八分からの復帰方法。ページランク3への長い道のり*ホームページを作る人のネタ帳

> Google神話には、一度削除されたサイトが復帰する事はないと言われていますが、実際はそうではないと言うことですね。それが今、ページランク3と言う事に感動せずにいられません。

この katoy のサイトもページランクはいまだに0のままです。
(投稿のあとに確認してみたらページランクは2だった 2007-05-03 15:30)

他のサイトからのリンクというものが google では重視されているようです。
yahoo と google の結果と順位の差が大きいのにも気がついていますが、その原因は何かは私には判っていない...

| | コメント (0) | トラックバック (0)

xfy + cvs + jruby で何ができるか?

ruby で csv を扱う例を見つけた。
ruby で xml を扱う例を見つけた。

これを "xfy から ruby/jruby を呼出す" 事と組み合わせれば、
xfy で cvs を表示する例が簡単に作れそうだ。
(xfy からrubyを呼び出すことで xml を得て、xvcd の template を適用する。
   <xvcd:apply-templates select="function:xml-string-to-dom($output)"/>

呼び出す ruby コードでは、 cvs を読み込み、必要に応じて何らかの処理をする。
  さらに xml に変換して xfy には、文字列として返すのだ。)

以下の例は、java, jruby で動作する。

CSV を扱う例:
===========
- http://tmtm.org/ja/tdiary/?date=20070412
> > tmtm日記(2007-04-12): SimpleCSV
- http://tmtm.org/ja/ruby/lightcsv/
> > LightCsv: CSV をパースして配列を返す。
(この LightCsv は FasterCVS よりも速いらしい)

require "lightcsv"
s =<<EOS
0,1,2
"a","b","c"
X,,Z
EOS

LightCsv.parse(s){|row| p row}
#["0", "1", "2"]
#["a", "b", "c"]
#["X", "", "Z"]

LightCsv.new(s).each{|row| p row}
#["0", "1", "2"]
#["a", "b", "c"]
#["X", "", "Z"]

p LightCsv.parse(s)
#[["0", "1", "2"], ["a", "b", "c"], ["X", "", "Z"]]

p LightCsv.new(s).map
#[["0", "1", "2"], ["a", "b", "c"], ["X", "", "Z"]]

XML を扱う例:
===========
- http://www.nslabs.jp/ruby-rexml.rhtml
> > Netsphere Laboratories: RubyでXML (REXML)

require "rexml/document"

source = <<EOF
<?xml version="1.0"?>
<foo><bar />
    <baz>ho&lt;ge</baz>
</foo>
EOF

doc = REXML::Document.new source
puts doc
#<?xml version='1.0'?> 
# <foo><bar/>
#    <baz>ho&lt;ge</baz>
#</foo>

| | コメント (0) | トラックバック (0)

2007-05-01

ピックアップ:Ruby gettextのデモ, GoogleMapスーパーズーム, etc...

今日は映画の日(毎月の1日)だったが映画を観にいけなかった...

- http://sisyphus.s3.xrea.com/tnikki/20070426.html#p01
> > うむ - festina lente (2007-04-26)

- http://www.yotabanana.com/lab/20070430.html#p01
> > よたらぼ(2007-04-30): Ruby gettextのデモ

- http://japanese.engadget.com/2007/04/30/flytech-dragonfly-mechatombo-ornithopter/
> > 羽ばたき飛行ラジコン「R/C メカトンボ」予約受付中 - Engadget Japanese

- http://e0166.blog89.fc2.com/blog-entry-154.html
> > GoogleMapスーパーズームのビーチ撮影はもはや神の領域ではないですか?*ホームページを作る人のネタ帳

| | コメント (0) | トラックバック (0)