ข้ามไปที่เนื้อหาหลัก

บทความ

กำลังแสดงโพสต์จาก 2014

พลังงานอัจฉริยะ

พลังงานอยู่รอบตัวเรา แต่จะทำยังไงให้พลังงานนั้นเกิดประโยชน์กับชีวิตประจำวันของเรา อัจฉริยะสิ่งประดิษฐ์ ตอน กำเนิดพลังงานอัจฉริยะ: http://youtu.be/augWwZsh52s

สร้างเช็ควาล์วด้วยลูกแก้ว และขวดพลาสติกเหลือใช้

ล้มเหลวครั้งที่ 1 ลูกแก้วใช้เป็น foot valve ได้ แต่ใช้แทน swing check valve ไม่ได้ การทดลองครั้งต่อไป ทำสปริงเช็ควาล์วจากท่อ pvc เพื่อใช้แทน swing check valve

data provider or other service returned an e_fail status vb6

เมื่อโปรแกรม VB6 ที่ใช้งานกับ MySQL เกิด error ข้อความว่า "data provider or other service returned an e_fail status vb6" ไม่มีไรมากกับปัญหานี้ แค่เซ็ตค่าในฟิลด์วันที่ให้ Default เป็นค่า NULL ก็เรียบร้อย

การตั้งคำถามที่ไม่ชัดเจน จะทำให้การหาผลลัพธ์นั้นยากเย็นขึ้นอีกหลายเท่า

ต้องขออภัยหากข้อมูลนี้ ไปคล้ายกับการตั้งคำถามของหลายๆคน ต้องขอบอกว่าผู้เขียนไม่มีจุดประสงค์ในแง่ร้ายใดๆกับผู้ที่ตั้งกระทู้ในแนวนี้ เพราะเข้าใจว่าบางครั้งเราก็ไม่สามารถจะนำข้อมูลทั้งหมดมาตั้งคำถามได้ แต่บางครั้งการถามคำถามที่ไม่ชัดเจนในวัตถุประสงค์ ก็ทำให้ผู้ที่จะช่วยตอบคำถาม เกิดความสับสน และงงไปตามๆกัน $n=0; $num = 0; $result = mysql_query("SELECT * FROM my_table WHERE my_date = DATE(NOW()) "); while($row = mysql_fet_array($result)){ $num = $n++; } echo $num; "มีวิธีที่จะสามารถ echo $num; ไว้ที่ บรรทัดบน loop while มั้ยครับ" การยกตัวอย่างนี้คือคำถามที่ผมเห็นแล้วงงจากเว็บบอร์ดที่อื่น เลยไล่อ่านดูความคิดเห็นทั้งหมด สุดท้ายก็เข้าใจได้ว่า ต้องการแสดงผลรวม หรือข้อมูลก่อนรายละเอียด และวิธีแก้ปัญหาโจทย์ข้อนี้ก็คือ ให้เก็บข้อมูลไว้ในอาร์เรย์ก่อน แล้วค่อยนำมาแสดงผลก็จะสามารถแสดงผลก่อนตารางรายละเอียดทั้งหมดนั่นเอง บางทีการถามคำถาม ก็เป็นสิ่งที่ยากกว่าการหาคำตอบของโปรแกรมเมอร์

ส่งภาพจากมือถือผ่าน bluetooth เข้าไปยังเครื่องคอมพิวเตอร์ Ubuntu 14.04

เธอ : "นี่ตัวเอง เค้าถ่ายรูปเซลฟี่มาสวยมากมายเลยนะ เดี๋ยวเค้าส่งไปเก็บไว้ในเครื่องตัวเองเลยนะ -O-" ผม : "ส่งมาเลยจ๊ะ เค้าเปิดบลูทูธเรียบแล้ว ชื่อ ubuntu-0 นะ ^^" เธอ : "ส่งไม่เห็นได้เลยอ่ะ เนี่ยๆส่งเข้าเครื่องเค้าไม่เป็นไรเลย" ผม : "เดี๋ยวก่อนนะ ขอตั้งค่าก่อนเค้าก็เพิ่งหัดใช้ Ubuntu 14.04 ใหม่นะ เลยยังตั้งค่าไม่ค่อยเป็น"" เธอ : "เห็นไหม บอกแล้วไงว่าอย่าใช้ Ubuntu" ผม : นี่ อึ้งไปเลย O_o!! ผมไม่รอช้ารีบเปิด Google Chrome แล้วค้นหาทันทีในช่อง Address bar โดยไม่ต้องรอช้า ไม่ต้องเข้าไปหน้าเว็บ Google.co.th แต่อย่างใด จากนั้นก็จิ้มลงไป จึ๊กๆๆๆ "ubuntu 14.04 receive bluetooth file" เท่านั้นแหละครับ ข้อมูลที่ต้องการก็หลั่งไหลขึ้นมาแสดงบนหน้าจอ และก็เป็นธรรมดาที่เราจะเลือกดูเว็บไซต์แรกๆก่อนเสมอ และผมก็ได้รู้ว่า ต้องทำการอนุญาตให้รับไฟล์จาก Bluetooth ก่อนจึงจะสามารถรับไฟล์จากมือถือได้ โดยไปกำหนดที่ "Personal file Sharing" โดยเช็กถูกที่ช่อง "Receive files in downloads folder over bluetooth"

ฐานข้อมูกับการกำหนดขนาด length

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

โปรแกรมเมอร์เบลอๆ

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

เร็ว ช้า หนัก เบา

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

โปรแกรมเมอร์ กับงานประจำ

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

การพูด กับการเขียน การสื่อสารที่ประมวลผลต่างกัน

หลายคนมักจะสงสัยว่าทำไมผมชอบโพสต์เรื่องราวต่างๆบนเฟซบุ๊กของเพื่อน ทั้งที่บางทีก็คุยกันไปเลยก็ได้ไม่ต้องเสียเวลาพิมพ์ ไม่ต้องให้คนอื่นได้เห็นหรอก สำหรับเรื่องที่ไม่ควรให้คนอื่นรู้ ผมก็ไม่พิมพ์ครับแต่เรื่องที่พิมพ์ที่โพสต์เป็นเรื่องที่อยากสื่อให้คนอื่นได้อ่านด้วยบ้างก็เท่านั้นเอง ส่วนเรื่องที่ทำไมไม่พูดจะได้สื่อสารกันซึ่งๆหน้า ผมอยากบอกว่าการพูด กับการเขียน เป็นการสื่อสารที่ให้ผลลัพธ์ต่างกัน เวลามีคนพูดอะไรให้ผมฟัง ผมจะคิดตามคนพูด แต่เวลาที่ผมได้อ่านผมจะ คิดตามสิ่งที่ผมเข้าใจ เรื่องที่จะเข้าใจถูกหรือผิดไม่ใช่ประเด็น แต่สำคัญตรงที่เราได้คิดเอง ได้จินตนาการเองได้มีสมาธิในการคิดแย้งกับข้อความที่อ่าน มันก็เหมือนกับการประมวลผลของโค๊ด JavaScript และ PHP ที่ทำงานกันคนละที่ภาษาหนึ่งอยู่ฝั่งเครื่องผู้ใช้ อีกภาษาหนึ่งอยู่ฝั่งเครื่องผู้ให้บริการ Server จะใช้ทรัพยากรต่างกัน และบางเรื่องก็มีสิ่งที่ต้องให้คิดมากกว่านั้น เช่นเรื่องของวันที่ เวลาของเครื่องเรากับเซิร์ฟเวอร์ย่อมไม่ตรงกันอยู่แล้ว ยิ่งเซิร์ฟเวอร์อยู่ต่างประเทศ หรือต่อให้ปรับเวลาชดเชยให้ตรงกัน แต่ถึงกระนั้นก็อาจจะคลาดเคลื่อนใน

