タグ

ブックマーク / zariganitosh.hatenablog.jp (8)

  • 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はどのように素早く円を描いていたのか? - ザリガニが見ていた...。
  • 長方形の重なりを判定する問題 - ザリガニが見ていた...。

    Fizz-Buzz問題に引き続き、面白い課題を見つけた。こちらも、さらにタイムリーではなく(2年くらい前かも)、既に多数の回答例が出ているが、まずは自分自身でやってみることにした。Fizu-Buzzよりも、制限時間30分のこちらの問題の方が、じっくり考えることが出来て面白そうだ! [問題] 二次元座標上に、それぞれの辺がX軸・Y軸と平行に置かれた長方形Aと長方形Bがあるとする。その時、長方形Aと長方形Bが一部でも重なるかどうかを判断する条件式を書け。フォーマットは、CやJavaなどのコンピューター言語でも良し、単なる数式でも良い。制限時間は30分。ただし、考えていることを声に出し、ホワイト・ボードを使って自分の考えのプロセスを説明しながら解くこと。 Life is beautiful: ビル・ゲイツの面接試験-私の場合 ------ここから下は自分の思考の過程です。自分で考えてみたい場合は

    長方形の重なりを判定する問題 - ザリガニが見ていた...。
  • RubyとC言語でもペントミノバズルを解いてみる - ザリガニが見ていた...。

    前回からの続き。 明治ミルクチョコーレートパズルの解をすべて探す - ザリガニが見ていた...。 ペントミノの解を求めるプログラム高速化 - ザリガニが見ていた...。 ペントミノパズルを解くPythonコードは、順調に高速化の道を歩んできた。 3時間以上 → 50分 → 20分 → 3分。 ところで、現在はnumpyにほとんど依存しないコードになっている。ならば、他のプログラミング言語でも同じアルゴリズムでペントミノパズルを解けるはず。ふと、使い慣れているRubyで書いてみたらどうなるのだろう?と思った。やってみた。 Rubyで解く 完全にPython脳になっていたので、endが必要な書き方に激しく無駄を感じてしまった。 いくつかのエラーに悩まされながら、どうにか以下のRubyコードを完成させた。 実行してみると... # coding: utf-8 BROW, BCOL = 10, 6

    RubyとC言語でもペントミノバズルを解いてみる - ザリガニが見ていた...。
  • rbenvは何をしているのか? - ザリガニが見ていた...。

    ~/.rbenv/以下に複数のRubyバージョンをインストールして、それぞれのRuby環境を切り替える仕組みを提供する。 ~/.rbenv/ (rbenvがRubyを管理するルートフォルダ) ~/.rbenv/shims/ (rubyやgemがインストールするコマンドへのラッパーを保存しておくフォルダ) ~/.rbenv/version (global環境のRubyバージョンを記録するファイル) ~/.rbenv/versions/ (Rubyの各種バージョンをインストールするフォルダ) Ruby環境の構造 例えば、rbenvがインストールしたRuby-1.8.7-p375は、以下のような構造となっている。 ~/.rbenv/versions/1.8.7-p375/bin/(実行コマンドを含む:erb gem irb rake rdoc ri ruby testrb) ~/.rbenv/v

    rbenvは何をしているのか? - ザリガニが見ていた...。
  • RubyのOptionParserの底力を知る - ザリガニが見ていた...。

    コマンドは、以下のような書式でオプションと引数を設定して、実行する仕組みになっている。 例: コマンド名 オプション オプション オプション引数 オプション コマンド引数 optparser_test.rb -a -b VALUE --foo FILE_PATH 実際にコマンドを作ろうとすると、オプションの解析には手間がかかると気付く。 そのため、多くの言語環境にはオプション解析用のライブラリが用意されている。 Rubyのoptparserについて、基的な使い方は知っているつもりだったが... Rubyでコマンドの中身を作るまで - ザリガニが見ていた...。 ちょっと気の利いたコマンドにしようとすると、その使い方は謎だらけになった。 どうしたら苦労最小限でオプションを解析できるのか、調べてみた。 基 require 'optparse' OptionParser.new do |op

    RubyのOptionParserの底力を知る - ザリガニが見ていた...。
  • ブックマークレット実行時に外部ファイルをロードして使う - ザリガニが見ていた...。

    ブックマークレットの書き方の段階的な発展の仕方の続き。 基 前回の外部ファイルをロードして実行するブックマークレットは、こんな感じだった。 javascript: (function(d,s){ s=d.createElement('script');s.src='//dl.dropboxusercontent.com/u/XXXXXXX/bookmarklet.js';d.body.appendChild(s); })(document) Webページのbodyタグに以下のようなscriptタグを追加して、 シンプルに、たった一つの外部ファイルをロードしているのだ。 <script src='//dl.dropboxusercontent.com/u/XXXXXXX/bookmarklet.js'></script> 複数の外部ファイルをロードする では、外部ファイルを二つ以上ロードし

    ブックマークレット実行時に外部ファイルをロードして使う - ザリガニが見ていた...。
  • ブックマークレットの書き方の段階的な発展の仕方 - ザリガニが見ていた...。

    ブックマークレットとは、JavaScriptコードが保存されたブックマークのことである。クリックすると、そこに保存されているJavaScriptコードが実行される。 通常のブックマークのアドレスには、http:で始まるURLが保存されている。 ブックマークレットのアドレスには、javascript:で始まるJavaScriptコードが保存されている。 はじめの一歩 WebブラウザのURLフィールドに以下のように入力して、returnキーを押してみると... javascript:alert("hello world!!") アラートダイアログが表示された! URLフィールドのアイコンをブックマークバーにドラッグ&ドロップすると、そのJavaScriptはブックマークレットとして保存される。 あるいは、aタグのリンク先にJavaScriptを設定しておけば、そのリンクをドラッグ&ドロップして

    ブックマークレットの書き方の段階的な発展の仕方 - ザリガニが見ていた...。
  • 日本語と英語のテキスト境界のスペースをどうするか? - ザリガニが見ていた...。

    こうゆう発想のワンライナー的スクリプトが大好き。 uedamac:MEMO ueda$ echo "わたしは aho です。4 さいです。" | sed 's/\([^a-zA-Z0-9]\) \([a-zA-Z0-9]\)/\1\2/g' | sed 's/\([a-zA-Z0-9]\) \([^a-zA-Z0-9]\)/\1\2/g' わたしはahoです。4さいです。 出版社に送る原稿には日語と英単語の間にスペースを入れない方が良いらしいので贖罪のためにシェル芸やります。 – 上田ブログ なるほど、確かに日語と英語の間にスペースを入れるということは、段落先頭の字下げでスペースを使うようなものかもしれない。理想は、ページフォーマットや CSS で制御されるべきものだと思う。... とここまで考えて、ちょっぴり思い直した。そう言えば、OSX 環境上は日語と英語の境界にスペースを挿入し

    日本語と英語のテキスト境界のスペースをどうするか? - ザリガニが見ていた...。
  • 1