วิธียกเลิก “Keep a local copy as well” บน PSU Webmail

จากที่เริ่มมีการใช้งาน PSU GSuite (Google Apps for Education – GAFE เดิม) ซึ่งมีเอกสารแนะนำวิธีการใช้งานคือ http://gafe.psu.ac.th/support/1/1 ในช่วงแรก เกรงผู้ใช้จะไม่คุ้นชินกับ Gmail (หึมมมม) ก็เลยแนะนำให้ทำ “Keep a local copy as well” ไว้ด้วย เผื่อว่า ยังสับสน ก็จะได้ดูบน PSU Webmail เดิมได้ แต่ต่อมา ก็อาจจะลืมไปว่า Redirect ไปแล้ว ก็ยังมีเก็บไว้ในพื้นที่ PSU Webmail อยู่ ไม่ได้เข้ามาลบอีกเลย นานเข้าก็ทำให้พื้นที่เต็ม ต่อไปนี้ เป็น วิธียกเลิก “Keep a local copy as well” บน PSU Webmail Login เข้า PSU Webmail ที่ https://webmail.psu.ac.th ลบ Email จนได้พื้นที่เป็นสีเขียว จาก เป็น คลิก Filters คลิก Edit ในบรรทัดที่เป็นของ @g.psu.ac.th คลิก Keep a local copy as well ออก จาก เป็น เลื่อนไปล่างสุดของหน้าจอ คลิกปุ่ม Apply Change เสร็จ จบ

Read More »

เตาะแตะไปกับ Docker ตอนที่ 7 Manage data

Docker ให้เราสามารถเลือกใช้วิธีการ mount data เข้าไปให้กับ container อยู่ 3 อย่างคือ 1. Volumes 2. Bind mounts 3. tmpfs mounts Volumes จะถูกเก็บอยู่ในส่วนของ Host filesystem ที่จัดการโดย Docker เอง (อยู่ที่ /var/lib/docker/volumes) และนี่เป็นวิธีที่ดีที่สุดในการจัดเก็บข้อมูลที่เป็น persistent data (ตามคำบอกในเว็บเพจ docs.docker.com) Bind mounts จะถูกเก็บอยู่ในที่ไหนก็ได้ของ Host filesystem เป็นวิธีการที่มีมาตั้งแต่ Docker รุ่นแรก ๆ จึงมีข้อจำกัดเมื่อเทียบกับ Volumes tmpfs mounts จะถูกเก็บอยู่ในหน่วยความจำของ Host เท่านั้น อ่านรายละเอียดเพิ่มเติมได้จากที่นี่ https://docs.docker.com/engine/admin/volumes/ และ https://docs.docker.com/engine/admin/volumes/#more-details-about-mount-types ผมขอเล่าถึงตัวอย่างการใช้งาน Volumes ใน docker-compose.yml (version 2) ที่ผมได้ทำเสร็จแล้ว $ cat docker-compose.yml version: ‘2’ services: openldap: image: openldap container_name: openldap volumes: – ldapdatavol:/var/lib/ldap – ldapconfigvol:/etc/ldap/slapd.d ports: – “389:389” – “636:636” volumes: ldapdatavol: external: false ldapconfigvol: external: false อธิบายได้ดังนี้ ในไฟล์ docker-compose.yml นี้ เราจะรัน services ชื่อ openldap จาก image ที่สร้างไว้แล้วชื่อว่า openldap โดยรันเป็น container ที่ผมตั้งชื่อว่า openldap โดยจะเก็บข้อมูลไว้ถาวรที่ volume ชื่อ ldapdatavol ซึ่งจะ mapped กับ /var/lib/ldap ใน container และอีกบรรทัดคือ ldapconfigvol จะ mapped กับ /etc/ldap/slapd.d ใน container ถัดมาด้านล่างของไฟล์ เราจะต้องประกาศ volumes ไว้ด้วยว่า ldapdatavol ไม่ได้เป็น volume ที่สร้างไว้อยู่แล้วก่อนการัน docker-compose ด้วยการประกาศค่าว่า external: false เช่นเดียวกับ volume ชื่อ ldapconfigvol แต่ถ้าใช้ external: true จะหมายถึง docker-compose จะไม่สร้าง volume ให้ นั่นคือ เราได้สร้างไว้ก่อนแล้วด้วยคำสั่ง $ docker volume create –name ldapdatavol $ docker volume create –name ldapconfigvol เราสามารถดูรายการ volume ด้วยคำสั่งนี้ $ docker volume ls และที่เก็บจริง ๆ จะอยู่ที่นี่ /var/lib/docker/volumes ใช้คำสั่งเปลี่ยนสิทธิเป็น root เข้าไปที่เก็บ volume แล้วเราจะสามารถสำรองข้อมูลนี้ได้โดยใช้คำสั่ง cp หรือ tar ได้เลย ดังนี้ $ sudo su – # cd /var/lib/docker/volumes การใช้งาน volume แบบที่แนะนำนี้เรียกว่า named volume คือ เราตั้งเป็นชื่อตามที่เราคิดเอง ส่วนอีกแบบจะเรียกว่า anonymous นั่นคือ docker ตั้งชื่อให้เอง อันนี้ผมไม่ลงรายละเอียดครับ จบตอนนี้เราก็จะพอเข้าใจได้แล้วว่า

