in How To

ติดตั้ง Traccar แพลตฟอร์มสำหรับ ระบบ GPS Tracking บน Digital Ocean

Traccar is a free and open source modern GPS tracking system

Traccar เป็น GPS Tracking Platform หมายความว่า มีระบบและบริการที่สนับสนุนเช่น Server Client และระบบจัดการ (Manager) เสร็จสรรพ

โดยตัว Server เองก็รองรับทั้ง Windows Linux และ Arm ตอนนี้เป็นเวอร์ชั่น 4.2 ส่วน Client ก็มีทั้ง Android iOS ส่วนอุปกรณ์ GPS อื่นที่รองรับก็เข้าไปดูที่นี่เลย

ส่วน GPS Tracking คือการระบุตำแหน่งของวัตถุผ่านระบบระบุตำแหน่งบนพื้นโลก (Global Positioning System: GPS) ซึ่งใช้เพื่อติดตามและระบุตำแหน่งของวัตถุนั้นๆจากระยะไกล โดยเทคโนโลยี GPS tracking นี้สามารระบุได้ครอบคลุมถึงพิกัดภูมิศาสตร์ ละติจูด, ลองจิจูด, ความเร็วบนภาคพื้น ทิศทางและเส้นทางการเคลื่อนที่ของวัตถุนั้นๆ ที่เราติดตามอยู่ได้

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

ซึ่ง Traccar เองก็มีทั้งเสียเงินและฟรีราคาให้บริการก็ตามนี้แต่ที่เราสนใจคือตัวที่เป็น Opensource

เริ่มกันด้วยการติดตั้งตัว Server โดยความเป็นจริงละ คนที่จะใช้งานจำเป็นต้องมี Server ที่ให้บริการจริง ๆ ในระบบอินเตอร์เนตเพื่อให้อุปกรณ์ GPS ติดต่อได้ อาจเป็นเครื่องจริง ๆ วางไว้ที่ IDC สักที่หรือถ้าไม่ลงทุนเครื่อง Server จริง ๆ จะเป็น VPS (Virtual Private Server) ก็ได้ ในท้องตลาดก็มีทั้งของไทยและต่างประเทศที่ดัง ๆ หน่อยก็เป็น Amazon Digital Ocean ในบล๊อกนี้เราใช้ DigitalOcean ตัวเล็กสุด 1 CPU SSD 25GB ค่าบริการ 5$/month สร้างตัว Droplet ขึ้นมา รายละเอียดเรื่อง VPS อ่านได้ที่นี่ครบละสำหรับคนเริ่มต้น ส่วนใครจะสมัครตอนนี้ไปนี่เลย

https://m.do.co/c/2f653359b82c
**ตอนนี้สมัครตาม Referral ก็จะได้เครดิตไว้ใช้งาน 100$

หลังจากที่สร้าง Droplet เสร็จแล้ว (ในที่นี้ใช้ Ubuntu 18.10) ก็ติดตั้ง Docker กันต่อเลย (Traccar มี Docker Image ให้ด้วย ^__^)

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

แล้วก็เพิ่ม Docker repository เข้าไป (ตอนนี้ Docker สำหรับ Ubuntu 18.10 ยังไม่มีรุ่น Stable ออกมานะ ต้องใช้ รุ่น test ไปพลาง ๆ )

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) test"

เสร็จแล้วก็ทำการ Update และติดตั้ง Docker ต่อได้เลย

sudo apt-get update
sudo apt-get install -y docker-ce

ถ้าไม่มีอะไรผิดพลาดตัว Docker ต้องทำงานละ

sudo systemctl status docker

ที่นี้ก็เริ่มติดตั้ง Traccar Server กัน ให้ทำการสร้าง Directory ขึ้นมา 2 Directory คือ

  • logs สำหรับเก็บล็อกใช้งาน
  • conf สำหรับเก็บไฟล์ Config
mkdir -p {conf,logs}

