Planet TLWG

Subscribe to Planet TLWG feed
Planet TLWG - http://debianclub.org/planet-tlwg
Updated: 29 min 15 sec ago

Ott: อ่านผลตรวจเลือดด้วยตนเอง

17 August, 2016 - 21:35
แปะเก็บไว้
อ่านผลตรวจเลือดด้วยตนเอง (ควรจัดพิมพ์เก็บเอาไว้อ่านเทียบกับผลตรวจสุขภาพประจำปีนะครับ)
โดย นพ.สันต์ ใจยอดศิลป์
วันนี้ผมจะรวบยอดสอนการแปลผลการตรวจเคมีในเลือดให้ฟัง ท่านที่ถามมาคล้ายกันแต่ว่าผมไม่ได้ตอบก็ขอให้เอาวิธีแปลผลที่คุยกันวันนี้ไปแปลผลการตรวจของท่านเอาเองก็แล้วกัน
1. Blood chemistry แปลตรงๆว่าเคมีของเลือด หมายถึงระดับของสารต่างๆที่อยู่ในเลือดซึ่งก่อปฏิกิริยาเคมีได้ ซึ่งการเพิ่มขึ้นหรือลดลงของสารเหล่านี้ บ่งบอกไปถึงว่าจะมีโรคอะไรเกิดขึ้นในร่างกายบ้าง
 2. FBS = ย่อมาจาก fasting blood sugar แปลว่าระดับน้ำตาลในเลือดหลังการอดอาหารมาอย่างน้อย 8 ชั่วโมง เป็นการตรวจสถานะของโรคเบาหวานโดยตรง คือคนปกติค่านี้จะต่ำกว่า 100 mg/dL ถ้าของใครสูงเกิน 125 ก็ถือว่าเป็นเบาหวานแล้วอย่างบริบูรณ์
3. HbA1C = ย่อมาจาก hemoglobin A1C แปลว่าระน้ำตาลสะสมเฉลี่ยสามเดือนในเม็ดเลือดแดง มีความหมายคล้ายๆกับค่า FBS คือโดยคำนิยาม ถ้าน้ำตาลสะสมเฉลี่ยของของใครสูงกว่า 6.5% ก็ถือว่าเป็นโรคเบาหวานไปแล้วอย่างบริบูรณ์ ค่า HbA1C นี้ดีกว่าค่า FBS ในสองประเด็น คือ 3.1 ทำให้เราตรวจคัดกรองเบาหวานได้ทุกเมื่อ โดยไม่ต้องอดอาหารมาล่วงหน้า 3.2 การที่มันสะท้อนค่าน้ำตาลในเลือดในช่วงเวลาสามเดือนย้อนหลัง จึงตัดปัญหาระดับน้ำตาลวูบวาบในช่วงหนึ่งวันก่อนการตรวจ คือคนไข้บางคนที่จะทำตัวดีเฉพาะสองสามวันก่อนไปหาหมอเพื่อให้น้ำตาลในเลือดดูดี พอคล้อยหลังหมอตรวจเสร็จก็ออกมาสั่งไอติมมากินเป็นกะละมังให้หายอยาก คนไข้แบบนี้การตรวจ HbA1C จะทำให้ทราบสถานะที่แท้จริงของเบาหวานดีกว่า
4. BUN =  ย่อมาจาก blood urea nitrogen แปลว่าไนโตรเจนในรูปของยูเรีย  ตัวยูเรียนี้เป็นเศษของเหลือจากการเผาผลาญโปรตีนที่ตับ ซึ่งต้องถูกกำจัดทิ้งโดยไต การวัดระดับค่าของ BUN เป็นตัวบ่งบอกว่าเลือดไหลไปกรองที่ไตมากพอหรือไม่ ในภาวะที่เลือดไหลไปกรองที่ไตน้อยลง เช่นในภาวะร่างกายขาดน้ำ หรือสูญเสียเลือดไปทางอื่นเช่นเลือดออกในทางเดินอาหาร หรือในภาวะช็อก ระดับของ BUN จะสูงขึ้นอย่างรวดเร็ว ค่าปกติของ BUN คือ 8-24 
5. Cr = เขียนเต็มว่า Creatinine แปลว่าเศษเหลือจากการสลายตัวของกล้ามเนื้อ คือกล้ามเนื้อของคนเรานี้มันสลายตัวและสร้างใหม่อยู่ตลอดเวลา คนมีกล้ามมากก็สลายตัวมากสร้างมาก Cr ซึ่งเป็นเศษซากที่สลายตัวออกมาจะถูกไตขับทิ้งไป แต่ในกรณีที่ไตเสียการทำงาน เช่นเป็นโรคไตเรื้อรัง ไตจะขับ Cr ออกทิ้งไม่ทันกับที่กล้ามเนื้อสลายออกมา ทำให้ระดับ Cr ในเลือดสูงผิดปกติ ค่าปกติของมันคือ 0.7-1.2 mg/dL 
6. eGFR = เรียกสั้นๆว่า จีเอฟอาร์. ย่อมาจาก estimated glomerular filtration rate แปลว่าอัตราการไหลของเลือดผ่านตัวกรองของไตในหนึ่งนาที ค่านี้ได้จากการคำนวณเอาจาก Cr กับอายุ และชาติพันธุ์ของเจ้าตัว ห้องแล็บที่ยังไม่ทันสมัยจะไม่รายงานค่านี้ ถ้าเจ้าตัวอยากทราบค่านี้ต้องเอาค่า Cr ที่ได้ไปอาศัย GFR calculator ตามเว็บในเน็ทคำนวณให้ ค่าจีเอฟอาร์.นี้มีประโยชน์มากในแง่ที่ใช้แบ่งระดับความรุนแรงของคนที่ Cr ผิดปกติอย่างคุณนี้ว่ามีความรุนแรงเป็นโรคไตเรื้อรังระยะไหนของ 5 ระยะ กล่าวคือ  ระยะที่ 1 ตรวจพบพยาธิสภาพที่ไตแล้ว แต่ไตยังทำงานปกติ (จีเอฟอาร์ 90 มล./นาที ขึ้นไป)  ระยะที่ 2 ตรวจพบพยาธิสภาพที่ไตแล้ว และไตเริ่มทำงานผิดปกติเล็กน้อย (จีเอฟอาร์ 60-89 มล./นาที) ระยะที่ 3 ไตทำงานผิดปกติปานกลาง ไม่ว่าจะตรวจพบพยาธิสภาพที่ไตหรือไม่ก็ตาม (จีเอฟอาร์ 30-59 มล./นาที )ระยะที่ 4 ไตทำงานผิดปกติมาก (จีเอฟอาร์ 15-29 มล./นาที) ระยะที่ 5. ระยะสุดท้าย (จีเอฟอาร์ต่ำกว่า 15 หรือต้องล้างไต)    
 7. Uric acid ก็คือกรดยูริกที่เป็นต้นเหตุของโรคเก้าท์นั่นแหละ ค่าปกติของกรดยูริกในเลือดคือ 3.4-7.0 
