โอเพนซอร์สซอฟต์แวร์และวงจรเชิงบวกสมบูรณ์

ไม่คิดว่าจะเขียนเรื่องนี้เพราะเรื่องโอเพนซอร์สซอฟต์แวร์และวงจรเชิงบวก สมบูรณ์ หรือ Completeness Positive Cycle for Open Source Software นี้เป็นเรื่องที่เข้าใจได้ยาก ออกจะขวางโลกธุรกิจ ขวางโลกในมุมมองของคนในธุรกิจซอฟต์แวร์พอสมควร เพราะธุรกิจซอฟต์แวร์ที่เอาซอฟต์แวร์โอเพนซอร์สไปใช้หรือนำไปจำหน่ายมักเน้น ไปในแนวทางธุรกิจในแบบที่เห็นแก่ตัว บางคนก้อเรียกให้สวยหรูว่ามันเป็น Business Model อย่างหนึ่ง ซึ่งผมเองไม่ค่อยเห็นด้วยสักเท่าไร หากคุณยังนึกภาพไม่ออกผมจะยกตัวอย่างง่ายๆ ให้ทำความเข้าใจกัน
สมมุติ ว่ามีชุมชนหนึ่งหรือนักพัฒนากลุ่มหนึ่งพัฒนาซอฟต์แวร์แล้วเปิดเป็นโอเพน ซอร์ส (ใช้ License แบบโอเพนซอร์ส) แต่มีกลุ่มคนอีกกลุ่มหนึ่งที่ไม่ได้เกี่ยวข้องอะไรกับชุมชนนั้น หยิบเอาซอฟต์แวร์นั้นไปเปลี่ยนชื่อและจำหน่าย โดยที่ชุมชนและกลุ่มนักพัฒนาก้อยังพัฒนาอยู่เรื่อยๆ โดยไม่รู้เรื่องอะไรเลย และกลุ่มคนกลุ่มนั้นก้อไม่คิดที่จะซัพพอร์ทชุมชนและกลุ่มนักพัฒนาเลยแม้แต่ น้อย หากซอฟต์แวร์มีปัญหาก้อจะโยนกลองให้ชุมชนและกลุ่มนักพัฒนาแก้ไขกันต่อไป สิ่งเหล่านี้เกิดขึ้นจริงและน่าละอายมากที่คนไทยเราก้อทำธุรกิจหากินกับ ชุมชนและกลุ่มนักพัฒนาเช่นนี้เหมือนกับตัวอย่าง
น่าเสียดายที่องค์กร ที่ทำหน้าที่ผลักดันเรื่องโอเพนซอร์สในบ้านเรา ไม่ว่าจะเป็น องค์กรด้านการศึกษา และ องค์กรด้านภาครัฐ ไม่ได้ใส่ใจในเรื่องของความสำคัญและคุณค่าของซอฟต์แวร์มากนัก ทำให้ซอฟต์แวร์โอเพนซอร์สในความคิดของบ้านเราเป็นซอฟต์แวร์ทางเลือกหรือ ซอฟต์แวร์ที่ใช้งานได้บ้างไม่ได้บ้าง ซึ่งความคิดแบบนี้ส่งผลเสียแต่ชุมชนและนักพัฒนาซอฟต์แวร์โอเพนซอร์สโดยตรง เอาล่ะโอเพนซอร์สซอฟต์แวร์และวงจรเชิงบวกสมบูรณ์เป็นอย่างไร ผมขออธิบายสั้นๆ และไม่ขอลงในรายละเอียดมากนักนะครับ เรามาเริ่มจากจุดเริ่มต้นกันอีกครั้งหนึ่งที่มีชุมชนหนึ่งหรือนักพัฒนากลุ่ม หนึ่งพัฒนาซอฟต์แวร์แล้วเปิดเป็นโอเพนซอร์ส โดยชุมชนและนักพัฒนาซัพพอร์สซึ่งกันและกันโดยการร่วมกันพัฒนา หาบัก แก้บัก สร้างองค์ความรู้ ฯลฯ นวตกรรมใหม่ๆ จะเกิดขึ้นจากชุมชน เนื่องจากความต้องการของแต่ละคนไม่เหมือนกันทำให้ซอฟต์แวร์นั้นต้องมีการ พัฒนาอยู่เสมอ นวตกรรมใหม่นี้ถือว่ามีเจ้าของร่วมกันคือชุมชนและนักพัฒนา หากเรามองในรูปแบบวงกลมเราจะได้วงกลมที่ซ้อนทับกัน Continue reading โอเพนซอร์สซอฟต์แวร์และวงจรเชิงบวกสมบูรณ์

