Grep:

2006-06-05 Kazuki Ohta [ kzk@localhost.localdomain ]
[UNIX] Interprocess Communication
URL: http://jan.netcomp.monash.edu.au/OS/l9_1.html
2006-06-01 Kazuki Ohta [ kzk@localhost.localdomain ]
[C言語] ctime(3)
ctime(3)の最後には改行文字が付く
[IEEE-754] 浮動小数点演算
URL: http://babbage.cs.qc.edu/courses/cs341/IEEE-754references.html
2006-05-29 Kazuki Ohta [ kzk@localhost.localdomain ]
[GCC] GCC Inline Assembly HOWTO
URL: http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
2006-05-25 Kazuki Ohta [ kzk@localhost.localdomain ]
[BDB] Berkeley DB覚書き
URL: http://takusato.net/article/bdb_oboegaki.html
2006-05-23 Kazuki Ohta [ kzk@localhost.localdomain ]
[Algorithm] Radix Tree
URL: Algorithm:Red-Black
FreeBSDのswap pagerはswap spaceのbitmapをradix treeで管理している
2006-04-28 Kazuki Ohta [ kzk@localhost.localdomain ]
[Compression] LZO Realtime Compression Library
URL: http://www.oberhumer.com/opensource/lzo/
2006-03-27 Kazuki Ohta [ kzk@localhost.localdomain ]
[Ajax] Ajax逆引きクイックリファレンス
URL: http://www.openspc2.org/reibun/QuickReferenceAjax/index.html
[AI] AI開発ノート
URL: http://masazo.blog44.fc2.com/
2006-03-11 Kazuki Ohta [ kzk@localhost.localdomain ]
[Google] Google Page Creator Review
URL: http://urbansemiotic.com/2006/02/26/google-page-creator-review/
[Linux] Debianで無線LAN
学科の計算機室で無線LANを設定する必要が有った。
/etc/network/interfacesに以下のように記述
	iface eth 0
	wireless_essid <essid>
	wireless_key s:<16文字>
これでifup eth0でいけた。
2006-03-07 Kazuki Ohta [ kzk@localhost.localdomain ]
[Programming] 良い乱数、悪い乱数
URL: http://www001.upp.so-net.ne.jp/isaku/rand.html
[Thindpad] ThinkWiki
URL: http://www.thinkwiki.org/wiki/ThinkWiki
the WikiWeb for Thinkpad Linux users
2006-03-06 Kazuki Ohta [ kzk@localhost.localdomain ]
[Ruby] 極めよRuby道
URL: http://www.notwork.org/~gotoken/mag/cmagazine/gokudo/
2006-03-02 Kazuki Ohta [ kzk@localhost.localdomain ]
[P2P] KHashmir
Pythonで書かれたDHTライブラリ
BitTorrentで使用されているが、こちらはオリジナルのKHashmirにかなり手を加えている
README.txtは古いので参考にするな!

URL: http://khashmir.sourceforge.net/
URL: http://www.liris.org/search?SearchableText=khashmir
URL: http://www.liris.org/misc/pythonworkshp03/pws03/s5_document
[P2P] BitTorrentのファイル配信メカニズム
URL: http://dev.ariel-networks.com/articles/unixmagazine/bittorrent/
2006-03-01 Kazuki Ohta [ kzk@localhost.localdomain ]
[Ruby] rcov - code coverage for Ruby
URL: http://ja.reddit.com/goto?id=2i9j
2006-02-28 Kazuki Ohta [ kzk@localhost.localdomain ]
[Programming] Great Works in Programming Languages
URL: http://www.cis.upenn.edu/~bcpierce/courses/670Fall04/GreatWorksInPL.shtml
2006-02-26 Kazuki Ohta [ kzk@localhost.localdomain ]
[Emacs] Programming in Emacs Lisp
URL: http://www.math.s.chiba-u.ac.jp/~matsu/lisp/emacs-lisp-intro-jp.html#SEC_Top
2006-02-25 Kazuki Ohta [ kzk@localhost.localdomain ]
[Programming] 計算物理のためのC/C++言語入門
URL: http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/
2006-01-31 Kazuki Ohta [ kzk@localhost.localdomain ]
[Algorithm] Red-Black Tree
URL: http://www.geocities.jp/m_hiroi/clisp/clispb03.html
URL: http://encyclopedia.thefreedictionary.com/Red-black+tree
2006-01-08 Kazuki Ohta [ kzk@localhost.localdomain ]
[Programming] AmigaOS4.0 Memory Allocation
URL: http://os4.hyperion-entertainment.biz/index.php?option=content&task=view&id=22&Itemid=0&limit=1&limitstart=0
Slab Allocatorの解説
2005-12-26 Kazuki Ohta [ kzk@localhost.localdomain ]
[Computer] Andrew W. Appel
URL: http://www.cs.princeton.edu/~appel/
The author of Modern Compiler Implementation in ML
[Computer] 言語情報処理Portal
URL: http://www.kc.t.u-tokyo.ac.jp/NLP_Portal/
2005-12-24 Kazuki Ohta [ kzk@localhost.localdomain ]
[Shell] 特定のファイルの文字列を置換(2)
-iオプションというのが有った。

$ sed -i -e s/aho/tensai/ file

perlでも同じ。

$ perl -i -e s/tensai/baka/ *.html

これぐらい知らないとな...。
[Shell] 特定のファイルの文字列を置換
何回も使いまくるので、/binに置いてしまおう。
	#!/bin/sh
	sed -e s/$1/$2/ $3 > /tmp/tmp-replace
	mv /tmp/tmp-replace $3
そして、これを使ってdirectory以下のファイルを全て書き換える。
	for file in $*
	do
	  if test $file != ""; then
	    replace-word old-domain new-domain $file
	  fi
	done
これを replace-word-all で保存し、次のコマンドを実行。
	$find . -depth -print | xargs replace-word-all
新しいdomainへの移行完了であります。
2005-12-23 Kazuki Ohta [ kzk@localhost.localdomain ]
[Book] Types and Programming Languages
URL: http://www.cis.upenn.edu/~bcpierce/tapl/
2005-12-21 Kazuki Ohta [ kzk@localhost.localdomain ]
[Debian] Debian GNU/Linux on the Thinkpad X31
URL: http://rigtorp.se/thinkpad.xhtml
2005-12-19 Kazuki Ohta [ kzk@localhost.localdomain ]
[ImageMagic] 使用例
URL: http://www.ss.iij4u.or.jp/~somali/web/im_example/im_example.html
2005-12-17 Kazuki Ohta [ kzk@localhost.localdomain ]
[AJAX] 作って理解するAjax
URL: http://itpro.nikkeibp.co.jp/article/COLUMN/20051104/224040/
URL: http://itpro.nikkeibp.co.jp/article/COLUMN/20051125/225193/
URL: http://itpro.nikkeibp.co.jp/article/COLUMN/20051215/226333/
工藤さんによる記事。
2005-12-16 Kazuki Ohta [ kzk@localhost.localdomain ]
[Mathematics] 数学学習マニュアルまとめページ
URL: http://www.geocities.co.jp/Technopolis-Mars/7997/
2ちゃんねる数学板の参考文書をまとめたページ
2005-12-07 Kazuki Ohta [ kzk@localhost.localdomain ]
[VHDL] The Designer's Guide to VHDL
URL: http://www.doulos.com/knowhow/vhdl_designers_guide/
[Verilog] The Designer's Guide to Verilog
URL: http://www.doulos.com/knowhow/verilog_designers_guide/
2005-11-29 Kazuki Ohta [ kzk@localhost.localdomain ]
[JavaScript] Drag&Drop
JavaScript: DHTML API, Drag & Drop for Images and Layers
URL: http://www.walterzorn.com/dragdrop/dragdrop_e.htm

HTML page内のレイヤーを自由にDrag & Dropする為のライブラリ
[JavaScript] Drawing Library
DHTML, JavaScript Draw Line, Circle, Ellipse (Oval), Polyline, Polygon, Rectangle.
Way : divを生成しまくる
URL: http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm

JavaScript Draw
Way : tdを用意し、スタイルを変更
URL: http://www.hjsv.com/games/js-paint/js-draw.html

XBM Image Creation Library for JavaScript
Way : bufferを用意して予め書き込んでおき、最後にimageに変換して表示
URL: http://david.blackledge.com/XBMDrawLibrary.html

Safari JavaScript Programming Topics
Way : WebKitのCanvasを直接叩けるので速そう
URL: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/index.html

Mozilla Developer Corner - Drawing Graphics with Canvas
Way : こちらもToolKitのCanvasを直接叩ける
URL: http://developer.mozilla.org/en/docs/Drawing_Graphics_with_Canvas

