Code Mania 11: Raise the Bar

เมื่อวันเสาร์ที่แล้ว ผมได้ไปงาน Code Mania 11 โดยมีเรื่องน่าสนใจ ดังนี้

Session ตอนเช้า

  • Wongnai Engineering Story
    • ในช่วงนี้เป็นการเล่าถึงการจัดการด้าน Infrastructure ของ Wongnai ว่าตั้งแต่เริ่มต้นจาก Mac เพียง 1 เครื่องทีตั้งไว้ที่ CAT จนมีปัญหาที่ละ เรื่อง และทำให้ย้ายไปใช้ Cloud ในแต่ละชั้น ดังนี้ครับ
      • ระบบเมล์
        • เดิมใช้ MailChimp แต่เมื่อมี User เยอะขึ้น ค่าใช้จ่ายเยอะ
        • ใหม่ใช้ Amazon SES แต่ต้องมีการปรับ Rate การส่งด้วยนะครับ
      • App Server
        • เดิมวางที่ CAT ปัญหา
          • ฺBandwidth
          • การจัด Index ของ Google , SEO
        • ใหม่ ยกไปที่ AWS มีปัญหาที่ตามมา
          • การ Migrate พวก Text ไม่มีปัญหา แต่พวก Image ต่างๆ ต้องทำ Tools เพื่อช่วย Migrate หลักๆจะดึงจาก Cloud แต่ ถ้าไม่มีข้อมูลต้องไปดึง AppServer เดิมที่ CAT แล้วยกมาใส่ใน AWS
          • Mobile App ที่ User ใช้เยอะ แต่ User ต้องไม่รู้ว่ามีการเปลี่ยนแปลงใดๆ Zero Downtime
    • อีกส่วนเป็นปัญหาของ DB ที่ใช้ MySQL ซึ่งก็รู้ๆกันอยู่ว่า
      • ถ้าหากฐานข้อมูลใหญ่ จะทำให้ Performance ลดลงครับ พอผมได้ฟัง Session นี้แล้ว นึกถึง Blog ที่ดองไว้นานมากเลยมาเขียนให้เรียบร้อยครับ 555 (Idea คล้ายๆกันเลยครับ)
      • ปัญหาในการ Merge Schema เนื่องจากมี Product 2 ตัว พอมีการ Merge ทำให้ต้องมีการ Migrate และต้องใช้ I/O เยอะ แต่ทาง AWS RDS ไม่ได้ยอมให้ใช้  I/O สูงสุดครับ (AWS มีค่า IOPS ครับ) แต่จะให้ใช้เป็นช่วงเวลานึงเท่านั้นครับ ทาง Dev ต้องใช้ช่วงเวลานี้ให้เกิดประโยชน์สูงสุดครับ

      Jpeg

    • ใช้ Apache Solr สำหรับการ Search ซึ่งเหตุผลที่ไม่ได้ใช้ AWS ElasticSearch เพราะไม่อยากยึดติดกับ Platform AWS มาเกินไป
  • Like Behaviour on Facebook Pages
    • อันนี้เป็นงานวิจัยของนิสิต ป.เอก ของ ม.จุฬา ที่สนใจข้อมูลของการ like โดยทำ bot เพิ่มเก็บข้อมูล โดยใช้ Graph API ที่ทาง Facebook เตรียมไว้ให้ครับ และใช้ Tool ชื่อ Tableau มาทำ Data Virtualization ให้เห็นภาพมาขึ้นว่าแต่ page แต่ละหมวด มีพฤติกรรมอย่างไร แล้วมีช่วง peak time ในเวลาไหนบ้าง
  • Hello! Functional Programming
    • ในที่นี้น้องเค้าได้ยกตัวอย่างด้วยภาษา Scala ครับ
    • จุดเด่นของ Functional Programming
      • เขียน Code แล้ว เข้าใจได้ง่ายขึ้น
      • เข้าใจถึงการเปลี่ยนแปลงภายใน แต่ละ Function
      • สามารถทำ Parallel ได้ง่ายครับ
  • เปิดตัวสมาคมโปรแกรมเมอร์ไทยครับ โดยมีจุดประสงค์ ดังนี้ครับ
    Jpeg

    • พัฒนาทักษะ จัดโครงการอบรมให้ราคามิตรภาพ
    • สร้างเครือข่าย
    • เป็นตัวกลางระหว่างผู้ว่าจ้าง และตัวโปรแกรมเมอร์เอง อาทิ เช่น การเตรียม Template เอกสาร ที่เกี่ยวข้องกับสัญญาให้ หรือเป็นศูนย์กลางในการพบปะครับ
    • สร้างพื้นที่ และโอกาศใหม่ๆ
    • ช่วยเหลือ สนับสนุน ในการจัดกิจกรรมต่างๆ