ติด RAID10 ให้ Ubuntu

ค้างเรื่อง RAID 10 มาระยะนึงแล้วตั้งใจว่าจะเขียนตั้งนานละไม่ได้เขียน เรื่องของเรื่องคือ Ubuntu เวลาติดตั้ง RAID มักจะลงเอยด้วยการ boot ไม่ขึ้นและติดตั้งได้เพียง RAID 0,1 และ 5 เท่านั้น เรียกได้ว่าเป็นอาการหลักเลยล่ะ ลองไปค้นๆ พบคำตอบที่น่าสนใจเลยได้โอกาสมาเขียนเล่าสู่กันฟัง สักครั้ง ปัญหาที่เขาพบก้อคล้ายๆ กับปัญหาที่ผมพบเช่นกันคือ ติดตั้งไปแล้ว boot ไม่ได้แต่วิธีการแก้ไขมันมีครับ คือใช้ Live CD ช่วยอีกแรง อันดับแรกมาวางแผน partition กันก่อน ใช้โปรแกรมจัดการ partition ง่ายๆ อย่าง cfdisk (มันใช้ง่ายอ่ะนะ) สร้าง partition ขนาด 50 MB ก่อนใน ฮาร์ดดิสก์ลูกแรก (ลืมบอกไปว่ามี 4 ลูก) เป็น /boot จากนั้นสร้าง partition ที่เหลือเป็น RAID อ้ออย่าลืมใส่ swap ขนาด 1 GB ไว้ทุกๆ ฮาร์ดดิสก์ เพื่อความสามารถในการจัดการ SWAP เราจะได้โครงสร้าง partition ดังภาพ

จากนั้นติดตั้งโปรแกรมจัดการ RAID เพื่อตั้งค่า RAID อีกทีโดยใช้คำสั่ง

apt-get install mdadm

จากนั้นสร้าง RAID device ขึ้นมากำหนดให้เป็น raid10 โดยใช้คำสั่ง

mdadm -v --create /dev/md0 --level=raid10 --raid-devices=4 /dev/sda2 /dev/sdb1 /dev/sdc1 /dev/sdd1

จากนั้นสั่งสร้าง File System และ Format ก่อนเพราะตัวติดตั้งของ Ubuntu จะไม่เข้าใจว่ามันจพ Format Partition ยังไง ให้เราชิง Format มันก่อน และกำหนดให้เป็น XFS สาเหตุที่ใช้ XFS เพราะว่า File System แบบนี้มีประสิทธิภาพในการจัดการไฟล์ได้ดีกว่า ext3 จากนั้นสร้าง link สำหรับ RAID Device เพื่อให้ Ubuntu เข้าใจ เพราะ device md0 ที่เราสร้างจะหาไม่เจอตอนที่เราติดตั้ง Ubuntu ก้อเปลี่ยนเป็น sde ซะ เริ่มจากสั่งสร้าง XFS กันก่อน

mkfs.xfs /dev/md0

สร้าง link เพื่อบอกให้ตัวติดตั้งมองเห็น

ln /dev/md0 /dev/sde

จากนั้นติดตั้ง Ubuntu ได้เลยครับ กำหนดให้ /boot (sda1) ของเราเป็น ext3 นะครับ และตั้งค่า swap ให้ทุกๆ partition ที่เป็น swap สำหรับ partition อื่นๆ อย่าเลือกให้ reformat นะครับเพราะเราชิง format มันเป็น XFS ไปแล้ว จากนั้นเริ่มติดตั้งกันได้เลย หลังจากติดตั้งเสร็จให้ใช้ Live CD ต่อครับ มาติดตั้งโปรแกรมจัดการ RAID ให้ partition ที่เราติดตั้งกันต่อ เพราะมันจะมองไม่เห็น RAID ที่เราสร้างหลังจากที่เรา reboot และนี่คือตัวปัญหาที่มักจะพบกันบ่อย วิธีการติดตั้งโปรแกรมจัดการ RAID ให้คุณ chroot เข้าไปครับ แล้วติดตั้ง mdadm ด้วยคำสั่ง

