About Kriangkrai Chaonithi

A computer engineer scientist who loves knowledge sharing. CTO & Co-founder at Credit OK

Passing variable from Laravel to VueJS 2 component

tl;dr:
Use   for Blade and    for component.
Beware of using    for content contains    and  .

Recently I write a lot of Laravel and VueJS 2 then faced with the common case when want to pass PHP variables to VueJS component.
There are a lot of proposed methods including pass as global JS variables, pass as a slot, and pass as a props.
Each one has its own advantages and disadvantages here I will explain.

Continue reading

ประสบการณ์การไปงาน Conference ครั้งแรก ECTI-2016

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

เรื่องนี้เป็นประสบการณ์การไปงาน Conference วิชาการครั้งแรก เป็นอีกหนึ่งความฝันของเด็กที่ไม่ได้เก่งอะไร ที่ได้เขียน Paper เป็นภาษาอังกฤษ และได้ออกไปนำเสนอให้กับนักวิชาการในระดับนานาชาติ (ถึงแม้งานจะจัดที่เหมืองไทยก็เถอะ) ซึ่งต้องบอกว่าเป็นช่วงเวลา 3 วันที่รู้สึกสนุกกับการผจญภัยอย่างมาก ไม่คิดว่าจะได้เจอประสบการณ์ดีๆ อะไรแบบนี้

Continue reading

GitLab CI บทที่ 2 GitLab Runner

ก่อนจะเริ่ม GitLab CI เราก็ต้องมารู้จักกับ GitLab Runner กันเสียก่อน GitLab Runner คือ Agent ที่จะคอยรันงานที่ส่งมาจาก GitLab นั่นเอง บางคนอาจคิดไปถึงว่า เราจะ Test โปรแกรมของเราได้อย่างไรในเมื่อ Environment ของเราไม่เหมือนกันคนอื่น บางคนเขียน Ruby บางคน Java บางคน Python อย่างนี้ก็ต้องสร้างเครื่องมาเฉพาะหมดเลยหรือเปล่า คำตอบก็คือ ใช่ และ ไม่ใช่ ที่บอกว่าใช่ ก็เพราะว่า เวลาจะทดสอบระบบอะไรนั้น เราก็ต้องทำ Environment ขึ้นมาแน่นอน อันนี้หลีกเลี่ยงไม่ได้ แต่ที่บอกว่าไม่ใช่ก็ตรงที่ว่า เราไม่ต้องสร้างเครื่องใหม่หลายๆ เครื่อง อย่าลืมว่ายุคนี้มี Docker แล้ว การจะตั้ง Containner ที่มี Environment อย่างที่เราต้องการเป็นเรื่องหมูๆ เอาจริงๆ แทบจะ Copy สคริปที่ชาวบ้านทำๆ กันเอาไว้มาใช้ ส่วนใหญ่ก็แทบจะใช้งานได้ทันทีถ้าเราพัฒนามาในรูปแบบที่คนส่วนใหญ่ทำกัน ซึ่ง GitLab Runner ก็อาศัยพวก VM เนี่ยล่ะในการในการทำให้เครื่องหนึ่งเครื่องเป็น Enviromment อะไรก็ได้ ซึ่งสำหรับผมจะเลือกใช้ Docker เป็นหลักครับ

อ่อ สำหรับคนที่ใช้ GitLab ที่มี Runner พร้อมใช้อยู่แล้ว อย่างเช่นคนที่จะใช้ Share Runner บน gitlab.com ก็สามารถข้ามบทนี้ไปได้เลยครับ Continue reading

GitLab CI/CD บทที่ 1 Introduction

กล่าวสวัสดีเพื่อนๆ ชาวโปรแกรมเมอร์ทั้งหลาย เมื่อไม่นานที่ผ่านมาผมได้มีโอกาสได้สัมผัสประสบการณ์การทำทำ CI/CD อย่างจริงๆ จังๆ ด้วย GitLab เนื่องด้วยส่วนตัวเป็นคนสนใจพยายามพัฒนาซอฟแวร์แบบเน้นคุณภาพมาแต่ต้นอยู่แล้ว สาเหตุเพราะความขี้เกียจมาตามแก้บั๊กในภายหลัง ก็เลยศึกษาหาหนทางที่ชาวบ้านเขาทำกันมานมนาน แต่ก็ด้วยความที่ก็ยังถือว่าเป็นเด็กน้อยในวงการและเป็นสายอินดี้ไม่ไปอยู่ บ.พัฒนาซอฟแวร์ใหญ่ๆ ก็เลยยังไม่ได้มีโอกาสสัมผัส CI/CD อย่างเพื่อนๆ เขา เพิ่งจะมาได้จับจริงๆ จังๆ ก็คราวนี้แหละ แล้วพอได้สัมผัสแล้วก็รู้สึกเห็นคุณค่าของมัน และอยากให้นักพัฒนาซอฟแวร์ที่มีแนวคิดแบบเดียวกันได้มีโอกาสพัฒนาตัวเองขึ้นๆ ไป จึงเกิดเป็นแรงอยากจะแบ่งปันประสบการณ์และเขียนเป็น Blog Series

