Wednesday, June 07, 2006

Google Spreadsheets

Google Spreadsheets เป็นโปรแกรมตารางคำนวนเหมือนกับ Microsoft Excel แต่ทำงานอยู่บนเว็บ วันนี้ได้ลองใช้ดูเป็นครั้งแรกยอมรับว่าน่าทึ่ง ผมอยากจะทำอย่างนี้มานานแล้ว แต่ทำไม่ได้ซักที ความยากที่ผมเจอคือ ทำยังไงจะให้ยูสเซอร์ใช้งานคีบอร์ดได้เหมือนบน Excel ใช้ลูกศรเลื่อนซ้ายเลื่อยขวา คีย์ข้อมูล แก้ไขค่า กด Ctrl+C แล้ว Ctrl+V เพราะ่ว่า HTML นั้นไ่ม่มี Control ที่เป็นลักษณะแบบนี้ (Grid) ให้เราใช้งาน

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



Google นายแน่มาก ซักวันจะเขียนแบบนี้ให้ได้

Saturday, April 22, 2006

Blognone Tech Day

11:50 น.
"พี่ครับตึก 15 อยู่ไหนครับ" ผมถามเจ้าหน้าที่ รปภ. ที่กำลังนั่งดูจอมอนิเตอร์อยู่หน้าลิฟท์ (เดินถามมาแล้วหลายคนแต่ไม่มีใครรู้จักตึก 15 เลย) รปภ. หนุ่ม เงยหน้าขึ้นมามองผมแล้วตอบสั้น ๆ ว่า "นี่แหละ"
"อ้าว..." ผมอุทานด้วยความงง เพราะคนก่อนหน้านี้พึ่งบอกผมว่า ตึก 15 ไม่รู้อยู่ที่ไหนแต่ที่นี่ตึก 16!!!
"ผมมางาน Blognone ไม่ทราบว่าอยู่ชั้นไหนครับ"
"แลกบัตรไว้แล้วขึ้นไปติดต่อที่ชั้น 4 ก็แล้วกัน" อืม.... เป็นคำตอบที่ดีมาก

พอขึ้นไปถึงชั้น 4 มีเจ้าหน้าที่อยู่ 1 คน บรรยากาศเงียบเชียบน่านั่งสมาธิไร้วี่แววที่จะเป็นงาน Meeting ใด ๆ ถามเจ้าหน้าที่ก็ได้คำตอบกลับมาว่า "Blognone อะไร" ผมก็เลยจำเป็นต้องเอา PPC คู่หูออกมา connect GPRS เข้าบ้านเก่า www.blognone.com ถึงเห็นว่าในกำหนดการบอกไว้แล้วว่าชั้น 5 แต่ผมดันก็อปปี้แต่แผนที่ไว้ดู ในนั้นไม่บอกชั้นไว้แต่ดันบอกทางไป ม.ศรีปทุม ถ้าไม่มีเทคโนโลยีนี่ก็แย่เหมือนกันนะ

พอขึ้นไปถึงชั้น 5 ชั้นนี้น่าทำสมถะกัมมัฏถานเข้าฌาณไปเลย เพราะทั้งเงียบและไม่มีคนบนทางเดินเลยแม้แต่คนเดียว เดินไปส่องดูห้อง 503 ตามที่บอกไว้ในกำหนดการ ห้องปิดไฟและไม่มีคนเลย ผมชักสงสัยว่ามาผิดที่ หรือผิดเวลาหรือเปล่า ก็เลยเดินไปส่องดูห้องอื่น ๆ เห็นคนอยู่ในห้องถัดไป 4 - 5 คน ดูเหมือนจะเป็นนักศึกษาเพราะเด็ก ๆ กันอยู่ ก็เลยคิดว่าอาจจะไม่ใช่ เดินดูห้องอื่นต่อไป ก็ไม่เห็นวี่แววว่าจะมีห้องไหนเป็นงาน Meeting คงจะเป็นห้องเมื่อตะกี้นี้แหละ ก็เลยเดินหันหลังกลับ พอดีมีหนุ่มหน้ามนสวมแว่นเดินออกมาจากห้อง ผมนึกในใจว่านี่คงเป็น mk (ตอนหลังรู้ว่าใช่จริง ๆ ด้วย) แล้วผมก็เดินไปเปิดประตูเข้าไปถามคนในห้องที่นั่งกันอยู่ 3 - 4 คน "งาน Blognone ใช่ห้องนี้หรือเปล่าครับ"

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

13:00 น.
- เริ่มงานด้วยคุณ Pok (ต่อไปต้องเรียกว่าพี่ป๊อก) พูดเรื่อง Ruby on Rails ผมชอบตอนนี้ที่สุดเพราะผมกำลังอยากจะเขียน Ruby อยู่ แต่พี่ป๊อกดำกว่าที่ผมคิดไว้ (แต่ไม่อ้วนนะ)

- ต่อมาคุณ สุกรี พูดเรื่อง Zope แต่ฟังไปฟังมาแยกไม่ออกว่าอันไหน Zope อันไหน Plone จริง ๆ แล้วผมก็สนใจ Zope อยู่เหมือนกัน เพราะที่บริษัทใช้ Python อยู่แล้ว แต่ผมไม่ได้เขียนเพราะผมไม่ได้รับผิดชอบตรงนี้ ว่าง ๆ ก็กะว่าจะไปขอทำโปรเจคท์ Python ซักตัวอยู่เหมือนกัน ขอเล่าอะไรให้ฟังหน่อยเผื่อใครยังไม่รู้ เครื่องจักรรุ่นใหม่ล่าสุดของบริษัทผมเขียนด้วย Python รันบน Linux ควบคุมเครื่องผ่านเว็บเบราเซอร์ แบบเรียบไทม์ ซอฟแวร์ทุกตัวเป็น Opensource หมด เครื่อง ๆ นึงมีคอมพิวเตอร์อยู่ 14 ตัว ติดต่อกันผ่าน TCP/IP ส่วน H/W ติดต่อผ่าน USB ทั้งหมด เบ็ดเสร็จราคาประมาณร้อยล้านต่อเครื่อง มีอยู่หลายสิบเครื่อง วัน ๆ เครื่องพวกนี้ผลิตอุปกรณ์คอมพิวเตอร์ที่เราใช้ ๆ กันอยู่ได้เป็นแสนตัว นี่เป็นตัวอย่างให้เห็นว่า Opensource และ Python นั้นไม่ธรรมดา อย่าคิดว่าเขาเขียนกันเล่น ๆ งานอุตสาหกรรมระดับโลกก็ใช้อยู่ เพราะฉะนั้นใครตั้งใจจะศึกษาก็ศึกษาซะรับรองไม่เสียหลาย

