Oracle User expire โดยไม่ทราบสาเหตุ

นักพัฒนาบางท่านที่เพิ่งเริ่มพัฒนาระบบบนฐานข้อมูล Oracle อาจจะเคยเจอปัญหาเมื่อใช้ Oracle ตั้งแต่เวอร์ชัน 11 เป็นต้นไป นั่นคือ เมื่อสร้าง user บน Oracle และใช้งานไปได้ซักระยะอยู่ ๆ user นี้ก็เกิดก็ expire โดยที่ไม่ได้มีใครเข้าแก้ไขการตั้งค่าของ user นี้ ซึ่งเหตุการณ์นี้อาจจะมีสาเหตุแบบเดียวกับที่จะนำเสนอในบทควาามนี้ก็เป็นได้ หมายเหตุ ในบทความนี้จะใช้ Oracle SQL Developer ซึ่งเป็นเครื่องมือในการเข้าถึงและจัดการฐานข้อมูล Oracle มาช่วยในการอธิบายเพื่อให้เห็นภาพได้ง่ายขึ้น ขั้นตอนการตรวจสอบที่มาของปัญหาและการแก้ไข login ด้วย sys ตรวจสอบการตั้งค่า Default Profile โดยเลือกเมนู View –> DBA 3. ในหน้าต่าง DBA เลือกเพิ่มการเชื่อมต่อโดย SYS 4. ไปที่การตั้งค่า Default Profile 5. คลิกขวาที่ Default แล้วเลือก Edit 6. จะปรากฏหน้าต่าง Default Profile ซึ่งใน Oracle 11 เป็นต้นไป หลังจากติดตั้งและสร้าง Database แล้ว ใน Default Profile จะมีการตั้งค่าเริ่มต้นไว้ดังรูป โดย Default Profile จะมีผลกับ user ที่ถูกสร้างใหม่ และค่าที่ทำให้ user หมดอายุโดยอัตโนมัติก็คือ “Expire in (days)” นั่นเอง จึงเป็นที่มาของการที่ user expire เองโดยที่ไม่ได้มีการเข้าไปแก้ไขข้อมูลใด ๆ ของ user นี้ 7. การแก้ไขไม่ให้ user ที่สร้างใหม่ expire อัตโนมัติ ทำได้โดยการแก้ค่า “Expire in (days)” ให้เป็น UNLIMITED เมื่อแก้ไขแล้ว user ใหม่ที่ถูกสร้างหลังจากนี้ก็จะใช้งานได้ตลอดไม่มีวัน expire แต่ส่วนของ user ที่เคยสร้างไปก่อนหน้านี้ ผู้พัฒนาจะต้องเข้าไปปรับแก้วันที่ expire เป็นราย user ไป

Read More »

สวัสดี PDPA :)

