タグ

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

  • プログラミングに最適なConsolasとかInconsolataとか - os0x.blog

    でInconsolataだけが紹介されているので、おまけ情報を少々。 Inconsolataというのは、Windows Vista/7 に標準で付属しているConsolasフォントに感銘を受けた作者がConsolasを意識して作ったフォントです。 ConsolasのほうはVista/7だけでなく、Visual Studioに付属してたりもします。一応、こちらからダウンロードもできるようです。 Download: Consolas Font Pack - Microsoft Download Center - Download Details Windows(少なくとも7では)ではConsolasのほうがより(ClearTypeの効きが)綺麗だと思います。というか、InconsolataはWindowsだとどうも今一つ…、ただMacLinuxではWindowsでのConsolasと同じくら

    プログラミングに最適なConsolasとかInconsolataとか - os0x.blog
  • AutoPatchWorkのサーバー周りのこと - os0x.blog

    地味に色々と調整しているのでまとめておきます。見よう見まねの継ぎ接ぎばかりですが…。 AutoPatchWorkはwedata(About - wedata)のAutoPagerize用SITEINFOを使わせて頂いていますが、wedataのサーバーは負荷に弱いので、SITEINFOは自前のサーバー(といっても安心のhetemlですが)に置いています。 hetemlサーバーでcronを設定して1時間に1回、SITEINFOを更新するようにしていて、AutoPatchWorkユーザーは一日に1回hetemlサーバーからSITEINFOを取得しています。 ただ、AutoPagerizeのSITEINFOは2MB近くあるので、1万人が毎日アクセスしたら転送量が20GBに達します(全員が毎日更新にくるわけではないので、実際はもっと少ないですが)。hetemlの転送量は「目安として 1日 20GB

    AutoPatchWorkのサーバー周りのこと - os0x.blog
  • XPathにおける//*とdescendant::*の違い - os0x.blog

    XPath Cookbookネタで書いてたんですが、長くなったのでとりあえずこちらに。 id:taizoooにリクエストされた//とdescendant::の違いについて。 下準備として、こういうHTMLをサンプルとして使用します。(サンプルはFirebugのコンソールで実行できます) document.body.innerHTML = <><![CDATA[ <ul id="root"> <li> <a href="#a1">a1</a> </li> <li> <a href="#b1">b1</a> </li> <li> <a href="#c1">c1</a> <a href="#c2">c2</a> </li> <li> <a href="#d1">d1</a> <a href="#d2">d2</a> </li> </ul> ]]></>.toString(); まず、//*とd

    XPathにおける//*とdescendant::*の違い - os0x.blog
    kurumigi
    kurumigi 2010/08/08
    //a[1]は/descendant-or-self::node()/child::a[1]→aの親要素を基点にしてそこから見た1つ目のa要素を選択→マッチする要素が複数存在する可能性/descendant::a[1]→基点から1つ目のa要素→マッチする要素は必ず1つ
  • はてなブックマークで LDRize をちゃんと動かすGreasemonkey Script - os0x.blog

    ホントに「ちゃんと」なのか怪しいけど。Firefox3とOpera9.6で動くのは確認。 http://userscripts.org/scripts/show/37569 ページが継ぎ足されるたびに全エントリの位置を再計算しているので、ページが大きくなると重くなります。。 折角なのでコメントつけてみたり。 // ==UserScript== // @name b.hatena ldrizer // @namespace http://ss-o.net/ // @include http://b.hatena.ne.jp/* // ==/UserScript== // LDRizeより後に実行する必要があるのでsetTimeoutする(ユーザースクリプトの管理で並べ替える必要がなくなる) setTimeout(function(unsafeWindow) { // 実行して問題ないかベタに

    はてなブックマークで LDRize をちゃんと動かすGreasemonkey Script - os0x.blog
    kurumigi
    kurumigi 2010/08/06
    『Hatena.Bookmark.AutoPagerize.instanceにnewしたObjectが入っているので、それでAddEventListenerする』/こんな方法があったのか。以前作ったもの(http://d.hatena.ne.jp/kurumigi/20091123/1258997679)を短く書き直せるかも。
  • オレ標準JavaScript勉強会を開催しました - os0x.blog

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

    オレ標準JavaScript勉強会を開催しました - os0x.blog
  • jsdo.itで遊ぼう! - os0x.blog

    既にご存知の方も多いと思いますが、1週間ほど前にKAYACさんの新サービスjsdo.itがリリースされています。 jsdo.itHTML, CSS, JavaScriptを編集してその場で実行、共有するプログラマ向けコミュニティサイトです。wonderflをご存知の方はそのJavaScript版の一言で十分でしょう。 単にコードを書いて公開するだけでなく、その場で実行したり、favorite に登録したり、forkしたり、コメントを書いたりと、ソーシャルな要素が強いところがポイントです。 とりわけforkが特徴で、公開されているコードをベースにして改良を加えてみたり、パラメータを変えてどうなるのか実験してみたり、といったことが簡単にできます。また、わからないところがあればquestionタグを付けてどこがわからないのか書いておけば、誰かが回答付きでforkしてくれるかもしれません。que

    jsdo.itで遊ぼう! - os0x.blog
    kurumigi
    kurumigi 2010/06/25
    『jsdo.itはHTML, CSS, JavaScriptを編集してその場で実行、共有するプログラマ向けコミュニティサイト』『とりわけforkが特徴』『forkの連鎖で驚くほどの進化をするといったことが起こったりも』
  • 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
  • Safari拡張の作り方 - os0x.blog

    Safari拡張をいくつか作って大体感覚は掴めたので、ざっくりと拡張の作成手順を解説してみます。 なお、Windows版で作業していますが、Macでもほとんど同じだと思います。 Safari拡張とは 最初に、Safari拡張とはなにか、について。Safari拡張はHTML/CSS/JavaScriptをベースに、ブラウザ側が用意したAPIを使ってブラウザを便利にするモジュールです。通常、JavaScriptだけではクロスドメインの問題など、実現できることに制限がありますが、その点を拡張用に用意されたAPIで補います。そのため、APIが用意されていない部分については対応できないという制限があります。しかし、開発のし易さ、ウェブとの親和性の高さからアイディア次第で便利で強力なツールとなるのがSafari拡張・Chrome拡張です。 なお、現状のAPIは暫定的なもので、ここで紹介するのもあくまで

    Safari拡張の作り方 - os0x.blog
  • JSパーティクル崩し - os0x.blog

    canvasをバイト単位で修正する方法(ImageDataの使い方) | tech.kayac.com - KAYAC engineers' blogを少し改良してFirefox、Operaでも動くようにしてみた。 JSパーティクル崩し 修正点 Firefoxはcanvas外(幅100pxのcanvasにx:100.1とか)にputImageDataしようとするとエラーになるのでそれを回避するように OperaはCanvasRenderingContext2D.prototype.createImageDataが実装されてないなので、代わりにnew ImageDataを使う(そのうち修正されるでしょう) // for Opera 10.5- if (window.CanvasRenderingContext2D && !CanvasRenderingContext2D.prototype.

    JSパーティクル崩し - os0x.blog
  • 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
    kurumigi
    kurumigi 2010/05/19
  • arguments.callee.caller で UserJavaScriptのソース取得 - os0x.blog

    最初に要点を述べると、UserJavaScriptのソースはサイト側のScriptから取得することが不可能ではないので、UserJavaScript にパスワードなどを書き込む必要がある場合は実行を許可するサイトに十分に気をつけましょう(そもそも書き込まないで済むならそれに越したことはない)。というお話です。 Function.caller 9.60 beta 1 RCからFunctionにcallerプロパティが追加され、関数の呼び出し元を参照できるようになりました。caller は非標準ではありますが、FirefoxやIEでも以前から使えているようです。 そして、サイト側のScriptで、UserJavaScriptが呼び出すであろうメソッドを上書きしておくことで、UserJavaScriptの処理をフックし、そこから .caller を辿って UserJavaScript のソースを

    arguments.callee.caller で UserJavaScriptのソース取得 - os0x.blog
  • Chrome4以降でoAutoPagerizeが動作しない件 - os0x.blog

    Google ChromeのUserScriptsに関する仕様変更で、複数のUserScriptsで連携することが難しくなりました。このため、Chrome版のoAutoPagerize、LDRize、Minibufferは当面最新版のChromeをサポートしません。 代わりに、Extensions版のAutoPagerizeか、AutoPatchWorkをどうぞ。Minibuffer、LDRizeの代わりは、そのうち… oAutoPagerize ver1.3.0 (Google Chrome 3用の更新) - 0xFFで対応しました。LDRizeはもう少々お待ちください 以下余談。 なんとか回避策はないかと検証してみましたが、contentWindowの廃止に伴って、完全にページ側のコンテキストと分離され、さらにUserScript同士も完全に別コンテキストとして実行されるようになってし

    Chrome4以降でoAutoPagerizeが動作しない件 - os0x.blog
    kurumigi
    kurumigi 2010/02/12
    『contentWindowの廃止に伴って、完全にページ側のコンテキストと分離され、さらにUserScript同士も完全に別コンテキストとして実行されるようになってしまいました』
  • 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
    kurumigi
    kurumigi 2010/01/31
    http://gist.github.com/281516の解説。Firefox 3.6でも試してみたら動いた。
  • 複数のバージョンのGoogle Chromeを同時に動かす方法 - os0x.blog

    複数バージョンのChromeを同時に動かす方法は公式には用意されていませんが*1、割と簡単にバージョンごとのChromeを動かすことができます。 出典はGoogle Chromeを任意のフォルダにインストールする方法など: 夜明け前と2chChromeスレ*2からです。 インストールしたいバージョンのインストーラーを用意 4.0.249.30をインストールしたい場合、http://dl.google.com/chrome/install/249.30/chrome_installer.exe からダウンロードできます。 バージョン番号の後半2つをhttp://dl.google.com/chrome/install/xxx.xx/chrome_installer.exe のxxx.xxの部分に当てはめればそのバージョンがダウンロードできます。バージョン番号は後半2つだけでユニークになるよ

    複数のバージョンのGoogle Chromeを同時に動かす方法 - os0x.blog
  • 加速スクロールをユーザースクリプトでやってみた - os0x.blog

    ChromeのマウスジェスチャーExtensionで実験的に実装してみたやつが意外と面白かったので、少し手を入れてFirefox, Opera用にユーザースクリプトにしてみました。このスクリプトも実験的なものなので、その点はご了承ください。 Scroll Acceleration for Greasemonkey (Operaで使う場合はファイル名を.user.jsではなく.jsで保存推奨です) これはいわゆる加速スクロールってやつで、マウスホイールを素早く動かすと、速く動かした分だけたくさんスクロールするという代物です。 マウス自体や、マウスジェスチャーソフト(かざぐるマウスとか)にそういう機能があるみたいで、それをJavaScriptで実現してみました。 ちなみになぜ実験的なのかというと、こういう制御はユーザースクリプトのようなレイヤーではなく、OS寄りのところで実装するべきだと思うか

    加速スクロールをユーザースクリプトでやってみた - os0x.blog
    kurumigi
    kurumigi 2009/10/19
    『仕組みは単純で、前回のスクロールイベントの発生時刻が近いほど素早く回転していると判定しています』『わざわざnew DateしなくてもイベントのtimeStampでそのイベントの発生時刻が取れる』
  • id:mindcatさんのJavaScriptエントリに少しだけコメント - os0x.blog

    FAQ形式によるJavaScript質がわかる超入門 - 風と宇宙とプログラムが凄く良く出来てて、くやしい。じゃなくて、折角なので少しだけツッコミを。いや、これだけ完成度が高いのにツッコミというのも無粋ですが。 数値を文字列に、逆に文字を数値に変換する String(x)、Number(x)を推奨されていますが、一応、IE6ではパフォーマンスに差が出る点に注意が必要だと思います。 to_string (関数呼び出しのコストのため)IE6だとこのように結構な差がでます。(といっても10万回での結果ですが。) "" + 78ms "" + 63ms String() 125ms String() 125ms確かにChromeなどString()のほうが少しだけ速いみたいなので、ケースバイケースですね。 JavaScriptで ""+x を文字列変換に使うのは気持ち悪い - 風と宇宙とプログ

    id:mindcatさんのJavaScriptエントリに少しだけコメント - os0x.blog
  • 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
  • 連載2回目とネタ帳さんの記事にツッコミ - os0x.blog

    連載2回目が無事掲載されました。 先取り! Google Chrome Extensions:第2回 Chrome Extensionsの作り方#1|gihyo.jp … 技術評論社 HelloWorldからドキュメント、デバッグツールと盛りだくさんですが、やはりメインはSBMカウンタです。コードの解説は最低限にできるようになるべく簡潔に書いたので、するする読めるのではないかと思います。 はてなブックマークの件数を表示するExtensionはいくつかありますが、Content Scriptsを使っていない点がポイントです。 ところで、ExtensionsのドキュメントはGoogle Chrome Extensionsが公式になるようです。Google ChromeGoogle Developersにも同じドキュメントがありますが、こちらでは旧バージョンのドキュメントが閲覧できるように

    連載2回目とネタ帳さんの記事にツッコミ - os0x.blog
  • 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
  • IE6,7のためにArray.join("") による文字列連結を使うべき - os0x.blog

    理由がない限り、Array.join("") による文字列連結は使わないほうがいいみたい - latest log の件について。 IE6の+による文字列結合が遅くて、Array.joinで連結するとマシになるよって話を(私が)初めて聞いたのはShibuya.js第1回の id:amachang の発表だったと思います。 Shibuya.js Technical Talk #1 を終えて。 - IT戦記 *1 少なくとも3年以上前のバッドノウハウが未だにIE6のみならず、IE7でも有効という現実に気が遠くなりそうですね。 で、IE6,7は基的なパワー不足で、同じJavaScriptでも他のブラウザより処理が遅いことがほとんどです。遅いブラウザに合わせてチューニングをするほうが一般的なので、特に理由がなければArray.joinを使っておいたほうが無難だと思います。 Array.join

    IE6,7のためにArray.join("") による文字列連結を使うべき - os0x.blog
    kurumigi
    kurumigi 2009/08/29
    『以前遅くて困っているというExcel VBAのプログラムをメンテしたとき、+での文字結合⇒配列+Join結合を試してみたら20分かかってた処理が1秒に短縮できたことがあります。』→…なんだと?