スポンサーサイト
投稿日時 : -------- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-------- --:-- | スポンサー広告
GMailが仕様変更してメールごとにブックマーク可能に
投稿日時 : 2008-04-22 21:09
 今日GMailがなんとなく様子が変わっていることには気づいていましたが、実はけっこう大きな仕様変更があったようです。細かい点はおいといて注目すべきはメールが個別にブックマーク可能になっていることでしょう。
 
Gmail がメールごとにブックマーク出来るようになって超便利 - IT戦記
 
 GMailは検索機能が充実しているからと安心していたらイザという時に意外に目的のメールが見つからなかったりするものですが、これでGoogleブックマークなんかに登録しとけば大事なメールをより確実に分類できるかもしれません。
 
 セキュリティ的には、URLが外部に漏れたとしてもメールにアクセスすることはできないようなので安心。GMailはメールのやりとりがスレッドとしてまとめられますが、そのスレッドに参加している相手がURLにアクセスしてもhttp://mail.google.com/mail/に飛ばされて内容を見ることはできないようになっているとのこと。  
 
スポンサーサイト
2008-04-22 21:09 | IT | Comment(0) | Trackback(0)
Firefoxの非互換アドオンを強制インストールする方法
投稿日時 : 2008-04-22 04:34
 Firefox3.0beta5が速い速いと評判ですが、2008年04月22日現在、対応アドオンが少ないのが現状です。beta5を試してみたいけど、いつも使っているアドオンが使えないのでちょっと・・・という人に互換性のないアドオンを強制インストールする方法を紹介。お約束ですが自己責任でお願いします。
 

■Firefoxが起動できなくなったときの対処方法

 非互換アドオンはものによってはまったく問題なく動作しますが、中には本当に互換性がなく、Firefoxの起動自体ができなくなってしまうものもあります。先にそういった状態に陥った場合の対処を書いておきます。
 
windowsの場合は「スタート」メニューの「ファイル名を指定して実行」で
firefox --safe-mode
と、セーフモードオプションを指定して起動します。Firefoxをインストーラを使ってインストールしなかった場合や、インストール後にインストールフォルダを移動させた場合はfirefox.exeのパスをフルパスで入力しなくてはいけないかもしれません。Linuxなどの場合はシェルから同じようにセーフモードオプションを付けて起動させます。
 
 うまくいけば以下のようなウィンドウが出るので「すべてのアドオンを無効化する」にチェックを入れて「セーフモードを続ける」でFirefoxを起動させます。
firefox --safe-mode
 
 起動できたらアドオンの管理画面で問題があるアドオンを無効にするなり、削除するなりしたら再起動して正常に起動できることを確認して下さい。
 

■Nightly Tester Toolsで互換性チェックを無効にする方法

 互換性チェックの有効無効を簡単に切り替えることができるアドオンにNightly Tester Toolsというのがあります。
設定で「Disable add-on compatibility checking」にチェックを入れて互換性チェックを無効にすると非互換アドオンがインストールできます。たぶんこれが一番お手軽な方法です。  
 ただ、公式アドオンページが最近新しくなって、互換性がないアドオンはインストールボタンに「このアドオンは古いバージョンのFirefox向けです」と表示されてクリックできないようになっている。この場合はIEなどのFirefox以外のブラウザで表示すると、このボタンが「今すぐダウンロード」になるので、いったんデスクトップなどにxpiファイルを保存してからFirefoxにD&Dするとインストール画面が出る。この作業が若干面倒なのでFirefox上で互換性のないアドオンのインストールボタンを強制的に有効にするブックマークレットを公開しています。
 
 互換性チェックを無効にすると、たとえば現在3.0b5と非互換アドオンであるFireGesturesには以下のように「!」マークがつき「Firefox 3.05bには対応していません。」と表示されるが、実際は問題なく動作する。
incompatible
 Nightly Tester Toolsをインストールしたことでアドオン管理画面の右下に「Make all compatible」というボタンが追加される。このボタンを押すとすべての非互換アドオンを互換(compatible)アドオンとして扱うようになり、「!」マークが消える。おそらく以下で解説しているinstall.rdfの互換バージョン記述部分を書き換えてるだけで、実際のコードを修正しているわけではありません。どれが非互換のアドオンなのか識別するためにも、特に必要性がないならこのボタンは押さなくてもいいと思います。
 

