วิธี ADD / COPY Hidden File ขณะ Build Docker Image

ปัญหา

เมื่อเราใช้คำสั่ง ADD หรือ COPY ใน Dockerfile เพื่อคัดลอก Hidden File (ไฟล์ในระบบ Linux ที่ชื่อขึ้นต้นด้วยจุด .) ไปยัง Docker Image ในขณะที่เรา Build Image

ถ้าเราใช้รูปแบบคำสั่งเป็น

ADD <src>... <dest>

หรือ

COPY <src>... <dest>

เราอาจจะพบข้อผิดพลาดดังนี้

lstat destdir/.filename: no such file or directory

วิธีแก้ไข

เพื่อหลีกเลี่ยงข้อผิดพลาดดังกล่าว แนะนำให้ใช้คำสั่ง ADD และ COPY ในอีกรูปแบบหนึ่ง ดังนี้

ADD ["<src>",... "<dest>"]

หรือ

COPY ["<src>",... "<dest>"]

ซึ่งโดยส่วนตัวแล้ว ผมคิดว่ารูปแบบนี้น่าใช้กว่ารูปแบบแรก เพราะนอกจากจะใช้คัดลอก Hidden File ได้แล้ว ก็ยังสามารถใช้รูปแบบนี้คัดลอกไฟล์ที่มี Whitespace (เว้นวรรค) ได้ด้วย

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธี build hping3 บน Ubuntu

โดยปกติบน Ubuntu คุณสามารถติดตั้ง hping3 ผ่าน repository ได้โดยใช้คำสั่ง apt หรือ apt-get อยู่แล้ว

แต่ถ้าคุณจะ build hping3 เอง อาจจะด้วยเหตุผลอะไรก็แล้วแต่ ให้คุณทำตามขั้นตอนด้านล่างนี้

1. ถ้าคุณยังไม่ได้ติดตั้งชุดเครื่องมือสำหรับ build ให้ติดตั้งก่อน โดยใช้คำสั่งนี้

sudo apt install -y build-essential

2. ติดตั้ง pcap development package

sudo apt install -y libpcap-dev
sudo ln -s /usr/include/pcap/bpf.h /usr/include/net/bpf.h

3. ติดตั้ง TCL development package

sudo apt install -y tcl-dev

4. ดาวน์โหลด source ไฟล์ hping3 จากเว็บไซต์ต้นฉบับ

wget http://www.hping.org/hping3-20051105.tar.gz

5. extract hping3 archive ที่เพิ่งดาวน์โหลดมา

tar xf hping3-20051105.tar.gz

6. ย้ายไปทำงานที่ไดเรกทอรี่ hping3 ที่เพิ่ง extract ออกมา

cd hping3-20051105

7. ถ้าคุณใช้ Ubuntu เวอร์ชั่น 64บิท คุณต้อง Patch ไฟล์ bytesex.h ก่อน

wget -O hping3-bytesex.h-64bit.patch https://git.io/fjNkJ
patch bytesex.h hping3-bytesex.h-64bit.patch

8. รันสคริป configure เพื่อสร้าง Makefile ใหม่

./configure

9. build, strip และ ติดตั้ง hping3

make
make strip
sudo make install

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธีอัปเกรด PHPMailer สำหรับ WordPress

เงื่อนไขการอัปเกรด

การอัปเกรดด้วยวิธีต่อไปนี้ เป็นวิธีการอัปเกรดด้วย command line บน linux server

วิธีอัปเกรด

ย้ายไปทำงานที่ไดเรกทอรี่ของเว็บไซต์ WordPress ที่ต้องการอัปเกรด

cd /var/www/your-wordpress

ค้นหาไฟล์ที่มีคำว่า “phpmailer.php” อยู่ในชื่อไฟล์

find . -iname *phpmailer.php*

ตรวจสอบเวอร์ชั่น PHPMailer ของไฟล์ที่พบ

grep \$Version ./your-found-file # Result is public $Version = 'x.y.zz';

