2009年3月27日金曜日

Google ChromeのUserscript版マウスジェスチャ完成

このエントリーをはてなブックマークに追加
前回のエントリで書いたように、Google Chromeで動くマウスジェスチャスクリプト書いた。
githubへコミットしておきました。
今回はcodereposへのコミットはなし。
だって、Google Chromeでしか動作確認していないんだもん(爆)


って事で、人柱募集中


Google ChromeでUserscriptを実行できるようにするには、以下のエントリを参考にして下さい。


Loox Uと初音ミクで行こう!: Google ChromeのDev版でGreasemonkeyを動かす
http://looxu.blogspot.com/2009/01/google-chromedevgreasemonkey.html


右クリック後のアクションは以下の4パターン。これ以上複雑なことはちと難しいかも……。

  • L:戻る

  • R:進む

  • DR:タブを閉じる

  • UD:タブを更新する



コードを見ると分かるとおり、どっかのスクリプトからぱくりまくってくっつけてぐちゃぐちゃにしている感じです。
ライセンスは多分、GPLv3を適用させないと駄目かも。
これを使って商用ソフト作ったぬっころされると思いますよ。
#ぬっころされないけど、そのソフトのソースコード公開が求められるとおもふので、なるべく組み込まないことをお勧めしますって、そんなソフト無いわ、ぼけぇ!
ライセンス関係が微妙なので、また後で調べて追記したいと思います。
gdgdですんません。


3/31追記

今回作成した、スクリプトは、gomitaさんが作られたLightweight customizable mouse gesturesがベースになっています。
ライセンス確認のメールをしたところ、改変/再配布について一切の制限が無いとの事でしたので、著作者の名前の記載のみを強要するMIT Licenseを採用することにしました。
スクリプトにもライセンスは記載済です。
ついでなので、ほんのちょこっとだけ機能アップデートしています。Dアクションで、新規タブを開くようになりました。
重要:リンク先が変わっていますので、以前のバージョンを落とされた方は改めてアップデート願います。

2009年3月25日水曜日

何で誰もやらないんだっ?!

このエントリーをはてなブックマークに追加
Google ChromeがUserJavascriptをサポートするようになって、真っ先に思い浮かんだのがマウスジェスチャの搭載。
#まあ、僕は発想が右斜め上なので、キーバインド変更のコード書きましたが
確か、ぐりもんでそれっぽいマウスジェスチャできるコードあったよなぁ等と思いながら口を開けて待っていたんですが、誰もコード書かない。
おかしいよ、この世界!(おかしくありません)
Google Chromeみたいな軽量なブラウザにマウスジェスチャが無いなんて操作性を減らすだけで意味ねーじゃん!

ってな不満をふつふつと抱きつつ、日々を過ごしていた訳ですが、もう限界。
俺が作る。
って事で昨日からなにやらコード書いています。
ちょっと疲れたので、今一休みしていますが、明日か明後日くらいには公開できるかと。
意外と色々面倒なんだよね、マウスジェスチャって。それをUserscriptでどうにかごにょろうという発想がそもそも間違っている気がするけど気にしないよ、僕は!

2009年3月24日火曜日

もっと若干伸びるべき

このエントリーをはてなブックマークに追加


このPVは本当にもっと若干伸びるべきだと思う。

IE6を殲滅せよ「sevenup」を翻訳したよっ!

このエントリーをはてなブックマークに追加
ひげの土管工から、
@ArcCosine これを日本語にしてください。 http://code.google.com/p/se...
と言われ、さくっと翻訳した。

元ねたはこちら

原文

Your web browser is outdated and unsupported



You can easily upgrade to the latest version by clicking here

Why should I upgrade?



  • Websites load faster, often double the spped of this older version

  • Websites look better with more web standards compliance

  • Tabs let you view multiple sites in one window

  • Safer browsing with phishing protection

  • Convenient Printing with fit-to-page capability



ArcCosine翻訳Ver

お使いのブラウザは古いバージョンのため、サポートしていません。