Read More »

ELK #6 วิธีการติดตั้ง ELK และ Geoserver แบบ Docker ให้ทำงานร่วมกัน

จาก ELK #5 การประยุกต์ใช้ ELK ในงานด้าน GIS และ การสร้าง Web Map Service (WMS) บน Geoserver ก็จะเห็นถึงการนำไปใช้เบื้องต้น >> ขอบคุณ คุณนพัส กังวานตระกูล สถานวิจัยสารสนเทศภูมิศาสตร์ทรัพยากรธรรมชาติและสิ่งแวดล้อม ศูนย์ภูมิภาคเทคโนโลยีอวกาศและภูมิสารสนเทศ (ภาคใต้) สำหรับความรู้มากมายครับ <<   ต่อไปนี้ จะเป็นขั้นตอนการติดตั้ง ELK และ Geoserver แบบ Docker โดยผมได้สร้าง Github Repository เอาไว้ ซึ่งได้แก้ไขให้ระบบสามารถเก็บข้อมูลไว้ภายนอก Prerequisite ถ้าเป็น Windows ก็ต้องติดตั้ง Docker Toolbox หรือ Docker for Windows ให้เรียบร้อย ถ้าเป็น Linux ก็ติดตั้ง docker-ce ให้เรียบร้อย (เรียนรู้เกี่ยวกับ Docker ได้จาก ติดตั้ง docker 17.06.0 CE บน Ubuntu) ขั้นตอนการติดตั้ง สร้าง Folder ชื่อ Docker เอาไว้ในเครื่อง เช่นใน Documents หรือ จะเป็น D:\ หรืออะไรก็แล้วแต่ เปิด Terminal หรือ Docker Quickstart Terminal จากนั้นให้ cd เข้าไปมา Folder “Docker” ที่สร้างไว้ ดึง ELK ลงมา ด้วยคำสั่ง git clone https://github.com/deviantony/docker-elk.git ดึง Geoserver ลงมา ด้วยคำสั่ง (อันนี้ผมทำต่อยอดเค้าอีกทีหนึ่ง ต้นฉบับคือ https://hub.docker.com/r/fiware/gisdataprovider/) git clone https://github.com/nagarindkx/geoserver.git เนื่องจาก ไม่อยากจะไปแก้ไข Git ของต้นฉบับ เราจึงต้องปรับแต่งนิดหน่อยเอง ให้แก้ไขไฟล์ docker-elk/docker-compose.yml โดยจะเพิ่ม Volume  “data” เพื่อไป mount ส่วนของ data directory ของ Elasticsearch ออกมาจาก Containerแก้ไขจาก elasticsearch: build: elasticsearch/ volumes: – ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml เป็น elasticsearch: build: elasticsearch/ volumes: – ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml – ./elasticsearch/data:/usr/share/elasticsearch/data สร้าง docker-elk/elasticsearch/data mkdir docker-elk/elasticsearch/data แก้ไขไฟล์ docker-elk/logstash/pipeline/logstash.conf ตามต้องการ เช่น ใส่ filter filter { csv { separator => “,” columns => [ “cid”,”name”,”lname”,”pid”,”house”,”road”,”diagcode”,”latitude”,”longitude”,”village”,”tambon”,”ampur”,”changwat” ] } if [cid] == “CID” { drop { } } else { # continue processing data mutate { remove_field => [ “message” ] } mutate { convert => { “longitude” => “float” } convert => { “latitude” => “float” } } mutate { rename =>

Read More »

date นั้นสำคัญไฉน