สำรองไฟล์เอาไว้เผื่ออยากดาวน์เกรดกลับมาเป็นเวอร์ชั่นเดิมทีหลัง

# WordPress Core
cp ./wp-includes/class-phpmailer.php ./wp-includes/class-phpmailer.php.bak
cp ./wp-includes/class-pop3.php ./wp-includes/class-pop3.php.bak
cp ./wp-includes/class-smtp.php ./wp-includes/class-smtp.php.bak

# WordPress Themes and Plugins
cp ./wp-content/plugins/your-plugin/class.phpmailer.php ./wp-content/plugins/your-plugin/class.phpmailer.php.bak
cp ./wp-content/themes/your-theme/class.phpmailer.php ./wp-content/themes/your-theme/class.phpmailer.php.bak

ดาวน์โหลด PHPMailer และไฟล์ที่เกี่ยวข้อง เวอร์ชั่นล่าสุดมาพักไว้ที่ไดเรกทอรี่ /tmp

wget -P /tmp https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/class.phpmailer.php
wget -P /tmp https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/class.pop3.php
wget -P /tmp https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/class.smtp.php

เริ่มการอัปเกรดโดยการเขียนทับไฟล์เวอร์ชั่นเก่า ด้วยไฟล์ที่เราดาวน์โหลดมาพักไว้ในไดเรกทอรี่ /tmp

# WordPress Core
cp /tmp/class.phpmailer.php ./wp-includes/class-phpmailer.php
cp /tmp/class.pop3.php ./wp-includes/class-pop3.php
cp /tmp/class.smtp.php ./wp-includes/class-smtp.php

# WordPress Themes and Plugins
cp /tmp/class.phpmailer.php ./wp-content/plugins/your-plugin/class.phpmailer.php
cp /tmp/class.phpmailer.php ./wp-content/themes/your-theme/class.phpmailer.php

ตั้งค่าสิทธิ์ของไฟล์ที่เราเพิ่งอัปเกรด เพื่อให้โปรแกรม Web Server เข้าถึงไฟล์ได้อย่างถูกต้อง

# WordPress Core
chown www-data:www-data ./wp-includes/class-phpmailer.php
chown www-data:www-data ./wp-includes/class-pop3.php
chown www-data:www-data ./wp-includes/class-smtp.php

# WordPress Themes and Plugins
chown www-data:www-data ./wp-content/plugins/your-plugin/class.phpmailer.php
chown www-data:www-data ./wp-content/themes/your-theme/class.phpmailer.php

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธี save docker image เป็นไฟล์ .tar.gz

เมื่อคุณ save docker image โดยใช้คำสั่ง “docker save” คุณจะได้ไฟล์ออกมาเป็น .tar (tar archive)

docker save image_name > image_name.tar

คำสั่งนี้เป็นแค่คำสั่งที่รวมให้ docker image ซึ่งประกอบไปด้วยไฟล์หลายๆ ไฟล์ออกมาเป็นไฟล์ๆ เดียว แต่ยังไม่ได้ผ่านกระบวนการบีบอัดไฟล์ จึงทำให้ขนาดไฟล์ยังมีขนาดที่ข้อนข้างใหญ่ครับ (แต่ถ้าใครคิดว่าขนาดไฟล์ไม่ใช่ปัญหา ก็ใช้คำสั่งนี้ไปก็ได้ครับ)

วิธี save docker image เป็นไฟล์ .tar.gz

คุณสามารถ save docker image ให้ไฟล์ที่ออกมามีขนาดเล็กลงกว่าเดิมได้ โดยการบีบอัดด้วย gzip โดยใช้คำสั่งด่านล่างนี้ครับ

docker save image_name | gzip > image_name.tar.gz

นอกจากนี้คุณยังสามารถบีบอัดไฟล์ด้วย xz หรือ bzip2 ได้อีกด้วย

เช่น คำสั่งด้านล่างนี้ สำหรับ save docker image เป็น .tar.xz

