Articles

Coding

วิธีเริ่มต้นโครงการ Django ด้วย Vim, Docker Compose, MySQL, และ Bootstrap

วิธีเริ่มต้นโครงการ Django ด้วย Vim, Docker Compose, MySQL, และ Bootstrap

January 22, 2025

การเริ่มต้นโครงการ Django ด้วยขั้นตอนการทำงานที่ทันสมัยสามารถช่วยลดความซับซ้อนในกระบวนการพัฒนาและทำให้การดูแลรักษาโครงการง่ายขึ้น บทความนี้จะแนะนำวิธีการตั้งค่าโครงการ Django โดยใช้ Vim, Docker Compose, MySQL และ Bootstrap ซึ่งเหมาะสำหรับผู้เริ่มต้น

OCPPシステムをゼロから構築するための包括的ガイド

OCPPシステムをゼロから構築するための包括的ガイド

January 13, 2025

電気自動車(EV)の普及に伴い、信頼性の高いEV充電インフラの需要が高まっています。Open Charge Point Protocol(OCPP)は、EV充電器(チャージポイント)と中央管理システム間の通信のための業界標準プロトコルです。この記事では、OCPPベースのシステムをゼロから構築するプロセスについて詳しく説明します。

ทำไมการเข้าใจ Design Pattern จึงสำคัญสำหรับโครงการขนาดใหญ่เช่น Odoo

ทำไมการเข้าใจ Design Pattern จึงสำคัญสำหรับโครงการขนาดใหญ่เช่น Odoo

January 6, 2025

ในโครงการขนาดใหญ่เช่น Odoo ซึ่งระบบถูกออกแบบให้มีความเป็นโมดูล (Modular) ขยายตัวได้ (Extensible) และปรับตัวได้สำหรับความต้องการทางธุรกิจที่หลากหลาย Design Pattern มีบทบาทสำคัญอย่างมาก เนื่องจากเป็นแนวทางแก้ปัญหาที่ได้รับการพิสูจน์แล้วในงานออกแบบซอฟต์แวร์ ช่วยให้ระบบยังคงดูแลรักษาง่าย ขยายตัวได้ และมีประสิทธิภาพในระยะยาว

なぜOdooのような大規模プロジェクトでデザインパターンを理解する必要があるのか

なぜOdooのような大規模プロジェクトでデザインパターンを理解する必要があるのか

January 6, 2025

Odooのようなモジュール化され、拡張性が高く、多様なビジネスニーズに適応可能な大規模プロジェクトでは、デザインパターンが重要な役割を果たします。デザインパターンは、ソフトウェア設計における一般的な課題に対する実証済みの解決策を提供し、システムが長期的に保守可能で、スケーラブルで効率的であることを保証します。 以下に、デザインパターンを理解することが重要な理由を挙げます。

Why Understanding Design Patterns is Essential in Large Projects Like Odoo

Why Understanding Design Patterns is Essential in Large Projects Like Odoo

January 6, 2025

In large-scale projects like Odoo, where the system is designed to be modular, extensible, and adaptable for diverse business needs, design patterns play a crucial role. They provide proven solutions to common problems in software design, ensuring that the system remains maintainable, scalable, and efficient over time.

ระบบเฟอร์ทิเกชันอัตโนมัติในเกษตรกรรมสมัยใหม่

ระบบเฟอร์ทิเกชันอัตโนมัติในเกษตรกรรมสมัยใหม่

December 1, 2024

ในเกษตรกรรมยุคใหม่ ระบบให้น้ำและปุ๋ยอัตโนมัติ (Fertigation) ได้กลายเป็นส่วนสำคัญสำหรับการส่งน้ำและสารอาหารให้กับพืชได้อย่างแม่นยำ การรวม การให้น้ำ และ การให้ปุ๋ย เข้าไว้ในกระบวนการเดียวช่วยประหยัดเวลา ลดการสูญเสีย และเพิ่มผลผลิต เพื่อให้ระบบนี้ทำงานได้อย่างมีประสิทธิภาพ การรวม ระบบควบคุมแบบ PID เป็นกุญแจสำคัญที่ช่วยเพิ่มศักยภาพของระบบนี้

