Planet TLWG

Syndicate content
Planet TLWG - http://linux.thai.net/planet
Updated: 31 min 39 sec ago

Kitt: DebConf15 – Travel – Day 1

22 August, 2015 - 08:17
DebConf15 was held on 15th – 22nd August 2015 in Heidelberg, Germany. It was relatively easy for me travel since I could take direct flights from Bangkok to Frankfurt, then Heidelberg is about 1 hour away by bus or train. Also, I currently hold an official passport, which can enter to Germany without applying a … Continue reading DebConf15 – Travel – Day 1 →

Kitt: DebConf15 – Day 2-3

22 August, 2015 - 08:12
Day 2 It was raining and it was freezing cold, even inside the building. I spent most of the time making my computer to run docker and move code that I wanted to fix to my local machine. There were also ad-hoc events that interrupted my plan, though. Anyway, I installed docker 1.8, and started … Continue reading DebConf15 – Day 2-3 →

Ott: สำนัก Project X แห่งชาติ

16 August, 2015 - 04:45
ผมเคยตั้งคำถามว่า อุตสาหกรรมรถยนต์ของไทยที่ใครเรียกว่าเป็น ดีทรอยท์แห่งเอเชีย แล้วทำไมไม่เห็นมีรถยนต์ยี่ห้อของไทยสักยี่ห้อ?

สอบถามคนในวงการก็ได้รับแต่คำตอบว่า โอ ขนาดนั้นมันยาก ไม่ทันแล้ว คนไทยไม่ไหว ทำไม่ได้หรอก ฯลฯ 
เราเป็นได้แค่ฐานรับจ้างการผลิตให้ต่างชาติ กำไรส่วนบนสุดนั้นบริษัทเจ้าของยี่ห้อเอาไป เหลือให้เราแค่ค่าแรงขั้นต่ำๆ ก็โอแล้วล่ะ
จริงหรือ?
เหลียวมองมาวงการไอที ถามว่า ตั้งแต่เช้ามาท่านได้ใช้ผลิตภัณฑ์ IT อะไรของคนไทยบ้างครับ ฮาร์ดแวร์หรือซอฟต์แวร์ก็ได้ คิดเป็นกี่ % ของทั้งหมดที่ใช้ในแต่ละวัน เกิน 10% มั้ย?
ขอพาดพิงถึงโครงการดิจิทัลอีโคโนมีอีกครั้ง ผมได้มีโอกาสไปร่วมระดมสมองอยู่ครั้งหนึ่ง คุยๆ ในกลุ่มจับใจความได้ว่า เราก็ตั้งเป้าให้ภายใน 3 ปี ทุกหน่วยงานมี IT ใช้กันกว้างขวางและมีประสิทธิภาพ
แค่นั้นเองหรือครับ? ถ้าแค่จะใช้เทคโนโลยี ไม่ต้องถึงกับตั้งกระทรวงใหม่มั้ง ทุกวันนี้ภาคเอกชน ภาคปัจเจกชน เค้าใช้เทคโนโลยีกันเก่งจะแย่ 
ทำไมกรอบความคิดก็ยังอยู่ที่ คนไทยเป็นได้แค่ผู้ใช้ หรือ อย่างดีก็เอามา customize เล็กๆ น้อยๆ ปลายน้ำ เท่านั้น
โครงการระบบรางที่เราจะทำกันเยอะแยะไปหมด ทั้งความเร็วสูง ความเร็วปานกลาง ผมก็ได้ยินแต่เรื่องจะให้ประเทศโน้นประเทศนี้มาทำ กู้ๆ เงินมาสร้างๆ  ไม่เห็นได้ยินว่าเราจะถือโอกาสนี้พัฒนาเทคโนโลยีอะไรของเราเองเลย 
ผมเชื่อว่า ถ้าคิดว่าทำไม่ได้ ก็จะทำไม่ได้อย่างนี้แหละ ตลอดไปและตลอดชาติ 
เราจะไม่มีวันมีรถยนต์เป็นของตนเอง ไม่มีผลิตภัณฑ์ทางเทคโนโลยีอะไรเจ๋งๆ เป็นของตนเองจนกว่าจะมีคนรุ่นถัดไปที่กล้าคิด และกล้าทำ มาเปลี่ยนความคิดนี้
คนไทยเราไม่ใช่ไม่เก่งนะ ระดับมันสมองก็มีมาก แต่จำนวนมากทำงานบริษัทข้ามชาติกันดีกว่า เงินเดือนดี บริหารงานมีระบบ ก็ต้องกินต้องใช้อ่ะนะ

เก่งมากหน่อยก็ทำ start-up เป็นธุรกิจของตนเอง สักพักก็มีต่างชาติมาลงทุน, ซื้อ, ชวนไปอยู่ต่างประเทศ ฯลฯ ตามสูตร
สิ่งที่ประเทศชาติต้องการอย่างยิ่งตอนนี้ จึงไม่ใช่กระทรวงใหม่ที่มาผลักดันการใช้ IT
แต่คือ ความกล้าคิด ที่จะผลักดันให้ประเทศไทยพลิกกลับมาเป็นผู้ผลิตทางเทคโนโลยีบ้าง
ซึ่งก็ต้องยอมรับความจริงว่าไม่ใช่ว่าอยู่ดีๆ จะเนรมิตให้ประเทศเรากลายเป็นมหาอำนาจทางเทคโนโลยี มันไม่ใช่ง่ายๆ มันต้องมีกลยุทธ์ที่แยบยล มันต้องครบวงจรทั้ง
R - Research D - Development E - Engineering C - Commercial
ไม่ใช่มีแค่ R&D นักวิจัยคิดว่าวิจัยไรดีว้า ทำเสร็จออกมา เอ้าใครอยากเอาไป commercialize บ้าง ทำไมไม่ค่อยมีล่ะ

มันต้องกลับข้างกัน C - Commercial ต้องเป็นตัวนำ เราจะทำอะไร เป้าหมายคืออะไร ทำอย่างไรถึงจะอยู่รอด แข่งขันได้

