Author Archives: admin

Visual Basic 2005 でテキストのドラッグアンドドロップ

ドロップターゲット(ドロップされる方)の作り方です。

1、コントロールのAllowDropプロパティをTrueにする。

2、DragEnter, DragOver, DragDropのイベントハンドラを追加する。

3、DragEnterとDragOverを以下のように実装する。

4、DragDropを以下のように実装する。

DragDropでドロップされたデータを取り出せる。

Fedora9 インストール リポート

vmwareにインストールした。インストールはすんなり終了。

GDMでログインのウインドウの左側が少し欠けてるよ。日本語のせい?

Firefoxが3b5になってる。しかしネットワークにつながらない・・・。pingもとおるし名前解決もできる。tracerouteすると connectで失敗している。インストール時にIPv6を無効にしたので、そのせいかと思いネットワーク設定でそれを有効にしたら直った。

# yum update

やっぱりおそいので、

# yum install yum-fastestmirror
# yum update

いきなりカーネルが2.6.25.3-18にアップデート、coreutilsもアップデートしてた。vmwareのconfigやらなくてよかった。

アップデートが終わり再起動。で、またネットワークにつながらない。ifconfigでeth0がないです。service network startでなんなり動いた。なんなんでしょうか?

vmware-toolsのインストール。 というかそのまえにデスクトップのフォルダ名が”デスクトップ”になってる。使いづらい。いったんログアウトしてgdmで言語を English(United States)へそしてログイン。フォルダ名を変えられた。再びログアウトし日本語にもどす。ってネットワークがまたつながってない。chkconfig networkが全部offになってる。とりあえずchkconfig network onする。でservice network startしたら、RTNETLINK answers: File exitsとか言うエラーでた。でもrestartしたら直った。

# yum install kernel-headers
# yum install kernel-devel
# yum install gcc

# vmware-config-tools

コンパイル関係はやっぱりエラー。でも無視。解像度を1600×1200に設定してリブート。

なんかマウスが外にvmwareの外に出れない。ってまたネットワークがつながってないよ。service restart networkして直った。xorg.confにマウスの設定が一切ない。Fedoraってそうだったのか?とりあえずxorg.confに以下を追加。

Section “ServerLayout”
Identifier “Default Layout”
Screen 0 “Screen0” 0 0
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “VMMouse” “CorePointer” <-これはここだけ追加
EndSection

Section “InputDevice”
Identifier “VMMouse”
Driver “vmmouse”
Option “Device” “/dev/input/mice”
Option “Emulate3Buttons” “yes”
EndSection
やっぱりまだおかしい。マウスが途中で止まるし、クリッピングされているみたいに動かなくなる。

/usr/lib/xorg/modules/inputにあるvmmouse_drv.soを/usr/lib/vmware-tools/configurator/Xorg/7.1 にあるもので置き換えてみた。マウスは外に出れなくなるが、とりあえず動いてるのでもうこれでいい。

ネットワークがまたつながってない。IPv6を無効にしたのがいけなかったのか?

というより日本が打てない。うすうす気がついていたが今再確認した。あのバーがでてこない。

# yum install scim-lang-japanese

してログインし直したら直った。って言うかインストールできた。デフォルトでインストールされてなかった?それとも違うのが入ってたのか?

相変わらずCtrl+Spaceは使いづらい。設定から削除。

つぎはsamba。共有しないと何もできない。autofsでやる。

# yum install samba-client
[root@localhost /]# yum install autofs
[root@localhost /]# chmod 755 /etc/auto.smb
[root@localhost /]# mkdir /sambaauto
[root@localhost /]# chmod 777 /sambaauto/
[root@localhost /]#
# echo ‘/sambaauto /etc/auto.smb’ >> /etc/auto.master
service autofs start
# chkconfig autofs on
# ls /sambaauto/192.168.x.x

これはすんなり成功。

Firefoxのflashが入らない。livnaにあるのか?

# rpm -Uvh http://rpm.livna.org/livna-release-9.rpm

livnaにはないみたい。とおもったらadobeがyumのレポジトリのrpmを公開してる。