Canvas Element for IE
URL: http://getahead.ltd.uk/blog/joe/2005/08/02/1122980939955.html
IEはCanvasタグをサポートしていないようだ
2005-11-27 Kazuki Ohta [ kzk@localhost.localdomain ]
[Ajax] DWR, Easy AJAX for JAVA
URL: http://getahead.ltd.uk/dwr/
[Ajax] SAJAX, Simple Ajax Toolkit
URL: http://www.modernmethod.com/sajax/
[Ajax] Ajax.NET, A free library for the Microsoft .NET Framework
URL: http://ajax.schwarz-interactive.de/csharpsample/default.aspx
2005-11-26 Kazuki Ohta [ kzk@localhost.localdomain ]
[Ajax] Prottype, the JavaScript FrameWork
URL: http://prototype.conio.net/
[P2P] アリエルエリア P2P 記事
URL: http://dev.ariel-networks.com/modules/xfsection/
2005-11-19 Kazuki Ohta [ kzk@localhost.localdomain ]
[回路] UT OpenCourceWare 論理回路基礎
URL: http://ocw.u-tokyo.ac.jp/course-list/engineering/fundamentals-on-logic-circuits-2005/index.html
2005-11-18 Kazuki Ohta [ kzk@localhost.localdomain ]
[PowerPC] 玄箱でアセンブリ
URL: http://www.nk.rim.or.jp/~jun/ppcasm/ppcasm01.html
PowerPCアセンブラプログラミングを始めるならまずここ。アセンブリ言語の解説から基本的なニーモニックの説明まで、凄く参考になります。
[PowerPC] PowerPC Compiler Writer's Guide
URL: http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF7785256996007558C6
上のページで参考文献に上がっています。アーキテクチャにまで踏み込んでいるのでCPUの動き等に詳しくなれそう。
2005-11-05 Kazuki Ohta [ kzk@localhost.localdomain ]
[RTP] RTP, Real-time Transport Protocol
URL: http://www.networksorcery.com/enp/protocol/rtp.htm
2005-11-04 Kazuki Ohta [ kzk@localhost.localdomain ]
[SymbianOS] Series60プログラミングテクニック
URL: http://www.pc-view.net/Telephone/050721/index.html
SDKの概要からグラフィック、ネットワークプログラミングまで。
[SymbianOS] Symbianプログラミング1001Tips
URL: http://wiki.livedoor.jp/mfunaki/d/
Series60M系、UIQ系でC++/Javaアプリを動かしてみたい人の為のTips集。
[SymbianOS] FOMA M1000に関する情報 by motocoder.com
URL: http://www.motocoder.com/motorola/template.jsp?filename=center_M1000_japanese.jsp
[SymbianOS] SymbianOSでの開発(概要)
URL: http://www001.upp.so-net.ne.jp/rey/develop2.html
[SymbianOS] M専まとめサイト
URL: http://www2.atwiki.jp/m1000/pages/23.html
FOMA M1000に関する情報がwikiに蓄積されている。よい感じ。
2005-10-29 Kazuki Ohta [ kzk@localhost.localdomain ]
[WideStudio] WideStudio/MWT公式サイト
URL: http://www.widestudio.org/ja/index.html
[SymbianOS] FOMA M1000 活用サイト
URL: http://www.mopera.net/b-foma/PC/index.html
2005-10-05 Kazuki Ohta [ kzk@localhost.localdomain ]
[ImageProcessing] 種々の画像処理
URL: http://homepage3.nifty.com/ishidate/vcpp.htm
URL: http://codezine.jp/a/authorlist.aspx?auid=61
三次元グラフの作成、グラフの点補間、顔認識(テンプレートマッチング等)
2005-08-26 Kazuki Ohta [ kzk@localhost.localdomain ]
[Writing] Dissertation Advice
URL: http://www.cc.gatech.edu/~shivers/diss-advice.html
2005-08-25 Kazuki Ohta [ kzk@localhost.localdomain ]
[obstack] obstack
GNU obstack
2005-07-25 Kazuki Ohta [ kzk@localhost.localdomain ]
[Network] ネットワークの精密な帯域制御とtrafficの平滑化を行うソフトウェアPSPacer
URL: http://www.aist.go.jp/aist_j/press_release/pr2005/pr20050606/pr20050606.html
URL: http://www.gridmpi.org/index.jsp
[Emacs] Emacsがcore dumpした時にどう救済する?
URL: http://tty0.exblog.jp/2015435/
gdbを使って救済。
2005-07-21 Kazuki Ohta [ kzk@localhost.localdomain ]
[Qt/Embedded] ビルド方法から実行方法まで
version : qt-embeddef-free-3.3.4

[build]
./configure -debug -thread -depths 8,16,32 -qt-gfx-qvfb -qt-gif -qt-zlib
make
[Qt/Embedded] 「デスクトップで動かす・学ぶQt/Embedded」
第一回:Qt/Embeddedのインストール(第一回フレームバッファでQtアプリ)
URL: http://www.itmedia.co.jp/enterprise/articles/0412/18/news001.html

Qtとはー第一回フレームバッファでQtアプリ(その1)
URL: http://www.itmedia.co.jp/enterprise/articles/0412/15/news048.html

Qtとはー第一回フレームバッファでQtアプリ(その2)
URL: http://www.itmedia.co.jp/enterprise/articles/0412/17/news003.html
2005-07-15 Kazuki Ohta [ kzk@localhost.localdomain ]
[Ruby] Ruby on RailsによるWebアプリケーションの高速開発
URL: http://www-6.ibm.com/jp/developerworks/linux/050708/j_l-rubyrails.html
2005-07-12 Kazuki Ohta [ kzk@localhost.localdomain ]
[SH-Linux] SH-Linux Tips
URL: http://www.si-linux.com/labo/shlinux/index.html
2005-07-09 Kazuki Ohta [ kzk@localhost.localdomain ]
[Bibliography] Papers written by Googlers
URL: http://labs.google.com/papers.html
2005-07-06 Kazuki Ohta [ kzk@localhost.localdomain ]
[Scheme] SCMソースハック
URL: http://members.at.infoseek.co.jp/zzyyb/scm/hack/frame.html
[Scheme] 組み込み・リアルタイム用処理系
URL: http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Scheme%3a%c1%c8%b9%fe%a4%df%a1%a6%a5%ea%a5%a2%a5%eb%a5%bf%a5%a4%a5%e0%cd%d1%bd%e8%cd%fd%b7%cf
[Scheme] CookBook
URL: http://schemecookbook.org/Cookbook/RecipeIndex
[Scheme] unit-testing
URL: http://community.schemewiki.org/?unit-testing
[Scheme] Gauche - CompactingPair
URL: http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Gauche%3aCompactingPair
2005-06-25 Kazuki Ohta [ kzk@localhost.localdomain ]
[GC] Proceedings of ISMM'00
URL: http://www.cs.purdue.edu/homes/hosking/ismm2000/program.html
GC関連論文の発表。
[Bibliography] the Garbage Collection Bibliography
URL: http://www.cs.kent.ac.uk/people/staff/rej/gcbib/gcbib.html
[Bibliography] Architecture & Language Implementation
URL: http://osl-www.cs.umass.edu/bibliography.html
2005-06-13 Kazuki Ohta [ kzk@localhost.localdomain ]
[Linux] SATA(Serial ATA) on Linux
URL: http://www.gentoo.gr.jp/transdocs/garziks-sata/sata-top.html
2005-06-09 Kazuki Ohta [ kzk@localhost.localdomain ]
[VisualC++] Workspace Whiz
VC用のアドイン。テンプレート生成機能が便利。

URL: http://workspacewhiz.com/
2005-06-08 Kazuki Ohta [ kzk@localhost.localdomain ]
[Perl] Perlクックブックソースコードリンク集
URL: http://www.sarinaga.com/progtoy/perlcookbooklink.html
2005-06-01 Kazuki Ohta [ kzk@localhost.localdomain ]
[x86-64] OperatingSystem List
Gentoo/AMD64 Project : http://www.gentoo.org/proj/en/base/amd64/technotes.xml
Debian AMD64(x86_64) by kmuto : http://kmuto.jp/open.cgi?debian-amd64&l=jp
CentOS
Fedora

FreeBSD/amd64 : http://www.freebsd.org/platforms/amd64.html
OpenBSD/amd64 : http://www.openbsd.org/amd64.html
NetBSD/amd64 : http://www.netbsd.org/Ports/amd64/
2005-05-28 Kazuki Ohta [ kzk@localhost.localdomain ]
[People] John McCarthy
URL: http://www-formal.stanford.edu/jmc/

Lispのオリジナルの作者、John MacCarthyのページ。"Recursive Functions of Symbolic Expressions and their Computation by Machine"というのがLispのオリジナルの論文の様だ。

History of Lisp
URL: http://www-formal.stanford.edu/jmc/history/lisp/lisp.html
[WebBook] The Scheme Programming Language
URL: http://www.scheme.com/tspl3/
[Bibliography] Bibliography of Scheme-related Research
URL: http://library.readscheme.org/

The Original 'Lambda Papers'は必読だな。まずは設計思想をオリジナルの作者の文章から読み取る必要が有る。その次に継続、OOPとの関係等のプログラミング言語機能を理解し、最後に実装方法を理解する必要が有る。
[Scheme] Scheme Frequently Asked Questions
URL: http://www.schemers.org/Documents/FAQ/

- 2.3. Is there a "reference implementation" or "test suite"?
末尾再帰、継続、数値形式、Higienic Macroについて実装すべき点を指摘