เจอแล้วคีย์ลัดใน Ubuntu 14.04 คีย์ลัดสำหรับ Minimize All ที่ตามหามานาน

    หลายครั้งที่ผมเผลอตัวกด Super + M (หรือที่เรานิยมเรียกว่า Window Logo + M เพื่อเก็บหน้าต่างโปรแกรมทั้งหมดลงไปที่ Taskbar หรือ Minimize All นั่นเอง) แต่ปรากฏว่ามันไม่พับเก็บโปรแกรมต่างๆ แต่ดันเปิดตัวช่วยค้นหามาให้แทน      ใช้อยู่หลายวันจนจะครบเดือน ก็ยังไม่รู้จะค้นหาวิธีใช้อย่างไรดี ได้แต่กด Alt + Tab เพื่อเลื่อนไปยังคำสั่ง Show Desktop เพื่อพับหน้าต่างโปรแกรมต่างๆไปทั้งหมด      และแล้วในที่สุดก็ได้คีย์ลัดจนได้ เพราะผมอัพเกรดเวอร์ชั่นแล้วการตัดต่อวิดีโอมีปัญหา เลยตัดสินใจติดตั้งระบบปฏิบัติการใหม่ไปเลย จะได้ไม่มีปัญหาจุกจิกกวนใจในภายหลัง ใช้เวลาติดตั้งนานพอสมควร เพราะผมเลือกที่จะดาวน์โหลดโปรแกรมเสริมต่างๆสำหรับดูหนังฟังเพลงไปด้วยในตัว เลยต้องขึ้นอยู่กับความเร็วอินเตอร์เน็ต และแล้วช่วงเวลาล็อกอินเข้าระบบก็มาถึง เมื่อเปิดเข้ามาที่หน้า Desktop จะมีกล่องข้อความแสดงคีย์ลัดไว้เต็มเลยครับ กวาดสายตาอ่านภาษาอังกฤษอยู่นาน กว่าจะเจอสิ่งที่ตามหา ก็ตามในภาพเลยครับ ถ้าจะเก็บหน้าต่างโปรแกรมที่เปิดไว้ทั้งหมดให้กด Ctrl + Super + D ก็จะได้ตามที่ประสงค์ ^O^

ทำนา = เขียนโปรแกรม งานไหนหนักกว่ากัน ผลตอบแทนแบบไหนที่คุ้มค่ากว่ากัน

หลังจากที่ได้กลับไปเที่ยวบ้านภรรยาในช่วงสุดสัปดาห์อย่างต่อเนื่อง ผมบอกได้เลยว่าผมหลงเสน่ห์ทุ่งนาเข้าให้อย่างจัง บ้านผมเองก็จำได้ลางๆว่าสมัยเด็กเคยมีที่นาเหมือนกัน แต่มันนานมาแล้วปัจจุบันเจ้าของที่ซื้อไว้จะเป็นคนเดิมอยู่หรือไม่ก็ไม่ทราบได้ จากที่เฝ้ามองรวงข้าวงอกงามตามกาลเวลา สิ่งหนึ่งที่ผุดขึ้นมาในห้วงคิดก็คือ "ระหว่างที่เราทำงานทุกวัน 1 ปีมีรายได้หลักแสน กับการทำนาที่ได้ไม่กี่หมื่น" แบบไหนผลตอบแทนสูงกว่ากัน ทำงาน จันทร์-ศุกร์ ใน 1 ปี  จะใช้เวลาทั้งหมดเป็น 12 เดือน ทำนา ทำสวน + รับจ๊อบ  ใน 1 ปีทำนา 2 รอบ จะใช้เวลาเต็มๆรวมทั้งหมด 2-3 เดือน งานประจำรายได้ 200,000 ต่อปี ทำนา 5 ไร่ + รับจ๊อบ  50,000 + ???  ต่อปี พอสังเกตดีๆแล้ว ทำนาไม่ได้มีรายได้น้อยกว่ากันเลย ดูจากระยะเวลาที่ต้องลงแรงครับ จะเหนื่อยเฉพาะช่วงที่ปลูกและเก็บเกี่ยว ส่วนระยะเวลาระหว่างนั้นแค่ดูแลเป็นครั้งคราว ถ้าคิดระยะเวลาเป็นรายได้ 3 เดือนได้ 50,000 ถ้า *4 เพื่อให้เป็น 12 เดือน ก็จะได้เท่ากับ 200,000 เหมือนกัน - สบายใจ - มีเวลาอยู่กับครอบครัว - ไม่ต้องทนเหนื่อยเพื่อใคร - ไม่ต้องเครียดกับความคิดแ

คีย์เวิรด์ช่วยชีวิต "crystal report suppress not last page"

"น้องโปรแกรมเมอร์ครับ พี่รบกวนแสดงผลลัพธ์ให้ทีเหอะ นี่จะให้พี่นั่งกดเครื่องคิดเลขแล้วพิมพ์ดีดใส่เองหรือไงจ๊ะ" เสียงพี่แกดังแผ่วอยู่ข้างๆหู แม้ว่าเวลาผ่านไปหลายนาทีแล้วแต่เสียงนั้นยังก้องกังวานอยู่ในโสตประสาท เป็นความผิดผมเอง พอดีวันนี้มีหน้ารายงานรูปแบบใหม่ที่จะต้องนำเสนอผู้บริหาร แต่ในโปรแกรมยังไม่มีเมนูไหนให้รายงานที่ผลลัพธ์ตรงกับที่ต้องการได้ กระผมเลยต้องด้นสดทำออกมาเป็นรายงานคร่าวๆก่อน แต่ดันลืม บรรทัด SUMMARY  ไปได้นี่สิ ผมพยายามดำน้ำอยู่นานก็ไม่ได้สักที เพราะจำได้คร่าวๆว่าคราวก่อนเคยเข้าเมนูนั้น และเมนูนี้ แล้วก็จิ้มๆๆๆ ที่ปุ่มนี่ แต่เอ้า...คราวนี้ไม่ได้แฮะ ท่าไม้ตายเลยครับ Google.Com ค้นไปเลยแล้วเลือกรายการที่มาจากเว็บไซต์ StackOverflow.Com ก็ได้สิ่งที่ต้องการในบัดดล "crystal report suppress not last page" นี่ถ้าไม่มีอินเตอร์เน็ตนี่ผมแย่แน่ๆงานนี้ ^^;

ความผิดพลาด : ตอน โฟลว์ชาร์ตสำคัญนะ

"เมื่อเขาต้องแก้โค๊ดระบบคุมสต๊อควัสดุคงเหลือ แต่ด้วยความมั่นใจจริงเขียนต่อแบบไม่มีการวางแผนทำโฟลว์ชาร์ตก่อนใดๆ สุดท้ายเงื่อนไขหลุดกระจาย ตกม้าตายตอนจบ" ขณะที่กำลังเขียนโค๊ดตามรายการที่ต้องแก้ไขเพิ่มเติมในส่วนต่างๆอยู่นั้น เสียงหัวหน้าก็ดังขึ้นมาจากด้านหลังเล่นเอาขวัญกระเจิง "ทำไมเรียกรายงานวัสดุคงเหลือไม่ตรงกันสักทีเนี่ย ทำหลายรอบแล้วนะ ตัดยังไงก็ไม่ลดสักที ไม่พอยังไปโผล่ในบรรทัดใหม่แล้วยอดติดลบอีก เพี้ยนแล้วๆไม่มียอดใครจะไปเบิกได้" ผมเดินไปหาที่โต๊ะทำงานของหัวหน้า พยายามหาคำอธิบายเกี่ยวกับสิ่งที่เห็นตรงหน้า เนื่องจากการตัดสต๊อกผมจะใช้ราคาอ้างอิงไม่ได้ใช้เฉพาะรหัสสินค้า เพราะว่าเป็นระบบที่เรียกใช้ชั่วคราว ไม่มีหลักการ FIFO หรืออะไรใดๆทั้งสิ้น เหลือราคาไหน ตัดที่ราคานั้น "พี่ว่าน้องต้องปรับระบบครั้งใหญ่แล้วนะ เวลาเบิกจ่ายวัสดุก็ยาก ราคาโผล่มาให้เลือกเยอะแยะ ไม่รู้จะตัดราคาไหนก่อนราคาไหนหลัง" ผมได้แต่ตอบรับคำไปพลางคิดไปว่าเป็นเพราะอะไร และในไม่กี่วินาทีต่อมาก็คิดขึ้นได้ ไอ้การตัดสต๊อกนี่ยอมรับเลยครับว่ายังไม่เป็นสากลเท่าไหร่ แต่นั่นก็เป็นว

