การประยุกต์ใข้  Sequence เพื่อสร้างตัวเลขอัตโนมัติให้กับ Table ใน Oracle Database

ก่อนหน้านี้เคยได้รับความต้องการจากระบบหนึ่งซึ่งเป็นระบบที่รับสมัครนักเรียนเพื่อเข้าศึกษาต่อในมหาวิทยาลัยโดยมีความต้องการข้อหนึ่งว่า “ในส่วนการจัดเก็บข้อมูลเลขที่สมัคร ให้รันข้อมูลเลขที่ผู้สมัครตามโครงการที่เปิดรับในแต่ละปีการศึกษา” เนื่องในการพัฒนาระบบนี้ มีการใช้ Oracle Database ในการจัดการฐานข้อมูลอยู่แล้ว เพื่อน ๆ ที่เคยทำงานกับ Oracle Database ก็จะทราบว่าเราสามารถใช้ Oracle Sequence  เพื่อสร้างตัวเลขอัตโนมัติได้ ดังนั้นเราจึงสามารถที่จะใช้ Oracle Sequence มาประยุกต์ใช้เพื่อที่จะรันเลขที่ผู้สมัครได้ โดยสามารถมั่นใจได้ว่าจะไม่เกิดปัญหาผู้สมัครได้ข้อมูลเลขที่สมัครเดียวกัน กรณีที่ทำการสมัครในโครงการเดียวกันเรียนพร้อม ๆ กันอย่างแน่นอน วิธีการดำเนินการก็ไม่ยุ่งยากแค่สร้าง sequence ตามโครงการและปีที่เปิดรับทั้งหมดไว้ให้ก่อนให้เรียบร้อยและเมื่อนักศึกษามาสมัครก็สามารถเรียกใช้ได้เลย ตามวิธีการข้างต้นก็ไม่น่าจะมีปัญหาอะไร แต่ก็เริ่มมีคำถามในใจ ถ้าโครงการนั้นไม่มีผู้สมัครเลย ถ้าดำเนินการสร้างไว้ก่อนก็เปลืองเปล่า ๆ หรือถ้าลืมสร้างของบางโครงการ ระบบต้องเกิดข้อผิดพลาดแน่นอน จึงเกิดแนวคิดใหม่แทนที่จะสร้างไว้ก่อน เปลี่ยนเป็นสร้าง sequence ตอนที่นักเรียนสมัครในโครงการนั้น ๆ ดีกว่า โครงการไหนไม่มีการสมัครก็ไม่ต้องสร้าง และไม่เกิดปัญหาสร้าง sequence ไม่ครบในทุกโครงการแน่นอน คราวนี้ถึงเวลาที่เราจะมาดำเนินการกันแล้วค่ะ โดยมีขั้นตอนคร่าว ๆ ดังนี้คือ ตรวจสอบก่อนว่ามีการสร้าง sequence ของโครงการนั้น ๆ หรือยังถ้ายังไม่มีการสร้างก็ให้ทำการสร้าง และเมื่อถึงเวลาที่มีการสมัครก็สามารถเรียกใช้ sequence เพื่อออกเลขที่ผู้สมัครได้เลยค่ะ ขั้นตอนที่ 1 ตรวจสอบว่ามีสร้าง sequence หรือยัง โดยเราสามารถตรวจสอบได้จาก object : user_sequences ตามตัวอย่าง Oracle Function ดังต่อไปนี้     FUNCTION CountSequence (var_seq_name IN VARCHAR2)         RETURN NUMBER     IS         var_seq_count   NUMBER := 0;         var_seq_query   VARCHAR2 (1000);     BEGIN         var_seq_query :=                ‘SELECT COUNT (*) FROM user_sequences WHERE sequence_name = ”’             || var_seq_name             || ””;         EXECUTE IMMEDIATE var_seq_query             INTO var_seq_count;         RETURN var_seq_count;     END; ขั้นตอนที่ 2 ทำการสร้าง sequence ตามหลักการการตั้งชื่อ ตามตัวอย่าง Oracle Procedure ดังต่อไปนี้ PROCEDURE CreateSequence (var_seq_name IN VARCHAR2)     IS         var_seq_count   NUMBER := 0;     BEGIN         var_seq_count := CountSequence (var_seq_name);         IF var_seq_count = 0         THEN             EXECUTE IMMEDIATE   ‘CREATE SEQUENCE ‘                              || var_seq_name                              || ‘ START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999999                                          NOCACHE NOCYCLE’;         END IF;     END; ขั้นตอนที่ 3 เมื่อทำการสร้าง sequence เสร็จเรียบร้อย เราสามารถดึงค่าถัดไปของลำดับด้วยคำสั่ง nextval การออกเลขที่ผู้สมัครให้กับนักเรียน ซึ่งจะถูกเก็บไว้ที่ตัวแปร var_app_no โดยมีความยาวขนาด