- EJB 3.0 ของคุณ deans4j อืม.... ไม่ขอพูดมากเพราะไม่ค่อยถนัด แต่ผมว่าคุณ deans4j บุคคลิกดูดี คนต่อไปดีกว่า

- Mono โดยคุณ วีนนาท ผมคาดหวังตรงนี้ไว้เยอะ ว่าจะได้เห็น Demo การเซ็ตอัพ หรือไม่ก็ตัวอย่างการใช้งาน เพราะผมอยากลองมานานแล้ว จริง ๆ แล้วก็เคยพยายามอยู่ครั้งนึงสมัย Mono พึ่งเริ่มต้นใหม่ ๆ แต่ไปไม่รอดเลยเลิก ส่วนเนื้อหาสำหรับผมถือว่าน้อยไปหน่อย แต่ถ้าคนที่ไม่เคยได้ยิน Mono มาก่อนก็ถือว่าดี สรุปแล้วสำหรับผมถ้าจะเขียน .NET ก็ไม่รู้ว่าจะไปใช้ Mono ทำไม ผมคงใช้ .NET Framework และ Windows 2003 Server ของผมต่อไปดีกว่า

- Emacs ของพี่พูลลาภ ซึ่งหน้าตาผิดคาดไปเยอะ คือหน้าตาดูดีกว่าชื่อ เนื้อหาก็น่าสนใจดี คงต้องลองใช้ดูแล้วหละเผื่อจะติดใจ

- Asterix ของพี่โดม ผมว่าตอนนี้มันสุด น่าจะให้พี่เค้าพูดซัก 2 ชั่วโมง ครั้งหน้าผมขอจองเวลาไว้ให้พี่เค้าเยอะ ๆ หน่อยก็แล้วกัน เนื้อหาน่าสนใจกว่าที่ผมคิดไว้เยอะ ชักอยากลองดูอีกแล้วซิ

- Xen ของคุณสมพล ยังไม่เห็นว่าจะเอามาใช้อะไร เอาไว้ก่อนก็แล้วกัน

- Game Theory ของ อ.จิตร์ทัศน์ ก็น่าสนใจดี แต่ผมยังเห็นด้วยกับ อนิจจัง ทุกข์ขัง อนัตตา มากกว่าคือมันไม่แน่นอน ประเด็นที่ผมเห็นคือทุกข์ ไม่ว่าจะอยู่เฉย ๆ ไปคอนเสิร์ตบอย ไปงาน Blognone หรือ ไปคนละที่ มันต้องมีคนทุกข์อยู่ดี

- Web 2.0 (ผมขอใช้ชื่อนี้ดีกว่า) ของคุณ ปรเมศวร์ ทำให้เห็นภาพอนาคตของเทคโนโลยีได้ดีเลยทีเดียว

- ZWSP โดยลิ่ว พูดถึงการตัดคำภาษาไทย และปัญหาในการ Search ภาษาไทยจาก Search Engine ซึ่งผมก็ติดปัญหาตัวนี้มานานเหมือนกัน เรื่องนี้น่าสนใจและเป็นประโยชน์กับคนไทยมาก เพราะถ้าเราทำเว็บให้ Search Engine ค้นหาคำได้เป็นคำ ๆ จะทำให้คนไทยเข้าถึงข้อมูลได้ดีและตรงประเด็นมากกว่านี้ ผมเข้าใจว่า Google กับ Sanook ก็พยายามแก้ปัญหานี้เหมือนกัน ถ้าเค้าแก้ได้เราก็สบายไปไม่ต้องทำอะไร แต่ช่วงที่รอนี่สิต้องหาทางออกทางอื่นไปก่อน จริง ๆ ลิ่วน่าจะพูดให้เยอะกว่านี้หน่อย

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

22:00 น. กลับถึงโคราช มีใครไปไกลเหมือนผมหรือเปล่าเนี่ย?
03:42 น. นั่งพิมพ์บล็อกบรรทัดสุดท้าย ไปนอนดีกว่า

Thursday, March 30, 2006

ลง MediaWiki

หลังจากจัดการกับ MySQL ได้แล้วก็ลง MediaWiki จะเอาไว้ให้คนในทีมร่วมกันทำเอกสาร เป็นฐานความรู้ขององค์กร ตอนลงก็ไม่ยาก ก็แค่ไป fetch ไฟล์มาจาก SourceForge แล้วก็ unzip แล้ว copy ไปไว้ในส่วนของเว็บ แล้วก็เรียกไฟล์ Config ระบบจะให้กรอกข้อมูลอีกนิดหน่อย ใส่ ๆ ไป ที่สำคัญต้องใส่ username กับ password ของ MySQL root ด้วยเพื่อสร้างฐานข้อมูลให้เราอัตโนมัติ ตอนสุดท้ายก็ให้ย้าย config ไฟล์ไปยัง path ที่ลงไว้ เป็นอันจบ

