Thursday, December 22, 2005

MySQL 5.0.16 บน Windows XP งงหวะ

เริ่มต้น มี Table อันนึงชื่อ events
mysql> select mytime from events;
+---------------------+
| mytime              |
+---------------------+
| 2005-12-22 16:07:01 |
| 2005-12-22 16:18:54 |
| 2005-12-22 16:18:58 |
| 2005-12-22 16:19:02 |
| 2005-12-22 19:42:31 |
| 2005-12-22 19:42:31 |
| 2005-12-22 19:42:31 |
+---------------------+
7 rows in set (0.00 sec)
ชนิดของ mytime คือ timestamp

ทีนี้แกล้งใส่เงื่อนไขเวลา

mysql> select mytime from events 
  where mytime < '9999-12-31 23:59:59' and 
  mytime > '1-1-1 0:0:0';
Empty set, 4 warnings (0.00 sec)
หรือว่า > < ใช้ไม่ได้กับวันที่ ? ลองให้มันคำนวนค่าหลัง WHERE ดู
mysql> select (mytime < '9999-12-31 23:59:59' and 
  mytime > '1-1-1 0:0:0') logic from events;
+-------+
| logic |
+-------+
|     1 |
|     1 |
|     1 |
|     1 |
|     1 |
|     1 |
|     1 |
+-------+
7 rows in set, 2 warnings (0.00 sec)
ก็เป็น 1 นี่หว่า !

ลองเช็คว่าเป็น 1 หรือเปล่าแทน

mysql> select mytime from events 
  where (mytime < '9999-12-31 23:59:59' and mytime > '1-1-1 0:0:0')=1;
+---------------------+
| mytime              |
+---------------------+
| 2005-12-22 16:07:01 |
| 2005-12-22 16:18:54 |
| 2005-12-22 16:18:58 |
| 2005-12-22 16:19:02 |
| 2005-12-22 19:42:31 |
| 2005-12-22 19:42:31 |
| 2005-12-22 19:42:31 |
+---------------------+
7 rows in set, 2 warnings (0.00 sec)
อ้าว ดันได้ผล

1 กับ TRUE ไม่เหมือนกันเหรอ ?

mysql> select 2=2;
+-----+
| 2=2 |
+-----+
|   1 |
+-----+
1 row in set (0.00 sec)
สรุปว่า งง เป็น MySQL 5.0.16 บน Windows XP

WARNINGS

เห็นมี Warning ออกมา ก็เลยลอง

mysql> show warnings;
| Warning | 1292 | Incorrect datetime value: '9999-12-31 23:59:59' for column 'mytime' at row 1 |
| Warning | 1292 | Incorrect datetime value: '1-1-1 0:0:0' for column 'mytime' at row 1         |
OK ค่าอาจจะน่าเกลียด แต่ผลข้างบนก็ขัดแย้งกันเอง

ลองค้นหาข้อมูลเพิ่มเติมดู พบว่าในหน้า 11.3.1. The DATETIME, DATE, and TIMESTAMP Types บอกว่า สำหรับข้อมูลแบบ DATETIME

The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'. 
แต่สำหรับข้อมูลแบบ TIMESTAMP
...
TIMESTAMP values cannot be earlier than 1970 or later than 2037.
...
ตกลงเลยต้องเปลี่ยนเป็น
mysql> select id, mytime from events where 
   (mytime < '2036-12-31 23:59:59') and 
   (mytime > '1971-1-1 0:0:0');
+----+---------------------+
| id | mytime              |
+----+---------------------+
|  1 | 2005-12-22 16:07:01 |
|  2 | 2005-12-22 16:18:54 |
|  3 | 2005-12-22 16:18:58 |
|  4 | 2005-12-22 16:19:02 |
|  5 | 2005-12-22 19:42:31 |
|  6 | 2005-12-22 19:42:31 |
|  7 | 2005-12-22 19:42:31 |
+----+---------------------+
7 rows in set (0.00 sec)
ลองใช้ '1970-1-1 0:0:0' กับ '2037-12-31 23:59:59' ยังมี WARNINGS

Wednesday, December 21, 2005

iLBC จาก GIPS / Speex กับ JSpeex

iLBC เป็นหนึ่งใน Codecs สำหรับเข้ารหัสข้อมูลเสียงของ GIPS ที่ GIPS ใจดีแจกให้ชาวเน็ตใช้ (พร้อมซอร์สโค้ด) ที่ iLBCfreeware

กำลังมองหา Codec ที่ใช้งานได้บน Java ค้น "Java iLBC" แล้วไม่เจออะไร ไปเจออีกอันที่น่าสนใจคือ Speex และ JSpeex แทน