Read More »

ว่าด้วยเรื่องการคำนวณตัวเลขตรวจสอบ (Check Digit)

ได้รับมอบหมายจากทีมในการสร้าง Oracle Function เพื่อคำนวณตัวเลขตรวจสอบ (check digit) ของการชำระเงินค่าสมัครผ่านช่องทางการชำระเงินช่องทางหนึ่ง โดยได้รับ requirement มาดังภาพข้างล่างนี้ จากภาพข้างต้นจะมีข้อมูลสำหรับการนำเข้า 4 ชุดซึ่งประกอบด้วย ชุดที่ 1 : Customer No.1/Ref.1  ชุดที่ 2 : Due Date (DDMMYY : พ.ศ.)   ชุดที่ 3 : Customer No.2/Ref.2 ชุดที่ 4 : จำนวนเงินที่ต้องชำระ พร้อมด้วยขั้นตอนวิธีในการคำนวณตัวเลขตรวจสอบ (check digit) ดังนี้ มาทำความเข้าใจกับวิธีคำนวณกันก่อนที่จะเริ่มต้นสร้าง Oracle Function ถ้ามาดูรายละเอียดของวิธีการคำนวณในข้อที่ 1 ซึ่งเป็นการหาค่าประจำหลักของข้อมูลนำเข้า โดยวิธีการคือ นำข้อมูลแต่ละหลักคูณค่าคงที่ คือ 6, 4, 5, 8, 7 ไปเรื่อย ๆ ตามลำดับ การหาค่าประจำหลักของข้อมูลนำเข้า จะสังเกตุว่าถ้านำข้อมูลนำเข้าทั้ง 4 ชุดข้อมูลมาเรียงต่อกันจะมีความยาวเท่ากับ 35 โดยที่ ลำดับที่ 1, 6, 11, 16, 21, 26, 31 นำค่าข้อมูลคูณด้วย 6 ลำดับที่ 2, 7, 12, 17, 22, 27, 32 นำค่าข้อมูลคูณด้วย 4 ลำดับที่ 3, 8, 13, 18, 23, 28, 33 นำค่าข้อมูลคูณด้วย 5 ลำดับที่ 4, 9, 14, 19, 24, 29, 34 นำค่าข้อมูลคูณด้วย 8 ลำดับที่ 5,10, 15, 20, 25, 30, 35 นำค่าข้อมูลคูณด้วย 7 กรณีถ้าไม่ต้องคิดให้ซับซ้อนเราก็บอกว่า fix ค่าไปเลยตามเงื่อนไขข้างต้น ก็สามารถจะหาค่าประจำหลักของข้อมูลนำเข้าแต่ละตัวได้ แต่ถ้าจะยืดหยุ่นกว่านั้นก็สามารถมองได้ว่า ลำดับที่ 1, 6, 11, 16, 21, 26, 31 เมื่อ mod ด้วย 5 จะได้ค่ากับ 1 ลำดับที่ 2, 7, 12, 17, 22, 27, 32 เมื่อ mod ด้วย 5 จะได้ค่ากับ 2 ลำดับที่ 3, 8, 13, 18, 23, 28, 33 เมื่อ mod ด้วย 5 จะได้ค่ากับ 3 ลำดับที่ 4, 9, 14, 19, 24, 29, 34 เมื่อ mod ด้วย 5 จะได้ค่ากับ 4 ลำดับที่ 5,10, 15, 20, 25, 30, 35 เมื่อ mod ด้วย 5 จะได้ค่ากับ 0 ดังนั้นเราก็สามารถค่าประจำหลักของข้อมูลนำเข้าได้ดังต่อไปนี้ ค่าลำดับที่ mod ด้วย 5 ได้เท่ากับ 1 ให้นำค่าข้อมูลคูณด้วย 6 ค่าลำดับที่ mod ด้วย 5 ได้เท่ากับ

Read More »

UX, everything related!

