Month: July 2016

  • การ upgrade PHP to new version on IIS ด้วยวิธีง่ายๆ

    เคยเขียนบทความเกี่ยวกับการ upgrade PHP 5.2 to 5.3 ไปเมื่อปีที่แล้ว (Apache 2.2 + PHP 5.2 + phpMyAdmin on Windows 8.1)

    วันนี้ขอนำเสนอการ upgrade เวอร์ชั่นของ PHP บน IIS (Windows Server 2012 R2) ด้วยวิธีที่แสนจะง่ายดาย

    ***ใครทราบวิธีการแล้วก็ผ่านไปเลยนะคับ ^^ เขียนไว้เผื่อบางท่านที่ยังไม่รู้เนอะ

    ขั้นตอนการ upgrade

    1. check PHP เวอร์ชั่นที่เราใช้ปัจจุบันก่อนว่าเป็นเวอร์ชั่นอะไร ด้วยการสร้างไฟล์ phpinfo.php เก็บไว้ที่ web root แล้วเขียนโค้ดตามนี้

    <?php
    phpinfo();
    ?>

    2. เปิดเว็บ http://localhost/phpinfo.php ในภาพจะเป็น php 5.6.2.2

    001

    3. เปิด IIS manager ขึ้นมา แล้วคลิกที่ Web Platform Installer

    002

    4. พิมพ์คำค้น PHP ในช่องค้นหา ในรูปเราจะติดตั้ง PHP 7.0.7 ให้คลิกที่ปุ่ม Add จากนั้นระบบจะทำการติดตั้ง PHP 7.0.7

    003

    5. เมื่อติดตั้งเสร็จแล้ว ให้คลิก Restart IIS

    004

    6. ตรวจสอบเวอร์ชั่นของ PHP ด้วยการเปิดหน้าเว็บ http://localhost/phpinfo.php ในภาพจะเป็น php 7.0.7 เรียบร้อยแล้ว

    005

    7. เสร็จสิ้นกระบวนการ upgrade PHP to new version

  • วิธีตรวจสอบเว็บไซต์ที่โดน Hack #17

    ปัจจุบันพบว่า รูปแบบของ Backdoor เปลี่ยนไป จากเดิมเป็น Base64 ซึ่งสามารถตรวจจับได้จาก Pattern ของ eval และ base64_decode ไปเป็น การใช้ eval ร่วมกับการใช้เทคนิคที่เรียกว่า Obfuscate หรือ การทำให้ PHP Code ปรกติ แปลงไปเป็นรูปแบบที่ซับซ้อนยิ่งขึ้น ทำให้การตรวจสอบด้วยเทคนิคเดิมไม่เจอ

    จาก วิธีตรวจสอบเว็บไซต์ที่โดน Hack #2 แสดงให้เห็นรูปแบบเดิม ดังภาพ

    sample1

    sample2

    sample3

    จะเปลี่ยนมาเป็นแบบนี้

    2559-07-29 14_29_00-

    ดังนั้น อาจจะต้องปรับเปลี่ยนคำสั่งในการค้นหาเป็น


    find /var/www -name "*.php" -user www-data -type f | xargs grep GLOBAL

    แต่ก็พบว่า มีการซ่อน base64_decode ในรูปแบบนี้ก็มี

    2559-07-29 15_11_32-_new 5 - Notepad++ [Administrator]

    ถึงแม้จะเลี่ยงการใช้ base64_decode ตรงๆแต่ก็ยังต้องใช้ eval อยู่ดี ดังนั้น จึงต้องใช้คำสั่งต่อไปนี้ในการค้นหา


    find /var/www -name "*.php" -user www-data -type f | xargs grep eval > eval.txt

    ซึ่งอาจจะได้ไฟล์มาจำนวนมาก ทั้งทีใช่และไม่ใช่ Backdoor เก็บไว้ในไฟล์ eval.txt ดังภาพ

    2559-07-29 15_21_31-_new 6 - Notepad++ [Administrator]

    จึงต้องใช้วิธี แก้ไขไฟล์ eval.txt ดังกล่าว โดยลบบรรทัดที่ไม่ใช่ Backdoor ออก ให้เหลือแต่บรรทัดที่น่าสงสัยว่าจะเป็น Backdoor ไว้ แล้ว Save จากนั้นใช้คำสั่งต่อไปนี้เพื่อเก็บไฟล์ทั้งหมดไว้ก่อน ในไฟล์ suspect.tar.gz


    cut -d: -f1 eval.txt | xargs tar -zcvf suspect.tar.gz

    จากนั้น ทำ List ของไฟล์ที่ต้องเข้าตรวจสอบจริงๆ เก็บในไฟล์ชื่อ eval2.txt ด้วยคำสั่ง


    cut -d: -f1 eval.txt > eval2.txt

    แล้วจึงแก้ไขไฟล์ หรือ ลบทิ้งต่อไป

  • สร้าง Form ลงทะเบียนออนไลน์ด้วย Google Form (รูปแบบใหม่) ให้ตอบรับผ่านทางอีเมลโดยอัตโนมัติ พร้อมปิด Form อัตโนมัติเมื่อครบเต็มจำนวน

    จากที่ผมเคยได้เขียนวิธีการสร้างแบบฟอร์มลงทะเบียนออนไลน์ด้วย Google Form ให้ตอบรับผ่านทางอีเมลโดยอัตโนมัติ มาวันนี้ ทาง Google ได้เปลี่ยนรูปแบบการสร้าง Form ใหม่ทั้งหมด จึงทำให้วิธีการสร้างแบบฟอร์มออนไลน์แบบเก่านั้นใช้ไม่ได้อีกแล้ว

    ดังนั้นเรามาดูวิธีการสร้าง Google Form แบบใหม่กันดีกว่าว่าเป็นอย่างไร ซึ่งต้องขอบอกว่า “มันง่ายมากๆ”


    1. คลิก Google Forms  เพื่อสร้างแบบฟอร์มลงทะเบียนออนไลน์

    Screen Shot 2559-07-23 at 3.34.20 PM
    Screen Shot 2559-07-23 at 3.38.37 PM

    2. ใส่รายละเอียด ข้อมูล รูปแบบ ในแบบลงทะเบียนตามที่ต้องการ
    (รูปแบบใหม่สามารถใส่ภาพที่เราออกแบบไว้ได้แล้วนะครับ โปสเตอร์ แบนเนอร์ ต่างๆ)

    Screen Shot 2559-07-23 at 3.43.21 PM

    + เราสามารถแบ่ง Form ของเราออกแบบเป็นหลายๆ section ได้นะครับ กรณีที่มีข้อมูลให้ต้องกรอกจำนวนมาก

    Screen Shot 2559-07-23 at 3.44.34 PM

    3. ติดตั้ง Add ons…

    Add ons ที่ผมจะติดตั้งนั้น มีด้วยกัน 2 อย่าง ดังนี้

    A. Form Confirmation Emails  คือ ระบบตอบรับการลงทะเบียนผ่านทางอีเมลอัตโนมัติ เมื่อผู้ใช้ลงทะเบียนผ่านฟอร์มเรียบร้อยแล้ว ระบบจะส่งเมลตามที่เราตั้งค่าไว้ไปให้ทางอีเมลที่ระบุไว้

    B. FormLimiter  คือ การปิดแบบฟอร์มลงทะเบียนอัตโนมัติ เมื่อมีผู้ใช้ลงทะเบียนครบตามจำนวนที่กำหนดไว้

    Screen Shot 2559-07-23 at 2.52.19 PM
    Screen Shot 2559-07-23 at 2.54.35 PM
    Screen Shot 2559-07-23 at 2.55.28 PM
    Screen Shot 2559-07-23 at 2.56.03 PM
    Screen Shot 2559-07-23 at 2.56.23 PM

    เมื่อติดตั้งเสร็จเรียบร้อยจะมี icons เพิ่มขึ้นมา ดังภาพ

    Screen Shot 2559-07-23 at 2.59.47 PM

    4. กำหนดรูปแบบการส่งเมลตอบรับอัตโนมัติ

    แบบฟอร์มตัวอย่างที่นำเสนอนั้น มีช่องให้ใส่ข้อมูล 3 อย่าง ดังภาพ

    (แนะนำให้ตั้งชื่อ Field ให้เป็นภาษาอังกฤษครับผม)

    Screen Shot 2559-07-23 at 4.20.18 PM

    เริ่มต้นตั้งค่า
    คลิกเลือก Form Confirmation Emails > Configure confirmations

    Screen Shot 2559-07-23 at 3.01.38 PM
    จากนั้นจะมีกล่องขึ้นมาให้มุมล่างขวา เพื่อให้กำหนดค่าต่างๆ

    Collage_Fotor

    คลิกเลือก Send Confirmations  กำหนดชื่อผู้ส่ง และรูปแบบการส่งเป็น E-mail <คลิก Continue>

    Email subject กำหนดชื่อหัวข้อของเมลที่ต้องการส่ง

    Email body เป็นการกำหนดรูปแบบของข้อมูลที่จะส่งไป ซึ่งจะอยู่ในรูปแบบของ HTML
    (สามารถดูตัวอย่างจาก Code ด้างล่าง) ถ้าใครมีรูปแบบอื่นก็สามารถทำได้ครับ ผมทำแบบง่ายๆ

    เมื่อกำหนดรูปแบบเสร็จเรียบร้อยแล้ว กดปุ่ม Save เป็นอันเสร็จสิ้น

    <html>
      <head>
      <meta charset="UTF-8">
      <title>TELL ME MORE PSU</title>
      </head>
     <body>
      <p>เรียนคุณ: ${"Name-Surname"}</p>
      <p> <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ตามที่ท่านได้สมัครเข้าร่วมอบรม หลักสูตร TOEIC (เตรียมความพร้อมการสอบ)<br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0004"><strong>กลุ่มที่ 2  หลักสูตร TOEIC นักศึกษาระดับปริญญาตรี และระดับบัณฑิตศึกษา<br>
      </strong></span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ณ ห้องอบรม 1 ชั้น 8  อาคารศูนย์ทรัพยากรการเรียนรู้ (LRC1)</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0004"><strong>เริ่มเรียน : 13 กรกฎาคม - 4 สิงหาคม 2559 (เวลา 13.30 - 15.30 น.)</strong></span><br><br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0099FF">เพื่อเป็นการยืนยันสิทธิ์เข้ารับการอบรม<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;กรุณาตอบกลับผ่านทาง E-mail :</span> tmmpsu@gmail.com</a> ด้วยค่ะ<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ภายในวันที่ 11 กรกฎาคม 2559 หรือจนกว่าครบตามจำนวนที่กำหนด) รับจำนวน 25 คนเท่านั้น <br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong style="color: #FF0004">ขอสงวนสิทธิ์ให้กับผู้ที่ได้ยืนยันสิทธิ์ในการเข้าอบรมผ่านทางอีเมลก่อน</strong><br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0004"><strong>ติดตามการประกาศรายชื่อผู้มีสิทธิ์เข้าร่วมอบรมโครงการอีกครั้งได้ที่: </strong></span><a href="http://clpd.psu.ac.th/" target="_blank">http://clpd.psu.ac.th/</a><br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;หากมีข้อสงสัยใดๆ สามารถสอบถามเพิ่มเติมได้ที่ หมายเลขโทรศัพท์ 0-7428-9207<br>
      <br>
      <br>
      ขอบคุณสำหรับการเข้าร่วมโครงการค่ะ<br>
      <br>
      ศูนย์ส่งเสริมและพัฒนาการเรียนรู้ มหาวิทยาลัยสงขลานครินทร์<br>
      โทรศัพท์ : 0-7428-9207<br>
      E-mail : <a href="mailto:clpdpsu@gmail.com" target="_blank">tmmpsu@gmail.com</a></p>
      </body>
      </html>

    ภาพตัวอย่างจากการส่งเมล

    Screen Shot 2559-07-23 at 3.26.02 PM

    จากนั้นให้ทำการทดสอบการใช้งานดูว่า มันสามารถส่งเมลได้จริงหรือไม่ด้วยนะครับ

    “ก่อนการใช้งานจริงทุกครั้ง”


    5. วิธีการปิดแบบฟอร์มออนไลน์อัตโนมัติ เมื่อครบเต็มจำนวน

    เหมาะสำหรับการลงทะเบียนจำนวนไม่มาก (ไม่เกิน 100 คน) และป้องกันการลงทะเบียนเกินจำนวนที่กำหนดไว้

    ซึ่งจริงๆ แล้วระบบอีเมลของ Google นั้นระบุเงื่อนไขในการส่งเมลออกใน 1 วันไว้ไม่เกิน 100 ฉบับ ดังนั้น ถ้ามีผู้ใช้มาลงทะเบียนผ่านแบบฟอร์มจำนวนมาก ๆ ก็จะถูกปิดระบบการส่งเมลออกไปโดยทันที่เนื่องจากเกินจำนวนที่ได้กำหนดไว้นั่นเอง

    เริ่มต้นไปที่ หน้า Google Form ของเราที่ได้สร้างไว้ คลิกแท็บ RESPONSES จากนั้นคลิกปุ่ม สีเขียว ดังภาพ

    Screen Shot 2559-07-23 at 4.46.46 PM

    แล้วทำการตั้งชื่อ Form (แนะนำว่าให้ตั้งชื่อให้เหมือนกัน แล้ววงเล็บไว้ว่า “Responses” ก็ได้ครับ)

    จากนั้นกดปุ่ม CREATE

    Screen Shot 2559-07-23 at 4.47.18 PM

    จากนั้นกำหนดชื่อคอลัมภ์ ให้เรียงลำดับตรงกันกับ Google Form ที่เราได้สร้างไว้ตอนแรก

    เพื่อที่เวลาบันทึกข้อมูลจะได้ไม่สับสน (ให้ใช้ชื่อที่เป็นภาษาอังกฤษเหมือนกันมาตั้งครับ)

    Screen Shot 2559-07-23 at 3.17.54 PM

    ภาพ Google Form

    Screen Shot 2559-07-23 at 4.20.18 PM

    ขั้นตอนต่อไป ให้สร้าง Sheet2 ขึ้นมาตรงแท็บด้านล่างครับ

    ชื่อของ Sheet อันแรก ให้กำหนดเป็น Form responses นะครับ ตามภาพ

    จากนั้นให้ใส่ Code ลงไปในช่อง A1 ดังนี้

    =COUNTUNIQUE('Form responses'!$B$2:$B$100)

    เป็นการกำหนดให้นับจำนวนในคอลัมภ์ B ของSheet Form responses
    ที่เป็นคอลัมภ์ B เพราะเป็นข้อมูล “ชื่อ-นามสกุล” ดังนั้น ถ้าลงทะเบียนซ้ำมาหลายๆ ครั้ง ก็จะนับแค่ 1 ครับ

    Screen Shot 2559-07-23 at 3.17.05 PM

    ตัวอย่างการนับจำนวน กรณีที่มีการลงทะเบียนแล้ว

    Screen Shot 2559-07-23 at 3.24.13 PM

    Screen Shot 2559-07-23 at 3.24.32 PM

    จากนั้นมากำหนดค่าใน FormLimiter ต่อครับ ในหน้าแรกของ Google Form
    คลิกเลือก FormLimiter > Set limit

    Screen Shot 2559-07-23 at 2.59.47 PM
    Screen Shot 2559-07-23 at 3.13.08 PM

    คลิกเลือก destination spreadsheet cell value

    (หัวข้อนี้จะไม่ปรากฎให้เห็นถ้าหากว่ายังไม่ได้สร้าง Sheet2 ขึ้นมาทีครับ)

    Screen Shot 2559-07-23 at 3.13.23 PM

    ให้ใส่ Sheet2!A1 ลงในช่องดังภาพ ตามcode ที่เราได้ระบบไว้เบื้องต้น

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

    จากนั้นกดปุ่ม Save and enable เป็นอันเสร็จสิ้น

    Screen Shot 2559-07-23 at 3.14.25 PM

    หมายเหตุ อย่าลืมทดสอบก่อนใช้งานจริงนะครับ

    เมื่อสร้างไฟล์ได้สักครั้งแล้ว เราสามารถ Copy ของเก่ามาแก้ไขได้นะครับ

    Screen Shot 2559-07-23 at 5.20.44 PM

    เมื่อสร้างไฟล์ทุกครั้ง จะมีด้วยกัน 2 ไฟล์ ดังภาพ

    ดังนั้นเวลา Copy ไฟล์ เพื่อสร้างแบบฟอร์มใหม่ ให้เลือก Copy เฉพาะ Google Form (สีม่วง) เท่านั้น

    แล้ว Google Sheets จะถูกสร้างขึ้นมาเองครับ

    ปล. หากมีข้อผิดพลาดประการใด ต้องขออภัยไว้ด้วยครับ และสามารถแจ้งเพื่อแก้ไขได้นะครับ

  • Technical Talk หัวข้อ Open Source: Smart Computer Lab

    smartcomputerlab-wunca33 ได้ไปร่วมงาน WUNCA ครั้งที่ 33 ที่จัดที่จุฬาลงกรณ์มหาวิทยาลัยเมื่อ 13-15 กรกฎาคม 2559 และได้บรรยายในส่วน Technical Talk หัวข้อ Open Source: Smart Computer Lab จึงอยากนำมาเล่าสู่เพื่อน ๆ ฟัง เผื่อว่าเพื่อน ๆ จะช่วยแนะนำบอกต่อว่า มีระบบจัดการห้องบริการคอมพิวเตอร์ที่ดีน่าใช้ชื่อ PSU12-Sritrang Server

    IMG_0131

    เอกสารประกอบการบรรยาย

    [pdf-embedder url=”https://sysadmin.psu.ac.th/wp-content/uploads/2016/07/open-source-smart-computer-lab.pdf”]

     

    Link to Youtube video

    • วิดีโอชุดแนะนำ Open Source: Smart Computer Lab
      Short URL: https://goo.gl/1ly7c1
    • วิดีโอชุดแนะนำการติดตั้งและใช้งาน Server สำหรับทำ Cloning PC และ Control PC
      Short URL: https://goo.gl/SLheTL

     

    แผ่นพับแนะนำ PSU12-Sritrang Server สำหรับห้องบริการคอมพิวเตอร์ เพื่อบอกว่าระบบนี้ทำอะไรได้บ้าง คลิกเปิดอ่านแผ่นพับ

     

    หวังว่าคงจะได้รับข่าวดีนะครับ ขอบคุณครับ

     

  • วิธีการตรวจสอบราคาเครื่องที่ให้บริการบนระบบ Public Cloud

    “จะมีวิธีคิดราคา Public Cloud แต่ละเจ้าได้อย่างไรว่าต้องจ่ายเท่าไหร่ต่อเดือน”

    ในปกติแล้ว Cloud แต่ละเจ้าจะมีให้ทดสอบเลือกเครื่อง spec ที่ต้องการและคิดค่าใช้จ่ายคร่าว ๆ ซึ่งตัวเครื่องโดยมากคิดเป็นรายเดือน แต่ส่วนที่คิดตามการใช้งานจริงจะเป็น IOP ของการใช้งาน Storage และการส่งข้อมูลออก หรืออาจจะเป็นจำนวน Traffic สำหรับให้บริการ (นำเข้าข้อมูลไม่เสียตังค์) โดยขอสรุปเป็นบทความดังนี่้ครับ
    Target : ต้องใช้เครื่องประมาณ CPU 4 Core, RAM 4-8GB, HDD 100GB รัน Windows Server เพื่อรันระบบที่เขียนด้วย .NET Framework

    • ราคา ณ วันที่ 19 มิถุนายน 2559

    AWS Pricing Calculator
    https://calculator.s3.amazonaws.com/index.html

    price1 price2 price3
    จะเห็นว่าใช้เงินประมาณ $193.98 ต่อเดือน คิดเป็นเงิน 6799.75 บาทต่อเดือน ซึ่งจากการประเมินราคาใน Private Cloud ปัจจุบันที่มหาลัยให้บริการจะคิดที่ 3200 บาทต่อเดือน (4 CPU,8 GB,SAS 100G (Multi-Site Raid 5-Network RAID 1 ราคานี้ไม่รวมค่า OS) แต่ทางมหาวิทยาลัยยังไม่มีบริการ Storage ที่เป็น SSD ซึ่งถ้าเอาตามการใช้งานจริงที่ไม่ใช่ Database Server, File Server ยังไม่จะเป็นต้องใช้ถึง SSD แต่ในปัจจุบันราคา SSD ของ Server ก็ลดลงมาเยอะมาก โดยที่การจัดซื้ออนาคตคงจะเปลี่ยนเป็น ซื้อ SSD สำหรับทำ Private Cloud แทน ซึ่งราคานี้ยังไม่รวม EBS ที่ไว้สำหรับทำ Snapshot สำรองข้อมูล, Data Transfer ซึ่งดูแล้วที่จะขึ้นได้ในตอนนี้น่าจะมีแค่ Web Server ที่เป็นพวก CMS เพราะการโอนข้อมูลขึ้นลงไม่มากนัก (ยกเว้นที่เว็บที่เน้นการใช้งาน CMS Document Sharing ที่ใช้งานหนัก ๆ อาจจะไม่เหมาะ เพราะใช้ Traffic ขาออกเยอะจากการดาวน์โหลด)

    Azure Pricing Calculator
    https://azure.microsoft.com/en-us/pricing/calculator/
    price4 price5

    จะเห็นได้ว่าราคาใกล้เคียงกับ AWS แต่ได้เนื้อที่น้อยกว่า
    price6 price7
    ถ้าเพิ่ม Storage อีก 16G จะต้องเพิ่มเงินอีก $1..28 ต่อเดือน รวมเป็น $191.74

    Google Cloud Platform Pricing Calculator
    https://cloud.google.com/products/calculator/

    price8 price9 price10 price11
    จะเห็นได้ว่าถูกที่สุดแล้วเมื่อเทียบกับอีก 2 เจ้า

    Digital Ocean Pricing Calculator
    https://www.digitalocean.com/pricing/

    price12 price13

    ขอยกมาอีกเจ้าที่ใช้งานกันเยอะเนื่องจากราคาถูกจะเห็นว่าถูกที่สุด แต่สำหรับเจ้านี้จะไม่มี Windows ให้ใช้งาน

    สรุปค่าใช้จ่าย

    price14
    จากที่เขียนไว้ข้างต้นยังไม่สามารถสรุปได้ว่าเจ้าไหนดีกว่า เพราะมีปัจจัยอีกเยอะที่ไม่ได้ยกมาเช่น Data Transfer, ราคา Discount ซึ่งเหมือน Google จะมีส่วนลดสำหรับเครื่องที่สอง, Downtime, Speed จึงยกมาเป็นตัวอย่างวิธีพิจารณาคร่าว ๆ ส่วนถ้าซื้อจริงก็คงต้องเตรียมแผนให้สามารถย้ายได้ด้วยในกรณีที่ Cloud ที่ใช้อยู่บริการได้ไม่ตรงกับความต้องการ

  • SSIS (Integration service) ตอนที่ 1 พื้นฐาน SSIS และ ETL

    SSIS (Integration service) เป็น Business Intelligent Tools ของ Microsoft ที่ออกมาเพื่อใช้งานในการจัดการข้อมูลในรูปแบบ ETL

    ซึ่ง ETL คืออะไร
    E – Extract การนำข้อมูลออกมาจาก Source database ซึ่งมาจากแหล่งเดียวหรือหลายแหล่ง
    T – Transform การแก้ไขและเปลี่ยนแปลงข้อมูลให้เหมาะสมที่จะในไปใช้งานต่อไป
    L – Load การเอาข้อมูลไปเก็บที่ปลายทาง (destination) แหล่งเดียวหรือแยกเป็นหลายๆแหล่ง

    โดย Business Intelligent Tools ของ Microsoft นั้นประกอบด้วย 3 ตัวได้แก่

    SSIS2

    Integration service :: เป็น ETL Tool
    Analysis service :: เป็น Tool ที่ใช้วิเคราะห์ข้อมูล ใช้ทำ Data warehouse
    Reporting service :: เป็น Tool ที่ใช้ในการสร้างรายงาน

     

    ก่อนที่จะมี Tools ที่ใช้ทำ ETL (ซึ่งมีหลายตัว หลายค่าย ทั้งฟรีและไม่ฟรี)
    เราต้องลำบากในการจัดการข้อมูลดังรูป

    unSSIS

    ที่มาของภาพ
    คือต้องจัดการข้อมูลจาก Source ต่างๆลงใน Database แยกเป็นแต่ละ Source กันไปแล้วค่อยมาทำการ Cleaning data ที่หลังแล้วค่อยไปรวมฐานข้อมูลอีกครั้งจึงจะเอาข้อมูลไปใช้งานได้ ซึ่งจะทำให้การทำงานค่อนข้างยุ่งยากและซับซ้อนและต้องทำซ้ำๆหลายๆครั้ง

     

    SSIS ทำงานอย่างไร

    SSIS1

    ที่มาของภาพ

    เตรียมข้อมูลให้พร้อมที่จะ load เข้าไปเก็บในฐานข้อมูล มี audit data เพื่อทำให้ตรวจสอบได้ว่าข้อมูลที่ได้มาได้มากจากไหน เมื่อไร process ไหนเป็นผู้จัดการข้อมูล สามารถทำ data cleaning ได้ก่อนที่จะนำข้อมูลเข้าสู่ฐานข้อมูล สามารถใช้ได้กับข้อมูลที่ใหญ่และซับซ้อนได้เป็นอย่างดี

    SSIS ประกอบด้วย

    • Package ไฟล์ของ SSIS นามสกุล *.dtsx
    • Control flow คือ Workflow engine สำหรับจัดการ tasks และ Containers ที่สั่ง Execute

     

    Control Flow

    • เป็น Workflow engine โดยมี Objects ใน Control Flow ดังนี้
      -Control flow tasks คือ การเนินการของ Workflow Object
      -Control flow Containers เป็น Grouping tasks กับ Tasks หรือ Containers อื่นๆ
      -Precedence constraints ให้ติดต่อ Tasks และ Containers และ กำหนดลำดับการ execute และ Precedence

    สำหรับจัดการ tasks และ Containers ที่สั่ง Execute

     

    Data flow

    • ควบคุมการการประมวลผลข้อมูลต่างๆ
    • Transform data จากแหล่งข้อมูล (Sources) ไปยัง ปลายทางข้อมูล (Destinations)

    Data flow task ยอดนิยมมีดังนี้

    1. Aggregate
    2. Conditional Split
    3. Data Conversion
    4. Derived Column
    5. Lookup
    6. Merge
    7. Merge Join
    8. Multicast
    9. Sort
    10. Union All

    ไว้จะลงรายละเอียดในแต่ละ task กันในตอนต่อๆไปนะครับ สำหรับตอนที่ 1 นี้ก็ขอจบไว้เท่านี้ก่อนครับ

     

     

  • Information graphics การใช้ภาพหรือแผ่นภูมิแทนข้อมูลที่จะนำเสนอ

    Information graphics หรือ Infographics เป็นการนำเสนอข้อมูล หรือความรู้ต่างๆโดยการสื่อสารด้วยภาพกราฟิก ซึ่งจะทำให้ผู้รับสื่อเข้าใจและมีความชัดเจนมากขึ้น    ความสามารถในการรับรู้ข้อมูลของมนุษย์ ภาพกราฟิกต่างๆจะดึงดูดความสนใจและความจำได้ดีกว่าข้อความยาวๆหรือต้องอ่านข้อมูล ที่เห็นได้จัดเจนคือ การอ่านข้อความบอกเส้นทางกันการอ่านแผนที่จะให้ผลที่แตกต่างกันอย่างชัดเจน และแน่นอนยุคสมัยของโลก Social อย่าง Facebook Twitter และInstagram ถ้าใครโพสข้อความยาวๆเราก็จะไม่ค่อยสนใจเท่าไรแต่เมื่อโพสภาพสวยๆเมื่อไรจะดึงความสนใจเราได้เยอะมาก

    มาดูการใช้งาน Infographics เพื่อแสดงข้อมูลในรูปแบบต่างๆ

    • ข้อมูลสำคัญทีต้องการให้เป็นจุดสนใจเพียงข้อมูลเดียว
      ควรจะใช้ฟอนต์ที่ใหญ่หรือแปลกตากว่าฟอนต์ทั่วไปหรือมีการเน้นด้วยพื้นหลังที่แตกต่าง ร่วมถึงสามารถใช้ Pictographs หรือ Icon Charts แสดงร้อยละของสิ่งที่สนใจ
      ตัวอย่าง
    1 2
    • ข้อมูลในเชิงเปรียบเทียบ
                        เพื่อให้เห็นความแตกต่างที่เกิดขึ้นกับข้อมูลที่สนใจ โดยมากจะใช้ Bar Chart หรือ Column Chart
      ตัวอย่าง

      top10Social
      ที่มาของภาพ
    • ข้อมูลแบบต่อเนื่องและมีความสัมพันธ์กัน   โดยมากจะแสดงข้อมูลนี้ด้วย Line Chart
      lineCart
    • ข้อมูลแบบไม่ต่อเนื่อง ดูความเป็นไปของข้อมูลที่สนใจ เช่น ความถี่ของผลการประเมิน TOR โดยแยกตามช่วงอายุการทำงานของบุคลากร หรือความสูงของนักเรียนแยกตามช่วงอายุและแยกระหว่างผู้ชายกับผู้หญิงเป็นต้น
      hChart
    • ข้อมูลการเปลี่ยนแปลงตามตัวแปรหรือช่วงเวลา (Trends over Time) สามารถใช้ได้หลายรูปแบบ เช่น Column Chart และเน้นส่วนสนใจ เช่นแสดงร้อยละ หรือใช้รูปแทนข้อมูลช่วงเวลาต่างๆ
      macTimeLine
      ที่มาของภาพ
    • ข้อมูลการกระจายของสิ่งที่สนใจ จะแสดงด้วย bubble chart เช่นความสัมพันธ์ระหว่างความจุปอดกับความสามารถในการกลั่นหายใจของคนแล้วเอาข้อมูลความสัมพันธ์ของแต่ละคนไป วาดกราฟเพื่อดูความสัมพันธ์
      bubbleChart
      ที่มาของภาพ
  • เชื่อมต่อ GitHub Repository ด้วย Visual Studio 2015

    ในการพัฒนาแอปพลิเคชันหรือระบบงานหนึ่งขึ้นมา การจัดการ File source code ไม่ว่าจะเป็นการสร้าง การแก้ไข การควบคุม file version ต่างๆ ถือเป็นเรื่องสำคัญ ซึ่งในบทความนี้นำเสนอการใช้งาน Visual Studio 2015 ในการเชื่อมต่อไปยัง GitHub Server

    Git คือ Version Control ตัวหนึ่ง มีหน้าที่ในการจัดเก็บการเปลี่ยนแปลงของ file source code มีการ backup code ให้เรา สามารถที่จะเรียกดูหรือย้อนกลับไปดูเวอร์ชั่นต่างๆของ project เรา รวมถึงสามารถ track ได้ว่าไฟล์นั้นๆใครเป็นคนเพิ่มหรือแก้ไข ถูกสร้างโดยใคร ถูกปรับปรุงโดยใคร

    GitHub คือ web open source ที่ให้บริการพื้นที่จัดเก็บ source code ของ project ที่เราได้พัฒนา โดยมีระบบควบคุม (version control) แบบ Git ซึ่งทำให้การพัฒนา project ต่างๆ สามารถแชร์ file source code ได้ง่ายขึ้น

     

    เครื่องมือที่ใช้ในการเชื่อมต่อ GitHub Repository ด้วย Visual Studio 2015

    1. Microsoft Visual Studio 2015
    2. GitHub Extension for Visual Studio สามารถ download ได้จาก link ของ github โดยตรง >> Download Now 
    3. Account ที่ใช้ในการเข้าถึง web GitHub

     

    ขั้นตอนการเชื่อมต่อ GitHub Repository ด้วย Visual Studio 2015

    1.ติดตั้ง GitHub Extension for Visual Studio ที่ได้ดาวน์โหลดจากลิงค์ข้างบน

    install1

    2. เมื่อติดตั้งเสร็จจะขึ้นดังรูป

    install2

    3.เปิด Visual Studio 2015 ขึ้นมา ไปยังแท็บ Team Explorer แล้วกด Manage Connections ที่ไอคอนรูปปลั๊ก ดังรูป

    connect

    4.ที่เมนู GitHub ให้คลิก Login

    image4

    5.กรอกข้อมูล GitHub Account ที่จะเชื่อมต่อ แล้วกดปุ่ม Login

    filllogin

    6.เมื่อ Login สำเร็จ จะแสดง GitHub repository ทั้งบน GitHub server และ repository บนเครื่อง local ของเราเองดังรูป

    displayrepo

    7.เข้าไปที่ https://github.com/ แล้ว Login ด้วย GitHub Account ของเราแล้วไป tab>> Repository เพื่อสร้าง Repository ที่จะเก็บ Project ที่เราต้องการจะเพิ่มเข้าไปจาก Visual Studio โดยกรอก repository name และกดปุ่ม Create repository

    newrepo

    8. เราจะได้ repository เปล่าๆ ที่เราสร้างขึ้นดังรูป

    empty repository

    9. เปิด project ที่ต้องการเพิ่มเข้า repository ขึ้นมา คลิกขวาที่ solution เลือก add solution to source control ดังรูป

    addTorepo

    10.จะปรากฎหน้าต่างให้เราเลือก Source Control ที่เราเลือก Git แล้วกดปุ่ม OK

    choosesource

     

    11.ให้เรากรอก Commit Message เสร็จแล้วให้เลือกไปที่ commit ซึ่งจะมีตัวเลือกการ commit หลายแบบ ได้แก่ Commit, Commit and Push และ Commit and Sync ในที่่นี่ผู้เขียนเลือก Commit and Push ซึ่งเป็นการ commit และโยน file source code ขึ้นไปยัง web server repository ด้วย เพื่อแสดงให้ผู้อ่านเห็นว่ามีการเชื่อมต่อกันแล้วจริง

    commitmsg

    12. หลังจากกด Commit and Push จะมี message แจ้งเตือนว่า “There is no remote repository configured. Publish this repository to share your commits.” ซึ่งหมายถึงเรายังไม่ระบุและ reomte ไปยัง repository ที่เราต้องการจะเพิ่ม ให้เราเลื่อนมาด้านล่างและระบุ url ของ repository ที่เราได้สร้างไว้ก่อนหน้านี้บน web GitHub แล้วกดปุ่ม Publish ดังรูป

    publish repo

    13. เมื่อกดปุ่ม Publish รอจนเสร็จสิ้นแล้วจะปรากฎหน้าต่าง ดังรูป

    finish

    ให้คลิกมาที่แท็บ Solution Explorer จะสังเกตุเห็นว่าไฟล์แต่ละไฟล์จะมีรูปกุญแจแล้ว แสดงว่า file source code ของเราถูกเพิ่มเข้า Git source control เรียบร้อยแล้ว

    lock

    14. กลับไปที่เว็บไซต์ GitHub แล้วไปยัง repository ที่เราได้สร้างและเพิ่ม project จาก Visual Studio เข้าไป จะปรากฎ File source code ที่เรา Commit and Push มาจาก Visual Studio แล้ว

    finishRepo1

    finishRepo2

     

    เป็นอันเสร็จสิ้นการเชื่อมต่อและเพิ่ม project เข้าไปยัง GitHub Repository ด้วย Visual Studio 2015 แล้วค่ะ ^^

     

    แหล่งข้อมูลอ้างอิง : https://visualstudio.github.com/

  • วิธีการตรวจสอบข้อมูลในรูปแบบ JSON

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

    ซึ่งในบทความนี้จึงขอเสนอเว็บไซต์ที่ช่วยในการตรวจสอบข้อมูลและแบ่งชั้นของข้อมูลที่ซ้อนกันหลาย ๆ ชั้น ในรูปแบบ JSON ได้ คือ https://jsonformatter.curiousconcept.com

    1

    จากรูป  มีสิ่งที่ต้องระบุหลัก ๆ คือ

    1. JSON Data/URL สามารถวางข้อมูลหรือ URL ของข้อมูลได้ทั้งสองอย่าง
    2. JSON Standard เลือกว่า JSON ของเราสร้างโดยมาตรฐานใด หรือเราอยากตรวจสอบว่า JSON ที่เราสร้างอยู่ในมาตรฐานที่เราต้องการไหม2

      เมื่อกำหนดเรียบร้อยก็กดปุ่ม Process
      3

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

      หากข้อมูลผิดล่ะ จะเป็นไง ลองทำกันดู 

      4

      ในกรณีที่ไม่ถูกต้อง ระบบจะแสดงบรรทัด ที่ไม่ถูกต้อง แล่ะเมื่อคลิก มันจะแสดงสีแดงที่บรรทัดหรืออักษรที่ไม่ถูกต้องให้เราเห็นอีกด้วย