パソコン・インターネット

2009-08-23

Ext JS が良さそう

Web アプリをつくるのに Ext JS を使えるか調査中。
なかなか良さそう。

- http://extjs.com/deploy/dev/examples/samples.html
> Ext JS 3.0 Samples

- http://sairi-path.blogspot.com/2009/08/ext-js-in-action-meap.html
> http://sairi-path.blogspot.com: Ext JS in Action (MEAP)
  http://rapidshare.com/files/268718411/Manning_-_ExtJS_in_Action_MEAP__2010_.zip から 一部を download できる。

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

2009-05-30

Mind42 を使ってみた

次の記事を読んで、Mind42 について知った。
- http://ohnishi.livedoor.biz/archives/50936027.html
> 大西 宏のマーケティング・エッセンス:ひと月15万字を書く私の方法 - livedoor Blog(ブログ)

- http://nihon-mic.co.jp/hoken/2009/04/post_750.html
> - 新聞報道から読み解く「保健」の未来 -: スローライフ

- http://journal.mycom.co.jp/articles/2008/02/04/mind42/index.html
> 【レビュー】マインドマッピングツール『mind42.com』で停滞思考をスッキリ整理! (1) マインドマップとは? | ネット | マイコミジャーナル

すぐに Mind42 に acount をつくって、作成・publish してみた。
http://mind42.com/pub/mindmap?mid=9296ea91-6e14-44fe-af9a-6ad23c3eece1

すばらしい! intranet で使える(業務データを扱える) ようにしたいなぁ。

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

2009-05-16

pdftohtml で日本語を

PDFをプログラムから検索できるようにしたいとおもった。
porticus で pdftohtml をインストールした。
$ pdftohtml -c -euc UTF-8 foo.pdf
としたが、
Error: Unknown character collection 'Adobe-Japan1'
とでるし、変換結果も変だった。
xpdf-japanes も install  したが、やはり同じ。
しかし、
$ cp /opt/local/var/macports/software/xpdf-japanese/2004-jul-27_0+autoactivate/opt/local/share/xpdf/xpdf-japanese/add-to-xpdfrc ~/.xpdfrc
としてから、pdftohtml を実行したら、うまくできた。

http://www.oreilly.co.jp/editors/archives/000094.html
にある 『Binary Hacks』サンプルPDF の変換結果を示そう。

オリジナル PDF を MacOS のプレビューで。
2009051601

pdftohtml 結果を firefox で。
2009051602

この html に対して、ferret + ruby で検索させようと思っている。

$ pdftohtml -help
pdftohtml version 0.40 http://pdftohtml.sourceforge.net/, based on Xpdf version 3.01
Copyright 1999-2003 Gueorgui Ovtcharov and Rainer Dorsch
Copyright 1996-2005 Glyph & Cog, LLC

Usage: pdftohtml [options] <PDF-file> [<html-file> <xml-file>]
  -f <int>          : first page to convert
  -l <int>          : last page to convert
  -q                : don't print any messages or errors
  -h                : print usage information
  -help             : print usage information
  -p                : exchange .pdf links by .html
  -c                : generate complex document
  -i                : ignore images
  -noframes         : generate no frames
  -stdout           : use standard output
  -zoom <fp>        : zoom the pdf document (default 1.5)
  -xml              : output for XML post-processing
  -hidden           : output hidden text
  -enc <string>     : output text encoding name
  -dev <string>     : output device name for Ghostscript (png16m, jpeg etc)
  -v                : print copyright and version info
  -opw <string>     : owner password (for encrypted files)
  -upw <string>     : user password (for encrypted files)

標準出力へ xml 形式で出力もできるから、 パイプ処理も可能だな。

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

2009-04-06

xmlunit の調査

テストで xml を比較する必要があり、調べていたら、
- http://www.infoq.com/jp/articles/xml-unit-test
> InfoQ: XMLをユニットテストする
を見つけた。そのなかで xmlunit が説明されている。

java で xmlnunit を利用する例を以下に置いた。
- http://homepage2.nifty.com/youichi_kato/src.html
> xmlunit のサンプル(2009-04-05)
>    my-xmlunit-2009-04-05.tgz
>    xml の比較ツールの利用例。これを xfy から xvcd から使えるようにすることでテストに利用できる。

jruby からの利用を試みたが、うまくいかなかった。

$ cat SampleTest.rb

require 'pp'
require 'java'
require 'junit-3.8.2.jar'
import 'junit.framework.TestCase'
import 'junit.framework.TestSuite'
import 'junit.textui.TestRunner'
import 'junit.framework.Assert'

class SampleTest < TestCase

  def initialize
    super
  end

  def setUp
    pp "----- setUp"
  end

  def tearDown
    pp "----- tearDown"
  end

  def testFoo
    pp "----- testFoo"
    #Assert::assertTrue(true)
  end

end

t = SampleTest.new
t.setName('testFoo')

TestRunner::run(t)

実質的には何もしていないコードであるが、
実行すると、次のようになる。
$ jruby SampleTest.rb
."----- setUp"
"----- tearDown"
F
Time: 0.009
There was 1 failure:
1) testFoo(org.jruby.proxy.junit.framework.TestCase$Proxy0)junit.framework.AssertionFailedError: Method "testFoo" not found
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at org.jruby.javasupport.JavaMethod.invokeWithExceptionHandling(JavaMethod.java:298)
    at org.jruby.javasupport.JavaMethod.invoke_static(JavaMethod.java:278)
    at org.jruby.java.invokers.StaticMethodInvoker.call(StaticMethodInvoker.java:47)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:273)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:112)
    at SampleTest.__file__(SampleTest.rb:53)
    at SampleTest.load(SampleTest.rb)
    at org.jruby.Ruby.runScript(Ruby.java:577)
    at org.jruby.Ruby.runNormally(Ruby.java:480)
    at org.jruby.Ruby.runFromMain(Ruby.java:354)
    at org.jruby.Main.run(Main.java:229)
    at org.jruby.Main.run(Main.java:110)
    at org.jruby.Main.main(Main.java:94)

FAILURES!!!
Tests run: 1,  Failures: 1,  Errors: 0

となってしまう。

setUp, tearDown は呼び出されているが、
testFoo の呼び出しがうまくできていない。
refrection での java-class, jruby-class のやり取りが問題のようだが)
junit を jruby で使うことは無理なのか?
xmlunit の diff をつかって、jruby の respc や test/unit で利用するしかないのかも知れない。

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

2009-03-23

swing アプリの GUI テストを fest-swing で

jruby + swing のアプリのテスト方法をすることを考えた。
java での swing アプリのテスト法を探してみると、fest-swing というものを見つけた。
- http://feather.cocolog-nifty.com/weblog/2009/02/festjava-gui-sw.html
> 雪羽の発火後忘失: FESTを使用してJava GUI (Swing)のテストを実行してみる

まずは簡単な swing アプリを書く。
$ cat NewJFrame.java

// See http://feather.cocolog-nifty.com/weblog/cat7911427/index.html
package festswingexample;

public class NewJFrame extends javax.swing.JFrame {

    /** Creates new form NewJFrame */
    public NewJFrame() {
        initComponents();
        jCheckBox1.setSelected(true);
        jCheckBox1.setName("1st");
        jCheckBox2.setName("2nd");
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jCheckBox1 = new javax.swing.JCheckBox();
        jCheckBox2 = new javax.swing.JCheckBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("ニューフレーム");

        jCheckBox1.setText("チェックボックス");
        jCheckBox2.setText("2nd check");

        java.awt.GridBagLayout layout = new java.awt.GridBagLayout();
        getContentPane().setLayout(layout);
        add(jCheckBox1);
        add(jCheckBox2);
        pack();
    }// </editor-fold>//GEN-END:initComponents

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    // End of variables declaration//GEN-END:variables
}

テストコードを書く
$ cat NewJFrameTest.java
package festswingexample;

import org.fest.swing.fixture.FrameFixture;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class NewJFrameTest {

    private FrameFixture window;

    @Before
    public void setUp() {
        window = new FrameFixture(new NewJFrame());
        window.show(); // shows the frame to test
    }

    @After
    public void tearDown() {
        window.cleanUp();
    }

    @Test
    public void testCheckBoxInit() {
        window.checkBox("1st").requireSelected();
        window.checkBox("2nd").requireNotSelected();
    }

    @Test
    public void testCheckBoxClick() {
        // 1st をクリック
        window.checkBox("1st").click();
        window.checkBox("1st").requireNotSelected();
        window.checkBox("2nd").requireNotSelected();

        // 2nd をクリック
        window.checkBox("2nd").click();
        window.checkBox("1st").requireNotSelected();
        window.checkBox("2nd").requireSelected();
    }
}

2つのチェックボックスの初期値、
それぞれのチェックボックスをクリックした後のチェック状態
のテストができている。

同等のことを jruby でも行えるはず。

junit の代わりに RSpec を使うことになるかな。

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

2009-02-11

ピックアップ:虹の終わりに遭遇した写真, モバイルデバイス同期サービス「Google Sync」, etc...

- http://d.hatena.ne.jp/essa/20090211/p1
> 不確定性を受け入れ突出した人材の力を引き出せるのが良い組織 - アンカテ

- http://labaq.com/archives/51165414.html
> らばQ:実際のところ今ってどのくらい不景気なの?…ひと目でわかるグラフ

- http://labaq.com/archives/51165387.html
> らばQ:虹の終わりに遭遇した写真が話題に

- http://blog.creamu.com/mt/2009/02/100_2.html
> 商用でも無料で使えるアイコン100選 | CREAMU

- http://kunishi.blogspot.com/2009/02/google-38-web.html
> kunishi's blog: FirefoxのAutoPagerアドオンがとてもすてき

- http://yebo-blog.blogspot.com/2009/02/google-sync.html
> yebo blog: モバイルデバイス同期サービス「Google Sync」がローンチ

- http://www.moongift.jp/2009/02/copy_and_paste/
> MOONGIFT: » 複数のコンピュータ間でコピー&ペーストを共有「Copy and Paste」:オープンソースを毎日紹介

- http://www.moongift.jp/2009/02/fences/
> MOONGIFT: » デスクトップのアイコン配置を分かりやすく「Fences」:オープンソースを毎日紹介

- http://anond.hatelabo.jp/20090209174338
> 会社が倒産したわけだが・・・

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

ピックアップ:虹の終わりに遭遇した写真, モバイルデバイス同期サービス「Google Sync」, etc...

- http://d.hatena.ne.jp/essa/20090211/p1
> 不確定性を受け入れ突出した人材の力を引き出せるのが良い組織 - アンカテ

- http://labaq.com/archives/51165414.html
> らばQ:実際のところ今ってどのくらい不景気なの?…ひと目でわかるグラフ

- http://labaq.com/archives/51165387.html
> らばQ:虹の終わりに遭遇した写真が話題に

- http://blog.creamu.com/mt/2009/02/100_2.html
> 商用でも無料で使えるアイコン100選 | CREAMU

- http://kunishi.blogspot.com/2009/02/google-38-web.html
> kunishi's blog: FirefoxのAutoPagerアドオンがとてもすてき

- http://yebo-blog.blogspot.com/2009/02/google-sync.html
> yebo blog: モバイルデバイス同期サービス「Google Sync」がローンチ

- http://www.moongift.jp/2009/02/copy_and_paste/
> MOONGIFT: » 複数のコンピュータ間でコピー&ペーストを共有「Copy and Paste」:オープンソースを毎日紹介

- http://www.moongift.jp/2009/02/fences/
> MOONGIFT: » デスクトップのアイコン配置を分かりやすく「Fences」:オープンソースを毎日紹介

- http://anond.hatelabo.jp/20090209174338
> 会社が倒産したわけだが・・・

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

2008-12-13

web 投票システム の opensource を物色中

web 投票システム の opensource を物色中

ちょっとした投票を手軽に行えるシステムが欲しい。
多重投票を排除、個人の投票内容は分からないようにする ようなもの。

メールアドレスで識別することで多重投票は防げるだろう。
(チーム中での利用なので、許可するメールアドレスの一覧は決まっている)

投票内容をシステム管理者さえからもわからないようにするには、なんらかの暗号処理をかませればできそうな気がする。
その際に アクセスログからの追跡のことも考慮が必要。
// でも、ほんとうにシステム管理者からさえもデータを隠蔽することが必須かは考慮が必要。疑わしい行為があったときに解析ができないと困るかもしれない...

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

2008-10-27

PDF -> html, text の変換の無料ツールは?

PDF -> html, text の変換の必要が出てきた。
どんなツールを使うのが良いのか、調査中。

まずは、yahoo や google において "pdf html 変換" で検索。
いろいろなツールがあることが分かる。

http://www.google.co.jp/search?q=PDF+html+convert&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_jaJP283JP284

http://search.yahoo.co.jp/search?fr=slv1-fftbtop&p=pdf%20html%20%CA%D1%B4%B9

社内ネットワーク上でも、おすすめの変換ツールについて質問してみるつもり。

数日中に、結果を投稿する。

ネットで拾った "ICHI (市)"の画像。
F0077686_19292714

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

2008-10-11

順列で 3x3 魔方陣を

こんな記事をみかけた。

- http://d.hatena.ne.jp/n9d/20071213/1197521285
> すごいぞprolog!魔方陣がワンライナーでかける!(swi-prologで魔方陣を計算その2) - 計算機と戯れる日々

ふーん、すごいな。
MacBook でやってみた。

$ swipl
Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 5.6.61)

?- time((permutation([1, 2, 3, 4, 5, 6, 7, 8, 9], [A, B, C, D, E, F, G, H, I]),X is A+B+C,X is D+E+F,X is G+H+I,X is A+D+G,X is B+E+H,X is C+F+I,X is A+E+I,X is C+E+G,print([A,B,C,D,E,F,G,H,I,X]),nl,fail)).
[6, 1, 8, 7, 5, 3, 2, 9, 4, 15]
[8, 1, 6, 3, 5, 7, 4, 9, 2, 15]
[8, 3, 4, 1, 5, 9, 6, 7, 2, 15]
[4, 3, 8, 9, 5, 1, 2, 7, 6, 15]
[6, 7, 2, 1, 5, 9, 8, 3, 4, 15]
[2, 7, 6, 9, 5, 1, 4, 3, 8, 15]
[2, 9, 4, 7, 5, 3, 6, 1, 8, 15]
[4, 9, 2, 3, 5, 7, 8, 1, 6, 15]
% 1,154,595 inferences, 0.63 CPU in 0.64 seconds (99% CPU, 1832690 Lips)
false.

ruby でもやってみた
$ cat magicsqure3.rb
#  0 1 2
#  3 4 5
#  6 7 8

[1,2,3,4,5,6,7,8,9].permutation do |a|
  p a if a[0]+a[1]+a[2] == 15 and a[3]+a[4]+a[5] == 15 and a[6]+a[7]+a[8] == 15 and a[0]+a[3]+a[6] == 15 and a[1]+a[4]+a[7] == 15 and a[2]+a[5]+a[8] == 15 and a[0] + a[4] + a[8] == 15 and a[2] + a[4] + a[6] == 15
end

$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9]

