« 2008年12月 | メイン | 2009年02月 »

2009年01月 アーカイブ

2009年01月08日

モテないモテないって言ってるのは言い訳だと思う

モテないはずがない。
自分はどうなのかって?
当然モテた。

例えば、徹夜して顔に疲れが出ててもモテた。
モテないのは気力の問題かただの怠け癖のせいだと思う。

例えば、大物だったとしても、何人かで持ち上げてやれば何とかなる。
荷が重いって?
大丈夫。
実際、何とかなったし。

逆に、複数のヤツを同時にというのももちろんあった。
疲れないのかって?
そんなの、別々に行ったり来たりしているほうが疲れると思う。
体力に自信があっても無駄遣いは禁物。

でも、途中で非常にデリケートなヤツだってわかる事もある。
そうしたらソイツを傷つけないように落とさないようにする。
これはとても大事。
取り返しのつかない事になったら嫌だしね。

そして、いっぱい家にあげた。
それはもう数えきれないぐらい。
多分、100は下らないはず。

あ、言い忘れてたけど、コレ全部荷物の事ね。

という事で、遅ればせながら引っ越ししました。

2009年01月09日

CSSをGreasemonkey用に初期化する

「サイト作成の時に、ブラウザ間の見た目の違いを少なくするCSSを適用する」を「CSSをリセットする」って言ったりする。とりあえず「*{margin:0px;padding:0px}」ってやったりするあれのこと。

GreasemonkeyでDOMを操作してElementを追加する時はこの方法じゃうまくいかない。もとのsiteで使われているCSSが邪魔をして、追加したdivやspanの表示が意図した通りにならなかったりする。この場合、CSSを全部上書きして既定値にしなくちゃならない。ただ、完全に既定値にするためにはElement別にやらなくてはならないので非常に面倒であったりする。なのでとりあえずspan要素を基準にして全てのCSSを上書きすることを考える。その時、一部の既定値の指定が不明瞭なものは一番無難と思われる物を適応する。

で、こんなCSSが必要になったんだけど、若干簡素化したと言ってもやっぱり書くのが面倒すぎる。過去に一度書いた記憶があったのでハードディスクの中を探してみたら見つける事ができた。Spotlight++。参考にしたのはオライリージャパンの「CSS完全ガイド」という本。これの巻末の付録を参考にしている。リンクは後述する。

用途としてはこのCSSを追加するspanに適応した後、Greasemonkeyで必要な部分を書き変えるとか、そんな感じ。
var OVERWRITE_CSS="(略)";

var tips=document.createElement("span");
tips.cssText=OVERWRITE_CSS;
tips.style.color="#000000";
tips.style.backgroundColor="#ffffff";
tips.style.border="#ffcccc solid none";
tips.textContent="hogehoge";
で、以下探し出してきたCSS。適当に使ってください。
/*any*/
background:transparent none repeat scroll 0% 0% !important;
border:medium none transparent !important;

display:inline !important;
visibility:visible !important;

margin:0 !important;
padding:0 !important;

float:none !important;

direction:ltr !important;
font:normal normal normal medium/normal sans-serif !important;
color:#000000 !important;

text-decoration:none !important;
text-transform:none !important;

quotes:none !important;
content:normal !important;

white-space:normal !important;

word-spacing:normal !important;
letter-spacing:normal !important;

outline:invert none medium !important;

unicode-bidi:normal !important;

cursor:auto !important;

counter-increment:none !important;
counter-reset:none !important;

position:static !important;

/*position*/
top:auto !important;
right:auto !important;
bottom:auto !important;
left:auto !important;
z-index:auto !important;

/*block*/
height:auto !important;
width:auto !important;
max-height:none !important;
max-width:none !important;
min-height:0 !important;
min-width:0 !important;

text-align:center !important;

text-indent:0 !important;

overflow:visible !important;

clear:none !important;

clip:auto !important;

/*inline*/
vertical-align:baseline !important;

/*table*/
border-collapse:separate !important;
border-spacing:0 !important;
caption-side:top !important;
empty-cells:show !important;
table-layout:auto !important;

/*list*/
list-style:disc none outside !important;

/*page*/
orphans:2 !important;
page-break-after:auto !important;
page-break-before:auto !important;
page-break-inside:auto !important;
widows:2 !important;
「GreasemonkeyをWidget化するGreasemonkey」を作った時にこれを使えばよかったんだよね。すっかり存在を忘れてた。

2009年01月10日

選択範囲を保存するBookmarklet

dataスキームって文字列ならbase64しなくても使えるんですね。知らなかった。よくよく考えてみればなるほどです。ただ、encodeURIComponentは必要。で、こんなBookmarkletを作ってみた。
/*
================================================================================
    Name        :   選択範囲を保存するBookmarklet Ver1.0.0
    In          :   [none]      
    Out         :   [none]      
    Note        :   選択範囲の文字列を保存します。
--------------------------------------------------------------------------------
    Version     :   Ver1.0.0    |   2009/01/10  |   新規作成
--------------------------------------------------------------------------------
    License     :   MIT license
    URL         :   www.kanasansoft.com
================================================================================
*/