8. Triglyceride คือไขมันไตรกลีเซอไรด์ ซึ่งเป็นไขมันก่อโรคชนิดหนึ่งในร่างกายเรา ระดับที่สูงจนต้องใช้ยาคือเกิน 200 mg/dl 
9. HDL-cholesterol เรียกสั้นๆว่าเอ็ช.ดี.แอล. เรียกอีกอย่างว่า “ไขมันดี” เพราะมันเป็นไขมันที่ดึงไขมันที่พอกหลอดเลือดออกไปจากหลอดเลือด ดังนั้นยิ่งมีเอ็ช.ดี.แอล.มากก็ยิ่งดี คนปกติควรมีเอ็ชดีแอล.เกิน 40 mg/dl ขึ้นไป 
10. LDL-cholesterol เรียกสั้นๆว่าแอลดีแอล. หรือเรียกอีกอย่างว่า “ไขมันเลว” เพราะมันเป็นตัวไขมันที่พอกอยู่ที่ผนังหลอดเลือดและเป็นไขมันก่อโรคโดยตรง การจะตัดสินว่าคนไข้คนไหนควรกินยาลดไขมันเมื่อไหร่ก็ตัดสินกันจากระดับแอลดีแอล.นี่แหละ โดยเทียบกับความเสี่ยงในการเป็นโรคที่แต่ละคนมีเป็นทุนอยู่แล้ว  กล่าวคือ - ถ้ามีความเสี่ยงต่ำ จะให้เริ่มทานยาลดไขมันเมื่อ LDL มากกว่า 160 - ถ้ามีความเสี่ยงปานกลาง จะให้เริ่มทานยาลดไขมัน เมื่อ LDL มากกว่า 130 - ถ้ามีความเสี่ยงสูง หรือเป็นโรคหัวใจ หรือเบาหวาน หรืออัมพาตแล้ว จะให้เริ่มทานยาลดไขมันเมื่อ LDL มากกว่า 100   
11. Total Cholesterol หมายถึงโคเลสเตอรอลรวมในร่างกาย เป็นค่ารวมของไขมันสามอย่าง กล่าวคือ     โคเลสเตอรอลรวม = ไขมันดี (HDL) + ไขมันเลว (LDL) + หนึ่งในห้าของไขมันไตรกลีเซอไรด์      สมัยก่อนเราใช้ค่าโคเลสเตอรอลรวมตัวนี้ตัวเดียวในการประเมินไขมันในเลือด จึงได้กำหนดค่าปกติไว้ว่าถ้าสูงเกิน 240 mg/dl จึงจะถือว่าสูงและเริ่มใช้ยา  แต่สมัยนี้เราไม่ค่อยจะดูค่าโคเลสเตอรอลรวมกันเท่าไหร่แล้ว เราดูเจาะลึกลงไปถึงไขมันแต่ละชนิด และตัดสินใจใช้หรือไม่ใช้ยาจากระดับไขมันเลว (LDL) โดยไม่สนใจโคเลสเตอรอลรวมแล้ว เพราะค่านี้มักชักนำให้เข้าใจผิด ยกตัวอย่างเช่นถ้าดูค่าโคเลสเตอรอลรวมได้ 214 ซึ่งก็แค่สูงเกินพอดีไปบ้างแต่ไม่สูงถึงกับต้องใช้ยา แต่ว่าจริงๆแล้วเป็นความเข้าใจผิด เพราะค่าโคเลสเตอรอลรวมดูต่ำอยู่ได้เพราะมีไขมันดี (HDL) ต่ำกว่าปกติ เลยพลอยทำให้ค่าโคเลสเตอรอลรวมต่ำไปด้วย ทั้งๆที่เป็นคนมีไขมันเลวอยู่ในระดับสูงถึงขั้นต้องใช้ยาแล้ว 
12. AST(SGOT) = ย่อมาจาก aspartate transaminase หรือชื่อเก่าว่า serum glutamic oxaloacetic transaminase เป็นเอ็นไซม์ที่ปกติอยู่ในเซลของตับ ซึ่งจะไม่ออกมาในเลือด หากมีเอ็นไซม์ตัวนี้ออกมาในเลือดมากก็แสดงว่าเซลตับกำลังได้รับความเสียหาย เช่นอาจจะมีตับอักเสบจากการติดเชื้อหรือจากสารพิษ หรือแม้กระทั้งจากแอลกอฮอล์ และไขมันแทรกเนื้อตับ ค่าปกติของ AST คือไม่เกิน 40 IU/L 
13. ALT (SGPT) = ย่อมาจาก alamine amintransferase หรือชื่อเก่าว่า serum glutamic pyruvic transaminase เป็นเอ็นไซม์ที่ปกติอยู่ในเซลของตับเช่นเดียวกับ AST และจะออกมาในเลือดเมื่อเซลตับได้รับความเสียหายเช่นกัน โดยเฉพาะอย่างยิ่งในกรณีที่มีเนื้องอกอุดตันทางเดินน้ำดี ค่าปกติของ ALT คือไม่เกิน 34 IU/L 
14. Alkaline Phosphatase = เป็นเอ็นไซม์ที่อยู่ในเซลของตับ ทางเดินน้ำดี และของกระดูกเป็นส่วนใหญ่ ความหมายของเอ็นไซม์ตัวนี้หากมันสูงขึ้นคืออาจจะมีปัญหาที่ทางเดินน้ำดี ตับ หรือกระดูก ค่าปกติในผู้ชายผู้ใหญ่ไม่เกิน 128 U/L
15. GTT = ย่อมาจาก gamma glytamyl transpeptidase เป็นเอ็นไซม์ในเซลตับและทางเดินน้ำดีเช่นเดียวกับ ALT มีความไวต่อความเสียหายของเซลตับมากกว่า แต่ขาดความจำเพาะเจาะจง หมายความว่าเมื่อ GTT สูงจะเกิดจากอะไรก็ได้ที่อาจจะไม่ใช่เรื่องของตับ เช่นอาจมีปัญหาที่ตับอ่อน ที่หัวใจ ที่ปอด หรือแม้กระทั่งเป็นเบาหวาน อ้วน หรือดื่มแอลกอฮอล์ ก็ทำให้ GTT สูงได้ สารตัวนี้จึงไม่มีประโยชน์ในการคัดกรองโรคเลย 
16. HBs Ag = ย่อมาจาก hepatitis B surface antigen แปลว่าตัวไวรัสตับอักเสบบี.ซึ่งตรวจจากโมเลกุลที่ผิวของมัน ถ้าตรวจได้ผลบวกก็แปลว่ามีเชื้อไวรัสตับอักเสบบี.อยู่ในตัว หากตรวจได้ผลลบ ก็แปลว่าไม่มีเชื้อไวรัสตับอักเสบบี
17. Anti HBs = ย่อมาจาก antibody to hepatitis B surface antigen แปลว่าภูมิต้านทานต่อไวรัสตับอักเสบบี. หากตรวจได้ผลบวกก็แปลว่าคุณมีภูมิคุ้มกันต่อไวรัสบี.แล้ว ไม่ต้องไปแสวงหาการฉีดวัคซีน

