7 Advanced Projects ที่ช่วยพัฒนาทักษะ Programming ของคุณ

09-ก.พ.-22

คัมภีร์เทพ IT

โลกของการพัฒนา Software เปลี่ยนแปลงไปอย่างมากตลอดหลายปีที่ผ่านมา ทำให้ Developers จำเป็นต้องพัฒนาทักษะเพิ่มขึ้นตามไปด้วย วิธีที่ดีที่สุดในการทำความเข้าใจว่า Technology ที่ซับซ้อนทำงานอย่างไร ก็คือ การสร้างมันขึ้นมาใหม่ด้วยตัวเอง นอกจากจะทำให้คุณเรียนรู้เพิ่มขึ้นแล้ว ยังทำให้คุณรู้จักใช้งาน Tools ต่าง ๆ อีกด้วย และบทความนี้ก็เป็น 7 Advanced Projects ที่ช่วยพัฒนาทักษะ Programming ของคุณ

1. สร้างโปรแกรม Calculator

อาจดูเหมือนเป็นเรื่องง่าย ที่เพียงแค่ประเมินนิพจน์ (Expression) ที่กำหนด แต่ยังมีอะไรอีกมากมายที่เกี่ยวข้อง คำถามน่าสนใจคือ คุณจะแก้ไขนิพจน์ที่มีตัว Operators หลายตัวหรือ Functions ที่อยู่ซ้อน ๆ กันได้อย่างไร ที่จริงแล้ว Calculator Software ก็คล้ายกับ Interpreter หรือ Compiler สำหรับ Project นี้จะช่วยให้คุณได้เรียนรู้ ดังต่อไปนี้:

  • เรียนรู้เกี่ยวกับ Tokenization หรือที่เรียกกันว่า Lexical Analysis นี่เป็นหนึ่งในขั้นตอนหลักของการ Compile ดังนั้น การเรียนรู้พวกมัน จะช่วยให้คุณมีพื้นฐานเริ่มต้นสำหรับ Project ที่ซับซ้อนมากขึ้น อย่าง Compiler
  • Token Evaluation ถือเป็นอีกเรื่องที่สำคัญ ที่คุณจะได้เรียนรู้ในการคำนวณผลลัพธ์ของนิพจน์ มันเป็นกระบวนการของการ Execute แบบลูกโซ่ของการ Operations ตามลำดับที่ถูกต้อง และส่งผ่านผลของ Operation หนึ่ง ไปยังอีก Operation หนึ่ง

หากคุณต้องการทำ Project นี้ ขอแนะนำให้คุณอ่านคำแนะนำเกี่ยวกับการเขียนโปรแกรม Calculator Software ไปทีละขั้นตอนได้จากที่นี่

2. Cloud Logging Service

ในช่วงไม่กี่ปีที่ผ่านมา มีแนวโน้มที่จะเปลี่ยนทุกอย่างไปเป็น Cloud Service ซึ่งคงทำให้เรานึกถึง SaaS, PaaS และอื่น ๆ สำหรับ Logging as a Service (LaaS) นั้นก็ไม่ได้แตกต่างอะไรนัก มันช่วยให้ Developers มี Logging System ที่มีการจัดการที่ดีและเชื่อถือได้ ซึ่งสามารถพิสูจน์ได้ว่า มันเป็นประโยชน์อย่างมากสำหรับ Applications ขนาดใหญ่ที่มีความซับซ้อน

การสร้าง Cloud Logging Service จะเกี่ยวข้องกับ:

  • การตั้งค่าและจัดการ Servers ไม่ว่าจะเป็นผ่าน Cloud Service Providers หรือโดยใช้ Machine ของคุณเอง ในกรณีที่คุณต้องตัดสินใจว่าจะเลือกใช้ Cloud Service Providers รายใด ขอแนะนำให้คุณอ่านบทความ "7 Free Cloud Hosting Service Providers for Software Developers"
  • จัดการกับ Web Servers และ Frameworks ที่เกี่ยวข้อง คุณอาจต้อง Set up Website เพื่อให้ Service ของคุณมี Log Visualization ที่ดี
  • API Keys และ User Session Management คุณอาจต้องใช้ Authentication System หรือเรียนรู้การใช้ System ที่มีอยู่ อย่าง Auth0 หรือ Firebase
  • การจัดการ Databases เพื่อจัดเก็บ Users และ Logs ของพวกมัน
  • คุณอาจต้องคำนึงถึงความปลอดภัยของ Server ของคุณ
  • Application ดังกล่าว สามารถใช้งานได้ผ่าน Microservice Architecture ดังนั้น จึงเป็นโอกาสที่ดีที่จะเรียนรู้เกี่ยวกับสิ่งเหล่านี้

