Month: May 2016

  • การสร้างแผนที่ออนไลน์ (Web Map) ด้วยลิงค์ KML/KMZ

    นักพัฒนาเว็บหลายคนคงจะคุ้นเคยกับการสร้าง web map ด้วย google map api กันนะคับ (เป็นที่นิยมเลยล่ะ) แต่ในยุคปัจจุบันที่มีการเผยแพร่ข้อมูลที่เป็น near real time กันมากยิ่งขึ้น จะเห็นได้จากหลายหน่วยงานมีการเผยแพร่ Web Map Services กันเยอะมากยิ่งขึ้น และแย่งชิงความเป็นผู้นำในการนำเสนอข้อมูลที่เป็นปัจจุบันทันด่วนที่สุด

    แต่ด้วยปัจจัยในการต้องติดตั้งโปรแกรมบน Web Map Server เพื่อให้สามารถใช้งาน web map ผ่าน server ได้ (เสียงบประมาณเพิ่ม)
    ***ใครมี ArcGIS Server จะลองทำ การสร้างเว็บแผนที่จุดความร้อน(Hotspot) โดยใช้ WMS บน ArcGIS Server ดูได้นะคับ

     

    วันนี้เลยจะขอนำเสนอโค้ดง่ายๆ ในการนำลิงค์ KML/KMZ จากเว็บที่ให้บริการฟรี! มาสร้างเป็นหน้าเว็บเพจของเราโดยที่ไม่ต้องติดตั้ง map server กันคับ ^^ ที่สำคัญ ต้นทางข้อมูลอัพเดทข้อมูล หน้าเว็บเราก็อัพเดทไปด้วย อิอิ

    ขั้นตอนการสร้าง

    1. เปิดหน้าเว็บที่ให้บริการลิงค์ ***ตัวอย่างเว็บ http://slb-gis.envi.psu.ac.th

    2. เลือกชั้นข้อมูลที่ต้องการ แล้วคลิกขวา > copy link address

    00

    3. สร้างไฟล์ gmap.html แล้วเปิด edit ด้วยโปรแกรม notepad หรือ text editor

    4. copy โค้ดนี้ไปวาง

    <!DOCTYPE html>
    <html>
    <head>
    <meta name=”viewport” content=”initial-scale=1.0″>
    <meta charset=”utf-8″>
    <title>การสร้างแผนที่ออนไลน์ (Web Map) ด้วยลิงค์ KML/KMZ</title>
    <style>
    html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    }
    #map {
    height: 100%;
    }
    </style>
    </head>
    <body>
    <div id=”map”></div>
    <script>

    function initMap() {
    var map = new google.maps.Map(document.getElementById(‘map’), {
    zoom: 11,
    center: {lat: 100.756297, lng: 14.790059}
    });

    var ctaLayer = new google.maps.KmlLayer({
    url: ‘ที่อยู่ kml/kmz ลิงค์‘,
    map: map
    });
    }

    </script>
    <script async defer
    src=”https://maps.googleapis.com/maps/api/js?key=google map api key“>
    </script>
    </body>
    </html>

    4. วางลิงค์ที่ copy มาจากเว็บตรงurl: ‘http://slb-gis.envi.psu.ac.th/home1/images/download/kmz/gcs_slbforu.kmz‘,

    และใส่ google map api key ***ถ้าไม่มีให้ไปที่ https://developers.google.com/maps/documentation/javascript/get-api-key

    01

    5. ลองเปิดผ่าน http://localhost/gmap.html จะได้ตามรูป

    02

    6. หากคลิกที่ข้อมูล จะมี pop-up แสดงข้อมูลขึ้นมา

    03

    7. เว็บไซต์ของท่านก็จะมีหน้าเว็บแมพไว้ใช้งานได้แบบง่ายๆ โดยไม่ต้องติดตั้ง web map server ^^

     

    ****บริการฟรี! ชั้นข้อมูลลุ่มน้ำทะเลสาบสงขลาเพิ่มเติมได้ที่ โครงการการพัฒนาฐานข้อมูลสารสนเทศภูมิศาสตร์ลุ่มน้ำทะเลสาบสงขลา โดย สถานวิจัยสารสนเทศภูมิศาสตร์ทรัพยากรธรรมชาติและสิ่งแวดล้อม คณะการจัดการสิ่งแวดล้อม มหาวิทยาลัยสงขลานครินทร์

  • การนำเข้า Web Map Services บนโปรแกรม ArcGIS

    จากคราวก่อนเคยพูดถึง การนำเข้า Web Map Service บน Google Earth มาแล้ว วันนี้จะขอนำเสนอ การนำเข้า Web Map Services (WMS) บนโปรแกรม ArcGIS กันบ้าง

    ปัจจุบันนี้ กระแส Web Map Service (WMS) กำลังมาแรงทีเดียวเชียว ซึ่งจะเห็นได้จากหลายๆหน่วยงานของรัฐที่จะมีการเผยแพร่ลิงค์ WMS ให้ผู้ใช้สามารถนำไปใช้ต่อยอดกับงานด้าน GIS ได้ อีกทั้งยังเป็นการเผยแพร่ข้อมูลที่เป็นประโยชน์และเป็นปัจจุบันทันเหตุการณ์ เข้ากับยุคข้อมูลข่าวสารไร้พรหมแดนไร้ขอบเขตกันอีกด้วยนะครับ

    ข้อดีของ WMS ที่เห็นได้ชัดคือ

    1. เจ้าของข้อมูลไม่ต้องเผยแพร่ shape file (ซึ่งหลายๆท่านอาจจะได้มาซึ่งความยากลำบากในกระบวนการทำงานกว่าจะได้ข้อมูลนั้นมา) แต่สามารถเผยแพร่ให้สาธารณะทราบได้ว่า เรามีข้อมูลนี้อยู่นะ ถ้าอยากได้ข้อมูลดิบ ก็ติดต่อหรือเจรจาเรื่องค่าเหนื่อยกันหลังไมค์ >*<
    2. ผู้นำไปใช้ ก็ไม่ต้องคอยอัพเดทข้อมูล เพราะทุกครั้งที่ต้นทางเจ้าของข้อมูลอัพเดทข้อมูล ข้อมูลเราก็จะอัพไปด้วย สบายยยยย

     

    *** หากยังไม่มีโปรแกรม ArcGIS for Desktop ก็สามารถดาวน์โหลดมาติดตั้งใช้งานได้ฟรี 60 วัน นะคับ ดูวิธีการติดตั้งได้ที่ การติดตั้งโปรแกรม ArcGIS 10.4 for Desktop (Trial)

    วิธีการนำ WMS ไปใช้กับโปรแกรม ArcGIS for Desktop

    1. Copy WMS ลิงค์ที่ได้จากเว็บไซต์ **ตัวอย่างจากเว็บ http://slb-gis.envi.psu.ac.th01.1

    2. เปิดโปรแกรม ArcMap > เปิด ArcCatalog > ดับเบิ้ลคลิก Add WMS Server

    01

    3. past ลิงค์ที่ copy มาจากเว็บที่ URL > คลิกปุ่ม Get Layers ระบบจะแสดงชั้นข้อมูลขึ้นมา > คลิกปุ่ม OK

    02

    4. ที่ Catalog จะปรากฏข้อมูล WMS ที่ได้เพิ่มไปเมื่อสักครู่นี้

    04

    5. คลิกเม้าส์ค้าง (drag mouse) ลากชั้นข้อมูลมาวางที่พื้นที่งาน จะปรากฏการแสดงผลของชั้นข้อมูล ซึ่งจะเป็น Layer หนึ่งของโปรเจ็คงาน

    05

    6. เสร็จ ^^

     

    ****บริการฟรี! ชั้นข้อมูลลุ่มน้ำทะเลสาบสงขลาเพิ่มเติมได้ที่ โครงการการพัฒนาฐานข้อมูลสารสนเทศภูมิศาสตร์ลุ่มน้ำทะเลสาบสงขลา โดย สถานวิจัยสารสนเทศภูมิศาสตร์ทรัพยากรธรรมชาติและสิ่งแวดล้อม คณะการจัดการสิ่งแวดล้อม มหาวิทยาลัยสงขลานครินทร์

  • Case Study: ภัยจากสำเนาบัตรประชาชน Social Network ไปจนถึงการตั้งรหัสผ่านของโลก IT

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

    เรื่องมีอยู่ว่า … นางสาว A อยู่มาวันหนึ่ง ก็ได้รับหมายเรียกจากตำรวจ ว่ามีคนแจ้งความว่า

    1. ทำการส่ง SMS ไปด่าว่า นางสาว B จึงแจ้งความหมิ่นประมาท (A กับ B ไม่รู้จักกันเลย)
    2. ใช้ Facebook ที่มีชื่อจริง นามสกุลจริงของนางสาว A เข้าไปป่วน Facebook นางสาว B สร้างความเสื่อมเสียต่อการงานของนางสาว B

    นางสาว A จึงไปตามหมายเรียก พร้อมแสดงความบริสุทธิ์ใจ จากนั้น ได้เริ่มทำการสืบสวน พบว่า

    1. ที่นางสาว B แจ้งความนางสาว A เพราะว่า เอาเลขหมายโทรศัพท์ที่ส่ง SMS มานั้นไปตรวจสอบ พบว่าเป็นของ Operator รายหนึ่ง จึงให้ทราบเลขที่บัตรประชาชน และตำรวจเอาตรวจสอบในทะเบียนราษฏร์ พบเป็นชื่อ นามสกุล ของนางสาว A
    2. ทาง Operator ที่ให้บริการ SMS ที่อ้างว่ามาจากนางสาว A แจ้งให้ทราบว่า ได้มีการนำ “หมายเลขบัตรประชาชน” ของนางสาว A ไปเปิดบริการ “SIM เติมเงิน”  ผ่านบริการที่เรียกว่า “2 แชะ” โดยทางผู้รับลงทะเบียน ไม่ได้ระบุชื่อ นามสกุลของผู้ลงทะเบียน เพียงแต่ระบุว่า เป็น “เพศชาย” และเป็นการลงทะเบียนจากคนละจังหวัดกับนางสาว A ด้วย (แล้วทำไมยังลงทะเบียนได้ งงจัง)
    3. Facebook ของ นางสาว A จริงๆนั้น แทบไม่ได้ใช้งาน มีไว้แค่ให้คนรู้จักติดต่อทักเข้ามาเล็กๆน้อยๆ จากการตรวจสอบเบื้องต้น ไม่พบประวัติการเข้าไป Comment ใน Facebook ของนางสาว B แต่ประการใด

    ปัญหาอยู่ที่ว่า

    1. จากการสอบถาม พบว่า นางสาว A ตั้งรหัสผ่านของ Facebook แบบง่ายมาก โดยใช้ “ชื่อภาษาอังกฤษ และวันเดือนปีเกิด” เป็นรหัสผ่าน เช่น somying01122520 อะไรทำนองนั้น ตรงนี้ไม่แน่ใจว่า ถ้าไปรู้ email address ของนางสาว A ที่ใช้เปิด Facebook ก็อาจจะนำไปใช้ทดสอบ Login ได้ก็เป็นไปได้
    2. หรือเป็นไปได้ว่า ผู้ร้ายที่นำสำเนาบัตรประชาชนของนางสาว A ไปเปิดเบอร์ คงจะค้นหาใน Facebook ด้วยชื่อนามสกุลจริง ตามในบัตร แล้วพบ Profile แล้วเห็นข้อมูลที่เปิด Public จึง “อาจจะ” สร้าง Facebook อีกอันเลียนแบบขึ้นมา โดยใช้ชื่อและนามสกุลของนางสาว A แล้วเข้าไปใน Facebook ของ B เพื่อป่วนก็เป็นไปได้
    3. และเป็นไปได้ว่า เคยเซ็นต์สำเนาบัตรประชาชน ไม่ได้ระบุ “จุดประสงค์” การใช้งาน กล่าวคือ เซ็นแค่ สำเนาถูกต้อง และเซ็นต์ชื่อ แล้วเกิดหลุดไป ทำให้เกิดการสวมสิทธิ์จดทะเบียน SIM ดังกล่าวได้

    เรื่องนี้สอนให้รู้ว่า

    1. เซ็นสำเนาบัตรประชาชนทุกครั้ง อย่าลืมเขียนทับกำกับไปเลยว่า ใช้เพื่อจุดประสงค์อะไร จะได้ไม่สามารถนำไปใช้ทำอย่างอื่นได้
    2. เลขที่บัตรประชาชนมีความสำคัญ เป็นการระบุตัวตนได้จริง ควรเก็บเป็นความลับ หากใครรู้ และระบบจดทะเบียนที่อาจจะไม่รัดกุมพอ อาจจะนำไปสู่เหตุการณ์ดังที่กล่าวมาได้
    3. อย่าตั้งรหัสผ่านที่มีข้อมูลที่อยู่ในบัตรประชาชนเด็ดขาด อย่างกรณีดังกล่าว ใช้ชื่อ และ วันเดือนปีเกิด เสี่ยงมาก
    4. ข้อมูลส่วนตัวใน Social Media ควรปิดเป็นความลับ เปิดเผยเฉพาะ Friends หรือไม่ก็ไม่ควรเปิดเผยเลยยิ่งดี

    หวังว่าจะเป็นประโยชน์ครับ

  • Oracle Database 12CR1 monitoring with MRTG

    • OS: Oracle Enterprise Linux  7.2  (CentOS 7.2)
    • วิธีติดตั้ง MRTG สามารถติดตั้งได้โดยสามารถดูคู่มือที่ ติดตั้ง mrtg บน ubuntu อาจไม่เหมือนกันแต่สามารถทำได้ทำนองเดียวกัน
    • กราฟสำหรับ Idle CPU and Load average, CPU Time spent waiting for IO, Traffic Analysis for eth0, TCP Current Establish สามารถใช้ script เดียวกับลิงค์ในข้อ ๒ ได้เลย
    • สร้างแฟ้ม /etc/mrtg/get-memory.sh มีข้อความว่า
      #!/bin/bash
      FREE=$(free |grep "Mem:"|awk '{print $7}')
      SWAP=$(free |grep "Swap:"|awk '{print $3}')
      TIME=$(uptime)
      echo "${FREE}"
      echo "${SWAP}"
      echo "$TIME"
      hostname 

      สร้างแฟ้ม /etc/mrtg/myhost-memory.cfg มีข้อความว่า
      WorkDir: /var/www/mrtg/myhost
      Target[myhost-mem]:`/etc/mrtg/get-memory.sh`
      MaxBytes[myhost-mem]: 20000000000
      Title[myhost-mem]: Free Memory and Swap Used
      PageTop[myhost-mem]: <H1>Free Memory and Swap Used</H1>
      ShortLegend[myhost-mem]: bytes
      YLegend[myhost-mem]: bytes
      LegendI[myhost-mem]:  Free Memory:
      LegendO[myhost-mem]: Swap Used:
      Legend1[myhost-mem]: Free memory, in bytes
      Legend2[myhost-mem]: Swap Used, in bytes
      Options[myhost-mem]: gauge, nopercent, growrightทดสอบสร้างภาพต้นแบบด้วยคำสั่ง

      env LANG=C /usr/bin/mrtg/myhost-memory.cfgปรับปรุงแฟ้ม index.html ด้วยคำสั่ง
      indexmaker --column=2 --output=/var/www/mrtg/myhost/index.html /etc/mrtg/myhost-cpu.cfg /etc/mrtg/myhost-cpu-io.cfg /etc/mrtg/myhost-speed-eth0.cfg /etc/mrtg/myhost-tcpestab.cfg /etc/mrtg/myhost-memory.cfg

    • โฟลเดอร์ที่ต้องเฝ้าระวังได้แก่ /u02/app/oracle/adump, /u02/app/oracle/diag/rdbms/regist/regist/alert, /u02/app/oracle/rdbms_trace ซึ่งเป็นโฟลเดอร์สำหรับเก็บ Log ไฟล์ต่างๆ ซึ่งอาจมีขนาดเพิ่มขึ้นจนระบบไม่สามารถให้บริการได้ และโฟลเดอร์ /u03 เป็นโฟลเดอร์ที่ใช้เก็บ archive log (ในกรณีที่ฐานข้อมูลเปิด archive log mode)
      • สร้างแฟ้ม /etc/mrtg/get-diskfree-misc1.sh มีข้อความว่า
        #!/bin/bash
        adump=$(du -sm /u02/app/oracle/adump|awk '{ print $1 }')
        free=$(df -m /u02|grep u02|awk '{ print $4 }')
        TEMP=$(uptime|grep -o "load average.*"|awk '{print $3}'|cut -d',' -f 1)
        LOAD=$(echo "${TEMP:-0} * 100"|bc|cut -d'.' -f 1)
        TIME=$(uptime)
        echo "${adump}"
        echo "${free}"
        echo "$TIME"
        hostname
      • สร้างแฟ้ม /etc/mrtg/myhost-diskfree-misc1.cfg มีข้อความว่า
        WorkDir: /var/www/mrtg/myhost
        Target[myhost-misc1]:`/etc/mrtg/get-diskfree-misc1.sh`
        MaxBytes[myhost-misc1]: 20000000000
        Title[myhost-misc1]: Free disk space and disk Used of /u02/app/oracle/adump
        PageTop[myhost-misc1]: Free disk space and disk Used of /u02/app/oracle/adump
        ShortLegend[myhost-misc1]: bytes
        kMG[myhost-misc1]: M,G,T
        kilo[myhost-misc1]: 1024
        YLegend[myhost-misc1]: bytes
        LegendI[myhost-misc1]: Disk Used:
        LegendO[myhost-misc1]: Free Disk:
        Legend1[myhost-misc1]: Disk usage, in Bytes
        Legend2[myhost-misc1]: Free Disk Space, in Bytes
        Options[myhost-misc1]: gauge, nopercent, growright
        Timezone[myhost-misc1]: Bangkok

        ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง
        env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-diskfree-misc1.cfg
        ปรับปรุงแฟ้ม index.html ด้วยคำสั่ง
        indexmaker --column=2 --output=/var/www/mrtg/myhost/index.html /etc/mrtg/myhost-cpu.cfg /etc/mrtg/myhost-cpu-io.cfg /etc/mrtg/myhost-speed-eth0.cfg /etc/mrtg/myhost-tcpestab.cfg /etc/mrtg/myhost-memory.cfg /etc/mrtg/myhost-diskfree-misc1.cfg
      • สร้างแฟ้มเลียนแบบข้อ 1 และ 2 สำหรับโฟลเดอร์ที่เหลือ
      • แก้ไขแฟ้ม /etc/mrtg/mymrtg.sh เพิ่มข้อความ  env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-diskfree-misc1.cfg ต่อท้ายไฟล์และเพิ่มทุกไฟล์ของทุกโฟลเดอร์
      • สำหรับโฟลเดอร์ /u03 ให้สร้างแฟ้ม /etc/mrtg/get-diskfree-u03.sh มีข้อความว่า
        #!/bin/bash
        used=$(df -m /u03|grep u03|awk '{ print $3 }')
        free=$(df -m /u03|grep u03|awk '{ print $4 }')
        TEMP=$(uptime|grep -o "load average.*"|awk '{print $3}'|cut -d',' -f 1)
        LOAD=$(echo "${TEMP:-0} * 100"|bc|cut -d'.' -f 1)
        TIME=$(uptime)
        echo "${used}"
        echo "${free}"
        echo "$TIME"
        hostname
        nof=$(ls -d1 /u03/app/oracle/fast_recovery_area/REGIST/archivelog/* |wc -l)
        max=3if [ "${nof}" == "${max}" ]
        then
                nod=$(expr ${max} - 1)
                f2d=$(ls -d1 /u03/app/oracle/fast_recovery_area/REGIST/archivelog/*|head -${nod})
                rm -rf ${f2d}
                su - oracle -c "/bin/sh /home/oracle/reclaim.sh"
        fi
        สร้างแฟ้ม /home/oracle/reclaim.sh มีข้อความว่า
        rman target / <<EOF
        crosscheck archivelog all;
        delete noprompt expired archivelog all;
        quit
        EOF
        สร้างแฟ้ม /etc/mrtg/myhost-diskfree-u03.cfg มีข้อความว่า
        WorkDir: /var/www/mrtg/myhost
        Target[myhost-u03]:`/etc/mrtg/get-diskfree-u03.sh`
        MaxBytes[myhost-u03]: 20000000000
        Title[myhost-u03]: Free disk space and disk Used of /u03
        PageTop[myhost-u03]: Free disk space and disk Used of /u03
        ShortLegend[myhost-u03]: bytes
        kMG[myhost-u03]: M,G
        kilo[myhost-u03]: 1024
        YLegend[myhost-u03]: bytes
        LegendI[myhost-u03]: Disk Used:
        LegendO[myhost-u03]: Free Disk:
        Legend1[myhost-u03]: Disk usage, in Bytes
        Legend2[myhost-u03]: Free Disk Space, in Bytes
        Options[myhost-u03]: gauge, nopercent, growrightทดสอบสร้างภาพต้นแบบด้วยคำสั่ง
        env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-diskfree-u03.cfg
        อย่าลืมปรับปรุงแฟ้ม index.html ด้วย
    • เฝ้าระวังขนาดของ Tablespace SYSTEM และ USERS
      • สร้างแฟ้ม /etc/mrtg/get-tablespace-system.sh มีข้อความว่า
        #!/bin/bash
        used=$(su - oracle -c "sh /home/oracle/monitor/tablespacesize.sh"|grep SYSTEM|awk '{ print $2 }'|sed -e 's/,//g')
        used=$(expr ${used} \* 1024)
        free=$(su - oracle -c "sh /home/oracle/monitor/tablespacesize.sh"|grep SYSTEM|awk '{ print $3 }'|sed -e 's/,//g')
        free=$(expr ${free} \* 1024)
        TIME=$(uptime)
        echo "${used}"
        echo "${free}"
        echo "$TIME"
        hostname

        สร้างแฟ้ม /home/oracle/monitor/tablespacesize.sh มีข้อความว่า
        #!/bin/bash
        sqlplus / as sysdba << EOF
        col "Tablespace" for a22
        col "Used MB" for 99,999,999
        col "Free MB" for 99,999,999
        col "Total MB" for 99,999,999
        select df.tablespace_name "Tablespace",
        totalusedspace "Used MB",
        (df.totalspace - tu.totalusedspace) "Free MB",
        df.totalspace "Total MB",
        round(100 * ( (df.totalspace - tu.totalusedspace)/ df.totalspace))
        "Pct. Free"
        from
        (select tablespace_name,
        round(sum(bytes) / 1048576) TotalSpace
        from dba_data_files
        group by tablespace_name) df,
        (select round(sum(bytes)/(1024*1024)) totalusedspace, tablespace_name
        from dba_segments
        group by tablespace_name) tu
        where df.tablespace_name = tu.tablespace_name ;
        quit
        EOF

        สร้างแฟ้ม /etc/mrtg/myhost-tablespace-system.cfg
        WorkDir: /var/www/mrtg/myhost
        Target[myhost-system]:`/etc/mrtg/get-tablespace-system.sh`
        MaxBytes[myhost-system]: 20000000000
        Title[myhost-system]: Tablespace SYSTEM disk usage
        PageTop[myhost-system]: Tablespace SYSTEM Disk Usage
        ShortLegend[myhost-system]: bytes
        kMG[myhost-system]: k,M,G
        kilo[myhost-system]: 1024
        YLegend[myhost-system]: bytes
        LegendI[myhost-system]: Disk Used:
        LegendO[myhost-system]: Free Disk:
        Legend1[myhost-system]: Disk usage, in Bytes
        Legend2[myhost-system]: Free Disk Space, in Bytes
        Options[myhost-system]: gauge, nopercent, growrightทดสอบสร้างภาพต้นแบบด้วยคำสั่ง
        env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-tablespace-system.cfgอย่าลืมปรับปรุง index.html ด้วย
      • ทำแบบเดียวกันกับ tablespace users
    • จบขอให้สนุก