mkdir /myraid
mount /dev/md0 /myraid
mount /dev/sda1 /myraid/boot
mount --bind /dev /myraid/dev
mount -t devpts devpts /myraid/dev/pts
mount -t proc proc /myraid/proc
mount -t sysfs sysfs /myraid/sys
chroot /myraid
apt-get install mdadm
exit

ทีนี้เราก้อ reboot เครื่องกันได้แล้ว อ้อมีคำสั่งที่น่าสนใจ อยู่นิดนึงว่า partition ไหนอยู่ใน ฮาร์ดดิสก้อไหนคำสั่งที่ใช้คือ

cat /proc/mdstat

นี่แหละครับ หากเกิดปัญหาแล้วต้องการ mount RAID จาก Live CD คุณต้องติดตั้ง mdadm ก่อนเพื่อจะสั่งให้ RAID ทำงาน ด้วยคำสั่งดังนี้

sudo su
apt-get install mdadm
mdadm --assemble /dev/md0

จากนั้นเราก้อ mount RAID ได้แล้ว อ่านเพิ่มเติม หากไม่เข้าใจ

โอเพนซอร์สไปทำไม เพื่อใคร เพราะอะไร?

มีคำถามหลายๆ อย่างที่ผมยกมาเป็นปัญหาแล้วหาคำตอบหรือหาเหตุผลมายืนยัน คำตอบและเหตุผลที่มีน้ำหนักไม่เอนเอียงไปในทางใดทางหนึ่ง สังคมโอเพนซอร์สไม่ได้มีเพียงกลุ่ม Geek ที่ชอบแกะเกา หรือคิดอะไรพิศดารแล้วสร้างหรือพัฒนาให้มันเป็นนวตกรรมใหม่ ในมุมมองของสังคมผู้ใช้ ก็มองในมุมมองที่แตกต่างกัน ผู้ใช้ไม่มีความคิดพิสดารอย่าง Geek แต่กลับนำเอาสิ่งที่ เหล่า Geek คิดค้นมาประยุกต์ใช้ และสร้างแรงกระตุ้นในกลุ่ม Geek ให้พัฒนาสิ่งใหม่ๆ ให้เกิดขึ้นอยู่ตลอดเวลา แล้วกลุ่ม Geek จะเปิดโค้ดทำไม? ทั้งๆ ที่สิ่งที่พวกเขาเหล่านั้นคิด และพัฒนาขึ้นเป็นสิทธิของเขาและเป็นผลงานของเขาเอง ? แล้วโอเพนซอร์สเพื่อใคร ? ในบทความนี้เราจะมาหาคำตอบร่วมกัน หากท่านอ่านแล้วมีข้อโต้แย้ง หรือคำแนะนำ เขียนแสดงความคิดเห็นได้ในตอนท้ายของบความนี้นะครับ
ย้อนไปเรื่อง โอเพนซอร์ทำไม เพื่อใคร ? การเปิดโค้ดให้ผู้ใช้ (End User) ? อืมมม คงไม่ใช่เรื่องปกติ ที่ผู้ใช้จะเอาไปพัฒนาต่อเองได้แน่นอน ผมคิดอย่างนั้น หากเปิดโค้ดให้นักพัฒนาอิสระล่ะ อืมมม มีความเป็นไปได้สูงที่จะมีการร่วมมือกันพัฒนา (Contribute) มีอีกประเด็นหนึ่งคือเปิดโค้ดเพื่อการตลาดและประชาสัมพันธ์ ประเด็นนี้เดี๋ยวมาว่ากันทีหลัง คุณคิดว่า กลุ่ม Geek ที่พัฒนาซอฟต์แวร์แล้วเปิดโค้ดให้คนอื่นเข้ามาแก้ไข พัฒนา เอาไปใช้งาน เอาไปต่อยอด ฯลฯ เขาทำไปทำไม ? มีใครให้เหตุผลได้บ้าง ผมมีคำตอบและเหตุผลหลายๆ อย่างมาเล่าสู่กันฟัง
1. เพื่อมนุษยชาติบนใบโลกนี้
2. หาคนร่วมพัฒนามีหลายหัวดีกว่ามีอยู่ไม่กี่หัว
3. สร้างสาวกให้สาวกใช้จนติดงอมแงมเลิกใช้ไม่ได้
4. อยากจารึกชื่อไว้บ้าง
5. อยากรวย
ถ้า คุณมีความสามารถในการพัฒนาซอฟต์แวร์ แล้วคิดว่าเปิดโค้ดให้กับชุมชนหรือผู้ใช้ทั่วโลกได้หยิบจับเอาไปใช้กัน คุณคิดว่าคุณเปิดโค้ดเพราะเหตุผลอะไร ? Continue reading โอเพนซอร์สไปทำไม เพื่อใคร เพราะอะไร?

