Sunday, September 25, 2011

Web Services นั้นมันเชื่อมกันไม่ได้ทุกอย่างหรอกนะ

    วันก่อน เจอ ปัญหาเกี่ยวกับ Web Services ที่ Site ลูกค้าเจ้าหนึ่ง เล่นเอาหมดแรงเลย
ทีเดียวแถมยังแก้ปัญหาไม่ได้ด้วย ปัญหาเกิดขึ้นเมื่อลูกค้ามีการ Develop application ตัวใหม่
แล้วต้องเชื่อมต่อกับ legacy ที่ บ. ผมทำไว้ซึ่งของเดิมมีการเชื่อมต่อแบบ Web Services
อยู่แล้ว ลูกค้าและทีมที่ทำเลยคิดว่าไม่มีปัญหา แต่แล้วเหตการมันกลับไม่เป็นแบบนั้น เพราะ...

    ของเดิมที่เคยเรียใช้กันได้นั้น ทีมที่ทำใช้วิธี สร้าง stub จาก wdsl link ที่อีก party ให้มา
โดยใช้ tools ตัวหนึ่งในการ generate stub แล้วทำการ pack .jar file ไปให้ tools ที่ใช้
develop legacy เรียกใช้อีกต่อหนึ่ง ฟังแล้วดูยุ่งยากพิลึก แต่เป็นทางเดียวที่ทำได้ เพราะ
tools ที่ใช้ develop legacy นั้นเรียก Web Services ตรงๆไม่ได้แต่สามารถเรียกใช้ java
ได้ ทางทีมรวมถึงลูกค้าและ Party ที่ทำ Web Services จึงคิดว่าไม่มีปัญหา เลยทำการ
estimate , plan , develop กันตามปกติแต่แล้วปัญหาก็็บังเกิดเมื่อจะเอามา integration
รวมกัน

    เนื่องจาก wsdl link ที่ provide มาให้นั้นเป็น HTTP ธรรมดาและ input ที่ stub
generate มาให้นั้นเป็น primitive type เช่น string , int ตามปกติ และ Output ก็เป็น
Class ปกติ ซึ่ง Tools ที่ใช้ Generate  Stub นั้นสามารถทำงานได้ แต่ ตัวที่พัฒนาปัจจุบัน
เปลี่ยน protocol เป็น https และ wsdl ที่ให้มาเป็นแบบ multi schema ที่มีการอ้างอิงไปยัง
schema อื่นๆ ซึ่งปัญหาข้อแรกจึงบังเกิดขึ้นทันที

1. Tools ที่ใช้อยู่ปัจจุบันไม่สามารถเรียก wsdl ที่เป็น link แบบ https ได้

การแก้ปัญหา คือ party ที่สร้างก็ได้ extract file WSDL และ XSD ที่ีถูกอ้างถึงมาให้ทั้งหมด
จึงพบปัญหาในขั้นถัดไป

2. Tools ที่ให้อยุ่ปัจจุบันไม่สามารถ Generate Stub จาก WSDL ที่เป็น Multiple Schema
  ได้

การแก้ปัญหา คือ ใช้ tools ชนิดเดียวกันแต่ version ใหม่กว่ามาทำการ Generate stub
ผลคือสามารถ generate stub ได้และ pack .jar file ได้แต่ก็พบกับปัญหาต่อมา

3. stub ที่สร้างออกมานั้นเป็น java code version 1.6 ซึ่งไม่ compatible กับ Tools ที่ใช้
Develop Legacy ที่ี support java แค่ version 1.4

การแก้ปัญหา คือ ทดลองใช้ tools อื่น ในการสร้าง stub ให้เป็น java version 1.4 ที่
tools develop legacy สามารถใช้งานได้ แต่ก็พบกับปัญหาถัดมา

4. Stub ที่ถูก Generate ออกมานั้น เป็น java code version 1.4 จริงแต่เรียงใ้ช้ library
บางตัวของ version 1.6 ทำให้ไม่สามารถเรียกใช้ได้

