タグ

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

  • 2006-11-18 - 技術メモ帳

    vimemacs、less などのフルスクリーンアプリを終了したときに、 元のコンソールの状態に戻る環境と、戻ってくれない環境というのがあり、 前々からすごく疑問だったので、この際だからと調べてみた。 もしかしたら誰かの役に立つかもしれないので書いておく。 肝心の原因は、端末データベースの enter_ca_mode / exit_ca_mode ケーパビリティ が 適切に設定されてないということにあった。 当は vim などのフルスクリーンアプリは "元のコンソール状態" に復元しようと、 enter_ca_mode / exit_ca_mode というものを出力するのだが、 このときに、端末データベースから "実際に出力すべきエスケープシーケンス" というものを取得しており、 ここが正しく設定されていないため、うまく元のコンソールに戻らない。 これらを適切に設定すれば良いのだが

  • 技術メモ帳: [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

    gnw
    gnw 2007/01/22
  • zshのurl-quote-magicでURL文字列を自動エスケープ - 技術メモ帳

    URL文字列を自動的にエスケープしてくれる url-quote-magic が非常に "良さげ" である。 たぶん、http:// という文字列で始まる文字列を入力しようとしたときに適用される。 autoload -U url-quote-magic zle -N self-insert url-quote-magic ちょっと試しにやってみよう。 たとえば、以下のURLをコピーしておく。 http://www.google.co.jp/search?hl=ja&q=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A 通常の状態でペーストしてみると、 案の定おかしな事になる。誰もが期待する結果だ。 john ~[12979]% echo http://www.google.co.jp/search?hl=ja&q=%E3%81%82%E3%81%84

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

    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

    入力履歴からの予測による自動補完機能 - 技術メモ帳
    gnw
    gnw 2006/12/05
  • lessでtail -f - 技術メモ帳

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

    gnw
    gnw 2006/12/01
  • 技術メモ帳 - 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
    gnw
    gnw 2006/11/30
  • zshのzptyを使って端末が必要な処理を自動化する - 技術メモ帳

    zsh のモジュールに zpty というのがあるのを最近発見した。 どうもコレを利用すれば指定したコマンドを 仮想端末上で実行することが出来るらしい。 具体的にどういったことが出来るようになるのかというと、 端末が必要なプログラムを自動化することが出来る。 たとえば、パスワード入力処理などだ。 パスワード文字列を標準入力から読み込ませようとしても、 大抵のプログラムでは入力できない。 なぜかというと、多くのプログラムにおいてパスワード入力処理は 端末から読み込むように作られているからだ。 zpty を利用すればそういったたぐいのものをすべて自動化できる。 いわゆる、expect というコマンドで実現していたことが zsh だけで出来るのだ。 今回は、簡単に試すことが出来るサンプルとして、 su コマンドのパスワード入力を zpty を使って自動化してみる。 まず、zsh に標準添付されてい

    gnw
    gnw 2006/11/08
  • 技術メモ帳 - Rubyの標準添付CSVパーサーが遅い - FasterCSV

    仕事で、でかいCSVをパースする必要があって、 標準添付のCSVパーサーを使ってみたのだが 体感できるぐらい遅かった。 http://www.ruby-lang.org/ja/man/?cmd=view;name=CSV いろいろ調べたのだが、 どうもこんなときは、FasterCSV を使えば良いらしい。 http://fastercsv.rubyforge.org/ インストールは簡単で、 gem を使うと一発で終わる。 $ gem install fastercsv 他の rubygems モジュールと同じように使ってあげれば良い。 require 'rubygems' require 'fastercsv' FasterCSV.foreach("CSVファイルパス"){ |row| } どれぐらい速いのか知りたかったので さっそくベンチしてみた。 テスト用のCSVファイルは 以下のペ

    gnw
    gnw 2006/10/20
  • 技術メモ帳 - 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" によるリッチテキストエディット
  • 技術メモ帳 - Firefox拡張を簡単に改造する方法

    毎回、jar ファイルを作り直す作業が 面倒だと思った事はないだろうか。 じつは、chrome.manifest というファイルを 書き換える事によってこの作業は必要なくなる。 たとえば、FireBug を簡単に改造する手順を説明してみる。 この手順では、既にインストールしてあるものを 改造する手順を説明させていただくこととする。 ちなみに、コレに関連した話として、 入れておくと便利な拡張に、 Extension Developer's Extension というものがある。 http://ted.mielczarek.org/code/mozilla/extensiondev/ これについては後述する。 まず、FireBug のインストールされているディレクトリを探す。 それは、プロファイルディレクトリの下の ./extensions/firebug@software.joehewitt

  • CRLFをLFに変換する - 技術メモ帳

    ありがちな例。 tr -d '\r' perl -pe 's/\r\n/\n/g' そして、実は今日 nkf に CRLF -> LF 変換をする オプションがあることを発見した。 nkf -d 実にエレガント。

    gnw
    gnw 2006/08/09
  • sshで指定したコマンドしか実行できない公開鍵を作る - 技術メモ帳

    自動バックアップ処理をさせたいが シェル権限を与えたくないときとかに使える技。 やり方は簡単で $HOME/.ssh/authorized_keys の "コマンドを制限したい公開鍵" の行の先頭に 実行させたいコマンドを記述すればよい。 そのときのフォーマットはだいたい以下のようになる。 command="実行させたいコマンド",sshのオプションをカンマ区切りで書く command=hoge というのを付け足すことによって その公開鍵でアクセスがあったときに 指定したコマンドを実行させることができる。 たとえば、uptime を実行させたいときは、 以下のようにすればよい。 command="uptime",no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-rsa AAAABbBFERTWER....

    gnw
    gnw 2006/07/31
  • 1