タグ

ブックマーク / 0xcc.net (26)

  • iPodは何を変えたのか? 人が問題にぶち当たったときには、どうするか? - bkブログ

    iPodは何を変えたのか? 人が問題にぶち当たったときには、どうするか? iPod が巻き起こした奇跡的な成功をテーマとした、『iPodは何を変えたのか?』を今頃になって読みました。 書は iPod に関するさまざまストーリーをまとめたです。たとえば、iPod 以前の音楽プレーヤはどういうものだったのか、 iPod がどのような社会現象を引き起こしたのかiTunes がいかに生まれたか、といったストーリーが合計で9つ収録されています。 個人的にとりわけおもしろかったのが、iPod がなぜクールなのかを扱った4章です。デザイナーのジョナサン・アイブ氏にインタビューして、 iPod のデザインで目指していたゴールとは、なぜ白なのか、といった質問をぶつけます。それらの回答もおもしろいのですが、特に印象に残ったのが、スティーブ・ジョブズ氏が自分のデザイン観についてアイブ氏に語ったという次の言

    kicchomu3
    kicchomu3 2010/11/12
    iPodは何を変えたのか? 人が問題にぶち当たったときには、どうするか? - bkブログ
  • Epeg で JPEG ファイルのサムネイルを高速に生成する - bkブログ

    Epeg で JPEG ファイルのサムネイルを高速に生成する Epegは JPEG ファイルのサムネイル (縮小画像) を高速に生成するライブラリです。JPEG に特化した手法でサムネイルの処理を行うため、内部的に画像をビットマップに伸張せず、高速かつ少ないメモリで処理できるのが特徴です。 インストール Epeg は Debian パッケージになっていないようなので、ソース (ダウンロード) からインストールしました Epeg は内部的に libjpeg を使っているため、Debian GNU/Linux では sudo apt-get install libjpeg62-dev で事前にインストールしておく必要があります。 Epeg そのものは ./configure && make && sudo make install でビルド・インストールできます。 サンプルコード Epeg の

  • yak shaving で人生の問題の80%が説明できる問題 - bkブログ

    yak shaving で人生の問題の80%が説明できる問題 つい最近、 yak shaving (ヤクの毛を刈る)、という言葉を知りました (原典)。これは「一見無関係に見えるけど、真の問題を解くのに必要な問題を解くのに必要な(これが何段階も続く)問題を解くのに必要な活動」という意味の言葉です。 yak shaving は、ようするに「ある問題を解こうと思ったら別の問題が出てきて、それを解こうと思ったらさらに別の問題が出てきて…」ということが延々と続く状況を表しています。ちなみに、ヤクとは毛が長い、牛の一種です。 yak shaving は、以前に覚えた bikeshed と同じくらい便利そうな表現です。というもの、プログラムを書いていると yak shaving 的な状況がすぐに発生するためです。 たとえば、「Amazon のほしい物リストを CSV 形式に変換して Excel で読み

    kicchomu3
    kicchomu3 2008/06/22
  • wxWidgets でクロスプラットフォーム GUIアプリを作ろう

    最終更新日: 2004-10-08 (公開日: 2004-10-08) UNIX USER誌 2004年8月号 に掲載された記事の元の原稿です。 文中の「原稿執筆時点」は「2004年 6月半ば」を指します。 wxWidgets は Linux, Windows, Mac OS X など多くのプラットフォー ムに対応したオープンソースの GUI ツールキットである。稿で は wxWidgets を用いてクロスプラットフォーム対応の GUI アプリ ケーションを開発する方法を紹介する。 はじめに Unix の大きな魅力のひとつに、強力なコマンドライン処理がある。 zsh などのシェルと perl などのワンライナーを組み合せて、大量 のファイルを一気に処理するときなどは、「これぞコマンドライン の醍醐味」と感じる瞬間である。 一方、Unix の大きな不満のひとつに、凶悪なコマンドライン書法

  • Unicode の文字列をエスケープする JavaScript - bkブログ

    Unicode の文字列をエスケープする JavaScript Unicode の文字列を \uXXXX (UTF-16) と \xXX (UTF-8)、&#DDDD (数値文字参照)、Base64, Quoted-printable、 URL などの形式でエスケープする JavaScript です。

  • プログラミングのノウハウ

    プログラミングに関するノウハウは大きく 3つにわかれると思う。 (またもや強引な分類) 1. 普遍的なノウハウ アルゴリズム, データ構造, オブジェクト指向, ツールボックスアプローチ, λ計算, etc. 2. システムのノウハウ 言語処理系, 計算機アーキテクチャ, OS, ネットワーク, etc. 3. 雑多なノウハウ 恣意的なAPI, 恣意的な言語仕様, 各種ソフトウェアの設定, 各種コマンドラインオプション, ソフトウェアのインストール作業, 各種システムの仕様の違い, 「最新技術」, etc. プログラミングをする上では 3種類のノウハウすべてが多かれ少な かれ必要なのだけど、僕のような人は、ついつい 3番目の雑多なノ ウハウばかりが増えていってしまう。日々のネットサーフィンで得 られるノウハウは大抵これである。 雑多なノウハウというのは、「たまたまそうなっている」だけであっ

  • C++ の設計と進化 - いやなブログ

    C++の設計と進化 しばらく前からのろのろ読んでいた『C++の設計と進化』を読み終えました。C++ の設計者、Bjarne Stroustrup 氏による著作です。 C++は多様なスタイルを許す C++にはCから受け継いだポインタ、構造体、マクロといった機能に加えて、リファレンス、クラス、テンプレート、例外、ネームスペースといった新たな機能が追加されています。 この結果、C++のプログラムは、昔ながらのC、クラスベースのオブジェクト指向プログラミング、テンプレートによるジェネリックプログラミング、など、さまざまなスタイルで書くことができます。これらを混在させることも可能です。 私が以前から疑問に思っていたのは、なぜ C++ はこんなにいろんな書き方ができるのか(コーディングスタイルもまちまちだし)、ということです。書の第一章にまさにその答えがありました。 C++の設計の多くの部分が、強制

  • 誤った判定 - 学校では教えてくれないバッドノウハウ英語 #13 - bkブログ

    誤った判定 - 学校では教えてくれないバッドノウハウ英語 #13 学校では教えてくれないバッドノウハウ英語の13回は、誤った判定(間違った判定)に関する表現を取り上げたいと思います。 スパムフィルタによるスパムの判定や、メモリチェックツールによるメモリリークの判定など、コンピュータの世界では、ソフトウェアを用いて何かを自動で判定することがよくあります。 ここで問題となるのが、誤った判定です。スパムフィルタの例で言えば、「当はスパムじゃないのにスパムと判定された(大切なメールがスパムフォルダに行ってしまった)」と「当はスパムなのにスパムじゃないメールとして判別された(スパムが受信箱に入ってきた)」という2つの場合があります。 英語では前者の場合を false positive、後者の場合を false negative と呼びます。日語では偽陽性、偽陰性となりますが、基的に医学用語な

  • 横着プログラミング

    このページでは Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿を公開しています。 目次 第1回: Unixのメモ技術 (2002年 1月号) 第2回: Migemo: 日語のインクリメンタル検索 (2002年 2月号) 第3回: 履歴マニア (2002年 3月号) 第4回: ttyrec: 端末を録画再生するツール (2002年 4月号) 第5回: QuickML: 超お手軽なメーリングリスト (2002年 5月号) 第6回: chatty: 小うるさい端末 (2002年 7月号) 第7回: zphoto: ズーミングするオンラインアルバムを作るツール (2002年 8月号) 第8回: pdumpfs: 毎日のスナップショットを保存する (2002年 9月号) 第9回: Sary: Suffix Array のライブラリとツー

  • 信じ込ませる - 学校では教えてくれないバッドノウハウ英語 #11

    信じ込ませる - 学校では教えてくれないバッドノウハウ英語 #11 学校では教えてくれないバッドノウハウ英語の11回は、 hoge を取り上げたいと思います。 hoge は日のプログラマの間で、「何か適当なもの」を指す変数として親しまれています。英語圏では hoge の代わりに foo がよく使われます。このような変数は、メタ構文変数(metasyntactic variable) と呼ばれ、ソフトウェアに関する議論や文書などで広く用いられています。 hoge は日ではなぜかメタ構文変数として定着していますが、英語では「信じ込ませる」という意味のれっきとした単語 (ホウジと発音) です。日人以外に対して hoge を用いると誤解を生じる可能性があるため注意が必要です。hoge は通常、動詞として用いられます。 例) Please don't hoge me about the sto

  • 重箱の隅をつつく - 学校では教えてくれないバッドノウハウ英語 #10 - bkブログ

    重箱の隅をつつく - 学校では教えてくれないバッドノウハウ英語 #10 学校では教えてくれないバッドノウハウ英語の10回は、 nitpick, cherrypick という、ともに pick で終わる表現を取り上げたいと思います。 "nitpick" は「あら探しをする」という意味の表現です。動詞にも名詞にも使われます。nit はシラミの卵という意味で、シラミの卵を摘み取るのはいかにも小さなこと、という響きがあります。コードレビューの際に、重箱の隅をつつくような指摘をするときにぴったりの表現です。nit-pick とハイフンが入る場合もあります。 例) It's just a nitpick but I think "file_name" is better than "filename". 重箱の隅だけど、 filename より file_name の方がいいと思うよ。 Please

  • 特別扱いする - 学校では教えてくれないバッドノウハウ英語 #9 - bkブログ

    特別扱いする - 学校では教えてくれないバッドノウハウ英語 #9 学校では教えてくれないバッドノウハウ英語の9回は、special case ~という動詞の表現を取り上げたいと思います。 "special case" は通常、「特別な場合」という意味の名詞として使われます。しかし、英語も日語と同様に、名詞は動詞化する傾向があるため、"special case" は「特別扱いする」という意味の動詞としてもよく使われます。 例) I didn't want to special case IE4 but I had to... IE4 を特別扱いしたくなかったんだけど、避けられなかったよ。。 Would it be possible to special-case this file so that we don't have to worry about it? このファイルのことを気にし

  • 浮動小数点演算ではまった話 - bkブログ

    浮動小数点演算ではまった話 浮動小数点演算のありがちな問題ではまりました。 いろいろ調べているうちに x86 特有のちょっとおもしろい 現象に遭遇したので紹介したいと思います。 パーセンテージの計算 簡単な C のプログラムでパーセンテージを計算しようと思い、 次のようなコードを書きました。 int x, y; ... int a = (double)x / y * 100; int a = x * 100 / y としないのは、 x が大きい場合に x * 100 が オーバーフローを起こす (INT_MAX を越える) ためです。 このコードは一見、期待通りに動いていたのですが、 しばらく使っていると、手元の環境では x = 53, y = 100 のときに a は 53 ではなく 52 になることに気づきました。 これは次の理由によります。 式の最初の (double)53 / 10

  • いやなブログ - スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl

    スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl スクリプト言語用の CUIのデバッガの使い方を簡単にまとめました。対象言語は Ruby, Python, Perl です。 私は C, C++ でプログラムを書いているときはデバッガ (主に GNU/Linux 上の gdb) を頻繁に利用します。しかし、スクリプト言語ではそれほどでもありません。これはおそらく次のような理由によります。 ビルドが不要なので printf デバッグが容易 (ある程度大きい C++ のプログラムではビルド時間が長いので printf の挿入はしんどい) 異常終了時にスタックトレースが表示される (Ruby, Python なら自動、Perl の場合は use Carp; $SIG{__DIE__} = \&Carp::confess; など) オブジェクトのインスペクトが簡単 (Ru

    kicchomu3
    kicchomu3 2007/02/11
    use Carp; $SIG{__DIE__} = \&Carp::confess;
  • デバッグに使えるサスペンス用語 - 学校では教えてくれないバッドノウハウ英語 #7 - bkブログ

    デバッグに使えるサスペンス用語 - 学校では教えてくれないバッドノウハウ英語 #7 学校では教えてくれないバッドノウハウ英語の7回は、"post-mortem", "tombstone", "culprit" を取り上げたいと思います。いずれもデバッグに関する議論で使える表現です。 "post-mortem", "tombstone", "culprit" の通常の意味はそれぞれ「検死」「墓石」「容疑者」です。どれもサスペンス映画に登場するような言葉ですが、ソフトウェア開でも、デバッグという一種のサスペンスの場面で使われます。 "post-mortem" は、プログラムの検死、すなわち、プログラムがなぜ死んだのかを原因調査すること、または調査結果を意味します。 例) We should perform a post-mortem analysis to make sure this doe

  • JavaScript でソートアルゴリズムを可視化 - bkブログ

    JavaScript でソートアルゴリズムを可視化 JavaScript でソートアルゴリズムを可視化するプログラムを書いてみました。元ネタは Jon Bentley による ソートアルゴリズムを可視化する Java アプレットです。 アルゴリズム 要素数 動作確認は Firefox 2, IE 7, Opera 9 で行いました。要素数は最大で200まで選べますが、かなり重くなるので遅いマシンで実行すると危険です。 English version is also available. ソースコード: sort-animation.js 解説 X軸が配列の添え字、Y軸が配列の要素の値を示しています。最初に要素がランダムに並んでいる配列 (値に重複なし) を作って、それを各種のソートアルゴリズムでソートする様子をアニメーションで表示します。 ただし、要素のあらゆる変更に対して毎回表示を更新し

  • 実用上OK - 学校では教えてくれないバッドノウハウ英語 #6 - bkブログ

    実用上OK - 学校では教えてくれないバッドノウハウ英語 #6 学校では教えてくれないバッドノウハウ英語の6回は、"in practice" を取り上げたいと思います。ソフトウェアの設計に関する議論などで役立つ表現です。 ソフトウェアの設計にはトレードオフがつきものです。速度を追求しようとすればメモリの消費が増えたり、メモリを節約しようとすればプログラムが複雑化したりと、さまざまな面でトレードオフが発生します。 すべての条件を満たす理想の設計は存在しないため、実用上問題にならない要素については割り切る必要があります。そこで便利なのが今回紹介する "in practice" という表現です。 "in practice" は「実際上」「事実上」「実用上」といった意味を表します。同様の意味は副詞の "practically" でも表せますが、"in practice" の方が多少、フォーマルっぽ

  • 問題を再現させる - 学校では教えてくれないバッドノウハウ英語 #5 - bkブログ

    問題を再現させる - 学校では教えてくれないバッドノウハウ英語 #5 学校では教えてくれないバッドノウハウ英語の5回は、"reproduce" と "reproducible" を取り上げたいと思います。バグ報告のやり取りの際に役立つ表現です。 エラーを再現させる、という意味での「再現させる」は英語では "reproduce" という動詞を使います。問題を再現させることはデバッグの基ですが、報告を受けたバグが手元では再現しないことはよくあります。そのようなときは "I can't reproduce the error" (そのエラー再現できんかったよ) と相手に伝えるといいでしょう。 例) I tried the same configuration you used, but couldn't reproduce it. お前と同じ設定を試してみたけど、再現しなかったよ。 A way

  • いやなブログ - Binary 2.0カンファレンス 2006 発表資料とレポート

    Binary 2.0カンファレンス 2006 発表資料とレポート Binary 2.0 カンファレンス 2006 は大盛況のうちに無事終了いたしました。開催にご協力いただいた皆様、スピーカーの皆様、参加していただいた皆様、大変ありがとうございました。当日の発表資料とレポートをこのエントリでまとめます。

  • もし必要なら - 学校では教えてくれないバッドノウハウ英語 #3 - bkブログ

    もし必要なら - 学校では教えてくれないバッドノウハウ英語 #3 学校では教えてくれないバッドノウハウ英語の3回は、"if need be" を取り上げたいと思います。"if need be" はソースコードのコメントの中でとりわけよくみられる表現です。 "if need be" の意味は「もし必要なら」です。同じ意味を表す "if necessary" という表現も一般的ですが、"if need be" の方が2文字分短いためか、"if need be" の方を好むプログラマも多いようです。 例) // Change the font size if need be. // フォントサイズを変更する、必要なら。 We could help improve the test coverage if need be. 必要ならテストカバレージの改善を手伝ってもいいよ。 この表現はメールでもよ