- 2.5. What Scheme implementations are there?
次の様な点が判断基準になる。
- 動くOSの種類
- 実装言語
- compiler or interpreter
- 動作速度とコードサイズ
- 実装規範
- デバッグ環境
- SRFI
- ライブラリ
- IDEサポート
- 他のプログラミング言語で書かれたプログラムに埋め込めるかどうか
- ドキュメントの充実度
以下、現在のScheme実装を列挙。

- 2.7. How can I interface to C / Java?
- Calling native code from Scheme.
- Calling Scheme from native code.
- Defining new native code in Scheme.
[Scheme] 標準化
Schemers.org : http://www.schemers.org/
R5RS(Revised5 Report on the Algorithmic Language Scheme) : http://www.schemers.org/Documents/Standards/R5RS/
SRFI(Scheme Requests for Implementation) : http://srfi.schemers.org/
2005-05-26 Kazuki Ohta [ kzk@localhost.localdomain ]
[PythonCGI] PythonでCGI
Python CGIプログラミング : http://www.gesource.jp/python/cgi/
Python CGIのサポート : http://www.python.jp/doc/release/lib/module-cgi.html
Python CGI FAQ Wizard : http://starship.python.net/crew/davem/cgifaq/faqw.cgi
2005-05-23 Kazuki Ohta [ kzk@localhost.localdomain ]
[3D] zucchaの3D講座
URL: http://www.zuccha.com/3d/

もっといいのが有りそうだけど、まぁとりあえず。
2005-05-16 Kazuki Ohta [ kzk@localhost.localdomain ]
[Solaris] Solarisデバイスドライバ
URL: http://www.amazon.co.jp/exec/obidos/ASIN/4873111439/250-1098005-6285800
[CPU] AMD Opteron
BIOS and Kernel Developer's Guide for AMD Athlon 64 and AMD Opteron : http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/26049.PDF

9章 PowerManagement を見ればCool'n'Quietを使用するドライバが書けそうだ。

BSD Acpi Implementation : http://www.spa.is.uec.ac.jp/~nfukuda/software/
Linux Implementation : linux-2.6.3/arch/i386/kernel/cpu/cpufreq/powernow-k8.[ch]

見てみたらLinuxにはamd.orgの人がドライバを提供していた。
2005-05-03 Kazuki Ohta <kzk@debian>
[MapServer] MapServer
URL: http://mapserver.gis.umn.edu/

地図情報を利用したwebサービスを実現するためのオープンソースソフトウェア。
2005-05-02 Kazuki Ohta [ kzk@debian ]
[Monad] Monad in Scheme
URL: http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?Monad

結構分かり易い。ふわふわってのが良い(笑)
[Programming] コンパイラの作成
C Magazine 2003年1月号
[Programming] プログラミング言語を作る
URL: http://kmaebashi.com/programmer/devlang/index.html
[Progamming] プログラミングを独習するには10年かかる
URL: http://www.yamdas.org/column/technique/21-daysj.html
2005-04-24 Kazuki Ohta [ kzk@debian ]
[WebBook] Electronic Textbook On Computer Graphics
URL: http://nis-lab.is.s.u-tokyo.ac.jp/~nis/CG/welcom.htm

このCD−ROMは、西田友是著「コンピュータによる画像生成」大学教育出版(1995改定)を電子出版(HTML化)したものです。
Netscape Navigator あるいはインターネットエクスプローラなどのブラウザを使用してみて下さい。また、一部Javaが使用してあるので、 Javaに対応したものが必要です。コンピュータグラフィクスの講義の補助教材として、あるいはCG検定の学習に有用です。
2005-04-19 Kazuki Ohta [ kzk@debian ]
[Mozilla] XUL Applications by Piro
URL: http://piro.sakura.ne.jp/xul/xul.html
2005-04-16 Kazuki Ohta [ kzk@debian ]
[Mozilla] XUL
Tutorial -> XUL Planet

Mozilla Cross-Platrorm

Mozilla SourceCode Directory
embedding -> 埋め込みサンプル
extensions -> Venkman, DOMi
xpcom -> XPCOM component(sample必見)
xulrunner -> XUL runtime

XULPlanet
XPCOM
XUL
RDF
Drag&Dropのサンプル

XUL Apps
XUL Wiki
MozillaZine KnowledgeBase
Mozilla Wiki
2005-04-14 Kazuki Ohta [ kzk@debian ]
[Tcl] Comparison of Tcl with other Systems
URL: http://www.mathematik.uni-ulm.de/sai/ss96/uxdb2/comparison.html

Tclと他の多くの言語との比較論議。Tclの生みの親J.K.Ousterhout博士とFSFの総帥R.Stallman氏のTclをめぐる1994年の議論がたいへん興味深い。らしい。
2005-04-13 Kazuki Ohta [ kzk@debian ]
[Tcl] Document
Tcl本体
URL: http://www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/tcl_contents_jp.htm

Tcllib
URL: http://tcllib.sourceforge.net/doc/

その他ライブラリ(Incr Tcl, TclX等)
URL: http://aspn.activestate.com/ASPN/docs/ActiveTcl/at.pkg_index.html

Tcler's Wiki
URL: http://mini.net/tcl/

Tck/Tk Scripting Laboratory
日本語でTcl/Tkをかなり詳しく解説してある。
URL: http://www.geocities.jp/urano343/tcltk.html
2005-04-12 Kazuki Ohta [ kzk@debian ]
[Emacs] Emacs on Windows
Windows上で使えるEmacsは2つ程あって、一つはNTEmacs, もう一つはMeadow。
ただし、NTEmacsはpatchをあてないとIMEを使えない。
URL: http://www.boreas.dti.ne.jp/~miyoshi/NTEmacs21/
2005-04-11 Kazuki Ohta [ kzk@debian ]
[Thinkpad] IBM ThinkPad "1161-234"のメモリ増設方法
URL: http://www.geocities.co.jp/Athlete-Athene/5559/ibm128mb.html
2005-04-07 Kazuki Ohta [ kzk@debian ]
[Document] 山下達雄 / 日本語形態素解析入門
URL: http://nais.to/~yto/clog/2005-03-30-2.html

奈良先端科学技術大学院大学(NAIST)自然言語処理学講座(松本研)にD2の学生として所属していた1998年6月9日のミーティングで、新入生(M1) 向けに「日本語形態素解析」の入門講座を行った。その際に用いた資料を1999年5月14日に改定したものをPDF化して公開する。
[Programming] プログラミング言語 C の新機能
URL: http://seclan.dll.jp/c99d/c99d00.htm

 プログラミング言語 C は 1990 年に ISO で規格化された言語です。その後、何度かの誤りの訂正や wchar_t 型の追加といった追補がなされた後、さらに使いやすくするための新しい機能が検討されてきました。そして、1999 年、ついに新しいプログラミング言語 C の仕様「ISO/IEC 9899:1999 - Programming Language C」(略称 C99) が 1999/12/01 付けで規格として出版されました。ここでは、その新機能を説明します。
2005-04-06 Kazuki Ohta [ kzk@debian ]
[Algorithm] Skip Lists
URL: http://www.dd.iij4u.or.jp/~okuyamak/Information/SkipLists.html
Original URL: ftp://ftp.cs.umd.edu/pub/skipLists/skiplists.pdf

Skip List は「多少メモリを多く消費するが、簡単に実装できるAVL と確率的に等価な状態を作れるデータ構造で、 基本的には「リスト構造」の一種である
2005-03-30 Kazuki Ohta [ kzk@debian ]
[Programming] The Object-Oriented Numerics Page
URL: http://www.oonumerics.org/oon/
2005-03-21 Kazuki Ohta [ kzk@debian ]
[Linux] Programming Guide for Linux USB Device Drivers
URL: http://wwwbode.cs.tum.edu/Par/arch/usb/usbdoc/
[Embedded] 組み込みネット
URL: http://www.kumikomi.net/

技術解説
URL: http://www.kumikomi.net/article/explanation/index_all.html
2005-03-18 Kazuki Ohta [ kzk@debian ]
[SymbianOS] 開発概要
SymbianOS 開発概要
URL: http://www001.upp.so-net.ne.jp/rey/develop2.html

Vodafone 702NK/Nokia 6630 まとめ
URL: http://series60.sakura.ne.jp/6630/pukiwiki.php?FrontPage
Vodafone 702NK/Nokia 6630 開発者向け情報
URL: http://series60.sakura.ne.jp/6630/pukiwiki.php?%B3%AB%C8%AF%BC%D4%B8%FE%A4%B1%BE%F0%CA%F3

Symbian OS C++ Programming
URL: http://www.amazon.co.jp/exec/obidos/ASIN/4798105627/aroundthemobi-22/249-6758350-7869951

SymbianOS/C++プログラマのためのNokia Series 60 Application開発ガイド
URL: http://www.amazon.co.jp/exec/obidos/ASIN/4798107557/aroundthemobi-22/249-6758350-7869951
2005-03-13 Kazuki Ohta [ kzk@debian ]
[Emacs] Emacs Suspending
suspend
$ C-z