ประยุกต์ Wildcard DNS กับ Apache

คราวที่แล้วเขียนเรื่อง Wildcard DNS record ไป เพื่อบอกให้ Bind รู้ว่าอะไรที่เกี่ยวข้องหรือตรงกับเงื่อนไขให้อ้างอิง domain นั้นโดยตรง สำหรับ How-To ครั้งนี้จะมาเล่าวิธีกการประยุกต์ใช้? Wildcard DNS และการตั้งค่า VirtualHost เพื่อรองรับการเรียกผ่าน subdomain ใดๆ ใครจำเรื่อง DNS Wildcard ไม่ได้ลองมาพิจารณาดู record ดังนี้

example.com.        A    10.11.12.13
*.example.com.    CNAME    example.com.

หาก เรา dig xyz.example.com เราจะพบว่า DNS จะบอกว่า IP เป็น 10.11.12.13 คือ CNAME ของ example.com นั่นเอง คราวนี้หากเราจะเพิ่ม VirtualHost ให้ Apache จะทำได้อย่างไร และต้องการให้ซัพพอร์ทในทุกๆ subdomain มาลองดูวิธีกันนะครับอันดับแรก เริ่มจากการตั้งค่า DNS กันก่อน ในโซนไฟล์ให้เพิ่ม wildcard สำหรับ domain ดังนี้

*.example.com.    IN      A       192.168.1.1

ผม ยกตัวอย่าง domain ที่ชื่อ example.com นะครับ เมื่อกำหนด wildcard ให้กับ DNS แล้วนั่นหมายความว่า subdomain ใดๆ ที่อยู่ภายใต้โดเมน example จะถูกกำหนดเป็น IP 192.168.1.1 ทั้งหมด มาตั้งค่า VirtualHost ให้กับ Apache กันต่อครับ ในไฟล์ VirtualHost ให้เพิ่ม ServerAliase เป็น *.example ดังตัวอย่าง

<VirtualHost *>
ServerName  www.example.com
ServerAlias *.example.com
DirectoryIndex index.html
DocumentRoot /home/www/www.example.com/htdocs
....
</VirtualHost>

จาก ตัวอย่างข้างต้น subdomain ใดๆ ที่อยู่ภายใต้โดเมน example จะมี DocumentRoot อยู่ที่ /home/www/www.example.com/htdocs ตัวอย่างเช่น หากเราเปิด xxx.example.com ก้อจะเปิดไฟล์ index ที่อยู่ในไดเรคทอรี /home/www/www.example.com/htdocs หากต้องการแยก subdomain อยู่คนละ directory สามารถกำหนดเพิ่มได้ในส่วน VirtualHost เรื่อยๆ หากต้องการตั้งค่า VirtualHost เพียงครั้งเดียวเราสามารถใช้ mod_rewrite เพื่อสร้าง redirect ไปยังไดเรคทอรีใดๆ ที่อยู่ใน DocumentRoot ได้ ตัวอย่างเช่น
webmail.example.com??? ชี้ไปที่ http://www.example.com/webmail
scm.example.com??? ชี้ไปที่ http://www.example.com/scm
dm.example.com??? ชี้ไปที่ http://www.example.com/dm
download.example.com??? ชี้ไปที่ http://www.example.com/download
การตั้งค่า ใน VirtualHost เพื่อ redirect ในแต่ละ request ให้เพิ่มข้อมูลดังนี้

RewriteEngine on
RewriteCond %{http_host} .
RewriteCond %{http_host} !^www.example.com [NC]
RewriteCond %{http_host} ^([^.]+)\.example.com [NC]
RewriteRule ^(.*) http://www.example.com/%1/ [R=301,L,QSA]

ใน กรณีที่เราเรียกใช้ subdomain ที่ไม่มีไดเรคทอรีรองรับ เช่น dummy.example.com จะต้องมีไดเรคทอรี dummy อยู่ที่ DocumentRoot หากไม่มีจะพบข้อความ Error 404 ซึ่งเป็นค่า default หากต้องการกำหนด Error Page เฉพาะในแต่ละ VirtualHost สามารถเพิ่มไฟล์แสดงผล Error ในแบบต่างๆ ของเราลงไปได้