ต่อมาก็สร้างไฟล์ Config ในที่นี้ใช้ไฟล์ Default จาก Traccar เลย

docker run \
--rm \
--entrypoint cat \
traccar/traccar \
/opt/traccar/conf/traccar.xml > conf/traccar.xml

โดยค่ามาตรฐานของ Traccar จะใช้ฐานข้อมูลของ hbase ถ้าเราอยากเปลี่ยนเป็น MySQL หรือตัวอื่น ก็แก้ไขตามรายละเอียดนี้  ไฟล์ Config จะหน้าตาประมาณนี้

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE properties SYSTEM 'http://java.sun.com/dtd/properties.dtd'>

<properties>

    <entry key='config.default'>./conf/default.xml</entry>

    <!--

    This is the main configuration file. All your configuration parameters should be placed in this file.

    Default configuration parameters are located in the "default.xml" file. You should not modify it to avoid issues
    with upgrading to a new version. Parameters in the main config file override values in the default file. Do not
    remove "config.default" parameter from this file unless you know what you are doing.

    For list of available parameters see following page: https://www.traccar.org/configuration-file/

    -->

    <entry key='database.driver'>org.h2.Driver</entry>
    <entry key='database.url'>jdbc:h2:./data/database</entry>
    <entry key='database.user'>sa</entry>
    <entry key='database.password'></entry>

</properties>

เสร็จก็เริ่ม Run Server

docker run \
-d --restart always \
--name traccar \
--hostname traccar \
-p 8082:8082 \
-p 5000-5150:5000-5150 \
-p 5000-5150:5000-5150/udp \
-v /root/logs:/opt/traccar/logs:rw \
-v /root/conf/traccar.xml:/opt/traccar/conf/traccar.xml:ro \
traccar/traccar

จะได้หน้าตา Web Management สำหรับจัดการ Traccar โดยเข้าไปที่ http://<IP Address>:8082
** IP Address จะได้มาจาก VPS ที่เราสร้างขี้น

ต่อไปก็ทำการติดตั้ง Client ตอนนี้มีทั้งที่เป็น Android และ iOS รวมทั้งอุปกรณ์ GPS ตัวอื่น ๆ เช็คอุปกรณ์ที่รองรับได้ที่นี่

การใช้งานก็กำหนด IP Address ของเราตรง Server URL ตามฟอร์แมทตัวอย่างได้เลย

จบเรื่องการติดตั้งทั้ง Server และ Client ^_^

ป.ล.

Optimize คำสั่ง SQL สำหรับการสุ่มเวชระเบียนด้วยวิธี Systematic sampling

เดิมเคยเขียนคำสั่ง SQL ไว้นานละพอแก่ตัวขึ้นกลับไปดู มันก็สมควรเปลี่ยน (Optimize) แหล่ะ  เราจะไม่ลงรายละเอียดเรื่องของการตรวจสอบเวชระเบียนหล่ะกัน ขอข้ามไปพาร์ทสำหรับการเตรียมข้อมูล (กลุ่มตัวอย่าง) เพื่อให้ผู้เกี่ยวข้องทำงานต่อ
เริ่มด้วย Systematic Random Sampling (การสุ่มตัวอย่างแบบเป็นระบบ)

การสุ่มตัวอย่างแบบเป็นระบบ ( Systematic sampling) เป็นการสุ่มตัวอย่างโดยมีรายชื่อของทุกหน่วยประชากรมาเรียงเป็นระบบตามบัญชีเรียกชื่อ การสุ่มจะแบ่งประชากรออกเป็นช่วงๆที่เท่ากันอาจใช้ช่วงจากสัดส่วนของขนาดกลุ่มตัวอย่างและประชากร แล้วสุ่มประชากรหน่วยแรก ส่วนหน่วยต่อๆไปนับจากช่วงสัดส่วนที่คำนวณไว้

