Saturday, January 2, 2010

tutorchannel www.etthai.tv

ผมชอบรายการนี้เพราะว่านั่งเรียนได้ที่บ้าน ไม่ต้องนั่งดูรถติดไปโรงเรียนกวดวิชา นอกจากการเรียนที่โรงเรียนแล้ว ผมคิดว่าการเรียนพิเศษก็จำเป็น แต่...

สิ่งที่จำเป็นสำหรับการเรียนพิเศษที่โรงเรียนกวดวิชา หรือสถาบันการเรียนต่าง ๆ สำหรับผมคือ การไปดูว่าคู่แข่งของเราเป็นอย่างไรบ้าง ส่วนตัวก็ไม่เข้าใจสักทีว่าทำไมต้องเรียนพิเศษ หรือว่าเวลาที่โรงเรียนไม่พอ หรือว่า อาจารย์สอนกั๊ก เลยต้องมาสอนต่อ

ผมเห็นอาจารย์สอนแล้ว อยากไปเป็นอาจารย์เอง ทำไมหรือครับ? ลองอ่านหนังสือเล่มนี้ดู "ฟิสิกส์นิวตัน" ของอาจารย์ สม สุจีรา ดูครับ (อ่านแล้วทำความเข้าใจด้วย อย่านำสองสิ่งมาผสมกันมากไป เพราะอาจหลงทางได้)

และการดึงตัวอย่างที่เห็นจริงและเข้าใจอย่างท่องแท้ จะทำให้เข้าใจและสามารถนำไปประยุกต์มากขึ้น เพราะผมเชื่อว่า ไม่ว่าวิทยาศาสตร์ หรือคณิตศาสตร์ หรือว่าวิชาใด ๆ ก็ตาม มันก็เกิดจากหลักธรรมชาติที่มนุษย์สังเกต นั่นเอง ไม่ได้มีอะไรวิเศษหรือว่าพิศดารมากกว่านี้ และผมก็ไม่เชื่อว่าจะมีคนจากโลกอื่นมาเสนอหลักการหรือวิทยาการให้มนุษย์

สิ่งที่วนอยู่ในการศีกษาของคนไทย และทำให้คนไทยไม่พัฒนาในมุมมองของผมมีดังนี้

  1. การเรียนที่ไม่เสนอตัวอย่างที่สังเกตได้จริงปฏิบัติได้จริง เช่น เราเรียนเรื่องการบวก ไปทำไม เรียนการเคลื่อนที่ไปทำไม เรียนเคมีไปทำไม ทำให้นักศึกษาไม่รู้ความสำคัญแต่ละขั้นตอนการเรียน หลงทางไปเรื่อย
  2. เราเรียนทำโจทย์ แต่ไม่เข้าใจโจทย์ จะมีสักที่คนที่สอนให้เข้าใจโจทย์
  3. เราสอนและเรียนเพื่อทำคะแนน แต่ไม่เรียนเพื่อเรียนรู้
  4. เรานำคะแนนมาวัดความรู้ แต่ไม่นำคะแนนมาวัดความเข้าใจ
  5. เราสอนคนตัดตัวเลือก แต่ไม่เคยสอนให้สร้างตัวเลือก ไม่เชื่อลองทำข้อสอบที่มีตัวเลือก 7 ตัวสิ แล้วจะพบว่า คะแนนสอบน้อยลง
  6. เราสอนให้คนท่องจำ มากกว่าสอนให้เข้าใจ มันไม่ต่างอะไรจากสัตว์เลี้ยงที่มันรู้ว่า เราทำอย่างไรให้มันทราบได้ว่าเราจะเรียกมันมาหาเรา
  7. คนไทยมักง่าย ได้อะไรมาง่าย ๆ แต่ไม่พยายามทำสิ่งที่ยาก ๆ ฟันฝ่าอุปสรรคยาก ๆ ทำให้เมื่อพบความผิดหวังก็ล้มแล้วลุกขึ้นยาก
  8. เราให้ความสนใจกับคนที่เก่ง สนับสนุนคนเก่ง แต่ไม่ทำให้ทุกคนเก่งขึ้น เหมือนกับเราไม่พยายามเพาะพันธ์ุปลาให้ดี แต่เราจะคัดเลือกเฉพาะปลาที่สวยและเด่นเท่านั้น)
