タグ

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

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

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

  • 年を取ると環境設定がどうでもよくなる現象 - bkブログ

    年を取ると環境設定がどうでもよくなる現象 環境設定に関するエッセイを書きました。 もともとは、とあるメディア向けに書いたものですが、 諸事情により、ブログにて公開することにしました。 環境設定と老化 ソフトウェア開発を行う上で、プログラマはさまざまなツールを使います。そして、ツールをカスタマイズしたり、ときおり新たなツールを導入するなどして、開発環境を整えます。具体的には、テキストエディタの設定を変更したり、ブラウザに拡張機能をインストールしたり、といったことを行います。 私の場合、以前はこうした環境設定に情熱を燃やしていましたが、年をとるにつれて、その情熱は徐々に衰えてきました。周りのプログラマを見渡しても、多かれ少なかれ、同じ傾向が見られます。 というわけで、今回は「年を取ると環境設定がどうでもよくなる現象」がなぜ起きるかについて考察してみたいと思います。それではさっそく、思い当たる要

    ymorimo
    ymorimo 2007/06/30
    すごく思い当たるところがあるのは歳かな
  • 信じ込ませる - 学校では教えてくれないバッドノウハウ英語 #11

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

  • Emacsでファイルの自動保存 (auto-save-buffers)

    うっかりファイルの保存を忘れていたために、OSやアプリケーショ ンが突然落ちて何時間もの作業を失ったという経験のある人は多い。 うっかりと書いたが、これはうっかりしていた人間が悪いというよ り、作業内容を失ってしまう計算機の方が悪い話である。 こうした「ファイルの保存し忘れ問題」に備える現実的な対策は、 ファイルの保存をこまめに行う、という方法である。実際、多くの 人がこれを行っている。なんだかおかしな話だ。 Emacs にはバックアップを自動保存する機能が備わっているが、 いざというときに復元の仕方がよくわからない。 M-x recove-file して復元するファイル名を指定する。 バックアップファイルが残っているときにファイルを開くと M-x recover-file せよ、と説明がでるけど、 再度ファイル名を指定し直さないといけないのは不便 (このととき RET を押だけでもいいけ

    ymorimo
    ymorimo 2007/03/01
    これやっとこ
  • いやなブログ - スクリプト言語用のデバッガの使い方 - 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

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

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

  • いやなブログ - 文字列操作の比較表: Ruby, Python, JavaScript, P...

    文字列操作の比較表: Ruby, Python, JavaScript, Perl, C++ Ruby, Python, JavaScript, Perl, C++ の文字列操作の比較表を作りました。配列操作の比較表の続編です。間違いなどがあったらご指摘いただけると助かります。 Ruby (String) Python (str) JavaScript (String) Perl C++ (std::string)

    ymorimo
    ymorimo 2006/10/23
    Rubyひととおりやりたくなった
  • 自転車置場の議論 - bkブログ

    自転車置場の議論 人が集まると、なぜかどうでもいいようなことほど議論が紛糾してしまう傾向がありますが、このような現象のことを、FreeBSD のコミュニティでは自転車置場の議論 (bikeshed discussion) と呼んでいることを知りました。 この、「瑣末なことほど議論が紛糾する現象」はパーキンソンの法則というの「議題の一項目の審議に要する時間は、その項目についての支出の額に反比例する」という法則として知られています。 このの中で著者は、原子炉の建設のような莫大な予算のかかる議題については誰も理解できないためにあっさり承認が通る一方で、市庁舎の自転車置場の屋根の費用や、果ては福祉委員会の会合の茶菓となると、誰もが口をはさみ始めて議論が延々と紛糾するというストーリーを紹介しています。 このように、「瑣末なことほど議論が紛糾する現象」はパーキンソン氏によって見事に説明されているの

  • 私の情報整理術: 捨てる派の情報整理術

    捨てる派? 捨てない派? 情報整理術は興味の尽きないトピックです。誰もが何かしらのこだ わりを持っているため、ひとたび議論が始まると、自分はこうやっ てる、俺も昔はそうやっていたが駄目だった、などと始まって収拾 がつかなくなります。これはちょうど誰もがうまいラーメン屋につ いて一家言を持っているのと似ています。 私の観察によると、ある種の人たちが情報整理術について議論を始 めると永遠に平行線で終わるようです。それは「捨てる派」と「捨 てない派」です。 捨てる派によれば、「物理的なものにしろ電子的なものにしろ、い らないものはどんどん捨ててしまえばよろしい。不要なものがたく さんあるから必要なものが見つかりにくくなるのだ。第一、ものが 少ない方が気分がすっきりする。昔から、墓場まで情報は持ってい けないと言われているではないか」ということになります。 一方、捨てない派によれば「必要か不要か簡

  • 普通のやつらの下を行け: assert_caller() - bkブログ

    普通のやつらの下を行け: assert_caller() 以前に、低レベルプログラミングを愛好する知人が「普通のやつらの下を行け」を口癖にしていました。当時は何を言っているのかと聞き流していましたが、自分も最近になってようやく低レベルプログラミングのおもしろさがわかってきました。今回は「普通のやつらの下を行け」企画の第一弾として assert_caller() なるものを作ってみたいと思います。 assert_caller() とは assert_caller() とは、特定の関数からの関数呼び出しだけを通すためのアサーションです。たとえば、次のように foo() の先頭で assert_caller(main) と書いた場合、 foo() は main() からしか呼び出せなくなります。他の関数から foo() を呼び出した場合はエラーメッセージとともに異常終了します。 void foo

    ymorimo
    ymorimo 2005/10/24
    下も行きたい
  • 便乗5冊企画: スーパーエンジニアへの道、他 - bkブログ

    最初の一冊はワインバーグの「スーパーエンジニアへの道」にしました。 このコンサルタントの秘密―技術アドバイスの人間学と相補的な内容となっています。スーパーエンジニアの方は主に自分が学ぶするための方法、コンサルタントの方は人に影響を与えるための方法について書かれています。以前に、コンサルタントの秘密を読んで改心した話を書いていますが、結局のところ、基的にはあまり変わっていないような気もします。

    ymorimo
    ymorimo 2005/09/26
    さらに
  • JavaScript Unicode Charts - bkブログ

    JavaScript Unicode Charts Unicode の表を JavaScript で動的に生成して、検索もできたりするツールがあると便利ではないかと思い立ちました。そこで、自分で作り始める前に試しに javascript unicode で検索してみたところ、ちょうど欲しいと思っていたようなものが見つかりました。JavaScript Unicode Charts というページです。 JavaScript Unicode Charts のページの一番上の入力欄に「あ」と入力してEnterキーを押すと、「あ」のコードポイント 0x3042 がわかります。この機能は Unicode を使ったプログラミングに役立ちそうです。 たとえば、 JavaScript で document.createTextNode を使ってテキストノードを作るときは実態参照は使えないので、 » (&ra

    ymorimo
    ymorimo 2005/09/26
    JavaScript Unicode Charts 使える!
  • いやなブログ: SpiderMonkey で JavaScript のインタラクティブシェル

    SpiderMonkey で JavaScript のインタラクティブシェル JavaScript のコードをインタラクティブに動かせるツール (Ruby における irb のようなもの) が欲しいと以前から思っていたのですが、今日になってようやく SpiderMonkey のインタラクティブシェルをインストールしました。 Debian GNU/Linux なら sudo apt-get install spidermonkey-bin を実行するだけでインストールできます。インストール後、 js コマンドを実行するとインタラクティブシェルが立ち上がります。 式を入力すると値が表示されます。 readline ライブラリがリンクされているので、コマンドライン編集は bash と同様にできます。 js> a = [1,2,3] 1,2,3 js> a.push(4) // 末尾に 4 を追加

    ymorimo
    ymorimo 2005/09/11
    apt-get install spidermonkey-bin
  • いやなブログ: C のキャストと一時オブジェクト

    C++ のキャストと一時オブジェクト C++ を学んでいます。Ruby の学びやすさとコード書きやすさを高速道路とすれば、C++ は落とし穴だらけのあぜ道という感じがします。今日、Effective STL (の第22項) を読んでいてなるほどと思ったのはキャストするとコピーが作成されるときがある、ということです。 #include <iostream> using namespace std; class Foo { int x; public: Foo() : x(0) {} void inc() { x++; } void show() const { cout << x << endl; } }; int main() { Foo foo; foo.show(); // 0 foo.inc(); foo.show(); // 1 static_cast<Foo>(foo).inc(

    ymorimo
    ymorimo 2005/09/07
    C++はむつかし
  • いやなブログ: 配列操作の比較表: Ruby, Python, JavaScript, Perl, C++

    配列操作の比較表: Ruby, Python, JavaScript, Perl, C++ プログラムを書いていると、他のプログラミング言語の記憶とごっちゃになって、「配列の後ろに要素を追加するのは push だっけ、 append だっけ」などと混乱することがあります。特に Ruby, Python, JavaScript はコードの書き方が似ているので、この問題が起きがちです。 そこで、備忘録として、 Ruby, Python, JavaScript, Perl, C++ の配列操作の比較表を作りました。一番慣れている Ruby を基準にしています。間違いなどがあったらご指摘いただけると助かります。他の言語のもあるといいなあ。 Ruby (Array) Python (list) JavaScript (Array) Perl (@) C++ (std::vector)

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

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

  • いやなブログ: ポール・グラハム論法

    ポール・グラハム論法 ポール・グラハムの「ハッカーと画家」はハッカー的な人間のための癒し系エッセイである。ちょうど、もやもやと考えていたようなことを気持ちよく代弁してくれる。 氏のエッセイを読んで感化された人間は、「ポール・グラハムも言っていた」という一言を自分の主張に加えるという誘惑にかられる。虎の威を借りる作戦である。 これをさらに押し進めると、ポール・グラハムが言っていないことでも、ポール・グラハムが言っていたことにするといういかがわしい論法にたどり着く。「100論文は1ハックに如かず、とポール・グラハムが言ってたよ」という具合である。 「100論文は1ハックに如かず」はめちゃくちゃだが、ハッカー的な人間にとっては一理なくもない。ポール・グラハムも言っているように、大学などにいるハッカーは、論文を書かなくてはという強迫観念にかられ、結果として、ハックの手を止めてしまう。これは社会的な

    ymorimo
    ymorimo 2005/07/06
    ポール・グラハムもそう言っている。
  • 1