Alias /error/ "/home/www/www.example.com/htdocs"
ErrorDocument 400 /error/invalidSyntax.html
ErrorDocument 401 /error/authorizationRequired.html
ErrorDocument 403 /error/forbidden.html
ErrorDocument 404 /error/fileNotFound.html
ErrorDocument 405 /error/methodNotAllowed.html
ErrorDocument 500 /error/internalServerError.html
ErrorDocument 503 /error/overloaded.html

เท่านี้คุณก็สามารถตั้งค่า DNS แบบ Wildcard เพื่อเชื่อมต่อกับ Apache VirtualHost ได้แล้ว ลองนำไปประยุกต์ใช้ดูนะครับ

ทำ Ubuntu Repository ใช้เองแบบดูดีหน่อย

สืบเนื่องมาจากโครงการพัฒนาลีนุกซ์ฉบับกระเป๋า เมื่อปีที่แล้ว เขียนโครงการไว้นานทำออกมาได้ 2 release แล้วเลิกทำครับ เพราะเข้าใจว่าการ remaster มาผิดทาง เอาเป็นว่าไม่ต้องพูดถึงมันก้อแล้วกันครับ หลายเดือนที่ผ่านมาได้ทดลองประกอบ Ubuntu จนพอเข้าใจบ้างแล้วว่าจะทำ ลีนุกซ์ในแบบฉบับของผมทำได้ยังไง เอาละมาถึงข้อใหญ่ในการทำ repository เพื่อการสนับสนุนซอฟต์แวร์ใหม่ๆ ใน โครงการพัฒนาลีนุกซ์ฉบับกระเป๋า กันครับ จากโครงร่างของ repositry ของ Advance Packaging Tool (APT) ทำให้ทราบว่าการแบ่ง รุ่นในแต่ละเวอร์ชั่นทำโดยการสร้างฐานข้อมูลของ Package ในไดเรคทอรี dists ซึ่งใน dists นี้ก้อจะมี ไดเรคทอรีที่เป็นชื่อแต่ละเวอร์ชั่นอยู่ ในนั้นก้อจะมีไฟล์ฐานข้อมูล Package อยู่ เอาล่ะ คราวนี้ผมก้อแก้ปัญหาในเรื่อง repository กลาง และ การซัพพอร์ทในแต่ละเวอร์ชั่นของโครงการพัฒนาลีนุกซ์ฉบับกระเป๋าได้แล้ว
แนวความคิดในการทำ repository แบบนี้สามารถประยุกต์ใช้ในองค์กรได้ เช่น ฝ่าย IT สามารถทำ repository เล็กๆ เก็ยไฟล์โปรแกรมใหม่ๆ ที่ผ่านการทดสอบแล้วว่าใช้ได้ดี หรือ จัดทำ แก้ไข ใหม่ แล้วเอาไปใส่ไว้ให้เพื่อนๆ พนักงานได้ apt-get ไปใช้กันได้ในสำนักงาน ขั้นตอนง่ายๆ ในการทำ repository มีไม่ยากครับ คือ เอา .deb ของเรานี่แหละไปใส่เอาไว้ที่ไดเรคทอรีที่เก็บไฟล์ deb เอาไว้ ยกตัวอย่างเช่น pool/main เป็นต้น แล้วสร้างฐานข้อมูล Package ออกมาให้เก็บไว้ในไดเรคทอรีในแต่ละเวอร์ชั่น Continue reading ทำ Ubuntu Repository ใช้เองแบบดูดีหน่อย

โอเพนซอร์สและการจัดการความรู้