เขียนแบบรีบ ๆ ไม่ได้เอาคำสั่งและ Capture หน้าจอมาไว้ เพราะขี้เกียจ แล้วตอนทำมันก็รีบด้วย - -'

Wednesday, March 29, 2006

Setup MySQL บน FreeBSD

นั่งลง FreeBSD เครื่องเก่าที่บ้าน ว่าจะเอาทำเป็น Server ให้ Access จาก Internet ข้างนอก โดยผ่านทาง no-ip.com ก็เลยลง MediaWiki ว่าจะเอาไว้ให้คนใกล้ตัวใช้งานแต่ดันติดปัญหาเรื่อง MySQL ปกติเคยลง Oracle กับ MySQL บนวินโดวส์ พอเอา MySQL มาลงใน FreeBSD ถึงกับงงอยู่หลายชั่วโมง ขอบันทึกไว้หน่อยเผื่อมือใหม่ที่ไม่ค่อยเก่งแบบผมผ่านมาเจอ อาจจะเป็นประโยชน์ จริง ๆ ก็ไม่ยากเท่าไหร่นะ แบบว่าโง่นะ ต้องยอมรับ

อันนี้ผมลงเวอร์ชั่น 4 เดี๋ยวเวอร์ชั่น 5 วันหลังค่อยว่ากัน
# cd /usr/ports/databases/mysql40-server
#make install
เสร็จแล้วอย่าลืมไปเพิ่ม mysql_enable="YES" ใน /etc/rc.conf ด้วยหละ
แล้วจะสั่งสตาร์ท Service หรือลองรีสตาร์ทเพื่อความชัวร์ว่าเผื่อวันหลังเราบูทเครื่องขึ้นมามันเปิดเซอร์วิสให้เราหรือเปล่า
#reboot

หลังจากลง MySQL เสร็จแล้วสามารถ login เข้าฐานข้อมูลได้โดย
#mysql -u root mysql
เสร็จแล้วก็ตั่ง password ใหม่ซะ
mysql> set password = password("yourpassword");
แล้วก็ออกมา
mysql> quit

เสร็จแล้วลองเข้าใหม่โดยใช้ password ที่ตั้งไว้
#mysql -u root -p
มันจะขึ้นว่า
Enter password:
ก็ใส่ yourpassword ซะให้เรียบร้อย
หลังจากนั้นจะทำอะไรก็ค่อยว่ากันไป

ส่วนอันนี้ไปเจอที่ awaremag ยังไม่ลองดูไม่รู้ใช้ได้ป่าว
cd /usr/ports/databases/mysql41-server/
make install clean
/usr/local/bin/mysql_install_db
chown -R mysql:mysql /var/db/mysql/
/usr/local/etc/rc.d/mysql-server.sh start
/usr/local/bin/mysqladmin -u root password newpassword

Tuesday, March 14, 2006

Nokia 3310 PCBA

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

แต่ Blogger ดัน error ขอเอารูปไปไว้ที่อื่นแล้ว link มาก็แล้วกัน (อาจจะใหญ่หน่อย)


Monday, March 13, 2006

แบตเตอรี่ โทรศัพท์มือถือ


พอดีนึกถึงเรื่องของแบตเตอรี่ คิดว่าหลาย ๆ คนอาจจะยังไม่รู้ว่าแบตเตอรี่ของโทรศัพท์มือถือที่มี 3 - 4 ขั้วนั้นเขาเอาไว้ทำอะไรกัน ส่วนคนที่รู้แล้วก็อย่าถือสานะครับ ถือว่าอ่านเล่น ๆ ขำขำก็แล้วกัน

ปกติแล้วแบตเตอรี่จะมีแค่สองขั้วคือ ไฟบวก กับ ลบ เท่านั้น แต่สำหรับโทรศัพท์มือถือ เหมือนในรูปเป็นแบตเตอรี่ของ 3310 จะมีทั้งหมด 4 ขั้ว นับจากด้านซ้ายไปขวามีรายละเอียดดังนี้ VBatt, BSI, BTemp และ Ground

1. VBatt (+) เป็นไฟบวก ปกติจะมีค่าแรงดันประมาณ 3.6 V แต่ถ้าวัดดูจริง ๆ จะสูงกว่านี้นิดหน่อย
2. BSI (Battery Size Indicator) เป็นตัวที่ใช้บอกว่าแบตตัวนี้เป็นแบบหนาหรือบางความจุเท่าไหร่
3. BTemp (Battery Temperature) เป็นตัวที่ใช้บอกอุณหภูมิของแบตเตอรี่ ถ้าอุณหภูมิของแบตเปลี่ยนแปลงจะทำให้ค่าความต้านทานภายในของขานี้เทียบกับกราวด์เปลี่ยนไป ไม่เชื่อลองเอาไฟแช็คลนไกล ๆ หน่อย (เดี๋ยวระเบิดไม่รู้ด้วย) แล้วใช้ โอห์มมิเตอร์วัดดูค่าความต้านทานจะเปลี่ยนแปลง หรือไม่ก็เอาไปแช่ตู้เย็นดูก็ได้ (แบบนี้ปลอดภัยกว่า) แต่ถ้าเป็นแบตปลอมคุณภาพห่วย ๆ บางตัวขานี้ก็ไม่ทำงาน ต้องลองกันเอาเอง
4. Ground (-) ขานี้เป็นกราวด์ (ไม่รู้จะแปลทำไม)

ส่วนแบตรุ่นใหม่ ๆ จะมีแค่สามขั้ว ขาที่หายไปคือ BSI เหลือแต่ BTemp นั่นเอง