การแก้ปัญหา คือ กลับไปยังจุดเริ่มต้น โดยการแก้ไข WSDL ให้เป็น file เดียวโดยไม่ต้อง
อ้างอิง XSD อื่นๆ ทำให้ tools ตัว Generate ดั้งเดิมสามารถ Generate Stub ได้แต่ยัง
เวรกรรมยังไม่หมดแค่นั้น หลังจาก Generate Stub ได้แล้วทดสอบ java class ไม่สามารถ
เรียก Web Services ผ่าน HTTPS ได้ Autherization Fail โดยทีมได้พยายามหาเอกสาร
API ของ tools มาใช้แต่รายละเอีดน้อยมาก Follow ตามเอกสารแล้วไม่ประสพความสำเร็จ


  สุดท้ายจึง mail แจ้งไปยัง เจ้าของ tools ที่ใช้ว่ากรณีแบบนี้เราต้องทำอย่างไร แล้วรอคำ
ตอบ จากการพยายามหาวิธีเป็นเวลากว่า 10 ชั่วโมง โดยทางทีม , ลูกค้า และ party อื่น
ซึ่งโดยส่วนตัวแล้ว วิธีแก้ปัญหานี้จะง่ายมาก หาก ให้ legacy สามารถ access database
ของระบบใหม่ได้โดยผ่าน database link requirement นี้จะเรียบร้อยภายในเวลาไม่กี่ชั่วโมง
แต่เนื่องจาก Policy ของลูกค้าอาจจะทำอย่างนั้นไม่ได้ จึงเกิด solution ที่ต้องไปเรียก Web
Services ผ่าน ESB แทนซึ่งไม่มีัใครคาดคิดประเด็นทางด้าน Technic มาก่อน

ประเด็นที่ต้องพิจารณาของการทำงานครั้งนี้คือ

1. การเปลี่ยน interface ของ Web Service จากเดิม HTTP Simple type เป็น HTTPS
Complex Type แบบ Multiple Schema โดยไม่มีการทำ Prove Of Concept เสียก่อน

2. ระบบ ที่เชื่มต่อกันมีรอยห่างของ technology มากเกินไป การที่ Java Version ต่างกันนั้น
สามารถสร้างปัญหาได้ หาก tools ที่ใช้ ไม่สามารถเปลี่ยนแปลง Version ของ java ให้ทัน
ตามกันไปได้

3. การแก้ปัญหาของ Process สามารถแก้ได้โดย Technical และ การแก้ปัญหา Technical
ก็สามารถแก้ได้โดย Business Process เช่นกัน




Sunday, April 10, 2011

การวิเคราะห์ และ แก้ปัญหา บางครั้งปัญหามันก็ไม่ได้เกิดจากการทำงานของเราเสมอไป

วันนี้เข้าไป แก้ปัญหาที่ site ลุกค้าเจ้าหนึ่ง

      ปัญหานี้เดิมที ลูกค้าส่ง log มาให้ดูว่า Program ที่ใช้งานเป็นประจำอยุ่ๆเกิด
มีปัญหา เมื่อทำการเพิ่มข้อมูลของพนักงานคนหนึ่งเข้าไป ซึ่งพอกดปุ่ม submit 
Program ก้เจ๊งในบัดดล ทำให้งานเข้า พวกเราที่รับ บำรุงรักษา Application ตัวนี้อยุ่

       ในเบื้องต้นคิดว่าไม่น่าจะมีอะไรผิดปกติ คงเป็นที่ข้อมูลของ พนักงาน คนที่ทีปัญหา
