Day: July 12, 2018

  • ปัญหาการ Debug บางคำสั่งใน .NET Web Project (VS.NET 2013)

    ในการพัฒนา web application ด้วย Visual Studio.NET 2013 ผู้พัฒนาบางท่าน อาจจะเคยเจอปัญหาเมื่อ debug ไปถึงบางคำสั่งแล้ว คำสั่งไม่ทำงานตามที่ควรจะเป็น หรือบางครั้งก็ไม่มีการ return ค่าออกมา ทั้ง ๆ ที่ค่าของข้อมูลถูกต้อง ซึ่งหากเจอปัญหานี้แล้ว ให้ลองสังเกตดังต่อไปนี้

    1. เครื่องที่ใช้พัฒนาเป็น Windows 32 bit หรือ 64 bit
    2. ตรวจสอบแน่ใจแล้วว่าใช้งานคำสั่งได้ถูกต้อง และข้อมูลที่คำสั่งนี้นำไปประมวลผลมีความถูกต้องแล้ว

    ถ้าเครื่องที่ใช้เป็น Windows 64 bit ให้ทดลองทำตามดังนี้ คือ

    1. ไปที่เมนู TOOLS –> Options
    2. จะปรากฏหน้าต่าง Options
    3. เมนูด้านซ้ายมือของหน้าต่าง Options เลือกเมนูย่อย Projects and Solutions และภายใต้เมนูนี้ เลือกเมนูย่อย Web Projects จะเห็นตัวเลือกด้านขวามือสองตัวเลือก ให้เลือกเครื่องหมายถูกตัวเลือกแรก คือ Use the 64 version…
    4. คลิกปุ่ OK และทดลอง run project และ debug คำสั่งที่พบปัญหาอีกครั้ง

     

    ตัวอย่างคำสั่งที่พบปัญหา

    สำหรับตัวอย่างคำสั่งที่เคยพบปัญหาเมื่อทำการ debug คือ คำสั่งที่ใช้ในการอ่านข้อมูลจาก registry

    Registry.LocalMachine.OpenSubKey

    โดยคำสั่งนี้จะอ่านข้อมูลจาก registry ตาม key ที่ระบุ  โดยรายละเอียดปัญหาที่พบคือ มีข้อมูลใน registry ตาม key ที่ระบุจริง แต่ตอน debug กลับ return ค่าว่างกลับมา  ซึ่งหากไปใช้ใน projects ที่เป็น Windows และทำการ debug คำสั่งนี้จะ return ข้อมูลออกมาได้ถูกต้อง

  • การเรียกใช้งาน constructor จากอีก constructor ใน C#.NET

    constructor คืออะไร

    constructor ก็คือ ฟังก์ชันที่ถูกเรียกใช้งาน เมื่อ object ถูกสร้างขึ้นมา ซึ่งใน C#.NET  ก็คือฟังก์ชันที่ตั้งชื่อเป็นชื่อเดียวกับชื่อ class นั่นเอง

     

    constructor มีประโยชน์อย่างไร

    ในการสร้าง object ขึ้นมา บางครั้งต้องมีการระบุค่าเริ่มต้นบางอย่างให้กับ object นั้น ซึ่ง constructor ก็จะเป็นเครื่องมือหนึ่งที่เป็นตัวช่วยบังคับให้ต้องระบุค่าเริ่มต้นนี้ตอนสร้าง object นั่นเอง

     

    ยกตัวอย่าง เช่น

    class Student

    {

    public Student(string studentID)

    {

    คำสั่งดึงข้อมูลนักศึกษาด้วย Student ID โดยใช้ข้อมูล Student ID จาก argument studentID

    }

    }

    จากตัวอย่างนี้ ต้องการสร้าง object Student โดยใช้ Student ID เพื่อไปดึงข้อมูลเบื้องต้นของนักศึกษามาแสดง

    ดังนั้น object ใหม่ที่สร้างจาก class Student ก็จะต้องระบุค่า Student ID ให้กับ argument studentID ก่อน

    ตัวอย่างการเรียกใช้งานคือ

    Student student = new Student(12345);

    student ก็คือ object ที่ถูกสร้าง

    123456 คือ ข้อมูล Student ID ทีต้องระบุตอนที่ object นี้ถูกสร้างนั่นเอง

     

    ทำไมต้องเรียกใช้ constructor จากอีก constructor หนึ่ง

    ในบางครั้งเมื่อเราใช้งาน class ไประยะเวลาหนึ่ง อาจะเจอกรณีที่ constructor เดิม ยังไม่รองรับความต้องการที่เปลี่ยนไปหรือเพิ่มขึ้น   แต่ความต้องการใหม่นั้นยังคงต้องใช้ชุดคำสั่งและขั้นตอนการทำงานเหมือนกับที่มีอยู่เดิมด้วย และมีการเพิ่มเติมชุดคำสั่งใหม่เข้าไปเล็กน้อยเพื่อให้รองรับกับความต้องการใหม่ด้วย ซึ่งทางเลือกที่เป็นไปได้คือ

    1. ปรับแก้ constructor เดิมที่มีอยู่ให้รองรับความต้องการใหม่
    2. สร้าง constructor ใหม่ โดยทำการสำเนาชุดคำสั่งทั้งหมดใน constructor เดิมมา
    3. สร้าง constructor ใหม่ โดยเรียกใช้งาน constructor เดิม

    มาพิจารณาแต่ละทางเลือก

    ทางเลือกที่ 1 เป็นการปรับแก้ของเดิมที่มีอยู่แล้ว ซึ่งเป็นทางที่ควรเลี่ยงที่สุด เพราะอาจจะไปกระทบกับการทำงานเดิมที่ถูกต้องอยู่แล้ว และอาจจะกระทบเป็นลูกโซ่กับ object อื่นที่มาเรียกใช้

    ทางเลือกที่ 2 สำเนาคำสั่งทั้งหมดจาก constructor เดิม มาใส่ใน constructor ใหม่ แล้วเขียนคำสั่งเพิ่มเพื่อให้รองรับความต้องการใหม่ ซึ่งทางเลือกนี้ถือว่าดีกว่าทางเลือกแรก เพราะไม่กระทบกับการทำงานเดิมแน่นอน แต่จะเห็นว่าเกิดความซ้ำซ้อนกันของชุดคำสั่งของ constructor เดิม และใหม่ และจะพบปัญหาในกรณีที่มีความจำเป็นต้องปรับปรุงคำสั่งที่ใช้อยู่ใน constructor ทั้งสอง ผู้พัฒนาก็จะต้องมาแก้ทั้งสองที่ให้เหมือนกันอีก ซึ่งจะเป็นการเสียเวลา

    ทางเลือกที่ 3 เรียกใช้งาน constructor เดิม ซึ่งจะเห็นว่าเป็นวิธีการที่สะดวกรวดเร็วที่สุด หากต้องการปรับปรุงคำสั่ง ก็เพียงไปจัดการที่ constructor เดิมเท่านั้น

     

    วิธีการเรียกใช้งาน constructor เดิม จาก constructor ใหม่

    syntax ที่ใช้ใน C#.NET คือ  หลังจากส่วนประกาศ constructor ให้ใช้  : this() เพิ่มเข้าไป

    ยกตัวอย่าง

     

    class Student

    {

    public Student(string studentID) //constructor เดิม

    {

    คำสั่งดึงข้อมูลนักศึกษาด้วย Student ID โดยใช้ข้อมูล Student ID จาก argument studentID

    }

     

    public Student(string studentID, string citizenID) : this(studentID)  //constructor ใหม่

    {

    คำสั่งใหม่ที่เพิ่มเติม

    }

    }

  • การยกเลิก SMS ไม่พึงประสงค์/ SMS กวนใจ

    เชื่อว่าหลายท่านคงเคยประสบกับปัญหากวนใจเรื่อง SMS ไม่พึงประสงค์ ที่ส่งมาโดยที่เราไม่ต้องการ และบางครั้ง SMS เหล่านี้ก็ยังคิดค่าบริการ ทั้ง ๆ ที่เราไม่ได้สมัคร หรือบางครั้งอาจจะสมัครโดยไม่ตั้งใจหรือไม่รู้ตัว ดังนั้นในบทความนี้จะเสนอวิธีการหนึ่ง ที่จะช่วยให้เราสามารถยกเลิก SMS กวนใจเหล่านี้ออกไปบางส่วนได้ ถึงแม้จะไม่ทั้งหมด แต่ก็ช่วยบรรเทาความรำคาญลงไปได้บ้าง  โดยช่องทางที่จะแนะนำนี้เป็นการร่วมมือกันระหว่าง กสทช. และผู้ให้บริการเครือข่ายโทรศัพท์เคลื่อนที่ในการให้บริการยกเลิก SMS ดังกล่าว ซึ่งผู้ใช้บริการสามารถทำได้ด้วยตนเอง โดยไม่มีค่าใช้จ่าย ดังนี้

    1. กด *137 แล้วโทรออก
    2. ทำตามคำแนะนำจากเสียงตอบรับอัตโนมัติของแต่ละผู้ให้บริการเครือข่ายฯ
    3. รอรับ SMS แจ้งยกเลิก

     

    ตัวอย่าง SMS ไม่พึงประสงค์ และ SMS ตอบกลับ

     

    จะเห็นว่าหลังจากที่ใช้บริการยกเลิก SMS ผ่าน *137 แล้ว บรรดา SMS ไม่พึงประสงค์ก็ลดน้อยลง เหลือเพียง SMS ข่าวสารจากผู้ให้บริการเครือข่ายฯ เท่านั้น   และก็เป็นวิธีการที่ง่ายและรวดเร็ว เพียงไม่กี่ขั้นตอน แค่นี้ก็สามารถยกเลิก SMS กวนใจออกไปได้บางส่วนแล้ว

     

    สิ่งที่ควรรู้

    ถึงแม้ว่าเราจะได้ทำการยกเลิก SMS ไม่พึงประสงค์ดังกล่าวไปแล้ว แต่ก็อาจจะมี SMS ไม่พึงประสงค์ใหม่ ๆ เข้ามาได้อีก ทั้งนี้เพราะการใช้วิธีนี้ คือการยกเลิก SMS ปัจจุบันหรือ SMS ที่ถูกสมัครไปแล้ว ไม่ได้เป็นการป้องกัน SMS ใหม่ ๆ ที่จะเกิดขึ้นในอนาคต (เช่น อาจจะเผลอไปสมัครรับ SMS โดยไม่รู้ตัวอีก)  อย่างไรก็ตาม ถ้าเกิดปัญหานี้ซ้ำอีก ก็สามารถใช้การโทรไปยัง *137 เพื่อยกเลิก SMS ได้เป็นระยะ ๆ

     

    สำหรับรายละเอียดเพิ่มเติมว่า SMS เหล่านี้มาได้อย่างไร หรือมี SMS ประเภทไหนที่สามารถยกเลิกได้ด้วย *137 บ้าง และเราจะระมัดระวังอย่างไร ไม่ให้เผลอไปสมัครบริการ SMS เหล่านี้โดยไม่ตั้งใจ สามารถศึกษาเพิ่มเติมได้จาก   http://tcp.nbtc.go.th/website/home/detail/631/th

     

    ขอขอบคุณที่มาของเนื้อหาจากสำนักรับเรื่องร้องเรียนและคุ้มครองผู้บริโภคในกิจการโทรคมนาคม สำนักงานคณะกรรมการกิจการกระจายเสียง กิจการโทรทัศน์ และกิจการโทรคมนาคมแห่งชาติ

     

    แนะนำการยกเลิก SMS ไม่พึงประสงค์เพิ่มเติม สำหรับผู้ใช้งาน AIS

    นอกจากการยกเลิกบริการ SMS ไม่พึงประสงค์ผ่านทาง *137 แล้ว ผู้ให้บริการเครือข่ายฯ AIS ยังมีบริการให้ลูกค้าสามารถยกเลิก SMS เหล่านี้ได้ด้วยตนเองผ่านทางเว็บด้วย โดยทำตามขั้นตอนดังนี้

    1. เข้าไปที่  URL https://myais.ais.co.th
    2. เมื่อเข้ามาแล้วจะมีหน้าจอให้ login เข้าใช้งานระบบโดยการกรอกเบอร์โทรศัพท์มือถือ และรอรับ OTP เพื่อใช้ในการเข้าใช้งานระบบแต่ละครั้ง หรือจะใช้วิธีการสร้างบัญชีผู้ใช้และรหัสผ่านใหม่สำหรับการเข้าใช้งานครั้งต่อ ๆ ไปก็ได้
    3. เมื่อ login เข้าสู่ระบบแล้ว จะปรากฏเมนูด้านขวามือสำหรับการจัดการต่าง ๆ
    4. เลือกเมนู บริการ จะเห็นว่าว่ามีเมนู เลือกรับ / ยกเลิก SMS  ให้เลือกเมนูนี้เพื่อเข้าไปยกเลิกบริการ SMS ที่เราไม่ต้องการ
    5. เราสามารถเลือกว่าจะรับหรือไม่รับ SMS ทั้งที่มาจาก AIS และไม่ได้มาจาก SMS ได้ตามต้องการ