เดี๋ยวจะลอง Short ระหว่าง (+) กับ (-) ของแบตแท้และแบตปลอมดูว่า จะเกิดอะไรขึ้น อยากรู้เหมือนกันว่าของแท้ที่โม้ ๆ ว่าตัวเองไม่ระเบิด แต่ของปลอมระเบิดนั้นจะจริงหรือเปล่า เพราะโอกาศที่โหลดจะลัดวงจรนั้นเป็นไปได้เสมอ ถ้าของแท้เจ๋งจริงต้องไม่เป็นไร ก่อนอื่นต้องหาเงินไปซื้อแบตก่อนเพราะของแท้แพงมาก

พื้นฐาน Nokia DCT3

พึ่งซ่อม Nokia 8310 เปิดไม่ติด ว่าจะเขียนไว้ซักหน่อย แต่มันง่ายมาก ก็เลยขอเกริ่นเรื่องแพลตฟอร์มของโทรศัพท์มือถือโนเกีย (เห็นฝรั่งมันออกเสียงว่า โน-กี-อะ) ให้อ่านกันเล่น ๆ ก่อน จบเรื่องนี้แล้วค่อยมาอ่านว่าเปิดไม่ติดทำยังไงก็แล้วกัน

Nokia มีหลายแพลตฟอร์มขอเริ่มต้นที่ DCT3 ซึ่งเป็นรุ่นเก่า ๆ เช่นพวก 3310 อะไรเทือกนี้ แล้วอย่าคิดว่าเก่าไม่สำคัญเพราะถ้าคุณซ่อม 3310 ได้จะเป็นพื้นฐานสำหรับรุ่นอื่น ๆ ทั้งหมด จนถึงเครื่องที่เป็นซิมเบี้ยนยันพ๊อกเก็ตพีซี

เครื่องที่อยู่ในตระกูล DCT3 ก็คือ 3210, 3310, 3330, 3350, 3390, 3410, 5110, 5130, 5146, 5190, 5210, 5510, 6110, 6130, 6150, 6210, 6250, 7110, 8210, 8250, 8290, 8850, 8890, 9000, 9110 และ 9210 ไม่รู้ว่าอนาคตจะมีอีกหรือเปล่า

วงจรต่าง ๆ ของโทรศัพท์มือถือถ้าไล่เป็นภาค ๆ ออกมาจะเหมือน ๆ กับ เอาคอมพิวเตอร์มาผสมกับ วงจรรับส่ง และจะมีไอซีตัวใหญ่ ๆ แต่ละตัวทำงานแบ่งหน้าที่กันไป
- CPU ปกติในมือถือจะเรียกว่า UPP คงไม่ต้องบอกว่าเอาไว้ทำอะไร (ไม่ได้เอาไว้ต้มไข่หรอกมั๊ง)
- RAM ไม่ต้องบอกเหมือนกัน
- ROM หรือ Flash Memory ตัวนี้ถ้าเทียบกับคอมพิวเตอร์คงจะเป็น Harddisk เพราะใช้เก็บซอฟท์แวร์ต่าง ๆ ของเครื่อง
- Antena Switch ทำหน้าที่สวิตช์สัญญาณระหว่างภาครับ และภาคส่ง ว่าใครจะใช้สายอากาศ ซึ่งมีอยู่อันเดียว (ใครเคยเห็นมือถือสองเสาบ้าง)
- RF IC แถวนี้เค้าเรียก HARGA (ไม่ใช่ฮานาก้า) ทำหน้าที่จัดการเกียวกับสัญญาณวิทยุเกือบทั้งหมด และจะทำงานร่วมกับพวก Oscillator, Filter และวงจรของ 1800 กับ 900 ซึ่งแยกกันด้วย
- Audio IC จัดการเกี่ยวกับเสียงติดต่อกับไมค์และลำโพง
- RF Power Amplifier บางครั้งก็เรียก PA เฉย ๆ ใช้ขยายสัญญาณวิทยุก่อนป้อนให้สายอากาศ (Ant. Switch) โดยมี Transformer ตัวเล็ก ๆ ทำหน้าที่ส่งผ่านกำลังไปให้
- Power IC ปกติเรียกว่า CCONT ใช้เปิดปิดเครื่องและจ่ายไฟให้ภาคต่าง ๆ ทั้งหมด ยกเว้น PA และยังทำหน้าที่ติดต่อซิมการ์ดอีกด้วย
- UI IC ใช้ควบคุมพวกหน้าจอ LCD หลอด LEDs ปุ่มกดต่าง ๆ และ บัซเซอร์
- Charging IC ควบคุมการชาร์ตแบตเตอรี่ (ถ้าชาร์ตแบตไม่เข้าให้สงสัยตัวนี้เป็นอันดับแรกถ้าแบตเตอรี่ดีนะ)

เดี๋ยวถ่ายรูปมาให้ดูกัน

Wednesday, March 08, 2006

โต๊ะคอมแบบนี้น่าจะดี

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

Friday, January 27, 2006

Nokia กับ Samsung ดีกว่า

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

เครื่อง Nokia 3310 ที่เอามาซ่อมนั้น ซื้อจอมาเปลี่ยน แล้วก็เอาบอร์ดตัวเดิมของเราที่ไม่ได้ใช้ใส่ไปให้ เพราะบอร์ดของเค้ามันโทรออกในย่าน 1800 (Orange & DTAC) ไม่ได้ แต่ 900 ได้สบาย ส่วนบอร์ดเก่าต้องมานั่งวิเคราะห์ดูก่อน ยังระบุไม่ได้ว่า ว่าเป็นที่ภาค RF, HF Filter หรือ ตัว Osillator กันแน่ ไม่อยากเปลี่ยนมั่ว ๆ เหมือนที่เขาทำกัน

Friday, January 13, 2006

Java โดย Oracle JDeveloper 10g

ไปอ่านเจอที่ ไทยรัฐมาว่า Oracle เปิดตัว JDeveloper 10g สำหรับเขียน Java ก็เลยเอามาเขียนไว้

