2009-01-01から1年間の記事一覧
Mozilla 勉強会 « Mozilla Developer Street (modest) プレゼン資料 アプリケーションプラットフォームとしてのFirefox拡張 HTMLでプレゼンを作れるS5を使っています。gitとの相性もいいし、ブラウザの表現力を活かせるので好きです。 Firefox3 Hacksにサイ…
昨年の12月ごろ、つまりちょうど1年前に、XMPPとFirefox拡張の勉強を始めました。正月はずっとFirefox3 Hacksを読んでいました。Firefox 3 Hacks ―Mozillaテクノロジ徹底活用テクニック作者: 江村秀之,池田譲治,下田洋志,松澤太郎,dynamis出版社/メーカー: …
※むすびが必要です。 むすびを使って、このページを開いてから、ブラウザのブックマークから遊びたい相手を選んでください。 それでブラウザのアドレスバーがこのようなxmpp URIになっていればOKです。 romeoとjulietが遊ぶURI xmpp://romeo@gmail.com/Musub…
むすびがバージョンアップして、リダイレクションとパイプ機能がつきました。さて、WWW、特にURIは、世界規模のファイルシステムを実現しました。 しかし、今のWebには、ファイルとして表現できないものが生まれています。 それは、Twitterなどからリアルタ…
むすびに新しいサンプルを加えました。 お買い物ごっこをするページで、相手(店主)とリアルタイムにチャットしたり、交渉したりできます。 動画(0.7MB) http://eva-lu-ator.net/~gemma/geocities/musubi/shop.wmv チェスでは、双方ともchess.htmlを見てやり…
対話するWebというと、マルチエージェント、アクターモデル、並行計算、も気になるので、 ロビン・ミルナーの本をちょっとかじってみる。Communicating and Mobile Systems: The Pi-Calculus作者: Robin Milner出版社/メーカー: Cambridge University Press…
ここ5年くらい、いくつかのWebサービスを組み合わせて新しいものを作るという、マッシュアップがさかんです。 私も、クラウドでLinuxディストリビューションにあたるものは何になるだろう?にあるようなことを夢想していました。Webサービス同士の糊になるの…
Google Waveは、電子メールを置き換える可能性を秘めたWebサービスと言われています。 Musubiは、インスタントメッセージ(IM)を置き換える可能性を秘めたFirefoxアドオンです。 リアルタイムWebコミュニケーター「Musubi」 1.0.0 Google Talk(Jabber, XMPP)…
XULのローカライズにはdtdファイルを使い、Javascriptのローカライズにはpropertiesファイルを使います。今回は、ローカライズした"hello,world."ボタン、つまり、"こんにちは、世界。"ボタンを作ってみましょう。 マッチFOXは"Strings.jsm"ライブラリをご用…
アンカで並び替えて、例えばこのように7の次に11を表示するような処理を説明します。
友人と、子どもにコンピュータや数学に興味をもってもらうには、という話をしていて、 アリの餌集めなら、子どもに身近だし、群知能やランダムウォークに繋がるし面白いんじゃないか、となった。 Processingでもいいけど、ブラウザのJavascriptでCanvasを使…
2ちゃんねるなどでリンク避けとして"ttp://..."を使うことがあります。 今回の拡張では、ttpプロトコルを定義して、"http://..."と同様に扱えるようにしましょう。 ttpプロトコルを扱うXPCOMコンポーネントのクラスを登録します。 そのクラスのnewURI関数で…
マッチFOXに同梱しているDatabase.jsmライブラリは、SQLite用のORマッパです。tomblooが開発しました。 使用例 // Bookmarkモデルを生成。 var Bookmark = Entity({ name : 'bookmarks', fields : { id : 'INTEGER PRIMARY KEY', url : 'TEXT UNIQUE NOT NUL…
マッチFOXが生成するPrefs.jsmは、Firefox拡張でユーザ設定(about:configのアレ)を簡単に読み書きできるライブラリです。 ユーザ設定とは nsIPrefBranch - MDC Preferences - MDC ユーザ設定の項目の値には型があるので気をつけます。 boolean (真偽値) inte…
XMPPはインスタントメッセージのプロトコルで、Google Talkが使っています。 今後はGoogle Waveの基盤としてますます重要性が増す要注目のテクノロジです。そして!ついに!Google App EngineがXMPPをサポートしました! Google App Engine Blog: App Engine…
Firefox拡張はスクレイピングの最終兵器です。 今日は、某占いサイトをスクレイピングして、自分の星座のお告げを抜き出します。 某占いサイト スイーツ(笑)テーブルレイアウトです。 先にFirebugで、抜き出したいところのXPathを調べておきます。 個人的にC…
それでは実際にFirefox拡張を作ってみましょう。 全てのタブの、アドレスとタイトルを取得して、はてなダイアリーのリンクにするサイドバー拡張を作ります。タブの情報は、メインウィンドウのwindow.gBrowser変数に入っています。タブブラウザ用コード - MDC…
windowオブジェクトの入れ子について いつもwindow.alertなどで見る"Webページのwindow"のさらに上には、ブラウザ全体を支配する"XULのwindow"があります。 もちろんWebページ側からは触れませんが、Firefox拡張ならXULのwindowをいじれます。ブラウザはこの…
開発者必携ツール DOM Inspector 右クリックメニューを拡張したいんだけどデータどこにあんねん、というとき便利。 QuickRestart ブラウザを再起動して拡張プログラムをリロードするとき便利。 Console2 Javascriptコンソールの強化版。エラーメッセージをよ…
Firefox拡張を作りたいけど、ややこしくて手がつけられない、そんなあなたに・・・! 簡単キット"マッチFOX"。Ruby on Rails みたいに、scaffold(骨組み)を作ってくれます。この骨組みには、はてなブックマーク拡張から取り出したエッセンスが入っていて、 …
どぼん on Javascript ネタ元 BiwaSchemeでゲームつくった - リリカル☆Lisp開発日記 zickさん作の"どぼん on BiwaScheme"をJavascriptに移植した。 元が美しいSchemeコードだったので流れるように移植できた。これだけ複雑なトランプゲームをBiwaSchemeで書…
Class: <xmpp-connection> サーバへのXMPPコネクションを保持するオブジェクト。以下の公開スロットがあります。 stream-id: 接続時にサーバが提示したXMPPストリームのid。文字列。 features: 接続時にサーバが提示した<features>の内容。SXML。 Condition: <xmpp-error> サーバから接続が切られた</xmpp-error></features></xmpp-connection>…
GaucheでXMPPクライアントを作ろう! Gauche-xmpp-1.0.tgz gitリポジトリ http://github.com/gemmat/Gauche-XMPP/tree tweet.IMを使えばTwitterクライアントにもなる! ただし、Google Talkには直接繋げません。(私がTLSをまだ実装していないので) jabber.jpや…
みなさんこんにちは!私はアーキテクチャ宇宙飛行士です。 今日はみなさんを、インターネットOSの旅へとご案内しましょう! インターネットOSとは ティム曰く: 次第に我々はウェブサービスの荒野が変わるのを目の当たりにするだろう。開拓段階である第一段…
Klab 天下一プログラマーコンテスト 以下の文字列はUTF-8を文字エンコーディング形式とする16進数のバイト列である。 UTF-8でエンコーディングされた文字列として解析した場合、この文字列の【文字数】を答えなさい。 e4bba5e4b88be381aee69687e5ad97e58897e…
素因数分解: ツムジのひとりごと ありがとうございます。111111111の計算に48秒もかかるのは私のミスです。factorizeの終了条件に[ (use util.stream) (define (composites s) (stream-delay (let1 p (stream-car s) (stream-cons (expt p 2) (xor (stream-m…
みずぴー日記 素因数分解がナメたコードを書くことでおれの怒りが有頂天 Gaucheでエラトステネスの篩で素数ストリーム(世間一般のやつより速い)で破壊力ばつ牛ン (use util.stream) (define (composites s) (stream-delay (let1 p (stream-car s) (stream-con…
こいつの使いかたをググると、onDataAvailableのたびに配列(メッセージキュー)に並べておいて、上から順番に処理するコードがよく見つかる。 Fx Socket - 枕を欹てて聴く 実はAjaxのとき話題になったんだが、ジェネレータで、こういった非同期処理を同期処理…
Haskellなどで人気の1行エラトステネスの篩は、アルゴリズム本来の計算量より遅いらしい。 sieve (p : xs) = p : sieve [x | x <- xs, x ‘mod‘ p > 0] LtU:The Genuine Sieve of Eratosthenes Wikipedia:en:Sieve of Eratosthenes それを受けて、LtUで以下の…
内包表記、百花繚乱。 ナイーブな実装なので、がんばればもっと速くなる。参考文献をどうぞ。 うっかり list:ec とtypoして、気づくのに20分ほど無駄にしたのはナイショだ。 (use srfi-42) (define-syntax vector-flip! (syntax-rules () ((_ vec i) (vector…