[.NET] ประกาศให้โลกรู้ว่า Method นี้ Class นั้น Obsolete ตกยุคแล้ว !!!

Update 2024-12-10จาก Code เล็กๆ เมื่อวันเวลาผ่านไป มันก็เติบโตขึ้น ผ่านการตัดต่อพันธุกรรมมาอย่างโชกโชน พร้อมกับภาระหน้าที่อันยิ่งใหญ่ แต่บาง Class บาง Method มันไม่ตอบโจทย์ทางธุรกิจแล้ว มันควรจะถูกกำจัดไปซะ แต่ Code มันบางส่วนมันใช้อยู่ เราจะทำอย่างไร เพื่อให้ทีม Develop ที่พัฒนาด้วยกัน เปลี่ยนไปเรียกใช้ Class หรือ Method ใหม่แทน !!! ทางแรก เราอาจจะประกาศแจ้งให้ในทีมทราบ แต่บางครั้งอาจจะมีหลงลืมบ้าง เพื่อป้องกันปัญหาระยะยาวทำแบบ Java ดีกว่า ตัว Java มันมีบอกว่า Code ส่วนไหนที่เลิกใช้ (deprecated) ไปแล้วครับ โดยในตัว .Net Framework / .NET Core / .NET 6++ มี Attribute ให้เรียกใช้ครับ คือ ตัว Obsolete ครับ สำหรับตัวอย่างมาลองดูจาก Scenario ดังนี้ครับ ขั้นแรก – เจรจาก่อน การใส่ Attribute Obsolete ไว้บน Method ที่เราต้องการ ในที่นี้ คือ ShiftWorkingDate ขั้นสอง – กระชับพื้นที่ เพิ่ม Message แจ้งเตือน ขั้นสาม – ขอคืนพื้นที่ หมดเวลาแล้ว กำหนด Flag เป็น true ครับ ถ้า Developer คนไหนยังไม่แก้ แก้เวลา Compile มัน Error ครับ สุดท้ายและ ทำไมถึงต้องมาเขียน เพราะ จาก Code เก่าที่ Migrate มา Method ShiftWorkingDay ที่ทำหน้าที่เลื่อนวันไปในกรณีที่เป็นวันหยุด…

[MICRO MBA] อบรมเสร็จแล้วได้อะไรบ้าง

Blog นี้ดองไว้นานเลย อบรมเสร็จวันที่ 5 ส.ค. 59 เพิ่งมาเขียน Blog สรุปเอาตอนสิ้นเดือน โดยสำหรับหัวข้อที่ผมได้ไปอบรมมา ขอแบ่งเป็นหมวด ดังนี้ครับ (ตอน อบรมจริง มันไม่เรียงกันนะครับ) Marketing – คิดนอกกรอบ จับจุดตี Requirement ให้ตรง Modern Marketing Concept Consumer Behavior Design IMC in digital การสื่อสารการตลาดดิจิตอล แบบ 360 องศา Marketing 3.0 & Consumer Experience Management Management – การจัดการใช้ได้หมด ไม่ว่าเป็นเรื่อง Business หรือ Software Strategy and Competitive Advantage Strategic Innovating & Balanced Scorecard Technique Leadership Development in Learning Society Logistic and Supply Chain Management Accounting – ทุกอย่างต้องบันทึก มีขั้นตอนหลักการเหมือน Programming รายงานการเงินสาหรับผู้บริหาร Finance –  เวลามีความสำคัญ มีข้อมูลรู้อดีต วางแผนอนาคต ปรับปรุงข้อด้อย การวิเคราะห์งบการเงิน กลยุทธ์การจัดการทางการเงินสมัยใหม่ Business Foundation – พูดดี นำเสนอดี สร้างความน่าเชื่อถือได้ Effective Public Speaking สำหรับอบรมครั้งนี้ แม้ว่าจะมาแบบงงๆ แต่ได้ความรู้เยอะครับ เสียดายเวลาน้อยไปนิด เลยไม่ค่อยรู้จักใครเยอะครับ ผมเป็นคนที่ปรับตัวเข้ากับสภาพแวดล้อมใหม่ๆ จะใช้เวลาเยอะมากกครับ ในการอบรมครั้งนี้เนื้อหาที่ผมชอบที่สุดเป็นเรื่องบัญชี และการเงินครับ เพราะ มันตรงกับงานที่ทำอยู่เป็น…

