タグ

プログラミングに関するkei_keiのブックマーク (93)

  • QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。

    かつてのMac OS9までの描画エンジンの主役はQuickDrawが担っていた。GUIなOSでは、文字も含めてすべてをグラフィックとして扱うので、画面に見えているすべてのもの*1はQuickDrawによって描かれていたことになる。描画エンジンは、GUIなOS開発の要となる技術である。その出来が、GUIなOS開発の成否を分けるとも言える。 そして、最初期のQuickDrawは、ビル・アトキンソンがたった一人で開発したそうである。 当時(25年以上前)のCPUは、動作クロックが8MHzという性能だった。(現在は2GHz=2000MHzかつ、複数コアが当たり前) そのような性能であっても、違和感なくマウスで操作できるOS環境にするために、斬新な発想や試行錯誤を重ね、相当な努力の末に開発されたのがLisaやMacintoshであった。 Amazon.co.jp: レボリューション・イン・ザ・バレー

    QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。
  • 拙著「Linuxネットワークプログラミング」:Geekなぺーじ

    Linuxネットワークプログラミング」というを書きました。 LinuxでCを利用してネットワークプログラミングを行うための解説書で、私にとって初の書籍執筆です。 昨年2月にソフトバンククリエイティブさんから書籍執筆のオファーを頂き、開始から約一年後の発売となります。 今回、C言語によるLinuxのネットワークプログラミング解説書籍を執筆する機会を頂けたのですが、書籍の大きな方向性として以下の点が挙げられます。 可能な限り、ソースコード全文を掲載する。断片的なソースコードだと手元で即座に試しにくい メインはIPv4を意識しながら書く ただし、getaddrinfo()を前提とし、IPv6が存在することを前提に書く IPv6移行がメインの書籍ではない。インターネットの世界がIPv4/IPv6デュアルスタックで運用されることになるという前提でネットワークプログラミング解説書を書いているだけ

  • CUDAよりCPUの方が速い? - あんだあどらいぶ

    前の記事でGPGPUの概要について調べた内容を書いてみたが、GPGPUについてさらに調べていたらこういう記事を見つけた。 【西川和久の不定期コラム】GPGPU/CUDAで快適動画編集入門 - PC Watch 要するに、クアッドコアのCPUで処理した方が、GPGPU(CUDA)を使うより速かった、という話。なぜそうなるかちょっと考えてみたい。あくまで仮説なので、参考程度にしかならないけれど。 理由としては、処理が並列化に向いていない、最適化が不十分で処理能力を活かせていない、演算以外の部分で時間がかかっている、そもそもCPUの方が処理能力が高い、などが考えられる。 並列化のポイントは? それぞれについて考えてみる前に、GPUによる並列処理を効率よくこなして性能を発揮させるには何が必要かを考えてみる。 GPUの能力を活かすには、たぶん、単純な処理を延々繰り返すようなアルゴリズムにしないと速度

    CUDAよりCPUの方が速い? - あんだあどらいぶ
  • アルゴリズムの紹介

    ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意していま

  • Ruby on Railsの「えせMVC」の弊害

    先日のエントリーでも少し触れたが、Ruby on Railsの最大の問題点は、それが持つ「一見そのフレームワークがMVCの形をとりながら、MVCの最も大切なところを外している『えせMVC』である」点にある。MVC(Model View Controller)がなぜ必要かを根底の部分でちゃんとと意識せずにRailsアプリケーションを作ると、後々ひどい目に会うので注意が必要である。 その意味では「RailsでMVCを学ぶ」などもっての他だし、「JavaにもRailsと同じようなフレームワークを作って業務用アプリの開発を効率化しよう」などという発想もとても危険である。 ということで、今日はまずはMVCの解説から。 MVCの発想の根底には、「モジュール化と情報の隠蔽により、プログラムがスパゲッティ化するの(コード間の相互依存関係が複雑に入り込んでしまってにっちもさっちも行かない状態になること)を避

  • ITmedia エンタープライズ:developersLife――ものづくりの原点はここにある

    ソフトウェアの開発において、「抽象化」はデベロッパーたちの生産性を向上させることに成功した。しかし、ソフトウェアのプリミティブな部分から目をそむけ続けることはデベロッパーとして正しい姿なのだろうか。ここでは、真のデベロッパーとして大成するための考え方やプログラミング技術、スキルセットなどを紹介する。 すべて表示 新着記事 関連記事 関連リンク 新着記事 プログラミング言語の進化を追え: 大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2) 前回に引き続き、Scheme言語の処理系、Gaucheを開発している川合史朗氏が、クロージャの機能を検証し、関数型言語とオブジェクト指向言語の関係について解説していきます。今回は、クロージャとオブジェクトのより深淵を探求します。 (2007/3/30) 大人のためのブラックボックス読解講座――クロージャとオブジェクトの微

  • ヒープソートのアルゴリズム

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    ヒープソートのアルゴリズム
  • 工学ナビ - C/C++ テクニック集

    #include <stdio.h> #include <windows.h> int main(void) { LARGE_INTEGER freq,time_start,time_end; // 周波数,開始時間,終了時間 QueryPerformanceFrequency(&freq); QueryPerformanceCounter(&time_start); //////////// ここに処理を書く /////////////////////////// Sleep(500); // 処理例(500ms間スリープ) ///////////////////////////////////////////////////////// QueryPerformanceCounter(&time_end); printf("処理時間:%d[ms]\n",(time_end.QuadPa

  • 講義資料 配列解析アルゴリズム特論I 情報生命科学基礎/演習 他 -渋谷哲朗

    平成20年度 東京大学大学院 情報理工学系研究科・コンピュータ科学専攻 配列解析アルゴリズム特論I 4/10 4/17 4/24 5/1 5/8 5/15 5/22 5/29 (The problem to be reported - in English) 6/5 6/12 6/19 7/3 7/10 7/17 東京大学 理学部・情報科学科 情報科学特別講義3 (情報科学とバイオインフォマティクス) 6/10 7/15 7/22 東京大学大学院 新領域創成科学研究科・情報生命科学専攻 情報生命科学基礎/演習 5/27 6/17 京都大学大学院 薬学研究科・医薬創成情報科学専攻 情報科学概論 6/3 中央大学大学院 理工学系研究科・物理学専攻 物理学特別講義第二 TBA 創価大学工学部 生命情報工学科 TBA TBA 戻る Copyright (c) 2004- Tetsuo

  • ガベージコレクションの実装法と評価

    1.はじめに プログラミング言語とはシステム化する対象物を抽象化し、コンピュータで処理可能なコードを記述するために用いる人工言語である。プログラミング言語はコンピュータの機械語と一対一の対応をもったアセンブラから始まり、コンパイラを用いて機械語に翻訳することを前提としたコンパイラ言語、インタプリタと呼ばれるプログラムがソースコードを解釈し実行するスクリプト言語と、記述できる抽象度を高める方向へと進化してきた。 プログラミング言語はその存在理由から、より抽象度の高い記述が行えること、すばやい開発を行える事が求められる。抽象度の高い記述とは、プログラムがどういう処理を行うか(HOW)ではなく何の処理を行うか(WHAT)を記述しやすい構文、機能を持っていることを、すばやい開発とは記述性の高さ、コードの密度の高さ、バグの発生しにくい構文、機能を持っていることをさす。 この抽象度の高い記述、すばやい

  • 3Dプログラミングの前提知識

    3D関連の話題は小難しいハナシをしすぎて、質が分かり難い。(もしくは説明省きすぎ。) 重要な所を簡単にまとめてみた。前提知識として分かっていると楽になるはず。(詳細は他のページで)。 以下では、説明の便宜上、内容は一応、C++のDirectX9中心に記述します。 (1)3Dの座標系について 3Dのプログラミングは難しい。概念的に座標が沢山ある。単純な馴染みのある2D的な考えでは、「画面の左上が(0,0)で右下が(1024,768)」ってだけなのにね。3Dの場合は4つも座標がある。 「ローカル座標」 (各オブジェクト単体の座標。テクスチャやキャラ等の物体を表現する座標。) 「ワールド座標」 (3Dワールド上の座標。全体図。) 「ビュー(カメラ)座標」 (ある視点から見たときの座標。) 「スクリーン座標」 (ディスプレイ画面上の2D座標) 聞いた事のない名前だけど、最重要の名前のよう

  • JavaScriptのイベントハンドラ説明

    気でやるならonclick属性は避けてライブラリを活用すべき - 帰ってきたHolyGrailとHoryGrailの区別がつかない日記 を読んで,思うところあって書いてみました(決してカウンターアーティクルではない)。 むかしむかし JavaScript を触っていた むかしむかしに書かれた JavaScriptで勉強している/した 人向けに。大元記事(そろそろ気で学びませんか? | Think IT(シンクイット))の想定読者に近いかなと思います。よって以下は JavaScript の初学者にはまったくおすすめできない(余計な知識がついてしまう)です。 Step 1: はじめのいっぽ ボタンを押したらメッセージボックスが出現する HTML を書いてみます。 <html><body> <script type="text/javascript"> function ShowMes

    JavaScriptのイベントハンドラ説明
  • 連載:検索エンジンを作る|gihyo.jp … 技術評論社

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    連載:検索エンジンを作る|gihyo.jp … 技術評論社
  • ActionScriptによるWebの3Dグラフィックス再入門:CodeZine

    Flashで3D? 数年前まで、Flashと言えばデザイナが絵やアニメーションを作り、そこにちょっとしたインタラクティビティを持たせるためのツールという見方が一般的でした。しかし、昨年あたりから急激に「えっ!?こんなことがFlashでできるの?」というようなコンテンツが増えてきています。このようなコンテンツが現れはじめた原因は、言語仕様が一新されたActionScript 3による高いパフォーマンスにあります。 連載では、ActionScript 3のパフォーマンスを活かした一例として、Web上での3D表現を取り上げます。Webで3Dというと、VRMLやJava3Dなどの方法が存在はしたものの、なかなか広まることがありませんでした。これは実行環境の普及率が原因していると言えるのではないでしょうか。その点について、Flashは恵まれた環境にあると言えます。Adobeの資料によれば、日国内

  • これは便利! JavaScriptの勉強はこのコンテンツで - Eloquent JavaScript | エンタープライズ | マイコミジャーナル

    Eloquent JavaScript Eloquent JavaScriptというタイトルのもとでJavaScriptに関する情報が公開されている。同コンテンツの作成はMarijn Haverbeke氏の手によるもの。プログラミングの簡単な紹介からJavaScriptを使ったプログラミングの勘どころが丁寧にまとまっている。JavaScriptの仕様を解説するスタイルではなく、実際に必要になる処理や間違いやすい部分について取り上げながら説明がおこなわれている。JavaScriptを使ったプログラミングを実施するすべてのデベロッパに一読をお薦めしたいコンテンツだ。Eloquent JavaScriptの目次は次のとおり。 Introduction Basic JavaScript: values, variables, and control flow Functions Data stru

  • 【ハウツー】カスタマイズFirefox - Firefoxの拡張機能を作ろう (1) Firefox拡張の魅力 | パソコン | マイコミジャーナル

    突然ですが、私は軽く動作が早いソフトウェアが好きです。毎日のように使うWebブラウザはらばなおさら、きびきび動作する軽いシンプルなソフトウェアを選びたいものです。ただそういうシンプルなソフトウェアには自分に必要な機能がそろっていないのではないかと思うかもしれません。 そういう場合は、たいていのソフトウェアには機能を追加できるようになっています。それが「拡張機能」や「アドオン」、「マクロ」などと呼ばれる小さなプログラムたちです。そして有志の方が多くの追加機能を提供してくれています。そういったプログラムを探して使ってみるもの楽しみの1つです。 さらに拡張機能は自分で作ることができるようになっています。自分に必要な機能は自分で作って、ソフトウェアを自分好みに仕上げていくことはとても楽しいものです。そう、ソフトウェアは拡張しなければ意味がないのです! 今回紹介するFirefoxはオープンソース方式

  • 404 Blog Not Found:プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10

    2007年11月26日18:15 カテゴリMathLightweight Languages プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10 ぎくっ あなたが一番好きなアルゴリズムを教えてください。 また、その理由やどんな点が好きなのかも教えてください。 - 人力検索はてな なぜぎくってしているかというと、実はすでにアルゴリズムの発注を受けているからなのだ。いつまでも伏せておくのもなんなので、ここにえいやっとdiscloseしてしまうことにする。 アルゴリズム大募集! C&R研究所 - トップページ その下書きもかねて、そこでも紹介しないわけに行かないメジャーなアルゴリズムをとりあえず10個紹介しておくことにする。 ユークリッドの互除法(Euclidean algorithm) その昔(数百年ほど前)は「アルゴリズム」といえば、「手順一般」を指すのではなく、この「互除法

    404 Blog Not Found:プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10
  • 【連載】いまからはじめるPrototype.js (1) Prototype.jsの概要と$で始まるメソッド | エンタープライズ | マイコミジャーナル

    Prototype.jsとはなにか Prototype.jsは、Sam Stephenson氏を中心とするチームによって開発されているAjax対応JavaScriptライブラリだ。単体でもAjaxian.comの2006年と2007年の調査で最もよく知られたAjaxフレームワークに選ばれるほどの人気を得ているが、実はWebアプリケーション・フレームワークRuby on Railsプロジェクトで開発されているプロダクトであり、同フレームワークに同梱されているため、Ruby on Rails経由で使用されるケースも多い。 ライブラリはMITライセンスで公開され、ドキュメントはクリエイティブ・コモンズ(Creative Commons)ライセンスのAttribution-Share Alike 3.0で公開されている。詳細はライセンスのページで確認していただきたい。 これから6回にわたって、こ

  • 流体力学研究所

    DirectXを使用したプログラムを書いています。 デモの実行には、DirectX8.1以上が必要です。 インストールしていない方は、こちらからダウンロード出来ます。 DirectXランタイムのダウンロード 開発する方はこちら DirectX SDK のダウンロード 動作確認環境 Windows2000 / Pentium4 1.7G / GeForce2MX200 ■X-File Plugin for 3ds max R4/R5 (FML ver1.2) [2003.12.07] Xファイルを出力してくれる3Dモデリングツールは、どれくらいあるのか分かりませんが、 なかなか素直にデータを出してくれない事があります。 今回は3DSMAXのSDKを使用して、DX8SDKのextrasにあるXSkinExpを改造してみたいと思います。 ■MAXのPluginを作るには?

  • 最終回 Webアプリケーション開発にチャレンジ【後編】

    WWW::OpenSearchを使った検索Webアプリケーション 前回は、「Webアプリケーションを作るための仕組み」は、フレームワークとしてCGI::Applicationが用意されていることを解説し、その使い方も紹介しました。前回までの内容を踏まえて、目的のWebアプリケーションは次のような仕様にしました。 検索語句を指定して検索 検索エンジンを一覧から選んで検索できる まずは、リスト1のようにCGI体を記述します。これをapp.cgiとしましょう。app.cgiではCGI::Application::Dispatchを使うので、リスト中の1の部分のようにして自作クラスを置くライブラリディレクトリを指定しておきます。 #!/usr/local/bin/perl use strict; use lib qw (/path/to/lib);             ←1 use CGI:

    最終回 Webアプリケーション開発にチャレンジ【後編】