3. สร้าง Virtual Machine

การเขียน Program เกี่ยวกับ Virtual Machine ตั้งแต่เริ่มต้น อาจดูเป็นเรื่องที่ค่อนข้างยากไปสักหน่อย แต่เชื่อว่าคุณสามารถทำมันได้อย่างแน่นอน ด้วยรูปแบบที่เรียบง่ายที่สุด Virtual Machine คือ Processor Software ที่ Executes คำสั่ง เช่นเดียวกับ CPU

Project นี้จะพัฒนา Low-Level Skills ของคุณและจะช่วยให้คุณรู้เกี่ยวกับ:

  • การทำงานกับ Raw Bytes - ปัจจุบันการเขียน Program แทบไม่ค่อยเกี่ยวข้องกับ Raw Binary Data เนื่องจากเรามี Libraries และ Frameworks
  • การเรียนรู้ภาษา Assembly - Processor ทุกตัวจะมีชุดคำสั่งของตัวเอง ซึ่งขึ้นอยู่กับสถาปัตยกรรมภายใน คุณสามารถสร้าง Virtual Machine สำหรับภาษา Assembly ที่มีอยู่แล้ว หรือไม่คุณก็สร้างเป็นของตัวคุณเอง
  • การวิเคราะห์ภาษาและการแปลเป็น Executable หากคุณวางแผนที่จะ Implement ภาษา Assembly เป็นของคุณเอง คุณจะต้องเขียน Assembler เฉพาะสำหรับมัน
  • Low-Level Optimizations – การเรียนรู้ว่าคอมพิวเตอร์ทำงานอย่างไร ซึ่งจะทำให้คุณได้รู้ว่า แนวทางใดจะทำงานได้ดีกว่ากันในสถานการณ์ต่าง ๆ

4. Image Converter และ Manipulation Tool

คุณสามารถเจอมันได้ทุกที่ ตั้งแต่ Photo Filters ไปจนถึง Image Recognition Software ซึ่ง Tool ดังกล่าวอาจมีความเรียบง่ายหรือซับซ้อนก็ได้ตามแต่คุณต้องการ แต่ Tools เหล่านี้ ก็มีองค์ประกอบที่เหมือนกันดังต่อไปนี้

  • คุณจะได้ทำงานกับ Raw Image Data ซึ่งมักจะเป็น RGB Bytes
  • คุณจะได้เรียนรู้ว่า Image Files ทำงานอย่างไร นอกจากนี้ยังสามารถเป็นจุดเริ่มต้นสำหรับการเรียนรู้การจัดการ พวกวิดีโออีกด้วย

คุณสามารถลองอ่านบทความเกี่ยวกับการ Convert Image ไปเป็น ASCII ได้ที่นี่

5. Physics Engine

Physics Engine เป็นพื้นฐานของแทบทุก Game หรือ Simulation ทั้งที่มีตัวเลือกที่ยอดเยี่ยมอยู่มากมาย ไม่ว่าจะเป็น Unity และ Unreal Engine มันเป็น Project ที่ยอดเยี่ยมที่เหมาะกับการเรียนรู้เป็นอย่างยิ่ง มันครอบคลุม Concepts ต่าง ๆ มากมาย ซึ่งบางส่วนก็ไม่เกี่ยวข้องโดยตรงกับการเขียน Program

คุณสามารถทำให้มันเรียบง่ายหรือซับซ้อนเท่าที่คุณต้องการ อาจรวมถึงแง่มุมต่าง ๆ ของ Physics ซึ่ง Project นี้ คุณจะได้เรียนรู้เกี่ยวกับ:

  • แน่นอนว่าต้อง Physics คุณจะต้องแก้ไข Classical Mechanics และในที่สุดก็ทำการวิจัยในหัวข้อนี้เพื่อจำลองการเคลื่อนไหวและปฏิสัมพันธ์ของ Physical Bodies คุณยังสามารถใช้ทฤษฎีและ Features อื่น ๆ ที่แม่นยำยิ่งขึ้น เช่น Temperature, Energy, Magnetism เป็นต้น 
  • Analytic Geometry เช่น การตรวจจับการชนกันระหว่างวัตถุ
  • Vectors และการดำเนินการที่เกี่ยวข้อง เนื่องจากมันเป็นพื้นฐานของทุก ๆ การคำนวณ
  • Algorithms เช่น Search Techniques เป็นต้น เพื่อตรวจจับการชนอย่างมีประสิทธิภาพ
  • การ Render Simulation บน Screen - เห็นได้ชัดว่าคุณต้องการ Graphical Feedback จาก Engine ของคุณ คุณต้องแยกความแตกต่างระหว่าง Physics และ Graphical Frames (ดูข้อมูลเพิ่มเติมที่นี่)