สรุปงาน Python/Hadoop for Young Data Scientist

ภาพจากเพจ Data Science Thailand https://www.facebook.com/DataScienceTh/photos/a.876705342372714.1073741831.869639369745978/1145673978809181/?type=1&theater

เมื่อวันเสาร์ อาทิตย์ที่ผ่านมา (20-21 สิงหาคม 2559) ผมได้ไปงานสัมมนา Young Data Scientist ครับ โดยงานนี้เป็น Course เริ่มต้นสำหรับผู้ที่สนใจในเรื่อง Data Science ครับ อ๋องานนี่จัดเป็นครั้งที่ 2 แล้วนะ สำหรับงานนี้จะเน้นในเรื่อง Python กับ Hadoop ครับ สำหรับผมที่เป็นสาย Developer อยู่แล้ว ขอเลือก Python ครับ (ตัว Hadoop เคยลอง Set up เล่นๆใน vm แล้ว แต่ถ้าในงานนี้เป็นการเล่นบน MS Azure Cloud ครับ) มาต่อที่ห้อง Python ดีกว่าครับ ห้องนี้สอนโดย ดร. กานต์ ครับ Python for Young Data Scientist * วันแรก Introduction to Python – รวมคำสั่งพื้นฐานที่จำเป็นสำหรับงานด้าน Data Science ครับ มาลองเล่น jupyter กัน มาศึกษา python ผ่านตัว jupyter Library Pandas – สำหรับการจัดการข้อมูลดิบครับ และดูสถิติพื้นฐานครับ ผมมองว่าเป็นการทำ ETL + สถิติครับ แนะนำ Machine Learning Library scikit-learn – เป็น Library สำหรับเรียนรู้ Machine Learning โดยมีอัลกอริทึมสำเร็จรูปมาให้ใช้งานครับ * วันที่สอง แสดงตัวอย่าง Python กับงานจริงครับ ผ่านตัวชุด DataSet ต่างๆ…

มาศึกษา python ผ่านตัว jupyter

จาก Blog ตอนที่แล้วเรื่อง มาลองเล่น “jupyter กัน” มันเป็นการศึกษา ลองเทสว่าใช้งานได้ก่อนมาเรียนครับ คราวนี้มาเรียนจริงและ โดย ดร. กานต์ (ไม่รู้เขียนชื่อ ถูกหรือป่าว ?) มาศึกษา python ผ่านตัว jupyter บ้าง โดยทำไมต้องใช้ jupyter ง่าย – เขียนเสร็จ Run ดูผลลัพธ์ได้เลย jupyter – สามารถเขียน Doc และ Code ร่วมกันได้ notebook – Workspace ที่เราใส่ Code ใส่ไฟล์ต่างๆลงไป เช่น TextFile หรือ JsonFile เป็นต้น แต่ละช่องที่ให้เราพิมพ์อะไรเข้าไป มันเรียกว่า Cell จากรูปมี 3 Cell ครับ มาดู Key ลัดใน jupyter ดีกว่า สำหรับในวันนี้ที่ผมใช้บ่อยๆ เป็นกลุ่มคำสั่งใน Command Mode เข้าได้โดยการกดปุ่ม ESC หรือ Ctrl + Enter ก็ได้นะ ตัว Cell เปลี่ยนเป็นสีฟ้า (ณ 2016-08-20 เผื่ออนาคตโปรแกรมมันเปลี่ยนสีครับ) เพิ่ม Cell : A – Aboove, B – Below ลบ Cell : D – Delete Ctrl + Enter : Run Code ใน Cell นั้น Shift + Enter : Run Code…

