2008年6月アーカイブ
floatからintへ変換すると、小数点以下が丸められます。このとき小数点以下の数字をどう扱うかについてはいくつか考え方がありますが、C++の場合は単純に切り捨てられます。
切り捨てというのは、言い方を変えると「0に向かって丸める」とも言います。10進表記で小数点以下が無かったことになります。一般的に小数点以下切り捨てと言ったら、この方法を指します。
この変換をグラフにしてみると、次のようになります。
この図からも分かるように、正と負の値で丸められる向きが逆になり、値が0となる範囲だけが他よりも広くなっています。
この性質は、座標のような値を扱うときには注意しないといけません。例えばマウスカーソルの座標をパース変換してゲーム画面内の整数グリッド位置(チェス盤のマス目等)を計算する場合に、0の座標値を持つグリッドの幅が2倍になり、正と負の座標値で1マスずれることになります。
一方、70~80年代に流行していたBASIC(主にMicrosoft製)では、浮動小数点数から整数への変換は床関数が使われていました。
床関数は、その数以下で最大の整数に変換されます。負の無限大に向かって丸めるとも言います。この方法では、正の値は切り捨てられ、負の値は切り上げられます。
床関数のグラフは次のようになります。
先ほどの切り捨てとは違い、0の周囲でも同じ規則でグラフが変化しています。
座標のような値の場合は、切り捨てよりも床関数の方が合っています。床関数ではfloatの値に+1したら変換後のintの値も必ず+1されますが、切り捨てではfloatの値が0を跨ぐときだけintの値が変化しません。
逆にオフセットのような値は、床関数よりも切り捨ての方が合っています。
当サイトでも利用している無料ウェブサービスXREAの広告サーバがハッキングされ、2008年6月8日から17日までの間、自動挿入される広告にトロイの木馬が仕掛けられていたようです。
参考リンク:Adobe Flash Playerの脆弱性および XREA広告サーバハッキング問題 まとめ
これはFlash Playerの脆弱性を利用した攻撃で、閲覧しただけでウイルスに感染してしまいます。4月9日にリリースされたFlash Player 9.0.124.0以降ならば大丈夫なようですが、それ以前のバージョンを使用している場合は、更新と感染の確認をしてください。
googleで「site:xrea.com」で検索すると約400万件のページがヒットしますが、たった1台の広告サーバをハッキングするだけで、これだけの数のページが影響を受けるというのは恐ろしいですね。(400万件全てが広告が表示されるページではありませんが)
ブログでは1つのページに複数のコンテンツが含まれるために、検索したいキーワードと関係ないサイトがヒットすることがあります。
例えば「遺伝子組み換えトウモロコシ」と「吉野家の牛丼」について別の記事として書いた場合でも、それらが同じページに並んでいると「遺伝子組み換え牛丼」で検索した際にもヒットしてしまいます。
以前からこの点が気になっていたので、アーカイブページのように複数の記事が並んでいるページでは<meta>タグでNOINDEXを指定するようにしました。(ただしトップページだけは例外)
検索して開いてみたらフィードだったということも多いので、robots.txtでatom.xmlも検索から除外しました。

