By Arnon Puitrakul - 18 พฤษภาคม 2022
ปกติเวลาเราเขียนโปรแกรมออกมาจริง ๆ อะ บ้างแหละ ที่เราเขียนออกมาเป็น GUI แต่ส่วนใหญ่แล้ว โปรแกรมที่เราใช้งานกัน เอาแบบ Developer หรือพวก Server ใช้งานกันก็จะอยู่ในรูปแบบของ Command Line ซะส่วนใหญ่ รุ่นใหญ่เขาใช้กันเว้ย แต่มันก็ดูเหือดแห้งเหลือเกิน เราอาจจะเคยเห็นบางโปรแกรมที่มีพวก Animation หรือการใส่สีลงไปใน Command Line ได้ด้วยเหมือนกัน สำหรับใน Python เองก็มี Library ที่ทำอะไรแบบนี้เหมือนกันคือ Rich นั่นเอง
// Conda
conda install rich
// Pip
pip install rich
เรามาติดตั้ง ความรวย กันดีกว่า ชื่อก็คือ รู้สึกถึงเงินแล้ว เราสามารถติดตั้งมันได้จาก Package Manager ที่เราใช้งานตรง ๆ ได้เลย เช่น Conda และ Pip เป็นต้น
เรามาเริ่มกับอะไรที่ Basic กันก่อนดีกว่า คือ การใส่พวก สี และ Style ให้ตัวหนังสือ เช่น ตัวหนา ตัวเอียงอะไรแบบนั้น มันก็ทำได้เหมือนกัน แล้วบอกเลยว่า โคตรง่าย
from rich import print
print("If you [u]smoke[/u] [i](what you [green]smoke?[/green])[/i] I got the [u]haze[/u] [bold purple](Purple Haze)[/bold purple]")
เราแค่เรียกคำสั่ง print ออกมาจาก rich ตรง ๆ ได้เลย มันก็จะไปทับ คำสั่ง print ปกติออกไป แล้วเราก็สามารถใส่ Styling ได้ตามที่เราต้องการเลย เช่น u ก็คือ Underline หรือขีดเส้นใต้ นอกจากนั้น เราก็สามารถใส่สีได้ด้วย ผ่านการพิมพ์ชื่อสีเข้าไปตรง ๆ ได้เลย
เราก็จะได้แบบด้านบนเลย เราจะเห็นว่า ตรงที่เราใส่เขียว มันก็จะเขียวเลย กับตรงที่เราใส่ bold purple มันก็จะได้ออกมาเป็นตัวหนาสีม่วง แค่นี้ก็ทำให้มันอลังการแล้ว แต่ ๆๆ มันยังไม่หมด
>>> dir(list)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
เวลาเราเรียกพวก Method อยากรู้ว่ามันทำอะไรได้บ้าง เราก็จะเรียกมันออกมาเช่น อยากรู้ว่า list ในนั้นมันมีอะไรบ้าง เราก็สามารถใช้คำสั่ง dir(list) ตรง ๆ ได้เลย แต่เราจะเห็นว่า มันก็แอบดูยากไปหน่อย ไม่สวยงามเลย ใน Rich เองมันก็มีอะไรแบบนี้มาให้เราด้วย
from rich import inspect
inspect(list, methods=True)
เราก็จะได้แบบด้านบนเลย มันก็จะแสดงออกมาเลยว่า มันเป็นอะไร แล้วในนั้นมันมี Method อะไรบ้าง พร้อมกับบอกเลยว่ามันทำอะไร ถ้าเราไม่ได้ใช้ List เราก็ต้องเข้าไปเปิดทีละคำสั่งว่าอันไหนมันทำอะไรยังไงบ้าง แต่อันนี้เขาทำมาให้เราหมดแล้ว ดีมาก ๆ เวลเราเขียนโปรแกรม
อีกหนึ่งอย่างที่เราใช้เยอะมาก แล้วมันดีมาก ๆ คือ การทำ Logging ปกติ เราก็ใช้งาน Logging ใน Python อยู่แล้วนะ เพราะมันทำให้เราจัดการ Log ได้ง่ายมาก ๆ ตั้งแต่การบอกปลายทางว่า เราจะออกหน้าจอ และออกไฟล์อะไรแบบนั้น
Logging ใน Rich ก็ทำมาให้ง่ายเลยละ ถ้าเราคุ้นเคยกับ Logging ใน Python อยู่แล้ว เราก็แค่กำหนด Style ของ Log แล้วใช้งานผ่านคำสั่งของ Python Log ได้ตามปกติเลย ดังนั้น เราแทบไม่จำเป็นต้องเปลี่ยนแปลง Code เยอะเลย เพื่อให้เราสามารถมาใช้งานบน Rich ได้ ที่เหลือ ก็น่าจะเป็นแค่การตกแต่งให้เรียบร้อยเท่านั้นเอง
จริง ๆ Rich ทำได้เยอะกว่านี้มาก ๆ เช่น พวก Progress Bar จนไปถึงพวกการวาดตาราง และพวก Markdown ทำได้หมดเลย คือ เราทำได้ตั้งแต่ CLI ง่าย ๆ จนไปถึงพวกที่เป็น Rich CLI อลังการงานสร้าง แบ่ง Panel แล้วทำงานนั่นนี่ได้แบบ สุด ๆ ไปเลย พวกนี้ที่เหลือ ก็ขึ้นกับจินตนาการของเราแล้วละว่า เราจะเอามันมาทำอะไร แต่ส่วนใหญ่ที่เราใช้งาน เราก็ใช้งานในส่วนที่เราเอามาเขียนให้อ่านกันวันนี้เลย
ใน Synology NAS มีความสามารถนึงที่น่าสนใจคือ การใช้ SSD เป็น Cache สำหรับระบบ ที่ทำให้ Performance ในการอ่านเขียน เร็วขึ้นกว่าเดิมมาก ๆ แน่นอนว่า เราลองละ วันนี้เราจะมาเล่าให้อ่านกันว่า หากใครคิดที่จะทำ มันเหมาะ หรือ ไม่เหมาะกับการใช้งานของเรา...
เรื่องราวเกิดจากการที่เราต้องย้าย Add-on Package ใน DSM และคิดว่าหลาย ๆ คนน่าจะต้องประสบเรื่องราวคล้าย ๆ กัน วันนี้เราจะมาเล่าวิธีการว่า เราทำยังไง เจอปัญหาอะไร และ แก้ปัญหาอย่างไรให้ได้อ่านกัน...
การใช้ Docker CLI ในการจัดการ Container เป็นท่าที่เราใช้งานกันทั่วไป มันมีความยุ่งยาก และผิดพลาดได้ง่ายยังไม่นับว่ามี Instance หลายตัว ทำให้เราต้องค่อย ๆ SSH เข้าไปทำทีละตัว มันจะดีกว่ามั้ย หากเรามี Centralised Container Managment ที่มี Web GUI ให้เราด้วย วันนี้เราจะพาไปทำความรู้จักกับ Portainer กัน...
ปกติหากเราต้องการจะเปิดเว็บสักเว็บ เราจำเป็นต้องมี Web Server ตั้งอยู่ที่ไหนสักที่หนึ่ง ต้องใช้ค่าใช้จ่าย พร้อมกับต้องจัดการเรื่องความปลอดภัยอีก วันนี้เราจะมาแนะนำวิธีการที่ง่ายแสนง่าย ปลอดภัย และฟรี กับ Cloudflare Tunnel ให้อ่านกัน...