[C#] DTO/Mapper Class Example

สำหรับ Blog เป็นตัวอย่างการทำ DTO และ Mapper Class DTO คือ อะไร? DTO คือ Data Transfer Object พูดง่าย ๆ ก็คือเป็น object ที่ใช้ในการส่ง data กันในระบบครับ นอกจากนี้แล้ว การใช้ DTO ยังเป็นการ Limit ข้อมูล หรือมองว่าเป็นการกำหนด Pattern ให้กับ Request / Response กับระบบ และยังป้องกัน Over-posting Attack (คนร้ายเดา Field ได้ถูก แล้วลองส่ง Request เข้ามา) ถ้าไม่มี DTO ดักไว้ จะมีข้อมูลเกินเข้าไปมาได้ครับ จากตัวอย่าง CustomerDTO ของเราจะมี 6 Field แต่ตัว CreateCustomerDTO เรา Limit ไว้ 3 Field ถ้าแบบเดิมตอน Create เราไม่มี DTO มากัน Attacker สามารถเดา Field และส่งมาได้ครับ Mapper Class Example สำหรับผม Pattern ที่ใช้ DTO และในชั้น Repository ทำตัว Mapper Class ระหว่าง DTO กับ Model (Model Class ที่เป็นตัวแทนของ Table ใน Database ครับ ตัวอย่าง Class ที่ Map ระหว่าง DTO และ Data…

[VM] เปลี่ยนเลข UUID ของ Virtual Disk ใน Virtual Box

พอดีมีงานทีต้องทำแบบฉุกเฉิน เนื่องจากน้องที่รับงานนี้อยู่ติดปัญหาจากความไม่เข้าใจในคำสั่งที่ใช้จัดการ Database ครับ ปล่อยปัญหาไปครับ ตอนนี้สิ่งที่ผมต้องรับมาแก้ไข หรือหา VM ที่ใกล้เคียงที่สุดมาขึ้น แต่ Copy VM มาขึ้นครับ ปรากฏว่า สาเหตุมันเกิดจากค่า UUID นั้น ซ้ำครับ เพราะมันเคยขึ้น Disk ของ VM นี้แล้วครับ โดย UUID มันเป็น ID ที่ใช้สำหรับใน Virtual Box โดยกำหนดไม่ให้ Virtual Disk  ซ้ำกันครับ โดยสำหรับการแก้ไขง่ายๆครับ กรณีที่ UUID ซ้ำ คือ การ Generate UUID ใหม่ครับ กำหนด uuid – Windows – Linux

[Mi Band3] เชื่อม Mi Band กับ Nike+ Run Club ครับ

หลังจากได้ติดกับในโปรของ Lazada ไป จนได้ Mi Band 3 มาในราคา 890 ไปครับ (มี Blog Review ด้วยนะ) ซื้อมาแล้วก็ต้องใช้ครับ มารักสุขภาพครับ โดยผมจะลองเชื่อม Mi Band 3 กับ Nike Run Club ครับ โดยสิ่งที่ต้องมี หลังมีของพร้อมลง App เรียบร้อยมาเชื่อม MiBand กับ Nike+ Run Club ครับ โดยมีขั้นตอน ดังนี้

[CUSE] เที่ยวลาดกระบังตามล่าหาลายเซ็นต์กรรมการภายนอก

จาก Blog ตอนที่แล้วทีได้สอบหัวข้อไป ผมได้ทำพลาดตามตัวอย่างเอกสารที่ได้พลาดมาจากเพื่อนครับ เลยทำให้เกิดภาระกิจล่าลายเซ็นครับ โดยการล่าลายเซ็นมาให้ครบ เพื่อที่จะยื่นเอกสารให้ทันวันที่ 5 ตุลาคมครับ เนื่องจากเวลาจำกัดผมเลยจัดแผนทีคิดว่าเสี่ยงอยู่เหมือนกันนะ

[CUSE] สอบหัวข้อโครงร่างวิทยานิพนธ์

หลังจากมืนๆ การส่งเอกสารไป มาสรุปดีกว่าว่าการสอบโครงร่างของแผน ก ต้องมีการเตรียมตัวอย่างไรบ้าง ขั้นตอน-เตรียมตัว ขั้นตอน-วันสอบ หลังสอบ ประสบการณ์จากวันที่สอบจริง

[CR] Mi Band3 คนรักสุขภาพต้องลองใช้

ยอมรับเลยครับ ว่าปีนี้น่าจะเป็นปีที่โทรมที่สุด  เพราะ ทำงาน จันทร์ – เสาร์ เช้างาน 8 โมง กว่าจะเลิกงานได้ก็ปาไปเกือบๆ 3 ทุ่ม – 4 ทุ่มแล้ว เวลานั้นสมงสมองล้าไปหมดครับ เลยวาง Thesis มาทำในช่วงวันอาทิตย์เป็นหลักครับ ส่วนวันทำงานปกติถ้าเลือก 3 ทุ่ม ก็ไปวิ่ง วิ่งคนเดียวในวงเวียนใหญ่ 555 (เวลานี้ปกติคนจะกลับไปหมดแล้วครับ) อย่างที่บอกไปครับ ปีนี้เน้นสุขภาพครับ แต่งานโคตรเยอะครับ และก็หวังว่าหลังจากเดือนกันยายนไป งานจะเริ่มดีขึ้นครับ เพราะ มีคนเข้ามาช่วย Support มากขึ้นแล้วครับ หลังจากการวางแผนการจัดการ Resource ที่ผิดพลาดในโครงการก่อนจน Resource ที่มีทำงานซ้ำซ้อนไปหมดครับ เรียน SE มาวิชา PM เออมันสำคัญจริงๆนะ แม้ว่าเราจะไม่ได้จัดการ Resource แต่เป็นกลไกไกลให้โครงการเดินต่อไปได้ควรรู้และเข้าใจครับ //บ่นมามากพอและ 555 วันที่ 9 เดือน 9 หลังจากรอบมานาน ก็โดนโปรไปครับ 555 โดยได้มาหลายอย่างเลย เช่น เมาส์ Ergonomic (เดี๋ยวจะมา Review นะครับ / หูฟัง Sony และ Mi Band 3 ครับ โดยที่สั่ง Mi Band 3 เพราะ อยากจะเอามาช่วยนับก้าวเดิน ดูการนอนแบบคร่าวๆ และจับอัตราการเต้นของหัวใจเมื่อวิ่งครับ เมื่อได้ของมาแล้วมาลองแกะกันครับ สำหรับ Mi Band3 เมื่อแกะกล่องพบของ ดังนี้ครับ ตัว Mi Band3 สายรัดข้อมือ สายชาร์จครับ ถ้าจะใช้งานจริงจังต้องมีลง App Mi Fit ด้วยนะครับ และต้องสร้างบัญชี Mi Account ด้วย…

[SPRING] ตรวจสอบข้อมูลก่อน Save ด้วย hibernate validator

หลังจาก Blog ตอนที่แล้วผมได้ลองทำ CRUD โดยใช้ Spring Boot ในเรื่องการการจัดการข้อมูล Person ไปแล้วนะครับ แต่ Blog ตอนล่าสุดของผมยังทิ้งท้ายอยู่นะครับ ว่ามันควรจะมีเรื่องของการ Validate ข้อมูลครับ คราวนี้ ผมเขียนตัว Validate ให้มันสมบูรณ์ครับ ซึ่ง Package ที่ผมใช้ hibernate validator ซึ่งเข้าตัวนี้มันเข้ามากับตอนที่เราใส่ Dependency Spring JPA แล้วครับ มาทำเลยดีกว่า สิ่งที่ต้องมี มาลุยกันเลยครับ – ชั้น Entity ที่เก็บ POJO Class – ชั้น Controller สำหรับ Parameter ต้องการ Validate ข้อมูลนั้น – ชั้น View อันนี้ตัว Thymeleaf ได้มีตัวช่วยแล้วครับ โดยถ้ามี Error มันถูก Inject เข้ามาในตัวแปร #fields ครับ ลองมาทดสอบกันดูครับ สำหรับ Blog หน้า ผมคงลอง Custom Error Message ดูครับ 😀 แต่ถึงแม้ว่าชั้น Entiry และ Controller มีกลไกในการดัก Validate ข้อมูลแล้ว แต่ฝั่ง Front-End ต้องดักด้วยนะครับ

[SPRING] มาใช้จัด Layout ให้กับ UI (Thymeleaf)

จาก Blog ตอนที่ที่ได้สร้างเว็บที่มี CRUD ต่อกับฐานข้อมูลแล้ว แต่ยังพบปัญหาว่ามันยังมี Code ที่ซ้ำซ้อนในส่วนของ UI เช่น พระเอกที่จะมาช่วยเราในครั้งนี้ คือ thymeleaf-layout-dialect มาดูโจทย์กันก่อน สิ่งที่ต้องมี เว็บตัวอย่างแหละ ปกติผมจะอ้างอิงจาก Blog ตอนก่อน แต่จะสร้างใหม่ก็ได้นะ และมาตรวจสอบ Dependency ว่าจะต้องมีของดังนี้ Let’s Refactoring จากไฟล์  mainLayout.html  ครับ โครงสร้าง ณ ตอนนี้ครับ มาแก้ไขไฟล์อื่นๆครับ ยกตัวอย่างเฉพาะของ ไฟล์ที่เสร็จแล้วครับ เพิ่ม Layout >> … · pingkunga/LearnSpringBoot@95e8c29 (github.com) Reference  

[CUCARUN2018] กลิ้งมินิมาราธอนครั้งที่ 2

หลังจากลองวิ่งครั้งแรกที่งาน Globe-Athon 2016 จนขาชาไป รุ่งขึ้นนี่พักยาวแล้ว หลังจากตอนนั้นผมก็เว้นการวิ่งไป เพิ่งกลับมาวิ่งอีกทีตอนต้นปี 2018 ครับ วิ่งตามหมอสั่ง 5555 โดยผมวิ่งๆแถววางเวียนใหญ่ แถวสวนลุม 3-5 km ครับ มาที่งานวันนั้นกันดีกว่าครับ สำหรับงานนี้ผมเพิ่งรู้ว่ามีนะ เหมือนการประชาสัมพันธ์จะไม่ค่อยมี หรือปากต่อปากกันในวงศิษย์เก่า ศิษย์ปัจจุบันครับ โดยงาน CUCARun เป็นงานวิ่งของภาควิชาวิศวกรรมคอมพิวเตอร์ จุฬาลงกรณ์มหาวิทยาลัยครับ เราเป็นเด็ก ป โท เลยขอไปร่วมแจมด้วยครับ โดยมีผมได้สรุปงานมาเป็นข้อๆ ตามในผมดังนี้

[SPRING] ลองต่อฐานข้อมูลกันหน่อย

จาก Blog ที่แล้วไปลองใช้ Thymeleaf ไปแล้วกับการแสดงผลให้สวยงานครับ แต่อันนั้นข้อมูลที่ได้เกิดจากการ Mock จากชั้น Service ครับ สำหรับ Blog ตอนนี้มีเป้าหมาย สิ่งที่ต้องเตรียม ต่อ Database ต้องมีการเพิ่ม Dependency เพิ่มครับ มาลุยกันเลยครับ ถ้าเพิ่มข้อมูลเกี่ยวกับ Person ก็ต้องมีหน้าจอ 2 จอ แก้ไขไฟล์ application.properties  สำหรับการเชื่อมต่อฐานข้อมูล persondb ครับ อย่าลืมไปเอา exclude = {DataSourceAutoConfiguration.class}  ออกจาก @SpringBootApplication  ที่ไฟล์ [ชื่อ Project]Application.java  ด้วยนะครับ เดี๋ยวจะต่อ DB ไม่ได้เอา บางที่ Spring Intializer มัน Generate มาให้ครับ แก้ไข Entity ครับ ให้เหมาะกับ Table ครับ โดยผมเพิ่ม Column Id เข้าไปครับ และใส่ Annotation ของ Hibernate เข้าไป ซึ่งมีทั้งพวก Validate ข้อมูล และระบุ Column ครับ – เพิ่มชั้น Repositories เข้ามาครับ โดยตัวนี้จะช่วยให้การติดต่อฐานข้อมูลง่ายขึ้นครับ – ต่อมา Service  โดยหลักๆ จะเป็นการเตรียม Method สำหรับ List รายการ / เพิ่ม / ลบ / แก้ไข / เรียกดูข้อมูล ครับ แต่ในส่วนของ Service อันนี้ผมจะแยกเป็น Interface กับ Implement ครับ – ต่อมาเป็นตัว Controller โดยต้องเพิ่ม…