ทอฟฟี่จากระยอง

โฟสต์นี้เห็นว่าออกนอกเรื่องของ @veer66@mstdn.io และอยากโพสต์ภาษาไทยก็เลยกลับมาลงที่ WordPress ครับ

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

Advertisements

ถ้าสมมุติว่าไม่ใช้ REST

อ่านเรื่องที่วิจารณ์ REST มาแล้วก็คิดว่าถ้าไม่ใช้ REST ผมจะใช้อะไร

🚫 XML-RPC นี้ 10 กว่าปีก่อนนี้ผมใช้มาเยอะ ตอนนี้คิดว่าไม่จำเป็นก็อย่าไปยุ่งด้วยดีกว่า XML-RPC ยังไม่ไหว SOAP ก็ลืืมไปเลยดีกว่า

🚫 gRPC นี้ก็อาจจะดีก็ได้ แต่ว่าอย่างน้อย ๆ ตอนนี้ก็ยังไม่เห็น lib ที่เอาไว้ใช้กับ Common Lisp หรือ GNU Guile ดูเอกสาร แล้วก็คิดว่าต้องนอนให้พอแล้วมีเวลาอ่านดี ๆ หน่อย ไปยุ่งกับมันตอนนี้ก็ไม่น่าจะมีประโยชน์อะไรขึ้นมา ต่อไปถ้าเป็นที่นิยมกันผมก็จะใช้ด้วยก็ได้ แต่ตอนนี้ยัง

💡 JSON-RPC นี่เห็นใน Wikipedia แล้วก็นึกภาพออกเลย หา lib สำหรับ Common Lisp ก็ดี ซึ่งถ้าใช้ Common Lisp ได้ภาษาอื่น ๆ ที่ชาวบ้านเขาพอจะเขียนกันก็คงมีให้ใช้หมด

จะว่าไปใช้ REST ผมก็ไม้ได้อึดอัดอะไร ให้เขียน JSON เองแล้วอัดใส่ cURL ผมก็ทำอยู่แทบทุกวัน ถึงจะไม่ค่อยสนุกก็ตามที แต่ก็ยังรู้สึกว่า JSON-RPC มันก็น่าสนใจ เรื่องประสิทธิภาพ เพราะว่าดูแล้ว web framework หลาย ๆ ตัวเวลาทำ routing นี้ พอได้ request มาก็ใช้ Regex ของแต่ละจุดมาไล่ดูทีละจุด ๆ ว่าเข้าข้อนี้ได้ไหมข้อนั้นได้ไหม จะแก้โดยใช้เอา Regex Set ไปทำ NFA/DFA ชุดเดียวเลยก็ได้ แต่ก็ไม่เห็นมีใครทำ แถมตอน debug ก็คงวุ่นวายพิกล แต่ถ้าเป็น JSON-RPC นี้น่าจะใช้พวก hash-map ระหว่างชื่อ method กับ function ได้เลย ซึ่งน่าจะทำให้เร็วและ debug ง่ายขึ้นด้วย ทำให้ JSON-RPC ดูน่าสนใจขึ้นมาเลย

Endless OS

ดูเครื่อง Acer แล้ว OS มันจะใช้ Endless OS ผมเลยลองไปค้นดูเจอเว็บนี้ https://endlessos.com/th/ จากเว็บนี้ดูดีกว่า Linpus มาก ๆ

โดยคร่าว ๆ แล้วก็ใช้ลง app นี่น่าสนใจสำหรับ user ทั่ว ๆ ไปมาเยอะเลยกระทั่ง Scratch ที่เอาไว้คนเริ่มเขียนโปรแกรมได้

