[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 โดยต้องเพิ่ม…

[SPRING] ทำความรู้จักกับ Thymeleaf

จาก Blog ตอนที่แล้วที่ได้ทดสอบ สวัสดีชาวโลก บน Spring Framework กันไปแล้วครับ แต่เว็บของเรามันไม่ได้มีหน้าตาอะไรเลย มีแต่ข้อความอย่างเดียวครับ วันนี้ผมจะมาเพิ่มหน้าจอในส่วนของ View นะครับ สิ่งที่ต้องเตรียม 📌 งานจาก Blog ตอนก่อนครับ📌 ถ้าไม่มีสามารถเพิ่ม Dependency ลงในไฟล์ pom.xml ได้ครับ 📌 หรือจะใช้ Spring Initializr ก็ได้ครับ รู้จักกับ Thymeleaf กันก่อนครับ 📌 เป็น Template Engine โดยหลักเราเขียน View ด้วย HTML แหละครับ แต่มี Tag บาง Tag ช่วยให้จัดการกับข้อมูลได้ง่ายขึ้นครับ📌 ถ้าลองเปิดไฟล์ของ Thymeleaf โดยไม่ผ่าน Sping มันจะแสดงผลเหมือน HTML ทั่วๆไปครับ มาทำกันเลย 📌 มาดูที่โครงสร้างกันก่อนครับ📌 ตอนนี้เรามายุ่งกับไฟล์ application.properties ครับ เพื่อให้ Spring รู้จักว่า Thymeleaf เราอยู่ที่ไหนครับ 📌 จากนั้นสร้างโพลเดอร์ 📌 ตอนนี้มาเพิ่ม Java Class กันครับ นั้นหมายความว่าต้องสร้าง View ที่ basePath src/main/resource/templates/  ต่อด้วยค่าที่ค่าที่ Return Method index person  ครับ หลังจากเข้าใจ Path ที่ต้องสร้าง View แล้ว มาสร้าง View ดีกว่า มา Run ด้วยคำสั่ง ./mvnw spring-boot:run  เพื่อดูผลลัพธ์ผ่าน url http://localhost:8080/person/ ครับ สำหรับ Source Code สามารถ Download ได้จากที่นี่ครับ ปล. ชื่อ package อาจจะตั้งแปลกนะ ตอนแรกตั้งใจว่าจะทำไปเลย แต่ไปๆมาๆของฝึกก่อนดีกว่า…

[SPRING] สวัสดีชาวโลก

หลังจาก Blog ตอนที่แล้ว ผมได้เขียนเกี่ยวกับเขียน Spring โดยใช้ VSCode ครับ ซึ่งจาก Blog ตอนก่อน ยังติดปัญหาอยู่ที่ว่าเว็บทำงานแล้ว แต่ไม่มีการแสดงผลอะไรทั้งนั้นเลย ซึ่งใน Blog ตอนนี้ผมจะมาทำ Hello world ครับ สิ่งที่ต้องเตรียม ลุยยเลยครับ 📌 มาดูโครงสร้างของ Project กันก่อนครับ สวัสดีชาวโลก 📌 มาดูที่ Code กันครับ ซึ่งมีสิ่งที่ต้องสนใจ ดังนี้ @RestController  เป็นสิ่งที่ทำใหเ ClasshelloController  เป็น WebService แล้วครับ จากนั้นลองมาดูที่ Method Index ครับ สิ่งที่ผมทำ คือ ถ้ามี Request /hello  มา ตัว @RequestMapping  จะดักไว้ครับ เอาง่ายๆ ถ้ามีอะไร /hello เข้ามา Method Index ทำงานครับ 📌 และสุดท้าย ถ้าต้องการให้มันดูมีมูลค่า เรามาทำ Unit Test กันครับ 📌 ลองมารัน Test ครับ สังเกตุดีว่าจะมีเครื่องหมายถูกสีเขียวด้วย 📌 ถ้ามือบอนทำ Fail หละ ผลที่ได้จะเป็นไปตามนี้ครับ Blog ตอนต่อไปจะเป็น สวัสดีชาวโลก แบบที่มี View แล้ว จะได้มีความสวยงาม ^__^

[SPRING] ใช้ VSCode ในการเขียน Spring Boot กัน

มาลองใช้งาน Spring Boot โดยใช้ VSCode กันครับ สำหรับ Blog นี้ เนื่องจากหลายๆงานในปัจจุบันหันมาใช้ VSCode กันติดแล้ว เพราะมันเร็ว ง่าย และไม่ซับซ้อนครับ โดยวันนี้ผมลองมาฟื้นฟูทักษะ Java ด้วย หายไปกับ .Net Framework กับ Power Shell หลายปีครับ สิ่งที่ต้องเตรียม ลุยกันเลย Blog ตอนต่อไปจะลองพวก HelloWorld แล้วครับ ^__^

[DOCKER] สร้าง Dockerfile ที่มี User ที่จำเป็นสำหรับ DB2 ครับ

สวัสดีครับ Blog ตอนนี้น่าจะเป็น Blog ที่เกี่ยวกับ Docker อันแรกมั้งๆ ปกติผมจะใช้ Virtual Machine ในการทำงานมากกว่าครับ โดยสำหรับผมได้เอา Docker Image ของ DB2 มาใช้งานครับ โดยจะเป็น Version 11 Fixed Pack 3 ซึ่งเมื่อผม pull ลงมาแล้ว ปรากฏว่าลองอ่าน Document แล้ว ตัว Docker Image มันมีแต่ user db2inst1 เป็นหลักครับ แต่ Database ที่ผมต้องการจะเอามาขึ้นในส่วนของ Application มันต้องการใช้ มี – แบบที่ 1 : หลังจาก docker run ไปแล้ว เข้า terminal ไปแก้ หลังจาก docker run ไปแล้ว เข้า terminal ของ container ด้วยคำสั่ง docker exec -it <CONTAINER_ID> bash  เช่น docker exec -it 4484a421c205 bash  ครับ – แบบที่ 2 : ทำ Dockerfile ดีกว่า ทำ dockerfile ดีกว่า โดยผมทำ image file แยกออกมาอีกอันเลย เอาไว้ใช้งานในองค์กรครับ เอาไปฝากไว้ใน Nexus ก็ได้ครับ (ผมเลือกวิธีนี้นะครับ มาเริ่มกัน) สำหรับวิธีที่ 2 นั้นเห็นว่ามันมีความเป็น Automation มากขึ้นครับ และในตัว dockerfile จริงๆ…

[BPMN] แก้ปัญหา Stack Size is too large บน Camunda BPMN

หลังจากลองตัว Camunda BPMN Engine มาสักพัก แล้วจะทดสอบอะไร อยากรู้ว่ามันมีค่าเท่าไหร่ ปกติเราทำพวก Instrument Test เพื่อแสดงให้เห็นว่ากิจกรรมที่สนใจ โดยผมเขียนคำสั่งประมาณนี้ เมื่อนำไป Run กับ BPMN Engine พบว่า Stack Size is too large ครับ ปัญหา คือ อะไร ทดสอบอีกครั้งครับ

[JAVA] TOMCAT Change Default Port

Reference: http://maxpixel.freegreatpicture.com/Tomcat-Charming-Kitten-Animals-Cat-Fur-Animal-1199937

พอดีวันนี้ได้เข้ามาดู Jenkins ทำไมมัน Start ไม่ติดครับ โดยไปพบว่า Port ที่ Tomcat มันใช้ดันไปมี Application อื่นใช้แล้วครับ ทางแก้ที่เหลือ คือ การเปลี่ยน Port TOMCAT หนีเอาครับ โดยจะแก้ไขจาก Port 8080 ไปเป็๋น 8888 (เอาฤกษ์เอาชัยกันก่อนครับ) โดยสำหรับการเปลี่ยน Port ของ TOMCAT มีขั้นตอน ดังนี้ครับ ไปที่ TOMCAT_HOME  (Path ที่ติดตั้ง TOMCAT แหละครับ) เข้าไปที่โพลเดอร์ conf พบกับไฟล์มากมายครับสนใจไฟล์ server.xml  ครับ เปิดมันด้วย Text Editor สักตัวครับ อย่างผมใช้ตัว VSCODE ครับ หาส่วน Connector port=”8888″  ครับ จากนั้นทำการแก้ไข Port ครับ จากนั้น Restart TOMCAT ใหม่ครับ ^__^ Reference

[CR] ปีกไก่ทอดนาโกย่าสไตล์ที่ร้านเซไค โนะ ยามะจัง (Sekai no Yamachan)

ตอนแรกวันนี้ผมก็จะไปหาที่นั่งทำ Thesis เงียบแหละ หลังจากไปลองที่ Co-working Space แถวประตูน้ำมาแล้ว นั่งทำแต่เช้าจนจะบ่าย 3 แล้ว ลองไปกินกระเพราเป็ดย่างที่ Emporium ดีกว่าครับ แต่ไปๆมาแล้ว เอออเจอร้านที่ GZR Gozziira – กินข้าวแกงกะหรี่จานยักษ์!! Review ครับ เห้ยยยอยากกินหวะ ก็เลยเดินไปดูแต่ปรากฏว่าเข้าซอยผิด 5555  เดินเข้ามาซอยสุขุมวิท 39 แทน ไหนๆก็พลาดมาแล้ว ลองเดินมาเจอคุณลุง หิวหวะ ลองเข้าไปกินดีกว่า ไปกินแบบไม่รู่ว่าร้านนี่ขายอะไร จริงๆตอนแรกคิดว่าร้านนี้จุดเด่นอยู่ที่ราเมงนะ เพราะมีป้ายหลอกให้หลงอีกที เข้ามาร้านแล้ว กูเป็นลูกค้าคนไทยคนเดียวในร้าน แถมพนักงานรัวภาษาญี่ปุ่นใส่อีก ผมเลยตอบไปว่ามา 1 ท่านครับ ^___^ หลังจากไม่รู้อะไรตอนสั่งเลยถามทางร้าน พนักงานแนะนำ สิ่งที่ผมลองสั่งมา ปีกไก่ทอดนาโกย่า(Tebasaki) แบบปกติ มี 5 ชิ้นครับ ราคา 130 บาท คิชิเมงร้าน และโมจิ (Chikara Kishimen) ราคา 180 บาท มาดูที่ค่าเสียหายกันบ้างดีกว่าครับ ตามรูปเลยครับ ทำเลที่ตั้ง ซอยสุขุมวิท 39 รูปปั๊นลุงเจ้าของร้านเด่นมากครับ ถ้านั่ง BTS เข้ามา เดินทางมาประมาณ 12-15 นาทีครับ โดยร้านจะอยู่ใน The Manor ครับ จริงๆมันมีราเมงอีกร้านด้วยครับ แต่ผมเข้าผิด 55555

[DB2] Run Script แบบ Check ก่อน ถ้าผ่านไปต่อ

IBM DB2

จริงๆ Blog นี้เกิดจากการได้เป็นผู้โชคดีไปช่วยน้องในทีม Run Script สำหรับ UAT ครับ โดยที่น้องคนนั้นก็ไม่ค่อยมั่นใจกับ Script ครับ เมื่อทดสอบที่ Site ลูกค้าจริงแล้วพบว่า อ้าวเฮ้ยยยย ไม่เหมือนที่คุยกันไว้นี่นาที่บอกว่า Migrate ครบ แต่อ้าวข้อมูลหายไปอ้าวเฮ้ย อย่ากลืนน้ำลายตัวเองดีกว่าเสียเวลาร้องขออะไรสุดท้ายข้อมูลก็ต้องกลับคืน (มันของลูกค้า ไม่ได้ข้อมูลครบคงหัวขาด) ทำไมถึงเป็นเช่นนั้นหละ ทำไม Script ที่มีการซักซ้อมมาอย่างดีถึงเกิดปัญหาตอนใช้จริง มาดูโครงสร้าง Script กันดีกว่าครับ โดยได้ทำเป็น Batch File ชุดนึงครับ (ไฟล์ migrate.bat ) ข้างในมีเนื้อหาประมาณนี้ครับ แต่พอลองทดสอบทำงานจริง อ้าวววววววว Schema ไม่ตรงกัน พบ Script แรกมัน Error แต่ที่มันจะต้องหยุดกลับต้องทำงานต่อไป DROP ข้อมูลทิ้งเลย ซุนวูกล่าวไว้ว่า รู้เขารู้เรา รบร้อยครั้งชนะร้อยครัั้ง แต่นี่รู้ไม่ครบ แล้วต้องทำอย่างไร กลศึกมีไว้พลิกแพลงครับ เราก็เล่นแบบ Safe สิ Execute Script ดู Error ถ้าไม่มีแล้วทำงานต่อ ดู Return Code ครับ ค่าที่ db2 return กลับมา มีค่าที่เป็นไปได้ครับ มีดังนี้ CODE DESCRIPTION 0 DB2® command or SQL statement executed successfully 1 SELECT or FETCH statement returned no rows 2 DB2 command or SQL statement warning 4 DB2 command or…

[MSWORD] เพิ่ม Cross-Reference เอาไว้อ้างอิงรูปภาพ หรือตารางในตารางครับ

หลายครั้งเรากำลังเขียนรายงานอยู่ แล้วมีข้อมูล Pattern แบบนี้ หลังจาก Insert Caption เพื่อใส่คำว่าภาพที่ 6(ที่ถูก Highlight สีเหลือง) แล้วตรงคำว่า ดังภาพที่ 6(กรอบสีแดง) ต้องพิมพ์เอง หรือป่าว คำตอบไม่ต้องพิมพ์เองครับ ใน Microsoft Word มี Feature นี้อยู่แล้วครับ ชื่อว่า Cross-Reference ครับ โดยมีขั้นตอน ดังนี้ Reference