53 entries
From Assistant to Collaborator: How Natural Language Agents Shape the World
Published on
Natural language agents like Siri and Alexa are evolving through generative models and transformers, generating human-like responses and revolutionizing language processing. The future of these agents involves multi-modal capabilities for interacting with the physical world in healthcare and disaster relief. Responsible development and ethical use are important due to the agents' potential and risks, including the possibility of sentient AI models.
3x3: The Life-Changing Concepts That Have Driven My Personal and Professional Growth
Published on
Life is a journey full of twists and turns, ups and downs, and unexpected surprises. It is a journey that is shaped by various factors, including our personal experiences, values, and skills. Throughout my life, I have learned that there are certain skills and philosophies that have significantly influenced and driven my journey. These skills and philosophies have helped me navigate through the complexities of life, overcome obstacles, and pursue my goals with passion and purpose.
How to Split Large CSV Files into Equal Number of Rows using Pandas: A Step-by-Step Guide
Published on
When working with large datasets in CSV format, it can be challenging to process them efficiently. One solution to this problem is to split the large CSV file into smaller files with an equal number of rows using the Pandas library. This tutorial will show you how to split a large CSV file into smaller ones based on the given code.
ปัญญา
Published on
ปัญญา หรือในภาษาอังกฤษ wisdom น่าจะเป็นคำที่หลาย ๆ คนคุ้นหูกันเป็นอย่างดี แต่อย่างไรก็ตามก็เป็นที่น่าสงสัยสำหรับผู้เขียนเอง ถึงความหมายที่แท้จริงของคำ ๆ นี้ หลากหลายคำถามเกิดขึ้นมา
Flutter: วิเคราะห์อนาคตของ Flutter 2.2+
Published on
Google I/O งานอัพเดตใหญ่ประจำปีจาก Google ที่จะมาเปิดตัวนวัตกรรมใหม่ ๆ สำหรับผู้ใช้ทั่วไป และนักพัฒนา และในปีนี้ (2021) เอง ก็มีอัพเดตเกี่ยวกับ Flutter ใหม่ ๆ ในหลายเรื่องเช่นเดียวกัน และนั่นถือว่าเป็นสิ่งที่น่าสนใจมาก ๆ สำหรับอนาคตของ Flutter
JS: Event Bubbling and Capture
Published on
Event ถือได้ว่าเป็นหนึ่งในหลักสำคัญสำหรับการเขียนโปรแกรมด้วยภาษา JavaScript สำหรับการทำงานกับ Browser เพราะ Event ทำให้เราสามารถสร้าง Event handler (callback) สำหรับทำงานเมื่อมี Event ที่เราสนใจเกิดขึ้นนั่นเอง อย่างไรก็ตามยังมีอีกหนึ่งหลักการที่อาจไม่ได้พบได้โดยทั่วไป แต่หากเจอก็อาจสร้างความสนุกสนานการในการจัด การและพยายามทำความเข้าใจในสิ่งที่เกิดขึ้นก็ได้ นั่นก็คือ Event Bubbling and Capture นั่นเอง
คาดการณ์ Flutter Engage 2021
Published on
อีกไม่นานแล้วสำหรับ Flutter Engage งานใหญ่ประจำปีของ Flutter ที่จะมาอัพเดตรวมถึงปล่อยของใหม่ ๆ ออกมามากมาย ตอนนี้ก็ถึงเวลามาคาดการณ์กันดีกว่าว่าภายในงานจะมีอะไรบ้าง
Review: LINE Developer Day 2020 - The past and future of machine learning research
Published on
ใ น Session นี้ คุณ Masashi Sugiyama ได้มาพูดถึงใน 3 ประเด็นหลัก ๆ ด้วยกัน นั่นคือ Trend in ML Research, Our Research, Future ML Research
Flask: จัดการกับ Form ให้ง่ายขึ้นด้วย Flask WTForm
Published on
หากใครที่ได้เริ่มต้นใช้ Flask ร่วมกับ Jinja ซึ่งเป็น Template Engine และต้องจัดการกับ Form คงคุ้นเคยกับ request.form.get("name") อะไรประมาณนี้กันเป็นอย่างดี เพื่อเข้าถึงข้อมูลที่ส่งมาจาก Front-end แน่นอนว่า เมื่อได้รับข้อมูลมาแล้วเราจะต้องมีการ Validate หรือยืนยันว่าข้อมูลเป็นไปตามรูปแบบที่กำหนดไว้หรือไม่อีกครั้ง ก่อนนำข้อมูลไปจัดการต่อ หากเขียนเป็นขั้นตอนคร่าว ๆ เราจะได้ว่า
Flutter: วิธีแก้ปัญหาใช้ built_value แล้วเจอ Deserializing failed due to Error: Bad State No element
Published on
built_value Package ขวัญใจใครหลาย ๆ คน นี่เป็นหนึ่งใน Source Gen ที่ได้รับความนิยมมากที่สุด Package หนึ่งของชาว Flutter Developer อย่างไรก็ตามการทำงานกับมันอาจไม่ง่ายนัก และไม่ใช่ทุก Error Message ที่อ่านเข้าใจได้ง่าย
Flutter: วิธีแก้ปัญหาใช้ built_value แล้วเจอ Deserializing failed due to '_InternalLinkedHashMap <String, dynamic>' is not subtype of type 'Iterable<dynamic>'
Published on
built_value Package ขวัญใจ ใครหลาย ๆ คน นี่เป็นหนึ่งใน Source Gen ที่ได้รับความนิยมมากที่สุด Package หนึ่งของชาว Flutter Developer อย่างไรก็ตามการทำงานกับมันอาจไม่ง่ายนัก และไม่ใช่ทุก Error Message ที่อ่านเข้าใจได้ง่าย
Dart: เขียนโค้ดให้ดีขึ้นด้วยไฟล์ Analysis Options
Published on
การพัฒนาซอฟแวร์นั้นไม่เพียงแต่เป็นศาสตร์ที่ต้องใช้องค์ความรู้เท่านั้น หากแต่เป็นศิลป์ในการร้อยเรียงถ้อยคำเพื่อสั่งงานเครื่องจักรกลให้ทำงานตามที่เราต้องการด้วย แน่นอนว่าการพัฒนาซอฟต์แวร์ด้วยตัวคนเดียวนั้น เราจะเขียนโค้ดอย่างไร สไตล์ไหนก็ไม่มีใครว่า หากแต่เมื่อต้องทำงานเป็นทีมแล้ว สไตล์ในการเข ียนโค้ดของคุณอาจทำให้คนอื่นในทีมตกตะลึงก็เป็นได้
Dart: Cascade Notation .. (จุดจุด) ที่ไม่ได้ให้เติมคำลงในช่องว่าง
Published on
หลาย ๆ ครั้งที่เราพัฒนาโปรแกรมโดยใช้ภาษา Dart โดยเฉพาะเวลาใช้ Package ของคนอื่น หรือเวลาเราเปิด Tutorial เรามักจะได้เห็นสัญลักษณ์ .. ตามด้วยชื่อของตัวแปรหรือฟังก์ชัน ว่าแต่ว่าเจ้า .. หรือ Cascade Notation นี่มันมีไว้ทำอะไรกันนะ
Flutter: InteractiveViewer มาทำให้ Widget ของเรา Pan, Zoom กันเถอะ
Published on
หลายครั้งที่เรามี Content ที่มีขนาดใหญ่กว่าขนาดของหน้าจอหรือขนาดของ Parent Widget แต่เราก็ไม่อยากให้ผู้ใช้ของเราต้องสูญเสียข้อมูลที่อาจจะต้องการไป เช่น เรามีตารางขนาดใหญ่มาก จนตัวอักษรเล็กไปหมด แน่นอนว่าเราต้อง Zoom เพื่อให้เห็นได้ชัดเจนยิ่งขึ้น แต่นั่นก็จะทำให้ข้อมูลส่วนที่อยู่นอกหน้าจอหายไปด้วย จะดีกว่ามั้ยหากเราสามารถทำให้ผู้ใช้ของเรา Pan เลื่อนดูข้อมูลส่วนที่อยู่นอกหน้าจอได้ นั่นคือหน้าที่ของ InteractiveViewer นั่นเอง
K-Means Clustering VS Hierarchical Clustering สองอย่างนี้ต่างกันยังไง
Published on
สำหรับ Unsupervised Learning แล้ว เราคงหนีไม่พ้นการทำ Clustering เพื่อหากลุ่มตามธรรมชาติของข้อมูล ซึ่งทำให้เราสามารถเข้าใจและได้ Insight ใหม่ ๆ จากข้อมูลเหล่านั้น ตัวอย่างในการทำ Clustering ที่เรามักพบเห็นได้บ่อยก็จะเป็น K-Means Clustering และ Hierarchical Clustering แต่ว่าจริง ๆ แล้วทั้งสองแบบนั้นทำงานแตกต่างกันอย่างไร
Flutter: App Size Tool ส่องให้เห็นกันไปเลยว่าอะไรทำให้แอปเราบวม
Published on
แม้ว่าในปัจจุบัน Smartphone จะมาพร้อมขนาดของพื้นที่เก็บข้อมูลที่เพิ่มมากขึ้นในทุกปี โดยในปัจจุบัน Smartphone ส่วนใหญ่จะมาพร้อมความจุ 64 - 128GB (2020) อย่างไรก็ตามสิ่งที่นักพัฒนาแอปพลิเคชันต้องคำนึงไว้เสมอก็คือพื้นที่นั้นไม่ได้มีไว้ให้แอปขอ งเราทั้งหมด
Flutter: BuildContext Deep Dive รู้ให้ลึกกับ BuildContext
Published on
BuildContext สิ่งที่ปรากฎตัวแทบทุกที่ในโค้ดของเรา และเป็นสิ่งที่นักพัฒนา Flutter ต้องใช้ชีวิตอยู่กับมันให้ได้ หลายครั้งบางคนก็อาจไม่เข้าใจว่าเราจะใช้ Context ไปทำไม แต่นี่ไม่ใช่คอนเซปใหม่เลย ในหลายภาษา Context ก็ไปปรากฎตัวเช่นเดียวกัน
Flutter: วิธีแก้ปัญหาใช้ built_value แล้วเจอ Unknown type on deserialization. Need either specifiedType or discriminator field.
Published on
built_value Package ขวัญใจใครหลาย ๆ คน นี่เป็นหนึ่งใน Source Gen ที่ได้รับความนิยมมากที่สุด Package หนึ่งของชาว Flutter Developer อย่างไรก็ตามการทำงานกับมันอาจไม่ง่ายนัก และไม่ใช่ทุก Error Message ที่อ่านเข้าใจได้ง่าย
Flutter: เลขเวอร์ชันของ Flutter มีความหมายอย่างไรบ้าง?
Published on
เมื่อช่วงต้นปี (2020) ที่ผ่านมา Flutter ได้มีการปรับระบบการออกอัพเดท รวมถึงการตั้งเลขเวอร์ชันใหม่ เพื่อให้นักพัฒนาสามารถเข้าใจได้ง่ายขึ้น และผู้ที่สนใจจะช่วยก็สามารถช่วยร่วมพัฒนา Flutter ได้ง่ายขึ้นเช่นกัน
Flutter: runZonedGuarded เอาไว้ทำอะไรนะ?
Published on
การแยกประเภทของข้อผิดพลาดต่าง ๆ ออกจากกัน เช่น ข้อผิดพลดาที่เกิดจาก API ภายนอกที่แอปของเราเชื่อมโยงอยู่ หรือข้อผิดพลาดที่เกิดขึ้นจากแอปพลิเคชันของเราเอง เราอาจจะสามารถเขียน If-else มาดักการทำงานต่าง ๆ เห่านี้ได้ แต่จะดีกว่ามั้ยถ้ามีฟังก์ชันที่สวยงามและพร้อมให้เราใช้งานได้เลย
Flutter: Extract as a Widget VS Extract as a Method ใช้แบบไหนดีนะ?
Published on
2 วิธีหลัก ๆ ที่เรามักใช้กันในการสร้างความเป็นระเบียบของวิดเจ็ตทรี (Widget tree) ของเรานั่นคือ การแยกส่วนของโค้ดออกเป็นวิดเจ็ต (Extract as a Widget) และการแยกส่วนของโค้ดออกเป็นเมธอด (Extract as a Method) แน่นอนว่าทั้งสองแบบนั้นต่างช่วยให้เราสามารถนำโค้ดไปใช้ซ้ำได้ (Reusable code) แต่ควรจะใช้แบบไหนเมื่อใด และมีอะไรที่ต้องคำนึงถึงบ้าง บทความนี้จะพาไปตอบคำถามนั้น
Print Debugging ทำแบบนี้ดีไหมนะ?
Published on
การพัฒนาโปรแกรมกับบัคนั้นอาจเรียกได้ว่าเป็นของคู่กัน ไม่ว่าเราจะตั้งใจหรือไม่ก็ตาม บัคก็มีอยู่หลายแบบ หลายประเภท หากเป็นบัคที่เราพิมพ์ผิด Syntax หรือบัคตระกูล Compile-time Error แบบนี้เราอาจจะแก้ไขได้ง่าย เพราะว่า Compiler จะบอกเราถึงจุดที่เราผิด รวมทถึงในบางครั้งก็แนะนำวิธีแก้ให้กับเราเรียบร้อย
Flutter: อัพเดทจัดเต็มกับ Flutter 1.20, Dart 2.9.0 และ Dart DevTools 0.9.0
Published on
เมื่อวานนี้เอง (5/8/2020) ที่ทาง Flutter ได้ทำการปล่อยอัพเดทใหญ่ออกมาในชื่อ Flutter 1.20 ซึ่งถือว่าเป็นอัพเดทที่ใหญ่ที่สุดที่ Flutter เคยปล่อยออกมา โดยในเวอร์ชันนี้ยังมาพร้อมกับ Dart 2.9.0 และ Dart DevTools เวอร์ชันใหม่ 0.9.0 ที่มากันแบบเต็ม ๆ รวมไปถึงการอัพเดท Plugin สำหรับ IDE ต่าง ๆ อีกด้วย รายละเอียดจะเป็นอย่างไรบ้างนั้น ไปติดตามกันเลย
Dart: Extension Methods - มาเพิ่มความสามารถให้กับ Third-party Library กันเถอะ
Published on
การใช้งาน Third-party Library นั้นมีความสำคัญเป็นอย่างมาก อย่างไรก็ตามหลายครั้งที่เรามักมีความรู้สึกว่า "ถ้ามี xxx มาด้วยก็ดีสินะ" หรือ "อยากให้ xxx ทำแบบนี้มากกว่าแบบที่ให้มาจังเลย" ปัญหาเหล่านี้ หากเป็น Library ที่เราพัฒนาขึ้นมาเอง หรือเป็นส่วนหนึ่งของโปรแกรมของเราก็คงไม่ใช่ปัญหาอะไรที่จะไปแก้ไขโค้ดในส่วนนั้น ๆ ให้มีความสามารถมากยิ่งขึ้น
Dogfooding: หนึ่งในรูปแบบการพัฒนาผลิตภัณฑ์ ที่จะช่วยทำให้ผลิตภัณฑ์ของเราดียิ่งขึ้น
Published on
โลกของการพัฒนาผลิตภัณฑ์และบริการในปัจจุบันนั้นมีแนวคิดต่าง ๆ เกิดขึ้นใหม่มากมาย เพื่อช่วยให้ธุรกิจสามารถดำเนินการได้มีประสิทธิภาพมากยิ่งขึ้น Dogfooding ก็เป็นหนึ่งในแนวคิดเหล่านั้นเช่นกัน
Flutter: Triage Labels (Aug. 2020)
Published on
ใครมีโอกาสได้ลองไปกดดู Issues ของ Flutter บน GitHub คงได้เห็น Label มากมาย มีทั้งอันที่อ่านเข้าใจได้ทันที และอันที่อ่านแล้วไม่เข้าใจ ในบทความนี้เราจะมาดูกันว่าแต่ละตัวมีความหมายอย่างไรบ้าง เผื่อใครที่อยากรู้ว่าในอนาคตอันใกล้ Next Release ของ Flutter จะมีอ ะไรบ้าง หรืออยากช่วย Contribute ให้กับ Flutter
Flutter: อนาคตของ Flutter กับ iOS 14
Published on
ประมาณ 1 เดือนก่อนหน้า Apple ได้จัดงาน WWDC2020 ซึ่งได้มีการเปิดตัวระบบปฏิบัติการเวอร์ชันใหม่ ๆ สำหรับผลิตภัณฑ์ต่าง ๆ โดยได้มีการปล่อยเวอร์ชัน Beta ออกมา เพื่อให้นักพัฒนาได้นำไปทดสอบว่า iOS 14 จะไม่มีปัญหากับแอปพลิเคชันในปัจจุบัน โดยในสังคมของนักพัฒนา Flutter เองก็ได้มีหลายสิ่งที่น่าสนใจเกิดขึ้นกับ iOS 14 ที่กำลังมาถึง จะมีอะไรบ้างนั้น ไปติดตามกันได้เลย
Flutter: bloc และ flutter_bloc v6 มาแล้ว!
Published on
หลังจากที่ bloc v5 และ flutter_bloc v5 ได้ถูกปล่อยออกมาไม่นาน โดยมีการเปลี่ยนแปลงหลัก ๆ ในการนำ cubit มาเป็นพื้นฐานในการจัดการ State และสร้าง bloc on-top ขึ้นไปนั้น ไม่นานทางคุณ Felix Angelov ก็ได้ปล่อย bloc และ flutter_bloc v6 ออกมา โดยการเปลี่ยนแปลงหลัก ๆ จะเป็นการนำ cubit เข้ามาอยู่ภายใน bloc แทนที่จะเป็น Dependency ที่ bloc ไปเรียกใช้งาน นอกจากนี้ยังมีการปรับปรุงอื่น ๆ รวมถึงแก้ไขข้อผิดพลาด จะมีอะไรบ้างนั้นไปดูกันได้เลย
HTML: <wbr> - tag ดี ๆ ที่หลายคนมองข้ามไป
Published on
แน่นอนว่าการพั ฒนาเว็บไซต์ในปัจจุบัน เราต้องพัฒนาเว็บไซต์ให้มีความสามารถในการแสดงผลบนทุกอุปกรณ์ได้อย่างเหมาะสม สวยงาม และตอบสนองต่อความต้องการของผู้ใช้ ซึ่งนอกเหนือไปจากเรื่องของการจัดวางองค์ประกอบต่าง ๆ บนหน้าเว็บไซต์แล้ว เนื้อหาของเว็บไซต์เองก็ถือเป็นหนึ่งในสิ่งที่สำคัญเช่นกัน
หลักการพื้นฐานในการเขียนโค้ดที่ดีในทุกภาษา
Published on
แต่ละภาษาที่ใช้ในการเขียนโปรแกรมมักจะมี Best Practice หรือ Syntax ต่าง ๆ ที่เข้ามาช่วยเพื่อให้เราสวามารถเขียนโค้ดที่ดีขึ้น แน่นอนว่าการเขียนโค้ดให้ระบบของเราทำงานได้นั้นไม่ใช่เรื่องยากอะไร หากแต ่การเขียนโค้ดที่ดีนั้น มีองค์ประกอบต่าง ๆ มากมาย
Review: Digimon Adventure: Last Evolution Kizuna ถ้อยคำถึงคนที่ยังไม่อยากโต และหลบหนีไปอยู่ในความทรงจำของวัยเด็ก
Published on
Digimon การ์ตูนขวัญใจใครหลาย ๆ คนในวัยเด็ก และเป็นการ์ตูนที่ใครหลาย ๆ คนโตกับมันมา สำหรับ Digimon Adventure Last Evolution Kizuna นั้นก็ถือเป็นบทสรุปเรื่องราวการเดินทางที่เต็มเปี่ยมไปด้วยความหมายของความสัมพันธ์ระหว่างเด็กที่ถูกเลือกและดิจิมอนกว่า 20 ปี โดยภาพยนตร์การ์ตูนเรื่องนี้เป็นส่วนหนึ่งของโครงการฉลองครบรอบ 20 ปีของดิจิมอน
pub.dev เวอร์ชันใหม่มาแล้ว!
Published on
pub.dev เว็บไซต์คู่ใจนักพัฒนาที่ใช้ภาษา Dart และ Framework อย่าง Flutter สำหรับใช้ในการค้นหา Package/Plugin ต่าง ๆ เพื่อนำมาใช้งานใน Application ของเรา โดยที่ไม่ต้องเขียนโค้ดเองทั้งหมด ในวันนี้ได้มีการอัพเดทเวอร์ชันใหม่ของเว็บไซต์ ซึ่งไม่เพียงแค่รูปลักษณ์ที่เปลี่ยนไปเท่านั้น แต่ยังมีฟีเจอร์อำนวยความสะดวกใหม่ ๆ เพิ่มขึ้นด้วย!
Flutter: เพิ่ม Pull to Refresh ให้กับ ListView
Published on
หนึ่งในรูปแบบการใช้ง านที่เรามักจะเห็นได้บ่อยสำหรับการโหลดข้อมูลใหม่ ๆ จากฝั่งผู้ใช้งาน โดยเฉพาะบน Android หรือแอปพลิเคชันที่ทำตาม Material Guideline ก็คือการ Swipe to Refresh นั่นเอง โดยทั่วไปเรามักจะมี List ซึ่งเราสามารถดึงลงมาได้มากกว่าปกติจากบนสุดแล้วปล่อย โดยระหว่างนั้นก็จะมี Indicator มาหมุนโชว์ให้ดูว่ากำลังดาวน์โหลดข้อมูลใหม่ ๆ เมื่อเสร็จแล้วก็จะหายไปและมีข้อมูลใหม่มาโชว์ที่ List นั่นเอง
Casting vs Coercing
Published on
แทบทุกโปรแกรมที่เราเขียนกันขึ้นมา เราคงหนีไม่พ้นการเปลี่ยนประเภทของตัวแปร/ค่านั้น ๆ (Type conversion) ไม่ว่าจะเปลี่ยนเพื่อให้ทำงานได้ง่ายขึ้น หรือเพราะต้องการนำไปใช้กั บ Third-party library จริง ๆ แล้ว การเปลี่ยนประเภทตัวแปรนั้น แบ่งออกได้เป็นสองแบบหลัก ๆ นั่น ก็คือ Casting และ Coercing ในบทความนี้จะพาไปดูว่าสองแบบนี้ต่างกันอย่างไรบ้าง
Flutter: bloc และ flutter_bloc v5 มาแล้ว!
Published on
หลาย ๆ คนที่เลือก BLoC เป็นแนวทางในการ Manage State ภายใน Application คงหนีไม่พ้นที่จะต้องใช้ Packages bloc และ flutter_bloc ซึ่งช่วยให้เรามี Boilerplate code ลดลง โดยตอนนี้ bloc ก็ได้มีการอัพเดทครั้งใหญ่ (Major version update) เป็นเวอร์ชัน 5 เป็นที่เรียบร้อย ในบทความนี้จะพาทุกคนไปดูกันว่ามีการเปลี่ยนแปลงอะไรบ้าง
Flutter: Semantics
Published on
Application ที่ดี คือ Application ที่ทุกคนสามารถเข้าถึงแล้วใช้งานได้ Accessibility เป็นหนึ่งในเรื่องสำคัญที่ไม่เพียงแต่แสดงให้เห็นว่าเราเชื่อมั่นในความเท่าเทียมกันเท่านั้น แต่ในเชิงธุรกิจยังถือว่าเป็นการเปิดโอกาสใหม่ ๆ ในการเพิ่มฐานลูกค้าอีกด้วย ดังนั้นในบทความนี้จะพาทุกคนไปรู้จักกับ Semantics ซึ่งเป็นหนึ่งใน Widget ที่เกี่ยวข้องกับ Accessibility โดยเฉพาะผู้ใช้งานที่ใช้ Screen reader
Flutter: Flexible vs Expanded
Published on
บางครั้งเราต้องการให้ Widget ของเรา Take space ที่เหลือทั้งหมดของ Column/Row นั้น ๆ หรือ เราอาจต้องการให้ Widget แต่ละส่วนใน Column/Row ใช้ Space เท่า ๆ กัน แน่นอนว่า Widget 2 ตัว ที่มักถูกใช้รับมือกับสถานการณ์แบบนี้ คงหนีไม่พ้น Flexible และ Expanded แล้วทั้งสองตัวนี้ต่างกันอย่างไร?
JIT Compiler VS AOT Compiler
Published on
หลาย ๆ ครั้งที่เราเขียนโปรแกรมด้วยภาษาบางภาษา มักจะต้องการ Compiler เพื่อแปลงภาษานั้น ๆ ให้กลายเป็นอีกภาษาหนึ่ง เช่น TypeScript ที่จะถูก Compile ไปเป็น JavaScript หรือจาก Java ที่จะถูก Compile ไปเป็น Java Bytecode (ซึ่งถูกนำไปใช้รันใน JVM อีกที) สองประเภทของ Compiler ที่มักจะมาปรากฎให้เราเห็นกัน ก็คือ JIT Compiler และ AOT Compiler นั่นเอง โดยบทความนี้จะพาไปดูกันว่ามันแตกต่างกันยังไง
Flutter: Hot Reload vs Hot Restart vs Full Restart
Published on
หนึ่งในข้อได้เปรียบของการพัฒนา Mobile Application บน Flutter คือ Hot Reload ที่ช่วยให้การพัฒนา UI ในโลกของ Mobile Application Development เป็นไปได้ด้วยดียิ่งขึ้น เพราะเราะสามารถเหตุผลลัพธ์ได้(เกือบจะ)ทันทีที่มีการบันทึกไฟล์โค้ดของเรา ซึ่งเป็นผลมาจากทีมที่พัฒนา Flutter นั้น แต่เดิมเป็นทีมที่พัฒนาเกี่ยวกับเว็บซึ่งมีการแสดงผลอย่างทันทีที่มีการบันทึกไฟล์ และต้องการจะนำประสบการณ์แบบเดียวกันมาสู่การพัฒนาแอปพลิเคชันบนอุปกรณ์เคลื่อนที่นั่นเอง
Flutter: เพิ่ม Feedback สไตล์ Material ให้กับ Widget ด้วย InkWell
Published on
ไม่ใช่ทุกปุ่มและการ์ดที่เตรียมมาให้เราใช้งานใน Flutter จะตอบโจทย์การออกแบบได้ทั้งหมด Flutter เองก็ตระหนักถึงความต้องการนี้ดี จึงมี Widget ที่ชื่อว่า GestureDetector มาให้เพื่อมอบ Flexbility ให้มากที่สุดเท่าที่เป็นไปได้กับ Developer ในการรังสรรค์ UI อันสวยงามขึ้นมา แต่อย่างไรก็ตาม GestureDetector แม้ว่าจะมาพร้อมกับความสามารถสารพัด แต่ก็ไม่ตอบโจทย์เสมอไป
Flutter: TextField vs TextFormField ใช้ตัวไหนดีนะ?
Published on
หลาย ๆ คนที่อยากจะรับข้อความสั้น ๆ จากผู้ใช้งาน อาจจะรู้สึกสับสนว่าจะใช้ Widget ใน Flutter เนื่องจาก มีทั้ง TextFormField และ TextField ให้เลือกใช้งาน ในบทความนี้เราจะมาหาคำตอบกัน
OS จัดการกับ Main Memory ยังไงนะ? - Memory Partitioning
Published on
แน่นอนว่าระบบคอมพิวเตอร์หนึ่ง ๆ ต้องการพื้นที่สำหรับวางข้อมูลไว้เพื่อนำไปใช้ได้อย่างรวดเร็ว และ Main Memory ก็คือสิ่งที่เรากำลังพูดถึงกันอยู่นั่นเอง อย่างไรก็ตาม เราทุกคนต่างรู้ดีว่า Main Memory นั้นมีพื้นที่ต่อราคาที่ค่อนข้างแพงเมื่อเทียบกับ Hard Disk Drive (HDD) ด้วยเหตุนี้เองระบบปฏิบัติการ (OS) ก็ต้องพยายามทำอย่างไรก็ได้เพื่อให้การ บริหารจัดการ Main Memory เป็นได้ด้วยความคุ้มค่ามากที่สุด
Flutter: Package กับ Plugin ต่างกันยังไงนะ?
Published on
โลกของการพัฒนาซอฟต์แวร์ในปัจจุบัน เราแทบจะไม่เห็นโปรแกรมไหนที่ไม่พึ่งพา Public dependencies ในการพัฒนาอีกแล้ว อย่างน้อย ๆ พวก Utility ต่าง ๆ ในโปรแกรมที่เรามักจะใช้ประจำอย่างเช่น lodash Package ชื่อดังของ Node.js ที่แม้เราจะไม่ได้ใช้โดยตรงแต่หลาย ๆ Package ที่เราใช้ก็อาจจะนำมาใช้เช่นกัน
Dart: Sound Null Safety กำลังมาใน Dart 2.9!
Published on
หลายครั้งที่เรามักจะมีปัญหาโดยมีสาเหตุมาจาก Null เพราะว่าตอนเขียนโปรแกรมเราไม่อาจรู้ได้เลยว่าตัวแปรที่ส่งมาจะเป็น Null หรือไม่ รู้ตัวอีกทีก็ตอน runtime ที่โปรแกรม Error ให้ผู้ใช้เห็นไปแล้ว Null safety จะมาเปลี่ยนแปลงสิ่งเหล่านั้นไป
Flutter: การทำให้ Application รองรับ Dark Mode
Published on
แน่นอนว่าเราควรเคารพการตั้งค่าของผู้ใช้งาน หากผู้ใช้งานตั้งค่าให้ OS เป็น Dark Mode แล้ว ทุกแอพก็ควรเคารพสิ่งนั้น แล้วเราจะสามารถทำแบบนั้นได้อย่างไรบ้างใน Flutter?
Dart: Exception VS Error
Published on
แน่นอนว่าการเขียนโปรแกรมนั้นเราคงคาดหวังแต่ Happy Path ไม่ได้ หลายครั้งที่เราต้องคิดเผื่อเหตุการณ์ที่ไม่ได้เป็นไปในทางที่เราคาดหวังด้วย ซึ่งแน่นอนละว่าวิธีทั่วไปที่เราใช้กันในการรับมือกับเหตุการณ์ไม่คาดหวังก็คือ Error และ Exception นั่นเอง แต่สองคำนี้มันต่างกันยังไงละ?
REVIEW: Inferno เมื่อมนุษย์มีประชากรมากเกินไป
Published on
Dan Brown ถือได้ว่าเป็นหนึ่งในนักเขียนนิยายที่ไม่เพียงเขียนได้อย่างน่าติดตาม และชวนให้เราลุ้นตลอดทั้งเล่มด้วยภาษา และสไตล์การดำเนินเรื่องอันเเป็นเอกลักษณ์ เขายังถือเป็นอีกคนหนึ่งที่ชวนเราตั้งคำถามยาก ๆ ที่หลายคนไม่กล้าแม้แต่จะคิด หรือเลือกที่จะมองข้ามมันไป ตลอดการเดินทางของ Robert Langdon ตัวเอกในหนังสือชุด Robert Langdon ของเขา ตั้งแต่การผจญภัยในกรุงโรม ในเล่ม Angels & Demons ที่ชวนให้เรากลับมาตั้งคำถามเกี่ยวกับศาสนาในยุคปัจจุบันผ่านการเดินทางอันตื่นเต้นทั่วกรุงโรม พร้อมองค์กรลับอย่าง Illuminati ผ่าน Davinci Code ที่พาเราสำรวจความเป็นไปได้ในอีกแง่มุมหนึ่งของ Holy Grail ในตำนาน ตลอดจน The Lost Symbol ที่พาเราไปผ่าองค์กรลับที่มีอยู่จริงจนถึงปัจจุบันอย่าง Mason รวมทั้งทำให้เราฉุกคิดถึงสิ่งที่เราตามหามาตลอดว่ามัน คือ อะไรกันแน่ จนกระทั่ง Inferno
Flutter: Key สำคัญยังไงกันนะ
Published on
Key เป็นหนึ่งใน optional attribute ที่เราจะเห็นได้กับแทบทุก Widget ใน Flutter ซึ่งโดยทั่วไป เราก็มักจะไม่ได้ใส่ค่า Key เข้าไปโดยปกติ แล้วเวลาไหนบ้างละที่เราควรใช้ Key?
Flutter: จดจำตำแหน่งการ Scroll ใน ListView ด้วย PageStorageKey
Published on
หลาย ๆ คนคงเคยใช้แอพพลิเคชันที่จดจำตำแหน่งที่เรา scroll ไว้ เมื่อเราเปลี่ยนแท็บและกลับมาที่แท็บเดิม เช่ น Facebook เป็นต้น ในบทความนี้จะพาไปดูกันว่าเราจะทำแบบนั้นได้อย่างไรบ้างใน Flutter ของเรา
Parameter VS Argument มันต่างกันยังไงนะ !?
Published on
หลาย ๆ คนเขียนโปรแกรมมาสักพักย่อมหนีไม่พ้นที่จะสร้าง function (method/procerdure ในภาษาอื่น ๆ แต่ในบทความนี้จะขอใช้คำว่า function) ขึ้นมาใช้งาน ทั้งเพื่อการลดความซ้ำซ้อนของโค้ดชุดเดิม ๆ เพื่อให้เราสามารถนำไป reuse ได้ง่ายยิ่งขึ้น หรือจะเพื่อการ encapsulate ซ่อน logic ในการทำงานก็ตาม แน่นอนละว่าหลายครั้งที่เราสร้าง function ขึ้นมา เราต้องการที่จะรับข้อมูลรับเข้า (input) อะไรบางอย่างเข้ามาใน function ด้วย
Flutter: const vs final ใช้ยังไงดี!
Published on
หลาย ๆ คนถ้าได้เขียน Flutter มาสักพัก จะพบกับความแปลกประหลาดอย่างหนึ่งที่ไม่เหมือนภาษาอื่น นั่นก็คือ Dart ซึ่งเป็น programming language ของ Flutter มีทั้ง const และ final แล้วแบบนี้เราควรจะใช้ตัวไหนเมื่อไรดีละ!
Flutter: มีอะไรใหม่บ้างในเวอร์ชัน 1.17
Published on
Flutter 1.17 ถือได้ว่าเป็น major stable version แรกของ Flutter ที่ทำการปล่อยออกมาในปีนี้ (2020) และเป็นเวอร์ชันแรกที่เปลี่ยนมาใช้การนับเลขเวอร์ชันแบ บใหม่อีกด้วย
REVIEW: Home Sapiens/Homo Deus/21 Lessons for 21st Century มหากาพย์การเดินทางของมนุษย์
Published on
ปฏิเสธไม่ได้เลยว่า Yuval Noah Harari เป็นมนุษย์คนหนึ่งที่มีวิสัยทัศน์และนำเสนอแนวคิดออกมาได้อย่างหน้าติดตามผ่านตัวหนังสือ ดังจะเห็นได้จากหนังสือของเขาทั้งสามเล่ม ชายคนนี้ได้พาเราเดินทางผ่านห้วงเลาอันยาวนานตั้งแต่รุ่งอรุณแรงสุดของมวลมนุษยชาติไปจนถึงอนาคตอันใกล้ และไกลผ่านเรื่องราวต่าง ๆ อันเป็นเอกลักษณ์ที่ผสมผสานแง่มุมทางประวัติศาสตร์ เศรษฐศาสตร์ ศาสนา และชีววิทยาได้อย่างลงตัว