สรรพากรรับใช้

นักวิชาการ-ส.ว. จวก “สรรพากร” อ้างช่องโหว่กม.ยกประโยชน์ตระกูลชินฯ

พอนายเรืองไกรยกตัวอย่างนายกฯขึ้นมาเปรียบเทียบ ทำเป็นคอมพิวเตอร์ทำงานผิดพลาด เดือดร้อนรีบคืนภาษีให้เขาเลย อยากรู้นักว่าถ้าไม่มีกรณีของนายกฯ และไม่เป็นข่าวขึ้นมา มันจะพยายามคืนภาษีไหม

Sunday, December 18, 2005

D70 กลับมาแล้ว

เมื่อเช้า Nikon โทรมาปลุก บอกว่ากล้อง D70 ที่วันก่อนเอาไปซ่อม กลับมาจากโรงซ่อมแล้ว ให้ไปรับได้

เร็วดีเหมือนกัน เพราะกำหนดการเดิมคือ 1 สัปดาห์ ให้ไปรับวันที่ 22 แต่นี่เพิ่งวันที่ 18 ไปถึงเห็นคนไปรับ D70 และเอา D70 ไปซ่อมสองสามคนเหมือนกัน เหมือนตั้งเวลาให้เสียพร้อมๆกันเลยแฮะ อาการเดียวกันด้วย

ออกมาก็ลองจากหน้าศูนย์ Nikon นั่นแหละ

ขากลับแวะ Akihabara เพิ่มเห็นว่ามีร้าน BOSE มาเปิด

Friday, December 16, 2005

ลองใช้ mdadm / LVM บน Honey

Honey

สรุปว่าเครื่องเซิร์ฟเวอร์ใหม่ที่เพิ่งลง Ubuntu 64bit ไป (ลงเอยด้วย Ubuntu 5.1-amd64) มีชื่อว่า Honey :) เพราะตอนติดตั้งกำลังนั่งกิน "Cashews Honey Roasted"

เครื่องเซิร์ฟเวอร์ตัวก่อนหน้า (ที่เพิ่งเจ๊งไป) ตอนสั่งเลือกเป็น Hardware SATA RAID ใช้แล้วรู้สึกว่ามันช้า ยังดีที่ Linux Kernel มี Driver ให้ แต่โปรแกรมเครื่องมือสำหรับตรวจสอบสถานะของ RAID จาก Linux เขาแจกมาให้เป็น Binary เฉพาะสำหรับ Redhat เอามาลองเล่นดูบน Debian (KNOPPIX) แล้วรันไม่ได้ ยังไม่ได้ไปไล่ดูว่าเป็นเพราะอะไร

เครื่องนี้เลยเปลี่ยนเป็น SCSI Disk 300GB x 4 ตัว ธรรมด้าธรรมดา (JBOD - Just a Bunch Of Disks) แล้วใช้ Software RAID ของ Linux จัดการเองละกัน ง่ายดี ไม่น่ามีปัญหาเรื่อง Distro ฯลฯ อีก

MDADM

ก่อนหน้านี้บน Linux เวลาทำ Software RAID ก็จะเขียนไฟล์ /etc/raidtab แล้วใช้โปรแกรม ฯลฯ ใน raidtools (mkraid, raidstart) จัดการ ไปพบว่าเดี๋ยวนี้มีโปรแกรมใหม่ ชื่อ mdadm ซึ่งไม่ง้อไฟล์ /etc/raidtab แล้ว และท่าทางมีอะไรให้เล่นมากขึ้นเยอะ ก็เลยตัดสินใจลองของใหม่ก็แล้วกัน

สมมติว่าสร้าง Partition บน Disk แต่ละตัวเรียบร้อยแล้ว (ความจริงไม่น่าจำเป็น ใช้ /dev/sda ทั้งก้อนไปเลย) และจะเอา /dev/sdb1, /dev/sdc1, /dev/sdd1 3 อันมาทำ RAID5 ต้องสั่ง

# mdadm -Cv /dev/md0 -l5 -n3 /dev/sd{b,c,d}1
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: size set to 292961216K
mdadm: array /dev/md0 started.
มันจัดการสร้าง RAID5 เป็น /dev/md0 และ START ให้เรียบร้อยเลย ง่ายดี ในคู่มือของ mdadm เขาบอกว่า เวลาสร้าง RAID5 โดยกำหนดว่ามีดิสก์ 3 ตัว mdadm จะแกล้งสร้างโดยใช้ดิสก์แค่ 2 ตัวก่อน (แกล้งบอกว่าตัวที่ 3 เจ๊ง) และให้อีกตัวเป็น Spare จากนั้นจึงทำการ Recover เอา Spare มาทำเป็นตัวที่ 3

