前の月 / 次の月 / 最新

~matubara/ChangeLog / 2006-08移動しました

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12

2006-08-31 Thu

Finding Frequent Items in Data Streams - Charikar, Chen, Farach-Colton (2002) [ir][algorithm][net]

<http://citeseer.ist.psu.edu/charikar02finding.html>
頻度の近似計算?

2006-08-30 Wed

川o・-・)<2nd life - zsh + screen で端末に表示されてる文字列を補完する [linux][howto][net]

<http://d.hatena.ne.jp/secondlife/20060108/1136650653>
emacs での M-/ が zsh でできる。

# dabbrev
HARDCOPYFILE=$HOME/tmp/screen-hardcopy
touch $HARDCOPYFILE

dabbrev-complete () {
local reply lines=80 # 80行分
screen -X eval "hardcopy -h $HARDCOPYFILE"
reply=($(sed '/^$/d' $HARDCOPYFILE | sed '$ d' | tail -$lines))
compadd - "${reply[@]%[*/=@|]}"
}

zle -C dabbrev-complete menu-complete dabbrev-complete
bindkey '\M-/' dabbrev-complete
bindkey '\M-/^_' reverse-menu-complete


でもよく考えると、これじゃ zsh の上で emacs を動かしたときに、
emacs の補完機能が上書きされちゃう。

2006-08-29 Tue

NewsForge | Syllable -- A different open source OS [kernel][net]

<http://os.newsforge.com/article.pl?sid=06/08/09/1637214&from=rss>
Yet another POSIX OS
「起動が爆速」らしい。

Log4J徹底解説〜目次 [java][cxx][net]

<http://www.nurs.or.jp/~sug/soft/log4j/index.htm>
log4j と annotation の連携は面白いかも。

2006-08-26 Sat

Scalable programming in scala [fp][java]

2006年1月の発表

2006-08-24 Thu

Java モニタリング [java]

JDK 5.0 の場合、

java -Dcom.sun.management.jmxremote

というオプションつきでプログラムを起動すると、

jconsole

からそのプログラムの使用メモリ量などの状態が見れる。

Java SE 6 Mustang じゃじゃ馬ならし Heap

2006-08-23 Wed

Javassist 3.1とjavaagentでmemorization [java][programming][net]

<http://d.hatena.ne.jp/bellbind/20050903/p2>
Java で eval な javassist と、
クラス・メソッド・フィールドの修飾子をユーザー定義できる annotation を利用して、
副作用のないメソッド(値の変換のための関数)なら
いつも使える修飾子 @memorize を提供する。

泥臭い実装と、きれいなインターフェイスが実にJavaらしい。

名づけのない再帰 fixed-point combinator [perl][fp]

p.65 Types and Programming Languages より。

afact は、引数に階乗関数を渡されたとき階乗関数になる関数。
つまり、階乗関数に適用すると階乗関数が帰ってくる関数。

#! /usr/bin/env perl
use strict;
use warnings;
use integer;
my $afact = sub { my $f = shift;
                  sub { my $n = shift; print "*$n\n";
                        $n == 0 ? 1 : $n * $f->($n - 1); } };
# afact = L[f]. L[n]. n==0 ? 1 : n * f (n-1)

my $fix = sub { my $f = shift;
                my $f1 = sub { my $x = shift;
                               $f->( sub { my $y = shift;
                                           $x->( $x )->( $y );  } ) };
                $f1->($f1); };
# fix = L[f]. f1 f1   where f1 = L[x]. f ( L[y]. x x y )

my $fact = $fix->($afact);
# fact = fix afact
#   -> f1 f1  where f1 = L[x]. afact( L[y]. x x y )
#   -> afact( L[y]. f1 f1 y )    where f1 = L[x]. afact( L[y]. x x y )
#   <-*- afact( L[y]. fact y ) = afact( fact )
print $fact->(4), "\n";

上記のコードでも名前を使ってはいるが、
どの名前も、実体と置き換えて消去できるので、
再帰に使ってるわけではない。
# 再帰に使う名前は、置き換えを無限に続けられる

消去すると、こうなる。
print 
    sub { my $f = shift;
  my $f1 = sub { my $x = shift;
                 $f->( sub { my $y = shift;
                             $x->( $x )->( $y );  } ) };
  $f1->($f1); } ->
    (
     sub { my $f = shift;
   sub { my $n = shift; print "*$n\n";
         $n == 0 ? 1 : $n * $f->($n - 1); } }
    )->(4), "\n";
