ในภาษารุ่นใหม่ มักจะมีคุณสมบัติในการสร้าง Iterator Function หรือในบางภาษาจะเรียกว่า Generator เพื่อใช้สำหรับการเข้าถึงข้อมูลเป็นชุดด้วยการวนลูปและประมวลผล ใน Golang ก็สามารถสร้าง Iterator Function ได้ แต่ต้องมีการใช้ Channel มาช่วยในการผลิต Iterator โดยผมได้เขียน code ตัวอย่างไว้ สำหรับผู้ที่สนใจดังนี้ครับ

... Read More

เนื่องจากได้เริ่มศึกษาภาษารุ่นใหม่เข้าตัวนึงคือ Crystal ซึ่งเป็นภาษาที่ได้แรงบันดาลใจในด้าน syntax จากภาษา Ruby ที่มีรูปแบบภาษาที่น่าใช้ อ่านง่าย และแรงบันดาลใจด้าน concurrency แบบ CSP จากภาษา Go กระนั้นแล้ว ขอทำการทดลองนิด ๆ หน่อย ๆ เพื่อดูว่าภาษา Crystal นี่ ประสิทธิภาพเจ๋งแค่ไหน โดยผมได้นำภาษา Rust, ภาษา D และภาษา Nim เข้าร่วมทดสอบด้วย โดยมีการทดลองดังนี้ครับ

... Read More

Nginx เป็นโปรแกรม web server ที่มีประสิทธิภาพสูง ผมเองก็เลือกใช้ nginx เป็น web server หลักของระบบสารสนเทศที่ผมได้พัฒนาเองเป็นหลัก ผมได้มีการใช้ reverse proxy, http redirect to https, https with let’s encrypt, http2, และการใช้ php-fpm เพื่อกันลืมผมเลยจะโพสตัวอย่าง nginx configuration เก็บไว้ เผื่อไว้กลับมาดูในวันข้างหน้า ดังนี้ครับ

... Read More

ในการพัฒนาระบบสารสนเทศที่เป็น web service อาจจะต้องการการทดลองรับส่งข้อมูลตามเงื่อนไขต่าง ๆ ซึ่งในระบบ Archlinux จะมีคำสั่ง curl สำหรับใช้ทดลองส่งข้อมูลต่าง ๆ ที่รองรับ protocol ได้หลากหลาย เช่น http, ftp, ldap เป็นต้น แต่ในบทความนี้จะสาธิตการทดลองส่งข้อมูลผ่าน http ในเบื้องต้น โดยจะทดลองส่งผ่าน method ต่าง ๆ เช่น get หรือ post เป็นต้น โดยสามารถทำได้ดังนี้ครับ

... Read More

ในการพัฒนาระบบสารสนเทศในปัจจุบัน มีความต้องการความสามารถที่จะทำงานได้อย่างต่อเนื่อง หรือที่เรียกว่ามี Concurrent สูง ๆ ซึ่งเทคนิคที่นิยมใช้ในปัจจุบันคือการเขียนโปรแกรมแบบ Asynchronous ใน Python จะมีการเขียนโปรแกรมแบบ Asynchronous โดยการใช้ Coroutines ส่วนในภาษา Go จะใช้สิ่งที่เรียกว่า Goroutines ซึ่งผมได้ทดลองเขียนโค้ดตัวอย่างเพื่อเปรียบเทียบ การเขียนโปรแกรมแบบ Asynchronous ของทั้งสองภาษาดังนี้ครับ

... Read More

ในการพัฒนาระบบสารสนเทศที่ใช้ภาษาพวก static type มักจะต้อง compile แล้วสั่ง run จาก command line ซึ่งเวลาจะใช้งานจริงที่อาจจะต้องมีการ stop, start หรือ restart ระบบ อาจจะค่อนข้างยุ่งยาก เพราะเราต้องทำการ kill process และทำการ run ใหม่อีกครั้ง ใน Linux ที่ใช้ systemd เราสามารถสร้าง service unit file ให้กับงานของเราได้ และสามารถทำการ stop, start หรือ restart ผ่านคำสั่ง systemctl แบบง่าย ๆ ได้ โดยมีขั้นตอนดังนี้ครับ

... Read More

วันนี้ผมได้ทดลองเกี่ยวกับความสามารถด้าน Concurrency ในภาษา Golang ที่ออกแบบการทำงานในลักษณะคล้าย ๆ Thread แต่มีความง่ายและเบากว่า Thread ปกติ ที่เรียกว่า Goroutine และมีการสื่อสารกันผ่านสิ่งที่เรียกว่า Channel ผมเลยตั้งโจทย์ให้สร้าง Goroutine ขึ้นมาซัก 10 Goroutine ให้ผลิตข้อมูลตัวเลข 0 - 999 แบบสุ่ม แล้วส่งให้โปรแกรมหลักนำมาแสดงผล ซึ่ง code โปรแกรมมีดังนี้ครับ

... Read More

การใช้ Cookie ในเวบแอป เป็นเรื่องที่ปกติมาก ๆ และใช้บ่อย ๆ เลยอยากเขียนตัวอย่างการใช้งาน Cookie Session แบบง่าย ๆ ที่ใช้ร่วมกับ Negroni ดังนี้ครับ

... Read More

ช่วงนี้อยู่ในช่วงพัฒนาระบบใหม่ ๆ จึงอยากจะหาภาษาใหม่ ๆ ที่มีประสิทธิภาพสูง ๆ รองรับงานใหญ่ ๆ ได้ จึงได้ทำการทดลองสร้างเวบที่หาค่า Fibonucci(20) แล้วแสดงผลออกมา และวัดประสิทธิภาพในการทำงานออกมา โดยผมได้ทดลองกับภาษายอดนิยม PHP กับภาษาเกิดใหม่ที่น่าสนใจคือ ภาษา D และภาษา Go โดยมีการทดลองดังนี้ครับ

... Read More

ผมได้ทดลองสร้างตัวอย่าง Code สำหรับรัน WSGI Web Application ด้วย Gevent ที่สามารถทำงานแบบ Multicore ได้ ดังนี้ครับ

... Read More