最新版のブラウザをこちらからダウンロードしてください。

ぜひ、更新してください!



  • 高速ブラウジングがアナタの元に。従来の二倍以上のスピードを体感できます。

  • ウェブ標準に準拠するため、ウェブページがさらに見やすくなります

  • 新機能のタブにより、複数のウェブページを同時に簡単に見ることができます。

  • 安全性が向上し、フィッシング詐欺からの保護に役立ちます。

  • ウェブページを印刷するときに右側が切れたりしません。



一部誇張&ACの独善が入っていますが、その辺は勘弁してください。

2009年3月20日金曜日

IE8インストールしたよ。

このエントリーをはてなブックマークに追加
ひとまず、Acid2は合格してた。つまらん。
Acid3は最後まで走らず。笑える。
Slepnirだと13点まで行った。
うん、使えない。

2009年3月14日土曜日

はてなのプロフィール画面がずれてる。

このエントリーをはてなブックマークに追加
Opera10αでのみ発生。
画像は↓な感じ。



がくがくとずれていて気持ちが悪い。
まあ、はてな使ってないからどうでも良いけど。
Opera9.6x系だと崩れていないので、もしかしたらPresto2.2のバグかも。
教えて偉い人。

新しいiGoogleI/Fと旧I/Fを今すぐ切り替えるブックマークレット作ったよ!

このエントリーをはてなブックマークに追加
元ネタ
新しいiGoogleインタフェースを今すぐ利用する方法*二十歳街道まっしぐら
http://tokuna.blog40.fc2.com/blog-entry-1433.html

