タグ

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

  • cdbiff: メールの到着を CD-ROMドライブでお知らせ

    What's cdbiff? cdbiff is a tool for notifying you of mail arrival using a CD-ROM drive. cdbiff execute `eject' command to eject a CD-ROM tray when mail arrives. Usage cdbiff is written in Ruby. It works with Linux. Usage: cdbiff [OPTION] -f, --file=FILE Monitor FILE [/var/mail/$USER] -c, --command=COMMAND Execute COMMAND when mail arrives [eject] -i, --interval=SECONDS Monitor at intervals of SECO

    sirocco
    sirocco 2013/01/21
    CD-ROMを取り出すといえばこれが元祖でしょう。
  • Unicode の雪だるま - bkブログ

    Unicode の雪だるま Unicode Snowman for You というサイトを知りました。Unicode の雪だるま (U+2603 SNOWMAN ☃) が表示されるだけのサイトです。が、ソースを見ると font-face で EOT 形式のウェブフォントが使われていることに気づきました。 この EOT (Embedded Open Type) 形式のウェブフォントは IE しか対応していないようです。IE で表示するとこのような雪だるまが表示されました。これはおそらく Arial Unicode MS の雪だるまです。ちょっとこわいような。。 一方、他のブラウザで表示すると、このような雪だるまが表示されました。これは私がデフォルトのフォントに設定しているメイリオの雪だるまです。これはかわいい。意外なところにも力が入っています。

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

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

  • 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 の大きな不満のひとつに、凶悪なコマンドライン書法

  • いやなブログ: JavaScript とクロージャ

    JavaScript とクロージャ JavaScript プログラミングはなかなかおもしろいよ、と知人に言ってみたところ、 全然信用されずに怪訝な顔をされる、という目に遭いました。 クロージャが使えて DOM ツリーにイベントハンドラを簡単に追加できるよ、と続けると多少は興味を持ってもらえるようなので、クロージャを使ったサンプルプログラムを書いてみました。 箱の中でマウスカーソルを適当に動かしてください。 このプログラムでは各セルの色の濃さをクロージャを使って保持しています。makeHandler という関数の depth という変数がそれです。クロージャを使うと、個々のイベントハンドラごとに独立した状態を簡単に持たせされるのがポイントです。 別にクロージャを使わなくてもいいようなプログラムですが (クロージャではなく DOM のエレメントに状態を持たせるとか)、こういう風にも書けるよ、と

  • zphoto: a flash-based photo album generator

    What's zphoto? zphoto is a flash-based photo album generator. You can create a flash-based on-line album from photos taken by a digital camera. Sample Album (Photos) Sample Album (Movies) Art(?) Album (Photos) What's New 2004-07-21: zphoto 1.2 Released! Movie file handling bug was fixed configure.in/Makefile.am were refined wxzphoto now supports movie files Other small modifications were also made

  • strchr() ではまった話 - bkブログ

    strchr() ではまった話 標準Cライブラリに strchr() という関数があります。文字列の先頭から指定した文字を探すという単純な関数なのですが、先日、意外な仕様を知りました。 以下のコードを見てみます。 if (strchr("+-*/", c)) { // c は四則演算の記号かな? ... } この if 文は c が + - * / のいずれかの場合に条件が真となり、ブロック中が実行されます。…と、思いきや、実は条件が真になるケースがもうひとつありました。c が '\0' の場合です。 まさかと思って手元の Linux の man を見ると、文字列の終端のナル文字 ('\0') の扱いは明記されていません。 The strchr() function returns a pointer to the first occurrence of the character c i

    sirocco
    sirocco 2007/12/24
  • Python の unicodedata モジュール - bkブログ

    Python の unicodedata モジュール Unicode のちょっとしたテキスト処理をしようと思い、 Python の unicodedata モジュールを使ってみました。これは非常に便利です。 unicodedata は Python に標準で付属するため、別途のインストールは不要です。次のようなことができます。 文字の名前を取得する 文字の名前を取得することができます。Unicode の文字にはすべて一意の名前がつけられています。ソースコード内で Unicode のコードポイントを使うときは U+20AC (EURO SIGN) などとコメントをつけておくと便利でしょう。 >>> unicodedata.name(u'A') 'LATIN CAPITAL LETTER A' >>> unicodedata.name(u'あ') 'HIRAGANA LETTER A' 文字の

  • いやな法則

    思いついたいやな法則を集めています。 生産性 何もやらないよりはだらだらやった方がまし せっぱつまらないとやらない。せっぱつまってからではできない やらなければできない。やってもできない やらなくていいことはできる やらなければいけないことは楽しくない やらなくていいことをやっている人はいきいきしている 横着をするための労力を惜しんではいけない 横着をするための労力を惜しんではいけない、という口実で現実逃避してしまう 現実逃避の方が生産性が高い いやな仕事は、もっといやな仕事があるとき、いやではなくなる 決断 正しいことはすぐに中断し、間違ったことには頑固にしがみつく どちらかじゃなくて両方欲しい アイディア 考えて出てくるアイディアにろくなものはない アイディアを探してもアイディアは出てこない すぐにでも実行したいアイディアは嫌な仕事をしているときに思いつく よいと説明しないとわからない

  • 横着プログラミング 第5回: QuickML: 超お手軽なメーリングリスト

    最終更新日: 2002-07-18 (公開日: 2002-07-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 わたしは、インターフェイスの研究においては、試験と評価という 方法がそれほど役に立つものだとは思っていない。傲慢な考え方か もしれないが、わたしがそう判断する根拠はこうである。つまり、 注意深く試験しなければ見つからない程度の違いならば、そもそも そこに大した違いはないということなのだ。 -- Nicholas Negroponte *1 年がら年中メールを書いている。以前は計算機に向かっているとき だけだったが、最近では携帯電話でメールを打つことも多くなった。 当然ながら、年がら年中メールを読むことになる。1日に受け取る メールのほとんどはメーリングリストからのものである。 「インターネットはメーリング

  • coLinux の開発版のスナップショット - bkブログ

    coLinux の開発版のスナップショット ひさびさにcoLinux (Cooperative Linux) をインストールしよう思い立ち、開発版のスナップショットを入れてみました。 まずはスナップショットのページから devel branch のバイナリをインストール。日の時点では Snapshot 20070708 of version 0.8.0 with kernel 2.6.17 が最新でした。 インストールしてすぐに気づいたのは、設定ファイルのフォーマットの変化です。以前はXMLだったものが、行志向の単純なフォーマットに変更されていました。 今回はネットワークに slirp を使うことにしました。以前にインストールしたときは TAPドライバを選択して、設定がなかなか厄介だったのですが (0.6.4より前の古いバージョンでは slirp は不安定だったようです)、 slirp

  • 横着プログラミング 第9回: sary: Suffix Array のライブラリとツール

    最終更新日: 2002-12-18 (公開日: 2002-12-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 私にフローチャートだけを見せて、テーブルは見せないとしたら、 私はずっと煙に巻かれたままになるだろう。逆にテーブルが見せて もらえるなら、フローチャートはたいてい必要なくなる。 -- Frederick P. Brooks Jr. *1 プログラミングにおいてはデータ構造が重要であり、正しいデータ 構造を選択すればアルゴリズムは自明なものとなる、という主張が ある。Rob Pike*2 の "Notes on Programming in C" *3 によると、現実的なプログラムに必要なデータ構造は次の 4つであ るという。 配列 (array) 連結リスト (linked list) ハッシュテーブル

  • C++と Pthreads でミニマルなHTTPサーバを書く - いやなブログ

    C++と Pthreads でミニマルなHTTPサーバを書く 『UNIXネットワークプログラミング』を読んでいると、自分でも何かネットワーク系の小さなプログラムを書いてみたくなりました。そこで、ミニマルなHTTPサーバを C++と Pthreads で書いてみました。 同じ著者の「詳解UNIXプログラミング」もそうだったように、今回のもほとんどすべてのページに、重要なことが書かれています(最後のほうのXTIの部分は例外かもしれませんが)。 たとえば、27章ではネットワークサーバの実装として、次の設計方針がそれぞれ検討され、実際のコード付きで解説されています。 クライアントごとに fork 事前に fork - 各プロセスで accept 事前に fork - ファイルロックで accept を保護 事前に fork - Mutex ロックで accept を保護 (PTHREAD_PRO

  • カメラのしくみ - bkブログ

    このは日カメラ博物館の売店で見つけました。売店の限られたスペースの中で並んでいるには何か理由があると思い、著者略歴を見ると、ニコンに長年勤めた後、現在は大学で教えているという豊田堅二さんという方でした。 もともと、なぜカメラのしくみに興味を持つようになったかといえば、 デジイチを使うようになってから、絞りやシャッター速度といったパラメータに気を使うようになった割に、そのしくみをちっとも理解していないのはいかがなものか、と思い始めたためです。 これはちょうど、プログラミングで「a() という関数を使えば A という結果が得られるが、そのしくみはわからない」という状態でプログラムを書いているのと似ているかもしれません。求める結果が得られればそのしくみを知らなくても多くの場合、困りませんが、しくみを知っているのと知らないのでは大違い、という場合もあります。 というわけで、『カメラのしくみ』を

  • 浮動小数点演算ではまった話 - 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

  • デバッグに使えるサスペンス用語 - 学校では教えてくれないバッドノウハウ英語 #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

  • http://0xcc.net/diary/20040804.html

  • http://0xcc.net/diary/20040730.html

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

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