[C#] ทำไม int / int แล้วไม่มีทศนิยมหละ

พอดีผมได้ Port Code ในส่วน Business Logic อันนึงจาก VB6 มาเป็ C# แทน เพราะดูแล้วเขียนใหม่น่าจะรีด Performance ได้ดีกว่าครับ หลังจากผมใช้เวลาไปประมาณ 1 เดือน ในการยก Code ขึ้นมา Complile ผ่านนะ แต่ Run แล้ว ประกอบกับ UnitTest แล้วผลลัพธ์ผิด พอลอง Debug เข้าไปดูแล้วพบว่า C# int หาร int ได้ 0 VB6 ได้ค่าทศนิยมมาครับ ถึงตอนนี้เราต้องไปดูที่ C# Specification ครับ โดยตัวภาษา C# แบ่งเรื่อง Division operator เป็น 3 กลุ่มครับ Integer Division Floating-point Division – ตามหลักของ IEEE 754 arithmetic Decimal Division พออ่านมาถึงจุดนี้แล้ว ทำไม Microsoft ไม่ทำให้  Integer division แล้วได้ทศนิยมออกมาเลย หละ สำหรับผม ขอให้ความเห็น ดังนี้ครับ ความเร็ว พื้นฐานคอมพิวเตอร์ที่เราเรียนตอนนี้ยังเป็นระบบ Bit เลข 0 และ 1 ถ้าไม่สนใจทศนิยมมันทำให้กระบวนการคิดสั้นลงมาก (Simple & Fast) ไม่ต้องการสนใจพวก Rounding เพราะ ถ้าเราต้องการให้ Integer Division มีทศนิยมให้ได้เนี่ย สิ่งที่เราต้องเจอการ Rounding ครับ จากเหตุผลข้อที่แล้วคอมพิวเตอร์ไม่ได้คิดเลขแบบคนคิดแบบ 0 และ 1 และถ้าเคสที่หารแล้วได้ทศนิยมแบบ 0.6666666666 ระบบต้องมาหาวิธีปัดครับ ดูตามรูปจาก Wiki ดีกว่าครับ มีอัลกอริทึมที่เกี่ยวข้องด้วย เข้าใจสาเหตุแล้วการแก้ไขหละ…

มาลองเล่น jupyter กัน

ก่อนที่จะไปเรียนในวันรุ่งขึ้น ลองมาเล่น jupyter หรือ ชื่อเดิม IPython  โดยเจ้าตัวนี้เป็น Tools ที่รันบนเว็บเบราเซอร์ครับ เป็น IDE ที่ใช้งานง่ายตัวเลยครับ ติดตั้ง ถ้าลงตัว Anaconda มาแล้ว มีตัว jupyter ติดตั้งมาให้ในตัวครับ (ทางเว็บแนะนำครับ เพราะมันจะจัดการพวก Dependency ให้หมดเลย แต่ถ้าไม่มีสามารถใช้คำสั่ง pip3 install jupyter pip3 ของ Python3 ส่วนเวอร์ชั่น 2 ใช้คำสั่ง pip ครับ หลังจากลงเสร็จ สามารถเรียกใช้ผ่านคำสั่งผ่าน Command line ได้เลย jupyter notebook หรือ ถ้ามีลงตัว Anaconda ไว้แล้ว สามารถเปิดจากได้จากตัว Anaconda Navigator ได้เลยครับ รอสักพักมี Web Application เปิดขึ้นมาครับ ลองมา Hello World ครับ มาที่เมูน New ครับ เขียน Code และลอง Run ดูครับ สำหรับ Error SyntaxError: Missing parentheses in call to ‘print’ พอดีผมใช้ Python3 ครับ มันเลยให้คำสั่งบางคำสั่งของ Python2 ใช้งานไม่ได้ครับ รู้สึกว่าการกลับมาเขียน Python ในรอบ 3 ปีนี่มีอะไรเปลี่ยนไปเยอะเลยครับ

Data Science 0.121

Data = ข้อมูลดิบ ทำอะไรได้บ้าง ? ภาพนี้คงตอบได้หมดครับ ถ้าเรามีการจัดการกับข้อมูลที่ดี เราสามารถใช้ประโยชน์จากมันได้เต็มที่ครับ ถ้า Data เป็นวัตถุดิบที่ป้อนเข้าโรงงาน Information, knowledge, Insight และ Wisdom เป็นผลิตภัณฑ์ (Product) ที่ได้จากกระบวนการในขั้นตอนต่างๆครับ แล้วข้อมูลแต่ละแบบ บอกอะไรเราบ้าง ? ลองมาดูอีกมุม – Mind Map vs Mega Mind Map – Transaction Processing vs Event-Based Processing – อะไรที่ทำให้ Data Science ดัง งานด้าน Data Science – ใช้แผนภาพนี้น่าจะบอกได้ง่ายกว่า สำหรับในมุมของผม Data Science คือ งานในด้านการวิเคราะห์แบบหนึ่ง อย่าง System Analyst – เอาความต้องการของลูกค้ามาสร้างให้เป็นระบบงาน(Product) ขึ้นมาชิ้นนึง ส่วน Data Science เป็นงานที่สนใจนมุมของ Data เป็นพิเศษครับ ส่วนทำไม Blog ตอนนี้ชื่อ Data Science 0.121 โดย 0 = เริ่มต้น และ 121 เป็นวิชาสายคอมวิชาแรกที่ผมเรียนตอนปริญญาตรีครับ (CP121 – Computer Science Principle) แถมชอบ Repo นี้จัง ดูแล้วมัน Awesome

Anaconda: Test Drive

จากบทความที่แล้วที่เตรียม Environment มาแล้ว ผมลองเทสบางส่วน โดยอ้างอิงจาก conda 30-minute test drive. ครับ ตรวจ Version กันก่อนครับ ด้วยคำสั่ง conda –version มีคำสั่งเหมือนพวกฝั่ง Java เลยนะ มาดูว่าลงอะไรไปบ้าง ด้วยคำสั่ง conda info และก็มีตัว Anaconda Navigator ด้วยครับ เดี๋ยวถ้ามีอะไรเพิ่มเติมเดี๋ยวผมมา Note ใน Blog นะครับ นอนและครับ พุ่งนี้ต้องไปนั่งเขียน Test ก่อน

Anaconda: Data science platform powered by Python

เนื่องจากผมได้ไปสมัครอบรม “Python/Hadoop for Young Data Scientists” ที่จัดโดย Data Science Thailand ทันพอดีครับ ก็เลยลองหาข้อมูลเล่นครับ ว่ามี Tools อะไรที่น่าเล่นบ้าง ในส่วนของ Python ครับ หลังจากลองหาข้อมูลสักพัก ผมเจอ Tools ตัวนึงที่น่าสนใจครับ Anaconda เจ้า Anaconda  มองว่าเป็น Package ที่พื้นฐานจาก Python และเสริมด้วย Plug-in ต่างๆ สำหรับงานทางด้าน Data Science ตามคำอธิบายของมันเลยครับ “Anaconda is the leading open data science platform powered by Python.” โดยส่วนเสริมที่มี เช่น  IPython หรือปัจจุบันเป็น jupyter, NumPy, Tornado , statsmodels และ อื่นๆ ลองไปดูได้เลยตรับ  ต่อไปเป็นการติดตั้งสามารถ Download ได้ตามลิงค์ Anaconda เลยครับ รองรับทุกค่ายครับ ทั้ง Windows, Linux และ Mac ครับ (รู้สึกว่ามี  Plug-in พิเศษสำหรับแต่ละค่ายด้วย ถ้าเป็นตัว Windows เหมือนเป็นตัวเสริมที่เกี่ยวกับ VS2015 นะ) มี Package สำหรับ Python2 และ Python3 มีตัวฟรี และเสียเงินครับ สำหรับผมที่เป็น Developer ที่เขียน Python ครั้งสุดท้ายตอน 3 ปี ก่อนโน้น จึงยังไม่มีอะไรมากแนะนำมากครับ รอรื้อฟื้นพลังในวันเสาร์ตอนอบรมครับ ขอไปลง Anaconda Windows Edition ครับ ช่วงนี้เป็นเด็กสาย .Net Framework (C#) ครับ ตอนลงของผมเจอปัญหา ดังนี้ครับ Q…