Tagged

Python

Python languages, packages and community related post

My first PyCon US experience (2021, Online)
Python

My first PyCon US experience (2021, Online)

หลายปีที่แล้วผมเคยพูดไว้ว่า หนึ่งในสิ่งที่ผมชอบเกี่ยวกับภาษา Python ที่สุดคือ Community ครับ และผ่านมาหลายปี ผมก็ยังยืนยันคำเดิมว่า Python Community เป็นหนึ่งใน Tech community ที่เปิดรับและเป็นมิตรมากที่สุดที่หนึ่งครับ และงานใหญ่ที

Backup Django ง่ายกว่านี้ไม่มีอีกแล้วด้วย django-dbbackup
Python

Backup Django ง่ายกว่านี้ไม่มีอีกแล้วด้วย django-dbbackup

ช่วงนี้ผมต้องมาขึ้น Django project ใหม่กับทีมครับ ซึ่งพอขึ้น Project ใหม่ หนึ่งใน Development workflow ที่มาคู่กันคือ การต้องเอา Database จาก Production กลับมาใช้ที่ Local development ให้ได้ เพื่อที่จะ debug ปัญหาหลายๆ อย่างได้กับ Data บน

10 Python libraries ที่เราชอบในปี 2018
Python

10 Python libraries ที่เราชอบในปี 2018

เป็นธรรมเนียมที่พึ่งสร้างเป็นปีที่สองกันครับว่า เราจะมามองย้อนกลับไปในปี 2018 ที่กำลังจะผ่านพ้นไปว่า Python Libraries ตัวไหนที่เราชอบบ้าง ของปีที่แล้วเราคัดมา 10 Libraries ปีนี้เราก็จะคัดมาอีก 10 เหมือนกันครับ แต่ลำดับไม่มี

PEP 8016 and the future of Python govenance
Python

PEP 8016 and the future of Python govenance

อย่างที่ทุกคนรู้นะครับว่า Guido ได้ถอดตัวออกจากการเป็น BDFL Role ที่เป็นมาอย่างยาวนานในช่วงกลางปีที่ผ่านมา แล้วการออกนั้นถึงแม้จะไม่ได้ effect กับ user อย่างเราๆ ท่านๆ แต่มีผลมากกับ Core developer ที่คอยดูแล CPython กับ Python Interpreter

เขียนงูให้วัวกลัวรายสัปดาห์ ฉบับที่ 2
Python

เขียนงูให้วัวกลัวรายสัปดาห์ ฉบับที่ 2

ข่าวประจำสัปดาห์Dropbox complete migrate to Python 3เวลานี้คงไม่มีใครไม่รู้จัก Dropbox นะครับ แต่อาจจะมีคนไม่รู้ว่า Dropbox เป็นหนึ่งในบริษัทที่ใช้ Python ใหญ่ที่สุดในโลก เฉพาะโค้ดของตัว Application Dropbox นี่ก็เกิน 1 ล้านบรรทัดแล้วครั

เขียนงูให้วัวกลัวรายสัปดาห์ ฉบับที่ 1
Python

เขียนงูให้วัวกลัวรายสัปดาห์ ฉบับที่ 1

ไอเดียนี้เริ่มจากอาทิตย์ที่แล้ว ที่รวบข่าวไว้ในโพสๆ เดียว แล้วก็เกิดไอเดียว่า ทำไมไม่ทำเป็น Newsletter เลยหละ มันเลยเป็นที่มาของโพสนี้และโพสต่อๆ ไปครับ โดย​ “เขียนงูให้วัวกลัว รายสัปดาห์” เราจะโฟกัสเฉพาะข่าวที่เกี่ยวข้องกับ Python

Share ประสบการณ์ Upgrade Python 3.7
Python

Share ประสบการณ์ Upgrade Python 3.7

ถ้าจะมีงานหนึ่งที่ผมทำแล้วรู้สึกสนุกและท้าทายทุกครั้งที่อยู่ที่ Pronto Tools ก็คือการอัพเกรดเวอร์ชั่น Python นี่แหละครับ ตอนผมเข้ามาทำงานใหม่ๆ ทีมใช้ Python 3.5 อยู่ปีที่แล้วเลยอัพเกรดเป็น 3.6 และในปีนี้เนื่องในโอกาส Python 3.7

สร้าง Load Test ง่ายๆ ด้วย Locust
Python