เรามักได้ยินคำว่า UI เป็นประจำเมื่อเราพัฒนาระบบแต่ รู้หรือไม่ว่านอกจาก UI แล้วมันมีอีกหนึ่งอย่างที่ควรรู้และสำคัญยิ่งกว่าแต่ถูกมองข้ามไปคือ UX (ย่อมาจาก User experience) หลายๆคนมักจะสับสนว่า UI และ UX มันคือสิ่งเดียวกัน จริงๆแล้วมันคือคนละอย่างกันเลย วันนี้เราจะมาเล่าให้ฟัง UI :: User Interface User Interface คือหน้าตาของระบบที่ผู้ใช้ได้เห็น ได้ตอบสนอง ไม่ใช่ระบบในทางคอมพิวเตอร์อย่างเดียวที่มี UI ถ้าเทียบกับขวดซอสมะเขือเทศ ขวดก็คือหนึ่งใน UI เช่นกันหรืออาหาร 1 จาน หน้าตาของอาหารก็ถือว่าเป็น UI ด้วย “UI เป็นสิ่งที่สามารถมองเห็นได้หรือจับต้องได้“ UX :: User Experience User Experience คือ Experience หรือประสบการณ์ของผู้ใช้ที่เราได้ส่งมอบให้ มากกว่า Interface ที่ผู้ใช้งานได้ตอบสนอง เราจะไป focus ที่ผู้ใช้ใช้สินค้าเราแล้วมีความรู้สึกอย่างไร ผู้ใช้ใช้สินค้าเราแล้วได้บรรลุวัตถุประสงค์ของเราหรือไม่ “UX คือสิ่งที่อยู่กับความรู้สึก จับต้องไม่ได้ มองไม่เห็น แต่วัดประเมินผลได้” ยกตัวอย่างแบบเห็นภาพ การออกแบบ UX ของการรับประทานอาหารจานหนึ่ง เราอยากให้ผู้ใช้รู้สึก fresh ก่อนตามด้วยความแน่นของรสชาติที่ตั้งใจปรุงตามมา ก็ต้องออกแบบจานอาหาร การเลือกใช้วัตถุดิบ หรือการให้กินคู่กับเครื่องดื่มบางอย่าง จะช่วยส่งเสริม/เติมเต็มให้ผู้กินได้รับประสบการณ์ที่แปลกใหม่ได้ จริงๆแล้ว นอกจาก website หรือ application ที่ต้องมี UX ที่ดีเป็น 1 ในองค์ประกอบแล้ว ทุกๆอย่างรอบตัวในชีวิตประจำวันก็ต้องมี UX ที่ดีเช่นกัน Why should we have to care on UX? UX เรียกได้ว่าเป็นสารต้นต้นของสินค้าก็ว่าได้ การทำให้ผู้ใช้ได้รับประสบการณ์ที่ดีมักจะเป็น 1 ในวัตถุประสงค์หลักในการออกแบบสินค้าและบริการ เพราะถ้าทำออกมาแล้ว ผู้ใช้ไม่ enjoy ใช้แล้วลำบากกว่าเดิม แล้วใครจะมาใช้งาน? สินค้าบางอย่างที่ใช้ในชีวิตประจำวันเช่นซอสมะเขือเทศออกแบบขวดซอสแบบทั่วไป เวลาใช้ผู้ใช้จะต้องเคาะ/เขย่าขวด ซอสจึงจะออกมา การออกแบบขวดให้เป็นแบบคว่ำ บีบแล้วซอสออกเลย เป็นการแก้ปัญหาของผู้ใช้ เมื่อผลิตออกมาจึงขาย ตอบโจทย์ปัญหาของผู้ใช้ ผู้ใช้ก็ happy, win win ทั้งผู้ขายและผู้ซื้อ แล้วเราจะไปหาข้อมูลอะไรมาวิเคราะห์หละ แน่นอน UX = Research Research เท่านั้น ไม่ว่าจะเป็นการทำแบบสอบถาม การสัมภาส การสังเกตการใช้งาน การลงพื้นที่จริง หรือการอิงข้อมูลทางสถิติหรือข้อมูล log ยิ่งทำเยอะยิ่งทำให้เกิด UX ที่ดี การมี user experience ที่ดีมาจากการทำ Research หรือการค้นความหาข้อมูล ถามว่าการตามหาข้อมูลจะทำได้อย่างไรหละ User Research การ research ข้อมูลของผู้ใช้งาน/กลุ่มผู้ใช้งาน จะได้ออกแบบได้ตรงจุด ข้อมูลส่วนตัวของผู้ใช้เช่น อายุ เพศ ที่อยู่ เป็นต้น ผู้ใช้ที่เราขายคือใคร กลุ่มไหนบ้าง ทำงานอะไร ผู้ใช้สินค้าเรามีบุคลิกอย่างไร นิสัยเป็นอย่างไร รวมไปถึง รูปภาพของผู้ใช้ ควรเป็นรูปที่สามารถสื่อถึง Lifestyle ของคนๆนั้นได้ จะดีมากๆ ข้อมูลเหล่านี้เป็นตัวแปรตั้งต้นที่เราจะต้องมาออกแบบระบบอย่างไรให้ตอบโจทย์กลุ่มผู้ใช้ที่เราเก็บข้อมูลมา จะเห็นได้ว่า ยิ่งเราทำ research มาเท่าไหร โอกาสของการสร้างสินค้ามาให้ตอบโจทย์คนส่วนใหญ่ได้ จะทำให้สินค้าเราขายออกได้ง่ายกว่าเช่น การออกแบบระบบสารสนเทศที่กลุ่มผู้ใช้ระบบ 90%เป็นผู้มีอายุ การทำระบบให้เขาใช้งานก็ควรมีตัวอักษรที่ใหญ่กว่าทั่วไป มีการทำ Shortcut เมนูที่ง่าย ไม่สับซ้อน Brand Research คนที่ว่าจ้างหรือว่าง่ายๆคือเจ้าของระบบคือใคร Brand หรืออัตลักษณ์ของเขาเป็นอย่างไร วัตถุประสงค์ขององค์กร สีขององค์กร design token ขององค์กร ก็เป็นอีก 1 อย่างที่ต้องมีการศึกษาข้อมูลด้วยเช่นกัน Problem Research นอกจากการ research ผู้ใช้แล้ว เราก็ควรศึกษาปัญหาที่เกิดขึ้นด้วยเช่นกัน เพราะอะไรผู้ใช้ถึงเลิกใช้ ทำไมผู้ใช้ถึงไม่ใช้ feature นี้ ทำไมผู้ใช้สับสนในการใช้งาน ปัญหาเหล่านี้ก็จะเป็นอีกหนึ่งสารตั้งต้นที่จะทำไปออกแบบและพัฒนาสินค้าด้วยเช่นกัน ซึ่งเราสามารถสำรวจปัญหาเหล่านี้ได้จากการให้ผู้ใช้ทำแบบสอบถาม การลงพื้นที่จริงไปสังเกตการใช้งานระบบ