ขั้นตอนคร่าว ๆ ของการเตรียมข้อมูลสุ่มตัวอย่างแบบนี้คือ

  1. เลือกแฟ้มจาก OPD Card หรือ สมุดทะเบียนผู้มารับบริการ จำแนกตาม PID หรือ HN หรือวันที่ที่มารับบริการ
  2. หาช่วง Interval (I) ของการสุ่มโดยใช้สูตร
    I = จำนวนเวชระเบียนผู้ป่วยทั้งหมด ÷ จำนวนเวชระเบียนผู้ป่วยที่ต้องการ
  3. หาค่าตั้งต้นโดยการจับฉลาก (สุ่ม) เช่น จับฉลากได้หมายเลข 5 ให้เลือกเวชระเบียนแฟ้มแรกคือลำดับที่ 5 แล้วนับต่อไปทุกลำดับที่ I เช่นกรณีได้ค่า I = 3 ก็นับไปเลย 5, 8, 11, 14, 17, 20, ………จนได้ครบตามจำนวนที่ต้องการ

มาดู SQL ตัวที่พยายาม  Optimize กัน

 

Implements a scheduled task using Supercronic

Cron เป็นโปรแกรมสำหรับการทำ schedule tasks  ที่เราต้องการ พบเจอได้ใน Unix-like OS ตามไปอ่านรายละเอียดได้ที่นี่

Supercronic ก็จัดอยู่ในโปรแกรมข้างต้น คนทำให้นิยามว่า

Supercronic is a crontab-compatible job runner, designed specifically to run in containers.

เหตุผลที่ทำ Supercronic ขึ้นมาตามไปอ่านรายละเอียดได้ที่นี่ (ไม่ได้ขี้เกียจนะ 55+) ที่นี้เราลองมาอิมพลีเมนท์กันดู

เริ่มก็สร้าง Dockerfile ตามนี้

FROM alpine:3.8
LABEL author="mf"
LABEL version="latest"

ENV SUPERCRONIC_VERSION="v0.1.6" \
    SUPERCRONIC_PACKAGE=supercronic-linux-amd64 \
    SUPERCRONIC_SHA1SUM=c3b78d342e5413ad39092fd3cfc083a85f5e2b75

ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/$SUPERCRONIC_VERSION/$SUPERCRONIC_PACKAGE

ENV TZ Asia/Bangkok

# install dependencies
RUN apk add --update --no-cache ca-certificates curl \
# install supercronic
    && curl -fsSLO "$SUPERCRONIC_URL" \
    && echo "${SUPERCRONIC_SHA1SUM}  ${SUPERCRONIC_PACKAGE}" | sha1sum -c - \
    && chmod +x "${SUPERCRONIC_PACKAGE}" \
    && mv "${SUPERCRONIC_PACKAGE}" "/bin/${SUPERCRONIC_PACKAGE}" \
    && ln -s "/bin/${SUPERCRONIC_PACKAGE}" /bin/supercronic \
# remove unwanted deps & cleanup
    && apk del --purge ca-certificates curl \
    && rm -rf /tmp/* /var/cache/apk/*

ADD crontab.sample /etc/crontab
RUN chmod 0644 /etc/crontab

ENTRYPOINT ["supercronic"]
CMD ["/etc/crontab"]

** ณ ตอนนี้ (29 พ.ย. 61) เวอร์ชั่นล่าสุดอยู่ที่ 0.1.6 ลองเช็คดูเรื่อย ๆ ที่ Github

ตามด้วยการสร้างไฟล์ Crontab สำหรับทำงาน ตัวอย่าง คือกำหนดให้แสดงผลคำว่า “hello from Supercronic” ทุก 1 นาที

# Run every minute
*/1 * * * * echo "hello from Supercronic"

เสร็จก็ทำการ Build และรัน container sudo docker build -t mf/supercronic . && sudo docker run -it mf/supercronicผลลัพธ์จะได้ตามนี้

จบปิ๊ง ^__^

Source

  • https://github.com/aptible/supercronic

Disable screen sleep on Raspberry PI