docker save image_name | xz > image_name.tar.xz

หรือ คำสั่งด้านล่างนี้ สำหรับ save docker image เป็น .tar.bz2

docker save image_name | bzip2 > image_name.tar.bz2

วิธี load docker image จากไฟล์ .tar.gz

ข้อความจากเว็บไซต์ docker

The tarball may be compressed with gzip, bzip, or xz

หมายความว่า คุณสามารถ load docker image จากไฟล์ที่ถูกบีบอัดด้วย gzip, bzip หรือ xz ก็ย่อมได้

ดังนั้นคุณสามารถใช้คำสั่ง “docker load” แบบธรรมดาๆ ได้เลย โดยไม่จำเป็นต้องใส่ option เพิ่มเติมใดๆ เลย เช่น

docker load -i image_name.tar.gz

หรือ

docker load -i image_name.tar.bz2

หรือ

docker load -i image_name.tar.xz

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

Burp Proxy ไม่ Intercept HTTPS บน Firefox

ปัญหา

เมื่อตั้งค่า Burp Proxy บน Firefox แล้วไม่สามารถ Intercept HTTPS ได้ แต่สามารถ Intercept HTTP ได้ปกติ

ปัญหาอาจจะเกิดจากการตั้งค่า Proxy บน Firefox ที่ไม่ถูกต้องครับ โดยที่คุณอาจจะลืมเลือกตัวเลือก “Use this proxy server for all protocols” ครับ

วิธีแก้ไข

  • เข้าไปที่ Edit > Preferences > Advanced > Network > Connection > Settings > Manual proxy configuration > HTTP Proxy
  • เลือกตัวเลือก “Use this proxy server for all protocols”
  • กดปุ่ม OK
firefox-settings-for-burp-proxy

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธีติดตั้ง mdk3 บน Ubuntu

ถ้าคุณต้องการจะติดตั้ง mdk3 บน Ubuntu คุณจะต้อง build เอง โดยใช้วิธีดังต่อไปนี้

หมายเหตุ : วิธีนี้ทดสอบแล้ว โดยการ build ด้วย GCC 4.8 และติดตั้งบน Ubuntu 14.04

ขั้นตอนการ build mdk3

1. ดาวน์โหลดไฟล์ source ของ mdk3 จากเว็บไซต์ต้นฉบับ

wget http://aspj.aircrack-ng.org/mdk3-v6.tar.bz2

2. extract ไฟล์ archive ที่เพิ่งดาวน์โหลดมา

tar -xf mdk3-v6.tar.bz2

3. ย้ายไปที่งานที่ไดเรกทอรี่ mdk3 ที่เพิ่ง extract ออกมา

cd mdk3-v6

4. แก้ไขไฟล์ชื่อ “Makefile” ในบรรทัดที่ 2 จาก “LINKFLAGS   = –lpthread” ไปเป็น “LINKFLAGS   = –pthread” (ลบตัวเอ็ล “l” ออก) โดยจะใช้ editor ตัวไหนก็ได้แล้วแต่สะดวก เช่น vim, nano หรือ gedit

จาก > LINKFLAGS   = -lpthread
เป็น > LINKFLAGS   = -pthread

5.ใช้คำสั่ง make เพื่อเริ่มกระบวนการ build

make

6.ติดตั้ง mdk3 ลงบนระบบของคุณ (ขั้นตอนนี้ต้องใช้สิทธิ์ root)

sudo make install

เคล็ดลับ

คุณสามารถรวมขั้นตอนที่ 4 และ 5 เข้าด้วยกันโดยใช้คำสั่งต่อไปนี้

make LINKFLAGS=-pthread

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธีพิมพ์ตัวหนอนบน Windows

ตัวหนอน และ Grave Accent

มารู้จักกับเครื่องหมายตัวหนอน และ เครื่องหมาย Gave Accent กันก่อนครับ, 2 เครื่องหมายนี้มักถูกสับสน และถูกเรียกชื่อผิดกันอยู่บ่อยๆ เนื่องจากอยู่บนคีย์บอร์ดปุ่มเดียวกัน