เมื่อสองสามอาทิตย์ที่แล้วลองไปดาวน์โหลด NetBeans 5.0 (Beta) มาลองเขียนเล่น ๆ ดู พบว่าก็พัฒนาไปเยอะแล้วเหมือนกันแฮะ ปีนี้คงได้เขียน Java กันเสียที

ประเดิมซ่อม Samsung A300

ลืมถ่ายรูปตอนซ่อมไว้ว่าทำอะไรยังไงบ้าง เอาไว้เครื่องต่อไปก็แล้วกัน เพราะตอนที่ซ่อมนั้นรีบ ดึกด้วย ง่วงด้วย

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

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

สุดท้ายไปถามที่ร้านอะไหล่ ร้านนึงบอก ๘๐๐ อีกร้านบอก ๕๕๐ คงไม่ต้องบอกว่าผมซื้อร้านไหน แล้วก็เอามาเปลี่ยน ตอนที่เปลี่ยนต้องบัดกรีหูฟัง ออกจากวงจรเดิมแล้วต่อเข้ากับวงจรใหม่ แล้วประกอบเครื่องเรียบร้อยพร้อมทุกอย่าง

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

Yes!!! ในที่สุดก็ซ่อมได้..... ^_^

จริง ๆ แล้วไม่เรียกว่าซ่อมดีกว่าเพราะไม่ได้ซ่อมอะไรเลยแค่ซื้อจอมาเปลี่ยนแค่นั้นเอง ง่าย ๆ แค่นี้เองประหยัดตังค์ไปตั้ง ๑,๙๕๐ บาทแนะ

เครื่องมือและอุปกรณ์ที่ใช้
๑. ไขควงชุดเล็ก ๒. หัวแรง ๓. ตะกั่ว

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

Friday, January 06, 2006

Ruby

เห็นเขาคุย ๆ เรื่อง Ruby กันมาพักนึงแล้ว พึ่งได้โอกาส Download มาเล่น ใช้ง่ายดีแฮะ ยังใช้ Rails ไม่ได้ เดี๋ยวลองใหม่ เดี๋ยวก็ได้เองแหละ

อ้างอิง
http://www.rubycentral.com/
http://www.rubyonrails.org/
http://www.ruby-doc.org/docs/ProgrammingRuby/

คงถึงเวลาเปลี่ยนแปลงแล้วหละ

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

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

กำลังพิจารณาอยู่ว่าจะต่อ ป.โท mechatronic ดีหรือเปล่า หรือว่าจะเรียน ป.ตรี mechanical engineer กับ civil engineer เพราะวิชาพื้นฐานส่วนใหญ่เรียนมาหมดแล้ว ถ้าไปเรียนคงเรียนเฉพาะวิชาหลัก ๆ เท่านั้น และจะเป็นประโยชน์กับตัวเองและสังคมโดยตรงเพราะได้เอามารับใช้สังคมได้ตรง ๆ ตามเจตนาที่วาง ๆ ไว้

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

Thursday, November 03, 2005

Tutorial Multimedia เจ๋ง ๆ จาก Microsoft



ทำได้ดีจริง ๆ ด้านขวาก็เป็นคนนั่งพูด อธิบายไปเรื่อย ๆ ด้านซ้ายก็เป็น Presentation ที่เขากำลังอธิบายอยู่ มีอันอื่นอีกเพียบไปดูเอาเอง แต่ Net ต้องแรง ๆ หน่อย ของผมใช้ 512 K วิ่งเกือบ 100 % เลย
อยากรู้จังว่าเขาใช้อะไรทำ จะเอามาทำมั่ง เพราะเวลาเขียนบทความ หรือ Blog ต้องมานั่งแต่งแล้วแต่งอีกกว่าจะได้แต่ละหน้านานโคตร แบบนี้แค่มานั่งพูด ๆ แล้วก็บันทึกหน้าจอขึ้นเว็บให้ไปดูกันได้เลยไม่เสียเวลาในการทำ คนอ่านก็ไม่ต้องอ่านนั่งฟังเอาสบายทั้งสองฝ่าย

แบบว่าขี้เกียจพิมพ์ Blog แล้วเมื่อไหร่จะมี Blog แบบบันทึก Video ขึ้นไปเลย ชีวิตคงจะดีขึ้นเยอะ ฝาก Google ไปคิดหน่อย แล้วอย่าลืมทำ Search Engine ให้ Search เสียงได้ด้วยหละ ไม่งั้นเดี๋ยวหาไม่เจอ (ฮ่า ๆ ยากไปไหมเนี่ย!)

ไปดูอย่างอื่นเพิ่มเติมเกี่ยวกับ ASP.NET ได้ที่ Beta ASP.NET

Wednesday, October 26, 2005

วีธีขยายพื้นที่ Hotmail จาก 2 MB ไปเป็น 250 MB

ใช้ Hotmail ได้พื้นที่แค่ 2 MB แล้วอึดอัด ชาวบ้านเขาได้เป็น GB กันแล้ว ทั้ง Yahoo และ Gmail ก็เลยหาวิธีเพิ่ม Size ของ Hotmail อย่างน้อยได้ 250 MB ก็ยังพอทน
อันดับแรกเข้าไปที่ Options>persional>My Profile
ให้เปลี่ยน Home location>Country/region เป็น United States
แล้วเลือกรัฐ เช่น ผมเลือก Georgia ใส่รหัสไปรณีย์ 31150 (ของ Atlanta)
คลิ๊ก Save แล้ว Continue
เข้าไปเช็คใน Language ให้แน่ใจว่าเป็น English
แล้ว Copy Link >> http://by17fd.bay17.hotmail.msn.com/cgi-bin/Accountclose << นี้ไปวางบน Address ของ Browser ตัวที่เปิด Hotmail อยู่แล้วกด Enter มันจะถามว่าต้องการปิด Account หรือเปล่า ก็ตอบตกลงไปเลย ไม่ต้องกลัวข้อมูลหาย เสร็จแล้วก็ไปหน้า Login ของ Hotmail ใหม่อีกรอบ แล้วทำการ login ใหม่ ก็จะมีคำถามว่าต้องการ re-activate account หรือเปล่า แล้ว Click อีกสองสามทีก็เสร็จ เข้าไปคราวนี้จะได้พื้นที่ 25 MB แล้วอีกสองสามอาทิตย์พื้นที่ก็จะเพิ่มเป็น 250 MB เอง

