トップ «前の日(01-19) 最新 次の日(01-21)» 追記

2004-01-20

_ portforwarder 2 + unison

が synchro system として有望か? 理由は

  • Zebedee は自分で自由にいじれるサーバでない限りインストールやポートの開放が若干難しい
  • rsync は cygwin 依存になり、安心して使える条件が限られる(cygwin → unix はコケやすい。unix → cygwin はまだ問題が少ないが。)

実験が必要だな。

Tags: Net Tool

_ FreeBSD 5.2-RELEASE

うむ。

Tags: Unix

_ A5 リングファイルで再利用紙手帳計画

  • ミスプリントなどの紙を再利用したいが、そのまま裏に印刷するのはいやなので手書きのメモ用紙として再利用したい。(あくまでストック目的に使う気はない。メモはデジタライズ前提で。)
  • A4 のサイズは大きくて使いにくいので半分に切って A5 で利用したい。
  • 現状ではダブルクリックで止めているが、これは普段の利用には便利だが外部の人と接触する機会ではちょっと使いにくい。
  • そこで A5 のリングファイルがあれば手帳っぽくて問題解決なのでは?
  • 通常の事務用品としては A5 を縦に利用するリングファイルはない
    • 横にした分厚いファイルならある
  • 手帳としての利用を前提にしたミニ6穴のものはある(普通のファイルよりは高く 800円ほど。それか皮製の 8000円とか。)
    • しかしミニ6穴のパンチは KOKUYO 製 4000円、PLUS 製 2000円と値が張る

だめじゃん。

  • 雑貨屋に 2穴の A5 サイズのリングファイルがあったりするらしい

それでいこう。

てなことを模索中。

Tags: 日々 Tool

2005-01-20

_ shebang

行末がCR+LFなスクリプト

へーへーへー。-- で終わらせろと。といっても cr + lf なスクリプトなんて書くことないけど。

Tags: Ruby Perl

_ つーか EUC だめですか > Thunderbird

Thunderbird の RSS reader に試しにここの RSS を読ませたら文字化けしまくり。euc の指定を無視して utf-8 で解釈しようとしている模様。なーんーだーかーなーあー。Thunderbird ダメじゃん。

でも Sage と違って pre の改行が生きるので Wiki の diff を表示させるととても見やすい。次のバージョンに期待ってことで。

Tags: Net Tool

_ レガシーデザインをやめさせるには?

いやそんなたいそうな話ではなくて、font size="-1" とかサイズ固定レイアウトがのさばるばかげた状態をいつになったら脱することができるのだろう、ということなのですが。

誰かクールなデザイナがイマドキ font size="-1" なの?だせーって言ってくれればいいのだろうか。それとも例によってキムタクが Firefox とか Opera とか Safari とか使いながらこのサイト見にくいなぁっておもむろにソース見てイマドキ font size="-1" かよ!って毒づくようなシーンが必要なんだろうか。(ってどんなシーンだ。)それともヨン様が微笑みながらみんなに優しい HTML はこうなんですって諭してくれるような、そんな感じがいいか。

あれ。これだと男のデザイナにはアピールできないな。ゆうこりんのユニバーサル XHTML とかどうだろう。こりん星の決まりです、みたいな。でも電波扱いされたら困るな。あーこの際あれだ、世界一のトラックバックを誇る眞鍋かをりに、みんな、2005年はユニバーサルな Web で RDF で FOAF だよ!って言ってもらおうか。

まだ明るい時間帯なのにこんなこと書いてて大丈夫か、オレ。

お笑いでも考えてみた

ヒロシで。

  • 「クライアントがトップページの Flash 以外まともに打ち合わせしてくれんとです。」
  • 「上司のアイディアでフレームでデザイン組まされました。」
  • 「『君のリニューアルのおかげで font size="-1" とレイアウト目的の table のないユニバーサルな Web サイトができあがったよ。ありがとう。』自分で録音して聞いてます。」
Tags: 日々 Web

2006-01-20

_ zsh + screen で最後に実行したコマンドを window title に

MM/Memo でハテナオヤの screen ネタがクリップされていたので、実は以前見ていたんだけどもう一度ちゃんと見てみた。

zsh も screen も Emacs もまったくヘビーに使いこなしていないんだけど、タイトルに書いた機能はいいなと思った。普段は window title 出してないから、window が 3つ以上になると何が何やら分からない。出しておけばいいんだけど、window title を手でいちいち設定するのが面倒なので使わないという判断をしていたのだ。