Optimizing Your Automated Fertigation System with PID Control

Optimizing Your Automated Fertigation System with PID Control

December 1, 2024

In modern agriculture, automated fertigation systems have become essential for precise water and nutrient delivery. Combining irrigation and fertilization into one streamlined process, fertigation saves time, reduces waste, and boosts crop yields. To ensure such a system operates efficiently, integrating a PID control system is a game-changer.

การรักษาความปลอดภัยให้แอปพลิเคชัน Django ด้วย HashiCorp Vault (hvac): แนวคิดและตัวอย่างการใช้งาน

การรักษาความปลอดภัยให้แอปพลิเคชัน Django ด้วย HashiCorp Vault (hvac): แนวคิดและตัวอย่างการใช้งาน

October 23, 2024

เมื่อแอปพลิเคชันเว็บมีความซับซ้อนมากขึ้น ความต้องการในการรักษาความปลอดภัยข้อมูลที่สำคัญ เช่น ข้อมูลลูกค้า ข้อมูลการรับรอง และความลับของแอปพลิเคชันจึงมีความสำคัญมากขึ้น HashiCorp Vault เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการจัดการความลับ การเข้ารหัสข้อมูลที่ละเอียดอ่อน และการสร้างข้อมูลรับรองแบบไดนามิก ในบทความนี้ เราจะสำรวจแนวคิดพื้นฐานของ HashiCorp Vault การใช้งานผ่านไคลเอนต์ Python hvac และวิธีการปกป้องข้อมูลลูกค้าในโมเดล Django

Securing Django Applications with HashiCorp Vault (hvac): Concepts and Practical Examples

Securing Django Applications with HashiCorp Vault (hvac): Concepts and Practical Examples

October 23, 2024

As the complexity of web applications increases, so does the need for robust security measures to protect sensitive data, credentials, and application secrets. HashiCorp Vault, commonly used with the hvac Python client, provides an effective solution for managing secrets, encrypting sensitive data, and dynamically generating credentials. When integrated with Django, Vault enhances security by preventing […]

เราจะเขียน OCPP server อย่างไร

เราจะเขียน OCPP server อย่างไร

March 31, 2024

ตอนนี้กระแส EV กำลังมา เวลาเราไปตามปั๊มน้ำมันเราก็จะเห็นจุด charge ev กันใช่ไหมครับ เราเคยสงสัยไหมว่า จุด charge ติดต่อกับ server และ mobile app ของเราอย่างไร เค้าสื่อสารผ่าน OCPP protocol กัน เราลองมาทำความเข้าใจกันดีกว่า

เราจะทำให้ program ที่มีขั้นตอนการทำงานที่ซับซ้อน และ ต้องแบ่งงานให้กับ programmer หลายๆ คนได้อย่างไร ?

เราจะทำให้ program ที่มีขั้นตอนการทำงานที่ซับซ้อน และ ต้องแบ่งงานให้กับ programmer หลายๆ คนได้อย่างไร ?

December 5, 2022

หลายๆคน คงได้อ่านหนังสือเกี่ยว software engineering มาหลายๆ เล่ม  ก็จะมีข้อเสนอแนะหลายวิธี แต่วันนี้ผมจะมาพูดถึงการควบคุมลำดับการทำงานของ program ที่ซับซ้อน  ให้ง่ายขึ้นด้วยการสร้าง workflow engine system ขึ้นมาใช้เอง ลองกลับไปอ่านบทความก่อนหน้านี้  สร้าง business workflow process system ด้วย networkx.org

วิธีการออกแบบเพื่อลดการซับซ้อนของ software

วิธีการออกแบบเพื่อลดการซับซ้อนของ software

May 22, 2022