ขีดเขียนความคิด ลอจิกต่างๆ ก่อนเริ่มเขียนโค๊ดโปรแกรม

กระดาษแผ่นขนาดใหญ่โทนสีน้ำตาลอ่อนถึงอ่อนมากๆ ผมไม่รู้หรอกนะว่าชื่อเรียกอะไร แต่มันคือก้าวแรกของตัวอ่อนโปรแกรมเมอร์จนเป็นผมในทุกวันนี้ ไม่ว่าจะเป็นฐานข้อมูล หรืออัลกอริทึมที่จะใช้ แค่เขียนใส่มันเข้าไปให้เต็ม ก็จะมองภาพออกว่าโปรแกรมที่เราต้องการนั้นจะต้องเริ่มยังไง และสิ้นสุดในทิศทางไหน จากกระดาษแผ่นใหญ่เท่ากระดานไวท์บอร์ดเหล่านี้ ก็เริ่มเปลี่ยนแปลงไปเป็นกระดาษ A4 แผ่นเล็กๆ จากวันเป็นเดือน จากเดือนเป็นปี และในที่สุดก็ใช้โปรแกรมอื่นๆเข้ามาช่วยงานจนคล่องมือ แม้นทุกวันนี้จะไม่ได้ขีดเขียนความคิดใดๆลงไปบนกระดาษแผ่นใหญ่แบบนี้แล้ว แต่ความทรงจำเริ่มแรกเหล่านั้นยังคงอยู่ไม่รู้ลืม "น้องเขียนลงไปเลยนะ ปฏิทินที่พี่จะให้สร้างเนี่ยน้องว่าควรจะมีอะไรบ้าง" ...ครุ่นคริดอยู่หลายวินาที.... "ถ้าคิดยังไม่ออกพี่ให้ข้อมูลนี่ไปก่อนเลย หนึ่งนะหัวข้อ สองนะวันที่ สามนะเจ้าของเรื่อง สี่นะผู้รับ ฯลฯ" "พี่ครับ ผมขอเอาส่วนนี้รวมกันได้มั้ยครับ เวลาเขียนโค๊ดจะได้ไม่ต้องค้นหาหลายรอบ" "ตามใจน้องเลย แต่ถ้าแยกออกไปมันจะยืดหยุ่นกว่านะ" ณ วันนั้นผมไม่เข้าใจเท

สร้างบาร์โค๊ด (Barcode) ด้วย PHP

สำหรับวิธีการค้นหาซอร์สโค๊ดที่จะนำมาใช้งานนั้นให้ค้นหาด้วคำว่า "php สร้างบาร์โค๊ด" รับรองได้มาเป็นกระบุงครับ มีทั้งกระทู้ถามตอบปัญหา และวิธีสร้างบาร์โค๊ด ตลอดจนเว็บไซต์ที่สอนประยุกต์ใช้งานที่หลากหลายขึ้นไปอีกขั้น ยังไงก็ลองไล่ดูเองนะครับ ส่วนตัวผมแล้วยังไม่ได้ใช้งานเลยไม่ได้ศึกษาลงลึกไปถึงขนาดนั้น ^^ ลิงค์สำหรับดูวิธีสร้างบาร์โค๊ดด้วย tcpdf นะครับ http://www.tcpdf.org/examples.php http://www.tcpdf.org/doc/code/classTCPDFBarcode.html นอกจากนี้ก็ยังมี PHP PDF Libraries อีกหลายตัวที่สามารถนำมาสร้างบาร์โค๊ดได้นะครับ  tcpdf.org PHP  CI  MANIA   -  PHP Code Generator  โปรแกรมช่วยสร้างโค้ด  "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    http://fastcoding.phpcodemania.com

จะเขียน PHP บนมือถือยังไงดี

ผมลองค้นหาด้วยคำว่า php on androide และ lampp for androide ใน google play store ก็ได้เจอกับแอพฟรีบ้าง เสียตังค์บ้าง ซึ่งหลังจากที่ลองติดตั้งก็พบว่าใช้พื้นที่เยอะทีเดียว และอีกอย่างการพิมพ์บนมือถือก็เป็นเรื่องที่ลำบากทีเดียว จึงนึกถึงโปรเจ็กต์ของตัวเองขึ้นมาได้ ถ้าเราเขียนโปรแกรมโดยที่ไม่ต้องพิมพ์ก็จะสามารถใช้งานบนมือถือได้ง่ายขึ้นอยู่กับ และถ้ามีเว็บโฮสติ้งด้วยแล้วสามารถเขียนโปรแกรมผ่านอินเตอร์เน็ตที่ไหนก็ได้ หลักการง่ายคือสร้างไอคอนให้คลิก แล้วก็เขียนโค้ดให้ทำการสร้างโค้ดที่เราต้องการให้อัตโนมัติ เมื่อจบกระบวนการก็เพียงแค่บันทึกแล้วเรียกหน้าเว็บที่ต้องการทดสอบขึ้นมาแสดงผลได้ทันที ตอนนี้ยังติดเรื่อง drag &drop ทำให้ยังไม่คืบหน้าเท่าที่ควร คงต้องตัดเรื่องนี้ออกไปก่อน ทำระบบแบบธรรมดาไปก่อน แล้วค่อยพัฒนาอินเตอร์เฟซทีหลัง อีกไม่นานคงจะได้เห็นตัวต้นแบบ ที่จะสร้างขึ้นมาแบบบ้าน ให้ลองได้ใช้กันดู -------------------------------------------- ติดตามเรื่องราวการเขียนโปรแกรม PHP ได้ที่ https://www.youtube.com/user/PHPcodingAndDesign/channels เตรียมตัวก่อนเขียน PHP 5.5 https:

แนะนำการใช้ PHP TCPDF แก้ปัญหาสระอูหาย

สำหรับใครที่ต้องการฟอนต์ th sarabun (ไทยสารบัญ) เพื่อใช้งานกับ TCPDF ลองเข้าไปดูที่นี่ >> http://www.thaicreate.com/php/forum/109331.html สำหรับวิธีนำ tcpdf ไปใช้กับ codeigniter ลองอ่านเวอร์ชั่นภาษาอังกฤษดูครับ >> https://github.com/EllisLab/CodeIgniter/wiki/TCPDF-Integration แล้วสุดท้าย ถ้า PDF ออกมาแล้วสระอูหาย ไม่ต้องตกใจไปนะครับ ลองกับเว็บบราวเซอร์ทุกตัวดูก่อน ว่าผลลัพธ์เหมือนกันหรือไม่ เพราะผมเจอปัญหาสระอูหาย (สระอุ ยังแสดงได้ แปลกแฮะ) ในเว็บบราวเซอร์ Firefox เท่านั้น ไปลองกับ Chrome และ IE ยังแสดงผลถูกต้อง วิธีแก้ปัญหาของผมก็คือ ลองบันทึกเป็นไฟล์แทน $ file = "Download/My-File-Name.pdf";   $pdf -> Output ( 'Download/My-File-Name.pdf' , 'F' );   จากนั้นก็ Force Download ไปเลยครับ header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . urlencode(' My-File-Name .pdf')); header("Content-Type: application/octet-stream"); header(&qu