Screenshot-2017-12-3 Endless OS
(ภาพมาจาก https://endlessos.com/th/)

หาต่อใน distrowatch ดูพบว่าฐานมาจาก Debian Ubuntu และใช้ GNOME shell ด้วย

จากที่ไปแอบกดเล่นที่เดอะมอลล์ก็ง่ายดี แต่ยังไม่ได้ลองเปิด terminal ลง Emacs อะไรแบบนี้

ของเยอะขนาดนี้คิดว่าเครื่องหน้าอาจจะลอง Acer แทน Lenovo ก็ได้ จริง ๆ Lenovo ก็ดี แต่ชอบ Acer ที่ลง OS แบบเป็นเรื่องเป็นราวมา

Lisp ไม่จำเป็นต้องเขียนแบบ Functional Programming

ใน code นี้ Python กับ Emacs Lisp แทบจะเหมือนกันทุกอย่างบรรทัดต่อบรรทัด เขียนแบบ imperlative ธรรมดา

อาจจะต่างบ้างที่ (cdr …) มี time complexity เป็น O(1) แต่ [1:] นี่ O(k) เพระา data structure ที่ใช้ต่างกัน ถึงจะบอกว่าเป็น list เหมือนกันก็ตามแต่ของ Emacs เป็น singly linked list ของ Python ผมเดา ๆ ว่าน่าจะเป็น array list?

 

emacs_py

 

อยากไรก็ตามใน Emacs Lisp ปกติเวลาทำแบบนี้ก็จะใช้ (dolist …) แทน และใน Python ก็ใช้ for กับ iterator อันนี้เพียงแต่อยากยกตัวอย่างให้ดูว่ามันก็ไม่ได้ต่างกันมาก

XPCOM

เปิดดู XPCOM หลังจากที่ไม่ได้ดูมาหลายปี เพราะว่าอยากรู้ว่า blog ที่อ่านเมื่อเช้าจะจริงหรือเปล่า
 
มันก็ใช่คือ XPCOM นี่ประมาณว่าไปล้วงเอา class ของ C++ ใน Gecko ออกมาใช้ได้เลย เฉพาะ class ที่ทำเป็น XPCOM ไว้
 
ท่าแบบนี้จะไปปรับ class ใน Gecko เองก็น่าจะทำให้ addon พังได้เลย?
 
แล้วก็ดูจาก Wikipedia ก็มีกรณี่ใช้ XPCOM เยอะจน Apple ไปเลือก KHTML และปี 2008 ลดการใช้ XPCOM ลง Gecko ก็ไวขึ้น
 
แต่คงลืมไม่ได้ว่า Firefox สร้างชื่อขึ้นมาได้ก็เพราะ Addon ที่ขี่ XPCOM อยู่นี่ล่ะ
 
 

ร้านกาแฟใหม่ที่เกษตรฯ: The Black Bear Brews

หลังจากที่ First Espresso หายไปก็มีร้านชามาแทน ตอนนี้ร้านชาก็ไปแล้ว เปลี่ยนเป็นร้านกาแฟ The Black Bear Brews แทน

P1060299

ดูราคาแล้วก็รู้สึกว่าท่าจะไม่ธรรมดาเพราะว่ากาแฟร้านแพงกว่าเย็น ปกติผมเจอแต่กาแฟเย็นแพงกว่า
P1060296

 

ก็เลยลอง cappuccino ร้อนดู ลุงบาริสต้าชงมาดีมากสำหรับราคานี้ แน่นอนว่าเมล็ดที่ใช้ก็ดีด้วย
P1060288

 

สรุปว่าดี พากันไปดื่มเลย

 

[video] วิธีตรวจ/แก้งานแปล mozilla.org

 

วันที่ 14 พ.ย. 2560 นี้ Firefox 57 จะออกแล้ว มีการปรับปรุงเยอะมาก ๆ น่าจะพอหรือยิ่งกว่าสมัย Firefox 3.X เลย

คำอธิบาย/โฆษณาอะไรต่าง ๆ อยู่เว็บ Mozilla.org ซึ่งต้องขอขอบคุณทุกท่านที่ช่วยกันแปลเป็นภาษาไทยจนเสร็จแล้ว

ข้อดีของการแปลเสร็จไป 1 รอบการตรวจทาน ก็จะอ่านจากเว็บที่เหมือนจริงได้เลย ซึ่งก็น่าจะง่ายและเห็นภาพขึ้น

ผมก็เลยทำวิดีโอแสดงวิธีตรวจ/แก้งานแปล mozilla.org คร่าว ๆ ขึ้นมาครับ เริ่มจากเข้า https://pontoon.mozilla.org ครับ

Typeclass เทียบกับ Java

พอดู typeclass กับ parametric polymorphism ใน Haskell แล้วก็คิดว่า มันก็คล้าย ๆ Generic Methods and Bounded Type Parameters ใน Java หรือเปล่า
 
 
public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
 
 
ตรง extends Comparable<T> ก็คล้าย ๆ เอา typeclass มาใส่เป็น constraint
 
แต่ประมาณว่าถ้ามันพลังเท่า ๆ กันก็น่าจะ define monad แบบใน Haskell ด้วย Java ได้ ก็เลยไปหาดูเจอ https://stackoverflow.com/questions/35951818/why-can-the-monad-interface-not-be-declared-in-java ก็พบว่าไม่ได้ ส่วนที่พอจะจับใจความได้คือ:
no ability to specify that static members are part of the interface contract
สรุปว่าก็เกือบ ๆ จะพลังเท่ากัน แต่ไม่