คั่นเวลาด้วยอาหารเที่ยงกันครับ อิอิ (ถ้าใครติดตาม Instagram ผม จะรู้ว่ามีแต่อาหาร 5555)

Jpeg

Session ตอนบ่าย

  • Test Double Patterns with Python
    • ติดไว้ก่อน ขอทำความเข้าใจแล้วเขียน blog แยกครับ
  • บุกป่าผ่าดง IF
    • ภาพรวม คือ การทำให้ Code มี if น้อยที่สุดครับ และให้แต่ละ Function/ Method มีความซับซ้อนน้อยที่สุดครับ โดยวัดจาก Output ที่เป็นไปได้
    • ส่วนตัวยังมองว่าถ้าหากระบบงานใหญ่ๆ มี if ได้ แต่ควรใช้ให้มีประสิทธิภาพมากที่สุด
    • สำหรับ Blog (FizzBuzz Problem without if) ที่เกี่ยวข้อง ผมได้เขียนไว้แล้วครับ เมื่อนานมาแล้ว ลองไล่อ่านทีละตอนดูครับ

Jpeg

  • Acceptance test driven development โดยพี่รูฟ ซึ่งผมได้เขียน Blog แยกไว้แล้วครับ 😀

Jpeg

  • Building and Maintaining OpenSource Projects
    • เล่าถึงที่มาก่อนว่า Open Source เป็นอย่างไร มีรูปแบบ license กับ copyright แบบไหนครับ
    • พูดถึงโครงสร้าง และรูปแบบการทำงาน โดยยกตัวอย่าง Joomla เค้าทำอย่างไร ถึงมีเงินทุน และมีนวัตกรรมใหม่มาตลอด จากนั้นพูดถึงการที่เราจะเข้าไปมีส่วนร่วมกับโครงการ Joomla ทำอย่างไรบ้าง เช่น 
      • เข้าไปร่วมทดสอบ ช่วยตรวจสอบ Issue ที่เกิดขึ้นครับ
      • ช่วยปรับปรุง แก้ไข code โดยการส่ง patch เข้าไป แต่ต้องมีคน Review 3 คนก่อนนะครับ
      • และงานส่วนอื่น อาทิ เช่น ช่วยทำเอกสาร แปล เพียงเท่านี้คุณมีชื่อขึ้น ในแต่ละ Release แล้วครับ
  • Functional Reactive Programming
    • สำหรับ Section ผมมองว่าเป็นการต่อยอดจาก Session ตอนเช้าครับ Hello! Functional Programming
    • กล่าวถึงปัญหาของ Web-Application ที่มีการทำ Asynchronous เยอะมาก (โดยยก Case Study ของ Netflix) จนเกิดปัญหามากมาย เช่น
      • Race Condition มี Thread หลายๆตัว ที่พยายามเข้าไปแกข้อมูลชุดเดียวกัน
      • Memory Leak ที่เกิดจากการ Subscribe แต่ไม่เคย Unsubscribe
      • Callback Hell มีการเรียก Function ซ้อนกันไปเรื่อยๆ ซึ่งยากแก่การทำจัดการ Error Handling และ Code จะผูกมัดกันด้วย
      • ต้องเข้าใจตัว State Machine ของงานที่ทำว่ามีความซับซ้อนระดับไหน
    • ตัวอย่างเพิ่มทำความเข้าใจ Reactive Programming ครับ RxMarbles
      • โดยเจ้าตัว Reactive Programming แก้ปัญหาที่กล่าวไปในข้างต้น โดยนำเอา Design Pattern มาปรับใช้ ได้แก่ Iterator และ Observable มาใช้ร่วมกัน เพื่อปรับ Event ที่ยิ่งเข้ามาเรื่อยๆให้เป็น Sequential
      • และมันเป็น Functional Programming ทำให้ Code เข้าใจง่าย และ Test ง่ายครับ
    • ข้อมูลเกี่ยวกับ API ReactiveX

ปิดท้ายด้วยห้องสมุดอันใหม่ของคณะวิศวกรรมศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย สวยจัง อยากเข้ามาเรียน ฮ่าๆ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.