วันพุธที่ 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) อะไรประมาณนี้ กล่าวได้ว่า ถ้าเราชำนาญสักภาษาใดภาษาหนึ่งแล้ว ภาษาอืนๆก็ไม่ใช่เรื่องยาก(เอ้าก็พูดพร่ำทำเพลงเป็นแล้วนี่) เพียงแต่ต้องศึกษาไวยากรณ์ให้ดีๆ เท่านั้นเองครับ

Radix Converter My First WindowForm ... !!!

(อ่านตรงนี้ไม่เสียเวลารับประกัน ได้อะไรติดหัวไปฟรีๆเลยจ้า...)
โปรแกรมแรกของโอ๊คใน WindowForm ครับใช้เวลาเขียนค่อนข้างนานพอดูนะ เพราะว่าเป็นครั้งแรก รูปร่างหน้าตาอาจธรรมดาไปหน่อยแต่รับประกันคุณภาพ แหะๆ เป็นโปรแกรมแปลงเลขฐานครับ เอ้าสำหรับคนที่ไม่รู้จักระบบเลขฐาน ก็ไม่เป็นเรา จะพูดถึงให้ฟังกันครับ ในเรื่องของระบบเลขฐาน (Radix Number)
ระบบเลขฐานนิยามให้เข้าใจค่อนข้างยาก แต่จะลองดูนะ ก็คือ การรวมกันของจำนวนที่มีค่าประจำแต่ละตำแหน่งโดยค่าประจำตำแหน่งก็จะเป็นค่าของเลขฐานนั้น เอ้างง ไม่เป็นไร ต้องบอกไว้ก่อนว่า เลขฐานที่เราคุ้นเคยกันในชีวิตประจำวันนั่นก็คือ เลขฐานสิบ ที่ประกอบไปด้วย เลข 0-9 นั่นล่ะ ความสัมพันธ์กันของเลขฐานแต่ละชนิดก็มีนะ เช่น 5ในเลขฐานสิบ ถ้าอยู่ในระบบเลขฐานสอง ก็คือ 0101 สำหรับคนไม่เข้าใจจริงๆไม่ต้องห่วงมาอ่านบทความนี้ได้อะไรติดหัวไปแน่นอน เอ้า ไอ้เจ้า 5 มันเป็น 0101 ในเลขฐานสองได้อย่างไร พูดในเรื่องความสัมพันธ์กันระหว่างระบบเลขฐานสิบกับเลขฐานสองนะ 5 = (0x2^3)+(1x2^2)+(0x2^1)+(1x2^0) ลองคิดเลขยกกำลังเล่นๆดู เป็น 5 ไหมครับ ? ใช่แล้วครับเลขชี้กำลังเริ่มจากทางขวามา(และเริ่มที่ 0)และเพิ่มจำนวนขึ้นทีละ1 ไปทางซ้ายจนกว่าจะหมด และที่ฐานของเลขชี้กำลังเป็น2 ก็เพราะว่าเป็นเลขฐานสอง และในแง่เดียวกันก็คือเลขฐานอื่นๆก็แค่เปลี่ยนฐานของเลขชี้กำลังเท่านั้นเองครับ (ฐานอื่นๆก็เช่น ฐานแปด ฐานสิบหก)แล้วจะมีไอ้ระบบเลขฐานวุ่นวายไปทำไม ? คำถามนี้โอ๊คเคยถามตัวเองอยู่เหมือนกันตอนนั่งทำความเข้าใจกับมันน่ะนะ คอมพิวเตอร์ของเราก็ใช้ประโยชน์จากเลขฐานนี้ครับ นั่นคือเลขฐานสอง ทำไมถึงเลขฐานสองน่ะหรอ ก็เพราะว่าคอมพิวเตอร์ก็ไม่ได้ต่างไปจากอุปกรณ์ไฟฟ้าตัวอื่นๆเท่าใดนักที่จะต้องมีสวิตท์ เปิด ปิด เหมือนกับเลขฐานสองที่มี 1(เปิด)กับ 0(ปิด)นั่นแหละครับ แล้วมันใช้ยังไงเอาคร่าวๆให้ฟังกัน ใช้ในด้านการคำนวณ การเก็บข้อมูล และอีกมาก ข้อมูลนั้นเกิดจากการนำ เลขฐานสองมาต่อๆกันหลายๆหลัก(ส่วนใหญ่หลักของเลขฐานสองจะเรียกว่าบิต) เช่น 00101, 11101


Radix Converter


เห็นความสำคัญของเลขฐานแล้ว โอ๊คเลยทำโปรแกรมแปลงเลขฐานอย่างง่ายๆมาให้ดูครับ แหะๆ โปรแกรมนี้ใช้ Visual C# 2008 เขียนครับ จริงๆทำไว้นานแล้ว ไม่มีโอกาสเอามาให้ดูกันนะ ซึ่งโปรแกรมของโอ๊คก็แปลงระบบเลขฐานสำคัญๆได้ 4 ชนิด ก็คือ เลขฐานสอง, เลขฐานแปด, เลขฐานสิบ, เลขฐานสิบหก วิธีใช้ไม่ยากครับ เลือกเลขฐานที่ต้องการแปลง จากนั้นใส่ค่าในช่องด้านบนครับ จากนั้นก็เลือกว่าต้องการจะแปลงให้เป็นเลขฐานชนิดใด แล้วค่าจะออกมาในช่องด้านล่างครับ คิดว่าจะทำเป็นกรณีศึกษาให้ได้โหลดโค้ดไปศึกษาได้ครับ สำหรับคนที่ต้องการก็โหลดจากลิ้งด้านล่างได้เลยครับ

สามารถโหลดไปใช้ได้ครับ Download Radix Converter

สำหรับกรณีต้องการโหลดไปศึกษาครับ

ขอขอบคุณ sanook.com ที่ให้พื้นที่ฝากไฟล์ฟรีครับ

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

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