ผมคลุกอยู่กับโอเพนซอร์สมาเกือบ 10 ปีเห็นจะได้ ทั้งเป็นคนพัฒนาแอพลิเคชั่นให้คนอื่น contribute ต่อและ contribute ซอฟต์แวร์คนอื่น ทำให้เห็นอะไรหลายๆ อย่างที่เกิดขึ้นและเกิดทุกๆ ครั้งที่พัฒนาหรือใช้งานซอฟต์แวร์โอเพนซอร์ส นั่นคือ ใช้อย่างไร พัฒนาอย่างไร ฯลฯ หากหาคำตอบไม่ได้ ก้อโพสไว้ในเว็บบอร์ดมีคนมาตอบบ้างไม่มีคนมาตอบบ้างเรียกกว่ารอกันจนมี ผู้รู้มาตอบบ้างก้อมี บางกระทู้ก้อไม่มีใครมาตอบเลยก้อมี
กระดาน สนทนาเป็นที่แลกเปลี่ยนความรู้ของชุมชนโอเพนซอร์สมายาวนานมาก รองจาก IRC แต่การตั้งคำถาม เพื่อต้องการได้รับคำตอบ ก้อไม่ใช่เรื่องง่าย ผมเคยอ่าน Cathedral & The Bazaar มีอยู่ตอนหนึ่งที่ Eric Redmond เขียนถึงวิธีการตั้งคำถามอย่างไรให้มีคนมาตอบ และตอบได้ตรงประเด็น ซึ่งผมมองว่าคนส่วนใหญ่มักจะตั้งคำถามด้วยความไม่รู้ และ อยากได้คำตอบมากกว่าการโพสคำถาม และคำตอบที่แก้ปัญหานั้นๆ ได้กลับจมลึกอยู่ก้นกระดานสนทนาหากอยากรู้ต้องไปงมหากันเอาเอง ทำให้วิธีการการแลกเปลี่ยนความรู้ของชุมชนโอเพนซอร์สนั้นทำได้ยากมากขึ้น
ความ รู้สามารถแบ่งออกเป็นประเภทใหญ่ๆ ได้สองประเภท คือ ความรู้ชัดแจ้ง (Explicit Knowledge) และความรู้แฝงเร้น (Tacit Knowledge) ความรู้ชัดแจ้งคือความรู้ที่เขียนอธิบายออกมาเป็นตัวอักษร เช่น คู่มือปฏิบัติงาน หนังสือ ตำรา ส่วนความรู้แฝงเร้นคือความรู้ที่ฝังอยู่ในตัวคน ไม่ได้ถอดออกมาเป็นลายลักษณ์อักษร หรือบางครั้งก็ไม่สามารถถอดเป็นลายลักษณ์อักษรได้ ความรู้ที่สำคัญส่วนใหญ่ มีลักษณะเป็นความรู้แฝงเร้น อยู่ในคนทำงาน และผู้เชี่ยวชาญในแต่ละเรื่อง จึงต้องอาศัยกลไกแลกเปลี่ยนเรียนรู้ให้คนได้พบกัน สร้างความไว้วางใจกัน และถ่ายทอดความรู้ระหว่างกันและกัน ซึ่งความรู้แบบความรู้แฝงเร้นนี้เป็นองค์ความรู้ที่พบเห็นมากที่สุดและสำคัญ มากที่สุดในชุมชนโอเพนซอร์ส ซึ่งยากต่อการเขียนบรรยายออกมาเป็นลายลักษณ์อักษร ทำได้เพียงแค่โพสคำถามและรอคำตอบเท่านั้น ซึ่งไม่ใช่เรื่องดีในการบริหารจัดการความรู้และการบันทึกองค์ความรู้นั้นๆ Continue reading โอเพนซอร์สและการจัดการความรู้

กฏหมายคอมฯ ใครได้? ใครเสีย? ตอนที่ 3 : รับมือกฏหมาย