さて。ネタ元はここ。

screen (ari's diary)

まずコピペ。テキストになっちゃってるコントロールコードを修正。(Emacs でコントロールコードを入力するには C-q に続けて何か。)

;&

;;

に直す。あれー動かない?と思ったら .zshrc や .screenrc で $TERM を rxvt にしていた。その記述を外したら動いた。おーこれは便利。

%w | %h

を活かすために screen を使っているときは prompt にカレントディレクトリを出さないことにする。リンク先の .zshrc の先頭の if 直後に

PROMPT='%n@%m%(!.#.$) '

を入れる。いやーいいな、これ。

[2006-12-30 追記] screen の windowlist にだけ hostname 出せないかな - あーありがち (2006-12-30) の設定で window title に hostname も出すようにしてみた。window title があんまり長いと邪魔でしょうがないけど、これくらいならギリギリ我慢できるレベルか。

Tags: Screen Zsh

2007-01-20

_ 正規表現の //、コメントの //

先を越されたがあえて書く - ときどきの雑記帖 リターンズ 2007年1月

せんせい。Ecmascript では // はコメントになります。

NOTE 正規表現リテラルは空にはならない; 空の正規表現リテラルをあらわす代わりに、文字 // は 1 行コメントを開始する。空の正規表現を指定するには、 /(?:)/ を用いる。

オリジナルは PDF なんで日本語訳の方で。

まぁ、だから何って話なんですが、ごくたまに自分が忘れます。あと PHP を書くときに <?php ?> を忘れるとかもよくやるな。動かしてみると全部ブラウザに出てて???ってなる。あれ面倒くさい。

Tags: Ecmascript

2009-01-20

_ OSX の ssh-agent を潰す

09:11:26 wtnabe< あれ。昨日潰した login.keychain が復活してる!
09:14:22 wtnabe< みんなこの keychain 全然疑問ないのかな。すっげー邪魔
なんだけど。
09:19:35 kinneko> も。
09:23:39 wtnabe< keychain の 「login」 はどこまでの範囲なんだろう
09:23:46 wtnabe< まぁ削除してみるか
09:25:51 wtnabe< あーやっぱ他(ブラウザ)のもみんな消えた。
09:26:15 wtnabe< ssh とか terminal 上の操作だけ keychain が出しゃばら
ない設定ってどうやるんだろう。
09:28:48 wtnabe< そして再度「ログインを作ったらファイルが日本語ででき
た。なんでや。
09:32:53 wtnabe< もう一ヶ月くらいこれでイライラしているが全然解決方法
が分からないオレのバカバカバカ
09:35:47 wtnabe< そしてこれだけつぶやいても誰も助けてくれない twitter
のバカバカバカ
09:36:01 wtnabe< まぁ twitter は助けてくれないが
09:46:34 kinneko> @wtnabe SSH_AUTH_SOCKは使えないの?
09:56:53 wtnabe< @kinneko ssh-agent も keychain も無効にしたいんですー
10:07:34 kinneko> @wtnabe 都度パスフレーズを入れたいってことね。
10:07:34 kinneko> @wtnabe それって、unset SSH_AUTH_SOCKだけじゃダメなの?
10:10:00 wtnabe< @kinneko で、できました。。。えー。でもこんなことやっ
たことないのに自宅の Mac はなぜだんまりなんだろう。
10:10:35 beckyco> .@kinneko unset SSH_AUTH_SOCKだけじゃダメダヨ♪
10:10:48 wtnabe< @kinneko .zshrc は共通なんだから、どっかでなんか別な
方法で off にしてるんじゃないかと思うんですが。
10:11:07 wtnabe< @kinneko それはもう分からないということにしてしまうの
がイチバンてことかしら。
10:12:45 wtnabe< というか .zshrc で設定できた方が同じ環境を再現しやす
いからその方がいいんだ。そうだ。
10:13:34 kinneko> @wtnabe 試してみたけど、ちゃんとダイアログじゃなくて、
Enter passphrase for key '/Users/kinneko/.ssh/id_rsa': がコンソールに
出て来たよ。
10:16:34 kinneko> @wtnabe 自宅のほうは、何かファイルが壊れているのかもね。
10:16:35 kinneko> @wtnabe ユーザー新規に作ってやってみても同じなら再イ
ンストールかな。ちゃんと動いたら、設定類を新しいユーザーと比較してみる。
10:19:34 kinneko> @wtnabe まぁ、そんなことはわかってるんだろうけど(^^;。
10:19:34 kinneko> twitterでつぶやくにしても、helpがほしい時は、希望と
現在の症状を明確にしないと、誰も助けられない。
10:20:52 wtnabe< @kinneko mjsk. 自宅でも文句は言ってたはずなんですけど、
なぜかその当時のつぶやきにはそんな記述ないんですよね。
10:21:58 wtnabe< @kinneko もしかすると自宅Macはあらゆるログイン情報を
keychain に残さない漢仕様なのかもしれません。そんな気もしてきました。
10:25:20 wtnabe< ハナからあり得ないと決め込んで可能性を狭めていた自分
の問題だったのかもしれない。やっぱりオレのバカバカバカ。
10:25:34 kinneko> @wtnabe まさか、まぢ独り言モードだったとか? Tw
10:26:14 wtnabe< @kinneko twitter のつぶやきと区別ついてない可能性はあ
りますwww
10:28:35 kinneko> @wtnabe twitterを馬鹿にしてはいけないのだ。けっこう
いろいろ助けられてる。

twitter をバカにはしていないけど、自分が気にかけてるほど周りは自分を気に掛けていない、というのが現実かな。まーだいたいいつもそう。そんなもんです…。ありがとうございます、kinneko さん。

まぁ要するに ssh-agent を無効にしたかったんです。使ってないんでこんな設定があることも知らなかった。

agent を使うのっていっとき流行ったように記憶してるんだけど、なんかメモリ内にやばい情報がずっと居座ってる感じがして気持ち悪くていやなんですよね。ハイバネーションしちゃうとディスクからもその情報が抜けるとか聞いたこともあるし、ControlMaster で session の使い回しをすれば最初の一回だけパスフレーズを入力するだけでオッケーなので、特に agent の必要性も感じないし。

というわけで .zshrc に

unset SSH_AUTH_SOCK

で解決しましたとさ。

21:16:11 wtnabe< うーん。やっぱ自宅 Mac との違いはよく分からん。もう面
倒なので zshrc で行くことにする。

ほんと、以前はどうやって無効にしたんだろ。

Tags: OSX

_ git bundle 初体験

ついでにこっちも twitter のログを貼ってみる。

19:45:30 wtnabe< bundle はそれ自身もまたサブコマンドを取るのか
20:05:52 wtnabe< 分散バージョン管理システムの bundle ファイルってどん
な拡張子にするもんなんだろう?
21:43:34 wtnabe< git bundle create したものを展開するのは git bundle
unbundle ではなく git pull か?
21:52:03 wtnabe< git clone でもなんでもいいのか。git pull なら事前に
git init が必要だし、clone なら何もしなくていい。パスの指定にだけ気を
つければ(たぶん相対パスはNG)

man によるとこのように書かれていて、

NAME
      git-bundle - Move objects and refs by archive

SYNOPSIS
          git bundle create <file> <git-rev-list args>
          git bundle verify <file>
          git bundle list-heads <file> [refname...]
          git bundle unbundle <file> [refname...]

すっかり bundle create で作ったファイルは unbundle するものと思っていたんだけど、どうも違ったらしいというか、自分の場合は以下の方法で目的を達成できた。

$ git bundle create /PATH/TO/BUNDLE_FILE HEAD

(bundleファイルを持ち運ぶ)

git リポジトリ内で

$ git pull /PATH/TO/BUNDLE_FILE

あるいはまっさらのディレクトリで

$ git clone /PATH/TO/BUNDLE_FILE

こんな感じで使うものなのかな?

※ pull がうまくいかないときは checkout も試してみるといいよ!

22日の twitter log より。

あと一気に git pull できなくても fetch すると FETCH_HEAD に保存されるっぽいので、これをもとに checkout -f や merge なんかがじっくり作業できるのはいいなと思った。

Tags: Git

2010-01-20

_ Godで簡単daemonize

今さらながら

なぜ daemontools を使うのか - kazuhoのメモ置き場

これを読んで、

通常のプログラムをそのままデーモン化できるから

という記述にうんうんと頷いていた。*1

今回は、daemontools もいいかもしれないけど God を使って daemon 作ろうぜって話。これは monit には真似できないよ。

cf. M/Monit | Wiki

Godでオレオレデーモンを作る

例えば以前作った Rswatch っていうログを監視するツールなんかも、一応 daemon のように動くけど、これ落ちたらどうすんのとか、システム起動時に自動的に起きるようにするのどうしよう、とかいろいろ管理しにくくて仕方なかった。デーモンを作ることは、実は 1)目的の動作を作り込むこと、2)デーモン化する処理を作り込むこと、の二つに分けられる。そう、2 は目的じゃない。期待する動作ではあるけれど。