สร้าง Load Test ง่ายๆ ด้วย Locust

#pythontricks วันนี้ครับ พอดีวันนี้มีปัญหากับ API แล้วต้องทำ Load test แบบง่ายๆ เร็วๆ เลยไปเจอ locustio มาครับ และมันง่ายมากเลย Locust เป็น Load testing tool ตัวนึงครับ ผมไม่เคยใช้ตัวอื่นแต่พอมาใช้ตัวนี้ วันนี้ เช้

Patch ยังไงให้อ่านรู้เรื่อง
Python

Patch ยังไงให้อ่านรู้เรื่อง

สิ่งหนึ่งที่เราจะเจอหลังจากเขียน Unit Test มาได้ซักพักคือ มันจะมีบางอย่างที่เราควบคุมมันไม่ได้ครับ บางอย่างนั้นอาจจะเป็นไปได้ตั้งแต่ ค่าสุ่ม, เวลา, การอ่านเขียนไฟล์,​ การแก้ไข Database อะไรอย่างนี้เป็นต้น พอเรามาเจออะไรพวกนี้ มันจะเกิดคำถามขึ้นมาทันที

Python - ExitStack แบบสั้นๆ
Python

Python - ExitStack แบบสั้นๆ

วันที่ 7 ของ #PythonTricksEveryday วันนี้ขอเสนอ ExitStack() ครับ มาช้าหน่อยนะครับวันนี้ มัวแต่ตื่นเต้น 1,000 likes โอเค เข้าเรื่องดีกว่า ก่อนจะไปรู้จัก ExitStack เราต้องรู้จักสิ่งที่เรียกว่า context manager ก่อนครับ context manager

Why I love Python so much
Python

Why I love Python so much

ในโอกาสที่เพจ เขียนงูให้วัวกลัว ครบ 1000 likes ผมเลยคิดได้ว่า เออ อยู่ดีๆ ผมก็มาทำเพจเอามันส์ อยากเขียนอะไรก็เขียน แล้วก็มาสงสัยกับตัวเองบางครั้งว่า ทำไมเราถึงมีความรู้สึกอยากจะทำเพจนี้มากขนาดนี้ ผมเลยมองย้อนกลับมาหาตัวเองว่า ทำไม เราถึงชอบภาษานี้มากขนาดนี้ มั

Dedent your multiline string
Python

Dedent your multiline string

วันที่ 2 ของ #PythonTricksEveryday นะครับ ไหนๆ ก็เป็นวันสุดท้ายของการทำงานก่อนจะถึงวันหยุดยาว ขอแนะนำด้วย Tricks เล็กๆ ที่จะช่วยให้การทำงานกับ Multiline String เราดีขึ้นครับ สมมติว่าเรามี String ยาวๆ ที่ต้องมี Indent สวยๆ เช่น Email หรือ Code

The Power of Any / All
Python

The Power of Any / All

วันที่ 1 ของ #PythonTricksEveryday นะครับ วันนี้เปิดด้วยหนึ่งในเทคนิคที่ พอรู้แล้วก็ใช้ได้ตลอดเลย มันคือ built-in function ที่ชื่อว่า all() และ any() ครับ ไปดูสถานการณ์เลยดีกว่า สถานการณ์ที่เรามักจะเจอกันบ่อยๆ คือ เราต้องเขียน

Mock requests แบบสวยๆ ด้วย responses
Python

Mock requests แบบสวยๆ ด้วย responses

สิ่งหนึ่งที่เราเจอไม่ว่าจะช้าหรือเร็วคือ เมื่อเขียน Python ไปซักพักเราต้องยุ่งกับการยิง HTTP request ไปหา service ข้างนอก ซึ่ง Library ที่นิยมที่สุดในการทำสิ่งนี้ใน Python ก็คงหนีไม่พ้น requests นะครับ สมมติเรามีฟังก์

มารู้จัก Data classes กันครับ
Python

มารู้จัก Data classes กันครับ

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

#100DaysOfPyCon2018 Day6: Big-O: How Code Slows as Data Grows
Python

#100DaysOfPyCon2018 Day6: Big-O: How Code Slows as Data Grows

