タグ

2011年9月1日のブックマーク (19件)

  • スティーブ・ジョブズ失敗集

    アップル2度の任期で素晴らしい製品を世に出した強運ジョブズにも失敗はあった。No one is perfect。 スティーブ・ジョブズ在任中に出た、煮ても焼いてもえないアップルのワースト作品を一挙ご紹介! Lisa トップバッターは言わずと知れた「Apple Lisa」。ジョブズのお嬢さんの名を冠し、1983年に「世界初のGUI搭載商用コンピュータ」として売りだされたが...なんせ値段が1万ドルと馬鹿高い上、デカく、見られたもんじゃないデザインで、買う人はほとんどいなかった。1年後もっと安いMacintoshが発売となってたちまち消えたアップル幻の作品。 iMac USB Mouse 1998年iMacと一緒に発売。ギークの怒りに火をつけることにかけてはComic SansフォントとClippy(クリッパー君)に負けない。ボタンは1個しかなく(アップル入力端末は全部そうだが)、しかも丸い

    スティーブ・ジョブズ失敗集
    agw
    agw 2011/09/01
  • 関数オブジェクト(前編)

    (このコンテンツはメールマガジンの STL & iostream 入門に手を加えたものです。「 STL と iostream が使えるかのチェック」等はメールマガジンの方のページをご覧ください) 前回の最後で「 Alg_printf() なんて std::fill() とほとんど変わらない」と言いました。実際、 std::fill() と Alg_printf() の違いは、代入か printf() か、たった1行の違いです。この違いだけのためにアルゴリズムを作るのは面倒とも言えるでしょう。 STL はそんな面倒なことさせません! その辺のことも、もちろん考えられているのです。こういった問題のために、 STL には「関数オブジェクト」という仕組みが用意されています。これについて見ていきましょう。 関数オブジェクトは「クラステンプレート」の一種です。当は自分で作るものですが、少しだけ、 S

  • 関数オブジェクト(後編)

    (このコンテンツはメールマガジンの STL & iostream 入門に手を加えたものです。「 STL と iostream が使えるかのチェック」等はメールマガジンの方のページをご覧ください) 関数オブジェクトが役立つのは、アルゴリズムを「クラスの配列」に使用する場合です。既存のクラスを使用する場合、アルゴリズムが使用する演算子を持っていないことがほとんどです。例えば次のようなクラス。 class CNoOperator { public: int m_i; }; このクラスは int 型のメンバ変数を持っていますが、この変数に = などで直接アクセスすることはできません。ピリオド( . )を使ってメンバとしてアクセスする必要があります。なので、このクラスの配列は == 演算子を使用する std::count() には使用できません。 こういう場合には関数オブジェクトが有効です。たとえば

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • ロベールのC++教室 - 第38章 クラステンプレート2 -

    今回は前回のソースを見て、どこがどうなっているのかを解説したいと思います。とは言っても、どうなっているかほとんど予想が付いている人もいるかもしれませんが。 それでは、今回の要点です。 template はクラス宣言の前と各関数の実装の前の全てに付ける。 クラステンプレートは明示的にテンプレート引数を指定して使う。 メンバ関数の実装時にもクラス名にテンプレート引数を指定する。 引数にとる場合でもテンプレート引数を指定する。 では、いってみましょう。 今やることの確認です。CIntArray は int 型の配列しか使えなかったので、これをどの型の配列でも作れるようにしたいのでした。これにはクラステンプレートが利用できます。 クラステンプレートはクラスのテンプレートです。一部の型を自由に決めることができるわけです。 関数テンプレートとクラステンプレートは同じ「テンプレート」なので、そう文法が違

    agw
    agw 2011/09/01
    クラステンプレートおよび特殊化について。
  • ストリームクラス -- 階層図 - C++ Labyrinth

    ストリームクラス -- 階層図 ストリームクラスに対する自分の理解がいまいちなので、整理するために階層図を作ってみた。 元ネタは、『C++ 標準ライブラリ チュートリアル&リファレンス』 (アスキー) である。 とりあえずは骨格のみ。メソッドなどについては、おいおい肉付けしていく予定。 まずは、ストリームクラスの階層図。 太字にした basic_xxx は、 後ろに <> が付いていることからも分かるようにテンプレートクラスである。 それを char および wchar_t で特殊化したものが、istream や wistream などになる、というわけだ。 ボックスの近くに書いてある < …… > は、 そのクラスを宣言または定義しているヘッダーファイルである。 とくに iosfwd はクラス名だけを宣言しており、 クラスの実体が不要な場合は、 できるかぎり iosfwd だけをインクル

  • Tips (1) - C++ Labyrinth

    Tips (1) とくに一の記事にまとめるほどのものでもないようなトピックを集めてみた。 C++ の中・上級者 (あるいはマニア) から見るとどれも常識に思えるものばかりだと思うが、 初めて知ったときには、私なりに多少なりとも驚きを覚えたものを揃えたつもりである。 なお、各項目の末尾に付けた [番号] は、 『プログラミング言語 C++ 第3版』において同項目の解説が書いてある節の番号である。 ■ クラスの中にアクセスする必要がなければ、クラス名の宣言だけでよい A をクラス名とする。ヘッダーファイル中で次のような関数宣言だけをしている場合には、 A の定義は不要であり、A がクラス名であるという宣言だけしてあればよい。 class A; A foo( A a ); というのも、コンパイラがここを解析しているときはまだ foo() の呼び出しは行われていないので、 A の内容を知る必要

    agw
    agw 2011/09/01
    しばらく経ったらまた読み返したい。
  • 自己言及的なテンプレート - C++ Labyrinth

    自己言及的なテンプレート ついに、Java にも「総称」(genericity、C++ で言うところの template) の機能が 追加されるらしい (参照記事)。 ついでに assert 機能も。これで、C++Java に対する優位は、 ほとんど無くなったのかな? そろそろ Java も視野に入れたほがよいのかな? 「って、お前、それは世間から2周遅れくらいだよっ!」 というようなツッコミが入りそうだが、正直なところ、 速度が重視される Windows のコンシューマ向けアプリであることが要求される という 2つの条件を付けると、なかなか Java には移行できないんだよぉ。 まあ、それはさておき。 ときどき、ほとんど同じなのだけど、微妙に異なる振る舞いをする 2つのクラスが欲しくなることがある。今日、私が作りたくなったのは、 次のようなクラスであった。 class A { pu

    agw
    agw 2011/09/01
    class A : public X <A> {};
  • 仮想関数テーブル - Wikipedia

    仮想関数テーブル(かそうかんすうテーブル、英: virtual method table)あるいはvtableは、プログラミング言語の実装において動的なポリモーフィズム、すなわち実行時のメソッドの束縛を実現するために用いられる機構である。 あるプログラムが、継承関係にある複数のクラス(データ型)を持っているとする。たとえばスーパークラス Cat と二つのサブクラス HouseCat と Lion において、クラス Cat が speak という仮想関数(仮想メソッド)を定義しており、サブクラスは適切な実装(鳴く、吠えるといった)を行うものとする。 プログラムがspeakメソッドをCatへのポインタp(Cat クラスおよび Cat の任意のサブクラスを指すことができる)に対して呼び出すと、実行環境は、pが指す実際のオブジェクトの種類(型)に応じてどの実装を呼び出すかを決定しなければならない。

  • テンプレートあれこれ (2) -- 特殊化 (specialization) - C++ Labyrinth

    テンプレートあれこれ (2) -- 特殊化 (specialization) 「特殊化」 (specialization) は、 テンプレートを使いこなす上で是非とも知っておきたい概念の一つである。 これの理解なくして STL などの正確な理解はありえない。 特殊化というのは、たとえて言うなら、テンプレートを「オーバーロード」するための仕組みである。 つまり、同一のテンプレート名に対して複数の異なる実装を定義することができるのである。 ただし、関数のオーバーロードとは異なり、テンプレート引数の数を変えることはできない。 テンプレートを特殊化するには、その前に汎用の (つまり普通の) テンプレートを定義 (または宣言) しておかなければならない。 以下に、汎用テンプレートの例を示す。 template<class T> class Buffer100 { private: T buffer[

  • テンプレートあれこれ (4) -- typename の役割 - C++ Labyrinth

    テンプレートあれこれ (4) -- typename の役割 typename というキーワードには、2通りの用法がある。 "static" もそうだが、同一のキーワードに複数の意味を持たせるのは、 C++ の悪い癖だな。なんとかしてほしいところ。 で、typename の一つの意味は、テンプレート引数として 「型」を取ることを宣言する場合。 これは、"class" キーワードで置換できる。 たとえば、次の (A) と (B) は同値である。 template<typename T> class Foo; // (A) template<class T> class Foo; // (B) まあ、これは誰でも知っていると思う。 typename には、もう一つ、後続する識別子が 「型名」であることを明示するという重要な働きがある。たとえば、 template<class T> class

  • Function Objects in C++

  • Objective-C 2.0プログラミング言語

    語ドキュメント 日語に翻訳されたデベロッパ向けのドキュメントです。 英語版の方が新しい場合がありますので、最新情報は英語版や英語ドキュメントページを確認して下さい。 App Store Connectヘルプ App Store Connectの使い方に関しての詳細やステップごとの使い方を確認できます。

  • サービス終了のお知らせ - NAVER まとめ

    サービス終了のお知らせ NAVERまとめは2020年9月30日をもちましてサービス終了いたしました。 約11年間、NAVERまとめをご利用・ご愛顧いただき誠にありがとうございました。

    サービス終了のお知らせ - NAVER まとめ
    agw
    agw 2011/09/01
  • Dangers of anonymous function closures

    This is all well and good until you want to inline this code under some of your application code, as I did while working on Eventful's MySpace application. Consider this example, written in standard Javascript style. What do you expect this code to print? If you say "bar", you're wrong. It prints "foo bar" because in this context the anonymous function closure becomes a call to the function that p

  • WebKit サーバーというものを作ってみた - IT戦記

    みなさん お久しぶりですヽ(´ー`)ノ夏休みの宿題終わりました? 毎日が夏休みの最終日みたいな生活してるあまちゃんです! さてさて 今日は WebKit サーバーというものを作ってみたので、紹介してみます。 WebKit って何? WebKit っていうのは Chrome や Safari の中に入ってるブラウザのエンジンのことです! 実はブラウザっていうのは、エンジン部分と見た目の部分(タブとかボタンとかね)に別れていて、意外と違うブラウザでもエンジン部分は同じものを使ってるってことも多いんですよ(*´ー`) ブラウザのサーバーってどういうこと? 要は、サーバーサイドでブラウザを起動して JavaScript を実行したり、 JavaScript が実行されないと読めないページから値を持ってくるのに使ったりしようという魂胆です。 今まではそういうのなかったの? 実は、今までは JavaS

    WebKit サーバーというものを作ってみた - IT戦記
  • jQuery で ;(function () ...と、セミコロンで始めることがあるのはなぜか - わからん

    追記 たくさん反響があって驚きました。念の為書いておくと、私はこの記事で仕組みを解説しただけで、このようなノウハウに賛成も反対もしていません。追記はここまで。 azu さんのつぶやきで知った、Dangers of anonymous function closures が、例がよいのに説明が少ないので、ここで丁寧に解説します。なぜ、 jQuery で ;(function () ...とセミコロンで始めるコードがあるのかがわかります。 次のサンプルの実行結果を想像して下さい。 var foo = function(bar) { console.log("foo"); return bar; } (function(){ console.log("bar") })(); 結果は "foo bar" を印字します。多くの場合、これは意図しない挙動だと思います。"bar" だけだと思いませんか。

  • Re: どのプログラム言語を選ぶべきか・・・ : 404 Blog Not Found

    2011年08月30日15:30 カテゴリLightweight Languages Re: どのプログラム言語を選ぶべきか・・・ 言語設計者たちが考えること Mastermind of Programming Federico Biancuzzi / Shane Warden 伊藤真浩 / 頃末和義 / 佐藤嘉一 / 鈴木幸敏 / 村上雅章訳 [原著:Masterminds of Programming] ほめてのばしたくなったので。 どのプログラム言語を選ぶべきか・・・ - きしだのはてな 世界平和のために Alphabetical Order で。 Brainf.ck-erになったら、100%仕様を覚えられそうだし C-erになったら、いつかは言語を実装できるようになれそうだし C++-erになったら、新発見がなくならなそうだし COBOL-erになったら、先人の話にもついていけるよ

    Re: どのプログラム言語を選ぶべきか・・・ : 404 Blog Not Found