จากนั้นต้นน้ำ R&D ต้องสนับสนุน และทำให้มันเป็นจริงในระดับอุตสาหกรรมด้วย Engineering สุดท้ายต้องแข่งขันได้ในระดับ Commercial ซึ่งอาจต้องจำเป็นใช้เทคนิคพวก regulation ต่างๆ มาให้เกิดการแข่งขันที่_ไม่เท่าเทียม_แต่ยุติธรรม เพื่อให้รายใหม่แข่งได้
ผมจึงมองว่า น่าจะมี หน่วยงานที่มีหน้าที่สร้าง Mission ที่ง่ายๆ สั้นๆ และผลักดันทุกวิถีทางที่จะทำให้ Mission นั้นสำเร็จ 
หน่วยงานต้องมีอำนาจข้ามกระทรวง เพราะงานแบบนี้ต้องใช้หลายวงการรวมถึงภาคธุรกิจด้วย 
ไม่ใช่แค่ภาครัฐเอาเงินมาทุ่ม จ้างงาน เอกชนมาทำ แล้วจบ แบบนั้นมันอยู่ไม่ยืด มันต้องให้อยู่ในธุรกิจของตัวเองต่อไปได้ด้วย
Mission เช่น 1. ตู้โดยสารรถไฟต้องเป็นยี่ห้อที่ผลิตในประเทศไทยเท่านั้น หัวรถจักร ถ้ายากไป ก็ไม่เป็นไร แต่ตู้โดยสาร คนไทยน่าจะทำได้นี่ กระตุ้นให้เกิดผู้ประกอบการสัก 2-3 ราย ผลิตแบบคุณภาพดีๆ หวังส่งออกด้วย
2. รถยนต์ยี่ห้อของประเทศไทย ไม่ต้องเป็นรถยนต์แห่งชาติของรัฐบาลครับ แบบนั้นอยู่ไม่รอดระยะยาว, แต่ผลักดันให้เกิดธุรกิจรถยนต์ของคนไทย โดยหลายๆ ส่วนไม่จำเป็นต้องทำเอง เช่น เครื่องยนต์ ยากนัก ซื้อมาก่อน ฯลฯ แต่การ design, branding, การตลาด ต้องทำเอง 
วิธีผลักดันง่ายๆ ก็ออกกฎรถยนต์ภาครัฐทั้งหมดต้องมีรถที่เป็นยี่ห้อของไทยไม่ต่ำกว่า 50%? แค่นี้ก็สร้าง demand มหาศาลแล้วไหม
3. บริการทาง IT ของคนไทย ระดับ 10 Million users มากกว่า 10 บริการ อ้างถึงบทความ ดิจิทัล อีโคโนมี ของใคร? อย่างที่บอก ปัจจุบันต่างชาติกินรวบ

นิยามของคำว่าของคนไทย คือ ธุรกิจส่วนวิจัยและพัฒนาต้องอยู่ในเมืองไทย, server ต้องอยู่ในเมืองไทย, เสียภาษีประเทศไทย

กระตุ้นด้วยมาตรการทางภาษี ถ้าธุรกิจใช้บริการเหล่านี้ได้ลดภาษี และ ภาครัฐให้เลือกใช้บริการของคนไทยก่อนเท่านั้น
มาตรการกระตุ้นเหล่านี้ (พูดให้ชัดคือ มาตรการกีดกันต่างชาติ เพื่อให้ของไทยสู้ได้) อาจฟังดูจีนๆ สักนิด ฟังดูไม่เสรี ไม่โลกาภิวัฒน์ แต่เป็นสิ่งที่จำเป็น และในฐานะผู้ใช้ต้องทนใช้ของที่ห่วย (กว่าระดับโลก) สักแป๊บ เชื่อว่าไม่นานครับ และต้องทำให้แยบยล
พอปั้นให้ธุรกิจเหล่านี้ใหญ่โตระดับหนึ่งแล้ว ก็กลับมาปล่อยเสรีเต็มที่ได้ครับ ยกตัวอย่างธุรกิจของไทยใหญ่ๆ ปตท., ThaiBev, Central พวกนี้เค้าแข่งระดับโลกได้แล้ว
และงานของ Mission นั้นๆ ก็ถือว่าหมดไป ครบทุก Mission สำนักงานนี้ก็ปิดตัวไปได้
ไม่ง่าย แต่เชื่อว่าทำได้และท้าทายมาก และจะดึงคนเก่งๆ ของเราให้กลับมาทำงานเพื่อชาติ และให้โอกาสพวกเขาในการดำเนินธุรกิจใน Mission นั้นๆ ระดับโลกต่อไปด้วย!


Kitt: Getting “A” from Qualy’s SSL

15 August, 2015 - 16:44
Qualys SSL Labs provides a SSL Server Test for awhile. You can rate your web site at https://www.ssllabs.com/ssltest To get rating “A”, there are few straightforward tricks: Disable all versions of SSL protocol. Enable only TLS. e.g., ssl_protocols TLSv1 TLSv1.1 TLSv1.2 Choose only strong ciphers, e.g., you’ll sacrifice some very old clients. ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS; Use … Continue reading Getting “A” from Qualy’s SSL →

Thep: Patani Malay Support in Fonts-TLWG with Teochew Experiment

14 August, 2015 - 16:01

โครงการ fonts-tlwg กำลังอยู่ระหว่างพัฒนาเพิ่มเติมให้รองรับภาษาชาติพันธุ์ที่เขียนด้วยอักษรไทยได้สมบูรณ์ยิ่งขึ้น โดยรอบนี้เจาะไปที่ภาษามลายูปาตานีที่นอกจากจะต้องผ่อนคลายกฎการซ้อนอักขระต่าง ๆ แล้ว ยังต้องการอักขระเพิ่มเติมจากบล็อคยูนิโค้ดภาษาไทยอีก 4 ตัว เพื่อเป็นเครื่องหมายกำกับเสียงอ่าน กล่าวคือ:

  • U+0303 COMBINING TILDE คือสัญลักษณ์ตัวหนอนที่เขียนกำกับเหนือพยัญชนะเพื่อให้ออกเสียงขึ้นจมูก (เสียงนาสิก) คงได้แนวคิดจากตัว ñ ในภาษาสเปน
  • U+0331 COMBINING MACRON BELOW คือสัญลักษณ์ขีดเส้นใต้พยัญชนะเพื่อตัดเสียงนาสิกออกจากพยัญชนะนาสิกของไทย 4 ตัว คือ ง ญ น ม
  • U+02BC MODIFIER LETTER APOSTROPHE ใช้ในการลดรูปคำให้เหลือจำนวนพยางค์น้อยลง
  • U+02D7 MODIFIER LETTER MINUS ใช้ในการกล้ำสองพยางค์ให้ต่อเนื่องเป็นพยางค์เดียว

สองตัวหลังดูไม่มีอะไรมาก แค่เพิ่ม glyph ให้ก็ดูจะเพียงพอ แต่สองคัวแรกซึ่งเป็นอักขระประกอบ (combining character) ก็เลยมีปฏิสัมพันธ์กับสระบน-ล่าง วรรณยุกต์ และเครื่องหมายกำกับเสียงของไทย ทำให้ต้องมาจัดระเบียบใหม่ ซึ่งปรากฏว่าต้องทั้งขยับอักษรไทย ทั้งเปลี่ยนลำดับ normalization ของยูนิโค้ดด้วย

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

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

แต่ช้าก่อน ฟีเจอร์ของภาษามลายูปาตานีฟังดูน่าสนใจไม่น้อยสำหรับคนพูดภาษาแต้จิ๋วอย่างผม

  • เสียงนาสิกเป็นตัวแยกความหมายของคำในภาษาแต้จิ๋ว ภาษาไทยมีเสียงนาสิกแค่ไม่กี่เสียง คือ ง ญ ณ น ม ถ้าพยัญชนะต้นไม่ใช่เสียงพวกนี้ก็จะไม่ออกเสียงขึ้นจมูก (ญ ไม่มีเสียงนาสิกในไทยกลาง แต่ยังมีในไทยอีสาน [ดู blog เก่าประกอบ] และอาจจะมี ห ฮ ที่ยังขึ้นจมูกบ้างไม่ขึ้นบ้างแล้วแต่สำเนียง) แต่ภาษาแต้จิ๋วสามารถขึ้นจมูกได้ทุกพยางค์ และยังเป็นตัวแยกความหมายอีกด้วย เช่น คำว่า 碗 ที่แปลว่า ชาม จะออกเสียงเป็น อั้ว พร้อมเสียงขึ้นจมูก ซึ่งจะแตกต่างจากคำว่า 我 ที่เป็นสรรพนามบุรุษที่หนึ่งเอกพจน์ ซึ่งออกเสียงเป็น อั้ว เหมือนกันแต่ไม่ขึ้นจมูก ในเมื่อเสียงนาสิกมีความสำคัญถึงขนาดแยกความหมายของคำในภาษาแต้จิ๋วเช่นนี้ ตัวหนอนกำกับเสียงนาสิกของมลายูปาตานีจึงน่าจะนำมาใช้กับแต้จิ๋วได้
  • พยัญชนะที่ตัดเสียงนาสิกในภาษาแต้จิ๋วก็มี เช่นในคำว่า 牛 ที่แปลว่า วัว จะออกเสียงเป็น ก๎งู๊ คือเป็น ง ที่กล้ำกับเสียง ก ที่คอและไม่ขึ้นจมูก เสียงพยัญชนะนี้ไม่มีในภาษาไทย และมีความยากลำบากในการเขียนด้วยอักษรไทยมาก ตัวขีดเส้นใต้ตัดเสียงนาสิกของมลายูปาตานีก็น่าจะนำมาใช้ได้เช่นกัน

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

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

ประเด็นของโจทย์ก็คือ:

  • ตัวหนอนนาสิก ฐานข้อมูลอักขระยูนิโค้ดกำหนดให้มี combining class 220 ในขณะที่วรรณยุกต์ไทยเป็น class 107 ตามหลัก normalization ของยูนิโค้ด จะเรียงลำดับอักขระที่อยู่ระหว่างอักขระ class 0 (ได้แก่พยัญชนะบนบรรทัด) ตามลำดับ combining class จากน้อยไปหามาก (เรียกว่า canonical order) ผลคือ เมื่อตัวหนอนนาสิกผสมกับวรรณยุกต์ไทย rendering engine จะสลับมันไปอยู่หลังวรรณยุกต์ก่อนส่งให้ฟอนต์แสดงผลเสมอ แต่สิ่งที่เราต้องการคือวางตัวหนอนก่อนวรรณยุกต์ เพื่อให้อยู่ชิดพยัญชนะ แล้วจึงซ้อนวรรณยุกต์ทับทีหลัง ดังนั้น ฟอนต์จะต้องรู้จักกลับลำดับคืนด้วย แต่ถ้ามีสระบนมาคั่นกลางก็ไม่ต้องทำอะไร เพราะสระบน, ไม้ไต่คู้, ทัณฑฆาต, นิคหิต, ยามักการ ต่างถูกกำหนด combining class เป็น 0 เหมือนพยัญชนะบนเส้นบรรทัด จึงเป็นจุดกั้นแบ่งโซนการเรียงลำดับ combining character โดยปริยาย
  • ตัวขีดเส้นใต้ ฐานข้อมูลอักขระยูนิโค้ดกำหนดให้มี combining class 220 ในขณะที่สระอุ สระอู มี combining class เป็น 103 (แต่ Uniscribe และ Harfbuzz แก้เองให้เป็น 3 ด้วยเหตุผลใดไม่อาจทราบได้) และพินทุมี combining class เป็น 9 ทำให้ตัวขีดเส้นใต้จะถูก rendering engine normalize ให้ไปอยู่หลังสระล่างและพินทุเสมอ และถ้ามีวรรณยุกต์ก็จะเลื่อนไปอยู่หลังวรรณยุกต์ด้วย แต่สิ่งที่เราต้องการคือวางตัวขีดเส้นใต้ก่อนเพื่อน เพื่อให้อยู่ชิดพยัญชนะ ดังนั้น ฟอนต์จะต้องรู้จักกลับลำดับคืนด้วย
  • พินทุกับสระล่าง ตาม combining class ในฐานข้อมูลอักขระยูนิโค้ดแล้ว พินทุ (class 9) จะต้องมาก่อนสระล่าง (class 103) ใน canonical order ซึ่งเป็นสิ่งที่ต้องการอยู่แล้วสำหรับภาษามลายูปาตานี แต่ด้วยเหตุผลกลใดไม่ทราบได้ Uniscribe ของไมโครซอฟท์ได้แก้ทับคลาสของสระล่างจาก 103 เป็น 3 ทำให้สระล่างมาก่อนพินทุ และเพื่อความเข้ากันได้กับ Uniscribe ทำให้ Harfbuzz ก็ทำอย่างเดียวกันด้วย สิ่งที่ฟอนต์ต้องทำคือกลับลำดับนี้คืนอีกชั้นหนึ่ง

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

แต่ปัญหาของตัวขีดเส้นใต้ซับซ้อนกว่าที่คาดไว้มาก เพราะมีประเด็นอื่นที่ต้องพิจารณาร่วมด้วยอีก 2 ประเด็น คือ

  • การขีดเส้นใต้ ง ญ น ม ซึ่งความกว้างไม่เท่ากัน จัดการได้ด้วยการสร้าง precomposed glyph ที่ขีดเส้นใต้พยัญชนะดังกล่าวเสร็จสรรพ (ตัดเชิงสำหรับ ญ ไปในตัว) พร้อมกฎ ligature สำหรับเปลี่ยนคู่อักขระให้เป็นตัว precomposed กฎนี้ต้องทำงานในขณะที่พยัญชนะดังกล่าวกับตัวขีดเส้นใต้อยู่ติดกัน
  • กฎเดิมที่จัดการกรณีคำว่า ปู่ ซึ่งจะเปลี่ยนวรรณยุกต์ให้เป็นตัวต่ำพร้อมกับสลับสระล่างกับวรรณยุกต์ให้วรรณยุกต์มาก่อน เพื่อจะได้วางหลบหาง ป ฝ ฟ (และอาจจะ ฬ) ด้วย GPOS ได้ กฎนี้ต้องทำงานในขณะที่สระล่างตามหลังด้วยวรรณยุกต์ทันที

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

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