Raspberry PI เวลาเอามาใช้ทำตัว Dashboard หรือ Kiosk สักพักก็จะเข้าสู่ Sleep mode วิธีการแก้ไข ก็คือให้ทำการแก้ไขไฟล์ lightdm.conf

sudo nano /etc/lightdm/lightdm.conf

เพิ่มบรรทัดนี้เข้าไปในเซคชั่น [Seat:*]

xserver-command=X -s 0 dpms

เสร็จก็ Reboot รอบนึง จบปิ๊งงง ^__^

Automatic Update All Docker Images

สำหรับอัพเดต Docker Images ทั้งหมดที่ได้ติดตั้งไปแล้ว ใช้คำสั่งด้านล่างนี้

docker images | grep -v REPOSITORY | awk '{printf $1; printf ":"; print $2}' | xargs -L1 docker pull

โดยเมื่อเราได้อัพเดตไปแล้วไฟล์ตัวใหม่จะไม่ได้ทับ (Overwrite) ตัวเดิม เราต้องตามไปลบ (Cleanup) ตัวเดิมอีกรอบ โดยใช้คำสั่ง

docker images | grep "<none>" | awk '{print $3}' | xargs -L1 docker rmi


จบปิ๊งง  ^_^

My GNOME Shell Extensions – Part 1

สำหรับ Linux User ที่เลือก GNOME (อ่านว่า กะโนม) เป็น desktop environment ซึ่งปัจจุบัน (ตุลาคม 2561) เวอร์ชั่นล่าสุดคือ GNOME 3.30 กรณีที่อยากลองใช้ ณ ตอนนี้ก็มี Ubuntu 18.10 Cosmic Cuttlefish ซึ่งจะออกใกล้ ๆ นี้มาให้ทดลองใช้งาน

สำหรับดิสโทรอื่น หลัก ๆ ก็ยังใช้เวอร์ชั่น 3.28 กันอยู่ สามารถตรวจสอบเวอร์ชั่นในเครื่องตัวเองได้จากคำสั่งนี้ (เครื่องตัวเองตอนนี้ใช้เวอร์ชั่น GNOME Shell 3.28.3)

gnome-shell --version

ใครที่อยากลอง GNOME Shell 3.30 ก็ใช้กำลังภายในกันนิดนึงแต่ส่วนตัวก็ยังแนะนำให้ใช้เวอร์ชั่นเดิม ๆ นั่นแหล่ะปลอดภัยสุดแล้ว

GNOME Shell เดิม ๆ นั้นก็ไม่ถึงกับง่อยหรอก แต่ถ้าอยากให้ชีวิตง่ายขึ้น GNOME Shell Extensions ช่วยได้ ซึ่งก็มีให้เลือกใช้งานกันตามแต่ละปัญหาของแต่ละคน (ส่วนใหญ่ปัญหาการใช้งานก็ไม่ค่อยต่างกันมากนัก  :P)