เมื่อไหร่ถึงจะต้องแยกโค๊ดออกไปสร้างฟังก์ชั่นใหม่?

       สำหรับการเขียนโปรแกรมนั้น เมื่อเราต้องเรียกใช้ข้อมูลจากฐานข้อมูลที่เดียวกันบ่อยๆ เราจะใช้วิธีสร้างฟังก์ชั่นแยกไปไว้เป็นไฟล์ต่างหาก แล้วหน้าไหนที่ต้องการก็โหลดไฟล์นี้ไปใช้งาน ตัวอย่างเช่น การนำรหัสสินค้า ไปค้นหาข้อมูลสินค้าต่างๆ เช่น สี ขนาด ราคา หรือชื่อสินค้ารหัสนั้นๆ เราก็เพียงส่งรหัสสินค้าเข้าไปฟังก์ชั่นที่เตรียมไว้ ก็จะได้ข้อมูลที่ต้องการมาทันที และหน้าอื่นๆ ก็สามารถโหลดไฟล์ฟังก์ชั่นนี้ไปเรียกใช้ได้ทันทีโดยไม่ต้องมาเขียนคำสั่งเรียกจากฐานข้อมูลใหม่ทุกครั้ง        นอกเหนือจากนั้นยังมีส่วนของการตรวจสอบเงื่อนไข if ..... else ที่หลายครั้งก็จำเป็นต้องสร้างเป็นฟังก์ชั่นเพื่อเรียกใช้ในหน้าเดียวกัน ในหลายๆส่วนด้วยกัน เช่น ตัวอย่างการตรวจสอบสถานะการยกเลิกรายการ $my_status = 9; $status = ""; if($my_status == 9){      $status = "Cancel"; } echo $status; หากมีการเรียกใช้จากหลายๆที่ เราก็ควรจะสร้างเป็นฟังก์ชั่นดีกว่า เพราะเมื่อเวลาผ่านไป การตรวจสอบสถานะอาจจะมีเงื่อนไขเพิ่มเข้ามาใหม่ด้วย ก็จะต้องมาไล่แก้โค๊ดกันหลายจุด แต่ถ้าสร้างเป็นฟังก์ชั่น ก็แก้โค๊ดเพ

การปรับโค๊ดที่ใช้แสดงผลในรูปแบบใหม่ ต้องมีการกำหนดวันที่เริ่มใช้งานด้วย

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

Blue Griffon โปรแกรมสำหรับเขียนโค๊ด HTML และจัดวางออกแบบหน้าเว็บแบบคลิกวาง ใช้แทน Dreamweaver บน Ubuntu ก็ค่อนข้างดีทีเดียว

โปรแกรมใช้ทดแทน Dreamweaver สำหรับใช้บน Ubuntu สำหรับโปรแกรม Blue Griffon ได้ลองใช้งานดูแล้วค่อนข้างจะใช้ง่ายกว่าโปรแกรมแจกฟรีตัวอื่นๆ และมีเวอร์ชั่นสำหรับ Linux ด้วยนะครับ จากข้อมูลในหน้า Download จะรองรับถึง Ubuntu 13.04 แต่ลองใช้กับ Ubuntu 14.04 ก็ไม่มีปัญหาแต่อย่างใด สำหรับการติดตั้งนั้น กรณีดาวน์โหลดมาแล้วติดตั้งเอง ด้วยวิธีจากเว็บนี้นะครับ http://askubuntu.com/questions/304636/need-help-installing-bluegriffon หากติดตั้งเองไม่ได้(ผมก็ติดตั้งไม่เป็นเหมือนกัน ~_~") ให้ลองทำตามวิธีที่ 2 นี้ดูอีกที http://ubuntuhandbook.org/index.php/2013/07/install-bluegriffon-ubuntu-ppa/ สุดท้ายละ ผมใช้วิธีนี้ http://linuxg.net/how-to-install-bluegriffon-1-7-2-on-ubuntu-14-04-ubuntu-12-04-and-derivative-systems/ รับรองใช้งานได้เลยครับ ^^

การเขียน if หรือ else เกี่ยวกับระยะเวลามันมีสิ่งที่ต้องคิดประกอบด้วยนะ

"ทำไมไม่มีความเคลื่อนไหว แต่ผ่านเงื่อนไขเราไปได้" เรื่องมีอยู่ว่า จะเขียนโค๊ดตรวจสอบเงื่อนไขตรวจสอบความเคลื่อนไหวของข้อมูล ถ้าผ่านมาเกิน 6 เดือนให้แจ้งเตือนถึงสิ่งที่อาจจะทำให้เกิดข้อผิดพลาด หากผู้ใช้ยังฝืนดันทุรังใช้ข้อมูลนั้นต่อไป IF Month > 6 THEN      DISPLAY แบร่ๆๆๆ ข้อมูลเก่าเกินไปแล้วนะ ไปตรวจสอบหน่อยซิว่ายังใช้ได้จริง END IF Month = ระยะเวลาที่ทำรายการครั้งสุดท้ายเทียบกับปัจจุบัน ถ้ากำหนดให้วันที่ล่าสุด คือ 2014-05-15 และวันที่ปัจจุบัน คือ 2014-09-04 Month จะมีค่าเท่ากับผลต่างของเดือนคือ 3 เดือนกว่า ซึ่งจะไม่นับเศษ Month ก็จะได้เท่ากับ 3 กรณีนี้ก็คือสามารถทำรายการได้ปกติ เพราะว่ามีการทำรายการไม่เกิน 6 เดือน นั่นก็คือข้อมูลยังใหม่ๆสดๆร้อนๆอยู่นั่นเอง แล้วถ้าเพิ่งผ่านมาไม่กี่วันอย่างกรณีนี้ล่ะ ถ้ากำหนดให้วันที่ล่าสุด คือ 2014-09-01 และวันที่ปัจจุบัน คือ 2014-09-04 เห็นมั้ยผ่านมาแค่ 4 วัน ผลต่างของเดือนก็คือ 0 ซึ่งก็ยังไม่เกิน 6 เดือน ก็ทำรายการได้ปกติ และแล้วก็เกิดปัญหากับเลข 0 ขึ้นจนได้ กรณีที่ข้อมูลเก่า เพิ่มเอาไว้เฉยๆ ไม่ได้ทำรายการ

The last programmer : โปรแกรมเมอร์คนสุดท้าย

นั่งแก้โค๊ดจนแก่ไปอีกปี -O- วันนี้อยู่ดีๆก็มีแววว่าจะได้กลายไปเป็นแอดมินนั่งเฝ้าโปรแกรมคนอื่นแทน รู้สึกรับมือไม่ถูกแฮะ หรือบางทีอาจมีเซอร์ไพร์กว่านั้น "บริษัทมีทีมซัพพอร์ตที่พร้อมตอบปัญหา 24 ชั่วโมงโดยท่านไม่ต้องกลัวว่าโปรแกรมมีปัญหาแล้วจะไม่มีใครให้คำตอบท่าน" และแล้วทุกคนก็จะสงสัยว่า "แล้วโปรแกรมเมอร์คนเก่าล่ะจะทำยังไง???" "ก็เลิกเป็นโปรแกรมเมอร์ที่เขียนโปรแกรมไปก็มีแต่เออเร่อ ไปเป็นนักวิชาการคอมพิวเตอร์ตัวเต็มวัยซะทีไงล่ะฟะ .\ /." #ตลกเจ็บ #ขำๆก่อนนอน

สไตล์การตั้งชื่อตัวแปร และชื่อฟังก์ชั่น สำหรับเขียน PHP

กาลครั้งหนึ่ง นานมาแล้ว น้องครับพี่ขอแบบฮังกาเรี่ยนสไตล์นะ ทั้งชื่อฟังก์ชั่นและตัวแปร ผม ???? ค้นไปค้นมาได้ข้อมูลประเทศฮังการีมาซะงั้น O_o!? แต่จากบทความนี้คิดว่าตัวเองคงติด Hungarian Notation ไปซะแล้ว แต่พอเขียน PHP กลับกลายเป็น Camel Case ก็มี พอจับ CodeIgniter ก็จะหันไปใช้ Underscores ซะงั้น อาจจะตรงกับสุภาษิตที่ว่า "เข้าเมืองตาหลิ่ว ต้องหลิ่วตาตาม" อ่าน Case ต่างแบบเต็มๆได้ที่นี่ http://www.unzeen.com/article/1342/

การเขียนโปรแกรม PHP OOP กับการวิเคราะห์วงจรไฟฟ้ากระแสตรง