สตริงเริ่มแรก: C + Macron + BV + T Uniscribe/Harfbuzz: C + BV + T + Macron 1: สลับ T กับ Macron C + BV + Macron + T 2: สลับ BV กับ Macron C + Macron + BV + T 3: ligature C-Macron-lig + BV + T || C + Macron + BV + T 3: สลับ Macron กับ BV C + BV + Macron + T 4: สลับ Macron กับ T C + BV + T + Macron general composition C + T.low + BV + Macron 5: สลับ BV กับ Macron C + T.low + Macron + BV

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

กรณีลำดับของพินทุกับสระล่างที่ Uniscribe/Harfbuzz แปลงสารมาก็ทำนองเดียวกัน มีความซับซ้อนเล็กน้อย แต่ก็แค่กับกฎ ปู่ เท่านั้น :-

สตริงเริ่มแรก: C + Ph + BV + T Uniscribe/Harfbuzz: C + BV + Ph + T 1: สลับพินทุกับ BV C + Ph + BV + T general composition: C + Ph + T.low + BV 2: สลับพินทุกับ T.low C + T.low + Ph + BV

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

ผลที่ได้ดูจะทำงานได้ดีเมื่อทำ stress test ด้วยภาษาแต้จิ๋ว:

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

สังเกตว่า ในขณะที่ทำภาษามลายูปาตานีในขั้นแรกนั้น ผมลืมกรณีที่พยัญชนะขีดเส้นใต้มีสระล่างไปเสียสนิทด้วยซ้ำ การเล่นกับภาษาแต้จิ๋วยังช่วยจับบั๊กนี้ให้ด้วย

เมื่อทดลองกับฟอนต์ Garuda เป็นที่พอใจแล้ว ก็มาสรุปขั้นตอนทุกอย่างอีกครั้งกับฟอนต์ Kinnari:

แล้วก็ใช้ฟอนต์ Kinnari เป็นแบบสำหรับฟอนต์อื่น ๆ ต่อไป โดยเริ่มจากฟอนต์ Norasi:

ตอนนี้ทำถึงขั้นนี้เท่านั้นครับ ยังมีฟอนต์อื่น ๆ อีกสิบกว่าฟอนต์ในชุด fonts-tlwg ที่ผมจะค่อยทยอยทำต่อไปเมื่อมีเวลาว่าง คาดว่าคงใช้เวลาอีกหลายเดือน :-P

ผมสร้าง หน้าทดสอบ โดยใช้ web font ที่สร้างจากตัวล่าสุดที่อยู่ระหว่างพัฒนาไว้ด้วย คงจะอัปเดตไปเรื่อย ๆ ตามความคืบหน้าครับ

ในอีกด้านหนึ่ง ก็ได้ อภิปรายและเสนอแพตช์ สำหรับ Harfbuzz เพื่อขอตัดการ override combining class ของสระล่างของไทยเสียด้วย ดูจะได้รับความเห็นชอบ แต่ยังไม่ apply เสียที อาจจะเกรงความไม่เข้ากันกับ Uniscribe หรือเปล่าก็ไม่ทราบได้ แต่การแก้ในฟอนต์ที่ผมทำไปก็เท่ากับทำให้มันทำงานบนวินโดวส์ได้ด้วย

Ott: เราสามารถโพสต์ blogger ทาง e-mail ได้

13 August, 2015 - 13:13
โดยไปตั้งค่าไว้ก่อนว่าถ้าส่งถึง callmeott.xxxxxx@blogger.com จะเข้าเป็น Post ฉบับร่างให้เลย

ข้อดีคือ เขียนใน gmail ซึ่งสามารถแปะรูปจาก clipboard ได้ง่ายๆ (cut&paste)
(เขียน blog มันเหนื่อยตอน upload รูป)

Ott: Digital Economy ของใคร?

12 August, 2015 - 16:03
โทรศัพท์มือถือ Smartphone สงครามเหลือแค่ระหว่างสองตระกูลหลัก แอนดรอยด์และไอโฟน จากอเมริกาทั้งคู่ ไอโฟนเครื่องก็ทำโดย Apple อเมริกา ส่วนแอนดรอยด์เครื่องส่วนใหญ่น่าจะจากเมืองจีน ไม่ก็เกาหลี Samsung, LG ไม่ก็ไต้หวัน Asus

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

องค์กรภาครัฐภาคเอกชน จะให้เท่ห์ก็ต้องทำ LINE สติกเกอร์ขององค์กรหน่อย ไว้แจกขำๆ

แสนเบื่อเรียกรถแท็กซี่ทีไรก็ไม่ไป ก็ไปใช้ GrabTaxi สิ (มาเลเซีย) มีตังค์หน่อยก็ Uber (อเมริกา) มันช่างแสนสะดวก

ไปเที่ยวพักผ่อนทำยังไงดี จองโรงแรมก็ต้อง Agoda (อยู่ในเครือ Priceline ของอเมริกา?) หรือ ใหม่ล่ามาแรงก็จองผ่าน Airbnb ประหยัดกว่า และใครมีห้องพักคอนโดว่างๆ ก็ไปฝาก Airbnb ไว้ หารายได้เสริม

จับจ่ายใช้สอยเดี๋ยวนี้ก็ต้อง E-Commerce อยู่บ้านคลิกๆ ของก็มา Lazada (เยอรมัน?) แสนสะดวกสุดๆ หรือว่าจะ Tarad (ญี่ปุ่น?) ดี

ธุรกิจจะลงโฆษณาออนไลน์ ยุคนี้จะมีอะไรสะดวกไปกว่าลงกับ facebook หรือ Google แค่กดๆ คลิกๆ ก็เสร็จ มีเว็บมีคนดูเยอะ ก็เอาพื้นที่ไปให้เค้า เดี๋ยวก็ได้เงินใช้
search engine บ้านเรา Google กินรวบ ส่วนแบ่งตลาดน่าจะ 99.999999%

คนรุ่นใหม่ดู Youtube มากกว่าทีวี จะลงโฆษณาก็ไปลงกับ Youtube สิ มาออก 3/5/7/9 ทำไม