Read More »

สร้าง Modal dialog อย่างง่ายด้วย jquerymodal

เนื่องจากตอนนี้มีพรบ.คอมพิวเตอร์เข้ามาเกี่ยวข้อง จึงต้องมี pop up Modal dialog ถามผู้ใช้ วันนี้จะมาแนะนำการใช้งาน jQuery ที่เรียกใช้ไม่กี่บรรทัดเราก็ได้ Modal dialog โดยจะยกตัวอย่าง Modal dialog แบบไม่ให้ปิดได้ โดยต้องอ่านข้อความก่อน ถึงจะปิดได้ ขั้นตอนที่ 1 เพิ่ม jquery.min.js, jquery.modal.min.js, jquery.modal.min.css เพื่อเรียกใช้งาน ขั้นตอนที่ 2 เพิ่มการตั้งค่า Modal dialog ตามตัวอย่างไม่ให้แสดงปุ่ม “ปิด” ขั้นตอนที่ 3 เพิ่ม User interface Modal dialog โดยใช้ tag div ขั้นตอนที่ 4 ได้ผลลัพธ์ Modal dialog ออกมาอย่างสวยงาม ที่มา : https://jquerymodal.com

Read More »

Excel : ลำดับที่แบบตัวเลขด้วยคำสั่งง่าย ๆ ไม่ต้องลากเมาส์!

เคยไหม ที่พยายามใส่เลข 1-100 ใน Column ใด ๆ เอง ด้วยวิธีการต่าง ๆ แบบนี้ บางคนใช้วิธีพิมพ์เอง 😒 บางคนใช้วิธีพิมพ์เลข 1 2 3 คลุมแล้วลาก 😂 แต่!!! จะดีกว่าไหม ถ้ามีวิธีที่เร็วและเราสามารถระบุได้ว่าจะสิ้นสุดที่เลขใด 😍 มาดูวิธีกันเลยค่ะ ใน Cell A1 พิมพ์คำสั่งดังนี้ค่ะ แล้วกดปุ่ม Enter! โดยตัวอย่างในวีดีโอ ให้แสดงถึงเลข 20 ดังนั้นคำสั่งจึงเป็นดังนี้ค่ะ เพียงเท่านี้ คุณก็จะได้ Running Number จาก 1-100 โดยที่ไม่ต้องลากเมาส์แล้วค่ะ 😁👍💖 หวังว่าโพสนี้จะเป็นประโยชน์ต่อผู้อ่านไม่มากก็น้อยนะคะ แล้วพบกันใหม่ค่าาา

Read More »