タグ

ブックマーク / odz.hatenablog.com (15)

  • polymorphism とか inheritance とか - odz buffer

    ref:「難しい言語」の補足 - カレーなる辛口Java転職日記 ref:ポリモーフィズムは継承の面白い副作用..なんかじゃない - みねこあ ref: 継承という手段 - みねこあ wtnabeさんも書いていたことなんだけど、結構な人が「オブジェクト指向 = Java のオブジェクト指向」だと思っているようです。それはなんだかちょっと悲しいなぁ。 ということで適当にまとめることに挑戦。 まず、大前提として静的型付け言語ではメソッドシグネチャ*1 を宣言しておかないとメソッドの呼び出しができない*2。このメソッドシグネチャの集まりを型とかクラスとか呼んだりするするわけですな。 で、Java では継承と型階層を導入することで、異なるクラスのインスタンスをまとめてひとつの型で扱えるようにして、ポリモーフィズムを実現しているのである。要するに class Base { } class Deri

    polymorphism とか inheritance とか - odz buffer
    yugui
    yugui 2007/11/25
  • compiz - odz buffer

    ごそごそいじっていたら、compiz が動くようになった。そうか、module-assistant でモジュールの作成と restricted-manager での設定が必要なのだな。

    compiz - odz buffer
  • 名前空間 - odz buffer

    別に布教活動とかしていないのに、研究室内に Python が広がり始めている。といっても自分以外ではまだ 2 人だけど。 len = len(obj) # ... a = len(x) みたら、なんか上のようなコードを書いてはまっていた。当然、'int' object is not callable とかいわれる訳だけど。 でまあ、「Python では変数も関数も名前空間一緒だから」みたいなことをいったんだけど、まぁ、あまり親切な説明ではないなぁ。クラスもメソッドも単なるオブジェクトというのは慣れていないと難しいかもしれない。 そういや、 x = x()として問題になる言語って何があるだろう。 C の関数もオブジェクトではあるけど、代入できないから問題にはなりにくい。宣言も必須だから問題ないかなぁ。 Perl のサブルーチンはそれ自体はオブジェクトじゃないので問題なし。サブルーチンへの参照

    名前空間 - odz buffer
  • with - odz buffer

    ref:http://twitter.com/hayamizu/statuses/337466862 with_statement ってあんまり知られてないなぁ。Python 2.5 からだけど。 from __future__ import with_statement import sys with file(sys.argv[0], 'r') as fp: for line in fp: sys.stdout.write(line) with のブロックに入った直後に __enter__ が、ブロックをでるときに(例外があれば例外の情報付きで) __exit__ が呼ばれる。で、例外発生時に __exit__ が true を返すと、例外抑制、true 以外を返すと例外が再 raise。 from __future__ import with_statement import sys

    with - odz buffer
    yugui
    yugui 2007/10/17
    Python版IDisposable
  • SSH の接続を共有する - odz buffer

    ref:http://www.revsys.com/writings/quicktips/ssh-faster-connections.html via:http://www.cuspy.org/blog/2007/09/21/ $HOME/.ssh/config に Host * ControlMaster auto ControlPath /tmp/%r@%h:%p とかくと、既存の SSH コネクションがあれば利用してパスワード/パスフレーズ入力なしで接続できるとのこと。おぉ、すげえ。 どうしても公開鍵認証をさせてくれないところなんかで役に立つかも。 そういえば、$HOME/.ssh/config を設定するという話はあまり知られていない気がするなぁ。知らない人は新山さんのでも読むといいよ。 入門OpenSSH 作者: 新山祐介出版社/メーカー: 秀和システム発売日: 2006/0

    SSH の接続を共有する - odz buffer
    yugui
    yugui 2007/09/28
  • 例外とバックトレースを使ったデバッグ - odz buffer

    あるプログラムを使っていると std::out_of_range で abort したので、デバッグしようとするものの、C++ は例外で abort しても Java のようにバックトレースを表示してくれたりしないので、どこが問題か分かり難くて困った。 #include <cstdlib> #include <cstdio> #include <execinfo.h> namespace std { void __throw_out_of_range(const char* msg) { void *trace[128]; int n = backtrace(trace, sizeof(trace) / sizeof(trace[0])); backtrace_symbols_fd(trace, n, 1); int a = 0 / 0; printf("%d\n", a); abort(

    例外とバックトレースを使ったデバッグ - odz buffer
  • 考えることは同じ - odz buffer

    結局、みんな同じことを考える。 ref:http://d.hatena.ne.jp/bleis-tift/20070731/1185812617 ref:http://d.hatena.ne.jp/odz/20061025/1161837641 ref:http://www.coins.tsukuba.ac.jp/~i021216/diary/?date=20070109#p01 (なぜか 403 で見えない) あと、Builder パターンの例とか ref:http://nicolas.lehuen.com/index.php/post/2006/10/07/113-java-map-literals-continued

    考えることは同じ - odz buffer
  • 言語オタク - odz buffer

    ref:今年の言語 @ 2007年01月 @ ratio - rational - irrational @ IDM C、VB、C++Perl、Lisp、アセンブリ、Lua、Java、Scheme、Python、Haskell を触ったという話に続いて最後に、 いつか言語ヲタになりたい。 えー。 それだけ触ってれば、もうすでに言語オタクの域だと思うんですが。 自覚がないのは人だけのケースでは。 by まつもとさん。まったくもってそのとおりだと思った。 どうせなので、自分の知っているプログラミング言語を並べてみる。 C C++ Java Z80の機械語(ハンドアセンブル。でもほとんど忘れた) Perl Ruby Python PHP Emacs Lisp Groovy Pnuts sh JavaScript awk SQL こんなもんか(SQLってプログラミング言語でいいんだっけ?ていう

    言語オタク - odz buffer
    yugui
    yugui 2007/01/08
    あ、XSLTは忘れてた。あれも驚きがあったなぁ。 Numerie, Scala
  • なぜ DHH の宣伝は批判されないのか - odz buffer

    あ、なんか yugui さんに補足された? yugui hacker, seasar DHHなんかは宣伝先行かつ「必 死」でもあるんだが。あんまり批判されないのは圧倒的にhackerでもあるから? でもひがさんもhackerだしな。 あ、やっぱり Ruby on Rails の宣伝も Seasar とそう変わり無いのかな。 で、なんでひがさんは批判されて DHH はあんまり批判されないかって、単に DHH の宣伝を直接目にする機会が少ないからじゃないのかな。ひがさんもはぶさんも blog にがんがん書くし、Seasar は国産なんだから国内で目につくのはそりゃ Seasar のほうだろう。で、しかも宣伝しているのは大抵「中の人」だったり*1。 あと 「まぁ、外国人だし、日人とは感覚が違うよね」ということで若干許容範囲が広がるというのもあるかも。 *1:同じ褒めちぎるのでもファンと中の人だ

    なぜ DHH の宣伝は批判されないのか - odz buffer
    yugui
    yugui 2006/11/20
  • 「Perl, Python, Ruby の比較」があまりにもいい加減な件 - odz buffer

    ref:Perl, Python, Ruby の比較 ref:はてなブックマーク - Perl, Python, Ruby の比較 ref:はてなブックマーク - Perl, Python, Ruby の比較 ちょっと遅くなったが以前宣言したとおり、書いておく。 「Perl, Python, Ruby の比較」はどうも調査が足りないのか、結果的にかなり嘘のまじった文章になっている。あくまで、初心者の私見ですので気軽に聞き流してください。とはあるものの、はてブのコメント等で「参考になる」とか言っている人もいる*1ので一応指摘しておこうと思う。 3.2 次に Python 変数はデフォルトで局所変数となるので、 Perl のように my で宣言する必要はありません。 my を強制することで変数の typo を防げるという視点が抜けるのは若干フェアではないですね。 それから、Python には

    「Perl, Python, Ruby の比較」があまりにもいい加減な件 - odz buffer
  • Seasar の宣伝 - odz buffer

    今日見かけた Seasar 周りのネタ。 やっぱ Seasar カンファレンス行かなくて良かった。行ってたら、質疑応答で、「Rails 以上のことがやれてないのに "Super" は誇大広告じゃないですか?」とか言ってたに違いない。したり顔で。おぉ、恐ろしい。最悪だ。厚顔無恥の極み。ばかばか。 ついでだから、書いておこう。Seasar プロジェクトのやってることは魅力的で素晴らしいことだと思うんだけど、広報の仕方に嫌悪感を覚える。昔から。スーツは喜ぶかも知れないけど、ギークはだませないだろ。 181 :仕様書無しさん :2006/11/15(水) 13:17:22 俺達の芦ピーに援軍 http://d.hatena.ne.jp/babie/20061114/1163498030 182 :仕様書無しさん :2006/11/15(水) 13:36:11 Rubyな人なのね。 Seasarは宣

    Seasar の宣伝 - odz buffer
    yugui
    yugui 2006/11/17
    DHHなんかは宣伝先行かつ「必 死」でもあるんだが。あんまり批判されないのは圧倒的にhackerでもあるから? でもひがさんもhackerだしな。
  • emacsclientで自動的に emacs を起動する - odz buffer

    ref:clmemo@aka: Firefox のソース閲覧用エディターに Emacs を設定する おぉ。Firefox でページのソースの表示に外部エディタを指定できるようになっているのか。 ところで、emacsclient のことだが、最初に起動しておかなくても % emacsclient -a emacs filenameとするか、 % export ALTERNATE_EDITOR=emacsとしておくことで、自動的に emacs を起動するようにできる。 ただ、名前のとおり、あくまで代替のエディタとしての扱いなので、 % emacsclient -a emacs -n filenameとしてもすぐにシェルに戻って来るわけではないし、C-x # (server-edit) が使えるわけでもないので注意。 あくまでシームレスに扱いたいならEmacsWiki: EmacsClientに

    emacsclientで自動的に emacs を起動する - odz buffer
    yugui
    yugui 2006/11/05
  • Suffix Array - odz buffer

    Suffix Array ということで、軽く言及。 もう一つの難点は、そろそろトウが立っていること。アルゴリズムというのは比較的経年変化の少ない分野ではあるけれども、それでもその後見つかった新たなアルゴリズムだって知りたい。たとえばSuffix Arrayとかは、分かりやすくて使い易い、もっと知られてもいいアルゴリズムなのに、まだこの手のに取り上げられた例というのがありません。 Suffix Array って名前で proceedings に載ったのが1990年*1、Journal に載ったのが1993年で*2 、Mastering Algorithm with Perl の出版が1999年だから、新しいとか古いとかそういう問題ではないと思うがなぁ。 まぁ、アルゴリズムの教科書レベルので Suffix Array を取り扱ったとしても、Suffix Array の構築コストは結構高いし

    Suffix Array - odz buffer
  • Xango and crawler - odz buffer

    クローラを作る必要に迫られているので、Crawler Framework の Xangoや、crawlerを試してみたり。 POEを全然使ったことがないせいか、Xangoのほうは最初付属のPODを呼んでも全然分かんなかったんだけど、そこは Plagger::Plugin::Aggregator::Xango とか、t/02-pull.t と t/lib/XangoTest/SimplePull/{Broker,Handler}.pm あたりを読んでがんばる。ていうか POD の SYNOPSYS にすぐ動くサンプルを書いていてほしいと思ったり。あと、公式サイトに書いてある svn://svn.razil.jp/Xango/trunk って SVN レポジトリがアクセスできないけど http://svn.razil.jp/Xango/trunk ならアクセスできる罠。まぁ、最終的には CPA

    Xango and crawler - odz buffer
  • PPerl - odz buffer

    Perl Hacks読んでたらPPerlなんてのが紹介されてた。 This program turns ordinary perl scripts into long running daemons, making subsequent executions extremely fast. It forks several processes for each script, allowing many proceses to call the script at once. プロセスを常駐させておいてコンパイル時間を省くことで起動時間を短縮しようというものらしい。 以下Plaggerでのテスト。2回目以降は結構早くなっている。 $ time perl plagger real 0m1.368s user 0m0.833s sys 0m0.080s $ time pperl plagger

    PPerl - odz buffer
    yugui
    yugui 2006/05/26
  • 1