■xpiファイルを改造して強制インストールする方法

 次は互換性チェックを無効にするのではなく、互換バージョンを偽って申告し強制インストールする方法。Firefoxはアドオンのインストール時点ではあくまでアドオン自身の自己申告を信用するしかありません。Firefoxはアドオンのインストールの可・不可をxpiファイル内のinstall.rdfというファイルに記述された内容を元に判断しています。このファイルの互換バージョンが記述された箇所を編集してやることでFirefoxを騙せます。ただし、実際にそのアドオンが動作するかは別の問題です。
  1. xpiをIEなどでダウンロードする
  2. 拡張子をzipに書き換えて解凍
  3. 「install.rdf」の「em:maxVersion」の値を「3.0+」に書き換える(4.0+や3.0.0.*でも可。使用したいバージョンに合わせて変更する)
  4. 中身をすべて選択してzipで圧縮する(親フォルダごと圧縮してはいけない)
  5. 拡張子をxpiに書き換える(圧縮時の出力ファイルをxpiにしても可)
  6. FirefoxにD&Dしてインストールする
インストール時に以下のように「Firefoxはパッケージ中の"install-dlr..rdf"が正しくないまたは~」という感じのエラーメッセージが出るときはたぶんzip圧縮の問題です。親フォルダごと圧縮したりすると圧縮ファイル内の階層が深くなってしまい、アドオンインストーラがinstall.rdfを見つけられなくなるのが原因だと思う。
install error  
以下のように中身をすべて選択してzip圧縮してください。
compress  
 
 この方法のデメリットはアドオン管理画面でどれが互換でどれが非互換のアドオンだったのか見分けがつかなくなるということ。
 
2008-04-22 04:34 | Windows | Comment(0) | Trackback(1)
Firefox上で互換性のないアドオンのインストールボタンを強制的に有効にするブックマークレット
投稿日時 : 2008-04-21 22:53
 新しくなったFirefoxの公式アドオンページではブラウザ本体のバージョンと互換性のないアドオンのインストールボタンが自動で無効になるようになってしまいました。2008/04/21現在、史上最速と言われるFirefox3.0beta5に正式対応したアドオンはまだまだ少ないので、多くのアドオンのインストールボタンが無効になっています。
 しかし動作保証がないだけでインストールすれば使えるアドオンも少なくありません。IEなどのFirefox以外のブラウザでxpiファイルをダウンロードしてFirefoxにD&Dする方法もありますが、面倒なのでFirefox上で無効になったインストールボタンを強制的に有効にするブックマークレットを作りました。
 
実行すると以下のように「このアドオンは古いバージョンのFirefox向けです」と表示され無効になってクリックできないインストールボタンを強制的に有効にします。
demo
 
 ただし、このブックマークレットを使ってもインストール画面に進めるようになるだけで、インストール時の互換性チェックではじかれます。互換性チェックを無効にできるアドオンのNightly Tester Toolsをインストールして「Disable add-on compatibility checking」にチェックを入れた状態で使用して下さい。
 
関連:Firefoxの非互換アドオンを強制インストールする方法  
 
ブックマークレット本体
 
整形済みソース全文
javascript:(function(){
	var d=document.getElementsByTagName('div');
	for(var i=0;i<d.length;i++){
		if(d[i].id.match(/install-([0-9]+)$/))
			removeCompatibilityHint(RegExp.$1);
	}
})();
 
 removeCompatibilityHintという関数にアドオンのIDを抽出して渡してるだけです。はじめは無理矢理xpiファイルのURLを取得してAオブジェクト生成しようとしてたんですが、公式アドオンページのHTMLソースを眺めてたらインストールボタンのリンクをいじってそうなそれっぽいjsファイルを発見。解読してみると、アドオンのリンク書き換え関係の関数がいくつかあって、その中にページロード時にUAその他の条件で無効にしたリンクを再度有効にする専用の関数があったので利用させてもらいました。おかげで楽できた。

 
2008-04-21 22:53 | Bookmarklet | Comment(0) | Trackback(0)
ニコ動でプレーヤ部分まで自動スクロールさせるスクリプト
投稿日時 : 2008-04-09 19:38
更新日時 : 2009-07-08 18:26
追記:2009-07-08 18:26:改良版を公開しました → Electronic Genome - ニコニコ動画でプレーヤ部分まで自動スクロールするスクリプト改良版『nicoscroll2』
 
 

■概要

ニコニコ動画の再生ページでプレーヤ部分まで自動でスクロールしてくれる、Greasemonkey/SeaHorse/Trixie/OperaUserScriptの共用スクリプトを作りました。
 
画面サイズが1024x768とかだとプレーヤの縦幅がブラウザの表示領域の縦幅とほぼ同じなので、プレーヤをその表示領域にぴったり合わせるのが面倒。で、自動化してしまおうと。
 

■動作環境

動作はFirefoxのGreasemonkey、SleipnirのSeaHorse、IEのTrixie、OperaのUserScriptで確認。
 

■インストール

FirefoxでGreasemonkeyをインストール済みなら以下をクリックするだけでOK。他は各ヘルプを参照して下さい(大体はダウンロードして所定位置に配置後オプションから有効にするという流れ)。
nicoscroll.user.js  

■スクロール位置の調整

デフォルトでプレーヤの上端の部分までスクロールします。画面の縦サイズが768ピクセル以上ある今時なディスプレイだとそこまでスクロールする必要がないかもしれません。そういう時はスクリプト中の
var fix = 0;
となっている部分を
var fix = -200;
のように負の整数にするとスクロール位置を200ピクセル上に修正できます。もちろん別に200じゃなくてもかまいません。
あまり無いかもしれませんが、逆にもっとスクロールさせたい場合は
var fix = 200;
のように正の整数にするとスクロール位置を200ピクセル下に修正できます。
 

■ソース全文

すごく簡単なつくりです。
nicoscroll.user.js
// ==UserScript==
// @name           nicoscroll
// @namespace      http://itmst.blog71.fc2.com/nicoscroll.user.js
// @description    auto scroll to the player object
// @include        http://www.nicovideo.jp/watch/*
// ==/UserScript==

(function(){
  try{
    var fix = 0;
    var y = document.getElementById("flvplayer_container").offsetTop;
    window.scrollTo(0,y + fix);
  }catch(e){}
})();
2008-04-09 19:38 | user.js | Comment(1) | Trackback(1)
Ubuntu + NFSサーバでファイル共有
投稿日時 : 2008-04-09 13:01
Ubuntu7.10 + NFSでファイル共有した際の設定メモ。
 

■NFSとは

Network File Systemの略で、ネットワークを介してUNIXシステム間でファイル共有を可能にする機能。リモートのファイルシステムをローカルファイルシステムと同じように扱うことができるようになる。元はSunが開発したもの。
 

■必要なパッケージ

$ sudo apt-get install portmap nfs-common nfs-kernel-server
 
NFSサーバにはkernel組込み版と通常daemon版の2種類がある。kernelサーバ版はkernel内部にカーネルスレッドとして組み込まれているのでパフォーマンスがよく、ファイルのロック機構も有効になる。nfs-user-serverは通常のdaemon版で、速度的にはkernel版に劣るが柔軟な設定が可能なのが特徴。
 
サービスは以下のような感じ。
$ sysv-rc-conf --list | grep -E 'nfs|portmap'
nfs-common   0:off   1:off 2:on 3:on 4:on 5:on 6:off S:on
nfs-kernel-s 0:off   1:off 2:on 3:on 4:on 5:on 6:off
portmap      0:on    1:off 2:on 3:on 4:on 5:on 6:on S:on
nfs-kernel-sで表示が切れてるが本当はnfs-kernel-server。
 

■起動順序

Ubuntuではインストールすると勝手にサービスに登録されて起動したが、手動で起動する場合は起動順序に気をつける必要がある。起動順序に関して検索するとportmap→nfslock→nfsの順に起動しろという記述を目にするが、現在のバージョンではサービス名が変わっているようで、portmap→nfs-common→nfs-kernel-serverの順でいいと思う。一応/etc/rc3.d内のファイル名からサービス起動順序が確認できる。
portmapとnfs-common、nfs-kernel-serverの起動順序
itmst@mv1c3e:/etc/rc3.d$ ls *{portmap,nfs*}
S17portmap  S20nfs-common  S20nfs-kernel-server
nfs-commonやnfs-kernel-serverよりも先にportmapが起動していないとまずいことが分かる。RPCベースのサービスはportmapサービスに依存するので当然。
 

