Komsit's profileThis is KomsitR's spacePhotosBlogListsMore Tools Help

This is KomsitR's space

space(n.) - an empty area

Komsit Rattana

Occupation
Location
Hello World!
Please wait...
Sorry, the comment you entered is too long. Please shorten it.
You didn't enter anything. Please try again.
Sorry, we can't add your comment right now. Please try again later.
To add a comment, you need permission from your parent. Ask for permission
Your parent has turned off comments.
Sorry, we can't delete your comment right now. Please try again later.
You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
Complete the security check below to finish leaving your comment.
The characters you type in the security check must match the characters in the picture or audio.
Photo 1 of 24
December 05

VidView : Gold Award @ SIA 2007

          วันที่ 3 ธันวาคม 2550 ที่ผ่านมา มีการประกาศผลรางวัลรายการ Samart Innovation Award 2007 ซึ่งผม แฮม และจั๊ม ได้ส่งผลงานเข้าแข่งด้วยในชื่อ VidView
          VidView เป็น Application ที่ใช้ค้นหา ดาวน์โหลด และดูวิดีโอ โดยวิดีโอนั้นมาจากเว็บไซต์ที่ให้บริการ Video Hosting ใหญ่ๆทั่วโลก เช่น YouTube.com Google Video MySpace Metacafe และอื่นๆ อีกมากมาย
          การแข่งขันรายการนี้เริ่มมาตั้งแต่กุมภาพันธ์ 2550 เรียกว่ายาวนานมากประมาณเกือบ 1 ปี การแข่งขันประกอบด้วย 3 รอบ รอบแรกคือส่งรายงานของโปรแกรมที่จะทำเข้าไปให้กรรมการพิจารณา ซึ่งทีมเราก็ส่งไป 3 โปรแกรมด้วยกัน และเข้ารอบทั้งหมด! ตอนแรกก็กะว่า ทำมัน 3 โปรแกรมเลยเข้าส่งรอบสุดท้าย เอาเข้าจริงก็เหลือแต่ VidView เนี่ยแหละ อีก 2 โปรแกรมไม่ค่อยเวิก และก็ยากเกินไปด้วย (แต่ไม่ใช่ว่า VidView ง่ายนะ) พอผ่านรอบแรกแล้วก็เริ่มสร้างโปรแกรมกัน เริ่มต้นด้วยความงงๆ ภาษา J2ME มันคืออะไรฟะ! ก็เริ่มศึกษาใหม่ และ Samart จัดให้มีอบรมการเขียน Application บนมือถือด้วย ซึ่งก็ช่วยลดภาระไปได้เยอะ ในรอบนี้ต้องศึกษาค้นคว้าหลายเรื่องมากๆ เพราะตอนส่งรายงานในรอบแรก ไม่ได้คิดว่า VidView เนี่ยมันต้องทำยังไง เลยมาหนักรอบนี้ว่า "แล้วจะเขียนยังไงฟะ" พอได้ Application ที่จะใช้ส่งรอบสองมา ก็เป็นแค่ตัว Search Video แบบกิ๊กก๊อก ดาวน์โหลดได้ ดูได้ แต่ Bug กระจาย แต่ก็ผ่านไปด้วยดีได้เข้ามาถึงรอบสุดท้าย ในตอน Present โปรแกรมรอบ 2 ได้รับ Comment จากกรรมการมาจำนวนหนึ่ง ไม่น่าจะเรียกว่า Comment เรียกว่าเป็นสิ่งที่ต้องเพิ่มเติมและแก้ไขต่างหาก แต่ละ Comment ก็ไม่ง่ายเลย เรียกได้ว่าในรอบสุดท้ายนี้ ต้องรื้อ User Interface (UI) และโครงโปรแกรมกันใหม่ทั้งหมด ใช้เวลาพัฒนาเต็มๆ ประมาณ 3 เดือนน่าจะได้ และช่วงหนักๆคือก่อนส่งประมาณ 1 อาทิตย์แทบไม่ได้นอน - -" และแล้วมันก็เสร็จซึ่งเสร็จในนาทีสุดท้ายเลยก็ว่าได้ คือเพิ่งใช้งานสมบูรณ์ 2 ชั่วโมงก่อนเวลากำหนดส่ง จากรอบสองมีไฟล์ของโปรแกรมไม่ถึง 10 ไฟล์ในรอบสุดท้ายล้นออกมามากกว่า 20 ไฟล์ ตอน Present ในรอบสุดท้าย ถ้าเทียบกับการเตรียมพร้อมในรอบที่ 2 นั้นเรียกได้ว่าน้อยกว่ามาก เพราะหมดไปกับการพัฒนาตัวโปรแกรมให้สมบูรณ์
          แต่แล้วทุกสิ่งทุกอย่างก็ผ่านไปได้ด้วยดี หรือเกือบดี รอลุ้นกันอยู่เกือบ 1 เดือนก็ถึงวันประกาศผล ในวันงานประกาศผลก็มีการจัดแสดงผลงานของทีมอื่นๆ ที่เข้ารอบสุดท้ายเช่นกัน ซึ่งหลายๆ Application ก็มีแนวคิดที่ดี และความคิดสร้างสรรค์ที่ยอดเยี่ยมมาก คือแทบจะมีลุ้นทุกทีม เมื่อถึงช่วงเวลาการประกาศผลโดยมีพี่หนุ่ย พงศ์สุข เป็นพิธีกรดำเนินรายการ มีการแทรกมุขตลกอยู่เรื่อยๆ ช่วยลดแรงกดดันได้ดีทีเดียว ก็ประกาศไปรางวัลมีชมเชย 7 รางวัล Bronze 11 รางวัล Silver 4 รางวัล และ Gold 2 รางวัล การประกาศเค้าจะบอกชื่อสถาบันก่อน ตามด้วยชื่อทีม พอจุฬาฯที ก็ขนลุกที และเมื่อถึง 3 ทีมสุดท้าย คือ 1 Silver และ 2 Gold พิธีกรให้ทีมที่เหลือลุกขึ้น และทีมที่ถูกเรียกออกไปคือ Silver รางวัลสุดท้าย ตอนยืนตอนนั้นแบบกดดับชิบ หัวใจสูบฉีดเลือดอย่างแรง เส้นเลือดแทบจะระเบิด ผลงานที่พัฒนา และลงทุนลงแรง ไปกว่า 1 ปี ผลจะเป็นอย่างไรขอให้ติดตามตอนต่อไป เอ้ยไม่ใช่แล้ว - -" แล้วพี่หนุ่ยก็ประกาศ ทีมที่ได้ Silver Award ทีมสุดท้ายคืออออออออออ "..." (จำไม่ได้) ณ เสี้ยววินาทีนั้น "YESSSSSSSSSSSSSSSSSSSS ทีมเราได้ Gold Award แล้วนิ่หว่า" โคตรจะดีใจ ในที่สุดผลงานที่ทีมเราได้ทุ่มเทมาก็ประสบความสำเร็จแล้ว
          กว่าที่จะมาประสบความสำเร็จในจุดนี้ได้ก็ต้องผ่านปัญหา และอุปสรรค์หลายๆอย่าง ต้องขอขอบคุณ
          - แฮมและจั๊มที่ถูกกดดัน และไม่ได้นอน ถึงจะเราจะเรื่องมากไปหน่อย แต่ก็เพื่องานที่จะออกมาดี
          - บ้านแฮม ให้เป็นที่สุมหัวทำ Project (อาหารบ้านนี้อร่อยมาก)
          - พี่เนย คอยเป็นที่ปรึกษาเมื่อเจอปัญหาต่างๆ มากมาย รวมทั้งข้อคิดดีๆ
          - พี่หน่อย โปรโมชั่น GPRS ดีๆ และคำแนะนำครับ
          - จั้ม @ SKE KU ช่วยเรื่อง Server ที่ใช้ใน Project นี้
          - ป้อง @ CP KMITL ที่ให้กุบ่น - -"
          - Samart และทีมงานที่จัดโครงการนี้ขึ้น
          - และคนอื่นๆที่ไม่ได้กล่าวถึง
          ขอบคุณครับ

