RSS
 

Archive for the ‘Article’ Category

ทำภาพ High Dynamic Range เทียม (#2)

06 May

คราวนี้ลอง RAW ของ D3 (NEF บ้าง) ด้วยเทคนิคเดียวกัน ขั้นตอนเดียวกัน

  1. ภาพต้นฉบับ ลองสังเกตบริเวณที่แสงจ้า (ภายนอกหน้าต่าง) และบริเวณที่เป็นมืด (ขอบหน้าต่าง, ข้างตูสีแดง, ผนังใต้หน้าต่าง ฯลฯ) นะครับ

    nef_hdr_001.jpg

  2. ภาพ +1, +2 EV จะเห็นบริเวณที่มืดชัดเจนขึ้น

    nef_hdr_002.jpg

    nef_hdr_003.jpg

  3. ภาพ -1, -2 EV จะเห็นบริเวณนอกหน้าต่างชัดเจนขึ้น

    nef_hdr_004.jpg

    nef_hdr_005.jpg

  4. ภาพที่ทำ HDR เทียมเรียบร้อยแล้ว ลองเทียบกับภาพต้นฉบับดูครับ

    nef_hdr_006.jpg

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

 

ทำภาพ High Dynamic Range เทียมแบบขำๆ

06 May

สำหรับคนถ่ายรูป คงจะรู้จักภาพแบบ High Dynamic Range (HDR) แน่ๆ โดยหลักการคร่าวๆ แล้ว HDR จะมีจากแนวความคิดที่ว่า “มันมีอะไรเสมอ ในที่แสงจ้า และที่มืด” และความจริงที่ว่า เซนเซอร์รับภาพ และหน่วยประมวลผลภาพของกล้องดิจิทัล ไม่สามารถเห็นช่วงของแสงได้กว้างเท่ากับที่ตาเราเห็น

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

เลยเป็นที่มาของเทคนิคการทำ HDR ครับ โดยปกติการทำ HDR เราจะต้องถ่ายภาพเดียวกัน ที่หลายๆ exposure เป็นลำดับ (เช่นถ่าย 5 ภาพ ต่างกันภาพละ 1 EV ซึ่งจะได้ที่ -2 EV, -1 EV, 0 EV, 1 EV, 2 EV) เพราะในขณะที่ -EV จะทำให้ภาพมืด แต่ก็จะรักษารายละเอียดในส่วนที่สว่างของภาพไว้ได้ ซึ่งตรงข้ามกับ +EV ที่จะทำให้เห็นรายละเอียดในส่วนที่มืดชัดขึ้น ซึ่งการถ่ายลักษณธนี้เราเรียกว่า exposure bracketing

ทีนี้ ถ้าเราไม่ได้ถ่าย exposure bracketing เอาไว้ล่ะครับ ทำอย่างไรดี? ซึ่งเราก็ยังคงโชคดีอยู่บ้าง ถ้าเราถ่าย RAW เอาไว้ เพราะว่า RAW จะเก็บข้อมูลของเรื่องแสงที่เซนเซอร์บันทึกไว้ได้ เอาไว้พอสมควร ซึ่งทำให้เรายังพอจะปรับ exposure value เพื่อดึงเอารายละเอียดในส่วนที่มืดและสว่างกลับมาได้บ้าง ก็เลยเป็นที่มาของ “HDR เทียม” ที่เราจะคุยกันในวันนี้ครับ

ปกติผมไม่เคยได้ลองเทคนิคพวกนี้หรอกนะ เพราะว่าไม่ได้ถ่าย RAW จนกระทั่งมาเล่น Leica M8 ซึ่งมี JPEG engine ที่ห่วยมากๆ จนต้องถ่าย RAW แบบไม่มีทางเลือก (และ RAW ของ M8 ก็ใช่ว่าจะดีนะครับ .. นอกจากเป็น DNG แล้วผมยังหาข้อดีของ M8 RAW ไม่ค่อยจะได้เลย และ M8 ยังมี DR ที่งั้นๆ เทียบกับกล้องอีกลายๆ ตัวอีกด้วย … แต่ไม่ขอพูดถึงมากล่ะครับ เดี๋ยวจะกลายเป็นรีวิว M8 ไป)

ลองทำตามนี้ครับ

  1. หา RAW มาสักภาพหนึี่ง สมมติว่าเป็นภาพด้านล่างนี้ละกัน จะเห็นว่ารายละเอียดตรงเหล็กขึงสะพาน (สีเหลือง) มืดไป ในขณะที่รายละเอียดบนเมฆบางส่วนก็หายไป (ขาวจ๋อง)

    test_fake_hdr_005.jpg

  2. จากนั้นปรับ exposure value ให้ไปทาง + EV เพื่อดึงเอารายละเอียดในที่มืดคืนมา ในตัวอย่างนี้ผมดึงไป +1 EV, +2 EV ตามลำดับ

    test_fake_hdr_001.jpg

    test_fake_hdr_002.jpg

  3. จากนั้นทำอย่างเดียวกัน ไปทาง – EV เพื่อดึงเอารายละเอียดบนเมฆกลับมาบ้าง ซึ่งผมทำเท่ากันคือ -1 EV, -2 EV

    test_fake_hdr_003.jpg

    test_fake_hdr_004.jpg

  4. จากนั้นก็ให้เอาโปรแกรมที่ทำพวก HDR (เช่น Photomatix Pro) มารวมกัน และทำ Tone Mapping (วิธีการใช้โปรแกรมพวกนี้ผมไม่ขอพูดถึง เพราะหาได้ทั่วไป …. และผมเองก็ “เล่นไม่เป็น” ด้วย) ซึ่งผลที่ได้จะเป็นแบบนี้

    test_fake_hdr_001_2_3_4_5_tonemapped.jpg

ก็ … ถึงจะสู้ทำ HDR แท้ไม่ได้ แต่ว่าก็ยังดีกว่าทำไม่ได้ล่ะนะ … ภาพนี้ถ่ายขณะรถติดบนสะพานพระราม 8 คงไม่มีเวลาจะตั้งขาตั้งและถ่าย bracket แบบจริงๆ จังๆ ล่ะครับ

แต่ว่ายังงั้นยังงี้ … กล้อง DSLR หลายตัวในปัจจุบันมันมีเทคโนโลยีฉลาดๆ มากมาย (เช่น Automatic/Adaptive High Dynamic Range ในชื่อต่างๆ กัน .. เช่น Active D-Lighting ของ Nikon เป็นต้น) และเซนเซอร์ที่ดี มี DR กว้างเอาเรื่อง … ดังนั้น ถ้าเมื่อไหร่ที่ผมใช้ D3 ถ่ายทั่วไป ผมก็ยังถ่าย JPEG เหมือนเดิมน่ะแหละ

 

“กี่ล้านดีคะ”

30 Sep

เมื่อวานเดินผ่านแผนกกล้องของ Power Buys ที่เซ็นทรัลปิ่นเกล้า ก็เลยเดินๆ แวะๆ เข้าไปดู compact ซะหน่อยเผื่อจะมีอะไรน่าสนใจ (จริงๆ กำลังมองหา Panasonic Lumix LX3 อยู่)

พนักงานสาวคนหนึ่งก็เดินเข้ามาทักทาย ยิ้มแย้มแจ่มใส

พนักงาน: “พี่ชื่ออะไร ขอเบอร์ได้มั้ยคะ”

ไม่ใช่ล่ะ อันนี้ล้อเล่น อันนี้สิของจริง

พนักงาน: “ดูเป็นกี่ล้านดีคะ”

เล่นเอาเอ๋อกินไปพักนึง พร้อมกับหัวเราะดังๆ ในใจ

ผม (คิด): “โห เล่นถามกันแบบนี้เลย”
พนักงาน: “พี่ จะดูเป็นกี่ล้านดีคะ”
ผม (คิด): “นี่ถ้าบอกไปว่า 30MP นี่จะเอา Hasselblad ออกมาให้มั้ยเนี่ย”
ผม: “ขอดูเรื่อยๆ ก่อนครับ”

ถึงผมจะไม่ได้ตอบอะไรไปมากกว่านี้ เพราะว่าไม่อยากไปต่อล้อต่อเถียงกับพนักงานมากกว่านี้ และไม่มีเวลาถามเล่นอะไรมากมาย แต่ว่าเราคงจะจินตนการ conversation มาตรฐานต่อไปนี้ออก

พนักงาน: “ดูเป็นกี่ล้านดีคะ”
ลูกค้า: “เอ่อ อยากได้ที่คุณภาพของภาพดีๆ ไฟล์สวยๆ คมๆ น่ะครับ”
พนักงาน: “งั้นนี่เลยค่ะ รุ่นนี้ออกใหม่ ขายดี 14.5MP นะคะ ยิ่งทำให้ภาพคมชัดมาก ถ่ายออกมาสวยค่ะ”

ครับ ไม่ใช่ความผิดของพนักงานครับ แต่ว่าอย่างที่พวกเราทุกคนทราบกันเป็นอย่างดี ว่านี่คือ “Megapixel Myth” อีกหนึ่งผลงานที่น่าภาคภูมิใจของ number marketing และส่งผลให้เกิดสิ่งที่เรียกว่า “Megapixel Race” หรือการแข่งกันปั๊มตัวเลข MP ของกล้องของบรรดาผู้ผลิตต่างๆ

Number marketing พูดง่ายๆ เป็นวิธีการทำการตลาดโดยอาศัย “ความไม่รู้” ของผู้บริโภคให้เป็นประโยชน์ โดยการ “บอกความจริงไม่หมด” หรือ “ไม่บอกปัจจัยทั้งหมด” และข้อความที่บอกนั้น “เป็นจริงในระดับหนึ่ง” ในขั้นต้น

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

แต่ว่ามันกลายเป็นความเชื่อทางการตลาด การพัฒนาจาก 7.1MP เป็น 8MP ก็ยังคงพอว่า แต่ว่าการพัฒนากันในปัจจุบัน ที่ยัดเยียดกันถึง 12-15MP ลงไปในเซนเซอร์ที่ไม่ได้มีขนาดเพิ่มขึ้น นี่ทำให้คุณภาพมันดีขึ้นเหรอ? มันเกินลิมิทของเซนเซอร์ขนาดเล็กของกล้อง compact ทั่วไปจะรับได้อย่างมีประสิทธิภาพแล้ว

ผมจะไม่พูดถึงเรื่อง “ฟิสิกส์ของแสงและอิเลคทรอนิกส์ในการรับภาพของเซนเซอร์กล้องดิจิทัล” ตรงนี้ เพราะว่าอันนั้นทำเป็นบทความวิชาการยาวๆ ได้เลย แต่ว่าเทียบง่ายๆ แบบนี้

ถ้าแสงที่เข้ามา (โฟตอน) เหมือนกับฝนที่ตกมาล่ะก็ การถ่ายรูปก็เหมือนกับการรองรับน้ำฝนน่ะแหละ เซนเซอร์ก็เหมือนกับภาชนะที่เอาไปรองน้ำฝน พวกกล้องแพงๆ อย่างพวก Medium format ก็เหมือนกันเอาอ่างอาบน้ำไปรับน้ำฝน พวก DSLR Full-frame ก็คงจะประมาณโอ่ง พวก DSLR ที่มี crop-factor ทั้งหลายก็คงอารมณ์กาละมังใหญ่ๆ

แต่ว่าพวกกล้อง compact เนี่ย ถ้าเป็น sensor ขนาด 1/1.7″ (หรือ 1/1.72″) ก็คงจะอารมณ์เดียวกับอ่างล้างหน้า ส่วนขนาด 1/2.33″ นี่คงจะขันน้ำ

นั่นคือขนาดเซนเซอร์ทั้งหมดนะครับ แล้วต้องมา “แบ่ง” ออกตามปริมาณ MP อีก ดังนั้นยิ่ง MP มาก ปริมาณน้ำที่แบ่งออกไปได้สำหรับแต่ละส่วนก็ยิ่งน้อยลงไปอีก

เช่น ถ้าเราจะแบ่งน้ำอาบนึง หรือว่าโอ่งนึง ออกเป็น 100 แก้ว เราคงจะได้น้ำล้นแก้ว หรือว่าได้แก้วใหญ่ๆ แต่ว่าถ้าเราจะต้องแบ่งน้ำขันนึงออกเป็น 100 แก้วเท่ากันล่ะ? คงได้กันแก้วละไม่กี่หยด

แล้วมัน matter ตรงไหนเนี่ย?

ไม่ต้องแปลกใจเลยครับ ที่กล้องที่มี sensor ใหญ่กว่าจะเก็บรายละเอียดของสีสันและแสง ได้ดีกว่ากล้องที่มี sensor เล็ก เพราะว่าถึงแม้ว่า pixel จะเป็นหน่วยย่อยที่สุดของภาพดิจิทัลและเป็นที่ทราบกันดีกว่า ยิ่ง pixel เยอะ ยิ่งเอามาต่อกันเป็นภาพใหญ่ได้เนียนมากขึ้น และน่าจะเก็บรายละเอียดเล็กๆ น้อยๆ ได้ดียิ่งขึ้น … ภาพที่ได้จากกล้อง MP สูงแต่ sensor เล็กมักจะมีพลวัตของแสงและสีสัน (Dynamic range) ที่น่าผิดหวัง ไม่พอ ด้วยเหตุผลทางฟิสิกส์และอิเลคทรอนิกส์ … ยังทำให้มีสัญญาณรบกวน (noise) มากขึ้นอีกด้วย

เป็นหนึ่งในอีกเรื่อง ที่สุดท้ายแล้ว การนำปัจจัยเดียวจากหลายๆ ปัจจัย (เช่น MP อย่างเดียว ในหลายปัจจัยอื่นๆ เช่น Image processing engine, sensor, ฯลฯ หรือการนำ clock speed อย่างเดียวในเรื่องของ CPU design) มาทำการตลาดและโฆษณา ส่งผลให้เกิด Number marketing ที่ลงท้ายด้วย Number myth

และกำลังทำงาน against ตัวเองอย่างมากมาย

ผู้ผลิต CPU ยักษ์ใหญ่อย่าง Intel เคยเจอปัญหานี้มาแล้ว กับตอนที่ออก Pentium-M ที่สามารถทำงานได้มีประสิทธิภาพมากกว่า Pentium-4 ด้วย clock speed ที่ต่ำกว่า แต่ตลาดไม่ยอมเชื่อว่า CPU ความเร็ว 1.7 จะทำงานเร็วกว่า CPU ความเร็ว 2.0

ตอนนี้ผมเชื่อว่าผู้ผลิตกล้องหลายรายก็กำลังเจอกันอยู่ ว่าจะตอบโจทย์ยังไงดี ว่ากล้อง 10MP ดีกว่า 14MP

ขนาด sensor เล็กที่กล้อง compact ส่วนมากใช้กันน่ะครับ 10MP ก็โคตรจะเต็มกลืนแล้ว แต่ว่าก็ยังมี MP bump กันเรื่อยๆ เมื่อรุุ่นใหม่ๆ ออกมา และผมก็ต้องผิดหวังทุกทีเมื่อเข้าไปดู spec แบบละเอียดใน web ที่ไม่มีการเพิ่มขนาด sensor เลย (เช่น Nikon Coolpix S710 14.5MP 1/1.72″ sensor เทียบกับรุ่นก่อนมัน S700 12MP 1/1.72″ sensor เท่ากัน) แล้วก็ต้องไปพยายามแก้ที่การพัฒนา Image processing engine แทน เพื่อจัดการกับ dynamic range และจัดการกับ noise หลังจากรับภาพเข้ามาเรียบร้อยแล้ว

แต่ว่ามันแก้ขีดจำกัดทางฟิสิกส์ของเซนเซอร์ไม่ได้หรอก รับเข้ามาดี ก็ยิ่งดีขึ้น (ยกตัวอย่างเช่น ทำไมกล้อง Nikon ซึ่งใช้ EXPEED Image processing concept engine เหมือนกัน ภาพจาก D700 ซึ่งเป็นกล้อง 12.3MP ถึงดีกว่า Nikon Coolpix S710 ซึ่งเป็นกล้อง 14.5MP แบบฟ้ากับเหว?)

แต่ก็ยังดีใจหน่อยนึง ที่รู้สึกจะมีหลายผู้ผลิต ให้ความสำคัญและความสนใจกับเรื่องนี้พอสมควร อย่างน้อยๆ ก็ Panasonic ที่ออก LX3 ด้วยการไม่เพิ่ม MP แต่ว่าไปเพิ่มขนาด sensor แทน ถึงแม้จะไม่ได้ใหญ่กว่าเดิมมากมายก็เถอะ แล้วก็ยังมี Sigma ที่ทำ DP1, DP2 ออกมาด้วยขนาด sensor ที่ใหญ่ผิดวิสัย compact

ผมหวังว่า แนวทางนี้คงจะยังไม่หายไป และหวังว่าเมื่อ “compact เปลี่ยนเลนส์ได้” (u4/3 ของ Olympus) ออกมาจริง จะดีขึ้น

และหวังว่าผู้ผลิตรายใหญ่ๆ เช่น Nikon, Canon, Sony จะกลับมาให้ความสำคัญกับเรื่องนี้มากขึ้น มันเป็นการ back-to-basic สำหรับปัจจัยหนึ่งที่สำคัญมากๆ เลยทีเดียว หลังจากทำสงคราม MP ที่ไม่มีใครชนะ และเกินขอบเขตที่ผู้บริโภคทั่วไป (ซึ่งเป็นตลาดของ compact) จะได้ประโยชน์แล้ว

การจัดการกับ MP สูงๆ ก็ทำได้แล้ว Image processing engine ที่ฉลาด จัดการกับ noise ได้ดี และจัดการกับ dynamic range ได้ดี ถึงจะเป็นภาพจากเซนเซอร์เล็ก ก็มีกันทุกคนทุกค่ายแล้ว ถ้าเปลี่ยนขนาดเซนเซอร์ ภาพที่ได้ก็น่าจะดีขึ้นเยอะเลย ไม่ใช่เหรอ

อีกอย่าง มันก็ยังคงเป็น “Number” ไม่ใช่เหรอ พวกทำ Number marketing ก็ยังคงทำได้นี่นา

ผมหวังว่าในอนาคต ผมจะได้ยิน conversation นี้ ถึงแม้โอกาสที่มันจะเกิดขึ้นจะน้อยมากๆ

พนักงาน: “จะดูเป็นแบบไหนดีคะ”
ลูกค้า: “อยากได้กล้อง compact ตัวเล็กๆ หน่อย พกสะดวกหน่อยครับ เอาไว้เที่ยวๆ เล่นๆ ถ่ายเรื่อยเปื่อยน่ะแหละครับ”
พนักงาน: “พี่ต้องใช้รูปใหญ่แค่ไหนคะ”
ลูกค้า: “แค่ดูในจอคอมพ์ 20″ หรือว่าขึ้นจอทีวี 30″ ที่บ้าน แล้วก็ถ้าจะอัดก็คงไม่เกิน A4 ครับ”
พนักงาน: “อืมมม งั้นใช้กล้อง 10MP คงพอค่ะ”
ลูกค้า: “ครับ งั้นสองตัวนี้ตัวไหนดีกว่ากันครับ”
พนักงาน: “ตัวนี้ sensor ใหญ่กว่าค่ะ ตัวนี้ 1/1.63″ อีกตัว 1/2.33″ ให้สีให้แสงดีกว่า noise น้อยกว่าค่ะ”
…………

ฝันกันต่อไป

ปล. เขียนไปเขียนมา ยาวกว่าที่คิดแฮะ

 

ทำยังไง ให้ “หน้าชัด หลังเบลอ”

01 Aug

(ที่เขียนบทความนี้ยาวๆ เพราะว่าเขียนตอบในกระทู้ตามบอร์ดกล้องบ่อย และมีคนถามบ่อย ก็เลยคิดว่างั้นเขียนไว้หน่อยก็แล้วกัน)

ในการถ่ายรูป บางทีเราก็ไม่ได้ต้องการให้ชัดทั้งภาพ แต่ว่าต้องการให้มันชัดเฉพาะจุด/สิ่งที่ต้องการถ่าย เช่นการถ่ายภาพเน้นวัตถุ หรือการถ่ายภาพบุคคล ซึ่งทำให้เกิดความต้องการที่จะ “ควบคุม” ความชัดเจนของส่วนที่ไม่ได้ต้องการจะเน้น (หรือส่วนที่ไม่ได้เป็นจุดโฟกัส)

ในกรณีที่เป็นภาพถ่ายบุคคลหรือวัตถุ เรามักจะเรียกกันเป็นภาษาชาวบ้านๆ ว่า “ถ่ายให้หน้าชัดหลังเบลอ” ทีนี้จะถ่ายยังไงให้มันหน้าชัดหลังเบลอ หรือว่ามันมีปัจจัยอะไรบ้างที่ทำให้เกิดภาพที่หน้าชัดหลังเบลอได้บ้าง?

หลายคนบอกว่าลองไปอ่านๆ ดูจาก Depth of Field – Wikipedia … ซึ่ง อืมมมม ดูยุ่งยากแฮะ ยาวยืดเลย แถมมีโมเดลทางคณิตศาสตร์ หลักการทางฟิสิกส์ และการคำนวณอะไรไม่รู้วุ่นวายไปหมด เจอแล้วจอด… เลยขอเขียนจากประสบการณ์ให้ฟังง่ายๆ ก็แล้วกัน เอาเป็นว่าอย่างน้อยๆ ก็เป็น Guideline ในเชิงปฏิบัติในการเลือกกล้อง/เลนส์ และการตั้งค่าก็แล้วกันนะครับ

1. ขนาดของรูรับแสง:

อันนี้เป็นที่รู้กันในวงกว้างครับ ว่าขนาดของรูรับแสงส่งผลกับระยะชัดของภาพ ถ้ายิ่งรูรับแสงกว้าง จะยิ่งชัดตื้น ดูตัวอย่างจากภาพ (click เพื่อดูภาพเต็ม)

จากภาพ รูปซ้ายใช้กล้องตัวเดียวกัน เลนส์ตัวเดียวกัน คือ Nikon D300 + AF Nikkor 85 F1.4 ตากล้องกับแบบไม่ได้ขยับ เปลี่ยนแปลงแค่ค่ารูรับแสง รูปซ้ายใช้ F5.6 รูปขวาใช้ F1.8 (อ่อ ค่าพวกนี้ยิ่งน้อย ยิ่งรูรับแสงกว้าง) ตั้ง Aperture-priority mode ดังนั้นก็เลยมีการปรับความเร็วชัตเตอร์อัตโนมัติตามรูรับแสง ให้ความสว่างของรูปเท่าๆ กัน

ถ้าทางยาวโฟกัสเท่ากัน รูรับแสงกว้างกว่าจะให้ภาพส่วนที่ไม่อยู่ในโฟกัสมีความเบลอมากกว่า แต่ว่าทั้งนี้ไม่ได้หมายความว่าเป็นปัจจัยเดียวที่ทำให้มันเบลอสวยๆ นะครับ ลองดูภาพถัดไป

ภาพนี้ถ่ายที่ F2.8 ครับ ซึ่งถ้าขนาดของรูรับแสงมันมีผลอย่างเดียวเนี่ย มันควรจะเบลอในส่วนฉากหลังมากกว่านี้ใช่หรือไม่ (อย่างน้อยก็น่าจะเบลอกว่า F5.6 ด้านบน) คำตอบก็คือมันมีอีกหลายองค์ประกอบด้วยกันครับ ลองดูใน metadata ของรูปเล่นๆ ก่อนก็ได้ครับ … ว่ามันมีค่าอะไรเปลี่ยนไปอย่างที่เห็นได้ชัดจากรูปบนๆ

ครับ …​ผมถ่ายรูปนี้ที่ 20mm ใช้ AF Nikkor 20mm F2.8 ครับ

2. ระยะโฟกัส:

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

ไม่ต้องพูดอะไรมากครับ ดูภาพเลยก็แล้วกัน

สามภาพนี้ ถ่ายใช้ Nikon D300 กับ AF-S Nikkor 70-200mm F2.8 VR เปิดรูรับแสง F2.8 ทั้งสามภาพ โดยที่ถ่ายที่ระยะโฟกัสต่างกัน คือ บนซ้าย 200mm, บนขวา 150mm และล่าง 105mm (ซึ่งจริงๆ รูปล่างไม่ใช่ตัวเปรียบเทียบที่ดีนัก เนื่องจากยืนไกลไปนิด ขนาดของแบบที่เห็นในรูปเลยไม่เท่ากับสองรูปบน)

แต่ก็เห็นว่าฉากหลังเบลอมากน้อยกว่ากันอย่างเห็นได้ชัด โดยที่ตัวแบบยังคงคมชัดอยู่

ให้อธิบายเรื่องนี้ง่ายๆ ก็คงจะต้องให้ทดลองแบบนี้ครับ

  • ให้เพื่อนซักคน ยืนชูสองนิ้วหรือยกมือก็ได้ อยู่ไกลๆ พอประมาณ (เช่นหน้าห้องกับหลังห้อง) แล้วมองโฟกัสไปที่มือของเพื่อนคนนั้นด้วยตาเปล่า จะเห็นว่ามือเพื่อนกับฉากที่อยู่หลังเพื่อนมันชัดเท่าๆ กัน
  • “ซูมด้วยเท้า” คือ เดินเข้าไปหาเพื่อนคนนั้นเรื่อยๆ โดยที่สายตายังคงโฟกัสกับมือเพื่อน จะเห็นว่ายิ่งใกล้ๆ ฉากหลังจะยิ่งเบลอมากขึ้น

เหตุผลง่ายๆ นะครับ ก็คือ การที่เราเดินเข้าไปหามือเพื่อนเรื่อยๆ เนี่ย ทำให้ระยะ “สัมพัทธ์” ระหว่างมือเพื่อน ฉากหลัง กับตาเรา เปลี่ยนไปหมดครับ มือเพื่อนห่างจากฉากหลังเท่าเดิมน่ะแหละ แต่ว่าถ้าวัด “สัมพัทธ์” กับตาเราแล้ว มือเพื่อนจะอยู่ห่างจากฉากหลังมากขึ้น และใกล้ตาเรามากขึ้น

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

3. ขนาดของ Sensor:

อันนี้ประหลาดหน่อย บางคนถึงขึ้นอาจจะสงสัยว่า “เกี่ยวไรด้วยเนี่ย”.. และไม่ค่อยจะเคยเห็นคนเขียนถึงเท่าไหร่

เคยสงสัยบ้างหรือเปล่าครับ ว่าทำไมพวกกล้องคอมแพคถึงถ่ายหน้าชัดหลังเบลอโคตรยาก ทั้งๆ ที่หลายคนดู spec ของเลนส์แล้ว ว่า “มันก็ 2.8 นะ ทำไมมันถ่ายไม่เบลอ?”

อย่างที่ผมบอกแหละครับ ให้คิดซะว่าขนาดของ aperture มันคือความไวของเลนส์มากกว่า มันช่วยการหยุดการเคลื่อนไหว หรือการโฟกัสในที่แสงน้อยมากกว่า ไม่ใช่ว่า F กว้างและมันจะเบลอเสมอไป

กล้องคอมแพคส่วนมากจะมีขนาด Sensor ที่เล็กมาก ….. (ซึ่งมีผลหลายอย่างครับ ไว้วันหลังจะเขียนให้อ่าน) ทำให้มีผลกับ “ระยะสัมพัทธ์” อีกแล้ว …

ลองเล่นที่นี่ดูครับ Digital Camera Sensor Sizes: How it Influences Your Photography ลงไปข้างล่างไปให้ถึง Depth of Field Requirements แล้วลองใส่ตัวเลขเล่นๆ ดู

อันนี้แสดงว่าถ้าเราใช้กล้องที่มี crop factor 1.5 แล้วตั้งทางยาวโฟกัส 10mm และรูรับแสง F11 แล้วจะได้ผลลัพธ์เทียบเท่ากับการใช้กล้อง 35mm ที่ 15mm (อันนี้คิดว่าคงทราบ) “และ” รูรับแสง 16.5 อืมมม

อืมม งั้นลองมาเล่นกันเล่นๆ ดีกว่า ว่าอยากได้ผลลัพธ์เดียวกับการที่ใช้กล้อง DSLR ที่มี crop factor 1.5 (พวก Nikon ที่ไม่ Full-frame) ถ่ายที่ระยะ 105mm และใช้รูรับแสง F2 จะต้องตั้งค่าในพวกกล้องที่ใช้ 1/1.8″ Sensor ยังไง …​

ซึ่งผลที่ได้ก็คือ 33mm และ F 0.6 ไม่ได้โจ๊กเล่นครับ ลองใส่ตัวเลขดูได้เลย

ลองเล่นๆ ดูพบว่า ถ้าตั้งขนาดรูรับแสง หรือ Aperture ที่ F2.8 บนกล้องคอมแพคแล้ว มันจะมีค่าเท่ากับ F13.5 บน 35mm/Full-frame และ F9 บนกล้อง crop factor 1.5 ครับ …. ยังไงๆ มันก็ชัดลึก

ยิ่ง ​Sensor ใหญ่เนี่ย ถ้าต้องการได้รูปภาพที่มีขนาด Subject เท่ากัน และมีความชัดตื้น/ลึกเท่ากันด้วย เราจะต้องเข้าใกล้มากขึ้น หรือใช้เลนส์ทางยาวโฟกัสมากขึ้น ในขณะเดียวกันก็ต้องใช้รูรับแสงที่ “แคบลง” เรื่อยๆ เพื่อรักษาระยะชัดตื้นชัดลึก (ถ้างงว่าเพราะอะไร ก็ลองคิดถึงตัวอย่างการซูมเท้านะครับ ….)

คิดๆ ก็ไม่แปลกล่ะครับ เนื่องจาก Sensor ของกล้องพวกคอมแพคมันเล็กจัด ..​ ดังนั้นจากมุมมองของ Sensor 1/1.8″ เหล่านั้นแล้ว ระยะ 7-10mm ถือว่า Normal ครับ (เทียบเท่ากับ 35-50mm บน Full-frame) อะไรไกลกว่านั้นถือว่าไกลหมด … ดังนั้นผลที่ได้ก็เลยเหมือนกับว่าให้เพื่อนไปยืนไกลๆ (จากตัวอย่างของทางยาวโฟกัส ที่พูดถึงไปแล้ว)

เลยเป็นเหตุผลที่ทำให้ถ่ายหน้าชัดหลังเบลอในกล้องคอมแพคยากมากๆ … ถ้าจะพอทำได้ก็ต้องใช้พวก super super zoom แล้วก็ซูมให้มากที่สุดเท่าที่จะมากได้ (หมายถึง optical zoom นะครับ อย่าไปยุ่งกับ digital zoom เพราะว่ามันคือ crop ธรรมดาๆ) จากนั้นก็ยืนให้ชิดกับแบบที่สุดเท่าที่จะมากได้ … ก็อาจจะพอทำได้บ้าง

 

ดาบสองคม

24 Mar

ดาบสองคม คมหนึ่งมันคมเท่าไหร่ อีกคมมันมักจะคมเท่านั้น

แต่เรามักจะเห็นมันคมเดียว ณ เวลาหนึ่ง จนกระทั่งอีกคมหนึ่งมันไปฟาดอะไรซักอย่างของเราเท่านั้นแหละ ที่เราจะเห็นอีกคมหนึ่ง

เทคโนโลยีทุกอย่าง เป็นดาบสองคม
การพัฒนาการทุกอย่าง เป็นดาบสองคม

เข้าทำนอง ยิ่งรัก ก็ยิ่งทุกข์ เมื่อวันหนึ่งที่ความรักนั้นมันกลับมาเป็นดาบอีกคมหนึ่ง

คุณกำลังสัมผัสดาบสองคม ที่คมที่สุดในประวัติศาสตร์มนุษยชาติ

“อินเทอร์เน็ต”

อินเทอร์เน็ต ให้ Scale ที่ใหญ่ที่สุดเท่าที่จะเป็นไปได้ ในแง่ของ Information Economy นั่นคือ ทุกคนแทบจะมี Economy of Scale เทียบเท่ากัน ขาดแต่เพียง Social Networking รองรับเท่านั้น

ดาบสองคมที่ว่านั่น ก็คือ ถ้าทุกคนอยู่ในฐานะของ “สื่อ” ได้แล้วล่ะก็ จะมีกี่คนเล่าที่มีจรรยาบรรณของสื่อ หรือว่าคำถามที่ดีกว่านั้น จะมีกี่คนเล่าที่ใช้มันไปในทางสร้างสรรค์

เราต้องมี Information Literacy ที่ดีขึ้น …..

นอกจากนั้น อินเทอร์เน็ต มันยังเป็นแหล่งเก็บข้อมูลชั้นดี ที่ไม่มีวันล่ม แทบไม่มีวันหาย

ข้อมูลหลายอย่าง ถ้ามันอยู่บนอินเทอร์เน็ตแล้ว มันแทบจะเป็นอดีตที่ไม่มีวันลบวันเลือน ….

เช่น เมื่อไม่กี่ปีก่อน ถ้ามีแฟน แล้วเลิกกัน อยากจะตัดขาดทิ้งทุกอย่าง มันคงจะทำได้ไม่ยาก ก็แค่เอาเผารูป เผาฟิล์ม เผาจดหมาย ก็เท่านั้นเอง ……

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

อืมมม แล้วก็ .. บางคนก็เขียนแต่เรื่องดีๆ ของกันและกัน เรื่องเสียๆ หายๆ ไม่เคยเขียน บางคนกลับกัน เขียนแต่เรื่องเสียๆ หายๆ เรื่องดีๆ ไม่เขียน พอวันหนึ่งที่มันกลายสภาพเป็นเพียงหน้าหนึ่งในประวัติศาสตร์ ข้อความทั้งดีและไม่ดี ก็คงส่งผลต่างกัน

ดาบสองคมชัดๆ

 

เรื่องจริงกับเรื่องที่คนคิด

10 Feb

ว่าจะเขียนเรื่องทำนองนี้มานานแล้ว … เรื่องจริงกับเรื่องที่คนเห็น เรื่องที่คนตีความ หรือว่าที่รู้จักกันว่า Fact กับ Truth เนี่ยแหละ

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

ออกตัวไว้ก่อน ในฐานะคนธรรมดาคนหนึ่ง ผมเองก็ไม่ได้ปราศจากอคติ และไม่คิดว่าทุกสิ่งทุกอย่างที่ตัวเองคิดมันเป็นเรื่องจริง เพียงแต่มันก็เป็นการตีความของเราเอง

เคยเจอเรื่องแบบนี้มาบ่อยครั้ง สิ่งที่เราทำ กับสิ่งที่คนคิดว่าเราทำ มันเป็นคนละเรื่องกัน

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

ว่างั้นเถอะ

เคยเจอเหตุการณ์ประเภทนี้มาแล้ว บางครั้งฟังก็อึ้งไปเหมือนกัน ว่า เออ คนมันก็ตีความกันไปได้แฮะ แต่คงไม่เขียนเล่าให้ฟังแถวนี้ แต่บางเรื่องได้ยินก็ขำเหมือนกัน ขำคนที่คิดและตีความ มากกว่าจะขำคำพูดที่ออกมา (เพราะมักจะขำไม่ออกกับมัน)

ยกตัวอย่างง่ายๆ เยอะแยะไป (เรื่องจริงทั้งหมด เก็บๆ มาจากตัวเอง และบรรดาคนใกล้ตัว แต่ขอสงวนไว้ว่าเรื่องไหนเป็นเรื่องของใครก็แล้วกัน)

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

ทุกเรื่องในนี้ คำตอบคือ “ใช่” มันเคยถูกตีความผิดไปแบบนั้นจริงๆ แต่ว่าเรื่องจริงมันคนละเรื่องกัน

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

ภาพหนึ่งภาพดีกว่าคำพันคำ หลักฐานทางประวัติศาสตร์บางอย่างมีค่ามากกว่าบันทึกทั้งเล่ม ….​แต่ว่ามันก็เป็นเพียงแค่ “จุด” หนึ่งจุดเท่านั้น จุดเหล่านั้นจะเชื่อมโยงกันยังไง ก็แล้วแต่คนที่เห็น คนที่คิดเอาไปตีความน่ะแหละ บางอย่าง ปักใจเชื่อไปแล้วว่าต้องเป็นแบบนั้น เปลี่ยนยาก ก็เหมือนกับประวัติศาสตร์กระแสหลักน่ะแหละ ที่เปลี่ยนยาก

ลองไปดูหนังเรื่อง Timeline ดูครับ เล่นเรื่อง Fact กับ Truth ของประวัติศาสตร์ไว้บ้าง สนุกดี และคิดว่าคงได้ข้อคิดกับเรื่องนี้พอสมควร (ถึงหนังจะได้ rating จาก IMDB ไม่ดีเท่าไหร่ก็เถอะ)

ถ้าภาพหนึ่งภาพดีกว่าคำพันคำ … สิ่งที่แย่กว่านั้นคือภาพหนึ่งภาพบวกกับคำไม่กี่คนนี่แหละ เพราะว่ามันจะเป็นคำไม่กี่คำ ที่ถูกตีความอะไรไปยังไงก็ไม่รู้ ภาพที่เห็น กับคำบรรยายใต้ภาพ ไม่จำเป็นต้องตรงกันนี่ (เห็นตัวอย่างได้ในหนังสือทั่วไป…)

แต่คนที่ไม่รู้อะไร …. มักจะเชื่อและคล้อยตามคำบรรยายใต้ภาพนั้นแฮะ

อ่ะ …. สุดท้ายนะ ตัวอย่างภาพและข้อความใต้ภาพ….​ อันนี้ขอแค่สนุกๆ นะ จริงๆ แล้วเรื่องจริงมันไม่ใช่แบบคำบรรยาย (น้องเค้าเป็นคนดี)

pet2.jpg

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

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

[update 2] มีอีกเรื่องว่ะ ที่เพิ่งนึกออก … ผมเคยไปนั่งรอแฟนที่ศาลายา ปกติผมจะไว้ผมยาว ไว้เคราด้วย มีครั้งนึงที่ผมตัดผมสั้น และโกนหนวดเครา กลายเป็นมีคนนินทาแฟนซะงั้น ว่าหลายใจ เปลี่ยนแฟนบ่อย สับราง เออดีแฮะ

 

การใข้ Header Files ของ Standard C++

26 Dec

หมายเหตุ

  • บทความนี้เขียนครั้งแรกใน blog วิชา 517211 Programming Languages และเอามาลงใหม่ที่นี่อีกที
  • บทความนี้เกี่ยวข้องกับ Standard Library Headers ของ C/C++ เท่านั้น ไม่เกี่ยวข้องกับ Non-standard Library (เช่น conio.h หรือว่า library อื่นๆ ที่ download มาใช้เอง เช่นพวก image processing หรือว่า XML แต่อย่างใด)

ใน C++ (ตั้งแต่ C++98) เนี่ย header มันเปลี่ยนจาก .h เป็นไม่มี .h แทน เช่น iostream.h ก็เป็น iostream นอกจากนี้แล้วยังมีอีกเรื่อง คือ headers ทั้งหลายที่มาจาก C ซึ่งเปลี่ยนจาก .h เป็นใช้ c นำหน้า เช่น stdio.h เป็น cstdio แทน

โดยทุกอย่างที่อยู่ใน C++ standard library นี้จะอยู่ใน namespace ที่ชื่อ std ซึ่ง namespace ก็คือ ที่สำหรับเก็บชื่อ ว่่าชื่อนี้เป็นของอะไร เช่น std::cin คือ cin ที่อยู่ใน std เป็นต้น

ทีนี้ก็เลยกลายเป็นสาเหตุเล็กๆ น้อยๆ ที่เราควรจะสนใจและใช้ header ให้มันถูกต้องเสียที เวลาที่เขียน C++

  • ความเก่าและใหม่ เพราะว่า C++ บาง implementation ยังคงเก็บ .h headers ไว้เพื่อให้ compatible กับ code เก่าเท่านั้น (คือให้ code เก่าที่เคยเขียนมาสมัย pre-standard ยังคง compile ได้เท่านั้น) จะไม่มีการ update ให้ใช้ความสามารถใหม่ๆ ได้แต่อย่างใด

    ลองคิดว่าเป็นอารมณ์เดียวกับที่ Microsoft เลิก update Windows 98 ไปนานแล้ว …. แต่ว่าคุณยังเก็บ Win98 อยู่ เพราะว่ายังมีบางโปรแกรมที่ยังคงใช้มันอยู่ และใช้บน XP ไม่ได้น่ะแหละ

  • namespace พูดเป็นเล่นครับ นี่เรื่องใหญ่กว่าที่หลายๆ คนคิด ใครที่เคยเขียน C/C++ จะเข้าใจดี เรื่องความซ้ำกันของชื่อฟังค์ชัน หรือว่าชื่อ constant ต่างๆ เป็นปัญหาหลัก เนื่องจากว่ามันมีซ้ำไม่ได้เด็ดขาด (ห้ามประกาศซ้ำ ในหนึ่งโปรแกรม) สมมติว่าผมใช้ library บางตัว และมี function ที่ชื่อซ้ำกับ standard library หรือว่าซ้ำกันเองระหว่าง library อื่นๆ นี่จบกันเลย ต้องแก้โน่นแก้นี่เยอะมาก

    ทีนี้เป็นเรื่องครับ เพราะว่า standard library ของ C++ นั้นค่อนข้างจะใหญ่พอควร และมีชื่อที่ค่อนข้างโหลอยู่มากมาย เช่น vector (ใน header ชื่อ vector) หรือว่า max, find, count (ใน algorithm) เป็นต้น การที่พวกนี้อยู่ใน namespace std จะช่วยป้องกันปัญหาชื่อซ้ำกันได้บ้าง (เยอะเลยแหละ) เพราะว่าปกติชื่อมันจะไม่ซ้ำกันข้าม namespace

    ปัญหานี้มันก็อารมณ์เดียวกับคนชื่อซ้ำๆ กันในคณะ (เช่น ชื่อ ฝน หรือว่า เมย์ … ชื่ออะไรดีที่มีเยอะๆ?) แต่ว่าถ้าบอกว่า ฝน เอกคอมพ์ นี่คงจะน้อยลงไปเยอะเลย (โอกาสซ้ำกันก็ยังพอมีอยู่ แต่ว่าสำหรับ std namespace แล้วการันตีว่าไม่มีการซ้ำภายใน namespace เดียวกัน) .. งั้นการบอกว่า std::max ก็เหมือนกับบอกว่า เอกคอมพ์::ฝน น่ะแหละ … แต่ว่าถ้าชื่อไม่ค่อยจะโหล เช่น เอิง อะไรแบบนี้ก็แล้วไป (ถ้าเป็น C++ ก็คงจะพวก bind2nd อะไรทำนองล่ะมั้ง)

  • เรื่องความเข้ากันได้ของ C และ C++ เอง …. เรื่องนี้ไม่น่ามีล่ะครับ แต่ว่าก็ว่าไม่ได้ เพราะว่าไม่มีใครกำหนดไว้ชัดเจน แต่ว่าเนื่องจาก C และ C++ เอง นับวันก็ยิ่งจะแตกต่างกันในเรื่องของรายละเอียดเล็กๆ น้อยๆ มากขึ้นๆ เรื่อยๆ ถ้าเราใช้ .h library เมื่อไหร่ นั่นหมายถึงเราอาจจะใช้ library ของ C อย่างไม่รู้ตัวครับ นั่นแปลว่า ถึงเราจะแม่น devils in details ของ C++ มากแค่ไหน แต่ว่าถ้าเราใช้ของ C โดยที่เราคิดว่าใช้ของ C++ อยู่ล่ะ? ….. เราจะเจอปัญหาเล็กน้อยพอควรทีเดียว และเราจะไม่คิดด้วย ว่ามันเป็นปัญหาที่จุดนี้

    เรียกว่าถ้าเราจะใช้ C ก็ใช้ .h ให้ชัดเจน แต่ว่าถ้าจะใช้ C++ ก็เอา .h ออก และใช้ c ขึ้นหน้า (เช่น cstdio, cstdlib, cstring, cctype เป็นต้น)

    อ่อ ….​ และถึงตรงนี้เลยฝากไว้นิดเลยละกัน ว่า string.h ของ C (ที่มีพวก strlen) มันจะกลายเป็น cstring ใน C++ นะครับ ถ้า string ของ C++ จะเป็นอีกตัวนึง ซึ่งเป็นคนละเรื่องกันเลย

คงเป็นความรู้ประกอบการตัดสินใจในการเลือกใช้ header สำหรับการเขียน C/C++ ได้บ้างครับ

 

History of the Internet & the Web

11 Nov

เทอมนี้สอนวิชา Programming on the World Wide Web และคิดจะใช้วิธี collaborative knowledge development กับวิชานี้ (และอาจจะวิชาอื่นๆ ที่สอนในเทอมนี้ด้วย) ก็คือ ผมจะรวบรวมบทความหรือว่าเร่ืองน่าสนใจต่างๆ มาเป็น reading list และนักศึกษาจะต้องเข้าไปอ่าน​ (ไม่จำเป็นต้องอ่านทั้งหมด) และต้องมีความคิดอะไรบางอย่างกับสิ่งที่ตัวเองอ่านไป ว่าให้ข้อคิดอะไรบ้าง ส่งให้เกิดผลอย่างไรบ้าง หรือว่าทำให้เข้าใจโลกที่เป็นอยู่อย่างไรบ้าง และนักศึกษาจะต้องเขียนเป็นบทความสั้นๆ แล้ว submit กลับเข้าไปในระบบ โดยที่ผมจะเป็น editor ให้ เพื่อคัดเลือกบทความที่ดี (interesting, insightful ตามภาษา slashdot) ให้อยู่ในระบบ และการนับคะแนนจะนับตาม contribution ในการร่วมกันสร้าง knowledge

สำหรับ reading list แรกของวิขานี้ คือเรื่องเชิงประวัติศาสตร์ นั่นคือ history of internet & the web ซึ่งผมเห็นว่าจริงๆ ก็น่าสนใจดี ก็เลยเอามา post ไว้ที่นี่อีกที่หนึ่ง

517312 Programming on the World Wide Web: Reading: History of Internet & the Web

ซึ่งก็คงต้องขออภัยอย่างสูงด้วยอีกเรื่องหนึ่งคือ ใน website นั้น ไม่ให้คนนอกสมัครเข้ามาเขียน content ได้แต่อย่างใด (เนื่องจากกำลังอยู่ในระหว่างการทดลอง model นี้ในการศึกษา)

 

How to Become A Hacker

04 Oct

บทความที่ดีมาก….

ผมอ่านเรื่องนี้นานมากแล้ว ตั้งแต่เรียนปริญญาตรีได้มั้ง และเป็นหนึ่งในบทความในหัวใจเลย ต่อมาก็กลายเป็น source of inspiration หนึ่งที่ทำให้ผมเขียนบทความ (ที่ยังเก็บต้นฉบับไว้อยู่ แต่ว่าขี้เกียจรื้อ) เรื่อง Hackers: Their True Stories

Hacker คือ ฮีโร่ของผมมาตลอด แต่ว่าคำๆ นี้ ในสายตาของ public แล้ว พวกที่ถูกเรียกว่า Hacker หรือว่าพวกที่สื่อต่างๆ และหลายๆ คนเรียกว่า Hacker คือคนไม่ดี ที่คอยทำลายระบบต่างๆ รื้อข้อมูล ทำลายข้อมูล เอาข้อมูลที่ไม่ได้รับอนุญาตไปใช้ในทางไม่ดี หรือแม้แต่อะไรที่เบาและแรงกว่านั้น​ (ตั้งแต่แงะซอฟต์แวร์ไปเรื่อย ถึงสร้างความเสียหายระดับชาติ)

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

บทความของ ESR นั้น ถ้าอ่านดีๆ และปฏิบัติตามได้จริงๆ คุณอาจจะกลายเป็น Hacker ก็ได้ ใครจะไปรู้ ….

ส่วน Hacker คืออะไรกันแน่? ถ้าอยากจะรู้คำตอบ ก็ลองเริ่มอ่านบทความนั้นดู แล้วอ่านไปอ่านมาคุณจะพบคำตอบเอง ..​ อ๊ะๆ อย่าบอกว่ามันเป็นภาษาอังกฤษเลยไม่อ่านนะ ถ้าแค่นี้เป็นกำแพงที่คุณไม่อยากข้ามแล้วล่ะก็ คุณคงจะเป็น Hacker ลำบากล่ะครับ

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

 

Blog คือ?

19 Sep

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

คำว่า blog มันมีที่มาจากคำว่า web log หรือว่า log บน web ทีนี้ไอ้คำว่า log เนี่ย มันเหมือนกับพวก data logger คือบันทึกข้อมูล บันทึกข้อความ อะไรก็แล้วแต่ที่เราอยากจะบันทึก คล้ายๆ diary น่ะแหละ แต่ว่าแทนที่จะเขียนมันลงกระดาษ หรือว่าลงโปรแกรม word แล้วเก็บเป็นไฟล์ไว้ ก็เขียนมันลง web ซะ

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

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

เรื่องน่าสนุกอยู่ตรงนี้ ถ้าเราเอาคำว่า web log มาเขียนติดกัน จะได้คำว่า weblog แล้วตัดคำเสียใหม่ จะได้คำว่า we blog ซึ่ง we ในที่นี้แปลว่า “พวกเรา” และ blog ก็เหมือนจะกลายเป็นคำกริยา (เหมือนกับ we write, we walk, we talk, we do) โดยที่คำนี้จะมีความหมายสื่อถึงการกระทำที่ผมเพิ่งจะเขียนถึงไปเมื่อย่อหน้าสองย่อหน้าก่อนเนี่ยแหละ

ดังนั้น เวลาคนถามกันว่า “มี blog หรือเปล่า” ก็จะหมายถึงว่า เรามีพื้นที่สำหรับเขียนความคิด เขียนประสบการณ์ แบ่งปันความรู้ ความเข้าใจ ทั้งถูกและผิด อะไรก็ตามที่บ่งบอกถึงความเป็นตัวเราเอง อยู่ในโลก cyberspace หรือเปล่า และนอกจากนี้ เราเป็นส่วนหนึ่งของ social network ขนาดใหญ่ ที่ไม่มีขอบเขตพรมแดน ไม่มีแบ่งแยกประเทศ ไม่มีหมวก ไม่มีหน้ากาก หรือเปล่า

และเวลาที่เราบอกใครว่า “ผมมี blog” ก็จะหมายถึงว่า เรามีสิ่งเหล่านั้น นั่นเอง

ปล.จริงๆ เรื่องของ blog มีมากกว่านี้เยอะ ลองดู http://en.wikipedia.org/wiki/Blog นะครับ ส่วนเรื่องที่ตัดคำใหม่ ให้ได้คำว่า we blog น่ะ อันนี้ถึงผมจะคิดเอง มั่วเอาเอง แต่ว่าอาจจะมีอีกหลายคนคิดเหมือนกัน และชอบเหมือนกันก็ได้ .. โดยส่วนตัวผมคิดว่ามันเป็น definition ของพฤติกรรมสังคมในยุค social networking content ที่ดีนะ…