God を使えば 2 の部分はすべて God 任せにできる。

また自分の中では daemon と言うとサーバとかこういう監視ツールをすぐに思い浮かべちゃうんだけど、別にそんな役に立つものばかりが daemon というわけじゃない。ここでは

とりあえず終了しないもの

は全部 daemon と呼ぶことにする。例えば twitter の bot なんかは daemon である。

Godを使った基本的なdaemon化の流れ

実は Ruby だけの話であれば別に God を使わなくても Process.daemon でも daemons でもいいのだが、これは後述することにして God の話を進める。

スクリプトを用意

まずは終了しないプログラムを作る。こんなものでもいい。

#! /usr/bin/env ruby

require 'logger'
 
i = 0
l = Logger.new( File.dirname( __FILE__ ) + '/counter.log' )
loop do
  l.info( i )
  i += 1
  sleep 1
end

これを例えば counter.rb という名前で用意する。これを実行すると当然1秒ごとに延々と数字を数え上げていく動きをする。

tail -f counter.log

で、その様子を確認できる。わざわざ絶対パスにしているのは、

daemon 化したときにカレントディレクトリが変わってしまうから。

これはもうそういうものなので肝に命じておく。

godファイルを用意

同じディレクトリに以下の内容で God の設定ファイルを作る。