เขาบอกว่าแบบนี้จะเร็วกว่า ซึ่งก็เห็นได้จาก

# mdadm --detail /dev/md0
/dev/md0:
        Version : 00.90.01
  Creation Time : Thu Dec 15 12:07:44 2005
     Raid Level : raid5
     Array Size : 585922432 (558.78 GiB 599.98 GB)
    Device Size : 292961216 (279.39 GiB 299.99 GB)
   Raid Devices : 3
  Total Devices : 3
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Dec 15 12:30:10 2005
          State : clean, degraded, recovering
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

 Rebuild Status : 31% complete

           UUID : 57fdf57f:22aec90f:f38f06cf:4e33028d
         Events : 0.17

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/.static/dev/sdb1
       1       8       33        1      active sync   /dev/.static/dev/sdc1
       2       0        0        -      removed

       3       8       49        2      spare rebuilding   /dev/.static/dev/sdd1r
และ
# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
      585922432 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      [>....................]  recovery =  0.9% (2670336/292961216) finish=67.1min speed=72010K/sec
จะเห็นว่า sdd1 มีตัวเลข [3] เพราะโดนทำให้เป็น SPARE ไม่ต่อเนื่องกับสองตัวแรก sdb1[0], sdc1[1]

เมื่อเวลาผ่านไปชั่วโมงกว่าๆ ลองเปิดดูอีกที

# cat /proc/mdstat 
Personalities : [raid5] 
md0 : active raid5 sdd1[2] sdc1[1] sdb1[0]
      585922432 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: 
พอทำการซ่อมเสร็จ sdd1 กลายเป็นเลข [2] และรายละเอียดของ RAID จะเป็น
# mdadm --detail /dev/md0
/dev/md0:
        Version : 00.90.01
  Creation Time : Thu Dec 15 12:07:44 2005
     Raid Level : raid5
     Array Size : 585922432 (558.78 GiB 599.98 GB)
    Device Size : 292961216 (279.39 GiB 299.99 GB)
   Raid Devices : 3
  Total Devices : 3
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Dec 15 13:44:05 2005
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 57fdf57f:22aec90f:f38f06cf:4e33028d
         Events : 0.1654

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/.static/dev/sdb1
       1       8       33        1      active sync   /dev/.static/dev/sdc1
       2       8       49        2      active sync   /dev/.static/dev/sdd1
ทีแรกไม่เข้าใจ คิดว่าจะทำแบบมี 1 SPARE ไปตลอด เนื้อที่หายไป 300GB คงแย่เลย ตกลงได้ 600GB ถูกต้องตามต้องการ

ลอง Reboot ดูก็พบว่า /dev/md0 โผล่ขึ้นมาเลย ทั้งๆที่ยังไม่ได้ไปแก้ Partition ID อะไร และมี Process mdadm -F ทำงานอยู่ในโหมด Monitor คอยส่งเมล์ไปให้ root หากมีอะไรเกิดขึ้นกับ RAID5 ตัวนี้

 8706 ?        Ss     0:00 /sbin/mdadm -F -i /var/run/mdadm.pid -m root -f -s
เจ๋ง+ง่าย ดี :)

LVM

ได้ /dev/md0 มาแล้ว ว่าจะ Format เลย คิดไปคิดมา ลองเล่น LVM ดูบ้างดีกว่า เท่าที่เคยอ่าน จุดเด่นของ LVM คือ ยืดหดได้ ย้ายที่ได้ง่าย และทำ Snapshot ได้

ขั้นตอนมีอยู่ได้ว่า

  1. เอา Partition ของ HardDisk ที่มี มาทำเป็น PV (Physical Volume)
  2. เอา PV หลายๆอัน มารวมกันเป็น VG (Volume Group)
  3. แบ่ง VG ออกเป็นส่วนๆตามต้องการ สำหรับแต่ละ File System แต่ละส่วนเรียกว่า LV (Logical Volume)
ขั้นแรก เอา /dev/md0 มาทำให้เป็น PV
# pvcreate /dev/md0
  Physical volume "/dev/md0" successfully created
ขั้นต่อไป สร้าง VG ชื่อ "honey_group" จาก PV ซึ่งบังเอิญมีแค่ตัวเดียว
# vgcreate honey_group /dev/md0
  Volume group "honey_group" successfully created
