Archive

Author Archive

Output ข้อมูลจาก Vim สู่ stdin ของโปรแกรมอื่น

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

$ vim temp.ldif
$ cat temp.ldif | ldapadd

วิธีนี้มีข้อเสียคือไม่สะดวก และมีไฟล์เกะกะ จริง ๆ แล้ว ใน Vim เราสามารถ Output ข้อมูลใน Buffer เข้าไปยัง stdin ของโปรแกรมอื่นได้เลย โดยการใช้คำสั่ง

:w !COMMAND

สมมุติว่าใน Buffer ของ Vim เรามีข้อความ ABC อยู่ หากเรารัน

:w !cat

ก็จะ print ข้อความ ABC ออกมา

Advertisements
Categories: UNIX Tips Tags:

การรันเซิร์ฟเวอร์ LDAP บน macOS ด้วย OpenLDAP ที่มากับ macOS

ใน macOS นั้น OpenLDAP ได้ถูกติดตั้งมาโดย default แต่ถูก disabled ไว้ เราสามารถ enable ได้ด้วยคำสั่ง

$ sudo launchctl load -w /System/Library/LaunchDaemons/org.openldap.slapd.plist

เสร็จแล้ว เราสามารถรัน OpenLDAP ได้ด้วยคำสั่ง

$ sudo launchctl start org.openldap.slapd

การรัน OpenLDAP โดยวิธีนี้เหมาะสำหรับการ development เท่านั้น เนื่องจาก OpenLDAP จะถูกรันด้วย root

ในการรันครั้งแรกอาจจะล้มเหลวเนื่องจากการตั้งค่าต่าง ๆ ยังไม่ได้ถูกกำหนด ไฟล์การตั้งค่าต่าง ๆ จะอยู่ใน /etc/openldap

Categories: System Administration Tags: ,

การขอ OIDs สำหรับบริษัท

OIDs ย่อมาจาก Object Identifiers เป็นวิธีการกำหนดชื่อให้กับสิ่ง ๆ หนึ่งโดยที่ทั้งโลกจะไม่มีทางซ้ำกัน รูปแบบของ OIDs จะเป็นตัวเลขหลาย ๆ ตัวต่อกันคั่นด้วย . ตัวอย่าง

1.3.6.1.4.1.343

หากเราต้องการสร้าง OIDs ขึ้นมาใหม่ (เช่น สร้าง objectclass อันใหม่ของ LDAP) เราจำเป็นต้องไปลงทะเบียนบริษัทเรากับ IANA (Internet Assigned Numbers Authority) ก่อน เพื่อขอ prefix ที่เราสามารถใช้ได้ ซึ่งการลงทะเบียนก็ไม่ได้ยุ่งยาก สามารถทำได้โดยใช้แบบฟอร์มนี้

Categories: Uncategorized

การติดตั้ง Delve สำหรับ Debug Go บน macOS

Delve คือ debugger ตัวหนึ่งสำหรับ debug โปรแกรมที่เขียนด้วยภาษา Go หากเราทำตามวิธีการติดตั้งตามที่บอกในหน้านี้ จะพบว่า มัน error ทั้งสองวิธี วิธีการติดตั้งแบบ manual ที่ดีที่สุดคือ

ทั้งนี้ XCode Toolchain ต้องถูกติดตั้งไว้แล้ว โดยสามารถติดตั้งได้จาก App Store แล้วรัน

รีวิวแว่น Carl Zeiss DriveSafe

drivesafe-00

ผมใช้แว่นนี้มาประมาณ 3 อาทิตย์แล้ว เลยอยากจะเขียนรีวิวสักหน่อย เหตุที่ได้เปลี่ยนแว่นเพราะทางบริษัทมีโควต้าค่าแว่นให้ 3,000 บาทในปีที่แล้ว บวกกับแว่นเก่าใช้งานมาได้ราว ๆ 7 ปีแล้ว เลยถือโอกาสนี้หาแว่นดี ๆ สักตัวใช้ และก็ได้มาจบที่ Carl Zeiss DriveSafe ตัวนี้ ที่ผมเลือกเลนส์ตัวนี้เพราะต้องขับรถกลางคืนเป็นประจำ

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

drivesafe-01

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

ทาง Carl Zeiss ได้โฆษณาด้วยว่าช่วยให้มองเห็นในยามฝนตกได้ดีขึ้นด้วย รูปด้านล่างคือภาพที่ใช้ในการโฆษณา

drivesafe-02

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

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

โดยรวมแล้วผมพอใจกับเลนส์ตัวนี้มาก สำหรับคนที่กำลังมองหาแว่นใหม่และต้องขับรถกลางคืนเป็นประจำ และสามารถจ่ายค่าแว่นในหลักสองหมื่นกว่าบาทได้อย่างไม่ลำบาก ผมแนะนำเลนส์ตัวนี้เลย มันจะทำให้คุณรู้สึกเหมือนคุณได้ตาใหม่ ราคาที่ผมได้มาอยู่ที่ราวๆ 16,000 บาท (ราคากรอบที่ผมเลือกอยู่ที่ราว ๆ 8,000 บาท) แต่ร้านแจ้งมาว่าราคาเต็มอยู่ที่สองหมื่นต้น ๆ เหตุที่ผมได้ราคานี้เพราะตอนแรกทางร้านเข้าใจผิดว่าเป็นเลนส์อีกตัวหนึ่ง แต่พอทางร้านติดต่อไปยัง Sale ของ Carl Zeiss แล้วพบว่ามันคนละตัวกันกับที่ทางร้านเข้าใจ ทางร้านก็เลยให้ราคานี้กับผมแทนราคาเต็ม ราคานี้เป็นราคาของ Index 1.6 (ตัวเลขนี้ยิ่งสูงเลนส์ยิ่งบาง) และเป็นเลนส์แบบ PhotoFusion ซึ่งช่วยให้แว่นเปลี่ยนเป็นสีดำเวลาโดดแดด ผมไม่แน่ใจว่าถ้าตัด PhotoFusion ออกและลด Index ลงราคาจะเหลือเท่าไหร่