วิชาที่ผมคิดว่าประสบความสำเร็จในการเรียนการสอนมีดังนี้
  1. วิชายืดหยุ่น เพราะว่ามันเอามาใช้กับการล้มอย่างไรไม่ให้เจ็บ หรือการกระโดดอย่างไรไม่ให้เจ็บขา มันเป็นหลักที่ดีในการทำโช๊ค ในรถยนต์ คุณว่าไหม?
  2. วิชาเกษตร เพราะว่าเราจะนำไปทำได้ทุกเมื่อเวลา และก็ง่าย ทุกคนเข้าใจ คุณปลุกถั่วเขียวเป็นหรือเปล่า คุณว่าไหม เราสามารถปลูกถั่วเขียวเป็นอาชีพได้
  3. วิชาศิลปะ เพราะว่ามันทำให้เราไม่มีกรอบ
จะเห็นได้ว่าวิชาที่ประสบความสำเร็จในการเรียนการสอนส่วนใหญ่เกิดจากการสร้างจินตนาการให้นักเรียนได้นั่งเอง

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


ปีใหม่ตั้งใจทำอะไร

#อ่านหนังสือมากขึ้น
ปีที่แล้วเป็นปีที่อ่านหนังสือธรรมะแนววิทยาศาสตร์มากเป็นพิเศษ แต่ก็ไม่มากเท่าเพชรพระอุมา ปีนี้จะเพิ่มหมวดหนังสือเฉพาะทางอีก โดยเฉพาะ Python ที่กำลังอ่านคือ "How to Think Like Computer Scientist"  อีกเล่มคือ "Sphinx Python Documentation Generator" 

#เพิ่มความสามารถเฉพาะด้านที่ถนัด
หลังจาก การไปเที่ยวได้อะไรมากกว่าที่คิด ที่แล้ว ก็ทำให้เรารู้ว่า "รู้สิ่งเดียวให้เชียวชาญเถิดจะเกิดผล" เพราะว่าถ้าคนเรารู้หลาย ๆ อย่างมากไป จะทำให้ยิ่งหาตัวตนได้ยากยิ่งขึ้น

#การงานที่ต้องทำมากขึ้น
่งานปีนี้เป็นปีที่ต้องทำควบคู่กันไปซัก 2-3 งาน สิ่งที่จำเป็นต้องมีคือ สติ สมาธิ และปัญญา แล้วจะมีเวลาเพิ่มขึ้น

#ท่องเที่ยวไทย
สิ่งที่ต้องทำอีกอย่างที่พลาดไม่ได้สำหรับคนไทย คือ ท่องเที่ยวไทย ถ้าคุณเป็นคนไทย ต้องมีสิ่งนี้

Friday, January 1, 2010

StarCraft

วันนี้ปีใหม่ นั่งเล่นเกมส์กับน้องผ่าปีเลยครับ ผมเล่นเกมส์อื่น ๆ ไม่ค่อยเก่ง นอกจากเกมส์แนว ๆ StarCraft

มันติด ๆ ๆ จนบัดนี้แล้วก็ประมาณ 10 ปีแล้วครับ

และที่แน่ ๆ คือผมรอ StarCraft II อยู่ แค่เห็นตัวอย่างนี้ก็อดรอไม่ไหวแล้ว StarCraft II

Updated: ผมติดตั้ง StarCraft บน Mac Snow Leopard เรียบร้อยแล้ว

Wednesday, December 30, 2009

การไปเที่ยวได้อะไรมากกว่าที่คิด