$ time ruby magicsquare3.rb
[2, 7, 6, 9, 5, 1, 4, 3, 8]
[2, 9, 4, 7, 5, 3, 6, 1, 8]
[4, 3, 8, 9, 5, 1, 2, 7, 6]
[4, 9, 2, 3, 5, 7, 8, 1, 6]
[6, 1, 8, 7, 5, 3, 2, 9, 4]
[6, 7, 2, 1, 5, 9, 8, 3, 4]
[8, 1, 6, 3, 5, 7, 4, 9, 2]
[8, 3, 4, 1, 5, 9, 6, 7, 2]

real    0m2.435s
user    0m1.797s
sys    0m0.623s

jruby も試そうと思ったが、jruby (1.1.4) には permutaion メソッドが無いとのエラーになった。

java での 順列生成の例をネットで探してみた。

- http://sakura.bb-west.ne.jp/spr/damayan/algo/PermEnum.java
> 順列を生成する Enumeration
これをつかって、プログラムを作り、実行させてみた。

$ cat MagicSquare3.java
// See http://sakura.bb-west.ne.jp/spr/damayan/algo/PermEnum.java

import java.util.Enumeration;

/**
* 順列を生成する Enumeration
* N 個の要素から順列を生成する個数は N!
* (参考)C言語によるアルゴリズム入門
*/
class PermEnum implements Enumeration {

    private int N;
    private int c[], k;
    private Object[] objs;

    public PermEnum(Object[] items) {
    N = items.length;
    c = new int[N + 1];
    for(int i=0; i<=N; i++) c[i] = i;
    objs = items;
    k = 1;
    }

    public boolean hasMoreElements() {
    return (k < N);
    }

    public Object nextElement() {
    int i = 0;
    if((k & 1) != 0) i = c[k];

    Object tmp = objs[k];
    objs[k] = objs[i];
    objs[i] = tmp;

    k = 1;
    while(c[k] == 0) c[k] = k++;

    c[k]--;
    return objs;
    }
}

public class MagicSquare3 {

    // テスト
    public static void main(String[] args) {
    Integer[] data = {1,2,3,4,5,6,7,8,9};
    System.out.println("N="+data.length);
    Enumeration e = new PermEnum(data);
    int count = 0;
    while(e.hasMoreElements()) {
        Integer[] a = (Integer[])e.nextElement();

        if (a[0]+a[1]+a[2] == 15 & a[3]+a[4]+a[5] == 15 & a[6]+a[7]+a[8] == 15 & a[0]+a[3]+a[6] == 15 & a[1]+a[4]+a[7] == 15 & a[2]+a[5]+a[8] == 15 & a[0] + a[4] + a[8] == 15 & a[2] + a[4] + a[6] == 15) {
        System.out.print("{" + a[0]);
        for(int i=1; i<a.length; i++)
            System.out.print(", "+a[i]);
        System.out.println("}");
        count++;
        }
    }
    System.out.println("count="+count);
    }
}

$ java -version
java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284)
Java HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing)

$ time java -cp . MagicSquare3
N=9
{2, 9, 4, 7, 5, 3, 6, 1, 8}
{2, 7, 6, 9, 5, 1, 4, 3, 8}
{8, 3, 4, 1, 5, 9, 6, 7, 2}
{8, 1, 6, 3, 5, 7, 4, 9, 2}
{6, 7, 2, 1, 5, 9, 8, 3, 4}
{6, 1, 8, 7, 5, 3, 2, 9, 4}
{4, 9, 2, 3, 5, 7, 8, 1, 6}
{4, 3, 8, 9, 5, 1, 2, 7, 6}
count=8

real    0m0.277s
user    0m0.169s
sys    0m0.046s

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

2008-08-04

ピックアップ:エスカレーターがぶっ壊れて逆流, JavaScriptだけのダイナミックなグラフライブラリ「ProtoChart」, etc...

久しぶりにファンタジアを DVD で観た。 水中の描画は ポニューよりもすごいかも知れない。

「katoy」のにゃんにゃん分析結果

猫画像

- http://d.hatena.ne.jp/dog-planet/20080803/p1
> 映画『崖の上のポニョ』〜本当は怖いポニョの都市伝説〜 - Dog Planet Cafe 〜 犬惑星 〜

- http://gigazine.net/index.php?/news/comments/20080803_wf2008_open/
> 【速報】ワンダーフェスティバル2008夏、開場直後に人が多すぎて地鳴りのような音ともに4階から1階へエスカレーターがぶっ壊れて逆流、けが人発生 - GIGAZINE

- http://www.moongift.jp/2008/08/doko/
> MOONGIFT: » 社内向けの全文検索エンジン「どこかな?」:オープンソースを毎日紹介

- http://www.gizmodo.jp/2008/08/post_4071.html
> どう考えてもアップルの新製品が登場間近 : Gizmodo Japan(ギズモード・ジャパン), ガジェット情報満載ブログ

- http://veadardiary.blog29.fc2.com/blog-entry-1704.html
> 隠し機能QuartzGLをONにしてMacの動作を軽くする | Macの手書き説明書

- http://www.moongift.jp/2008/08/protochart/
> MOONGIFT: » JavaScriptだけのダイナミックなグラフライブラリ「ProtoChart」:オープンソースを毎日紹介

- http://www.j-tokkyo.com/2008/08/02/9442.html
> 革新的発明と製品情報 » 時計CDラック

- http://d.hatena.ne.jp/kwatch/20080802/1217638066
> XMLC の紹介 - kwatchの日記

- http://ja.wikipedia.org/wiki/XML%E5%A4%89%E6%8F%9B%E8%A8%80%E8%AA%9E
> XML変換言語 - Wikipedia

- http://d.hatena.ne.jp/shi3z/20080802/1217679637
> 復興祈願花火フェニックス - shi3zの日記

- http://www.itmedia.co.jp/news/articles/0808/02/news010.html
> Yahoo!、ソーシャルブックマーキングサイト「del.icio.us」を刷新 - ITmedia News

- http://hillbig.cocolog-nifty.com/do/2008/08/post_040f.html
> DO++: 機械学習による自然言語処理チュートリアル

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

2008-07-31

xfy 実験室: Java Powered 拡張コマンド の記事を読んだ

- http://xfy.justblog.jp/labs/2008/07/java-powered-ec.html
> xfy 実験室: Java Powered 拡張コマンドを使いやすく「メイクアップ」

この記事では、
    <extcommander:call-command
       plugin-id="com.xfy.community.samples.exthelloworld"
       selected-text="{xvcd:user-data('CITED')}"
        entry-xml-string="{function:dom-to-xml-string(/)}"
        return-to="result"/>
    >
というような形で  xvcd から java でつくったプラグインを呼びだせるという雛形が示された。

java 側で、ProcessBuilder を使う事で、任意の外部コマンドを呼び出し、そのコマンドでの処理結果を
xfy 側に返すことができるし、外部コマンド側で ダイアログなどの GUI を利用することもできそうだ。