ตรวจสอบ
# vgdisplay
  --- Volume group ---
  VG Name               Ubuntu
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               279.15 GB
  PE Size               4.00 MB
  Total PE              71462
  Alloc PE / Size       71462 / 279.15 GB
  Free  PE / Size       0 / 0
  VG UUID               R6LjNt-EY2N-98nE-IqrH-sBu3-P8tC-Op9PHC

  --- Volume group ---
  VG Name               honey_group
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               558.78 GB
  PE Size               4.00 MB
  Total PE              143047
  Alloc PE / Size       0 / 0
  Free  PE / Size       143047 / 558.78 GB
  VG UUID               XkNJGo-4q8s-BOD1-veBq-gBB6-aGxB-04t6Y9
อันบน "Ubuntu" เป็นอันที่ Ubutun สร้างให้ตอนเลือกติดตั้งลงบน LVM

หลังจากนั้นก็สร้าง LV บน VG นี้ (ขนาด 558G เอามาจากบรรทัด "Free PE" ข้างบน)

# lvcreate -L558G -nhoneyhome honey_group
  Logical volume "honeyhome" created
ตรวจสอบ
root@honey:/home/vuthi# lvdisplay
  --- Logical volume ---
  LV Name                /dev/Ubuntu/root
  VG Name                Ubuntu
  LV UUID                pguS5X-B6t0-tTf2-cQYD-ZWHP-mNYB-jKx5Oy
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                267.83 GB
  Current LE             68565
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           254:0

  --- Logical volume ---
  LV Name                /dev/Ubuntu/swap_1
  VG Name                Ubuntu
  LV UUID                2mPHNn-sNfN-VJcQ-QZ8U-zsPF-5Yqz-8TE8AM
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                11.32 GB
  Current LE             2897
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           254:1

  --- Logical volume ---
  LV Name                /dev/honey_group/honeyhome
  VG Name                honey_group
  LV UUID                Nts6Xl-z9ti-SwzK-A3g1-NbgE-GAwe-jY2Piy
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                558.00 GB
  Current LE             142848
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           254:6
สองอันบน "root" กับ "swap_1" Ubutun สร้างให้ตอนเลือกติดตั้งลงบน LVM

เมื่อได้ LV ชื่อ /dev/honey_group/honeyhome มาแล้วก็จัดการสร้าง File System

# mkfs.ext3 -L HOME /dev/honey_group/honeyhome
mke2fs 1.38 (30-Jun-2005)
Filesystem label=HOME
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
73138176 inodes, 146276352 blocks
7313817 blocks (5.00%) reserved for the super user
First data block=0
4464 block groups
32768 blocks per group, 32768 fragments per group
16384 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 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
จากนี้ก็ทำการ mount /dev/honey_group/honeyhome ได้ตามปกติ

ถ้าเข้าไปดูใต้ /dev จะเห็นว่าความจริงแล้ว /dev/honey_group/honeyhome เป็น symlink ไปยัง "VG-LV" ใต้ /dev/mapper/ อีกทีหนึ่ง คือ /dev/mapper/honey_group-honeyhome

PHP 4.4 ทำเจ๊ง

ญาติเมล์มาบอกว่า ฐานข้อมูลครอบครัว Family DB/Tree ที่เคยทำไว้ เข้าไม่ได้ เขาจะมาอัพเดทสักหน่อย ไปลองไล่ๆดู เออจริงแฮะ PHP มันเพี้ยนๆ

ไล่ไปไล่มา เครื่องนี้ PHP ถูกอัพเป็น 4.4 แล้ว ซึ่งในรุ่นใหม่นี้ตัวแปรของ GET หรือ POST ที่เคยมาทาง global variable มันไม่มาแล้ว เช่น ถ้า URL เป็น http://www../proc.php?xx=2 เดิมเคยเรียกใช้ $xx ใน proc.php ได้เลย ตอนนี้ต้องแก้โดยเพิ่มในตอนต้นของ proc.php ไฟล์ว่า

$xx = $_GET["xx"];
หรือ
$xx = $_REQUEST["xx"];
หรือถ้าใช้ POST ก็ต้อง
$xx = $_POST["xx"];
Otto บอกว่าถ้าอยากให้มันมีเหมือนเดิม ก็ไปแก้ .htaccess โดยเพิ่มบรรทัด
php_flag register_globals 1
ลองทำดูแล้ว ทีเดียวได้เลย ง่ายดี มันอาจจะมีปัญหาเกี่ยวกับ Security อะไรไม่รู้ ตอนนี้ใช้แบบนี้ไปก่อนก็แล้วกัน

เขียนอังกฤษด้วยอักษรไทย

