บ่นนิดๆ สะกิดหน่อยๆ (Core Programming)

เมื่อ blog อันเมื่อกี้ไม่ได้ทักทายมาอันนี้ทักทายนิดดีกว่า

คือที่หายไปเพราะว่ามี project SAD แล้วเดี่ยวต้องทำ project Database ต่ออีก โอ้ววววววว ยังไม่พอนะท่านๆ ตอนนี้ทำ Project ขนาดใหญ่พอสมควร ทำคนเดียว อีก เวรกรรม เพราะว่าเพื่อนๆ ใน section และชั้นปีมันคงไม่มีใครเขียน PHP และทำงานบน MySQL ได้ (แค่ SQL ทำงานแบบ SELECT กว่า 80% ยังคงใช้งานไม่เก่งเพียงพอ ขื่นมาช่วยทำเกรงว่าเวลา train กับเวลาทำเอง จะพอๆ กันกลายเป็นงาน x2 ไป -_-”) แถมเขียน PHP แบบ OOP อีก ยิ่งไปใหญ่ เพราะอย่างที่บอกไป Concept OOP ถ้าคนไม่เข้าใจจะโคตร งง ผมก็ไม่ได้เก่งเท่าไหร่ แต่เอามาใช้งานได้ก็ถือว่า OK แหละ

คือเขียน PHP แบบ OOP นี่มันค้อนข้างจะผิดหลักพอสมควร (Version 4 ครับ) มันไม่ Encapsule เลย เซง แต่ก็พยายาม lock ตัวเอง และอื่นๆ ไม่ให้มันออกมานอก Class ได้แบบไม่ตั้งใจ ทุกๆ อย่างทำงานผ่าน Method หมด กันไว้ก่อน เพราะว่ามันปรับแต่งผ่าน Method ให้มันจัดการกับตัวแปรต่างๆ ได้ง่ายกว่าด้วย ขื่นให้ดึงไปใช้ได้ดื้อๆ มันจะมีปัญหาแน่นอน …. ตอนปรับแต่ง code บางคนที่มามอง class อาจดูโง่ๆ แต่ถือว่าเผื่ออนาคตดีกว่า มันไม่แน่ไม่นอน เพราะว่ายิ่งใกล้ทำ prototype ให้เค้ายิ่งมี request ที่ไม่ตรงกับ interfact และ operation ของเรามากขึ้น ยิ่งต้องเตรียมการไว้ก่อน จะได้สบายหน่อย

แต่ PHP แบบ OOP ถือว่าเขียนง่ายนะ สำหรับ Version 4 แต่ถ้า Version 5 ผมว่า OK กว่า แต่ว่าหา Server มา Run มันยากเลยต้องยึด เจ้า Version 4 ไปก่อนดีกว่า เพราะว่า Version 5 มันไปไกล และเขียนได้ดูเป็น OOP มาก และจัดการตัวแปร ง่ายกว่าเยอะ ทำให้ผมโปรแกรมภายในได้ง่ายกว่าเยอะเลย แต่ก็เล็กกับข้อกำหนดจุกจิกสักหน่อย แต่ไม่หวั่น เพราะว่าC++ มันมีเยอะกว่า เลยเฉยๆ ฮา …….

แต่เมื่อวานนี้คุยกับรุ่นน้องคนนึงมาคุยเรื่องเขียนโปรแกรมแบบ OOP ไม่รู้เรียนอีท่าไหน เอาตัวแปรมาใส่ Public เพียบเลย แถมถามกลับไปว่ารู้จักใช้ get/set ป่าว ตอบกลับมาแบบ งง ว่า “คือไร” ไอ้เราก็เซงเลยดิ อืมมมมม นะ

