タグ

ブックマーク / nanto.asablo.jp (23)

  • Perl の URI モジュールにおける文字列とオクテット列の扱いに関して: Days on the Moon

    Perl の URI モジュールには ASCII 外の文字の扱いに関して欠陥がある。ここでは Perl における URI の扱いについて述べ、URI モジュールの修正方針を提案する。 この記事で取り上げた問題に関して主たる部分は URI.pm 1.59 で (この提案とは違った形で) 修正済みであり、この提案は obsolete です。 用語の定義 URI RFC 3986 (日語訳) で定義される識別子。 URI.pm Perl の URI モジュール。ここでは、ファイルとしての URI.pm だけでなく、URI パッケージ下に含まれるコード全般を指す。断りがない限りバージョン 1.58 に基づく。 文字列 UTF-8 文字列と Latin-1 文字列のいずれか。 UTF-8 文字列 Perl の文字列値で、UTF8 フラグが立っているもの。 Latin-1 文字列 Perl の文字列

    Yuichirou
    Yuichirou 2011/05/27
  • Kanasan.JS JavaScript 第 5 版読書会 #10 XPath 発表資料: Days on the Moon

    6 月のことになりますが、Kanasan.JS JavaScript 第 5 版読書会 #10 にて XPath に関する発表を行いました。内容は基的な XPath の解説です。 発表資料: Excellent XPath Expressions (図、注釈付き) 図の元データ (OpenDocument Graphics 形式) 番では図の準備が間に合わずホワイトボードに描きながら発表したのですが、逐次挙がる質問に対してもすぐ描き直して対応できたので、かえって理解を深めるのに役立ったのではないかと思います。資料中の注釈は口頭で説明したことなどを書き起こしたものです。 タイトルに excellent と入っていますが何か特に素晴しいということはなく、単に頭韻を踏みたかっただけです。(しかし excellent と expression では ex の発音が違うので踏めてないという……)

    Yuichirou
    Yuichirou 2010/09/27
  • Mozilla 勉強会 @ 大阪: Days on the Moon

    2 月 20 日に行われた Mozilla 勉強会 @ 大阪に行ってきました。「js-ctypes で音声読み上げ」という題でライトニングトークをしたので、そのスライドとサンプルコードを公開します。 js-ctypes で音声読み上げ read-selection.uc.js (userChrome.js 用スクリプト) js-ctypes は C/C++ 用のライブラリ関数を JavaScript から呼び出すための機能で、Firefox の次期バージョンに搭載される予定です。ここでは「AquesTalkとkakasiを組み合わせて再生。 - 世界はアルゴリズムでできている。」を参考に音声読み上げライブラリを呼び出してみました。 上記コードでは標準 C ライブラリ関数を使って無理やりポインタを扱っていますが、Overview of js-ctypes や MozillaWiki の js

    Yuichirou
    Yuichirou 2010/03/03
  • 勝手に添削: Selection内のHTML Textをいい感じに取得する: Days on the Moon

    というわけでやってまいりましたこのコーナー! 日のお題は「Selection内のHTML Textをいい感じに取得する - 枕を欹てて聴く」でございます。選択範囲のHTMLソースを抜き出すというやつですね。では早速いってみましょう! if(src.focusNode){ // selection まずは HTML5 テキスト選択 API の Selection オブジェクトが登場! 以後これに対する操作が続きます。しかしこの Slection オブジェクト、getRangeAt メソッドを使うとなんと選択範囲に対応する DOM 2 Traversal and Range の Range オブジェクトが取れちゃうんです! // common parent node search (以下 21 行省略) それ Range#commonAncestorContainer で取れるよ! // c

    Yuichirou
    Yuichirou 2010/02/05
  • Firefox 3.6 での XPath による要素取得: Days on the Moon

    Firefox 3.6 にしたら、動的に生成した文書からの XPath による要素取得ができなくなったという報告が挙がっています。 Firefox3.6でdirect_bookmark.jsとdirect_hb.jsのはてブのタグを取得できていない問題(未解決→解決) - ヴィンペラートル・オクタウィアヌス - vimperatorグループ subscldr.jsが動かなくなったのを直してみた - mountain_dewの日記 この原因は、Firefox 3.6 で HTML 要素の名前空間の扱いが変わったことにあります。Firefox 3.6 (Gecko 1.9.2) では、HTML5 に従い、HTML 要素が (XML 文書中でなくても) XHTML の名前空間 (HTML5 でいうところの「HTML の名前空間」) http://www.w3.org/1999/xhtml に属す

    Yuichirou
    Yuichirou 2010/01/25
  • Kanasan.JS Jetpack ワークショップ: Days on the Moon

    Kanasan.JS Jetpack ワークショップに行ってきました。Jetpack は Firefox 用の簡易拡張プラットフォーム。私としては通常の拡張機能のほうが高い自由度を持てて好きなのですが、Firefox を広く一般に使ってもらうには、簡単なものを簡単に作れるようにするという点が重要なのでしょう。 最初に mollifier さんによる Jetpack 入門があった後、二人組になり各グループで Jetpack フィーチャーを作っていくという流れ。私は satyr さんとペアになったのですが、さすが satyr さん、ゴルファーだけあって見慣れぬ記法を次々と使ってきます。 var { href } = location; 上のコードは分割代入の省略形式で、 var { href: href } = location; の略、さらには、 var href = location.hr

    Yuichirou
    Yuichirou 2009/12/30
    「var { href } = location;」バッドノウハウすぐる……(扱い辛いという意味で)
  • Firefox Developers Conference 2009: Days on the Moon

    11 月 8 日に行われた Firefox Developers Conference 2009 にて、secondlife さんとともにはてなブックマーク Firefox 拡張に関する発表を行いました。発表資料は次の通りです。 Firefox Developers Conference 2009 発表資料 - 川o・-・)<2nd life (secondlife さん発表分) はてなブックマーク Firefox 拡張 実装の舞台裏 資料中に約 3500 行の XML とありますが、この中には XBL 内に直接書かれた JavaScript コードの行数も含まれていると思います。XBL は、特定の機能を持つ要素が複数存在する場合に威力を発揮します。Mozilla のウィジェット (ボタンやメニューなど) のソースを読むためには XBL のあらましを知っておく必要があると思うのですが、意外

    Yuichirou
    Yuichirou 2009/11/12
  • HTMLDocument の動的な作成: Days on the Moon

    ブラウザ上で、JavaScript を使って HTML のソースから HTML 文書を生成するのに、どんな方法があるのか調べました。なお、以下のスクリプトは HTML 文書上で実行することが前提です。 表の見方 XSLT の HTML 出力 createHTMLDocument メソッド createDocument メソッド createDocument メソッドと名前空間の指定 createDocument メソッドと文書型宣言の指定 createDocument メソッドと文書型宣言及び名前空間の指定 cloneNode メソッド iframe 要素 ActiveXObject CID からの作成 まとめ 表の見方 以下の表において、各項目の意味は次の通りです。 doc HTML 文書を作成できれば○、XML 文書を作成できれば△、それ以外なら×です。HTML 文書かどうかは、cre

    Yuichirou
    Yuichirou 2009/10/29
  • LiveCoding #6 の 2: Days on the Moon

    OSC Kansai に出た帰りに satzz 君に電話したら、ちょうど LiveCoding #6 をやっているとのことだったのでその足で寄ってきました。前回も第 6 回だった気がするのは何かの間違いでしょうか。 LiveCoding とはプログラミングの実演と実況を楽しみましょうというイベントで、出てくる言語も C から PHP まで色とりどり。まともとは思えないテクニックも多々披露されたわけですが、中でも驚愕だったのが ujihisa さんが書いた Ruby のコード、 def fib n, x = (n < 2) ? n : fib(n - 1) + fib(n - 2) x end fib 10 # => 55 Ruby ではデフォルト引数内で再帰呼び出しができるだなんてちっとも知りませんでした。 飛び入り LiveCoder も大歓迎といわれ、その特典である参加費 (お寿司 +

    Yuichirou
    Yuichirou 2009/07/20
  • 第 2 回 Firefox 出張ワークショップ発表資料: Days on the Moon

    先日京都コンピュータ学院で開催されたオープンソースカンファレンス 2009 Kansai、その中の一セッション「第 2 回 Firefox 出張ワークショップ ~基礎から学べる拡張機能開発~」に講師として参加させていただきました。私の担当した後半、実際に拡張機能を作ってみる部分の資料及び完成版の拡張は以下になります。 Firefox 拡張機能開発ワークショップ in OSC Kansai 2009 contexthistory-0.1.xpi ソースコード chrome/ content/ contexthistory.js contexthistory.xul chrome.manifest install.rdf 「わからないことがあったとき、どうやって調べるか」をひとつの柱として話を進めていきたかったのですが、つたない進行で後半ややペースが押し気味になってしまい、終了時間を 5 分ほ

    Yuichirou
    Yuichirou 2009/07/15
  • Web 開発者の責任 (翻訳): Days on the Moon

    John Resig 氏による A Web Developer's Responsibility という記事が素晴しかったので、著者の許可を得てここに日語訳を掲載します。 Web 開発者の最大の負担は、ブラウザのバグと非互換性への対応に膨大な時間を費やすことであるといって間違いないでしょう。それゆえに、それらへの対応に不満をいうのは、Web 開発者全員の常となっていました。ブラウザのバグは迷惑でいらだたしく、仕事を大幅に難しくします。 ブラウザのバグはとてもいらだたしく、通常の開発における最大の負担です。ですから、開発対象のブラウザが、自身のバグを見つけ修正できるようにしてやるのは、すべての Web 開発者にとっての責任です。自分が見つけたバグに対して責任を持ち、「ほかの誰かがこれを見つけるだろう」とは思わないことで、ブラウザの進歩の速度は加速していくでしょう。 ブラウザを支援する解決策

    Yuichirou
    Yuichirou 2009/05/06
  • SpiderMonkey の判別とブラウザ判別: Days on the Moon

    1 行でブラウザ判別を行うスクリプト (IE 用の日語紹介記事、Firefox、Safari 用の日語紹介記事) が注目を集めています。それによると Firefox の判別は次の 15 文字で行えるそうです。 //Firefox detector 2/3 by DoctorDan FF=/a/[-1]=='a' いったいなぜこれで Firefox が判別できるのか、少し探ってみました。 何を判別しているのか SpiderMonkey のソースコードを探る より短い SpiderMonkey の判別法 「ブラウザ判別」としての不備 まとめ 参考文献 何を判別しているのか 実際に探っていく前にひとつ注意しなければいけないことがあります。それは、上記のコードが Firefox を判別するものではないということです。このコードには Web ブラウザ固有のオブジェクトモデルに関する情報が含まれて

    Yuichirou
    Yuichirou 2009/02/01
    こんな時期にこんな長文記事お疲れ様です……
  • フォームコントロールのデフォルト値: Days on the Moon

    WebKit のコントロール値キャッシュ対策 「日野望の会-Yabooo.org > Safari/Webkitのおせっかいキャッシュとその対策。」にコメントしたはずなのですが、いつの間にかコメントが消えているようなので推敲の上再掲。 上記のページで問題にしているのは、Safari において bfcache を無効にしていても、動的に追加したフォームコントロールの値がキャッシュされた値に書き換えられてしまうことです。これに対し、文書中のコントロールをすべて記憶し、文書のアンロード時にそれらの名前 (name 属性の値) を変更することで解決を図っています。 しかし、書き換えられるのは一時的な値のみで、コントロールのデフォルト値 (フォームをリセットしたときに設定される値) まで変化するわけではありません。ならば、コントロールが文書中に挿入されたときに、その値をデフォルト値に設定してやれば

  • HTML と XHTML で同じ XPath を使う: Days on the Moon

    通常、XPath を書くときは //p のようにすることが多いと思いますが、これには名前空間の指定が含まれていないため、XHTML 文書 (MIME タイプが application/xhtml+xml で提供されている文書) では使えません。これに対するアプローチとしては、//h:p のようにあらかじめ XPath 式に名前空間の指定を含めておき、リゾルバによる名前空間接頭辞の解決時に HTML と XHTML とで処理を分けるというのが一般的でした。「XPathNSResolver のクロスブラウザとか」や「document.contentType == "application/xhtml+xml"なページでの$X」で扱っている方法です。 とはいえ、いちいち名前空間接頭辞を指定するのは面倒くさいですし、同じ名前空間に対する接頭辞が人によって違うのも不便です。XPath 式の中で要素名

  • 選択範囲のリンクを取得する: Days on the Moon

    Web ページの選択範囲に含まれるリンクを取得する方法として、Piro さんによる DOM 2 Range の compareBoundaryPoints メソッドを使ったやり方があります。これはリンクを探すのに DOM Core の機能を使って文書ツリーをたどっていますが、今現在ノードを探すといわれて真っ先に思いつくのは XPath でしょう。そこで、XPath を使って選択範囲のリンクを取得する方法を考えてみました。もちろん、選択範囲を扱う以上 DOM 2 Range も利用します。 基的な考え方 Range オブジェクトの取得 選択範囲の始点より前にあるリンクの数の取得 選択範囲の終点より前にあるリンクの取得 選択されているようには見えないリンクの除外 まとめ 基的な考え方 基的なアイデアは、選択範囲の終点より前にあるリンクで、選択範囲の始点より前にはないものが求めるリンクとい

  • Kanasan.JS JavaScript 第 5 版読書会 #5: Days on the Moon

    Kanasan.JS JavaScript 第 5 版読書会 #5 に行ってきました (当日のチャットログ、参加者のブログ記事一覧)。今回からはいよいよ第 2 部、クライアントサイドスクリプトということで、13 章全体を読みました。 控えめな JavaScript JavaScript をどのように使うかの指針として、「控えめな JavaScript (unobtrusive JavaScript)」(WaSP DOM Scripting Task Force の声明文) というキーワードが挙げられています。 HTML マークアップと JavaScript コードを分離する。 正常に機能を停止する。ブラウザがある機能を持たない、もしくは JavaScript 自体が動作しない場合であっても、コンテンツが利用可能であるようにする。 アクセシビリティを低下させるのではなく、向上させる。 これは

  • ゆの in JavaScript 1.8: Days on the Moon

    ゆの in Ruby - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtech ゆの in Squeak Smalltalk - sumim’s smalltalking-tos アニメひだまりスケッチを 2 話で切ってしまった私が通りますよ。 String.prototype .\u306F\u3088\u3044\u4F5C\u54C1\u3067\u3057\u305F = function () this.substring(0, 4); var o = 0; var X = { valueOf: function () { var _ = arguments.callee.caller; _._ += "スケッチブック ~full color's~".はよい作品でした (o^_^o); _._ += _.arguments[0]; return (this

    Yuichirou
    Yuichirou 2008/07/10
    eval(/".*?"/(_)[0]) の意味が最初分からなかった。盲点の連発ですね! (function(){var a="hoge"}).toString().match(/".*?"/)
  • 本気でやるなら黙読は避けて朗読すべき: Days on the Moon

    読書百遍義自ら見る」という言葉があります。難解な書物であっても 100 回も読めば自然と意味がわかるようになるという、熟読の大切さを説いた句です。しかし、これは当のことなのでしょうか? 2000 年もたてば社会も常識もまったく変わってきます。昔の人の言ったことが今も正しいとは限りません。 疑問があれば解明したくなるのが人の性というもの。実際に「読書百遍義自ら見る」は正しいか、確かめて紀要にまとめてくださった方がいます。それによると、女子大生にデカルトの「方法序説」を 30 回読んでもらったところ、ほとんどが内容を理解するにいたったとのこと。この言葉の正しさが見事に証明されたのです。 ただし、一点注意することがあり、それは黙読ではなく朗読するということ。人間は活字を使いだしたのはたかだかこの5千年程度のことであるが、音声を使った情報のやりとりは動物の時代から行ってきたことであるという由緒

    Yuichirou
    Yuichirou 2008/05/18
    朗読・写経のほかに、他言語の文章の「翻訳」もおススメ。http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference の一部を(本当に)翻訳した自分が言うんだから間違いない。
  • Kanasan.JS レポート

    関西での JavaScript 勉強会、Kanasan.JS に行ってきた。内容は Prototype.js のコードリーディング (バージョン 1.5.1.1 を使用)。「家に帰ってレポートを書き、主催者のブログにトラックバックを送るまでが勉強会です」と念を押されたので、まもなく Kanasan さんの記事経由で参加者各々の様子をうかがえるようになると思うけど、以下あとから思ったことも加えて私の場合をつらつらと。 JavaScript 概説 & コードリーディング プロトタイプ やはり皆さん一番引っかかるのはここみたい。おそらく、プロトタイプと名のつくものが 2 つあるのが混乱の原因だと思う。 prototype プロパティ 関数 (Function オブジェクト) のみが持つ。その関数をコンストラクタとして使ったときに用いられる。 [[Prototype]] 内部プロパティ すべてのオ

  • JavaScript で n 進数を扱う: Days on the Moon

    2 進数や 16 進数を使いたいというとき、JavaScript では組み込みの機能を利用できます。使えるのは 16 進数だけではなく、2 進数から 36 進数 (0 ~ 9 および a ~ z を使用) まで扱えます。 n 進数文字列から数値への変換 n 進数文字列から数値へと変換するときは、parseInt 関数を使います。第 2 引数に基数 n を指定することで、第 1 引数の文字列を n 進数であると解釈してくれます。n は 32 ビット整数に変換され、その値が 2 未満または 36 を超えるときは NaN が返ります。ただし、n が 0 になるときは文字列が 10 進数表記であるとして解釈されます。 parseInt(10, 36); // 36 parseInt("10", 0x100000000 + 36); // 36 基数が明示されておらず、文字列が 0 から始まっていた