Monday, October 24, 2005

สภาพอากาศทั่วโลก ด้วย GoogleEarth

พยายามหาภาพถ่ายดาวเทียม สภาพอากาศ แบบ Real Time ของประเทศไทย ที่เจอก็มีสองสามอันที่ใช้ได้ อันแรกเป็นภาพล่าสุดจาก NECTEC เข้าไปดูได้ที่
http://tiwrm.hpcc.nectec.or.th/Tracking/Now/latest.jpg ซึ่งภาพจะมีการ Update ทุก ๆ ชั่วโมง แต่จะ Delay ไปประมาณ 2 - 3 ชั่วโมง


อันที่สองถ้าอยากดูภาพเคลื่อนไหวต้องเข้าไปดูที่ Satellite Weather Image Archives แล้วก็เลือกเอาว่าจะ Play ย้อนหลังไปกี่วัน ถ้าเลือกย้อนหลังไปนานต้องรอโหลดนานหน่อย

อันสุดท้ายต้องลง Google Earth ก่อน แล้วไป Download สภาพอากาศ ซึ่งเขาทำ Overlay ไปดึงสภาพอากาศทั่วโลกมา แต่ตอนโหลดใช้เวลาบ้างพอสมควร




วันนี้แถวบ้านฝนตกหนักเอาการ แต่ก็ดีกว่าที่อเมริกาเยอะ ปีนี้สงสัยจะสาหัสเพราะ โดนเข้าไปสามดอกติด ๆ กันเลย



ที่ Thai Google Earth มีอะไรดี ๆ เยอะเหมือนกัน ไปดูกันเอาเอง

Tuesday, October 18, 2005

มาเขียน AJAX กันดีกว่า # 2 (Ajax.NET Library)

ต่อจากตอนที่แล้ว "มาเขียน AJAX กันดีกว่า # 1" ใครยังไม่อ่านไปอ่านมาก่อนก็ดี

มาว่ากันต่อกับ AJAX โดยวันนี้จะอธิบายการใช้งาน Ajax.NET Library ซึ่งสามารถ Download Ajax.dll ได้ที่ Ajax.NET - A free library for the Microsoft .NET Framework (Version ปัจจุบันคือ 5.7.22.2)

อันดับแรกให้ทำการสร้างโปรเจคใหม่ เป็น ASP.NET Web Application ในกลุ่ม Visual C# Projects ในตัวอย่างนี้ผมตั้ง ชื่อโปรเจคว่า AjaxDotNet






เสร็จแล้วไป Copy ไฟล์ Ajax.dll ที่เรา Download มา ไปเก็บไว้ใน Sub Directory bin ของ Project ของเรา แล้วทำการ Add Reference โดย Click ขวาที่ References แล้วเลือก Add Reference แล้วก็ไป Browse หาไฟล์ Ajax.dll



ใน Web.config ให้เพิ่ม Tag httpHandlers ตามนี้


ส่วนอื่น ๆ ให้คงไว้เหมือนเดิมนะครับ

ส่วนฝั่ง WebForm1.aspx.cs ให้เพิ่ม Code เข้าไปดังนี้

private void Page_Load(object sender, System.EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(WebForm1));
}

ตรง typeof(WebForm1) ให้ใส่ชื่อตามชื่อ Class ที่เราตั้ง

สมมุติว่าต้องการเขียน Function (Method) ในการบวกค่าให้ เพิ่ม Code เข้าไปอย่างนี้
[Ajax.AjaxMethod()]
public int ServerSideAdd(int firstNumber, int secondNumber)
{
return firstNumber + secondNumber;
}

Function นี้ทำงานง่าย ๆ คือ รับค่า Integer สองตัวเข้ามาบวกกันแล้ว Return กลับไป

คราวนี้เราก็มาเรียกใช้ Method ที่ฝั่ง Client กัน แต่ก่อนที่เราจะเรียกใช้ Function ที่เราเขียนได้นั้นต้อง Add JavaScript เข้าไปสองไฟล์นั่นก็คือ ajax/common.ashx และ ajax/AjaxDotNet.WebForm1,AjaxDotNet.ashx (ในตัวอย่างคือ บรรทัดที่ 11 และ 12)




Click ที่รูปเพื่อดูรูปใหญ่


ผมเขียน Function JavaScript ไว้สองอันหลัก ๆ อันแรก คือ test1() ตัวนี้จะส่งตัวเลข 10 กับ 2 ไปบวกกันที่ฝั่ง Server แล้วนำค่าที่ Return มา Show เป็น Alert Message
ส่วน test2() ให้เอาค่าจาก TextBox1 กับ TextBox2 ไปบวกกัน แล้ว Return โดยการเรียก Function ServerSideAdd_CallBack() พร้อมส่งค่าผ่านตัวแปรที่ชื่อ response แล้วนำค่าที่ได้มาเติมเข้าไปใน TextBox3




และผลที่ได้ก็ออกมาแบบนี้ครับ