restore
$ %emacs
[KDE] KDE Kiosk Mode Tutorial
URL: http://developer.kde.org/documentation/tutorials/kiosk/index.html
[Programming] Coroutines in C
URL: http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
[Ruby] プロふぁいる
$ruby -rprofile command 2>profile-result.txt
[Tcl] CGI Programming with Tcl
tcllib::html doc: http://tcllib.sourceforge.net/doc/html.html
tcllib::ncgi doc: http://tcllib.sourceforge.net/doc/ncgi.html

tclを使ったcgiプログラミングのサンプル: http://www.geocities.co.jp/SiliconValley/4137/dir3/tcllib3.html

tcllib::htmlのサンプル
	#! /usr/bin/tclsh                                                               
	package require html
	
	html::init
	
	puts [html::author "kzk"]
	puts [html::head "TITLE"]
	puts [html::bodyTag]
	
	#link                                                                           
	puts [html::minorMenu "Mover http://mover.cool.ne.jp/"]
	
	#form                                                                           
	puts [html::openTag "form" "value=\"aiueo\""]
	puts [html::checkbox "a" "i"]
	puts [html::closeTag]
	
	#table                                                                          
	puts [html::tableFromList {a {i u} e o}]
	
	puts [html::end]
[Gonzui] Gonzui Hack
URL: http://eto.com/d/0502.html#Gonzui_Hack
2005-03-08 Kazuki Ohta [ kzk@debian ]
[Algorithm] The Rsync Algorithm
URL: http://olstrans.sourceforge.net/release/OLS2000-rsync/OLS2000-rsync.html
2005-02-20 Kazuki Ohta [ kzk@debian ]
[AutoTools] Using GNU auto {conf, make, header}
URL: http://seul.org/docs/autotut/
[Font] Unicode Font Guide For Free/Libre Open Source Operationg Systems
URL: http://eyegene.ophthy.med.umich.edu/unicode/fontguide/
2005-02-15 Kazuki Ohta [ kzk@debian ]
[BFS] Practical File System Design with the Be File System
URL: http://www.nobius.org/~dbg/practical-file-system-design.pdf
BeOSのファイルシステムデザインの解説。
インターネット上に無料で転がっているのが素晴らしい。
[USB] libusb
URL: http://libusb.sourceforge.net/
2005-02-13 Kazuki Ohta [ kzk@debian ]
[Linux] Linux Kernel Threads in Device Drivers
URL: http://www.scs.ch/~frey/linux/kernelthreads.html
[Linux] Linux + Thread
URL: http://gotom.jp/~gotom/linux/thread/thread.html
2005-02-09 Kazuki Ohta [ kzk@debian ]
[UML] UML入門
URL: http://wisdom.sakura.ne.jp/solution/uml/index.html
[IIIMF] IIIMCF specification and its design
URL: http://www.openi18n.org/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=62&page=1
2005-02-03 Kazuki Ohta [ kzk@debian ]
[Linux] Iptablesチュートリアル日本語訳
URL: http://www.asahi-net.or.jp/~aa4t-nngk/iptables/
[Qt] QPopupMenu
show()するとすぐ消えてしまうが、exec()するとしばらく残る。
フォーカスとか処理してくれてるっぽい。
2005-01-31 Kazuki Ohta [ kzk@debian ]
[HAL] Desktop and hardware configuration
URL: http://www.redhat.com/magazine/003jan05/features/hal/