สำหรับ Blog นี้ ทางผู้เขียนขอพูดถึง PDPA เบื้องต้นละกัน คิดว่านาทีนี้จากไม่อยากรู้จัก ก็ต้องมาทำความรู้จักกันไว้บ้างแล้วแหละ !! ต้องขอบอกก่อนเลยว่า ในยุคปัจจุบันที่มีการพัฒนาของเทคโนโลยีแบบก้าวกระโดด การเข้าถึงอุปกรณ์ต่างๆ ที่ง่ายขึ้น รวมไปถึงการเข้าใช้งาน Internet แบบเข้าถึงได้ทุกที่ทุกเวลา ทุกเพศทุกวัย และมีการใช้งานที่กำลังขยายเป็นวงกว้าง ส่งผลให้เกิดโลกออนไลน์ที่มีขนาดใหญ่ และสิ่งต่างๆ เหล่านี้นี่แหละที่เราทุกๆ คน หากต้องการเข้าใช้งาน เราก็จะต้องแลกมาด้วยการใส่ข้อมูลเข้าไป ผลจากสิ่งต่างๆ ที่มีความทันสมัย และสะดวกสบายเหล่านั้น มันก็จะมีผลบางอย่างที่เดินตามหลังเรามาแบบติดๆ ผลกระทบที่เห็นได้ชัดอย่างนึงเลยก็คือเรื่องของ “ข้อมูลส่วนบุคคล“ ที่อาจจะมีผู้ไม่หวังดีสามารถที่จะเลือกใช้ช่องโหว่ของเทคโนโลยีเหล่านั้นมาก่อปัญหา และหลายครั้งก็นำมาซึ่งความเดือดร้อน หรือสร้างความเสียหายให้แก่เจ้าของข้อมูล เราจึงจำเป็นต้องมีกฏหมายขึ้นมา เพื่อกำหนดหลักเกณฑ์ มาตรการ กำกับดูแล และคุ้มครองข้อมูลส่วนบุคคลดังกล่าว นั่นก็คือ “PDPA“ พระเอกของเราในวันนี้นั่นเอง PDPA คืออะไร ? PDPA (Personal Data Protection Act, B.E. 2562(2019)) ก็คือพระราชบัญญัติคุ้มครองส่วนบุคคล พ.ศ.2562 ซึ่งประเทศไทยได้ประกาศในราชกิจจานุเบกษาไปเมื่อ วันที่ 27 พฤษภาคม 2562 และได้มีผลบังคับใช้ไปเมื่อวันที่ 28 พฤษภาคม 2562 ไปแล้วในบางส่วน และเมื่อวันที่ 27 พฤษภาคม 2563 ถือเป็นวันที่ พ.ร.บ. ดังกล่าวมีผลบังคับใช้ตามกฏหมายทั้งฉบับ ข้อมูลส่วนบุคคล คืออะไร? ถ้าว่ากันตาม PDPA ดังกล่าว จะให้ความหมายของคำว่า “ข้อมูลส่วนบุคคล” ไว้ดังนี้ “ข้อมูลเกี่ยวกับบุคคลซึ่งทำให้สามารถระบุตัวบุคคลนั้นได้ ไม่ว่าทางตรงหรือทางอ้อม โดยข้อมูลของผู้ถึงแก่กรรม และข้อมูลนิติบุคคล ไม่ถือเป็นข้อมูลส่วนบุคคลตาม พ.ร.บ.นี้” ตัวอย่างข้อมูลส่วนบุคคล (Personal Data) ชื่อ – นามสกุล, เลขประจำตัวประชาชน, เลขประกันสังคม, เลขประจำตัวผู้เสียภาษี เป็นต้น ที่อยู่, เบอร์โทรศัพท์, วันเกิด, อีเมล, การศึกษา, เพศ, อาชีพ, รูปถ่าย ข้อมูลทางการเงิน ข้อมูลส่วนบุคคลที่มีความละเอียดอ่อน (Sensitive Personal Data) เช่น ข้อมูลทางการแพทย์หรือสุขภาพ, เชื้อชาติ, ความคิดเห็นทางการเมือง, ความเชื่อทางศาสนาหรือปรัชญา, พฤติกรรมทางเพศ เป็นต้น PDPA เกี่ยวกับใคร ? เอาจริงๆ ผู้เขียนมองว่าเกี่ยวกับทุกคนนะ และอย่างน้อยๆ เราควรรู้ข้อมูลเหล่านี้ไว้บ้างไม่มากก็น้อย เพื่อไว้ในการช่วยรักษาสิทธิของเราเอง เจ้าของข้อมูลส่วนบุคคล (Data Subject) คือ บุคคลที่ข้อมูลระบุไปถึง ผู้ควบคุมข้อมูลส่วนบุคคล (Data Controller) คือ บุคคลหรือนิติบุคคลซึ่งมีอำนาจหน้าที่ “ตัดสินใจ” เกี่ยวกับการเก็บรวบรวม ใช้ หรือเปิดเผยข้อมูลส่วนบุคคล ผู้ประมวลผลข้อมูลส่วนบุคคล (Data Processor) คือ บุคคลหรือนิติบุคคลซึ่งดำเนินการเกี่ยวกับการเก็บรวบรวม ใช้ หรือเปิดเผยข้อมูลส่วนบุคคล “ตามคำสั่งหรือในนามของผู้ควบคุมข้อมูลส่วนบุคคล” ทั้งนี้บุคคลหรือนิติบุคคลซึ่งดำเนินการดังกล่าว ต้องไม่เป็นผู้ควบคุมข้อมูลส่วนบุคคล หากหน่วยงาน / องค์กรของเราต้องการใช้ข้อมูลเหล่านี้ ต้องทำอย่างไร ? กรณีที่ต้องมีการประมวลผลข้อมูลส่วนบุคคลด้วยการยินยอม ผู้ควบคุมข้อมูล (Data Controller) ต้องดำเนินการขอความยินยอมจากเจ้าของข้อมูลก่อนการประมวลผลข้อมูล ดังนี้ ต้องอธิบายให้ชัดเจนถึงวัตถุประสงค์ในการประมวลผลข้อมูลที่ขอความยินยอม ต้องระบุประเภทของข้อมูลที่นำไปใช้ ต้องมีข้อความที่เข้าถึงได้ง่าย อ่านเข้าใจ และไม่เป็นภาษาในทางกฏหมายจนเกินไป ไม่เป็นการบังคับ ต้องให้สิทธิอิสระแก่เจ้าของข้อมูลในการให้หรือไม่ให้ความยินยอม ห้ามกำหนดการให้ความยินยมเป็นเงื่อนไขในการให้บริการ กรณีเป็นผู้เยาว์อายุไม่ถึง 20 ปี คนไร้ความสามารถ คนเสมือนไร้ความสามารถ การขอความยินยอมต้องได้จากผู้ใช้อำนาจปกครอง ผู้อนุบาล หรือผู้พิทักษ์ด้วย บทลงโทษหากเราไม่ปฏิบัติตาม PDPA เพื่อให้ข้อมูลส่วนบุคคลถูกนำไปใช้ในทางที่เหมาะสม ใช้ในทางที่เป็นประโยชน์ การให้ข้อมูลในแต่ละครั้งจำเป็นจะต้องมีการพิจารณาอย่างรอบคอบและถี่ถ้วน เพราะหากไม่ปฏิบัติตาม พ.ร.บ. ดังกล่าวแล้วนั้นหน่วยงาน องค์กร หรือผู้ควบคุมข้อมูล อาจได้รับโทษ ดังนี้ ความรับผิดทางแพ่ง ตามความเสียหายที่เกิดขึ้นจริง และอาจต้องชดใช้ค่าสินไหมทดแทนเพิ่มขึ้นอีก โดยสูงสุดไม่เกิน 2 เท่าของค่าเสียหายที่แท้จริง โทษทางอาญา จำคุกสูงสุดไม่เกิน 1 ปี หรือปรับไม่เกิน 1 ล้านบาท หรือทั้งจำทั้งปรับ โทษทางปกครอง ปรับสูงสุดไม่เกิน 5 ล้านบาท จริงๆแล้ว รายละเอียดที่เราควรรู้ หรือควรเตรียมพร้อมรับมือเกี่ยวกับ