Kitt: do-release-upgrade and PHP7

13 August, 2016 - 21:08
16.04.1 ออกมาได้ประมาณหนึ่งสัปดาห์ 14.04 ก็เริ่มจะ upgrade กันได้ วันนี้สั่ง do-release-upgrade เรียบร้อยดี ลง PHP7 เพิ่ม / เอา PHP5 ออก / แก้ไข socket path = เว็บกลับมาปกติ ง่ายเกินไปนะ :P

Kitt: ceph

2 July, 2016 - 12:06
วันนี้ ceph เดี้ยง สืบพบว่ามาจาก monitor node 2 ใน 3 ตัว ..  ทั้งสองตัว เป็น VM connect ได้ daemon running  แต่ disk ของตัว host เป็น read-only .. พอ monitor พยายามบันทึกข้อมูลลง disk ไม่ได้มันก็ค้าง พอ monitor ค้าง ceph cluster ทั้งก้อนหยุดทำงาน ได้ใช้ท่า troubleshooting: stop monitor / dump monmap / ลบ monitor node ที่ใช้งานไม่ได้ออกไปจาก monmap / inject monmap ตัวใหม่เข้า monitor node ที่ใช้งานได้ restart monitor … Continue reading ceph →

Kitt: Password authentication must die .. soon.

30 June, 2016 - 14:39
Password authentication depends on user input. To make it safe, one of the requirement is that you need to do it safely and quickly enough and hope that nobody could catch what you type on the keyboard. Nowadays, we can’t hope such. With naked eyes, we can simply read gestures, types, presses most of people … Continue reading Password authentication must die .. soon. →

Thep: LibThai 0.1.25 : More on Thread-safety

29 June, 2016 - 12:08

LibThai 0.1.25 ออกแล้ว ความเปลี่ยนแปลงหลักของรุ่นนี้อยู่ที่เรื่อง API ใหม่ที่ thread-safe กว่าเดิม และเรื่องย่อย ๆ คือการแก้ปัญหาการคอมไพล์ด้วย GCC 6 และการปรับพจนานุกรมตัดคำตามปกติ

Thread Safety

ในรุ่น 0.1.23 ได้ทำเรื่อง thread safety ไปแล้วส่วนหนึ่ง จากประเด็นที่พบใน Pango เมื่อมีหลายเธรดพยายามเรียกฟังก์ชันตัดคำพร้อมกัน ทำให้เกิดการแย่งใช้ free list ดังที่เคยอธิบายไว้ใน blog เก่า แต่ก็ยังแก้ไม่หมดจดพอ ดังที่คุณ Mark Brown ได้รายงานมาใน กลุ่มเมล Thai Linux/FOSS developers ว่ายังเหลืออีกจุดหนึ่ง คือขณะเปิดพจนานุกรมเป็นการภายในในการเรียกครั้งแรก เพราะจะยังมีการแย่งกันเปิดพจนานุกรมจนเกิดออบเจกต์พจนานุกรมหลายชุด แม้สุดท้ายจะใช้งานแค่ชุดเดียวและโปรแกรมก็ไม่แครช แต่ออบเจกต์ชุดที่เหลือก็เปลืองเนื้อที่ในหน่วยความจำ และจะไม่ถูกทำลายเมื่อจบโปรแกรมอีกด้วย

วิธีแก้ปัญหาได้พัฒนามาเป็นขั้นเป็นตอนดังนี้ :-

  1. ใช้ mutex ขณะเปิดพจนานุกรม เพื่อให้มีเพียงเธรดเดียวที่เปิด เธรดที่เหลือแค่รอใช้ แต่ปัญหาคือ mutex ของแต่ละ OS จะเรียกไม่เหมือนกัน (บน Linux และ Unix-like OS ทั้งหลาย ใช้ POSIX thread ส่วนวินโดวส์ใช้ Mutex Object ของตัวเอง แม้จะมี pthreads-win32 เป็น wrapper ให้ใช้ แต่ก็ยังต้องสร้างระบบ build และทดสอบขึ้นมาอีก) การจะใช้ mutex ใน libthai จะต้องสร้าง layer ใหม่เพื่อให้ยังคงทำงานข้ามแพลตฟอร์มได้ เป็นงานที่ใหญ่พอสมควรเมื่อเทียบกับปัญหาที่แก้
  2. แยกฟังก์ชันเปิดพจนานุกรมออกมาต่างหาก เป็นแนวคิดที่คุณ Mark Brown ปิ๊งขึ้นมาระหว่างทำอีกประเด็นหนึ่ง คือ การอนุญาตให้ระบุแฟ้มพจนานุกรมที่จะโหลด สำหรับใช้ในกรณีที่ผู้ใช้ไม่ต้องการใช้พจนานุกรมมาตรฐานของ libthai ซึ่งเมื่อกำหนดฟังก์ชันนี้ขึ้นมาแล้ว ก็จะเกิดขั้นตอนใหม่เพิ่มขึ้นก่อนที่ผู้ใช้จะตัดคำ คือการเช็กและเปิดพจนานุกรม ซึ่งผู้ใช้สามารถเรียกใช้ใน critical region ที่มีการล็อคด้วย mutex เองได้ กลายเป็นการยิงปืนนัดเดียวได้นกสองตัว ดังที่คุณ Mark Brown ได้อธิบายมาใน อีกกระทู้หนึ่ง
  3. กำหนด type ThBrk ผมชอบแนวคิดของคุณ Mark Brown ที่ทำให้สามารถเลี่ยงการสร้าง portability layer เพิ่มได้ จึงได้ generalize ออกมาเป็น API ชุดใหม่ คือให้ผู้ใช้สร้างออบเจกต์ชนิด ThBrk (ซึ่งภายในเก็บพจนานุกรมที่เปิดแล้ว) ภายใต้การปกป้องด้วย mutex ในตอนต้น แล้วจึงเรียกฟังก์ชันตัดคำต่าง ๆ แบบขนานตามต้องการ ดังที่ผมได้แสดงความเห็นต่อมาในกระทู้ดังกล่าว คลาส ThBrk นี้ สามารถซ่อนรายละเอียดเพื่อรองรับ implementation แบบอื่นในอนาคตได้ถ้าต้องการ เช่น การใช้สถิติ tri-gram ฯลฯ แต่ในขณะนี้เราจะใช้พจนานุกรมเพียงอย่างเดียวก่อน

