Public Notes

  • ゲームプログラマのためのC++

    ちょっと前に話題になっていた本を読み終えました。
    まず、中盤くらいから読み終わったら誰かにあげちゃいたくなっている自分がいました。なんといいますか、すごいすごい言われてた敵が蓋を開けてみたら初歩的な対策をしたらすぐにやられた感じです。ちょっとがっかりしました。
    なので、この本はC++入門書の次くらいに読む本でした。間違っても、(わたしみたいに)「C++の【闇】もっと教えて下さい\(^o^)/」なノリで読んでもそんなに楽しくないです。誰か欲しい人いたら喜んであげちゃいます。
    少し内容に突っ込むと、識別子とかは、クラス名や関数名はキャメルケースで、当然boostさんもあんまり出て来ません。STLコンテナの性質は一通り説明があって親切でした。わたしの場合はネットにあるようなリファレンスでも十分な人にはあんまりいらないですけど。STLのアルゴリズムにも一通り説明がありました。
    デザインパターンは、よくあるあんまりよくないけど説明に適してそうな実装が親切に書いてあります。本一冊できるような分野(?)なので、ホントに理解したいならそうゆう本を一冊読んだほうがいい気はしました。シングルトンは昔少し調べたくらいなので、いくつかツッコメました。本の内容にツッコンでどうするのかはさておき、関数内でstaticに定義するタイプとか、初期化のタイミングとか。まあ、使えればいいものなので、どうでもいいことです。
    それから、スマートポインタはもっと口が酸っぱくなる・耳にたこができるくらい取り上げて欲しかった思いがあります。new/deleteなんて普通は書かないはずです。
    っと、まあそんな感じで読んでました。他にも色々あった気がしますが、ただのいいがかりレベルな気がするのでこの辺で。
  • ゆるゆりとFate/Zero

    ニコニコ一斉放送があったので、タイムシフトで見てます。
    ゆるゆりは、ガチレズが好きなわたしにはとても物足りなかったです。ただ、\アッカリ~ン/には同情します。あかり、不憫な子。やっぱり、ガチレズ成分は、ふぐり屋さんで補給するべきですね。
    Fate/Zeroは、Fate/Stay  Nightを全クリしたくなりました。Fate/Zeroの原作は読んであるんですけど、やっぱりその原作を読まないとあんまり楽しめなくなっているようです。PS2の廉価版は二千円前後なので、落ち着いたら買ってエミュレータでやってみようかと思います。好きなヒロインは、間桐桜なので。
  • Bazaarでござーる

    LaunchpadがBazaar限定と聞いて、git-bzrやらbzr-gitを試しているんですが、どうもうまくいきません。git  submoduleを使ってるのがよくなかったり、Recipeの書き方がよくわからなかったり...。それから、パッケージの依存関係を定義するのとかも、けっこう面倒です。
    ってなわけで、bzrは使わないほうが無難かにゃーというのが今のところのスタンスになっています。debパッケージをアップロードすれば、aptから使えるみたいなので、debパッケージをつくる方法さえわかればいいみたいです。因みに、LaunchpadではRecipeでrunコマンドが使えないので、旨味もありません。それから、依存パッケージもnmで'U'が付いているシンボルを使うと大体のやつがわかりそうでした。
    で、その後で、CMakeに含まれるパッケージングソフトであるCPackがけっこうイケてる子と知って、これを使えば、パッケージ依存関係さえ緩くやれば別にいいかなと思うわけです。install関数で指定したものはこれで自動的に、debパッケージ・Windowsインストーラ・Macインストーラ・RPMパッケージを作れます。全く幸せになれますね。
  • cron-apt

    関わっているプロジェクトのサーバ管理人さんがcron-aptを入れていると聞いてわたしも試してみました。
    -  http://www.kotodama.jp/blog/index.php/2008/03/18/ubuntu-apt-cron-apt
    を参考にしてます。
    とりあえず、dist-upgradeを自動で、一時間おきにやってもらっています。IRC通知がないか調べてみたんですが、メール通知はあるんですがIRCはないみたいです。
  • Platypusのバグというか不具合というか

    前の記事関連なんですが、Platypusがうまく動かなくてググったら、
    -  http://trac.macports.org/ticket/32974
    を見つけてorz状態になりました。普通、こうゆうパスは実行ファイルに埋め込むものじゃないと思っていたんですが、そうでもないようです。バイナリ書き換えたり、Portfileをごにょごにょしようかと少し悩んだのですがシンボリックリンクを使えば解消しそうだったので試したらうまくいきました。
    なので、Platypusを使う前に
    "ln  -s  /opt/local/share/platypus  /usr/local/share"
    を実行すればこの不具合はなんとかなります。こんな使い方もあるんですね。
  • Github Growlerを動かしてみた。

    Growlを買ったので、GitHubの通知を受信したいと思いたち
    -  https://github.com/DAddYE/githubwatcher
    -  https://github.com/ctshryock/GithubNotifier
    -  https://github.com/miyagawa/github-growler
    を試してみたんですが、「コマンドラインは嫌」「自分のアクティビティなんてどうでもいい」と行った理由でgithub-growlerを使うことになったんですが、なぜかLionでは動かなかったのでちょっと検証してました。わたしの理解の範囲でわかった原因は端的に言ってしまうと、"use  Cocoa::EventLoop;"が悪さをしてるみたいです。APIが変わったとかライブラリの変更か何かでCocoaのバックエンドは使えなくなっているといったところでしょうか?  で、そのコードをコメントアウトしたら動いたのでコミット、Pull  Requestしてみました。
    -  https://github.com/miyagawa/github-growler/pull/10
    それと、ビルドしたバイナリもあげておきました。
    -  https://github.com/take-cheeze/github-growler/downloads
    因みに以下は、ビルドするときにした処理です。「Perl(><;  )  わかんないんです!」っていう身にはこうゆうのはやっぱりよくわからないですね!
    "
    cpan  -i  .
    perl  Makefile.PL
    make

    sudo  port  install  platypus  perl
    ln  -s  /opt/local/share/platypus  /usr/local/share

    curl  -kL  http://install.perlbrew.pl  |  bash
    ~/perl5/perlbrew/bin/perlbrew  install-cpanm
    PATH=$PATH:~/perl5/perlbrew/bin  ./builder
    "
  • MacPortsの設定とか

    MacPortsで"port  uninstall"を使うとたまに、アップグレードされたためにいくつかの違うバージョンが入っていて"-f"を付けても消せなくて、インストールされているバージョンを全部消さないといけないんですが、そんな時は、
    "sudo  port  uninstall  inactive"
    を使うといいみたいです。(  http://apple.stackexchange.com/questions/10149/how-to-remove-unused-macports-packages  )  要は、activeでない(=使っていない)パッケージを全部消してくれるコマンドです。これをたまに実行しておけばディスクの節約にもなりますし、一々使ってないバージョンを指定して消す必要もなくなります。

    それから、MacPortsのコンパイルを速くするためにいくつか新しいオプションを使ってみました。
    https://trac.macports.org/wiki/howto/ccache
    http://d.hatena.ne.jp/hazy-moon/20090217/1234840827
    基本はccacheとコンパイルオプション"-pipe"です。
    前者は、繰り返しコンパイルしている時に役に立ちます。/opt/local/etc/macports/macports.confにある"configureccache"をコメントアウトして"yes"すると使えるようになります。必要ならば、ccache_dirやccache_sizeを適宜変更するといいと思います。
    後者は、メモリが豊富(10GBとか)にある環境で有効なオプションだと思います。コンパイラはいくつかフェーズがあるんですが、そのたびに一時ファイル(テンポラリファイル)が作るんですがそれをファイルを介さずに全部メモリ上でやるよう要求するのが"-pipe"オプションです。ccacheと同じようにmacports.confにある"configurepipe"をコメントアウトして"yes"にすると使えます。おそらくメモリが1GBとかだと少しパワー不足になるでしょう。512MBの仮想マシンで試してみたんですが、想像したよりも性能は出ませんでした。
    それと、distccもあるみたいですが、これはネットワークがボトルネックになったり設定がめんどうだったりあんまりおすすめできません。Googleでこの問題点を克服したソフトがあるそうで、早くインフラそのものが公開されないかにゃーマダァ?(・∀・  )っ/凵⌒☆チンチンってな風に待っています。
    言い忘れましたけどbuildmakejobsも少し盛ってみるといいかもしれません。あんまりいいCPUを使っていないのでよくわかりませんけど。
  • Dropboxのキャッシュをクリアする新しい方法

    Macだったら
    "rm  ~/.dropbox.cache/*"
    と打てばいいみたいです。  http://dropboxwiki.com/Forums_FAQ/Clear_Dropbox_Cache  には
    "rm  ~/.dropbox/cache/*"
    と書いてありますが自分の環境で試してみたところ、~/.dropbox/cacheには何もなかったのでそれっぽいディレクトリ名が補完候補にあったのでビンゴでした。それから、キャッシュを消す前にはDropboxを停止するのを忘れないようにしたいものだと思いました。
  • screenでスクロールとか。

    目的のページが見つかって、screenのシェルでマウスホイールでスクロールできるようになりました。
    ↓のリンクから
    http://superuser.com/questions/126606/how-to-get-mac-os-x-terminal-app-and-screen-vim-scrolling-to-play-nice
    "
    #  scroll
    termcapinfo  xterm*  ti@:te@
    "
    を~/.screenrcに追加すれば使えました。
  • グラハム・ベル空白の12日間の謎

    ブクログURL
    -  http://booklog.jp/asin/4822284395

    図書館で見つけて面白そうだったので読み終わりました。内容はけっこうしっかりしていたので、買ってもいいかなと思います。
    第一印象は、注意深く書かれているみたいなので、数学の「よって証明終了」的な読了感でした。世の中、いくらでもこんなのがあるので今更驚かないというか。
    ネタバレな内容を言ってしまうと、ベルは電話のアイデアは思いついてはいたけど、それの実現には程遠く、とある理由でイライシャ・グレイの発明を盗むことになってしまったといったところです。で、その理由なんですがベルのお嫁さんのパパ(弁護士)が当時電信を牛耳っていた企業の汚職が目にあまるものだったので、それに対抗するためにだとか。実際に可変抵抗という電話に必要だった部分をつくったイライシャ・グレイは、たまたま電信を牛耳っていた企業側に立っていたというのは、きっと不幸な偶然だったのでしょう。
    善悪の裁定はともかく弁護士の政治闘争は勝ったのは、かなり歴史を変えたのでそれはそれで意義のあったことだと思います。ベル研究所ではUnixが生まれましたし、敵対勢力は今ではかなり弱体化していました。
    ただ、この本で書かれているイライシャ・グレイは決して申請に遅れていない事実はもっと広がるべきです。グラハム・ベル自身もそれを望んでいる手記もありますし、間違った歴史は正されなければなりません。グラハム・ベルは電話を取り巻く人の予想を裏切り広めた立役者として、イライシャ・グレイは電話を発明した立役者として、それぞれ正しく発信されることを望みます。

    ここからちょっと傍道にそれた内容です。
    この本を読んで思ったんですが、科学史をちゃんとやってみるのも悪くないなと思いました。自分の探求力に限界を感じてしまうと、未練をどうにかしたくなってるだけだと自覚はしてるんですが、そんな一本道でできる自信はないので、別の道でもがんばってみます。
    ただ、アメリカの科学雑誌の編集者(Editor)は自身も超一流っていう話を思い出すと、「ひーーーー」と後退ってしまいます。orz
Copyright © Textt / GreenSpace