ถ้า Click ปุ่ม Test 1 จะไปเรียก Function test1() จะส่งค่า 10 กับ 2 ไปบวกันที่ Server แล้ว Alert Message Box แต่ถ้า Click ปุ่ม Excute จะไปเรียก test2() ก็จะส่งค่าจาก TextBox1 กับ TextBox2 ไปบวกกันที่ Server แล้วเอาผลลัพท์มาใส่ใน TextBox3 ตามที่ได้กล่าวมาแล้ว

ตอนที่เรียกใช้ Function ที่ Server นั้นจะเห็นว่าง่ายมากดังตัวอย่างคือ
x = WebForm1.ServerSideAdd(10,2);

ง่ายกว่านี้มีอีกไหม?
ตอนนี้ยังครับ แต่ผมว่าอย่าให้ง่ายกว่านี้เลย เดี๋ยวโปรแกรมเมอร์ตกงาน

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

ป.ล. ใครรู้วีธี Post HTML tag ลงใน Blogger ช่วยชี้แนะด้วยครับ มันไม่ยอมให้ผม Post HTML tag

Wednesday, October 12, 2005

มาเขียน AJAX กันดีกว่า # 1

AJAX คืออะไร?
AJAX ย่อมาจาก Asynchronous JavaScript and XML เป็นวิธีการเขียนที่ใช้ JavaScript ร่วมกับ XML เพื่อสื่อสารกับ Server

ทำไมต้องใช้ AJAX?
ถ้าใครเคยเขียน Web Application ที่ซับซ้อนหน่อยโดยเฉพาะงานที่ต้องมีการส่งค่าไปกลับระหวาง Server และ Client บ่อย ๆ จะเห็นว่าเราจะต้องให้ Page นั้น Reload ทุก ๆ ครั้งที่ต้องการติดต่อไปยัง Server แล้ว Server ก็จะส่งข้อมูลกลับมาใหม่ทั้งหมด ซึ่งบางครั้งข้อมูลที่ต้องการจาก Server มีเพียงเล็กน้อยเท่านั้น แต่ก็ต้อง Load ข้อมูลมาใหม่ทั้งหมด ยกตัวอย่างเช่นพวก Header หรือ Footer ซึ่งปกติจะเป็นสิ่งที่ Fix ไว้อยู่แล้ว แต่การ Reload แต่ละครั้งก็ต้องส่งข้อมูลพวกนี้มาใหม่ทุก ๆ รอบ เป็นผลให้ช้า และเปลือง Bandwidth ของ Network เป็นอย่างมาก
AJAX นั้นเข้ามาช่วยแก้จุดอ่อนตรงนี้ หลักการทำงานของ AJAX คือ จะมีการส่งและรับข้อมูลเฉพาะส่วนที่จำเป็นหรือต้องการเท่านั้น โดยใช้ JavaScript เป็นตัวกลางในการติดต่อกลับไปยัง Server ข้อมูลที่รับส่งนั้น จะอยู่ในรูปแบบของ XML (จริง ๆ แล้วไม่จำเป็นต้องเป็น XML เสมอไป ขึ้นอยู่กับเรามากกว่า) ด้วยเหตุนี้ระบบจะทำงานเร็วขึ้น พร้อมทั้งลดปริมาณของข้อมูลที่วิ่งในเครือข่าย ช่วยลด Bandwidth ของ Network ไปในตัวอีกด้วย



ตอนนี้มีใครใช้ AJAX อยู่บ้าง ?
Google เป็นผู้บุกเบิกและพัฒนา AJAX ซึ่งจะเห็นได้จาก Product เป็นจำนวนมากของ Google ที่ใช้ AJAX เช่น OrKut, Gmail, Google Groups, Google Suggess และ Google Maps เป็นต้น ส่วนค่ายอื่น ๆ นั้นเข้าใจว่าจะค่อย ๆ ทยอยตามมา เช่น Microsoft ก็อยู่ในช่วงทดลอง Hotmail ตัวใหม่ซึ่งตอนนี้ใช้ชื่อว่า Kahuna และ สามารถดู Review ได้ที่นี่

