NaN === NaN は false NaN、つまりは Not a Number 同士の同値比較が false になるのは、よく JavaScript とかで罠だと言われていますが、罠でもなんでもないです。 false が返るという仕様です。仕様の経緯を追うとすぐに『 IEEE754 という浮動小数点の標準規格で決められているから』、という理由がヒットします。 では IEEE754 ではなんで NaN == NaN を false にしようという話になったのか、というのを調べてみました。 今回はそういう歴史の話です。 IEEE754 現在のプログラミング言語の処理系の多くが採用している浮動小数点の標準規格です。 この標準規格は以下のことを定義している。 - 基本形式: 二進および十進の浮動小数点数データの集合。有限な数(符号付ゼロと非正規化数を含む)、無限、特殊な「数ではない」値(NaN
[調査中] 事象 Confirm Hostsの画面にて、全ホストのstatusが問題なくSuccessとなった後、 "Please wait while the hosts are being checked for potential problems..." の状態から先に進まなくなる。 ambari serverのログには以下のようなメッセージ出力があるが、これの意味するところがわからず調査中。 $ less /var/log/ambari-server/ambari-server.log WARN [ambari-action-scheduler] ExecutionCommandWrapper:225 - Unable to lookup the cluster by ID; assuming that there is no cluster and therefore no c
業の櫓編では今回、謎解きというか種明かしのパートで語られなかった部分がたくさんあります。その時、嘘喰いや捨隈が何を考えどういう駆け引きがあったのかなど、詳しく紐解いていこうと思います。 @ 1ターンが終了し、上であれこれあったあと2ターンをやると決まりました。ここまでは問題ないと思います。二人とも相手の思惟をわずかにも感じ取れず、守りで終わった1ターン目。それに対してブラフで仕掛けた捨隈。それをブラフと見破った嘘喰い。これは24巻での種明かし通りです。ではそのあとどういう思考が展開されたのでしょう。 2ターン開始前の嘘喰いの思考 @ 嘘喰いはまずマルコにミスナンバーを確認しますが、マルコは覚えていませんでした。しかし、「8」ではないかと直感します。これはあてずっぽうではなく、ある程度推理が可能です(あくまである程度)。 考え方の肝は二点。 そのナンバーがブラフとして成立しているものであるこ
さて、しばらく前の話になりますが、やや若い世代の人と集中的に開発を行う機会がありまして。「epoll使っていいですか、selectってあまり使った事ないので」と言われて愕然。当たり前と言えば当たり前なんだけど、90年代に身に着けたUNIXの知識もいまや年代物。少しはアップデートしないとなぁ・・・という事で本を読んで勉強したので、そのメモ。もしろん昔からあるけど知らなかったって事も沢山ありました。 読んだのは「LINUXシステムプログラミング」というO'REILLY本。400ページ弱という(この手の本にしては)薄い本なのだけど、興味深い話題が多く楽しんで読めました。以下、この本によってアップデートされた私の知識の項目一覧と概説。これを見て「おぉ」と思った人は仲間なので買って損はないと思う。
行ってきた & 話してきた。皆様お疲れさまでした & ありがとうございました。 内容は↓ http://int.main.jp/txt/gcc-mtune.html 今回一番反省すべき点は、直前まで資料作ってなくて、他の人の話聞いてなかったことか… 一応言い訳しておくと、 -mtuneの話をしようと決めたけど、どういう流れにしたらいいか思い付かん とりあえず何かベンチマーク取って、1. 最終結果 2. GCCの実装 3. GCCの実装と結果の照合 みたいな流れにするか Parsecで取った → 結果に違いが見られない!! しゃーないからGCC vs LLVMにするか 違い出た!でもLLVMに-O3相当の変換が入ってないのが理由とかでx86関係無い! -O2 と LLVMで比較するか -O2だと -mtune で違い出てるのでは? (これが今日の朝あたり) やっぱり-mtuneにしよう これ
ベンチマークのソースコードは、 http://bit.ly/pNNmGY で公開されているようです。 疑問に思ったポイントは、javascriptの文字列連結が速すぎることですね。。 buf+=s+s+s 0.066 私の環境で測定してみたところ、0.022でした。 比較して、C++で0.450、Java7で0.350です。 該当のコード
以前から、mwaitは簡単に使えるようになったら嬉しいのではないか?と、思っていたのだが、社内で、「実際mwaitってどうよ?」とかメールが流れてたので、よい機会だからなんか試してみた。 http://int.main.jp/files/devmwait.tar.gz /dev/mwaitをつくるドライバと、それを実験するユーザプログラムが入っていて、なんか時間とかを計測できます。 色々計測した感想としては、まあ、無理して使うほどのものでもないかなぁ…というところだった。 monitor, mwaitとは何か x86のマルチスレッドプログラムで、効率よくメモリポーリングを実現する仕組み。 複数のスレッドが通信しあってるとして、別のスレッドがフラグを立てるのを待つ、とかするのは、たまによくあるパターンである。 普通にメモリポーリングを書くと、 volatile int *ptr; while
はじめに 先日、社内で初めてプログラミングコンテストを開催しました。 お題はかの有名なFizzBuzz問題です。 全員楽勝で解答するだろうと思いきや・・・結果はいかに!? ちょっと長いエントリですが、このコンテストの顛末をお楽しみください。 開催の動機と経緯 メンバーの向上心を刺激するために、なにか面白くて技術的に意味のあるイベントを開きたかった。 以前からFizzBuzz問題を全員で解いてみたかった。 FizzBuzz問題はプログラマなら解けて当たり前、というようなWeb記事をよく見かけていた。 これぐらいなら誰でも解けるだろうと自分も思っていたが、実際にやってみないとわからない。 そこで社内プログラミングコンテストを開き、みんなでFizzBuzz問題を解いてみたいと思った。 マネージャーに話を持ちかけたところ、すぐに賛同してくれた。 FizzBuzz問題以外の追加問題も作成したが、第1
x86では命令スケジューリングしない、という方法が結構有効である。 レジスタあんまり無いのでそもそもできない 整数演算がレイテンシ1とかなのでスケジューリング必要ない OoOなのでスケジューリング必要ない Core2では恐怖のROB read port stallsがあるのでむしろスケジューリングすると遅くなる なのだが、Atomで浮動小数演算すると、この前提はすべて崩れる。 ポインタとは別にXMMレジスタが8個使えるのでレジスタは結構ある 浮動小数演算はレイテンシある インオーダー Core2関係ない なので、Atomで浮動小数演算するときはスケジューリングしたい。ただ、「Atomで浮動小数演算性能が欲しい」ってどんな前提条件だよ、という感じであるので、まあ、ほぼ実用上は「x86では命令スケジューリングしない」で、大丈夫だといえる。(あとx86でスケジューリングが必要なほど性能求められた
このエントリは Java Advent Calendar -ja 2010 の一環です。 さて、何を書こうかいろいろ悩んでいたのですが、やっぱり櫻庭といえば Java SE の新しめのところというイメージがあると思うので、新しいところを取りあげようと思います。 で、取りあげるのが Project Coin です。 Project Coin は Java 言語仕様の小さな変更を行なうためのプロジェクトです。昔の言い方であれば Ease of Development に相当して、もっと簡単に書けるようにすることが目的です。 この Project Coin は来年リリース予定の Java SE 7 で導入されます。ところが、Project Coin のほとんど機能はすでに OpenJDK に実装済みです。 ということで、すでに使える Project Coin を使ってみてみましょう。ここでは J
前回の投稿からだいぶ空いてしまいましたが、読んでみて特に面白かったBlitの章についてコメントしてみます。 Blit - 多重化されたグラフィクス端末 Rob Pikeによる、X以前の世界でもグラフィクス端末のお話。UNIX 7th Edition〜8th Editionの頃の話のようです。何と言っても面白いのが、グラフィクス端末側にもプログラムをロードして実行できる、という考え方。ご存知のようにXなんかの世界では、ユーザプログラムはXクライアントとして動き、Xサーバへは描画命令の単位で依頼を出します。これって、今時のアプリケーションによっては、通信の多い切り口でレイヤーを区切っちゃってるんですよね。VNCやRDPなんかのリモートデスクトップともなるとなおさら。更新のあった描画区画単位でBitmap情報をやり取りするので、通信はすごく多い。 一方で、ウェブの世界を考えてみると、実はもう少し
HDDクラッシュで涙を流しておくべき。 僕は、HDDのハードウェア的なクラッシュで涙したことがないので、RAIDとかいうと、ストレージ屋のための仕組みで、ユーザにメリットは無いという派である。 (自分で rm -rf ~ して涙したことはある) まあ、死んだら困る用途では、なんらかの仕組みが必要というのは言葉では理解できるんだが、あまり信用はしてない。 必要だという人がたくさんいるからには、実際、どっかで必要なはずで、僕も多分、必要な場面に出会うときが来ると思う。で、僕が身をもってRAIDの必要性を認識するときには多分、色んな人に迷惑をかけたあとなんだろうなーという気がしている。事前に謝っておきます。すいませんみなさん。 というわけで、将来コンピュータ関連の仕事に就こうと考えている人は、人に迷惑をかける前に、HDDクラッシュで涙を流しておくべきではないかと思う。
大学4年生の水谷翔さんから寄稿していただきました。「自称ソーシャルメディアマーケターによる誤った見解が蔓延している」と、なかなか挑発的な文章から始まっています。僕はこうした挑発的な若者が大好きなんで、取り上げさせていただきました。w 大学4年生 水谷翔 ソーシャルとソーシャルでないものをはっきりさせる 今の日本では、ソーシャルメディア、SNSなどのソーシャル関係の定義がめちゃめちゃで、混乱しています。その混乱の元となっているのが、「自称ソーシャルメディアマーケタ―」の方々による誤ったソーシャルへの見解が蔓延していることにあります。 彼らは哀しいことに、CGMやUGCなどの「人が集まる場所」と、ソーシャルメディアの区別がついていないのです。そこで、ここではソーシャルの定義をはっきりとさせたいと思います。 SNSの定義 まずはSNSの定義から入りましょう。ここがわかれば、ソーシャル、ソーシャル
テキスト処理を中心にやっていましたが、画像処理に興味が出てきて、さっそくアプリを作りました。もともと下の記事のあたりでユーザーとして画像処理に興味を持って、当然の流れながら、自分でもつくってみようと。 Color Splash + TiltShift Generator + Instagramの写真加工が面白い。 - このブログは証明できない。 で、何かを間違えて、普通の画像処理ではなく、カメラの映像をリアルタイムに加工しはじめました。そうすると、パフォーマンスがかなりシビアなんですね。 iPhoneでカメラの映像をリアルタイム画像処理してみる。 - このブログは証明できない。 全ピクセルを操作しなければなりませんから、ループをたくさん回す必要があります。なんとか高速化できないかと考えてみたところ、あっさり高速化に成功しました。私が気づくぐらいですから、初歩の初歩なんだと思います。 追記:
「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧
まっすぐに建っているはずのものが歪んでいたり、固定概念を覆すような形をしていたり、まるで悪夢を見ているような気分になってくる、世界の錯視的建造物なんだ。建物はシャキーンとまっすぐって固定概念があるから、自分の目の方を疑ってしまうよね。 【Buildings That Seemingly Could Collapse In A Second】 ■1. ■2. ■3. ■4. ■5. ■6. コメントによると、この家は当時行われていたエルヴィン・ヴルム氏という芸術家の展示の一つとして美術館に一時的に設置されたもので、現在は撤去されているそうだ。 ■7. ■8. ■9. ■10. ■11. ■12. ■13. ■14. ■15. ■16.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く