เกิดอะไรแปลกๆขึ้น เลยส่งน้องในทีมไปดุก่อน แต่แล้วเหตการณ์ก็ไม่คลี่ตลาย เมื่อพบว่า
ปัยหานี้เกิดขึ้นแค่ที่เครื่อง Server ของลุกค้าเท่านั้น เครื่องที่ทำการ พัฒนาและดีบักไม่พบปัญหานี้ในรายข้อมูลเดียวกัน ทำให้เราเสียเวลาไปวันหนึ่งโดยที่ไม่สามารถระบุได้ว่าปัญหาเกิดขึ้น ณ.จุดไหน ทราบเพียงแต่ว่า error ที่เกิดขึ้นเป็น error HTTP 406 ซึ่งเมื่อใช้ อากู๋ (google) ค้นหาดูแล้ว พบว่่ามันคือปัญหาเมื่อ Browser ไม่สามารถแปลความหมายที่ส่งมาจาก Server ได้ แต่น้องที่ส่ง ไปแก้ปัญหาก็หมดเวลาเสียแล้ว ต้องไปทำงานอื่นต่อ งานนี้จึงตกมาถึงมือผมซึ่งต้องผลัดไม่เข้าไปในวันถัดมา

       เมื่อผมเข้าไปที่ Site ลูกค้าก็ทำการบทวนปัญหาที่เกิดขึ้นก่อนว่าลักษณะของการที่ทำให้เกิดปัญหาคืออะไร

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

1. ค้นหาข้อมูลที่เกี่ยวข้องกับ พนักงานคนนี้ในฐานข้อมูลเสียก่อน และดูข่้อมูลของคนอื่นๆ ประกอบว่าคนที่อยู่ แผนกเดียวกัน ตำแหน่งงานเดียวกันมีลักษณะข้อมูลเป็นอย่างไร ซึ่งก็พบว่า ข้อมูลของพนักงานที่มีปัญหา น่าจะถูกต้องครบถ้วนแล้ว
2. คราวนี้ก็เจาะดูข้อมูลของพนักงานที่มีปัญหาว่ามีอักระพิเศษ ปนมาด้วยหรือไม่ ซึ่งก็พบว่าเรียบร้อยดี
3. ทดลองเพิ่มข้อมูลของพนักงานคนอื่นที่ใกล้เคียงกันก็พบว่า ไม่มีปัญหาใดๆ
4. สรุปผลเบื้องต้นได้ว่าข้อมูลไม่น่ามีปัญหา คราวนี้ก็ไปสุ่ขั้นตอนถัดไป

เมื่อฐานข้อมูลไม่ใช่ปัญหาคราวนี้เราก็มาดูที่ตัว application กันว่าเมื่อดึงข้อมูลมาใช้แล้วเกิดปัญหาอะไรหรือไม่

1. ทดลองใช้ application สร้างข้อมูลตามขั้นตอนแล้ว ดู source code ที่หน้า page ว่ามีอะไรผิดปกติหรือไม่ ซึ่งก็พบว่าไม่มีอะไรผิดปกติเลย คราวนี้เริ่มเครียดเล็กน้อย
2. เขียน debug code เพื่อดูว่า Application น่าจะมีปัญหาเมื่อขั้นตอนไหน ก็พบกับปัญหาใหม่คือ application server ไม่แสดง log ออกมาเลยต้องมาวิเคราะห์ใหม่ว่าขั้นตอนไหนที่น่าจะมีปัญหา
3. เมื่อสังเกตแล้วพบว่าน่าจะมีปัญหาขระที่ Browser จะส่งค่าให้ server เพราะหากมีการประมวลผลแล้ว   Error ที่ได้น่าจะเป็น HTTP 500 , 403 , 503 มากกว่า
4. ฝ่าย IT ที่รับผิดชอบเข้ามาบอกว่าเกิดปัญหานี้ที่อีกหน้า Page หนึ่งซึ่งไม่เกี่ยวข้องกับ ข้อมูลของพนักกงาน ที่ีมีปัญหา ตามที่แจ้งมาครั้งแรก