ทีนี้ก็จะมีตัวอย่าง Screenshot ของโปรแกรม VidView มาให้ดูกัน

http://video.google.com/videoplay?docid=7278654894894094393&hl=en

 

October 20

เล็กๆน้อยๆกับ Font ใน Java

ในการทำงานเกี่ยวกับ GUI (Graphic User Interface) ของ Java คงหนีไม่พ้นเรื่องของการ Set Font เพื่อให้ได้รูปแบบและความสวยงามที่เราต้องการ
 
โดยทั่วไป การสั่ง Load Font เราจะสั่งดังนี้
       Font tahoma = new Font("Tahoma", Font.BOLD, 12);
หรือ
       Font tahoma;
       tahoma = Font.getFont("TAHOMA-BOLD-12");
ตาม Code  ข้างต้นเป็นการสั่ง Load Font ที่ต้องการตามชื่อ ทำให้อาจจะเกิดปัญหาตามมาเมื่อนำโปรแกรมไปทำงานในเครื่องคอมพิวเตอร์เครื่องอื่น ที่ไม่มี Font ชื่อนั้นๆ
ซึ่งถ้าหากเครื่องที่โปรแกรมทำงานไม่มี Font ดังกล่าวแล้ว จะทำให้ tahoma มีค่าเป็น null
ถึงอย่างไรก็ตาม Java ก็มี Method หนึ่งที่เข้ามาช่วยแก้ปัญหานี้ นั่นก็คือ
       Font.getFont(String fontName, Font defaultFont)
