タグ

ブックマーク / d.hatena.ne.jp/lurker (30)

  • 拡張子に対応したアイコンの取得 - 技術メモ帳

    Firefox限定だが、 moz-icon://.拡張子?size=アイコンのサイズ で、拡張子に対応したアイコンを取得できるらしい。 そこでためしに、URLが html, pdf, zip で終わってるリンクに それに対応したアイコン画像を付加する Greasemonkey を作ってみた。 すごいリソース無駄遣いしてるが、これは後でリファクタリングする。 add_mozicon.user.js // ==UserScript== // @name add_mozicon // @include http://* // ==/UserScript== var extensions = [ 'html', 'pdf', 'zip' ]; var items = document.getElementsByTagName("a"); for(var i=0; i<items.length; i

    youpy
    youpy 2010/01/26
    moz-icon://.拡張子?size=アイコンのサイズ
  • 技術メモ帳 - zsh/filesで引数の最大バイト数を回避する

    zshmodules の zsh/files を利用すると、 chgrp, chown, ln, mkdir, mv, rm, rmdir, sync といったコマンドが、 zsh組み込みの関数に置換えられる。 メリットとしては、 移植性が高くなる、 引数文字列の最大バイト数の制限を受けなくなる ということが挙げられるだろう。 このうち、特に僕が便利だなと思っているのが、 引数文字列の最大バイト数の制限を受けなくなるということだ。 簡単に説明すると、 通常、コマンドを実行するときに 引数文字列のバイト数が一定の値を越えると 以下のようにエラーを出して処理をしてくれない。 % mv ./* ../dir zsh: argument list too long: mv そして最悪な事にコレは、 グロブなどを展開した後の文字列のバイト数であるため、 zsh の extended_glob とは非

  • 直前に入力したコマンドの最後の引数を補完 - 技術メモ帳

    Esc + ドット(.) と入力すると、 直前に入力したコマンドの最後の引数を補完してくれる。 複数回入力する事によって、 過去にどんどんさかのぼっていく。 追記: ブックマークコメントにも書かれてますが、 Esc は、正確には Meta キーです。 さらに追記: 他にも、色々あるようで、 id:hiboma さんの以下のページに非常に詳しく書かれています。 http://d.hatena.ne.jp/hiboma/20061005/1160015116

    youpy
    youpy 2008/08/27
  • lessでtail -f - 技術メモ帳

    less 起動中に、F と大文字で入力する事で、 tail -f のような挙動になるらしい。 知らなかった。 いつでも気軽に直前のログを見に戻る事が出来るのが良いね。 Ctrl + C で元のモードに戻る。 lessの場合 less +内部コマンド名 としておく事で起動時に内部コマンドを実行できるので とりあえず、ltailf という名前でエイリアスしておいた。 alias ltailf='less +F'

    youpy
    youpy 2007/07/19
  • システム管理に使えるファイル更新監視テク - 技術メモ帳

    システム管理とかしてると、特定のディレクトリ以下のファイルの更新を 調べたいときとかっていうのはわりとある。 どんなファイルが更新されてどういった内容に変化したのかを見える化。 またしても Linux / watch ネタだ。FreeBSDはportsで、mac osx(darwin)は どこかで公開されてたdmgを使ってる。 中毒性があるので未成年の使用は禁止されている。 カレントディレクトリ内のファイルを 最近更新があったファイルを上の方に表示し、 最終行2行を表示し続けるもの。 $ watch -n2 'tail -n2 `ls -t`' Every 2s: tail -n2 `ls -t` Wed Feb 28 01:04:40 2007 ==> test2.txt <== unko ==> test4.txt <== aiueoadfsaf ==> test1.txt <== e

    youpy
    youpy 2007/02/28
  • 漢のzshに乗り換えた時にアッーってなるコト - 技術メモ帳

    男のbashユーザーが、バラ色の紳士こと漢のzshに乗り換えたときに アッーってなるコト事を先ほどいくつか思いついたので共有する。 !!とかの履歴実行はrコマンドで zshには、r というシェル組み込みコマンドがあって 履歴からの実行が簡単に行える。 たとえば、一番最後に実行したviコマンドを実行したいときなどだ。 bashなんかだと !vi で出来るのだが、 rコマンドだったら % r vi でよい。 直前に実行したコマンドを再び実行したいとき、 bashなんかだと !! というやり方になるが、 rコマンドでは、 % r とするだけでよい。 また、文字列を置き換えてからの履歴実行はどうだろう。 たとえば次のようなbashの例だ。 $ vi .zshrc $ !vi:s/zsh/bash/ これは、最後に実行したviコマンドの引数文字列を ":s/zsh/bash/" によりzshという文

    youpy
    youpy 2007/02/19
  • 技術メモ帳 - 単語抽出するちょっとしたテクニック

    shell のちょっとしたテクニック - odz buffer odzさんのところで単語の出現頻度を調べるためのワンライナーが紹介されている。 単語抽出についてはいくつかやり方があるので紹介する。 特に egrep -o は非常に実用的。 もちろん、この話はリンク先において主題ではない。 俺のただの自己満足。 tr -cs で単語抽出 $ tr -cs 'a-zA-Z' '\n' < ./.zshrc 上記コマンドで、a-zA-Zのみで構成される文字列を抽出できる。 -c オプションで、'a-zA-Z' の補集合(以外)を '\n' に変換し、 -s オプションで、最後の引数で指定される要素の重複を除去している。すなわち '\n' の連続を除去している。 grep -o で単語抽出 grepには、( -o、--only-matching ) オプションというのがある。 これは、指定された正

    youpy
    youpy 2007/02/16
  • tabesugi.netとの有限時間いたちごっこ - 技術メモ帳

    youpy
    youpy 2007/02/16
  • xargsコマンドを使って指定したコマンドを並列実行させる - 技術メモ帳

    あまり知られていないが、GNUのxargsコマンドには、 プロセスの最大数を設定できるオプションというのが用意されている。 コレを使って、プロセスを並列実行させてみよう。 xargs --max-procs=MAX-PROCS -P MAX-PROCS command MAX-PROCSに数字を指定すると、 最大で、その数だけ command プロセスを生成する。 デフォルトは、1プロセスだけになっている。 いくつか例を交えて説明する。 サンプルとして、以下のようにURLが行ごとに記述されたファイルを元に curlをxargsで並列実行して、HTMLデータを取得してみよう。 $ cat ./url_list.txt http://www.google.co.jp/ http://www.yahoo.co.jp/ http://b.hatena.ne.jp/ まず、普通にxargsを使ってc

    youpy
    youpy 2007/01/18
  • 入力履歴からの予測による自動補完機能 - 技術メモ帳

    zshには、過去の入力履歴から予測し、 リアルタイムに自動補完してくれるという機能というのがあるようだ。 predict-on というのが該当する。 例えば以下の画像は、 この機能を有効にした状態で 'h' とだけ入力した状態だ。 Enter キーを押すだけでただちに実行できる。 なんだか、結構便利だったので 以下のような設定で使用する事にした。 % autoload predict-on % zle -N predict-on % zle -N predict-off % bindkey '^X^Z' predict-on % bindkey '^Z' predict-off % zstyle ':predict' verbose true zsh の man で載っているキーバインドに設定してみた。 Ctrl+X Ctrl+Z で predictモードが ON になり、 Ctrl+Z

    入力履歴からの予測による自動補完機能 - 技術メモ帳
    youpy
    youpy 2006/12/12
  • 技術メモ帳 - zshで出来ている新感覚エディタzed

    zshのZLE Editorを使って作られた zedというテキストエディタがカッコいいうえに非常に便利。 zshの補完がそのまま使えたりする。 % autoload zed % zed ./test.txt 操作方法は、 変更を保存するときは、Ctrl+X Ctrl+W または Ctrl+J と入力。 破棄して終了したいときは Ctrl+C を入力すればいい。 あとはどんな bindkey をしているかによって変わるのだが 基的にemacsキーバインド 使ってみればわかるけどすごく新感覚なエディタ。 その場で編集してる感がすごくある。 ソースにも "他のシェルにはコレは出来ない" と書いてある。(いいすぎだ) # No other shell could do this. # Edit small files with the command line editor. あと、以下のような

    技術メモ帳 - zshで出来ている新感覚エディタzed
    youpy
    youpy 2006/11/30
  • 技術メモ帳: [unix]複数のファイルの名前をまとめて変更する

    複数のファイルの名前を変更する際に、 便利なコマンドというものがある。 いくつかご紹介させていただこう。 カレントディレクトリにあるファイルの名前を、 たとえば、*.html を *.htm と名前を変更するという課題に対し どのぐらいエレガントに書けるかというのを比較してみる。 まず、普通にやったらどうだろう。 おそらく、for文 をつかうことだろう。 for file in *.html do base=`basename $file .html` mv $base.html $base.htm; done; zshだともうちょっとスマートにかけて、 for file in *.html do mv $file:r.html $file:r.html; done; こんな具合。 for文 が嫌いなネット右翼のために、 xargs を使ってこの問題を解いてみよう。 ls -1 *.htm

    youpy
    youpy 2006/11/20
  • 技術メモ帳 - 拡張子ごとにコマンドを対応づける

    拡張子ごとにコマンドを対応づける事が出来る Suffix Alias という機能が zsh 4.2系から実装されていたらしい。 知らなかった。 どんな事が出来るのかというと たとえば、 alias -s txt=cat とした場合、 以下のようにするだけで、 % ./file.txt 先ほど設定したコマンドが自動で実行されるようになる。 % cat ./file.txt あとはもうアイデアしだいだが、 拡張子が *.log のときは、tail -f するなんて事も出来る。 alias -s log='tail -f' 参考: http://zshwiki.org/home/examples/aliassuffix http://slashdot.jp/articles/04/03/27/2333234.shtml?topic=80 http://zsh.dotsrc.org/Doc/Rel

    youpy
    youpy 2006/11/12
  • tabesugi.netにpermalinkを付加するGreasemonkeyスクリプト - 技術メモ帳

    新山さんの日記を見ていて、 これはいいなと思ったものをブックマークしようとするのだが、 最新の日記に、permalink へのリンクがないのでこれはうまくいかず、 今まで手動で permalink を探していたのだが、面倒だったので 今回 Greasemonkeyスクリプト を作ってみた。 日付文字列の隣に、permalink へのリンクをくっつけるようにしてみた。 以下の画像がイメージ図だ。 それにしても新山さんの "良い意味での不便さ" を 改竄してしまうことに正直ボクは躊躇した。 http://tabesugi.net/memo/2006/b1.html#101732 tabesuginet_permalink.user.js // ==UserScript== // @name tabesugi.net permalink user script // @include http:

    tabesugi.netにpermalinkを付加するGreasemonkeyスクリプト - 技術メモ帳
    youpy
    youpy 2006/11/12
  • 定期的にコマンドを実行しその出力の変化を監視する - 技術メモ帳

    以前に、watch コマンドという 指定されたコマンドを定期的に実行し、 フルスクリーンで表示してくれるコマンドがあるという事を書いた。 http://d.hatena.ne.jp/lurker/20060716/1153056030 実は、--differences とオプションを付加する事によって、 直前の出力結果との差分をハイライト表示してくれるらしい。 知らなかった。コレは便利だ。 正直 grep -o を知ったときぐらい感動した。 以下のように入力してみるとどうなるのかが わかっていただけると思う。 ちなみにこれは、1秒おきに、dateコマンドを実行するというもの。 $ watch -n 1 --differences date さらに、--differences=cumulative と付加すると 起動してからのすべての変更部分がハイライトされるようだ。 $ watch -n

    youpy
    youpy 2006/11/02
  • 技術メモ帳 - pgrep, pkill を使用してプロセスを殺す

    最近、会社でシェルの操作方法について教えているのだが、 pgrep / pkill / skill / pidof といった 便利なプロセス操作系コマンドを知らない人が実に多い。 プロセスを殺すというのは、よくある作業なので 今回はコレについて書いてみる。 たとえば、これらのコマンドを知らない人が、 指定した名前のプロセスを kill する手順はだいたい 以下のようなものになることだろう。 $ ps aux | grep プロセス名 | grep -v 'grep' # コマンドの出力結果から pid を目で確認 12345 ... .. hoge .. .. $ kill 12345 この作業は非常に面倒で退屈だ。 もし殺さなければならないプロセスがたくさんあったときは どうするのだろうか。 おまけに、grep コマンド自身が候補に含まれてしまう事があるのだが、 grep -v grep

    youpy
    youpy 2006/11/02
  • PHPで匿名関数 - 技術メモ帳

    PHP でも create_function という関数を使用する事で 匿名関数が作れるらしい。 知らなかった。 使い方は簡単で、以下のような感じで使用する。 create_function( 引数, 実行したいコード文字列 ) 戻り値として関数への参照が返ってくるため、 あとは括弧を付けて呼び出してやれば良い。 $func(); 使用例だが、引数を二つ受け取る関数を作りたければ 以下のような感じ。 $func = create_function( '$a, $b', 'return;' ); $func(1, 2); この場合、$a と $b という名前で 関数に引数が渡される。 そして、配列のすべての要素を1加算するコードが こんなにエレガントに。 <?php $ary = array(0,1,2,3,4,5); $result = array_map( create_function

    youpy
    youpy 2006/10/16
  • カーソル位置までをエスケープする - 技術メモ帳

    すごい便利なのを見つけてしまった。 これはいい。 ESC + " と入力する事で、 カーソル位置までをエスケープする事が出来るみたいだ。 たとえば、以下のように文字列を入力した状態で、 $ hello world hello の o の次の位置で ESC + " と入力すると $ 'hello' world とシングルクォートで囲ってくれる。 複数回入力する事で、 $ ''\''hello'\''' world どんどんエスケープしていく。 ESC + $ でこの逆を行う。 $ 'test test' $ test test

    youpy
    youpy 2006/10/06
  • location.hash の危険性 - 技術メモ帳

    いわゆる、document.write するものには エスケープをしないと行けないのではあるが、 location.hash は、サーバーが生成する部分ではないため 見落としやすいのだろうなぁという事を最近思った。 たとえば、nun.nu というリダイレクタ。 古くからあったように思う。 http://nun.nu/ location.hash の値をそのまま document.write してしまっている。 もちろん、通常のリダイレクト先URLの部分に関してはきちんと HTMLの特殊文字のエスケープが行われている。 残念な事に結果的に、URLに #hogefuga のように指定する事によって XSS を行う事が出来てしまっているのである。 試しに、alert を出す実証コードをここに示す。(Firefoxでしか動作確認していない。) http://nun.nu/http://www.go

    youpy
    youpy 2006/09/17
  • グローバルオブジェクトへの参照は遅い - 技術メモ帳

    マイクロソフトのドキュメントに書いてあったので、 実際にやってみた。 どうも、ローカル変数にグローバルオブジェクトへの参照を キャッシングすると速くなるようだ。 http://www.microsoft.com/japan/msdn/columns/dude/dude100499.aspx たとえば、window オブジェクトを使用するときは、 以下のようにすれば速くなるっぽい。 var w = window; // 以後、w を使用する。 グローバルオブジェクトへの直接アクセス 通常の使い方。 4464 ms window.global = 0; (function(){ console.time("test"); for(var i=0; i<1000000; i++){ window.global++; } console.timeEnd("test"); console.log(

    youpy
    youpy 2006/09/03