เมื่อทราบดังนั้น ผมจึงวิเคราะห์ ต่อไปอีกว่าถ้าอย่างนั้นแล้วไม่น่าจะเป็นปัญหาที่ระดับ Application เนื่องจาก Error ที่เกิดขึ้นเกิดขึ้นในลักษณะอื่น ที่ไม่เหมือนกัน เลยถามซักกับ IT ที่รับผิดชอบว่ากอ่นหน้านี้ที่ Server มีการเปลี่ยนแปลงอะไรบ้าง ซึ่งได้คำตอบว่าน่าจะมีเพราะมี audit มาตรวจสอบเรื่องความปลอดภัยจึงมีการ เปลี่ยนแปลงค่า config บางอย่างของระบบ 

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

ผมจึงให้ทาง IT ที่รับผิดชอบส่ง File ที่แก้ไขเพื่อมาเปรียบเทียบกันว่ามีจุดไหนที่เปลี่ยนไปบ้าง พบว่า file ได้ถูกแก้ไข ให้ดักจับ POST request รวมทั้ง Body ทุกตัว หากไม่เป็นมาตรฐานแล้ว จะ reject ออกมาเป็น Error 406 จึงได้ทดลอง เปลี่ยนให้ดักจับเฉพาะตัว Request ส่วน Body ไม่ต้องดัก พบว่า Application สามาถทำงานได้เหมือนเดิม จึงเป็นอันเรียบร้อย ปิด case นี้ได้สำเร็จ


จะเห็นได้ว่าการ investigate นั้นทำจากวงแคบ(ข้อมูล) ไปจนถึงระดับใหญ่สุด(Config)

 Data ==> Program ==> Application ==> Server Configuration

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

Friday, December 17, 2010

ใครว่า Windows ใช้ง่าย

ใครว่าวินโดว์สใช้ง่าย

จริงๆ ไม่ว่าโอเอสอะไร มันก็เกี่ยวกับความคุ้มเคยแหละครับ

ไปอ่านเจอมาจากเว็บต่างประเทศเลยแปลๆมาให้อ่านกันเพลินๆ

ผมว่าคนเขียนเค้าประชดประชันได้น่ารักดี มาดูที่เค้าบ่นกันครับ

********************************


ผมรู้สึกแปลกๆ นะ สำหรับพวกที่ชอบมาโพสต์ว่าเค้าเจอปัญหามากมายตอนเปลี่ยนจาก windows มาใช้ linux.
เพราะผมเจอปัญหาเดียวกันนี่แหละตอนพยายามจะใช้ windows

ผมตัดสินใจที่จะลองดูสักทีหลังจากที่เพื่อนผมที่ใช้มันตลอดเวลาพยายาม คะยั้นคะคอบอกว่ามันช่างดีสุดยอด
มันเริ่มต้นที่ผมเข้าไปดูที่ website ของ M$ เพื่อ download มันมาลองใช้ดูสักที
แต่... มันไม่มี... ผมไม่เจออะไรเลย ผมจะ download มันมาใช้ได้ไงเนี่ย
สุดท้าย ผมเลยต้องถามไอ้คนเชียร์ให้ผมใช้ มันเลยบอก ว่าให้ผมไปซื้อซะ

โธ่ แล้วมันก็ไม่บอกตูแต่แรก

เอาวะ ผมตัดสินใจควบรถออกไปซื้อเลยที่ pc world ถามคนขายเลย ว่าขอซื้อ windows ชุดนึง คนขายก็ถามกลับมานะว่าเอาอันไหนครับ ผมก็ตอบไปว่า เอาที่มันพร้อมใช้ น่ะ อันนึง please ด้วย แล้วเค้า(คนขาย) ก็ตอบกลับผมมาด้วยเสียงอันแสนสุภาพว่า 149.99 ปอนด์(ราคาอังกฤษนะครับ) ครับพี่ ปอนด์ ไม่ใช่บาท "ฤฏโฆฤดสหฟยนเดำหฟสื" ผมสบถตอบไปโดยพลัน แล้วขับรถกลับบ้านพร้อมกับความว่างเปล่า(Ubuntu ตรูไม่เสียตังซื้อซักกะบาท)