E = I*R I  = E/R R = E/I จากสูตรด้านบนหลายท่านคงจะรู้จักกันดี หลังจากที่ปล่อยบล็อกเขียนโปรแกรมที่เว้นช่วงไปนาน เลยคิดขึ้นได้ว่า อยากจะลองเขียนโปรแกรมคำนวณตามสูตรต่างๆ ที่เคยเรียนมา เพื่อจะมีใครสนใจ หรือนำไปใช้ประโยชน์ได้บ้าง จากเมื่อก่อนไม่อยากทำการบ้านแคลคูลัสจนถึงขนาด จะเขียนโปรแกรมคำนวณอัตโนมัติ แต่ด้วยตอนนั้นยังเขียนโปรแกรมไม่เก่งจึงเว้นไป ตอนนี้เลยอยากจะลองกลับไปทำตามแนวคิดในสมัยนั้น แต่กลับพบปัญหาว่า ลืมสูตรไปหมดแล้ว!! ฺ คิดว่าคงจะต้องค่อยๆเรียนรู้กันไป เพื่อทำสิ่งที่ตนเองชื่นชอบอย่างใจเสียที

MVC คืออะไร จะประยุกต์ใช้ยังไงให้ตอบโจทย์ความต้องการของตัวเอง

มาต่อกันที่เรื่องของ MVC  หากใครเคยได้ยินเรื่องหลักการ Pair programming มากันบ้างแล้ว แนวคิดการเขียนโปรแกรมแบบ MVC ถึงไม่ใช่ก็ใกล้เคียงกัน เพราะทุกคนจำเป็นจะต้องรู้สิ่งที่อีกคนกำลังทำ หากซอร์สโค๊ดที่ Model ไม่สนับสนุนการทำงานในส่วนของ Controller นั่นก็อาจจะหมายถึงว่า กำลังเดินผิดทาง ซึ่งก็บอกไม่ได้ว่า M หรือ C ที่กำลังสับสน ดังนั้น ไม่ว่าใครทำอะไรก็จะรู้และเข้าใจกันหมดรวมถึงคนที่รับผิดชอบในส่วนของ View ด้วย ว่ามีอะไรให้ดึงไปใช้ได้บ้าง   ปัญหาหนึ่งที่เคยเจอก็คือ ในบริษัทมีการพัฒนาโปรแกรมอยู่ 3 ระบบด้วยกัน 1) โปรแกรมขาย 2) โปรแกรมศูนย์บริการ 3) โปรแกรมสนับสนุนการทำงานภายในองค์กร(HR, Account รวมอยู่ในนี้ด้วย)   ทุกครั้งที่สรุปงาน ทีมผมจะพบว่าลกทีมทำงานช้า แต่ก็ไม่อาจจะหาสาเหตุได้ว่าช้าเพราะอะไร เพราะเขียนโค๊ดคนละส่วนกัน และเมื่อหัวหน้าถามผมเกี่ยวกับซอร์สโค๊ดที่ลูกทีมใช้ และวิธีเขียนก็พบว่าซอร์สโค๊ดสุดแสนจะวุ่นวาย ไล่โค๊ดกันจนลูกตาแทบถลนออกมา (เวอร์นิดๆ แต่ก็ใกล้เคียง)   จากนั้นก็เริ่มมองหาวิธีที่จะแก้ปัญหาในส่วนนี้ ก็ได้หลักการ MVC นี่แหละครับที่น่าสนใจที่สุด คือ

การเปลี่ยน Encoding Character set ด้วย notepad++ (ISO 8859-1 to UTF-8 )

กรณีที่ต้องคัดลอกซอร์สโค๊ดจากโปรแกรมอื่นๆ แล้วภาษาไทยเป็นภาษาต่างดาวอ่านไม่ออก ให้ลองเอาไปแปลงด้วยโปรแกรม notepad++ ดูนะครับ 1. สร้างไฟล์ขึ้นมาบันทึกให้เรียบร้อย จากนั้นนำข้อความวางลงไป 2. เปลี่ยน Char set เป็น Encoding ตัวเดิมที่มาจากโปรแกรมต้นทาง จะเห็นว่าข้อความจะเปลี่ยนไป ให้ทำการวางข้อความที่คัดลอกมาแทนที่ใหม่ทั้งหมด (กรณีนี้ต้นทางเป็น ISO 8859-1) 3. หลังจากวางข้อความแล้ว ถ้าข้อความเป็นภาษาไทยให้เลือก Char set อีกครั้งเป็น tis-620 4. ก็จะได้ข้อความภาษาไทย ถ้าหากต้องการแปลงเป็น utf-8 ให้คัดลอกข้อความชุดนี้ไว้ก่อน แล้วก็เปลี่ยน Encoding เป็น UTF-8 without BOM แล้วก็วางข้อความทั้งหมดแทนที่เดิม    ทั้งหมดก็มีเพียงเท่านี้แหละ หาวิธีมานานในที่สุดก็แปลงสำเร็จซะที จุดที่สำคัญที่สุดคือตอนเรื่อง Encoding ต้นทางครับในตัวอย่างนี้ต้นทางผมเป็น  ISO 8859-1 ซึ่งน่าจะเป็นค่ามาตรฐานของภาษาไทยในโปรแกรม IDE ตัวอื่นๆ สำหรับเครื่องมือเขียนโค๊ดท่านใดเลือก UTF-8 ได้ตั้งแต่แรกก็ถือว่าโชคดีไปนะครับ PHP  CI  MANIA   -  PHP Code Generator  โปรแกรมช่วยสร้างโค้ด  "

VB6 error with Left function

 วันนี้ผมวุ่นวายอยู่กับหน้าจอทั้งวัน อ่านโค๊ดเขียนโค๊ดแก้โค๊ด สุดท้ายก็ได้เวลาทดสอบซะที พอเริ่มรันโปรแกรมแค่นั้นแหละครับ errror ครับท่าน กด debug ก็พบกับข้อความแจ้งเตือน Selection Fomula ไม่ถูกต้องซะงั้น นึกขึ้นได้ว่าเคยเจอกรณีนี้บ้างแล้วเลยค้นดูในบล็อกนี้ แล้วก็รู้ว่า Crystal Report ใช้ Between ไม่ได้นะ มันต้องเป็น  In Date() ร่วมกับ To Date()   จัดการตามนั้นเรียบร้อย รันไปอีกก็เจออีกว่าต้องแยกวันที่ใหม่ โอเคแยกก็แยก ลองทดสอบโค๊ดด้านล่างนี้เพื่อแยกเดือน ออกมาดูผลลัพธ์   Dim txtMyDate As String txtMyDate = "2014-05-21" MsgBox Left(txtMyDate, 6, 2) ทำไม? ทำไม? error อยู่นั่นแหละ ตูผิดตรงไหนเนี่ย ก็แค่ให้แสดงเดือนจากวันที่ที่ก ำหนด "โดยตัดจากด้านซ้าย ตัวที่ 6 ไปอีก 2 ตัว" ฮือๆๆๆ เวรกรรม... ตัดแบบนี้เขาไม่เรียกว่าตัดจากซ ้ายไปกี่ตัวหรอกนะ เขาเรียกว่าตัดจากตำแหน่งไหน ไปกี่ตัว   เขาใช้ Mid() กันเว้ยเฮ้ย .\ /.    

UBUNTU 14.04 กับการติดตั้งโปรแกรมเพื่อเขียน PHP (5.3) ด้วย XAMPP For Linux

1) ติดตั้ง lampp โดยเลือกแพกเกจที่มี PHP เวอร์ชั่น 5.3.8 1.1) ให้ดาวน์โหลดไฟล์จากเว็บ https://www.apachefriends.org/download.html เลือกเวอร์ชั่น xampp-linux-1.7.7.tar.gz ดาวน์โหลดเสร็จย้ายไปที่ home 1.2) แตกไฟล์ไปที่ /opt     sudo tar xvfz xampp-linux-1.7.7.tar.gz -C /opt 1.3) เริ่มทำงาน     sudo /opt/lampp/lampp start 1.4) กำหนดรหัสผ่าน     sudo /opt/lampp/lampp security อ้างอิง : http://www.youtube.com/watch?v=xaDzyo0ObvU&list=PLN-8Ywrbia66ZmYKdeu7aPEMAzd4M82IT&index=2 2)กำหนดสิทธิ์ให้เรียกไฟล์ได้ 2.1 To change all the directories to 755 (-rwxr-xr-x):     find /opt/lampp/htdocs -type d -exec chmod 755 {} \; 2.2 To change all the files to 644 (-rw-r--r--):     find /opt/lampp/htdocs -type f -exec chmod 644 {} \; อ้างอิง : http://stackoverflow.com/questions/3740152/how-to-set-chmod-for-a-folder-and-all-of-its-subfolders-and-files-in-linux-ubunt 3) ตั้งค่าให้ Start lampp อัตโนมัติ(เมื่อเปิดเครื่อง) 3.1) Open terminal and run fo