API นี้มีการเปลี่ยนชื่อไปมาเพื่อความชัดเจน ในแบบสุดท้าย สรุปว่าตัวอย่างการใช้งานจะเป็นแบบนี้ :-

  // mutex lock here
  ThBrk *brk = th_brk_new (dictpath);
  // mutex unlock here

  // works in parallel
  int pos[N];
  int res = th_brk_find_breaks (brk, str, pos, N);

  // mutex lock here
  th_brk_delete (brk);
  // mutex unlock here

API เดิมจะยังคงมีอยู่เพื่อ backward compatibility โดยจะเป็น wrapper ที่แอบเปิดพจนานุกรมเป็นการภายในเช่นเดิม (ซึ่งไม่ thread-safe) ก่อนเรียก API ชุดใหม่ แต่จะเริ่ม deprecate API เก่าตั้งแต่รุ่นนี้เป็นต้นไป เพื่อให้ผู้ใช้เปลี่ยนไปใช้ API ชุดใหม่แทน ดังนี้ :-

  • th_brk() ให้ใช้ th_brk_find_breaks() แทน
  • th_brk_line() ให้ใช้ th_brk_insert_breaks() แทน
  • th_wbrk() ให้ใช้ th_brk_wc_find_breaks() แทน
  • th_wbrk_line() ให้ใช้ th_brk_wc_insert_breaks() แทน

โดยผู้ใช้ต้องสร้างออบเจกต์ชนิด ThBrk ต่างหากเพื่อส่งให้ฟังก์ชันเหล่านี้ และทำลายเมื่อใช้งานเสร็จ

GCC 6

การปรับโค้ดอีกส่วนหนึ่งเป็นส่วนที่สะสมมาตั้งแต่ช่วงที่ Debian กำหนดให้ใช้ GCC 6 เป็นรุ่น default ที่จะใช้ใน Stretch และได้รับรายงานจากคุณ Martin Michlmayr ใน Debian #811690 ว่าแพกเกจ scim-thai มีปัญหาในการคอมไพล์ด้วย GCC 6 ซึ่งต้นเหตุอยู่ที่ header file หนึ่งของ libthai จึงปรับแก้เสีย

Word Break Dictionary

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

คำที่น่าสนใจที่เพิ่มมาในรุ่นนี้:

  • กรังด์ปรีซ์ : จากดราม่าวอลเลย์บอลหญิงไทย-ญี่ปุ่น
  • สไตรีน, โมโนเมอร์ : จากกรณีถกเถียงเรื่องการใช้กล่องโฟมบรรจุอาหาร
  • ทรัมป์ : จากการเมือง USA ในช่วงนี้
  • แอมเฟตามีน, ปุ๊น : จากข่าวการถอดยาบ้าออกจากบัญชียาเสพติดร้ายแรง
  • สเตอร์ลิง, เบรกซิท : จากข่าวประชามติ UK ถอนตัวจาก EU

และเช่นเคย ส่งเข้า Debian เรียบร้อยแล้วครับ

bact: On Thailand’s new cybercrime law amendment (26 April 2016)

14 June, 2016 - 16:35

Quick points for my international friends who want to get some gists about the development of Thailand’s new amendment of Computer-related Crime Act, as of 4 June 2016. Here I discussed the timeline, small notes on two different revisions on April 2016, and points of concerns regarding freedom of expression, privacy, and encryption.

If you don’t have much time, look at Section 14 (1) [online defamation], 14 (2) [“public safety” and “economic stability”], 15 last para [burden of proof to the intermediary], 17/1 [Settlement Commission], 18 (7) [investigative power to access encrypted data-at-rest], 20 (4) [Computer Data Screening Committee can block content that is totally legal], and 20 last para [will be used to circumvent data-in-transit encryption].

Timeline
  • 26 April 2016 — The Cabinet submitted the Bill to National Legislative Assembly (NLA)
  • 28 April — NLA 1st hearing – approved the Bill in principles (160 to 0) and sent it to Review Subcommittee. The subcommittee has 60 days to review, with possible 30 days extension if needed.
  • ~27 June — NLA will received the revised Bill and continue for the 2nd hearing.
  • There will be three hearings in NLA. (In some cases, all the 1st, 2nd and 3rd hearings could be done in one day.)
  • ICT Minister said the government willing to have all Digital Bills in effect by the end of 2016
Read the Bill (in English)
  • Download Computer-related Crime Act (CCA) amendment draft and its English translation
  • Note that we have two revisions in April 2016: one from 19 April (one that submitted to Cabinet) and from 26 April (to NLA)
  • English translation is from 19 April 2016
  • Both are almost identical
    • 26 April rev merged Section 13 and 14 which both amend Section 18 into one single Section.
    • This means the following running Section numbers from Section 15 are shifting up. (for example, Section 15 [which amends Section 20] in 19 April revision is become Section 14 [amends Section 20] in 26 April revision)
    • To reduce confusion, we will refer here to the number of Section to be amended.
  • The Minister responsible for this Act will be the Minister of Digital Economy and Society (new name of Minister of ICT)
Points of Concerns Criminalisation of Speech and Computer Data
  • Section 14 (1) — Online defamation: language still open for online defamation
  • Section 14 (2) — Vague and general terms like “public safety” and “economic stability” in this Section are undefined specifically in any Thai criminal law, but will be used to criminalised computer data. From our communication with the lawmaker, they said this is meant to be for the crime against computer system of public infrastructure. If that’s the case, it can be better written in the draft, using terms like “critical infrastructure” or “critical information infrastructure”.
  • Read iLaw analysis on this (in Thai)
Intermediary Liability — Burden of Proof
  • Section 15 second paragraph — Blanket power: Minister power to issue additional procedural rules, which may additionally limits civil rights but require no review from Parliament
  • Section 15 third paragraph — Burden of proof: if service provider follows the Ministerial procedural rules, they may exempted from penalty, but service provider has to prove their innocence
Unpredicability of Law — Judicial Process
  • Section 17/1 — Settlement Committee: for offences with 2 years or less jail term. Not sure what is the consequence, but definitely will creates unpredictability of law enforcement
    • The Settlement Committee will be appointed by the Minister. It will be consisted of three persons, one of whom has to be an inquiry official according to the Criminal Procedure Code. No other requirements stated in the Bill.
Expanded Investigative Power, including access to encrypted Data-at-Rest
  • Section 18 — Expands investigative power of Section 18 to non-CCA offences
  • Section 18 (7) is about accessing encrypted computer system or data
  • (The entire Section 18 in 26 April 2016 revision of CCA amendment is almost identical to the 2007 CCA currently in use.)
Expanded Information Control
  • Section 20 — Expands blocking and data removal power to non-CCA offences
  • Section 20 (4) — Computer Data Screening Committee may ask Court the block data that breach “public order” or “moral high ground of people” even its not illegal (Thai Journalist Association also very concerned about this)
    • The Computer Data Screening Committee will be appointed by Minister. Will consisted of five persons. Two must come from relevant private sector. No other requirements stated in the Bill.
Surveillance of Encrypted Communication
  • Section 20 fifth paragraph — Minister can issue additional rules to facilitate data blocking/removal “in response to changing technology”
    • In the “reasons for amendment” document attached with the draft submitted to NLA, it said to block a web page that use public-key encryption a “special method and tools” are needed (see page 28-30 of the documents submitted to NLA, in the last column. You will see the keywords like “SSL”.)
  • Read Thai Netizen Network analysis on this Section 20 and how it related to MICT “Single Gateway” project (in Thai)
Petition to Stop Information Control and Surveillance

If you don’t agree with the Amendment proposal, please sign the Petition here: https://change.org/singlegatewayreturn

Thep: Fonts-TLWG 0.6.3

14 June, 2016 - 12:47

Fonts-TLWG 0.6.3 ออกแล้ว เมื่ออาทิตย์ที่แล้ว แต่เพิ่งจะได้เขียน blog บันทึกหลังจากที่เตรียมแพกเกจเพื่ออัปโหลดในที่ต่าง ๆ เสร็จ คือที่ Debian และ CTAN

รุ่นนี้เป็นรุ่นแรกที่ ออกรุ่นจาก GitHub หลังจากที่ ประกาศย้าย repository ของ TLWG ไปที่ GitHub เมื่อเดือนที่แล้ว แต่ยังคงใช้ linux.thai.net เป็นที่ประกาศหลักตามเดิม เพื่อความต่อเนื่องกับรุ่นก่อน ๆ

ความเปลี่ยนแปลงหลักที่เกิดขึ้นในรุ่นนี้ คือการเปลี่ยนให้ฟอนต์ Loma เป็นฟอนต์ UI หลักแทน Waree อันเนื่องมาจาก รายงานบั๊กของพี่สัมพันธ์ พร้อม follow-up ว่าฟอนต์ Waree นั้นตัวสูงเกินไปจนถูกขริบในบางเว็บ เช่น Facebook แต่ Loma นั้นเตี้ยพอที่จะเล็ดรอดมาได้ (เหตุผลก็คือ Waree นั้นออกแบบเพื่อเตรียมเพิ่มอักษรไทยให้กับฟอนต์ DejaVu Sans จึงมี glyph ละตินของ DejaVu Sans ซึ่งตัวสูงอยู่แล้วเป็นตัวตั้ง ส่วน Loma นั้น เข้าใจว่าออกแบบโดยอิสระของตัวเอง) หลังจากทดสอบและฟังความเห็นของหลาย ๆ ท่านที่มาคอมเมนต์ ก็เห็นว่าควรเลื่อนอันดับของฟอนต์ Loma ขึ้นมาสูงกว่า Waree ในการเลือกฟอนต์ sans-serif ของ fontconfig

ในการเลื่อนขั้นนั้น ตามหลักแล้วควรจะทำได้ง่าย ๆ ด้วยการเปลี่ยนลำดับแฟ้ม config ของ fontconfig ให้ Loma ขึ้นก่อน Waree เช่น เปลี่ยนชื่อแฟ้ม /etc/fonts/conf.d/64-12-tlwg-loma.conf ในรุ่น 0.6.2 ให้เป็น 64-10-tlwg-loma.conf แต่ทำแค่นั้นไม่ได้ช่วยให้ Loma มาก่อน Waree ได้ เพราะยังมีกฎชุด synthetic อีกชุดหนึ่งเข้ามามีส่วนด้วย ดังผลลัพธ์หลังเปลี่ยนชื่อแฟ้มดังกล่าว ก็ยังคง match sans-serif ได้ Waree เช่นเดิม (ในรุ่น 0.6.2):

$ cd /etc/fonts/conf.d
$ sudo mv 64-12-tlwg-loma.conf 64-10-tlwg-loma.conf
$ fc-match sans-serif
Waree.otf: "Waree" "Regular"

สาเหตุคือฟอนต์ Waree มีการจำลองตัวเองเพื่อทดแทนฟอนต์ Tahoma ด้วยการห้อยชื่อตัวเองในลำดับต่อจาก Tahoma (ในไฟล์ 89-tlwg-waree-synthetic.conf) แต่ด้วยความที่ Tahoma ได้ถูกกำหนดให้เป็น preferred font ตัวหนึ่งของละติน (ในไฟล์ 60-latin.conf) ซึ่งมาก่อนภาษาอื่น ๆ การจำลอง Tahoma ของ Waree จึงทำให้ Waree กลายเป็นฟอนต์ละตินตัวหนึ่งที่มาก่อนภาษาอื่น ๆ ไปด้วย!

รายละเอียดทางเทคนิคของการตรวจสอบ ผู้ที่สนใจสามารถอ่านได้ที่ส่วนท้ายของ blog

ฉะนั้น การจะเลื่อนขั้น Loma ขึ้น จึงติดที่กฎชุด synthetic ของ Waree นี้

แล้วกฎ synthetic นี้มาจากไหน? มันเริ่มมาจากแนวคิดการจำลองฟอนต์ที่ผู้ใช้นิยมใช้ในเอกสารต่าง ๆ บนวินโดวส์ด้วยฟอนต์ที่มีในชุด Fonts-TLWG เช่น จำลอง Angsana ด้วย Kinnari, จำลอง Browallia ด้วย Garuda ฯลฯ ดังมีบันทึกไว้ใน blog เก่าเมื่อปี 2550 ซึ่งฟอนต์ต่าง ๆ ก็มีเค้าหน้าตาให้จำลองกันได้ จนกระทั่งมาเจอกรณีการใช้ฟอนต์ MS Sans Serif และ Tahoma ในเว็บ จึงได้พยายามทดแทนด้วยฟอนต์ Loma และ Waree ตามลำดับ ดังอ้างถึงใน blog เก่าเมื่อปี 2552 โดยที่ทั้งสองฟอนต์นี้ไม่ได้มีเค้าของฟอนต์ที่จำลองเลย เพียงแต่ต้องการอุดช่องว่างของการแสดงหน้าเว็บเท่านั้น

กฎนี้เคยถูกรายงานว่าสร้างปัญหาให้กับภาษาอื่น เพราะ Waree จะโผล่มาแทน Tahoma ทั้ง ๆ ที่ตัวใหญ่กว่า Tahoma (LP #434054) ทำให้เคยตัดกฏนี้ออกไปชั่วระยะหนึ่ง แต่ก็เพิ่มกลับเข้ามาพร้อมกับการตรวจสอบภาษาเพิ่มเติมเพื่อให้ apply กับภาษาไทยเท่านั้น (LP #539008) ดังบันทึกใน thaifonts-scalable 0.4.14 แต่ในเมื่อมันมารบกวนการจัดอันดับฟอนต์ sans-serif ไทยทั้งระบบ ก็เห็นควรว่าควรตัดกฎ synthetic นี้ออก แล้วปล่อยให้ฟอนต์ sans-serif ที่ได้อันดับสูงสุดมาอุด Tahoma เอา

เมื่อตัดกฎ synthetic ออก ฟอนต์ Loma ก็ได้อันดับสูงกว่า Waree แล้ว

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

ก่อนปรับ:

หลังปรับ:

ต่อไปนี้เป็นวิธีตรวจสอบการ apply กฎของ fontconfig ด้วยตัวเอง ซึ่งทำให้เห็นว่ากฎ synthetic ใน 0.6.2 ทำให้ Waree ล้ำหน้าฟอนต์ไทยอื่น ๆ ได้อย่างไร

วิธีตรวจสอบตามที่ เอกสาร fontconfig ได้อธิบายไว้ คือกำหนดตัวแปร environment FC_DEBUG โดยในที่นี้เราสนใจการ edit match pattern ในกฎต่าง ๆ ก็กำหนดค่าเป็น 4 แล้วเรียก fc-match ดังนี้:

$ FC_DEBUG=4 fc-match sans-serif

มันจะพ่นข้อความแสดงการ edit match pattern ในแต่ละขั้นออกมายืดยาว ก็อาจจะ redirect ลงแฟ้มแล้วมาตรวจสอบดู ก็จะพบขั้นตอนที่น่าสนใจคือ:

...

FcConfigSubstitute test pattern any family Equal(ignore blanks) "sans-serif"
Substitute Edit family Prepend "Bitstream Vera Sans" Comma "DejaVu Sans" Comma "
Verdana" Comma "Arial" Comma "Albany AMT" Comma "Luxi Sans" Comma "Nimbus Sans L
" Comma "Helvetica" Comma "Lucida Sans Unicode" Comma "BPG Glaho International" 
Comma "Tahoma"

Prepend list before  "DejaVu Sans"(w) "DejaVu LGC Sans"(w) "DejaVu LGC Sans"(w) 
[marker] "sans-serif"(s) "sans-serif"(w)
Prepend list after  "DejaVu Sans"(w) "DejaVu LGC Sans"(w) "DejaVu LGC Sans"(w) "
Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w)
 "Luxi Sans"(w) "Nimbus Sans L"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG 
Glaho International"(w) "Tahoma"(w) "sans-serif"(s) "sans-serif"(w)

...

กฎนี้มาจาก 60-latin.conf ของ fontconfig เอง ที่เพิ่ม prefer list ของ sans-serif โดยมี Tahoma พ่วงอยู่ด้วย

จากนั้น ก็มีการ edit match pattern ต่อ ๆ มา จนมาถึงตรงนี้:

...

FcConfigSubstitute test pattern any family Equal(ignore blanks) "sans-serif"
Substitute Edit family Prepend "Loma"

Prepend list before  "DejaVu Sans"(w) "DejaVu LGC Sans"(w) "DejaVu LGC Sans"(w) 
"Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w
) "Luxi Sans"(w) "Nimbus Sans L"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG
 Glaho International"(w) "Tahoma"(w) [marker] "sans-serif"(s) "sans-serif"(w)
Prepend list after  "DejaVu Sans"(w) "DejaVu LGC Sans"(w) "DejaVu LGC Sans"(w) "
Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w)
 "Luxi Sans"(w) "Nimbus Sans L"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG 
Glaho International"(w) "Tahoma"(w) "Loma"(w) "sans-serif"(s) "sans-serif"(w)

...

FcConfigSubstitute test pattern any family Equal(ignore blanks) "sans-serif"
Substitute Edit family Prepend "Waree"

Prepend list before  "DejaVu Sans"(w) "DejaVu LGC Sans"(w) "DejaVu LGC Sans"(w) 
"Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w
) "Luxi Sans"(w) "Nimbus Sans L"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG
 Glaho International"(w) "Tahoma"(w) "Loma"(w) [marker] "sans-serif"(s) "sans-se
rif"(w)
Prepend list after  "DejaVu Sans"(w) "DejaVu LGC Sans"(w) "DejaVu LGC Sans"(w) "
Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w)
 "Luxi Sans"(w) "Nimbus Sans L"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG 
Glaho International"(w) "Tahoma"(w) "Loma"(w) "Waree"(w) "sans-serif"(s) "sans-s
erif"(w)

...

ซึ่งก็ดูเรียบร้อยดี Loma น่าจะ match ก่อน Waree แล้ว จนกระทั่งมาถึงตรงนี้:

...

FcConfigSubstitute test pattern any lang Contains "th"
FcConfigSubstitute test pattern any family Equal "Tahoma"
Substitute Edit family Append "Waree"

Append list before  "DejaVu Sans"(w) "DejaVu LGC Sans"(w) "DejaVu LGC Sans"(w) "
Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w)
 "Luxi Sans"(w) "Nimbus Sans L"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG 
Glaho International"(w) "Tahoma"(w) [marker] "Loma"(w) "Waree"(w) "Garuda"(w) "U
mpush"(w) "Laksaman"(w) "Meera"(w) "Khmer OS"(w) "Nachlieli"(w) "Lucida Sans Uni
code"(w) "Yudit Unicode"(w) "Kerkis"(w) "ArmNet Helvetica"(w) "Artsounk"(w) "BPG
 UTF8 M"(w) "Waree"(w) "Loma"(w) "Garuda"(w) "Umpush"(w) "Saysettha Unicode"(w) 