ผมได้เขียนเหตุผลและรายละเอียดของกฏหมายฉบับนี้ไปในตอนที่แล้วเยอะมาก ซึ่งในตอนสุดท้ายก้อไม่อยากเขียนให้ยาวมากนัก เพราะเดี๋ยวจะเบื่อกันซะก่อน เอาเป็นว่าผมจะสรุปให้เลยก้อแล้วกันครับว่าใครจะต้องทำอะไรยังไงบ้าง กฏหมายฉบับนี้ระบุว่าผู้ให้บริการจะต้องเก็บข้อมูลจราจรทางคอมพิวเตอร์ ไว้ไม่น้อยกว่า 90 วัน ซึ่งผู้ให้บริการในที่นี้หมายรวมถึง ISP องค์กร บริษัท ร้านเน็ต และหมายรวมถึงผู้ให้บริการอินเตอร์เน็ตกับบุคคลอื่นๆ ไม่ว่าจะอยู่ในรูปแบบใดด้วย หากทราบว่าคุณอยู่ในกลุ่มผู้ให้บริการเหล่านี้ก้อคงหนีไม่รอดครับ หากไม่ปฏิบัติโดนปรับ 500,000 บาทครับโดนปรับกันง่ายๆ แบบนี้เลย อ้อเจ้าหน้าที่ที่หวังว่าจะไปดำเนินการปรับแบบสุ่มสี่สุ่มห้า หวังเก็บสแปร์ทำไม่ได้นะครับ เพราะเจ้าหน้าที่ต้องมีหมายศาลก่อนดำเนินการใดๆ
การเก็บข้อมูลจราจร ทางคอมพิวเตอร์ที่ว่านี้จะต้องมีข้อมูล ใคร ทำอะไร ที่ไหน อย่างไร คือ IP Address ต้นทาง ปลายทาง คำสั่ง และ ข้อมูลที่ส่งไป เป็นต้น ทั้งนี้เพื่อใช้เป็นหลักฐานในการสืบคดีของเจ้าหน้าที่และเป็นหลักฐานในการ ยืนยันตัวผู้ประทำผิดได้ การมีกฏหมายคอมพ์นี้ ทำให้ผู้ให้บริการระมัดระวังตัวมากขึ้น นอกจากการจัดเก็บ log แล้วผู้ให้บริการอินเตอร์เน็ต อย่างร้านอินเตอร์เน็ต ยังต้องเก็บข้อมูลลูกค้าด้วย เช่น ชื่อ-สกุล รหัสบัตรประจำตัวประชาชน เป็นต้น ในปัจจุบันร้านเน็ตหลายร้าน รวมถึง TOT, True Coffee ก้อได้ออกมาทำให้เป็นตัวอย่างโดยการลงทะเบียนบัตรและผู้ใช้อินเตอร์เน็ตก่อน ซึ่งเป็นตัวอย่างที่ดีมากๆ ครับ ขอปรบมือให้ดังๆ เลย Continue reading กฏหมายคอมฯ ใครได้? ใครเสีย? ตอนที่ 3 : รับมือกฏหมาย

ตั้งค่า Record แบบ Wildcard ให้ DNS

ผมมีปัญหาเกี่ยวกับ DNS บ่อยมากแล้วคนที่ดูแลเกี่ยวกับ DNS ก้อไม่ใช่ผมซะด้วย จริงๆ เรื่องของเรื่องคือไม่ค่อยได้วางแผนเรื่อง DNS สักเท่าไร วันดีคืนดีก้อคิดจะตั้ง sub domain ใหม่ขึ้นมา ไม่ตั้งค่า Virtual Host บน Apache ไม่เท่าไรครับ เพราะตัวเว็บเซิร์ฟเวอร์เราแก้ไขเองได้ แต่ DNS Server นี่สิมันอยู่คนละเครื่อง กว่าจะรอ Admin มาช่วยจัดการก้อช้าไปซะแล้ว จะแก้ปัญหายังไงดี วิธีง่ายๆ เราสามารถใช้ Wildcard สำหรับ domain record ได้ครับ มาดูตัวอย่างกัน
สมมุติว่าผมมี domain ชื่อ sexy.com แต่ sub domain ของผมไม่ค่อยคงที่สักเท่าไร วันดีคือดีก้ออยากจะมี subdomain เช่น gumara.sexy.com, bigtux.sexy.com เป็นต้น แต่ไม่อยากไปยุ่งกับ DNS ให้มันยุ่งยากมากนัก ไปตั้งค่าเพียง Virtual Host ของ Apache อย่างเดียวก้อพอ เราก้อใส่ Wildcard เข้าไปข้าหน้าแบบนี้เลยครับ *.sexy.com เอ้าไม่ได้ล้อเล่นนะครับ

sexy.com.       A           10.11.12.1
*.sexy.com.     CNAME       sexy.com.

ทีนี้จะให้ใคร dot อะไร sexy.com ก้อได้แล้วครับ 🙂

มาสร้างเอกสารบน Writer อย่างเซียนกันเถอะ