มีโอกาสไปเที่ยวเชียงคาน ก่อนที่อะไร ๆ จะเหมือนปาย ได้อะไรมาบ้างมาดูกัน
  1. ไปเชียงคานถ้าให้สนุกต้องไปทาง ลพบุรี-เพชรบูรณ์-เลย-เชียงคาน ท่านจะพบว่า การขับรถบนสันเขาสนุกเพียงใด
  2. เต็นที่ดีควรจะต้องกันน้ำค้างได้ปริมาณมาก ๆ และต้องมีขนาดใหญ่พอนอนได้สำหรับ 2 คน โดยที่เวลาขยับตัวต้องไม่โดนผืนเต็น ไม่อย่างนั้นจะเปียก
  3. ถุงนอนที่ดีข้างในควรเป็นผ้า ไม่ใช่พลาสติก
  4. ถ้าหากกลางคืนหนาวมาก ให้นำรถยนต์ที่ขับไปด้วยจอดไว้ข้าง ๆ ถ้าหากหนาวจนทนไม่ไหว ก็ให้ไปนอนในรถ (อันนี้เจ้าถิ่นบอกมา)
  5. คนอีสานเลย นี่ ใจดีจริง ๆ มีข้าวเย็นให้กินด้วย เขาเรียกว่า "มาซุมกัน"
  6. ถ้าหากคุณต้องซื้อผ้าห่มที่ผลิตมาจากโรงงาน ที่มีกรรมวิธีที่เหมือนกับทำจากมือ handmade แนะนำให้ซื้อ Handmade มันจะขลังและกันหนาวได้ดีกว่า เพราะว่าคุณจะนึกถึงคนขายและคนทำ จนคุณไม่กล้าต่อราคา
  7. ถ้าคุณจะพยายามเก่งทุกอย่าง ให้เปลี่ยนความคิดใหม่ "เก่งอย่างเดียวแบบสุด ๆ" ดีกว่า เพราะว่าจะมีคนอย่างนี้ไม่กี่คนในโลก (แล้วเค้าจะถามหาคุณเอง) ส่วนคนที่เก่งหลาย ๆ อย่างมีเยอะแล้ว เหมือนผ้าห่มที่ซื้อ ที่ขายข้างทาง ร้านจะบอกไม่ได้ว่ากรรมวิธีทำอย่างไร ต้องเอาใจในขนาดไหน แต่พอถามยาย ร้านนิยมไทย น้ำตาแทบแตก นั่นเป็นเหตุผลว่าทำไมผ้าห่มที่นี่ถึงอุ่นตลอดเวลาไม่ว่าจะหน้าร้อนหรือหน้าหนาว
  8. สาธุ!!! อย่าให้เชียงคานในอนาคตเป็นเหมือนปายตอนนี้เลย เมืองไทยจะได้มีที่ที่น่าเที่ยวเพิ่มขึ้น
  9. สุดท้าย... ผมคิดถึงที่นั่น

การใช้งาาน PostgreSQL ในส่วนงานต่าง ๆ OLTP, DW, WEB

คราวก่อนนำเนื้อหามาแปะไว้ (PostgreSQL กับการกำหนดค่าที่น่าสนใจของ WEB, OLPT, DW ) กะว่าจะอธิบายต่อที่ตรงนี้ แต่เท่าที่ดูแล้วคิดว่านำออกมาอธิบายต่างหากดีกว่า

การติดตั้ง PostgreSQL โดย Package ที่สำเร็จรูปนั้น แน่นอนว่าการทำ Package ออกมาจะมีการกำหนดค่ามาเพื่อรองรับ Application ทั่ว ๆ ไป แต่เนื่องจากความเป็นจริง เมื่อมีการนำมาใช้งานแล้ว เราต้องทำการปรับค่าต่าง ๆ เพื่อให้เหมาะสมกับงานที่ต่างกันออกไป

งานที่ต่าง ๆ กันก็ขอแบ่งออกเป็น 3 อย่างดังนี้ก่อน
  1. WEB - Web Transactional
  2. OLTP - Online Transactional Processing
  3. DW - Data Warehouse
งานทั้ง 3 ประเภทนี้ต่างกัน ทำให้การกำหนดค่าต่าง ๆ ของ Database แตกต่างกันด้วย ลองนึกถึงว่าถ้าหากเราต้องการขับรถ ไปยังที่แตกต่างกัน เราจะเลือกรถอย่างไรดี