ก้าวแรก กับอาชีพโปรแกรมเมอร์

ทำงานมาก็สี่ปีแล้วยังไม่มีแฟ้มสะสมผลงานของตัวเองเลย ถ้าจะให้ไปแข่งกับใครเขาผมคงสู้ไม่ได้เลยแม้แต่น้อย ยิ่งถ้าเป็นเมืองใหญ่ก็คงจะตกกระป๋องไปตามระเบียบ ย้อน กลับไปเมื่อตอนจบมาใหม่แอบหวั่นใจ ไม่รู้จะไปเป็นช่างซ่อมคอมพิวเตอร์ที่ไหนได้บ้าง เพราะงานหายากเหลือเกินและไม่อยากจากบ้านเกิด ไม่อยากเอาชะตาชีวิตน้อยๆไปฝากไว้กับเมืองใหญ่ ส่วนตัวแล้วให้ความสนใจกับ PHP เป็นพิเศษแล้วก็พอที่จะเดินบนสายทางนี้ได้บ้าง "น้องรู้จัก jQuery มั้ย" คำถามแรกที่ทำให้ผมสูญเสียความมั่นใจไปเลยทีเดียว "น้องลองไปศึกษาดูนะ อาทิตย์หน้ามาสมัครใหม่" ผม ไม่กลับไปที่นั่นอีกเลย คำถามมันวนเวียนอยู่ในหัวตลอด ผมค้นหาทั้งในอินเตอร์เน็ต และซื้อหนังสือมาอ่านจนสามารถเรียกความมั่นใจกลับคืนมาได้อีกนิดนึง แล้วบริษัทรถยนต์ก็เปิดรับ PHP Programmer ตอนแรกในใจก็คิดว่าคงจะแค่รับไว้ดูแลเว็บไซต์ แต่มันต่างจากที่ผมคิดอย่างมาก วันสอบสัมภาษณ์ ได้ทำทั้งข้อเขียน และเขียนโปรแกรมตามโจทย์บนกระดาษ A4 แหม่เปิดหนังสือพลิกจนกระดาษแทบฉีก ไม่พอตอนให้นำเสนอผลงานที่สะสมมาก็มีแต่โปรเจ็กต์ที่ทำค้างไว้ เอามารันบน PHP5.2 เออเร่อกระจ

การเขียนโปรแกรม PHP แม้จะเปลี่ยนไปใช้ OOP แต่ฟังก์ชั่นก็ยังสำคัญ

หลังจากที่ได้แนะนำให้ฝึกเขียน PHP แบบ OOP ไปแล้วก่อนหน้านี้ เริ่มรู้สึกว่าบางทีอาจจะมีการเข้าใจอะไรผิดไป เพราะบทความส่วนใหญ่จะบอกให้เขียน PHP แบบคลาส ใช้แทนฟังก์ชั่นแบบเดิมๆดีกว่า แต่พอเอาเข้าจริงบางครั้ง การรู้สึกเป็นอะไรที่ค่อนข้างยุ่งยากเหมือนกัน เมื่อต้องนำฟังก์ชั่นหลักที่ใช้งานบ่อยๆ มาเปลี่ยนเป็นคลาส เวลาเรียกใช้ก็ต้องประกาศตัวแปรออบเจ็กต์ เช่น $dateObj = new dateFormat();  จากนั้นถึงจะเรียกเมธอดต่างๆในคลาส (ก็คือฟังก์ชั่นที่อยู่ในคลาสนั่นเอง) มาใช้งานได้ พักหลังมานี้เลย เริ่มมองเห็นความสะดวกและประโยชน์ของการใช้งานฟังก์ชั่น  นั่นก็คือเราไม่จำเป็นต้องจับฟังก์ชั่นของเราไปแปลงร่างกลายเป็นคลาสเพื่อให้ดูสวยหรูโดยไม่จำเป็น เน้นไปที่ฟังก์ชั่นเฉพาะแต่ละเพจก็พอ เช่น ฟังก์ชั่นเรียกข้อมูลมาแสดง ฟังก์ชั่นตัดเติมแต่งข้อความ ฟังก์ชั่นคำนวณต่างๆเฉพาะหน้า แบบนี้ควรที่จะเอามาทำเป็นคลาส เพื่อสะดวกในการอ้างอิงข้อมูลระหว่างประมวลผล แต่ถ้าเป็นฟังก์ชั่นหลักๆ เช่นการแปลง วันที่ ปี พ.ศ. หรือจัดรูปแบบข้อความ อะไรที่ใช้บ่อยๆ ก็ไม่ต้องไปทำเป็นคลาสก็ได้ครับ เพื่อความสะดวกในการเรียกใช้งาน PHP กับการสร้างฟั

การเขียนโปรแกรมแบบ OOP มีดีที่การทดสอบโค๊ดด้วยนะ

เซ็งกับการทดสอบโค๊ดที่ต้องมา echo กระจาย ต้องคอย Search File... ในโปรเจ็กต์เพื่อลบ echo ที่เป็นแค่ค่าทดสอบ บางครั้งก็ลืม ถ้าติด alert ในลูป ละมันส์น่าดู ต้อง Ctrl+Alt+Del เพื่อปิดบราวเซอร์ไปเลย (ความมักง่ายที่ทดสอบแบบไม่เช็ก ลูป) บางครั้งก็ลืมลบ แหม่...ยูสเซอร์คงฮาจนฟันโยกฟัน คลอน กำลังเรียนรู้ OOP เลยได้แนวคิดเจ๋งๆ คือสร้างโฟลเดอร์ทิ้งไว้เลยไม่ต ้องไปลบไม่ต้องกังวลอีกต่อไป แค่เรียกไฟล์จากโปรเจ็กต์เรามาท ดสอบก็พอ ถือว่าลดปัญหาได้เลยทีเดียว แต่ก็ต้องเปลี่ยนมาเขียนคลาสแทน ฟังก์ชั่นเหมือนที่ผ่านมา ^^"

ทั้ง Laravel และ Yii ไม่มี Template Engine แบบคลาส Template Parser Class ของ CodeIgniter ให้เราเรียกใช้ใช่หรือไม่