Read More »

Remote ไปยังเครื่องคอมพิวเตอร์อื่นด้วย Chrome Browser

การใช้งานเทคโนโลยีการทำงานระยะไกลหรือการ remote จากเครื่องคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่อง นับว่ามีความจำเป็นเพิ่มขึ้นมากในปัจจุบัน ซึ่งตัวระบบปฏิบัติการเองก็มีเครื่องมือรองรับ เช่น ใน Windows จะมี Remote Desktop นอกจากนี้ยังมีซอฟต์แวร์ที่รองรับการทำงานลักษณะนี้ เช่น TeamViewer หรือ AnyDesk ซึ่งบางซอฟต์แวร์หากใช้งานในลักษณะฟรี ก็อาจจะมีข้อจำกัดในการใช้งานบ้าง ดังนั้นในบทความนี้จะนำเสนอการใช้งาน remote ผ่าน chrome browser ซึ่งสามารถใช้งานได้ฟรี และค่อนข้างจะรองรับการทำงานทั่ว ๆ ไปได้ โดยไม่จำกัดเรื่องการเข้าใช้งาน (บางซอฟต์แวร์อาจจะมีการจำกัดจำนวนครั้งในการใช้งานในช่วงระยะเวลาหนึ่ง เป็นต้น) เตรียมการเบื้องต้นก่อนการใช้งาน ติดตั้ง chrome browser ทั้งฝั่งเครื่องต้นทางและฝั่งเครื่องปลายทาง เตรียมบัญชีผู้ใช้งานสำหรับ google หรือ google account เพื่อใช้สำหรับ remote ขั้นตอนการติดตั้งและตั้งค่า Extensions “Chrome Remote Desktop” การใช้งาน remote ผ่าน chrome browser นั้น อันดับแรกจะต้องทำการติดตั้ง Extensions เพิ่มก่อน ซึ่งก็คือ Chrome Remote Desktop ซึ่งช่องทางการดาวน์โหลดสามารถทำได้จากเมนูที่อยู่ในหน้าจอ chrome ได้เลยดังรูป โดยการกดที่เมนู Apps ถ้าไม่เจอเมนู Apps ให้ไปที่เมนู Bookmarks และเลือก Show bookmark bar ดังรูป จะปรากฏแถบว่าง ๆ ใต้ช่อง URL ซึ่งแถบนี้ก็คือ bookmark bar นั่นเอง คลิกขวาที่ bookmark bar จากนั้นเลือกเมนู Show apps shortcut เมื่อกดเลือกเมนู Apps แล้ว ในหน้าจอ chrome จะปรากฏรายการดังนี้ เลือก Web Store เพื่อเข้าไปดาวน์โหลด Chrome Remote Desktop 2. ในช่อง Search the store พิมพ์ chrome remote desktop เพื่อค้นหา กดเลือก Chrome Remote Desktop จะเข้าสู่หน้าจอการติดตั้ง extension นี้เพิ่มเติมให้กับ chrome browser เมื่อกดปุ่ม Add to Chrome จะมีกล่องข้อความถามเพื่อยืนยันการติดตั้ง ให้กดปุ่ม Add extension เพื่อยืนยัน เมื่อติดตั้งสำเร็จจะมีข้อความแจ้งดังรูป สังเกตว่าหลังช่อง URL จะปรากฏไอคอน ซึ่งมีไว้สำหรับแสดงและเรียกใช้งาน extensions ที่ติดตั้งไปนั่นเอง 3. ทำการติดตั้ง Chrome Remote Desktop ทั้งฝั่งเครื่องต้นทางและปลายทางที่ต้องการ remote 4. การเรียกใช้งานสามารถทำได้ดังรูป จากนั้นเลือก Chrome Remote Desktop 5. ก่อนที่จะทำการ remote หรือตั้งค่าการ remote จะต้องทำการ login บน chrome browser ก่อนด้วยบัญขี google ที่ได้เตรียมไว้ 6. เริ่มต้นการตั้งค่าครั้งแรกโดยเลือก Remote Access ซึ่งครั้งแรกสุดจะต้องติดตั้งโปรแกรมเพิ่มเติมก่อน กดตรงไอคอนดังรูป เพื่อดาวน์โหลดโปรแกรมติดตั้งเพิ่มเติม ไฟล์ติดตั้งชื่อ chromeremotedesktophost.msi รันไฟล์นี้เพื่อทำการติดตั้งโปรแกรม หรือกดยอมรับและติดตั้งจากหน้าจอ chrome browser ดังรูป ในขั้นตอนการติดตั้งจะมีให้ตั้งชื่อเครื่อง จากนั้นจะเข้าสู่ขั้นตอนในการสร้างรหัส PIN โดย PIN นี้ใช้สำหรับให้เครื่องต้นทางที่ต้องการ remote เข้ามา ทำการกรอกเพื่อเชื่อมต่อ เมื่อตั้งค่าเสร็จสิ้นทั้งเครื่องต้นทางและปลายทางแล้ว ในบัญชี google เดียวกัน จะเห็นเครื่องที่เราได้ตั้งค่า remote ไว้ดังรูป 7. สามารถแก้ไขชื่อเครื่องและตั้งค่ารหัส PIN ใหม่โดยเลือกที่ไอคอน จะเข้าสู่หน้าจอการตั้งค่าดังรูป 8. การปิดการเชื่อมต่อระยะไกล