ในด้าน Database ก็เหมือนกัน ทุกวันนี้หลายคนใช้ Database Configurature เดียว เพื่องานทุกอย่าง อาจเนื่องจากเหตุผลทางด้านการเงิน แต่เมื่อทำงานไปซักพักก็จะเข้าใจว่าทำไม

ก่อนอื่นเราต้องทำความเข้าใจกับ ประเภทของงานทั้ง 3 กันก่อน
"WEB" การเรียกใช้งานส่วนใหญ่เป็นการแสดงผล มีการเรียกการใช้งาน Database บ้าง แต่ส่วนใหญ่จะถูกออกแบบมาเพื่อบริการข้อมูล ไม่ค่อยมีการทำ Transaction
"OLTP" มีการเรียกใช้งานข้อมูลเพื่อประกอบการใช้งาน และมีการบันทึกข้อมูล Transaction กลับไปยัง ฐานข้อมูล มีรายงานที่เกี่ยวกับทางด้าน Tranaction ในแต่ละวัน
"DW" Datawarehouse มีลักษณะเฉพาะ โดยมีจุดประสงค์เพื่อนำข้อมูลที่เก็บไว้มาทำเป็นการวิเคราะห์ และตัดสินใจ และบางครั้งส่งผลที่ได้กลับไปยัง OLTP เพื่อกำหนดวิธีการทำงานต่าง ๆ รายงานส่วนใหญ่ถูกออกแบบมาเพื่อ ทำเป็นข้อมูลเพื่อการตัดสินใจ

เมื่อทราบลักษณะงานต่าง ๆ แล้ว เราก็เริ่มดำเนินการกำหนดค่ากันเลย ซึ่งในส่วนนี้จะมุ่งไปยัง Database เท่านั้น ส่วน Application นั้น ก็ขึ้นอยู่กับประเภทของงาน


CPU
ปัจจุบันเท่าที่ประสบมา จำนวน CPU 4-8 cores ก็เพียงพอกับงานที่เกี่ยวกับ Database แล้ว และแต่ละ CPU ก็มีความเร็วที่ค่อนข้างมากแล้วด้วย

MEMORY
หลักง่าย ๆ คือ ถ้าอยากให้เร็วก็ใส่ เยอะ ๆ ปัจจุบันเท่าที่เห็นคือ 16GB

HARDDISK
"many spindles are better" หมายความว่า ถ้าทำ RAID ให้ใช้ HD หลาย ๆ ตัวทำ RAID ใน 1 Volume ในส่วนนี้มีผลต่อ การทำงานของ Database เป็นอย่างมาก เพราะว่า งานส่วนใหญ่ให้ Load Data แล้วประมวลผลใน MEMORY ไม่พอหรอก

NETWORK
หลาย ๆ คนซื้อ Server ที่มี Networks Interface เยอะ ๆ แต่ว่าใช้อันเดียวเอง (เป็นเพราะว่า ไม่เคยเจอ Traffice เยอะ ๆ อย่างผม)


คราวนี้มาดูการปรับแต่งของ Database กัน

max_connections หมายถึงจำนวน connection ที่สามารถเข้ามาใช้งานได้เมื่อขนาดที่มีการใช้งานมากที่สุด  โดยแต่ละ connection นั้นจะใช้ ทรัพยากร shared_buffer ที่กำหนดไว้ แน่นอนว่า ถ้ากำหนดไม่ดีจะมีอาการที่บอกว่า "out of memory" นะ

max_connections = 200  # small server
  max_connections = 700  # web application database
  max_connections = 40   # data warehousing database
shared_buffer หมายถึงปริมาณของหน่วยความจำที่ต้องใช้งานเพื่อการประมวลผล process ก่อนที่จะมีการใช้ disk เพื่อทำ operation ประมาณว่ามี active operations ได้มากเท่าไหร่

# shared_buffers = ( Available RAM / 4 )
# shared_buffers = 512MB   # basic 2GB web server
# shared_buffers = 8GB     # 64-bit server with 32GB RAM