■RPC

portmapはRPC(Remote Procedure Call)を管理する。NFSサービスはRPCで提供される。 RPCはリモートマシンに用意されているなんらかのサービスを、別のマシンから呼び出して使えるようにする機能。 RPCサービスはプログラム番号で識別される。サービス名とプログラム番号の対応は/etc/rpcで設定されている。
(省略)
portmapper      100000  portmap sunrpc
rstatd          100001  rstat rstat_svc rup perfmeter
rusersd         100002  rusers
nfs             100003  nfsprog
(省略)
 

■RPCとportmap

RPCの各サービスのTCP/IPポート番号は実行時に動的に割り当てられる。それを管理するのがportmapサービス。 クライアントからサービス番号を受け取り対応するサービスのポート番号を返す。 現在portmapに登録されているすべてのRPCプログラムを表示するには「rpcinfo -p」を実行する。
$ rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100024    1   udp  32768  status
    100024    1   tcp  35772  status
    100011    1   udp    630  rquotad
    100011    2   udp    630  rquotad
    100011    1   tcp    632  rquotad
    100011    2   tcp    632  rquotad
    100000    2   udp    111  portmapper
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   udp  32780  nlockmgr
    100021    3   udp  32780  nlockmgr
    100021    4   udp  32780  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    1   tcp  33493  nlockmgr
    100021    3   tcp  33493  nlockmgr
    100021    4   tcp  33493  nlockmgr
    100005    1   udp  32781  mountd
    100005    1   tcp  44233  mountd
    100005    2   udp  32781  mountd
    100005    2   tcp  44233  mountd
    100005    3   udp  32781  mountd
    100005    3   tcp  44233  mountd
 
nfsはTCP/IPポート2049番に割り当てられているのが確認できる。portmapperは111番。 クライアントは111番のportmapperサービスにnfsのサービス番号100003で問い合わせ、 nfsサービスがTCP/IPの2049番で動作していることを知ることができる。このようにポート番号は動的に割り当てられることになっているが実際のところNFSは2049番ポートで実行されることがほとんどのようです。
 

■portmapのアクセス制御

portmapにはTCPWrappersのライブラリlibwrapが組み込まれているので/etc/hosts.allowと/etc/hosts.denyでアクセス制御が可能。以下のように設定することで192.168.0.0/24ネットワークからのみportmapサービスにアクセスできるようにすることができる。ただしportmapサービスのアクセス制御はRPCベースのすべてのサービスに影響することに注意する。
 
□192.168.0.*からのアクセスを許可する
/etc/hosts.allow
 ALL:127.0.0.1
 portmap:192.168.0.
 lockd:192.168.0.
 mountd:192.168.0.
 statd:192.168.0.
□その他のアクセスを拒否する。
/etc/hosts.deny
 portmap:ALL
 lockd:ALL
 mountd:ALL
 rquotad:ALL
 statd:ALL
上記の設定は以下を参考。
NFS サーバの設定
 

■公開ディレクトリの設定ファイル

公開ディレクトリは「/etc/exports」で設定する。
/etc/exportsの書式
<公開ディレクトリ> <アクセス許可ホスト>(<カンマ区切りオプション>)
 
□主なオプション一覧
ro読み取りのみ許可
rw読み取り・書き込みともに許可
root_squashリモートrootをnobodyユーザとして扱う。明示的に指定しなくてもデフォルトで有効になる。no_root_squashオプションで無効にできるが、特別な理由がない限り避けるべき。
no_root_squashリモートrootをローカルrootとして扱う。クライアント側のroot権限をNFSでマウントしたファイルシステムにも有効にする。セキュリティホールになり得るので特別な理由がない限りこのオプションは使うべきではない。
all_squash全てのユーザを不特定ユーザとして扱う。 全てのユーザを匿名ユーザ(nobody)として扱う
anonuid不特定ユーザ用にローカルユーザIDを指定 匿名ユーザ用のUIDを指定する
anongid不特定ユーザ用にローカルグループIDを指定する 匿名ユーザ用のグループIDを指定する
no_subtree_checkサブツリーのチェックを無効
 