6. Clipboard Synchronization Service

Software Product ต่าง ๆ รอบตัวเรา อาศัยการ Synchronization ไม่ทางใดก็ทางหนึ่ง อย่างเช่น Clocks ต้องแสดงเวลาที่ตรงกัน, Chat Applications จำเป็นต้อง Update ข้อความ, Data Backup Services จำเป็นต้อง Save การเปลี่ยนแปลงล่าสุด

แม้ว่าจะมี Applications มากมายสำหรับการ Synchronization แต่ก็ขอเสนอให้คุณสร้าง Service ที่ช่วยให้ Clipboard มีการ Update ใน Devices ต่าง ๆ บน Local Network ซึ่ง Software ดังกล่าวไม่เพียงแค่พิสูจน์ได้ว่ามีประโยชน์เท่านั้น แต่ยังเป็นโอกาสที่ดีในการเรียนรู้เกี่ยวกับ:

  • Socket Programming, เนื่องจากคุณจะต้อง Set Up Socket Server สำหรับการ Synchronization และ Clients เพื่อเชื่อมต่อ
  • Set Up Server เพื่อเรียกใช้ Synchronization Service มันอาจเป็น Machine หรือเพียงแค่ Process ที่ทำงานบนอุปกรณ์ที่คุณรู้ว่าจะต้องเปิดอยู่เสมอ
  • Synchronization Techniques เพื่อติดตาม Clipboard History, ตัดสินว่า Data ใดที่ถูก Copy ล่าสุด และลำดับของการ Copies
  • คุณสามารถสร้าง Application สำหรับการแสดงภาพ, แก้ไข และล้าง Clipboard History และเลือกว่าจะวาง Clip ใด
  • โดยทั่วไปแล้ว Operating System จะเป็นตัวจัดเตรียม Clipboard และสามารถเข้าถึงได้โดย Program ต่าง ๆ ผ่าน API ที่จัดสรรไว้ คุณจะต้องจัดการกับ Clipboard API ของ Operating System ของคุณ สำหรับ Windows โปรดดูคู่มือนี้, สำหรับ Linux เองก็ดูได้ที่ Reddit Thread นี้, ส่วน macOS ก็ดูวิธีการได้ที่นี่

7. Note Keeping Web App

ปัจจุบันนี้ มี Web Apps อยู่ทุกที่ เพราะสามารถใช้ทำอะไรได้หลายอย่าง อันที่จริง คุณสามารถใช้งานได้โดยไม่ต้องติดตั้งมัน คุณสามารถเข้าถึง Account ของคุณได้จากหลาย Devices โดยที่ไม่ต้องกังวลเกี่ยวกับการ Synchronize ข้อมูล

Note-Keeping App เป็น Tool ที่มีประโยชน์หลายอย่างซึ่งไม่จำเป็นต้องใช้การสร้างที่ยุ่งยากมากเกินไป อย่างไรก็ตาม มันเป็น Project ที่ยอดเยี่ยมที่เหมาะกับการเรียนรู้ เนื่องจากมันครอบคลุมทางด้าน Technical หลายเรื่อง เช่น:

  • Server Setup ไม่ว่าจะผ่าน Cloud Provider หรือโดยการจัดการผ่านเครื่องของคุณเอง ดังที่ตามที่ได้กล่าวไว้ก่อนหน้านี้สำหรับ Cloud Logging Service คุณสามารถค้นหา Cloud Service Providers ฟรี ที่มีลักษณะเฉพาะได้ที่นี่
  • Web Technologies ไม่ว่าจะเป็น Frameworks และ Web Servers
  • User Authentication, การจัดการ Session และการรักษาความปลอดภัยที่เกี่ยวข้อง
  • การจัดการการตั้งค่า User, ไม่ว่าจะผ่าน JSON Web Token (JWT) หรือวิธีการอื่น ๆ
  • การจัดการ Database ก็เป็นอีกหนึ่งเรื่องของพื้นฐานของ Web Application ซึ่งในกรณีนี้ คุณต้องจัดเก็บทั้ง User Accounts และ Notes ของพวกเขา
  • Live Data Synchronization ผ่าน Session - Frontend ของ App ต้องส่ง Requests อย่างต่อเนื่องเพื่อให้ Interface ยังคง Update อยู่เสมอในกรณีที่มีการเปลี่ยนแปลงเกิดขึ้น ตัวอย่างเช่น Notes ที่ถูก Shared สามารถแก้ไขได้ทุกเมื่อ และคุณจะต้องทำให้ Notes ได้รับการ Update อย่างต่อเนื่อง

ที่มา:  https://betterprogramming.pub/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด