• Angular : Routing


    ต่อจากการการทำ Directives ในบล็อกก่อนหน้า เราจะมาพูดถึงการสร้าง Routing ที่เป็นส่วนช่วยในการเปลี่ยนหน้าของระบบ ซึ่งจะทำให้ระบบสามารถแบ่งส่วนได้ชัดเจนมากยิ่งขึ้น โดยในหัวข้อนี้เราจะทำการสร้างเมนู เพื่อให้สามารถเปลี่ยนหน้าแบบไม่ต้องโหลดได้ โดยเราจะสร้าง Component “Home” เพื่อเป็นหน้าหลัก โดยใช้คำสั่ง >ng generate component home จากนั้นให้เราสร้างเมนู ในไฟล์ app.component.html ดังภาพที่ 1 การที่เราจะทำให้ Angular เปลี่ยนหน้าโดยที่ไม่ต้องโหลดหน้าใหม่ เราสามารถใช้ความสามารถของ Router ที่จะพาไปยังหน้าที่เราต้องการ โดยเราจะต้องเข้าไปทำการตั้งค่าที่ไฟล์ app.module.ts เพื่อให้ Angular ทราบก่อน โดยเราจะนิยาม Route หรือเส้นทางของเราใน myRoutes เพื่อบอกว่าเมื่อไหร่ที่เข้ามาจาก /pages ให้วิ่งไปที่ component ชื่อ HomeComponent, CalculatorComponent หรือ UserComponent และถึงแม้เราจะมีเส้นทางแล้ว แต่หาก root module ของเราไม่รู้จักก็เท่านั้น เราจึงต้องทำให้ root module…

    >> Read More <<

  • AutoMapper กับขัอมูลชนิด Collection


    การใช้งาน AutoMapper กับ object type array หรือ list ไม่จำเป็นต้องกำหนดค่า config การ map ของ array หรือ list เพียงแค่ config การ map ของ member ของ array หรือ list ที่ใช้งานเท่านั้น ตัวอย่างเช่น object ง่ายๆสองชนิดดังต่อไปนี้ public class Person { public string name { get; set; } } public class Employee { public string name { get; set; } } กำหนดค่า…

    >> Read More <<

  • วิธีการคำนวณหาอายุด้วย Oracle Datetime Functions


    อายุเป็นเพียงตัวเลข มีคนพูดไว้แบบนี้ แล้วถ้าเราอยากจะรู้ล่ะว่าไอ้ตัวเลข จำนวนปี จำนวนเดือน และจำนวนวัน ของอายุเรามันเป็นตัวเลขอะไร ถ้าไม่อะไรมากใช้เครื่องคิดเลข หรือนับเอาก็ได้อยู่ แต่ถ้าต้องคำนวณของทุกคนในองค์กรล่ะจะนับเอง หรือเครื่องคิดเลขก็คงไม่ไหวแล้ว ดังนั้นวันนี้จึงจะขอแนะนำ Oracle Datetime Functions ที่สามารถนำมาประยุกต์ใช้ เพื่อคำนวณหาอายุของเรากันค่ะ Oracle Datetime Functions ที่จะแนะนำในวันนี้คือ ฟังก์ชัน TRUNC (date), ADD_MONTHS และฟังก์ชัน MONTHS_BETWEEN โดยมีรายละเอียดของฟังก์ชันดังนี้ ฟังก์ชัน คำอธิบาย ADD_MONTHS เพิ่มจำนวนเดือนลงในวันที่ที่ระบุ MONTHS_BETWEEN หาจำนวนเดือนระหว่าง 2 วันที่ที่ระบุ TRUNC (date) คืนค่าวันที่พร้อมส่วนเวลาของวันที่ตัดให้เป็นหน่วยที่ระบุ ตัวอย่างการใช้งานฟังก์ชัน ADD_MONTHSSyntax : ADD_MONTHS(date, integer) ตัวอย่างการใช้งานฟังก์ชัน MONTHS_BETWEEN Syntax : MONTHS_BETWEEN(date1, date2) ตัวอย่างการใช้งานฟังก์ชัน TRUNC (date)Syntax : TRUNC…

    >> Read More <<

  • Windows 10, Version 1903, May 2019 Update installation


    Windows 10, Version 1903, May 2019 Update เป็นรุ่นปรับปรุงที่ออกเมื่อ พฤษภาคม 2562 การติดตั้งเปลี่ยนแปลงไปนิดหน่อยดังนี้ จะพูดถึงการติดตั้งใหม่เท่านั้น ใครจะอัพเดตผ่าน Windows update ก็สามารถอัพเดตได้เลย สำหรับนักศึกษา Windows 10 ที่สามารถติดตั้งได้คือ Windows 10 Education เท่านั้น เนื่องจากหมายเลขผลิตภัณฑ์ (Product key) ที่ได้จาก Microsoft Azure เป็น Windows 10 Education โหลดได้จาก Microsoft Azure และ https://licensing.psu.ac.th/windows-10/ การ activate สามารถทำได้เพียงวิธีเดียวคือใช้ Product key จาก Microsoft Azure เท่านั้น เมื่อติดตั้งจะมีหน้าจอให้เลือกว่าจะติดตั้งรุ่นไหน ก็ให้เลือก Windows 10 Education เท่านั้น สำหรับบุคลากร…

    >> Read More <<

  • การเข้ารหัส Password หรือข้อมูลส่วนบุคคลในฐานข้อมูล ด้วย Hash Function กับ Salt Value


    การ Hashการ Hash หรือ Hashing ชื่ออย่างเป็นทางการคือ Cryptographic Hash คือการสร้างข้อมูลที่เป็นตัวแทนของข้อมูลที่ต้องการ ซึ่งอาจจะเป็นรหัสผ่าน หรือข้อมูลส่วนบุคคลอื่นๆ และนำไปจัดเก็บในฐานข้อมูลหรือใน Text file หรือในที่อื่นๆ ซึ่งข้อดีของการทำ Hash คือจะไม่สามารถถอดรหัส หรือกระทำการใดๆ เพื่อที่จะ Reverse ให้ออกมาเป็นข้อความต้นฉบับ ซึ่งในปัจจุบันมีวิธีการ Hash มากมาย เช่น MD5, SHA1, SHA256, SHA512, RipeMD, WHIRLPOOL, SHA3 เป็นต้น การเขียนโปรแกรมในแง่การเขียนโปรแกรมของแต่ละภาษา จะมี Library หรือเครื่องมือที่เอาไว้ใช้ทำ Hash อยู่แล้ว สามารถเปิดจากคู่มือ ได้เลยครับ MD5 Hashing & Crackingเป็นการทำ Hash ที่พื้นฐานที่สุด และเมื่อหลายปีที่ผ่านมามีข่าวออกมาว่ามีผู้ Crack ได้สำเร็จ ซึ่งรายละเอียดคร่าวๆ ของเรื่องนี้คือ การทำ Hash…

    >> Read More <<

  • SQL Expression สำหรับหาช่วงเวลาที่ต้องการ


    ใครที่เคยสร้าง Materialized View จะทราบว่าต้องมีการกำหนดช่วงเวลาเพื่อให้ Materialized View นั้นทำการ Refresh ข้อมูลเพื่อให้ได้ข้อมูลที่เป็นปัจจุบัน หรือแม้แต่ Job ก็เช่นกันต้องกำหนดช่วงเวลาเพื่อให้ Job ทำงานตามช่วงเวลาที่กำหนด บางคนอาจจะเจอปัญหาว่าไม่รู้ว่าต้องกำหนดอย่างไร เช่น อยากให้ทำงานทุก 8 โมงเช้า หรืออยากให้ทำงานทุกเที่ยงคืน เป็นต้น เพื่อให้ปัญหานั้นหมดไป เรามาทำความเข้าใจเกี่ยวกับช่วงเวลาบน Oracle กันดีกว่า จากที่เราทราบกันว่า 1 วันมี 24 ชั่วโมง 1 ชั่วโมงมี 60 นาที และ 1 นาทีมี 60 วินาที บน Oracle เราสามารถเขียนเป็น Expression ได้ตามตัวอย่างข้างล่างนี้ ช่วงเวลา : Period Expression 1 Expression 2 1 Day 1 1…

    >> Read More <<

  • การเขียน SQL เพื่อเลื่อนลำดับขึ้นลงอัตโนมัติ


    การเขียน SQL เพื่อเลื่อนลำดับขึ้นลงอัตโนมัติของ column ที่ระบุลำดับเป็นตัวเลข

    >> Read More <<

  • CrystalReport : ข้อมูลส่วน DetailSection กับการแสดงผลส่วน PageFooterSection


    เนื่องจากผู้เขียนได้รับมอบหมายให้มีการตรวจสอบข้อมูลว่า ถ้ามีข้อมูลใน Field1 ขึ้นต้นด้วยเครื่องหมาย “*” ต้องแสดงข้อความที่ส่วนท้ายของรายงานทุกแผ่นว่า “มีข้อมูลที่มีเครื่องหมาย * นำหน้า” ผู้เขียนจึงได้ทำการสร้าง Formula Field ขึ้นมาทั้งหมด 4 อัน คือ ffCountSubjectStar : ใช้สำหรับเก็บค่าจำนวนข้อมูลใน Field1 ที่ขึ้นต้นด้วย * ffResetCountStarSubject : ใช้สำหรับ Reset ค่าเมื่อขึ้นหน้าใหม่ ffSumStarSubjectCode : ใช้สำหรับเก็บค่าจำนวนรวมของ Field1 ที่ขึ้นต้นด้วย * ffPageFooter : ใช้สำหรับเก็บข้อความที่ต้องการให้แสดงท้ายกระดาษ 1. ffCountSubjectStar WhilePrintingRecords;Global numberVar isStarSubjectCode; if (Left({@Field1 },1) = “*”) then isStarSubjectCode := 1else isStarSubjectCode := 0 โค้ดส่วนนี้เป็นการตรวจสอบว่าถ้า Field1…

    >> Read More <<

  • AutoMapper


    AutoMapper คือ component ที่ใช้ในการ map ข้อมูลระหว่าง object ต่างชนิดกัน โดยทำการแปลงข้อมูลจาก object ชนิดหนึ่ง ไปกำหนดค่าให้กับ object อีกชนิดหนึ่ง ซึ่งถ้า object ปลายทางตรงตามข้อกำหนดของ AutoMapper ก็ไม่จำเป็นต้อง config ค่าใดๆเลย การแปลงข้อมูลจาก object ชนิดหนึ่งไปยัง object อีกชนิดหนึ่ง เกิดขึ้นได้บ่อยในการพัฒนา application โดยเฉพาะ application ที่อยู่ในลักษณะ multi tiers ที่ต้องมีการส่งผ่าน object ระหว่างกัน เช่น UI layer กับ Service layer หรือ Data access layer กับ Service layer การใช้งาน AutoMapper เมื่อต้องการแปลงข้อมูลจาก object ต้นทางไปยัง object…

    >> Read More <<