โดยถ้าหากไม่พบชื่อ Font ที่ต้องการ จะ return ค่า defaultFont ออกมาแทน แต่กระนั้น ก็ทำให้เราไม่สามารถทราบผลลัพธ์ที่แน่นอนได้
 
วิธีแก้ปัญหาที่ผมคิดว่าดีที่สุดก็คือ นำเอาไฟล์ Font ที่ต้องการใช้ มาเก็บไว้ใน Jar ของโปรแกรมที่เราสร้างขึ้น แล้วสั่งโหลด Font จาก Jar ของตัวโปรแกรมเองเลย
วิธีนี้จะทำให้ปัญหาข้างต้นหมดไป และไม่ต้องคอยกังวลว่า GUI ที่เราออกแบบไว้จะแสดงผลออกมาไม่ได้ตามต้องการ
Method ที่ใช้ในวิธีนี้ก็คือ
       createFont(int fontFormat, InputStream fontStream)
           - fontFormat คือชนิดของ Font นั้น แต่ขณะนี้ Support เฉพาะ TrueType เท่านั้น
           - fontStream คือข้อมูลของ File Font (วิธีเดียวกับการสั่งโหลดรูปจาก Jar ที่เคยเขียนไว้ใน Blog ที่ผ่านๆมา)
 
สำหรับตัวอย่าง Code มีดังนี้
1        Font tahoma = Font.createFont(Font.TRUETYPE_FONT,
2                                        MyClass.class.getResourceAsStream("TAHOMA.TTF"));
3        tahoma = tahoma.deriveFont(Font.BOLD, 12);
 
อธิบาย Code
ในบรรทัดที่ 1 และ 2 จะเป็นการสั่ง Load Font จาก Jar File โดยกำหนดชนิดของ Font เป็น TrueType
เมื่อสั่ง createFont แล้ว ลักษณของ Font (เช่น ตัวหนา) และขนาดของ Font จะถูกกำหนดโดยค่า Default ของ Java
โดยทั่วไปคือ ลักษณะจะเป็น Font.PLAIN และขนาดจะเท่ากับ 1
เราสามารถสั่งเปลี่ยนลักษณะและขนาดได้โดย Method deriveFont(int style, float size) ดังจะเห็นได้ในบรรทัดที่ 3
 
มาถึงตรงนี้เราก็สามารถนำตัวแปร Font (ในที่นี้คือ tahoma) ไปใช้งานต่อได้แล้ว
WINK! YOUR BUEATIFUL ขยิบตา
September 21

Quiz Logic#3-4

Quiz ครั้งที่ 3
ออกแบบและสร้างวงจร Self Starting Counter
จำไม่ได้ว่า State ไหนจะเป็น Unused State
 