ส่วนตัวแล้วเลือกใช้ Extensions อยู่ไม่กี่ตัว มาดูกันว่ามีตัวไหนกันบ้าง (แนะนำให้ติดตั้ง sudo apt install gnome-tweak-tool ด้วย) เรียงลำดับตามตัวอักษรหล่ะกันครับ

  1. Applications Menu by fmuellner
    Add a category-based menu
    สำหรับเรียกเมนูโดยจัดกลุ่มแอพปลิชั่นให้ คล้ายปุ่ม Start ในฝั่ง Windows นั่นแหล่ะ
  2. Blyr by yozoon
    Apply a Blur Effect to GNOME Shell UI elements

    ช่วยเพิ่ม Effect  Blur ใน Background เมื่อเรียกหน้าจอ Activities Overview Screen ขึ้นมา มันดู Sexy ขึ้นนะ
  3. Caffeine by eon
    Disable the screensaver and auto suspend

    ปิดการทำงานของ Screensaver
  4. Clipboard Indicator by Tudmotu
    Clipboard Manager extension for Gnome-Shell – Adds a clipboard indicator to the top panel, and caches clipboard history.

    เพิ่มความสามารถของ Clipboard เราสามารถกำหนดประวัติการใช้งาน Clipboard ได้ (Default อยู่ที่ 30 รายการ)
  5. Coverflow Alt-Tab by p91paul
    Replacement of Alt-Tab, iterates through windows in a cover-flow manner.

    โดยปกติเมื่อเรากดคีย์ Alt-Tab/Alt-Shift-Tab จะเป็นการเลื่อน (Switch) ไปยังแอพปลิเคชั่นที่เปิดอยู่ Extensions นี้ช่วยปรับให้ลักษณะการเลื่อนเป็นแบบ Coverflow ตัวอย่าง
  6. cpufreq by konkor
    Gnome CPU Frequency Monitor and Governor Manager.

    สามารถกำหนด Profile ให้ CPU ทำงานได้ โดยปกติ Linux เองก็ฉลาดมากพอที่จะกำหนดความเร็วของ CPU ตามลักษณะการใช้งาน แต่บางครั้งเราก็อยากรีดความเร็วณ ตอนนั้น หรือลดความเร็วลงเพื่อประหยัดพลังงาน Extension ตัวนี้ช่วยได้
  7. Dash to Dock by michele_g
    A dock for the Gnome Shell. This extension moves the dash out of the overview transforming it in a dock for an easier launching of applications and a faster switching between windows and desktops. Side and bottom placement options are available.

    Dock ที่ติดมากับ Ubuntu ถึงแม้จะ Fork Dash to Dock มาแต่ก็ปรับแต่ง/ทำอะไรไม่ได้มาก ถ้าพฤติกรรมการใช้งานเรา แค่นั้นไม่พอก็ติดตั้ง Dash to Dock ช่วย (Dock จะเก่งขึ้นมากถึงมากที่สุด)
  8. Dash to Panel by jderose9
    An icon taskbar for the Gnome Shell. This extension moves the dash into the gnome main panel so that the application launchers and system tray are combined into a single panel, similar to that found in KDE Plasma and Windows 7+. A separate dock is no longer needed for easy access to running and favorited applications.
    อยากได้ Dock ฟิล Windows ก็ใช้ตัวนี้ (เราก็ใช้สลับกับ Dash to Dock นะ)
  9. Disconnect Wifi by kgshank
    Adds a Disconnect option for Wifi in status menu, when a network is connected. Shows a Reconnect option, after network is disconnected.

    เพิ่มเมนู Disconnect หลังจากที่เชื่อมต่อ Wifi แล้ว เป็น Extension เหมือนไม่มีอะไรแต่มีประโยชน์มาก
  10. EasyScreenCast
    This extension simplifies the use of the video recording function integrated in gnome shell, allows quickly to change the various settings of the desktop recording.

    Screen recording ติดมากับ GNOME Shell แต่การใช้งานก็ไม่ได้ง่ายนัก สำหรับใครที่อยากใช้และไม่ต้องการ Extension ตัวนี้ วิธีใช้ พอไปอ่านแล้วคุณจะกลับมาติดตั้ง Extensions ตัวนี้ 😛
  11. Freon by UshakovVasilii
    Shows CPU temperature, disk temperature, video card temperature (NVIDIA/Catalyst/Bumblebee&NVIDIA), voltage and fan RPM (forked from xtranophilist/gnome-shell-extension-sensors)

    แสดงอุณหภูมิทั้ง CPU และ Video Card รองรับทั้งทั้งฝั่งเขียวและแดงนะครับ
  12. Frippery Move Clock by rmyorston
    Move clock to left of status menu button

    ย้ายตำแหน่งของนาฬิกาเฉย ๆ
  13. gTile by scherepanov
    Tile windows on a grid.

    ช่วยให้การจัดหน้าต่างที่กำลังเปิดอยู่ทั้งหมดดูง่ายและเป็นระเบียบ ไม่ต้องลากเองนี่จัดตำแหน่งให้เลย
  14. Impatience by gfxmonk
    Speed up the gnome-shell animation speed
    รู้สึกว่าเครื่องมีการตอบสนองมันช้าใช่ไหม เครื่องช้าไหม แต่เปล่าเลย Animation ล้วน ๆ งั้นเรามาเร่ง Speed Animation กัน คือถ้าไม่ชอบก็สามารถปิดได้ ใช้ Gnome Tweak Tool > Appearance แต่ Animation ก็อยากใช้แต่เร่งความเร็วนิดนึง ก็ติดตั้งเลยครับ