"JG Lao Old Arial"(w) "GF Zemen Unicode"(w) "Pigiarniq"(w) "B Davat"(w) "B Comps
et"(w) "Kacst-Qr"(w) "Urdu Nastaliq Unicode"(w) "Raghindi"(w) "Mukti Narrow"(w) 
"padmaa"(w) "Hapax Berbère"(w) "MS Gothic"(w) "UmePlus P Gothic"(w) "SimSun"(w) 
"PMingLiu"(w) "WenQuanYi Zen Hei"(w) "WenQuanYi Bitmap Song"(w) "AR PL ShanHeiSu
n Uni"(w) "AR PL New Sung"(w) "MgOpen Moderna"(w) "MgOpen Modata"(w) "MgOpen Cos
metica"(w) "VL Gothic"(w) "IPAMonaGothic"(w) "IPAGothic"(w) "Sazanami Gothic"(w)
 "Kochi Gothic"(w) "AR PL KaitiM GB"(w) "AR PL KaitiM Big5"(w) "AR PL ShanHeiSun
 Uni"(w) "AR PL SungtiL GB"(w) "AR PL Mingti2L Big5"(w) "MS ゴシック"(w) "ZYSo
ng18030"(w) "NanumGothic"(w) "UnDotum"(w) "Baekmuk Dotum"(w) "Baekmuk Gulim"(w) 
"KacstQura"(w) "Lohit Bengali"(w) "Lohit Gujarati"(w) "Lohit Hindi"(w) "Lohit Ma
rathi"(w) "Lohit Maithili"(w) "Lohit Kashmiri"(w) "Lohit Konkani"(w) "Lohit Nepa
li"(w) "Lohit Sindhi"(w) "Lohit Punjabi"(w) "Lohit Tamil"(w) "Meera"(w) "Lohit M
alayalam"(w) "Lohit Kannada"(w) "Lohit Telugu"(w) "Lohit Oriya"(w) "LKLUG"(w) "F
reeSans"(w) "Arial Unicode MS"(w) "Arial Unicode"(w) "Code2000"(w) "Code2001"(w)
 "sans-serif"(s) "Arundina Sans"(w) "Roya"(w) "Koodak"(w) "Terafik"(w) "sans-ser
if"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-ser
if"(w) "sans-serif"(w) "sans-serif"(w)
Append list after  "DejaVu Sans"(w) "DejaVu LGC Sans"(w) "DejaVu LGC Sans"(w) "B
itstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w) 
"Luxi Sans"(w) "Nimbus Sans L"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG G
laho International"(w) "Tahoma"(w) "Waree"(w) "Loma"(w) "Waree"(w) "Garuda"(w) "
Umpush"(w) "Laksaman"(w) "Meera"(w) "Khmer OS"(w) "Nachlieli"(w) "Lucida Sans Un
icode"(w) "Yudit Unicode"(w) "Kerkis"(w) "ArmNet Helvetica"(w) "Artsounk"(w) "BP
G UTF8 M"(w) "Waree"(w) "Loma"(w) "Garuda"(w) "Umpush"(w) "Saysettha Unicode"(w)
 "JG Lao Old Arial"(w) "GF Zemen Unicode"(w) "Pigiarniq"(w) "B Davat"(w) "B Comp
set"(w) "Kacst-Qr"(w) "Urdu Nastaliq Unicode"(w) "Raghindi"(w) "Mukti Narrow"(w)
 "padmaa"(w) "Hapax Berbère"(w) "MS Gothic"(w) "UmePlus P Gothic"(w) "SimSun"(w)
 "PMingLiu"(w) "WenQuanYi Zen Hei"(w) "WenQuanYi Bitmap Song"(w) "AR PL ShanHeiS
un Uni"(w) "AR PL New Sung"(w) "MgOpen Moderna"(w) "MgOpen Modata"(w) "MgOpen Co
smetica"(w) "VL Gothic"(w) "IPAMonaGothic"(w) "IPAGothic"(w) "Sazanami Gothic"(w
) "Kochi Gothic"(w) "AR PL KaitiM GB"(w) "AR PL KaitiM Big5"(w) "AR PL ShanHeiSu
n Uni"(w) "AR PL SungtiL GB"(w) "AR PL Mingti2L Big5"(w) "MS ゴシック"(w) "ZYS
ong18030"(w) "NanumGothic"(w) "UnDotum"(w) "Baekmuk Dotum"(w) "Baekmuk Gulim"(w)
 "KacstQura"(w) "Lohit Bengali"(w) "Lohit Gujarati"(w) "Lohit Hindi"(w) "Lohit M
arathi"(w) "Lohit Maithili"(w) "Lohit Kashmiri"(w) "Lohit Konkani"(w) "Lohit Nep
ali"(w) "Lohit Sindhi"(w) "Lohit Punjabi"(w) "Lohit Tamil"(w) "Meera"(w) "Lohit 
Malayalam"(w) "Lohit Kannada"(w) "Lohit Telugu"(w) "Lohit Oriya"(w) "LKLUG"(w) "
FreeSans"(w) "Arial Unicode MS"(w) "Arial Unicode"(w) "Code2000"(w) "Code2001"(w
) "sans-serif"(s) "Arundina Sans"(w) "Roya"(w) "Koodak"(w) "Terafik"(w) "sans-se
rif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-se
rif"(w) "sans-serif"(w) "sans-serif"(w)

...

กลายเป็นว่า Waree กลับมาแซงหน้า Loma อีกครั้งหลังจากกฎใน 89-tlwg-waree-synthetic.conf ผลก็คือ ไม่ว่าฟอนต์ไทยตัวไหนจะพยายามลิสต์ตัวเองขึ้นก่อนอย่างไรก็ตาม ก็จะแพ้ฟอนต์ที่ fallback ให้ Tahoma อยู่วันยังค่ำ และการสังเคราะห์ฟอนต์ Tahoma ด้วย Waree ก็ทำให้ Waree ไม่ยอมลงให้กับใคร!

Kitt: Add new disk to Linux VM without rebooting

6 June, 2016 - 09:18
You can always do this. Edit setting of VM hardware, add a SCSI new disk In Linux VM, # echo "- - -" > /sys/class/scsi_host/host#/scan where host# can be host0, host1 … Linux will re-scan SCSI, and your new disk should be recognized.

bact: เสรีภาพการแสดงออกในมหาวิทยาลัยสหราชอาณาจักร

5 June, 2016 - 21:49

Gary Slapper ผู้อำนวยการของมหาวิทยาลัยนิวยอร์ก วิทยาเขตลอนดอน เขียนถึงประเด็นเสรีภาพการแสดงออกที่ถูกจำกัดในมหาวิทยาลัยในสหราชอาณาจักร โดยอ้างอิงรายงาน Free Speech University Rankings ที่จัดอันดับเสรีภาพในการพูดของมหาวิทยาลัยยูเค 115 แห่งเป็นปีที่สองแล้ว และในรายงานปีที่สองนี้ พบมหาวิทยาลัยที่มีการเซ็นเซอร์การแสดงออก 90% เพิ่มขึ้นจากปีที่แล้วที่มี 80%

