/ 最近 .rdf 追記 設定 本棚

脳log[2009-10-25~]



2009年10月25日 (日) [C++] 判断が付かないこと。1.値を返す関数の戻り値の型に constを付けること。呼び出し側に不当な制約を押しつけることになる(コピーで受け取った値を変更するのは自由であるべきだ)から付けてはいけない、という指摘がほしい。2.ポインタを引数にとる関数で、そのポインタを constにすること。これは関数を呼び出す側には関係のないことで、関数の実装の中でだけ有効な約束みたいなものだ。ポインタ型の引数が constかどうかでオーバーロードが変わってしまうんだろうか。同一視してほしい。それなら宣言では T* と書き、定義で T*const と書くようにする。……。VCで調べた。1.関数の戻り値の型が const intでも int型の変数で受け取れる。constは飾り。2.宣言と定義でポインタの const性が異なっていてもなんら問題はない。それだけの違いでオーバーロードはできないということもわかる。これは VCについてだけで、仕様はわからないけどすっきりした。この二つは同根で、値で受け取った仮引数や関数の戻り値の constは完全に受け取った側のオプションであり、プロトタイプと定義でのそれらの違いも無視されるらしい。


2009年10月24日 (土) スライドをまとめた PDFは横に連続して並べて、横スクロールしながら読みたい。単一ページを縦に並べても、見開きを縦に並べても、しっくり画面に収まらないので。


2009年10月23日 (金) SourceForge.netの Tracker。あれは何だ(怒) 日本語だと 25文字で強制改行。しかも折り返しではなく <br />。何もしない方がずっとずっと良い。エンコーディングが UTF-8なのと、英語だと 75文字(3倍の長さ)で改行だから、バイト数でカウントしてんだろう。見た目は CSSでやりな!バイト数と文字数と表示幅を短絡するんじゃない! 単語の区切りを考慮して改行を挿入しているのがまた小賢しくて努力の方向があさってで憐れみを誘う。メールやコンソール出力じゃなくて HTMLを生成してるんでしょう?なにやってんの? (なんでこんなに腹を立ててんだろう、我ながら。勝手に文章を悪い方向に整形されたから?) Trackerのさらなるちょんぼ。UTF-8のバイト列を ASCII配列扱いでちょん切ったんだろう。<br />を挿入された付近の1文字がなくなってたりする。


2009年10月22日 (木) [Firefox] 言語ごとにフォントや文字サイズが変更できるとは知らなかった。日本語のフォントは最低12、通常15だけど、西欧は最低15、通常18で、それでもまだちょっと小さいかな、というレベル。なんでこんなにスケールが違うんだ?


2009年10月16日 (金) [SakuraEditor]「折り返ししている物理行末を、キーボードで左から右へ矩形選択しようとすると、次の物理行にカーソルが移動して意図した通りに選択できません」折り返されている行末へカーソルがたどり着いた瞬間、次の行の頭に移動していて右端の一列が選択できない。たしかに問題。折り返し込みの矩形選択とか、コピペしたときにどうなるのが正しいのか想像できないんだけど……。矩形選択は図形的な操作だから、折り返しがあろうが改行があろうが、右へ範囲を広げている最中にキャレットが左へ戻ってしまうというのが意外な感じはする。

最終更新: 2009-10-17T03:43+0900

[javascript] 空文字列にマッチした後の lastIndexの値は IEの挙動が妥当。

  var re = /\b/g;
  var match = re.exec( "012" );
  alert( match.index ); //=> 0
  alert( re.lastIndex ); //=> 0(ECMAScript仕様), 1(IE)

仕様では 何度 re.execを実行しても re.lastIndexが 0から増加しないから、re.execをループで実行するときにはマッチ結果が幅0のときに限り特別に lastIndexをインクリメントする処理が必要になる。

 lastIndexが 1ではいけないの?

マッチの範囲は "0"の直前から "0"の直前までで、lastIndexは範囲の末尾の次の位置を指すもの。マッチの幅は0。