แต่โชคยังที่ เพื่อนผมคนนึงมีมันอยู่พอดี มันให้ผมมาชุดนึงแต่มันดันบอกว่าเอาไปแล้วก็เงียบไว้ ผมว่ามันเพี้ยนๆนะ เพราะผมก็ copy แผ่น ubuntu ให้ชาวบ้านเป็นประจำ เวลามีใครเค้าอยากได้ ubuntu ไว้ใช้
เอาเหอะ ช่างมัน ไหนๆผมก็ได้มันมาแล้ว ผมก็เปิด drive cd แล้วยัดแผ่นมันลงไป จะลองดูหน้าตา live cd มันซะหน่อย (*ลินุกซ์ เกือบทุกยี่ห้อ-distro, สมัยนี้จะเปิดใช้งานจากซีดีได้เลย โดยไม่ต้องติดตั้ง เพื่อให้ทดลองใช้ หรือดูว่าเครื่องเราใช้ดิสโทรนั้นได้ไหม) แต่เอ๊ะ ไหงมันไม่ work ล่ะหว่า เอะอะ ก็ถามให้ install ท่าเดียว เลยต้องโทรไปถามไอ้คนให้แผ่นมาว่านี่มันยังไงเนี่ยเฮ้ย ผมทำอะไรผิดรึเปล่าเนี่ย ไอ้เพื่อนผู้แสนดีก้อตอบผมมาสั้นๆ windows มัน run แบบ live cd ไม่ได้ว่ะ (อะไรกันเนี่ย Ubuntu ตูยังทำได้เลย)

ไม่เป็นไร กัดฟันอีกนิด ลอง Install ดูก็ได้ฟะ ผมเลย เออ ออ ตามมันไปมันถามอะไรก็ Yes ไปก่อน
แต่ชักแปลกๆ ทำไมมันไม่บอกฟะ ว่า เครื่อง ตูมี os อะไรอยู่บ้าง ตะก่อนนู้นตอนผมลง ubuntu มันยังรู้เลยว่าผมมี OS อื่นอยู่ แถมมันยังถาม ให้เลือกอีกว่าจะให้ลงที่ partition ไหนเฮ้อออ กลับไปที่โทรศัพท์อีกครั้ง เพื่อนผู้แสนดี เลยบอกว่า windows มันจะลงทับไปเลย อ้าว เกือบไปแล้วสิตู เอ้า ถ้าอย่างนี้ backup ไว้ก่อน ก็ได้ฟะ จะได้ลง windows ได้เสียที

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

อะไร กันนี่ ผมแทบช๊อก ไหงมันให้ผมเปลี่ยน configuration ระบบได้เลยล่ะ ไม่ถามเลยเรอะว่าผมเป็น root (ผู้ใช้ที่มีสิทธ์เปลี่ยนแปลงระบบ) หรือเปล่า ไอ้เพื่อน ผู้แสนดีของผมมันเริ่มหงุดหงิด ตอนผมโทรไปหามันอีกครั้ง มันเลยบอกผมว่า ไอ้ windows เนี่ย มัน default เป็น root ว่ะ ซะงั้น ผม เลยจัดการสร้าง user ขึ้นมาอีก account นึง แต่แล้ว ผมก็ต้องสับสนอีกครั้ง ไหงมันต้อง log out เปลี่ยนเป็น administrator ก่อนฟะเนี่ย ถึงจะเปลี่ยนแปลงอะไรได้ ผมเริ่มเข้าใจแล้วล่ะ ทำไมคนใช้ windows ถึงต้องเป็น root ตลอดเวลา มันทำให้ผมรู้สึก เหมือนร่างกายแตกเป็นเสี่ยงๆ

