タグ

ブックマーク / amachang.hatenablog.com (30)

  • はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記

    はじめに 「新はてなブックマーク」になったということで、とっても便利になったのですが、ブックマーク一覧ページ*1が若干 JavaScript に時間が掛かっているみたいです。 というわけで 調査してみたいと思います。調査して、改善できそうなところは後で纏めて「はてなアイデア」にでも登録しようと思います。 この日記は調査しながら、過程を書いていくつもりです。 準備 まずは、人のサイトの JavaScript を書き換えて試してみるための環境を作ります。 作業用ディレクトリを作る とりあえず、ホームに HatenaJS というディレクトリを作ります。 $ mkdir HatenaJS $ cd HatenaJS CocProxy をダウンロードしてくる 以下から CocProxy というツールをダウンロードしてきます。 http://coderepos.org/share/wiki/CocPr

    はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記
    facet
    facet 2008/11/27
    「CocProxy は id:cho45 が作った超絶便利ツール」。「Firebug でプロファイリング」→「実行時間のほとんどが HatenaStar.js」と判明。DOM操作→XPathに。Firefoxは「img.src の設定が激重」→「getImgSrc を上書き」。等々。amachang++
  • チャートマニアックスを公開してちょっとやる気でた - IT戦記

    作ってる途中でやる気なくなって 1 ヶ月くらい放置してたんだけど、公開したらなんかちょっと改良したくなってきた。 今から、改良してみようと思う。 終了 とりあえず、ちょこっと直すとこ直してサイトの方に反映した。

    チャートマニアックスを公開してちょっとやる気でた - IT戦記
    facet
    facet 2008/10/11
    おお、すでに3ヶ月まで見られるようになってる![GJ!] //あと問題は重さだなあ。これだけアイコン並べると落ちもする。[難]
  • 様々なソーシャルブックマークを時系列に並べて表示できるサービスを公開! - IT戦記

    きっかけ ここの部分 [6:33] えがちゃん: 口だけで何もサービスあたってねーじゃねーか [6:33] えがちゃん: 金かえせー!とかですか?>はまちちゃんさん [6:33] えがちゃん: って、なんでやねーん!(笑) egachat(2008/10/07) part2 - ついったーとHamachiya2 - はてなグループ::ついったー部 えがちゃんは、冗談で言っているのかもしれませんが、当にその通りなんですよ。 なんか、いろいろ作ってはみるんですけど、公開しないで終わったり、何もあたってなかったり orz えがちゃんは、当にすごいよ。公開して、注目を集めて。うん。ホントにすごい。 ちょっと凹んだ。 僕ももっと頑張らないとですね! というわけで、今まで公開しないで放置してたモノを公開してみる まだまだ、作りかけだけどこのままじゃずっと公開しなさそうなので! リンク http:/

    様々なソーシャルブックマークを時系列に並べて表示できるサービスを公開! - IT戦記
    facet
    facet 2008/10/10
    こういうグラフがずっと見たかった![Super!] / 「やはり原因は id:otsune」www // あー、24hだけか… //→ 3ヶ月まで遡れるようになった^^
  • 若者に一度だけ与えられる出会いの場、セキュリティ&プログラミングキャンプ - IT戦記

    はじめに 2008 年 8 月 13 日 〜 17 日まで、講師としてセキュリティ&プログラミングキャンプ 2008 に参加させていただきました。 セキュリティ&プログラミングキャンプって何? セキュリティキャンプ&プログラミングキャンプとは、 2004 年から始まった「若くて優秀なセキュリティ人材やプログラマーを育てちゃおうよ!」というイベントです。 キャンプの名のとおり 5 日間キャンプ形式で行わます。そして、毎日 8:00 〜 22:00 まで講義が行われるという大変ハードでエキサイティングなイベントです。 僕が経験したキャンプ 僕がキャンプの中で経験したこと感じたことを書いておきたいと思います。 楽しさを伝えることの重要性 僕は、 JavaScript の講義を担当していたのですが、前日まで作っていた資料とは全然違う資料を使って講義を行いました。 一日目、手を動かしながら目を輝かせ

    若者に一度だけ与えられる出会いの場、セキュリティ&プログラミングキャンプ - IT戦記
    facet
    facet 2008/10/05
    確かに「科学技術庁長官 伊藤直也」的w
  • Safari 3.1 に実装された「Client-side database storage (SQL API)」とは何か? - IT戦記

    はじめに Safari 3.1 には Client-side database storage (SQL API とも呼ばれています。)という新しい仕様が実装されました。 というわけで、この新しい API について色々調べたことを簡単にまとめておきます。 Client-side database storage が使えるブラウザ 2008 年 03 月 27 日現在では、 Safari 系のブラウザのみです。 Safari 3.1 WebKit Nightly Client-side database storage とは Selectors API とは HTML5 で定義された仕様です。詳細に関してはこちらをどうぞ。 簡単に説明すると JavaScript 内でリレーショナルデータベースを使えるということです。 もっと簡単にイメージするために、実際のコードを示すとこんな感じです。 va

    Safari 3.1 に実装された「Client-side database storage (SQL API)」とは何か? - IT戦記
  • IE8 で実装された Selectors API とは何か? - IT戦記

    はじめに IE8 には Selectors API という新しい仕様が実装されました。 ということで、今後 DOM 操作 API の主流になるであろう Selectors API についてまとめておきます。 Selectors API が使えるブラウザ 2008 年 3 月 6 日現在の一覧 WebKit Build Archives | WebKit (開発版の Safari) Windows | Official Site for Microsoft Windows 10 Home & Pro OS, laptops, PCs, tablets & more (IE8 の Beta 版) Selectors API とは Selectors API とは W3C で定義された仕様です。詳細に関してはこちらをどうぞ 簡単に説明すると getElementsByTagName や getE

    IE8 で実装された Selectors API とは何か? - IT戦記
  • IE8 速攻徹底レビュー - IT戦記

    こ、この日記、徐々に増えている・・・ というわけで IE8 の新機能、発見したら即更新 window.sessionStorage window.globalStorage キター!!!!! See Also HTML Standard See Also DOM Storage - DOM | MDN hashchange イベントに対応(HTML5 のメーリングリストで名前を揉めてた気がするけど) online offline イベントに対応 XDomainRequest (なぜ、 XMLHttpRequest level 2 にしなかったのかと(ry window.postMessage(cross-document messaging) キター!! See Also HTML Standard Selectors API キタキタキタキタキタキターーーーーーーーーーーーーーーーーーー

    IE8 速攻徹底レビュー - IT戦記
  • (function(){})() と function(){}() - IT戦記

    自分用メモ // JavaScript でクロージャを書くときこう書く事が多い (function() {})() // 何故なら // function() {}() // と書くと // function() {} が式ではなく、文として解釈されてしまうからだ。 // 文として解釈されないためには、文の途中(最初以外)に function と書いてやる必要がある // なので、まず開きカッコを書いてやる。 ( // の後に function() {} // と書いてやると function は式になる ) // 正確には、カッコの対は The Grouping Operator という演算子である。 // カッコ以外にも var a = // のように代入演算子のあとでもいい function() {} // つまり、以下のような記述も可能である。 var b = function()

    (function(){})() と function(){}() - IT戦記
    facet
    facet 2008/02/08
    ()。 /↓顔に見えるて。(){}()ガビーン ですか?www
  • 国際問題と英語 - IT戦記

    最近、 Youtube のコメント欄で違う国の人同士が口論しているのをよく見かけます。 そういうのを見てると、国が違うと文化も思想も宗教も全然違うんだなあと思うのと同時に、「国と国が、貿易や政治旅行客でしか繋がってなかった時代」とはぜんぜん違うんだなあと感動しました。 当たり前だけど、政治家と政治家が国際問題を話してるのと同時に、普通の人同士もみんな普通に話してるんですよね! これってすごいことですね! そんなことになんで今まで気が付かなかったんだろう? それはきっと英語が出来ないからだ きっと、英語が出来る人はそんな感動はとっくに経験済みなんだろう やっぱ、英語勉強しよう

    国際問題と英語 - IT戦記
    facet
    facet 2008/01/11
    そうなんだけど、英語ってのはやっぱり不公平だよな。もうどうにもならないんだろうけど。
  • ホームページを作る人の品格 - IT戦記

    以下のエントリを見てすごくすごく悲しい気持ちになったので、感情でエントリを書きます。 モバイルサイトで年収4000万稼ぐ18歳のお話なんですが*ホームページを作る人のネタ帳 さて、4000万稼ぐ方法に対して『そんな紹介はゴミを増やすだけ』は正しいのか*ホームページを作る人のネタ帳 僕はその行為やビジネスが法律的に判例的に既成事実的に正しいかという話をするつもりもありません。ただ、やめて欲しいという気持ちを込めてエントリーを書きます。 それは、学生時代に父が僕に「授業をさぼるな」と言っていたようなもので、従う義務もないし、その言葉どおり行動しなければならないというものでもありません。 まず、「広告は選ぶべき」なんですよね? この言葉が正しいかどうかはビジネス音痴な僕にはわかりません。ただ、この言葉はあなたが Yamada さんが以前ブログに書いた言葉です。 やはり広告を選ぶべき 健全に努力し

    ホームページを作る人の品格 - IT戦記
    facet
    facet 2008/01/08
    Shut the Yankee-slung up and make a better web together! …とか。 :P ←それはさておき、こういう立ち位置の表明はあり、かな。ドライブした結果が清濁混交になるのとそうでないのでは違うと思うし。…無為自然という話もあるけど(^^;
  • Firebug を「カクカク化」して $x の第 2 引数でコンテキストノードを指定できるようにする。 - IT戦記

    twitter の id:ZIGOROu と id:ku0522 の会話で $x の第 2 引数コンテキストノード指定出来たらいいよねーって話しがあって 作ろうと思って 作ったら id:os0x さんが先に作ってて http://d.hatena.ne.jp/os0x/20071213/1197515856 実装もほとんど同じだったので凹みつつ まあ、もったいないので晒そうとか思った。 で 今回は「チョコチョコいじれる化」しないでやる方法でやってみましょう。 題して 「拡張機能内に自分用の拡張空間を作っとく化」略して「カクカク化」 カクカク化で Firebug を拡張する手順は以下のようになります。 Firebug の拡張機能用のディレクトリに行く 環境 Firebug の拡張機能用のディレクトリ WinVista C:\Users\[ユーザ名]\AppData\Roaming\Mozil

    Firebug を「カクカク化」して $x の第 2 引数でコンテキストノードを指定できるようにする。 - IT戦記
  • JavaScript でこんなパッケージ管理はどうか? - IT戦記

    まず、以下のような package 関数を作る。 function package(name) { package.__hash__ = package.__hash__ || {}; if (!package.__hash__.hasOwnProperty(name)) { package.__hash__[name] = { def: function(name, value) { return this[name] = value; } } } return package.__hash__[name] } で、こんな感じで使う // ここは hoge の名前空間 with (package('hoge')) { def('var0', 1); // 変数は def 関数で定義 def('var2', 2); alert(var0); // 1 alert(var2); // 2 }

    JavaScript でこんなパッケージ管理はどうか? - IT戦記
  • JavaScript-XPath の jQuery 用のプラグインと Prototype.js 用のプラグインを公開しました - IT戦記

    以下のサイトからダウンロードしてお使いください。 Prototype.js 用 http://coderepos.org/share/wiki/JavaScript-XPath/bindings/Prototype jQuery 用 http://coderepos.org/share/wiki/JavaScript-XPath/bindings/jQuery 使いにくいところがあれば すぐになおしますので、コメントやブックマークなどで教えていただければ嬉しいです。 他のライブラリのプラグインに関して そのうち、開発したいなあとは思っているのですが。 そのライブラリの空気感(コンセプト)を読めないと、なかなか使いやすいプラグインは書けないので時間がかかりそうです。 もし 誰か書いてくれる人がいればとてもありがたいなあ。。。とか思っています。 いませんよねいませんよね><? 「こんな、感じで

    JavaScript-XPath の jQuery 用のプラグインと Prototype.js 用のプラグインを公開しました - IT戦記
  • 動的スクリプトローディング(さんざん既出だと思うけど - IT戦記

    なんか、既出な予感もするんですけど 私製版を作ったので コード var load = function(src, check, next) { check = new Function('return !!(' + check + ')'); if (!check()) { var script = document.createElement('script') script.src = src; document.body.appendChild(script); setTimeout(function() { if (!check()) setTimeout(arguments.callee, 100); else next(); }, 100); } else next(); }; 考え方は、 このエントリ と同じです。 使い方 以下の場合 // 処理 1 // ← ここで jQu

    動的スクリプトローディング(さんざん既出だと思うけど - IT戦記
  • Shibuya.JS の資料「The next genaration of browsers」公開 - IT戦記

    Shibuya.JS の資料を公開します。 発表は時間がなくて飛ばし飛ばしになってしまいましてすみませんでした>< リンク 発表の資料 http://amachang.art-code.org/shibuyajs24/ ちなみに、資料のブラウザアイコンで黄色で囲ってあるやつは新しく実装されたという意味です。 発表の動画 at Google Video http://video.google.com/videoplay?docid=-7565816545804603660

    Shibuya.JS の資料「The next genaration of browsers」公開 - IT戦記
    facet
    facet 2007/09/19
    Elementt.contentEditable ⇒「Google→Yahoo!」www; Offline Cache; Alternate Style Sheet(ASS) API あるたねいと; CSSOM; DOM 3 XPath; showModalDialog; 「Safari 3 お薦めです。あ、」www
  • 正規表現の XPath 字句解析その2 - IT戦記

    またまた XPath ネタです。 先日、XPath の字句解析をワンライナーで作ってみた。 - IT戦記で書いた正規表現の XPath 字句解析ですが、よく考えるといろいろおかしかった(不正な文字が無視されたりする)& id:otsune さんからコメントやブクマの突っ込みもありまして、1から正規表現を勉強してから新しく書き直すことにしました。 正規表現の勉強方法 以下の二つの方法で勉強しました。 1.SpiderMonkey の正規表現デバッグオプションを使う SpiderMonkey をビルドするときに、以下のフラグを付けてビルドします。 $ make -f Makefile.ref "DEFINES=-DREGEXP_DEBUG -DDEBUG"こうすると正規表現がどういう風に実行されたかを調べることができます。 こんな感じ $ js js> 'foobar'.match(/o+/)

    正規表現の XPath 字句解析その2 - IT戦記
  • とてもシンプルに自分自身が属する script 要素を取得 - IT戦記

    グローバル領域に以下の一行を書く <script> var currentScript = (function (e) { if(e.nodeName.toLowerCase() == 'script') return e; return arguments.callee(e.lastChild) })(document); alert(currentScript); </script>こうすることで、currentScript はこの script 要素を指す。 いちおう説明 DOM は構築されるときに、上から順番に構築される。そして、script タグがあると、 script 要素を構築したあとに、スクリプトを実行する。 つまり、スクリプトが実行されたとき script 要素は今まさに作られたばかりであり、それよりも後ろの要素が存在しない。さらにこの script 要素を含むすべての要

    とてもシンプルに自分自身が属する script 要素を取得 - IT戦記
  • Key(board)?Event is evil. - IT戦記

    keypress, keydown, keyup をクロスブラウザに飼いならそうとして 丸一日翻弄されてしまった。色んな実装を読んだ。しかし、未だシンプルな解決策が見つからない。 ここらで身を引こう>< 一応、実験に使ったコードは晒しておきます。 http://amachang.art-code.org/kev/

    Key(board)?Event is evil. - IT戦記
  • IE 以外の JavaScript で getter setter が使えるようになる! - IT戦記

    Opera 9.5 では getter setter が使えるようになります。 http://my.opera.com/desktopteam/blog/kestrel-is-coming で Safari 3 でも使えるか試してみたら・・・ alert({ get x() { return 'ok' } }.x); // ok つ、使えた! Firefox でも かなり前から getter setter が使える という事は・・・ IE 以外で getter setter が使えるのはもうすぐだ!!! IE にしかないプロパティを他のブラウザで実装することができるようになる!! たとえば、こんな感じ? // ↓条件付きコンパイル /*@cc_on @if (@_jscript) @else @*/ if (!('returnValue' in Event.prototype)) { Ev

    IE 以外の JavaScript で getter setter が使えるようになる! - IT戦記
  • getComputedStyle について調べてたら深みにハマったのでメモ - IT戦記

    getComputedStyle とは!? ある要素にどんなスタイルが当たっているかを計算してくれる。便利な関数。 使いかたはめっちゃ簡単! var style = getComputedStyle(element, ''); alert(style.fontSize); // 14px alert(style.color); // rgb(0, 0, 0) ちなみに第二引数は疑似要素の style を取りたい場合に使います。通常は空文字列でいい。 でも、 getComputedStyle はこのままでは IE, Safari では動かない。 Safari では window(グローバル領域) に getComputedStyle は定義されてなくて、 document.defaultView だけに getComputedStyle が定義されている。 ちなみに、 Firefox, Op

    getComputedStyle について調べてたら深みにハマったのでメモ - IT戦記
    facet
    facet 2007/06/11
    すばらしい。 element.currentStyle || document.defaultView.getComputedStyle(element, '')