# rpm -Uvh adobe-release-i386-1.0-1.noarch.rpm

絵は出るけど音が鳴らない。いつものことだけどね。いまは無視ししてxmmsを入れてみる。

# yum install ‘xmms*’

livnaおせー。とうかネットワークが不安定だからautofsもまともに動かないよ。マウスもやっぱりときどきおかしくなる。

つーかもうあきた。

アプリケーション終了時に音を出す

Windowsがデフォルトで持っている機能ですが、これが結構便利です。終了させたつもりなのに音が出なかったりすれば何かおかしなことが起こってるかもってなりますし、いきなり音が鳴れば何かが終了したことがわかります。

設定はコントロールパネルの[サウンドとオーディオデバイスのプロパティ]を開き、以下のように設定します。

サウンドとオーディオデバイスのプロパティ

CUIアプリだとちゃんと鳴りません。lsとか打つたびに鳴ってたらウザイでしょうし。

scriptコマンドでコマンドの記録を見る

scriptコマンドを使うと、自分がシェル上で実行したコマンドの入力や出力をファイルに書き出すことができる。

$ script
スクリプトを開始しました、ファイルは typescript です
$ ps
PID TTY TIME CMD
22452 pts/4 00:00:00 bash
22462 pts/4 00:00:00 ps
$ exit
スクリプトを終了しました、ファイルは typescript です
$ cat typescript
スクリプトは 2008年05月15日 08時26分06秒
に開始しました$ ps
PID TTY TIME CMD
22452 pts/4 00:00:00 bash
22462 pts/4 00:00:00 ps
$ exit
スクリプトは 2008年05月15日 08時26分13秒に終了しました$

scriptコマンドをオプションなしで実行すると、ファイル名がtypescriptとして保存される。ファイル名をaaaとしたい場合は、

$ script aaa

とすればよい。

scriptコマンドから出るにはexitを入力するか、Ctrl+Dを入力する。

-aオプションを用いるとファイルへの追加がおこわなれる。

-fオプションを用いるとファイルへの出力が即座に行われる。これを用いると他の端末からtail -f などでリアルタイムに入出力を見ることができる。(マニュアルには行単位で出力と書いてあるが実際にやってみると即座に行われるようだ)

-tオプションを用いると入出力のタイミングデータを標準エラー出力に出力する。

$ script -t 2> timing
.....
$

scriptreplayコマンドを使うと、このtimingファイルとtypescriptファイルを使ってリアルに再現することができる。

$ scriptreplay timing
...

ただしUbuntu日本語環境だとタイミングがうまく動かないみたいなので、scriptコマンド実行のときのLANGを消したらうまくできた。

$ LANG= script -t 2> timing

windowsのphpのmbstring

phpをインストーラでインストールしたせいか、mbstringが有効になってなく、php_mbstring.dllすら見つからなくて困ったのでメモ。

結論としては本家 http://php.net にありました。インストーラじゃなくzipをダウンロードしたらextフォルダに入ってました。(本家のダウンロードページ)

ちなみにmbstringを有効にするには、php.iniに以下の行があればいいはずです。

確認にするには、phpinfo();を開いて以下のような記述があればOKです。php.iniを編集した後はapacheの再起動を忘れずに。

phpinfombstring.jpg

apacheのログのリファラを日本語で表示

apache.logがあるとして、以下のコマンドを実行

$ perl -e 'while(<>){/^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"/;print $8,"\n" unless $8 eq "-";}' < apache.log |xargs -l1 php -r 'print(urldecode($argv[1])."\n");' -- | nkf

perlにログを渡しrefererを取り出し、xargsでphpに一行づつ渡す。phpでurldecodeをして出力し、nkfで文字コードを推定させてutf8で出力。ただしすごく遅い。

コピペ用
[sourcecode language=”c”]
perl -e ‘while(<>){/^(.*) (.*) (.*) \[(.*)\] “(.*)” (.*) (.*) “(.*)” “(.*)”/;print $8,”\n” unless $8 eq “-“;}’ < apache.log |xargs -l1 php -r 'print(urldecode($argv[1])."\n");' -- | nkf [/sourcecode]

