แก้ปัญหา Docker build ฟ้อง No space left on device

กำลังแก้ script Dockerfile สลับกับการ build อยู่ดีๆ ก็เจอข้อความ **No space left on device** ไปต่อไม่ได้แล้ว ประมาณว่าพื้นที่ที่ docker ใช้ในการสร้าง file ต่างๆมันเต็มโควต้าแล้ว ใช้ 3 คำสั่งนี้ แล้วทำให้มีพื้นที่คืนกลับมา สั่ง build งานต่อได้เสมอ 1 ลบ file ของ container ที่มีสถานะ exited docker rm $(docker ps -q -f 'status=exited') 2 ลบ file image ที่(ห้อยต่องแต่ง)ไม่มีการอ้างอิงถึง
Read more

ใช้ nvm ติดตั้ง node.js บน OSX (ดีกว่า)

เราใช้ macOS และใช้ brew จนชินแล้ว มาวันนี้จะ upgrade version ของ nodejs ต้องเรียกว่าเคาะสนิม…หลังจากที่ไปจับเรื่องอื่นอยู่นาน ก็งงงง มึนมึน เรียกใช้ yarn แล้วมันฟ้องว่า ตอนนี้ในเครื่องคุณใช้ node v7 ซึ่งไม่ support แล้ว เราเลยไปหาว่าตอนนี้ node version อะไรที่เป็น LTS (long term support) เลยได้มาว่าจะติดตั้ง 8.x (8.9.4) ซึ่งเป็น long term support ลองใช้ brew search node, nodejs เห้ย!
Read more

Solving `version conflict either by updating the version of the google-services plugin`

