Ubuntu: Extend your LVM (Disk) space

พอดีว่ากำลังลอง Pull Image มาเล่นอะไรเรื่อยเปท่อยไป แล้วปรากฏว่ามันแจ้ง no disk space หลังจากลองตัวสอบพื้นที่ Disk เต็มจริงๆครับ ถ้าใครอยากรู้ว่า LVM คือ อะไร ผมเขียน Blog ไว้ครับ ^__^ Extend LVM Space

XRLabel ตัดคำไทยผิดเมื่อ Export PDF

ช่วงนี้มีช่วยน้องแก้ไข Report ที่ทำด้วย DevExpress ครับ แล้วที่นี้มันเจอปัญหากับภาษาไทย ในเคสที่ว่าถ้ามีข้อความยาวๆ มันตัดได้ไม่ถูกต้องครับ มันจะแหว่งๆ แทน ตามตัวอย่างด้านล่าง เวลาเจอประโยคยาวๆ ที่ไม่มี Space เว้นวรรค มันจะตัดคำแปลกๆ ถ้าใครที่ทำพวกเอกสารคงหงุดหงิด ใน MS Word มันมี Thai Distributed ทำไมไม่ทำ อะไรประมาณนี้ – Forward Contract คือสัญญาที่ลูกค้าและธนาคารตกลงซื้อเงินตราต่างประเทศสกุลหนึ่ง และขายเงินตราต่างประเทศอีกสกุลหนึ่ง โดยกำหนดจำนวนเงิน สกุลเงิน อัตราแลกเปลี่ยน และวันที่ทำการส่งมอบล่วงหน้าที่แน่นอน ซึ่งอัตราแลกเปลี่ยนล่วงหน้าที่กำหนดนั้น ไม่ใช่อัตราตลาดในอนาคต โดยในวันที่ทำการส่งมอบ อัตราแลกเปลี่ยนล่วงหน้าอาจสูงหรือต่ำกว่าอัตราแลกเปลี่ยนในตลาด ณ วันที่ส่งมอบก็ได้ – ตามระเบียบของ<<ตัวแปร>> ผู้ซื้อหรือผู้ขายเงินตราต่างประเทศล่วงหน้าต้องมีธุรกรรมรองรับการซื้อขาย (Underlying) และแสดงเอกสารต่อหน้าธนาคาร ณ วันที่ทำสัญญา Runtime ที่เกี่ยวข้อง Try & Error ทว่าปัญหานี้ ลูกค้าจะไม่ปิด UAT ครับ เลยต้องมีระดมสมอง มาแก้ไข แล้วที่นี้หลังจากลองแก้ไขปัญหาหลายๆวิธี Final Workaround Solution หลังจากลอง Research พบคำเตือนที่ต้องระวังครับ ดังนั้นการแก้ปัญหาจะเป็น Logic ดังนี้ครับ Reference

The Cloud Camp Week#08 (K8S Part3: Store Data)

สัปดาห์นี้ก็ Store Data ล้วนๆ สำหรับ part ก่อนหน้า Volumes ก่อนที่จะมาเรื่องใหม่ต้องมา Recap ก่อนจาก Part 1 ตัว Pod มันเก็บข้อมูลได้นะ แต่จะอยู่ชั่วคราว (ephemeral) เท่านั้น ดังนั้นเราจะพบ non-trivial problems ของ App ได้ ดังนี้ default pod ไม่ได้แชร์ไฟล์กันระหว่าง container นะ ดังนั้น Volume จะมาช่วยแก้ปัญหาพวกนี้ แต่ควรมาเข้าใจตัว YAML Pattern กันก่อน YAML Pattern Volume Type ที่เด่นๆ ดังนี้ – hostPath แบบนี้จะคล้ายกับตัว docker volume โดย Volume แบบ hostPath จะเอา path ของ node ที่ pod Deploy อยู่มา map กับ pod – emptyDir สร้าง Volume เปล่าๆ ผูกกับ pod (เกิด และตายไปด้วยกัน) ไม่จำเป็นต้องใช้ Path ของ Node แบบ hostPath อาจจะใช้ memory มา config ก็ได้ โดยจะมาแก้ปัญหาการแชร์ Data ระหว่าง Container ภายใน Pod Note: emptyDir จัดการโดย kubelet emptyDir can read and write the…

DB2 Data Type DECFLOAT แล้ว SQL Server ใช้อะไร ?

สำหรับ Blog นี้ผมก็ได้มาแก้ไข Module Perf ที่สรุปแล้วต้องให้ Field ประเภทที่ต้องเก็บทศนิยมละเอียดนิดนึง เลยได้ใช้ Data Type DECFLOAT ครับ แล้วที่นี้มีอีก Site ต้องใช้งานด้วย แต่ Site นั้นใช้ MS SQL / Azure SQL คราวนี้ต้องมาแปลง SQL ครับ ก่อนอื่น DECFLOAT คือ อะไร ? แล้วมันต่างกับ Decimal ยังไง ANSI SQL Syntax คล้ายๆกัน SQL Server / Azure SQL ต้องใช้ Data Type ไหน ? ตอนแรกคิดว่า Decimal แหละ แต่เพื่อความั่นใจลองหา Official Doc ยืนยันดีกว่า เพราะ ถ้าขึ้น Production ไปแล้ว มันตามแก้ยาก จากการลอง Research ดูทาง Microsoft มีคู่มือทำไว้ครับ “Guide to Migrating from DB2 to SQL Server and Azure SQL DB, SQL Server Technical Article” มีตารางไว้เลยครับ ซึ่งมันดีมากๆครับ สรุป DB2 Data Type DECFLOAT เท่ากับ SQL SERVER Data Type numeric ครับ Reference