จบ Part 1 นะครับ ^_^ (เหลืออีกประมาณ 10 กว่าตัว)

Set video wallpaper for your Ubuntu 18.04 Bionic Beaver

การมาของ Live Wallpaper ทำให้ความจำเจเราหายไปบ้าง แต่ก็นั่นหล่ะ เราอยากได้แบบนี้บ้างใน Linux ที่ใช้งานอยู่ (ปัจจุบันใช้ Ubuntu 18.04 Bionic Beaver) พบว่ามีทูลหลายตัวที่ช่วยทำเรื่องเกี่ยวกับ Wallpaper ไม่ว่าจะเป็น Package หรือ Extension สำหรับ Gnome Shell

หรือแม้แต่ komorebi เอง

และก็มี Tool อีกตัวหนึ่งซึ่งสามารถทำได้เหมือนกันคือ VLC Media Player โดยปกติเราใช้ VLC เป็น Media Player หลักอยู่แล้วเลยไม่ต้องติดตั้งอะไรเพิ่มเติมแต่ถ้ายังไม่ได้ติดตั้งก็ติดตั้งได้เลยตามนี้

sudo snap install vlc
หรือ
sudo apt install vlc

ต่อมาก็ใช้ VLC แบบ Command Line กำหนดให้เล่นวิดีโอใน Mode Wallpaper อ่านรายละเอียดคำสั่ง/Options ได้จากที่นี่ รูปแบบคำสั่งก็ใช้แค่นี้แหล่ะ

cvlc --video-wallpaper --no-audio --loop --no-video-title-show "Video File Path"

หรือเปิด VLC ในโหมด GUI ปกติแล้วกำหนดให้เป็น Wallpaper โดยการกด Hot Keys ‘w’


ผลลัพธ์ที่ได้ก็ตามนี้

ป.ล.

Split comma separated string to multiple rows

สำหรับใครที่เคยใช้ฟังก์ชั่น GROUP_CONCAT() ใน  MySQL มาก่อนก็พอจะเดาผลลัพธ์จากฟังก์ชั่นนี้ได้ว่า ผลลัพธ์จะเป็นค่าตามคอลัมภ์ที่ถูกกรุ๊ป (GROUP BY) และนำมาต่อกันด้วยเครื่องหมายที่ระบุ ปกติค่าดีฟอลต์จะเป็น comma ‘,’ รูปแบบคำสั่งก็จะประมาณนี้

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

ตัวอย่าง


**ภาพจาก mysqltutorial

ข้างบนนี่คือต้นเหตุ มักจะมีกรณีที่เราได้ผลลัพธ์มาแล้ว นั่นคือ “A,B,C” และเราต้องการแยกข้อความที่ได้มาออกเป็นแต่ละแถว (ตาราง t ก่อนที่จะผ่านฟังก์ชั่น GROUP_CONCAT() นั่นแหล่ะ) ดูตัวอย่างกัน

CREATE TABLE DEMO (
    ID INTEGER PRIMARY KEY AUTO_INCREMENT,
    PID VARCHAR(20) NOT NULL,
    ICD10LIST VARCHAR(255) DEFAULT NULL
);
 
INSERT INTO DEMO(ID, PID, ICD10LIST) VALUES(NULL, '101', 'E119,E112,I10'), (NULL, '102', 'E119,E112'), (NULL, '103', 'E119,I10');