แก้ปัญหา Exception Execution failed for task ‘:processDebugGoogleServices’. > Please fix the version conflict either by updating the version of the google-services plugin (information about the latest version is available at https://bintray.com/android/android-tools/com.google.gms.google-services/) or updating the version of com.google.android.gms to 9.0.0. ท้าวความไปว่าใน ionic project ที่ทำอยู่ใช้ ionic native ซึ่งต้องใช้ Google Play Services คือ Google Maps, Firebase Messaging (FCM)
Read more

ต่ออายุ Let's encrypt (SSL certificate) สำหรับ Hugo blog บน Gitlab Pages

เช้าวันนี้เปิดอีเมล ได้รับอีเมลแจ้งเตือนจาก lets’s encrypt ว่า SSL certificate ของ domain name ที่ทำเป็น blog กำลังจะหมดอายุ blog นี้เองนี่หล่ะ วิธีมันจะไม่ automatic ต้องทำเองเป็นครั้งๆไป วิธีที่จะทำ รันคำสั่ง certbot certonly เพื่อ renew/ต่ออายุ รันจากเครื่อง macbook ที่ใช้ทำงาน เอา hash ที่ได้มาใส่ไฟล์แล้ว push ขึ้นไปที่ gitlab เอา key ที่ได้ renew แล้วไป upload ขึ้น gitlab ใหม่ ขั้นตอน
Read more

แนะนำเครื่องมือช่วยสุ่มพิกัด GPS รอบๆตัวเรา 🗺️ Generate GPS location around me.

สำหรับใครที่ต้องสร้างแอพที่ใช้งานกับ Maps 🗺️ หรือ Google Maps เคยอยากจะสร้าง pin สถานที่แบบสุ่มเอามั้ย? ถ้าเอาแบบถั่วๆที่สุดคือไปจิ้มใน Google Maps แล้วแกะเอาพิกัด GPS หรือพิกัดแลตติจูด-ลองกิจูดเอามาใส่ให้ marker ผมขอเรียกเป็นภาษาโปรแกรมมิ่งว่าเป็นค่า Geolocation ละกันนะ ผมอยากได้ Geolocation พิกัดรอบๆ ตำแหน่ง ตำแหน่งนึงที่ได้เลือกเอาไว้แล้ว โดยไม่ต้องไปนั่งจิ้มในแผนที่แล้วแกะเอามา สมมติว่าเลือกตำแหน่งศูนย์กลางไว้เป็น Central World อยากได้ marker อีก 10 แห่งในระยะ 3kmรอบๆนั้น ถ้ามานั่งจิ้มเอาคงเซ็งน่าดู เลยไปหาเครื่องมือมาช่วยสร้าง Geolocation ให้เรา เพราะตอนนี้ผมขี้เกียจศึกษาว่าคำนวนพิกัดแลตติจูด-ลองกิจูดอย่างไร…แฮ่ มาทำความรู้จักเจ้าเครื่องมือนี้กันแบบเร็วๆ ไปที่เว็บไซด์ Geo MidPonint
Read more

Config Jenkins's service to use mvn command manually

ติดตั้ง Jenkins อีกตัวเพื่อจัดการ deploy application ตัวใหม่ที่กำลังพัฒนากันอยู่ ทำเป็น OS service เอาไว้ด้วย เวลา server มันถูกรีสตาร์ตมันจะได้กลับทำงานอยู่ตลอด ตอนแรก project ที่พัฒนาอยู่ใช้ Ant build script ภายหลังเรามาเปลี่ยนเป็น Maven จึงไปปรับ Jenkins configuration จะให้ Jenkins เค้าติดตั้ง Apache Maven ให้ด้วย แต่ว่า check checkbox แล้วก็ยังใช้ไม่ได้ เค้าไม่ติดตั้งให้เลยต้องมาติดตั้ง maven command เองซะเลยดีกว่า วิธีติดตั้ง maven ก็ไม่ซับซ้อน ไปโหลด binary distribution ที่เป็นไฟล์แบบ .
Read more

แกัปัญหา Cannot call sendRedirect() after the response has been committed

เจอ exception java.lang.IllegalStateException: Cannot call sendRedirect() after... ตัวนี้มานานแล้วมันมักจะเกิดขึ้นเวลาเราพยายามจะ redirect/ส่งต่อ request ไปยังหน้าอื่นๆ มันเกิดขึ้นเพราะเราไม่เข้าใจการทำงานของมันดีพอ ศึกษาจากโค้ดนี้ private void doPost() { if (someCondition) { sendRedirect(); } forward(); // โค้ดตรงบล๊อกนี้ก็ยังคงถูกเรียกใช้งานอยู่ ถึงแม้ว่า if condition ข้างบนก็ถูกเรียกใช้งาน } เราจะคุ้นเคยกับการที่ว่า คิดว่าการเรียก sendRedirect() เหมือนกับการสั่ง System.exit() คือ program จบเลย แต่มันไม่ใช่อย่างนั้นน่ะสิ่ Error Cannot call sendRedirect() after the response has been committed จึงเกิดขึ้นเมื่อ forward() มันถูกเรียก เท่ากับว่าเราเรียก sendRedirect() แล้วยังไปเรียก forward() อีก exception มันจึงเกิดขึ้น
Read more

คอนฟิก Gogs ใช้ login กับ LDAP (Active Directory)

ทดลองติดตั้ง GOGS เป็น git server ที่มีหน้าเวบให้จัดการ คล้ายๆ github, gitlab, bitbucket gogs มี plugin/extension ที่ให้เราเชื่อมระบบผู้ใช้เจ้ากับ LDAP server หรือ ​Active directory ได้ พอภาษาที่ใช้พัฒนาแอพเปลี่ยน การกรอกค่า configuration ของ LDAP ก็มักจะต้องมีเทคนิคในการใส่ค่าคอนฟิก พลิกแพลงไปอีก ทดลองใส่ตามนี้แล้ว work ค่า Security Protocol เลือก Unencrypted ซึ่งน่าจะทำให้ช่อง port ใช้ 389 Bind DN/Bind DN ค่านี้ใส่ account ldap ที่ใช้ในการค้นหา account อื่นๆ บางแห่งจะเรียก search account หรือ service account ค่าที่จะนำไปใส่เช่น account@YOURDOMAIN.
Read more