Read More »

การตั้งค่า TeamViewer ให้ Remote ด้วย IP Address

การตั้งค่า TeamViewer ให้ remote ด้วย IP Address จะช่วยให้เราจดจำ ID ได้ง่ายขึ้น และ ไม่จำเป็นต้อง remote ผ่าน Internet แต่ต้องเป็นเครื่องที่อยู่ใน network เดียวกัน มีวิธีการตั้งค่าดังนี้ เปิดโปรแกรม TeamViewer แล้วกดที่เมนู Extras 2 กดที่ Options 3. ที่ Incoming LAN connections ให้เลือกเป็น accept หรือ accept exclusively accept จะสามารถใช้ได้ทั้ง LAN และ Internet accept exclusively ใช้ได้แค่ LAN เท่านั้น เสร็จแล้วให้กดปุ่ม OK ถ้าเลือกเป็น accept ตรง Your ID จะแสดงเป็นตัวเลขแบบปกติ ซึ่งจะ remote โดยใช้ตัวเลข Your ID ก็ได้ หรือจะ remote ด้วย IP Address ก็ได้ถ้าอยู่ใน network เดียวกัน ถ้าเลือกเป็น accept exclusively ตรง Your ID จะแสดงเป็นเลข IP Address ซึ่งจะ remote โดยใช้ IP Address ได้อย่างเดียวเท่านั้นและต้องอยู่ใน network เดียวกันด้วย

Read More »

สร้าง Web API สำหรับส่ง iOS Push Notification ด้วย dotAPNS