เครื่องหมายตัวหนอน หรือ Tilde หน้าตาเป็นแบบนี้ ( ~ )

เครื่องหมายเน้นเสียง หรือ Grave Accent หน้าตาเป็นแบบนี้  ( ` )

tilde and grave accent on the keyboard-circle
ตัวหนอนอยู่ด้านบน, Grave Accent อยู่ด้านล่าง

ปัญหา

ปัญหาการพิมพ์เครื่องหมายตัวหนอนไม่ได้ ส่วนใหญ่มักจะเกิดกับผู้ใช้งานระบบปฏิบัติการ Windows ที่ตั้งให้ปุ่ม Grave Accent เป็นปุ่มสำหรับสับเปลี่ยนภาษาที่จะพิมพ์, ทำให้ปุ่มๆ นี้ ที่มีทั้งเครื่องหมายตัวหนอน และ Grave Accent ในปุ่มเดียวกัน ไม่สามารถถูกใช้เพื่อการพิมพ์ได้ (ก็พิมพ์ไม่ได้นั่นแหละ)

วิธีแก้ไข (แบบแก้ขัด)

ให้กดปุ่ม ALT แล้วตามด้วยเลข Unicode ฐาน 10 ของตัวอักษรนั้นๆ เช่น ตัวหนอน ให้กด ALT แล้วตามด้วย 1-2-6 ตามลำดับ หรือ หากต้องการพิมพ์ Grave Accent ให้กด ALT แล้วตามด้วย 9-6 ตามลำดับ

ดูเลข Unicode ตัวอักษรอื่นๆ ได้ที่ List of Unicode characters

วิธีแก้ไข (แบบถาวร)

การแก้ไขก็แก้ง่ายๆ ครับ แค่ตั้งปุ่มสำหรับสับเปลี่ยนภาษาจากปุ่ม Grave Accent ให้เป็นปุ่มอื่นๆ เช่น Left Alt + Shift เป็นต้น

คำเตือน: วิธีนี้จะทำให้คุณไม่สามารถสับเปลี่ยนภาษาด้วยปุ่ม Grave Accent ได้ คุณต้องเปลี่ยนปุ่มสำหรับสับเปลี่ยนภาษาเป็นปุ่มที่คุณตั้งใหม่แทน เช่น Left Alt + Shift เป็นต้น

วิธีแก้ไขสำหรับ Windows 7

change-input-language-shortcut-key-step1
change-input-language-shortcut-key-step2
change-input-language-shortcut-key-step3
change-input-language-shortcut-key-step4
change-input-language-shortcut-key-step5
change-input-language-shortcut-key-step6
แบ่งปันสิ่งนี้บน

Linux คืออะไร ?

Linux อ่านว่า ลินุกซ์ มีความหมายที่ถูกเข้าใจกันโดยทั่วไปได้ 2 ความหมาย คือ

  1. ลินุกซ์ ซึ่งหมายถึง ระบบปฏิบัติการลินุกซ์ (Linux Operating System)
  2. ลินุกซ์ ซึ่งหมายถึง ลินุกซ์ เคอร์เนิล (Linux Kernel)
Tux.svg
มาสคอต อย่างเป็นทางการของ Linux Kernel ชื่อว่า Tux

เริ่มแรกลินุกซ์ถูกสร้างขึ้นโดย Linus Torvalds โดยใช้ระบบปฏิบัติการ MINIX ซึ่งเป็นระบบปฏิบัติการแบบยูนิกซ์เป็นต้นแบบ โดย Linus Torvalds ไม่ได้พัฒนาลินุกซ์ให้เป็นระบบปฏิบัติการ แต่พัฒนาให้ลินุกซ์เป็นเพียงเคอร์เนิล (Kernel) หรือแก่นของระบบปฏิบัติการ ซึ่งจะเป็นส่วนที่อยู่ระดับล่างสุด และใกล้ชิดกับฮาร์ดแวร์มากที่สุด มีหน้าที่หลักในการติดต่อกับฮาร์ดแวร์ (Hardware) และจัดสรรทรัพยากรของระบบ (Resources Management) เท่านั้น ซึ่งยังไม่เพียงพอต่อการถูกนำไปใช้งานโดยผู้ใช้ทั่วไป

Kernel_Layout.svg
By Bobbo (Own work) [CC BY-SA 3.0 or GFDL], via Wikimedia Commons

ในช่วงเวลาใกล้ๆ กัน Richard Stallman ก็ได้พยายามสร้างระบบปฏิบัติการที่เข้ากันได้กับระบบปฏิบัติการยูนิกซ์ ซึ่งระบบปฏิบัติการนี้ประกอบไปด้วยไลบรารี่, คอมไพเลอร์, โปรแกรมแก้ไขข้อความ, เชลล์ และ Windowing System จะเหลือก็แต่ส่วนที่เป็นเคอร์เนิลซึ่งยังพัฒนาออกมาได้ไม่สมบูรณ์ Richard Stallman จึงได้เอาลินุกซ์ เคอร์เนิลที่พัฒนาโดย Linus Torvalds มาใช้แทน จนทำให้ลินุกซ์ถูกเรียกได้ว่าเป็นระบบปฏิบัติการในที่สุด

Linux Distribution คืออะไร ?

Linux Distribution (อ่านว่า ลินุกซ์ดิสทริบิวชัน) หรือเรียกย่อๆ ว่า Linux Distro (อ่านว่า ลินุกซ์ดิสโทร) คือ ระบบปฏิบัติการลินุกซ์ที่ถูกออกแบบและปรับแต่งเพื่อการแจกจ่าย โดยการนำเอาระบบปฏิบัติการลินุกซ์มาปรับแต่งและเพิ่มซอฟต์แวร์พื้นฐานต่างๆ รวมเข้าไป เช่น เพิ่มส่วนติดต่อผู้ใช้, โปรแกรมจัดการไฟล์, โปรแกรมสำหรับดูหนัง-ฟังเพลง, โปรแกรมเว็บเบราว์เซอร์ เป็นต้น สรุปง่ายๆ ก็คือ ลินุกซ์ดิสโทรเป็นระบบปฏิบัติการลินุกซ์แบบสำเร็จรูป พร้อมใช้งาน เมื่อติดตั้งแล้วแทบจะไม่ต้องปรับแต่งหรือติดตั้งซอฟต์แวร์เพิ่มเลย ใช้งานได้ทันที เช่น Arch Linux, Debian, Ubuntu, Linux Mint, openSUSE, Red Hat และ Fedora เป็นต้น

ระบบปฏิบัติการ Ubuntu 18.04 LTS
ระบบปฏิบัติการ Ubuntu 18.04 LTS

ข้อดีของระบบปฏิบัติการลินุกซ์

  1. เป็นซอฟต์แวร์โอเพนซอร์ส ทำให้เราสามารถปรับแต่งระบบได้อย่างอิสระ
  2. ระบบปฏิบัติการลินุกซ์ส่วนใหญ่ อนุญาตให้คุณใช้งานได้ฟรี ไม่ต้องเสียค่าใช้จ่าย ทำให้ผู้ผลิตฮาร์ดแวร์ที่จำเป็นต้องมีระบบปฏิบัติการส่วนใหญ่นำลินุกซ์ไปใช้ในระบบ เพราะไม่ต้องจ่ายค่าลิขสิทธิ์เพิ่มเติม เช่น เราเตอร์, โทรศัพท์มือถือ, ระบบเครื่องเสียงในรถยนต์ หรือ อุปกรณ์อื่นๆ ที่ใช้ระบบปฏิบัติการ Android เป็นต้น
  3. ไม่ต้องกังวลเรื่องลิขสิทธิ์ เพราะเขาอนุญาตให้คุณใช้งานฟรีภายใต้เงื่อนไขที่ระบุไว้ในสัญญาอนุญาต
  4. ไวรัสคอมพิวเตอร์ส่วนใหญ่ ไม่สามารถทำงานบนระบบปฏิบัติการลินุกซ์ได้ เพราะมาตรการการรักษาความปลอดภัยของลินุกซ์เอง (เช่น ระบบสิทธิ์การใช้งานไฟล์) และเพราะลินุกซ์ยังมีปริมาณผู้ใช้งานที่น้อยมากเมื่อเทียบกับผู้ใช้งานระบบปฏิบัติการวินโดวส์ จนผู้พัฒนาไวรัสคิดว่ายังไม่คุ้มค่าที่จะมาสร้างไวรัสขึ้นมาเพื่อโจมตีผู้ใช้งานลินุกซ์ (คล้ายๆ กับความคิดที่ว่า จะตกปลาก็ตกในบ่อที่มีปลาเยอะๆ หน่อยย่อมให้ผลที่ดีกว่า ใช้เวลาตกปลาเท่ากันแต่จำนวนที่ตกได้ย่อมต่างกัน)
  5. ซอฟต์แวร์บนระบบปฏิบัติการลินุกซ์ส่วนมากได้รับการอัปเดตอยู่ตลอดเวลา ทำให้มั่นใจได้ในเสถียรภาพ ความสามารถ และความปลอดภัย

ข้อเสียของระบบปฏิบัติการลินุกซ์

  • ผู้ผลิตฮาร์ดแวร์ เช่น การ์ดจอ, printer, USB WiFi ไม่ค่อยให้ความสนใจกับไดรเวอร์อุปกรณ์ (device driver) บนลินุกซ์ ทำให้ฮาร์ดแวร์บางตัวไม่สามารถใช้งานได้กับลินุกซ์ หรือถ้าใช้งานได้ก็ไม่เต็มประสิทธิภาพเท่าที่ควร ดังนั้นหากคิดจะใช้ลินุกซ์ควรตรวจสอบให้แน่ใจก่อนว่าฮาร์ดแวร์นั้นๆ สามารถใช้ได้กับลินุกซ์หรือไม่ ถึงแม้ว่าปัจจุบันปัญหาเรื่องไดรเวอร์บนลินุกซ์จะลดลงแล้วก็ตาม
  • ไม่สามารถติดตั้งและใช้งานซอฟต์แวร์หลายๆ ตัวที่ถูกสร้างขึ้นมาสำหรับระบบปฏิบัติการวินโดวส์โดยเฉพาะได้ ดังนั้นหากจะเปลี่ยนมาใช้ลินุกซ์ควรตรวจสอบให้แน่ใจก่อนว่าซอฟต์แวร์ที่จำเป็น ต้องใช้นั้น สามารถใช้ได้บนลินุกซ์หรือไม่ หากซอฟต์แวร์ตัวนั้นใช้งานบนลินุกซ์ไม่ได้ ยังพอมีซอฟต์แวร์ตัวอื่นทดแทนได้ไหม
  • เกมบนระบบปฏิบัติการลินุกซ์ค่อนข้างน้อยเมื่อเทียบกับเกมบนระบบปฏิบัติการวินโดวส์ และหลายๆ เกมกราฟิกไม่สวยเอามากๆ ดังนั้นลินุกซ์จึงเป็นตัวเลือกที่ไม่ดีนักสำหรับผู้ที่ชื่นชอบการเล่นเกม เป็นชีวิตจิตใจ

หมายเหตุ : ลินุกซ์สามารถใช้งานซอฟต์แวร์ของระบบปฏิบัติการวินโดวส์ได้โดยเรียกใช้งานผ่านโปรแกรม Wine (ใช้ได้บางโปรแกรม) หรือ ติดตั้งซอฟต์แวร์ลงบนระบบปฏิบัติการวินโดวส์ที่ถูกติดตั้งไว้บน Virtual Machine เช่น VirtualBox หรือ VMware อีกที (ซึ่งต้องใช้ทรัพยากรของระบบมากพอตัว แน่นอน.. คอมพิวเตอร์เก่าๆ คงหมดสิทธิ์ !)

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

สอนใช้ Arduino อ่านค่าจากเซ็นเซอร์วัดอุณหภูมิ DHT11

DHT11 เป็นเซ็นเซอร์สำหรับวัดอุณหภูมิและความชื้นในอากาศ ที่มีขนาดเล็ก และราคาถูกมากๆ  เพียงตัวละประมาณ 50 บาท สามารถใช้งานร่วมกับ Arduino ได้ง่ายๆ เพียงแค่จ่ายไฟให้เซ็นเซอร์ และอ่านค่าจาก Arduino โดยใช้ digital pin เพียง 1 pin เท่านั้น

สเปคคร่าวๆ ของ DHT11

  • วัดความชื้นในอากาศ (Humidity) ได้ตั้งแต่ 20-90%RH มีโอกาศคลาดเคลื่อน ±5%RH
  • วัดอุณหภูมิ (Temperature) ได้ตั้งแต่ 0-50 °C มีโอกาศคลาดเคลื่อน ±2 °C
  • ขนาดของตัวเซ็นเซอร์ 1.5 x 1.0 x 0.5 cm
  • ใช้ไฟ DC ที่มีแรงดันไฟตั้งแต่ 3-5.5V

DHT11 pinout

DHT11 มีขาทั้งหมด 4 ขา แต่เราจะใช้จริงเพียงแค่ 3 ขาเท่านั้น คือ ขาที่ 1, 2 และ 4 เพราะ datasheet บอกว่า “ขาที่ 3 เป็น Null หรือก็คือไม่ได้ใช้ประโยชน์นั่นเอง”

DHT11_pinout

การต่อวงจร

การต่อวงจรให้ดูรูปด้านล่างครับ เราจะใช้ 5kΩ pull-up resistor สำหรับการต่อสายระหว่าง Arduino กับ DHT11 ในระยะที่ห่างกันไม่เกิน 20 เมตรนะครับ (อ้างอิงจาก DHT11 datasheet)

โค้ดตัวอย่าง

ดาวน์โหลดไลบรารี Dht11_Library.zip (ต้นฉบับมาจาก GitHub ของ Andy Dalton) จากนั้นติดตั้งไลบรารี แล้วใช้โค้ดด้านล่างนี้ทดสอบได้เลย

จุดเด่นของไลบรารีตัวนี้ คือ ไลบรารีมีขนาดเล็กมากเมื่อเทียบกับไลบรารีตัวอื่นเพราะออกแบบมาให้ใช้ได้กับ DHT11 เท่านั้น (ไลบรารีตัวอื่นอาจรองรับ DHT11, DHT22 และ DHT อื่นๆ ในไลบรารีตัวเดียวกัน)

#include <Dht11.h>

// สร้าง object dht11 และใช้ pin 2 ในการรับส่งข้อมูล (ใช้ pin ไหนก็ได้ที่สามารถรับส่งข้อมูลแบบ digital)
Dht11 _dht11(2);

void setup() {
	Serial.begin(9600);
}

void loop() {
	/*
	 * หมายเหตุ: ไลบรารีตัวนี้ไม่จำเป็นต้องเช็คสถานะการอ่านจากฟังก์ชั่น read() ว่าค่าที่อ่านได้นั้นถูกต้องหรือไม่
	 * เพราะค่าจะอัปเดตเมื่อ checksum ถูกต้องเท่านั้น ดังนั้นค่าที่อ่านได้จะถูกต้องเสมอ
	 */
	_dht11.read(); //อ่านค่าจากเซ็นเซอร์

	// พิมพ์ค่า ความชื้นในอากาศ หน่วยเป็น %RH
	Serial.print("Humidity: ");
	Serial.print(_dht11.getHumidity());
	Serial.print(" \%RH");

	Serial.print(",  "); // เว้นวรรค

	// พิมพ์ค่า อุณหภูมิ หน่วยเป็นองศาเซลเซียส
	Serial.print("Temperature: ");
	Serial.print(_dht11.getTemperature());
	Serial.println(" degree Celsius");

	// หน่วงเวลา 4 วินาที ก่อนอ่านค่าและแสดงผลครั้งถัดไป (ตรงนี้แล้วแต่ว่าต้องการให้อัปเดตค่าใหม่ช้า/เร็วแค่ไหน)
	delay(4000);
}

เมื่อเปิดดู Serial Monitor จะเห็นผลลัพธ์การทำงานดังนี้

DHT11_program_output

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธีปิดบัญชีผู้ใช้ Facebook แบบถาวร

บทความนี้เป็นวิธีการปิดบัญชีผู้ใช้ Facebook บนคอมพิวเตอร์ หากใครต้องการวิธีปิดบัญชีผู้ใช้บนมือถือ Android คลิกอ่านได้ที่บทความวิธีปิดบัญชีผู้ใช้ Facebook แบบถาวร บนมือถือ Android

ปกติเวลาเราต้องการจะปิดบัญชีผู้ใช้ Facebook เรามักจะเข้าไปที่ การตั้งค่า > ความปลอดภัย แล้วกด ยกเลิกการใช้งานบัญชีผู้ใช้ของคุณ แต่วิธีนี้จะเป็นแค่การระงับการใช้งานบัญชีผู้ใช้ Facebook แบบชั่วคราวเท่านั้น เมื่อเราลงชื่อเข้าใช้งาน Facebook อีกครั้ง ก็จะเป็นการกระตุ้นให้บัญชีกลับมาเปิดใช้งานได้ปกติอีกครั้งหนึ่ง

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

1.ให้คลิกลิงค์ด้านล่างนี้

https://www.facebook.com/help/delete_account

2.เมื่อเจอหน้าแบบนี้ ให้กดปุ่ม “ลบบัญชีผู้ใช้ของฉัน”

permanently-delete-facebook-account-1

3.จากนั้นจะมีช่องให้กรอกรหัสผ่านแสดงขึ้นมา ให้คุณกรอกรหัสผ่านที่คุณใช้ล็อคอินลงไป และจะมีช่องให้กรอก CAPTCHA เพื่อยืนยันว่าคุณไม่ใช่โปรแกรมอัตโนมัติ โดยระบบอาจให้คุณกรอกตัวอักษรตามภาพที่แสดงขึ้นมา หรือให้เลือกรูปภาพตามคำอธิบาย เช่น ภาพด้านล่างนี้ ระบบให้เลือกภาพที่เป็นดอกไม้ทั้งหมดเป็นต้น เสร็จแล้วให้กดปุ่ม “ตกลง”

permanently-delete-facebook-account-2

4.จากนั้นจะมีข้อความบอกเราว่า บัญชีผู้ใช้ของคุณจะถูกลบจริงๆ ในอีก 14 วัน โดยมีเงื่อนไขว่า ภายใน 14 วันนี้ ห้ามลงชื่อเข้าใช้งาน Facebook เลยแม้แต่ครั้งเดียว ถ้าทำได้หลังจาก 14 วันไปแล้วบัญชีของคุณก็จะถูกลบจริงๆ แบบไม่มีทางกู้คืนได้ แต่ถ้าภายใน 14 วันนี้เราลงชื่อเข้าใช้ก็จะเป็นการยกเลิกคำขอในการขอลบบัญชีผู้ใช้ครับ ซึ่งถ้าจะยื่นคำขอปิดบัญชีอีกครั้งให้ไปเริ่มทำตั้งแต่ขั้นตอนที่ 1 ใหม่ครับ

permanently-delete-facebook-account-3

YouTube Video – วิธีปิดบัญชีผู้ใช้ Facebook แบบถาวร

แบ่งปันสิ่งนี้บน