The Cloud Camp Week#07 (K8S Part2:K8S Object)

สัปดาห์นี้เป็นสัปดาห์ที่วุ่นวายอีกสัปดาห์ มีเคส DB2 TableSpace Drop Pending / และ Podman เอ๋อๆครับ เอาหละมาดูหัวข้อที่เรียนของวันนี้กันครับ Kubernetes Object YAML File Workload Object Infra Object Interacting with Kubernetes Deployment Indepth – Intro มาจาก Week ก่อน – YAML – Deployment Strategy Example – Deployment revisionHistoryLimit – Command Pod LifeCycle Labels and Selectors Service Ingress Data Inter Change Concept Reference เพื่อความไม่ขาดช่วง มาดูของ Week ก่อนได้ครับ The Cloud Camp Week#06 (K8S Part1) | naiwaen@DebuggingSoft Kubernetes Object ตัว Object เป็นคำรวมๆที่เอาไว้อธิบาย ส่วนของ K8S (abstract รวบ เพื่อให้จัดกลุ่ม) เพื่อ ตัว Kubernetes Object ยังแบ่งมุมมองได้อีก 2 มุม นอกจากการจัด Object แล้ว ตอน Deploy Container ไปยังสามารถจัดกลุ่มด้วย namespace (แยก network) และ label YAML File ตัว K8S เราสามารถอธิบายสภาพของระบบว่ามีลักษณะอย่างไร (Desire State) ประกอบด้วย…

How to setup GIT with SSH Authenication

empty train rail with light

1. Generate Key-Pair Windows / Linux / Mac is using same commands. Add your key to the SSH agent Windows Linux / Mac Provide GitHub with your public key Support with multiple user / host via SSH Config if you have multiple user. you can spread by customzing host in SSH Config, In example. I have 3 git accounts 2 GitHub and 1 in GitLab. I have modified SSH Config like this. Reference

LVM คือ อะไร ?

พอดีว่ากำลังลอง Pull Image มาเล่นอะไรเรื่อยเปื่อยไป แล้วปรากฏว่ามันแจ้ง no disk space หลังจากลองตัวสอบพื้นที่ Disk เต็มจริงๆครับ LVM คือ อะไร ? LVM หรือ Logical Volume Manager คือ รูปแบบการจัดการ Disk ของ Linux แต่จริงๆ เหมือนจะแอบคล้าย AIX นะ โดยแยกเป็น Layer ดังนี้ ต่อไปส่วนที่เหลือจะเป็นส่วนของ LVM เข้ามาจัดการได้

The Cloud Camp Week#06 (K8S Part1:Overview)

สัปดาห์นี้เป็นสัปดาห์ที่ 6 แล้ว งานเยอะระดับนึงครับ แน่นเลย และเรื่องวันนี้แน่นมาก และเป็นเรื่องใหม่ เคยได้ยิน แตะบ้าง แต่ไม่ได้ invest กันมันสักเท่าไหรครับ Container Orchestration โดยหัวข้อจะมี ดังนี้ Sketch Note Why Kubernetes & Benefit Kubernetes Overview – Pods – Deployment – Service (Virtual Load Balancer) – Ingress Kubernetes Architecture (Basic) – Kubernetes Component – Kubernetes Context (group of access parameters) Kubernetes Command (Context) Kubernetes Setup Kubernetes Architecture (Advance) – API – Access Control – Container Runtime in Kube – Control Pane & Node Component How kube-scheduler work kube-network How to Create POD K8S Namespace Reference Sketch Note  ภาพรวมของ 2 วันแรก ภาพใหญ่จนเอาขึ้นไม่ได้ 555 Why Kubernetes & Benefit สัปดาห์ที่ 2 จะมีบอกว่าทำไมต้องใช้ตัว Container Orchestration ย้อนกลับไปดูได้จาก…

ลองใช้ GitLab REST API

ตอนนี้มีโจทย์ให้คิดครับ เพราะเท่าที่ย้ายมาใช้ Git มาน่าจะ 3 ปี และจะเจอปัญหานึงประจำเลย มี Branch เปิดลอยๆไว้ ไม่เอามา Merge เข้าเส้นหลัก และไม่ได้ Pull Code ให้ Update ล่าสุดด้วย แล้วมันเอาไปทำอะไร ถามแล้วไม่มีใครรับว่าเป็นเจ้าของอีก ได้เป็นโจทย์เล็กๆ สำหรับมาหาว่า Branch อันนี้ใครสร้างคนแรก เพราะที่ส่องจาก GitLab มันจะมี Event Push ขึ้นมา ดังรูป แต่ก่อนจะใช้งาน API เราต้องเตรียมตัวอะไรบ้างนะ Generate Access Token (API KEY) เมื่อกำหนดขึ้นมาเสร็จ ระบบจะแสดง Key ขึ้นมาเหนือช่อง Token Name ให้ Copy เก็บไว้ ถ้าทำหายก็ Generate ใหม่อย่างเดียวครับ ส่วนถ้าใช้ไปนานๆ แล้ว อยากจะเอาออก (Revoke) สามารถกดที่ Icon ถังขยะได้เลย Test ด้วย Postman ก่อน ว่ามัน Return อะไรมาบ้าง ลองยิง Request โดยกำหนด API KEY “PRIVATE-TOKEN” จาก Token ที่ได้สร้างมาก่อนหน้า โดยจะใส่เข้าไปในส่วนของ Header กำหนด Setting ได้ตามรูปเลยครับ ลองสัก API เช่น GET Project ดึงจาก Project API มาลอง API ที่เกี่ยวกับปัญหาของ Blog นี้จริงๆ โดยดึงจาก Event API หลังจากลองแล้วจะพบว่า โจทย์ของเราหา Event ที่บอกว่า…