วันก่อนไปกิน COCA ในตึกเดียวกับ BIC Camera 有楽町 เจอเมนูเขียนแปลกดี คิดว่าภาษาไทย อ่านๆดูไม่ใช่แฮะ

ดูดีๆ อ้อ เขียนอังกฤษด้วยอักษรไทยดัดแปลง

Thursday, December 15, 2005

Intel(R) Processor Identification Utility

อยากใช้ทีไรต้องเสียเวลาหาทุกที เอามา BLOG เก็บไว้

Intel(R) Processor Identification Utility

รันบน Samurai ได้ผลดังนี้

Intel(R) Processor Identification Utility
Version: 2.5.20050912
Time Stamp: 2005/12/15 12:56:02
Number of processors in system: 1
Current processor: #1
Processor Name: Intel(R) Pentium(R) 4 CPU 540   3.20GHz
Type: 0
Family: F
Model: 3
Stepping: 4
Revision: 14
L1 Trace Cache: 12 Kμops
L1 Data Cache: 16 KB
L2 Cache: 1 MB
Packaging: LGA775
Platform Compatibility Guide: 04A
EIST: No
MMX(TM): Yes
SIMD: Yes
SIMD2: Yes
SIMD3: Yes
Enhanced Halt State: No
Execute Disable Bit: No
Hyper-Threading Technology: Yes
Intel(R) Extended Memory 64 Technology: No
Expected Processor Frequency: 3.20 GHz
Reported Processor Frequency: 3.27 GHz
Expected System Bus Frequency: 800 MHz
Reported System Bus Frequency: 819 MHz
*************************************************************
ส่วนบน Dimension64 จะเป็น
Intel(R) Processor Identification Utility
Version: 2.5.20050912
Time Stamp: 2005/12/16 01:28:56
Number of processors in system: 1
Current processor: #1
Processor Name: Intel(R) Pentium(R) 4 CPU 650   3.40GHz
Type: 0
Family: F
Model: 4
Stepping: 3
Revision: 4
L1 Trace Cache: 12 Kμops
L1 Data Cache: 16 KB
L2 Cache: 2 MB
Packaging: LGA775
Platform Compatibility Guide: 04A
EIST: Yes
MMX(TM): Yes
SIMD: Yes
SIMD2: Yes
SIMD3: Yes
Enhanced Halt State: No
Execute Disable Bit: Yes
Hyper-Threading Technology: Yes
Intel(R) Extended Memory 64 Technology: Yes
Expected Processor Frequency: 3.40 GHz
Reported Processor Frequency: 3.40 GHz
Expected System Bus Frequency: 800 MHz
Reported System Bus Frequency: 800 MHz
*************************************************************

DELL PowerEdge เจ๊ง

ระหว่างอยู่เมืองไทยเมื่อต้นสัปดาห์ Login เข้ามาที่เครื่อง Server ที่มาเมื่อต้นปี (ลงเอยที่ DELL PowerEdge) ไม่ได้ เมื่อวานไปเช็คดู อ้าว เครื่องมันดับไป เปิดใหม่ก็ติดบ้างไม่ติดบ้าง ติดขึ้นมาสักพัก ก็จะดับไปอีกพร้อมไฟกะพริบสีแดง

โทรไปถาม DELL เขาบอกว่า PSU (Power Supply Unit) น่าจะเสีย แต่อาจจะเป็น Memory หรือ CPU หรือ Motherboard ฯลฯ ก็ได้ (ไอ้ไฟกะพริบไม่ได้บอกอะไรเลย มี Pattern เดียว) ตกลงว่าวันนี้จะส่งช่างมาดูให้ โดยนัดส่งอะหลั่ยมาก่อนตอนเช้า

เมื่อเช้า 9:00 ตรงเวลาเป๊ะ มีกล่องใหญ่มาถึง ไม่รู้ว่ามีอะไรบ้าง รอช่าง DELL มาแกะเอง พอบ่าย 2 ช่างมา เขาบอกแผนว่า 1) จะลองเปลี่ยน PSU ถ้าไม่ได้ผลก็จะ 2) เปลี่ยน CPU ถ้าไม่ผลก็จะ 3) เปลี่ยน Motherboard ทุกอย่างมันอยู่ในกล่องหมดแล้ว

เขาเปลี่ยน PSU เสร็จก็เอา Notebook ต่อเข้ากับช่อง LAN (onboard) แล้วเข้าเมนูของ IPMI (BIOS) ตอนบูท กด Ctrl-E ตั้ง IP Address ของ IPMI ให้อยู่ใน subnet เดียวกับ Notebook แล้วเรียกโปรแกรม ipmish บน Notebook เรียก LOG ของฮาร์ดแวร์ออกมาดู

