タグ

ブックマーク / la.ma.la (25)

  • 最速インターフェース研究会 :: ライブドアのテクノロジーセミナーでしゃべってきました

    昨晩はライブドアで開催されたテクノロジーセミナーで「Technologies for UI」という題でプレゼンをやりました。 発表資料はpdfhtmlで公開する予定ですが、とりあえずテキストだけ先にアップしておきます。 http://ma.la/files/livedoor/seminar2006/seminar.txt プレゼンツールがFirefox専用だったりするので、これも少し手直しして公開予定です。 こういう機会があるたびにプレゼンツールを作ってるような気がします。 ---- 追記:12/15 ライブドアのtechblogの方に発表資料をアップしました。 http://blog.livedoor.jp/techblog/paper/ldtech2006/ 上下カーソルキーでページをめくれます。

    wablog
    wablog 2007/02/12
    「必要なデータだけを逐次、受信、描画」「素早く、迷わず、正確に実行できるか」「正しさ=速さ」「誰もApaceの応答速度なんか気にしちゃいない」「両面からのアプローチが重要」「中断、再開が可能なアルゴリズム」
  • 最速インターフェース研究会 :: Ajaxを使ったシンプルなチャット

    を作ってみました。 http://la.ma.la/misc/ajaxchat/ サーバーサイドのソースは5行です。 http://la.ma.la/misc/ajaxchat/write.txt CGIを使うのは書き込みの時だけで、表示はXMLHttpRequestを使ってログファイルを直接読み込みます。更新は差分取得で転送量とサーバー負荷を減らしています。 IEとFirefoxでしか動きません。 Operaはリクエストヘッダのセットが使えないので無理。 仕組み -HEADリクエストでログファイルのサイズを取得 -ファイル末尾1KBを取得 -レスポンスヘッダから最終更新日と現在のファイルサイズを保存 -If-Modified-SinceとRangeヘッダをセットして定期リロード とりあえずこれだけです。参加者表示も何もつけてませんが、改造の雛形にでもどうぞ。 Range付きのリクエストは

    wablog
    wablog 2007/02/11
    Range ヘッダ
  • 最速インターフェース研究会 :: livedoor Readerを十字キーで操作するためのGreasemonkeyスクリプト

    思うところあって作ってみた。カーソルキーだけで読めます。IME有効無効に関わらず使えます。 http://la.ma.la/misc/userjs/ldrkeybindforldr.user.js フィード一覧フォーカス時 ↑ : 前のフィードを選択 ↓ : 次のフィードを選択 → : 開く 記事画面フォーカス時 ↑ : 前の記事に移動 / 前のフィードに移動 ↓ : 次の記事に移動 / 次のフィードに移動 → : ピンを付ける / 外す ← : フィード一覧にフォーカスを移す

  • 最速インターフェース研究会 :: ページレンダリングを妨げないdocument.writeの実装

    とてもシンプルに自分自身が属する script 要素を取得 http://d.hatena.ne.jp/amachang/20061201/1164986067 document.writeをDOM仕様にする http://nyarla.net/blog/javascript-tips1 あたりに着想を受けて、作ってみました。 http://la.ma.la/misc/js/lazy_writer/ 特定のscript src内のdocument.writeをピンポイントに置き換えることができます。 制限事項としては、document.writeを使ってscriptタグを生成するようなコードの場合、IEではinnerHTMLにscriptを書いても実行されないという仕様があるので実行されません。その点を除けば、IFRAMEをdocument.writeで挿入するような、良くある広告系のdo

  • 最速インターフェース研究会 :: Firefoxの拡張MozLabの中に含まれるMozReplがヤバすぎる件について

    MozLabという拡張を昨日知ったのですが http://dev.hyperstruct.net/trac/mozlab この中に含まれているMozReplというのがヤバい。Firefoxにtelnet接続できるようになる。 とりあえずRubyで書いた簡単なサンプル、今見ているページをリロードするだけ。 require 'net/telnet' telnet = Net::Telnet.new({ "Host" => "localhost", "Port" => 4242 }){|c| print c} telnet.puts("content.location.reload(true)") telnet.close ひたすら自分が見ているURLとページタイトルを記録する系とか簡単に作れそう。 今見ているページのURLとタイトルを取得するサンプル。 require 'net/telnet'

  • 最速インターフェース研究会 :: SafariのAjaxの文字化けをクライアント側だけで対応するバッドノウハウ

    SafariでXMLHttpRequestのresponseTextが文字化けするという話。 http://blog.33rpm.jp/garbled-on-safari.html 最近のバージョンだとcontent-typeがちゃんとしてれば化けなかったような記憶があるけど、まあともかくとして、Safariで文字化けするのはJavaScript側だけで対処することができたりする。 http://kawa.at.webry.info/200511/article_9.html これ読んでほんとかよ、って感じだったんだけど案外役に立った。livedoor Readerで使われてたり。 実際に使われてるコードはこんなの。 if(browser.isKHTML){ ajax.filter.add(function(t){ var esc = escape(t); return(esc.index

  • 最速インターフェース研究会 :: JavaScriptでPythonのsetみたいなの

    http://la.ma.la/misc/js/set/ Pythonのset型をjsに移植してみた。setってのは要素が重複しないリスト。 http://www.python.jp/doc/release/lib/types-set.html 配列として扱いたいケースが多いように思うのでArrayを拡張してSetのメソッドを加える感じで作った。制約付きの配列、みたいな感覚で扱えるように。addやupdateを使わずにpushを使って要素を追加すると重複してしまう(pushも上書きすればいいけど、直接値を代入されたらどうせ防げない)。なので厳格ではない。格納できるのはstringとnumberとboolean型のみ。でもエラーが出るわけでもない。そこら辺いい加減なので作り直すかも。 用途としてはAさんとBさんとCさんがブックマークしてるURLとか、にも関わらずあなたがブックマークしてないU

  • 最速インターフェース研究会 :: IEの遠隔操作用ライブラリmechanize.js

    先日のShibuya.js Techtalk#2では開発手法の話とかは(前回話したので)あまりしなかったのですが、そういう話を知りたいという人も多いようなので適当に公開していこうと思います。 http://la.ma.la/misc/js/mechanize/ WWW::Mechanizeと似たインターフェースでIEを遠隔操作するライブラリです。htaから呼び出してテスト用のツールを作ったりします。wshからも使えると思います。 機能的には最低限のものしか実装してません。ファイルのアップロードとかはJS側からいじれなかったと思うので多分無理です。 この手のツールではseleniumというのが有名なのですが、多機能すぎて使い方が良くわからないので自作しました。単純な動作確認や連投に使ったりします。 これを使ってアレをナニしたりしているのですがとてもここには書けません。

    wablog
    wablog 2006/07/20
  • 最速インターフェース研究会 :: Haskell風にJavaScriptを書く

    ていうのをだいぶ前に作ったんだけど、コードがごちゃごちゃで何やってるか自分でもよくわかってなかったのでちょっと整理して公開。フィボナッチ数列を求めるのに大変便利です。 http://la.ma.la/misc/js/haskell/ 関数の定義を記述すると、再帰処理でごにょごにょやって求めてくれる関数を生成します。メモ化もします。色々いじってたらなんとなく出来た。あんまり細かいツッコミされても困る。 実際のところJavaScriptは再帰処理をたくさんさせるとすぐにスタックオーバーフローで止まってしまうので使い物になりません。数を大きくすると即死したりするので注意が必要です。タイマーを使って再帰処理させるとかトリッキーなことをすれば回避することもできるのだけれど面倒くさい。 遅延評価っぽくなっていて、 // 代入はできる test = ack(100,100); // アッカーマン関数(1

    wablog
    wablog 2006/06/19
    「実際にその値が使用されるまで演算を遅らせることが可能」
  • 最速インターフェース研究会 :: そろそろライブドア事件について一言いっとくか

    ライブドアの件で最速に一言いわせてもらう 最速インターフェース研究会 :: そろそろライブドア事件について一言いっとくか2月1日付けで株式会社ライブドアに就職しました。 最速な人が来た。 - にぽたん研究所 弊社に、最速インターフェース研究会の片栗 X こと mala らんが join しました。 おめでとうございます! 思えば(検閲されました。)で、(特捜部に消されました)とかで(Z部さんからクレームがきました)ホルモンカワユスだったりしたわけですが、実にめでたいです。 そして(id:jnaoyaに怒られました)ですよね? じゃなーい! せっかくライブドア入りたい!をわがまま言って作ってもらったのに、ちっとも活用されていないじゃないですか! はてな入りたい!とかSixApart入りたい! (その後)とか活用されまくっているというのに!!!! ひどいひどいひどい! さっきはてなダイアリー市

    wablog
    wablog 2006/02/01
    キター
  • JavaScript::DebugScreen

    デバッグに役立つかもしれないライブラリ 公開 : 2006-01-15 更新 : 2006-01-16 License : Same as Perl See also : http://www.bigbold.com/snippets/user/ma.la サンプル ダイアログはダブルクリックで消えます。 Firefoxだとeval系の行番号が正確に出ません 伝家の宝刀 Null またはオブジェクトではありません IEだと外部jsファイルのエラーを補足できません 使い方 debug.js debug.css ie_xmlhttp.js ファイルを保存してheadタグの中にこんな感じで貼り付ける。 <link rel="stylesheet" href="debug.css"> <script type="text/javascript" src="ie_xmlhttp.js"></scri

  • 最速インターフェース研究会 :: Firefoxでテキストをクリップボードにコピーする方法

    動作デモ http://la.ma.la/misc/js/setclipboard_for_firefox.html Firefox1.5 + FlashPlayer8.5で動作確認してます。Opera8.5では動いたがOpera9では動作せず。Safariは知らない。FlashPlayerのバージョンによっても何か違うのかもしれない。 元ネタ http://a-h.parfe.jp/einfach/archives/2005/0706043145.html IEではデフォルト設定でブラウザからクリップボードの読み書きができる、というのは割と有名な話ですが、Flashを使うとIE以外でもクリップボードにテキストをコピーすることができます。上書きのみで読み込みはできないようなので多少は安心です。(クリップボードが勝手に置き換わってしまう、という悪戯はできる) で、このFlashを使ったクリッ

  • 最速インターフェース研究会 :: 全てのWeb開発者必見 : remember the milk のサインアップフォーム

    ライブドアの次世代テクノロジーセミナーの後の二次会の後のSledge勉強会で発表したネタ。 http://www.rememberthemilk.com/signup/ Ajaxを使ったTODO管理やらリマインダサービスらしいのですが、これのサインアップフォームがとてもよく出来ています。苗字と名前から自動でアカウント名を補完してくれたり、それをサーバーに問い合わせてそのアカウントが取得できるかどうかを確認してくれたりします。 肝心のサービスの中身は使いやすいのかどうか良くわかんないというか、正直微妙な感じなんですが、一度しか通過しないサインアップフォームを作りこむ心意気が良いですね。 別に必見ってほどでもないか。でも知ってる人がいなかったのでブログに書いておくことにします。 ユーザーを「手厚く」サポートする UI 最速インターフェース研究会さんの 全てのWeb開発者必見 : remembe

    wablog
    wablog 2005/12/17
  • 最速インターフェース研究会 :: del.icio.us買収と1470.netのExit戦略

    すでにあちこち書かれているけど米Yahoo!がdel.icio.usを買収した。 del.icio.usは良くあるネットベンチャーではない。買収されるために作った会社、というのは、まあ実際そうだろう、実際そうだろうけれどもそんなこと言うやつはスーツ脳だ。スーツ脳の恐怖だ。 del.icio.usは完全独立中立国家だった。 - 概要を取得してAdsenseを貼り付ける、であるとか。 - AmazonのURLならアソシエイトIDを付加する、であるとか。 そういうことをしない。 AmazonのURLは正規化したほうがいいに決まってるのにそういう特別扱いをしない。クロールをしない。ブックマーク以外のデータを保持しない。URLのMD5ハッシュ値をキーにしていてdel.icio.usにURLを教えずにそのページに関する情報を取得することが出来る(これは、だいぶ昔に書いた)。完全一致の取り出しに特化して

    wablog
    wablog 2005/12/12
  • 最速インターフェース研究会 :: 全てのWeb開発者必見:fluxiom

    fluxiomである。 http://www.fluxiom.com/ fluxiomはRuby on Railsで作られた、ソーシャルとタギングを備えたオンラインファイラーというようなものらしい。まだサービス開始していないが、デモムービーが公開されている。 fluxiomを開発している会社はscript.aculo.usの開発元ということであるので、 当然「Rails + prototype.js + script.aculo.us」で作られている、ということになるのだろう。 と思ってみたら、開発者のBlogに追記されていた。「Ruby on Railsで作られていて、Flashは一切使っていない」ということである。 http://mir.aculo.us/articles/2005/11/24/fluxiom script.aculo.usは「web2.0 JavaScript」だそう

  • 最速インターフェース研究会 :: [速報] GoogleのRSSリーダー(β版)、早速真似して作ってみた

    GoogleからRSSリーダーがリリースされましたね。 http://www.google.com/reader/ ソース読むのとか面倒なんで真似して作ってみました。だいたい6時間ぐらいで出来た。 http://la.ma.la/roll.html このBlogで使ってるjsファイルをちょっといじって使ったので、キャッシュ利いてて動かない場合はリロードしてみてください。 Firefoxだとアニメーションがやや重い。アニメーションを無くせばもっとサクサク動くんだけどGoogleReaderよりは軽いんじゃないかと思う。 Operaはなんかスクロールしていくと強制終了します。アニメーションさせつつ、上下の要素を継ぎ足すようにしてやれば多分大丈夫だとは思うけど面倒なので現時点ではそこまでやってない。 あとはIEとFirefoxではホイールを使ってページ切り替えられるようになっています。 Goog

  • 最速インターフェース研究会 :: 実践JavaScriptリファクタリング

    同じ事をやるにも、いろんな書き方があるわけでいかにして短くてわかりやすいコードを書くかというノウハウを紹介します。 例として"abcde"を80回繰り返した文字列を作るとして実際に自分のコーディングスタイルがどんな風に変化していったのか、という。 短くなるのは確かなんだけどわかりやすいかというと、人によるかもしれない。 グローバル関数を定義2年前なら、多分こういう具合だった。 //ふつうに関数として定義する function x(str,num){ var tmp = ""; for(var i=0;i<num;i++){ tmp += str; } return tmp; } x("abcde",80) Stringのメソッドとして定義1年前だとこんな感じ。 //Stringのメソッドとして定義する String.prototype.x = function(num){ var tmp

  • 最速インターフェース研究会 :: IEでXMLHttpRequestを使えるようにする

    もうあんまり需要無いような気もするけど。 IEで「new XMLHttpRequest」と書けるようにするラッパを書いてみた。 XMLHttpRequest for IE http://la.ma.la/misc/js/ie_xmlhttp.html 結構前にIE7(JavaScriptの方)の人が似たようなのを作ってたのですが、 http://dean.edwards.name/weblog/2004/11/ie7-xml-extras/ ふつうに使う分にはこれでも問題はないです。 if(typeof ActiveXObject == "function" && typeof XMLHttpRequest == "undefined"){ XMLHttpRequest = function(){ return new ActiveXObject("Microsoft.XMLHTTP")

    wablog
    wablog 2005/09/04
    ][javascript]
  • 最速インターフェース研究会 :: むしろdocument.writeの方を書き換えて遅延ロードを実現する

    一つ前のエントリの続き。 document.writeを使うデメリットは一個前に書いたとおり、jsファイルを置いてあるサーバーのレスポンスに引きずられてページの描画が遅くなる、ということなんだけど 広告にせよRSS貼り付けにせよ、どれもこれもdocument.writeで表示するHTMLを書き出すものばかりなので、むしろdocument.writeの方を書き換えてみることにした。 ビフォー http://la.ma.la/misc/js/feed2js_old.html アフター http://la.ma.la/misc/js/feed2js.html Feed2JSというサービスを使っている。 http://jade.mcli.dist.maricopa.edu/feed/ 来は、Scriptタグの挿入位置にRSSやAtomフィードを貼り付けるサービスだ。前者が来の使い方で、docu

  • 最速インターフェース研究会 :: マウスホイールを使って何が出来るか

    あまり気が進まなかったのだが、サンプルとして適当だったので作ってみた。 Winkで作ったデモ。 http://la.ma.la/misc/demo/rssroll.htm Greasemonkeyスクリプト、Firefox限定 http://la.ma.la/misc/userjs/HatenaRssRolling.user.js デモ見てもわかりづらいが、見出しの部分の上でマウスホイールを回転させるとアイテムがロールする、クリックで開閉。マウスを動かさずに読むことが出来る、というもの。いまいちだったのでカーソル上下左右でも回転と開閉できるようにしてみた。 はてなは敵なので作りこむ予定無し。 Firefoxでマウスホイールにイベントを割り当てたときにスクロールをキャンセルする方法が全然わかんなかったのだが「event.preventDefault()」というのを使えば良いことがわかった。I

    wablog
    wablog 2005/07/11
    「つるつる」に同意。「Ctrl+Sでページを保存するWikiとか作れそうだ」 TiddyWiki 改造してみるかー