[greasemonkey]リンク先のイメージファイルをlightbox風に表示するgreasemonkey
自分用に作ったgreasemonkeyを公開してみた。後悔している。
http://userscripts.org/scripts/show/37265
結構適当に作ってます。ダメ出し歓迎なので、よろしくお願いします。
簡単な説明
インストール後、いつものように画像リンクを踏むとlightbox風のビューアが表示されます。
ビューアはクリックすることで閉じます。
拡張子で画像リンクかどうか判別しているのですが、リンク先が画像でない場合には上手く動作しない上に、リンク先へ移動も出来ない仕様となっております。ご了承ください。
(そのうち直します。すみません…)
追記
http://userscripts.org/scripts/show/35377
これで欲しい機能は揃っている模様。全然しらなかった…。
vim のkeymapでCtrl-Spaceが設定できなかったので調べてみた。
行き着いた先はここ。
Avoid the escape key | Vim Tips Wiki | FANDOM powered by Wikia
どうやら
imap
出来ました!
前に軽く調べたときに分からなかくて、ずっと放置していたんですよね。
今度Shift-Spaceの設定方法も確認しておかねば…。
[linux]zshrcファイルを分割して整理する
以下を.zshrcファイルに追加して、$home/.zshディレクトリに、*.zsh なファイル名でスクリプトを配置する。
ZSHHOME="${HOME}/.zsh" if [ -d $ZSHHOME -a -r $ZSHHOME -a \ -x $ZSHHOME ]; then for i in $ZSHHOME/*; do [[ ${i##*/} = *.zsh ]] && [ \( -f $i -o -h $i \) -a -r $i ] && . $i done fi
乱雑になりがちな.zshrcファイルを機能ごとに分割して整理したくなったので、方法を探してやってみました。
今はまだ整理が終わってないので、ファイル数が少ないですが、今後増えていくでしょう。
ls ~/.zsh prompt.zsh screen-status.zsh screen-complete.zsh
FirefoxのファイルメニューにRestartを追加するuserChrome.js
http://amb.vis.ne.jp/mozilla/?p=50のスクリプトは、
終了確認ダイアログを表示しない。
sessionstoreがcurrentWindowのみしか機能しない。
そこでmulti-windowでもsessionstoreが正常に機能するように改良してみました。
改良後スクリプト
/** * A user script for userChrome.js extension. * @name Restart Firefox * @description Add 'Restart' command to 'File' menu in Firefox menubar. * @compatibility Firefox 1.5 - 3.0 * @author Gomita * @version 2007.02.14 * @permalink http://amb.vis.ne.jp/mozilla/?p=50 */ // 2007.02.14 modified by http://d.hatena.ne.jp/dgdg/20070214/1171472940 // - add "R" accesskey // - supporting multi-window (function() { // create 'Restart' menuitem var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Restart"); menuitem.setAttribute("accesskey", "R"); /* original menuitem.addEventListener("command", function() { const APP_START = Components.classes['@mozilla.org/toolkit/app-startup;1'].getService(Components.interfaces.nsIAppStartup); APP_START.quit(APP_START.eRestart | APP_START.eAttemptQuit); }, false); */ menuitem.addEventListener("command", restartApp, false); // insert 'Restart' menuitem before 'File' > 'Exit' document.getElementById("menu_FilePopup").insertBefore(menuitem, document.getElementById("menu_FileQuitItem")); //restartApp find here: // - chrome://mozapps/content/extensions/extensions.js // - %FirefoxApplicationDir%/chrome/toolkit.jar/content/mozapps/extensions/extensions.js function restartApp() { const nsIAppStartup = Components.interfaces.nsIAppStartup; // Notify all windows that an application quit has been requested. var os = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"] .createInstance(Components.interfaces.nsISupportsPRBool); os.notifyObservers(cancelQuit, "quit-application-requested", null); // Something aborted the quit process. if (cancelQuit.data) return; // Notify all windows that an application quit has been granted. os.notifyObservers(null, "quit-application-granted", null); // Enumerate all windows and call shutdown handlers var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); var windows = wm.getEnumerator(null); while (windows.hasMoreElements()) { var win = windows.getNext(); if (("tryToClose" in win) && !win.tryToClose()) return; } Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup) .quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit); } })();
説明など
改良後のスクリプトにはrestartApp()が定義されています。
この関数はFirefoxにAdd-onをインストールした時に表示されるリスタートボタンに使われていたものです。
chromeURL(chrome://mozapps/content/extensions/extensions.js)をFirefoxで開くとrestartApp()が定義されているjsファイルをダウンロードすることが出来ます。
この関数を探すのに、DOM Inspectorを使用しました。
FirefoxのtoolメニューからAdd-onsを起動します。
同じくtoolメニューからDOM Inspectorを起動します。
DOM InspectorのFileメニュー > Inspect a Window でAdd-onsを指定します。
Ctrl + F で restart と検索します。
restartApp() なるものを見つけることが出来ると思います。
続いて DOM Inspectorのロケーションバーをみると
chrome://mozapps/content/extensions/extensions.xul
となっているはずです。
このchromeURLの実体がどこにあるかというと、
Firefoxのインストールディレクトリ/chrome/toolkit.jar
に含まれています。
chromeURLは同ディレクトリにあるtoolkit.manifestによって定義されています。
toolkit.jarを解凍してXULファイル
mozapps/extensions/extensions.xul
をエディタで見てみると以下のような部分を見つけることが出来ると思います。
<script type="application/x-javascript" src="chrome://global/content/globalOverlay.js"/> <script type="application/x-javascript" src="chrome://global/content/contentAreaUtils.js"/> <script type="application/x-javascript" src="chrome://mozapps/content/extensions/extensions.js"/> <script type="application/x-javascript" src="chrome://global/content/nsDragAndDrop.js"/> <script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
この中で、同じディレクトリにある
chrome://mozapps/content/extensions/extensions.js
を見てみます。
探していたrestartApp()を発見できました。
後はこれをuserChrome.jsに組み込むだけです。
「初めてのPerl 第3版」でPerlを始めました。
- 作者: ランダル・L.シュワルツ,トムフェニックス,Randal L. Schwartz,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2003/05
- メディア: 単行本
- 購入: 15人 クリック: 474回
- この商品を含むブログ (273件) を見る
Perlは初めてですが、まず読んでみています。(現在9章まで完了)
自分が知りたかった部分が程よく出てくるので、特につまずくポイントもなくてGood!
これは読むのが楽しい。いつの間にかPerl脳になってきている自分がいます。
「プログラミングの経験があって、Perlには興味があるけど何から始めたら良いか分からない」という自分にぴったりの本だと思いました。
だんだんPerlの雰囲気というか考え方が分かってきたので、何か書けそうな気がします。
coLinux(Debian)にsshfsをインストールしてリモートサーバのファイルを直接編集する(インストールメモ)
shfsが超便利! - 2nd lifeより
shfsでSSHでログインできるサーバのディレクトリをマウントしてsambaで共有してごにょごにょ、とできるらしいです。
とても便利そう…ということで試しにインストールしてみます。
apt-cache search で検索するとsshfsという同じ(?)ものがあったのでこちらをインストールしてみます。
sshfsはfuseというパッケージを利用しているのですが、自分でコンパイルしてあげないといけないようです。
今回の環境は
- http://www2.starcat.ne.jp/~kanocl/colinux/colinuxscratch.htmを参考にしてインストールしたDebian
- coLinux-0.6.4
インストールメモ
# まずはkernelを更新 apt-get update apt-get dist-upgrade # 必要なパッケージをインストール apt-get install kernel-package apt-get install module-init-tools apt-get install wget apt-get install fuse-source apt-get install sshfs apt-get install ssh apt-get install module-assistant apt-get install gcc-3.4 # gcc ln -sf /usr/bin/gcc-3.4 /usr/bin/gcc # fuse-sourceがここにインストールされているはず cd /usr/src # 現在入っているバージョンのkernel-source wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.tar.gz wget http://nchc.dl.sourceforge.net/sourceforge/colinux/coLinux-0.6.4-src.tar.gz tar zxf linux-2.6.11.tar.gz tar zxf coLinux-0.6.4-src.tar.gz tar jxf f*.bz2 ln -s linux-2.6.11 linux cd linux patch -p1 < ../coLinux-0.6.4/patch/linux cp ../coLinux-0.6.4/conf/linux-config .config make-kpkg --append-to-version '-co-0.6.4' modules_image cd .. dpkg -i *.deb # fuseグループ(デフォルト)にsshfsを使うユーザを追加する vi /etc/group
これでsshfsを使うことが出来るようになります。
例:
sshfs sshusr@remotehost:/home/htdoc /mnt
マウントしたディレクトリはsshfsコマンドを実行したユーザしか見れないのですが、設定があるようです。(from:http://datafarm.apgrid.org/document/html/ja/user/samba-gfarmfs.html)
Samba を経由して FUSE を使ったマウントポイントにアクセスするには, FUSE のセキュリティに関する設定が必要になります.
FUSE 2.2.1 以前では,以下の /etc/fuse.conf の設定は必要ありません.(補足もご覧ください.)
/etc/fuse.conf を作成し,以下のように編集します. FUSE のインストール直後は,このファイルがありません./etc/fuse.conf user_allow_other
後はsambaをインストールして設定するだけでWindowsでsshfsでマウントしたディレクトリを見ることが出来ると思います。
ssh-agentなどを利用するとsshでのログインを簡単にすることが出来るようになるそうなのですが、まだ試していません。