xfy/xvcd での XML でのプログラミングは敷居が高い。
自分が知っている言語で処理を行い、XML に整形して結果を返すだけなら、敷居はぐっと低くなる。
JSON の利用や、 RDB の利用、web-service の利用、画像ファイル生成なども自分の知っている言語で、
その言語での既存ライブラリーを自由に使えるのはとても便利と思う。
( http://ja.doukaku.org/lang/ にあるような
  haskell, smalltalk, C#, phthon, perl, ruby, schema, Scala, javascript, PHP, ... をどれでも使える!)

xfy は "複合文書" を処理するシステムだが、その処理自体も "複合言語" で記述ができることになる。
これに "複合マシン" (分散処理、グリッドコンピューチング、P2P ...) といった要素も加わると、3C (3つの Commpaund) が実現できそうだ。


net で拾った テクノロジーの進化のパターン の画像 ( http://thik.jpn.org/archives/2005/10/_3_3.html )

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

2008-07-20

dwkiwiki のインストール中

ubuntu 8.04 に dekiwiki をインストールした。

- http://gofar2.iobb.net/~htaka/wordpress/archives/1521
> LeaveBehind » Blog Archive » DekiWikiを別ポートで起動する

- http://kirijinr.blog70.fc2.com/?mode=m&no=131
> *Kirijinri* DekiWikiのインストール

を参考にして、簡単に できた。(Thanks)

MacOS 10.5 にも入れようとしているが、こちらはなかなか大変。
まだ作業中...

- http://wiki.developer.mindtouch.com/MindTouch_Deki/Installation_and_Upgrade/1.9.0_Itasca_Source_Code_Install_and_Upgrade_Guide/OS_X_10.4_and_10.5_1.9.0_Itasca_Source_Code_Install
> OS X 10.4 and 10.5 1.9.0 Itasca Source Code Install - MindTouch Developer Center


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

2008-07-16

保護フィルム

前の iBookG4では、液晶保護フィルムを張っていた。
そこで、macBook の液晶保護フィルムを買いにいった。
でも 間違って、ボディフィルムを買ってしまった。


前の iBookG4 の 本体も決行 キズや汚れがついてしまっており、気にはなっていた。
こういったフィルムで保護する方法があったのか。
これはこれで、ボディに張って使うことにしよう。
液晶保護フィルムも2、3日中にまた買いに行こう。


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

2008-07-13

MacBook 環境設定開始

MacBook は 昨日の13:00 少し前に届いた。(配送トラックには 8 時前に積まれていたようだが...)

すぐに電源を入れ、環境設定を始める。
xcode を DVD から install.
その後は、ネットワーク設定を行い、 ソフトウェアアップデートを実施。
まずは safari で firefox 3 を download する。
そして、その後は firefox3 / poticus / gem で web から 各種プログラムを downlaod/ install しまくる。

以下に install したものを列挙する。(記述順番が install  順というわけではない)
firefix 3
   add-on
       delisious bookmark
       google toolbar
       male link
       greasemonkey
       piclens

macports
porticus

xcode 3.1
hava SE6
ruby 1.8
jruby 1.1.2
rubygems
netbeans 6.1

mi
cyberduck
Freemind 0.9
Google Eart
msn messenger

ImageMagic
cairo

git-core
erlang
scala
graphviz
doxygen
sqlite3
rb-sqlite3
tree

rails 2.1
rak
gruff

MacOS  10.5 の操作は特に困る点もないし、ソフトのインストールも特に問題はない。

Disk 使用量は
$ df -m
Filesystem    1M-blocks  Used Available Capacity  Mounted on
/dev/disk0s2     152299 27785    124264    19%    /

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

2008-07-06

openid の実験、projectzero インストール

- http://showzine.info/wp/archives/170
> SHOWZINE » RailsアプリにOpenIDによる認証を実装する

この記事にそってつくった rails アプリで、 myopenid での認証はできた。
でも、yahoo.co.jp での認証はできなかった...

ubuntu8.0.4,ruby1.8.6, rails2.1で環境構築をしたが、意外に手間取った。
rails で scaffold すると openssl がないというエラーが出たり...
これは
  "sudo apt-get install ruby libopenssl-ruby1.8"
で解消。

また、rails 環境とは関係ないが、rcairo のインストールも時間がかかった。
sudo gem install caior ではだめで、
rcairo のソースを download して configure, make した。
その際も libpixman の version が古かったので、それもソースから build する必要があったなど...

ubuntu の apt は、mac の macports とくらべると, package の versionが古かったり、依存関係の不足が多いように感じる。
# ubuntu の癖をまだよく理解していないだけかもしれないが...

IBM の project zero の環境も構築した。なかなかおもしろい。
サンプルアプリにアプリに openid のものもある。まだ、自分の環境では動作はさせれずにいるけど...

P.S.
今朝の web 記事のピックアップは、保存する前に emacs がフリーズして、書いていたテクストを失ってしまった...

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

2008-06-30

ubuntu でアクセス

iBookG4 が壊れて、自宅でネットでの記事検索、プログラミングができずにいた。
しまってあった DeskTop 機をもちだして、環境構築を行った。
そのマシンは一年以上前に Fedora5を install したまま放りぱなしだった。

PowerOn したら、とりあえずネットアクセスはできた。
しかし、Firefox3 をいれてみたら、GTK が古いから動作しない なんてエラーになった。

そこで Fedora5 -> fedora9 に yum でアップデートしてみた。
# ネット上では 5,6,,7,8,9 と順に上げていった方の記事を読んだ。
一つずつ上げるのは面倒なので、いっきに上げてみた。
yum はいろいろ警告がでていたが、ともかく終了はした。

でも boot すると ログイン画面が表示されるが、
ログイン後 Desktop のツールバーなどが一切表示されず、使うことができない orz...

そこで、本屋に行って、
一番安い CD での linux 本として、1500 円の ubuntu のムック本をみつけてきた。
# マシンに DVD はついていないので、CD のものを探す必要があった。

ubuntu8  はつかったことがなかったが、インストールは本当に簡単だった。
(fedora5 も簡単だったけど、ubuntu はもっと簡単!)
# nifty との接続設定がすぐにはできなかったり、 sudo でエラーになることなどハマりどころもあったけど。
sun-jdk6, netbeans6, ruby18 のインストールまではできた。
これで ruby-xbrl の開発をとりあえずは継続できそうだ。


いっ

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

2008-06-01

書籍 Built with Processing [改訂版] を買った (その4)

processing の 0137 が 公開されたようだ。
- http://labs.uechoco.com/blog/2008/05/processing0137_released.html
> > [Processing]0137リリース

今日は 3D 描画を試した。マウスクリックしている間は、図形移動は止まるようにしてある。

Sample07

$ cat sample07.rb

# See  http://yoppa.jpn.org/presen.php?itemid=186

def setup
    size(300,300,P3D)
    frameRate(30)

    @xspeed = 3.0
    @yspeed = 1.0
    @zspeed = 3.0

    @x = width/2.0
    @y = height/2.0
    @z = 0.0

    @r = 100.0
    @theta = 0.0

    stroke(255,255,255,30)
    fill(64,64,255,50)
    lights()
    translate(@x,@y,@z)
end

def draw
    background(24)
    translate(@x,@y,@z)
    rotateX(@theta)
    rotateY(@theta*1.5)
    box(@r)
    sphere(40)

    @x += @xspeed
    @y += @yspeed
    @z += @zspeed
    @theta += 0.01

    @xspeed *= -1.0 if ((@x > width) || (@x < 0))
    @yspeed *= -1.0 if ((@y > height) || (@y < 0))
    @zspeed *= -1.0 if ((@z > 10) || (@z < -100))
end

def mousePressed
  noLoop
end

def mouseReleased
  loop
end

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

2008-05-30

書籍 Built with Processing [改訂版] を買った (その3)

壁に反射するボールの例を作成した。
# 整理すればもっと短くかけるはずだ!
Sample05_2
$ cat sample05.rb

def setup
  @FRICTION = 0.96
  @radius = 10

  size(200, 200)

  colorMode(HSB, 100)
  set_color
  rectMode(CORNER)
  rect(0, 0, width, height)
  fadeToWhite

  smooth
  noStroke
  frameRate(24)

  @x0 = width / 2
  @y0 = height / 2
  set_speed
end

def set_speed
  @dx = random(-30, 30)
  @dy = random(-30, 30)
end

def set_color
  fill(60, 100, 100)
end

def draw
  fadeToWhite

  @dx *= @FRICTION
  @dy *= @FRICTION
  @x0 += @dx
  @y0 += @dy

  bounce

  set_color
  ellipse(@x0, @y0, @radius * 2, @radius * 2)

end

def bounce
  bounceMinX = @radius
  bounceMaxX = width - @radius
  bounceMinY = @radius
  bounceMaxY = height - @radius

  if (@x0 < bounceMinX) || (@x0 > bounceMaxX)
    @dx = -@dx
    @x0 = bounceMinX - (bounceMinX - @x0) if @x0 < bounceMinX
    @x0 = bounceMaxX - (bounceMaxX - @x0) if @x0 > bounceMaxX

    @x0 = bounceMinX if @x0 < bounceMinX
    @x0 = bounceMaxX if @x0 > bounceMaxX
  end

  if (@y0 < bounceMinY) || (@y0 > bounceMaxY)
    @dy = -@dy
    @y0 = bounceMinY  - (bounceMinY - @y0) if @y0 < bounceMinY
    @y0 = bounceMaxY  - (bounceMaxY - @y0) if @y0 > bounceMaxY

    @y0 = bounceMinY if @y0 < bounceMinY
    @y0 = bounceMaxY if @y0 > bounceMaxY
  end

  set_speed if abs(@dx) + abs(@dy) < 0.3

end

def fadeToWhite
  noStroke
  fill(99, 30)  # fill(90, 100)
  rectMode(CORNER)
  rect(0, 0, width, height)
end

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

2008-05-29

書籍 Built with Processing [改訂版] を買った (その2)

action-coding をつかって、jruby から動作させて遊び中。
  - http://code.google.com/p/action-coding/
  > > action-coding is a prototype environment using with Ruby(Language) + Processing(API).

画像が生成されるまでには少し時間がかかる。リアルタイムのグラフ生成は無理か?

$ jruby aco.rb -r sample01.rb
のように -r を指定して起動させると、ファイル内容の変化をキャッチして自動で再描画してくる。
(私は emacs で編集しているので、 ctrl-s する)
プログラムコードのエラーなどは、コンソールに出る。
println "#{x}, "#{y}" などとして debug プリントが可能。(これもコンソールに出る)

3 つのプログラムと、実行結果を示そう。

$ cat sample01.rb
def setup
  size(200, 200)
  colorMode(HSB, 100)
  background(99)
  noStroke

  x = 0
  y = 0
  while (y < height) do
    x = random(width)
    y  += random(5);

    fill(random(100), y, 99, 30)
    rect(x, y, 30, 30)
  end
end

Sample01
$ cat sample02.rb
def setup
  sample = loadImage("mona_lisa.jpg")
  w = sample.width.to_f
  h = sample.height.to_f
  r = h / w

  # println "#{w}, #{h}, #{scale}, #{r}"

  win_w = 300
  win_h = win_w * r
  scale = win_w / w

  size(win_w + 10, win_h + 10)

  image(sample, 5, 5, w * scale, h * scale)

end
Sample02

$ cat sample03.rb
def setup
  size(200, 200)
  colorMode(HSB, 120)

  background(119)
  smooth
  noStroke

  angle = 360 / 12
  margin = 40

  translate(120, 30)

  0..12.times do |i|
    fill(i * 10, 100, 119, 60)
    rect(0, 0, 30, 30)
    rotate(radians(angle))
    translate(margin, 0)
  end
end

Sample03_2
次は、アニメーションのサンプルを試そう。

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

2008-05-27

書籍 Built with Processing [改訂版] を買った

本屋で "Built with Processing" を見つけた。発行は今年の3月だな。
なぜ今まで気がつかなかったんだろう... 
今日 寝るまでに何か1つは Prcessing で何かを描くプログラムを書いてみよう。
# 美しいグラフを書くのに Prcessing を使うのが不自然かどうかを試したい。

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

2008-05-26

github, heroku.com にアカウントをつくってみた(その3)

2 つの rails の plugin をいれることで、認証 (メールでの activation をする)の実装も出来た。
  acts_as_state_machine
  restful_authentication/

ログイン画面、ユーザー登録画面、activation メール、ユーザーデータベースの様子
を以下に示そう。
TodosloginTodosregist Todosmail_2 Ttodousers

ユーザーデータベースの画面は SQLite Manager という firefox 拡張機能のものだ。(とても便利な拡張機能!)
status の列がユーザー登録時は "pending"  になるが、 activate をすると、"active" になる。

いまは local マシンから、 nifty の smtp を使ってメールを出している。
heroku で稼働させる際の smtp 関係の設定を調査中。
# 数日中に smtp 関係の設定を yaml で設定するようにした上で sourcefoge.jp (ruby-xbrl) にソースを commit する予定。

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

2008-05-24

github, heroku.com にアカウントをつくってみた(その2)

web 上の情報を基に heroku 上のアプリ作る事ができた。
// 編集は ローカルマシン上の netbeasn で行い、最後に heroku に git push した。

- http://webos-goodies.jp/archives/51287729.html
> > ブラウザで Ruby on Rails 開発! Heroku を使ってみよう - WebOS Goodies
にある例を試した。
todo リストアプリの作成と、それに pagenate 処理を追加するものだ。

さらに
 簡単な validation の追加と エラーメッセージを gettext で日本語にした。

作成したアプリのスクリーンショットを示す。
Katoysamole01_2
Katoysample02

heroku, git, ローカルでの netbeasn による開発 の組み合わせ という開発は面白い。

次は 認証機能を付けることを予定している。
それができたら、heroku 上のアプリをprivate から public に変更して公開する。

また、ソースコードを github に置こうと考えている。

paginate 処理も、エラーメッセージの日本語化の僅かな変更で出来るのは素晴らしい。
xfy/xvcd の開発にもこういった環境が欲しいものだ。

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

github, heroku.com にアカウントをつくってみた

- http://blog.tkmr.org/tatsuya/show/419-rails-heroku-com-git
> > Railsホスティングサービスheroku.comとソース管理Git

この記事に刺激され、にアカウントをつくってみた。

http://github.com は、 git のホスティングサービスだ。
- http://d.hatena.ne.jp/keyword/GitHub
> > GitHubとは - はてなダイアリー

http://heroku.com は、Firefox 上で Ruby on Rails 統合開発環境を実現した Web アプリケーションだ。
- http://webos-goodies.jp/archives/51287729.html
> > ブラウザで Ruby on Rails 開発! Heroku を使ってみよう - WebOS Goodies

自作のソースの公開や、履歴管理に使っていこうと思う。

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

2008-04-19

楽譜をつくる

会社での雑談で "SVG で楽譜のト音記号を書く" なんて話題が出た。
xfy/xvcd で楽譜をあつかったり midi を扱うということを以前に考えていたことがあったのを思い出した。
改めて, google で "SVG 楽譜" で検索してみた。

- http://ja.wikipedia.org/wiki/GNU_LilyPond
> > GNU LilyPond - Wikipedia

> ...GNU LilyPond(グニュー リリーポンド)とは、フリーの楽譜作成ソフトウェアである。
> ... 単純に音楽をテキストに記述してコンパイルすることにより、(PostScript経由で)PDF、SVGなどの形式で楽譜を出力できる。同時にMIDIファイルを出力させることも可能。

- http://wiki.fdiary.net/lilypond/
> > LilyPond Japanese Unofficial Wiki - FrontPage

- http://www.ipika.info/lilypond/lilypond-ver2.10.html
> > Lilypond ver2.10.

- http://blog.nagao.nuie.nagoya-u.ac.jp/nagao/archives/2007/05/post_30.html
> > 長尾のブログ2.0: 未来の話ができますか(前編)

> ...
MusicXMLという形式で記述された楽譜をSVGに変換して表示し、楽譜の任意の要素(音符や休符、歌詞の一部など)に対してアノテーション(情報付与)できるシステムを作っていた。
> ...
XMLデータベースを使うという試みはことごとく失敗した。
遅い、重い(メモリーを食う)、よく落ちる、の3拍子がそろっていたからだ。
これは単に実装の問題ではないのではないかと思う。
XMLデータベースに未来があると思っていたのは、誤りだったと今は思う。
>...

GNU の lilypond をインストールしてみた。
起動すると簡単な説明 (1ページ) があらわれた。その説明に従って出来たのがこれ。
     生成された PDF
Lilypond
   説明文中のソース
\header{
  title = "A scale in LilyPond"
}

\relative {
  c d e f g a b c
}

各種の表現力は以下で。
- http://lilypond.org/doc/v2.8/input/regression/collated-files.html
> > LilyPond Regression Tests

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

2008-04-07

xerces を調査中, anvil 動作せず

* xerces のXMLInputSource, EntityResolver の publicid, systemid の値をどう処理するべきか がよくわからない...

* anvil を gem で install してみたが、dylib  の version 不一致が出て動作せず...

  ruby での GUI フレームワークは何が一番よいのだろう...

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

2008-03-25

DouKaku? の ポーカーの役判定

http://ja.doukaku.org/121/
>> ポーカーの役判定
の いろいろな言語での解答例をいろいろ読んでみている。

Scala, Haskell はなかなか短い。
prolog は思ったより長いし、なぜか理解しにくいなぁ。
java, 長過ぎる...

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

2008-03-22

apache ivy を試す。

こんな記事を見つけた。
- http://www.digizenstudio.com/blog/2008/03/18/ivy-2-maven-metadata-support/
> > The Path to Zen » Blog Archive » Ivy 2 beta 2 Adds Maven Metadata Support

そこで apache-ivy を試してみた。
  http://ant.apache.org/ivy/
  >> Ivy is a popular dependency manager focusing on flexibility and simplicity.

サンプルを試していて、こんな build.xml 記述に気がついた。

https://svn.apache.org/repos/asf/ant/ivy/core/trunk/src/example/go-ivy/build.xml
---------- 抜粋 ----------
    <target name="generate-src">
        <mkdir dir="${src.dir}/example" />
        <echo file="${src.dir}/example/Hello.java">
package example;

import org.apache.commons.lang.WordUtils;

public class Hello {
    public static void main(String[] args) {
        String  message = "hello ivy !";
        System.out.println("standard message : " + message);
        System.out.println("capitalized by " + WordUtils.class.getName()
                                + " : " + WordUtils.capitalizeFully(message));
    }
}
        </echo>
    </target>
-----------------------
<echo> で build ファイル中にソースを書いて、それを directory に配置できるんだ。
小さなサンプルソースだったら、 この方式を使う事で、 build.xml の配布だけで十分だな。
そして、依存 library は ivy で取得させればよいのか!

この sample を動作させたようすを示す。
$ ls   
build.xml

$ ant
$ tree

.
|-- build
|   `-- example
|       `-- Hello.class
|-- build.xml
|-- ivy
|   `-- ivy.jar
`-- src
    `-- example
        `-- Hello.java

5 directories, 4 files

example/hello-ivy の実行例はこれだ。
$ tree
.
|-- build.xml
|-- ivy.xml
`-- src
    `-- example
        `-- Hello.java

2 directories, 3 files

$ ant
$ tree

.
|-- build
|   `-- example
|       `-- Hello.class
|-- build.xml
|-- ivy.xml
|-- lib
|   |-- commons-cli-1.0.jar
|   |-- commons-lang-2.0.jar
|   `-- commons-logging-1.0.jar
`-- src
    `-- example
        `-- Hello.java

5 directories, 7 files

$ ant -p
Buildfile: build.xml

Main targets:

clean        --> clean the project
clean-cache  --> clean the ivy cache
report       --> generates a report of dependencies
resolve      --> retreive dependencies with ivy
run          --> compile and run the project

cvs, subversion に依存 library をすべて置いておくのもよいけど、
maven や ivy で依存 library を download させる方式の方が適している場合もあるだろうと思われる。

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

2008-03-12

他人の java コードを読んでいて StringBuffer があるとコメントしたくなる?

他人の java コードを読んでいて StringBuffer があるとコメントしたくなります。
でも、本当に StringBuilder にすることでほんとうに有意義な速度差がでるのか?
本当にスレッド考慮もしているかの 自信がもてないので心の中でつぶやくだけのことが多い このごろ です。

- http://www.javainthebox.net/laboratory/J2SE1.5/TinyTips/StringBuilder/StringBuilder.html
> > J2SE 5.0 Tiger 虎の穴 StringBuilder

> ...
StringBuilder クラスは Tiger で導入されたクラスなのですが、なんと機能は StringBuffer クラスとまったく同じなのです。
それじゃ、なぜ今になって新しいクラスを作ったのでしょうか。
それはスレッドセーフとパフォーマンスに関連します。
> ...

- http://d.hatena.ne.jp/hyperash/20051205
> > 2005-12-05 - hyper@shのLog Book

> ... 結論。1万回以下程度ではStringBuilderは速いです。....

- http://blog.livedoor.jp/kamiya_eiji/archives/50446683.html
> > かみやんのたわごと from blog:StringBuffer vs StringBuilder

20080312

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

Project Euler

プログラムで解く数学の問題集がちょっとしたブームを巻き起こしているようです。

- http://odz.sakura.ne.jp/projecteuler/index.php?Project%20Euler
> > Project Euler - PukiWiki

最初のほうの問題はこんな感じ:
- http://odz.sakura.ne.jp/projecteuler/index.php?Problem%2010
> > Problem 10:

> 10以下の素数の和は2 + 3 + 5 + 7 = 17である. 200万以下の全ての素数の和を計算しなさい.

一番最後の問題はこんな感じ:
- http://odz.sakura.ne.jp/projecteuler/index.php?Problem%20185
> > Problem 185

> Number Mind は、有名なゲームMaster Mindの変種である。
色つきのペグの代わりに、秘密の数字を推理する。推理するごとに、正しい桁がいくつあったかのみが伝えられる。つまり、答えが1234で、2036と推理した場合、1つの桁が正しいと伝えられる。数字は正しいが場所が違うということは伝えられない。
....
以下の推理に基づいて、

  5616185650518293 ;2 桁正しい
  3847439647293047 ;1 桁正しい
    ... 省略...
  2659862637316867 ;2 桁正しい
16桁の唯一つの答えの数字を答えよ。

こういった一連の問題をどう解いていったら面白いか?

素数 2, 3, 5 ... を次々と吐き出す Stream や、フィボナッチ数列を吐き出す Stream,
といった機構をベースにして解いたりするのも面白い気がする。
参考:
  - http://mono.kmc.gr.jp/~oxy/w/?Stream
  > > Rubyのある風景 - Stream

あるいは、ruby/rinda の 並列/分散処理を用いて、複数マシン(プロセス) で解くのもよいかも知れない。
参考:
  - http://www.cs.tsukuba.ac.jp/~yas/sie/csys-2007/2008-02-08/
  > > タプル空間

こういったことが、xfy/xvcd でできるのか? というのも興味があるところ。
現状では 1,2,3, ... n のループをつくるのさえ、xvcd ではちょっと大変。
どうしたら、こういったことに対処していけるだろう...

参考:
  google で "xvcd ループ" で検索
 http://www.google.co.jp/search?q=xvcd+%E3%83%AB%E3%83%BC%E3%83%97

数字のパズルもおもしろいが、図形パズルをコンピュータを使って解くための
フレームワークも欲しいなぁ。
例えば、こんな問題をコンピュータを利用して特にはどうしたらよいのだろう...

- http://mrtn.exblog.jp/3581677/
> > Mrtn Directory : デュードニー分割と図形消滅パズルと五匹目のブタを探せ。

- http://www.torito.jp/puzzles/122.shtml
> >  ̄torito_ パズル遊びへの招待 1−22.サム・ロイドのパズル

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

2008-02-23

mac ports で "unmatched open brace in list" のエラー

いまだに MacOSX 10.4 なのですが、
ruby の port が outdated になっていたので、
sudo port update ruby したら、途中で disk full になった。
その後、 port uninstall ruby とかしても、エラーが出て port 操作ができなくなってしまった。

$ sudo port -d uninstall ruby
DEBUG: unmatched open brace in list
    while executing
"array set receipt_$ref $receipt_contents"
    (procedure "receipt_flat::open_entry" line 84)
    invoked from within
"${macports::registry.format}::open_entry $name $version $revision $variants"
    (procedure "open_entry" line 4)
    invoked from within
"open_entry $iname $iversion $irevision $ivariants"
    (procedure "registry::installed" line 33)
    invoked from within
"registry::installed $portname $v"
    (procedure "portuninstall::uninstall" line 5)
    invoked from within
"portuninstall::uninstall $portname [composite_version $portversion [array get variations]] [array get options]"
Error: port uninstall failed: unmatched open brace in list

/opt/local/var/macports 以下にある ruby をすべて削除し、
sudo port -d selfupdate
sudo port -d sync
することで、直ったようだ。
現在、port install ruby +mactk を実行中...
# この作業で、ずいぶん 時間を費やしてしまった...

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

2008-02-16

マジックナンバー 259 (STILL_ACTIVE)

java の ProcessBuilder で外部プログラム実行をさせた。
そのプログラムを終了を process#exitValue の値が得られまで loop するようなコードを書いた。
  http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Process.html#exitValue()

しばらくはそれで問題なかったのだが、あるケースでコマンド終了をキャッチできないことがあった。
いろいろ調べたら、外部プログラムで終了が System.exit(259) となると、終了をキャッチできないようだ。

Windows API では 259 は STILL_ALIVE という定数になっている。
  http://www.creamsoft.co.jp/docs/kirium/api/constant-values.html

こういった不連続な仕様自体が、問題をまねく元になるのだ。

http://gcc.gnu.org/ml/java-patches/2003-q1/msg00300.html
> ...
+      // NOTE: STILL_ACTIVE is defined as "259" by Win32 - if the
+      // child actually exits with this return code, we have a
+      // problem here. See MSDN documentation on GetExitCodeProcess( ).
> ...

javadoc の existValue で, "windows では、259 を終了コードに返すと問題となる" ことを書いて欲しいものだ。

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

2008-02-09

google.co.jp で "prolog アプリケーション" で検索したものからの抜粋

google.co.jp  で "prolog アプリケーション" で検索してみた。

- http://alohakun.blog7.fc2.com/blog-entry-773.html
> > ホワット・ア・ワンダフル・ワールド 流行り物 ?:

> ...
結局 Prolog は,仕様のレベルで手続きも書かないといけない言語なので,ループとか普通の言語では簡単なことが逆に難しくなる.というか,まともに表現できない (でも探索とか難しいことが死ぬほど簡単という変な言語).要するに,仕様 (概念) とプログラム (手続き) を区別できないパラダイム (ET パラダイムは,ここを明確に区別している)
そんなこんなで Prolog は欠陥だらけの言語なんですが,概念を説明するときには,今でも最高の言語だと思います (実際に実行して結果を得ようと思ったら,いろいろと小細工しないといけないけど).
結論 : Prolog は素晴らしい悟り体験のために勉強しましょう.実際に使う必要は無いですし,実際の (手続き的な) アプリケーションは書き難いです.
(最も完全な代替言語が待たれる古い言語だと思います.そのために研究しているわけですが).
> ...

- http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/user_guide/concept/home_en.html
> > Prologの概念、言語、アプリケーションの範囲 /IFProlog/Manuals/v4.1/user_guide/concept/

> ...
<Prologの応用分野>
Prologはオブジェクトおよびオブジェクト相互の関係に関する問題を解決するコンピュータプログラム言語です。数値計算は目的としていません。その計算モデルは、"データベース"をもとに"定理の証明をする"というものです。
...
<仕様(記述)言語としてのProlog>
当初は人工知能にと考えられましたが、Prologはソフトウェアの形式的な記述仕様言語としても使用できます。それはPrologの基本のセマンティクスが非常に高度な抽象化に適応できるからです。
...
<Prologのプロトタイプでの使用>
Prologはプロトタイプのための実践的ツールであり、仕様をシミュレートしたりデバッギングするのに有効な様々な機能を持っています。
...

- http://web.sfc.keio.ac.jp/%7Emukai/mathcgi/manhattan.html
> > Walking in Manhattan

> ... JavaScriptからサーバのPrologに情報を送信し,その返信を受け取る JavaScript関数 prologの使い方の一例です....

- http://www.comp.pu-toyama.ac.jp/nishida/Profile/compessay.html
> > Introduction of Nishida Lab.

> ... Prolog は論理型という精神は立派=高い抽象度を持つのですが、まともなプログラムを作るとメモリも CPU パワーも食いすぎます。...

- http://209.85.175.104/search?q=cache:wK1Iwgk3S4IJ:www25.cs.kobe-u.ac.jp/~tanizawa/bachelor.pdf+prolog+%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3&hl=ja&ct=clnk&cd=117&gl=jp&lr=lang_ja
> > 卒 業 論 文 XMLプログラミングのための Prolog処理系に関する研究
http://www25.cs.kobe-u.ac.jp/~tanizawa/bachelor.pdf

> ...
データベースのアクセス機能を持つことによって,XML文書とデータベースとの透過的なプログラミングを可能にした.
> ...

- http://page.freett.com/shelarcy/diary_2005-04.html
> > 星の贈り物(2005年4月の日記)

> ...
Prologを使ったAI的な応用は数では増え続けているようですが、GUIがらみのプログラミングの爆発的な展開に比較すると、枯れている、と感じられても仕方がない。
Sony のAIBOはPrologで書かれているという噂もありますが。スケジュール管理など「子供だまし」とでも形容したくなるような容易さで書けてしまう。しかし、スケジュール管理が本当に必要なのは企業の総務部で事務計算とは縁があっても、AIとはもともと無縁です。Prologは言語仕様とかではなく、利用目的(分野)とPrologのイメージのミスマッチというか、ちぐはぐがあまりに多い。
> ...
私のところでは30万件以上のRDBのtuppleを述語として登録して、オンメモリーで検索しています。IF/Prologは高価ですが、ほとんどバグもありませんし、スタックがオーバーフローするなどの経験もありません。これらの点では10数年前からまったく問題ありません。Web Agentなどといえるものではありませんが、Webはもちろん、mailからPrologを制御して、解をメールやFAXに転送するサービスなどもやっています。
全てのデバイスに当然のようにPrologインタプリタが付いている世界を 目指したいですね。情報家電などは最有力分野でしょう。
> ...

- http://www.shoeisha.com/book/pc/20c/chap07/gen.htm
> > 第7章 教育用言語と人工知能言語 Pascal、Prolog【言語】

> ...
Prologは一般的なアプリケーションを生成するプログラミング言語ではなく、知識データベースを生成してユーザーからの問い合わせに答える、非手続き型の人工知能言語である。 自動定理証明に役立てることを目的として開発され、人間の論理的な思考、特に系統立った認識の階層図に基づいた知識を元に思考する過程をコンピュータに肩代わりさせることが、Prologに与えられた使命だった。 症状と病名、その対処法、あるいは訴訟内容と判例などを知識として蓄え、適切な処置や判断をアドバイスするエキスパートシステムのほか、自動演繹推理、自然言語処理などに応用されている。
> ...

- http://209.85.175.104/search?q=cache:V_F2pl-1EmYJ:www.nufs.ac.jp/~matsmura/meineArbeit/natural_language_generation.pdf+prolog+%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3&hl=ja&ct=clnk&cd=254&gl=jp&lr=lang_ja
> > 自然言語生成/認識プログラムの WEB 公開
> ...
確かに WEB 上のサーバ・アプリケーションに、この Prolog の持つ Backtracking という
仕組みを保持することは、情報処理の学問から見てもとても魅力のある仕事であるように
思われる(英国の Logic Programming Associates という Prolog のアプリケーションを開
発している開発グループがそれである。ただその他には、この仕事に取り組んでいる研究
グループは世界でもそんなに多くはないはずである)。
> ...

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

2008-01-30

Kent Beck の Implementation Patterns を買った。

Kent Beck の Implementation Patterns を買った。(今月一杯有効の 10%OFF クーポン券をつかって紀伊国屋で。それでもネットで調べると amazon.co.jp で買ったほうが安かったみたいだ...)

薄い本の割には高い。
page 19 には

Cost(totla) = Cost(deploy) + Cost(maintain)
Cost (maintain) = Cost(understand) + Cost(change) + Cost (test) + Cost(deploy)

なんてことが書かれている。
基本的だけど大事なこと。

- http://ameblo.jp/ouobpo/entry-10058646720.html
> > ソースコードリーディング本としての『Implementation Patterns』|Ouobpo

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

2008-01-22

社内ブログって結局どうなの?

ちょっと思うところがあり、社内ブログについて google で調べてみた。
E-Mail 利用は現在では当たり前になっているけど、導入当時も賛否両論があったような気がする。
マウスが出始めた頃は、 GUI/CUI 議論もあっただろうと思う。
こういったものは みんなが使い出して、ある閾値を越えると 一気に普及するものだ。
机上の議論では、賛成/反対どちらの立場でもそれなりのロジックを述べることは可能。
To to or not To be   使うか使わないか,それが問題だ。

- http://web-tan.forum.impressrd.jp/n/2008/01/21/2534
> > シックス・アパートが1月31日NEC、2月12日NECソフトと共催でイントラブログセミナー | Web担当者Forum

- http://d.hatena.ne.jp/starocker/20051124/p2
> > 社内ブログが失敗する7つの理由 - sta la sta

- http://www.atmarkit.co.jp/im/cop/serial/kanrisha/16/01.html
> > 社内ブログを導入しよう − @IT情報マネジメント

> ...
ここで間違ってはいけないのは、インセンティブを与えて書いてもらおうとしないことである。なぜなら皆、アウトプット欲求はそれなりに持っている。それを吐き出すモチベーションはインセンティブではない。むしろ何を書いてもよいという雰囲気作りにある。上司や経営陣や周りの目が気になって結局何も書けないというのが一番良くない。
> ...
もし業務連絡ブログや社長ブログの閲覧を義務化したいのであれば、全従業員に対してRSSリーダーにそれらのブログを強制的に登録させればよい。もし RSSリーダーを使わない人がいるのであれば、従業員にとって必須の情報をRSSリーダーでしか閲覧できないようにすればよい。
> ...

- http://www.greentree.co.jp/index2.html
> > 社内ブログ成功の鉄則

- http://itpro.nikkeibp.co.jp/article/OPINION/20070116/258785/
> > 社内ブログ/SNSは「無法地帯」でいこう:ITpro

> ...
社内の情報システムの運営ポリシーとしては「無法地帯」とも呼べる柔軟さが,利用者を呼び込み,公私を交えた情報共有の活性化につながる。熱い議論の最中にあらゆるルールが吹き飛ぶ場面もあるが,そうした場合は運営者や他のユーザーが問題解決に乗り出す。ある運営担当者は「人事部に(熱い議論を)問題視しないよう進言した」と舞台裏を打ち明ける。
> ...

- http://www.future-planning.net/x/modules/news/article.php?storyid=2106
> > FPN-社内SNS/ブログも大炎上するのか?

> ...
今の若い社員は、ミクシィをはじめいくつかのSNSに登録している上、外でブログもすでにはじめているため、監視されていることがわかり切っている社内SNSになんか、今さら興味を示さないのだという。
> ...

- http://journal.mycom.co.jp/series/sns/008/menu.html
> > 【連載】経営ツールとしての社内SNS | 経営 | マイコミジャーナル

- http://polls.dailynews.yahoo.co.jp/quiz/quizresults.php?poll_id=1016&wv=1&typeFlag=1
> > Yahoo!ニュース - 意識調査 - 活用の賛否分かれる社内SNS・ブログ

- http://www.din.or.jp/%7Eawk/blog/archives/000226.html
> > Water Cooler Blog:社内ブログを導入している企業

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

2008-01-11

ruby でのプログラムの為に Netbeans6.0 を使い始めた

ruby でのプログラムの為に Netbeans6.0 を使い始めた。
いままでは、emacs で 編集して、 command line で run させていた。

Netbeans, なかなか便利。
jruby + java でいろいろ試したいことがあるが、netbeasnを使う事で効率があがりそうだ。

- http://www.netbeans.org/kb/trails/ruby.html
> > Ruby and Rails Learning Trail - NetBeans IDE 6.0 Tutorials, Guides and Articles
にある、一連の demo move も貴重な資料だ。

plugin 管理の GUI もわかりやすい。
GUI による ruby gems の管理も使いやすい。

Erlang 用の plugin もあるようだ。

- http://builder.japan.zdnet.com/news/story/0,3800079086,20355810,00.htm
> > Twitterでも使われるErlang言語のエディタがNetBeansに登場 - builder by ZDNet Japan

netbeans 解説書籍の購入も思案中...

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

2007-12-02

swi-prolog から graphviz を利用(その2)

Mazepath

- http://karel.tsuda.ac.jp/lec/prolog/intro3/
> > Prolog入門(3)
のページに "グラフの経路探索" というサンプルを見つけた。

経路結果を graphviz で表示させるようにしてみた。

$ cat maze.pl

% See http://karel.tsuda.ac.jp/lec/prolog/intro3/

/*
      a--b--c
      |  |  |
   d--e--f--+
   |     |
   g-----h
*/
connected(a,b).
connected(a,e).
connected(b,c).
connected(b,f).
connected(c,f).
connected(d,e).
connected(d,g).
connected(e,f).
connected(f,h).
connected(g,h).

can_go(X,Y) :- connected(X,Y).
can_go(X,Y) :- connected(Y,X).

go(X,X,Memo,[X|Memo]).
go(X,Y,Memo,Ans) :- can_go(X,Z), not(member(Z,Memo)), go(Z,Y,[X|Memo],Ans), genSVG(Ans).

% find solve.
% go(a,h,[],P).

% ----------------------
% Draw maze.
% ----------------------
genSVG(P) :- genDot(P), shell('dot -Tsvg temp.dot -o temp.svg', _Status).

genDot(P) :-
    tell('temp.dot'),
    writeln('graph sample {'),
    writePath(P),
    forall((connected(X,Y), concat_atom([X,Y],' -- ', W)), writeNode(W)),
    writeln('}'),
    told.

writePath([]) :- nl, !.
writePath([H|R]) :- write(H), write(' [color=red];'), nl, writePath(R).

writeNode(N) :- write(N), write(';'), nl.

検索を実行すると temp.dot, temp.xvg を生成する。

$ cat temp.dot
graph sample {
h [color=red];
f [color=red];
c [color=red];
b [color=red];
a [color=red];

a -- b;
a -- e;
b -- c;
b -- f;
c -- f;
d -- e;
d -- g;
e -- f;
f -- h;
g -- h;
}

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

2007-11-25

gforth も評価中

gforth も試してみている。

$ port search forth
gforth   lang/gforth  0.6.2  fast and portable implementation of the ANS Forth language

$ sudo port install gforth

これまでと同じに まずは hello-world と階乗計算を。

$ cat hello.f
cat hello.f
¥ See http://www.delorie.com/gnu/docs/gforth/gforth_32.html      
¥     http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Characters-and-Strings-Tutorial.html#Characters%20and%20Strings%20Tutorial

: fac1 ( n -- n! ) recursive
dup 0> if
   dup 1- fac1 *
else
   drop 1
endif ;

: hello s" Hello, gforth!" ;

$ gforth hello.f
Gforth 0.6.2, Copyright (C) 1995-2003 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
10 fac1  ok
. 3628800  ok
hello ok
type Hello, gforth! ok
100 fac1  ok
. 0  ok

Amazonギフト券

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

2007-11-24

swi-prolog も評価中

erlang だけでなく、別言語も試してみている。
document の複合化だけでなく、プログラミングも 複合化できるようになっていくべきなのかもしれない。

他にも haskell,  forth, APL など毛色の変わった言語も試してみる予定だ。

- http://ja.wikipedia.org/wiki/Hello_world%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E4%B8%80%E8%A6%A7
> > Hello worldプログラムの一覧 - Wikipedia

swi-prolog も macport でインストールした。

$ port search prolog
gprolog                        lang/gprolog   1.3.0        GNU Prolog compiler
prolog-mode.el                 lang/prolog-mode.el 1.2          An emacs major mode for editing prolog programs.
swi-prolog                     lang/swi-prolog 5.6.47       SWI-Prolog compiler plus extra packages (stable version)
swi-prolog-devel               lang/swi-prolog-devel 5.5.36       SWI-Prolog compiler plus extra packages (development version)
swi-prolog-lite                lang/swi-prolog-lite 5.6.12       SWI-Prolog compiler (without extra packages)

$ sudo port install swi-prolog

やはり、最初は Hello world と 階乗計算で。

$ cat fact.pl
% See http://www.sakalab.org/swi-prolog/swi-prolog.html

% fact.pl - basic factorial
fact(N, 1) :- N < 1, !.
fact(N, X) :- N1 is N - 1,
    fact(N1, Y),
    X is N * Y.

hello(X) :- display('Hello swi-prolog.').

$ swipl
Welcome to SWI-Prolog (Multi-threaded, Version 5.6.47)
Copyright (c) 1990-2007 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

?- consult('fact.pl').
Warning: (/Users/kato/work/src/prolog/fact.pl:10):
        Singleton variables: [X]
% fact.pl compiled 0.00 sec, 1,032 bytes

Yes
?- fact(10,A).

A = 3628800
?- fact(100,A).

A = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
?- hello(A).
Hello swi-prolog.

Yes
?- halt.

swipl -c file名で、compile 結果が a.out として得られる。

$ swipl -c fact.pl
Warning: (/Users/kato/work/src/prolog/fact.pl:10):
        Singleton variables: [X]
% fact.pl compiled 0.00 sec, 844 bytes
% /opt/local/lib/swipl-5.6.47/library/edinburgh compiled into edinburgh 0.01 sec, 2,032 bytes
$ ls
a.out*  fact.pl
$ ./a.out
Welcome to SWI-Prolog (Multi-threaded, Version 5.6.47)
Copyright (c) 1990-2007 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

?- fact(10,A).

A = 3628800
?- halt.

Amazonギフト券

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

erlang を評価中...

いまさらだが、erlang をインストールして、遊んでみている。
erlang は macport でインストールした。

$ port search erlang
erlang    lang/erlang    R11B-5  The Erlang Programming Language
$ sudo port install erlang

最初のプログラムは hello と 階乗計算。

$ cat test.erl
%% See http://erlang.org/faq/quick_start.html
%% http://static.scribd.com/docs/kvr8yei3i77l4.swf?INITIAL_VIEW=width

-module(test).
-export([fac/1, hello/0]).

fac(0) -> 1;
fac(N) -> N * fac(N-1).

hello() ->
    io:fwrite("Hello, erlang!¥n").

$ erl
Erlang (BEAM) emulator version 5.5.5 [source] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.5.5  (abort with ^G)
1> c(test).
{ok,test}
2> test:hello().
Hello, erlang!
ok
3> test:fac(10).
3628800
4> test:fac(100).
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
5> halt().
$

Amazonギフト券

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

2007-11-13

購入disk の交換を販売店でしてもらった

購入disk の交換を販売店でしてもらった...

firewire 接続の Harddisk は会社の G5 iMac でも認識されなかった。
# システムプロファイラーでは、 Harddisk 名はでているので、電気的にはつながっている?
# でも desktop に現れないのでどうしようもない。
会社からの帰りに販売店に寄った。disk 認識されない旨を話すとすぐに交換することになった。
(買ったハードの交換交渉をするのは初めて。あまりにあっけないので拍子抜けした感もある。
  ともかく交換に際して面倒なことはなく、とても気持ちの良い対応だった。)

明日、iMac G5 で、この外付けdisk に leopard をインストールしよう。

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

iBook + Lacie disk で leopard を試すが...

iBook + Lacie disk で leopard を試すが、うまくいかない。
ここ2日間の経過をメモする。

Lacie の firewire 接続の 250GB Disk を買ってきて、そこに Leopard を入れてみた。
(現在の使用環境がこわれるのは避けたいので、外付けDisk 起動で様子をみようと思っている)
俺がつかっている Mac は、iBooKG4 (1.07GHz, PowerPC G4, 768MG) である。

インストールは一度ではうまくいかなかった。
まず1回目。なぜか途中で いくつかのファイルが書き込めなかった旨のエラーがでた。
2回目も試すが同じエラー。
その後、何回か インストールログを表示させながら試す。
するとメモリー不足エラーが起こっていることが判明。
そこで、英語をメイン言語として、プリンタードライバー/各種言語サポートを外すなど最低限のもののみをインストールしてみた。
今度はやっと最後までいき、やっと 新 OS での起動ができるようになった。

そこで、先にインストールの設定で外していたものを追加すべく、upgrade インストールをためす。
しかしインストール途中でエラーがおこった。
そして、外付け disk からの boot もできなくなった。
(upgrade 途中でエラーになったため、システム不完全な状態になり、起動できない状態になったとおもわれる)

次は、会社にある iMac G5 (詳細スペックは失念。使い始めて3年目のものだ) で、この 外部Disk にインストールをしてみた。
こちらはデフォルト設定ですんなりと インストールできた。
iBook に接続し、外部Disk からの起動で、Leopard を触ることができた。

しかし、悲劇は帰宅してから起こった。
パワーを入れても、leopard が起動しない。
本体Disk の 10.4 で起動し、disk をつないでも, disk が認識されない orz ...
システムプロファイラーでみると、 Lacie disk が表示されているのに!。
Desktop に disk のアイコンはでてこないし、ディスクユーティリティーでも Lacie disk は出てこないので、どうしようもない。
# ケーブル類の抜き差し、使用ポートの変更なども行ってみたが駄目だった)
昼休みか、帰宅途中に販売店に持って行こう... (1日使っただけでハードが壊れた?)

1日半かけて, 結局は ibook で leopardをいじれたのは 数時間だけ。
ruby, maven が入っていることも確認はした。
terminal で動作させた emacs で日本語入力が化けないのも確認した。
さらに eclipse、firefox をいれて、プログラミングを試そうと思っていたのに残念。
でも、OS の動作速度は重くなかったし, Finder の ユーザーインターフェースも気に入った。

環境移行の実験と、いざというときのための10.4の現状環境での起動法を確立したら、本体Disk に leopard を入れようとおもう。
# でも そんな手間をかけるより、intel 版 Mac with leopard をなんとかして入手することを真剣に検討すべきだな。
# いま使っている iBook も実は 知り合いから 5万で入手した。 なんとか intel Mac も安く入手したい。

P.S.
そういえば、会社でレンタルしている ThinkPad T61 のバッテリーが壊れた。
バッテリーで修復不能なエラー云々のエラーが表示される。
  (AC ケーブルーを外してマシンを移動させたら、なぜか reboot してしまったので気がついた。)
レンタル会社に電話し、交換を頼んだ。明日には発送されるとのこと。(素早い対応、素晴らしい)
# ものが壊れる時期は、集中するものらしい。

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

2007-11-04

java の classloader がよくわからない

ClassLoader.getSystemResource(),
getclass().getResource(), の差がよくわからない。
これらと java コマンドラインでの -cp でのクラスパス指定と、
eclipse での run 設定のクラスパス設定との違いの有無は?

ここ2日、これに関連した事で悩み中...

- http://www.sk-jp.com/mt/philosophical/archives/2005_04/05_224941.html
> > philosophical: Class#getResource と ClassLoader#getResource の違いと怪しさ

- http://japan.internet.com/developer/20060808/27.html
> > Japan.internet.com デベロッパー - Javaのクラスローディングを制御する

- http://www.deftrash.com/blog/archives/2006/09/post_30.html
> > クラスパス外のリソースを読み込む | dTblog | design and programming

- http://rainbowdevil.jp/mt/externalstorage/archives/java/index.html
> > 外部記憶装置: Java アーカイブ

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

2007-10-24

ブラウザから誰でも簡単にSubversionが使える『Beanstalk』を試した その2

eclipse からのアクセス、redMine からのアクセスのどちらも問題なく出来た。
スクリーンショットを示す。
Eclipse
Redmine1
Redmine0

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

2007-08-28

ピックアップ: Rubyで自己書換えプログラムを作る, Stallmanの欠点は他人の感情を理解しない点, etc...

現時点、曇りでころか大雨(すごい雷をともなう夕立!)

- http://jyouhouya3.sakura.ne.jp/2007/08/photoshop_3.html
> > 情報屋さん。 - PhotoShop使用前 使用後

- http://d.hatena.ne.jp/tanakaBox/20070826/1188126036
> > ボクノス - Rubyで自己書換えプログラムを作る。

- http://www.vcasmo.com/video/ruby/353
> > VCASMO - AjaxによるRESTへの影響

- http://www.moongift.jp/2007/08/origo_api_client/
> > MOONGIFT: » ソフトウェア開発ホスティングWeb APIクライアント「Origo API Client」:オープンソースを毎日紹介

- http://www.moongift.jp/2007/08/lily/
> > MOONGIFT: » ビジュアルプログラミングの世界へようこそ「Lily」:オープンソースを毎日紹介

- http://www.moongift.jp/2007/08/diffly/
> > MOONGIFT: » 差分の見やすいSVNクライアント「Diffly」:オープンソースを毎日紹介

- http://www.moongift.jp/2007/08/html2css/
> > MOONGIFT: » HTMLを解析してCSS生成「html2css」:オープンソースを毎日紹介

- http://slashdot.jp/linux/article.pl?sid=07/08/28/0233213&from=rss
> > スラッシュドット ジャパン | シンガポール航空の最新機種では全客席がPC装備

- http://www.rubyist.net/~matz/20070820.html#p04
> > Matzにっき(2007-08-20): Stallmanの欠点は他人の感情を理解しない点だと思う、という話。

- http://jibun.atmarkit.co.jp/lcareer01/rensai/career49/data49.html
> > もう通わない心……部下から上司へ7通の手紙 − @IT自分戦略研究所

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

2007-08-25

google map 埋め込みを実験。

google map 埋め込みを実験。

ルートを検索: 羽田空港から皇居

拡大地図を表示

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

2007-08-19

SVG 編集にはどのソフトを使う?

先日、リバーシの画面(SVG)の作成には、xfy を使った。
しかし、inkscape というソフトを install してあったことを思い出した。

mac なら macport で install 可能だ。
$ sudo port install inkscape

ベクターでの紹介ベージはこれ。
- http://web.interiorbox.jp/?eid=303030
> > ハコブログ | Illustratorにも劣らないベクター画像作成ソフト「Inkscape」

> ... SVG形式のファイルをpng形式の画像ファイルに変換できるほか、jpgやpngなどの画像をトレースしてSVG形式に変換することも可能です。

web 上にも使い方講座やデータ集がいくつかある。

- http://inkscape.nyx.bne.jp/practice/
> > Inkscape@JP

- http://monkeymorikoshi.seesaa.net/category/3694517-1.html
> > 日本モンキー森越研究株式会社: Inkscape講座

- http://plaza.rakuten.co.jp/kissamangasrtt/diary/200707180010/
> > Inkscape初心者教室 - 喫茶まんがす 楽天店 - 楽天ブログ(Blog)

- http://gigazine.net/index.php?/news/comments/20070505_tango_icon
> > 無料で利用できるアイコン集「Tango Icon Library」 - GIGAZINE

inkscape の解説本も出ているらしい。早速 買いに行こう。

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

2007-07-15

graphviz の利用を考えよう。

台風が来るというので外出を控えていたが、そんな必要は関東ではなかったようだ...

web でいろいろ探索していて graphviz の可能性を改めて考えてもようと思った。

http://zvtm.sourceforge.net/zgrviewer/video/videos.html
movie を見よ!素晴らしい!
xfy にもこんなインターフェースを追加して欲しい。

graphviz が扱う dot 形式を xml のマップ(変換)することで
xfy で dot ファイルを wysiwig で編集できそうな気がする。

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

2007-06-26

google,yahoo での xfy 検索の結果について

google, yahoo での "xfy" 検索では、katoy の blog の記事は 80 位 以降をフラフラしているだけ orz...

"xfy xvcd" で検索すれば、30 位より上には出てくるな。

xfy blog editor での投稿者による "xfy blod editor により作成されました" 云々の
文字列中の “xfy” が、web/blog 検索上では *ノイズ* になってしまっているような気がする。

本当に xfy についての記事を探そうとする人にとってはちょっと不便。
よい方法はないものか?

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

2007-06-22

URL の encoding で少しはまった

URL の encoding で少しはまった。

* ruby では http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=URI によると
  URI.encode(str[, unsafe])
    URI 文字列をエンコードした文字列を返します。unsafe には、URI として指定できない文字を正規表現か文字列で指定します
    (デフォルトは、定数 URI::UNSAFE
       /[^-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]]/n
    です)

* xfy では http://www.xfy.com/jp/manual/dev/developer/1.4/spec/reference_function.html#url-encode によると
  function:url-encode 関数
   エスケープ文字への変換対象となる文字は、次の文字を除くすべての文字です。
    * アルファベット(a~z、A~Z)
    * 数字(0~9)
    * 第2引数で指定された文字列に含まれる文字
   第2引数が省略された場合は、次の規則に従って変換されます。
    * アルファベット(a~z、A~Z)、数字(0~9)は変換されません。
    * URL区切り文字や、URLで利用できる記号(-_.*/:;!?$#&+=~@[])は変換されません。

* java では  http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/net/URLEncoder.html によると
    英数字文字の「a」から「z」、「A」から「Z」、および「0」から「9」は元のまま残す
    特殊文字の「.」、「-」、「*」、および「_」は元のまま残す
    空白文字「 」をプラス記号「+」に変換する

どれも default 動作が微妙に規則が異なっている。
一つの言語中で閉じた処理をしちるなら問題はないだろうが、異なる言語で一つのデータを使い回そうとすると
特殊な記号を含んだ URL があった場合にはまるのは必至だ。

java の API が一番 柔軟性がないので、普通の場合は java に合わせて ruby, xvcd では
第2パラメータを指定してつかうようにするのがいいか?

各種の web-service や RDB からの出力での URL encoding ってどうなっているかも気になるなぁ。

# こんなことでハマるとは想定外だった orz...

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

2007-06-17

Web API実践リファレンスブック を買った

Web API実践リファレンスブック  を買ってきた。

いろいろな web サービスの紹介と利用例がある。
この書籍で紹介されている サービスを利用する xfy/blog editor のプラグインを誰か 全部 作っていってほしいなぁ。

01 Amazonの商品を検索する
02 商品の情報を取得する
03 青果物の情報を取得する
04 商品のクチコミ情報を検索する
05 飲食店情報を検索する
06 萌系ショップ情報を検索する
07 Yahoo! で検索する
08 del.icio.usのブックマークを操作する
09 はてなブックマークの件数を取得する
10 はてなの情報を取得する
11 Wikipediaの記事を取得する
12 Flickrを使い倒す
13 お気に入りの音楽を見つける
14 旅行記や旅行写真を検索する
15 カレンダーの情報を取得する
16 番組表を取得する
17 天気予報を取得する
18 最寄り駅や路線情報を検索する
[変換系]
19 漢字変換をする
20 日本語を解析する
21 文章からキーワードを抜き出す
22 文章の使用言語を推測する
23 スペルミスを修正する
24 Webサイトを分類する
25 長いURLを短縮する
26 ウェブページのサムネイルを取得する
27 ヌード画像を検知する
28 郵便番号を住所に変換する
29 住所を緯度経度に変換する
30 Wi-Fiを利用して位置情報を取得する
31 IPアドレスから訪問者の場所を調べる
32 地域の標準時を取得する
33 太陽の出没情報を取得する
34 肥満度を測定する
35 ふたりの相性を占う
36 今日の運勢を占う
[認証系]
(解説)認証系APIについて
37 はてなアカウントで認証をする
38 TypeKeyアカウントで認証をする
39 Flickrのアカウントで認証をする
40 Googleのアカウントで認証する
[表現系]
41 YouTubeの情報を取得する
42 仮想世界の地図を表示する
43 3D機能もある地図を埋め込む
44 時間軸に沿って情報を整理する
45 データを動的にレイアウトする
46 Googleの検索機能を埋め込む

livedoor の TV 番組データを利用する例は php で記述されていたので、
ruby でデータ取得部のみを書いてみた。

$ cat livedoor-tv.rb
# See http://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser%3A%3ATutorial.ja

require "rss"
require "rexml/document"
require 'kconv'
require "pp"

# pref_id:13: Tokyo
open( "http://tv.livedoor.com/rss/onair?pref_id=13" ) {|f|
  contents = f.read
  rss = RSS::Parser.parse(contents, false);

  puts rss.channel.title.tosjis

  rss.items.each {|item|
    puts item.title.tosjis
    puts item.link
    puts item.dc_date
    puts item.content_encoded.tosjis
  }

サブダの新作絵本が平積みされていた。今日は買うのはパスした。

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

Restlet を試した

- http://gihyo.jp/dev/serial/01/awdp/0003
> > Restlet 1.0.1-RESTアプリケーションを手軽に実現するフレームワーク
の記事を読み、restlet に興味をもった。

早速 sample を実行させてみた。
ソースコード一式を以下に置いた。
http://homepage2.nifty.com/youichi_kato/src.html
restfull
  my-app-2007-06-17.tgz(2007-06-17)
   restlet 1.0.1 のサンプル (maven, ant , eclipse project 化)

topmcat などを用意することなく、簡単に サービスを稼働させることが出来るのは素晴らしい。
下に示したサンプルの例では、アプリを走らせたら  http://localhost:8182 にアクセスするだけで 良いのだ。

これを xfy の組み込むと良いかもしれない。
または、"plugin を restlet で多数つくり、それらから得た情報を mashup して xfy 画面の表示する" という使い方が面白そうだ。

Restlet での Helloworld のコード
---------------------------------

// See http://gihyo.jp/dev/serial/01/awdp/0003
//     restlet tutorial sample: Part03.java
//
//     http://localhost:8182

package com.mycompany.app;

import org.restlet.Restlet;
import org.restlet.Server;
import org.restlet.data.MediaType;
import org.restlet.data.Protocol;
import org.restlet.data.Request;
import org.restlet.data.Response;

/**
* Listening to Web browsers.
*
* @author Jerome Louvel (contact@noelios.com)
*/
public class Rsample {
    public static void main(final String[] args) throws Exception {
        // Creating a minimal Restlet returning "Hello World"
        final Restlet restlet = new Restlet() {
            @Override
            public void handle(Request request, Response response) {
                response.setEntity("Hello World!", MediaType.TEXT_PLAIN);
            }
        };

        // Create the HTTP server and listen on port 8182
        new Server(Protocol.HTTP, 8182, restlet).start();
    }

}

// --- End of File ---

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

2007-05-27

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-23

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

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

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

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

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

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

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

2007-05-19

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-11

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

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

Google

| | コメント (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-05

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)

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)

2007-04-29

Ruby クックブックを読み始めた

http://examples.oreilly.com/rubyckbk/
から 書籍中のサンプルコードを download した。
翻訳書籍では、いくつかの章が省略されているのがよくわかる。
XML を扱う章をなぜ省略してしまったんだろう...
やっぱり、原書を買うべきだったなぁ。

翻訳での第一章の最後の例は、面白い。
jruby でも問題なく動作した。

# This code will sleep forever... OR WILL IT?
require 'timeout'
before = Time.now
begin
  status = Timeout.timeout(5) { sleep }
rescue Timeout::Error
  puts "I only slept for #{Time.now-before} seconds."
end
# I only slept for 5.035492 seconds.
#---
def count_for_five_seconds
  $counter = 0
  begin
    Timeout::timeout(5) { loop { $counter += 1 } }
  rescue Timeout::Error
    puts "I can count to #{$counter} in 5 seconds."
  end
end

count_for_five_seconds
# I can count to 2532825 in 5 seconds.
$counter                                 # => 2532825
#---

これは、長い時間がかかる処理を 5 秒で打ち切ってしまうという例だ。
こんなことができるとは知らなかった。
(同様のことを java で行うとしたら、どのように書く?)

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

derby に郵便番号をインポートしてみた

- http://blog.masuidrive.jp/articles/2006/02/08/rake-import_zip
> > 郵便局のサイトから自動で郵便番号データをインポートする

この記事をもとに derby に全国の郵便番号を インポートしてみた。
jruby での rails 環境をつかった。
Rakefile 中の NKF.nkf("-w -S",line) の部分が動作しない。
(google すると jruby では NKF は使えないとの記載が見つかる。)
そこで、文字コード変換は手作業で行い、Rakefile をすこし書き換えた。

テーブルを作るための SQL は次のようにした。

create table zips (
  zip varchar(7),
  prefecture_id int,
  city varchar(64),
  town varchar(256)
);

インポートに1時間以上かかった。
scaffold で生成させた データ閲覧アプリも問題なく動作したが、ページ移動にも10数秒かかる!
これでは使えない。

derby で大量データを扱うのは無理なようだ。
(全国郵便番号は、12万件、csv ファイルのサイズは17MB ある。)

xfy + derby で郵便番号を扱う例を作ろうと思ったが、この反応速度では無理。
普通に mysql を使うような例をつくるか、もっと小さいデータ規模での例に方向変換しよう。

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

2007-04-28

解決: Rails で derby を使う方法がよくわからない...

http://youichi-kato.cocolog-nifty.com/blog/2007/04/rails_derby_48c1.html
>> Rails で derby を使う方法がよくわからない...
の投稿のように、先日は悩んでいた。

改めて、
http://www.atmarkit.co.jp/fjava/column/koyama/koyama04.html
の記事を
  jruby 0.9.9
  activerecord (1.15.3)
  ActiveRecord-JDBC (0.2.4)
  rails (1.2.3)
の環境で再度、挑戦してみた。
つぎの部分を変えることで、うまく scaffold 実行ができた。

Rails環境ファイル(~/workspace/hello/config/environment.rb)の書き換え方の部分

require File.join(File.dirname(__FILE__), 'boot')
require 'active_record/connection_adapters/jdbc_adapter'

--->

require File.join(File.dirname(__FILE__), 'boot')
require 'rubygems'
gem 'ActiveRecord-JDBC'
require 'jdbc_adapter'

ActiveRecord-JDBC のオンラインマニュアルでの記述に沿ってみただけ。

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

2007-04-22

Rails で derby を使う方法がよくわからない...

- http://www.atmarkit.co.jp/fjava/column/koyama/koyama04.html
> > (Java+Derby)* Ruby on Rails プログラミング - @IT

この記事で、 Derby を Rails で使う方法が記載されているが、どうもうまく行かない。

http://jruby-extras.rubyforge.org/ActiveRecord-JDBC/
に書いある方法と上のページの方法は微妙に違っている。
後日 こちらにかいてある方法を試してみよう。

ActiveRecord を使わなくてもいいんだけど。
xfy からの DB アクセスに ActiveRecord を使えると便利だと思うので、もう少しだけ調査/試行をしてみたい。

久しぶりに書店をゆっくり見回った。次の3冊を購入した。

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

2007-03-27

google blog サーチの謎

google blog サーチの仕様で府に落ちない点が1つある。
日付順 にしておいて 左メニューの  "一日以内" と "指定なし" で、上位の結果に差があることだ。
具体的には xfy で検索したとき katoy の投稿は "一日以内" にはあらわれても、"指定なし" にはあらわれない。
katoy の投稿以外のも同様の投稿がいくつかある。

期間指定は単にヒット件数の増減だけになるのが自然と思う。
でも実際には、現れる検索結果そのもののもフィルターが掛かっているようだ。

blog 検索に、ここの blog への投稿が index される速さは次のようです。
    technorati
    yahoo.jp
    google.jp

以前は1時間以内に google には index されていた気がするが、最近は1日近く経過しないと index されない。
どうしてかなぁ。

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

2007-03-14

blog ランキングに登録してみた

blog ランキングに登録してみた。

人気blogランキングへ

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

2007-02-18

Java言語で学ぶリファクタリング入門 を購入した: 010

Maven20070218

- http://homepage2.nifty.com/youichi_kato/src.html
ReplaceConstructorWithFactoryMethod (2007-02-18)
          refsrc-2007-02-18.tgz
          カバレーッジレポートのスクリーンショット
として、ReplaceConstructorWithFactoryMethod の章のソースコードを maven 化プロジェクトに追加したものを公開しました。

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

maven 2.0.5 に update した

mac の port をつかって maven2 を 2.0.4 -> 2.0.5  に更新した。

ついでにこんなページも、みつけたので メモ。

- http://www.in-vitro.jp/blog/index.cgi/Maven/20060526_01.html
> > 試験管のなかのコード :: Maven2 のバージョンを自動チェックする方法

現時点では アップデートしたことによる不具合には遭遇してない。

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

2007-02-16

Java言語で学ぶリファクタリング入門 を購入した: 009

Maven20070215_1

- http://homepage2.nifty.com/youichi_kato/src.html
ReplaceErrorCodeWithException (2007-02-15)
          refsrc-2007-02-15.tgz
          カバレーッジレポートのスクリーンショット
として、ReplaceErrorCodeWithException の章のソースコードを maven 化プロジェクトに追加したものを公開しました。

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

2007-02-12

Java言語で学ぶリファクタリング入門 を購入した: 008

Maven20070212

- http://homepage2.nifty.com/youichi_kato/src.html
ReplaceTypeCodeWithSubclasses (2007-02-12)
          refsrc-2007-02-12.tgz
          カバレーッジレポートのスクリーンショット
として、ReplaceTypeCodeWithSubclasses の章のソースコードを maven 化プロジェクトに追加したものを公開しました。

Shape の名前 "LINE", "RECTANGLE", "OVAL" の文字列を ShapeXXX 中で持たずに、
ShapeFactory で定義するように変更してみた。
1 ファイル中に NAME を集中させることで、ShapeXXX を追加/変更する際に、
違うShapeXXXX に同じ名前を意識せずに付けてしまうようなことが防げるだろう。

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

2007-02-11

Java言語で学ぶリファクタリング入門 を購入した: 007

Maven20070211

- http://homepage2.nifty.com/youichi_kato/src.html
ReplaceTypeCodeWithStrategy (2007-02-11)
          refsrc-2007-02-11.tgz
          カバレーッジレポートのスクリーンショット
として、ReplaceTypeCodeWithStrategy の章のソースコードを maven 化プロジェクトに追加したものを公開しました。

この章のサンプルコードでは、Main のテストカバレッジが 0 % だったので、そのテストケースを追加しました。

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

2007-02-10

Java言語で学ぶリファクタリング入門 を購入した: 006

Maven20070210

- http://homepage2.nifty.com/youichi_kato/src.html
ReplaceTypeCodeWithClass (2007-02-10)
          refsrc-2007-02-10.tgz
          カバレーッジレポートのスクリーンショット
として、ReplaceTypeCodeWithClass の章のソースコードを maven 化プロジェクトに追加したものを公開しました。

さらに、以前のコードを以下の様に変更もしています。
変更したのは、Robot クラスの実装とそのテストコードです。
いままでは、テストコードはダミーだったし、Robot.java 中では if ... else の最後の else 節には到達することはないとして、テストでその部分が実行されないのは良しとしていました。
しかし、null のケースを忘れていたのに気がついたのです。
そこで、次のようにして変更してみました。

Robot.java では
  ...
    public void order(final Robot.Command command) {
        if (command == Command.WALK) {
            System.out.println(this._name + " walks.");
        } else if (command == Command.STOP) {
            System.out.println(this._name + " stops.");
        } else if (command == Command.JUMP) {
            System.out.println(this._name + " jumps.");
        } else {
            // command == null などのケース
            System.out.println("Command error. command = " + command);
            assert false;
        }
    }
としました。
このコードのテストを次のようにしました。

    @Test
    public void testRobot() {
        final Robot robot = new Robot("test");

        // Expected
        final String expected = getExpectedOutput("Command error. command = null");

        // Actual
        try {
            robot.order(null);
            final String actual = getActualOutput();

            // Assert
            assertEquals(expected, actual);
        } catch (AssertionError ex) {
            // -ea で assert が有効な場合はここにくる。
            assertEquals(true, true);
        } catch (Throwable th) {
            assertEquals(true, false);
        }
    }

eclipse から junit テストを実行するときは、assert が無効になっている (-ea を VM オプションで指定していないから)
ので、assertEqual(...) でのチェックがされます。
mvn から test を実行すると、assert が有効になっているので、AssertionError が throw されることをチェックしています。

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

2007-02-08

Java言語で学ぶリファクタリング入門 を購入した: 005

Maven20070208

    Java言語で学ぶリファクタリング入門 の   ExtractClass の章のコードを
maven 化したプロジェクトに追加し、以下で公開しました。

- http://homepage2.nifty.com/youichi_kato/src.html
  >> Java言語で学ぶリファクタリング入門 の勉強
  >> ExtractMethod (2007-02-08)    refsrc-2007-02-08.tgz

テストカバレッジが低いのは、MainTest がなぜか 0% になってしまっている為。
何か単純なことを忘れているにだろうが、すぐには解消できない。
ひとまず この状態で公開します。

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

2007-02-07

マルチモニター環境の画策中

会社で、いままで レンタル品ながらなかなか良いマシン(ノートブック)を使っていた。
これを返却することになった。
調達できた代替マシンは、それなりに良いマシン(デスクトップ)なのだがいままでのマシンよりは数段、劣る。

作業効率アップを図る為、せめて マルチモニターにしようと思っている。
ロープロファイルなフラフィックボードが手元に無い。
帰宅途中に ビックカメラの覗いたが、安いロープロファイルなフラフィックボードは無かった。(1000 円で ATI のボードはあったが、ロープロファイルではなかった...)
アキバに行って探すしか無いかなぁ。

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

2007-02-06

Java言語で学ぶリファクタリング入門 を購入した: 004

Maven20070205

    Java言語で学ぶリファクタリング入門 の   ExtractMethodの章のコードを
maven 化したプロジェクトに追加し、以下で公開しました。

- http://homepage2.nifty.com/youichi_kato/src.html
  >> Java言語で学ぶリファクタリング入門 の勉強
  >> ExtractMethod (2007-02-05)    refsrc-2007-02-05.tgz

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

2007-02-04

coverlipse が動かない!

- http://www-06.ibm.com/jp/developerworks/java/library/j-ap01117/index.shtml?ca=drs-
> > 万人のためのオートメーション: Eclipse プラグインによるコードの改善
を読んで、 coverlipse という カバレッジ計測の eclipse プラグインがあることを知った。
MaxOSX10,4 L eclipse 3.2.1 + junit4  の環境で coverlipse 0.9.5.3 を試してみたが、動作しない。

RemoteTestRunner: trying to connect:61150
Failed to invoke suite(): java.lang.VerifyError: (class: org/junit/internal/requests/ClassRequest, method: isPre4Test signature: (Ljava/lang/Class;)Z) Illegal constant pool index
java.lang.reflect.InvocationTargetException
...

などどなってしまう。何故?

ところで、maven2 で covertura を使う際の注意です。

- http://homepage2.nifty.com/youichi_kato/src/maven2/project-with-mvn.txt
> > maven2 をつかって 30 分でつくる  プロジェクトサイト
> ...
>  カバレーッジ統計は my-app/cobertura.ser に累積的に格納されていきます。
>   ソースコードを編集すると、行番号がずれる為、cobertura.ser の内容は無効なものとなってしまいます。
>   cobertura.ser を削除するには
>     $ mvn cobertura:clean
>   を実行します。 ($ mvn clean では cobertura.ser 削除は実行されません)
> ...
これは、私が書いた文章の一部です。
書いたことを本人が忘れてました。
google で cobertura.ser を検索してヒットしたので、思い出すことができました。

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

2007-02-03

Java言語で学ぶリファクタリング入門 を購入した: 003

Maven20070203_1

Java言語で学ぶリファクタリング入門 の  IntroduceNullObjectの章のコードを maven 化したプロジェクトに追加し、以下で公開しました。

- http://homepage2.nifty.com/youichi_kato/src.html  
  >> Java言語で学ぶリファクタリング入門 の勉強  
  >> IntroduceNullObject (2007-02-03)    refsrc-2007-02-03.tgz

つぎのような変更を加えています。
- IntroduceNullObject のテストケースを class 毎に分割した。
- NullLabel のインスタンスを singleton にした。
- NullLabel の _label 値を 定数定義した。
- maven で javadoc レポートを生成するように pom.xml を編集した。
- maven で java5.0 でコンパイルするように pom.xml を編集した。

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

2007-02-02

Java言語で学ぶリファクタリング入門 を購入した: 002

Java言語で学ぶリファクタリング入門 の IntroduceAssertion の章のコードを
maven 化したプロジェクトに追加し、以下で公開しました。

http://homepage2.nifty.com/youichi_kato/src.html
  >> Java言語で学ぶリファクタリング入門 の勉強
  >> ntroduceAssertion (2007-02-01)    refsrc-2007-02-01.tgz

この書籍のサンプルコードでの System.out を キャピチャーして想定出力と比較するというのは、興味深い手法だ。でも System.out に直接出力せず、StringBufferや ByteArray  に出力するようしてテストしやすい形に本体のメソッドを書き換えるべきとも感じる。

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

2007-01-30

Java言語で学ぶリファクタリング入門 を購入した

Java言語で学ぶリファクタリング入門 を購入した。
http://www.hyuki.com/ref/ から書籍中のサンプルソースコードが download できる。

maven2 + eclipse 3.2 環境で、試しながら読んでいこうと思っている。
ひとまずは、最初の章のコードを試してみた。(MacOSX10.4.8, j2se5, mavn2.0.4)
それがこれだ。
  - http://homepage2.nifty.com/youichi_kato/src.html
    >> Java言語で学ぶリファクタリング入門 の勉強
    >> replaceMagicNumberWithSymbolicConstant (2007-01-30)

maven2 を使うと簡単にテストカバレージレポートなどもとれる。
Maven

元のソースコードでは、テストで実行されていない部分があったので、テストケースを追加した。

このようなテストドリブンな環境で xfy の xvcd, java プラグインの作成/テストができるようにしたいと思っているのだが...

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

2007-01-20

J2SE6 には Console なんてクラスがあるらしい

J2SE6 には   Console なんてクラスがあるらしい
http://download.java.net/jdk/jdk-api-localizations/jdk-api-ja/builds/latest/html/ja/api/java/io/Console.html
でも これってコンソールでのパスワード入力ぐらいしか利用価値はない?
JVM に関連付けられた文字コンソールがなかったら、
自動的に Swing で簡易コンソールをつくるようにすると、使い道が広がるかもしれない。

きちんと J2SE6 の新機能をさらっておく必要があるなぁ。
- http://www.02.246.ne.jp/~torutk/jvm/mustang.html
> > Java SE 6 Mustang新機能

ProcessBuilder() で外部プログラムを呼び出すことができる。
この外部プログラムを "java -jar foo.jar ..." で起動できるようにしておくと、
呼び出し側の手間がかからないで便利。また 稼働プラットフォーム依存のことは、
foo.jar 側で吸収させてしまえばよい。

ProcessBuilder() のような感覚で、
リモートマシンでプログラムを実行し結果を得られるようなものが欲しい気がする。
XML-RPC、WebService 呼び出しをラップすればよいだけか?

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

2007-01-11

java からの 外部コマンド呼び出しで実行中断も可能にすることを試行中

java の ProcessBuilder をつかって外部コマンドを呼び出すことは、これまでも度々、行ったことがある。
最近、呼び出し元から、外部コマンド実行をキャンセルできるようにすることを試みている。
(呼び出し側ではプログレスバーとキャンセルボタンを表示し、キャンセルボタンで実行を中断できる)
どうやるかというと、 Process#exitValue() は、まだプロセスが終了していないと exception を投げることを利用するのだ。
while (true) 中で、 sexitValue() , ユーザーキャンセルの有無のチェック, sleep() を回して、プロセス終了かキャンセル実行のどちらかでループを抜けさせるのだ。

参考にしたのは次のページ。 
- http://www.limy.org/dest/limy-eclipse/javasrc/org/limy/eclipse/qalab/ProcessUtils.html
> > org.limy.eclipse.qalab.ProcessUtils

- http://www.javainthebox.net/laboratory/J2SE1.5/TinyTips/ProcessBuilder/ProcessBuilder.html
> > J2SE 5.0 Tiger 虎の穴 ProcessBuilder

公開できる形のサンプルができしだい、ここで公開する。(土曜か日曜には作業できると思う。私の実装ミスと思うが ループが抜けない状況が発生しており 困っている。)

もっと違うアイデアによる実装案、実装例を知っている方がいたら、教えていただけると嬉しい。

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

2007-01-06

groovy 1.0 を download した

groovy 1.0 を download した。
  - http://groovy.codehaus.org/Download

最初は、source を download したが、maven1 での build のようなので、
binary を download した。(なぜ、maven2 を使っていないのだろう?)

groovy の site 内の document をみていたら、sudoku を解くプログラムがあった。
なんと たったの 184 文字だ。素晴らしい!
  - http://groovy.codehaus.org/Solving+Sudoku

groovyConsole を起動して、このページ中の コードを実行すると、数秒で答えが得られた。
_1_1
- http://groovy.codehaus.org/Eclipse+Plugin
ここには、 IDE 用の plugin の情報もある。

xfy から jruby  を呼び出す実験は挫折したままだが、 groovy で再挑戦してみたいものだ。

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

2007-01-03

Mac の darwinport の selfupdate で躓いた

Mac (iBookG4、10.4.8) に とあるソフトを install しようと思い、 DarwinPort を利用することにした。

しかし、 sudo -d port selfupdate で エラーがでてしまった。( どこぞの file が無いとのエラー)

そこでソースから Port をインストールしなおそうとして、1.3.2 を落として、configure すると
  configure: error: tcl wasn't compiled with threads enabled
とのエラーがでる。(tcl は fink で入れたやつが有効になっている)

google して次の記事をみつけ、binary を install した。
- http://itoshi.tv/d/?date=20060503
  >> DarwinPortを使ってみるよ。
こんどは、 sudo -d selfupdate はうまくいった。

以下は、www からのピックアップ記事を。

- http://ameblo.jp/yahooseo/entry-10022716787.html
  >> 成功報酬型SEOの破綻|web2.0

- http://kikko.cocolog-nifty.com/kikko/2007/01/post_5738_1.html
  >> きっこのブログ: お知らせです♪
  >> .. 人から、You Tubeで「エヴァンゲリオン」を見られると言うメールをいただきました。...

- http://www3.nhk.or.jp/news/2007/01/03/d20070103000041.html
  >> NHKニュース: 北斎の絵 龍と虎あわせて展示

- http://blog.so-net.ne.jp/rainyday/2007-01-03
  >> So-net blog:Rainy Day Codings:パーサジェネレータの入門は電卓以外ないのか

- http://ameblo.jp/kaws/entry-10022716304.html
  >> サイトの戦闘力を測る『Web Scouter』|R26的できごと♪

- http://d.hatena.ne.jp/sirouto2/20070103/1167781066
  >> 萌え理論Blog - アスペクト指向ブログ


注意: L25は、1/4(木)に発行です
    R25は、1/5(金)に発行です

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

2007-01-01

firefox を 2.0 にした

いままで、firefox 1.5 のままでいたが、2.0 にアップデートした。

アップデート前に
  http://btcorp.dyndns.org/Tools/FireFoxExtensions/FF_2.0_extensions/
から、CopyURL++ の 2.0 対応版をインストールした。

バージョンアップして困っている点が1つある。
AdBlock Plus を install したのだが、google Analytics でのレポート図の一部が、出ないのだ。AdBlock を無効にするときちんと表示される。
Adblock の設定を調整すればいいのだろうけど、どうすればいいかがよくわからない。

以下は web  からのピックアップ記事を。
- http://blog.programmableweb.com/2006/12/31/2006-year-end-mashup-stats/
  >> ProgrammableWeb.com » Blog Archive » 2006 Year End Mashup Stats

- http://journal.mycom.co.jp/special/2007/chokanjiv/
  >> 【特集】超漢字Vの進化 - Windows上でTRONを使う (1) やってきたXデー (MYCOMジャーナル)

- http://www.aoky.net/articles/kathy_sierra/dont_make_the_d.htm
  >> デモではものができあがっているように見せない

- http://japanese.engadget.com/2006/12/31/korean-dual-lcd-phone/
  >> 「デュアルスクリーン携帯」発明さる - Engadget Japanese

- http://www.howtoforge.org/
  > > HowtoForge - Linux Howtos and Tutorials | The Open Source Howto Development Web Site.

- http://happa64.exblog.jp/6273828
  >> モンスーン・アジアのあっしの舟 : 日本政府調達、マイクロソフトを排除

- http://www.infoq.com/news/2006/12/jrake-ant-killer-combo
  >> InfoQ: JRake: Ant-Killer Combo of JRuby and Rake

- http://japan.internet.com/developer/20061226/26.html
  >> Japan.internet.com デベロッパー - EclipseでのWeb開発を支援するWeb Tools Platform

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

2006-12-08

データのセキュリティ関連製品を google してみた

- http://it.nikkei.co.jp/security/news/release.aspx?i=147845
  > > エレコム、USBフラッシュメモリサイズの小型デバイスなど2種類を発売 セキュリティー-発表資料:IT-PLUS

USB メモリー 1G 程度のものを買いたいと思っている、どれがいいかなぁ。
指紋認証機能を java から利用できたりしないのかなぁ

- http://news4.pokopon.net/archives/2006/10/post_214.html
  >> 内部統制に対応したセキュアメールサーバホスティング

- http://www.marubun.co.jp/product/network/timestamp/qgc18e000000o6xs.html
  >> 文書管理サーバ Classified Document Security Server 時刻認証|丸文

- http://www.seiko-p.co.jp/systems/time/sx3640tac.html
  >> セイコープレシジョン株式会社 システムインテグレーション SX-3640 TAC

- http://www.geotrust.co.jp/index.html
  >> SSL 電子証明書 日本ジオトラスト株式会社

- http://d.hatena.ne.jp/skippy/20061031/1162312514
  >>  すきっぴーの全部まるっとお見通しだ! - Oracle XML DBリソースのセキュリティ 【前編】

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

2006-11-22

タブ画面のデザイン

tab デザイン専用のソフトの存在を知った。
- http://www.aivy.co.jp/BLOG_TEST/nagasawa/a/archives/2006/11/css_tab_designe.html
  > > Modern Syntax : タブデザインのためだけのソフトウェア「CSS Tab Designer」

xfy の tab ボキャブラリーでは、簡単にタブはつくれます。
でも、こまかなデザインをしようとするとやっぱり面倒。
tab 画面のこまかなデザインを可能とするツールが xfy でも必要な気がする。

xvcd:apply-vocabularies という命令があるのを知った。
これをつかえば、動的に xvcd を適用させて、画面表示の更新ができるのだろうか?

xvcd を編集して、それをすぐに apply させる方法/例を知りたい。
複数の css を用意して、動的に切り替える方法・例を知りたい。
xvcd を多段適用 (unix での pipe 処理みたいに xvcd を順次に適用したり、tee で 分岐させたり) する方法/例を知りたい。

Amazonギフト券 なんてのがあるのも知った。

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

2006-11-20

google でカスペルスキーを watch

google のブログサーチで日本国内での カスペルスキー についての評判を watch してみる。
rss リーダーに 次の 設定を追加した。

Google Blog Search: カスペルスキー
http://www.google.com/blogsearch_feeds?hl=en&q=%E3%82%AB%E3%82%B9%E3%83%9A%E3%83%AB%E3%82%B9%E3%82%AD%E3%83%BC&scoring=d&ie=utf-8&num=50&output=atom

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

2006-11-15

Thinkpad のバッテーリーが届きました

- http://youichi-kato.cocolog-nifty.com/blog/2006/09/thinkpad__c62a.html
  >>使用中ThinkPad のバッテリーがリコール対象でした
これは2006−09−30に投稿したもの。
今日、やっと交換品が届きました。6週間もかかったのか!
(会社の総務で社内の対象品を一括して処理したので、よけいに時間がかかったのかも)

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

2006-11-01

Javascriptで三角形を動かしている!

こんな記事をみかけた。
- http://labs.cybozu.co.jp/blog/akky/archives/2006/11/javascript_3d_triangles.html
  >> 秋元@サイボウズラボ・プログラマー・ブログ: Javascriptで三角形を動かす

記事からのリンク先では OpenGL のデモのような立体が回転しているデモをみることができる。素晴らしい。

xfy で誰か類似のものを作ってみて欲しい。(自分がつくるべきだが...)

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

2006-10-30

連想検索と新書マップ

いまさらながらかもしれませんが、
- http://shinshomap.info/
  >> 新書マップ
というサイトを知りました。
このサイトのユーザーインターフェースが素晴らしい。
検索エンジンは連想検索という機能を実現しているらしい。

でも、本の検索検索の専門家には、あまり連想検索は好まれていないとの話も。

- http://blog.goo.ne.jp/jchz/e/44edb7a313cf3bd18ed5e35c23766f96
  >> 見もの・読みもの日記:そして、検索する喜び/検索エンジン「想」ほか

- http://clis-matz.blogspot.com/2006/10/blog-post.html
  >> CLIS207研究室: 意外な数値
  > ...
  > 意外というのはWebcatPlusそのものの不人気と、書誌データの不備と杓子定規な
  > OPACシステムを補う優れた機能と言える連想検索が不人気だったことです。
  > ...

- http://www13.atwiki.jp/superopac/pages/14.html
  >> superopac @Wiki - ブログ/1970年01月01日/4つの検索スタイル
  > ...
  > WebcatPLUSの連想検索が「思ったとおりの結果が表示されない」と図書館員に
  > 受けが悪いのは「知っていること」「再発見型」として使おうとしているからでしょう。
  > 連想検索は「探検型」「知らないこと」検索のためのもので、
  > 「知っていること」「再発見型」で使おうというのがそもそも間違っています。
  > ...

こういった検索システム用のユーザーインターフェース構築に xfy をつかえるか?
まずは 新書マップのようなものが作れるのかを試してみようと思う。
(SVG + XVCD で作れるようにはちょっと思えないが。
どこまで可能で、どんな機能要素を新たに追加したら可能になるかを調べたいものです)

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

2006-10-01

E4X について検索してみた

E4X (ECMAScript for XML)とは、XMLをネイティブサポートするECMAScript拡張仕様。
一時期、すこし調べたことがあるが、再度、web 検索してみた。
XML をプログラミング言語で扱うにはどんなシンタックス,セマンティックスが適当なんでしょうか。
java の DOM, XPath, XPointer, ... はどうも気にくわない...

http://www.ne.jp/asahi/nanto/moon/specs/ecma-357.html
>> ECMAScript for XML (E4X) 仕様の翻訳

http://web.paulownia.jp/script/ajax/e4x.html
>> E4Xの使い方

http://www.kawa.net/works/js/tips/e4x.html
>> [JavaScript] ECMAScript for XML (E4X) を試してみた

http://www-128.ibm.com/developerworks/webservices/library/ws-ajax1/
>> AJAX and scripting Web services with E4X, Part 1

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

2006-09-30

使用中ThinkPad のバッテリーがリコール対象でした

会社でつかっている ThinkPad T43.
このバッテリーがリコール対象であることが判明。
http://download.boulder.ibm.com/ibmdl/pub/pc/pccbbs/mobiles/batteryrecall_ja.html
>> バッテリー自主回収のお知らせ

このページはなかなか親切に書かれている。
バッテーリーを外す方法が述べられていて、バッテリーに記されているバーコード番号を入力するとリコール対象有無が分かるような Form が用意されてる。

http://japan.cnet.com/news/tech/story/0,2000056025,20244007,00.htm
>> やはりソニー製バッテリだった--「ThinkPad」発火事件

http://www.theinquirer.net/default.aspx?article=32550
>> Dell laptop explodes at Japanese conference
燃えている写真が掲載されている。

バッテリーというのは、ある意味 小さな爆弾なんですねぇ。
バッテリーに IC タグを付けて、空港のゲートでリコール対象バッテリーなどが機内にもちこまれないようチェックするような仕組みが今後は導入されるかもしれません。

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

2006-09-26

del.icio.us のブックマークを使い始めてみた

http://del.icio.us/youichikato
に、ブックマークを公開していくことにした。
hatena でもよかったが、日本以外の情報も沢山知りたいので海外のシステムを利用してみようと思った。
今は、firefox の個人ブックマークを登録しただけの状態。
今後は、TAG, メモをつけて登録をしていく。

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

2006-09-24

jruby

xfy で、logic を xvcd や xpath関数で無く、jruby で記述できるようにならないかなぁ。

http://www.javaworld.com/javaworld/jw-07-2006/jw-0717-ruby.html
>>  Ruby for the Java world
>> Script your Java applications and efficiently reuse your Java libraries with this dynamic language

jruby の紹介記事です。

http://homepage1.nifty.com/~tetsu/ruby/
>> Ruby (Japanese)

ruby で 基本コマンド(cal, wc, tree, du etc...) を実装した例が沢山公開されています。
c/java でこういったプログラムが書ける方は、ここでの ruby での記述をみることで、ruby の書き方を知ることができると思います。

http://homepage2.nifty.com/youichi_kato/src.html のページ末尾に
xdu コマンドの真似を java で実装したものがあります。
これを xfy 上で動作させるとか、ruby/jruby で実装することもしたいとおもってます。
(この java ソースは 2001 年頃に書いた古いものです。
でも j2se5 でも compile/run できます。このソース自体も大幅に書き直したい...)

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

j2s のチュートリアル

http://j2s.sourceforge.net/articles/tutorial-hello-j2s-world.html
>> Tutorial of J2S in Eclipse (1): Hello J2S World

これは、java コードを javascript に変換するツール j2s のチュートリアル。
java コードを xvcd に変換するツールも欲しい。

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

2006-09-23

args4j (コマンドライン処理)

http://www.02.246.ne.jp/~torutk/javahow2/commandline.html
>> Javaでコマンドライン引数を処理する

ここではいろいろなライブラリーが紹介されている。
このなかの args4jは良さそう。
アノテーションを使ってコマンドラインスペックを指定できるのは素敵だ。

いままでは jakarta commomns-CLI を使うか、ちょこっと自作してしまっていた。
でも、これからは args4j を使おう。

http://homepage2.nifty.com/youichi_kato/src.html からのリンク
http://homepage2.nifty.com/youichi_kato/src/args4j-200609-23.tgz
として、maven2/eclipse プロジェクトにしたサンプルを置いた。

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

2006-09-21

xfyでココログへの投稿方法

ココログへ xfy をつかって投稿ができるようだ。

xfy Blogエディタによる記事の投稿
xfyでココログへの投稿方法 — RIKIMA.com

今日は遅いから試さないが、時間をとってなるべく早くに試してみたい。
こういった情報が得られのはネットの便利なところ。
情報提供、ありがとうございます。

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

2006-09-20

setDefaultUncaughtExceptionHandler() て使ってますか?

java の tips のコラムがあります。
このなかに J2SE5 の setDefaultUncaughtExceptionHandler()  の使用例があります。
http://java.sun.com/developer/JDCTechTips/2006/tt0211.html#2
>> Core Java Technologies Technical Tips: CATCHING UNCAUGHT EXCEPTIONS

ここでは、runtimeException の stacktrace を コンソールでなくて、ポップアップウインドウに出す例が示されています。

ここでのサンプルを eclipse プロジェクトにしたものを以下に置きました。
(maven2 でも build できるようにしてあります。)

それなりの商用GUIアプリケーションを作ろうとおもったら、
予期せぬエアーが発生したときにコンソールに stacktrace が出るだけなんてことは許されないことで、こういった工夫も必要になりそうです。

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

2006-09-16

高橋メソッドなプレゼンツール in XUL リターンズ

xul の利用例を探していて、次のプレゼンツールを見つけた。

http://piro.sakura.ne.jp/xul/applications/takahashi-r/
>> 高橋メソッドなプレゼンツール in XUL リターンズ

タイマー機能、ペン入れ機能など便利そう。
PowerPoint での資料作成に時間をつかうより、こういったものでサクサクと説明したほうが良い。

xfy で同等のものを作れるかなぁ?
というより、xfy が XUL をサポートしてくれないかなぁ。

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

nekohtml + rome で RSS を生成

http://homepage2.nifty.com/youichi_kato/src.html
 nekohtml + rome で既存 html ページから rss を生成する例 (2006-09-16)
という java ソースコードを登録しました。

これは、私がよく閲覧している ある web 掲示板があるのですが、そこは RSS 配信をしていません。
そこでプログラムでそのページにアクセスし、内容を解析して、RSS をつくるというものをつくったのです。
これを、自分の web サーバー上に cgi として設置して、rss リーダーにその cgi を
登録することで、あたかもその掲示板の RSS を取得しているかのようにして利用しています。

nekohtml を利用して、html データを DOM に変換しています。
DOM から自分が欲しいデータをとりだし、rome を利用してRSS を生成しています。

RSS 配信してくれないページがあり そのページの更新を RSS でチェックしたい場合などにこの手法を利用することができるとおもいます。
(私は他にも 社内ページの RSS 配信対象外のページ更新チェックに この方法を利用しています。)

xfy に nekontml を組み込んで、 任意の web ページを XHTML に変換してから、xvcd で自分好みの表示にカスタマイズして表示させたり、複数の web ページ内容をミックスして表示させたりできないかとも考えています。(今はまだ考えているだけ)

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

2006-09-14

maven2 の紹介

http://homepage2.nifty.com/youichi_kato/src.html から
リンクさせていたつもりの maven2 の紹介 (2006-06-04)
が開けない設定になっていたのに気がついた。
設定を訂正し、閲覧できるようにした。
(誤字脱字を直す機会がありそのときに気がついた)
mave2関係の情報の freemind でのメモもあります。

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

2006-09-13

解決案は一つではない

問題を解決する方法は1つではない。

例えば、firefox 1.5 で
  検索ボックスの幅が気にくわない
という場合、google 検索すると次のものが見つかった。

1. http://ghostfox.mozdev.org/installation.html
   >> マウスドラッグで検索ボックスのサイズを変更できる拡張機能

2. http://xeen.reversestudios.com/?page=autosizer
   >> 入力文字に応じて検索ボックスのサイズが自動に変わる拡張機能

3. http://www.mozilla-japan.org/support/firefox/tips#app-searchbarsize
   >> この幅を独自に指定するには、次のコードを userChrome.css ファイルに追加してください。
   >> ...

このほかにも、いろいろな対処法が考えられる。
アイデアはあっても、当人ではすぐには実装できないかもしれない。
ネットを有効利用することで、別の人に実装してもらったりすることが可能になる。

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

2006-09-10

firefox 機能拡張の調査 (その3)

ネット上でいろいろ資料を閲覧中...

http://www.xulplanet.com/tutorials/xultu/
> > XUL Tutorial

http://www.mozilla.gr.jp/~kazhik/xul/tutorial.html

> > XULアプリケーション作成入門

http://www.hevanet.com/acorbin/xul/top.xul
> > XULの様々なエレメントの一覧。このページ自体がXULで書かれていて、そのソースも同時に参照できる。
xfy でも こういうサンプルページが必要だろう。(つくってみようと思う)

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

firefox + mathml のメモ

firefox + mathml のメモ (2006-09-10)
  mathml の簡単なサンプル
を置いた。

mathml メモは、 mathml 用のフォントや、mathml サンプルページの URL のメモ。
簡単サンプルは、2次方程式の解の数式記述の例。

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

2006-09-09

xfy の freemind 目次が他のサイトで紹介されていた

http://www2.atwiki.jp/taox/pages/63.html  (道仔@Wiki - 續 xfy 迷)
で xfy1.3 オンラインマニュアルの freemind での目次 について言及されているのを知った。

nifty 上エリア で freemind データをそのまま web で閲覧できるようにする方法があれば、どなたか教えてください。
(本当は、xfy で freemind データを閲覧/編集できればと思っています。freemind の ノードの枝表示や自動レイアウトを xfy で再現する方法が不明。freemind 自体はソースが公開されているから、xfy に表示部分を組み込むことも不可能ではないと思うが、どうやってそんな機能を組み込めばよいのか...)

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

2006-09-08

Mac だと firefox 拡張機能 launchy で xfy 起動ができない

SmallStyle - Launchyで任意のアプリケーションを起動する
SmallStyle - Launchyで任意のアプリケーションが動かない
を参照して、 firefox から xfy を起動する設定を施してみた。

launchy.xml generator にアクセスして、
xml ファイルを生成して、それを ~/Library/Application Support/Firefox/Profiles/xxxxx.default/chrome/launchy.xml として保存すればよい。

windowsXP ではうまくできたが、MacOsX ではうまく行かない。 マウス右クリックでのメニュー中の launchy で [open in xfy] と サブメニューが出るが、xfy が起動しない。なぜだろう...

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

2006-09-03

firefox 機能拡張の調査 (その2)

http://homepage2.nifty.com/youichi_kato/src.html から、 firefox の拡張機能について調べたことへのリンクを張った。(2006-09-03 の項)

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

firefox 機能拡張の調査

いまさらの感があるが、firefox での機能拡張の作り方を調査中。
以下のサイトが参考になる。

http://allabout.co.jp/internet/hpcreate/closeup/CU20060715A/index.htm?FM=rss
>> Firefox用 検索プラグインの作り方

- http://developer.mozilla.org/ja/docs/Building_an_Extension
> > Building an Extension - MDC (日本語)

- http://takanory.net/firefox/japanize/
> > 拡張機能の日本語化 — takanory.net

- http://piro.sakura.ne.jp/xul/xul.html
> > XUL Apps - outsider reflex (日本語)

CopyURL+ の拡張機能のユーザーカスタマイズ方法を知った。
早速 user.js に以下を記述するようにした。上記述の URL/タイトルの引用は、
これを利用している。
----- ここから ----
user_pref('copyurlplus.menus.1.label','ピックアップ');
user_pref('copyurlplus.menus.1.copy','- %URL%
> > %TITLE%');
----- ここまで ----

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

2006-08-29

trac

> > trac始めました

さらに、maven2 + continunm  + cobertura を利用するのがおすすめです。
maven2 は、make, deploy、プロジェクトサイト作成の仕組みを ant より簡単構築できます。
continuum は、デイリービルドの仕組みです。
cobertura はテストカバレージツールです。
また、単体テストは、testNG の利用も試してみることをおすすめします。

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

2006-08-23

google と yahoo の検索の差

"xfy freemind" で google 検索してみた。
このグログは検索にヒットせず。

yahoo で検索すると、ヒットした。

いままで いつも 検索は、google ばかり使っていたが、
他のエンジンもつかわないと駄目かもしれないことを身をもって感じた。

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

2006-08-21

xfy のオンラインマニュアルの 目次を freemind で作ってみた

http://homepage2.nifty.com/youichi_kato/src.html
から xfy のオンラインマニュアルの 目次を freemind で作ったデータにlink をはりました。

freemind mapデータ
スクリーンショット(これは全ノードを展開はしていない状態です。)

各項目をクリックするとマニュアルの該当ページに飛ぶようにリンク設定をしてあります。

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