====== Update 7/6/2551 ======
สำหรับคนที่งงๆ Self Starting Counter ว่ามันคืออะไร?
ขอยกตัวอย่าง Counter ที่นับจาก  000 ถึง 101 ละกัน (ในที่นี้จะใช้เลขฐาน 2)
สามารถเขียน State Table ได้ดังนี้
Present State |  Next State
       000           |       001
       001           |       010
       010           |       011
       011           |       100
       100           |       101
       101           |       000
       110          |        ???
       111          |        ???
 
จะเห็นได้ว่าเรามี State เหลืออยู่ 2 State ด้วยกัน (State สีแดง) เรียกว่า Unused State
ซึ่งถ้าวงจรของเราเกิดอาการติ๊งต๊องขึ้นมา แล้วดันเข้าไปอยู่ใน 2 State นี้ก็จะทำให้วงจรเกิดข้อผิดพลาดได้
 
การออกแบบวงจร Counter ที่เราจะรับรองได้ว่า ไม่ว่าวงจรจะเข้าไปอยู่ใน State ไหนก็ตาม สุดท้ายแล้ว มันก็จะสามารถกลับเข้าไปสู่ State ที่ถูกต้องได้
นั้นแหละที่เรียกว่า Self Starting Counter
 
แล้วจะสร้าง Self Starting Counter ได้ยังไงล่ะ?
คำตอบคือง่ายมาก "ก็ใส่ Next State ให้กับ Unused State สิ"
เมื่อดึง State Table ข้างบนมาแก้ไขให้เป็น Self Starting Counter จะได้ผลลัพธ์ดังนี้
Present State |  Next State
       000           |       001
       001           |       010
       010           |       011
       011           |       100
       100           |       101
       101           |       000
       110          |        000
       111          |        000
 
เห็นมะ Self Starting Counter สร้างได้ง่ายนิดเดียวใช่มั้ยล่ะ Open-mouthed
========================
 
Quiz ครั้งที่ 4
ออกแบบและสร้างวงจร Sequential Logic โดยที่เมื่อเจอ Input ที่ประกอบด้วยลำดับ 1010 หรือ 001 จะให้ Output ออกมาเป็น 1
โดยวงจรที่สร้างขึ้นต้องมีจำนวน State ที่น้อยที่สุดเท่าที่จะทำได้
 
เช่น มี Input เข้ามาในวงจรเป็นลำดับดังนี้ 101101111001 => เจอ 001 แล้วนิ่ ดังนั้น วงจรก็ส่ง Output เป็น 1 ออกมาในทันใด
========================
ทั้ง 2 Quiz อนุญาตให้ใช้ อุปกรณ์ Gate พื้นฐาน และ Flip-Flop (จำประเภทไม่ได้)

Quiz Com Org: Sec อาจารย์อาทิตย์

อันนี้วิกบอกมา
1. อธิบาย moore’s law
2. บอกกฏ 5 ข้อ ของการสร้าง bus
3. บอก registry ที่สำคัญมา 5 ตัว
4. SRAM กับ DRAM ต่างกันยังไง
5. เขียน block diagram ของ error correction
6. 1024 x 1024 k word of RAM of 4-bit word
• ต้องใช้ 32 Mbit RAM กี่ตัวมาสร้าง
• ใช้ input pin กี่อัน
(จำตัวเลขไม่ได้ แต่โจทย์ประมาณนี้แหละ)
7. บอกความแตกต่างของ interrupt driven กับ DMA
8. เขียน micro operation ของ fetch  
========================
1. เขียน Block Diagram ของ Error Correction
2. อธิบายความหมายและขั้นตอน Micro operation ของ Indirect Cycle
3. อธิบายความหมาย และข้อแตกต่างของ SRAM DRAM และ Embeded DRAM
4. ต้องการ RAM 1M words (8bit = 1 word) มี Ram chip 256K one bit per chip ต้องใช้ RamChip กี่ตัว Implement และถ้าการ Access Row และ Column ทำงานแยกครั้งกัน ตั้งมี Input Pin เท่าไร
5. อธิบายปัจจัยของการสร้าง Bus
6. อธิบาย Register ใน CPU ที่สำคัญมา 5 ชนิด
7. อธิบายบายความหมายของ DMA
 
September 16