再帰を含む処理を1文で書けました。

$f1 も消せるけど、あまりに可読性が低くなるので、消さずにおいた。

sub { my $x = shift;

は、lambda x のこと。
これは名前にカウントしないことにする。

Tree of Life Web Project [bio][net]

<http://tolweb.org/tree/>
via tree - Google Search

プログラミングの教科書的なもの [programming][book]

Essentials of Programming Languages
Types and Programming Languages の Piece 先生おすすめの。
2ch Books Program - Lisp/SchemeではSICPの次に、とか言われている。

2006-08-22 Tue

Fall 2005 Statistics (Jim Pitman) [stat][net]

<http://bibserver.berkeley.edu/205/lec_hwk.html>
伊庭先生おすすめの 確率論講義ノートがあるページ。
Pitman 先生です。

2006-08-21 Mon

実行時間と使用メモリ量の測定 [programming][linux][howto]

現在、time コマンドと memusage コマンドを使って測定している。

どちらも
time <command>
memusage <command>
のように実行すると、<command> を実行すると同時に測定をして、
最後に結果を出力する。

少し問題なのは、
memusage は LD_PRELOAD=/lib/libmemusage.so <command> としてしか使えない場合があり、
これだと、time を内側にせざるをえない。
で、memusage は fork したプロセスごとに結果を表示するらしく、
time と <command> それぞれに対するメモリ使用量が表示されてしまう。
(たとえば、LD_PRELOAD=/lib/libmemusage.so perl -e'system "ls"; system "ls"' でも起きる)

シェルコマンドの time では起きないけれど、
/usr/bin/time を無視して シェルコマンドを優先する方法は?


追記
ていうか、
time env LD_PRELOAD=.. <command>
で、time 外側にできた。

Cygwin rebase [win][howto]

unable to remap xxx to same address as parent(0xDF0000) != 0xE00000

とか出たときには、Cygwin のプログラムを全部落として(cygrunservとかも)、

/usr/bin/rebaseall


tetraの外部記憶箱 - rebase問題

2006-08-20 Sun

memusage [howto][linux][programming][net]

time コマンドに相当するようなもの。
<http://turing.ubishops.ca/home/csc218/node5.html>
glibc に付いてくるらしいが、gentoo のパッケージではインストールされないらしい。
スクリプトなので、glibc-2.3.6/malloc/memusage.sh から取り出すとか、
どこからとってくればいい。
というか

LD_PRELOAD=/lib/libmemusage.so <command>

でいいらしい。

LD_PRELOADで指定されたファイル内の関数は、
glibcより優先して使われる
libmemusage.so は malloc とかを上書きして、使用量をカウントしている。

utf-8 で保存すると、三点リーダなどの記号が豆腐になる [emacs][howto]

変になった文字にカーソルを合わせて

M-x describe-char

とすると、その文字の所属している(と判定された)文字集合が分かる。
mule-unicode-0100-24ff と出たら、
日本語の文字集合として判定されていない。

ローカル文字集合からUCSへは一意に変換できるが、
逆は決定できない。

西欧語文字集合を日本語文字集合より優先させる事例の逆をやればいい。

(require 'un-define)
(require 'un-tools)
(require 'jisx0213)
(un-define-change-charset-order
 '(ascii
   japanese-jisx0208
   japanese-jisx0213-1 japanese-jisx0213-2
   japanese-jisx0212

   mule-unicode-0100-24ff 

   mule-unicode-2500-33ff mule-unicode-e000-ffff
   latin-jisx0201 katakana-jisx0201
   ))

っていうか、Bug#382149: mule-ucs: Incorrect use of double-width characters. がそれの報告か?

+ HELLO 全部表示プロジェクト M-x view-hello-file
+ 詳細設定及び拡張機能 - Meadow - Trac

Higher-Order Functional Programming with XSLT 2.0 and FXSL [markup][fp]

<http://www.idealliance.org/papers/extreme/proceedings/html/2006/Novatchev01/EML2006Novatchev01.html>
XSLT は関数型プログラミングをサポートしたらしい。

2006-08-19 Sat

Error-Correcting Output Coding for Text Classification - Berger (1999) [learning][net]

<http://citeseer.ist.psu.edu/8956.html>
2値分類器を合わせて多値分類。

まず、ラベルにビット列を適当に(?)割り当てて、
ラベル集合を等長符号化する。
訓練サンプルについているラベルの符号の i ビット目を正解として、
第 i 番目の2値分類器を訓練する。(i=1, ... , ビット数)
テストサンプルをそれら2値分類器にかけて、
テストサンプルのラベルの符号を得る。
あとはもっとも近い符号語(ラベルの符号)を探して、それにデコードする。

2006-08-18 Fri

リストのリストを型推論 [java]

List<List<String>> ll = new ArrayList<List<String>>();

というステートメントには、型が多すぎる。

    public class ListFactory
    {
public static<T> List<T> newInstance(T x, int ncopy)
{
    return new ArrayList<T>(Collections.nCopies(ncopy, x));
}
public static<T> List<T> newInstance()
{
    return new ArrayList<T>(Collections.<T>emptyList());
}

public static void main(String... args)
{
    List<List<String>> ll = ListFactory.newInstance(ListFactory.newInstance("a", 2), 3);
    //         ll.add(ListFactory.newInstance());
    List<String> l = ListFactory.newInstance();
    ll.add(l);
    System.out.println(ll);
}
    }

変数初期化のコンテキストが要求する型は完全な型だけれど、
メソッド引数のコンテキストが要求する型は実行時の型。
コメントアウトしたところの add は、
List<Object>
を要求していた。
なぜ?

いちおう考えてみた。

変数初期化ステートメントには完全な型情報(というか型パラメタ情報)があるのに対し、
メソッドシグネチャには実行時の型情報しかない。
クラスファイルしかないクラスのメソッドのシグネチャは、
クラスファイルに書かれている型情報しか持てないわけで、
そこにはコンパイル時にしか存在しない型パラメタの情報は含まれていない。

現状では、型を繰り返し書きたくない場合には、
適当な引数をつけて値のセットとかをすることにして、
そこから型推論してもらう、というのが無難か。

ほんとうは、バイトコードに型パラメタを書く
=マクロ展開式のジェネリクス
で、バイトコートレベルでコンテキストに完全な型パラメタの情報を
埋め込んだがいいような気がするけれど。

型パラメタ消去によるジェネリクスと、マクロ展開式のジェネリクスの得失は
よく分かっていない。
Java の場合は、互換性の問題もあり。

ANSI C の main() 代替となる main メソッドのシグネチャ [java]

public static void main(String... args)

何がうれしいかというと、
main を別のメソッドから呼ぶとき、長さ0の引数

main();

で呼べるということ。

もともと書けていた

main(new String[]{});
main(new String[]{"a", "b"});

でも呼べるし、長さ1以上の引数リスト

main("a", "b");

でも呼べる。

typedef を代替するトリック [java][net]

ジェネリックメソッドの型推論を使う。
<http://www-06.ibm.com/jp/developerworks/java/060310/j_j-jtp02216.shtml?ca=drs->

public static <K,V> Map<K,V> newHashMap() {
    return new HashMap<K,V>();
}

これを使えば、型パラメーターを2度入力することを安全に回避することができます。


Map<Socket, Future<String>> socketOwner = Util.newHashMap();

ジェネリック -- Java vs C# [cxx][java][net]

<http://homepage2.nifty.com/magicant/programmingmemo/genericsjavavscs.html>
C# は型引数の数だけクラスを展開し、
そのバイトコードを生成するので、実行時に型引数の情報が残る。
Java は型引数の一致をコンパイル時に判定するが、
バイトコートは型引数によらない(ワイルドカードの)クラスだけなので、
実行時に型引数の情報が残らない。
(Java のジェネリクスは、ダウンキャストを自動化するだけ

2006-08-15 Tue

From Suffix Trees to Suffix Vectors [string][net]

<http://www.stringology.org/event/2005/p3.html>
Suffix Vector 、その後。
ぱっと見では、Review の性格が強そう。

2006-08-10 Thu

C++ for Java Programmers - Google Search [cxx][net]

<http://www.google.com/search?q=C%2B%2B+for+Java+Programmers>
これらのドキュメントはだいたい、
Java プログラマが C++ で書けるようになることを目標にしている。
書くのは、大体、逐語訳で書ける。
C++の方が多くの構文を持っているので。

# interface がないとかデフォルトが値渡しだとか
# 無名クラスができないとか

しかし、Java プログラマが C++ を読めるようになるのは、
そこからかなり遠いような気がする。

template specialization のパターンマッチは、
類推も効かないし、翻訳するにもけっこう複雑な翻訳になる。
あと typedef はないので、つい頭がそこに行かない。
型名と変数名が混乱して、
初期化引数つき変数定義と、関数呼び出しの区別が付きにくい。

あと演算子オーバーロードと暗黙の型変換のコンボが強すぎる。

結局、C++ をネイティブなみに読み書きするには、
Java を忘れなければならない。

2006-08-09 Wed

2006-08-08 Tue

nonlinear optimization software list [opt][list]

pure C++ OPT++ An Object-Oriented Nonlinear Optimization Library
リンク集 Kaisa Miettinen - Links
IpOpt
ちょっと古いけど、サーベイ Nonlinear Programming Algorithms for Large Nonlinear Gasoline Blending Problems

2006-08-07 Mon

Artifact [lx][net]

<http://en.wikipedia.org/wiki/Artifact>
って「人工物」ぢゃあないのですか。
# もちろん colorless permanent でもない

自然科学では、

any perceived distortion or other data error caused by the instrument of observation

要するに「人災としての誤差」のことらしい。

STUDIO KAMADA [programming][net]

<http://homepage2.nifty.com/m_kamada/>
JavaScript と、力学シミュレーション。
多倍長演算とか素因数分解とかのピンポイントの効率的実装などがみもの。

Discrete Optimization Methods in Computer Vision [opt][vis]

2005年のCVPRのチュートリアル。
<http://palantir.swarthmore.edu/cvpr05/blurbs.htm#tut3>
イントロ
動的計画
グラフ

Vision やってる人は、絵の使い方がうまいのかな。

SRILM [lm]

2002年にリリースされた言語モデリングのためのツール。
ファイルレベルでは ARPA 形式互換。
コマンドレベルの CMU との互換性はなし。
# CMUと同時にインストールできるので、むしろ都合が良いかも

Palmkit とか CMU-Cambridge とか [2006-07-10-4]って、
もしかして誰も使ってないの?

2006-08-04 Fri

private/protected/public inheritance -- is-a にならない継承 [cxx]

Java の継承は C++ の public 継承。つねに is-a 関係が成立する。

#include <iostream>

class Root
{
private:    static const int priv = 100;
protected:  static const int prot = 20;
public:     static const int pub = 3;
public:     int get() { return priv + prot + pub; }
};

class SubPub : public Root
{
public:     int get() { return pub + prot; }
};


class SubPriv : private Root  // overrides all the members as private 
{};

class SubPrivPub : public SubPriv
{
public:
  //int get() { return pub; }
  int get() { return -1; }
};


int main()
{
  SubPub s1;
  std::cout << s1.get() << std::endl;

//   SubPriv s2;
//   std::cout << s2.get() << std::endl;
  // the private inherited class is NOT a subclass of the Root

  return 0;
}
参考 C++ Annotations

ssh scp sftp の正しい自動実行方法 [howto][net]

<http://sonic64.com/2004-11-17.html>
サーバー側におく公開鍵には、権限設定が可能。
あと、クライアントでは鍵のパスフレーズをなくしてしまう。

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,
command="echo $SSH_ORIGINAL_COMMAND; umask 077; f=backup`date +%F-%H%M%S`.tar.bz2.encoded; echo $f; cat >/home/hiroaki/backup/$f;,from="*.example.com"
ssh-dss AAAAB3NzaC1kc
3MAAACBAKZhqMdcujcJgGOCIsi+PrmkEEaAy/gpRPpB3Q5OA
wNG+PwTdU5O8/NPde64wNux4XNUB7XkV2eXWfaTZRYyYe0oC
XeJMh2LKZ/a/F3Wu283uuExSZhbkt3Dcv3+u6oyjBzIfNU+P
(以下略)

2006-08-03 Thu

Subversion バックアップ [svn][howto][net]

<http://subversion.bluegate.org/doc/book.html#svn.reposadmin.maint.backup>
[2005-11-05-1]は並行動作時にリポジトリ読み取りの atomicity が保証されていない。
svnadmin hotcopy か、そのwrapperを使う。

Collocation extraction [lx][nlp][net]

<http://listserv.linguistlist.org/cgi-bin/wa?A1=ind0608&L=corpora#6>
「コロケーション自動抽出手法は何がいい?」
Corpora List より。

2006-08-01 Tue

Sequential Document representations and Simplicial Curves [nlp][net]

<http://www.stat.purdue.edu/~lebanon/papers/curveRep.pdf>
yet another bag-of-words relaxation
via 持橋さん

2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2009-02-01 00:57

Powered by chalow
inserted by FC2 system