index = 0; lastIndex = 1; であればマッチ範囲は "0"(幅1)ということになってしまい正しくない。

index = 0; lastIndex = 0; であればマッチの幅が 0だということも、その位置が "0"の手前だということも表現できていて正しい気がする。

 でも、lastIndexってパターンオブジェクトのプロパティ……

indexはマッチ結果のプロパティだけど、lastIndexはパターンオブジェクトのプロパティなのだ。match.index...re.lastIndexの範囲が正しいとか正しくないとかは考慮に値しないのではないか。

検索結果に影響があるかといえば、スクリプトエンジンが行ってくれないことを、スクリプトを書く人間が手作業で行っているだけなのだから影響はないだろう。

IEは至極まっとうな実装をしたと思う。


2009年10月15日 (木) [790FX-GD70] BIOS v1.6


2009年10月10日 (土) なんだvvvこれvvvv > THE iDOLM@STER MAD World Service


2009年10月09日 (金) [C++] プライベートメンバ関数をいっぱい宣言する代わりに friend class Hoge; とだけ書いておく、下請け関数ならぬ下請けクラス、メソッド。(ありかな?)


2009年10月08日 (木) sourceforge.netでうざいポップアップが出る。httpsのページで http://ad.doubleclick.net/...を読み込んでいるからだ。slashdot.jpの ads.osdn.jpもそうだったけど、広告がサイトの Readabilityを落としてはいけない。対象が 2hostになったので Adblock Plusを入れた。


2009年10月07日 (水) [C++] wchar_tって使いにくい。2バイトだったり 4バイトだったり。ワイド文字列リテラルのエンコーディング、とそこから決まる wchar_tのサイズ、を決められたらどうか? ……。char16_t、char32_t、u、u' '、U、U' ' というのがそれだ。早く使いたい。ところで、charより ucharの方がわかりやすくないか。char16…や char32…だとビット幅だけを規定してるみたいじゃない。……。実際にそうなんじゃないだろうか。Wikipedia(ja)には「char16_tとchar32_tであり、それぞれUTF-16とUTF-32を内部表現とする。」こうあるけど、エンコーディングを規定するのは u、U接頭辞だけ、とか。C++コンパイラにエンコーディングのバリデーションとかやってほしい人がいるとは思えないし、やらなければ内部表現云々はまるで無意味だし。……。UTF-16、UTF-32はエンコーディングではない気がしてきた(無知)。ならば Wikipedia(ja)の記述は、これらの符号化文字集合を単独で表現できる大きさ持った型だ、という意味だろうか。<< そろそろ調べどき。……。どちらも符号化方式だった。では C++0xの方を……。エンコーディングを持ってるのは文字列リテラルだけに思える。u8という接頭辞で UTF-8文字列を char配列に納められることもわかった。char16_tと char32_tについては「UTF-16とUTF-32を内部表現とする」というのは間違いで、「UTF-16、UTF-32の符号単位を格納するよう設計されている」が正しそう。「符号単位」という言葉を知らなかったのがうまく説明できなかった原因。「符号位置」(コードポイントの訳語だと思う)とは違う。


2009年10月02日 (金) [Vista] ショートカットは、そのターゲットがごみ箱に入っていることを認識して、復元するかどうか聞いてくる。気が利いてるね。


2009年09月28日 (月) 自動引き落としには承認というプロセスがない。財布のひもを他人に預ける行為だ。クレジットカードもいつまで続くんだ。赤信号みんなで渡れば怖くない、だろう、あれ。もぐらたたきにかまけてないで 21世紀でのあるべき姿を見せよ。


2009年09月27日 (日) どうやってローカル svkリポジトリの、特定のコミットをつまみ食いして pushできるかと思案中。ことが自動で進むのは好きじゃない。>svn merge -c M,N,P,... SVKURL >svn commit でどうだろう。svn mergeは必ずワーキングコピーに対する操作だというのが安心だ。