วันพฤหัสบดีที่ 14 พฤษภาคม พ.ศ. 2552

First Time in WPF "SpeechSample"

WPF หรือ Window Presentation Foundation เป็นอีกรูปแบบของการเขียนโปรแกรมครับ แต่มันต่างกันยังไงน่ะหรอครับ งั้นให้คุณผู้อ่านลองนึกภาพโปรแกรมหน้าตาธรรมดาๆที่โอ๊คเคยเขียนดูสิ กับโปรแกรมที่มีรูปแบบ ปุ่มคำสั่งต่างๆสวยงามแพรวพราว (ใครที่ใช้ Vista นั่นเป็นอีกตัวอย่างหนึงของเทคโนโลยีนี้ครับ) หัวใจหลักของ WPF ก็คือ การทำโปรแกรมที่มี User Interface (หน้าตาของโปรแกรม) สวยงามน่าใช้นั่นเอง ถ้าเขียนโปรแกรม ในรูปแบบ Window Application (ซึ่งในสมัยก่อนก็ถือว่าหรูแล้ว) มันก็เหมือนกับเราเขียนโปรแกรมที่ไม่ให้ความสำคัญกับความสวยงามของรูปร่างหน้าตาของโปรแกรม แต่ปัจจุบันมันเปลี่ยนไปแล้วครับ โอ๊คอยากถามว่า คุณชอบใช้โปรแกรมที่มีรูปร่างหน้าตาสวยงาม (คำตอบส่วนใหญ่คงชอบถูกไหม ?) ฉะนั้นเทคโนโลยี WPF จึงถูกสร้างขึ้น แนวคิดของมันก็คือ ตัวเรามีความสามารถในสองด้าน 1.ออกแบบหน้าตาโปรแกรม 2.เขียนโค้ดควบคุมโปรแกรม ซึ่ง 2 อย่างนี้ให้คุณทำหน้าที่ของมันได้อย่างอิสระแยกจากกันสิ้นเชิง คิดดูแล้วกันเพราะมันทำให้เราได้สร้างสรรค์หน้าตาของโปรแกรมได้อย่างอิสระ แล้วเพียงแค่มาใส่โค้ดเอาที่หลังก็ยังได้ (เครื่องมือดีๆ ที่เหมือน มีนักออกแบบ และโปรแกรมเมอร์มาร่วมมือกันสร้างโปรแกรม) ใน Window Application นั้นในส่วนของการออกแบบหน้าตาโปรแกรมจะถูกควบคุมด้วยภาษาโปรแกรมนั้นๆ (เช่น C# ส่วนออกแบบก็จะเป็นภาษา C#) แต่แนวคิดของ WPF ภาษาในส่วนออกแบบนั้นจะต่างจากภาษาที่ใช้เขียนโค้ด กล่าวคือ ใช้ภาษา XML (ซึงพอมาทำงานร่วมกันกับการสร้างโปรแกรมก็จะเรียกใหม่เป็น XAML อ่านว่า แซม-แอล) XAML ย่อมาจาก eXtensible Application Markup Language ใช่แล้วครับเป็นภาษาตระกูล Markup ที่จะมีทั้ง tag เปิดและปิด ซึ่งภาษานี้สามารถทำงานด้านแสดงผลได้เป็นอย่างดี แล้วยังเป็นภาษาที่เข้าใจได้ง่ายอีกด้วย (เอาเป็นว่าถ้ามีโอกาสจะทำบทความสอนเลยแล้วกัน)

SpeechSample



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


สำหรับผู้ที่ต้องการลองเอาไปใช้ Download Here


วิธีการใช้ SpeechSample
  • เปิดไฟล์ .txt หรือพิมพ์ข้อความลงในกล่องข้อความ
  • กด Speak โปรแกรมจะทำการออกเสียงคำที่เราพิมพ์ (ได้เฉพาะภาษาอังกฤษ)
  • สามารถปรับเสียงและความเร็วในการพูดได้

วันพุธที่ 13 พฤษภาคม พ.ศ. 2552

Still working on My New Project BrainSaving...!!!!



โอ๊คเคยได้ยินผลงานวิจัยของญี่ปุ่น เกี่ยวกับการป้องกันและรักษาโรคสมองเสื่อมและอัลไซเมอร์ ซึ่งได้ผลการวิจัยเป็นที่แน่ชัดว่า สมองเราเมื่อไม่ได้ถูกใช้งานบ่อยๆ มันก็จะเสื่อมไปตามอายุขัย แต่หากใช้งานมันทุกๆวัน บริหารทุกๆวัน มันก็จะอยู่กับเราได้นานขึ้น สำหรับโรคสมองเสื่อมและอัลไซเมอร์จะพบมาในผู้ใหญ่และคนสูงอายุ ซึ่งบางคนที่เป็นโรคนี้อาจได้รับผลกระทบอย่างอื่น แต่... ส่วนใหญ่ก็มาจากการไม่ค่อยได้บริหารสมองหรือมีความเครียดสูงนั่นเอง สำหรับใครๆที่เคยเข้าร้านหนังสือแล้วไปเจอะกับหนังสือ "เลขคณิตพิชิตสมองเสื่อม" แล้วล่ะก็จะร้องอ๋อทันที เพราะหนังสือเล่มนี้ได้อธิบายผลการวิจัยไว้อย่างละเอียด เช่นว่า เมื่อคุณดูทีวีสมองส่วนไหนบ้างที่ทำงาน เวลานั่งอ่านหนังสือในใจเอย เวลาเล่นเอย แต่ผลการวิจัยที่น่าแปลกใจก็คือ การคิดเลขบวกลบเลขง่ายๆ สมองกลับถูกใช้งานมากกว่าการคิดเลขยากๆเสียอีก ด้วยความที่อยากฝึกอย่างในหนังสือแต่ก็ไม่อยากเสียเงิน (น้าน) ก็เลยคิดโปรเจค โปรแกรมรักษาสมองซะเลย เอ้ารักษายังไงบางคนยังงง ก็อย่างที่กล่าวไปข้างบนนั่นแหละ คิดเลขง่ายๆช่วยกระตุ้นสมองให้เสื่อมช้าลงได้ครับ โดยตัวโปรแกรมจะคล้ายกับการฝึกในหนังสือแต่จะมีเพิ่มเติมในสิ่งทีหนังสือทำไม่ได้ครับ (ยังไม่ขอเปิดเผย) โดยสามารถเลือกระดับความยากง่ายได้น่ะ สำหรับใครที่คิดว่าควรเพิ่มเติมอะไรก็ช่วยแนะนำได้ครับ โดยโปรแกรมนี้จะปล่อยให้เป็น Freeware ไปเลยเมื่อพัฒนาเสร็จครับ ที่บ้านใครมีผู้ใหญ่หรือคุณตาคุณยายที่เรารัก ก็เป็นการเหมาะที่จะให้ท่านได้บริหารสมองกับ
โปรแกรม BrainSaving นะครับ ........

Magic in Math.....!!!

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

การคูณจำนวน 2 หลัก ด้วย 11
32 x 11 = 352
56 x 11 = 616

ให้สังเกตุคำตอบในหลักสิบครับ เกิดจากการนำ จำนวนของตัวตั้งบวกกันนั่นเอง (ถ้าเกิดเก้าต้องทดในหลักถัดไป)
เช่น 97 x 11 = 1067

เทคนิคการยกกำลัง (ใช้ได้กับเลขสองหลักที่ลงท้ายด้วย 5)
35^2 = 1225
มันอาจไม่แปลกถ้าคิดเครื่องคิดเลข หรือทดในกระดาษ แต่ถ้าคิดในใจล่ะ ....... ไม่ยากครับ มีเทคนิคมาฝากอีกเช่นกัน
ให้สังเกตุคำตอบนะครับ แล้วแยกจำนวนออกเป็นคู่ เช่น 12 กับ 25 (จริงๆ 2 หลักหลังจะเป็น 25 ตลอดเพราะลงท้ายด้วย 25)
12 เกิดจาก 3 x (3+1) = 12
25 เกิดจาก 5 x 5 = 25

เอ้าเพื่อความมั่นใจโอ๊คจะยกตัวอย่างเพิ่มครับ
75^2 = ......... 5625 ถูกไหมครับ ไม่เชื่อกดเครื่องคิดเลขดูเลยเอ้า !

ยังไม่จบครับ มีเทคนิคการคูณมาฝากด้วย
สำหรับเลข 2 หลักมาคูณกัน แล้วเลขหลักสิบมีค่าเท่ากัน หลักหน่วย รวมกันได้สิบ
เช่น 56 x 54 = 3024
30 เกิดจาก 5 x (5+1)
24 เกิดจาก 6 x 4

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

วันจันทร์ที่ 11 พฤษภาคม พ.ศ. 2552

Advance Timer my Second Project....!!!



เวลาไม่เคยรอใครครับ ทุกชีวิตบนโลกต้องทำงานแข่งกับเวลา ลมหายใจเราเพียงไม่กี่วินาทีโลกก็มีสิ่งใหม่ๆก็ขึ้นมาตลอด พอโปรเจคแรกเสร็จโอ๊คก็เลยลองทำโปรเจคใหม่ทันที หลังจากพ่อโอ๊คสอนใช้ Timer ก็เลยลองเอามาคิดเล่นๆว่าจะทำอะไรต่อ คิดไปคิดมาก็มาลงเอยที่เจ้านาฬิกาจับเวลาตัวนี้ เพียงแต่พัฒนามาเรื่อยๆจากที่เป็นเพียง Timer ก็เลยเปลี่ยนชื่อซะเลยเป็น Advance Timer เพราะว่าเป็นนาฬิกาจับเวลาที่มีออฟชั่นเพิ่มขึ้นมาจากที่คิดเอาไว้เยอะเหมือนกัน (ใครคิดว่าควรมีอะไรเพิ่มเติมแนะนำโอ๊คได้เลยครับ) สำหรับตัวนี้เป็นเพียงเวอร์ชั่น BETA ที่ไม่เคยเอาไปปล่อยที่ไหนเลย (เพราะว่าไปปล่อยกลัวไม่มีคนสนใจน่ะ) สำหรับฟีเจอร์ของนาฬิกานะครับ โอ๊คจะลิสให้ดูง่ายๆนะครับ (ฟีเจอร์อาจเปลี่ยนแปลงเมื่อ Version เต็มออกนะครับ อันนี้เป็นเพียง BETA เท่านั้น)





ความสามารถหลักของโปรแกรม Advance Timer (Version BETA)

  • จับเวลาเดินหน้า และถอยหลัง
  • คำนวณวันและเวลา แบบแจกแจง (วัน/ชม/นาที/วินาที)
  • คำนวณวันและเวลา แบบแยกประเภท
  • ปรับแต่งสีของเวลา
  • ปรับแต่งข้อความที่ใช้บันทึกในนาฬิกาจับเวลา
  • ปรับแต่งข้อความเตือน เมื่อหมดเวลาของนาฬิกานับถอยหลัง

ความสามารถที่คาดว่าจะมีในอนาคต

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

สำหรับเวอร์ชั่นตัวเต็มยังไม่มีกำหนดออกครับ จึงอยากให้ออกความเห็นกันว่าควรเพิ่มอะไรลงไปหรือแก้ไขตรงไหนเพิ่มเติมดีครับ สำหรับโปรเจคนี้จะเปิดให้เป็น OpenSource ครับ สำหรับ OpenSource ก็คือโค้ดที่ปล่อยให้โหลดไปใช้ฟรีๆ หรือจะเอาไปพัฒนาต่อได้ครับ เพื่อให้ตรงตามความต้องการของผู้ใช้ (โปรแกรมนี้เขียนด้วย Visual C# 2008)

สำหรับผู้ต้องการโหลดไปใช้งาน Download Here
สำหรับกรณีต้องการโหลดไปศึกษา Download OpenSource

วิธีใช้งาน Advance Timer (Version Beta 0.805)

  1. การใช้งานในส่วนของนาฬิกาจับเวลา จะมีปุ่มเริ่มจับเวลา เมื่อทำการคลิกที่ปุ่มจะทำให้นาฬิกาเริ่มจับเวลา แล้วตัวปุ่มนี้จะเปลี่ยนเป็นหยุดเวลา เพื่อให้สะดวกในสถานการณ์ที่ต้องการหยุดเวลาทันที
  2. ในส่วนของนาฬิกาจับเวลา สามารถบันทึกเวลาที่ได้จับเอาไว้ได้ (ข้อความที่ใช้สื่อข้อมูลเวลาสามารถปรับเปลี่ยนได้ใน tab ปรับแต่ง)
  3. ในส่วนของนาฬิกานับถอยหลัง ผู้ใช้สามารถตั้งเวลาได้ตามต้องการ แล้วโปรแกรมจะคำนวณให้เวลาออกมาในรูปแบบที่เข้าใจง่าย เช่น 99 วินาที คือ 1 นาที 30 วินาที
  4. ปุ่มเริ่มนับถอยหลังจะคล้ายคลึงกับส่วนของนาฬิกาจับเวลา
  5. ในส่วนของการคำนวณวันเวลานั้น เราสามารถเลือกที่จะคำนวณเวลาด้วยหรือไม่ก็ได้ (ขึ้นกับว่าเราสนใจเวลาเริ่มต้นและสิ้นสุดหรือไม่)
  6. การคำนวณวันแบบแจกแจงจะคำนวณออกมาในรูปแบบ วัน/ชม/นาที/วินาที
  7. การคำนวณวันแบบแยกประเภทผลลัพท์จะออกมาเป็นรูปแบบใดๆ แยกกันอย่างอิสระ เช่น 1 วัน 24 ชม 1440 นาที 86400 วินาที

Level of Programming Language...!!!

ใช่แล้วตัวแปรภาษา หรือ Compiler เนี่ยก็มีระดับภาษา แต่ระดับภาษานั้นมันบ่งบอกถึงความใกล้เคียงกับภาษาเครื่องนั่นเอง โดยแบ่งได้เป็น 3 ประเภทหลักๆก็คือ

  • ภาษาระดับต่ำ
  • ภาษาระดับกลาง
  • ภาษาระดับสูง

ก็คือถ้าตัวแปรภาษานั้นจัดอยู่ในภาษาระดับต่ำ ตัวแปรภาษานั้นก็จะมีความใกล้เคียงกับภาษาเครื่องมาก แต่ถ้าตัวแปรภาษานั้นจัดอยู่ในภาษาระดับสูง ตัวแปรภาษานั้นก็จะมีความใกล้เคียงกับภาษามนุษย์เราๆกันมากขึ้น(ช่างสะดวกเสียจริง) มาดูระดับภาษาของภาษาคอมพิวเตอร์ที่เราพอจะคุ้นเคยหรือเคยได้ยินกันบ้างก็คือ ภาษา C ,Java, Basic, Pascal จัดเป็นภาษาระดับสูง ส่วนภาษาระดับต่ำก็คือ Assembly ซึ่งมีความใกล้เคียงภาษาเครื่องมาก มีสัญลักษณ์มาช่วยให้เขียนโปรแกรมได้ง่ายขึ้น แต่ก็ยังยากอยู่ดีนั่นล่ะ ฮ่าๆ ภาษาเขียนโปรแกรมนั้นในปัจจุบันมีเยอะมาก(หลายร้อยหลายพัน) เป็นสิ่งที่ทำให้รู้ว่าเราไม่มีทางชำนาญได้ทุกภาษาแน่นอน (เพราะมันมีเยอะมากนั่นแล) แต่อย่างที่เคยบอกไปคือ ถ้าเราชำนาญในภาษาใดภาษาหนึ่งแล้ว การจะกระโดดไปเล่นอีกภาษาหนึ่งๆนั้น ไม่ใช่เรื่องยาก การลำดับการทำงานของภาษาโปรแกรมต่างๆมีความคล้ายคลึงกันแต่อาจต่างกันแค่การใช้คำสั่งเท่านั้นเอง ด้วยเหตุนี้โปรแกรมเมอร์จึงต้องยืดหยุ่น สามารถปรับตัวได้เมื่อมีการเปลียนความนิยมหรือประสิทธิภาพของโปรแกรม ในตัวแปรภาษา

วันอาทิตย์ที่ 10 พฤษภาคม พ.ศ. 2552

How advantage Compiler have...?!!

คอมพิวเตอร์จะเข้าใจเพียงภาษาที่เป็นเลขฐานสองเท่านั้น เช่น 10101111010 อาจเป็นคำสั่งที่ใช้สำหรับแสดงผล คำสั่งพวกนี้เป็นเสมือนลิสรายการที่คอมพิวเตอร์จะต้องทำ มนุษย์เป็นเพียงผู้ป้อนคำสั่งเข้าไปๆเท่านั้น ซึ่งภาษาเลขฐานสองสำหรับมนุษย์แล้วเป็นเรื่องยากมากที่จะทำความเข้าใจ เอาง่ายๆเลยก็ต้องท่องจำกันไป(กว่าจะจำหมดคงเวียนว่ายตายเกิดหลายชั่วอายุคน) ซึ่งไม่จำเป็นเอาเสียเลยที่จะต้องมาลำบากเพื่อให้ได้ผลออกมาน้อยนิด จริงไหมครับ จึงเป็นสาเหตุให้ Compiler ถือกำเนิดขึ้นมาเพื่ออำนวยความสะดวกตรงจุดนี้ครับ แหะๆ ถ้าเปรียบ Compiler กับมนุษย์แล้ว Compiler เปรียบเสมือนล่ามดีๆนี่เอง แต่เป็นล่ามที่เข้าใจภาษาคอมพิวเตอร์นะ เพราะเราจะเขียนภาษาที่มนุษย์อย่างเราๆเข้าใจใส่เข้าไป จากนั้นเจ้า Compiler เนี่ยจะแปลภาษาของเราไปเป็นภาษาเครื่องโดยอัตโนมัติ โดยที่เราไม่ต้องไปสนิทคบค้ากับภาษาเลขฐานสองอีกต่อไป
(ภาษาเลขฐานสอง = ภาษาเครื่อง) นี่เป็นอีกสาเหตุให้วงการโปรแกรมมิ่งบูมมากๆในปัจจุบัน เพราะ Compiler ในปัจจุบันถือเป็นสุดยอดของความสะดวกแล้ว เพราะผมยังเคยคิดว่าการเขียนโปรแกรมนี่เป็นอะไรที่ยากมากนะ แต่ลองนึกย้อนไป คนสมัยก่อนเค้าต้องเขียนโดยใช้ภาษาเลขฐานสองมันลำบากกว่าแค่ไหนไม่มีตัวช่วยไม่มีอะไรเลย

สำหรับ Compiler ก็จะมีชนิดของมันต่างๆกันนะครับ มีหลายภาษา ก็เหมือนกับที่เคยๆได้ยินกันน่ะครับ ภาษา C บ้าง ภาษา Java บ้าง ภาษา PHP เอย ว่ากันไป ซึ่งหน้าที่ Compiler จะไม่ต่างกันแต่ต่างกันตรงที่ "ไวยากรณ์" อะอ้าวว ฟังดูแล้วอาจจะเข้าใจขึ้น เช่น การเอ่ยทักทายของภาษาแต่ละภาษาก็ต่างกัน ไทย(สวัสดี) อังกฤษ(Hello) อะไรประมาณนี้ กล่าวได้ว่า ถ้าเราชำนาญสักภาษาใดภาษาหนึ่งแล้ว ภาษาอืนๆก็ไม่ใช่เรื่องยาก(เอ้าก็พูดพร่ำทำเพลงเป็นแล้วนี่) เพียงแต่ต้องศึกษาไวยากรณ์ให้ดีๆ เท่านั้นเองครับ

รับปรับมุมมองในการโปรแกรมมิ่งสำหรับผู้เริ่มต้นเขียนโปรแกรม

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