<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.9.1" -->
<rss version="0.92">
<channel>
	<title>SpaLinux.com</title>
	<link>http://spalinux.com</link>
	<description>Resources for Relaxing Linux System Administrators</description>
	<lastBuildDate>Sun, 07 Mar 2010 16:03:00 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>เพิ่มดิสก์ใหม่บน Solaris 10</title>
		<description><![CDATA[เช่นเดียวกับระบบปฏิบัติการ OS อื่นๆ เมื่อมีการเพิ่มดิสก์ก้อนใหม่เข้าไปในเครื่องที่ติดตั้ง Solaris 10 ต้องมีกระบวนการ หรือต้องรันคำสั่งก่อนที่จะเริ่มใช้ดิสก์ก้อนใหม่ได้

ในบทความนี้ทดสอบการเพิ่มดิสก์ก้อนใหม่ 1 ก้อน บน Solaris 10 (x86)
ใช้คำสั่ง format เพื่อดูว่า Solaris มองเห็นดิสก์อะไรบ้าง
# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
       0. c1t0d0 &#60;DEFAULT cyl 4866 alt 2 hd 255 sec 63&#62;
          /pci@0,0/pci1000,30@10/sd@0,0
       1. c1t1d0 &#60;DEFAULT cyl 4867 alt 2 hd 255 sec 63&#62;
          /pci@0,0/pci1000,30@10/sd@1,0
Specify disk (enter its number):
ดิสก์ก้อนใหม่ที่เพิ่มเข้ามาคือดิสก์หมายเลข 1 &#8220;c1t1d0&#8243;
พิมพ์หมายเลขของดิสก์แล้วกด [Enter] เพื่อเข้าสู่โหมดจัดการของดิสก์ก้อนที่ระบุ
Specify [...]]]></description>
		<link>http://spalinux.com/2010/03/add_new_disk_on_solaris_10</link>
			</item>
	<item>
		<title>ขนาดหน่วยความจำกับการติดตั้ง Solaris 10_u8 x86</title>
		<description><![CDATA[ช่วงนี้รับงานที่ต้องใช้ Solaris 10 เป็นหลัก เลยติดตั้ง Solaris ใน VMware Server เพื่อไว้เป็นเครื่องทดสอบคำสั่ง และโปรแกรมต่างๆ
บทความนี้ขอนำประสบการณ์มาแชร์ให้กัน เผื่อเป็นประโยชน์สำหรับผู้ติดปัญหาการติดตั้ง Solaris 10 x86 เหมือนผู้เขียน

ในที่นี้ใช้ไฟล์ iso (sol-10-u8-ga-x86-dvd.iso) จากเว็บไซต์ sun.com เพื่อติดตั้งบน VMware Server
คอนฟิก guest ที่สร้างไว้ บน VMware Server เวอร์ชั่น 1.0.10 คือ
Guest Operating System: Solaris 10 64-bit
Memory 512 MB
Disk 37.3 GB
พยายามติดตั้งอยู่นานก็ไม่สามารถติดตั้งได้ ขึ้น error
SunOS Release 5.10 Version Generic_141445-09 32-bit
Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
Use is [...]]]></description>
		<link>http://spalinux.com/2010/03/memory_size_with_solaris_10_u8_x86_installation</link>
			</item>
	<item>
		<title>รันโปรเซสเป็น user อื่น</title>
		<description><![CDATA[เป็นวิธีง่ายๆ เพื่อให้ผู้ใช้ root สามารถรันโปรเซสหรือโปรแกรมบน Linux/UNIX ภายใต้สิทธิหรือ permission ผู้ใช้ user อื่นบนเครื่องเดียวกัน
คำสั่งที่ใช้คือ su ตามด้วยออปชั่น &#8216;-c&#8217; รูปแบบการใช้คำสั่งคือ
# su - &#60;user_name&#62; -c "&#60;command&#62;"
ตัวอย่าง root รันคำสั่ง id ภายใต้สิทธิผู้ใช้ชื่อ user1
# su - user1 -c "id"
uid=501(user1) gid=100(users) groups=100(users)
ข้อมูลอ้างอิง

&#8217;su&#8217; man page

]]></description>
		<link>http://spalinux.com/2010/03/run_process_as_another_user</link>
			</item>
	<item>
		<title>คอนฟิก MySQL Replication</title>
		<description><![CDATA[บทความนี้จะอธิบายวิธีการคอนฟิก Replication ของ MySQL เพื่อทำการ replicate ข้อมูลในฐานข้อมูล (database) จากเครื่องหลัก (Master) ไปยังเครื่องสำรอง (Slave) ได้
หลังจากที่คอนฟิก Replication ถูกต้องเรียบร้อย เมื่อมีการเปลี่ยนแปลงข้อมูลในฐานข้อมูลบนเครื่องหลัก (Master) ไม่ว่าจะเป็นการ INSERT, UPDATE, DELETE หรือ แก้ไข table การเปลี่ยนแปลงนี้จะถูกส่งต่อ (replicate) ไปยังเครื่องสำรอง (Slave) โดยอัตโนมัติ
การคอนฟิก Replication เป็นการป้องกันการเสียหาย ถ้าเครื่องหลักมีปัญหา ข้อมูลที่ถูกเก็บไว้ในเครื่องสำรอง ก็ยังสามารถใช้งานได้

ระบบทดสอบ
ตัวอย่างในบทความนี้ จะทดสอบบนเครื่องสองเครื่องที่ติดตั้ง CentOS 5.4 และ MySQL 5.1.43 เรียบร้อยแล้ว
เครื่อง Master

ip: 192.168.1.1
hostname: centos54-a

เครื่อง Slave

ip: 192.168.1.2
hostname: centos54-b

ตัวอย่างการใช้คำสั่ง rpm เพื่อตรวจสอบเวอร์ชั่นของ MySQL ที่ติดตั้ง
[root@centos54-a ~]# rpm -qa &#124; [...]]]></description>
		<link>http://spalinux.com/2010/02/configure_mysql_replication</link>
			</item>
	<item>
		<title>การแสดงผล Error ของ PHP</title>
		<description><![CDATA[การตรวจสอบข้อผิดพลาด (error) เวลาพัฒนาโปรแกรม หรือเมื่อรันโปรแกรม ถือว่ามีความสำคัญอย่างหนึ่ง เพื่อที่จะทำให้ระบบทำงานได้อย่างถูกต้อง
สำหรับการพัฒนา Web Application ด้วย PHP การตรวจสอบหรือแสดงผลข้อผิดพลาด สามารถทำได้ สองวิธีหลักๆ คือ

แสดงข้อผิดพลาด (error) ผ่านหน้าเว็บ
เก็บข้อผิดพลาดไว้ในไฟล์ (log file) เพื่อการตรวจสอบ


วิธีแรก การแสดงผลข้อผิดพลาด ผ่านหน้าเว็บเมื่อรันโปรแกรมเลย ถือว่ามีความสะดวกสบายมาก คือเมื่อโปรแกรมเมอร์พัฒนาโปรแกรมไป รันผ่านหน้าเว็บ ก็สามารถเห็นข้อผิดพลาดที่เกิดขึ้นได้เลย ว่าเกิดปัญหาที่ไหน ไฟล์อะไร บรรทัดเท่าไร
แต่จะมีข้อเสียอย่างมาก หากปล่อยให้มีการแสดงผลข้อผิดพลาดนี้ แก่ผู้ใช้งานทั่วไป เพราะอาจแสดงรายละเอียดโปรแกรมมากเกินไป ซึ่งอาจทำให้เปิดเผยช่องโหว่ของโปรแกรมได้
คำแนะนำคือ ในขณะที่กำลังพัฒนาโปรแกรม (development) หรือบนเครื่องเซิร์ฟเวอร์สำหรับทดสอบโปรแกรม เราอาจเปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บเลย เพื่อสะดวกต่อโปรแกรมเมอร์ ในการตรวจสอบ
แต่เมื่อไรก็ตาม ระบบเริ่มใช้งานจริง (production) แนะนำให้ปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ ให้เก็บข้อผิดพลาดไว้ในแบบที่ 2 คือเก็บไว้ในไฟล์ (log file) แล้วดูข้อผิดพลาดจากในไฟล์
ตัวอย่างข้อผิดพลาดในการเขียน PHP เช่น พิมพ์เครื่องหมาย : แทนที่เป็น ;
$ cat /var/www/html/test.php
&#60;?php
print [...]]]></description>
		<link>http://spalinux.com/2010/02/configure_display_php_errors</link>
			</item>
	<item>
		<title>การใช้งาน DRBD เบื้องต้น</title>
		<description><![CDATA[จากบทความ ติดตั้งและคอนฟิก DRBD  เราได้คอนฟิกเป็นแบบ Single-primary mode คือ ณ เวลาใดเวลาหนึ่ง มีเครื่องเดียวเท่านั้นที่สามารถ อ่าน เขียน ข้อมูลได้
ดังนั้นขณะที่เครื่องที่ 1 (centos54-a) ทำหน้าที่เป็น primary ของดิสก์ drbd0 อยู่  เครื่องที่ 2 (centos54-b) จะไม่สามารถ mount ดิสก์ drbd0 นี้ขึ้นมาใช้งานได้
ในบทความนี้จะแสดงการทดสอบใช้คำสั่งเพื่อเปลี่ยนโหมด Primary, Secondary ระหว่างเครื่องทั้งสอง
ตรวจสอบสถานะบนเครื่อง centos54-a
[root@centos54-a ~]# service drbd status
drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   [...]]]></description>
		<link>http://spalinux.com/2010/02/basic_using_drbd</link>
			</item>
	<item>
		<title>ติดตั้งและคอนฟิก DRBD</title>
		<description><![CDATA[DRBD (Distributed Replicated Block Device) เป็นโปรแกรมเพื่อใช้ในการ replicate ข้อมูลดิสก์ที่อยู่คนละเครื่องกัน ผ่านทางเน็ตเวิร์ก โดยจะทำในระดับ block ของดิสก์
เมื่อมีการเปลี่ยนแปลงข้อมูลที่อยูในดิสก์เครื่องหนึ่ง (primary) การเปลี่ยนแปลงนั้นจะถูก replicate ไปยังอีกเครื่อง (secondary) โดยอัตโนมัติ
DRBD ประกอบด้วยสองส่วนคือ
1. Kernel module &#8211; DRBD ทำหน้าที่ใน kernel โดยจะสร้าง virtual block device คั่นกลางระหว่าง physical disk กับ filesystem ที่สร้างอยู่ ไม่ว่าจะเป็น ext3, ext4, xfs
2. User space administration tools &#8211; เป็นโปรแกรมที่ช่วยในการจัดการ DRBD ได้ง่ายขึ้น หลักๆ จะเป็น drbdadm
ในบทความนี้จะแสดงการติดตั้งโปรแกรม DRBD และคอนฟิกเป็นแบบ Single-primary mode คือ [...]]]></description>
		<link>http://spalinux.com/2010/02/install_and_configure_drbd</link>
			</item>
	<item>
		<title>ทดสอบ FOREIGN KEY Constraints ใน MySQL</title>
		<description><![CDATA[บทความนี้ต่อจาก การสร้าง FOREIGN KEY Constraints ใน MySQL เพื่อทดสอบการ เพิ่ม แก้ไข ลบ ข้อมูล โดยในเวลาเริ่มแต่ละหัวข้อจะใช้ข้อมูลนี้เป็นหลัก
mysql&#62; SELECT * FROM groups;
+----------+------------+
&#124; group_id &#124; group_name &#124;
+----------+------------+
&#124;      101 &#124; Accounting &#124;
&#124;      102 &#124; Engineer   &#124;
&#124;      103 &#124; IT         &#124;
&#124;      104 &#124; Manager    &#124;
+----------+------------+
4 rows in set (0.00 sec)
mysql&#62; SELECT * FROM users;
+---------+----------+-----------+
&#124; user_id &#124; group_id &#124; user_name &#124;
+---------+----------+-----------+
&#124;     501 &#124;      101 &#124; [...]]]></description>
		<link>http://spalinux.com/2010/01/testing_mysql_foreign_key_constraints</link>
			</item>
	<item>
		<title>การสร้าง FOREIGN KEY Constraints ใน MySQL</title>
		<description><![CDATA[ส่วนใหญ่แล้วการออกแบบฐานข้อมูลจะมีการใช้บางฟิลด์ข้อมูล เพื่อเชื่อมโยงความสัมพันธ์ระหว่าง table ทำให้ต้องมีการคำนึงถึงเวลา เพิ่ม แก้ไข หรือ ลบฟิลด์ที่ใช้เชื่อมนั้น ไม่เช่นนั้นข้อมูลในฐานข้อมูลอาจมีปัญหาได้
MySQL สนับสนุนคุณสมบัติการใช้ FOREIGN KEY Constraints เพื่อแก้ไขปัญหานี้ได้ แต่ต้องใช้ table เป็นแบบ InnoDB ในบทความนี้ขออธิบายปัญหาที่เกิดขึ้น พร้อมยกตัวอย่างวิธีการใช้ FOREIGN KEY Constraints เพื่อป้องกันปัญหาได้

ตัวอย่างเช่น ต้องการสร้างฐานข้อมูลสำหรับเก็บชื่อ users และแต่ละคนเป็นสมาชิกได้ 1 กลุ่มจากตาราง groups เริ่มต้นออกแบบ table ง่ายๆ ได้ดังนี้
mysql&#62; CREATE TABLE groups (
 group_id     INT UNSIGNED NOT NULL,
 group_name   VARCHAR(255),
 PRIMARY KEY    (group_id)
);
mysql&#62; CREATE TABLE users (
 user_id      INT UNSIGNED NOT NULL,
 group_id     INT UNSIGNED [...]]]></description>
		<link>http://spalinux.com/2010/01/creating_mysql_foreign_key_constraints</link>
			</item>
	<item>
		<title>วิธีการใช้คำสั่ง wget</title>
		<description><![CDATA[wget เป็นโปรแกรมที่ใช้เพื่อดาวน์โหลดไฟล์จากเว็บไซต์ได้ ในรูปแบบ text console วิธีการใช้งานก็ง่ายคือรันคำสั่ง wget ตามด้วย URL ที่ต้องการดาวน์โหลด ผลลัพธ์ที่ได้จะถูกบันทึกเป็นไฟล์ของเว็บเพจหน้านั้นๆ

รูปแบบการใช้งาน
$ wget [option]... [URL]...
ตัวอย่างเช่น ต้องการดาวน์โหลดเว็บเพจหน้าแรกของ www.google.co.th
$ wget 'http://www.google.co.th'
--13:52:23--  http://www.google.co.th/
           =&#62; `index.html'
Resolving www.google.co.th... 72.14.203.147, 72.14.203.103, 72.14.203.104, ...
Connecting to www.google.co.th&#124;72.14.203.147&#124;:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
    [  &#60;=&#62;                                                                                ] 6,726         11.96K/s
13:52:24 (11.96 KB/s) - `index.html' saved [6726]
จากตัวอย่าง ผลลัพธ์ที่ได้จะถูกบันทึกเป็นชื่อ index.html
หมายเหตุ แนะนำให้ใส่เครื่องหมายคำพูด &#8216;  คลอบ URL เพราะบางตัวอักษรอาจมีความหมายใน [...]]]></description>
		<link>http://spalinux.com/2010/01/using_wget</link>
			</item>
</channel>
</rss>