นึกๆอยู่ว่า server ก็ดีแฮะ มีอะไรแปลกๆให้เล่น ถามเขาว่า ipmish มีของ Linux ไหม จะได้ต่อ LAN ไปเครื่องอื่นเอาไว้ตรวจสุขภาพกันเอง ช่างคนนี้บอกว่าไม่น่าจะมี (เดี๋ยวคงต้องลองค้นเอง) และอีกอย่าง มันคงใช้ได้เฉพาะตอนยังไม่บูท OS (เฉพาะตอนอยู่ที่หน้า POST - BIOS) เพราะบูท OS แล้วช่อง LAN นี้ก็น่าจะกลายเป็น IP อื่น คือเป็นของ OS นั้นๆไป IPMI ยุ่งไม่ได้

แต่เปิด ipmish ของเครื่องนี้ออกมาดู ปรากฏว่าไม่มีอะไรน่าสนใจ แค่ ไฟ OK ฝาถูกเปิด สิบกว่ารายการ โทรไปถาม DELL (ช่างตกลงไม่ใช่ลูกจ้าง DELL เป็นเป็น sub ของ DELL อีกที) เขาก็บอกว่างั้นให้ลองเปิดเครื่องไว้สัก 20 นาที ถ้าไม่มีปัญหากลับบ้านได้

รอ 20 นาที fsck ยังไม่ทันเสร็จ เครื่องไม่ดับแล้ว เห็นเขาท่าทางลุกลี้ลุกลนก็เลยปล่อยให้กลับไป เพราะที่เหลือเป็นเรื่องของ OS ที่เราลงกันเอง ไม่เกี่ยวกับเขาแล้ว

ทิ้งกล่องอะหลั่ยที่ยังไม่ได้ใช้เอาไว้ บอกว่าสัปดาห์หน้าจะให้บริษัทขนส่งมารับกลับไป

ไอ้เครื่องใหม่ที่กำลังลง Ubuntu อยู่คงไม่มีปัญหาแบบนี้ เพราะมันมี PSU สองอันกันเจ๊งไว้เรียบร้อย

เอากล้องไปซ่อม (D70)

กลับไปเมืองไทยเมื่อต้นเดือน ผบ.บอกว่ากล้องเจ๊ง ถ่ายเซลในแล็บไม่ได้ อาการคือ ใส่ถ่านปุ้บไฟเขียวตรงข้างๆช่อง CF จะกะพริบตลอด เปิดสวิตช์ก็ไม่ติด (ไม่มีอะไรปรากฏบนหน้าจอ LCD ด้านบน)

  • ทีแรกคิดว่าไม่ได้ใช้นาน แบตภายใน(ถ้ามี)อาจจะหมด ก็ลองชาร์จแบตให้เต็มแล้วใส่แช่ไว้ ให้มันเอาไฟแบตนอกไปชาร์จแบตใน (อ่านเจอจากคู่มือกล้องยี่ห้ออื่น ซึ่งอาจจะไม่เกี่ยวกับ D70) แต่พบว่าอาการก็ไม่ดีขึ้น

  • ถ้าปล่อยทิ้งไว้ไฟเขียวมันก็กะพริบไปเรื่อยๆจนแบตหมด

  • ถ้าเอาแผ่น CF ออก มันจะไม่กะพริบ

  • ถ้ากดปุ่ม MENU จะมีหน้าจอเมนูโผล่มาแว้บนึงแล้วหายไป

สรุปต้องค้นหาเว็บด้วยคำว่า Flashing Light D70 เจอเพียบเลย เขาเรียกอาการนี้ว่า "Blinking/Flashing Green of Death" หรือภาษาญี่ปุ่นเรียกว่า "D70の突然死" เป็นอาการที่พบมากใน D70 ล็อตแรกๆ เมื่อใช้งานไปสักระยะนึง บางคนก็บอกว่าปีหน่อยๆ บางคนไม่กี่เดือนก็เจอ

เขาว่ากันว่า NIKON ซ่อมให้ฟรี ถึงแม้ว่าจะหมดประกันไปแล้ว

ทีแรกคิดว่าจะโทรไปถาม NIKS Thailand (ตัวแทนจำหน่าย Nikon ของไทย) แต่ไม่เอาดีกว่า ได้ยินชื่อเสียมาเยอะมาก (ประเภทซ่อมสามครั้งแล้วยังไม่หาย ฯลฯ) อีกอย่างกล้องตัวนี้ซื้อจากญี่ปุ่น ไม่ได้ซื้อกะเขา ยังไงเขาก็คงไม่ทำให้ฟรี