สารบัญ

บทที่ 1 Introduction
บทที่ 2 GitLab Runner

Continue reading

การตั้งค่า DNS Server ฉบับผู้เริ่มต้น

Domain Name System (DNS) คือระบบที่เอาไว้จัดการบริหารชื่อ Domain อย่างที่เราใช้ๆ กันบนอินเทอร์เน็ต การตั้งค่า DNS สำหรับคนที่เพิ่งจะเริ่มทำเว็บเป็นเรื่องน่างนงงมากเพราะว่ามีอะไรให้ตั้งเยอะแยะมากมาย วันนี้เลยจะมาเขียนแบบกระชัดสำหรับคนที่ยังงงๆ เอาแบบอ่านรวดเดียวรู้เรื่อง โดยสรุปสิ่งที่จะเล่าวันนี้ก็คือวิธีการตั้งค่า Domain Name ของเราว่า ถ้าเข้ามาที่ชื่อนี้ ให้ไปเรียกหา Server ที่ไหนต่อนั่นเอง ซึ่งเดี๋ยวจะอธิบายถึงชนิดของ record ที่จำเป็นต้องรู้แต่ละอัน Continue reading

การตั้งค่า NGINX ให้ใช้กับ Let’s Encrypt และได้เกรด A+ จาก SSL Labs

ช่วงหลังๆ มานี่ปริมาณเว็บไซต์ที่ใช้ HTTPS เพิ่มขึ้นอย่างมาก ทั้งด้วยปัจจัยเรื่องความเป็นส่วนตัวของผู้ใช้ การแอบดักข้อมูลของรัฐบาล การที่คอมพิวเตอร์เซิร์ฟเวอร์มันเร็วขึ้นมากจนรองรับการเข้ารหัสกับผู้ใช้ทุกคนได้ จนไปถึง SSL ไม่ต้องเสียเงินอีกต่อไป ด้วยเหตุผลที่กล่าวมาข้างต้น ดังนั้นเว็บไซต์ยุคใหม่ควรจะปรับตัวและใช้ HTTPS ให้เรียบร้อยได้แล้ว วันนี้จึงจะมาสอนตั้งค่า NGINX ให้ได้ HTTPS สวยๆ แบบไม่ต้องเสียค่า Certificate สำหรับ SSL กัน แต่ก่อนอื่นต้องบอกว่านี่ไม่ใช่โพสที่จะสอนว่าเปิด Web Server ยังไงนะครับ นี่เป็นระดับผู้ที่ใช้งานเป็นแล้วพอสมควร Continue reading

สรุปสิ่งที่ได้ทำในปี 2016

2016กำลังจะสิ้นปี 2016 แล้ว นึกกลับไปถึงตอนต้นปีแล้วรู้สึกตกใจมาก ปีนี้เป็นปีที่พาตัวเองมาไกลมากจริงๆ น่าจะเกิดจากการได้มาอยู่ในสภาพแวดล้อมที่เหมาะสมแก่การพัฒนาตนเองและเลขอายุที่มากขึ้นเป็นแรงกดดันให้บริหารเวลาให้ดีขึ้น ปีนี้เป็นปีที่มีการพัฒนาทั้งการศึกษาและทักษะความรู้มากมายพอสมควรเลย และเป็นปีที่ต้องบอกว่าเข้าสู่แวดวงนักวิชาการอย่างจริงจังแล้ว Continue reading

Rewrite Laravel URL when not in root path with NGINX

In the most cases, we place the Laravel in the root path /.

As a result, the nginx configuration becomes

However, if we want to move Laravel inside other directories, we must also change the location directive along with the public/index.php file.

Let’s say we want to move to the /app directory. Then the location directive would become

Since nginx indicates the root path already, so we have to always refer from the root path.

เทคนิคการการดำเนินชีวิตที่ได้จากการเรียน ป.โท

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

Continue reading