Talk ผมดูวนอยู่สองสามรอบ เพราะต้องการเก็บทุกเม็ดทุกหน่วยจริงๆ คือ ผมไม่เคยเจอ Talk ที่ดูแล้วตื่นตาตื่นใจขนาดนี้มานานมาก ตอนนี้ยกให้เป็น Talk อันดับหนึ่งในใจของ PyCon ปีนี้เลย ผมคิดว่า Talk นี้จะไม่สรุป Key Takeaway เพราะอยากให้คนที่มารู

#100DaysOfPyCon2018 Day5: Oops! I Committed My Password To GitHub!
Python

#100DaysOfPyCon2018 Day5: Oops! I Committed My Password To GitHub!

Key takeawayคนที่เคย commit password ลง Git มีอยู่ 2 ประเภท ประเภทแรกคือเผลอพลาดจริงๆ อีกประเภทคือบอกว่า commit สิแต่ไม่เป็นไรเพราะ… ซึ่งเพราะนี่มีหลายคนที่บอกว่า เพราะมันเป็น private repo แต่เราไม่ควรมองอย่างงั้นเพราะว่า Private Repo มันไม่ได้ encrypt เพราะฉะนั้นคนที่อยู

#100DaysOfPyCon2018 Day4: Visual Testing with PyCharm and pytest
Python

#100DaysOfPyCon2018 Day4: Visual Testing with PyCharm and pytest

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

#100DaysOfPyCon2018 Day3: Dataclasses: The code generator to end all code generators
Python

#100DaysOfPyCon2018 Day3: Dataclasses: The code generator to end all code generators

Key takeawaysSphinx ก็เอามาใช้ทำ Presentation ได้ แถมได้ document ที่อ่านง่ายกลับไปดูทีหลังได้ด้วยCode generator: tools that write code for you based on specificationdataclasses มี learning curve ต่ำมาก ถ้ามองสามารถมองได้สองมุมคือ data holder เหมือน namedTuple หรือเป็น boilerplate เอาไว้เขี

#100DaysOfPyCon2018 Day1: Pipenv: The Future of Python Dependency Management
Python

#100DaysOfPyCon2018 Day1: Pipenv: The Future of Python Dependency Management

Key takeaway: — กว่าจะมาเป็น pip ที่เราใช้กันทุกวันนี้ก็ผ่านอะไรมาเยอะมากตั้งแต่ยุค build tarball มายุค easy_install มาถึงยุค pip + virtualenv มันยาวนานมาก เพิ่งรู้ว่า easy_install ไม่มี easy uninstall แล้วสมัยนั้นมันลบกันยังไง — ข้อเสี

#100DaysOfPyCon2018 Day2: There and Back Again: Disable and re-enable garbage collector at Instagram
Python

#100DaysOfPyCon2018 Day2: There and Back Again: Disable and re-enable garbage collector at Instagram

Key takeaways — Garbage collector (GC) จะทำงานอยู่บนหลักการสองอย่างคือ Reference count กับ Copy-On-Write Semantic - Instagram disable GC ช่วยลด memory ได้จาก 500mb / process เหลือ 350mb / process (ลองคิดภาพ uWSGI ลดได้ขนาดนั้นแล้วรันซัก 100 กว่า process) - ใช้ perf ในการทำ profiling memory

Python Type Annotation: ทำไม Python ต้องเขียน Type ด้วย
Python

Python Type Annotation: ทำไม Python ต้องเขียน Type ด้วย

ตั้งแต่ Python 3.5 เป็นต้นมา Python ได้แปลงร่างจากภาษา Duck Typing เต็มตัว ให้มีความสามารถในการใส่ Type Annotation ในโค้ดซึ่งถูกพัฒนามาตั้งแต่ปี 2014 แต่ผมค้นพบว่าหลายๆ บริษัทการเขียน Type Annotation ในภาษา Python ยังไม่แพร่หลายอย่างที่มันควร ในบล็

10 Python libraries ที่เราชอบในปี 2017
Python

10 Python libraries ที่เราชอบในปี 2017

ช่วงท้ายปีเป็นช่วงที่คนส่วนใหญ่จะนั่งนึกถึงว่าเราทำอะไรมาบ้าง ตลอดปีที่ผ่านมา แล้วจะทำอะไรต่อไปในปีข้างหน้า ปกติแล้วทุกปีช่วงท้ายๆ ปีผมจะชอบรอ Tech Radar ออกซึ่งก็จะได้รู้จัก Tools และ Techniques ใหม่ๆ ที่ Proof แล้วว่