- Reference
HAL(http://freedesktop.org/wiki/Software_2fhal) - Hardware Abstraction Layer
from Redhat Magazine(http://www.redhat.com/magazine/)

from Redhat Magazine(http://www.redhat.com/magazine/)
[D-BUS] Get on D-BUS
URL: http://www.redhat.com/magazine/003jan05/features/dbus/

読んだが、いまいち「interface」というモノが理解出来なかった。
しかし、XMLでセキュリティを記述するってのも面倒臭いなぁ。かといって他に良いフォーマットを思い付く訳でもなく。
ハードウェア検出に使うというインテンションにはおぉ!と思った。
何か協力出来る事が有るだろうか。

- Reference
D-BUS(http://freedesktop.org/wiki/Software_2fdbus) is a message bus system, a simple way for applications to talk to one another.
2005-01-24 Kazuki Ohta [ kzk@debian ]
[Java] ImageIO
Javaで画像ファイルを読み込むのにはImageIOクラスを用いると便利である。
	import javax.imageio.ImageIO;
	import java.awt.image.BufferedImage;
	import java.io.File;
	
	class TestImageIO {
	    public static void main(String[] args) throws Exception {
	        // 読み込むことの出来るフォーマット名
	        String[] names = ImageIO.getReaderFormatNames();
	        System.out.println("ReaderFormatNames:");
	        for(int i=0; i<names.length; i++) {
	            System.out.println(names[i]);
	        }
	        // 書き込むことの出来るフォーマット名
	        names = ImageIO.getWriterFormatNames();
	        System.out.println("WriterFormatNames:");
	        for(int i=0; i<names.length; i++) {
	            System.out.println(names[i]);
	        }
	    
	        BufferedImage bi = ImageIO.read(new File("foo.jpg"));
	        ImageIO.write(bi, "png", new File("foo.png"));  // OK!
	        ImageIO.write(bi, "gif", new File("foo.gif"));  // ムリ
	        ImageIO.write(bi, "bmp", new File("foo.bmp"));  // ムリ
	        ImageIO.write(bi, "xpm", new File("foo.xpm"));  // ムリ
	        ImageIO.write(bi, "jpg", new File("foo.jpg"));  // OK!
	    }
	}
ReaderFormatNames:
png
jpeg
JPEG
gif
jpg
JPG
WriterFormatNames:
PNG
png
jpeg
JPEG
jpg
JPG
2005-01-18 Kazuki Ohta [ kzk@debian ]
[Linux] libinklevel
URL: http://libinklevel.sourceforge.net/

プリンタのインク残量を表示してくれるライブラリ
2005-01-17 Kazuki Ohta [ kzk@debian ]
[Mobile] 携帯向けブラウザ「Scope」
URL: http://www.programmer.co.jp/scope.shtml

30kb以内に収められているため、505iおよび506iシリーズ、FOMA900iシリーズが対象。
どの程度のものなのか試してみたいが、サイトが落ちてるのでそのうち試そう。
[Linux] ファイルシステムのマウント回数
チェックされるのがうざい場合は以下のようにしてチェックを抑制出来る。

$tune2fs -c 0 /dev/hda2
[Linux] 環境変数を引き継がずにuserを変更
$su - kzk
間に「-」を入れる。
2005-01-16 Kazuki Ohta [ kzk@debian ]
[FreeSoftware] Free Software Magazine
URL: http://www.freesoftwaremagazine.com/
最近はweb雑誌ってのが流行りなのかなぁ。
Ruby Magazine, Redhat Magazine, そしてFree Software Magazine。
[Math] マルコフ過程
- N重マルコフ過程(N-th order Markov process)
確立過程のうち、任意の時刻の状態の確率分布が直前のN個の状態のみに依存するもの

- 単純マルコフ過程(simple Markov process)
N == 1の時のN重マルコフ過程

- 斉時マルコフ過程(time-homogeneous Markov process)
状態の確立分布が時刻nに依存しないもの
[Emacs] 関連文書
- EMACS: The Extensible, Customizable Display Edi
URL: http://www.gnu.org/software/emacs/emacs-paper.html

- GNU Emacs Manual
URL: http://www.gnu.org/software/emacs/manual/emacs.html

- Programming in Emacs Lisp (Second Edition)
URL: http://www.gnu.org/software/emacs/emacs-lisp-intro/emacs-lisp-intro.html

- GNU Emacs Lisp Reference Manual
URL: http://www.gnu.org/software/emacs/elisp-manual/html_mono/elisp.html

- Emacs Wiki
URL: http://www.emacswiki.org/cgi-bin/wiki

まぁ色々と探す際にはこういうリストは便利かも。
しかし俺は何時になったらEmacsを捨てられるんだろう。
捨てる気が無いだけという説も有るが。
[P2P] Gnutellaの仕組み
URL: http://pcweb.mycom.co.jp/special/2000/gnutella/

「Gnutellaを使う上でまず必要になるのは、Gnutella Networkとなる。これは先に説明したNapsterとは大きく異なる点だ。NapsterはNapster, Inc.が設置したサーバーに一度接続しなければならないが、Gnutellaは誰もがサーバーになることができる。つまりこの閉じられたネットワークが、Gnutella Networkというわけだ。」
[WebBook] An Introduction to GCC
URL: http://www.network-theory.co.uk/gcc/intro/
本当にイントロのみ。使い方がメインっぽい。
[P2P] P2Pとは何か?〜基礎から研究紹介まで〜
URL: http://homepage3.nifty.com/toremoro/p2p/p2p.html
[Ruby] Ruby FPDF
URL: http://brian.imxcc.com/fpdf/
pdfを扱うRubyのライブラリ。
これを使ってPDFファイルを保存&取り出しするシステムを作りたいなぁ。
[Knoppix] OREPPIXの作り方
URL: http://ayamem.exblog.jp/1072558#1072558_1
Knoppixをカスタマイズする方法について簡単に。
[Computing] What Every Computer Scientist Should Know About Floating Point
URL: http://www.physics.ohio-state.edu/~dws/grouplinks/floating_point_math.pdf
2005-01-15 Kazuki Ohta [ kzk@debian ]
[JapaneseInput] IIIMP specification
URL: http://www.openi18n.org/subgroups/im/iiimf/protocol/spec.html
Wnn8, ATOK等が採用している。
uimも対応する必要が有るのかなぁ。
確かに商用変換エンジンに対応しているというのはかなりのメリットになると思う。
2005-01-13 Kazuki Ohta [ kzk@debian ]
[Java] java逆コンパイラ & Obfuscator
URL: http://www.cipher.is.tsukuba.ac.jp/~kana/research/java_reverse/decompiler.htm
JADが有名かなぁ。
[Linux] Framebuffer
Linux Kernel2.2と2.4のフレームバッファ : http://www.nk.rim.or.jp/~jun/linux/k22fb.html
Linux Kernel2.6のフレームバッファ : http://www.nk.rim.or.jp/~jun/linux/k26fb.html
フレームバッファをenableにしてカーネルを再構築する方法。
2005-01-10 Kazuki Ohta [ kzk@debian ]
[論文] Portable Multithreading
URL: http://www.gnu.org/software/pth/rse-pmt.ps

GNU Portable Threads( http://www.gnu.org/software/pth/pth.html )の仕組みについて解説。

- The Proposed API
void mctx_create(mctx_t *mctx, void (*sf_addr)(void *), void *sf_arg, void *sk_addr, size_t *sk_size);
void mctx_save(mctx_t *mctx);
void mctx_restore(mctx_t *mctx);
void mctx_switch(mctx_t *mctx_old, mctx_t *mctx_new);
2005-01-08 Kazuki Ohta [ kzk@debian ]
[Anthy] 関数の呼び出し順(辞書の使い方)
[辞書回り] - 色々使われているanthy_get_seq_ent_from_xstrから開始
- anthy_get_seq_ent_from_xstr(dic_main.c, xstrからseq_ent_tを取得)
--- anthy_cache_get_seq_ents(dic_main.c, キャッシュからseq_entを探す。キャッシュはcreate_context時に作成される)
----- anthy_mem_dic_find_seq_ent_by_xstr(mem_dic.c, mem_dicの中から文字列に対応するseq_ent*を取得する)
--- anthy_get_ext_seq_ent_from_xstr(ext_ent.c, 辞書にのっていないシーケンスを解析)

mem_dicはanthy_create_context時に作られているようだ。
そっちを解析する必要が有るな。
2005-01-06 Kazuki Ohta [ kzk@debian ]
[JapaneseInput] 日本語入力プログラムについて考える
URL: http://www4.airnet.ne.jp/koabe/com_inet/im/index.html
[SystemCall] mmap, munmap - ファイルやデバイスをメモリにマップ/アンマップする
[書式]
	#include <sys/mman.h>
	
	void  *  mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);
	int munmap(void *start, size_t length);
2005-01-05 Kazuki Ohta [ kzk@debian ]
[Anthy] 関数の呼び出し順
[文字列からの候補の作成] - wordlist作成 -> metaword作成 -> split -> 文節のソート -> 候補作成 -> 候補のソート
- anthy_do_context_set_str(context.c, 変換文字列をセット)
--- anthy_do_reset_context(コンテキスト初期化)
--- anthy_dic_create_session(dic_main.c, 辞書セッションの開始)
----- anthy_create_session(dic_session.c, セッション作成)
--- anthy_init_split_context(splitterの初期化)
----- anthy_make_word_list_all(全ての部分文字列をチェックしてワードリストを作成する)
----- anthy_make_metaword_all(wordlistからmetawordを作成)
------- make_metaword_from_word_list(word_list一個のmetawordを作る)
------- combine_metaword(metawordを結合)
------- make_expanded_metaword_all(拡大された文節を処理)
------- make_metaword_with_depchar_all(濁点や長音などの記号、その他の記号を処理)
------- make_ochaire_metaword_all(おちゃをいれる?)
------- bias_to_single_char_metaword(一文字の文節は減点)
--- make_candidates
----- anthy_mark_boder(文節の境界を設定)
------- 境界マーク用とhmmで用いられるクラス用の領域を確保
------- anthy_eval_border(evalborder.c, 境界を決定する)
--------- seg_constraint_check_all(evalborder.c, 文節候補の内文節境界の制約を充足しない文節を除去する)
--------- metaword_constraint_check_all(evalborder.c, word_listの情報を基に再帰的にmetawordが使用可能かどうかチェック)
--------- anthy_hmm(hmm.c, extentを評価する)
----- create_segment_list(splitterによって配列中に付けられた文節境界のマークから、文節のリストac->seg_listを構成する)
------- loop: create_segment(context.c)
--------- make_metaword_array(context.c, anthy_context->split_infoにあるmwの情報をseg_entに伝搬)
------- loop: push_compound_metaword
------- loop: push_back_segment(作成したseg_entをac->segment_listにくっつける)
----- anthy_sort_metaword(文節seg_entにくっついているmetawordをスコアによってソート(se->mw_arrayをqsortする))
----- anthy_release_ordering_context(何もしない)
----- anthy_init_ordering_context(何もしない)
----- loop: anthy_do_make_candidates(compose.c, 候補を列挙)
------- 0番目(一番スコアの高い)のmetawordのスコアの1/3を候補生成の下限(limit)にする
------- loop: proc_splitter_info(limitよりも高いscoreを持つmetawordから候補を生成する)
------- push_back_singleword_candidate(単漢字などの候補を処理)
------- push_back_zipcode_candidate(郵便番号)
------- push_back_noconv_candidate(ひらがな、カタカナの無変換エントリを作る)
------- push_back_guessed_candidate(候補が二つしか無いときは最後が助詞にで残りが平仮名の候補を作れるか試す)
----- anthy_sort_candidate(候補をソートする。履歴を考慮したりカタカナの候補を最後にまわしたり)
2005-01-04 Kazuki Ohta [ kzk@debian ]
[Web] HTML Tabbed Dialog Widget
URL: http://jon.hedley.net/html-tabbed-dialog-widget
HTMLとCSSでTab Widgetを実現。
[GCC] The Inner Working of GCC
URL: http://www.redhat.com/magazine/002dec04/features/gcc/

[ Various Optimization ]
- Algebraic simplifications
i + 1 -i -> 1

[ Constant folding ]
4 + 3 - 8 -> -1

[ Redundancy Elimination ]
[ (1)Loop-invariant code motion ]
while{ i = 1; hogehoge; } -> i = 1; while{ hogehoge; }

[ (2)Common sub-expression elimination ]
i = func(2); j = func(2); -> i = func(2); j = i;

[ (3)Partial redundancy elimination ]
(1), (2)を1 expressionだけでなくもっと広範囲に適用する。
コンパイラってこんなこともしてたんか、すげ。

Figure : Existing Compilation Process in GCC


Fiture : GCC's Compilation Process with Tree SSA


- GENERIC addresses the lack of a common tree representation among the various front ends.
- GIMPLE solves the complexity problems that facilitate the discovery of data and control flow in the program.

GENERIC and GIMPLE

Although some Front Ends share the same tree representation, there is no single representation used by all GCC Front Ends. Every Front End is responsible from translating its own parse trees directly into RTL. To address this problem, we have introduced a new representation, named GENERIC, that is merely a superset of all the existing tree representations in GCC. Instead of generating RTL, every Front End is responsible for converting its own parse trees into GENERIC trees. Since GENERIC trees are language-independent, all the semantics of the input language must be explicitly described by each Front End. Some of these semantics are translated in the "genericize" pass, while others are translated in the "gimplification" pass.

GCC 4.0からはProgrammingLanguage -> GENERIC -> GIMPLE -> RTL -> MachineCodeの流れになるのか。

Red Hat Magazine( http://www.redhat.com/magazine/ )なんてモノが有ったんですね。
2005-01-03 Kazuki Ohta [ kzk@debian ]
[WebBook] Programming Ruby
URL: http://www.rubycentral.com/book/
Author's page : http://pragmaticprogrammer.com/titles/ruby/index.html

riを作った人みたいですね。感謝。
2005-01-02 Kazuki Ohta [ kzk@debian ]
[SICP] My解答
URL: http://mover.cool.ne.jp/software/sicp/
むずい but 楽しい。
2004-12-31 Kazuki Ohta [ kzk@debian ]
[SICP] Structure and Interpretation of Computer Programs
SICP Web Site : http://mitpress.mit.edu/sicp/
オンラインバージョン : http://mitpress.mit.edu/sicp/
講義ビデオ : http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/

本も講義ビデオも充実の内容です。今年の正月はSICPで決まり。
2004-12-30 Kazuki Ohta [ kzk@debian ]
[MagicPoint] web公開用のhtmlを作成
プレゼンし終わった後、ネット上でプレゼンテーションファイルを公開するにはやっぱhtmlが良い。MagicPointにはhtmlを自動生成してくれる機能が有る。

$mgp -D dir_to_generate_html presentation.mgp

Debian GNU/Linux(Sarge)でこの機能を使用するに当たってはnetpbm, libjpeg-progsの2つのパッケージをインストールする必要があった。
[MagicPoint] プレゼンテーションツール「MagicPoint」
MagicPoint(http://member.wide.ad.jp/wg/mgp/)というツールを使うと、テキストベースでプレゼンテーションスライドを作成する事が出来る。

参考 : http://www.bme.ie.u-ryukyu.ac.jp/classes/basic-software/software09.html
Syntax : http://www.bme.ie.u-ryukyu.ac.jp/classes/basic-software/mgp-syn.html
Usage : http://www.bme.ie.u-ryukyu.ac.jp/classes/basic-software/usagej

参考ファイル
	%include "default.mgp"
	
	%page
	
	ここがタイトル
	
	ここから本文
		あはは
			ふぇふぇふぇ
			ふぇふぇふぇ
		あふぉふぉ
	%page
	
	2ページ目です。
	
	%size 7, fore "yellow"
	この行は大きくて黄色です
	
	%right, fore "red"
	この行は右詰めです
tabでitemize出来るのが便利。

2004-12-28 Kazuki Ohta [ kzk@debian ]
[Scheme] let
letはlambda作用の構文シュガー
2004-12-21 Kazuki Ohta [ kzk@debian ]
[Web] .htaccessでのBasic認証
実現する為には.htaccessというファイルと.htpasswdという2つのファイルを用意する。
まずは以下の内容で.htaccessを作成し、認証をかけたいディレクトリに置く。認証の対象は.htaccessのおかれたディレクトリ以下のすべてのディレクトリである。

	AuthUserFile フルパス/.htpasswd
	AuthGroupFile /dev/null
	AuthName "Input ID and Password."
	AuthType Basic
	require valid-user
フルパスは管理者に問い合わせるしかないっぽぃ。次に.htpasswdに暗号化されたユーザー名とパスワードをリスト表示する。
暗号化するには次のperlスクリプト(encrypt.pl)を使用する。

	#!/usr/bin/perl
	
	$| = 1;
	$pass = $ARGV[0];
	$encpass = &encrypt_passwd($pass);
	
	print "before : $ARGV[0]\n";
	print "after  : $encpass\n";
	
	exit;
	
	sub encrypt_passwd {
	        my($pass)=@_;
	        my(@salt_set)=('a'..'z','A'..'Z','0'..'9','.','/');
	        srand;
	        my($seed1) = int(rand(64));
	        my($seed2) = int(rand(64));
	        my($salt) = $salt_set[$seed1] . $salt_set[$seed2];
	        return crypt($pass,$salt);
	}
$./encrypt.pl passwd

の用に実行すると、

$before : passwd
$after : kxJFNMl0p/GwE

と表示された。ユーザー名がkzkでパスワードがpasswdの場合、.htpasswdには次の様に":"で二つを区切って並べる。

	kzk:kxJFNMl0p/GwE
	kzk1:/UsfKwYUkEVpw
2004-12-17 Kazuki Ohta [ kzk@debian ]
[Ruby] APIを検索するツール ri
ri -- Ruby Interactive reference
URL: http://dev.rubycentral.com/downloads/ri.html

[実行例]
$ri join
	More than one method matched your request. You can refine
	your search by asking for information on one of:
	
	     File::join, Array#join, Pathname#join, ThreadsWait#join,
	     ThreadsWait#join_nowait, Thread#join
$ri File::join
	------------------------------------------------------------- File::join
	     File.join(string, ...) -> path
	------------------------------------------------------------------------
	     Returns a new string formed by joining the strings using
	     +File::SEPARATOR+.
	     
	        File.join("usr", "mail", "gumby")   #=> "usr/mail/gumby"
-Tオプションでstdoutに出力出来る。
$ri -T File::join
[Ruby:Test:] Unitの使い方
URL: http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Test%3A%3AUnit
2004-12-16 Kazuki Ohta [ kzk@debian ]
[C] 代入
次のようにいくつかの式を評価した後、最後の値を代入できる。

	int a = 0;
	a = (do_some(a), do_some(b), 10)
この時a == 10で有る。
これを利用してポインタをfree()してNULLで初期化するという操作を一行で書ける。

	// before
	free(p1);
	p1 = NULL;
	
	// after
	p2 = (free(p2), NULL)
ま、個人的好みですわな。
[WebBook] Parsing Techniques
URL: http://www.cs.vu.nl/~dick/PTAPG.html
[WebBook] C++ GUI Programming with Qt3
URL: http://phptr.com/title/0131240722
[Ruby] モジュールに定数を動的にセット&読み出し
Module#const_set, Module#const_getを使う。
const_setで定数を動的に定義し、const_getでそれを読み出す。

	module SymbolType
	  @i = 0
	  
	  def symbol_id(name)
	    return const_get(name)
	  end
	  module_function :symbol_id
	  
	  def add_symbol(name)
	    name = name.id2name if name.kind_of?(Symbol)
	    const_set(name.upcase, @i)
	    @i += 1
	  end
	  module_function :add_symbol
	end
	
	SymbolType::add_symbol("a_constant")
	p SymbolType::symbol_id("A_CONSTANT")
という感じか。SymbolType::add_symbolの最初の行でString#upcaseを使って大文字で定義するようにしてある。
[Ruby] モジュール関数を定義
C++のstaticメソッド、Javaのクラスメソッドの様にインスタンス無しで呼び出せる関数を作るには、Rubyではモジュール関数を定義する。

	module ModuleA
	  def noinst_puts(str)
	    puts str
	  end
	  module_function :noinst_puts
	end
	
	ModuleA::noinst_puts("aiueo")
定義した関数をmodule_functionメソッドで公開するのがミソ。
2004-12-15 Kazuki Ohta [ kzk@debian ]
[Refactoring] Martin Fowler's Bliki
URL: http://martinfowler.com/bliki/
Refactoringの著者Martin Fowlerさんのblogが有る。
[Ruby] プライベートな関数を呼び出す
Object#sendを使えばOK。

URL: http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Object;em=send

	class Test1
	  private
	  def private_puts(str)
	    puts str
	  end
	end
	
	t1 = Test1.new
	t1.send(:private_puts, "aiueo")
しっかし何でこんなカプセル化を妨げるようなメソッドが有るんだろ。しばし考えるもあんまり良い解答が浮かばず。
ついでにpublicなメソッドだけを呼べるようなpublic_sendを実装してみた。

	class Object
	  def public_send(name, *args)
	    name = name.id2name if name.kind_of?(Symbol)
	
	    if self.public_methods.include?(name)
	      send(name, args)
	      puts "dispatched!"
	    else
	      puts "not public method"
	    end
	  end
	end
	
	class Test1
	  public
	  def public_puts(str)
	    puts str
	  end
	  
	  private
	  def private_puts(str)
	    puts str
	  end
	end
	
	t1 = Test1.new
	
	puts "Test1#public_puts"
	t1.public_send(:public_puts, "aiueo")
	puts "Test1#private_puts"
	t1.public_send(:private_puts, "aiueo")
実行結果

	Test1#public_puts
	aiueo
	dispatched!
	Test1#private_puts
	not public method
こっちの方が気持ち良い。
[Ruby] 可変長引数
仮引数名の前に*を付けると良い。可変長引数は引数の最後に置かなければならない。

	def method(arg1, *arg2)
	end
arg2は配列としてアクセス可能
[Scheme] The 90 Minute Scheme to C compiler
URL: http://www.iro.umontreal.ca/~boucherd/mslug/meetings/20041020/minutes-en.html

Gambit Scheme System
URL: http://www.iro.umontreal.ca/~gambit/

実行結果
	debian% ./gsi ~/90-min-scc.scm ~/test1.scm 
	-------------------------- AST:
	(begin (set! square (lambda (x.1) (%* x.1 x.1))) (%+ (square 5) 1))
	-------------------------- AST AFTER CPS-CONVERSION:
	(let ((r.5 (lambda (k.6 x.1) (k.6 (%* x.1 x.1)))))
	  (let ((r.3 (set! square r.5)))
	    (square (lambda (r.4) (let ((r.2 (%+ r.4 1))) (%halt r.2))) 5)))
	-------------------------- AST AFTER CLOSURE-CONVERSION:
	(lambda ()
	  (let ((r.5 (%closure
	              (lambda (self.7 k.6 x.1)
	                ((%closure-ref k.6 0) k.6 (%* x.1 x.1))))))
	    (let ((r.3 (set! square r.5)))
	      ((%closure-ref square 0)
	       square
	       (%closure (lambda (self.8 r.4) (let ((r.2 (%+ r.4 1))) (%halt r.2))))
	       5))))
	-------------------------- C CODE:
	case 0: /* (lambda () (let ((r.5 (%closure (lambda (self.7 k.6 x.1) ... */
	
	 BEGIN_CLOSURE(1,0); END_CLOSURE(1,0);
	 PUSH(LOCAL(0/*r.5*/)); GLOBAL(0/*square*/) = TOS();
	 PUSH(GLOBAL(0/*square*/));
	 BEGIN_CLOSURE(2,0); END_CLOSURE(2,0);
	 PUSH(INT2OBJ(5));
	 BEGIN_JUMP(3); PUSH(LOCAL(2)); PUSH(LOCAL(3)); PUSH(LOCAL(4)); END_JUMP(3);
	 
	case 2: /* (lambda (self.8 r.4) (let ((r.2 (%+ r.4 1))) (%halt r.2))) */
	
	 PUSH(LOCAL(1/*r.4*/)); PUSH(INT2OBJ(1)); ADD();
	 PUSH(LOCAL(2/*r.2*/)); HALT();
	 
	case 1: /* (lambda (self.7 k.6 x.1) ((%closure-ref k.6 0) k.6 (%* x.... */
	
	 PUSH(LOCAL(1/*k.6*/));
	 PUSH(LOCAL(2/*x.1*/)); PUSH(LOCAL(2/*x.1*/)); MUL();
	 BEGIN_JUMP(2); PUSH(LOCAL(3)); PUSH(LOCAL(4)); END_JUMP(2);
[Debian] ファイルからパッケージを検索
auto-aptコマンドを使う。インストール、データ構築、サーチの手順。

$sudo apt-get install auto-apt
$sudo auto-apt update
$sudo auto-apt search filename
2004-12-14 Kazuki Ohta [ kzk@debian ]
[Ruby] 手続きをオブジェクト化する
Rubyではメソッドそのものをオブジェクトとして扱うにはProcクラスを用いる。
Procクラスのインスタンスを生成するには

- Proc.newをブロック付きで呼び出す
- ブロックつきで呼び出されているメソッドの中でProc.newを呼ぶ

サンプルコード(from 「オブジェクト指向スクリプト言語Ruby」)
	pobj = Proc.new { |i|
	    print "pobj called with ", i, ".\n"
	}
	
	pobj.call(5)
実行結果
pobj called with 5.
2004-12-09 Kazuki Ohta [ kzk@debian ]
[Unicode] ユニコードのブロック表
参考URL
- http://www.unicode.org/charts/
- http://homepage1.nifty.com/nomenclator/unicode/data/

Basic Latin : from 0000 to 007F
Latin-1 Supplement : from 0080 to 00FF
Latin Extended-A : from 0100 to 017F
Latin Extended-B : from 0180 to 024F
IPA Extensions : from 0250 to 02AF
Spacing Modifier Letters : from 02B0 to 02FF
Combining Diacritical Marks : from 0300 to 036F
Greek and Coptic : from 0370 to 03FF
Cyrillic : from 0400 to 04FF
Cyrillic Supplement : from 0500 to 052F
Armenian : from 0530 to 058F
Hebrew : from 0590 to 05FF
Arabic : from 0600 to 06FF
Syriac : from 0700 to 074F
Thaana : from 0780 to 07BF
Devanagari : from 0900 to 097F
Bengali : from 0980 to 09FF
Gurmukhi : from 0A00 to 0A7F
Gujarati : from 0A80 to 0AFF
Oriya : from 0B00 to 0B7F
Tamil : from 0B80 to 0BFF
Telugu : from 0C00 to 0C7F
Kannada : from 0C80 to 0CFF
Malayalam : from 0D00 to 0D7F
Sinhala : from 0D80 to 0DFF
Thai : from 0E00 to 0E7F
Lao : from 0E80 to 0EFF
Tibetan : from 0F00 to 0FFF
Myanmar : from 1000 to 109F
Georgian : from 10A0 to 10FF
Hangul Jamo : from 1100 to 11FF
Ethiopic : from 1200 to 137F
Cherokee : from 13A0 to 13FF
Unified Canadian Aboriginal Syllabics : from 1400 to 167F
Ogham : from 1680 to 169F
Runic : from 16A0 to 16FF
Tagalog : from 1700 to 171F
Hanunoo : from 1720 to 173F
Buhid : from 1740 to 175F
Tagbanwa : from 1760 to 177F
Khmer : from 1780 to 17FF
Mongolian : from 1800 to 18AF
Limbu : from 1900 to 194F
Tai Letters : from 1950 to 197F
Khmer Symbols : from 19E0 to 19FF
Phonetic Extensions : from 1D00 to 1D7F
Latin Extended Additional : from 1E00 to 1EFF
Greek Extended-B : from 1F00 to 1FFF
General Punctuation : from 2000 to 206F
Superscripts and Subscripts : from 2070 to 209F
Currency Symbols : from 20A0 to 20CF
Combining Diacritical Marks for Symbols : from 20D0 to 20FF
Letterlike Symbols : from 2100 to 214F
Number Forms : from 2150 to 218F
Arrows : from 2190 to 21FF
Mathematical Operators : from 2200 to 22FF
Miscellaneous Technical : from 2300 to 23FF
Control Pictures : from 2400 to 243F
Optical Character Recognition : from 2440 to 245F
Enclosed Alphanumerics : from 2460 to 24FF
Box Drawing : from 2500 to 257F
Block Elements : from 2580 to 259F
Geometric Shapes : from 25A0 to 25FF
Miscellaneous Symbols : from 2600 to 26FF
Dingbats : from 2700 to 27BF
Miscellaneous Mathematical Symbols-A : from 27C0 to 27EF
Supplemental Arrows-A : from 27F0 to 27FF
Braille Patterns : from 2800 to 28FF
Supplemental Arrows-B : from 2900 to 297F
Miscellaneous Mathematical Symbols-B : from 2980 to 29FF
Supplemental Mathematical Operators : from 2A00 to 2AFF
Miscellaneous Symbols and Arrows-B : from 2B00 to 2BFF
CJK Radicals Supplemental : from 2E80 to 2EFF
Kangxi Radicals : from 2F00 to 2FDF
Ideographic Description Characters : from 2FF0 to 2FFF
CJK Symbols and Punctuation : from 3000 to 303F
Hiragana : from 3040 to 309F
Katakana : from 30A0 to 30FF
Bopomofo : from 3100 to 312F
Hangul Compatibility Jamo : from 3130 to 318F
Kanbun : from 3190 to 319F
Bopomofo Extended-B 1F00 : from 31A0 to 31BF
Katakana Phonetic Extensions : from 31F0 to 31FF
Enclosed CJK Letters and Months : from 3200 to 32FF
CJK Compatibility : from 3300 to 33FF
CJK Unified Ideographs Extension and : from 3400 to 4DBF
Yijing Hexagram Symbols-B : from 4DC0 to 4DFF
CJK Unified Ideographs : from 4E00 to 9FFF
Yi Syllables : from A000 to A48F
Yi Radicals : from A490 to A4CF
Hangul Syllables : from AC00 to D7AF
High Surrogates : from D800 to DB7F
High Private Use Surrogates : from DB80 to DBFF
Low Surrogates : from DC00 to DFFF
Private Use Area : from E000 to F8FF
CJK Compatibility Ideographs : from F900 to FAFF
Alphabetic Presentation Forms : from FB00 to FB4F
Arabic Presentation Forms-A : from FB50 to FDFF
Variation Selectors : from FE00 to FE0F
Combining Half Marks : from FE20 to FE2F
CJK Compatibility Forms-A : from FE30 to FE4F
Small Form Variants : from FE50 to FE6F
Arabic Presentation Forms-B : from FE70 to FEFF
Halfwidth and Fullwidth Forms-B : from FF00 to FFEF
Specials : from FFF0 to FFFF
Linear B Syllabary : from 10000 to 1007F
Linear B Ideograms : from 10080 to 100FF
Aegean Numbers : from 10100 to 1013F
Old Italic : from 10300 to 1032F
Gothic : from 10330 to 1034F
Ugaritic : from 10380 to 1039F
Deseret : from 10400 to 1044F
Shavian : from 10450 to 1047F
Osmanya : from 10480 to 104AF
Cypriot Syllabary : from 10800 to 1083F
Byzantine Musical Symbols-B 4DC0 : from 1D000 to 1D0FF
Musical Symbols-B 4DC0 1D000 : from 1D100 to 1D1FF
Tai Xuan Jing Symbols-B 4DC0 1D000 1D100 : from 1D300 to 1D35F
Mathematical Alphanumeric Symbols-B 4DC0 1D000 1D100 1D300 : from 1D400 to 1D7FF
CJK Unified Ideographs Extension B 4DC0 1D000 1D100 1D300 1D400 : from 20000 to 2A6DF
CJK Compatibility Ideographs Supplemental 2E80 : from 2F800 to 2FA1F
Tags : from E0000 to E007F
Variation Selectors Supplemental 2E80 2F800 : from E0100 to E01EF
Supplementary Private Use Area-A : from F0000 to FFFFF
Supplementary Private Use Area-B : from 100000 to 10FFFF
[Qt] QListViewを使うに当たっての注意事項
QListViewを使うに当たっては色々初期設定が必要になる。

- addColumn( columnName ) - コラムを追加。これが無いとデータが表示されない。
- header()->hide() - コラムのヘッダーを隠す。隠す場合でもaddColumnを呼ぶ必要が有る。
- setAllColumnsShowFocus( bool ) - 選択状態を全てのカラムに表示する。これが無いとコラム0にだけしか選択インジケーターが表示されない。
- setSortng( 0 ) - ソートするコラムを指定
- setSelectionMode( QListView::Signle ) - 一つのアイテムしか選択できないようにする

また、QListView::selectedItemは良く使うがnullが返ってくる事が多々有る。なので、必ずnullチェックをすること。よくsegvの原因になる。

	QListViewItem *item = listview->selectedItem();
	if( item )
	{
	    // 何らかの処理
	}
2004-12-06 Kazuki Ohta [ kzk@debian ]
[Ruby] ファイルの読み込み
次の様にするとファイルのオープン、読み込み、クローズ処理を全く見せずに記述できる。

	IO.foreach(filename) { |line|
	    print line
	}
[Ruby] セキュリティチェック機能
Rubyにはセキュリティチェック機能が有る。セキュリティチェックモードに入るには大域変数$SAFEに値を設定するか、-Tオプションでrubyを実行する。

レベル0 制限なし
レベル1 汚染された文字列による危険な操作の禁止
レベル2 プロセスやファイルに対する一部の操作の禁止
レベル3 外部からの入力だけ出なく全てのオブジェクトが汚れた状態になる
レベル4 大域的な情報の変更の禁止、ファイル出力の禁止

スクリプト等の場合は次の行をファイルの最初に挿入しておくと安全。

	#! /usr/local/bin/ruby -T
[Ruby] kconvライブラリ
日本語の文章を扱う場合にはkconvライブラリを使う。

	require 'kconv'
メソッド
Kconv::guess(str) - 文字コードを推定して定数を返す
Kconv::kconv(str, [out[,in]]) - 文字コードを変換する
Kconv::toeuc(str) - EUCに変換。元のコードは推測。
Kconv::tojis(str) - JISに変換。元のコードは推測。
Kconv::tosjis(str) - SJISに変換。元のコードは推測。

定数
Kconv::AUTO - 自動変換
Kconv::JIS
Kconv::EUC
Kconv::SJIS
Kconv::BINARY - バイナリ(無変換)
Kconv::NOCONV - Kconv::BINARYと同じ
Kconv::UNKNOWN - 不定。Kconv::AUTOと同じ。
2004-12-05 Kazuki Ohta [ kzk@debian ]
[RegularExpression] オプション一覧
i - 大文字小文字を区別しない
o - 式展開を最初の一度だけ使う
e - EUC文字列と仮定してマッチを行う
s - SJIS文字列と仮定してマッチを行う
u - UTF-8文字列と仮定してマッチを行う
n - バイト列と仮定してマッチを行う
x - 正規表現中の空白を無視。コメントを有効に
P - 改行も通常行とみなす
[RegularExpression] 最左最短一致
例えば protocol://server.domain:80/ という文字列のhttpの部分までをマッチさせたい時に

	/.*:/
で指定すると80の直前のすべてにマッチしてしまう。そこで

	/.*?:/
とすると ":" が最初に出てくる位置を捉えてくれるので "protocol:" の部分をめでたく取り出せる。
[RegularExpression] メタ文字一覧
. - 改行を除く任意の一文字
[] - [a-z]はaからzまでのいづれか
[^] - [^a-z]はaからz以外の文字
\w - 英数字。[0-9A-Za-z_]と同じ
\W - 英数字以外
\s - 空白文字。[ \t\n\r\f]と同じ
\S - 非空白文字
\d - 数字。[0-9]と同じ
\D - 数字以外
* - 直前の表現の0回以上の繰り返し
+ - 直前の表現の1回以上の繰り返し
? - 直前の表現の0または1回以上の繰り返し
*? - 直前の表現の0回以上の繰り返し(最左最短一致)
+? - 直前の表現の1回以上の繰り返し(最左最短一致)
?? - 直前の表現の0または1回以上の繰り返し(最左最短一致)
{m,n} - 直前の表現のm回からn回の繰り返し
^ - 行頭にマッチ
$ - 行末にマッチ
\A - 文字列の先頭にマッチ
\Z - 文字列の末尾(改行が有ればその直前)にマッチ
\z - 文字列の末尾にマッチ
| - 選択
() - 表現のグループ化
\1, \2 - 後方参照(n番目の括弧に対応する)
[Ruby] Cで定義された関数をRubyから呼び出す
次の様なファイルを作成する。

	#include <stdio.h>
	#include <ruby.h>
	
	VALUE hello(void);
	
	Init_Hello() {
	    VALUE cHello;
	    
	    cHello = rb_define_class("Hello", rb_cObject);
	    
	    rb_define_method(cHello, "hello", hello, 0);
	}
	
	VALUE hello(void) {
	    printf("Hello World!\n");
	    return Qnil;
	}
このファイルをコンパイルして拡張ライブラリを作成し、それをrequireして使用する。この時最初にInit_hogehogeという関数が最初に呼ばれるので、その中でクラスの作成(rb_define_class), クラスにメソッドを追加(rb_define_method)する。

rb_define_class(const *char name, VALUE super)
name = クラス名
super = 継承するクラス(ObjectクラスはCからはrb_cObjectという変数で参照可能)

rb_define_method(VALUE klass, const *char name, VALUE (*func)(), int argc)
klass = メソッドを追加するクラス
name = メソッド名
func = 実際に行う関数へのポインタ
argc = 引数の数

メソッドとなる関数は必ずVALUE型を返さなければならない。QnilはRubyにおけるnilを表すVALUE型の値である。

次にMakefileを自動生成するRubyプログラムを作成する。次の内容をextconf.rbとして保存する。

	require "mkmf"
	create_makefile("Hello")
そしてMakefileを自動生成し、makeする。

$ruby extconf.rb
$make

これを使うには次の様にする。

$debian% irb
$irb(main):001:0> require "Hello.so"
$=> true
$irb(main):002:0> h = Hello.new
$=> #<Hello:0x4008a874>
$irb(main):003:0> h.hello
$Hello World!
$=> nil
$irb(main):004:0> exit
2004-12-04 Kazuki Ohta [ kzk@debian ]
[CSS] プロパティを引き継ぐ
親タグのプロパティを引き継ぐ事が出来る。

	.someclass {
	    background-color: inherit;
	}
2004-12-03 Kazuki Ohta [ kzk@debian ]
[Ruby] ヒアドキュメント(複数行をまとめて表示)
基本の形は次。

	print <<"EOF"
	EOF
これだと最後のEOFをインデントするとエラーになるので次の様にすると良い。

	print <<-"EOF"
	EOF
ヒアドキュメント内では式展開も行える

	x = 50
	print <<-"EOF"
	    x = #{x}
	EOF
2004-12-01 Kazuki Ohta [ kzk@debian ]
[OOo] LinuxでOpenOffice.org 2.0をビルドする方法
URL: http://ja.openoffice.org/documents/develop/build_linux_2_0.html

OOo2.0からは vclplugin のコードが入っている。
[Emacs] isearchのハイライトの反応を良くする
(setq isearch-lazy-highlight-initial-delay 0)
[Emacs] iswitchbを便利にする
\C-x bで*scratch*に移動するとき先頭の"*"を入力するの面倒。そこで一部だけを入力すれば良いようにする。
(iswitchb-default-keybindings)
[Emacs] C-x C-fで補完する時のファイル名を色付け
dircolors( ftp://ftp.cis.ohio-state.edu/pub/emacs-lisp/archive/dircolors.el )を使う

(require 'dircolors)

を追加する。dircolors.elを適当にいぢくって色を変えられる。
[Emacs] ディレクトリ以下の.elファイルをすべてバイトコンパイル
$find . | grep elc$ | xargs rm -f
$find . | grep el$ | xargs emacs -batch -no-site-file -q -f batch-byte-compile

実際には次の様なファイルを作っておけば良いかな

	if test "$1" = ""; then
	  echo "Bytecompiling All"
	  find . | grep elc$ | xargs rm -f
	  find . | grep el$  | xargs emacs -batch -no-site-file -q -f batch-byte-compile
	else
	  echo "Bytecompiling File: $1"
	  emacs -batch -no-site-file -q -f batch-byte-compile $1
	fi
ロードするには、拡張子無しで指定するのが便利。例えば
2004-11-30 Kazuki Ohta [ kzk@debian ]
[gonzui] ソースコード検索エンジンgonzui 0.1.0 を導入する
gonzui 0.1.0( http://namazu.org/~satoru/gonzui/ )が公開されたので利用方法をメモ
ソースコードを取得し
$./configure
$make
ここで make install する必要は無い。
まずはソースコードをインポート。
ディレクトリをインポートする場合は
$./gonzui-import path-to-dir
aptを使ってソースコードをまるごとインポートする場合は
$./gonzui-import --apt wget

登録されたかどうか確認するには
$./gonzui-db --list
登録されたファイルを表示するには
$./gonzui-db --list-files

まずはコマンドラインベースの検索をしてみる
$./gonzui-search main
--colorで該当ワードをハイライト、-nで行数、--context=NUMで前後の行を表示できる
$./gonzui-search -n --context=7 main
これでmain関数の前後7行を表示できる。

次にwebサーバーを介した検索をしてみる
$./gonzui-server
でサーバーを開始(設定不要!)し、