work_mem หมายถึงปริมาณของหน่วยความจำที่สามารถใช้ในแต่ละ query ได้  ถ้า Query อะไรที่ซับซ้อนก็ต้องเพิ่มค่านี้เลยครับ
# Most web applications should use the formula below, because their 
# queries often require no work_mem. 
# work_mem = ( AvRAM / max_connections ) ROUND DOWN to 2^x
# work_mem = 2MB  # for 2GB server with 700 connections  

# Formula for most BI/DW applications, or others running many complex
# queries:
# work_mem = ( AvRAM / ( 2 * max_connections ) ) ROUND DOWN to 2^x
# work_mem = 128MB   # DW server with 32GB RAM and 40 connections 
ในส่วนตัวแล้ว กว่าจะปรับค่านี้ลงตัวก็ต้องลองหลาย ๆ รอบเหมือนกัน บางทีดูรูปแล้วน่าจะเข้าใจมากขึ้น ref: http://momjian.us/main/presentations.html

Wednesday, December 16, 2009

Opensource Commercial ที่เค้าใช้กันทำเงินกันได้อย่างไร

วันนี้ต้องสมัครสมาชิกอ่าน feed พอดีอ่านไปเจออันนี้ Canonical: take my money ทำให้เข้าใจว่าในที่สุด user ที่ใช้ opensource ต้องการอะไร

You claim that there is little money in the desktop software business and more in services.  Well here is something I would pay money for:
Take the top selling business laptops from Dell, Acer, HP, Lenovo and offer customized distributions for them.
I would pay for that in an instant.  All too often people confuse open source with free of charge.  I’m perfectly capable of making that distinction.  In fact, I use my machines for my work and don’t want to spend days configuring all the devices on them.  As such, I would pay something like 50 USD for a customized (K)Ubuntu or perhaps 150-200 USD if it came with some sort of (e-mail) support contract for a year.
I don’t use Linux / Ubuntu because it costs less, I use it because I prefer it over Windows to do my job.  I would pay that kind of money because I would save time and money in the long run.
Until the major hardware vendors offer decent (worldwide) support for Linux on their machines (out of the box that is), I think this is an idea with potential and I hope at least someone picks it up.  Go ahead, let me spend money on it!

บริการจัดว่าเป็นรายได้หลัก ๆ แต่ที่ลูกค้าอยากได้ต่อไปคือ save time นั้นเอง

Life has no boundaries.
Wattana

ลบ log file ที่เกิน 90 วัน ทุก ๆ วันทำอย่างไร

GNU มันเจ๋งอย่างนี้นี่เอง

อ้างอิง: http://www.faqs.org/qa/qa-10326.html

เนื่องจากปัจจุบันตั้ง CRON ไว้สำหรับทำงานในการเก็บ log ไฟล์ โดยกำหนดให้สร้าง Folder เมื่อถึงวันใหม่ พอระบบทำงานมาได้ซักพักก็พบว่า เจ้าปริมาณของ log ไฟล์ นั้นมีขนาดใหญ่ขึ้นเรื่อย ๆ

ทำอย่างไรให้มันเก็บย้อนหลังได้แค่ 90 วัน (เขาคิดว่าจะรอดปลอดภัย) ในใจแว็บเค้ามาเลยครับ "ก็ให้มันทำการลบ log ไฟล์ที่มันย้อนหลังมากกว่า 90 วันสิ"

เข้าทางของ CRON เลยครับ "ทำอย่างไรจะลบ log ไฟล์ ที่เกิน 90 วัน ทีละวันได้" พออ่านเอกสารแล้วก็พบว่า เจ้า date ใน UNIX นี่ช่วยได้ทีเดียว แต่สิ่งมหัศจรรย์ที่เกิดขึ้นคือ date ของ GNU มันทำอย่างนี้ได้ด้วย

$ date -d "90 day ago" 
พฤ. 17 ก.ย. 2552 05:19:56 ICT
ดูซิ ทำกันได้