(
    function(){
        var
             w=window
            ,d=w.document
            ,s=""
            ;
        if(d.selection){
            s=d.selection.createRange().text
        }else if(d.getSelection){
            s=d.getSelection()
        }else if(w.getSelection){
            s=w.getSelection()
        }
        location.href="data:application/octet-stream,"+encodeURIComponent(s)
    }
)
()
これまでnetで見つけた文章を保存したい時、「[文章を選択]=>[コピー]=>[editorを開く]=>[ペースト]=>[保存]」ってしてて、印刷みたいに「選択範囲を保存」ってのが欲しいなぁって思った事もあったけど、これなら「[文章を選択]=>[Bookmarklet実行]=>[保存]」でいける。ちょっと試しに使ってみたけど便利すぎる。まじでお勧め。ファイル名も指定できれば良いんだけどFirefoxの場合、eventを生成して要素にdispatchしてもhrefの中は解釈してくれないようなので、元記事にあるmalaさんの方法が使えない。後は、textareaなんかに対応したバージョンがあればもっと便利かも。その辺はよく知らないので機会があれば調べて実装するかも。誰か作ってくれないかな。

2009年01月16日

setTimeoutとsetIntervalの呼び出し方

# わかりやすくするためにarcuments.calleeやClosureは使ってません。

JavaScriptがちゃんと理解されていなかった時期の書籍に書いてあったsetTimeoutとsetIntervalの呼び出し方ってこんな感じでした。
function timer(count){
    //処理 ex. console.log(count);
    count++;
    if(count<10){
        setTimeout("timer("+count+")",100);
    }
}
timer(0);
処理を文字列として渡すって本当に変な書き方です。そりゃ皆JavaScriptは変な言語だって言いますよね。

で、今はこんな感じ。
function timer(count){
    //処理 ex. console.log(count);
    count++;
    if(count<10){
        setTimeout(function(){timer(count);},100);
    }
}
timer(0);
かなりすっきり。でもこれだけの為に無名関数をつくらないといけないってなんか非効率的。

実はこんな方法もあったりして。
function timer(count){
    //処理 ex. console.log(count);
    count++;
    if(count<10){
        setTimeout(timer,100,count);
    }
}
timer(0);
むちゃくちゃすっきり。どこかで見てたけどすっかり忘れてました。今度からこうしようっと。
2009/01/17:追記
はてなブックマークでIEでは動かないと指摘があった。
MDCにもIEは対応していないとの記述があった。
Browerに依存しているとは思わなかったので、ほんのちょっただけ調べた。
ほんとにちょっと。
今、確認できるブラウザ、Firefox・Safari・Operaでは動いた。
Chromeは調べていないけど当たり前のように動きそう。

2009年01月18日

Lingrのログを保存するGreasemonkey

2009/05/04 追記
Lingrのサービス終了に伴い、ログを保存する方法を探して当エントリーに訪れる人が多いようですが、江島健太郎さんのblogによればログをダウンロードできるようになるとのことです。
ただし、自動的にexportできるようになるのではなく、申請が必要です。以下のURLからexportの申請を行なってください。ここにあるGreasemonkeyよりもよっぽど信用できると思います。
追記以上
Kanasan.JSでは勉強会中にLingrというチャットのサービスを使っています。これは2007年のRuby会議のIRCやRuby@関西で行なっていた事をまねた物です。ログに使ったり参加者が発言するまでもないような事等を書き込んだりして重宝しています。ただ、参加報告のblogを書く時等、過去ログをコピペすると色々なゴミが引っ付いてきてしまい、ログを引用するのが少々面倒でした。これを解消するためのGreasemonkeyを書きました。
使い方
Lingrの各roomのArchivesのページを表示してください。例えばKanasan.JSの場合は次のようなURLにアクセスします。
最近のログを表示
http://www.lingr.com/room/Kanasan.JS/archives
日付を指定してログを表示
http://www.lingr.com/room/Kanasan.JS/archives/2008/11/16
画面上部に[make log csv]と表示されますのでこれをクリックしてください。ログ作成処理が始まります。ログ作成が終了すると表示が[get log csv]に変わります。もう一度クリックすると保存ダイアログが表示されるはずなのでファイル形式はそのままで拡張子をcsvとして保存してください。ちょっと手間ですが、Archivesを表示するたびに少々重いログ収集処理が走らないようにするために、敢えてワンクッションおいていますのでご了承下さい。

2009年01月31日

「IT 勉強会カレンダー」から勉強会のsiteへリンクをはるGreasemonkey

「IT 勉強会カレンダー」便利ですよね。
でも、ちょっと気になる点が...。
説明欄にあるURLにリンクが貼っていない。
Googleカレンダーの仕様だからしかたがない?
諦められないあなたに贈ります。
このUserScriptを導入するとURLの後ろにリンクが表示されるようになります。
月表示と週表示に対応しています。
Google

タグ クラウド