ผมเคยเข้าอบรมการใช้งาน Microsoft Office เฉพาะ Word ในราคา 3,600 บาท เพื่อเรียนวิธีการใช้งาน Microsoft Word อย่างถูกต้อง ซึ่งตอนนั้นเสียเงินเข้าไปอบรมได้ฟังบ้าง ไม่ได้ฟังบ้าง แต่ก้อพอจะเข้าใจว่าเราควรจะจัดการเอกสารได้อย่างไร ไม่ว่าจะเป็นการวางโครงร่างเอกสารผ่าน View แบบ Layout การกำหนด Style ต่างๆ เอาเป็นว่าคอร์สที่ลงเรียนแทบจะเปลี่ยนวิธีการใช้งาน Microsoft Office ของผมเลยทีเดียว แต่ก้อยังใช้ได้ไม่เชี่ยวชาญนัก แต่ก้อสามารถใช้งานฟังก์ชั่นอัตโนมัติต่างๆ ได้อย่างคล่องแคล่วบ้างละกัน
ผม เริ่มมาจับ Star Office แต่ภาษาไทยก้อไม่ได้เรื่องเท่าไร และไม่ได้อยู่ในความสนใจผมมากนัก จนกระทั่ง Open Office 2.3 เจ้าปัญหาทำให้ผมต้องบังคับตัวเองว่าทำอย่างไร จึงจะใช้ความรู้ที่ได้มาจากการอบรมใช้งาน Microsoft Word มาประยุกต์ใช้กับ Open Office 2.3 ได้ เอาเป็นว่า Open Office 2.3 สร้างปัญหาให้ผมอยู่เกือบปีเลยทีเดียวเฉพาะงานเอกสารปกตินะครับ ไม่รวมสิ่งต่างๆ ที่ก่อปัญหาไม่เว้นแต่ละวัน เอาเป็นว่าเมื่อวานนี้ผมอดหลับอดนอนอีกครั้งเพื่อค้นหาวิธีการที่เหมาะสม รวดเร็ว และประยุกต์ใช้ได้ง่าย ไม่ต้องพึ่งเทคนิคพิสดาร หรือใช้ Marcro ต่างๆ ให้มันยุ่งยาก ถ้าคุณอยากรู้ค่อยๆ ศึกษากันทีละขั้นตอนนะครับ ผมจะพยายามสร้างความเชื่อมโยงระหว่าง วิธีการใช้งาน Microsoft Word และวิธีการใช้งาน Open Office Writer ในสไตล์ผม เอาล่ะก่อนที่เข้าเนื้อหากัน ผมจะเล่าว่าผมทำอะไรกับ Microsoft Word ได้บ้างและผมจะแนะนำวิธีการทำแบบนี้ใน Open Office Writer ซึ่งสิ่งที่ผมใช้งานบ่อยๆ และชอบใช้เป็นพิเศษใน Microsoft Word ได้แก่
1. จัดโครงร่างเอกสร้างโดยใช้ Layout View ซึ่งใน Open Office ไม่มี Layout View มีแค่ Print Layout และ Web Layout เท่านั้น
2. กำหนดรูปแบบหน้าเอกสาร
3. กำหนด Style เปลี่ยนแปลง Style รูปแบบตัวอักษร การจัด Paragraph เป็นต้น
4. สร้างเนื้อหาข้อมูลสำเร็จอย่างการทำสารบัญต่างๆ เช่น สารบัญ สารบัญตาราง สารบัญภาพ เป็นต้น
5. กำหนดรูปแบบการแสดงเลขหน้า เช่น ก ข ค…? 1 2 3… เป็นต้น
Continue reading มาสร้างเอกสารบน Writer อย่างเซียนกันเถอะ

มาวาดมนุษย์หิมะด้วย Inkscape กัน

มาวาดภาพเวกเตอร์ด้วย Inkscape กันอีกรอบครับ คราวนี้มาหัดวาดมนุษย์หิมะกัน ด้วยเส้นตรงและเส้นโค้งง่ายๆ ครับ เทคนิคที่ใช้ในงานวาดครั้งนี้มีไม่มากครับ คือรูปสี่เหลี่ยม รูปวงรี รูปสี่เหลี่ยม รูปทรงกระบอก รูปทรงกรวย และการประยุกใช้รูปทรงพื้นฐานมาประกอบเป็นรูปทรงอื่นๆ
เริ่มต้นด้วยการวาดวงกลม 2 วงซ้อนกันโดยวงกลมที่เป็นส่วนหัว ซ้อนทับวงกลที่เป็นส่วนลำตัว ใส่ลูกตาวงรีสีดำ 2 ดวง ดังภาพ

Continue reading มาวาดมนุษย์หิมะด้วย Inkscape กัน