これ見てぱっと思いついて書いた。
普段iGoogle使っていないから良く分からないんだけど(ぉぃ
以下のリンクをブックマークレットに登録後、iGoogleにアクセスして、実行すればおk。
自動的に判断してくれるので、何度でも切り替えできるよっ!

iGoogle切り替えブックマークレット

ソースが見たい人用

javascript:(function(){ var d=document.getElementById('ext_css'); if (d.href.match(/v2/)){ _dlsetp('v2=0'); }else{ _dlsetp('v2=1'); } }());

ニコニコ動画の動画詳細をごにょるコード書いた。

このエントリーをはてなブックマークに追加
超俺専用。
機能:
・Video詳細表示/非表示とmitterに登録するのリンク(もどき)が表示される。
・Video詳細が消える。
・でもたまに作者コメント見たくなるから、リンククリックすると見れるようになる
・でも、中の人はキーボードジャンキーなので、OキーでOpen/Closeするようにすでに改造済
・ついでなので、mitterのブックマークレット起動するようにもした
・mキーでmitterブックマークレットを呼び出すようにしてる
・リンククリックでも行けるよっ!
・これ作ったので、mitterのブックマークレットを削除した(何
・mitterへの登録が死ぬほど早くなった。1秒でpostどころか0.5秒でPostできる。
・mitterツールバー?なんですか、それ?

確認していないけど、Firefoxでも動くんじゃないかな?
需要? 何それ?


// ==UserScript==
// @name nico description
// @namespace http://looxu.blogspot.com/
// @include http://www.nicovideo.jp/watch/*
// @author Arc Cosine
// @version 1.0
// ==/UserScript==
(function(){
/** simple version of $X
* $X(exp);
* $X(exp, context);
* @source http://gist.github.com/3242.txt
*/
var $X = function (exp, context) {
context || (context = document);
var expr = (context.ownerDocument || context).createExpression(exp, function (prefix) {
return document.createNSResolver(context.documentElement || context).lookupNamespaceURI(prefix) ||
context.namespaceURI || document.documentElement.namespaceURI || "";
});

var result = expr.evaluate(context, XPathResult.ANY_TYPE, null);
switch (result.resultType) {
case XPathResult.STRING_TYPE : return result.stringValue;
case XPathResult.NUMBER_TYPE : return result.numberValue;
case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
// not ensure the order.
var ret = [], i = null;
while (i = result.iterateNext()) ret.push(i);
return ret;
}
return null;
}

var load_event = function(){
description_clear();
var iDiv = document.createElement('span');
iDiv.id = 'view_video_description';
iDiv.innerText = 'Video詳細';
iDiv.style.color = '#1259C7';
iDiv.style.textDecoration = 'underline';
iDiv.style.marginRight = '5px';
var p = '//p[@class="TXT12"]/a';
var pos = $X(p)[0];
pos.parentNode.insertBefore( iDiv, pos);
iDiv.addEventListener( 'click', description_clear, false );

var mDiv = document.createElement('span');
mDiv.id= 'mitter_button';
mDiv.innerText = 'mitter';
mDiv.style.color = '#1259C7';
mDiv.style.textDecoration = 'underline';
mDiv.style.marginRight = '5px';
pos.parentNode.insertBefore( mDiv, pos );
mDiv.addEventListener( 'click', popup, false );
}

var popup = function() {
var normalized_url = location.href;
var url = "http://mitter.jp/bookmarklet/popup", v = "0";
url += '?v=' + v + '&url=' + encodeURIComponent(normalized_url) + '&title=' + encodeURIComponent(document.title);
var options = 'toolbar=0,resizable=1,scrollbars=1,status=1,width=450,height=430';
var open_func = function() {
var w = window.open(url, 'mitter', options);
if (!w) {
alert('Popup window from Mitter seems to be blocked. Please allow popup window to post on Mitter.');
} else {
w.focus();
}
};
open_func();
}

var description_clear = function(){
var p = '//div[@class="video_description"]';
var desc = $X(p)[0];
var disp = desc.style.display;
if( disp == 'none' ){
desc.style.display = 'block';
}else{
desc.style.display = 'none';
}
}

var key_event = function(e){
var handler = {
'o' : description_clear,
'm' : popup
};
var t = e.target;
if( t.nodeType == 1 ){
var tn = t.tagName.toLowerCase();
if( tn == 'input' || tn == 'textarea' ){
return;
}
var pressKey = String.fromCharCode(e.which);
if( typeof handler[pressKey] == "function" ){
e.preventDefault(); //Stop Default Event
handler[pressKey].apply();
}
}
}

document.addEventListener( 'keypress', key_event, false );
load_event();
})();

2009年3月13日金曜日

気持ちの悪いコード書いてみた。

このエントリーをはてなブックマークに追加
chalcedonyさんから先日添削したコードの最新版のうpをお願いされたので、CodeReposへコミットした。
したは良いんだけど、Switch Caseによる分かりやすいコードを見ていて何かが疼いた。
で、かっとなってこんなコード書いた。
可読性が死ぬほど落ちたので、CodeReposへうpせずにここに書きなぐっておく。


// ==UserScript==
// @name Adobe FAQ Redirector
// @namespace http://d.hatena.ne.jp/chalcedony_htn/
// @description Redirector for Adobe Support Database (Japanese)
// @include http://support.adobe.co.jp/faq/faq/*?*+*
// @include http://www.adobe.com/jp/support/announcement/?*+*
// @exclude http://www.adobe.com/jp/kb/*
// @version 1.31
// ==/UserScript==
(function() {
var m = location.search.match(/^\?(\d+)\+/);
if (!m) return;
var doc_number = m[1];
var l = doc_number.length;

var base = (l==6) ? doc_number.substr(0, 3) : (l==4) ? doc_number.substr(0, 1) : "000";
var url = "http://www.adobe.com/jp/support/kb/cs/" + base + "/cs_" + doc_number + "_ja-jp.html";

if(l==6) url = url.replace(/cs/g,"ts");

location.replace(url);

})();


ベースとなるURLを決めておいて、後は適当にreplace。
ホントに読みづらいコードになってしまった。ゴミやね。
ま、でも個人的にはlocation.replaceが一発で出来るこーゆー形式の方が好き。
#好みかよ

後、テスト用URL
6桁
4桁
3桁

2009年3月9日月曜日

出来る新社会人が仕事で使うフリーソフト

このエントリーをはてなブックマークに追加
※ ネタです ※

前提として、これらのソフトのインストールを許可してくれる会社で使いましょう。
OSはWindows限定です。

・ブラウザ
 ブラウザは二種類インストールしましょう。
 1.Opera
 2.Firefox


 Operaはいわずもがな、「メーラー」代わりにインストールします。下手なメーラーより二倍は使いやすい。(主観を入れると百倍)
 最初はそのI/Fのとっつきにくさに困惑しますが、大丈夫。
 迷惑メールフィルタは標準で搭載されていますし、クイックフィルタリング機能を使って目的のメールに即座にアクセス。
 対応プロトコルもPOPだけでなくIMAPにも対応していますので、どんな環境でも使用可。
 Operaメールに慣れると、今まで使っていたメーラーの「遅さ」にいらいらするようになる事必須。
 仕事でスピードはある程度必要です。特にメールの時間短縮を担うOperaは、出来る社会人の強力な武器になることでしょう。

 Firefoxを入れる理由は、なんとなくです。
 別にOperaだけで大体問題ないのですが、時たまOperaでは表示できないサイトがあります。その際に、Firefoxを起動して表示内容を確認しましょう。
 IE? なんですかそれ?

・エディタ
 エディタはVim入れようぜって書こうと思ったのですが、あまりにもハードルが高いので、こちらをお勧め。

 サクラエディタ

 フリー版としては最強の部類に入るかと。Windowsエディタ系では一番使いやすいです。最近は、SJISでテキストを保存する事は少なく、UTF-8で保存したいという要望も多いので(当社比)、標準でUTF-8保存を搭載しているサクラエディタは便利です。
 改行コードを一発で変換できますし、無駄にサイズがでかいファイルもさくっと開けるので安心です。
 少メモリなPCでもさくさく動くので非常に有用です。

・画像加工ツール

 Saiが一番良いんですが、フリーソフトじゃないので、こちら。

 MSPaint

 ああ? 文句あっか? これが一番良いんだよ!
 PNGもJPGもGIFもBMPもそれなりに保存できるし、どうせクライアントは拡大/縮小なんか気にしてないんだから。
 ScrennShotはGif形式で保存するとファイルサイズを抑えることが出来るんだぜ。
 WordやExcelの画像取り込み機能を使うと効果は抜群だ。
 典型的なパターンとしては、Alt+PrintScreen→Alt+Tab→Ctrl+V→Ctrl+Sの一連のキー操作が必須。
 キャンパスのサイズを1X1にしておくと、クリップボードから貼り付けた際に、キャプチャサイズにキャンパスを自動的に拡大してくれるので、お勧め。


・ファイラ

 やっぱりだいなファイラかあふだよねーと思いつつも、そんなキーボード中毒者専用なんか使えねえだろ、F*ckと思ったので、お勧めするのはこちら

 エクスプローラー

 え? ファイラやないやん、シェルやん? とか知るか、ボケ。初心者はエクスプローラーを使いこなせっちゅうねん。
 フォルダオプションから従来のWindowsフォルダを使うにチェック入れるとエクスプローラーもそれなりに快適に動く。
 さらに表示関係では、すべてのファイルとフォルダを表示するを選択し、各フォルダの表示設定を保存するのチェックをはずし、簡易ファイルの共有を使用するのチェックもはずし、縮小版をキャッシュしないにチェックを入れて、登録されている拡張子は表示しないのチェックをはずし、保護されたオペレーティングシステムファイルを表示しないのチェックをはずせば完璧。
 表示方法はいくつかあるけれど、個人的には詳細にチェック入れる形式がお勧めかな。
 後はそれをすべてのフォルダに適用するえばおk。
 最初はそのシンプルさに驚愕を覚えるかもしれないけれど、意外とこれが速く軽快に動くので、便利だって事に気がつく。
 覚えるべきショートカットはF2。ファイル名/フォルダ名の名前変更はこのキーで出来るから覚えていて損は無い。

以上、出来る新社会人が仕事で使うフリーソフトでした♪

ネタ元:http://www.yukawanet.com/sunday/2009/03/post_314.html

2009年3月8日日曜日

Operaで「見ているページをFirefoxで開く」のアクション?に気づいた。

このエントリーをはてなブックマークに追加
いや、以前から知っていたんだけど、今日の今日まで忘れていたので、メモ。
メモすれば忘れない。車輪の再発明? 駄文の羅列?
そんなの関係ねー!

Execute program, "C:\Program Files\Mozilla Firefox\firefox.exe","%u"

はい、簡単!
プログラムパスは各自のインストール状況に合わせること。
ちなみに、自分はこのアクションを

:,f

に割り当てました。
って事でセミコロン→fで見ているページをfirefoxで開けるという変態アクションができるようになりました。
普通に応用すれば、Safari/Chromeにも対応させる事ができると思います。
IE? 何それ美味しいの?

2009年3月5日木曜日

自分用メモ for google chrome key event

このエントリーをはてなブックマークに追加
Google ChromeのGreasemonkeyを書いていたんだけど、はまったのでメモ。

例の如くキーボードショートカットをカスタマイズするという変態コードを書いていたんだけれども、Ctrl系のイベントキャンセル(preventDefault)が上手く行かない。
結論から言うと、イベントを割り当るタイミングが悪く、keypressではなくkeydownにするべきだった。
今までの自分の知識ベースはkeypressでキーバインド割り当ては何とかなっていたけど、それだと駄目なケースがある事を知らなかった。
周知の通り、keypressよりkeydownの方が先にイベント通知が来る。

以下の文は憶測であり、現時点(2009/03/05)での結果を元にArcCosineが勝手に想像して書いているので、頭から信じないこと
OperaやFirefoxはkeypressでpreventDefaultすれば大体のキーのイベントキャンセルできる。
でも、Chromeはちょっと変態ちっくな作りになっていて、Ctrlとの同時押下時はkeypressより前にイベントが走る作りになっている。
イメージとしては

(通常)
keydown

keypress

デフォルトイベント

(Ctrl押下時)
keydown

デフォルトイベント

keypress

こんな感じでイベントが発生するので、keypressのタイミングでpreventDefaultをかましても後の祭りって落ちだった訳。
もしかしたら、Ctrlキー限定でなくて特殊キーなら何でもかもしれないけど、ちゃんと調べてないので、何とも言えない。
暇な人は是非チェックしてみて下さい。

以上、駄文でした。

添削

このエントリーをはてなブックマークに追加
Adobeサポートデータベースの旧URLから新URLにジャンプするGreasemonkey - chalcedonyの外部記憶装置・出張版
http://d.hatena.ne.jp/chalcedony_htn/20090304/1236155567

↑のぐりもんをちょこっと修正した。
この程度だったら、if文とかいらないし、変数も減らせるしって感じで。


// ==UserScript==
// @name Adobe FAQ Redirector
// @namespace http://d.hatena.ne.jp/chalcedony_htn/
// @description Redirector for Adobe Support Database (Japanese)
// @include http://www.adobe.com/jp/support/announcement/*
// @include http://support.adobe.co.jp/faq/faq/*
// @exclude http://www.adobe.com/jp/kb/*
// @version 1.1
// ==/UserScript==
(function() {
location.href.match(/\?(\d+)\+/);
var doc_number = RegExp.$1;
location.replace("http://www.adobe.com/jp/support/kb/ts/" + doc_number.substr(0,3) + "/ts_" + doc_number + "_ja-jp.html");
})();


ま、難しいことはしていない。シンプルいずベストなのですよ。
OperaとFirefoxで確認している。これどーしよー。
作者から許可が下りればCodeReposとかにうpしたいなー。

追記
作者から許可が降りたので、CodeReposへうpした。
http://coderepos.org/share/browser/lang/javascript/userscripts/adobe_faq_redirector.user.js
最新版は↑から取得すると吉。

2009年3月3日火曜日

Opera関連のTwitterユーザをクローリングしたよ!

このエントリーをはてなブックマークに追加
人力でなっ!

http://quill.to/arccosine/5da7aed8e4

その他追加して欲しい人が居ましたら、@ArcCosineまでreplyください。
メールは左上のアドレスなので、恥ずかしがり屋さんはそちらへどぞー。

2009年3月1日日曜日

ブラウザに関する雑感

このエントリーをはてなブックマークに追加
ふと、思ったので適当に書き綴る。
ブラウザって言っているけど、レンダリングエンジンではなくI/F重視で。
とにかく知っている範囲でざりっと書いた雑文。
全て真実であり、ネタです。

InternetExplorer6
諸悪の根源
IE死ねの権化
要らない子
マジで要らない子
でも、意外と頑張ってレンダリングできる
普通の人を飼いならす程度の能力

InternetExplorer7
実は地味に頑張る子
でも、要らない子
遅い
死ぬほど遅い 
Operaで20ページ表示する間に1ページとかザラ(誇張表現あり)

InternetExplorer8
殆ど試していないので、判断しづらい
割とCSS系のバグが少ないらしい
まあ、どちらにしろ、使えないブラウザである事に間違いない。

Firefox2
まだ使っている人は、IE6ユーザと同罪
むしろ、Firefox3使おうぜ
アドオンが対応していない? 軟弱な事言うな!

Firefox3
頑張る子
でも、CSS系で一部実装が追いついていない箇所あり
でも、ぶっちゃけ、サイト構築時に困らない(爆)
アドオン入れなくても戦える子
アドオン無しが実は最強
Fireguesture+Firebugでもっと戦えるようになる。

Vimperator
Firefox3派生ブラウザ
アドオン入れてるだけじゃねーかって人はブラウザの定義を考え直す必要あり
初心者の導入を完全に打ち砕く鬼畜仕様
だけど、Vim指な人には最高すぎる相棒
プラットホームがFirefoxからVimperatorへ移行するヘビーユーザは多いと思う

Safari3
頑張った子
一ページ目の表示だけ速かった(過去形)
UIは悪くないけど、まだ詰めが甘い感じ

Safari4
最近株急上昇中
UIがかなり精錬されていると思う。
あと少し詰めればほぼ無敵な感じになりそう。
IEから乗り換えを自信持ってオススメできるブラウザ

Google Chrome
Javascript最強
10ページ未満のブラウジングしない時はコレ
少ないページ数なら間違いなく使いやすいと思う
最も、普段から100タブとか平気で開く使い方だからOpera以外の常用は考えづらい

Lunascape
エンジン三つ搭載しているらしいから、遊びで入れてる
殆ど使わない
起動速度速いらしいけど、僕にとってはあんま関係ない
むしろ、安定動作するか否かが重要で、まだまだ不安定という判断
#そもそも、IEが不安定すぎるので(ry

Slepnir1.66
ある意味最強UI
枯れているので、人間の方が順応しきっている困ったブラウザ
これを乗り換えるのは大変だと思う

Slepnir2
WindowsUpdate用(ぇ

Opera9.63
たまに起動する
ゴリゴリカスタマイズして割と使いやすい感じになっている
UserJavaScriptで色々実験する時用
ユーザの一部が変態

Opera10α
メインブラウザですが、何か?
起動早い、ページ表示サクサク、Javascript大量に使っているサイトでの高速動作
+大量タブを開いても安定して動く気持ち悪さ+変態キーバインド対応+空間ナビゲーション+マウスジェスチャ=最強
たまにクラッシュするけど、概ね良し
はい、主観入りまくりです
UIが自分向けに色々カスタマイズ出来るので好き
画面にはアドレスバーしか表示されていない
赤いアイコンに悶える
アドレスバーから色々出来る
UserJavaScriptで胸キュン
ユーザが全員変態