มาศึกษา 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 เลยครับ สำหรับผมที่เป็น Developer ที่เขียน Python ครั้งสุดท้ายตอน 3 ปี ก่อนโน้น จึงยังไม่มีอะไรมากแนะนำมากครับ รอรื้อฟื้นพลังในวันเสาร์ตอนอบรมครับ ขอไปลง Anaconda Windows Edition ครับ ช่วงนี้เป็นเด็กสาย .Net Framework (C#) ครับ ตอนลงของผมเจอปัญหา ดังนี้ครับ

Pokémon Go เปลี่ยนวิถีชีวิตในวันหยุด

หลังจากเขียน Blog เกี่ยวกับ Pokémon Go มา 2 ตอนและ วันนี้มาเล่าวิถีชีวิตที่เปลี่ยนไปในวันหยุด เพราะ เกมนี้นะครับ โดยเริ่มจากสาเหตุ แถวบ้านไม่มี Pokéstop !!! ตอนแรกเรียกว่า Pokéshop เพราะ มันมีปุ่มรูกระเป๋าให้ใช้เหรียญทองซื้อของได้ (เหรียญมาจากการตี Gym ครับ) วางแผน ถัดมาเริ่มวางแผนและ โดยวันเสาร์อาทิตย์ได้ลองเดินจากบ้านมา ตามแผนผัง ดังนี้ครับ (จริงๆ ตอนแรกกะเดินไปเรื่อยๆ) แต่ผมไม่เปิดตัว AR นะครับ มันกินแบตครับ ออกเดินทาง ออกเดินทางประมาณ 11 โมง กินอะไรให้เรียบร้อย เตรียม Power Bank ไว้พร้อมเลย และก็แบก Notebook หลังจากลงหลักปักฐานเสร็จ เผื่อมาแกะ Code Market Price FI ด้วย ฮ่าๆ เป้าหมาย แถมจุดจับ Pokémon สุดท้าย Blog นี้เกิดขึ้น เพราะ ความสงสัย ว่าทำไมไข่มันฟักนานมากก เลยมาลองเดิน 2 วัน และวัดระยะด้วย Google Map ครับ ใกล้เคียงระดับนึงเลย 2 วันเดินได้วันละประมาณ 11 กิโลเมตรครับ สำหรับเกมนี้มันเป็นเกมที่นำ Character ของ Pokémon มาใช้ได้ดีเลยทีเดียว รวมถึงมี Business Model ที่ดีมากครับ รณรงค์คนออกจากบ้านได้ “ออกจากบ้าน ก็เสียเงินแล้วครับ” (สสส ต้องส่งเสริมต่อนะ แค่ขยับก็เท่ากับออกกำลัง) และการเดิน 2 วันนี้ไม่สูญเปล่านะครับ ก่อนกลับในวันอาทิตย์เจอตัวนี้ด้วย  

[C#] Pass By ?

C# Logo

Blog ตอนที่แล้ว ผมได้กล่าวสรุปไปแล้ว ว่าภาษา Java มีการส่งข้อมูล Pass by Value อย่างเดียว คราวนี้มาอีกภาษาที่ผมใช้ในการทำงานบ้าง C# จากโลกของ .NOT เฮ้ยย .NET ครับ  ซึ่งผมได้เขียน Code โดยปรับจาก Java ในบทความก่อน ดังนี้ ครับ ผ่านการ Test ไป 3 อันแล้ว หลายคนคงคิดและว่า C# มันต้อง Pass by Value เหมือน Java แหละ ไม่มี Pass by Reference หรอก แต่ผมบอกว่าคิดผิดครับ C# มี Keyword สุดแสบอีกอันครับ คือ ref  เพื่อบอกว่าตอนนี้ เราส่งข้อมูลแบบ Pass by Reference ครับ ทำงานมา 2 ปีในฝั่ง .Net ผมเพิ่งเคยใช้เป็นครั้งแรกแหละ 555 โดยผมเพิ่มอีก 2 Method เพื่อทดสอบครับ คือ ChangeNameVer4 และ ChangeNameVer5 ครับ หลายคงอาจจะคิดว่า ChangeNameVer4 และ ChangeNameVer5 มันคล้ายกับ Code เก่าที่ผมเขียน หรือป่าว ? คำตอบ คือ เกือบคล้ายครับ สังเกตุดีๆที่ Parameter มี Keyword ref อยู่ครับ จากนั้นผมแก้ที่ Method main แล้วทดสอบ Run ครับ System.NullReferenceException ครับ Error สมใจเลย และ แสดงว่า C# Pass…

Google Maps: Pokémon Challenge ในวัน April fool’s day มาสู่ความจริงใน Pokémon Go

หากใครได้ติดตามพวกข่าว หรือ Clip Video ในวันสำคัญต่างๆแล้ว พวกบริษัทยักษ์ใหญ่ด้าน IT เช่น Google มีมาเล่นกับเค้าด้วยนะ ลองย้อนกลับไปปี 2014 ในวันโกหก หรือ  April fool’s day ลองดู Clip กับได้เลย และในปีนี้ 2016 มีตัว Pokémon Go จาก Niantic, Inc บริษัทลูกของ Google กับ Nintendo ครับ และหลังจากเปิดตัวมาไม่นาน ข้อมูลสถิติต่างๆ ดังนี้ครับ ผมอ้างอิงมาจาก Post ของคุณหมอ Panutat Jimmy Tejasen ครับ ส่วนตัวมองว่าเกมนี้เป็นการตีตลาดได้ตรงจุด เพราะ ผู้ใหญ่หลายๆคน ในตอนนี้ ตอนเมื่อ 10 กว่าปีที่แล้วยังเป็นเด็ก และใฝ่ฝันที่ลองจับ Pokémon จริงๆ ในสภาพแวดล้อมจริง แต่เทคโนโลยียังไม่เอื้ออำนวยครับ อย่างตัว Location-based Service, Augmented Reality(AR) น่าจะเข้ามาใช้งานจริงๆ ช่วงประมาน 4-5 ปีที่ผ่านมาเองครับ (ช่วงนั้น ผมยังเรียนอยู่ช่วงปี 3 เองครับ) ผมมีเขียน Review ใน ฺBlog ตอน หนึ่งวันกับ Pokémon GO นะครับ และปิดท้ายด้วย Post ของ เพจ 3DS Interactive ครับ ที่ได้กล่าวถึงปัญหา และอุปสรรคต่างๆ ผู้สร้าง Pokemon Go ต้องผ่านอะไรมาบ้าง ผู้สร้าง Pokemon Go ต้องผ่านอะไรมาบ้าง ทำเกมส์ให้ดังข้ามคืน มันยากตรงไหน? มาดูกัน! . . เกมส์ Pokemon Go เปิดให้โหลดไม่กี่วัน ปัจจุบันมียอดดาวโหลดมากกว่า 10 ล้าน มีคนเล่นต่อวันสูงกว่า Twitter คนใช้เวลาเล่นต่อวันนานกว่า Facebook…

[.NET] Set Visual Studio ให้ Break All Error

ถ้าใครเคยใช้พวก Feature อย่าง VB6 (เก่าไปหน่อย) มันมี Feature นึง ที่มันเจ๋งมากครับ ในมุมของผม “Break All Error” ถ้า Debug Code แล้ว Error อะไร มันมาชี้ไปบรรทัดที่มีข้อผิดพลาดให้ครับ กลับมาที่ฝั่งของ .Net บ้าง ตัว Visual Studio ตอนแรกจะไม่เปิดให้ทำครับ เพราะ อยากให้เขียน try – catch ให้ เรียบร้อยมากกว่าครับ แต่ถ้าต้องการใช้จริงๆ สามารถเปิดได้ครับ โดยมีวิธีการ ดังนี้ แล้ว Common Language Runtime Exceptions คือ อะไร ? มันก็แปลตัวตามนะครับ ก็คือ Exceptions(ข้อผิดพลาด) ของตัว Common Language Runtime(CLR) ครับ โดยตัว CLR เป็นตัวจัดการไม่ว่าเราเขียนด้วยภาษา C#, VB.NET หรือ F# เป็นต้น ที่ Compile ออกมาแล้ว ได้เป็น Common Intermediate Language (CIL) ให้มันสามารถทำงานได้บนสภาพแวดล้อมต่างๆ ไม่ว่าจะเป็น Windows หรือ Linux (อันหลังเขียนได้และ 555 Microsoft ♥ Open Source แล้ว) สำหรับวิธีนี้ ผมใช้กับ Code ที่มันเขียนไม่สวย มีการ จัดการ Exception ได้ไม่ดีครับ จะได้ไม่ต้องไปไล่ Code เพราะให้ตัว Debugger หาครับ และให้ Break ตรงจุดที่ Code นั้นมีปัญหาเลยครับ และถ้า เราสนใจ Exception…