คือไม่ใช่อะไรหรอก การจัดการตัวแปร ต้องผ่าน method ที่ขึ้นต้นด้วย get (เข้าถึง) และ set (ตั้งค่า) ด้วยเหตุผลว่า การเข้าถึงแบบ method นั้น เราสามารถโปรแกรมได้ว่าจะ get/set แล้วมีขั้นตอนอย่างไรบ้าง โดยที่ข้อมูลที่ “ตั้งค่า” และ “เข้าถึง” นั้นจะถูกนำไปใช้งาน หรือได้รับออกมาได้ถูกต้องตรงตามที่มันควรจะเป็นไป เช่น(ตัวอย่าง PHP นะ)
$x->set_month(15); // มันจะไม่ได้ เพราะว่าใน method นี้จะมีการตรวจเช็คว่า value >0 and <13 อยู่ และ return หรือ echo ออกมาว่า เกินกว่าจำนวนเดือนที่เป็นจริง แต่ถ้าเป็น
$y->date_month = 15; // มันจะใส่ได้ และไม่ขึ้น error หรือ echo อะไร เพราะว่ามันเป็นการใส่ค่าไปตรงๆ โดยไม่มีการตรวจสอบแบบด้านบน

ส่วน get ก็ประมาณเดียวกัน แต่ว่าการ get อาจจะเอามาใช้ในการแปลงตัวแปรต่างๆ ได้เช่นกัน ประมาณว่า
echo($x->get_month_name(12)); // มันก็จะเอา 12 ไปเทียบกับ string แล้ว return ค่าเป็นชื่อเดือนแทน อะไรประมาณนี้

เห็นแมะ ถ้าจัดการผ่าน method มันจะทำให้เราเขียนจัดการตัวแปรเข้า และออกจาก object ได้ง่าย และถูกต้องตรงตามความจริงได้ง่ายๆ เลย

ใครคิดว่า OOP มันเป็นอะไรที่ยาก ลองศึกษาและคิดใหม่น่าจะดีนะ ;)

Project Doucument กับ OpenOffice.org 2 Beta

นี่เป็นครั้งแรกที่ผมเอางานที่เกี่ยวกับการชี้เป็นชี้ตายมาฝูกติดกับฝั่ง OpenSource ทีเดียว

ซึ่งสำหรับ OpenOffice.org 2 Beta Writer นั้น ในที่สุดทุกอย่างก็ OK ในด้านการทำงาน แต่ไม่เสถียรภาพบางส่วน -_-”

ในด้านการตอบสนองต่างๆ ในด้าน Feature ที่เอามาทำงาน Document นั้นถือว่าครอบคลุมและทำงานได้ค่อยข้างครบ แต่คงน้อยกว่า Microsoft Word 2003 พอสมควร แต่การทำทั้ง Index และการทำ Caption ต่างๆ ก็มีมาให้ครบ แต่ดีกว่านิดๆ ตรงที่ Export เป็น PDF ได้เลย และตัว Color Management ใช้ได้ สี่ไม่เพี้ยนเมื่อ Export ออกมา

ในส่วนการ Format Profile นั้นทำได้ OK แต่ก็มีผิดพลาดพอสมควรนิดๆ ในงานด้านนี้ (อ้าวยังไงหว่าตู T_T) แต่พอรับได้แก้ไขสักพักก็ OK

และสุดท้ายเสถียรภาพยังคงทิ้งห่างจาก Microsoft Word พอสมควรทีเดียว แต่ดีตรงที่ Recovery Document ทำงานได้ดีเลยรอดไป เพราะว่าทำงานไปๆ มาๆ แฮงไปซะงั้น ทำให้งานเสร็จช้ากว่ากำหนดไป 30% ทีเดียว (ทำให้เรานอนเช้าแทนที่จะแค่นอนดึก T_T) เซงๆ เลยตรงส่วนนี้ แต่ผมคงไม่โทษใครเพราะว่ามันเป็น Beta Version มันคงแฮงๆ กันบ้าง แต่ถ้ามัน Release แล้วคงไม่แฮง ง่าย ๆ แบบนี้นะ ขอร้องเถอะ (ไม่อยากนอนเช้า)

ทำให้ตอนทำ Presentation File ต้องเปลี่ยนมาใช้ Microsoft Powerpoint 2003 แทน -_-”

เพราะว่า Impress จากที่ใช้มายิ่งกว่า Writer อีก แฮงกระจายกว่าเยอะ

หรือว่าเป็นที่การ config และ turning ระบบ Operating System ผมไม่ดี แต่คงไม่มั้ง ตัว OpenSource Software อื่นๆ ก็ทำงาน Work ดี รวมถึงตัวอื่นๆ ด้วย -_-”

แต่เอาเหอะ ทุกอย่างเป็นไปได้ด้วยดี ส่งไป Defent แล้วผ่านผมก็ถือว่า ok แล้วหล่ะ