หิ้วกลับมาญี่ปุ่น เอาไปให้ศูนย์ Nikon Shinjuku เมื่อวาน เขาบอกว่าอาการนี้เป็นเพราะอุปกรณ์มันไม่ดี บางคนเจอแบตเจ๊งซ้ำเติมด้วย (เพราะกล้องมันดูดไฟจนหมด แล้วแบต Li-Ion เขาห้ามปล่อยให้ประจุหมดเกลี้ยงไม่งั้นจะชาร์จไม่เข้า - แบตบางตัวมีวงจรป้องกันไม่ให้คลายประจุจนหมดเองอยู่แล้ว แต่แบตของ D70 ไม่รู้เป็นไง) เขาเอาแบตเข้าไปตรวจสักพัก แล้วออกมาบอกว่าแบตปกติ

ตกลงเขาซ่อมให้ฟรี นัดรับกล้องวันที่ 22 แต่ถ้าเสร็จก่อนจะโทรมาบอก

ฟอนต์เจ๊งเพราะ sipXphone

หลายเดือนมานี้ ฟอนต์ภาษาไทยที่ IE ใช้ขณะเขียน BLOG บน BlogSpot นี้หน้าตาประหลาดๆ ไม้เอกก็แสดงเป็นรูปกรอบสี่เหลี่ยม

พยายามหาดูว่าเกิดอะไรขึ้น เข้าไปดูในการตั้งค่า Font ของ IE พบว่า มีการเลือกใช้ Lucida Sans TypeWriter สำหรับตัวอักษรความกว้างคงที่ภาษาไทย

งงว่าฟอนต์นี้มาจากไหน ไปเปิดเครื่องอื่นก็มีเหมือนกัน แต่ไม่ยักไปโผล่ใน Font ของ IE เหมือนเครื่องนี้

ดูดีๆ พบว่า .TTF ของฟอนต์นี้ บนเครื่องนี้เป็น link ไปยังไฟล์ .TTF ในโฟลเดอร์ของ sipXphone (แปลว่าฟอนต์จริงๆโดน sipXphone เขียนทับไปซะแล้ว ?)

จัดการ uninstall sipXphone ซะ ทุกอย่างใน IE ก็กลับคืนสู่สภาวะปกติ

ลงเอยด้วย Ubuntu 5.1-amd64

ต่อจากเรื่องวานนี้ เมื่อจำเป็นต้องใช้ Linux 64-bit #1 (ฉบับ Kanotix)

เช้านี้ไปเอา ubuntu-5.10-install-amd64.iso มาลองดู พบว่า Boot ได้ (ทั้งๆที่ grub เหมือนกัน) และก็ติดตั้งได้ดีไม่ปัญหา

  1. Boot จาก CD แบ่ง Partition ติดตั้งหน่อยๆ

  2. Reboot ติดตั้งต่อ (ลง Package เพิ่มเติม)

  3. top ดู โอเคเห็นหน่วยความจำครบ 6GB แต่เห็น CPU แค่ตัวเดียว !

  4. เข้า GNOME มีหน้าจอบอกมาให้ Update โปรแกรมบางตัว ก็ปล่อยให้ทำไป

  5. ติดตั้ง Kernel แบบ SMP (linux-image-2.6.12-10-amd64-k8-smp) เดิมหลังติดตั้งเสร็จจาก CD + update จะเป็น linux-image-2.6.12-10-amd64-generic ไม่มีของ Xeon มีแต่ของ K8 ใช้ K8 ไปก่อนก็แล้วกัน

  6. Reboot ใหม่ เห็น CPU ครบ 4
    top - 10:46:30 up 21 min,  3 users,  load average: 0.89, 0.67, 0.35
    Tasks:  98 total,   1 running,  97 sleeping,   0 stopped,   0 zombie
    Cpu0  :  0.5% us,  0.3% sy,  0.0% ni, 98.8% id,  0.4% wa,  0.0% hi,  0.0% si
    Cpu1  :  0.6% us,  0.3% sy,  0.0% ni, 98.9% id,  0.2% wa,  0.0% hi,  0.0% si
    Cpu2  : 27.1% us,  0.3% sy,  0.0% ni, 72.4% id,  0.2% wa,  0.0% hi,  0.0% si
    Cpu3  :  0.9% us,  0.5% sy,  0.0% ni, 94.7% id,  3.8% wa,  0.0% hi,  0.0% si
    Mem:   6142836k total,   575304k used,  5567532k free,    18108k buffers
    Swap: 11866104k total,        0k used, 11866104k free,   366500k cached
    