ธุรกิจต้องมีระบบคอมพิวเตอร์ ยุคนี้จะไปซื้อเครื่องคอมพิวเตอร์เองก็หมดสมัย ใช้ cloud กันดีกว่า นี่เลย Amazon AWS, Google, Microsoft Azure ฯลฯ

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

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

และมิหน้ำซ้ำ รายได้ของบริการต่างประเทศเหล่านี้ ประเทศไทยก็เก็บภาษีอะไรไม่ได้ด้วย เสียหายเป็นเด้งที่สอง

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

อาจจะต้องเรียนรู้จากจีน มั้ง

LookHin: เพิ่มความปลอดภัยในการล็อกอินเข้าเซิฟเวอร์ด้วยการใช้ SSH key และปิดการล็อกอินเข้าระบบโดยใช้ Username และ Password

12 August, 2015 - 07:57

ปกติแล้วเวลาที่เราจะทำการ remote login เข้าระบบที่เป็น Linux Server เราก็จะใช้ Username และ Password ในการ SSH เข้าไป แต่การใช้ username password ก็อาจจะไม่ปลอดภัยเพราะแฮกเกอร์อาจจะโจมตีแบบ Brute Force เพื่อเดารหัสผ่านเข้ามาได้ ถึงแม้เราจะใช้ fail2ban เพื่อป้องกันการโจมตีลักษณะนี้ได้ แต่ถ้ารหัสผ่านไม่แข็งแกรงพอก็มีความเป็นไปได้ที่แฮกเกอร์จะใช้พรอกซีและแฮกเข้ามาได้ หรือในกรณีที่แย่ที่สุดที่ผมเคยเจอคือผู้ดูแลระบบตั้งรหัสผ่านของอีเมล,ดาตาเบส,ssh เป็นรหัสเดียวกัน และเราหาช่องโหว่เพื่อแฮกไปอ่านค่าคอนฟิกของเว็บนั้นได้ว่าใช้รหัสผ่านดาตาเบสอะไรเราก็มีโอกาสที่จะ ssh เข้าไปควบคุมเซิฟเวอร์ได้ทั้งเครื่อง ส่วน SSH Key จะใช้การจับคู่กันระหว่าง private key และ public key ซึ่งยาว 2048 หรือ 4096 bit ทำให้เป็นไปได้ยากที่แฮกเกอร์จะรู้คีย์นี้ (ยกเว้นว่าเครื่องเราจะโดนขโมย) โดยในตัวอย่างนี้ผมจะใช้ putty ในการสร้างคีย์ และเมื่อเราล็อกอินด้วย SSH key ได้แล้วเราจะทำการปิดการล็อกอินด้วยรหัสผ่านไปเลย

เริ่มจากการสร้างคีย์โดยใช้โปรแกรม PuTTYgen ถ้าลง putty ไว้มันก็อยู่ที่เดียวกันกับ putty นั้นหละครับ หรือถ้ายังไม่มีหรือหาไม่เจอก็ไปเอามาจากเว็บหลักเขาได้เลย http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

เมื่อเปิด PuTTYgen ขึ้นมาแล้วก็กด Generate และเอาเมาส์เลือนไปเลือนมาในช่อง Key จนกว่าจะขึ้นครบ 100%

เมื่อเสร็จแล้วให้ทำการบันทึกคีย์ที่ได้โดยกด Save private key และให้ทำการ copy ค่าในช่อง Public key for pasting into OpenSSH authorized_keys file เอาไว้ก่อน (ส่วน Save public key ไม่ต้องบันทึกก็ได้เพราะเป็นค่าเดียวกับในช่อง Public key for pasting into OpenSSH authorized_keys file นั้นหละ แต่ putty กับ OpenSSH ใช้ฟอร์แมตต่างกันเฉยๆ)

หลังจากนั้นทำการล็อกอินเข้าเซิฟเวอร์ด้วย username และ password ตามปกติก่อน เสร็จแล้วให้เอาค่า Public key ที่ก๊อปปี้ไว้ตะกี่มาใส่ในไฟล์ ~/.ssh/authorized_keys เมื่อเสร็จแล้วก็ทำการล็อกเอาท์ออกจากระบบ

1 2 3 4 mkdir ~/.ssh chmod 0700 ~/.ssh nano ~/.ssh/authorized_keys chmod 0644 ~/.ssh/authorized_keys

ต่อไปทำการคอนฟิก putty ให้ใช้ private key แทนการใช้ username และ password โดยทำการเลือกที่แท๊บ data และใส่ Auto-login username เป็นยูเซอร์ที่เราจะใช้ในการล็อกอิน

จากนั้นมาที่แท๊บ Connection -> SSH -> Auth ให้เลือก private key ที่เราบันทึกเอาไว้

กลับมาที่แท๊บ Session ให้ใส่ IP, Port กด Save และ Open เพื่อเริ่มใช้งาน จะเห็นว่าสามารถล็อกอินเข้าระบบได้โดยไม่ต้องใส่ username และ password แล้ว

ขั้นตอนถัดไปทำการ disable การล็อกอินด้วย username และ password โดยให้ทำการแก้ไขไฟล์ /etc/ssh/sshd_config (อันนี้ต้องใช้สิทธิ์รูทให้การแก้นะครับ)

1 sudo nano /etc/ssh/sshd_config

จากนั้นหาบรรทัด PasswordAuthentication กับ UsePAM และแก้ไขเป็นดังนี้

1 2 PasswordAuthentication no UsePAM no

หลังจากแก้ไขเสร็จแล้วให้ทำการ restart ssh และทำการล็อกเอาท์ออกจากระบบ จากนั้นทดสอบทำการล็อกอินด้วย username และ password จะเห็นว่าไม่สามารถล็อกอินได้แล้ว ตอนนี้ทั้งระบบก็จะสามารถใช้งานได้ผ่านทาง SSH Key ได้เพียงอย่างเดียว

1 systemctl restart ssh

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

อ้างอิง : https://www.digitalocean.com/community/tutorials/how-to-create-ssh-keys-with-putty-to-connect-to-a-vps

Udomsak: ปรับแต่ง Openstack บน Docker

19 July, 2015 - 04:11
แม้อาจไม่ใช่ priority หลัก ยังคงคั่งค้างกับการหา Panel สำหรับบริหารจัดการกับ Amazon web-service. จากปัญหาทีเกิดขึ้นกับ Blog ก่อนหน้า.

หลังจากดูหนังเสร็จ ก็เลยมานั่งทำ Openstack ติดตั้งเฉพาะส่วนที่จะใช้งาน  บน Docker เผื่อได้ใช้งานวันหลัง ได้ผลออกมาตามนี้  จริงๆ Amazon เองก็มี เครื่องมือชื่อว่า Amazon cloud formation แต่ที่ทดลองทำดู เผื่อเห็น feature อะไรเพิ่มเติม จะนำมาใช้ในงานได้