God.watch do |w|
  w.name = 'counter'
  w.interval = 5.seconds
  w.start = "ruby #{File.dirname( __FILE__ ) + '/counter.rb'}"
  w.behavior( :clean_pid_file )

  w.start_if do |start|
    start.condition( :process_running ) do |c|
      c.running = false
    end
  end
end

これを counter.god のような名前で保存する。スクリプトのパスを絶対パスにしているのはさっきと同じ理由。あるいは実行するプラグラムを PATH の通ったところに置けばもう少し話は簡単。

xig_installer を作ったのは実はこのためである。

実行ファイルの場所が変わってしまったら God の設定ファイルをいちいち書き換えなくてはならない。これは面倒くさいし、まず忘れる。

※ ここでは ruby に PATH が通っていることを期待した書き方になっているが、FreeBSD + ports のようにデフォルトの PATH が /usr/bin で追加するプログラムがすべて /usr/local/bin に入る環境は、この部分もフルパスにしておくべき。

god 経由で起こす

まず -D を付けて起こす。

god -D -c counter.god

するとスクリプトを daemon 化する様子、状態を監視している様子がそのままターミナルに表示される。正常に daemon 化できて監視できていれば ^C で終了する。

このとき、daemon 化したスクリプトはそのまま動き続ける

が、慌てず

god -c counter.god

と打って god プロセスの daemon 化を行う。すると

今動いているプロセスをそのまま監視対象にできる

ので、この状態で

god stop counter

と打てば止められる。あるいは

god terminate

とすれば丸ごと全部終了できる。

どうだろう。

単に終了しないプログラムを作っただけなのに God を噛ませることでちゃんと daemon 化できている。*2

また、ここまでの例はすべて Ruby で書いているが、daemon 化したいプログラムは何で書かれていても関係ない。Godにプロセスの起動順序を教えたい などで触れている tiarra は Perl 製だし、なんでもよい。

おまけ - Rubyでdaemonを作って管理するその他の方法

死活監視やリソース消費を監視して自動的に再起動、などの機能が要らない場合は以下のリンク先も参考になる。

ただしこれらの情報だけでは作った daemon をコントロールすることができない。Rubyスクリプト限定でいいなら以下を使うと God より楽に管理できる。

これを使えば基本的には

Daemons.run(デーモン化したいスクリプトのファイル名)

だけで済む。

ま、もちろん監視はできないけど。

*1 本当に理解できているか自信がなかったのでブログのコメントでその確認もさせてもらった

*2 細かい daemon の定義は調べるといろいろ出てくるよ!


2011-01-20

_ Chromeが問答無用で閉じちゃうのがちょっと困る

Firefox から Chrome に移行してほとんどの機能は標準のものや拡張でどうにかなってるんだけど、一つだけ解決してなかった要望が

複数のタブ、ウィンドウを開いてる場合だけ終了時に確認を入れてほしい

だった。どうやって探したらいいかもよく分かってなかったんだけど、見つけた。

Confirm Close - Google Chrome 拡張機能ギャラリー

入れた。

快適。

Tags: Web Google