24 September 2020
จริงๆ การเลือกปฏิบัติด้วยอายุ ไม่ได้มีเฉพาะการกีดกันเพียงเพราะอายุเยอะ ยังมีเรื่องกีดกันเพียงเพราะอายุน้อยด้วย
เช่น การระบุในกฎหมาย ว่ากรรมการนั่นนี่ ตำแหน่งต่างๆ จะต้องมีอายุขั้นต่ำ ขั้นสูง เท่าใด ซึ่งขั้นต่ำของไทยนี่สูงมาก ตัวอย่างเช่น กรรมการกสทช. ต้องอายุ 40 ขึ้นไป เท่ากับว่า คนที่เป็นนายกรัฐมนตรีฟินแลนด์ นายกรัฐมนตรีนิวซีแลนด์ และรัฐมนตรีดิจิทัลไต้หวัน ในวันที่พวกเธอเข้ารับตำแหน่ง (34, 37, และ 35 ปี) คุณสมบัติไม่พอจะเป็นกสทช.บ้านเรานะ
(พ.ร.บ.กสทช.ปี 2553 กำหนดไว้ที่ 35 ปี ต่อมาเมื่อปี 2560 สภานิติบัญญัติแห่งชาติที่มาจากการรัฐประหาร ได้แก้ไขกฎหมายในสาระสำคัญหลายส่วน รวมถึงวิธีการสรรหาและคุณสมบัติกรรมการ และขยับอายุขั้นต่ำจาก 35 ไปเป็น 40 ปี — เคยเขียนเรื่องนี้ไว้ เทียบกรรมการหลายชุด )
—
จะบอกว่าคนหนุ่มสาวสมัยนี้ ไม่ชอบคนแก่ กีดกันคนสูงอายุ ไม่นิยมคนอายุมาก แต่ถ้าไปดูทางความคิด ผมเห็นคนอายุน้อย เขาก็ชื่นชมคนอย่าง Bernie Sanders (79 ปี), RBG (เพิ่งตายไปตอน 87 ปี), สมศักดิ์ เจียมธีรสกุล (62 ปี) อะไรแบบนี้นะ หรือคนกลุ่มอย่าง ชัชชาติ ธราธร พวกนี้ก็ 50++ 40++ (อายุในกลุ่มที่มีคนโอดครวญว่า แค่ใกล้ๆ จะ 40 ก็ถูกเรียกว่าลุงกันแล้ว)
ก็เลยคิดว่า เรื่องที่เราตีโพยตีพายกัน ติดป้ายกันว่านี่เป็นแบ่งแยกช่วงอายุ จริงๆ มันไม่น่าจะเป็นเรื่องการเลือกปฏิบัติเพียงเพราะอายุ
—
ถามว่าการเลือกปฏิบัติกับคนอายุเยอะมีไหม จริงๆ มันมีกรณีที่ “เกิดขึ้น” โดยไม่ตั้งใจและจริงๆ ไม่ได้เจาะจงกับคนอายุเยอะ เพียงแต่ว่าคนอายุเยอะนั้นอาจมีแนวโน้มที่จะมีคุณสมบัติที่ไปตรงกับเรื่องที่ทำให้ถูกกันออกไป
เช่น วัฒนธรรมปาร์ตี้ดึกหรือการไปเที่ยวค้างคืนของที่ทำงาน ซึ่งอาจจะกันคนจำนวนหนึ่งออกไปโดยไม่รู้ตัว-โดยไม่ได้มีเจตนาร้าย แต่อาจส่งผลต่อความสัมพันธ์ในที่ทำงานและความก้าวหน้าในองค์กร (ซึ่งก็คือการเลือกปฏิบัติ)
แก่แล้วก็นอนดึกไม่ไหว มีครอบครัวแล้วก็ต้องแบ่งเวลา มีภาระทางการเงินมากขึ้นก็ต้องจัดสรรให้ได้ส่วน สิ่งเหล่านี้ทำให้คนจำนวนหนึ่งไม่สามารถร่วมกิจกรรมหลายอย่างได้ในองค์กรที่อายุเฉลี่ยของพนักงานค่อนข้างน้อย และถ้าไม่จัดการให้ดี ก็จะเป็นความกดดันต่อพนักงานในกลุ่มที่รู้สึกว่าถูกกันออกไป
คนจำนวนนั้นมีแนวโน้มจะเป็นคนที่มีอายุมาก มากกว่าคนอายุน้อย โดยเปรียบเทียบ แต่คนอายุน้อยที่มีภาระครอบครัว มีข้อจำกัดทางกายภาพ หรือกระทั่งก็แค่ไม่ชอบปาร์ตี้ ชอบอยู่บ้าน ไม่อยากเจอคนที่ทำงานนอกเวลางาน ก็มีอยู่ ดังนั้นกรณีลักษณะข้างต้น มันจึงไม่ใช่การเลือกปฏิบัติกับคนอายุมาก แต่มันเลือกปฏิบัติกับคนที่นอนดึกไม่ได้ เลือกปฏิบัติกับ introvert เลือกปฏิบัติกับคนไม่กินเหล้า เลือกปฏิบัติกับคนไม่สามารถกันเงินไปสังสรรค์ .. ซึ่งเป็นปัญหา และเป็นปัญหาที่มีแนวโน้มว่าถ้านับจำนวนหัว คนแก่จะได้รับผลกระทบมากกว่า แต่คนหนุ่มสาวก็โดนได้ไม่ต่างกัน — ดังนั้นอย่าเรียกสิ่งเหล่านี้ว่าการเลือกปฏิบัติกับคนแก่
(อย่างผมนี่ ก่อนหน้านี้ทำอยู่บริษัทแห่งหนึ่ง ออกแนวเทคโนโลยี+การตลาด ซึ่งเป็นอุตสาหกรรมที่คนหนุ่มสาวมากมาย และผมก็อายุเยอะกว่าคนในทีมทั้งหมด คือตอนผมเข้ามหาลัยคนในทีมบางคนอาจจะยังไม่เกิดด้วยซ้ำ 5555 แต่ผมไม่มีภาระ ไม่มีครอบครัวต้องดูแล ชอบปาร์ตี้ นอนดึกยังพอได้ ผมเลยพอไปกันได้กับเพื่อนร่วมงานจำนวนหนึ่ง แต่ก็จะมีเพื่อนร่วมงานอีกจำนวนหนึ่งเลย ที่อายุอาจจะน้อยกว่า แต่มีภาระทางบ้าน มีภาระการเงิน มีครอบครัว บ้านอยู่ไกล ไม่ชอบไปกินร้านที่มีบุหรี่ ฯลฯ ก็ต้องพยายามหาพื้นที่ให้กับคนเหล่านี้ด้วย ไม่อย่างนั้นผมก็จะคุยแต่กับพวกสายปาร์ตี้ บางทีกินข้าวแล้วแหละ แต่เพื่อนชวนกินข้าวแถวออฟฟิศ ก็ไปกินอีกรอบ เพราะรู้ว่าคนนี้เราไม่มีโอกาสคุยมาก ไม่ใช่สายกลับดึกๆ)
—
ประเด็นพวกนี้ ในคนที่อยู่ในฐานะผู้ดูแลชุมชนหรือความเป็นอยู่ของคนในองค์กร ควรจะระมัดระวัง สังเกต ทบทวน และพยายามสร้างสภาพแวดล้อมที่จะรวมคนเข้ามาให้ได้มากที่สุด (ซึ่งจะเป็นหน้าที่มอบหมายเฉพาะเป็นเรื่องเป็นราวก็ได้ เช่น ฝ่ายบุคคล แต่จริงๆ ก็อยากให้มองเป็นเรื่องที่ทุกคนในชุมชนเดียวกันต้องช่วยกัน)
แต่ผมคิดว่าป้าย “กีดกันคนแก่” “เลือกปฏิบัติเพียงเพราะเขาอายุมาก” สำหรับเมืองไทยตอนนี้ น่าจะเป็นข้ออ้างในลักษณะ แบบ คนสูงอายุจำนวนหนึ่งอาจจะรู้สึกว่า แทบจะไม่เหลือที่ให้ฉันยืนแล้ว ไม่เหลืออะไรให้ฉันป้องกันตัวเองอีกต่อไปแล้ว เลยหยิบเอาลักษณะติดตัว (อายุ) อันนี้ขึ้นมาพูด ทำเหมือนตัวเองเป็นเหยื่อ โดยอาจจะไม่ได้พิจารณาว่า เอ๊ะ ที่เขาไม่เอาเรา เป็นเพราะเราแก่ หรือเป็นเพราะเราทำตัวไม่น่าคบ
—
การเลือกปฏิบัติในทางลบ เป็นเรื่องที่ไม่ควรมี ต้องป้องกันไม่ให้เกิด ถ้ารู้ว่าเกิดต้องแก้ไข เยียวยา ลดโอกาสเกิดซ้ำ แต่ตั้งต้นนี่มันต้องเอาให้แน่ใจก่อน ว่าต้นเหตุมันมาจากเรื่องอะไร
(เขียนในฐานะคนอายุ 41 ขวบครึ่ง)
The post กีดกันคนแก่? first appeared on bact' is a name .
โดย bact ณ 24 September 2020 14:41 +0700
8 August 2020
ตะกี้อ่านใบตองแห้ง เรื่องว่าเราจะก้าวหน้าไปได้แค่ไหน แนวหน้าก้าวไป 7 ก้าว สังคมพร้อมก้าวด้วย 2-3 ก้าว ก็ต้องเอาตามสังคมไหม เพราะสุดท้ายขบวนมันต้องมีคนสนับสนุนและยังไงก็ต้องอยู่ด้วยกันต่อไป (ดู https://www.facebook.com/baitongpost/posts/3277567832325023 ) เลยขอโพสต์เรื่อง “The Crown” นี้ใหม่ เพิ่มเติมนิดหน่อยจากที่โพสต์ไปเมื่อคืน เพราะคิดว่าเป็นเรื่องสำคัญ ในการจัดที่ทางของอำนาจ เพื่อให้สิ่งที่เรียกว่า rule of law สามารถเกิดเป็นจริงได้มากขึ้น กลไกอำนาจทำงานเพื่อประชาชนได้จริงมากขึ้น
สังคมประชาธิปไตยที่เห็นว่าสถาบันกษัตริย์ยังมีประโยชน์กับสาธารณะอยู่ (เช่น สวีเดน ญี่ปุ่น สหราชอาณาจักร) เขาจัดที่ทางให้สถาบันกษัตริย์อยู่ตรงไหน ในระบอบที่หลักใหญ่ใจความตามชื่อนั้นหมายความว่า อำนาจอธิปไตยมาจากประชาชน
การอภิปรายและพิจารณาถึงที่ทางของสถาบันกษัตริย์นี้มีความจำเป็น เนื่องจากเกี่ยวข้องโดยตรงกับการใช้อำนาจอธิปไตย (ดังจะได้กล่าวต่อไป) ถ้าจะไม่ให้พูดถึงสถาบันกษัตริย์เลยในบทสนทนาเกี่ยวกับอำนาจอธิปไตย นั่นหมายความว่าเราจะต้องไปใช้ระบอบการปกครองแบบอื่นที่ไม่มีกษัตริย์ ซึ่งก็ไม่น่าจะเป็นเรื่องที่หลายคนต้องการ
ในการคิดเรื่องนี้ เราจำเป็นต้องกลับไปที่นิยาม/มโนทัศน์/หรือวิธีในการคิดถึงและเอ่ยถึง กษัตริย์และสถาบันกษัตริย์
(ใครมีความรู้ความเห็นเรื่องนี้ก็เชิญเพิ่มเติม-แก้ไข-แลกเปลี่ยนนะครับ)
(1) อำนาจอธิปไตยมาจากปวงชน
ใน Netflix มีซีรีย์ชื่อ The Crown เป็นรื่องราวในสถาบันกษัตริย์ของบริเตน
Crown นี้ไม่ใช่มงกุฎประดับหัวที่เป็นสิ่งของ แต่หมายถึงสัญลักษณ์แทนอำนาจอธิปไตย เป็น Crown ใน Crown prosecutor (อัยการ – ทำนองเดียวกับ public prosecutor) Crown Estate (UK) หรือ Crown Property Bureau (สำนักงานทรัพย์สินส่วนพระมหากษัตริย์ ของไทย)
“The Crown” เป็นแนวคิดที่เริ่มพัฒนาในอังกฤษ เพื่อแยกอำนาจอธิปไตยที่ใช้ผ่านกษัตริย์ (crown) ออกมาจากตัวกษัตริย์ (monarch)
การแบ่งแยกในเชิงแนวคิดนี้สำคัญสำหรับ Commonwealth realm หรือเครือจักรภพด้วย เพราะในทางบุคคล แม้จะเป็นกษัตริย์คนเดียวกัน (แง่เลือดเนื้อ-กายภาพ) แต่ในทางอำนาจ ถือว่าเป็นอำนาจคนละอำนาจกันในแต่ละประเทศ (เป็นอลิซาเบ็ธเดียวกัน แต่เป็นคนละควีนกันในแคนาดาและออสเตรเลีย)
เวลาอ้างอำนาจ ไม่ว่าจะฝ่ายบริหาร นิติบัญญัติ หรือตุลาการ จะอ้างไปที่ crown ไม่ใช่ monarch เช่น ในการฟ้องคดีอาญาที่รัฐเป็นผู้ฟ้อง แม้จะเขียนว่า “Rex/Regina (ราชา/ราชินี) v ผู้ถูกฟ้อง” แต่เวลาอ่านออกเสียงจะอ่านว่า “The Crown (หรือไม่ก็ใช้ชื่อของอัยการ) v ผู้ถูกฟ้อง” ในความหมายว่า คดีความนี้รัฐมองว่าสาธารณะเป็นผู้เสียหาย จึงใช้อำนาจของปวงชนในการฟ้อง
(2) กษัตริย์เป็นร่างทรง กษัตริย์เป็นภาชนะว่างเปล่า
The Crown นี้ จึงเป็นสิ่งประดิษฐ์ทางการเมืองที่ถูกสร้างขึ้นมาเป็นช่องทางให้อำนาจวิ่งผ่าน แต่ไม่ใช่ต้นทางของอำนาจในตัวมันเอง
ประเด็นเรื่อง “The Crown” ซึ่งดูคล้ายบุคคล (monarch) แต่จริงๆ ไม่ใช่บุคคล แต่เป็นบุคลาธิษฐาน*ของอำนาจอธิปไตยของปวงชนนี้สำคัญมาก เพราะถ้าไม่ชัดเจน พร่าเลือน ก็จะทำให้เข้าใจผิดไปหมดว่าอำนาจต่างๆ นั้นเป็นของกษัตริย์ที่เป็นบุคคลคนหนึ่ง ทั้งที่จริงนั้นกษัตริย์ในระบอบประชาธิปไตยนั้นเป็นเพียงสัญลักษณ์หรือ “ร่างทรง” (legal embodiment) หรือ “ทางผ่าน” ของอำนาจอธิปไตยเท่านั้น
กล่าวคืออำนาจที่แท้จริงนั้นมาจากประชาชน เพียงแต่ในทางสัญลักษณ์ เพื่อให้ทำงานบางอย่างง่าย (เช่นการเอ่ยปากในพิธีหรือการลงชื่อในหนังสือ) ก็เอามนุษย์สักคนหนึ่งอุปโลกน์ขึ้นมาทำหน้าที่แทนปวงชนเสีย
เช่นที่เรียกกันโดยราชาศัพท์ว่าพิธี “ถวายสัตย์” นั้นไม่ใช่การสาบานกับบุคคลคนหนึ่ง แต่เป็นการกระทำสัตย์ปฏิญาณสาบานต่อประชาชน – เนื่องจากการจะเอาปวงชนทุกคนในประเทศมาอยู่ในที่พิธีเดียวกัน ให้รัฐมนตรีและข้ารัฐการทั้งหลายสาบาน ในทางปฏิบัติมันทำไม่ได้
หรือ Crown Property นั้นก็หมายถึงทรัพย์สินของสาธารณะ ไม่ใช่ทรัพย์สินของบุคคลหนึ่งคน จะปล่อยให้กษัตริย์ที่เป็นบุคคลบริหารจัดการ “ตามพระราชอัธยาศัย” ไม่ได้ (เนื่องจากตัวกษัตริย์ที่เป็นบุคคลนั้นไม่ได้มีอำนาจเป็นของตัวเอง) ต้องให้รัฐบาลซึ่งมาจากการเลือกของประชาชนเป็นคนจัดการ
หรือการที่ศาลเอ่ยว่าพิจารณาพิพากษาคดี “ในพระปรมาภิไธย” นั้น ก็หมายถึงว่าศาลใช้อำนาจตุลาการ ซึ่งเป็นขาหนึ่งของอำนาจอธิปไตย (ตามหลักแบ่งแยกอำนาจคือ อำนาจบริหาร อำนาจนิติบัญญัติ อำนาจตุลาการ) โดยอำนาจที่ว่านี้ไม่ใช่อำนาจของผู้พิพากษาหรือของศาลเอง แต่เป็นอำนาจที่ได้ผ่านมาจากช่อง The Crown ซึ่งต้นทางของอำนาจก็คือปวงชน (ดูที่ นิธิ เอียวศรีวงศ์ อภิปราย https://botkwamdee.blogspot.com/2012/07/n-oldcc.html )
กษัตริย์ในบริบทนี้จึงเป็นเหมือนท่อ หรือเป็นเหมือนภาชนะว่างเปล่า ที่ถูกบรรจุด้วยอำนาจอธิปไตยของปวงชน ในช่วงเวลาหนึ่งๆ
กรณีที่มีการเปลี่ยนภาชนะ ความผูกพันหรือสัมพันธ์ทางกฎหมายใดๆ ก็ยังดำเนินต่อไปโดยไม่ขึ้นกับภาชนะหรือกษัตริย์ที่เป็นบุคคลที่เปลี่ยนไป เนื่องจากอำนาจอธิปไตยของปวงชนก็ยังเป็นอำนาจเดิม ไม่ใช่ว่ากฎหมายที่ออกในสมัยกษัตริย์คนก่อนจะไม่มีผลในสมัยกษัตริย์คนใหม่ เพราะโดยแท้แล้ว อำนาจในการตรากฎหมายเหล่านั้น ไม่ใช่อำนาจของกษัตริย์คนใด ไม่ใช่อำนาจของรัฐมนตรีคนใด แต่เป็นอำนาจอธิปไตยจากปวงชนซึ่งดำรงอยู่อย่างต่อเนื่อง
(*บุคลาธิษฐาน/personification – การทำให้สิ่งไม่มีชีวิต พืช สัตว์ หรือสิ่งนามธรรม มีลักษณะของบุคคลขึ้นมา)
(3) ขีดเส้นความสัมพันธ์ที่ชัดเจน
สถาบันกษัตริย์กับระบอบที่อำนาจเป็นของประชาชน ที่เรียกว่า “ประชาธิปไตย” นั้นไปด้วยกันได้ ตราบใดที่กษัตริย์ยังเป็นตัวแทนบุคลาธิษฐานของอำนาจอธิปไตยของปวงชน และไม่ถือว่าอำนาจอธิปไตยนั้นเป็นของกษัตริย์ซึ่งเป็นมนุษย์คนหนึ่งเสียเอง
นายทหารคนไหนที่เพ้อเจ้อหลงลืม พูดทำนองว่าเป็นทหารของพระราชา (ซึ่งเป็นคำที่เจาะจงกับมนุษย์หนึ่งคนหรือหนึ่งหน่วยครอบครัว) คนเหล่านี้ถือว่าทำผิดสัตย์ปฏิญาณ เพราะไม่ได้จงรักภักดีเฉพาะกับปวงชน แต่เอาใจออกห่างไปจงรักภักดีกับบุคคลคนหนึ่งคน ซึ่งก็ถือว่าเป็นกบฏ
การแก้ไขกฎหมายจำนวนหนึ่งที่เกี่ยวกับสถาบันกษัตริย์ ซึ่งระลอกใหญ่ล่าสุดคือช่วงหลัง 2560 ทำให้การแบ่งแยก crown/สาธารณะ/ปวงชน และ monarch/บุคคล นั้นพร่าเลือนมากขึ้น เกิดความไม่ชัดเจนว่าอำนาจอธิปไตยนั้นมาจากปวงชนจริงหรือไม่, ถ้ากษัตริย์ในฐานะบุคคลใช้อำนาจได้เองโดยไม่ต้องมีผู้สนองโองการ อำนาจนั้นเป็นอำนาจจากไหน, ทรัพย์สินส่วนพระมหากษัตริย์ยังเป็นของสาธารณะอยู่หรือไม่, การใช้อำนาจและทรัพยากรยังต้องรับผิดรับชอบกับประชาชนอยู่หรือไม่
การแก้ไขกฎหมายที่ทำให้ขอบเขตอำนาจพร่าเลือนเหล่านี้เป็นประเด็นสำคัญอันหนึ่งที่ อานนท์ นำภา ได้นำเสนอในการปราศัยเมื่อวันที่ 3 ส.ค. 2563 — ดูสรุปโดยไอลอว์ที่ https://www.facebook.com/iLawClub/photos/a.10150540436460551/10164208505220551/
สิ่งที่อานนท์พูดถึงโดยหลักจึงเป็นเรื่องการรักษาอำนาจอธิปไตยของปวงชน
(4) รูปคำที่แข็งแรงเพื่อรักษาความชัดเจนของความคิด
เราไม่จำเป็นต้องตามประเทศใดเป๊ะๆ ในการนิยามแนวคิดลักษณะ The Crown แต่เราควรแบ่งแยกเรื่องบุคคลกับสาธารณะให้ชัดเจน ไม่เช่นนั้นการแบ่งแยกอำนาจ rule of law และความรับผิดรับชอบต่างๆ มันเกิดไม่ได้
และเราควรมีรูปคำสำหรับแนวคิดลักษณะ The Crown ที่เปล่งเสียงได้และเข้าใจตรงกัน จะได้สื่อสารกันได้อย่างชัดเจน ไม่ปะปน crown กับ monarch
คือจะตกลงกันเรื่องที่ทางอย่างไรก็สุดแล้วแต่ แต่ภาษาคือเครื่องมือพื้นฐานในการสื่อสารเพื่อที่จะได้สามารถตกลงกันได้ ถ้าภาษามันไม่ชัด ก็ทำงานกันลำบาก
ใครทราบว่ามีคำที่เหมาะสมอยู่แล้ว หรืออยากจะเสนอคำ ก็เชิญได้นะครับ
—
ปรับปรุงบางส่วนจากโพสต์บนเฟซบุ๊ก 9 ส.ค. 2563 และ “The Crown” (28 พ.ย. 2559) และเผยแพร่ครั้งแรกที่ https://www.facebook.com/arthit/posts/10157020621931086
The post The Crown - กษัตริย์ในฐานะบุคลาธิษฐาน first appeared on bact' is a name .
โดย bact ณ 8 August 2020 23:47 +0700
25 July 2020
“ข่าวลือ” ในความหมายของการกระจายข่าวที่ไม่อาจยืนยันที่มาและความแม่นยำได้ ถ้ามันเป็นเป็น “ข่าวลือ” เกี่ยวกับบุคคลสาธารณะหรือสถาบันทางสังคม มันก็มีประโยชน์สาธารณะได้นะ จะไปบอกว่าข่าวลือทุกชนิดทุกชิ้นไม่มีประโยชน์กับสาธารณะก็ไม่ใช่
เนื่องจากบุคคลสาธารณะและสถาบันทางสังคมมีอำนาจมาก การกระจายข่าวเกี่ยวกับคนหรือสถาบันเหล่านั้นในลักษณะที่สืบย้อนที่มาได้อย่างเปิดเผย ก็ทำได้ลำบากกว่า เนื่องจากอาจเป็นอันตรายกับแหล่งข่าวหรือคนที่เปิดหน้าเผยแพร่
ดังนั้นลักษณะของเนื้อข่าวก็จำเป็นจะต้องทำให้ที่มาของข่าวมีลักษณะคลุมเครือหรือปกปิด และลักษณะของการเผยแพร่ ก็อาจทำไม่ได้ในทางช่องทางปกติ ก็ออกไปทางพูดปากต่อปากบ้าง คุยกันในวงเล็กหรือวงที่พอเชื่อใจกันอยู่บ้าง ไม่สามารถทำได้ในสื่อสารมวลชนที่เข้าถึงคนได้ทีละมากๆ ในเวลาสั้นๆ
—
หากเราเอามาตรฐานทางวารสารศาสตร์ไปพิจารณา “ข่าวลือ” เหล่านี้ ก็อาจจะพบว่าเป็นไปได้ที่จะเป็นการรายงานที่ไม่ครบถ้วน ไม่น่าเชื่อถือเพียงพอ หรือไม่น่าจะเป็นธรรมกับผู้อยู่ในข่าว แต่เมื่อพิจารณาอำนาจหน้าที่และทรัพยากรของบุคคลสาธารณะและสถาบันทางสังคมแล้ว “ข่าวลือ” เหล่านี้ ก็น่าจะถือได้ว่า โดยเปรียบเทียบ ยังเป็นธรรมอยู่กับบุคคลในข่าว
เนื่องจาก
– ในแง่ความครบถ้วน บุคคลและสถาบันเหล่านั้น มีอำนาจ(และหน้าที่)ที่จะทำได้อยู่แล้ว ที่จะทำให้ข้อมูลมันครบถ้วนขึ้น ให้สาธารณะเข้าถึงข้อมูลได้มากขึ้น ง่ายขึ้น ทำให้สาธารณะหายสงสัยได้
– ในแง่ความน่าเชื่อถือ ความเป็นบุคคลสาธารณะหรือสถาบัน ยังไงก็มีเครดิตมีความน่าเชื่อถือในการอธิบายเหนือกว่า และการที่ไม่ได้นิรนามก็อนุญาตให้สะสมความน่าเชื่อถือได้ และ
– ในแง่ทรัพยากร บุคคลและสถาบันเหล่านั้นก็มีทรัพยากรเพียงพอ (และในหลายครั้งก็เป็นทรัพยากรของสาธารณะด้วยซ้ำ) ในการจะเผยแพร่แก้ไข หรือยืนยันข้อมูลต่างๆ อยู่แล้ว
ดังนั้นถ้าพิจารณาทั้งแง่อำนาจ หน้าท่ี และทรัพยากร การที่ “ข่าวลือ” จากผู้มีอำนาจน้อยต่อผู้มีอำนาจมาก จะมีมาตรฐานในทางวารสารศาสตร์หย่อนกว่าปกติ ก็ถือว่าเป็นเรื่องที่ “แฟร์” หรือ “เป็นธรรม” อยู่ — โดยเฉพาะถ้า “ภาระในการพิสูจน์” ให้สาธาณะเห็นความโปร่งใสในการทำงาน นั้นถือเป็นหน้าที่อยู่แล้วของสถาบันทางสังคมนั้นๆ
(ลองคิดถึง “การแจ้งความ” กับตำรวจดู จริงอยู่ว่า ถ้ามาตรฐานในการรับแจ้งต่ำไป ก็จะเป็นเกิด “การใส่ความ” ได้ง่ายๆ แต่ถ้าสูงมาก ต้องมีหลักฐานพยานครบถ้วน โอกาสที่คนอำนาจน้อย ทรัพยากรน้อย จะแจ้งความได้ ก็จะลดลงไปมาก โอกาสตรวจสอบอำนาจใหญ่ก็จะลดลง)
—
นอกจากนี้ ถ้ามันเป็นข่าวเกี่ยวกับการทำงาน มันก็สามารถใช้ปรับปรุงการปฏิบัติงานต่างๆ ให้มีเหตุมีผลรัดกุม ลดความเคลือบแคลงสงสัย เป็นมิตรเป็นธรรม พวกนี้ก็เป็นประโยชน์กับสาธารณะด้วย “ข่าวลือ” ต่อสถาบันทางสังคมและบุคคลสาธารณะ จึงเป็นทั้งเสียงสะท้อนเพื่อปรับปรุงการทำงานและเป็นกลไกความรับผิด (accountability) หรือการที่ต้องสามารถรายงานและอธิบายการใช้อำนาจของตัวเองให้ได้
—
แน่นอนว่ามันมีการกุข่าวเพื่อใช้โจมตีกัน ซึ่งคนที่อยู่ในอำนาจมากก็ใช้วิธีนี้มาทำลายคนอำนาจน้อยด้วย เช่น การดิสเครดิตอย่างเป็นระบบ (ภาษาปฏิบัติการข่าวสารหรือไอโอทหารคือ “ด้อยค่า” lol) หรือเล่าเรื่องในรูปแบบหรือลำดับที่ชวนให้สาธารณะเข้าใจผิดเกี่ยวกับนักกิจกรรม (เคยเห็นกับตัวจากสไลด์นักวิชาการสถิติประยุกต์ท่านหนึ่งที่ไปบรรยายที่สถาบันพระปกเกล้า) ดังนั้นมันก็จำเป็นต้องมีการจัดการกับข่าวลือ ไม่ใช่ปล่อยไปหมด เพราะในสถานการณ์ที่ไม่มีการจัดการอะไรเลย คนที่มีอำนาจน้อย มีทรัพยากรน้อย จะตกที่นั่งลำบากกว่า
เพราะมีแนวโน้มอย่างมากว่า “ข่าวลือ” ไม่ว่าจะแง่ดีหรือแง่บวก ที่สนับสนุนอำนาจนำ ทำลายผู้ท้าทายอำนาจ จะแพร่กระจายได้สะดวกกว่า (แต่ไม่รับประกันว่าจะไกลกว่าและนานกว่านะ เพียงแต่ตอนเริ่มแรกนั้นทำได้สะดวกกว่า) เพราะมีปัจจัยหลายอย่างส่งเสริม เช่น
– คนพูดสามารถเปิดหน้าปล่อยข่าวได้ ใช้พื้นที่สื่อกระแสหลักหรือพื้นที่สาธารณะอื่นๆ ก็ได้ เนื่องจากอยู่ในฐานะที่ได้เปรียบกว่าในทางอำนาจ มีความเสี่ยงต่ำกว่าที่จะถูกดำเนินคดี
– กลไกปิดกั้นหรือ “ตรวจสอบ” ข่าวสารของรัฐ (อย่างศูนย์ข่าวปลอมกระทรวงดิจิทัล) ก็อาจจะเลือกไม่ทำงานกับข่าวลือที่เป็นประโยชน์กับรัฐ
– ผู้เผยแพร่ ซึ่งอยู่ฝั่งอำนาจนำ มีแนวโน้มที่จะมีทรัพยากรจำนวนมาก (ทั้งในมิติทุนทางเศรษฐกิจและทุนทางสังคม) ในการเผยแพร่เนื้อหา ทั้งการเผยแพร่ทางคลื่นความถี่สาธารณะ (ที่เป็นสมบัติของประชาชน) การขอทุนจากกองทุนที่ตกอยู่ภายใต้อิทธิพลของอำนาจนำ (ทั้งของรัฐและเอกชน) มาทำเนื้อหา ทำหนัง ทำเวิร์กช็อป ผลิตซ้ำข่าวลือ
ข่าวลือจึงสามารถเป็นกลไกที่ผู้มีอำนาจน้อยใช้ส่งเสียงและตรวจสอบเพื่อให้อำนาจใหญ่เปลี่ยนได้ แต่ในขณะเดียวกัน ก็เป็นสิ่งที่ผู้อยู่ในอำนาจนำ มีอำนาจมาก ใช้ได้อย่างสะดวกมือ(กว่า) เพื่อรักษาอำนาจของตัวเอง
การพิจารณา “ข่าวลือ” และการรับมือกับข่าวลือ จึงไม่ควรละเลยมิติของอำนาจ
—
เมื่อคืนดู Spotlight อีกรอบ สนุกดี ทีมข่าวพยายามจะขุดกรณีล่วงละเมิดทางเพศของเด็กโดยพระคาทอลิก แต่ไปทางไหนก็เจอตอ เพราะสถาบันทางสังคมต่างๆ ในเมืองมี “ความสัมพันธ์อันดี” ต่อกัน การไปท้าทายโบสถ์ ก็เหมือนท้าทายความเป็นอยู่ของสถาบันอื่นๆ ไปด้วย การพยายามจะใช้กลไกคานอำนาจอื่นๆ ของสังคมมาช่วย จึงทำได้ยากมาก ตำรวจเองก็ไม่อยากยุ่ง บก.ใหญ่สุดบอกว่า ถ้าไปเจาะรายงานเป็นกรณีๆ ตัวระบบของโบสถ์ก็จะทำให้เรื่องเงียบไปเองได้เหมือนที่ผ่านๆ มา ต้องทำข่าวที่ตีไปที่ตัวระบบให้ได้ ให้เห็นว่าโบสถ์รู้เห็นเรื่องนี้และได้มีการทำงานอย่างเป็นระบบเพื่อปกป้องพระที่ทำผิด ประเด็นที่สถาบันทางสังคม “มีความสัมพันธ์อันดีต่อกัน” ก็ดีมาก มีบทสนทนานึงในหนังที่บอกว่า สื่อต้องเป็นอิสระจากสถาบันเหล่านี้ จึงจะทำงานได้ หนัง 2 ชั่วโมง สร้างจากเรื่องจริง — ใน Netflix มี
—
(เผยแพร่ครั้งแรกในเฟซบุ๊ก 25 ก.ค. 2563)
The post ข่าวลือ first appeared on bact' is a name .
โดย bact ณ 25 July 2020 10:23 +0700
14 July 2020
การเคลื่อนที่ของทุน การเคลื่อนที่ของสินค้า การเคลื่อนที่ของบริการ การเคลื่อนที่ของมนุษย์ (คนทำงาน/ผู้บริโภค)
เศรษฐกิจส่วนที่ใหญ่มากของไทย คือการท่องเที่ยว ซึ่งเป็น (3) ที่อยู่ติดกับสถานที่ (ที่ไม่ติดกับสถานที่ ก็เช่นบริการออนไลน์) และพึ่งพา (4) (นักท่องเที่ยว)
คือทั้งโลกมันก็สะดุดแหละ เมื่อการเคลื่อนย้ายต่างๆ มันทำได้ไม่สะดวกเหมือนก่อน แต่โรคภัยไข้เจ็บมันกระทบ (4) เยอะสุด เพราะมันติดมนุษย์ รวมถึง (3) ในส่วนที่ใช้แรงงานเข้มข้น
(ทำไปทำมา มันก็เกี่ยวกันหมดแหละ เช่น (2) กับ (4) ก็เกี่ยวกัน อย่างที่พบการระบาดของโควิดระลอก “ใหม่” [จริงๆ คือตกสำรวจ] ในคนทำงานอพยพในอุตสาหกรรมเนื้อสัตว์ซึ่งมีสภาพการทำงานต่ำกว่ามาตรฐานในเยอรมนี หรือในกลุ่มคนทำงานซึ่งอยู่อาศัยอย่างหนาแน่นในสิงคโปร์ หรือความสัมพันธ์ของการเดินทางของมนุษย์ (4) กับการส่งสินค้า (3) มิตรสหายที่ขายของออนไลน์ให้กลุ่มลูกค้าต่างชาติ บ่นว่าตอนนี้ค่าส่งแพงขึ้น เพราะปกติของจะถูกฝากส่งไปกับเที่ยวบินที่มนุษย์นั่ง พอมนุษย์เดินทางน้อยลง ค่าส่งสินค้าก็แพงขึ้นไปด้วย)
ดังนั้นในแง่ “ความมั่นคง” (ที่ไม่ใช่การควักปืนขึ้นมาขู่ หรือทำ IO มองประชาชนเป็นศัตรูอยู่ทุกวัน) เรื่องหนึ่งก็คือ จะทำยังไงให้ความมั่งคั่งของประชาชนในประเทศมันมาจากหลายทาง
(สังเกตเลยว่า ธุรกิจที่เฟื่องฟูตอนนี้คือธุรกิจที่ทำให้เกิด (1) (2) (3) ได้ โดยพึ่งพา (4) น้อยที่สุด เช่น จ่ายเงินออนไลน์ ส่งสินค้า ส่งอาหาร เรียนออนไลน์ ประชุมออนไลน์ – คือยังไงกิจกรรมทางเศรษฐกิจ สังคม วัฒนธรรม ของมนุษย์ แม้จะมีการปรับเปลี่ยน มันก็ยังดำเนินไป ใครหาสิ่งที่ทำให้คนใช้ชีวิตต่อได้ ก็มีคนใช้)
แต่ก็ไม่รู้จะหวังได้มากน้อยแค่ไหน เพราะเอาจริงๆ ความมั่งคั่งจำนวนมากของตระกูลต่างๆ ในไทยนี่ก็มาจากการจำกัดการเคลื่อนที่โดยเสรีของสิ่งต่างๆ สร้างกำแพงผูกขาดนั่นนี่ ให้ตัวเองค้าขายได้คนเดียว ไม่ต้องดูที่ไหนไกล ดูกฎหมายเหล้าเบียร์ หรือแท็กซี่สนามบิน ของที่หลายคนมีประสบการณ์ตรง
(พูดถึงสนามบิน ก็นึกถึงอู่ตะเภาที่เป็นข่าวตอนนี้ การพัฒนาพื้นที่อู่ตะเภา ก็พยายามจะให้กองทัพมีเอี่ยว การแยกสนามบินเชิงพาณิชย์ในจังหวัดต่างๆ อออกจากพื้นที่ทหารก็ไม่คืบหน้าไปไหน ดูสนามบินเชียงใหม่เป็นต้น ถนนที่มันควรจะตัดจากถนนวงแหวนทะลุนิมมานไปหาสนามบินได้ง่ายๆ พูดกันมาเกินสิบปี ไม่เกิด ทำได้แค่ตัดไปสุดที่หน้ากองบิน)
ในระดับประเทศที่เชื่อมกับโลก เราอยู่ในระบบการค้าระหว่างประเทศ โลกาภิวัฒน์นั่นนี่ แต่ภายในประเทศนี่ยังเป็นระบบอาณานิคม เจ้าที่ดิน-ขุนศึก สัมปทาน
The post ชีวิตที่เคลื่อนย้ายและติดขัด first appeared on bact' is a name .
โดย bact ณ 14 July 2020 13:12 +0700
12 July 2020
Thre is a bug in sudo before 1.8.28. The bug, basically, involve UID validation where user ID -1 or 4294967295 could allow a user with sudo privilege to run command as root, even the Runas specification explicitly disallow root access. For example, specify Runas in /etc/sudoers like this: test ALL=(ALL,!root) /usr/bin/whoami You can do this: … Continue reading CVE-2019-14287 – sudo →
โดย kitty ณ 12 July 2020 14:39 +0700
Well, ftp.th.debian.org was NXDOMAIN for 2+ years. Not anymore: Yes, I’m running ftp.th.debian.org. :)
โดย kitty ณ 12 July 2020 14:35 +0700
12 June 2020
อ.ย่า อุบลรัตน์ ศิริยุวศักดิ์ เคยพูด*ว่า พื้นที่สื่อสารทุกชนิดไม่ใช่พื้นที่เฉพาะสำหรับข้อเท็จจริง (ทั้งที่จริงและไม่จริง) แต่เป็นพื้นที่ของความคิดเห็นด้วย (ไม่สามารถระบุได้ว่าจริงหรือไม่จริง มีแค่เห็นด้วยกับไม่เห็นด้วย)
ดังนั้นถ้าจะให้พื้นที่ไหนเป็นพื้นที่สำหรับข้อเท็จจริงเท่านั้น เรากำลังทิ้งอีกครึ่งนึงไป และถ้าจะให้มีเฉพาะข้อเท็จจริงที่เป็นจริงเท่านั้น เราจะเหลือพื้นที่แค่ 1/4
คำถามก็คือ แล้วทำไมต้องไปให้พื้นที่ 1/4 สำหรับข้อเท็จจริงที่เป็นเท็จด้วย ให้ใครสักคนมากรองมันทิ้งไปเลยไม่ได้หรือไง คนที่เหลือจะได้สบาย ไม่ต้องกรองเอง
ก็เพราะของที่เป็นเท็จวันนี้ บางอย่างมันอาจจะจริงพรุ่งนี้ก็ได้ เมื่อมีวิธีการพิจารณาโลกแบบใหม่ หรือการที่จะเห็นว่าอะไรจริง มันจำเป็นต้องมีคู่เทียบที่เป็นเท็จมาทำให้เรามองชัดขึ้น หรือในการเรียนรู้เพื่อจะแยกแยะจริง-เท็จ (โดยไม่ต้องยืมจมูกคนอื่นหายใจ) มันจำเป็นมีตัวอย่างให้เราเห็นว่า อ๋อ เท็จมันเป็นแบบนี้ เพื่อว่าในวันข้างหน้า เราจะรู้ได้เองว่า ของทำนองนี้มันน่าจะเท็จ
สำหรับพื้นที่ความคิดเห็น ระบบการกรอง (ด้วยอัลกอริทึมของแพลตฟอร์มหรือด้วยการเลือกติดตามของคนเอง) ก็อาจนำไปสู้การที่พื้นที่ความคิดเห็น หดเหลือครึ่งเดียวได้ (เหลือเฉพาะความคิดเห็นที่เราชอบหรือที่เราเห็นด้วย)
ปัญหาต่อเสรีภาพการสื่อสารคือ มีคนที่อยากจะได้เฉพาะข้อเท็จจริงที่เป็นจริง (1/4) และความคิดเห็นที่เราเห็นด้วย (1/4) ซึ่งโดยตัวมันเองไม่ได้ผิดอะไร เพราะมันก็เป็นสภาวะที่ “ปลอดภัย” ที่อยู่แล้ว “สบายใจ” – แต่ปัญหาคือ กระบวนการที่จะไปทำให้เกิดสภาวะนั้น มันไปทำลายความปลอดภัยระยะยาว ของทุกๆ คน
เหมือนการใช้ยาปฏิชีวนะหรือยาฆ่าแมลงแรงๆ ฆ่าเชื้อทุกอย่าง เราจะได้สภาวะสะอาดปลอดภัยขึ้นมา แต่สภาวะนั้นจะอยู่กับเราเพียงชั่วคราว หลังเชื้อต่างๆ เริ่มดื้อยา และยาก็ไปทำลายระบบนิเวศที่จะมาจัดการเชื้อหรือศัตรูทางธรรมชาติกันเอง — และตัวเราเองก็ไม่ได้พัฒนาภูมิต้านทานขึ้นมาเองเสียที — ความพยายามจะมีพื้นที่ “ปลอดภัย” ในระยะสั้นและชั่วคราว ทำให้เราเสียความปลอดภัยในระยะยาวและยั่งยืนไป
เป็นความปลอดภัยแบบหลอกตัวเอง เป็นความปลอดภัยแบบเห็นแก่เฉพาะคนรุ่นเรา ไม่เผื่อความปลอดภัยเอาไว้ให้คนรุ่นต่อๆ ไป
เราไม่ได้ต้องการเฉพาะความจริง (truth) หรือข้อเท็จจริงที่เป็นจริง (true fact) เราต้องการข้อเท็จจริงอื่นๆ รวมถึงความคิดเห็นด้วย ทั้งที่เราชอบและไม่ชอบ ความคิดเห็นนั้นไม่เพียงมีคุณค่าในตัวเอง แต่ยังเป็นเครื่องมือพาเราไปหาความจริงและข้อเท็จจริงเพิ่มเติมในอนาคต (หรือกลับไปทบทวนข้อเท็จจริงที่เราเคยเชื่อว่าจริงในอดีต) ได้อีก
— *จำได้ว่าในที่ประชุมคปส.ที่ตึกมอส.เมื่อนานมาแล้ว หลังรัฐประหาร 2549 สักปีสองปี ตอนนั้นตื่นเต้นมาก – เหมือนตอนนั้นมันจะเป็นช่วงที่คปส.ขยายมาทำประเด็นสื่อใหม่ ซึ่งก็หลังจากวิทยุชุมชน ก็มีอินเทอร์เน็ต และภาพยนตร์ สนช.ชุดนั้นเสนอกฎหมายจัดระเบียบสื่อใหม่หลายฉบับ รวมทั้ง พ.ร.บ.คอมพิวเตอร์ 2550 และพ.ร.บ.ภาพยนตร์และวีดิทัศน์ 2551 – ผมเริ่มเข้ามาทำงานประเด็นพวกนี้บ้างก็น่าจะจังหวะนั้น
โพสต์ครั้งแรกในเฟซบุ๊ก
The post Internet of Opinions first appeared on bact' is a name .
โดย bact ณ 12 June 2020 07:50 +0700
26 May 2020
ความคิดต่อจากบทความชิ้นนี้ ความทรงจำของ ‘ปืนลั่นแสกหน้า’ : ว่าด้วยคนกรุงเทพฯ เสื้อแดง และปี 2553
“เสื้อแดง” ตอนนี้อาจไม่ใช่ “ขบวนการทางการเมือง” (political movement) แล้ว มันไม่มีขบวนอะไรที่เรามองเห็นชัดในตอนนี้ แต่มันยังเป็น “ชนชั้นทางการเมือง” (political class – โดยเฉพาะเมื่อถูกคนอื่นมองมา ในเซนส์ “อี๋ ไอ้พวกเสื้อแดง”) หรือ “กลุ่มความสำนึกรู้ทางการเมือง” (political consciousness) แบบนึงอยู่ ในลักษณะที่คนยังระบุได้อยู่ว่า “ฉันเป็นคนเสื้อแดง”
อย่างไรก็ตามมันอาจมีลักษณะผูกกับเหตุการณ์ในเวลาอยู่เหมือนกัน ถ้าเรามองว่ามันต้องอาศัยประสบการณ์ร่วม เพื่อจะกลายสภาพตัวเองมาเป็นเสื้อแดง ในแง่นี้ ความเป็นเสื้อแดงจึงไม่ได้อยู่เฉพาะตรงอุดมการณ์ทางการเมือง แต่มันมีลักษณะของการมีความทรงจำร่วมกัน และไม่ใช่ความทรงจำเกี่ยวกับคนอื่นในอดีต แต่เป็นความทรงจำที่มีร่วมกันก็เพราะได้สร้างร่วมกันในขณะเวลานั้น ซึ่งการโฆษณาชวนเชื่อใดๆ ไม่สามารถลบหรือเปลี่ยนความทรงจำนี้ได้ เพราะนี่เป็นความทรงจำที่เกี่ยวกับชีวิตของตัวเอง
“คนเสื้อแดง” จึงมีลักษณะเป็น “รุ่นทางการเมือง” (political generation?) ด้วย ในลักษณะเดียวกับ “คนเดือนตุลา(16+19)” “คนรุ่นพฤษภา(35)” เพียงแต่ความขัดแย้งยาวนาน รวมถึงการชุมนุมและการล้อมปราบต่างๆ ประกอบกับการที่การเมืองระดับรากหญ้ามันลงหลักแพร่หลาย มันเลยทำให้คนร่วมรุ่นนี้ มีจำนวนมากกว่ามาก
ทำนองเดียวกับที่คนรุ่นถัดมาอาจร้องและเต้นเพลง “เกรงใจ” ของแรพเตอร์ได้ แต่ไม่รู้หรอกว่า การใช้ชีวิตอยู่ในสมัยที่เพลงนี้เปิดทุกที่ทุกผับมันเป็นยังไง แต่โอเค เราดีใจที่ผับยังเปิดเพลงนี้อยู่ และคนยังเต้นกับมันอยู่ แม้จะเป็นคนที่ไม่ได้เกิดในยุคสมัยนั้น แต่เราก็ร่วมความทรงจำนี้ได้ คือไม่ได้กีดกัน ไม่ได้แนวว่า อี๋ พวกเด็กอยากเรโทร (ทำนองที่ไปแซะ “ติ่งส้ม”) เพียงแต่ เฮ้ย มันมีความต่างอยู่จริงๆ ในแง่การเคยไปอยู่ตรงนั้น แต่เราไม่ได้หวงนะ ถ้าชอบก็มาเต้นด้วยกัน เต้นหลายคนก็สนุกหลายคน และนับจากตรงนี้ไป เราก็เป็นพวกเดียวกันได้ เต้นด้วยกันได้
การนับว่า “คนเสื้อแดง” คือรุ่นทางการเมืองแบบหนึ่ง น่าจะทำให้คำอธิบายมันง่ายขึ้นด้วย เพราะในแง่อุดมการณ์ทางการเมือง คนเสื้อแดงเองก็มีเฉดต่างๆ กันไป
การอธิบายแบบนี้ไม่ได้ต้องการลดความซับซ้อนของความต้องการและแรงขับดันของแต่ละคนที่เคยอยู่หรือยังอยู่ในขบวน(ที่ใดที่หนึ่ง) แต่น่าจะช่วยรวมคนเสื้อแดงเข้าด้วยกันได้สะดวกขึ้น และอาจต้อนรับคนเข้ามาร่วมได้มากขึ้น ถ้าเรามองว่าภาวะที่เราอยู่กันตอนนี้ มันยังไม่จบ เป็นภาวะยาวนาน สามารถกินเวลาได้เป็นชั่วรุ่นคน
The post "เสื้อแดง" ในฐานะ "รุ่นทางการเมือง" first appeared on bact' is a name .
โดย bact ณ 26 May 2020 12:04 +0700
20 May 2020
การสอนออนไลน์ ควรมีการบันทึกการสอนไว้ เพื่ออำนวยความสะดวกแก่ผู้เรียนที่มีทรัพยากรเพื่อการเข้าถึงจำกัด และในการบันทึกก็มีข้อควรพิจารณาต่างๆ เพื่อสร้างพื้นที่ปลอดภัยในการเรียนรู้สำหรับทั้งตัวผู้สอนและผู้เรียน
—
การสอนออนไลน์แบบสด มีข้อดีคือการโต้ตอบระหว่างผู้เรียนและผู้สอนโดยทันที หากผู้สอนมีทรัพยากรที่สามารถทำได้ก็เป็นเรื่องที่ดี อย่างไรก็ตาม ไม่ควรมีเฉพาะแบบสด ควรมีการบันทึกไว้ด้วย ควบคู่กัน เพื่อให้ผู้เข้าเรียนท่ี่ไม่สามารถเข้าเรียนสดได้ โดยเฉพาะในสถานการณ์ปัจจุบัน สามารถเลือกเรียนได้ใน “เวลาที่สะดวก”
เวลาที่สะดวกสำหรับการเรียนที่ขึ้นกับทรัพยากรของผู้เรียน
“เวลาที่สะดวก” ในแง่การเรียนออนไลน์นี้ จำเป็นต้องคำนึงถึงปัจจัยดังต่อไปนี้เป็นอย่างน้อย
1) การเข้าถึงอุปกรณ์ที่เหมาะสม (โทรศัพท์หรือคอมพิวเตอร์ที่มีความสามารถเพียงพอจะเปิดสื่อการสอนได้อย่างครบถ้วน)
2) ความเร็วและความเสถียรของอินเทอร์เน็ตที่เหมาะสม
3) พื้นที่ที่เหมาะสม เช่น ที่นั่ง ความสงบ (อาจเป็นในที่พักอาศัยหรือที่อื่น เช่น บ้านญาติ ร้านเน็ต)
“เวลาที่สะดวก” คือช่วงเวลาที่ผู้เรียนสามารถจัดหา (1), (2), และ (3) ได้พร้อมกัน
กรณีบ้านเดียวกันมีอุปกรณ์ตาม (1) เพียงเครื่องเดียว แต่มีสมาชิกในบ้านหลายคนที่ต้องทำงานหรือเรียน การเรียนแบบสด (real time) จะสร้างปัญหาการแย่งกันใช้ทรัพยากรที่มีจำกัด
กรณีมีอุปกรณ์ตาม (1) เพียงพอกับสมาชิกที่ต้องใช้ทุคนในเวลาเดียวกัน แต่บ้านมีพื้นที่เล็ก การต้องเปิดสื่อการสอนพร้อมกันในพื้นที่จำกัดตาม อาจทำให้เกิดการรบกวนสมาธิกันและกันระหว่างสมาชิกในบ้าน กล่าวคือปัจจัยที่ (3) ไม่เกิด หรือการแบ่งความเร็วอินเทอร์เน็ตกันเนื่องจากใช้งานพร้อมกัน ก็ทำให้ปัจจัยที่ (2) ด้อยลงไป
กรณีไม่มีอุปกรณ์ตาม (1) หรืออินเทอร์เน็ตตาม (2) หรือพื้นที่ตาม (3) ที่บ้านอย่างใดอย่างหนึ่ง และผู้เรียนจำเป็นต้องไปใช้อุปกรณ์ เน็ต หรือสถานที่นอกบ้าน เช่น บ้านญาติ หรือร้านเน็ต ก็จะมีเงื่อนไขข้อจำกัดของร้านหรือของบ้านนั้นๆ มาเกี่ยวข้องด้วย เช่น น้ายินดีให้ยืมคอม เพียงแต่ช่วง 9 โมงเช้าถึง 5 โมงเย็นน้าก็ต้องทำงานด้วยคอมเครื่องเดียวกัน ถ้าหลัง 5 โมงเย็นนี่ใช้ได้ไม่มีปัญหา หรือการไปใช้เน็ตที่ร้าน ก็ไม่รับประกันว่า ตอนไปถึงร้านจะมีที่นั่งว่างทันที
การมีการสอนสดเพียงอย่างเดียวจะทำให้การจัดการทรัพยากรที่มีจำกัดทำได้ลำบากขึ้น ทำให้เป็นไปได้ว่าครอบครัวของผู้เรียนอาจจำเป็นต้องดึงเงินที่ตั้งใจจะใช้เพื่อเรื่องอื่น มาซื้ออุปกรณ์ตาม (1) หรือเพิ่มคุณภาพเน็ตตาม (2) ส่วนเรื่องพื้นที่(3) นี่ดูจะเป็นที่จัดการลำบากอยู่
หากมีการบันทึกการสอนเอาไว้ด้วย ก็จะทำให้ผู้เรียนและสมาชิกคนอื่นๆ ในบ้าน สามารถจัดการทรัพยากรตาม (1), (2), และ (3) ได้ดีขึ้น มีการแบ่งใช้ทรัพยากรกันระหว่างสมาชิกในครอบครัวได้เหมาะสมขึ้นหรือเพิ่มทางเลือกให้สามารถหยิบยืมหรือใช้ทรัพยากรจากภายนอกครอบครัวเป็นการชั่วคราวได้สะดวกขึ้น
การบันทึกการสอนเอาไว้ ยังมีประโยชน์กับผู้เรียนสดอีกด้วย เนื่องจากเป็นไปได้ว่าคุณภาพสัญญาณอินเทอร์เน็ตในบางช่วงอาจมีปัญหา ทำให้พลาดจุดสำคัญบางช่วงไป ถ้ามีการบันทึกไว้ ก็จะสามารถย้อนกลับมาดูได้ในภายหลัง
ทั้งนี้ “เวลาที่สะดวก” ที่ผู้เรียนสามารถจัดหา (1), (2), และ (3) มาได้พร้อมกันนี้ ไม่จำเป็นจะต้องเป็นเวลาที่ต่อเนื่องกัน เช่น สำหรับคาบเรียน 2 ชั่วโมง ในสัปดาห์หนึ่ง ผู้เรียนรายหนึ่งอาจมีเวลาที่สะดวกตอน 11:30-12:30 หนึ่งชั่วโมงในวันจันทร์ และ 20:00-21:00 อีกหนึ่งชั่วโมงในวันอังคาร และเวลานี้อาจเปลี่ยนไปในอีกสัปดาห์
การบันทึกกับพื้นที่ปลอดภัยในการเรียนการสอน
การบันทึกนี้ ไม่จำเป็นต้องให้สาธารณะหรือบุคคลภายนอกวิชาเรียนในชั้นเรียนดังกล่าวเข้าถึง เพื่อสร้างพื้นที่ปลอดภัยในการเรียนรู้ให้กับผู้เรียน ที่ไม่สะดวกสอบถามแลกเปลี่ยนหากมีการบันทึกเสียงหรือภาพหรือสถานะบทจอภาพใดๆ ที่จะทำให้ระบุตัวตนได้
ทุกการเรียนการสอนที่จะมีการบันทึก และมีผู้เรียนเข้าร่วม ผู้สอนจะต้องแจ้งให้กับผู้เรียนทราบก่อนทุกครั้ง ว่าจะมีการบันทึก การบันทึกเริ่มเมื่อใด สิ้นสุดลงเมื่อใด และจะมีใครเข้าถึงการบันทึกได้บ้าง
เนื่องจากผู้เรียนอาจไม่สะดวกที่จะสอบถามแลกเปลี่ยนบางประเด็น ซึ่งอาจเป็นประเด็นอ่อนไหว ในระหว่างการบันทึก ผู้สอนควรแบ่งเวลาบางช่วงในระหว่างการสอนที่จะไม่มีการบันทึกใดๆ ให้ผู้เรียนซักถามแลกเปลี่ยนได้ โดยผู้เรียนจะต้องสามารถรับรู้และสังเกตได้อย่างชัดเจนว่า ขณะเวลาดังกล่าวมีการบันทึกอยู่หรือไม่
หากการบันทึกไม่ได้ทำโดยผู้สอนเอง แต่มีเจ้าหน้าที่หรือบุคคลที่สามอื่นทำการบันทึกให้ ในการบันทึก ผู้สอนจะต้องรู้อยู่เสมอด้วยว่ามีการบันทึกอยู่
จำนวนหรือกลุ่มประเภทของผู้เข้าถึงสื่อการสอนที่ได้มีการบันทึกไว้ จะต้องไม่มีการเปลี่ยนแปลงไปจากที่ได้แจ้งผู้สอนและผู้เรียนเอาไว้ในตอนเริ่มการบันทึก
การเผยแพร่สื่อบันทึกการเรียนการสอนสู่สาธารณะ
หากผู้เรียนและผู้สอนในชั้นเรียนได้ตกลงร่วมกันล่วงหน้า ว่าจะเปิดเผยการเรียนการสอนเผยแพร่ต่อสาธารณะ ก็สามารถทำได้ โดยอาจเลือกตัดไม่เผยแพร่บางช่วงที่เป็นการซักถามแลกเปลี่ยนประเด็นที่ต้องการให้มีเฉพาะผู้ลงเรียนเท่านั้นที่จะดูได้ ทั้งนี้ระหว่างการเรียนการสอน ให้ระมัดระวังการขานชื่อหรือส่งสัญญาณใดในลักษณะที่จะระบุตัวผู้เรียนได้ เว้นแต่กรณีผู้เรียนตั้งใจแสดงตนด้วยตัวเอง
สื่อการสอนดังกล่าว ถือว่าอยู่ในพื้นที่ของห้องเรียน เสรีภาพทางวิชาการย่อมได้รับการปกป้องคุ้มครอง ชื่อบุคคล ชื่อหน่วยงาน กรณีศึกษา และสิ่งอื่นใด ที่ถูกหยิบยกขึ้นมาอภิปรายเป็นส่วนหนึ่งของการสอน ทั้งผู้เรียนและผู้สอนควรมีอิสระเต็มที่ในการอภิปรายเพื่อการศึกษาโดยไม่ต้องกังวลว่าจะถูกฟ้องร้องดำเนินคดีตามกฎหมาย
การคำนึงถึงสมาธิในพื้นที่ทางกายภาพที่ไม่ใช่ห้องเรียนโดยเฉพาะ
ทั้งนี้ การออกแบบกระบวนการการเรียนการสอนและสื่อการสอน ที่เป็นออนไลน์ ทั้งแบบสด และแบบบันทึกไว้ล่วงหน้า ยังควรคำนึงถึงระยะเวลาที่ผู้เรียนจะสามารถมีสมาธิและเรียนได้อย่างมีประสิทธิภาพได้ต่อเนื่องในสภาพแวดล้อมที่ไม่ใช่ห้องเรียน ซึ่งอาจทำได้ต่อเนื่องสั้นกว่า จึงควรพิจารณาแบ่งช่วงการสอนเป็นช่วงที่ไม่ยาวจนเกินไป และกรณีเป็นการสอนสดก็ควรจัดให้มีเวลาพักตามความเหมาะสม เพื่อให้ผู้เรียนสามารถไปทำธุระส่วนตัว เช่น เข้าห้องน้ำ ได้ เช่นสอน 50 นาที พัก 10 นาที และสอนต่ออีก 50 นาที
การแบ่งเนื้อหาการสอนเป็นช่วงสั้นๆ และมีการเขียนกำกับไว้อย่างชัดเจนในสื่อที่ทำการบันทึก ยังมีประโยชน์เมื่อต้องการดูย้อนหลัง ทำให้ค้นหาเนื้อหาช่วงที่ต้องการได้สะดวกขึ้น
ฝากทางสถานศึกษาต่างๆ พิจารณาสำหรับภาคการศึกษานี้หรือที่จะถึงนี้ครับ
The post อนุญาตให้เรียนไม่สดเพื่อเพิ่มโอกาสเข้าถึง + การสร้างพื้นที่ปลอดภัยระหว่างบันทึกการสอน first appeared on bact' is a name .
โดย bact ณ 20 May 2020 10:43 +0700
16 May 2020
การทำงานทั้งที่ตั้งใจและที่ผิดพลาดของผู้มีอำนาจ อาจนำมาสู่ความเสียหายของคนที่ไม่ได้ทำอะไรผิด ซึ่งถ้าสังคมยังพอจะมีความเป็นธรรมอยู่บ้าง ก็ควรมีการเยียวยาตามสมควรในระยะเวลาที่ไม่ช้าจนเกินไป ทั้งนี้ก็ควรคิดด้วยว่ามาตรการเยียวยานั้น ได้สร้างความเดือดร้อนให้กับคนกลุ่มใหม่หรือไม่
เช่น จะเลื่อนการบังคับใช้พ.ร.บ.คุ้มครองข้อมูลส่วนบุคคลเพื่อช่วยหน่วยงานที่ยังเตรียมตัวไม่พร้อม ก็ต้องพิจารณาด้วย ว่าหน่วยงานที่พร้อมแล้วและได้ดำเนินแผนงานต่างๆ ในอนาคตตามความเข้าใจว่าจะกฎหมายฉบับดังกล่าวบังคับใช้ในวันที่กำหนด จะได้รับผลกระทบอะไรหรือไม่ หากกฎหมายถูกเลื่อนออกไป (เช่นได้ทำสัญญาหรือทำแผนธุรกิจใดๆ ไว้ ต้องปรับแก้แผน หรือการไม่มีกฎหมายคุ้มครองข้อมูลกลางนี้ จะทำให้ต้นทุนในการแลกเปลี่ยนข้อมูลกับต่างประเทศของเขาเพิ่มขึ้น เนื่องจากต้องไปทำสัญญาลักษณะทวิภาคีต่างหาก ในระยะ 1 ปีตามที่จะเลื่อน จากเดิมที่เขาเคยคิดว่าไม่ต้องทำ หากกฎหมายบังคับใช้ตามกำหนด) – ไม่เช่นนั้นก็จะกลายเป็นว่าเราลงโทษคนที่แข็งขันเตรียมความพร้อมเพื่อทำตามกฎหมาย
—
เรื่องประกาศ #TCAS เพื่อรับเข้าเรียนที่คณะวารสารศาสตร์ มหาวิทยาลัยธรรมศาสตร์ ที่ผิดพลาด นี่ก็มีประเด็นเยียวยาอยู่เหมือนกัน และมีแง่มุมของการเยียวยาคนกลุ่มหนึ่ง (ซึ่งสมควรได้รับการเยียวยา) ที่อาจสร้างความเดือดร้อนใหม่ให้กับคนอีกกลุ่ม (ทั้งที่เขาไม่ได้ทำอะไรผิด)
ดูรายละเอียดลำดับเวลาของเรื่องนี้ที่ https://www.bbc.com/thai/thailand-52688183
1. จริงๆ แนวทางของผู้บริหารมหาวิทยาลัย (ชาลี เจริญลาภนพรัตน์ รองอธิการบดีฝ่ายวิชาการ) นั้นช่วยเยียวยานักศึกษากลุ่มนี้ได้ แต่ถ้าไม่มีมาตรการเพิ่มเติมก็จะเป็นแนวทางที่สร้างผลกระทบกับนักศึกษากลุ่มอื่นไปด้วย
2. ถ้าไม่รับนักศึกษาเข้าเรียนตามประกาศที่ผิดพลาด และ ตัวระบบ TCAS ทั้งหมดไม่ปรับให้พวกเขาได้เข้าเรียนตามลำดับการเลือกอื่นๆ นักศึกษาเหล่านี้ก็จะไม่มีที่เรียน ทั้งที่ไม่ใช่ความผิดของเขา
3. พวกเขาอาจจะคะแนนไม่เข้าเกณฑ์คณะวารสาร มธ. แต่อาจเข้าเกณฑ์คณะอื่น เขาไม่ควรเสียสิทธิ์ตรงนั้น ต้องมีใครสักคนในระบบการรับเข้านี้ที่จะรับผิดชอบหาทางเยียวยา
4. แต่การที่มหาวิทยาลัยจะ “บังคับ” ให้คณะวารสารต้องรับนักศึกษาเข้า ในจำนวนที่เกินความสามารถที่คณะจะจัดการเรียนการสอนได้อย่างมีคุณภาพ ก็เป็นเรื่องสำคัญ คณะวารสารไม่ควรต้องแบกรับ และนักศึกษาทุกคนไม่ควรจะต้องเจอ
5. ประเด็นที่อาจมองว่า “ไม่เป็นธรรม” กับนักศึกษาที่คะแนนถึงเกณฑ์ หากรับนักศึกษาที่คะแนนไม่ถึงเกณฑ์เข้าศึกษา นั้นไม่ควรเป็นประเด็น เพราะสุดท้ายการได้เข้าศึกษาหรือไม่ในแต่ละปีก็อยู่ที่จำนวนรับด้วย ถ้าจำนวนรับมากก็เป็นไปได้ที่คะแนนต่ำสุดที่จะเข้าเกณฑ์จะต่ำลง — และในแง่หนึ่ง การเปิดรับนักศึกษาให้มากขึ้น ก็เป็นการขยายโอกาสทางการศึกษาด้วย (ดูข้อ 6 ประกอบ)
6. ประเด็นที่จะ “ไม่เป็นธรรม” กับนักศึกษาทุกคนจริงๆ ไม่ว่าจะเป็นนักศึกษาใหม่ที่เข้ามาเรียนในรอบรับล่าสุดนี้ด้วยวิธีหรือเหตุผลใด และนักศึกษาที่มีอยู่เดิม ก็คือคุณภาพในการจัดการศึกษาที่จะลดลง หากต้องใช้ทรัพยากรที่มีอย่างจำกัด เพื่อรองรับจำนวนนักศึกษาที่ถูกบังคับให้เพิ่มขึ้น โดยไม่ได้มีแผนรองรับไว้ก่อน ผลกระทบนี้จะเกิดขึ้นกับนักศึกษาทุกรุ่นและทุกคณะที่ใช้ทรัพยากรและอาจารย์กลุ่มเดียวกันด้วย
7. หากมหาวิทยาลัยธรรมศาสตร์ ต้องการให้คณะวารสารศาสตร์ช่วยเหลือเยียวยา ด้วยการรับนักศึกษากลุ่มนี้เข้าเรียนในปีการศึกษานี้ มหาวิทยาลัยก็จะต้องสนับสนุนให้กับทางคณะวารสารมีทรัพยากรเพียงพอที่จะรองรับการเยียวยาดังกล่าวรวมถึงผลกระทบอื่นๆ ที่จะตามมาด้วย การสนับสนุนนี้ เช่น การเพิ่มงบประมาณ เพิ่มจำนวนรับอาจารย์ใหม่ เพิ่มจำนวนจ้างอาจารย์พิเศษภายนอก เพิ่มการสนับสนุนสาธารณูปโภคอื่นๆ ตามสัดส่วน ซึ่งการเพิ่มนี้ จะต้องเป็นการเพิ่มไปตลอดหลักสูตรการศึกษาของนักศึกษาที่จะรับเข้าปีนี้คืออย่างน้อย 4 ปี ไม่ใช่การเพิ่มเฉพาะปีการศึกษานี้เท่านั้น
8. แต่ในทางหนึ่ง การสนับสนุนให้คณะวารสารสามารถรองรับการเยียวยาได้ ก็คือการให้ทุกคณะร่วมรับผิดชอบความผิดพลาดของมหาวิทยาลัยไปกลายๆ เพราะสุดท้ายอาจมีทรัพยากรส่วนกลางจำนวนหนึ่งที่ถูกแบ่งมาเพื่อสนับสนุนการเยียวยานี้ แต่ก็น่าจะดีกว่าให้คณะวารสารแบกรับอยู่ฝ่ายเดียว ทั้งที่การให้รับเข้านั้นเป็นความประสงค์ของมหาวิทยาลัย ในระยะยาว คณะวารสารอาจเปิดวิชาเพิ่มเติมที่นักศึกษาคณะอื่นสามารถลงทะเบียนเรียนได้หรือให้อาจารย์ของคณะร่วมสอนในบางวิชาของคณะอื่นได้ เพื่อเกลี่ยการใช้ทรัพยากรที่พอจะแบ่งปันได้ออกไปให้เป็นธรรมที่สุด
9. มาตรการในการเยียวยาอีกประการก็คือ หากมีการรับเข้าเป็นนักศึกษาของมหาวิทยาลัยแล้ว มหาวิทยาลัยและคณะ จะต้องไม่แบ่งแยกนักศึกษาออกเป็นกลุ่ม “รับเข้าตามปกติ” และ “รับเข้าเป็นการเยียวยา” เพื่อให้ตลอดการศึกษาจนจบการศึกษาของนักศึกษาทุกคน ไม่อยู่ในภาวะเสี่ยงต่อการถูกเลือกปฏิบัติเชิงลบ
—
ทั้งนี้เวลาเราคิดเรื่องการเยียวยา ต้องอย่าลืมว่า การเยียวยาไม่ใช่การทำให้ผู้กระทำพ้นความรับผิด
ผู้กระทำการหรือละทิ้งเพิกเฉยไม่กระทำการ ยังสามารถมีความผิดได้อยู่ และก็ต้องถูกพิจารณาความผิดตามปกติ และการเยียวยาจะต้องไม่สร้างความเสียหายเพิ่มขึ้น ไม่ว่ากับคนกลุ่มเดิมหรือกลุ่มใหม่
(โพสต์ครั้งแรกในเฟซบุ๊ก และทวิตเตอร์ )
The post ว่าด้วยการเยียวยา - กรณี #TCAS วารสาร และอื่นๆ ในยุค #COVID19 นี้ first appeared on bact' is a name .
โดย bact ณ 16 May 2020 15:23 +0700
14 May 2020
กรณีของการพยายามจะเลื่อนบังคับใช้บางหมวดของพ.ร.บ.คุ้มครองข้อมูลส่วนบุคคล ด้วยการออกพ.ร.ฎ.มางดเว้นนี่ก็น่าสนใจ
คือคิดแบบภาวะปกติเลยนะ ไม่ต้องมีภาวะพิเศษหรือรัฐประหาร ตัวพระราชบัญญัตินั้นจะประกาศเป็นกฎหมายใช้บังคับได้ ต้องอาศัยรัฐสภาเห็นชอบ ส่วนพระราชกฤษฎีกา รัฐมนตรีที่มีอำนาจตามกฎหมายนั้นๆ จะเสนอคณะรัฐมนตรีเพื่อพิจารณาได้เลย ตามที่กฎหมายดังกล่าวได้ให้อำนาจนิติบัญญัติบางส่วนเอาไว้กับฝ่ายบริหาร
ทีนี้ มันมีสิ่งน่าสนใจ 2 อย่าง ที่กรณีการพยายามเลื่อนการบังคับใช้ พ.ร.บ.คุ้มครองข้อมูลส่วนบุคคลด้วยพ.ร.ฎ. ซึ่งตามลำดับศักดิ์ของกฎหมายไทย นั้น ตัวพ.ร.ฎ.อยู่ต่ำกว่าพ.ร.บ.
1) การที่เกิดภาวะแบบนี้ได้ เพราะกฎหมายในมาตราที่ให้อำนาจกับรัฐมนตรีในการออกพ.ร.ฎ.นั้น มีผลใช้บังคับแล้ว รัฐมนตรีจึงจะนำอำนาจดังกล่าวมางดเว้นการบังคับใช้กฎหมายหมวดที่ยังไม่ถูกบังคับใช้ (จากเดิมที่เราคิดว่า กฎหมายต้องถูกใช้ก่อน แล้วการงดเว้นค่อยตามมา) การที่กฎหมายฉบับนี้ หรือฉบับใดๆ ก็ตามมีการกำหนดการเริ่มใช้บังคับเป็นหลายขยัก ทำให้เกิดสถานการณ์แบบนี้ได้ ใช่หรือไม่? (ถ้ากฎหมายทั้งฉบับยังไม่ถูกใช้บังคับเลย โดยเฉพาะมาตราที่ให้อำนาจกับรัฐมนตรีในการออกพระราชกฤษฎีกา สถานการณ์แบบนี้จะไม่เกิด หรือไปเกิดด้วยช่องทางอื่น?)
2) ในแง่ศักดิ์และลำดับอำนาจของกฎหมาย สิ่งที่เกิดขึ้นคือ สาระสำคัญของกฎหมายฉบับหนึ่ง (กรณีนี้คือส่วนที่ว่าด้วยการคุ้มครองสิทธิของประชาชน) ที่รัฐสภาพิจารณาประกาศเป็นกฎหมายระดับพระราชบัญญัติแล้ว สามารถถูกรัฐมนตรีโดยความเห็นชอบของคณะรัฐมนตรีออกกฎหมายระดับพระราชกฤษฎีกา ซึ่งมีลำดับต่ำกว่า มาเลื่อนการบังคับใช้ได้ และถ้ายอมให้มีการเขียนกฎหมายลักษณะนี้ โดนไม่มีการท้าทายทางรัฐธรรมนูญ ก็เป็นไปได้ในทางทฤษฎีว่า การเลื่อนหรือการงดเว้นนี้จะสามารถถูกต่ออายุออกไปได้เรื่อยๆ เท่ากับในทางปฏิบัติ จะมีสภาพเหมือนไม่เคยมีการตราพระราชบัญญัติในส่วนสาระสำคัญขึ้นมาเลย
นี่เป็นโจทย์ที่น่าคิด ว่าจะทำอย่างไร ในกรณีนี้และกรณีทั่วไป ให้สามารถจำกัดอำนาจของฝ่ายบริหารไม่ให้สร้างสภาวะมีอำนาจเหนือฝ่ายนิติบัญญัติในลักษณะนี้ให้เกิดขึ้นได้
แต่การคาดหวังกับฝ่ายตุลาการให้ช่วยดุลอำนาจ ในฐานะที่เป็นอำนาจหนึ่งที่มีอำนาจเท่าๆ กับฝ่ายบริหารและฝ่ายนิติบัญญัติ ยังเป็นความคาดหวังที่เป็นไปได้หรือเป็นความคาดหวังที่อันตรายหรือไม่ ในประเทศนี้
The post Override / Overrule ปัญหาการเลื่อนบังคับใช้บางหมวดของกฎหมายลำดับสูงกว่าด้วยกฎหมายลำดับต่ำกว่า first appeared on bact' is a name .
โดย bact ณ 14 May 2020 21:35 +0700
21 April 2020
19 เม.ย. 2563 นักวิทยาศาสตร์และนักวิจัยมากกว่า 300 คนจากทั่วโลก ลงชื่อในแถลงการณ์ร่วม “Joint Statement on Contact Tracing” ว่าด้วยการสืบย้อนกลับว่าบุคคลเคยสัมผัสใกล้ชิดผู้มีเชื้อหรือไม่ เพื่อประโยชน์ในการควบคุมโรคจากไวรัสโคโรนาสายพันธุ์ใหม่ โควิด-19
ใครสนใจก็กดอ่านและร่วมลงชื่อได้ที่ Joint Statement on Contact Tracing: Date 19th April 2020
ประเด็นสำคัญเรื่องหนึ่งในแถลงการณ์ก็คือ เรื่อง “social graph” หรือผังความสัมพันธ์ระหว่างบุคคลในสังคม ซึ่งสามารถสร้างขึ้นจากการประกอบเชื่อมโยงชิ้นส่วนข้อมูลเล็กๆ เข้าด้วยกัน
ข้อมูลบางชุดนั้น ดูเผินๆ อาจเหมือนระบุตัวบุคคลไม่ได้ แต่พอมีข้อมูลเยอะเข้า เช่น หมายเลขโทรศัพท์ ประกอบกับการบังคับลงทะเบียนซิมการ์ด ก็พอจะระบุตัวคนได้ (รู้ว่า “จุด” นี้คือใคร) และเมื่อประกอบกับข้อมูล “ที่ตั้ง” ทั้งในแบบที่ตั้งภูมิศาสตร์ และที่ตั้งเชิงสัมพัทธ์ ว่าตอนนี้ตั้งอยู่ข้างใคร ตั้งอยู่ใกล้อะไร โดยใช้ข้อมูลจากรหัส Bluetooth, ชื่อ WiFi, ตำแหน่ง GPS, หมายเลขเสาสัญญาณโทรศัพท์ ก็พอจะบอกได้ว่า คนเหล่านี้อาจมีความสัมพันธ์อะไรกันบางอย่าง จึงมาอยู่ด้วยกันในสถานที่และเวลาเดียวกันบ่อยๆ (รู้ว่ามี “เส้น” ลักษณะใดที่ลากเชื่อม “จุด” สองจุดหรือมากกว่าเข้าด้วยกัน) ข้อมูลตำแหน่งที่ตั้งทางภูมิศาสตร์หรือข้อมูลการเดินทางนั้น จำนวนหนึ่งเปลี่ยนแปลงไปเร็วและอาจจะไม่เกิดซ้ำ แต่อีกจำนวนหนึ่งก็มีลักษณะเกิดซ้ำๆ และกว่าจะเปลี่ยนรูปแบบก็อาจใช้เวลาเป็นหน่วยปี (เช่น เมื่อเราเปลี่ยนที่เรียน ที่ทำงาน ย้ายบ้าน) แต่ข้อมูลผังความสัมพันธ์ของคนนั้นเปลี่ยนแปลงช้ากว่านั้นมากๆ คืออาจเป็นระดับสิบปีหรือนานกว่านั้น ข้อมูลที่ถูกเก็บไปในช่วงสั้นๆ ไม่กี่เดือนนี้ ก็เพียงพอแล้วที่จะใช้กับบุคคลนั้นไปได้ตลอดชีวิต ระบบที่ทำงานแบบรวมศูนย์ ที่นำข้อมูลเหล่านี้ไปกองอยู่รวมกัน จึงมีความเสี่ยงอย่างมากหากมีผู้ไม่ประสงค์ดีสามารถเข้าถึงข้อมูลนี้ได้
ระบบที่เราจะพึ่งพาได้นั้น จึงต้องเป็นระบบที่อยู่ภายใต้อำนาจของสาธารณะที่จะตรวจสอบได้ และออกแบบมาให้รักษาความเป็นส่วนตัวตั้งแต่ขั้นการออกแบบ (by design) แทนที่จะไปคาดหวังว่าจะมีคนที่น่าเชื่อถือมาดูแลบริหารจัดการ เพื่อจะรับประกันได้ว่าสิทธิในการได้รับการปกป้องข้อมูลของพลเมืองนั้นจะได้รับการเคารพ
“We urge all countries to rely only on systems that are subject to public scrutiny and that are privacy preserving by design (instead of there being an expectation that they will be managed by a trustworthy party), as a means to ensure that the citizen’s data protection rights are upheld.”
ในแถลงการณ์ระบุว่า หลักการดังต่อไปนี้เป็นหลักการขั้นต่ำที่ควรยึดถือเพื่อเดินไปข้างหน้า:
แอป contact tracing จะต้องใช้สำหรับสนับสนุนมาตรการทางสาธารณสุขสำหรับการจำกัดการแพร่กระจายของ #COVID19 เท่านั้น ระบบจะต้องไม่สามารถเก็บ ประมวลผล หรือส่งข้อมูล ไปมากกว่าที่จำเป็นสำหรับการบรรลุวัตถุประสงค์ดังกล่าว วิธีการใดๆ ที่นำมาพิจารณาจะต้องโปร่งใสเต็มที่ โพรโทคอลและการสร้างระบบจากโพรโทคอลดังกล่าว ซึ่งรวมถึงชิ้นส่วนย่อยที่จัดหามาให้โดยบริษัทต่างๆ จะต้องถูกพิเคราะห์พิจารณ์ได้โดยสาธารณะ ข้อมูลที่ถูกประมวล รวมถึงเงื่อนไขการจัดเก็บ วิธีการจัดเก็บ สถานที่ที่จัดเก็บ และระยะเวลาการจัดเก็บข้อมูล จะต้องถูกบันทึกเป็นเอกสารเอาไว้อย่างชัดเจน ข้อมูลที่ถูกเก็บจะต้องมีน้อยที่สุดเท่าที่จะเป็นไปได้สำหรับการวัตถุประสงค์หนึ่งๆ เมื่อมีทางเลือกที่เป็นได้หลายทาง สำหรับการสร้างชิ้นส่วนหรือความสามารถของแอป ทางเลือกที่จะรักษาความเป็นส่วนตัวได้มากที่สุดจะต้องถูกเลือก การเบี่ยงเบนไปจากหลักการนี้จะเกิดขึ้นได้ก็ต่อเมื่อมีความจำเป็นที่จะต้องบรรลุวัตถุประสงค์ของแอปให้ได้มีประสิทธิผลมากขึ้น และการเลือกทางเลือกดังกล่าวจะต้องถูกอธิบายแสดงเหตุผลอันสมควรได้อย่างชัดเจน โดยมีข้อกฎหมายที่จะกำหนดวันสิ้นสุดหรือวันหมดอายุของทางเลือกดังกล่าว (sunset provisions ) การใช้แอป contact tracing และระบบที่สนับสนุนมัน จะต้องเป็นไปโดยสมัครใจ ใช้โดยได้รับความยินยอมอย่างชัดเจนจากผู้ใช้ และระบบต่างๆ จะต้องถูกออกแบบมาให้สามารถสั่งปิดการทำงานได้ และข้อมูลทั้งหมดจะต้องถูกลบทิ้ง เมื่อวิกฤตในปัจจุบันนี้ได้ผ่านไปแล้ว
สหภาพยุโรปก็มีแนวทางเรื่องนี้ ออกมาเช่นกัน โดยออกเป็น Commission Recommendation (EU) 2020/518 ลงวันที่ 8 เมษายน 2563 และในรายละเอียดจะมีเอกสารที่เรียกว่า “toolbox” ตามมาอีกเรื่อยๆ
ตอนนี้ชิ้นแรกที่ออกมาคือ Mobile applications to support contact tracing in the EU’s fight against COVID-19 – Common EU Toolbox for Member States
โดยตัวข้อแนะนำหรือข้อระบุสิ่งที่ต้องทำก็จะเจาะจงกับการทำตามข้อกฎหมายและหลักการสิทธิเสรีภาพพื้นฐานของสหภาพยุโรป แต่ก็น่าจะพอปรับใช้ได้กับที่อื่นๆ เช่นกัน ประเด็นก็จะคล้ายๆ แถลงการณ์ข้างบน แต่มีเพิ่มเรื่อง เช่น การทำงานร่วมกับและได้รับการรับรองโดยหน่วยงานที่มีอำนาจรับผิดชอบด้านสาธารณสุข การพัฒนาบนฐานของข้อมูลที่ระบุตัวตนไม่ได้ การทำงานได้แม้จะข้ามพรมแดน (ซึ่งสำคัญมากในบริบทเสรีภาพในการเดินทางของบุคคล ซึ่งเป็นหนึ่งในสี่เสาหลักของตลาดร่วมยุโรป) การคำนึงถึงการออกแบบให้ทุกคนเข้าถึงได้ (accessibility)
The toolbox sets out the essential requirements for these apps:
They should be fully compliant with the EU data protection and privacy rules, as put forward by the guidance presented today following consultation with the European Data Protection Board. They should be implemented in close coordination with, and approved by, public health authorities. They should be installed voluntarily, and dismantled as soon as no longer needed. They should aim to exploit the latest privacy-enhancing technological solutions. Likely to be based on Bluetooth proximity technology, they do not enable tracking of people’s locations. They should be based on anonymised data: They can alert people who have been in proximity for a certain duration to an infected person to get tested or self-isolate, without revealing the identity of the people infected. They should be interoperable across the EU so that citizens are protected even when they cross borders. They should be anchored in accepted epidemiological guidance, and reflect best practice on cybersecurity, and accessibility. They should be secure and effective. The post แถลงการณ์ว่าด้วยการสืบย้อนผู้ใกล้ชิด (contact tracing) 19 เม.ย. 2563 first appeared on bact' is a name .
โดย bact ณ 21 April 2020 22:53 +0700
12 April 2020
สงกรานต์ปี 2563 เป็นปี จ.ศ. (2563 – 1181) = 1382 วันเถลิงศก ตรงกับ (1382 * 0.25875) + floor(1382 / 100 + 0.38) – floor(1382/ 4 + 0.5) – floor(1382 / 400 + 0.595) – 5.53375 = 357.5925 + 14 – 346 – 4 – 5.53375 = 16.05875 = วันที่ 16 เมษายน 2563 เวลา 01:24:36 วันสงกรานต์ ตรงกับ 16.05875 … Continue reading คำนวณวันสงกรานต์ปี 2563 →
โดย kitty ณ 12 April 2020 10:24 +0700
7 March 2020
Well, two weeks after the operation, I got stitches removed. The excision wound is somewhere between 4-5 cm long, it’s pretty intact. Still need to put a gauze pad for 4-5 more days though. So, what is it exactly ? Based on diagnostic surgical pathology, it’s an irritated seborrheic keratosis. Safe ? Yes.
โดย kitty ณ 7 March 2020 06:20 +0700
5-minute smart contract on ETH-compat blockchain network ? .. Yes, it is very possible .. if you already have some knowledge about it.
โดย kitty ณ 7 March 2020 06:17 +0700
16 February 2020
Kobe กับ Shaq: สองคนนี้เกลียดกัน Kobe เป็นเด็กหัวรั้น ซ้อมหนัก มั่นใจสูงมากว่าลูกบาสในมือเขามีโอกาสมากกว่าในมือคนอื่นในทีมเลยไม่ค่อยจ่ายบอล ในขณะที่ Shaq เข้ามายืนหนึ่งในทีม เฮฮา ปาร์ตี้หนัก ปล่อยเนื้อปล่อยตัว Kobe บ่นเรื่องนี้บ่อย ส่วน Shaq ไม่พอใจความรั้น แต่เขารู้ว่า Kobe จะเป็นคนที่ยิ่งใหญ่แน่ ๆ ช่วงแรกที่สองคนนี้มาอยู่ Lakers มีเกมที่ Kobe ลงสนามแล้วยิง air ball เยอะมากจนโดนโห่ Shaq เป็นคนแรกที่วิ่งไปกอดคอ Kobe แล้วบอกว่า “มึงไม่ต้องไปสนใจว่าใครจะเยาะเย้ย วันหนึ่งเวลาบอลอยู่ในมือมึง คนพวกนี้จะกลัวมึง” จุดเปลี่ยนเกิดในวันที่สองคนทะเลาะกันระหว่างซ้อม เวลานั้น Kobe กับ Shaq ร่วมทีม Lakers มาได้ 2-3 ปีแล้ว แต่ยังไปไม่ถึงแชมป์ NBA สักครั้ง สองคนซ้อมคนละทีม Shaq talk trash … Continue reading Kobe B. Bryant →
โดย kitty ณ 16 February 2020 10:16 +0700
13 February 2020
/me มีติ่งเนื้อที่ข้อพับหลังเข่าซ้าย เป็นอยู่หลายเดือนแล้ว ขนาดก็ไม่ได้โตขึ้นอะไร เมื่อวานไปผ่าตัดเอาออก ผ่าเล็กห้อง ER ฉีดยาชา ไม่มีราก ขั้วไม่ใหญ่ เฉือนออกไม่มาก แต่กรีดแผลกว้างหน่อย 15 นาทีเสร็จ หมอเห็นติ่งเนื้อเองก็ไม่แน่ใจว่าคืออะไร เลยส่งตรวจ ส่วนตอนนี้พันแผลไว้ ห้ามแกะ ห้ามโดนน้ำ นัดตัดไหมอีกสองสัปดาห์ค่อยแกะทีเดียว
โดย kitty ณ 13 February 2020 02:23 +0700
7 January 2020
นับจากที่ได้เพิ่ม layer ผสมใน Fonts-TLWG เพื่อแก้ปัญหาเรื่อง build reproducibility ในรุ่น 0.7.0 ก็ได้เปิดช่องทางสำหรับการ fine-tune quadratric spline ของฟอนต์ TrueType เพียงแต่ผมยังไม่ได้ทำกับ Fonts-TLWG ในทันที เพราะได้กลับไปทำ layer ผสมกับ Fonts-Arundina เสียก่อน และได้ถือโอกาสทดลอง fine-tune quadratic spline ต่อด้วย
หลังจากที่เพิ่ม layer ผสมกับทุกฟอนต์ในชุด Arundina แล้ว ก็ได้ทดลอง fine-tune quadratic spline ต่อ ซึ่งก็ทำเสร็จแค่ Arundina Sans เท่านั้น พอมาทำ Arundina Sans Mono ต่อ ปรากฏว่าเกิดเหตุ Fontforge ตายกลางคันขณะ save ทำให้ข้อมูลที่แก้ไขมาได้ครึ่งทางแล้วสูญหายทั้งหมด แม้แต่กระบวนการ recovery ของ Fontforge เองก็กู้ข้อมูลขึ้นมาไม่ได้! ถ้าจะเริ่มใหม่ก็ต้อง check out ฉบับที่ยังไม่ปรับเส้นจาก git ออกมาทำใหม่นั่นแหละ
เป็นอุทาหรณ์ว่าควร commit git ให้บ่อยกว่านี้ ถึงยังไม่เสร็จก็ควร commit ไว้ก่อน แล้วค่อยใช้ option --amend
ในครั้งต่อ ๆ ไปก็ยังได้!
ก็เลยตัดสินใจหยุดทำ Arundina ไว้แค่นั้น แล้วเตรียมตัดออกรุ่นใหม่เสียก่อน โดยขอบันทึกสิ่งที่ได้เรียนรู้จากการปรับเส้นฟอนต์ Arundina ไว้ ณ ที่นี้ก่อน ก่อนที่จะนำไปใช้กับ Fonts-TLWG ต่อไป
ปรับ Quadratic และ Cubic Spline ไปด้วยกัน
ในระยะแรกนั้น ผมปรับเฉพาะ quadratic layer เข้าหา cubic layer โดยพยายามให้ curve ทาบกับ cubic layer ได้สนิทด้วยจำนวนจุดที่พอเหมาะ โดยตัดจุดที่ไม่จำเป็นออก และเติมจุดบางจุดที่เห็นว่าน่าจะเป็นประโยชน์ต่อการ hint แต่เมื่อได้ปรับไปเรื่อย ๆ ก็ได้พบกรณีที่ต้องปรับ cubic layer ควบคู่กันมากขึ้นเรื่อย ๆ จนในที่สุดผมก็ปรับทั้งสอง layer ควบคู่กัน ซึ่งปรากฏว่าคุณสมบัติของโค้งทั้งสองแบบได้เสริมกันและกันในการจัด control point ต่าง ๆ ได้เป็นอย่างดี
การปรับทั้งสอง layer ควบคู่กันยังมีข้อดีอีกอย่าง คือเราสามารถลดปริมาณงานในอนาคตหากมีการ copy ข้ามจาก cubic layer มายัง quadratic layer อีกด้วย เพราะจะได้จำนวนจุด quadratic ที่เหมาะสมทันที ไม่ต้องมานั่งปรับใหม่ รวมถึงกรณีที่ต้องการ generate ฟอนต์ TrueType ด้วยการแปลงจาก cubic layer กลางอากาศ (อย่างที่เราเคยทำในสมัยก่อน)
หรือแม้กระทั่งสำหรับการ generate ฟอนต์ PostScript หรือฟอนต์ OpenType ที่ใช้ cubic spline เอง ก็จะได้โค้งที่ได้สมมาตรสวยงาม และยังอาจช่วยให้ rasterize ได้เร็วขึ้นสำหรับบาง engine ได้อีกด้วย (เช่น สำหรับ rasterizer ที่ render Bézier curve ด้วยการแบ่งครึ่ง curve แบบ recursive บนพื้นฐานของ De Casteljau’s algorithm)
ส่วนวิธีการปรับนั้นจะกล่าวถึงต่อไปเป็นลำดับ
Quadratic Spline ใน Fontforge
จากที่ผมเคยเขียนเปรียบเทียบ quadratic และ cubic spline ไว้เมื่อนานมาแล้ว ทั้งในแง่คณิตศาสตร์ การแปลงระหว่างกัน จำนวนจุดที่ใช้แทนโค้ง และการแก้ไข โดยในส่วนของการแก้ไขนั้น ผมได้กล่าวไว้ว่าโค้ง quadratic แก้ไขยากกว่า เพราะการแก้ไขแต่ละจุดจะกระทบถึงจุดข้างเคียงเสมอ แต่ Fontforge มีสิ่งที่ช่วยคลายความอึดอัดตรงนี้ ด้วยจุดต่อโค้งชนิด interpolated ที่ตำแหน่งของจุดต่อโค้งจะคำนวณจากจุดควบคุมข้างเคียง ทำให้ลดการกระทบกระทั่งลงได้
จุด interpolated ในที่นี้ขอเรียกว่า จุดกะ ในโค้ง quadratic เป็นจุดต่อโค้ง (curve point) ที่อยู่กึ่งกลาง ระหว่างจุดควบคุมสองจุด และในทางกลับกัน จุดต่อโค้งที่มีแขนสองข้างยาวเท่ากันก็จะถือเป็นจุดชนิด interpolated โดยอัตโนมัติใน Fontforge เช่นกัน (ยกเว้นจุดที่ผู้ใช้กำหนดให้ห้าม interpolate)
ความพิเศษของจุดกะนี้ก็คือ การแก้ไขจุดควบคุมข้างหนึ่งจะไม่ส่งผลกระทบถึงจุดควบคุมอีกข้างหนึ่ง เพียงแต่จะทำให้ตำแหน่งของจุดกะเองเปลี่ยนไปเป็นจุดกึ่งกลางใหม่ ซึ่งทำให้เกิดผลคล้ายกับการแก้ไข cubic spline โดยไม่ต้องสนใจการมีอยู่ของจุดกะ
การประมาณ Cubic Curve ด้วย Quadratic Curve
ดังที่ได้กล่าวไว้ใน blog เดิม ว่าการแปลง quadratic curve เป็น cubic จะเป็นการแปลงแบบแม่นตรง แต่ในทางกลับกัน คือจาก cubic curve เป็น quadratic จะเป็นการประมาณเท่านั้น เนื่องจาก quadratic curve มีความเป็นอิสระ (degree of freedom) น้อยกว่า ดังนั้น เมื่อคุณคัดลอก spline จาก cubic layer มา quadratic layer จึงมีการประมาณค่าเกิดขึ้น
มีอัลกอริทึมจำนวนหนึ่งสำหรับประมาณ cubic curve ด้วย quadratic เช่น แบ่ง curve เป็นส่วนย่อย ๆ ที่เมื่อตัดสัมประสิทธิ์ดีกรีสามออกแล้วได้ quadratic curve ที่ใกล้เคียงพอ (มี paper ที่คล้ายกัน ), แบ่งครึ่ง curve ที่ t=0.5 แล้ว solve หาจุดควบคุม quadratic curve ที่ใกล้เคียงของทั้งสองส่วน ฯลฯ
สำหรับ Fontforge แล้ว ใช้การประมาณด้วยจุดกะ โดยอยู่บนพื้นฐานของทฤษฎีซึ่งพบจากการทดลองแต่ยังไม่มีข้อพิสูจน์ทางคณิตศาสตร์ว่า ถ้าแบ่ง cubic curve เป็นช่วง ๆ ด้วย parameter ที่ห่างเท่า ๆ กันแล้ว ปรากฏว่าจุดแบ่งเหล่านั้นจะอยู่กึ่งกลางระหว่างจุดควบคุมข้างเคียงพอดี ซึ่งหมายความว่าสามารถแทนจุดแบ่งทุกจุดด้วยจุดกะได้ ด้วยทฤษฎีนี้ Fontforge จึงประมาณ cubic spline ด้วย quadratic spline ที่เติมจุดกะตามแนวเส้นโค้งเสมอ
Fontforge จะพยายามประมาณโค้งโดยเติมจุดกะให้น้อยที่สุด ยิ่งไม่ต้องเติมจุดกะเลยยิ่งดี แต่หากยังคลาดเคลื่อนมากก็ลองเติมหนึ่งจุด สองจุด สามจุด ไปเรื่อย ๆ จนกว่าความคลาดเคลื่อนจะอยู่ในขอบเขตที่กำหนด
การลดจำนวนจุดกะใน Quadratic Curve
การประมาณของ Fontforge คือการประมาณในทางคณิตศาสตร์ที่มีความแม่นยำสูง แต่ในทาง design แล้ว เราอาจยอมรับความคลาดเคลื่อนได้บ้างโดยไม่ทำให้รูปตัวอักษรเพี้ยนไปจากเดิม ซึ่งแน่นอนว่าเรื่องการผ่อนผันที่ต้องใช้วิจารณญาณอย่างนี้ Fontforge จะไม่สู่รู้ตัดสินใจให้ เราจึงต้องปรับเองด้วยมือ
จากภาพในตัวอย่างข้างต้น มีการเติมจุดกะระหว่างกลาง 4 จุดใน quadratic curve แต่เราสามารถลดจำนวนจุดกะนี้ลงได้ ไม่ว่าจะเพื่อความเรียบง่าย เพื่อลดขนาดข้อมูล (ซึ่งสำคัญสำหรับ web font) หรือเพื่อประสิทธิภาพในการ hint และการ rasterize ก็ตาม โดยแนวทางการลดจุดกะที่เป็นไปได้คือ:
ตัดจุดกะด้วยมือ โดยเลือกจุดกะที่ต้องการตัดแล้วสั่ง Merge (Ctrl-M)
ปรับ cubic curve ต้นทางด้วยมือให้สามารถประมาณได้ด้วยจำนวนจุดที่น้อยลง
ทั้งสองวิธีจะได้ quadratic curve ที่คลาดเคลื่อนจาก cubic curve เดิมเล็กน้อย แต่วิธีที่สองจะทำให้ได้ spline สองแบบที่ทาบกันสนิทกว่าแบบแรก เพราะมันถูกปรับไปด้วยกัน
ในฟอนต์ตัวแรก ๆ ที่ทำ ผมใช้วิธีแรก แต่ต่อมาก็ค่อย ๆ เกิดความคิดว่าวิธีที่สองน่าจะเหมาะกว่า และในที่สุดก็เลือกวิธีที่สองเป็นหลัก
แล้ว cubic curve แบบไหนที่จะใช้จำนวนจุดกะน้อยลง?
ก่อนอื่น คนที่เคย edit cubic curve จะรู้ว่าเราสามารถปรับแขนทั้งสองของโค้งได้โดยยังได้โค้งที่ใกล้เคียงกับโค้งเดิม ด้วยการเพิ่มความยาวของแขนข้างหนึ่ง และลดความยาวของแขนอีกข้างหนึ่ง
แน่นอนว่าในทางคณิตศาสตร์แล้ว โค้งที่ปรับแล้วถือว่าไม่ใช่โค้งเดียวกับโค้งเดิม แต่ความคลาดเคลื่อนระหว่างโค้งทั้งสองยังอยู่ในขอบเขตที่ยอมรับได้ด้วยสายตามนุษย์ โดยเฉพาะถ้าปรับไม่มาก แต่ถ้าปรับมากเกินไปก็จะเริ่มสังเกตเห็นความแตกต่างเมื่อนำมาทาบกัน (ซึ่งในทาง design เราก็อาจจะยังยอมรับได้อยู่ดี)
สำหรับโค้งในตัวอย่างข้างต้น เมื่อปรับแล้ว copy ข้ามมา quadratic layer เรากลับได้ curve ที่ใช้จุดกะเพียงจุดเดียว จากเดิมที่ใช้ถึง 4 จุด
ถามว่า cubic curve แบบไหนที่ใช้จุดกะน้อย? แรก ๆ ที่ลองผิดลองถูกน้ัน ผมอาศัย sense เป็นหลัก คือพยายามให้แขนทั้งสองข้างได้ดุลกัน แต่เมื่อทำไปก็เริ่มถามตัวเองถึงคุณสมบัติทางคณิตศาสตร์ที่ชัดเจนกว่าการใช้ sense ซึ่งในที่สุดก็ได้คำตอบที่กลับไปหาพื้นฐานทางคณิตศาสตร์ของ cubic และ quadratic curve นั่นเอง
จาก blog เดิม ผมได้กล่าวไว้ว่า quadratic curve ที่มีจุดควบคุม P0 , P1 และ P2 สามารถแทนได้ด้วย cubic curve ที่สมมูลกันโดยมีจุดควบคุม P0 , (P0 /3 + 2P1 /3), (2P1 /3 + P2 /3), และ P2
เราสามารถพูดในทางกลับกันได้ว่า cubic curve ที่ว่านี้ เมื่อแปลงเป็น quadratic curve ก็จะใช้จุดควบคุม P0 , P1 และ P2 ได้ทันทีโดยไม่ต้องเติมจุดกะ
ถือเป็นอุดมคติของการประมาณโค้ง ยิ่งเราปรับ cubic curve ให้เข้าใกล้อุดมคตินี้มากเท่าไร เมื่อแปลงเป็น quadratic ก็จะใช้จุดกะระหว่างกลางน้อยลงเท่านั้น
อุดมคติที่ว่านี้ มีคุณสมบัติที่เห็นได้จากเรขาคณิตก็คือ เส้นตรงที่เชื่อมระหว่างจุดควบคุมทั้งสองขนานกัน กับเส้นตรงที่เชื่อมระหว่างจุดปลายทั้งสอง โดยถ้าความยาวของแขนควบคุมเท่ากับ 2/3 ของระยะไปยังจุดตัดของแขนควบคุมทั้งสองพอดี ก็จะไม่ต้องใช้จุดกะเพิ่มเลย แต่ถ้าไม่ใช่ก็ต้องมีจุดกะเพิ่ม
ฉะนั้น แนวทางโดยทั่วไปก็คือ พยายามเล็งให้ polygon ที่เชื่อมระหว่างจุดปลายและจุดควบคุมของ cubic curve กลายเป็นสี่เหลี่ยมคางหมูหรือใกล้เคียง ซึ่งโดยทั่วไปก็จะทำให้มีจุดกะเพิ่มไม่เกิน 1 จุด
การปรับอื่น ๆ
ในบางกรณี ก่อนที่จะได้ cubic curve ที่สามารถแทนด้วย quadratic curve ที่เติมจุดกะไม่เกิน 1 จุด ก็อาจจำเป็นต้องปรับจุดต่อโค้งต่าง ๆ เพิ่มตามจำเป็น เช่น
เติมจุดบิดโค้ง (inflection point) เพื่อแบ่งโค้งที่บิดเป็นรูปตัว S ออกเป็นสองส่วน เนื่องจาก quadratic curve ไม่สามารถบิดเป็นตัว S ได้เหมือน cubic curve
เติมจุดต่อโค้งในโค้งที่หักเลี้ยวไม่สมมาตร จนจำเป็นต้องเติมจุดกะมากกว่า 1 จุด เช่น ในฟอนต์ตัวเอียงที่โค้งเดิมกำหนดจุดต่อโค้งที่ extrema เท่านั้น
การเติมจุดเหล่านี้ หากพิจารณาเฉพาะฟอนต์ที่ใช้ cubic spline อาจดูไม่จำเป็น แต่การเติมจุดต่อโค้งนอกจากจะช่วยให้ใช้จุดกะน้อยเมื่อแปลงเป็น quadratic แล้ว ก็ยังมีผลดีต่อการควบคุมความหนาของเส้นหมึกสำหรับ cubic spline เองด้วย เช่น การมีจุดกำกับที่จุดบิดโค้งก็ย่อมเพิ่มโอกาสการ hint หรือตรึงตำแหน่งที่จุดบิดโค้ง แทนที่จะปล่อยให้โค้งลอยไปมาตามผลการขยับจุดปลายระหว่าง apply hint
แผนการต่อไป
ในฟอนต์ชุด Arundina ที่กำลังจะตัดออกรุ่นนี้ ผมได้ปรับ spline เฉพาะฟอนต์ Arundina Sans เท่านั้น โดยใช้วิธีแรก (ยุบจุดกะใน quadratic spline เท่านั้น) และ commit ไปแล้ว ส่วน Arundina Sans Mono ผมเริ่มใช้วิธีที่สอง แต่น่าเสียดายที่ข้อมูลสูญหายไปหมด จึงไม่ได้รวมมาในรุ่นใหม่นี้ แต่จะนำหลักการที่ได้นี้ไปใช้ปรับฟอนต์ชุด Fonts-TLWG ในลำดับต่อไป
โดย Thep (noreply@blogger.com) ณ 7 January 2020 07:36 +0700
29 October 2019
More Read Learn Listen Exercise Gunpla Play Travel Less Meeting Complain Teach
โดย kitty ณ 29 October 2019 08:44 +0700
Background0. อินเทอร์เน็ตอาศัยเลข IP address ในการระบุที่อยู่ของ devices ที่เชื่อมต่อกัน แต่มนุษย์จำเลข IP address พวกนี้ไม่ได้หรอก จึงเกิด Domain Name System (DNS) เพื่อให้เราใช้ชื่อเครื่อง (hostname) ที่จำได้ง่ายกว่า แทน IP address ได้ โดย DNS จะไปหา (resolve) มาให้ว่า hostname นี้ใช้ IP address อะไร 1. บริการของ DNS ทำผ่าน name servers ซึ่งมีกระจายทั่วโลก คอมพิวเตอร์ที่ต่ออินเทอร์เน็ตเกือบทั้งหมดจะได้รับการกำหนดค่า name server(s) เสมอเพื่อจะได้ถามหา IP address ของ hostname ที่ผู้ใช้จะเชื่อมต่อได้ถูก Problems2. มันควรเป็นปกติสุข จนระบบ DNS มีความซับซ้อนมากขึ้นเรื่อย ๆ … Continue reading DNS Flag Day →
โดย kitty ณ 29 October 2019 08:43 +0700
16 September 2019
ขอขอบคุณ ท่านที่ได้ สนับสนุน งานพัฒนาซอฟต์แวร์เสรีของผมในช่วงที่ผ่านมาครับ
นับจาก ครั้งที่แล้ว ขอขอบคุณผู้สนับสนุนงานของผมดังนี้:
เดือนกุมภาพันธ์ 2562
เดือนสิงหาคม 2562
ผู้ไม่ประสงค์จะออกนาม 1 ท่าน
ขอให้ทั้งสองท่านประสบความสำเร็จในหน้าที่การงาน สุขภาพแข็งแรงครับ
ปีนี้อาจเป็นปีที่งานพัฒนาซอฟต์แวร์ของผมขาดช่วงไปบ้าง เนื่องจากรับงานสอนพิเศษนักเรียนอยู่ช่วงหนึ่ง แต่ก็พอสรุปงานตั้งแต่ต้นปีได้ดังนี้:
งานแปล
ระดมแปล Xfce เพื่อเตรียมพร้อมสำหรับ Xfce 4.14 ซึ่งก็ได้ออกรุ่นไปแล้วเมื่อ 12 สิงหาคมที่ผ่านมา
Fonts-Arundina (ยังไม่ release):
ตรวจสอบปัญหา build reproducibility ต่อ สุดท้ายพบว่าเป็นปัญหาของ FontForge ใน Debian ที่ยังอัปเดตไม่ครบสำหรับฟอนต์ PostScript จึงคอมเมนต์ไปใน Debian #774274 เพื่อขออัปเดต
ทยอยปรับ quadratic spline ในเลเยอร์ Quad ต่อ (ยังไม่เสร็จ งานนี้เป็นงานมาราธอน)
งานต้นน้ำ:
release gtk-im-libthai 0.2.2 เพื่อปล่อยสิ่งที่ค้างอยู่ใน repository ถึงเกือบ 8 ปี โดยสิ่งเปลี่ยนแปลงหลัก ๆ คือการกำจัดการใช้ GTK+ API ที่ deprecated
Debian packaging:
ย้ายไป debhelper level 12 พร้อมกับใช้ debhelper-compat
dependency แทน debian/compat
และแก้ปัญหาที่เกิดกับ dh_missing
ใน level 12 นี้
ปรับโครงสร้าง Git repository ตาม DEP-14 ครบทุกแพกเกจในความดูแล (แต่ยังรออัปโหลดอยู่ 2 แพกเกจ)
ปรับแพกเกจที่สร้าง udeb โดยให้ dh_makeshlibs
สแกนหา udeb โอยอัตโนมัติแทนการใช้ option --add-udeb
สำหรับ debhelper รุ่น 12.3 ขึ้นไป
ตรวจสอบและตัดสิ่งที่เก่าเกินไปจนไม่จำเป็นสำหรับ Bullseye แล้ว
อัปเดตทั่วไป
Debian อื่น ๆ:
file Debian #934804 สำหรับ bsdmainutils
เพื่อขอปรับข้อมูลวันหยุดของไทยเพิ่มเติมในคำสั่ง calendar
อันเนื่องมาจากพระราชพิธีบรมราชาภิเษก
OpenStreetMap
ปรับข้อมูลแผนที่ในตัวเมืองขอนแก่น
เป็นวิทยากรฝึกอบรมการสร้างแผนที่ OSM ที่ Thailand ICT Camp 2019 (ชะอำ) ร่วมกับคุณ Mishari Muqbil
เริ่มทดลองเก็บข้อมูล Mapillary ในตัวเมืองขอนแก่นตามคำแนะนำของคุณ Mishari
ปรับข้อมูลแผนที่รายทางที่ชะอำ และแผนที่อุทยานสิ่งแวดล้อมนานาชาติสิรินธร
ปรับข้อมูลแผนที่บริเวณ ต.นาจอมเทียน อ.สัตหีบ จ.ชลบุรี
เริ่มทำแผนที่จุดรับขยะอันตรายในเขตเทศบาลนครขอนแก่น
โดย Thep (noreply@blogger.com) ณ 16 September 2019 04:32 +0700
1 July 2019
หลังจากเจอปัญหา DTAC เน็ตมือถือรั่วมานานพอควร คือการหักค่า net data ทั้ง ๆ ที่ผมปิด net data ตลอดเวลา และใช้เน็ตผ่าน Wi-Fi เท่านั้น เดือน มิ.ย. ที่ผ่านมาเลยเช็กตัวเลขจริงจัง พบว่าค่าเน็ตรั่วที่ผมจ่ายทั้งเดือนคือ 57.78 บาท ในขณะที่ค่าโทรผมใช้แค่ 21.25 บาท ผมจ่ายเงินไปฟรี ๆ เกือบสามเท่าของที่ใช้จริง!
เมื่อตรวจสอบปริมาณการใช้ net data จากแอนดรอยด์เอง กลับพบว่าปริมาณการใช้เน็ตทั้งเดือนคือ 0 ไบต์! แล้ว DTAC ตัดเงินผมจากอะไร?
คำอธิบายมีสองแนว
comment หนึ่งใน Pantip อธิบายว่า เทคโนโลยี 4G ออกแบบมาให้ใช้ data ล้วน จึงเชื่อมต่อ data ตลอดเวลาที่เปิดเครื่อง แม้แต่การโทรก็ใช้ data ผ่าน VoLTE แต่เพื่อการติดต่อกับเครือข่าย 3G หรือ 2G ก็จะทำ Circuit Switched FallBack (CSFB) สำหรับการโทรหรือ SMS ได้ แต่สำหรับการเชื่อมต่อ 4G ปกติ ยังไงก็ปิด data ไม่ได้ทั้งหมด ยังต้องมีส่วนที่ใช้ maintain การเชื่อมต่ออยู่ดี
DTAC อธิบาย ถึงสาเหตุอื่นที่ไม่เกี่ยวกับเทคโนโลยี 4G คือ
เมื่อ Wi-Fi สัญญาณอ่อนหรือช้าลง เครื่องจะสลับมาใช้สัญญาณ 3G/4G โดยอัตโนมัติเพื่อความต่อเนื่อง
บาง app เช่น passbook จำเป็นต้องใช้สัญญาณ 3G/4G สื่อสารกับเครือข่ายเพื่อยืนยันเบอร์ที่ใช้งาน
เมื่อเครื่องเข้าสู่ sleep mode จะสลับจากการจับสัญญาณ Wi-Fi มาเป็น 3G/4G อัตโนมัติ
กรณีของผม ผมเชื่อว่ามาจากข้อ 1 เพราะเริ่มสังเกตเห็นอาการเน็ตรั่วหลังจากที่ในพื้นที่มีสัญญาณ DTAC-Turbo และมือถือผมก็จับสัญญาณนี้ ในขณะที่เครื่องของอีกคนที่ใช้ DTAC เหมือนกันจับสัญญาณ VoLTE และไม่มีปัญหาเน็ตรั่ว
ฉะนั้น ผมจึงแก้ปัญหาด้วยการตั้งมือถือให้เชื่อมต่อกับเครือข่าย 3G เท่านั้น แทนที่จะเชื่อม 3G/4G อัตโนมัติ
อย่างไรก็ดี ปัญหาข้อ 2 ก็ยังอาจมีได้สำหรับเครือข่าย 3G ก็เลยสั่งปิดสัญญาณอินเทอร์เน็ตที่เครือข่ายไปเลย โดยสำหรับ DTAC ใช้เบอร์ดังนี้
ปิดสัญญาณอินเทอร์เน็ต กด *104*72#
เปิดสัญญาณอินเทอร์เน็ต กด *104*71#
จากที่ผมสังเกตเปรียบเทียบกับเครื่องของเพื่อนที่ไม่มีปัญหาเน็ตรั่วทั้งที่ใช้ 4G เหมือนกัน ซึ่งก็ควรต้องใช้ data ในการ maintain การเชื่อมต่อเหมือนกัน แต่ VoLTE กลับไม่มีปัญหาการตัดเงิน ในขณะที่เครื่องที่ใช้ DTAC-Turbo กลับมีปัญหา หรือจะเป็นปัญหาของ DTAC-Turbo?
ทั้งนี้ ก็ต้องพิจารณาด้วยว่าปัญหานี้ไม่ได้พบแค่กับ DTAC เท่านั้น แต่ทั้ง AIS และ True ต่างก็ดูจะมีปัญหานี้เช่นกัน และถ้าทางแก้คือการถอยกลับไป 3G ก็หมายความว่าถ้าไม่แก้ปัญหาการคิดค่าใช้งานตรงนี้ การขยับไป 4G หรือ 5G ของประเทศก็อาจเกิดแรงเสียดทานจากผู้ใช้ได้
โดย Thep (noreply@blogger.com) ณ 1 July 2019 05:11 +0700
22 May 2019
จาก blog เก่าเรื่อง ไตรยางศ์อยุธยา เมื่อ 7 ปีก่อน ผมทิ้งท้ายไว้ว่าจะเขียนถึงไตรยางศ์อีสานต่อ จนแล้วจนรอดก็หาเวลาเขียนไม่ได้ จนกระทั่งได้ไปร่วม Thailand ICT Camp ที่ชะอำ ซึ่งมีกิจกรรม BarCamp ในวันสุดท้าย ผมไม่เคยร่วม BarCamp มาก่อน แต่ก็ลองเสนอหัวข้อ ไตรยางศ์ไทย-อีสาน ดู พอได้นำเสนอจึงถือโอกาสนำมาเขียนบันทึกต่อเสียเลย
ก่อนอื่นเพื่อเป็นการปูพื้นสำหรับท่านที่ตามมาอ่านจาก BarCamp และไม่เคยอ่าน blog ของผมมาก่อน ผมมีข้อสังเกตถึงความลักลั่นของการสะกดคำของภาษาอีสานอันเนื่องมาจากการขาดหลักไตรยางศ์ที่แน่นอน ทำให้บางคำเขียนรูปวรรณยุกต์เหมือนภาษาไทยกลางแล้วผันเอา ซึ่งมักเป็นคำที่ใช้ร่วมกับไทยกลาง เช่น เขียน หม้อ แล้วผันเป็น [หม่อ] แต่พอเป็นคำที่เป็นคำเฉพาะถิ่น เช่น หม้ำ (ไส้กรอกตับ) ซึ่งออกเสียงว่า [หม่ำ] กลับเขียนแบบแปลงสำเนียงให้คนบางกอกเสร็จสรรพ โดยเขียนเป็น หม่ำ
ปัญหาของการเขียนลักลั่นแบบนี้คือ หลักการอ่านจะไม่แน่นอน เอาหม่ำไปใส่หม้อ ควรอ่านเป็น [เอ่า-มัม^-ไป่-ใซ^-หม่อ] ตามกฎการผันเสียง หรือควรอ่านเป็น [เอ่า-หม่ำ-ไป่-ใซ^-หม่อ] โดยอาศัยความรู้ทางศัพท์แก้เสียงวรรณยุกต์ในระหว่างอ่าน? และเมื่อเด็กอีสานไปเรียนคำใหม่จากหนังสือ เขาจะรู้ได้อย่างไรว่าคำที่เขียนนั้นตั้งใจให้อ่านแบบไทยกลางหรือไทยอีสาน? เช่นคำว่า หล่า ถ้าอ่านแบบไทยกลางเป็น [หล่า] จะหมายถึงคนสุดท้อง แต่ถ้าอ่านแบบไทยอีสานเป็น [ลา^] จะหมายถึงอาการหน้าเจื่อน แล้วเราก็จะกลับไปสู่ยุค หนังสือหนังหา สมัยที่ยังเขียน หนังสือ แบบไม่ใส่วรรณยุกต์ แล้วให้คนอ่านอ่าน หนังหา คือหาเสียงวรรณยุกต์ที่ถูกต้องมาใส่เอาเอง ซึ่งถ้าเป็นเช่นนั้น เราจะใส่วรรณยุกต์ไปทำไมกัน?
รายละเอียดเพิ่มเติมเกี่ยวกับประเด็นการสะกดคำ กรุณาอ่านจาก blog Esaan Language Tidbits
สิ่งที่ควรจะเป็นคือเขียนภาษาเขียนเหมือนไทยกลาง แต่ใช้หลักไตรยางศ์เฉพาะของอีสานในการผันเสียง โดยเขียน หม้ำ แล้วผันเสียงเป็น [หม่ำ] เหมือนที่ผัน หม้อ เป็น [หม่อ] เพื่อที่จะใช้หลักการเดียวในการอ่านข้อความ เอาหม้ำไปใส่หม้อ ตลอดข้อความโดยไม่ต้องมีข้อยกเว้น
ไตรยางศ์ขอนแก่น
หลักไตรยางศ์ที่ว่านั้น ไทยแต่ละถิ่นก็จะมีหลักของตัวเอง ไม่ว่าจะเป็นล้านนา สุพรรณบุรี นครศรีธรรมราช บางกอก ขอนแก่น อุบลฯ เลย ฯลฯ ซึ่งจะทำให้อ่านข้อความเดียวกันที่เขียนด้วยอักษรไทยออกไปได้ตามสำเนียงของถิ่นตน โดยในที่นี้ผมขอพูดถึงสำเนียงขอนแก่นที่เป็นสำเนียงบ้านผมเท่านั้น
สำเนียงขอนแก่น มีวรรณยุกต์ทั้งหมด 5 เสียง
เสียงเอก ตรงกับเสียงเอกในภาษาบางกอก เช่น ในคำว่า กิน ขาด ปาก หม้อ เข้า
เสียงโทต่ำ คล้ายเสียงโทของภาษาบางกอก แต่เสียงต่ำกว่า (ต้นพยางค์เท่า ๆ กับเสียงสามัญของบางกอก แล้วลงต่ำที่ท้ายพยางค์) เช่น ในคำว่า ป้า (น้ำไหล)โจ้ก ค้า เคียด
เสียงสามัญสูง เสียงเป็นระดับเดียวตลอดพยางค์เหมือนเวลาออกเสียงสามัญ แต่เสียงสูงกว่าเสียงสามัญของบางกอก เช่น ในคำว่า เต่า ข่า พ่อ งึด
เสียงโท ตรงกับเสียงโทของภาษาบางกอก เช่น ในคำว่า คา งู มา
เสียงจัตวา ตรงกับเสียงจัตวาของภาษาบางกอก เช่น ในคำว่า ขา กบ เห็ด
การเขียนบรรยายเสียงอ่าน จะมีสองเสียงที่เสียงไม่ตรงกับภาษาบางกอก คือเสียงโทต่ำและสามัญสูง จึงขอเขียนเครื่องหมายพิเศษเพื่อกำกับเสียง โดยเสียงโทต่ำจะเขียนเสียงโทแล้วตามด้วยขีดล่าง (_) เช่น ป้า [ป้า_], โจ้ก [โจ้ก_], ค้า [ค่า_], เคียด [เคียด_] ส่วนเสียงสามัญสูงจะเขียนเสียงสามัญแล้วตามด้วยหมวก (^) เช่น เต่า [เตา^], ข่า [คา^], พ่อ [พอ^] ยกเว้นกรณีที่ไม่สามารถเขียนเสียงสามัญได้ จะเขียนเสียงอื่นโดยอนุโลมแล้วใช้หมวกกำกับเสียง เช่น งึด [งึด^], คัก [คัก^]
หลักการผันวรรณยุกต์
คำเป็น
อักษรกลางรูปสามัญ (เช่น กิน) สำเนียงอีสานแต่ละถิ่นจะออกเสียงกันหลากหลาย สำเนียงขอนแก่นผันเป็นเสียงเอก สำเนียงอุบลฯ ผันเป็นเสียงสามัญเหมือนบางกอก (ทำให้สำเนียงอุบลฯ มีเสียงวรรณยุกต์ 6 เสียง เพิ่มเสียงสามัญแบบบางกอกเข้ามาอีกหนึ่ง)
อักษรสูงรูปสามัญ (เช่น ขา) ผันเป็นเสียงจัตวาเหมือนบางกอก
อักษรต่ำรูปสามัญ (เช่น คา) ผันเป็นเสียงโท
รูปเอก (เช่น เต่า ข่า ค่า) ผันเป็นเสียงสามัญสูงทั้งสามหมู่
รูปโทสำหรับอักษรกลางและอักษรต่ำ (เช่น ป้า ค้า) ผันเป็นเสียงโทต่ำ
รูปโทสำหรับอักษรสูง (เช่น ข้า) ผันเป็นเสียงเอก
รูปตรีและจัตวาสำหรับอักษรกลาง (เช่น ป๊า โป๊ ป๋า) ไม่มีในคำอีสาน เป็นการยืมจากภาษาบางกอก จึงใช้วิธีเทียบเสียงกับหมู่อื่น เช่น โป๊ [โป้_] เทียบกับเสียงตรีของอักษรต่ำ (เช่น ค้า) แต่ ป๊า [ปา^] ออกเป็นสามัญสูงเพื่อเลียนเสียงตรีของบางกอก ส่วนรูปจัตวา ผันเป็นเสียงจัตวาตรงตัว เช่น ป๋า [ป๋า]
คำตายสระเสียงยาว
รูปสามัญสำหรับอักษรกลางและสูง (เช่น เกิบ ขาด) ผันเป็นเสียงเอกเหมือนบางกอก
รูปสามัญสำหรับอักษรต่ำ (เช่น เคียด) และรูปโทสำหรับอักษรกลาง (เช่น โจ้ก) ผันเป็นเสียงโทคล้ายบางกอก แต่ระดับเสียงเป็นโทต่ำ
รูปโทสำหรับอักษรสูง ไม่พบคำที่สะกดจริง แต่สามารถเทียบกับการผันเป็นเสียงโทของบางกอกได้ แต่ระดับเสียงเป็นโทต่ำ
รูปตรีสำหรับอักษรกลาง (เช่น โจ๊ก) และรูปโทสำหรับอักษรต่ำ (เช่น โค้ก) เป็นคำยืมจากภาษาบางกอก จึงเลียนเสียงตรีของบางกอกด้วยเสียงสามัญสูง
รูปจัตวาสำหรับอักษรกลาง ไม่พบคำที่สะกดจริง แต่สามารถเทียบกับการผันเป็นเสียงจัตวาของบางกอกได้ และออกเป็นเสียงจัตวาตรงตัว
คำตายสระเสียงสั้น
รูปสามัญสำหรับอักษรกลาง (เช่น จก) และอักษรสูง (เช่น ขัด) ผันเป็นเสียงจัตวา
รูปสามัญสำหรับอักษรต่ำ (เช่น งึด) ผันเป็นเสียงตรีคล้ายหลักของบางกอก แต่ออกเสียงเป็นสามัญสูง
รูปเอกสำหรับอักษรต่ำ (เช่น ค่ะ) เป็นคำยืมจากภาษาบางกอก และผันเป็นเสียงโทเหมือนบางกอก
รูปโทสำหรับอักษรกลาง (เช่น จึ้ก) ผันเป็นเสียงโทคล้ายหลักของบางกอก แต่ระดับเสียงเป็นโทต่ำ
รูปโทของอักษรสูง ไม่พบคำที่สะกดจริง แต่สามารถเทียบกับการผันเป็นเสียงโทของบางกอกได้ แต่ระดับเสียงเป็นโทต่ำ
รูปตรีของอักษรกลาง (เช่น กั๊ก) เป็นคำยืมจากภาษาบางกอก และเลียนเสียงตรีของบางกอกด้วยเสียงสามัญสูง
รูปจัตวาสำหรับอักษรกลาง ถือว่าเสียงซ้ำกับรูปสามัญ ไม่ควรมีรูปเขียน แต่ถ้าให้ออกเสียง ก็ออกเป็นเสียงจัตวา
รูปสะกดที่คลาดกับไทยกลาง
หลักไตรยางศ์ข้างต้นสามารถใช้ได้กับทุกกรณี แต่คนอีสานอาจสังเกตพบบางคำที่เสียงอ่านไม่เป็นไปตามกฎนี้ เช่น น้ำท่วม [น่าม_-ถ่วม ไม่ใช่ น่าม_-ทวม^], คอยท่า [ค่อย-ถ่า ไม่ใช่ ค่อย-ทา^], ฆ่างัว [ข่า-งั่ว ไม่ใช่ คา^-งั่ว] ฯลฯ ทั้งนี้เป็นเพราะวิวัฒนาการของการสะกดคำของบางกอกได้เลือกเอาตัวสะกดที่ไม่ตรงกับอีสานไว้ กล่าวคือ:
น้ำท่วม ภาษาลาวปัจจุบันใน สปป. ลาวสะกดคำนี้ว่า ນ້ຳຖ້ວມ (น้ำถ้วม) ซึ่งเมื่อผันตามหลักไตรยางศ์ข้างต้นจะออกเสียงได้เป็น [น่าม_-ถ่วม] ตรงตามความเป็นจริง
คอยท่า ภาษาลาวปัจจุบันใน สปป. ลาวสะกดคำนี้ว่า ຄອຍຖ້າ (คอยถ้า) ซึ่งผันเสียงเป็น [ค่อย-ถ่า] ตามภาษาที่พูดกัน
ฆ่าวัว ภาษาลาวปัจจุบันใน สปป. ลาวสะกดคำนี้ว่า ຂ້າງົວ (ข้างัว) โดยคำว่า ฆ่า นี้ จารึกสุโขทัยเองก็สะกดว่า ฃ้า (ซึ่งใช้ ฃ ขวด เป็นคนละคำกับ ข้า ที่หมายถึงผู้อยู่ใต้ปกครอง) ต่อมาจึงได้วิวัฒน์การสะกดเป็น ฆ่า ในภายหลัง (อ่านเพิ่มเติมได้ใน blog เก่า )
ยังมีคำอื่น ๆ ในทำนองนี้ เช่น ໜ້າຮັກ (หน้าฮัก = น่ารัก), ຫຼິ້ນ (หลิ้น = เหล้น = เล่น) ซึ่งทำให้เห็นว่าการเสาะหาตัวสะกดที่สูญหายไปของภาษาอีสานอาจหาได้จากแหล่งใกล้เคียงคือภาษาลาวใน สปป. ลาวนั่นเอง
ย ยุง กับ ย ยา
อีกประเด็นหนึ่งที่สร้างความสับสนให้กับผู้ฝึกภาษาอีสานได้ไม่น้อยคือความแตกต่างระหว่าง ຍ ຍຸງ (ย ยุง) กับ ຢ ຢາ (ย ยา) ที่ผันวรรณยุกต์คนละแบบ เพราะ ຍ ຍຸງ นั้นนับเป็นอักษรต่ำ (เดี่ยว, นาสิก) ในขณะที่ ຢ ຢາ จะเทียบเท่ากับ อ นำ ย ในภาษาไทย และผันอย่างอักษรกลาง ซึ่งภาษาไทยปัจจุบันเหลือคำที่ใช้ อ นำ ย อยู่แค่ 4 คำ คือ อย่า อยู่ อย่าง อยาก แต่ในภาษาลาวและอีสานยังคงรักษาคำไว้มากกว่านั้น ตัวอย่างเช่น
ຢືນ (อยืน) [หยื่น] หมายถึงอาการตั้งตัวตรงบนพื้น ซึ่งจารึกสุโขทัยก็สะกดว่า อยืน จนต่อมาวิวัฒน์เหลือ ยืน และกลายเป็นคำพ้องรูปกับ ยืน ที่หมายถึงความยาวนาน เช่นในคำว่า ยั่งยืน แต่ในภาษาลาวยังคงสะกดคำหลังนี้ต่างกันเป็น ຍືນ (ยืน) โดยใช้ ຍ ຍຸງ
ดังนั้น ชื่ออำเภอ พระยืน [พะ^-หยื่น] จึงผันวรรณยุกต์ต่างจากชื่ออำเภอ เชียงยืน [เซี่ยง-ญื่น]
ຢາງ (อยาง) [หย่าง] ใน ยางพารา [หย่าง-พ่า-ล่า] และ ยางรถยนต์ [หย่าง-ลด^-ญ่น] ก็ผันวรรณยุกต์ต่างจาก ຍາງ (ยาง) [ญ่าง] ใน ต้นยางนา [ต้น_-ญ่าง-น่า]
ຢາຍ (อยาย) [หย่าย] ที่หมายถึงการกระจายข้าวของ ก็ผันวรรณยุกต์ต่างจาก ຍາຍ (ยาย) [ญ่าย] ที่หมายถึงแม่ของแม่
โดย Thep (noreply@blogger.com) ณ 22 May 2019 09:03 +0700
2 January 2019
สวัสดีปีใหม่ 2562 ครับ ขอถือโอกาสนี้ ขอบคุณ ทุกท่านที่ได้ สนับสนุน งานพัฒนาซอฟต์แวร์เสรีของผมในปีที่ผ่านมาครับ
นับจาก ครั้งที่แล้ว ขอขอบคุณผู้สนับสนุนงานพัฒนาของผมในช่วงครึ่งหลังของปี 2561 ดังนี้:
เดือนสิงหาคม 2561
ผู้ไม่ประสงค์จะออกนาม 2 ท่าน
คุณวิทยา ไตรสารวัฒนะ
เดือนกันยายน 2561
ผู้ไม่ประสงค์จะออกนาม 1 ท่าน
เดือนตุลาคม 2561
เดือนพฤศจิกายน 2561
ผู้ไม่ประสงค์จะออกนาม 1 ท่าน
เดือนธันวาคม 2561
ผู้ไม่ประสงค์จะออกนาม 1 ท่าน
เดือนมกราคม 2562 (นับถึงวันที่ 2)
ผู้ไม่ประสงค์จะออกนาม 1 ท่าน
ขอให้ทุกท่านและครอบครัวมีความสุขกายสบายใจ มีพลังอันเต็มเปี่ยมที่จะสร้างสรรค์งานของท่านให้เจริญรุดหน้า และที่สำคัญคือขอให้มีสุขภาพพลานามัยที่สมบูรณ์แข็งแรงครับ
สรุปกิจกรรมซอฟต์แวร์เสรีในครึ่งหลังของปี 2561 ของผม:
LibThai:
ออกรุ่น 0.1.28
อัปเดต TeX hyphenation patterns ตามพจนานุกรมใหม่ของ LibThai
swath:
อัปเดตพจนานุกรมตัดคำตาม TeX hyphenation patterns ใหม่
ตรวจพบและแก้ปัญหาใน RTF filter
ออกรุ่น 0.6.1
libdatrie (ยังไม่ release):
พัฒนาและ release โครงการ thpronun
โครงการอักษรอีสาน :
ย้ายโครงการ Khottabun จาก SourceForge มายัง GitHub
เพิ่มฟอนต์ Viravong สำหรับเขียนบาลี-สันสกฤตด้วยอักษรลาวร่วมสมัย ตามแบบพุทธบัณฑิตสภาจันทบุรี ตามร่างข้อเสนอยูนิโค้ด โดยเป็นส่วนหนึ่งของโครงการ Khottabun (ผ่านการประสานงานจากพระอาจารย์ไชยศิริ)
เพิ่ม input method สำหรับป้อนภาษาบาลีอักษรลาวในโครงการ lanxang
Fonts-TLWG:
Fonts-Arundina (ยังไม่ release):
Debian package ต่าง ๆ :
อัปเดตแผนที่ OpenStreetMap ในบริเวณตัวเมืองขอนแก่น, กรุงเทพฯ, และอำเภอวาปีปทุม จังหวัดมหาสารคาม
ปรับคำแปล Xfce เป็นระยะ
โดย Thep (noreply@blogger.com) ณ 2 January 2019 08:39 +0700
6 November 2018
Fonts-TLWG 0.7.0 ออกไปแล้วเมื่อปลายตุลาที่ผ่านมา หลังจากสะสมงานพัฒนามาได้ครึ่งปี โดยมีการเปลี่ยนแปลงตามลำดับเวลาดังนี้:
Issue #7 : แก้ที่ผิดใน GSUB rules ของทุกฟอนต์ซึ่งทำให้แสดงข้อความที่มีพินทุตามด้วย Macron Below เป็นพินทุซ้อนกันสองตัว ปัญหาเกิดจากข้อผิดพลาดในกฎจัดการลำดับ คุณ @Richard57 ได้รายงานเข้ามาพร้อมวิเคราะห์สาเหตุให้ด้วย
Norasi:
แก้ warning จาก Fontforge เกี่ยวกับการอ้างถึง glyph ที่ไม่มีในฟอนต์ในกฎ 'liga'
แก้กฎ 'liga'
ให้รองรับลำดับ space + combining character ในทุกกรณี
ตัดกฎ T + M → ™ เพื่อไม่ให้รบกวนกรณีที่ไม่ใช่ เช่น ATM
Issue #6 : จัดเตรียมฟอนต์ OpenType ในแพกเกจ LaTeX (fonts-tlwg ) ตามคำแนะนำของคุณ Abhabongse Janthong เพื่อให้บริการอย่าง ShareLaTeX และ Overleaf สามารถใช้ฟอนต์ไทยกับ XeLaTeX ได้โดยไม่ต้องอัปโหลดฟอนต์ร่วมกับเอกสาร ซึ่งข้อนี้ผมคิดไม่ถึง เพราะคิดแค่กรณีของผู้ใช้ XeTeX ในเครื่องส่วนตัว ซึ่งสามารถใช้ฟอนต์จากระบบได้อยู่แล้ว แต่สำหรับบริการออนไลน์ หรือแม้แต่เครื่องที่ผู้ใช้ไม่มีสิทธิ์ติดตั้งฟอนต์ในระบบแล้ว การจัดเตรียมฟอนต์ OpenType มากับชุด TeX distribution เลยย่อมอำนวยความสะดวกได้ดีกว่า
จัดการเรื่อง reproducibility ของการ build ฟอนต์ หลังจากที่ Debian รายงานมานาน และเขาได้ข้อยุติเรื่องการแก้ปัญหาใน Fontforge กันไปแล้ว โดยที่ Fonts-TLWG ของเราก็ยังไม่ reproducible อยู่ดี จึงคิดว่าควรได้ฤกษ์จัดการในฝั่งของเราเสียที ซึ่งในการแก้ก็ต้องจัดโครงสร้างของซอร์สและการ build ใหม่ จึงได้ขึ้นเลขรุ่นเป็น 0.7.x
หลังจาก อัปโหลด แพกเกจเข้า Debian ไปแล้ว ก็รอตรวจสอบหน้า reproducible build ของ fonts-tlwg ใน unstable ปรากฏว่ายังไม่ผ่าน ยังคงมีประเด็นตกค้างอยู่ ซึ่งเมื่อตรวจสอบ diff ดูแล้ว พบว่ามาจาก date stamp ที่เกิดจากฟิลด์ UniqueID ใน TTF Names ที่ Fontforge เติมให้โดยอัตโนมัติสำหรับฟอนต์ที่ไม่ได้จัดเตรียมไว้
(สังเกตที่คำว่า date stamp ซึ่งเป็นสาเหตุที่ทำให้มันหลุดรอดการทดสอบก่อนออกรุ่น 0.7.0 เพราะผมไม่ได้ทดสอบแบบข้ามวัน ทดสอบกี่รอบ date stamp มันก็ไม่เปลี่ยน)
Fonts-TLWG 0.7.1 จึงเกิดขึ้นตามมาเพื่ออุดช่องโหว่ดังกล่าว โดยเติมฟิลด์ UniqueID ใน TTF Names ให้ครบทุกฟอนต์เสีย
ขณะเดียวกัน เป็นธรรมเนียมของ Fonts-TLWG ที่จะ release พร้อมกับฟอนต์ OTF, TTF, WOFF ที่ build สำเร็จรูปแล้ว นอกเหนือจากซอร์สของฟอนต์ เพื่ออำนวยความสะดวกผู้ใช้ฟอนต์ทั่วไปที่ไม่สะดวกจะ build ฟอนต์เอง ซึ่งในทุกรุ่นที่ผ่านมา ผมสร้าง tarball เหล่านี้แบบ manual ด้วยการ configure และ build สามแบบเพื่อเก็บเข้า tarball ทีละก้อน ซึ่งถ้านาน ๆ ทำทีก็ไม่รู้สึกลำบาก แต่พอออกรุ่นนี้ไล่หลังรุ่นที่แล้วแบบค่อนข้างกระชั้นชิด เลยรู้สึกว่ามันควร automate มาตั้งนานแล้ว
จึงได้เป็น automation สำหรับการ build font tarballs โดยอิงอาศัย make rule ชุดเดิมที่เคยใช้ build ZIP file สำหรับ CTAN upload
พร้อมกันนี้ ในรุ่นนี้ผมเริ่มเผยแพร่ฟอนต์สำเร็จรูปในรูปแบบ ZIP file นอกเหนือจาก tarball ด้วย เพื่อส่งเสริมการใช้งานในวินโดวส์หรือแฟลตฟอร์มอื่นด้วย เพราะที่ผ่านมา Fonts-TLWG ถูกมองจากผู้ใช้ทั่วไปว่าเป็น ฟอนต์สำหรับ LaTeX บ้าง ฟอนต์สำหรับลินุกซ์ บ้าง ทั้งที่มันใช้ได้ในแพลตฟอร์มทั่วไป
upload เข้า Debian แล้ว ต่อไปก็รอดู reproducibility test ต่อไป
ทางด้าน CTAN ก็ได้ upload ไล่หลัง Debian แล้วทั้งสองรุ่น
โดย Thep (noreply@blogger.com) ณ 6 November 2018 06:46 +0700
21 October 2018
ความเปลี่ยนแปลงล่าสุดใน Fonts-TLWG คือเรื่อง reproducibility คือการ build ที่ให้ผลลัพธ์เป็น binary file ที่เป็นข้อมูลเดิมทุกบิตทุกครั้งที่ build โดยไม่ขึ้นกับสภาวะที่ใช้ในการ build
สำหรับฟอนต์จากโครงการ Fonts-TLWG มีปัญหา reproducibility ตามที่รายงานโดย Debian คือ modification timestamp ที่เกิดจาก Fontforge script ที่ใช้ build โดยมีการเปลี่ยนแปลงข้อมูลของฟอนต์ระหว่างทาง ทำให้ timestamp ของการเปลี่ยนแปลงถูกปรับเป็นเวลาขณะ script ทำงานนั้น และทำให้ข้อมูลฟอนต์ผลลัพธ์แปรเปลี่ยนไปตามเวลาที่ build
Modification กลางอากาศ
script ที่ใช้ generate ฟอนต์ชนิดต่าง ๆ จะมีการเปลี่ยนแปลงข้อมูลฟอนต์กลางอากาศขณะ build ดังนี้
OTF และ WOFF จะมีการตัด PUA glyphs สำหรับสระบน-ล่างและวรรณยุกต์ที่เลื่อนหลบหางพยัญชนะ
TTF มีการแปลง cubic spline เป็น quadratic ก่อน apply AutoInstr
LaTeX fonts (Postscript + TeX virtual fonts) จะไม่มี modification ใด ๆ
PUA Glyphs
PUA (Unicode Private Use Area) glyphs สำหรับสระบน-ล่างและวรรณยุกต์ที่เลื่อนหลบหางพยัญชนะ เป็นสิ่งจำเป็นสำหรับการ render ข้อความในสภาวะที่ไม่มีเทคโนโลยี OpenType เช่น บน Windows XP และการใช้ virtual font ใน TeX engine เก่า (เช่น pdfTeX) ซึ่งเราได้ตัดสินใจยกเลิกการรองรับ TTF แบบเก่าไปนานแล้ว แต่ยังไม่สามารถตัดการรองรับ TeX engine เก่าได้ จึงยังคง PUA glyphs ไว้ใน source ของฟอนต์ แต่ใช้วิธีลบกลางอากาศขณะ gen OTF และ TTF เอา
แต่การลบ glyph กลางอากาศนี่เองที่เป็นสาเหตุหนึ่งที่ทำให้ modification timestamp ของฟอนต์เปลี่ยน และทำให้ได้ไฟล์ฟอนต์ที่ไม่ reproducible
วิธีแก้ปัญหาก็เป็นไปได้สองทาง:
ไม่ต้องตัด PUA glyphs เลย ใส่เกินไว้ในฟอนต์อย่างนั้นแหละ การมีอยู่ของ OpenType tables ต่าง ๆ จะทำให้ shaping engine อย่าง Harfbuzz ไม่ fallback มาใช้ PUA shaping เมื่อเจอ PUA glyphs ในฟอนต์
ตัด PUA glyphs ออกจาก source ไปเลย ซึ่งจะหมายถึงการตัดการรองรับ shaping ผ่าน TeX virtual font ด้วย ผลคือ ตัดการรองรับ pdfTeX ไปเลย และหยุดอัปเดตแพกเกจ fonts-tlwg บน CTAN ไปเสีย
ทางเลือก 2 ดูจะเป็นเรื่องใหญ่ ผมคิดว่าควรชะลอไปก่อน และเลือกทางเลือก 1 ไว้ก่อน และได้ commit ไปตามนี้
TrueType Instructions
เพื่อเพิ่ม hint ให้กับฟอนต์ TrueType ในขณะที่ source ของเราอยู่ในรูป cubic spline ตัว script จึงใช้วิธีแปลง spline ให้เป็น quadratic ก่อน แล้ว apply AutoInstr กลางอากาศก่อน generate TTF
ซึ่งการแปลงและสั่ง AutoInstr ทำให้ modification timestamp ของฟอนต์เปลี่ยน ทำให้ได้ไฟล์ฟอนต์ที่ไม่ reproducible อีกเช่นกัน
ผมค้นคิดวิธีที่จะแก้ปัญหานี้ไปเรื่อย ๆ จนในที่สุดก็ได้ไอเดียการทำ mixed layers โดยมีหลักการคือ:
เพิ่ม layer ที่สี่ในไฟล์ SFD เป็นชนิด quadratic แล้ว copy spline ทั้งหมดจาก Front Layer ซึ่งเป็น cubic มายัง qudratic layer นี้ ซึ่ง Fontforge จะแปลง spline ให้ขณะ copy
เราสามารถแก้ไข quadratic spline ใน layer ใหม่นี้ได้ หรือหากต้องการ fine-tune TrueType instructions ก็ทำได้ แต่ในเบื้องต้นนี้ยังไม่ edit ใด ๆ และใช้ AutoInstr ไปก่อน
ในการ generate TTF ใน dialog box จะสามารถเลือกให้ generate จาก quadratic layer แทน Front Layer ได้ และใน script อัตโนมัติก็สามารถกำหนด layer ที่จะใช้ได้เช่นกัน เพียงแต่การเลือก layer ยังไม่รองรับใน Fontforge native script ด้วยข้อจำกัดเรื่อง syntax แต่ใน Python script สามารถทำได้
เมื่อได้หลักการเช่นนี้แล้ว ก็ได้แตก branch mixed-layer-ttf เพื่อดำเนินการ โดยตั้งชื่อ quadratic layer ให้เหมือนกันทุกฟอนต์ว่า Quad เพื่อจะได้ใช้ชื่อนี้ใน script ให้ทำงานได้ทุกฟอนต์ และเปลี่ยนมาใช้ Python script สำหรับ TTF แทน native script เดิม
ด้วยหลักการเช่นนี้ source สำหรับ TTF ก็จะเตรียมพร้อมอยู่ใน source สำหรับ generate ได้โดยไม่ต้องแก้ไขกลางอากาศอีก
ทำเสร็จหมดแล้ว ก็ merge เข้า master เสีย เป็นอันเสร็จพิธี
ส่วน LaTeX fonts ไม่มีประเด็นอะไรต้องแก้ ผลคือ ขณะนี้ fonts-tlwg สามารถ build แบบ reproducible ได้ทั้งหมดแล้ว
อนาคต
ประเด็นที่น่าจะทำในอนาคต:
ตัดสินใจว่าจะทำอย่างไรกับ PUA glyphs เช่น
หาวิธี ข้าม PUA glyphs ขณะ generate โดยไม่ต้องลบ glyph เพื่อจะได้หลีกเลี่ยง modification timestamp
ตัด PUA glyphs ออกจาก source เลยไหม? ซึ่งจะหมายถึงการตัดการรองรับ shaping ผ่าน TeX virtual font สำหรับ engine เก่าอย่าง pdfTeX ด้วย
Quad layer ที่เกิดขึ้นได้ให้อิสระในการปรับแต่ง TrueType spline และ instruction แล้ว สามารถ fine-tune ต่อไปในอนาคตได้
โดย Thep (noreply@blogger.com) ณ 21 October 2018 10:36 +0700
29 August 2018
ประกาศเปิดตัวโครงการ thpronun ซึ่งเป็นซอฟต์แวร์เสรีสำหรับวิเคราะห์เสียงอ่านของข้อความภาษาไทย (grapheme-to-phoneme) ภายใต้การสนับสนุนของ บริษัท เมตามีเดีย เทคโนโลยี จำกัด
ซอฟต์แวร์เสรีที่สนับสนุนโดยเอกชน
เรื่องของเรื่องคือ ผมได้รับการติดต่อว่าจ้างจากเมตามีเดียให้พัฒนาโปรแกรมสำหรับแจงคำอ่านจากตัวสะกดของคำไทย ผมจึงได้เสนอที่จะขายไลเซนส์ของตัวโปรแกรมให้ในแบบ GPL ซึ่งปรากฏว่าเมตามีเดียรับข้อเสนอนี้ และยินดีให้เผยแพร่ซอร์สโค้ดของโปรแกรมสู่สาธารณะได้ โดยมุ่งหวังให้เป็น deal ตัวอย่างในเมืองไทยที่นักพัฒนาซอฟต์แวร์เสรีจะสามารถสร้างรายได้จากตัวซอฟต์แวร์โดยตรง จึงขอขอบคุณเมตามีเดียมา ณ ที่นี้
เมื่อได้ข้อตกลงแล้ว ผมจึงนั่งร่างโปรแกรมใน local Git จนโปรแกรมพร้อมทดสอบ จึงได้หารือเรื่อง repository ที่จะใช้ส่งโค้ดระหว่างกัน ซึ่งคุณภัทระก็เสนอให้ใช้ tlwg บน GitHub ไปเลย ดังนั้น TLWG จึงได้เกิดโครงการน้องใหม่คือ thpronun ด้วยประการฉะนี้
นอกจากนี้ ในระหว่างการพัฒนา ก็ได้รับ contribution ใน libthai 0.1.28 เป็นอานิสงส์ด้วย
สัญญาว่าจ้างสิ้นสุดลงเมื่อผมออกรุ่นแรกสู่สาธารณะ (คือ รุ่น 0.2.0 ) หลังจากนี้ไปก็จะพัฒนาในแบบชุมชนโอเพนซอร์สตามปกติ ส่วนเมตามีเดียก็จะมี customization เชิงพาณิชย์สำหรับลูกค้าต่อไป
ลักษณะของโปรแกรม
ตัวโปรแกรมเป็นคำสั่ง command line รับข้อมูลเข้าเป็นข้อความภาษาไทย แล้วจะให้ข้อมูลออกเป็นคำอ่านที่เป็นไปได้ทั้งหมดของข้อความนั้น โดยสามารถเลือกรูปแบบของคำอ่านได้จาก command-line option
$ thpronun --help
Usage: thpronun [OPTION] [WORD...]
Thai word pronunciation program.
It reads Thai words from command-line arguments, or from standard input
if no argument is given, and generates all possible pronunciations
of the words.
Options:
General:
-V, --version Displays program version info
-h, --help Displays help
-d<DICTPATH> Use exception dict from <DICTPATH>
-n Turns off word segmentation
Output structures:
-j Turns on JSON output
-g Turns on grouping in JSON output (implies '-j')
Output notations:
-r Outputs Romanization
-t Outputs Thai pronunciation
-p Outputs Phonetic form
-w Outputs Raw pronunciation code
-s Outputs Soundex code
ตัวอย่างคำอ่านภาษาไทย:
$ thpronun -t เถลไถล
เถลไถล:
ถะ-เหฺล-ถะ-หฺลัย
เถน-ถะ-หฺลัย
เถ-ละ-ถะ-หฺลัย
Romanization:
$ thpronun -r เถลไถล
เถลไถล:
thalethalai
thenthalai
thelathalai
phonetic:
$ thpronun -p เถลไถล
เถลไถล:
thah1 ley4 thah1 lahy4
theyn4 thah1 lahy4
they4 lah3 thah1 lahy4
soundex:
$ thpronun -s เถลไถล
เถลไถล:
Ta_-le_-Ta_-lay
Ten-Ta_-lay
Te_-la_-Ta_-lay
หรือกระทั่ง raw code ตามที่เก็บในโปรแกรม:
$ thpronun -w เถลไถล
เถลไถล:
T_a_1@-3,l_E_4@3,T_a_1@-306,l_ay4@6
T_En4@3,T_a_1@-306,l_ay4@6
T_E_4@2,l_a_3@3,T_a_1@-306,l_ay4@6
กลไกภายใน
ตัวโปรแกรมพัฒนาด้วย C++14 (ควรคอมไพล์ด้วย GCC 6.1 ขึ้นไป หรือ Clang 3.4 ขึ้นไป ) ซึ่งมีสิ่งอำนวยความสะดวกครบครันอย่างที่ภาษาโปรแกรมในยุคนี้ควรมี ทำให้ได้โค้ดที่กระชับและใช้เวลาพัฒนาไม่นานเกินไป โดยเฉพาะเมื่อเทียบกับ C++ สมัยก่อน ๆ
build-dependencies:
libthai สำหรับแยกแยะอักขระภาษาไทยและแบ่งคำ
libdatrie สำหรับจัดการพจนานุกรมคำยกเว้น
help2man สำหรับสร้าง man page อัตโนมัติ (ปิดใช้ได้ด้วย configure option --disable-man
)
กลไกภายใน ใช้ hard-coded rule base แบบดิบ ๆ เลย ซึ่งมีข้อดีคือไม่ต้องเสียเวลาเตรียม corpus และสามารถปรับแก้กฎต่าง ๆ ได้ตามต้องการภายในกำหนดเวลาพัฒนาที่มี แต่ข้อเสียนอกเหนือจากเรื่อง human error ที่ต้องตามแก้ในกฎก็คือ ไม่สามารถให้น้ำหนักคำอ่านแต่ละแบบตามความน่าจะเป็นได้ ซึ่งเผอิญว่าโจทย์ที่ต้องการคือการค้นฐานข้อมูล ไม่ใช่การสังเคราะห์เสียงพูดที่ต้องเลือกคำอ่านเพียงแบบเดียว จึงยังพอกล้อมแกล้มได้
เมื่อแจงรูปแบบพยางค์ของ input ด้วยกฎแล้ว ก็จะได้ abstract representation ของคำอ่าน ซึ่งสามารถใช้ polymorphism ในการ generate รูปแบบคำอ่านสุดท้ายที่ต้องการ ไม่ว่าจะเป็น romanization, คำอ่านเรียงพยางค์ด้วยอักษรไทย, คำอ่านแบบ phonetic หรือกระทั่ง soundex
องค์ประกอบหลักของแต่ละพยางค์ประกอบด้วย:
เสียงพยัญชนะต้น
เสียงพยัญชนะควบกล้ำ (ถ้ามี)
เสียงสระ
เสียงพยัญชนะสะกด
เสียงวรรณยุกต์
นอกจากนี้ ยังมี requirement เพิ่มเติมจากเมตามีเดียที่ต้องการให้จัดโครงสร้างข้อมูลเป็น lattice โดยแทนที่จะ enumerate คำอ่านทุก combination เป็น list เส้นตรง ก็ให้จัดเป็น lattice โดยแยกเส้นทางคำอ่านเฉพาะในช่วงที่อ่านได้หลายแบบ แล้ว merge กลับเมื่อถึงจุดร่วม โดยให้จัดรูปแบบ output เป็น nested list ของ JSON (ไม่เกิน 2 ชั้น)
$ thpronun -t -g เถลไถล
เถลไถล:
[[[["เถ","ละ"],["เถน"],["ถะ","เหฺล"]],[["ถะ","หฺลัย"]]]]
โครงสร้างดังกล่าวสามารถแทนได้ด้วย Directed Acyclic Graph (DAG) โดยแต่ละ vertex ของกราฟแทนตำแหน่งอักขระจบพยางค์ในข้อความ input และแต่ละ edge แทนเสียงอ่านที่เกิดขึ้นระหว่างตำแหน่งที่มันเชื่อมโยง
ด้วย requirement นี้ ทำให้ทุกฟีเจอร์ที่จะเพิ่มต้องคำนึงถึงการแปลงเข้าสู่ DAG และการทำ output grouping เสมอ จึงต้องเพิ่มข้อมูลตำแหน่งอักขระจบพยางค์เป็นองค์ประกอบที่หกของทุกพยางค์ด้วย โดยบางพยางค์ที่เพิ่มเข้ามาเพราะหลักอักษรนำ (เช่น ถะ ใน เถล และ ไถล ข้างต้น) ต้องแทนด้วยเลขลบที่ encode ขอบเขตพยางค์ที่มันเกาะอยู่ไปด้วยในเวลาเดียวกัน (ในทางเทคนิค สูตรที่ใช้คือ -(ตำแหน่งต้นพยางค์ * 100 + ตำแหน่งท้ายพยางค์)
)
ข้อยกเว้น
กฎที่ใช้แจงพยางค์จะพยายามครอบคลุมพยางค์ทั่ว ๆ ไป แต่จะไม่เจาะจงข้อยกเว้นบางอย่าง เช่น ทร ที่อ่านเป็น ซ, ฑ นางมณโฑ ที่อ่านเป็น ด, เสียงวรรณยุกต์ของคำแผลง (เช่น กำเนิด, ตำรวจ), การันต์ซับซ้อน (เช่น กษัตริย์, สิริกิติ์, รามเกียรติ์, สุรเกียรติ์) ฯลฯ ซึ่งกรณีเหล่านี้จะจัดการด้วยพจนานุกรมคำยกเว้น (exception dictionary) เพราะการพยายามรวมในกฎจะทำให้เกิด noise เป็นคำอ่านที่ผิดเจือปนเข้ามาโดยไม่จำเป็นสำหรับกรณีทั่วไป
โดยปกติ thpronun
จะมีพจนานุกรมคำยกเว้นมาให้อยู่แล้ว แต่คุณก็สามารถสร้างพจนานุกรมคำยกเว้นเองได้ โดยดัดแปลงจากไดเรกทอรี data/
ใน source tree และใช้ตัวเลือก -d<DICTPATH>
ใน command line เพื่อระบุพจนานุกรมคำยกเว้น
เนื้อหาของพจนานุกรม จะ map จากตัวสะกดคำไทยไปเป็นคำอ่านในรูป raw code ซึ่งเป็นรูปแบบภายในของโปรแกรมที่แสดงจากตัวเลือก -w
เช่น:
ทรง s_og0@3
ทรัพย์ s_ap3@6
การแบ่งคำ
ในกรณีทั่วไป การแบ่งคำข้อความก่อนแจงพยางค์ก็ช่วยลดจำนวนคำอ่านที่เป็นไปได้ลงได้มาก โดยปกติ thpronun
จึงเรียกใช้ LibThai เพื่อแบ่งคำก่อน แต่ในบางกรณี การแบ่งคำก็อาจตัดคำอ่านที่ควรจะเป็นออกไปได้ เช่น ในกรณีของคำที่ไม่อยู่ในพจนานุกรมของ LibThai เอง ในกรณีเช่นนั้น คุณก็สามารถปิดการแบ่งคำก่อนได้ โดยใช้ตัวเลือก -n
ใน command line
โดย Thep (noreply@blogger.com) ณ 29 August 2018 05:57 +0700
23 August 2018
บันทึกการเปลี่ยนแปลงต่าง ๆ ที่มาใน LibThai 0.1.28 และผลพวงทั้งหลายหลังจากนั้น
LibThai 0.1.28 ออกไปตั้งแต่ต้นเดือน โดยรุ่นนี้มีรายการเปลี่ยนแปลงสำคัญ ๆ คือ:
แก้ปัญหาขาด header <thai/thwchar.h>
ใน header ที่เกี่ยวกับฟังก์ชัน wide char หลาย ๆ ตัว เช่น thwbrk.h
, thwcoll.h
ฯลฯ ซึ่งเป็นปัญหาที่พบระหว่างเขียนโปรแกรมตัวหนึ่งที่เรียกใช้ libthai ทำให้ต้อง include thai/thwchar.h
เอง ซึ่งไม่สะดวก ในรุ่นนี้สามารถ include header ที่ต้องการแล้วเรียกใช้งานได้เลย ไม่ต้องเพิ่ม include เองอีกแล้ว
ปรับโค้ดให้เป็นไปตาม C90 (ANSI C) มากขึ้น เป็นผลพวงจากที่ได้ทำกับ libdatrie 0.2.12 มาแล้ว
ปรับข้อมูลพจนานุกรมตัดคำ โดยในรุ่นนี้ได้รับความช่วยเหลือจากคุณ @nuttee15 จาก metamedia technology ที่ได้เสนอคำเพิ่มเข้ามาใน Issue #2 ที่เปิดไว้รับเสนอคำใหม่ในพจนานุกรมตัดคำ
จากนั้นก็ได้ upload debian package พร้อมความเปลี่ยนแปลงอย่างอื่น คือ เพิ่ม pkg-config
ให้เป็น dependency ของ libthai-dev
เพื่อให้แน่ใจว่า libthai.pc
จะสามารถทำงานได้แม้ในระบบที่ติดตั้งแบบเล็กที่สุด (เป็นปัญหาที่พบระหว่างที่ทำงานชิ้นหนึ่งร่วมกับ metamedia technology) และ การรองรับการ build ที่ไม่ต้องใช้ (fake)root
รายการคำจากพจนานุกรมตัดคำของ libthai ก็ได้นำไปใช้ สร้าง hyphenation pattern ที่โครงการ thailatex ซึ่งขณะนี้กลายสภาพเป็นเพียงที่พักงานพัฒนา hyphenation pattern เท่านั้น จากนั้นจึงได้เสนอ pull request สำหรับ update hyphenation pattern สำหรับภาษาไทยในโครงการ TeX hyphenation patterns ซึ่งต้องรอการ merge เพื่อให้มีผลที่ต้นน้ำต่อไป
จาก TeX hyphenation pattern ก็ต้อง sync มายังเครื่องมือตัดคำสำหรับเอกสาร LaTeX ด้วย คือ swath ซึ่งนอกจากการปรับพจนานุกรมแล้ว ก็ได้ปรับโค้ดเล็ก ๆ น้อย ๆ ตามที่เคยทำในทุกรุ่นที่ผ่านมา โดยสิ่งที่ทำในรุ่นนี้คือ:
ทดลอง build โดยใช้ CFLAGS -Wall
แล้วแก้ warning ต่าง ๆ
จากการแก้ warning ที่พบในโค้ดส่วน RTF filter ทำให้ตรวจพบความผิดปกติใน method หนึ่งที่ตัวฟังก์ชันทำงานตรงข้ามกับชื่อ คือ RTFToken::isEmpty()
โค้ดส่วนจัดการ RTF นี้ ไม่ค่อยมีใครเรียกใช้ ความจริงผมเคยเสนอจะตัดทิ้งไปแล้ว แต่ด้วยความช่วยเหลือของคนในชุมชน (คุณวิทยา ไตรสารวัฒนะ) ทำให้ได้วิธีทดสอบความถูกต้องของโปรแกรม จึงยังคงเก็บไว้ แต่เนื่องจากเวลานั้น swath ยังไม่เริ่มทำ TDD จึงยังไม่ได้ใส่ test case ไว้ใน source tree
เพื่อจะตรวจแก้ฟังก์ชันที่สงสัยนี้ ผมจึงต้องไปดึงเอกสารตัวอย่างมาจาก thread เก่าที่ว่า แล้วนำมา เพิ่ม test case เสียก่อน หากคุณสงสัยว่าทำไม source tarball ของ swath รุ่นนี้ถึงโตขึ้นจนผิดสังเกต มันก็มาจากเอกสาร RTF ทดสอบนี้นี่เอง
จากนั้น จึงได้ แก้ฟังก์ชันที่สงสัย นั้น แล้วรัน test เปรียบเทียบ output ดูโดยใช้ LibreOffice ปรากฏว่าเป็นการแก้ที่ถูกต้องแล้ว เพราะมันทำให้ได้จุดตัดคำครบถ้วนสมบูรณ์ขึ้น
ไม่ว่าจะมีใครใช้หรือไม่ก็ตาม แต่คอมไพเลอร์ยังคงคอมไพล์มันอยู่ และนำผมเข้ามาเจอและแก้บั๊กจนได้
แก้ warning อื่น ๆ และทำความสะอาดโค้ดเล็ก ๆ น้อย ๆ
สุดท้าย มี pull request ของคุณ @pepa65 ที่เสนอไว้นานแล้ว เพื่อร่างแฟ้ม INSTALL
ที่อธิบายความแตกต่างของวิธี build swath จาก git กับจาก released tarball ซึ่งผมก็เห็นว่ามีประโยชน์กว่าแฟ้ม INSTALL
ที่ GNU automake มันเติมให้แบบอัตโนมัติ จึง merge เข้ามาเสีย
แล้วก็ออกรุ่น swath 0.6.1 ตามมาด้วย Debian upload ซึ่งก่อนอัปโหลดก็ได้ปรับ branch layout ของ swath packaging ตาม DEP-14 ด้วย
โดย Thep (noreply@blogger.com) ณ 23 August 2018 05:20 +0700
21 August 2018
บันทึกเตือนความจำสำหรับการทำตาม DEP-14: Recommended layout for Git packaging repositories เพื่อนำไปใช้ทำกับแพกเกจอื่น ๆ ในความดูแลของผมต่อไป
สำหรับ Debian package ปกติที่จัดการเวอร์ชันบน Git และใช้ git-buildpackage
ในการ build นั้น จะมี branch layout ดังนี้:
master
pristine-tar
upstream
master
เป็น branch หลักที่มีทั้ง upstream source tree และ Debian control files ครบสำหรับ build deb
upstream
เป็น branch ที่เก็บ upstream source tree ซึ่ง maintainer จะ import source รุ่นใหม่เข้าที่นี่ก่อน (ถ้ามีการ repack เพื่อให้สอดคล้องกับ DFSG ก็ repack ก่อน import) แล้วจึง merge เข้าที่ master
เพื่อเป็นการปรับรุ่น upstream ของ deb เอง
pristine-tar
เป็น branch สำหรับ regenerate binary tarball รุ่นต่าง ๆ ของ upstream เพื่อใช้เป็นไฟล์ *.orig.tar.[gz|bz2|xz]
โดยเก็บเฉพาะ delta ระหว่างรุ่นต่าง ๆ เพื่อให้ใช้เนื้อที่อย่างมีประสิทธิภาพสูงสุด
ศึกษารายละเอียดเพิ่มเติมได้ที่:
DEP-14 ได้แนะนำให้ใช้ branch layout แบบใหม่ เพื่อให้ Debian derivatives ต่าง ๆ ทำงานได้สะดวกขึ้น พร้อมกับเป็นการเตรียมการสำหรับเครื่องมือสร้างแพกเกจบน Git ต่าง ๆ ที่จะมีต่อไปในอนาคต
สำหรับแพกเกจใน Debian เอง โดยสรุปแล้วจะมีการเปลี่ยนแปลง branch layout ภาคบังคับอยู่ 2 รายการ คือ:
master
เปลี่ยนเป็น debian/master
upstream
เปลี่ยนเป็น upstream/latest
ทำให้มี branch layout ขั้นต่ำคือ:
debian/master
pristine-tar
upstream/latest
ที่เหลือก็ขึ้นอยู่กับความเปลี่ยนแปลงที่เกิดขึ้นกับแพกเกจ เช่น:
ถ้ามีการ update ใน stable release (เช่น security update, proposed update, backport) ก็ทำใน branch debian/jessie
, debian/wheezy
, debian/wheezy-backports
ฯลฯ แล้วแต่กรณี
ถ้ามี experimental upload ก็ทำใน branch debian/experimental
ซึ่งเป็น branch ชั่วคราวจนกว่าจะ merge เข้า debian/master
หรือถ้าแพกเกจไหนมี experimental upload คู่ขนานกับ stable upload อยู่เป็นนิตย์ ก็อาจจะแทน branch debian/master
ด้วย debian/sid
แล้วก็ไม่ต้องลบ branch debian/experimental
เลยก็ได้
ถ้าต้อง update upstream ขนานกันหลาย branch ก็อาจจะใช้ upstream/latest
เก็บ development release ล่าสุด และสร้าง branch เช่น upstream/1.2.x
ไว้เก็บ upstream รุ่น 1.2.*
สำหรับแพกเกจที่ผมดูแล ส่งตรงจาก linux.thai.net ซึ่งที่ผ่านมามีแต่ release เป็นเส้นตรง ไม่มีแยกแขนง ก็มักไม่มีความซับซ้อนอะไร (ยกเว้นตอนที่มี security update) สิ่งที่ต้องทำในตอนนี้จึงมีเพียง 3 ขั้นตอน:
เปลี่ยนชื่อ branch upstream
เป็น upstream/latest
เปลี่ยนชื่อ branch master
เป็น debian/master
เพิ่มไฟล์ debian/gbp.conf
เพื่อระบุให้ใช้ branch ชื่อใหม่
เปลี่ยนชื่อ branch upstream
การเปลี่ยนชื่อ Git remote branch สามารถทำได้ตามขั้นตอนดังนี้
เปลี่ยนชื่อ local branch
$ git branch -m upstream upstream/latest
ลบ remote branch upstream
$ git push origin :upstream
push local branch ชื่อใหม่ไปที่ remote
$ git push --set-upstream origin upstream/latest
เปลี่ยนชื่อ branch master
โดยหลักการแล้วก็ทำเหมือนตอนเปลี่ยนชื่อ branch upstream
นั่นแหละ แต่จะมีความไม่ตรงไปตรงมานิดหน่อย
เปลี่ยนชื่อ local branch
$ git branch -m master debian/master
ลบ remote branch master
ขั้นตอนนี้แหละที่ tricky ที่สุด เพราะ คุณกำลังจะลบ default branch (master
) ออกจาก repository!
ถ้าคุณใช้ Salsa ล่ะก็ hook script ของมันจะปฏิเสธไม่ให้ลบ default branch ผ่านการ push เลยทีเดียว คุณต้องทำผ่าน web interface ดังนี้
เปลี่ยน default branch ไปที่อื่นก่อน โดยใช้เมนู Settings > General > Default Branch
ลบ branch master
โดยใช้เมนู Repository > Branches สังเกตว่า branch master
จะถูก protect ไว้ ไม่สามารถลบผ่านการ push ได้ แต่ใช้ web interface ลบได้ โดยมันจะถามยืนยันก่อนลบ
push local branch ชื่อใหม่ไปที่ remote
$ git push --set-upstream origin debian/master
เปลี่ยน default branch ให้ชี้มาที่ debian/master
โดยใช้เมนู Settings > General > Default Branch
เพิ่มไฟล์ debian/gbp.conf
คุณอาจจะต้อง clone Git repository ใหม่อีกครั้ง เพื่อให้ค่าต่าง ๆ ของ origin
ตรงกับของ remote (เช่น HEAD
)
จากนั้น เพิ่มไฟล์ debian/gbp.conf
ที่มีเนื้อหาดังนี้:
[DEFAULT]
pristine-tar = True
debian-branch = debian/master
upstream-branch = upstream/latest
ก็จะสามารถ build package ด้วย git-buildpackage
ได้ตามปกติผ่าน branch layout ตาม DEP-14
โดย Thep (noreply@blogger.com) ณ 21 August 2018 08:09 +0700