ลองเอา JDK รุ่น 64-bit มาติดตั้ง (jdk1.5.0_06) แล้วแกล้งเรียกให้ใช้หน่วยความจำเยอะๆดู

# jdk1.5.0_06/bin/java -Xmx3000M -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_06-b05, mixed mode)
ถ้าลองแบบเดียวกันนี้กับเครื่อง Linux 32-bit และ JDK 32-bit จะเป็น
# jdk1.5.0_06/bin/java -Xmx2000M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
เห็นใน cat /proc/cpuinfo มีเพิ่มขึ้นมาอีก 4 บรรทัด
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:
บางบรรทัดไม่รู้มากับ Kernel ใหม่ๆ หรือว่าขึ้นเฉพาะกรณี 64-bit ต้องลอง Up Kernel เครื่องเก่าๆมาเปรียบเทียบดู

เพิ่มเติม

นึกได้ว่ามีเครื่อง Linux ค่อนข้างใหม่อีกเครื่อง เป็น Pentium-D ใช้ Kernel 2.6.12 เหมือนกัน แต่เป็นแบบ 32-bit ได้ผลแบบนี้

# cat /proc/cpuinfo 
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel(R) Pentium(R) D CPU 3.00GHz
stepping        : 4
cpu MHz         : 3000.508
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca 
                  cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht 
                  tm pbe nx lm pni monitor ds_cpl est cid cx16 xtpr
bogomips        : 5947.39
ไม่มี 4 บรรทัดที่เพิ่มมาของข้างบน อาจจะคอมไพล์ด้วยตัวเลือกไม่เหมือนกัน หรือไม่ก็มีเฉพาะ Kernel 64-bit จริงๆ สักวันเครื่องนี้อาจจะต้องเอามาลง Linux 64-bit บ้าง

เปิด X จอยังเบี้ยวๆ แต่คงไม่แก้แล้วเพราะเดี๋ยวย้ายไปห้องเครื่องก็ไม่ใช่จอนี้อยู่ดี

Wednesday, December 14, 2005

เมื่อจำเป็นต้องใช้ Linux 64-bit #1 (ฉบับ Kanotix)

จำเป็นต้องเซ็ต Linux บนเครื่อง Server ใหม่ Dual Xeon 3.8GHz+6GB RAM ลองเอาแผ่น KNOPPIX 4.0 DVD บูทดู ปรากฏว่าเห็นหน่วยความจำแค่ประมาณ 3.5GB คิดว่าคงเป็นเพดานของ Linux 32-bit แล้ว

นึกๆอยู่ว่าจะลอง Linux 64-bit ตัวไหนดี Otto บอกว่าให้ลอง KANOTIX-64-2005-03.iso รอดาวน์โหลดจนเสร็จ เขียนใส่แผ่น บูทปุ้บ มันบอกว่า

Error 28 Selected item cannot fit into memory 

ดูเหมือนจะเป็น bug ของ grub ซึ่งในเมนู grub เองก็บอกว่าเห็นแค่ 3.5GB

คงต้องหาตัวอื่น(ที่ไม่ใช้ grub?)มาลองต่อไป :(

ลองเลือกเมนู Memtest86 ของ KANOTIX-64 ตัวนี้เรียกได้ ระหว่างทำงานก็เห็นครบ 6GB แฮะ

Saturday, December 03, 2005

GIPS/ON2 ผูกขาดหมดแล้ว ?

เทคโนโลยีส่งเสียงผ่านเน็ต: GIPS
ลูกค้าใหญ่: Skype, MSN Messenger, Google Talk, ...

เทคโนโลยีส่งภาพผ่านเน็ต: ON2
ลูกค้าใหญ่: Skype, Flash 8, SONY, BBC, ...

Friday, December 02, 2005

นึกว่าตาฝาด หลุดออกมาได้ยังไง

พรุ่งนี้จะกลับเมืองไทย เข้าไปเช็คเว็บ DTAC ดูสักหน่อยว่าเหลือเงินเท่าไร กลัวเดี๋ยวลงจากเครื่องบินโทรตามคนมารับไม่ได้ วุ่นวายน่าดู

หมดเวลาไปแล้วจริงๆ (1 วัน) แต่เติมเงินตอนนี้คงจะยังทัน ? ดูดีๆ อ้าว ใช้ได้ถึงวันที่ 31 พฤศจิกายน ! ก็ไม่มีวันหมดอายุดิ :) อีกกี่ปีกี่ชาติวันนี้คงมาไม่ถึง

ชักอยากกลับไปทำระบบพวกนี้ให้แทน ปล่อยให้หลุดออกมาได้ยังไงเนี่ย