prog

ダブルディスパッチ

(2)ここで(しかたなく) @a と @b を attr で公開しましたが、 公開しないでこの eql? と同様なものは作れるでしょうか? 現状では普通にはできません.ちょっとひねれば def eql? other other.check_eq? @a, @b def def check_eq? a, b a == @a and b ==…

partial write

対象が端末、ネットワーク、SVR4 のストリーム装置などの装置では、 write(2) は書き込み要求したバイト数より少ない値を返すことがある。 フロー制御などのためである。 (詳解UNIXプログラミング 12.8)dual.py def writeall(fd, data): while len(data) !…

Excelで出力したTSV(CSV)をhtmlテーブルに変換する

Excelで「ファイルを保存」をして保存したTSV(CSV)ファイルを対象とする。 その場合、次のような仕様になるらしい。 ・改行コード(レコードの区切り)はCRLF ・セル内に「"」か改行を含む場合はフィールドが""で囲まれる。 ・セル内の「"」は「""」になり…

ゲームでエラー発生時にリプレイデータを保存

ゲームのリプレイデータはテストやデバッグ時の状況再現にも役に立つ。 なので予期しないエラーが発生したときは自動的にリプレイデータをファイルに保存しておくといいんじゃないかと思った。 Ruby ならこんな感じ begin rescue f = open("replay.dat", "w"…

プログラムの推敲

「設計に時間をかけてきっちりやればコーディングは書くだけ」という人がいる。 これは、「文章というのは内容さえ考えれば、書くのは原稿用紙のマスを右上から埋めていくだけ」といっているようなものだ。読み直し・推敲をしないで良い文章が完成するはずが…

SQL結果をツリーを表示

RDBMS でツリーを表すこんなデータを AA でツリー表示するスクリプトを書いてみた。 1 11 12 11 21 22 21 23 22 41 51 52 51 80 81 80 82 81 83 82 99999#!/usr/bin/env python # -*- coding: utf-8 -*- import sys class Node: def __init__(self, value=""…

CGDB - curses interface to gdb

http://cgdb.sourceforge.net/ curses を使った gdb インターフェイス。 vi キーバインドで gdb を操作できる。かなりいい感じ。 $ cgdb -- a.outで起動。上側のウィンドウがソースウィンドウ(CGDB Mode)。下側が GDB Window (GDB Mode)。 i と Esc で2つの…

indent2tree

パブリックドメイン版 cflow には GNU cflow の -T, --tree * Draw ASCII art treeというオプションがないので、インデントで表された呼び出し構造(オフサイドルール?)をツリー形式に変換するコマンドを書いてみた。 #!/usr/bin/python import sys def ge…

GNU cflow vs パブリックドメイン cflow

今まで cflow を過小評価していた。あらかじめ $ for i in *.c; do cflow $i > $i.cflow; doneとしておいて :grep 関数名 *.cflow とすればクロスリファレンスにもなるし、vim のキー入力のように関数呼び出しが深いソースを読むときは超役に立つ。相互に呼…

ソースがきれいなオープンソースソフト

Exuberant Ctags Subversion ソースがきたないオープンソースソフト Vim

VB6.0アドイン

MZ-Tools 3.0 (the Ultimate VB6 AddIn) by Abhishek.NET http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=58674&lngWId=1

VB6.0によるアドインの作り方

アドインからのカーソルまたは選択位置にコードを挿入する方法。 http://support.microsoft.com/kb/299848/jaCreate your own VB Add-In http://www.freevbcode.com/ShowCode.asp?ID=3027vbaddin.iniは%windows%にある。

NetBeans Ruby Pack が便利すぎる

もう Vim で Ruby や Python の開発環境整えるのはやめて素直に IDE を使おうという気がしてきた。 C-S-Space で表示されるドキュメントは C:\Program Files\NetBeans 6.0 200710211200\ruby1\rubystubs\0.2\nkf.rb やらに書かれているので、日本語化は簡単…

バージョン管理に入れるべきでないファイル

Microsoft Visual C++ 入れる:.dsp .rc .cpp .h 入れない: .ncb .clw .opt Microsoft Visual Basic 入れる: .vbp 入れない: .vbw .dca .oca .vbg Microsoft Visual Studio .NET 入れる: .sln 入れない: .idb .ncb .obj .opt .pch .plg http://www.perf…

doc, xls, ppt のファイルフォーマット

Microsoft Office Binary (doc, xls, ppt) File Formats http://www.microsoft.com/interop/docs/officebinaryformats.mspxOpenOffice.org's Documentation of the Microsoft Excel File Format http://sc.openoffice.org/excelfileformat.pdf

COM のクラスを定義している DLL の探し方

COM のクラスを定義している DLL の探し方は [VB] ActiveX コンポーネントで作成されるレジストリ エントリ http://support.microsoft.com/kb/183771/ja に書いてある。 1. レジストリエディタで HKEY_CLASSES_ROOT の直下から Shell.Application を検索。 2…

UndoDB

逆ステップ実行で前に戻れる gdb らしい。 http://undo-software.com/undodb_about_brief.html 関連: Omniscient Debugger http://www.radiumsoftware.com/0406.html

Lisp/CGI Programming Experiments

clisp で CGI プログラミング http://cybertiggyr.com/gene/lisp-cgi/ clisp で UTF-8 を使うには clisp -E UTF-8http://sh1.2-d.jp/b/lisp/2005-09-23-03-37.html

吉田誠一氏の技術コラム

http://www.aerith.net/column-j.htmlオブジェクト指向 * オブジェクト指向プログラミングとJava言語 * オブジェクト指向の現実 * クラス設計の考え方 * 誕生日に学ぶオブジェクト指向 * インピーダンス・ミスマッチを解決する、O/Rマッピングの設計 * リフ…

メモリー管理の内側

malloc 初心者へのすばらしい解説。 ガベージコレクションの参考文献もまとまっている。 http://www-06.ibm.com/jp/developerworks/linux/041217/j_l-memory.htmlJava のメモリアロケーションについて。 Javaの理論と実践: パフォーマンスに関する都市伝説を…

ccache, distcc

ccacheとdistccでビルドを高速に http://www.otsune.com/bsd/ports/ccache_distcc.html

gdb で STL コンテナの中身を表示する

こいつを使う。 http://www.stanford.edu/~afn/gdb_stl_utils/ gcc 3.4.2 では↓のように _M_impl を入れる必要があったけど。 - set $vec_size = $vec->_M_finish - $vec->_M_start + set $vec_size = $vec->_M_impl._M_finish - $vec->_M_impl._M_start 参…

gdb で curses プログラムをデバッグする

には kterm をもう1つ開いて、--tty オプションか tty コマンドでデバッギの端末をそちらの疑似端末に設定してやるとよろしい。 http://www.dirac.org/linux/gdb/07-Debugging_Ncurses_Programs.php しかしその kterm 上で sleep 100000 などとしてシェルを…

gdb で vim をデバッグする

vim + screen + gdbでデバッグしよう http://d.hatena.ne.jp/parasporospa/20060827 のつづき。 結局、gdb で vim を起動するときは $ gdb --args vim -f -g (gdb) runとすると普通にデバッグできる。vim を起動してからプロセスIDを指定してアタッチするよ…

プログラミングトリビア

初期のC言語では += でなく =+ と書いていた。 http://cm.bell-labs.com/cm/cs/who/dmr/chist.html K&R 1st edition は5タブだった。 VBの初期の開発コードネームはRubyだった。 http://www.rubyist.net/~matz/20061124.html#c02 sed はチューリング完全であ…

真偽値比較表

C 0 のみ偽。 Perl 数値の 0、文字列の "0"、空文字列 ""、未定義値のみ偽。 Ruby false, nil のみ偽。 Python False、None、数値の 0、空文字、空のコンテナ(string、list、tuple、set、frozenset、dict など)のみ偽。 VimScript 数値の 0 のみ偽。文字列は…

aoutil

ちょっとしたユーティリティマクロやテンプレート関数 #ifndef AOUTIL_H_INCLUDED #define AOUTIL_H_INCLUDED #ifdef __cplusplus extern "C" { #endif //__cplusplus #define RAD2DEG(rad) ((rad) * 0.00872664625997165) #define DEG2RAD(deg) ((deg) * 11…

autostrip.js

http://espion.just-size.jp/archives/05/231211111.html colorful.js を参考に autostrip.js というのを書いてみた。テキストボックスからフォーカスが離れると、自動的に入力テキストの前後のスペースを削除するというもの。 例:" hoge " => "hoge" var a…

Perl メモ

Perlメモ http://www.din.or.jp/~ohzaki/perl.htm Perl正規表現雑技 http://www.din.or.jp/~ohzaki/regex.htm とほほのPerl入門 http://www.tohoho-web.com/wwwperl.htm Perl-5.8 覚え書き http://namazu.org/~tsuchiya/perl/perl-5.8.html Perl 5.8 以降に…

String.split について

irb(main):003:0> "".split(",").length => 0"hoge".split(",").length == 1 なのだから、"".split(",") で [""] が返ってほしいと思うのは私だけかな。そうなれば常に s.split(",")[0] で文字列が得られるのだが。 Python はそうなる。 Python 2.4.3 (#1, M…