タグ

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

  • 定期的にコマンドを実行しその出力の変化を監視する - 技術メモ帳

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

    toton
    toton 2010/06/25
    $ watch -n 1 -dc date
  • 技術メモ帳 - 単語抽出するちょっとしたテクニック

    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 ) オプションというのがある。 これは、指定された正

    toton
    toton 2010/05/21
    grep -o で単語抽出
  • 技術メモ帳

    角谷さんにBDD(ビヘイビア駆動開発)について話していただくというakasaka.rb#2が行われました。 ほとんどの方と初対面だったのですが、気さくに話していただけまして非常に楽しかったです。 今後ともご指導のほどよろしくお願いいたします。 途中でワーキングプアの方が参加されるというハプニングも発生しました。 また、参加者全員に大場さんより "JRuby Tシャツ" がプレゼントされました。 参加者 ・角谷さん(http://kakutani.com/) ・id:Psychsさん ・レオさん(http://twitter.com/lchin) ・id:secondlifeさん ・野口真吾さん(http://cureblack.com/) ・大場さん(http://ko.meadowy.net/~koichiro/diary/) ・大場(嫁)さん(http://ko.meadowy.net

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

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

    toton
    toton 2009/09/05
    M-" M-$ でクオート
  • 実行ファイルを実行できる形で圧縮する - 技術メモ帳

    忘れてたのでメモ。gzexe コマンド。 gzexe - compress executable files in place http://www.linux.or.jp/JM/html/GNU_gzip/man1/gzexe.1.html echoするだけのshell scriptを圧縮してから実行してみる。 $ cat ./test.sh #!/bin/sh echo aiueo $ gzexe ./test.sh ./test.sh: -9.1% # 損してる!! $ chmod u+x ./test.sh $ ./test.sh aiueo 仕組みは簡単で、 ファイルの末尾に圧縮したデータを入れていて、 それを展開して実行するコードが上の方に記述されている。 バイナリが含まれるので cat -v させていただいた。 $ cat -v ./test.sh #!/bin/sh ski

    toton
    toton 2009/09/05
    gzexe
  • sshでSOCKSプロキシ - 技術メモ帳

    ssh -D で 疑似SOCKSサーバー になることができる。 というのは、たしか前にも書いた。 それにプラスして、任意のコマンドを SOCKS対応させる tsocks を利用して VPNのようなことをやってみた。 ( tsocksは、先進的なディストリビューションだと デフォルトで入ってるような気がする。) たとえば、 local -> hostA -> hostB と、hostA を必ず経由しなければ到達できない hostB があったとした場合、 これらを利用すると、同じネットワークにいるかのように 任意のアプリケーションを騙すことができるようになるため、 local$ tsocks ssh user@hostB 上記のように、local から直接アクセスできるようになる。 ちなみに、サーバー側に、 ソフトウェアをインストールする必要はない。 この場合で言う、local のみにソフトウ

    toton
    toton 2008/11/18
    "疑似VPN"任意のコマンドを SOCKS対応させる tsocks
  • altavistaの翻訳Proxy? - 技術メモ帳

    toton
    toton 2008/04/20
    翻訳proxy。 たしかにかっこいい
  • システム管理に使えるファイル更新監視テク - 技術メモ帳

    システム管理とかしてると、特定のディレクトリ以下のファイルの更新を 調べたいときとかっていうのはわりとある。 どんなファイルが更新されてどういった内容に変化したのかを見える化。 またしても 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

  • mysql -Xでクエリーの結果をXMLで取得 - 技術メモ帳

    mysql -X でクエリーの結果がXMLで取得できるらしい。 興味深いのでやってみた。 なんか適当にテーブルを作成する。 とりあえず、4つのカラムを持つtというテーブル作った。 mysql> create table t(id int not null, name varchar(255), body text, updated_at datetime); mysql> insert into t values(1, 'name', 'body', current_timestamp); mysql> insert into t values(2, 'name2', 'body2', current_timestamp); とりあえず、普通にSELECTで表示してみる。 # mysql -e 'SQL' で任意のSQLを実行可能。ワンライナーに使えます。 $ mysql -e 'sele

  • 意外と知られていないファイル探索方法(grep --include) - 技術メモ帳

    書こう書こう書こうと思っていたら先に書かれてしまった。 404 Not Found この行き場の無い感情をどうにかボクの中から排除しなければならない。 そう考えたときに独り言のようにこのブログロに記述すれば良いじゃないかという 結論にたどり着いたのはもはや必然とも言える。 find | xargs による探索だが、それが簡単なものであれば 実は grep コマンドだけでうまくいく。 GNU grep、BSD 系の grep コマンドでは include、exclude オプションで再帰検索時に検索対象とするファイルを絞り込む事が出来るのだ。 --include=pattern --exclude=pattern たとえば、カレントディレクトリ以下の *.rb から test という文字列を 含むファイルを探索したい場合は次のようにすれば良い。 fgrep -r --include='*.r

    toton
    toton 2008/03/23
    fgrep -r --include='*.rb' 'test' ./
  • 技術メモ帳 - Iframe の designMode="on" によるリッチテキストエディット

    こんな属性があるのを知らなかった。 実際には、Iframe の属性ではなさそうだが。 どうも、javascript で以下のように指定してあげる事により、 リッチなテキスト編集機能が有効になるようだ。 iframe.contentDocument.designMode = "on"; ちょっとサンプルを作ってみた。 選択範囲の色変えたり、画像貼付けたり出来ます。 http://gomibako.hahaue.com/rth.html (Firefox only) 実際に文字の状態を変化させたりしたい場合は、 同要素の execCommand メソッドを使用すればよい。 たとえば、文字を太字にしたい場合は、 以下のように指定するだけで良い。 iframe.contentDocument.execCommand("bold",false,null); 色を赤くしたければ、 iframe.con

    技術メモ帳 - Iframe の designMode="on" によるリッチテキストエディット
    toton
    toton 2008/03/21
  • Firebugの便利な組み込み関数 - 技術メモ帳

    id:brazil さんのブックマークで知ったのだが、 Firebugには、便利な組み込み関数が定義されているようだ。 一通りさわってみたのだが、 $x() で 任意のXPath要素が取得できるのとかに感動した。 そして、やっぱりちゃんとドキュメント読むべきだなぁと思った。 XPathから要素を取得する。 $x("/html/body/h1"); -> 要素の配列が返ってくる。 selector名から要素を取得する。(getElementsByTagName) $$("h1") -> 要素の配列 所要時間測定 console#time, console#timeEnd time ~ timeEnd で囲んだ部分の所要時間を 計測することが出来るみたいで、 以下のような関数にまとめると良さそうだ。 function bench( callback ) { var uniq_id = Date

    toton
    toton 2007/09/03
    $0, $1 で直前にinspectしたものを参照。b:id:entry:19872194
  • Greasemonkeyで永続的に外部スクリプトを利用する - 技術メモ帳

    GM_setValue / GM_getValue + unsafeWindow.eval を使って 永続的に外部スクリプトを利用する方法を考えてみた。 わざわざ DOM で script要素 を毎回注入するよりも 速いんじゃないかと思う。 Greasemonkeyには、GM_setValue / GM_getValue というのがあって、 GM_setValue("キー", "値") 上記のように入力してあげる事によって、たとえ、 Firefoxを終了させたとしても消えないデータを作成する事が出来る。 そして、それを利用して、 初回のみ XmlHttpRequest で外部スクリプトデータを取得して、 GM_setValue でスクリプトデータを永続化しておき、 二回目以降は、それを GM_getValue して eval するようにした。 以下は、永続的に prototype.js を

    toton
    toton 2007/07/25
    unsafeWindow経由じゃないとevalったものを参照できないみたい
  • Firebugを使ってはてなダイアリーのコメントをまとめて削除 - 技術メモ帳

    最近、というか継続的に謎の外人さん から大量のコメントを頂いていた。 (多分高度な知的生命体が僕とコンタクトをとろうとしてる。) 悲しい事に宇宙語が僕はまったくわからないので すべて reject する事にした。 (愚かしい事にも僕は対話ではなく拒絶を選択したのだ。) コメント部分のチェックボックスをすべて true にする Firebug用のスクリプト適当にでっちあげた。 Array.forEach( $$(".list-plain")[0].getElementsByTagName("input"), function(e){ if(e.type=="checkbox") e.checked=true; } ); コレを実行した後はコメント削除ボタンをぷっしゅ。

    toton
    toton 2007/06/23
    文才あり
  • sshで多段ログイン - 技術メモ帳

    たとえば以下のように A というサーバーをログインしなければ到達できない B というサーバーがあったとき local --> hostA --> hostB 二回に分けて入力するのが面倒くさい。 local$ ssh user@hostA # Aにログイン成功 hostA$ ssh user@hostB # やっとBに到達。面倒!! hostB$ そんなときに、以下の構文を思い出すことだろう。 ssh user@host リモートで実行したいコマンド リモートで実行したいコマンドで "ssh user@hostB" ってやったらいいんじゃないかと 思いつきでやってしまうと、以下のようにエラーになる。 $ ssh user@hostA "ssh user@hostB" Pseudo-terminal will not be allocated because stdin is not a t

    toton
    toton 2007/02/25
  • 技術メモ帳 - URI の data スキーム

    今日初めて知ったのだが、data スキームを使えば URIにデータを組み込めるそうだ。 以下のようにすれば、 dataスキームで、任意の画像を表示させる事が出来る。 <img src="data:image/gif;base64,BASE64データ"> たとえば、 google のロゴを dataスキーム を 利用して表示したかったら、 $ curl -s http://www.google.com/images/logo_sm.gif | openssl base64 | tr -d '\n' こんな感じで base64 化したロゴ画像データを 該当部分に、貼付ければ良い。 <img src="data:image/gif;base64,ここに貼付ける。"> 該当RFC: http://www.ietf.org/rfc/rfc2397.txt

    toton
    toton 2007/02/25
  • 環境変数$PATHの重複項目を除去する - 技術メモ帳

    いろいろな作業を同時にしていて、環境変数$PATHが 膨れ上がってしまうときがある(おそらく自分だけだろう) そんなときに使用する、$PATHを再構築するOneLiner export PATH=`echo $PATH | tr ':' '\n' | sort -u | paste -d: -s -`;

    toton
    toton 2007/02/25
  • tloadコマンドでシステムの負荷をグラフィカルに表示 - 技術メモ帳

    tloadコマンドを使用すると以下のように システムのロードアベレージをグラフ表示する事が出来るようだ。 ちなみにこのコマンドは、cygwin や Linux など procps パッケージがインストールされている環境で利用する事が出来る。 このコマンドのオプションは以下のようになっている。 tload -d グラフの更新間隔秒 -s 縦軸の目盛り数 [ tty ] 必須オプションではないが、最後の引数に 出力先の tty を指定する事が出来る。 参考: http://www.linux.or.jp/JM/html/procps/man1/tload.1.html procps パッケージには、pgrep, pkill, pmap, watch など 他にも有益なユーティリティーが存在する。 http://www.linux.or.jp/JF/JFdocs/LFS-BOOK/appendi

    tloadコマンドでシステムの負荷をグラフィカルに表示 - 技術メモ帳
    toton
    toton 2007/02/24
  • Ruby Debuggerの良さ - 技術メモ帳

    会社からだから、走り書き。 特に推敲もしていない。一度も見直していない。 だが、これは限りなく音に近いのだ。 ruby -rdebug hoge.rb よく使うコマンド break クラス:メソッド名 delete ブレークポイント解除 c ブレークポイントまで続行 l 該当ソースコード表示 n 次の行へ s 次の行へ、関数であれば中に入る p 画面にデバッグ表示 catch off 例外発生時に止まらなくする。 catch <Exception> 指定した例外発生時に停止 var l ローカル変数をすべて表示 良いところ rubyの標準モジュールが使えるところ。 irb 見たいな感覚で使える。 当然、デバッグ中に require 出来るので、 たとえば、pritty print したかったら require 'pp' pp @hoge とかもできるし、 require 'y' y @h

  • 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

    toton
    toton 2007/01/18
    xargsスキスキ