ทั้ง Laravel และ Yii ไม่มี Template Engine แบบคลาส Template Parser Class ของ CodeIgniter  ให้เราเรียกใช้ใช่หรือไม่??? (หรือเพราะมันคงไม่ใช่ประเด็นสำคัญของ Framework) พอได้อ่านบทความหนึ่งมันกระตุ้นให้ตนเองได้ตระหนักถึงจุดเปลี่ยนที่เริ่มหัน มาให้ความสนใจ Framework ที่จริงแล้วไม่ได้ต้องการจะใช้เป็นเครื่องมืออำนวยความสะดวกใดๆ แต่ปัจจัยหลักคือ อยากจะแยก HTML ออกจาก PHP อย่างจริงจัง และแล้วก็ได้พบกับ CodeIgniter ด้วยการสร้างเทมเพลต HTML แยกออกจาก PHP (แบบนี้ http://ellislab.com/codeigniter/user-guide/libraries/parser.html ) แล้วก็รู้สึกว่างาน Design สามารถทำคู่ไปกับ Codin g ได้ดีทีเดียว จะว่าไปแล้วใช้แค่ TPLN Template Engine ของ http://tpln.h2lsoft.com/ ก็ตรงกับความต้องการแล้ว ล่ะนะไม่ต้องเสียเวลาไปศึกษา PHP Framework ใหม่ๆให้เสียเวลาเลย ที่จริงผมก็เคยเขียน Template Engine ด้วย jQuery แล้วลองใช้เล่นๆก็ใช้ได้ดีนะครับ ตอนนั้นกำลังคิดถึงเรื่องการประหยัดแบนด์วิธของการเรียกข้อมูล HTML ซ้ำๆโดยที่เราสามารถพักไว้ที่ JavaScript ได้ แต่ก็ยังไม่เคยใช้จริง ใครสนใจลองไปอ่านเล

ไลบรารี่ PHPExcel การส่งข้อมูลไปยังไฟล์ excel แบบเป็นข้อความ

อยู่ในช่วงฝึกใช้ไลบรารี่ PHPExcel  เพื่อใช้สร้างไฟล์ excel จากข้อมูลทีเก็บไว้ใน MySQL  แต่พอนำข้อมูลที่ได้มาส่งออกไปที่ excel ทีไร เลขศูนย์ด้านหน้าหายตลอด  เช่น 012345 จะกลายเป็น 12345  ทำให้รหัสที่เป็นข้อความตัวเลข เพี้ยนไปจากข้อมูลต้นฉบับ  สำหรับวิธีแก้ให้ลองตามนี้ http://stackoverflow.com/questions/3054312/php-excel-correct-format-for-strings-numbers-beginning-with-zero

PHP ยังคงมีดีที่เข้าใจง่าย เข้าถึงได้ทุกคน และใช้งานได้ดีจริง

พีเอชพี (PHP) คือ ภาษาคอมพิวเตอร์ในลักษณะเซิร์ฟเวอร์-ไซด์ สคริปต์ โดย ลิขสิทธิ์อยู่ในลักษณะโอเพนซอร์ส ภาษาพีเอชพีใช้สำหรับจัดทำเว็บไซต์ และแสดงผลออกมาในรูปแบบ HTML โดยมีรากฐานโครงสร้างคำสั่งมาจากภาษา ภาษาซี ภาษาจาวา และ ภาษาเพิร์ล ซึ่ง ภาษาพีเอชพี นั้นง่ายต่อการเรียนรู้ ซึ่งเป้าหมายหลักของภาษานี้ คือให้นักพัฒนาเว็บไซต์สามารถเขียน เว็บเพจ ที่มีความตอบโต้ได้อย่างรวดเร็ว           สำหรับใครที่อยากจะศึกษาการเขียนโปรแกรมเว็บแอพพลิเคชั่น ลองมาศึกษา PHP ดูนะครับ เขียนง่าย เข้าใจง่าย ไม่ยากเหมือนการเขียนโปรแกรมฝั่งวินโดวส์แอพฯ หลายคนท้อกับวิชาการเขียนโปรแกรม ในระบบปฏิบัติการเท็กซ์โหมด อย่างภาษา C , Pascal และอีกหลายภาษาที่ค่อยข้างซับซ้อน จนทำให้เกิดเปลี่ยนใจหันหลังให้กับมัน

Canon MP280 error E16 : ไขรหัสลับสัญญาณปริศนา

"น้องเครื่องปริ้นเตอร์พี่เป็นไรไม่รู้อ่ะ มันสแกนเอกสารไม่ได้เลย" เอาแล้วไงงานเข้าอีกแล้ว >O< "เนี่ยมันไฟมันกระพริบๆ E16 ตลอดเลย" "เดี๋ยวผมขอค้นหาข้อมูลก่อนนะครับ" แน่นอนที่สุดคำว่าค้นหาข้อมูลมันคงไม่ใช่การเปิดอ่านคู่มือของอุปกรณ์ที่แถมมาอย่างแน่นอน ผมเปิดเข้าเว็บ Google เพื่อค้นหารหัสแจ้งเตือนดังกล่าว "Canon MP280 error E16" พอกด Enter ก็ปรากฏข้อมูลมากมายมหาศาลบานตะไท อ่านยังไงก็อ่านไม่หมด ผมเลือกอ่านเว็บแรกสุดก่อนด้วยสัญชาตญาณ ที่บ่งบอกว่าเป็นเพจยอดนิยมอย่างแน่นอน อาการนี้แก้ได้เร็วกว่าที่คิด กดแค่ไม่กี่วิก็ใช้งนได้ปกติ บางครั้งก็ไม่ค่อยแน่ใจกับลำดับขั้นตอนที่อธิบายเป็นตัวหนังสือยาวๆ การเปิดดูวิดีโอในยูทูปก็ช่วยได้มากเลยทีเดียว รอดตัวไปอีกงาน ~___~ สั่งก๊อปปี้ไม่ได้ เปิดหาวิธีในเน็ต ให้กดปุ่ม "Stop/Reset" จนกว่าจะขึ้นเลข 1 ก็จะใช้งานได้ปกติ Borapiel k https://www.youtube.com/watch?v=YNP1FTZpIx0 อ้างอิง วิธีแก้ปัญหา Canon MP258,MP280,MP287 ไฟกระพริบขึ้น Error: E16,E13 วิธีแก้ป

การใช้คำสั่ง SUM ร่วมกับ IF เพื่อแยกข้อมูลตามวันหมดอายุของสมาชิก

บทความนี้ถูกย้ายไปที่ >>  http://sunzandesign.blogspot.com/2014/03/php-mysql-sum-if-groupby.html

You don't currently have permission to access this folder

  เปิดไฟล์โปรเจ็กต์ VB6 ขึ้นมาแล้วเจอข้อความ Path/File access error แทบจะลมจับ ใจเต้นตึกตัก ไม่รู้จะร้องทักใครดี หันไปทางไหนก็มีเพียงตัวเราเองเป็นที่พึ่งแห่งตน  รวบรวมสติค้นหาข้อมูลแล้วค้นหาอีกก็ไม่เจอ เลยคิดว่าวินโดวส์เจ๊งแน่ๆทำไมมันเป็นแบบนี้ แล้วก็นึกขึ้นได้ว่าเคยแชร์โฟลเดอร์บางโฟลเดอร์ไว้ อาจจะเกิดข้อผิดพลาดอะไรบางอย่าง  

โปรแกรม VB6 รันไปแล้วเจอ Error ข้อความว่า "Data Provider or other service returned an E_FAIL status"

Run-time error '-214767259 (80004005)': เช้านี้กำลังนั่งขัดเกลาซอร์สโค๊ดตัวเองเป็นพัลวัล เนื่องจากใช้ไปใช้มาแล้วเกิดอาการอืดสุดๆ จากที่เคยทดลองเป็น Syntax การ Join table มาแล้วก็พอจะช่วยได้บ้าง ซอร์สโค๊ดโปรแกรมเดิม SELECT tb_order.*, tb_company.name FROM tb_order, tb_company WHERE tb_order.id = 12345 AND tb_order.cpn_id = tb_company.id แก้ใหม่เป็น SELECT tb_order.*, tb_company.name FROM tb_order INNER JOIN tb_company ON tb_order.cpn_id = tb_company.id WHERE tb_order.id = 12345 ปรากฏว่าเกิด error "Data Provider or other service returned an E_FAIL status" ซึ่งจำได้ว่าคราวก่อนเคยนำปัญหานี้มาลงในบทความแล้ว แต่กรณีมันต่างกันนิดหน่อยตรงซอร์สโค๊ดของโปรแกรมที่เขียน เลยนำมาลงกันอีกทีเพื่อเป็นการตอกย้ำกันชัดๆ

การเขียนนิยายไม่ใช่เรื่องง่ายๆ ยิ่งการเขียนโปรแกรมเพื่อช่วยในการเขียนนิยาย ยิ่งยากเข้าไปใหญ่

เมื่อห้าหกปีก่อนผมเป็นคนที่ชอบอ่านนิยายอย่างมาก และเรียกได้ว่าหลงใจในการแต่งนิยาย แต่เวลาผ่านไปวันแล้ววันเล่า ก็ไม่เคยมีพล็อตเรื่องที่จบสักเรื่องเดียว ทำไมน่ะเหรอครับ...ก็ผมเล่นยำทุกเรื่องที่อ่านมาแล้วชื่นชอบเข้าด้วยกัน มันเลยไปลอยไปในทะเลอันไกลโพ้น มาสามารถจะกลับเข้าฝั่งได้ ตั้งใจจะเขียนโปรแกรมเพื่ออำนวยความสะดวกกับตนเองมานานแล้ว เพราะเพียงหวังว่าจะสามารถเขียนนิยายได้(จบ)สักเรื่อง แม้นมันจะอ่านได้ไม่ได้เรื่องก็ตาม แต่เมื่อเริ่มลงมือ ดันไปอ่านหลักการซะมากมาย แล้วก็มาตายน้ำตื้น เพราะอยากทำนั่น ทำนี่ ต้องมีส่วนนั้น และก็ส่วนนี้ จนสับสนวุ่นวายไปกันใหญ่ ถ้ามีเวลาคงต้องสะสางกับความคิดของตนเองก่อน มิเช่นนั้นแล้ว โปรเจ็กต์คงล้มไม่เป็นท่า -------------------------------------------- ติดตามเรื่องราวการเขียนโปรแกรม PHP ได้ที่ https://www.youtube.com/user/PHPcodingAndDesign/channels เตรียมตัวก่อนเขียน PHP 5.5 https://www.youtube.com/playlist?list=PLEFxdFJkMLu78rEFPPzkpeieOGEJp730g

ปั่นปวน กวนๆ ทำไมนับยอดแล้วไม่ตรงกันนะ SQL COUNT()

SELECT count(*) AS total FROM my_table WHERE id = xxxx หลังจากที่ตั้งหน้าตั้งตามทำรายงานเอกสารตีกลับอยู่หลายวัน และทดสอบจนแน่ใจว่าทำงานได้ถูกต้อง บันทึกได้ ค้นหาได้ แก้ไขได้ ในที่สุดก็ได้เวลานำไปให้ยูสเซอร์เขาใช้กันจริงๆ ซะที และแล้วสิ่งที่ไม่คาดฝันก็บังเกิดขึ้น นับจำนวนครั้งแล้วเกิน ทั้งที่เป็นครั้งแรกแต่ดันพิมพ์รายงานออกมาเป็นการตีกลับครั้งที่ 2 เลยนั่งค้นหาสาเหตุอยู่นาน ไม่ว่าจะพิมพ์ยังไงก็เกิน แต่พอนำโค๊โเอาไปคิวรี่ใน phpMyAdmin แล้วไม่เกินแฮะ แปลกมากๆ โค๊ดก็ทำงานได้ปกติไม่มีข้อผิดพลาดแต่อย่างใด แล้วเหตุไฉนถึงพิมพ์ข้อมูลออกมาไม่ตรง ในที่สุดก็พบคำตอบที่ข้องใจว่าทำไมถึงนับเกินตลอด และทุกครั้งที่สั่งพิมพ์จะเกินไป 1 เสมอ ก็เพราะดันนับหลังจาก insert ไปแล้ว ก็แน่ล่ะสิ มันต้องเกินอยู่แล้ว การนับลำดับมันควรจะนับก่อน insert ไม่ใช่เหรอ 1) นับจำนวนครั้ง ได้ 0 2) นำค่าที่ได้ +1 เพื่อหาลำดับปัจจุบันจะได้ 1 3) พิมพ์ออกมาจะได้ครั้งที่ 1 แต่ดันสลับขั้นตอนที่ 1 กับ 2 1) insert ข้อมูลลงไป 2) นับจำนวนครั้งได้ 1 นับไปบวก +1 จะได้ 2 3) เมื่อสั่งพิมพ์ทั้งที่เป็นครั้งแรก แต่ดั