ผมติดตั้งแค่

  • nova-compute 
  • nova-ec2-api
  • keystone
  • openstack-dashboard
  • ดาต้าเบสผมใช้ sqlite.
       
ทั้งหมดยัดใส่ใน docker วันหลังค่อยทำต่อ :)






Configuration ผมข้ามไปในส่วนของ EC2 configuration. 



My site Article and Topic

Udomsak: OpenNebula - Cloud orchestration.

18 July, 2015 - 20:45
พอดีกำลังหาเครื่องมือสำหรับช่วยงาน  ทำให้การ deploy ทำได้โดยง่าย.  โดยทำงานกับ Amazon cloud เป็นหลัก รวมถึงการ deploy ระบบ.  หลังจากที่ได้ทดลองใช้ สักพัก โดยมีตัวทดสอบดังนี้

  • OpenNebula
  • Theforeman
  • Apache CloudStack 
มีข้อสังเกตุตามนี้ 
  • Theforeman 
    •  เป็น Tool ที่สามารถทำ Orchestration Cloud ได้ 
    • สนับสนุน Amazon EC2 
    • สามารถทำการ Provision  ได้ด้วยโดย Support configuration management หลายตัวเช่น 
      • Puppet ( default )
      • Chef ( plugin )
      • Salt-stack  

        แต่เนื่องจากหลังจากทดลอง  ใช้งานแล้ว ยังพบกับปัญหาเรื่อง การทำงาน ยังไม่ค่อยสะดวกเท่าที่ควร  และ ยังมี bug ในบางจุดอยู่  เช่น
      •  การโหลดข้อมูลจาก EC2  ในส่วนของ Image ไม่ได้
      • ช้า
      • การ setup deploy template ยังคงมีความยุ่งยาก  ฯลฯ  เลยหยุดเอาไว้ก่อน
  • Open Nebula  ที่ได้ถูกซื้อไปโดย VMware เมื่อปีก่อนๆ  
    • Support Amazon EC2 
    •  ติดตั้งง่าย ไม่ต้อง Config  มาก 
    • ทำงานได้เร็ว 
    •  ติดปัญหา ในส่วนของ  Amazon EC2  ที่การ setup Image ทำได้ไม่ง่ายนัก  
      เลยตัดสินใจพับไป  เนื่องจากไม่อยากเสียเวลามาก และ คิดว่าคนอื่น ถ้าจะเรียนรู้การใช้งาน  ควรจะทำได้ง่าย 


การติดตั้ง  Open Nebula 
  • Support Ubuntu 14.04 ( Trusty ) 
  1. sudo apt-get install -y wget 
  2. wget -q -O- http://downloads.opennebula.org/repo/Debian/repo.key | apt-key add -
  3. echo "deb http://downloads.opennebula.org/repo/4.12/Ubuntu/14.04 stable opennebula" > /etc/apt/sources.list.d/opennebula.list
  4. apt-get upate && apt-get install -y opennebula opennebula-sunstone 
  5. sudo mkdir /var/run/one /var/lock/one 
  6. chown -Rv oneadmin:oneadmin /var/run/one 
  7. chown -Rv oneadmin:oneadmin /var/lock/one 
  8. สั่ง Start one service  ตัวนี้จะเป็น  IPC  service  ประมาณ middle-ware สำหรับ การทำงานกับ Open Nebula  
    1. su  -c 'one start '  oneadmin 
  9. ดู password ที่ package ที่  Package manager ทำให้เรา จดเอาไว้  จะเอาไปใส่ใน หน้า login อีกที 
    1. cat /home/oneadmin/.one/auth   
  10. /etc/init.d/opennebula-sunstone
  11. เปิด browser ให้ชี้ไปที่   http://localhost:9869   

หน้าแรก

User configuration

หา plugin หรือ ระบบเสริม ให้ทำงานได้หลากหลายมากขึ้น เรียกว่า  Market place มีทั้ง ฟรี และ ไม่ฟรี ส่วนใหญ่ ฟรี




กำหนด Group ได้  



DataStores เอาไว้เก็บ Image  concept เดียวกับ  OpenStack Glance 

กำหนด Access Control ได้  

สรุปถ้าเอาไปทำงานกับ VMware ประมาณ Dashboard front-end กับ VMware vCenter หรือ Vcloud จะเหมาะมาก   




My site Article and Topic

Udomsak: ทดสอบ Font. THSarabunNew จาก SIPA

11 July, 2015 - 18:04
ทดสอบ

แบบ  ใหญ่ที่สุด
แบบ  ใหญ่
แบบ ปกติ


ทำการทดสอบ Add font THSarabunNew  จาก SIPA เป็นแบบ TrueType font.  ดาวน์โหลดได้จากที่ ลิงค์นี้   :  http://www.f0nt.com/release/th-sarabun-new/

Openstack: โอเพ่นแสตค
Opensource:  โอเพ่นซอร์ส

ทดสอบการติดตั้ง font สำหรับภาษาไทย เพื่อการอ่านที่ง่ายขึ้น

เทียบกับ ของเดิม "Helvetica"




My site Article and Topic

Udomsak: California Calendar application on Fedora 22

10 July, 2015 - 10:23
On Fedora core 22  , very cool application named 'california'.  

After i'm sick and my phone clock was wrong make me terrible and guilty with miss meeting and i think must have backup of calendar notification.  After i see my date showing on notebook and it show 'No event' but no input for event.  Ahmm..   Think  Gnome can help me.   :) 


Ok ,  I dig to Fedora application can complete mind and now i found  application named 'California' i'm choose and installed.  



Click install and wait then i got it My calendar on desktop. 
     
My site Article and Topic

Udomsak: Docker setting on fedora 22 and Virtualization note

10 July, 2015 - 00:05
Note work  - Fedora 22 docker for non-root access. 

After lose my  Ubuntu 13.10 install on my laptop i decide to install  Fedora core 22 instead. Setup  docker for non-root access.   I note for my work  may advantage for other.  


udomsak$  sudo dnf  install -y docker
udomsak$  sudo usermod -aG  dockerroot  { username } 
udomsak$  sudo chown  root:dockerroot  /var/run/docker.sock 

udomsak$docker iamges  




Volume mount:  

udomsak$  sudo setenforce 0  

before  do docker mount otherwise you will get 'Permission denied'  on Fedora22  after mount volume. 

For reason you have problem with after docker exit  you will lose you work and data from containers run. you can do docker commit.

Prevent lazy and forgot commit you docker image container that result on lose data. you can use this tool  docker-autocommit - https://github.com/rcmorano/docker-autocommit


Ubuntu Cloud Image: 

