タイトル/名前 | 更新者 | 更新日 |
---|---|---|
C言語系/memos/VC++/12, フレームポインタ省略(FPO)と"Oy"オプション | msakamoto-sf | 2011-02-01 17:12:27 |
日記/2011/02/01/Subversion本家のWindows用バイナリ | msakamoto-sf | 2011-02-01 15:27:34 |
日記/2011/02/01/Firefoxのオフラインモード(Work Offline)を抑制 | msakamoto-sf | 2011-02-01 14:33:13 |
技術/Windows/ブート設定 | msakamoto-sf | 2011-01-31 22:05:41 |
技術/Windows/"SendTo"などユーザープロファイル関連フォルダを開くには | msakamoto-sf | 2011-01-29 15:42:08 |
日記/2011/01/29/WindowsSDK v7.0 の "SetEnv.cmd" を手動で実行する | msakamoto-sf | 2011-01-29 14:34:49 |
日記/2011/01/29/VirtualPCのXPModeをVMware7にインポートしてみたが | msakamoto-sf | 2011-01-29 14:24:31 |
日記/2011/01/28/"プログラミング"の指す内容 | msakamoto-sf | 2011-01-28 14:55:03 |
読書メモ/"Practical Common Lisp"(邦訳:「実践Common Lisp」) | msakamoto-sf | 2011-01-28 14:44:11 |
日記/2011/01/25/そういえば「空の境界」劇場版、観終わったんだった。 | msakamoto-sf | 2011-01-26 09:21:37 |
VC++では "/Oy" オプションによりフレームポインタを省略("FPO" : Frame Pointer Omission)する最適化を利用できます。
ちなみに、"FPO"の最後の"O"は省略(Omission)を表します。ですので、「最適化」まで付けると
FPOO : Frame Pointer Omission Optimization
になっちゃいます。かわいいですね。
この最適化なんですが、Windows開発チームはXP(SP2)以降は無効にしているようです。
FPOを有効にすると、PDBファイルのシンボル情報が無いとスタックトレース情報を復元できず、アセンブラレベルでのデバッグに支障が出る恐れがあります。
またマシンスペック向上のおかげで、FPOの有無は殆ど速度に影響を与えないそうです。
"Responder"という逆解析ソフトを使うとFPO有効な関数でもスタック上のデータを解析できるようなので、逆解析を難しくするという効果も低くなります。
以上のような事情で、少なくとも最近のWindows開発においては、FPOによる最適化はあまり人気が無いようです。
参考:
Advanced Windows Debugging, Chapter 2, p74:
This section (and the remainder of the book), ignores frame pointer omission (FPO) optimization, simply because it is not used in Windows XP SP2 and later operating system. Since FPO optimization makes debugging nearly impossible without symbols, the current recommendation is to avoid it completely.
ずっとTortoiseSVNばっかり使ってて、ふと本家SubversionのWindows用バイナリってどうなってるんだろうと思って見てみた。
http://subversion.apache.org/packages.html
一番下にWindows用パッケージのリンクがあり、CollabNetの他にもSlikSVNやWin32SVNなど、ボランティア?でメンテナンスされているWindows用バイナリが見つかる。
TortoiseSVNは一応コマンドラインでも使えるが、殆どがダイアログボックスを表示する対話形式になっている。
バックグラウンドや定時タスク処理など、非対話形式で処理させたいときは、本家のSubversionを使うことになるだろう。
で調べた時のURLメモ集。
最初は「オフラインモード」の事をよくわかってなかったので、「キャッシュをクリア出来れば良いのかな?」と調べてCache-Statusプラグインに到達した。
が、どうやら"File > Work Offline"の事だと自分の勘違いに気づき、調べ直す。
"toolkit.networkmanager.disable"を弄れば、オフライン・オンラインの切り替えを抑制できるっぽいが、これLinux環境オンリー。Windowsじゃ無理ぽ。
で、次の記事にぶつかった。
ここで"StayOnlineMode"というプラグインが言及されている。これが一番アタリっぽい。
m-hiyamaさんと似たような不満を感じている人もいるらしい。
"StayOnlneMode"を試そうと思ったんだが、どうも自分の環境では「自動的にオフラインモードに切り替わる」という現象そのものがまず発生しない。そのため、「オフラインモードへの自動切換えを抑制」する確認がそもそも出来ず、評価できなかった。Cache-Statusの確認では手動でオフラインモードに切り替えたりしてる。
"StayOnlineMode"プラグインはまだまだ発展途上。Firefox自身のOffline/Onlineモード切り替えの変更もあるかもだし、将来は未知数。
以上、メモ。
boot.iniなどOSのブート設定周りのメモ。
設定ファイル:boot.ini
直接boot.iniを編集してもよいが、編集ミスを防ぐため、専用の編集ツールが提供されている。
参考:
別マシンのカーネルデバッガからシリアルポート(COM1)を使って接続できるように設定してみる。
> bootcfg ブート ローダー設定 ------------------- timeout: 30 default: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS ブート エントリ --------------- ブート エントリ ID: 1 フレンドリ名: "Microsoft Windows XP Professional" パス: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS OS ロード オプション: /noexecute=optin /fastdetect
1.既存のエントリをコピー。
> bootcfg /copy /ID 1 /d "Debug Mode with COM1" 成功: ブート エントリ 1 のコピーを作成しました。 > bootcfg ブート ローダー設定 ------------------- timeout: 30 default: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS ブート エントリ --------------- ブート エントリ ID: 1 フレンドリ名: "Microsoft Windows XP Professional" パス: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS OS ロード オプション: /noexecute=optin /fastdetect ブート エントリ ID: 2 フレンドリ名: "Debug Mode with COM1" パス: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS OS ロード オプション: /noexecute=optin /fastdetect
2.デバッグオプションを追加
> bootcfg /debug ON /port COM1 /baud 57600 /ID 2 成功: BOOT.INI 中の OS エントリ "2" のスイッチを変更しました。 C:\work>bootcfg ブート ローダー設定 ------------------- timeout: 30 default: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS ブート エントリ --------------- ブート エントリ ID: 1 フレンドリ名: "Microsoft Windows XP Professional" パス: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS OS ロード オプション: /noexecute=optin /fastdetect ブート エントリ ID: 2 フレンドリ名: "Debug Mode with COM1" パス: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS OS ロード オプション: /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=57600
再起動すると、起動時にブートメニューが表示されるようになる。
"SendTo" : 「ファイル名を指定して実行」 or エクスプローラのアドレス欄で
shell:sendto
で開ける。
他:
参考:
という場合は、コマンドプロンプト(cmd.exe)を
/E:ON /V:ON
オプション付きで起動する必要がある。お好みに応じて"/K"を指定。
スタートメニュー → "Microsoft Windows SDK v7.0" → "CMD Shell" のショートカットを見ると、
/E:ON /V:ON /T:0E /K "C:\Program Files\Microsoft SDKs\..."
のようになってる。
・・・XPのセットアップから始まってしまった。
なんとなーくな印象だけで、VirtualPCで整えた環境がそのままVMware側に引き継げるものと思い込んでいたが、現実は非情だった。
あーもう、せっかくVirtualPC側で調整した環境、またVMware側でやり直しか・・・。
あ、あと、キーボードが英語キーボードで認識されてしまったので、
を参考にJP106に手動で切り替えた。
"Practical Common Lisp"の読書メモでも書いたが、一口に「プログラミング」と言っても本当に範囲が広くなってしまったなぁと思う。
数学パズルを解くための「プログラミング」、
Webアプリを構築するための「プログラミング」、
高負荷に耐えるTCP/IPサーバーを構築するための「プログラミング」、
SQLを駆使する「プログラミング」、
画像処理のための複雑な数式処理を行う「プログラミング」、
DBやOS内部でのデータ処理に使うアルゴリズムを実装するための「プログラミング」、
OSのGUIウィジェットを活用したGUIアプリ構築のための「プログラミング」、
e.t.c...
なので、「プロのプログラマなら○○くらい出来なくちゃ・・・」という語り口が無効になりつつある。
ただ、いずれも根っこは一緒。
「コンピュータとインタラクションしたい」
これは変わらない。
だからこそ、特に初学者・入門者レベルであれば高尚かつ詳細な解説よりは、「これだけ知ってればコンピュータとインタラクションできるヨ」と最低限度のコマンド・関数・マクロ・機能を教え、非実用的でも良いので、短くてすぐ試せるサンプルを沢山提示すること。そちらが重要ではないだろうか。
本当にプログラミングの楽しさを知ることが出来れば、ごくごく基本的な知識だけでも、後は自分で工夫するなり調べるなりして、自分なりの「コンピュータとのインタラクション」を実現するためのプログラミングを始めるだろう。
Lisperは、それを分かっていないように思える。
例によって原著の方を購入してしまったので、そちらの読書メモになります。
「実践Common Lisp」が出る前に買ってしまったのですが、実に3年近く本棚で眠っていた事になります。
LISP本と来ればLISTの解説や理論重視っぽくて、現実世界で活用できる印象が薄い。そんなイメージを良い意味で壊してくれる一冊です。
Common Lispの柔軟かつ強力な言語機能を幅広く、かつ詳細に紹介してくれています。
「実践(Practical)」と冠する通り、マクロ展開であったりLOOP処理であったり、現実のプログラミングで遭遇することの多いトピックを重点的に攻めています。
他のLISP本やScheme本、Web記事を読んでみたけど、イマイチ現実で使える感じがしない。そんな方に、やり直しの一冊としてオススメできると思います。
書籍では"LispBox"なるオリジナルの実行環境一式を公式サイトよりDLして云々とあります。しかし2011年現在、さすがにアップデートが追いつかないのか、www.gigamonkeys.com上にはDLリンクがありません。
http://www.gigamonkeys.com/lispbox/
プロジェクト自体は継続しており、"Lispbox project"へのリンクもありますが、そちらで提供されているのも"test"バージョンのビルドです。
2011年現在、EmacsしかりCommonLisp処理系しかり、いずれも各メジャーOSで安定して利用できますので、各自で揃えちゃいましょう。
Emacs + SLIME:
CL処理系色々:
CLドキュメント:
変化球としてはEclipseプラグインという手もあるようです。
Ubuntu8.10にEmacs, SLIME, SBCLをインストールする記事。「実践CommonLisp」関連の話題も交えています。
自分はWindows7上で Emacs + SLIME + Clozure CL で整えました。インストーラ不要でアーカイブ展開するだけで使えますので、レジストリを汚す心配はありません。
Emacsのカスタマイズファイルを見つけるのに少し手間取りました。
%AppData%\.emacs.d/init.el Windows7 -> C:\Users\(ユーザ名)\AppData\Roaming\.emacs.d
".emacs.d"ディレクトリはEmacs起動時に作成されます。"init.el"は自分で作成します。
SLIMEでClozure CLを使うための設定:
(set-language-environment "utf-8") (add-to-list 'load-path "C:/.../slime-2011-01-24/") ; your SLIME directory (setq inferior-lisp-program "C:/.../ccl-1.6-windowsx86/wx86cl.exe -K utf-8") ; your Lisp system (require 'slime) (setq slime-net-coding-system 'utf-8-unix) (slime-setup '(slime-fancy)) (show-paren-mode) (setq transient-mark-mode t)
以下、ネガティブな評価です。
6章の「忘却録音」が雰囲気が明るくて好みだったな。
ハリウッドとかジブリ的な分かりやすさは無く、叙情的かつ哲学的なかけあい問答・独白が多いので、誰でも気兼ねなく楽しめるタイプでは無いと思います。ただ映像は綺麗ですし、なにより両儀式というヒロインへの愛が込められているのは確かです。「時々ポスターで見かけた、あの和服を着てるのに何故かジャンパーを羽織ってナイフを構えているアニメキャラは何者?」という疑問を解消したい方はぜひ観てみてください。