ควรออกแบบให้เป็น Layer และ แต่ละ Layer ควรกำหนดจุดประสงค์ให้ชัดเจน ภาพจากหนังสือ  https://www.amazon.com/Grokking-Simplicity-software-functional-thinking/dp/1617296201 จากภาพด้านบนเราควรจะกำหนดวัตถุประสงค์ของแต่ละ layer ให้ชัดเจน และ call graph ก็ไม่ควรจะยุ่งเหยิง หรือมีลูกศรที่ข้าม layer   และใน layer เดียวกันก็ไม่ควรจะมีที่เรียกกันเอง  ( ถ้า function นั้นๆ เรียก function ใน layer เดียวกัน function นั้นก็ต้องอยู่บน layer ที่สูงกว่า ) 

Web Socket  คืออะไร

Web Socket คืออะไร

April 30, 2022

Web socket คือ technology ที่ใช้สื่อสารระหว่าง web browser และ server  เป็นการสื่อสารแบบสองทาง ข้อดีของ web socket คือ program ในฝั่ง web browser ไม่ต้องเขียนในลักษณะของการเรียก function ในแบบ interval วนไปเรื่อยๆ แต่ใช้วิธีการ  Event listening  สรุปง่ายๆ คือ  ถ้าเราเขียน code ว่า เราสนใจใน event นี้ เมื่อ event นั้นๆ เกิดขึ้นมา code ที่เราผูกกับ event. นั้นก็จะนำ event data ไป process  

เทคนิคที่ช่วยให้เขียน program ให้ดีขึ้นอย่างรวดเร็ว

เทคนิคที่ช่วยให้เขียน program ให้ดีขึ้นอย่างรวดเร็ว

April 27, 2022

ข้อแรกเราต้องเข้าใจปัญหาของระบบที่เราต้องการจะแก้ โดยเราจะต้องค้นหาว่าอะไรคือปัญหาหลักๆ  เมื่อเราค้นพบแล้ว เราก็ควรจะออกแบบโครงสร้างของระบบ และลองร่าง code ในระดับที่เพียงพอจะทดสอบแนวคิดของเราได้  เราอาจจะเขียนใส่กระดาษก็ได้

มาสร้าง Blockchain ของเราเองกันเถอะ ( 1 )

มาสร้าง Blockchain ของเราเองกันเถอะ ( 1 )

December 13, 2021

Blockchain คือ การบันทึกข้อมูล ที่ยากในการแก้ไข ( แทบจะเป็นไปไม่ได้ ) ที่จะเปลี่ยนแปลงข้อมูล, hack ระบบ, หรือโกงได้ องค์ประกอบของ blockchain จะประกอบด้วย Block ซึ่งเป็นที่เก็บข้อมูลที่เราต้องการบันทึก เมื่อมี block ใหม่เข้ามา ก็จะทำการไปต่อท้ายเหมือนเป็นสายโซ่ ( chain ) เราเลยเรียกว่า Blockchain แต่การที่จะเพิ่ม block เข้าไปใหม่ใน blockchain network จะมีขั้นตอนที่เรียกว่า proof of work ( การสร้าง hash key ที่ตรงตามเงื่อนไขที่เรากำหนดไว้ เราอาจจะรู้จักขั้นตอนนี้ว่า “ขุด” mine )

เราจะเข้าใจ code ของ project ที่มีความซับซ้อนได้อย่างไร ?

เราจะเข้าใจ code ของ project ที่มีความซับซ้อนได้อย่างไร ?

December 7, 2021

ในสมัยที่ผมเขียน code แรกๆ ผมเข้าใจว่าผมสามารถเข้าใจการทำงานของ program ทุกอย่างผ่านการอ่าน code เพียงอย่างเดียว ผมมีหนังสือหลายเล่มที่อยากแนะนำให้ programmer ลองอ่านดูนะครับ

ทำแอปประชุม online ด้วย Zoom SDK และ Ionic  mobile framework

ทำแอปประชุม online ด้วย Zoom SDK และ Ionic mobile framework

December 4, 2021

เมื่อสองสามวันก่อน มีลูกค้ารายหนึ่ง มาปรึกษาว่า เค้าต้องการจะใช้ Wowza Video streaming server มาทำเป็น Online conference แต่เนื่องจากเค้าทำอย่างไรก็ยัง delay อยู่ประมาณ 5 วินาที  แต่ความต้องการของลูกค้าเค้าอยากให้การตอบสนองเหมือน Zoom เลย