udevメモ MACアドレス変更時の操作

最近のLinuxを起動すると、最初のほうで起動されているudevについてのメモ。

udevはデバイスノード(/devディレクトリ)を作成したり操作する。sysfs(/sys)にカーネルが作成したデバイス情報があり、これとユーザが定義したルールを見ながら/dev以下を作成する。

udevの設定ファイルは/etc/udev/udev.confにある。この設定では以下の情報を設定する。

・デバイスノードを作る場所。デフォルトは/dev
・ルールファイル(*.rules)の置いてあるディレクトリ。デフォルトは/etc/udev/rules.d/
・ログをどれくらいとるか。

例:ネットワークカードを入れ替えた場合のルールの変更方法

ネットワークカード入れ替えると当然マックアドレスが変わるが、自動でシステムの設定は変わってくれないみたいで、前のカードのマックアドレスがeth0のままになっていて、新しいカードはeth1になっている。

これはudevのルールで設定されているので、これを修正すればよい。 ルールディレクトリでマックアドレスを検索すると以下のようなエントリが見つかる。

SUBSYSTEM==”net”, DRIVERS==”?*”, ATTRS{address}==”xx:xx:xx:xx:xx:xx”, NAME=”eth0″

このエントリはコンマで区切られた最初の3つが条件でそれが真ならNAME=”eth0″が設定される。ネットワークカードを入れ替えた場合このエントリーが2つあるはずなので古い方を消し、新しい方のNAMEをeth0にすればいい。

debianでブート時に/tmpを削除しない方法

/etc/default/rcSを編集する。このファイルはブートプロセス時の制御を行う。man rcSでマニュアルを表示できる。ここでTMPTIMEを設定する。

TMPTIME
0にすると、ブートの度ごとに/tmpにあるファイルが削除される。10とすると10日間使われていないファイルが削除される。

vmware playerで最大化したときの最上部のバーを消す

vmware playerでゲストOSを最大化したとき、最上部にバーが表れ、このバーの一番左のピンを抜いてもまだ細いバーが表示される。これを消すための方法。

vmware playerの設定ファイルをいじるわけだが、このある場所は、Linuxの場合は、~/.vmware/にあり、Windowsの場合はC:\Users\<USER>\AppData\Roaming\VMware\preferences.iniにある。このファイルを開くにはCtrl+Rで実行ダイアログを表示し、以下を入力する。

Ctrl+R and Enter %APPDATA%\VMware\preferences.ini

このファイルに以下を追加する。

しかし、これをやるとゲストOSでマウスを一番上にもっていってもバーは表示されなくなる。ゲストOSの最大化を解除するにはCtrl+Altをしないとならない。

関連:
vmware-vdiskmanagerとknoppixを使って仮想ディスクの容量を増やす
Fedoraのvmware ServerでゲストOS上でアンダーバーが入力できない

Linuxで音がならないときの対処法

自分も完全にはLinuxのサウンド関係を把握してる訳ではないんですが、自分のマシンにLinuxをインストールして音が出なかったとき右往左往しながら色々やって直したときのメモです。

結論からいうと、多分ですが、自分のマシンにはTVカードが刺さっていて、これは使ってなかったんですが、こいつのせいでサウンド関係のカーネルモジュールがうまく読み込まれなかったようです。

とりあえずもし音がならない場合は以下のことを調べるといいです。

・lspci | grep audioをして自分のマシンのサウンドボードが認識されているか確かめる。

・alsaconf(debian等)、system-sound-config(fedora等)を実行して、サウンドボードが認識されているか確かめる。

・lsmodして読み込まれているモジュールを確認し、modinfoでそのモジュールが本当に必要なのかを確認する。いらないなら/etc/modprobe.d/blacklistにいれてしまう。(自分の場合はこのやりかたで直りましたが、もっとましな方法があるのかもしれません。)

モジュールに関してはカーネルモジュール覚書に少し書いています。