เอ้า เลิกเล่นกันเสียที ผมต้องเริ่มทำงานแล้วล่ะ แล้วต้องใช้ spread sheet แต่มันไปไหนหว่า ไหนบอกครบชุดฟะเพื่อนที่แสนดีของผมก็ไขความกระจ่างว่ามันไม่มีแถมมาหรอก ไปหา download เองเหอะ มันช่างเป็น distro ที่อัตคัตเสียจริงๆ เลยจะเข้าไป add/remove program ออกเสียบ้าง มันก็ไม่มีอะไรให้ผมเอาออก แถมมีแต่ ปุ่ม remove ไม่เห็นมี ปุ่ท add เลยฟะ

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

เพื่อนผมมันก็บอกให้ไปหาโปรแกรมเอาเอง ผมเลย ต้องไปหานานหน่อย กว่าจะ download open office มาลงเฮ้ออออ ด้วยความสัตย์ มันเป็นเวลาอันทรมาณกับ windows ยิ่งนัก

ผมไม่เข้าใจเลยว่าเรามี drive A (hda: ฮาร์ดิสก์ลูกแรกในระบบลินุกซ์) แล้วไหงมันกลายเป็น Drive C: ไปได้แล้ว B (hdb: ฮาร์ดดิสก์ตัวที่สองในเครื่อง) มันหายไปไหนหว่า

มันเป็น distro ที่ อัตคัตเสียจริงๆ ส่งออกมาโดยที่ไม่มี application ที่ใช้ทำงานจริงๆ มาด้วย แถมยังต้องหาอะไรให้วุ่นวายไปหมดท้ายสุดเจ้าเพื่อนตัวดียังบอกผมให้ไปหา anti-virus กะ anti-adware มาลงซะ
โว้ย... แล้วทำไมมันไม่มาพร้อมกันกับ windows ล่ะเนี่ยยย

ในความคิดของผม มันช่างยาก, สับสน และ หนักหนาสาหัส สำหรับผมเหลือเกิน
มันคงจะดี สำหรับคนที่ชอบสอนคนอื่น อย่างเพื่อนผม แต่สำหรับผม ใช้ ubuntu ดีกว่า


-- ขออภัย ลืมไปแล้วว่า ต้นฉบับภาษาอังกฤษ อยู่ที่ไหน --

Friday, October 9, 2009

เก็บมาเล่า: ทำข้อสอบให้เป็นตำนานระดับโลก

ในการสอบฟิสิกส์ของมหาวิทยาลัยโคเปนเฮเกน คำถามมีอยู่ว่า

"จงอธิบายวิธีการหาความสูงของตึกโดยใช้บารอมิเตอร์"

นักศึกษาคนหนึ่งตอบว่า

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

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

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

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



"วิธีแรก คือ เอาบารอมิเตอร์ขึ้นไปที่ยอดตึกแล้วทิ้งมันลงมาที่พื้น
วัดเวลาที่บารอมิเตอร์ตกถึงพื้น
ความสูงของตึกคำนวณจากสูตร H = 0.5g x t2
แต่คงไม่ดีกับบารอมิเตอร์เท่าไหร่"


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


"แต่ถ้าอยากให้วิชาการกว่านี้หน่อย
ก็หาลวดสั้นๆมาผูกติดกับบารอมิเตอร์แล้วแกว่งมันเหมือนลูกตุ้ม
ทำที่พื้นข้างล่าง และทำอีกทีที่ยอดตึก
หาความสูงของตึกโดยอาศัยความแตกต่างของแรงโน้มถ่วงที่มีผลต่อแรงกระทำต่อลูกตุ้ม
ด้วยสูตร T = 2 pi sqrroot (l/g)"


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


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


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



นักศึกษาคนนั้นคือ นีลส์ บอร์ ชาวเดนมาร์กคนแรกที่ได้รับรางวัลโนเบลสาขาฟิสิกส์ (ปรมาจารย์ทฤษฎีควอนตัมและเป็นผู้คิดค้นแบบจำลองอะตอม)



(แปลจากบทความโดย chewyshoe on October 24, 2007

http://furenz.exteen.com/20090927/entry