ที่ Shell prompt พิมพ์คำสั่ง man date ได้อะไรมาไม่รู้เยอะแยะ… จากคู่มือจะเอารูปแบบวันที่ 12-09-2017 ตัวเลือกที่เกี่ยวข้องได้แก่ %d %D %e %F %g %G %m %y %Y เป็นต้น ลองส่งคำสั่ง date +”%d-%m-%Y” ได้ผลลัพธ์ 12-09-2017 ตรงตามที่ต้องการ มาเขียนสคริปต์กันหน่อย อยากได้เมื่อวานทำไง วันนี้เล่น tcsh shell สร้างแฟ้ม date.tcsh ด้วย editor ที่ชื่นชอบมีข้อความว่า #!/bin/tcsh -f set tday=`date +”%d”` set tmonth=`date +”%m”` set tyear=`date +”%Y”` echo “Today is ${tday}-${tmonth}-${tyear}.” set yday=`expr ${tday} – 1` echo “Yesterday was ${yday}-${tmonth}-${tyear}.” ทดสอบสคริปต์ด้วยคำสั่ง tcsh date.tcsh ไม่อยากพิมพ์ tcsh ทุกครั้งเพิ่ม execution bit ด้วยคำสั่ง chmod +x date.tcsh เรียกใช้ได้โดยพิมพ์ ./date.tcsh (อ่านว่า จุด-ทับ-เดต-จุด-ที-ซี-เอส-เอช) ผลลัพธ์ที่ได้ Today is 12-09-2017. Yesterday was 11-09-2017. อยากได้เมื่อวานทำไมมันยากอย่างนี้ ฮา… ซึ่งเมื่อกลับไปอ่านคู่มือ (man date) ให้ดี..อีกครั้งจะพบว่ามีตัวเลือก -d, –date=STRING display time described by STRING, not ‘now’ และเมื่่อเลื่อนลงมาล่างสุดจะพบว่า DATE STRING The –date=STRING is a mostly free format human readable date string such as “Sun, 29 Feb 2004 16:21:42 -0800” or “2004-02-29 16:21:42” or even “next Thursday”. A date string may contain items indicating calendar date, time of day, time zone, day of week, relative time, relative date, and numbers. An empty string indicates the beginning of the day. The date string format is more complex than is easily documented here but is fully described in the info documentation. โอ้ววว มันเขียนไว้หมดแล้ว… เขียนใหม่ได้ว่า date -d yesterday ได้ผลลัพธ์ Mon Sep 11 21:43:51 +07 2017 เปลี่ยนให้ผลลัพธ์ออกมาในรูปแบบที่ต้องการได้ด้วยคำสั่ง date -d yesterday +”%d-%m-%Y” ก็จะได้ผลลัพธ์ว่า 11-09-2017 แก้สคริปต์

Read More »

การสร้าง Web Map Service (WMS) บน Geoserver

จากบทความ ELK #5 การประยุกต์ใช้ ELK ในงานด้าน GIS ของคุณคณกรณ์ ถือว่าเป็นอีกช่องทางหนึ่งในการจัดทำแผนที่ GIS ซึ่งอาศัย Web Map Service หรือเรียกย่อๆว่า WMS ก็เลยทำให้คันไม้คันมือ อยากนำเสนอวิธีการสร้าง WMS บน Geoserver เพื่อนำ shape file ที่เราได้จัดทำขึ้น(ไม่ว่าจะเป็น point , line, polygon) มาใช้งานบน GIS Web Application ซึ่งทั่วไปก็จะใช้ UI เป็น Openlayers, Leaflet ฯลฯ **ลองแวะเข้าไปอ่านบทความเก่าๆของผู้เขียน จะมีการนำเสนอวิธีการนำ WMS ไปใช้ อาทิเช่นกับ Google Earth, ArcGIS เป็นต้น ขั้นตอนการสร้าง WMS บน Geoserver สร้างและกำหนด style ของข้อมูลในโปรแกรม QGIS 2. save style เป็น SLD file โดยจัดเก็บไว้ที่เดียวกับ shape file 3. Copy file ทั้งหมด 4. ไปวาง(past) ไว้ที่ root folder ของ Geoserver ซึ่งในที่นี้จะอยู่ที่ C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\geoserver\data\shpfile\slb-gis *** ดาวน์โหลด shape file ตามตัวอย่างได้ที่นี่ 5. เปิด Geoserver manager โดยพิมพ์ url: localhost:8080/geoserver     *** port สามารถปรับเปลี่ยนได้ 6. ทำการสร้าง Workspaces 7. กำหนดชื่อ Workspace และ URI 8. กำหนด properties ของ Workspace ให้เปิดใช้งาน (Enabled) Services ต่างๆ 9. จากนั้นทำการสร้าง Stores ในการเก็บข้อมูล shape file (จากขั้นตอนที่ 4) 10. เลือกชนิดของ data sources ในที่นี้จะเลือก Directory of spatial files (Shapefiles) 11. ทำตามขั้นตอนในรูป 1) เลือก Work space ที่สร้างไว้ในข้อ 7 2) กำหนดชื่อ data 3) กำหนด directory ที่เก็บ shape file 4) เลือกโฟลเดอร์ จากข้อ 4 5) คลิกปุ่ม OK จากนั้นเลืื่อนไปด้านล่างสุดของหน้าจอ เพื่อคลิกปุ่ม Save 12. จะปรากฏหน้าต่างข้อมูล shape file ที่ถูกจัดเก็บไว้ในข้อ 4 ซึ่งในที่นี้มีเพียง 1 shape file คือ slbtamb > จากนั้นคลิกที่ Publish เพื่อเปิดการใช้งานชั้นข้อมูล 13. จะแสดงชั้นข้อมูล slbtamb จากข้อ 12 14. คลิกปุ่ม Find เพื่อกำหนดระบบพิกัดให้กับชั้นข้อมูล ในที่นี้ shape file เป็นระบบ UTM ผู้เขียนจึงใช้รหัส 32647 15. จากนั้น คลิก Compute from native bounds เพื่อให้ระบบ generate พิกัดให้

Read More »