Author Archives: admin

sortコマンドの練習

以下のファイルfileがある。

bbb@example.jp
trueff@mail.goo.ne.jp
aaa@example.com
aaa@example.jp
aaa.bbb@example.jp
ambiesoft.trueff@google.com
ccc@example.com

これをドメイン別にソートし、その後名前順にソートしたい。

普通にsortコマンド使うと以下の用になる。
$ sort file
aaa.bbb@example.jp
aaa@example.com
aaa@example.jp
ambiesoft.trueff@google.com
bbb@example.jp
ccc@example.com
trueff@mail.goo.ne.jp

当然ドメイン別になってくれない。

sortのマニュアルを読むと-t でセパレータを指定でき、-kでどのフィールドでソートするかを指定できる。そこで以下のようにやってみた。

$ sort -t @ -k 2 file
aaa@example.com
ccc@example.com
aaa.bbb@example.jp
aaa@example.jp
bbb@example.jp
ambiesoft.trueff@google.com
trueff@mail.goo.ne.jp

上記コマンドの-k 2は2番目から最後までのフィールドでソートする意味。よってドメインでソートされる。しかしドメイン順になったが、aaa.bbb@example.jpの方がaaa@example.jpより先に来ている。よって以下の様にやってみた。

$ sort -t @ -k 2 -k 1,1 file
aaa@example.com
ccc@example.com
aaa@example.jp
aaa.bbb@example.jp
bbb@example.jp
ambiesoft.trueff@google.com
trueff@mail.goo.ne.jp

-k 1,1は最初のフィールドだけを見てソートするの意味。-k 1だと最初から最後までを見てソートする意味になってしまう。

終わり。

lsattrとchattrコマンド

これらはLinuxカーネル2.6で追加されたコマンド、従来のlsとchmodに対応というより拡張するext2 固有なフラグ。

lsattrコマンドを実行すると、現在のフラグを表示する。フラグには”acdijsuADST”などの種類がある。主なものの意味は以下のとおり。

a : ファイルの追加書き込みのみ許可する。(append)
c : ファイルを圧縮してディスクに保存する。アプリレベルは影響を受けない。(compress)
d : dumpでバックアップの候補にしない。(dump)
i : ファイルの変更を許可しない。削除もリネームもできない。このファイルへのリンクも作成できない。(immutable)
s : ファイルの削除後、ブロックをゼロクリアする。(secure?)
A : ファイルがアクセスされたとき、atimeを更新しない。
D : ディレクトリが変更されたとき、すぐにディスクに書き込む。
S : ファイルが変更されたとき、すぐにディスクに書き込む。(Sync?)

chattrコマンドを使ってフラグを変更できる。

$ chattr +c file
とすれば、ファイルfileにc属性を追加する。

$ chattr -c file
とすればc属性を削除する。

$ chattr =c file
とすればc属性を追加し、他の属性はクリアされる。

$ chattr -R +c dir
とすればディレクトリdir配下に再帰的に属性cを追加する。

Ubuntu8.04でWineを使ってGoogle Chromeを動かす

wineのインストール。

$ sudo apt-get install wine
$ wine --version
wine-1.0
$

Wineのバージョンが1.1.4以下の場合は以下のようにして、ソフトウェアソースにWineのレポジトリを加える。
[システム]→[システム管理]→[ソフトウェア・ソース]を起動後、サードパーティのソフトウェアに以下のレポジトリを加える。

deb http://wine.budgetdedicated.com/apt hardy main

http://wine.budgetdedicated.com/apt/387EE263.gpgをダウンロードしてapt-keyで追加する。その後wineをupgradeする。

$ sudo apt-key add 387EE263.gpg
OK
$ sudo apt-get update
$ sudo apt-get upgrade
$ wine --version
wine-1.1.4
$

ここからGoogle Chromeをダウンロードしてwineで実行する。

$ wine chrome_installer.exe

この後起動するとエラーになる。wintricksを使ってcorefontsを入れる。

$ sudo apt-get install cabextract
$ wget http://www.kegel.com/wine/winetricks
$ chmod +x winetricks
$ ./winetricks corefonts tahoma

以下のコマンドで起動。

wine ~/.wine/drive_c/windows/profiles/$USER/Local\ Settings/Application\ Data/Google/Chrome/Application/chrome.exe --new-http --in-process-plugins

しかし、これだと漢字が表示されない。~/.wine/drive_c/windows/Fonts/に日本語フォントがあればちゃんと表示できる。

参考:
http://tombuntu.com/index.php/2008/09/05/how-to-install-google-chrome-in-ubuntu-with-wine/

関連記事:
Google Chome インストールメモ
Ubuntu 8.04でWineを使う

Google Chrome インストールメモ

Googleが出したブラウザGoogle Chromeを使ってみました。

UIがとてもシンプルできれいです。基本的な特徴はこのページからみることができます。またこのページに開発までの経緯を漫画化したものが公開されています。

タブを自由に動かして新しいウインドウにしたり、他のウインドウにタブとしてくっつけたりできます。

タブの1つ1つが1プロセスになっています。タスクマネージャで見るとchrome.exeがタブを開くごとに起動されています。これにより、一つのページでJavascriptが無限ループなどしても、他のタブに影響しないなどの利点があるそうです。IE7では多分タブごとにスレッドになっていて、Firefoxでは全部1プロセスでやっているので、ここが内部的な大きな違いだと思います。またブラウザのバグで落ちるとしても、一つのタブだけですむものと思われます。

あと、シークレットウインドウというのがあり、ここでブラウズしたページやクッキーは閉じた後キャッシュに残らないので安全だそうです。