My work  company we base on Ubuntu but i have some reason that need to install Fedora core 22 instead  Ubuntu base but for compatible work i still need Ubuntu. 

http://cloud-images.ubuntu.com/releases/15.04/release/

Vagrant with Fedora 22 have default package with vagrant version 1.7.2:  { alternative way to use  Para-virtualization named Qemu/KVM  } install vagrant and vagrant libvirt driver 

sudo dnf install  vagrant vagrant-libvirt  


Performance  compare :  Vitualbox with KVM  test on  intel core i-7. reason that why i want to change vagrant provider  from Virtualbox ( full-virtualization ) to QENU/KVM  ( para-virtulization ) 



Fedora 22 install packages to work with virtualization :

 udomsak$ sudo dnf groupinstall 'virtualization' 

 Vagrant add box for Ubuntu 15.04 :

udomsak$  vagrant box add  ubuntu/vivid64
udomsak$  mkdir -pv ~/Development/Images/Ubuntu-KVM  &&  ~/Development/Images/Ubuntu-KVM
udomsak$  vagrant init ubuntu/vivid64  .   //  Careful 'dot' character

Edit  Vagrantfile change provider from  Virtualbox default to QEMU/KVM

And edit like this  or you can view and copy from  my gist -> here 

udomsak$  vim Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|

 config.vm.box = "ubuntu/vivid64"
 config.vm.box_url = "."
 config.vm.network "forwarded_port", guest: 80, host: 8080
 config.vm.provider "libvirt" do |libvirt|
      libvirt.driver = "kvm"
      libvirt.memory = 512
      libvirt.cpus = 2
  end

end

Convert  Default Box  from Virtualbox Format to  Libvirt: 

udomsak$  vagrant plugin  install vagrant-mutate
udomsak$  vagrant mutate ubuntu/vivid64  libvirt    

Add user to libvirrt group :  ( otherwise you will ask for password every time you start and ssh to vm ) 

udomsak$  sudo  usermod -a -G libvirt  udomsak 


Run vagrant:  
udomsak$ vagrant up 
Access VM Ubuntu: 
udomsak$ vagrant ssh  
List vagrant box:

udomsak$  vagrant box list 


Refer:  Tutorial docker setup base on Fedora 21
1.Permission denied when mount volume from docker.

My site Article and Topic

LookHin: การสร้าง Debian Droplet บน DigitalOcean และติดตั้ง Apache, PHP, MySQL, ProFTPD, Firewall

4 July, 2015 - 15:45

วันนี้มาลองสร้าง Droplet บน DigitalOcean กันครับ หลังจากสร้างแล้วเราจะติดต้ัง Apache, PHP, MySQL, ProFTPD, Firewall เพื่อใช้งานเป็น Web Server ด้วย, เจ้า Droplet ที่ว่ามันก็คือ Virtual Servers นี่หละครับ บน DigitalOcean เขาเรียก Droplet ซึ่งในบทความนี้ผมจะเลือกใช้ Image ที่เป็น Debian 8.1 x64 นะครับ ส่วนโปรแกรมอื่นๆที่เราจะใช้เดียวเราจะลงเองภายหลัง

อย่างแรกเราต้องมี Account ของ DigitalOcean ก่อนครับ ถ้ายังไม่มีก็สมัครก่อนครับ https://www.digitalocean.com/?refcode=29f4a5ac06ae (ถ้าคุณสมัครผ่านลิงค์นี้และเริ่มใช้งาน ผมก็ได้เครติดการใช้งานด้วย ^^) เมื่อสมัครเรียบร้อยแล้ว ก็ทำการล็อกอินเข้าระบบและเลือก Create Droplet โดยกำหนดค่าต่างๆ ดังนี้

Droplet Hostname : ชื่อของเว็บหรือชื่อที่เราจะใช้เรียก droplet อันนี้ ตั้งว่าอะไรก็ได้แต่ห้ามมีช่องว่าง
Select Size : เลือกไซต์เล็กสุด 5 USD ต่อเดือน (ประมาณเดือนละ 169 บาท ถูกมากๆ)
Select Region : เลือกเป็น Singapore ใกล้บ้านเราหน่อยจะได้เร็วๆ
Select Image : อันนี้เลือกเป็น Debian 8.1 x64 หรือถ้าใครอยากใช้แบบที่มีโปรแกรมต่างๆอยู่แล้วก็เลือกไปที่แท็บ Application และเลือก Image ที่มีโปรแกรมต่างๆ ในแบบที่ตัวเองต้องการได้เลยครับ

เมื่อเลือก ขนาด, ที่ตั้ง, และอิมเมจได้แล้วก็คลิก Create Droplet ด้านล่างสุดได้เลยครับ รอไม่กี่อึดใจก็จะมีอีเมล์มาแจ้งเราว่า IP Address และ root password ของอิมเมจของเราคืออะไร ขั้นต่อไปก็ทำการรีโมทเข้าไปทำการติดตั้งโปรแกรมต่างๆ

เมื่อได้รับอีเมลแจ้ง IP Address และ root password ของอิมเมจที่เราสร้างแล้วก็ให้ทำการรีโมทเข้าไปติดตั้ง Apache, PHP, MySQL, ProFTPD ตามขั้นตอนต่างๆ ดังนี้

1. ทำการเพิ่มยูสเซอร์และคอนฟิก ssh ไม่ให้รีโมทล๊อกอินด้วย root

1 2 3 4 5 6 # apt-get update # apt-get upgrade   # adduser demouser # apt-get install sudo # usermod -a -G sudo demouser

แก้ไขไฟล์ /etc/ssh/sshd_config

1 # nano /etc/ssh/sshd_config

ในไฟล์ /etc/ssh/sshd_config ให้หาคำว่า PermitRootLogin และทำการแก้ไขจาก PermitRootLogin yes เป็น PermitRootLogin no เพื่อไม่ให้รีโมทล๊อกอินด้วย root ได้

1 PermitRootLogin no

รีสตาร์ท ssh และลองล๊อกอินเข้าระบบด้วยยูเซอร์ใหม่

1 # systemctl restart ssh

2. ทำการติดตั้ง Apache, PHP, MySQL

1 2 3 4 5 6 7 8 9 10 11 # apt-get install apache2 # a2enmod ssl # a2enmod rewrite   # apt-get install mysql-server # mysql_secure_installation   # apt-cache search php5   # apt-get install php5 php5-cli php5-common php5-curl php5-gd php5-imap php5-ldap php5-mcrypt php5-mysql php5-sqlite php5-mongo php5-json # service apache2 restart

ทำการแก้ไขไฟล์คอนฟิกของ apache เพื่อไม่ให้แสดงรายชื่อไฟล์ถ้าไม่มีอินเด็กและอนุญาตให้ใช้ .htaccess ได้