Libray เจ๋งๆใน LogicWork

รวบรวมจาก Webboard ภาค
7449 - BCD to seven segment
74163 - counter
74175: Quad D Edge-Triggered Flip-Flop with Complementary Outputs and Asynchronous Clear
74181: 4-bit Arithmetic Logic Unit and Function Generator
74182: Lookahead Carry Generator
74183: Dual Carry-Save Full Adder
74184: BCD to Binary Converter
74185: Binary to BCD Converter
74_L85 - 4 bit comparator
74_169 - counter แบบ นับขึ้นนับ ลงได้
74_373 74_374 74_377 - register จาก D flip flop ทั้งหลาย
ลองดูที่ http://en.wikipedia.org/wiki/List_of_7400_series_integrated_circuits
Thx: แฮม รุจ แวด
September 15

MSDN Thailand Remix 2007

Microsoft Thailand เปิดสำรองที่นั่งงานผ่านทางเว็บไซต์
 
MSDN Thailand Remix 2007 งานมีขึ้นในวันที่ 26 กันยายน 2550 (วันพุธ ไม่มีสอบพอดีเลย - - ดูผิดนึกว่าพฤหัสบดี)
เป็นการสัมมนาเกี่ยวกับโปรแกรม และเทคโนโลยีของ Microsoft ตัวใหม่ คือ
    - Microsoft Silverlight (http://silverlight.net/)
    - Microsoft Expression (http://www.microsoft.com/expression/)
 
ใครสนใจก็ไปนะ สัมมนาครั้งนี้เหมาะสำหรับ Web Developer และ Web Designer เลย

Quiz Discrete: Counting

ปีการศึกษา 2550
Quiz ของ Discrete ทุกข้อจะเอามาจากไหนหนังสือครับ (รู้ทั้งรู้แต่ก็ไม่เคยอ่าน)
ที่จะเขียนออกมาให้ดู ถ้าข้อไหนอ่านไม่รู้เรื่องก็ไปไล่หาจากในหนังสือเอาเองละกัน
 
1. มีบ้านเลขที่ 1000-1099 และมีบ้านจำนวน 51 หลัง จงแสดงว่ามีบ้านอย่างน้อย 2 หลังที่มีบ้านเลขที่ติดกัน
2. แสดง C(n+r-q1-q2-...-qr-1,n-q1-q2-...-qr) เป็น Different unordered selections ของ n สิ่งที่ต่างกัน r ชนิด โดยแต่ละชนิดต้องหยิบมาอย่างน้อย q1 สำหรับชนิดที่ 1 q2 สำหรับชนิดที่ 2 และ qn สำหรับชนิดที่ n
3. แสดงโดยใช้ Combination argument ว่า C(n,r)C(r,k) = C(n,k)C(n-k,r-k)
4. มีเมือง 5 เมืองที่คณะกรรมการตรวจอาวุธต้องเข้าไปตรวจสอบ 1 ในนั้นคือเมือง X ซึ่งต้องสงสัยที่สุด จงหาลำดับที่คณะกรรมการจะเข้าไปตรวจสอบเมืองทั้ง 5 โดยมีข้อกำหนดว่าทุกเมืองต้องตรวจสอบ 2 ครั้ง และเมืองที่ต้องสงสัยที่สุดจะต้องไม่ถูกตรวจสอบ 2 วันติดต่อกัน
5. Trinary String ประกอบด้วย 0 1 และ 2
    5.1 หา Recurrence Relationของ จำนวน String ยาว n ที่มี 0 ติดกัน 2 ตัว
    5.2 จงบอก Initial Condition
    5.3 ถ้า String มีความยาว 5 bit จะมี String กี่แบบตามข้อกำหนดในข้อ 5.1
6. แก้ปัญหา Linear Recurrence Relation โดย An = 5An-1 - 6An-2 + 2^n + 3n
 
ปล. นับถอยหลัง 2 สัปดาห์นรก
การ Quiz ครั้งนี้ร้อนแรงดั่ง FIRE!!!
 
เว็บไซต์ต่างๆที่ได้จัดทำ หรือมีส่วนร่วมทั้งปัจจุบัน และผลงานที่ผ่านมา

Space's Statistic