GitとMercurialのbundleファイルからの更新時の違い

hgとgitでのbundleファイルからの更新の様子

いや、単に hg は bundle ファイルをそのまま pull できないんだなーと思って。git は bundle ファイルを pull すると .git/ の更新をして更新された情報に基づいてファイルの更新を行ってくれるんだけど、hg は update しないと反映されないってことに気づかなかった。

いろいろ細かい違いがあるもんだ。

本当は hg の方が CVS など古いバージョン管理システムを知っている人には馴染みやすいと思う。これは昔から感じている。

※ とかなんとか言いながらただの勘違いかもしれない。

VirtualBox のライセンスはけっこう太っ腹?

春に Intel Mac になって以来、仮想化の自由度が上がったので喜んでいたんだけど、そんなにフルに必要なわけでもないので、どうにかフリーの Q.app で凌いでいた。でもこれ、ちょっともっさりしている。や、使えるだけでありがたいんだけどね。

そこに VirtualBox が現れた。

2,000カ所以上改良された仮想化ソフト「Sun xVM VirtualBox 1.6」 | パソコン | マイコミジャーナル

軽く試したところ、Q.app より速くて安定している1。これはよいと思ったが、ライセンスが基本的に Free for Non-commercial Use なので自宅での実験用くらいにしか考えていなかった。でもどうもこのライセンス、思っていたより緩いらしい。

VirtualBoxライセンス - hClippr編集室ブログ

複数台から接続しないのであれば数人程度の人間が導入していても個人使用の範疇と考えられそう。

なるほどこれは便利。安心して職場でも試そう。

ま、サブスクリプションも十分安いんだけど。

Sun Microsystems, Inc. Online Store

  1. 速度差は体感で明らか。安定感は例えば Q.app だとバーチャルマシンの起動に失敗することがたまにあるのでちょっとイラっときていた。 

hosts と DNS のどちらで名前解決してるか分かるツール書いてみた

またタイトルで終わってしまった。

odz buffer - 名前解決

でヒントをもらったので Ruby で書いてみた。

#! /usr/bin/env ruby

require 'resolv'
require 'ipaddr'

def main()
  host      = ARGV.shift()
  num_addrs = 0

  if ( host )
    begin
      ipaddr = IPAddr.new( host )
      output_names( ipaddr )
    rescue
      begin
        num_addrs += output_addrs( Resolv::Hosts.new(), host )
      ensure
        num_addrs += output_addrs( Resolv::DNS.new(), host )
      end
    end
  else
    STDERR.puts "Usage: #{$0} hostname/FQDN|ipaddr"
  end

  exit num_addrs
end

def output_addrs( resolv, host )
  addrs = resolv.getaddresses( host )

  if ( addrs.size > 0 )
    puts resolv.class.to_s.sub( /Resolv::/, '' )
    addrs.each { |addr|
      puts addr
    }
  end

  return addrs.size
end

def output_names( ipaddr )
  if ( ipaddr.class == IPAddr and
         names = Resolv.getnames( ipaddr.to_s ) and
         names.size > 0 )
    names.each { |name|
      puts name
    }
  end

  return names.size
end

if ( $0 == __FILE__ )
  main()
end

試しに getaddresses.rb という名前にしてみる。

$ ./getaddresses.rb aligach.net
Hosts
127.0.0.1
DNS
202.181.99.90
$ ./getaddresses.rb www.google.com
DNS
66.249.89.99
66.249.89.104
66.249.89.147

意外に便利。

取得したアドレスの数を返すので DNS にも hosts にも一切情報がない場合は 0 になり、失敗した旨を伝えることになります。

[2007-10-09 追記] 逆引きもできるようにしてみた。名前は pseudohost.rb とかそんなんで。

逆引きもできるので、通常の使い方では alias で host にしちゃうことも可能になった。これでより使いやすくなった。

※ ただし面倒なので逆引きの方は hosts だ DNS だなんつーことは言いません。

Y! Widget Engine + UnixUtils で日本語を扱うには

※ UnixUtils というのは Windows 版でバンドルされている Unix コマンドのバイナリが入っているディレクトリ名のことです。今後、YWE1 で利用できる Unix コマンドのことを UnixUtils と書くこととします。

調べたら日本語周りがやはり悩ましげ。JavaScript の部分は UTF-8 か UTF-16 でいいとして、UnixUtils の部分をどうするか。例えば Windows にバンドルされている gawk であれば locale に応じてそれなりによしなに日本語を扱ってくれるが、考えたら OSX 標準の awk は gawk じゃない。nawk かなんかだっけ。まぁどっちにしろ locale と一致しないエンコーディングはそのままじゃ扱えないわけで。何かしらエンコーディングを変換するツールが要るなぁというのが実際のところ。