インストール時にGoogleUpdate.exeがスタートアップに登録され常駐します。何をするものかよくわかりませんが消したい場合は以下のレジストリの値を削除します。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Google Update

またタスクとしてスケジューラにアップデートプログラムが登録されます。コントロールパネルのタスクから削除できます。

オムニボックス(アドレスバー)に以下の文字列を入力していろいろな情報が見れます。

  • about:version
    バージョン情報や、User-Agent情報
  • about:memory
    メモリ使用状況
  • about:plugins
    プラグイン情報

このソフトはオープンソースで、ソースコードの取得やビルド方法はここに記述されています。Visual Studio 2005でビルドするようです。

msiなどのWindows Installerを使ったアプリのインストールが失敗する

Windowsのインストールシステムを使ってアプリケーションなどをインストールすると意味不明なエラーで失敗することが多々あります。とくに自分でファイルなどを削除してしまった場合、そのアプリの再インストールをすると失敗することが多いです。

Windows Installer CleanUp Utilityを使うとインストールの構成情報を削除することができ、これによってインストールを成功させることができることがあります。

Windows Installer Clean Up

対象のアプリを選択して、Removeをクリックすると構成情報を削除することができる。

このツールで構成情報を削除した後に同じアプリをインストールする場合は、前と同じフォルダにインストールした方がいいと思います。

phpで自分のURLを取得する

phpで自分のURLを取得する方法がよくわからなかったので殴り書きメモ。

まず自分のphpのどこかに書いておく方法がある。しかしこれだとサーバー引越しとかしたとき直さないといけなくなるのでここでは無視。

基本に返ってブラウザがどうやってアクセスするかを確認。ブラウザがhttp://www.example.com/ddd/fff.phpにアクセスしたとき送られるHTTPヘッダはたとえば以下のようになる。

GET /ddd/fff.php HTTP/1.0
Accept: */*
Connection: close
Host: www.example.com

ここから$_SERVERなどの変数にいろいろ入ってくると思われるがどれがどれだかよくわからないが、たぶん以下のような感じだろう。上との対象で書くと。

$_SERVER['REQUEST_METHOD'] $_SERVER['REQUEST_URI'] $_SERVER['SERVER_PROTOCOL']
Accept: $_SERVER['HTTP_ACCEPT']
Connection: $_SERVER['HTTP_CONNECTION']
Host: $_SERVER['HTTP_HOST']

よって単純に考えれば以下のような感じでURLを取得できるか?

ポートが80じゃない場合はどうなるだろうか。その場合もHttpのHostヘッダに”Host: www.example.com:8080″見たいに入るから大丈夫か?

プロキシ経由の場合はサーバはプロキシからアクセスされるだけで、上に書いたことに大きな違いはないか?

IPアドレスでアクセスした場合は、HOSTがIPアドレスに変わるだけで大きな違いはないと思うが、この場合でもFDQNで取得したい場合はあらかじめどっかにかいとくしかないか?逆引きしてまですることじゃないと思う。

ではサイトのトップページを取得したい場合はどうするか?サイトのトップページがhttp://www.example.com/ddd/だとして、http://www.example.com/ddd/xxx/ppp.phpのアクセスから、トップページを取得したい場合。これはめんどくさそう。考えたくない。

いやその前にmod_rewriteを使っていて、QUERY_STRINGをディレクトリみたいに見せていた場合、$_SERVERの格変数にはどう格納されるのか?これもめんどくさい。調べるのもめんどくさい。

やっぱり素直にPHPに書いておいたほうが安全かな。

追記
pukiwikiの見ていたら関数を見つけたので適当に直してコピペ

ライセンスはpukiwikiに従う。

Linuxでbinやnrgやmdfイメージをマウントする。

fuseisoコマンドを使ってisoファイルやbinファイルなどのイメージをマウントすることができる。fuseisoはFUSEを使っているためユーザー空間でこれらの作業を行える。以下はUbuntu 8.04で行った例。

・インストール
$ sudo apt-get install fuseiso

・マウントする
$ mkdir ~/mnt
$ fuseiso file.iso mnt

・アンマウントする
$ fusermount -u ~/mnt

・GUIツール
Furius ISO Mount Toolを使えば、GUIから操作できる。

ubuntuでgufwを使ってufwを制御

gufwはufwのGUIフロントエンド。ufwはiptablesのフロントエンド。gufwはここからダウンロードできる。ここではgufw_0.0.7c-all.debを使った。

インストール後[アプリケーション]→[インターネット]→[Gufw Firewall Configuration]から実行できる。

右側の[Firewall enabled]チェックボックスで有効/無効を設定する。

次にデフォルトのポリシーを決める。デフォルトポリシーとはデフォルトで許可するか拒否するかの設定のことで普通は拒否にする。[Deny incoming traffic]をチェックすることでデフォルトで拒否になる。[Hide IP]をチェックするとpingに応答しなくなる。

次に許可するプロトコルやポートを決める。普通は[Preconfigured]タブから許可するプロトコルを選ぶ。

sshとhttpを許可する場合は以下のようになる。

設定は即座に反映される。ほんとに反映されてるか詳しく見たい場合はコマンドラインから以下のようにして確認する。

$ sudo ufw status
$ sudo iptables -L -v

ubuntu8.04でflashを再生する

以下のコマンドを実行する。

$ sudo apt-get install flashplugin-nonfree libflashsupport

flashplugin-nonfreeはflashプラグイン本体。libflashsupportはpulseaudioを利用するためのもの。
firefoxでflashを再生できることを確認。