その他オプションは以下参照
Manpage of EXPORTS
 
実際の例として、/home/itmst/Desktopをlanドメインからのすべてのアクセスを許可し、読み書き可、root権限なし、サブツリーチェック無効で公開する場合、
/home/itmst/Desktop *.lan(rw,root_squash,no_subtree_check)
となる。ひとつのディレクトリに対して複数の公開対象ホストを設定する場合はスペース区切りで続けて記述する。
/home/itmst/Desktop *.lan(rw,root_squash,no_subtree_check) *.lan2(ro)

スペースが区切り文字として認識されるので、「*.lan」と「(rw,」の間にスペースを空けてはいけないことに注意。
 

■設定の反映

/etc/exportsを変更した場合は以下のコマンドを実行して設定を反映させる。
$ sudo service nfs-kernel-server reload
 * Re-exporting directories for NFS kernel daemon...     [ OK ]
または
$ sudo exportfs -r
でも可。
 

■公開ディレクトリの確認

公開されているディレクトリを確認するにはnfs-commonパッケージに含まれるshowmountコマンドを使う。-eオプションでホストを指定できる。クライアントの設定をするときも目的のホストの公開ディレクトリを確認できる。
$ showmount -e localhost
Export list for localhost:
/home/itmst/Desktop 192.168.0.*
 

■サーバとクライアントでuidとgidを統一させる

NFSではユーザの識別がユーザ名ではなく、ユーザIDによって行われるため、サーバ側とクライアント側でユーザIDを統一しておく。

■NFSクライアント

クライアント側からNFS公開ディレクトリをマウントする。通常のmountとほとんど同じだが、マウント対象ディレクトリの前に「ホスト名:」をつける。マウントオプションは-oオプションでカンマ区切りで記述する。-tオプションでファイルシステムにnfsを指定してもいいが無くてもいける。  
□代表的なマウントオプション
hardハードマウント(デフォルトで有効)
softソフトマウント
intrハードマウント時に割り込みを受け付けるかどうか
rsize=byte読み込みバッファサイズ デフォルト1024Byte。rsize=4096のように1024の倍数で16384までの範囲でバイト単位で指定。
wsize=byte書き込みバッファサイズ デフォルト1024Byte。rsize=4096のように1024の倍数で16384までの範囲でバイト単位で指定。
nosuidサーバ上のsuidプログラムの実行を不可にする。クライアント側のroot所有ファイルが書き換えられるの防ぐ。サーバが完全に信用できない場合は有効にすべき。
noexecサーバ上のファイルの実行を禁止する。サーバが信用できない場合、必要なら有効に。
 
実際にマウントする際の例は以下。
$ sudo mkdir /mnt/nfs
$ sudo mount -t nfs -o hard,intr 192.168.0.3:/home/itmst/Desktop nfs
 

■ハードマウントとソフトマウント

ハードマウントの場合は、NFSサーバへの書き込みは保証されるが、サーバ側がダウンした場合クライント側では無限にリトライを繰り返し、 プロセスがハングアップする可能性がある。サーバが復活したらそのまま再接続される。 ソフトマウントの場合は、NFSサーバへの書き込みは保証されないのでファイルが破損する可能性がある。 接続できない場合はタイムアウトするのでハングアップの心配はない。
 
NFSの問題については以下参照。
NFS環境の問題点と自動マウント
 
複数のクライントが接続する場合は負荷が高くなるのでautofsなどを使って通信が発生する場合のみマウントするようにした方が良い。
 

■/etc/fstabに登録して自動起動

書式
<ホスト名>:<リモートディレクトリ> <マウント先ディレクトリ> nfs <カンマ区切りオプション> 0 0
192.168.0.3で公開されている/home/itmst/Desktopを読み書き可、割り込み可でハードマウントする場合は
192.168.0.3:/home/itmst/Desktop /mnt/nfs nfs rw,hard,intr 0 0
という感じになる。
 
[参考]
Linux NFS-HOWTO
NFS(Network File System)
 
2008-04-09 13:01 | Linux | Comment(1) | Trackback(1)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。