AJAX กับ ASP.NET
ในที่นี้ผมจะอธิบายการใช้ AJAX ร่วมกับ ASP.NET (C#) ซึ่งเป็นเครื่องมือตัวนึงที่ใช้ทำ Web Application ถ้าใครจะใช้ภาษาอื่นก็ตามใจนะครับ หรือจะใช้ HTML ดิบ ๆ เลยก็ได้ ขอให้ Page นั้น Return เป็น String ไปก็พอแล้ว

มาเริ่มกันเลยดีกว่า
อันดับแรก ให้ Add Web Form เข้าไปใน Project ตั้งชื่อว่า WebForm1.aspx แล้วเพิ่ม Code ตามนี้





(Click เพื่อดูรูปใหญ่)



ใน Header จะเห็นว่ามีการประกาศไฟล์ JavaScript ที่ชื่อ request.js เข้าไปด้วย ซึ่งภายในไฟล์ request.js มีรายละเอียดดังนี้

/--------------------------------------------------------------------------------------

/* XmlHttpRequest library */
/* Version 0.9.2.2, 6 May 2005, Adamv.com */
function _getXmlHttp()
{
try { return new XMLHttpRequest();}
catch (e2) {return null; }
}

function CachedResponse(response) {
this.readyState = ReadyState.Complete
this.status = HttpStatus.OK
this.responseText = response
}

ReadyState = {
Uninitialized: 0,
Loading: 1,
Loaded:2,
Interactive:3,
Complete: 4
}

HttpStatus = {
OK: 200,
NotFound: 404
}

function Request_from_cache(url, f_change) {
var result = this._cache[url];

if (result != null) {
var response = new CachedResponse(result)
f_change(response)
return true
}
else
return false
}

function Request_cached_get(url, f_change) {
if (!this.FromCache(url, f_change)){
var request = this
this.Get(url,
/* Cache results if request completed */
function(x){
if ((x.readyState==ReadyState.Complete)&&(x.status==HttpStatus.OK))
{request._cache[url]=x.responseText}
f_change(x)
},
"GET")
}
}

function Request_get(url, f_change, method) {
if (!this._get) return;

if (method == null) method="GET"
if (this._get.readyState != ReadyState.Uninitialized)
this._get.abort()

this._get.open(method, url, true);

if (f_change != null) {
var _get = this._get;
this._get.onreadystatechange = function(){f_change(_get);}
}
this._get.send(null);
}

function Request_get_no_cache(url, f_change, method){
var sep = (-1 < newurl =" url" __="" get =" Request_get" getnocache =" Request_get_no_cache" cachedget =" Request_cached_get" fromcache =" Request_from_cache" use =" function(){return" cancel =" function(){if" _cache =" new" _get =" _getXmlHttp();" _get ="=">

/--------------------------------------------------------------------------------------


ถ้าเราทำการ Run ไฟล์ WebForm1.aspx เฉย ๆ จะได้ Output เป็นแบบนี้



ถ้ากดปุ่ม Get Hello World ก็จะเป็นการเรียกฟังก์ชัน GetHello ด้วย event onclick="GetHello();" ซึ่งฟังก์ชั่น GetHello นี้จะทำงานอยู่ที่ฝั่ง Client แล้วไปเรียก Page ที่ชื่อ GetHelloWorld.aspx ซึ่งใน Page นี้มีรายละเอียดดังนี้
/--------------------------------------------------------------------------------------




/--------------------------------------------------------------------------------------

ตรง "=result" จะ Return ค่าของตัวแปรซึ่ง ประกาศไว้ในฝั่ง Codebehide ที่ชื่อ GetHelloWorld.aspx.cs ซึ่งมีรายละเอียดดังนี้

/--------------------------------------------------------------------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace TestAJAX
{
public class GetHelloWorld : System.Web.UI.Page
{
protected string result = string.Empty;
private void Page_Load(object sender, System.EventArgs e)
{
result = "Hello World !!!";
}


#region Web Form Designer generated code
//..... ตรงนี้ไม่ต้องไปแก้ไข และไม่ต้องสนใจ เพราะมัน Auto Generate มาให้อยู่แล้ว
#endregion
}
}
/--------------------------------------------------------------------------------------

ซึ่งไฟล์นี้ไม่ทำอะไรมาก แค่ return "Hello World !!!" กลับไปเท่านั้น ถ้าคุณเรียก Page GetHelloWorld.aspx แล้ว View Source ดูก็จะเห็นแค่

Hello World !!!

หลังจาก Click ปุ่ม Get Hello World จะได้ผลดังนี้



มันทำงานยังไง
หลักการทำงานของมันก็คือ เมื่อเรา Load Page ที่ชื่อ WebForm1.aspx มา และ Click ที่ปุ่ม Get Hello World ฟังก์ชั้น JavaScript ที่ชื่อ GetHello() ก็จะไปเรียกเพจที่ชื่อ GetHelloWorld.aspx แล้วได้ String เป็น Output มา จากนั้นก็มา Set ค่าของ Textbox ให้เปลี่ยนไปตาม Output ที่ได้มา จะเห็นว่า Page WebForm1.aspx นั้นไม่ต้อง Reload ใหม่ เหมือนการเขียนทั่ว ๆ ไป

ทำไมมันยากจัง ง่าย ๆ กว่านี้มีหรือเปล่า
คำตอบคือ มีครับ ถ้าคุณเคยเคยเขียน Web Application แบบธรรมดา จะเห็นว่าการเขียนแบบนี้ต้องเพิ่มภาระให้เราเป็นอย่างมาก มิหนำซ้ำการเขียน Code กับ JavaScript นั้นไม่สามารถ Debug ได้ง่าย ๆ อีกด้วย แต่ถ้าคุณขี้เกียจเขียนทุกอย่างด้วยตัวเอง คุณสามารถใช้ AJAX Libary for The Microsoft .NET Framework ซึ่งเป็นของฟรี สามารถ Download ได้ที่ Ajax.NET มา Add เข้าไปในโปรเจคของคุณ แล้วค่อยเรียกใช้ ก็ได้เหมือนกัน

การใช้ Ajax.NET Libary รอติดตามตอนต่อไปครับ วันนี้เพียงแต่ต้องการให้เข้าใจ Concept ว่า มันทำงานยังไงเพียงแค่นั้น


อ้างอิง
AJAX Links at OpenAJAX
AJAX at TheCodeProject

Tuesday, October 11, 2005

DHTML & JavaScript เจ๋ง ๆ


Dynamic Web Coding เว็บนี้มี ตัวอย่าง พร้อม Source Code ของ DHTML และ JavaScript เด็ด ๆ เป็นจำนวนมาก ไม่ว่าจะเป็น การ ทำ Slide-Out Menus, Pupup Image, การเล่นกับ Layer, และ การทำงานกับ IFrame

วิธีการต่าง ๆ ที่เว็บทั่ว ๆ ไปเขาใช้กันส่วนใหญ่มีให้ดูหมดเลย

Monday, October 10, 2005

The Battle for Wesnoth 1.0 เกมบน Linux


ลอง Download เกม Battle for Wesnoth 1.0 มาเล่นดู ซึ่งเป็นเกมที่พัฒนาแบบ Opensource ภายใต้ลิขสิทธิ์แบบ GPL นับว่าเป็นเกมที่ดีใช้ได้ ถึงแม้จะยังห่างจากเกมแบบ Proprietary พอสมควร แต่นี่ก็เป็นจุดเริ่มต้นที่ดีสำหรับเกมที่จะเล่นบน Linux อีกตัว

มีเกมอื่น ๆ ที่เล่นบน Linux ได้อีกเยอะเหมือนกัน ลองเข้าไปดูเพิ่มเติมที่ Linux Gamers