1 # nano /etc/apache2/apache2.conf

ในไฟล์ /etc/apache2/apache2.conf ให้หาคำว่า Directory /var/www/ และแก้ไข Options และ AllowOverride ดังนี้

1 2 3 4 5 <Directory /var/www/> Options -Indexes -Includes -ExecCGI AllowOverride All Require all granted </Directory>

แก้ไขไฟล์ security.conf ไม่ให้แสดงเวอร์ชั่นของ apache

1 # nano /etc/apache2/conf-available/security.conf

ในไฟล์ /etc/apache2/conf-available/security.conf ให้หาบรรทัด ServerTokens และ ServerSignature โดยแก้ไขดังนี้

1 2 ServerTokens Prod ServerSignature Off

รีสตาร์ท apache อีกรอบ

1 # service apache2 restart

3. ติดตั้ง ProFTPD Server

1 # apt-get install proftpd

ทำการแก้ไขไฟล์ /etc/proftpd/proftpd.conf เพื่อให้ยูเซอร์แต่ละคนเห็นเฉพาะ directory ของตัวเองเท่านั้น

1 # nano /etc/proftpd/proftpd.conf

โดยแก้ไขไฟล์ /etc/proftpd/proftpd.conf ในหัวข้อ DefaultRoot และ RequireValidShell ดังนี้

1 2 DefaultRoot ~ RequireValidShell on

จากนั้นทำการแก้ไขไฟล์ /etc/shells โดยเพิ่มบรรทัด /bin/false เข้าไปท้ายไฟล์

1 # nano /etc/shells

เพิ่มยูเซอร์ที่จะให้ FTP เข้ามาได้ แต่เราจะไม่ให้ยูเซอร์นี้ ssh เข้ามา โดยเพิ่มออปชั่น –shell /bin/false

1 # adduser demoftp --home /var/www/demoftp --shell /bin/false

จากนั้นรีสตาร์ท ProFTPD และทดสอบใช้ยูเซอร์ที่สร้าง FTP เข้ามาในระบบ จะเห็นว่ายูเซอร์นี้สามารถใช้งาน FTP ได้อย่างเดียวและจะเห็นข้อมูลแค่เฉพาะในไดเร็กทอรีของตัวเองเท่านั้น

1 # service proftpd restart

4. ติดตั้ง UFW Firewall

1 # apt-get install ufw

ทำการคอนฟิก Firewall โดยอนุญาตให้ใช้งานได้แค่ port 22,80,21,443

1 2 3 4 5 6 7 8 9 10 # ufw default deny incoming # ufw default allow outgoing   # ufw allow 22/tcp # ufw allow 80/tcp # ufw allow 21/tcp # ufw allow 443/tcp   # ufw disable # ufw enable

ตรวจสอบสถานะของไฟล์วอด้วยคำสั่ง

1 # ufw status

เพียงเท่านี้เราก็มีเซิฟเวอร์พร้อมให้บริการแล้วครับ

Kitt: Create an aligned partition

30 June, 2015 - 14:56
An aligned partition gives you the best read/write performance, but you will have to sacrifice some space to align your partition. To create, # parted -a optimal /dev/sda mkpart primary 0% 100% And you can check if it is aligned, # parted /dev/sda align-check optimal 1

Kitt: NGINX HTTP Basic Authentication with LDAP

30 June, 2015 - 14:54
First,  install libpam-ldap # apt-get install libpam-ldap Config ldap:// properly. This will add ldap backend to PAM. Now, create a file /etc/pam.d/nginx @include common-auth @include common-account This will add nginx service in PAM. Then, config your nginx to enable HTTP basic authentication using auth_pam and PAM service name “nginx” location /someplace { auth_pam "Restricted Area"; … Continue reading NGINX HTTP Basic Authentication with LDAP →

Udomsak: Note on my info. -

19 June, 2015 - 09:43

PCAP  files download  protal
http://www.netresec.com/?page=PcapFiles
http://digitalcorpora.org/corpora/network-packet-dumps/cseagle-pcaps/

Lua PCAP  - https://github.com/sam-github/pcap-lua.git

Hadoop technologies stack and relate Big-data

https://hadoopecosystemtable.github.io/

PCAP for malware analysis

http://contagiodump.blogspot.com/2013/04/collection-of-pcap-files-from-malware.html



Facebook PrestoDB ( alternative Apache Hive ) 






Fabric8  Integration Platform run on top  Google Kubernate




Ipython - Interactive Python shell http://ipython.org/



BPython - Interactive Python shell 

http://bpython-interpreter.org/




My site Article and Topic

Udomsak: Openvswitch on Ubuntu Linux 13.04 or 13.10

29 May, 2015 - 14:11

OpenVswitch

After long period of time out of writing new weblog. due to my working time and busy.  Today just have time and sitting @  Co-working space at  Chiangmai, Thailand thinking of my future careers.

So before i need to drive to my goal.  I need to setting up own local infrastructure on my laptop to support my project that i have.  Docker  is a nice platform with cool feature but i need virtualization that lightweight than Virtualbox and KVM. look like is suitable my environment.

OpenVswitch is  Virtual Network Switch run on layer 2/3 with Sofware Define Network ( SDN ) capability . Openstack also support.

Environment.

  1. Ubuntu 13.10
    1. Kernel  version 3.11.0-26-generic
  2. OpenVswitch 2.3 
  3. Software dependency 
    1. Don't know because most of software lib are install to my laptop already. ( sorry ) 

Download and Compile




  • mkdir ~/Developement/ovs  && cd ovs 
  • wget http://openvswitch.org/releases/openvswitch-2.3.1.tar.gz 
  • tar -xvfz openvswitch-2.3.1.tar.gz  &&  cd openvswitch-2.3.1.tar.gz   && ./boot.sh
  • ./configure --with-linux=/lib/modules/`uname -r`/build 
  • sudo make && sudo make install  
  • modprobe libcrc32c && modprobe gre
  • insmod sudo insmod datapath/linux/openvswitch.ko
  • sudo insmod datapath/linux/openvswitch.ko

  • OpenVswitch setup and config





  • sudo mkdir -p /usr/local/etc/openvswitch
  • ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
  • ovsdb-server -v --remote=punix:/usr/local/var/run/openvswitch/db.sock \ --remote=db:Open_vswitch,Open_vSwitch,manager_options \ --private_key=db:Open_vSwitch,SSL,private_key \ --certificate=db:Open_vSwtich,SSL,certificate \ --pidfile --detach --log-file
  • ovs-vsctl --no-wait init
  • ovs-vswitchd --pidfile --detach
  • ovs-vsctl show

  • My site Article and Topic