Panther 以降は iconv が標準バンドルなので、Windows 用に gnuwin32 の iconv を Widget に含めてしまうことでなんとか対応できるかなって感じ。ただし iconv には自動判別の機能はないので、OOo みたいにファイルを開いて一部を目視で確認してもらって、このエンコーディングで OK なら次へ進む、という形にしないとダメっぽい。(Web から取得するんであればヘッダなり meta なりのエンコーディングを読み取ればいいんだけど。)

ところで iconv って半角カナの扱いはどうなってんだろ。

  1. Yahoo! Widget Engine 

勉強日記ネタ

結城さんの日記は多くの方がブックマークした1ようだが、otsune さんの日記も読んだところで、自分のスタイルを整理してみようと思い立った。

とりあえず上の日記で触れられている話を一緒くたに挙げると

  1. 「言わずもがな」禁止
  2. 丁寧に書く
  3. 分からないことを書く
  4. ツール(情報の保存先)を分散させない

ということになるんだけど、自分が採用しているのは 1 と 3 だけである。

1 は絶対。自分が何を分かっているのかを確認するために、当たり前だと思っていることもあえて書く。

ただし、自分の知識を全部整理するために書くわけじゃない。その辺は混同しないこと。書くのはあくまで、今取り組んでいる内容、今書きたいと思っている内容に関連するものだけ。それも分かっていることを全部細かく書く必要はない。勝手な解釈だが、「書けるかどうかを確認するために書く姿勢になること」が大事なんだと思っている。書くことそのものが仕事ならともかく、多くの人はそうじゃない。書く時間の節約も必要。「当たり前」を書き出すことではなく、自分の中で当たり前になっているかどうかの確認が目的。

2 は微妙。丁寧に書くということが自分の中では「ちゃんとした日本語を使う」ってこととかなり近くて、メモを書くよりも日本語が気になってしまうことがある。だから自分用のものは箇条書きや乱暴なメモ、文句などでよしとしている。丁寧に書くという行為は自分の中では「よそいきモード」なので、本当の生のメモとは呼べない状態になってしまう、と書いたら分かりやすいだろうか。

ただ、だからと言ってただの単語の羅列とか URL のコピペだけにはできるだけしない。そういうものは後で読んでも分からないということもあるが、検索しにくいのだ。検索できるようにある程度余計な情報を埋め込む、ということは意識している。そうするとある程度はまともな日本語のまともな文章になる。

3 は課題の整理のために必要。これがなければ過去の活動を振り返ることができないと言ってもいい。

ちなみに自分は分かっている、分かった、分からないことの意味を以下のように考えている。

  • 分かっていることは何が分かっているかを確認するために書き出し(全部でなくてよい)が必要
  • 分かったことをメモするのは当たり前(つーかこれ書かないなら勉強日記でもなんでもない)
  • 分からないことを書くのは今後の課題の整理のために必要

4 は「メモを取る行為の負荷を下げるための工夫」だと思っている。要するに何かメモりたいと思ったらこのアプリを立ち上げるだけ、この URL を叩くだけ、という具合にルールを単純化し、「どこに書くか」とか余計なことを意識する必要をなくすべき、という考え方なんだと思う。

これは確かにその通りだと思うんだけど、自分は例えば日記の中に公開できる内容と非公開の内容が混ざっていることの方が不安になってしまう(設定をミスったらどうしよう)ので、精神衛生上はツール2が別になっている方が嬉しい。

Web 日記や blog を使うのがいいよ、というのは otsune さんとは別の意味で賛成。それは結城さんのようにいつも同じ機械で作業できるとは限らない人のためにである。

どういうことか。

自分も以前はすべてを自分のノートパソコンで処理できる環境だったので、メモはテキストファイルにメモしたり KacisWriter でメモしたりしていたのだけれど、今はそういう環境じゃないので、ローカルにメモを保存してしまうとメモを見れる環境が制限されてしまうのである。これは困る。だからネットワーク上に置くべきという考え方である。

いっときオンラインストレージサービスを利用したり、自宅サーバにファイル転送したりしていたけど、これは面倒くさい。Wiki や blog ならブラウザだけで作業は完結して楽なのでその方法に落ち着いたということである。非公開で Web 上にメモを書くにはいろんな方法があるだろうから、いちいち紹介はしない。

  1. もちろんソーシャルの方の話 

  2. あるいは保存先、URL など 

ド賛成

ガキどもよ、学び働け (asahi.com be)

もっと若年層に労働を意識させるべきだ。労働を意識してこそ、勉学に身が入る。進路選択が真実味を帯びる。authentic な学びは authentic な環境があってこそより reality を増す。

タスクマネージャのタブの最大化

なんて機能があったのですな。

タスクマネージャのタブやタイトルバーがなくなりました (winFAQ)

びっくりした。

About

例によって個人のなんちゃらです