Crystal Report กับเงื่อนไขฟิลด์วันที่ใช้งานกับ MySQL

นั่งจมปรักอยู่กับความมืดมนอยู่นาน 2 ชั่วโมง ในที่สุดก็ค้นพบหนทางสว่าง PHP SQL tb_follow.follow_time BETWEEN '$date1' AND '$date2' VB6 CrystalReport SelectionFormula {tb_follow.follow_time} In Date(" & xDate1Y & ", " & xDate1M & ", " & xDate1D & ") To Date(" & xDate2Y & "," & xDate2M & "," & xDate2D & ") " ใครที่กำลังมองหาวิธีการส่ง SelectionFormula ที่เป็นเงื่อนไขวันที่ไปยัง CrystalReport อยู่ละก้อลองนำไปใช้ดูละกัน 

แบ็กอัพ MySQL ด้วยการสร้าง Batch File เรียก mysqldump ตามเวลาที่ตั้งไว้

ทดสอบแล้วใช้ได้ แต่ใช้จริงต้องปรับตำแหน่งเรียก mysqldump ที่ต่างกัน เช่นถ้าใช้ wamp เป็นตัวติดตั้งก็จะอยู่ที่ C:\wamp\bin\mysql\mysql5.5.24\bin\mysqldump ถ้าติดตั้ง MySQL เพียวๆ ก็คงต้องหาตำแหน่งที่ถูกต้องของเซิร์ฟเวอร์แต่ละเวอร์ชั่น การจะกำหนดเวลาแบ็กอัพนั้น ให้สร้างเป็นไฟล์ *.bat เพื่อเรียกใช้ในการสร้าง Schedule ของ Windows Server  (หากใช้ลีนุกซ์ก็คงจะใช้ cron job จะสะดวกกว่าด้วย webmin) @echo off echo Running dump... set MYDATABASE=xxxxxxx set MYSQLUSER=root set MYSQLPASS=xxxxxxx set BACKUPFILE="F:\Backup\MySQL\%MYDATABASE%_%date:~10,4%-%date:~4,2%-%date:~7,2%_TIME.%time:~0,2%.%time:~3,2%.sql" C:\wamp\bin\mysql\mysql5.5.24\bin\mysqldump -u%MYSQLUSER% -p%MYSQLPASS% --result-file=%BACKUPFILE% %MYDATABASE% echo Done! %BACKUPFILE% ทดสอบฐานข้อมูล 1GB ใช้เวลาประมาณ 1 นาที ส่วนผลข้างเคียงยังไม่ทราบ เพราะเป็นการ mysqldump ไม่น่าจะมีปัญหา แต่ที่แน่ๆ เขาบอกว่าดีกว่า Batch file ตัวเดิมที่ผมใช้อยู่ (แบบเดิมคัดลอกไดเรกทอรี่ฐานข้อมูลทั้งดุ้น) อยากรู้ว่า MySQL

Crystal Report ขีดเส้นแบ่งคอลัมน์อย่างไร ไม่ให้เลยไปจนถึงด้านล่างของหน้ากระดาษ

สำหรับครั้งต่อไปใน Crystal Report หาจะต้องแบ่งคอลัมน์โดยการขีดเส้นแนวตั้ง จะต้องทำทีละส่วน ถ้าขีดยาวรวดเดียวตั้งแต่ Head ผ่าน Detail จนไปถึง Footer แล้วล่ะก็ รายการที่มีต่อเนื่องหลายหน้าจะมีเส้นแนวตั้งเลยในบรรทัดสุดท้าย แต่ในกรณีที่ต้องค่าให้ detail มีหลายบรรทัด บางครั้งก็ยังคงมีเส้นเลยอยู่ แต่ก็ยังพอดูได้

ดึงข้อมูลจากหน้าเว็บอื่น มาแสดงที่หน้าเว็บของเรา ด้วย file_get_contents

เข้าเว็บที่ไม่ได้ encode ทีไรก็จะต้องคอยเปลี่ยนภาษาทุกครั้ง สุดท้ายเลยตัดสินใจ ดึงข้อมูลมา convert ภาษาที่ต้องการเองซะเลย ดึงข้อมูลจากหน้าเว็บอื่นมาแสดงด้วย 4 ฟังก์ชั่น 1.) file_get_contents() 2.) iconv() 3.) preg_match_all() 4.) foreach() <?php $url = 'http://www.myweb.com/target_page.php'; $content = file_get_contents($url); $content = iconv('tis-620', 'utf-8', $content ); preg_match_all ("/<strong>(.*?)<\/strong>/is", $content, $matches); foreach($matches[1] as $link){ //Coding here.. } ?> PHP  CI  MANIA   -  PHP Code Generator  โปรแกรมช่วยสร้างโค้ด  "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    http://fastcoding.phpcodemania.com

PHP CI MANIA