วันจันทร์ที่ 8 ธันวาคม พ.ศ. 2551

การเดินทางของอาจารย์จง

สวัสดีคะ ลูกศิษย์ ที่รัก ทุ๊ก ท่าน....



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



เริ่มการเดินทางครั้งใหม่ของตัวเอง จากการที่ได้กลับเข้ามาทำงาน (เต็มตัว) ที่คณะสิ่งแวดล้อมและทรัพยากรศาสตร์ มหาวิทยาลัยมหิดล (http://www.en.mahidol.ac.th/) หากมีใครที่ต้องการเรียนต่อ สามารถหาข้อมูลได้ก่อนนะจ้ะ



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



มาถึง เรื่อง ซัก ที ...



ขอเล่าเรื่องราวการเดินทางที่ไปอินโดนีเซีย ตอนไป ไม่มีอะไร ตื่นเต้น ตอนขากลับเนี่ย ซิ..... จะกลับยังไง เนื่องจากมีพวกคุณพันธมิตร .... ปิด สนามบิน .... ซวย ละ ซิ เรา สงสัยจะต้องกิน อาหาร แขก ไปอีก นาน ล่ะม้าง .... แต่โชคดี มันจะมีอยู่เสมอ.... เดินทางกลับบ้านเกิดเมืองได้ตามกำหนดเดิม ที่ตื้นเต้นหน่อยคือชีวิตจะต้องระหก ระเหเร่ร่อน ไปลงที่ UTP (U-Tapao International Airport) เป็นไงล่ะ จะมีใครซักกี่คนที่ได้บินสายการบินแบบเราแล้วได้ลงที่นั่นบ้าง ..... (แต่ขอโทษนะ ขอประสบการณ์อย่างนี้ครั้งเดียวพอ) 55555



คราวนี้การเดินทางไป ลาว และกลับจากลาว คาดว่าคงไม่มีเหตุการณ์ อะไรให้ได้ตื่นเต้น นะจ้ะ .....



การเดินทางของ อาจารย์จง ยังดำเนินต่อไป อย่างไม่หยุดยั้ง .....



ทั้งนี้ขอให้กำลังใจกับลูกศิษย์ที่รักทุกคนของครู ในการเขียนโปรแกรม การทำโปรเจค การเดินทาง การเรียนรู้ การต้อยเด็ก การร้องเพลง (เอ...เกี่ยวกันไหมเนี่ย)... และอื่นๆ อีกมากมาย ....



ขอให้ทุกคนทราบว่า ความสัมพันธ์ของเรายังคงอยู่ เปรียบเสมือนเส้นใยบางบางแต่เหนียวแน่นที่ยึดความสัมพันธ์ของพวกเราเอาไว้ ... ว่างๆ ดึงเส้นใยบางบางนั้นด้วยนะจ้ะ



เป็นกำลังใจให้ในทุกทุกจังหวะของชีวิตและการเดินทางนะคะ
















วันจันทร์ที่ 1 ธันวาคม พ.ศ. 2551

เริ่มต้นง่ายๆ กับ ASP.net

วันนี้เรามาเริ่มอะไรง่ายๆ กันก่อนดีกว่า เรื่องของเว็บแอพพลิเคชั่น

ขอให้เป็น ASP.net นะครับ เนื่องจาก PHP ไม่ใช่ภาษาถนัดของกระพ้มนะครับพี่น้อง

เว็บแอพฯ (มากจากแอพพลิเคชั่นนะ ไม่ใช่แอ๊บ..)มันมีความแตกต่างจากวินโดว์แอพฯ อยู่พอสมควร อย่างไรก็ตาม ดังที่คุณมณีรัตน์หาข้อมูลเรื่อง .Net Framework มาให้ก็ช่วยให้เข้าใจได้มากโข หนึ่งก็คือ คุณสามารถใช้ภาษาอะไรก็ได้ (เห็นมีให้เลือกไม่มากอยู่ดี ไม่ C# ก็ VB) ในการพัฒนาแอพของ .Net ทั้งวินโดว์ ทั้งเว็บ

ขอให้เข้าใจเรื่องของภาษาว่ามันใช่ว่า ASP.Net คือภาษานะครับ C# กับ VB นี่คือภาษา คิดว่าหลายคนคงยังสับสน แต่ ASP.Net มันคือรูปแบบการเขียนโปรแกรมบนเว็บโดยใช้ .Net (พยายามอธิบายให้เข้าใจง่ายๆ ใช้คำน้อยที่สุด)

ภาษา C# มีโครงสร้างทางภาษาของมันเอง VB ก็เช่นกัน เช่น

การประกาศตัวแปร

ภาษา C# ก็จะเป็น string MyName;
ภาษา VB ก็จะเขียนแบบนี้ Dim MyName as String;

ภาษา C# จะเริ่มต้นสิ้นสุดด้วย {...}
ภาษา VB จะเริ่มต้นสิ้นสุด Begin ... End (จะ End Sub หรือ End อะไรก็ว่ากันไป)

ภาษา C# ใช้ if (MyName == "Micheal") {...}
ภาษา VB เขียนเป็น if MyName = "Micheal" Then ... End if

อะไรแบบนี้เป็นต้น ซึ่งไม่ว่าเขียนแบบไหนบนหน้าเว็บแอพ เมื่อไปรันแล้ว เว็บเซอร์ฟเวอร์มันก็เข้าใจ และแสดงผลได้เหมือนกัน

ใน 1 หน้าเว็บแอพ (1 ไฟล์ aspx) เลือกใช้ได้ภาษาเดียวนะครับ ไม่ใช่ส่วนหัวพอใจใช้ภาษา C# ลงมาอีก 2 บรรทัดใช้ VB อันนี้มันก็เกินไป แต่ในงานๆ หนึ่ง ที่เป็นคนละหน้าแล้ว จะเขียนคนละภาษาก็ได้เช่น Customer.aspx เขียนด้วย C# หน้า Product.aspx ขียนด้วย VB อันนี้โอเค

ทีนี้เขียนโปรแกรมบนเว็บมันทำยังไง

เราคงเคยเรียนการทำเว็บมาบ้างแล้ว เว็บที่เราเห็นๆ กันอยู่ ไม่ว่าจะมีเบื้องหลังยังไง ย้ำนะครับ ไม่ว่าจะเป็นแอพ หรือ ไม่แอพ แอพจะซับซ้อนยังไง สุดท้ายมันก็แสดงผลออกเป็น HTML

เช่น ลองเปิดเว็บแอพขึ้นมาสักตัวสิครับ แล้วลองดู Source code ก็เห็น HTML Tag ที่เราคุ้นทั้งนั้น แม้ว่าจะยุ่งเหยิงและยาว

อะไรเทือกๆนี้แหละครับ

แล้วโค้ดที่เราเขียนๆ มามันไปไหน ไม่เห็นมีตรงไหนที่เป็นภาษาโปรแกรมเลย ... คำตอบง่ายมากครับ เมื่อมันทำงานผ่านเว็บเซอร์ฟเวอร์แล้ว เว็บเซอร์ฟเวอร์ มันทำหน้าที่ปฏิบัติตามคำสั่งที่เขียนไว้ แล้วส่วนไหนที่ต้องแสดงผลมันก็นำไปปรับแต่งให้เป็น HTML เพราะอย่างที่บอก สุดท้ายเว็บเบราเซอร์มันรุ้จักแค่ HTML

ลองทำเว็บเพจขึ้นมาสักตัวเป็นไร

ใช้คำสั่ง Response.write("Yeah!"); แล้วลองรันดู บนหน้าเว็บเห็นคำว่า Yeah! เมื่อดู Source Code แล้วก็จะพบแต่ Yeah! ส่วนของคำสั่ง Reponse.write ไม่มี เพราะเว็บเซอร์ฟเวอร์มันเอาคำสั่งไปทำงานว่า ให้แสดงผลคำว่า Yeah! ออกหน้าเว็บแค่นั้น

จบหัวข้อนี้ซะดื้อๆ

สุดท้ายก็ไม่พ้น อ่าน เพิ่ม เปลี่ยน ลบ

เดือนธันวาแล้วนะครับ

โปรเจคคืบหน้ากันไปถึงไหนแล้ว ไม่ได้ตามไปดูเท่าไหร่ช่วงนี้

มาแลกเปลี่ยนความคิดกันหน่อยดีกว่า จั่วหัวข้อว่า "สุดท้ายก็ไม่พ้น อ่าน เพิ่ม เปลี่ยน ลบ"

หมายความว่า

ไม่ว่าระบบงานที่ออกแบบไว้จะเป็นยังไง กระบวนการมันจะซับซ้อนยังไง สุดท้ายมันก็มีแค่ อ่านข้อมูล เพิ่มข้อมูล เปลี่ยนข้อมูล และก็ลบข้อมูล

ตอนนี้ถ้ามองในมุมมองของการพัฒนา คงพอแยกออกเป็นสองส่วน

1.เว็บ

2.ฐานข้อมูล

ตัวอย่าง

เว็บไปติดต่อฐานข้อมูล อ่านข้อมูลขึ้นมาแสดง ในตารางไหนบ้างก็ไม่รู้แหละ เขียน SQL เข้า บางทีตารางเดียวสบายมือมาก

SELECT * FROM products;

บางทีข้อมูลต้องป้อนผ่านหน้าเว็บเพราะไม่ใช่ว่าจะเอาข้อมูลทั้งหมดใส่ผ่าน DBMS มันต้องมีการเพิ่ม อันนี้ยุ่งขึ้นมาหน่อย ต้องเอาข้อมูลที่ได้ส่งผ่าน FORM ของเว็บในลักษณะตัวแปร มาประกอบเข้ากับ SQL สั้นบ้างยาวบ้าง ยุ่งบ้างไม่ยุ่งบ้างตามลักษณะงาน ก็ไม่พ้น

INSERT INTO products(productID,productName,price) VALUES('987','Sample Product',100);

มีข้อมูลแล้วไม่ได้ตั่งใจ ต้องแก้ไข ก็อ่านข้อมูลขึ้นมาแสดงก่อนเหมือนเดิม แล้วใส่ค่าใหม่ลงไปแก้ผ่าน FORM เหมือนเดิมอีก SQL เบสิกก็

UPDATE products SET productName = 'Very Good Product', price = 200 WHERE productID = '987';

แก้ไขแล้ว ไม่พอลบมันทั้งแถวก็

DELETE FORM products WHERE productID = '987';

...

พวกนี้เป็น SQL พื้น คนเขียนโปรแกรมที่ต้องใช้ฐานข้อมูลเป็นแน่ (ไม่น่ามาสอนจระเข้ว่ายน้ำเลย) เป็นอันว่าทบทวนไปแล้วกัน

งานมันมีแค่นี้ เว็บแอพพิเคชั่นที่ติดต่อกับฐานก็มูล เขียนยังไงมันก็มีแค่นี้ เพียงแต่งานใครจะขั้นตอนมากน้อบ ซับซ้อนมากน้อยแค่ไหนเท่านั้น

...

ความแตกต่าง

ตัวเว็บแอพพลิเคชั่น มีรูปแแบในการติดต่อฐานข้อมูลไม่เหมือนกัน ASP ก็เขียนแบบหนึ่ง PHP ก็เขียนแบบหนึ่ง...เขียนให้ติดต่อกับฐานข้อมูล MSSQLServer ก็เขียนอย่างนึง Access ก็อย่างนึง MySQL ก็ไปอีกแบบนึง

ชื่อฐานข้อมูล ตาราง คอลัมน์ ก็ต่างกันไป ไม่หลุดจาก SQL เขียนโปรแกรแล้วต้องประยุกต์ใช้เป็นก็ปรับๆ ไปให้เข้ากับงานเรา

ตัวอย่างใน Google ค้นหาทีนึง มีให้ Copy เป็นพัน ...จำไว้ว่า ไม่ใช่เราคนแรกแน่นอนที่เจอปัญหาแบบนี้ มีคนเจอมาหมดแล้ว อยากเขียน SQL ให้มันออกมาเป็นอย่างงู้นอย่างงี้ ค้นไปเหอะ มีแน่นอนสาบานได้ (เอาไปปรับนะ ไม่ใช่มีมาให้เลย ไม่งั้นคงไม่ต้องมาทำโปรเจคกันแล้ว) ...ค้นของไทยไม่เจอ ค้นภาษาอังกฤษดู เพราะโปรแกรมเป็นภาษาอังกฤษทั้งนั้น Response Dim SELECT echo print string อย่าอนุรักษ์ความเป็นไทยมาก คิดว่าเปิดหูเปิดตาลองอ่านดู ที่เค้าเขียนดีๆ อ่านง่ายๆ ต่างประเทศก็มีเยอะอยู่

ทีนี้มามองว่า ส่วนใหญ่ที่ทำให้งานมันไม่เดินคืออะไร ..

1. ยังตอบไม่ได้เลยว่า "จะทำอะไร" ...โอ...เราจะทำอะไรเนี่ยะ ยังไม่เข้าใจเลย เลือกไม่ถูก

เมื่อไม่รู้ว่าจะทำอะไรกระบวนการมันไม่มี ข้อมูลก็ไม่ต้องพูดถึง มันตามต่อมาไม่ได้ เช่น อยากไประบบรับคำสั่งซื้อ ...รับยังไง ขั้นตอนของมันคือยังไง ไล่เลียงมา 1 2 3 4 ตรงนี้จะทำให้เรารู้ว่า เราจะต้องทำอะไรกับข้อมูล อย่างที่บอก ไม่พ้น 4 วิถีทางนั้นไปได้หรอก (ไม่อ่าน เพิ่ม เปลี่ยน ก็ลบ) ใช้ข้อมูลอะไรบ้าง ฐานข้อมูล "มีข้อมูลที่เกี่ยวข้องนั้นหมด รึยัง"

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

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

3. เจอปัญหา ไม่รู้จะแก้ยังไง ...รอ ...รอทำไม เพื่อนๆมี เพื่อนๆ พูกภาษาไทยเหมือนกัน ถามเลย เฮ้ย แกทำยังไง ขอเอามาดู ดูเสร็จ เอามาปรับ หรือไม่ก็บอกไปแล้ว Google โลด (ใครใช้อย่างอื่นก็ตามใจนะ ไม่ได้ตังค์หรอกแต่สนับสนุน Google อย่างไร้เหตุผล) 

...ดึกแล้ว บ่นแค่นี้ก่อนละกัน เดี๋ยวนึกอะไรออกมาโพสต่อ

...บทความนี้ไม่ออกแบววิชาการ เน้นบอกเล่าประสบการณ์ผู้เขียนแบบถึงกึ๋นเท่านั้น โปรดใช้วิจารณญาณในการอ่าน ผู้อ่านที่ทำโปรเจคไม่คืบหน้าควรได้รับคำแนะนำจากอาจารย์ที่ปรึกษา :)