タグ

ブックマーク / os0x.hatenablog.com (35)

  • Chromeで読み込みに失敗した画像についてリファラを消して再読み込みを試みる方法 - os0x.blog

    [追記]実際に使用したい方は @civic さん作のLDR Image Loader extensionをどうぞ。 Chrome Dirty Hacks 01: fc2 image for LDR - 枕を欹てて聴くの別解みたいなのです。要は、livedoor Readerでfc2やアメブロの画像を表示してやろうというネタです。 まず、id:edvakfさんが実験していた edvakf's gist: 48621 — Gist から インラインフレームにdataスキームでhtmlを挿入するとlocationがそのdataスキーム自身になり、そこからのリクエストにはリファラがつかない というテクニックを応用して、さらに errorイベントキャプチャリングフェーズで監視*1して画像のerrorを捕捉 インラインフレームを作ってデータスキームのhtmlを挿入し、そのなかで読み込みに失敗した画像を

    Chromeで読み込みに失敗した画像についてリファラを消して再読み込みを試みる方法 - os0x.blog
    Cherenkov
    Cherenkov 2012/05/14
    リファラ referer img iframe dataURI dataスキーム script埋め込み MessageEvent postMessage APIで通信
  • Google ChromeのJavaScriptデバッガの進化がすごい - os0x.blog

    Chrome版のFirebugことGoogle Chrome Developer Toolsですが、以前gihyoで解説したときよりさらに便利になっているので、少し紹介します(元はWebKitなので、そのうち(近いうちに)Safariでもそれなりに使えるようになるはずです)。 圧縮されたコードの整形 まず、目立つところからいきましょう。ちょうど先日更新されたChromeのdev版(12.0.742.0)に搭載されたばかりの機能で、minifyされているJavaScriptコードを読みやすいように整形して表示してくれるというものです(IE9の開発者ツールにも実装されている機能です)。 例えば、Google Analyticsのコードは圧縮されていて普通は読めません。 しかし、Chromeのデベロッパーツールなら、 このように整形してくれます。 やり方は簡単で、デベロッパーツールのScript

    Google ChromeのJavaScriptデバッガの進化がすごい - os0x.blog
  • JavaScriptのデバッグTips - os0x.blog

    JavaScript Advent Calendar 2010 8日目担当のid:os0xです。 JavaScriptネタは案外範囲が広くて色んなネタがあるので、毎回が楽しみですね。 さて、私はデバッグをネタにしたいと思います。テストではなくデバッグです。誰かが書いたコードをメンテナンスしなきゃー、とか。jQueryプラグイン導入しようとしたけど、なんかうまく動かないーみたいなケースのおはなしです。 JavaScriptのデバッグは大変なので、多くの方が日々苦労されていると思います。なぜJavaScriptのデバッグが大変なのか少し整理してみましょう。 ブラウザ依存 まず、なんといってもJavaScriptはウェブブラウザ上で実行されるので、環境が一定ではありません。特定の環境だけを対象にJavaScriptを書くことは滅多にありません。PC向けではIE、Firefox、Chrome、Sa

    JavaScriptのデバッグTips - os0x.blog
  • はてなダイアリーの日記モード・見出し別ページ時のタイトルを適宜変えるScript - os0x.blog

    タイトルの通り。id:rikuoとかid:ono_matopeとか、id:technohippyとか。ブクマするにもリンクするにも毎回手間がかかるので、カッとなって書いた。 http://userscripts.org/scripts/show/40823 重要度は低いだろうけど、hashが変わるのにもタイマーで監視(見出しがあったら監視する実装)して対応 (onhashchangeほしい クロスブラウザな onhashchange イベント (作りかけ) - Yet Another Hackadelic)。 ちなみにこういうタイトルを弄るScriptでは、AutoTitle for Greasemonkeyっていう汎用的なScriptがある。 例によって、なるべくシンプルな実装にしたつもりだったんだけど、CentOS 5でMySQL5.0からMySQL5.1にRPMアップデートした -

    はてなダイアリーの日記モード・見出し別ページ時のタイトルを適宜変えるScript - os0x.blog
    Cherenkov
    Cherenkov 2011/02/19
    ムキー
  • MacをJavaScriptの開発環境にするメモ - os0x.blog

    以前は自宅も仕事Windowsメインな環境だったんですが、仕事の方がでMac+英語キーボードな環境になり、ついでなので自宅もそれに合わせることにしました。 環境はMac miniの最新型で一番安いの(6月くらいに購入)とMacbook Airのやっぱり一番安いの(11月に購入)です。両方合わせて15万くらい。お手頃…なのか?どうでもいいけど、mac miniは1.3kgしかなくて、Macbook Airの13インチとほぼ同じ重さだっりします。miniデスネー。 ついでにWindowsのほうは2年半前に買ったCore2duo(Windows7アップグレード済み)で、当時そこそこハイエンドだったやつです(ちょうどMac miniと同じくらいのスペックだけどこいつは一体何kgあるんだろう…)。 以下、Macの開発環境をなるべく最近の流行りを取り入れてレポートします。 ブラウザ さて、マシンのセ

    MacをJavaScriptの開発環境にするメモ - os0x.blog
  • Event Driven JavaScript - os0x.blog

    document.createEventとdispatchEvent、addEventListenerを使ってイベントドリブンに書いたJavaScriptがオレブーム(ただし、IE非対応*1 )なので、軽く紹介してみたいと思います。 具体的には、AutoPatchWork (Google Chrome Dev用のextension)をイベントドリブンで実装しています。 AutoPatchWork.jsが2009/06/11 21:00時点のソース(id:nanto_viのコメントをうけて#を.に変更済み)。シンプルさを重視しているので、324行と短めです(CSSは別ファイルですが)。 window.addEventListener('scroll', check_scroll, false); window.addEventListener('AutoPatchWork.request',

    Event Driven JavaScript - os0x.blog
    Cherenkov
    Cherenkov 2011/01/22
    イベントドリブン
  • prototype.jsからjQueryに移行するたったひとつの冴えたやりかた - os0x.blog

    どうもこんにちは、os0xです。 実は(Twitterに書いただけで)ブログに書いてなかったのですが、3ヶ月ほど前からクックパッドで働いています*1。なんかもう今更ですよね、すみません。 さてさて、クックパッドですが、つい一昨日までprototype.jsを使っていました。で、昨日jQueryへの移行をリリースしたところだったりします。 というわけで、その辺の話を少し書いてみたいと思います。 そもそも、なんでjQueryに移行するのか まあ、prototype.jsとjQueryどちらを使うかと問われたら、大抵の人はjQueryと答えますよね。確かにjQueryの使いやすさは魅力的です。使いやすいということは、みんなでjQueryを使ってサービスを作ることができます。特定の誰かに依存してボトルネックになったりすることがないなら、それは素晴らしいですね。 しかし、ライブラリを変えるのは簡単な

    prototype.jsからjQueryに移行するたったひとつの冴えたやりかた - os0x.blog
    Cherenkov
    Cherenkov 2011/01/21
    「FirefoxとIEではwindow.onerrorを定義しておくと、ページ内で起きたすべてのJavaScriptエラーを捕まえてくれます。Firefoxでは(new Errorで)スタックも取れますし、IEでは呼び出し元関数を取れたりする」
  • NinjaKit - os0x.blog

    NinjaKit*1というChrome/Safari拡張を公開しました。 Chrome:Chrome Web Store - NinjaKit Safari:NinjaKit for Safari Source: os0x/NinjaKit · GitHub これはFirefoxのアドオンであるGreasemonkey相当の機能を実装することを目指しています。 今のところ、 GM_xmlhttpRequest GM_addStyle GM_getValue GM_setValue GM_deleteValue(new in ver 0.7) GM_listValues(new in ver 0.7) GM_log GM_openInTab GM_registerMenuCommand(Safari版は未サポート) Metadata @include @exclude @require @b

    NinjaKit - os0x.blog
    Cherenkov
    Cherenkov 2010/10/17
    「これはFirefoxのアドオンであるGreasemonkey相当の機能を実装することを目指しています。」 GM_xmlhttpRequest
  • valueOfとtoStringとToPrimitive - os0x.blog

    valueOfとtoStringメソッドの水深43cmぐらいの深さの話 - 三等兵のもう少し深いお話。コメント欄に書こうかとも思ったけど、最近ブログ書いてない気がしたのでちゃんと記事にしてみる。 まずは問題です。次のコードを実行したときにtrueかfalseのどちらがalertされるかそれぞれ当ててみてください。 var date = new Date(); var date_string = date.toString(); var date_value = date.valueOf(); alert(date == date_string); alert(date == date_value); true, true false, false true, false false, true (難しい問題ではないと思いますが、)この問題の答えは最後に。 続いて、もっとシンプルな問題です。

    valueOfとtoStringとToPrimitive - os0x.blog
  • script, styleタグ内のコードの書き方 - os0x.blog

    # 最初にちょっと余談を。Chromium-Extensions-JapanのほうにChrome6 Betaの変更点を書きました。どうぞよろしく。 さて、scriptタグ内をHTMLコメントで括ってからJavaScript書くのって意味あるの? - Togetterの件に関して、関連ネタをいくつか書いておきます。。 まず前提として、scriptタグの中に直にコードを書くというのはできる限り避けたほうが良いです。とはいえ、ちょっとしたコードをいちいち外部ファイルにしていると読み込みのコストも馬鹿にならないので、インラインで書く事もよくあります。なので、以下は主に数行程度のコードをインラインに書く場合の話です。 scriptタグの中に直にコードを書くときはscriptタグに非対応なブラウザのために<!--で始め*1 // -->で閉じるというノウハウは今でも結構使われているみたいです。 しかし

    Cherenkov
    Cherenkov 2010/08/13
    コメント IE8のXSSフィルタ誤検出で起こるscriptタグ破壊
  • 2つのChromeを共存させる方法(Google Chrome SxS) - os0x.blog

    複数のバージョンのGoogle Chromeを同時に動かす方法 - 0xFFでは、かなり強引にスタンドアローンなChromeを作る方法を紹介しましたが、最近(Issue 35574 - chromium - Add side by side distribution - An open-source browser project to help move the web forward. - Google Project Hosting )正式に2つのバージョンを同時に動かす実装が導入されたので、それを紹介します。 まず、今のところ共存できるのは2つまで、片方はdev版相当canary版*1という制限付きです。その点はご了承を。 Google Chrome - Get a fast new browser. For PC, Mac, and Linuxで専用のインストーラーが公開されてい

    2つのChromeを共存させる方法(Google Chrome SxS) - os0x.blog
    Cherenkov
    Cherenkov 2010/08/08
    同時起動 バージョンの異なる 違う
  • オレ標準JavaScript勉強会を開催しました - os0x.blog

    Twitterでこっそりと募集して、オレ標準JavaScript勉強会というイベントを開催しました。 id:edvakfさんが来日されるということで、「会いましょう→何かやりましょう→勉強会とかどうでしょう」というTwitter上の軽いノリで企画され、みんなで短いネタを披露し合う一品持ち寄りの少人数勉強会をやってみよう、ということになりました。で、そのままTwitter上で参加者を呼びかけてみたところ、半日もたたずに15名集まって、しかもそうそうたる顔ぶれに! 当日 色々と反省があったので、少し書き出しておきます。 まず、会場*1には有線LANしかないので、自前のルータで無線LANをやろうとしたんですが、設定がなかなかうまくいかず、だいぶ手間取ってしまいました。やはり、安物のLANは駄目ですね…。大人数で繋ぐと安定しないし、有線をいっぱい用意したほうが良かったです。 で、Ustreamに挑

    オレ標準JavaScript勉強会を開催しました - os0x.blog
  • 配列を走査するときに、途中でループを抜けるにはsomeが使える - os0x.blog

    LDRize.Opera用に、some相当の関数を書いていて気がついたことをメモメモ。 配列を走査する際に、目的の値を見つけたらそこでループを抜けたい場合というのは良くあるケースだと思います。普通にfor文などで回す場合は、breakを使うのが一般的です。ただ、forEachではbreakは使えません。 [1,2,3,4,5].forEach(function(v,i){ console.log(v,i); if ( v > 2) ;//break? }); /* 1 0 2 1 3 2 ←ここで止めたい 4 3 5 4 */ そういったときはArray#some(Array#everyでも可)が使えます。 [1,2,3,4,5].some(function(v,i){ console.log(v,i); return v > 2; }); /* 1 0 2 1 3 2 */ このとき、当

    配列を走査するときに、途中でループを抜けるにはsomeが使える - os0x.blog
    Cherenkov
    Cherenkov 2010/05/31
    forEachでbreakしたい場合はsome
  • CSSセレクタの高速化の話を検証 - os0x.blog

    CSSセレクタの高速化の話し - Webtech Walkerの件。元ネタは続・ハイパフォーマンスWebサイト ―ウェブ高速化のベストプラクティスで、元ネタの元ネタはWriting Efficient CSS for use in the Mozilla UI - MDC。 先に書いておくと、この元ネタのMozillaの記事には、in the Mozilla UIとある通り、FirefoxなどのUIレベルの話です。Mozillaの場合、ウィンドウとかタブとか、とにかくなんでもCSSでスタイルを指定できる(している)のでCSSのパフォーマンスについて考慮する点が他のブラウザとはズレています。 とはいえ、実際にどうなのか検証したことなかったので、少し試してみました。 今回の検証方法は、dl>dt+ddを5重に入れ子にした300KB強の大きめなHTMLを用意して、CSSを動的に適用したときの時間

    CSSセレクタの高速化の話を検証 - os0x.blog
  • AutoPagerizeの動作の流れ - os0x.blog

    AutoPagerize くらいは - twwp宛て。 家swdyh版について(oAutoPagerizeも主な流れは同じだけど)、ざっくりと処理の流れを(細かいところやメインでない部分は省いています)。 ページの読み込み→Greasemonkey起動(この辺は省略)、AutoPagerize起動 SITEINFOの読み込み SITEINFOの期限が切れていた場合、wedataから最新を取得 URLにマッチするSITEINFOがあるかチェック、なければ終了 SITEINFOのXPathが機能しているかチェック、XPathで要素を取れなかったら終了 初期化処理 次のページのURL取得 差込位置の決定、insertBeforeか、pageElementの最後の次の要素 右上アイコン・ヘルプの設置 スクロール監視の開始 読み込み開始位置の決定(どこまでスクロールしたら次のページを読み込むかは、

    AutoPagerizeの動作の流れ - os0x.blog
    Cherenkov
    Cherenkov 2010/05/08
    動作説明
  • Twitterで自分がブロックしているユーザーを確認するブックマークレット(とサービス) - os0x.blog

    Who I Block? by @arikfrでSign in with Twitterボタンをクリック→Twitterのサイトに飛ぶのでそこで拒否か許可を選択。whoiblockに戻るとブロックしているユーザーが表示される。こちらでは下記のようなブラウザの再起動みたいな手間もなく割と安全に確認できるはずです。ただ、このサービスを私とは一切関係がないので当に安全かどうかは(私は)保証できません。あしからず。 Twitterの仕様変更により、下記のブックマークレットは動作しません。 http://twitter.com/ を開いた状態で、下記をブラウザのアドレスバーに貼り付けて実行すると認証ダイアログが出るので、ユーザー名、パスワードを入力してください。サイドバーにユーザー名がずらっと出てくると思います(一人もブロックしてなければ何も出てきませんが)。 なお、一度認証を通すと、ブラウザを再

    Twitterで自分がブロックしているユーザーを確認するブックマークレット(とサービス) - os0x.blog
  • 2010-04-11 - 0xFF

    2010/4/9にChrome Extensions TechTalkを行いました。おかげさまで、80名近い方に出席頂きました。ありがとうございます。 正直、私の力不足で進行やらがグデグデでした。すみません。でも、及川さん、田村さん、白石さんの素晴らしい発表と、ライトニングトークをお願いした6名に、発表後に質問をしてくださった参加者の皆様のおかげで結果的には良い感じに盛り上がって終わることができました。当にありがとうございます。また、kanasanにご協力いただいて、Ustreamでの配信を行うことができました。ありがとうございました。 ただ、時間が20分少々延長してしまったのは申し訳ありません…。 発表資料などの関連URLは Chromium-Extensions-Japan | Google グループ にリンクしておきました。 id:cou929_laさんによるレポートもChrome

    2010-04-11 - 0xFF
    Cherenkov
    Cherenkov 2010/04/12
    google japan 風船浮いてる。
  • Googleのトップページを開くと毎秒100回実行されるスクリプトを止めるユーザースクリプト - os0x.blog

    Googleのトップページを開くと毎秒100回JavaScriptが実行されるよ - 射撃しつつ前転をみて、ちょっとソース読んでみたらホントにそんな実装になっていた。んじゃ、止めちゃいますかってことで、サジェスト自体はそのまま機能させつつ、IMEでの確定前の入力には反応しないという実装に無理やり変えるスクリプトを書きました。一応動作を確認したのはFirefox3.5(Greasemokey 0.8)、Opera10、Google Chrome Dev(4.0.213.1)です。GreaseKitは実行タイミングの問題で怪しいかも。 404 Not Found – Userscripts.org ちなみに、なんでGoogleはポーリングをしているかっていうと、IMEが確定する前の入力途中のキーワードを捕まえるためのようです。そこまでする必要ないよって人も多そうですよね。そういう人向けのスクリ

    Googleのトップページを開くと毎秒100回実行されるスクリプトを止めるユーザースクリプト - os0x.blog
    Cherenkov
    Cherenkov 2009/10/11
    debug デバッグ copy((function(){1;2;3;var x=0;alert(x);}).toString())
  • AutoPagerizeで継ぎ足された部分に自分のスクリプトを適用する方法あれこれ - os0x.blog

    以前からある手法から順番に見ていきます。 ページの高さの監視 setIntervalでページの高さを監視して、増えていたらAutoPagerizeが動いたとみなして処理を行う var THRESHOLD = 300; var _height = window.innerHeight; setInterval(function(){ if (window.innerHeight - _height > THRESHOLD) { // 処理 } _height = window.innerHeight; }, 300); メリット AutoPagerizeだけでなく、はてなダイアリー・ブックマーク、Twitterなどでのサイト側でのページの継ぎ足しにも対応できる デメリット THRESHOLDをいくつにするかなど、一概に決められない。タイマーをたくさん回すと重くなる。Floatしている要素を継

    AutoPagerizeで継ぎ足された部分に自分のスクリプトを適用する方法あれこれ - os0x.blog
    Cherenkov
    Cherenkov 2009/10/08
    最新の手引書
  • リンクになっていないURLを新規タブで開くGreasemonkey Script - os0x.blog

    Text URL Linker という Greasemonkey Script を CodeRepos (と Text URL Linker for Greasemonkey) にあげました。Firefox の Greasemonkey, Opera(9.50以降) の UserJavaScript, Safari の GreaseKit, Google Chrome の Greasemetal, Chromium の Greasemonkey で動作します。 はてなダイアリーのコメント欄など、リンクになっていないURL (一応 ttp://hoge のようなURLにも対応) を新規タブで開くリンク(通常のリンクと区別するため overline 入りカーソルをhelp) にする Script です。Firefox の人には Piro さんの Text Link でお馴染みのあれです。同種の

    リンクになっていないURLを新規タブで開くGreasemonkey Script - os0x.blog
    Cherenkov
    Cherenkov 2009/07/28
    createContextualFragment dom range 文字列