เขายกตัวอย่าง LSE ที่มีปัญหานี้มาก จนนักศึกษาต้องตั้งสมาคม Speakeasy Society ขึ้นมาเพื่อสนับสนุนการโต้เถียงอย่างเสรีและเปิดกว้าง แต่ไม่นานก็มีการเสนอในที่ประชุมของสหภาพนักศึกษา LSE Student Union ว่าให้แบนสมาคมนี้ซะ สุดท้ายก็รอดไป มีคนโหวตให้แบน 57 เสียง โหวตว่าไม่แบน 226 เสียง ได้อยู่ต่อ

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

ปัจจุบันกฎหมายที่เกี่ยวกับเรื่องนี้โดยตรงคือ Racial and Religious Hatred Act 2006 (แก้ไขเพิ่มเติม Public Order Act 1986) ซึ่ง Gary ก็บอกว่า ในกฎหมายก็เขียนไว้อย่างชัดเจนว่าไม่ได้ห้ามการวิพากษ์วิจารณ์ หรือกระทั่งประชดเสียดสีเยาะเย้ย (ridicule) ศาสนา ความเชื่อ และวิธีปฏิบัติของผู้ที่มีความเชื่อเหล่านั้น

กฎหมายเขาว่างี้

Part 3A — Hatred against persons on religious grounds

29A — Meaning of “religious hatred”

In this Part “religious hatred” means hatred against a group of persons defined by reference to religious belief or lack of religious belief.

[…]

29J — Protection of freedom of expression

Nothing in this Part shall be read or given effect in a way which prohibits or restricts discussion, criticism or expressions of antipathy, dislike, ridicule, insult or abuse of particular religions or the beliefs or practices of their adherents, or of any other belief system or the beliefs or practices of its adherents, or proselytising or urging adherents of a different religion or belief system to cease practising their religion or belief system.

กล่าวคือความหมายของ “ความเกลียดชังทางศาสนา” นี่ มันต้องเป็นความเกลียดชังต่อกลุ่มบุคคล ซึ่งอ้างอิงกับความเชื่อทางศาสนา (29A) สิ่งที่เขาต้องการปกป้อง คือปกป้องคน ส่วนการจะไปวิพากษ์วิจารณ์หรือเอาตัวศาสนาความเชื่อมาล้อเลียนอะไรนั้น เป็นเรื่องที่กฎหมายไม่ได้ห้าม และเขียนย้ำไว้เลยในกฎหมายว่า ไม่ได้ห้ามนะ (29J)

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

เขาปิดท้ายบทความว่า คำว่า “university” ในภาษาอังกฤษนั้น มาจากคำละตินว่า “universtas” ซึ่งแปลว่า “ทั้งหมด จำนวนทั้งหมด ผลรวมทั้งหมดของสรรพสิ่ง” มหาวิทยาลัยควรจะเป็นที่ถกเถียงของแนวคิดทุกอย่าง ไม่ใช่แค่บางอย่าง

อ่านบทความเต็มที่ Milkround “The best way to defeat harmful ideas is by debate — not a ban”

ภาพจาก Wikimedia Commons

LookHin: 10 Package ที่ควรติดตั้งบน ATOM Text Editor

13 May, 2016 - 12:58

คราวที่แล้วเราได้ทำการสร้าง Code Snippet เพื่อช่วยให้เราเขียนโค้ดได้เร็วขึ้นไปแล้ว วันนี้เรามาแนะนำ Package ที่ควรติดตั้งไว้เป็นเครื่องทุนแรงอีกสัก 10 ตัว เพื่อช่วยให้งานเขียนโปรแรกมของเรามีสีสันและคล่องตัวมากขึ้น โดยขึ้นตอนการติดตั้ง package ของ ATOM ให้เราเข้าไปที่เมนู File -> Settings -> Install จากนั้นพิมพ์ชื่อ package ที่เราต้องการจะติดตั้ง หรือถ้าอยากรู้ว่ามี package อะไรบ้างที่น่าสนใจให้เขาไปที่ https://atom.io/packages

Emmet
https://atom.io/packages/emmet
Emmet จะช่วยให้เราเขียน HTML ต่างๆ ได้อย่างรวดเร็วด้วยคีย์ลัดต่างๆ ที่มีให้ โดยเราสามารถดูคำสั่งต่างๆ ได้ที่ http://docs.emmet.io/cheat-sheet/

atom-beautify
https://atom.io/packages/atom-beautify
atom-beautify จะช่วยให้เราจัดฟอร์แมตของโค้ดให้สวยงามง่ายๆ เพียงกด Ctrl-Alt-B

autoclose-html
https://atom.io/packages/autoclose-html
autoclose-html ช่วยให้เราพิมพ์แทก HTML แล้วมันจะปิดแทกให้เอง แต่ปกติถ้าเราใช้ Emmet จนคล่องแล้วก็คงแทบไม่ต้องใช้ตัวนี้ก็ได้ แต่ติดตั้งไว้หน่อยก็ดี

color-picker
https://atom.io/packages/color-picker
color-picker ตัวช่วยที่จะทำให้เราเลือกสีได้อย่างง่ายดายโดยไม่ต้องจำโค้ดสีเอง เพียงแค่กด CTRL-ALT-C

jquery-snippets
https://atom.io/packages/jquery-snippets
jquery-snippets เป็น snippets ของ jQuery เราไม่ต้องสร้าง snippet เองทั้งหมด มีคนทำให้แล้ว สบายเลย

line-ending-converter
https://atom.io/packages/line-ending-converter
line-ending-converter อันนี้ตัวแปลงรหัสการขึ้นบรรทัดใหม่ EOL บางทีโค้ดที่เราเปิดดูอาจจะสร้างมาจาก UNIX/Linux/MAC หรือ Windows ซึ่งมี EOL ที่ต่างกัน ตัวนี้ช่วยได้

minimap
https://atom.io/packages/minimap
minimap เอาไว้แสดงโค้ดอย่างย่อด้านขวามือ จะทำให้เราเลือนหาโค้ดในตำแหน่งที่ต้องการได้เร็วขึ้น

script
https://atom.io/packages/script
script เป็นตัวช่วยที่จะทำให้เราสามารถ run code ของเราได้ภายในตัว ATOM เลย จะได้เห็น output ทันทีที่กด CTRL+SHIFT+B

linter
https://atom.io/packages/linter
https://atom.io/packages/linter-php
linter และ linter-php เป็นตัวช่วยในการ debug code php ช่วยให้เราเห็นได้ง่ายขึ้นว่าเราเขียนโค้ดผิดหรือเปล่า

snake
https://atom.io/packages/snake
เกมงู //อันนี้ไร้สาระหละ

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้