ข้อมูลในตารางเป็นแบบนี้ (คุ้น ๆ กันไหม 5555)

**แนวคิดของคำสั่งก็คือทำการสร้างตารางค่า Index ที่อยู่ในชุด/เซตข้อความเพื่อแยกแต่ละไอเท็มออกมา

SELECT
  DEMO.ID,
  DEMO.PID,
  SUBSTRING_INDEX(SUBSTRING_INDEX(DEMO.ICD10LIST, ',', numbers.n), ',', -1) AS ICD10
FROM
  (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) numbers INNER JOIN DEMO
  ON CHAR_LENGTH(DEMO.ICD10LIST)-CHAR_LENGTH(REPLACE(DEMO.ICD10LIST, ',', '')) >= numbers.n-1
ORDER BY
  PID, n

ผลลัพธ์ที่ได้

จบปิ๊ง !!!

ป.ล.

  • ตาราง numbers จะสร้างไว้ก่อนก็ได้ ปกติก็ใช้บ่อย ๆ นะครับจะด้วย RECURSIVE CTE ก็ได้หรือตัวนี้
  • ตัว Split String จะทำเป็นฟังก์ชั่นไว้ก็ได้นะ ^_^
  • ข้อมูลเป็นข้อมูลสมมุติจาก Data Exchange สมมุติแห่งหนึ่ง

 

 

Simulate keyboard input and mouse activity and more on Raspberry Pi

นานมาแล้ว (หรือช่วงนี้ก็มี 555) มีโปรแกรมกลุ่มพวกคลิกโฆษณาอัตโนมัติ ได้รับความนิยมอย่างล้นหลาม ใคร ๆ ก็ทำงานบนอินเตอร์เนตกัน จนมีประโยคสุดฮิตสแปมมาอยู่เนือง ๆ

โดยหลัก ๆ ละโปรแกรมเหล่านี้ก็จะจำลองการทำงานของเมาส์และคีย์บอร์ดแหล่ะ และวันนึงก็ได้ใช้ ด้วยความที่ตัว Raspberry Pi ที่ใช้งานอยู่จำเป็นต้องจำลองการเลื่อน/คลิกเมาส์และใช้คีย์บอร์ดขึ้นมา xdotool ช่วยคุณได้ เริ่มติดตั้งกันเลย

sudo apt-get install xdotool

ตัวอย่างการใช้งานก็ง่าย ๆ สร้างสคริปท์ขึ้นมา อาจจะทำงานผ่าน Crontab ก็ได้ เช่น ต้องการ
Resize all visible gnome-terminal windows

#!/bin/bash

WIDS=`xdotool search --onlyvisible --name "gnome-terminal"`
for id in $WIDS; do
  xdotool windowsize $id 500 500
done

# As of version 2.20100623, you can do this simpler version of above:
xdotool search --onlyvisible --classname "gnome-terminal" windowsize %@ 500 500

จบปิ๊ง   !!

ป.ล.
อยากใช้ก็มีให้ใช้ได้ทันที แบบนี้สิดี
Github : https://github.com/jordansissel/xdotool

Yaru Gtk Themes Available in Dark and Light Variants for Ubuntu 18.04

Yaru-light and Yaru-dark based on ‘Yaru theme (Ubuntu community theme)’ https://github.com/ubuntu/yaru powered by the community on the Ubuntu hub. Yaru theme design for GTK 3, GTK 2 and Gnome-Shell. Some of the additional tweaks:

  • Switch gtk control with round radius.
  • Transparent gnome-shell.

Installation :

  1. Just unzip the file and place it in your themes directory i.e. ~/.themes/or /usr/share/themes/
  2. Install gnome-tweak-tool
    sudo apt install gnome-tweak-tool
  3. Select the theme as ‘Yaru-light’ or ‘Yaru-dark’

Download : https://www.gnome-look.org/p/1252100/
Base : https://github.com/ubuntu/yaru