Hatena::ブログ(Diary)

ubuntu日記 このページをアンテナに追加 RSSフィード

2009-05-13

[][]VMware Server 2上のUbuntu 9.04でマウスがうまく動かない

この組み合わせならマウスをvmmouseとして認識してくれるのですが、以下のような症状が。

  • ホストOSとゲストOS間で透過的に使えない(Ctrl-Altが必要)
  • ホイールを動かしても下へのスクロールしかできない

特に二番目、ホイールを上に転がすとウインドウの一番下までスクロールしちゃってうざいことこの上ない。


こういう場合はxserver-xorg-input-vmmouseをアップデートしましょう。

$ sudo apt-get install xserver-xorg-input-vmmouse

これでxorgを再起動したところ、きれいに動くようになりました。

参考:Ubuntu 8.10 on VMware Fusion のvmmouse問題対策

2009-04-26

[]Ubuntuオフラインミーティング

なんで男しかいないのヽ( `д´)ノ

とても怖かったです

エルサルじゃ優等生タイプの女の子から他校生とケンカして自家製爆弾投げつけられちゃった悪ガキまでキャッキャウフフしながら夢中になってたのに。


それでもviva-ubuntuさんのUbuntu 9.04新機能と、vine_userさんのCompiz Fusion(資料はここ)について聞いてきた。Compiz Fusionむちゃくちゃカッコいいです。会社のマシンに入れたいけど怒られるかな。


よくよく考えてみれば、PCを買えば普通にWindowsが入ってる状況でわざわざOSを乗り換えようなんて思う人はあんまりいないかもですね。古いPCで使えるわけでもないし。

ウイルスに強いとか使えるソフトがいろいろあるとかメリットはありますが、OS入れ替えは敷居が高すぎる。

OOoとかGimpみたいに需要が高そうなソフトはWindowsでも使えるもんなぁ。

2009-04-10

[postgresql][sql]PostgreSQL上でオートナンバーを使う

Accessで作った既存のデータベースをPostgreSQLにエクスポートすると、オートナンバー型がinteger型に変更されます。

これをPostgreSQL上でもオートナンバーになるように、デフォルト値を直前の数値をインクリメントした値に設定します。

カラムを新規作成するときにはデータ型[SERIAL]を選べばいいのですが、途中で変更するのはちょっと面倒な処理が必要です。


SQLCREATE SEQUENCEを使うわけですが、phpPgAdminだとGUIから登録可能。


簡単な流れは以下のとおり。

  1. [シーケンス]に開始値を指定して登録
  2. 該当カラムの[デフォルト]に「nextval('"[作成したシーケンス名]"'::regclass)」を追加

詳細な処理は以下。

[シーケンス]に開始値を指定して登録

該当データベースからスキーマを選択します。何も指定せずエクスポートした場合には「public」になっているはず。

f:id:elsal:20090410213614j:image


[シーケンス]をクリックし、[シーケンスを作成する]をクリック、以下を入力する。カッコ内はPostgreSQLのdocsに載っている名前。

名前(name)シーケンスの名前。新規にSERIAL型のカラムを登録すると[テーブル名]_[カラム名]_seqという名前のシーケンスができます。
増加値(increment)直前の数値からいくつ増加するか。ここでは[1]を。
最小値(minvalue)番号の最小値。デフォルトは1。
最大値(maxvalue)番号の最大値。long int なのでここでは9223372036854775807を入力。
開始値(start)番号の開始値。デフォルトは最小値と同じ。ここでは100番から開始するので[100]を入力。
キャッシュ(cache)アクセスを早くするためにキャッシュしておく番号の数。新規にSERIAL型のカラムを登録すると32になるので[32]と入力してますがイマイチ有用性が分からないですすいません。
Can cycle?(CYCLE)番号が最大値を超えた場合に最小値に戻るかどうか。long intを使い切るとかあり得ない。

f:id:elsal:20090410213612j:image


これで[作成]をクリックすればシーケンス作成完了。

f:id:elsal:20090410213613j:image

カラムのデフォルト値を変更

次に該当テーブルからオートナンバーに変更したいカラムの[変更]をクリック。

データ型は[integer]のまま、[デフォルト]に以下の文字列を入力する。

nextval('"[作成したシーケンス名]"'::regclass)

[変更]をクリック。

f:id:elsal:20090410213611j:image

これで、データを登録するときにIDを入力しなくても勝手に番号が割り振られるようになります。

2009-04-09

[][]phpPgAdminのインストールと設定

Ubuntu Server 8.04でPostgreSQLを使う。


すいませんPostgreSQL自体のインストールはログを取っていなかったので他のサイトを参照してください。

ちなみにUbuntu ServerではtaskselコマンドでPostgreSQLその他のサーバのインストールが簡単にできます。

$ sudo tasksel

ここではPostgreSQL 8.3がインストールされています。


さて、phpPgAdminです。

Ubuntuのパッケージでもありますが、バージョンが古いとSERIAL型(オートナンバー)を使うときに以下のようなエラーが出る場合があります。

Notice: Undefined index: length in /usr/share/phppgadmin/tblproperties.php on line 491
SQL エラー:

ERROR:  type "serial" does not exist

文:
ALTER TABLE "TestTable01" ALTER COLUMN "ID" TYPE SERIAL

これは最新版(2009年4月9日現在バージョン4.2.2)で直っているバグです。最新版は以下から入手可。

http://phppgadmin.sourceforge.net/


インストールはアーカイブを展開するだけです。

$ tar zxfv phpPgAdmin-4.2.2.tar.gz

これをたとえば/usr/shareの下にコピーします。

$ sudo cp -r phpPgAdmin-4.2.2 /usr/share/phppgadmin

http://[アドレス]/phppgadminphpPgAdminにアクセスできるようにApache2を設定します。

/etc/phppgadmin/apache.confを以下の内容で作ります。

Alias /phppgadmin /usr/share/phppgadmin/

<DirectoryMatch /usr/share/phppgadmin/>
DirectoryIndex index.php
Options +FollowSymLinks
AllowOverride None

order deny,allow
deny from all
allow from 127.0.0.0/255.0.0.0
allow from 192.168.1.0/255.255.255.0 # phpPgAdminにアクセスするネットワーク
# allow from all

<IfModule mod_php4.c>
  php_flag magic_quotes_gpc Off
  php_flag track_vars On
  php_flag register_globals On
  php_value include_path .
</IfModule>

<IfModule mod_php5.c>
  php_flag magic_quotes_gpc Off
  php_flag track_vars On
  php_flag register_globals On
  php_value include_path .
</IfModule>
</DirectoryMatch>

conf.dにリンクします。

sudo ln -s /etc/phppgadmin/apache.conf /etc/apache2/conf.d/apache.conf

Apache再起動。

$ sudo /etc/init.d/apache2 restart

PostgreSQLの設定。

ローカルからWeb経由でアクセスするため、/etc/postgresql/8.3/main/pg_hda.confの以下の文をコメントアウト。

local   all         all                               ident sameuser

さらに以下の文を追加。

local   all         all                               trust

PostgreSQL再起動。

sudo /etc/init.d/postgresql-8.3 restart

ここで注意。サービスを提供するアドレスはpostgresql.confで定義できますが、ここをIPアドレス直打ちするとローカルホストのポートが開かず、phpPgAdminがアクセスできません。

デフォルトではローカルホストのポートのみを開ける設定になっていますが、外部からの接続が必要な場合にはIPアドレスを入力するのではなく、'*'と入力しましょう。

これに気づくまでに2時間ほど費やしたのは内緒の方向で。Apacheのアクセスログ見てやっと気づいた。

listen_addresses = '*'

pg_hda.confを正しく設定しても「ログインに失敗しました」「Login failed」のエラーが出る場合にはここを確認するのがいいかも。


これでhttp://[アドレス]/phppgadminからログインできるはず。

しばらくSQLネタ続きます。


参考:phpPgAdminをインストールしてみる ubuntu Apache

2009-03-11

[]新しいHDDを認識させる

Intrepidに新しく500GBのHDDを接続しました。今どきのPCは増設するときにねじ回しとかいらないんですねぇ。


つないだ後にdmesg。sdb1として認識されています。

$ dmesg | grep sdb
[    9.694379] sd 2:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
[    9.694391] sd 2:0:0:0: [sdb] Write Protect is off
[    9.694392] sd 2:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    9.694412] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    9.694484] sd 2:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
[    9.694495] sd 2:0:0:0: [sdb] Write Protect is off
[    9.694496] sd 2:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    9.694516] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    9.694518]  sdb:<6>input,hidraw1: USB HID v1.11 Mouse [Logitech Logitech USB Optical Mouse] on usb-0000:00:1d.0-2
[    9.699767] sd 2:0:0:0: [sdb] Attached SCSI disk

パーティション作成。Gpartedでもできると思いますが、Intrepidには入ってなかったのでfdiskで。Gpartedってデフォルトではインストールされないんでしたっけ。

$ sudo fdisk /dev/sdb
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
Building a new DOS disklabel with disk identifier 0x0c605e39.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.


このディスクのシリンダ数は 60801 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): p

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0c605e39

デバイス Boot      Start         End      Blocks   Id  System

最初は何も表示されないので、nコマンドで新規作成。基本領域の1です。

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-60801, default 1): 
Using default value 1
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-60801, default 60801): 
Using default value 60801

全部1つのパーティションにしてます。

コマンド (m でヘルプ): p

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0c605e39

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       60801   488384001   83  Linux

テーブルに書き込み。

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

ext3でフォーマット。

$ sudo mkfs -t ext3 /dev/sdb1
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
30531584 inodes, 122096000 blocks
6104800 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
3727 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

ここでは/home2にマウントしてます。

$ sudo mkdir /home2
$ sudo mount /dev/sdb1 /home2
$ mount
(snip)
/dev/sdb1 on /home2 type ext3 (rw)
$ df -h
Filesystem            サイズ  使用  残り 使用% マウント位置
(snip)
/dev/sdb1             459G  199M  435G   1% /home2

無事にマウントできました。

さらにfstabを編集し、マシン起動時にマウントできるようにしておきます。

$ sudo vi /etc/fstab
(snip)
# /dev/sdb1 - Extended HDD
/dev/sdb1	/home2	ext3	relatime	0	2

確認のためいったんアンマウントし、mount -aしてみる。

$ sudo umount /home2
$ sudo mount -a
$ mount
(snip)
/dev/sdb1 on /home2 type ext3 (rw,relatime)

これで大丈夫そうです。


参考:CentOS5.2にHDDを増設する。