ผมไม่รู้ว่าที่ไหนมีขายบ้าง ร้านที่ผมไปซื้อชื่อร้าน FOR EYES ที่ฟิวเจอร์พาร์ครังสิต น่าจะอยู่ที่ชั้น 1 ไม่ก็ชั้น 2 ซึ่งทางร้านโฆษณามาว่าเป็น Authorized Reseller ของเลนส์ Carl Zeiss เลยทีเดียว ซึ่งอันนี้ผมก็ไม่รู้ว่าจริงรึเปล่า แต่ดูจากภายในร้านแล้วคิดว่าน่าจะจริง เพราะห้องวัดสายตามีการ Paint กำแพงเป็นภาพของ Carl Zeiss ขนาดใหญ่อยู่ด้วย

อันนี้คือสเปคเลนส์ของผม

drivesafe-03

Categories: Eyes, Health Tags: , ,

ว่าด้วยโรค FIP ในแมว

2016/02/06 1 comment

โรค FIP (Feline infectious peritonitis) ในแมวนั้นถือเป็นหนึ่งในโรคที่อันตรายมากสำหรับแมว หากเกิดขึ้นแล้วโอกาสรอดแทบจะเป็นศูนย์ สาเหตุของโรคนี้เกิดจากไวรัสที่ชื่อว่า Feline coronavirus (FCoV) ซึ่งไวรัสตัวนี้จะมีอยู่สองชนิด ชนิดแรกมีชื่อว่า Feline enteric coronavirus (FECV) ซึ่งไวรัสตัวนี้จะไม่ก่อให้เกิดโรคร้ายแรง ส่วนชนิดที่สองมีชื่อว่า Feline infectious peritonitis virus (FIPV) ซึ่งเป็นตัวที่ก่อให้เกิดโรค FIP

โรค FIP นั้นจะมีอยู่สองแบบ แบบแรกคือแบบเปียก แบบเปียกจะก่อให้เกิดการสะสมของน้ำในช่องท้องของแมว สามารถสังเกตได้ง่าย ส่วนแบบที่สองคือแบบแห้ง ซึ่งจะไม่มีการสะสมของน้ำในช่องท้อง สาเหตุของโรค FIP นั้นเกิดจากการอักเสบของเนื้อเยื่อภายในเนื่องจากการติดเชื้อไวรัส FIPV

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

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

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

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

Categories: Cats, Pet

ประเภทของ Object ใน Java Virtual Machine และ Common Language Runtime

ใน Java Virtual Machine (JVM) และ Common Language Runtime (CLR) นั้น จะมี Type อยู่สองประเภทคือ Value Type และ Reference Type ซึ่ง Value Type จะเป็น Type ที่ Object จะเกิดการ Copy ตัวมันเองเมื่อมีการ Assign ตัวมันให้กับตัวแปรอื่น ส่วน Reference Type จะเป็น Type ที่ Object อาศัยอยู่บน Heap เท่านั้น ซึ่งต้องใช้ new ในการสร้างขึ้นมา

ใน JVM นั้น เราไม่สามารถสร้าง Value Type เพิ่มได้ ต้องใช้อันมี่ทีอยู่แล้วเท่านั้น ซึ่งแตกต่างจาก CLR ที่เราสามารถสร้าง Value Type เพิ่มได้ ทำให้ CLR มีข้อได้เปรียบอยู่หลายอย่าง เช่น

  • Performance ที่เพิ่มขึ้น เนื่องจาก Value Type ไม่จำเป็นต้องจอง Memory บน Heap
  • ติดต่อกับ Native Code ได้ง่ายขึ้น เนื่องจาก Type ใน Native Code จะเป็น Value Type

Object ที่เป็นชนิด Value Type นั้นสามารถแปลงเป็น Reference Type ได้ด้วยการ Wrap ไว้ใน Object ที่เป็น Reference Type อีกทีหนึ่ง ซึ่งการ Wrap นี่จะเรียกว่า “Boxing” ส่วนการแปลงกลับมาเป็น Value Type อีกครั้งจะเรียกว่า “Unboxing”

การ Boxing นั้น ใน C# จะสามารถ Assign ตัว Object ที่เป็นประเภท Value Type ใส่ตัวแปรที่เป็นคลาส System.Object ได้ทันที การ Unboxing นั้นก็เหมือนกัน สามารถ Cast กลับมาได้ทันที ส่วน Java นั้นเราจำเป็นต้องใช้คลาสที่มีมาให้อยู่แล้ว เช่น java.lang.Integer สำหรับ Wrap ตัว Object ที่เป็นชนิด int