ความสามารถของแอปพลิเคชันในปัจจุบันที่จะขาดไม่ได้เลย อย่าง Push Notification นั้น สำหรับนักพัฒนาชาว .Net แน่นอนครับว่ามี Library มากมายให้เลือกใช้ ในบทความนี้ผมจะเล่าวิธีการหนึ่ง ที่ได้เลือกใช้เพื่อตอบโจทย์การเชื่อมต่อแอปพลิเคชันกับหลายๆฐานข้อมูล การที่เราจะไป Deploy ตัวส่ง (Sender) ไว้ทุกๆ Server นั้นในด้าน Compatibility, Configuration, Maintain นั้นมีปัญหาแน่นอน เพราะข้อกำหนดของ Apple นั้นมีหลายอย่างพอสมควร ก่อนที่ตัวส่งของเรา จะได้รับอนุญาตุให้ส่งข้อความไปหาผู้ใช้ได้ ดังนั้นการติดตั้ง Sender ในแบบ Web API ไว้เพียงที่เดียว แล้วให้ทุก Client ที่ต้องการส่งมาเรียกใช้งาน จึงเป็นการลดปัญหาข้างต้นได้ สิ่งที่จะต้องมี 1.KeyID, BundleID, TeamID ทั้งสามค่านี้สามารถดูได้จาก appstoreconnect ในรายละเอียดของแอปพลิเคชัน 2.Push Notification Certification (.p8) ในบทความนี้จะใช้วิธีการส่งแบบ Token Based ซึ่งมีความยืดหยุ่นและบำรุงรักษาได้ง่ายกว่า แบบ Certification Based แต่อย่างไรก็ตามยังคงต้องมี Certificate สำหรับการยืนยันตัวตนประกอบการสร้าง Token อยู่ดี ซึ่งสามารถเข้าไปสร้างได้ที่ developer.apple.com > Account > Key เลือกสร้างแบบApple Push Notifications service (APNs) 3. Web Server ที่สามารถเชื่อมต่อด้วย HTTPS, HTTP/2 ได้ สร้างโปรเจค Web API ในบทความนี้ใช้ Visual Studio 2019 Version 16.8.0 1.ไปที่ File > New > Project เลือกเทมเพลต ASP.NET Web Application (.Net Framework) กดปุ่ม Create 2.เลือกรูปแบบโปรเจคเป็นแบบ Web API กดปุ่ม Create 3.เมื่อสร้างโปรเจคสำเร็จจะได้ไฟล์ต่างๆดังรูป (Main.aspx, MainController.cs สร้างเองภายหลัง สามารถตั้งชื่ออื่นๆได้) 4.ทำการเพิ่ม Library dotAPNS ด้วย Nuget Manager โดยการคลิกขวาที่โปรเจค เลือกเมนู Manage Nuget Packages ค้นหาด้วยคำว่า dotAPNS จากนั้นกดปุ่ม Install 5. ในไฟล์ MainController.cs ทำการ using dotAPNS มาใช้งาน จากนั้นสร้าง Method ชื่อ SendPush (ไม่จำเป็นต้องชื่อนี้) โดยโค้ดการสร้าง Token และส่ง Push Notification ทั้งหมดมีดังนี้ จากโค้ดด้านบน สามารถทราบว่าส่วนไหนทำหน้าที่อะไรได้จาก Comment ครับ เพียงเท่านี้ก็สามารถ Publish และ Deploy Web API บน Server เพื่อทดสอบการใช้งานได้แล้ว อย่างไรก็แล้วแต่ Web API ดังกล่าวยังต้องการ การปรับแต่งให้เหมาะสมกับระบบของนักพัฒนาแต่ละท่าน แต่โดยขั้นตอนหลักๆก็มีเพียงเท่านี้ครับ 6.หน้าฟอร์ม และตัวอย่างโค้ดเรียกใช้งาน (อยู่ในหน้า Main.aspx,Main.aspx.cs เพื่อใช้ทดสอบการส่ง) สังเกตุว่าในส่วนของการส่งจาก Client อื่นๆผ่าน Web API นั้นต้องการเพียงแค่ HttpWebRequest, Newtonsoft.Json เท่านั้นทำให้มีขนาดเล็ก และลดปัญหาความเข้ากันได้ในการติดตั้ง Client ไปได้อย่างแน่นอนครับ ขั้นตอนที่มีความสำคัญแต่ยังไม่ได้กล่าวถึงในบทความนี้นั้นคือการขอ Token ระบุเครื่องเป้าหมายจากผู้ใช้ที่ติดตั้งแอปพลิเคชันของเราครับ เนื่องจากวิธีการจะจำเพาะกับเครื่องมือที่ใช้ในการพัฒนาแอปพลิเคชัน

Read More »