11 คะแนน โดย baeba 4 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

ภาพรวมสรุป

  • หัวข้อหลัก

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

    • นักพัฒนาซอฟต์แวร์มีโอกาสน้อยที่จะได้เรียนรู้โครงสร้างของโปรแกรมขนาดใหญ่ที่มีความสำคัญทางประวัติศาสตร์อย่างเป็นระบบ เมื่อเทียบกับสถาปนิก
    • ด้วยเหตุนี้จึงเกิดปัญหาการทำผิดพลาดคล้ายเดิมซ้ำ แทนที่จะนำกรณีความสำเร็จที่มีอยู่มาใช้ให้เกิดประโยชน์
    • หนังสือเหล่านี้รวบรวมโครงสร้าง องค์ประกอบ วิธีที่องค์ประกอบต่าง ๆ โต้ตอบกัน และบทเรียนที่ได้จากกระบวนการพัฒนาของโครงการโอเพนซอร์สสำคัญ ๆ
    • นักพัฒนาระดับเริ่มต้นสามารถเรียนรู้วิธีคิดของนักพัฒนาที่มีประสบการณ์ ส่วนระดับกลางและระดับสูงสามารถใช้อ้างอิงกรณีตัวอย่างในการแก้ปัญหาการออกแบบที่ซับซ้อนได้
    • เอกสารทั้งหมดเผยแพร่ภายใต้สัญญาอนุญาต Creative Commons Attribution 3.0 และรายได้จากการขายหนังสือจะบริจาคให้ Amnesty International
    • ชุมชนสามารถมีส่วนร่วมได้ เช่น แจ้งข้อผิดพลาด แปลภาษา หรือเขียนบทใหม่

บทนำ

  • ข้อจำกัดเชิงโครงสร้างในการเรียนรู้การออกแบบซอฟต์แวร์

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

    • มีเป้าหมายเพื่อให้โครงสร้างจริงของแอปพลิเคชันโอเพนซอร์สอยู่ในรูปแบบที่สามารถวิเคราะห์ได้
    • ผู้เขียนโครงการอธิบายโครงสร้างซอฟต์แวร์และบริบทเบื้องหลังการออกแบบด้วยตนเอง
    • ช่วยให้นักพัฒนาเรียนรู้วิธีคิดด้านการออกแบบของนักพัฒนาคนอื่น ๆ

เนื้อหา

อธิบายโครงสร้างของโครงการโอเพนซอร์สโดยตรง

  • หัวข้อหลักที่นำมาวิเคราะห์

    • หนังสือทั้งหมดสี่เล่มครอบคลุมแอปพลิเคชันโอเพนซอร์สและหัวข้อที่เกี่ยวข้องหลากหลาย
    • แต่ละบทอธิบายโครงสร้างและแนวทางการออกแบบของโครงการหรือหัวข้อเทคโนโลยีเฉพาะ
    • ผู้เขียนประกอบด้วยนักพัฒนาของโครงการนั้นหรือผู้เชี่ยวชาญที่เกี่ยวข้อง
  • คำถามหลักของการวิเคราะห์

    • องค์ประกอบหลักของโปรแกรมคืออะไร
    • องค์ประกอบแต่ละส่วนโต้ตอบกันอย่างไร
    • มีการตัดสินใจด้านการออกแบบแบบใดเกิดขึ้นในระหว่างกระบวนการพัฒนา
    • ได้บทเรียนอะไรจากการสร้างโครงการ

AOSA Volume 1 กล่าวถึงโครงสร้างของแอปพลิเคชันโอเพนซอร์สตัวแทน

  • เนื้อหาหลัก

    • ครอบคลุมโครงการหลากหลาย เช่น Asterisk, Audacity, Bash, Berkeley DB, CMake, Eclipse, Graphite, HDFS, LLVM, Mercurial, Selenium WebDriver, Sendmail
    • ครอบคลุมขอบเขตกว้าง ตั้งแต่ซอฟต์แวร์ระบบ เครื่องมือพัฒนา ฐานข้อมูล ระบบไฟล์แบบกระจาย เครื่องมือทำงานร่วมกัน ไปจนถึงเครื่องมือ visualization
  • ความสำคัญ

    • ช่วยให้เข้าใจโครงสร้างภายในของโครงการโอเพนซอร์สจากมุมมองของนักพัฒนาจริง
    • สามารถเปรียบเทียบปัญหาการออกแบบและแนวทางแก้ไขที่ปรากฏซ้ำในสาขาเทคโนโลยีที่แตกต่างกันได้

AOSA Volume 2 ให้กรณีศึกษาด้านเทคโนโลยีและการออกแบบที่ขยายกว้างขึ้น

  • เนื้อหาหลัก

    • ครอบคลุมสถาปัตยกรรมเว็บที่ขยายสเกลได้, release engineering ของ Firefox, FreeRTOS, GDB, GHC, Git, GPSD, MediaWiki, Moodle, nginx, Open MPI, Puppet, PyPy, SQLAlchemy, Twisted, ZeroMQ
    • รวมหัวข้อหลากหลาย เช่น เว็บ คอมไพเลอร์ ระบบปฏิบัติการ ระบบกระจาย runtime ของภาษา เฟรมเวิร์ก และเครื่องมือโครงสร้างพื้นฐาน
  • ความสำคัญ

    • ให้กรณีตัวอย่างเกี่ยวกับวิธีออกแบบและดำเนินงานระบบซอฟต์แวร์ที่ซับซ้อน
    • มีประโยชน์สำหรับนักพัฒนาระดับกลางและระดับสูงในการตรวจสอบกรณีจริงของการตัดสินใจด้านการออกแบบ

POSA กล่าวถึงปัญหาด้านประสิทธิภาพของแอปพลิเคชันโอเพนซอร์ส

  • เนื้อหาหลัก

    • ครอบคลุม high-performance networking ของ Chrome, การเปลี่ยนผ่านจาก SocialCalc สู่ EtherCalc, ระบบ build Ninja, การปรับแต่ง XML parsing, MemShrink, ประสิทธิภาพเครือข่ายมือถือ และการประมวลผล big data ในชีวสารสนเทศ
  • ความสำคัญ

    • แสดงให้เห็นว่าการปรับปรุงประสิทธิภาพซอฟต์แวร์ไม่ได้เป็นเพียงการปรับแต่งโค้ดเท่านั้น แต่เชื่อมโยงกับการออกแบบเชิงโครงสร้าง วิธี deployment สภาพแวดล้อมเครือข่าย และวิธีประมวลผลข้อมูล
    • ช่วยให้วิเคราะห์ปัญหาด้านประสิทธิภาพโดยอิงกรณีจริงเป็นหลัก

500 Lines or Less นำแนวคิดหลักไปใช้งานด้วยโค้ดขนาดเล็ก

  • เนื้อหาหลัก

    • ครอบคลุมเครื่องมือ visual programming, ระบบ continuous integration, ระบบ build แบบไดนามิก, เว็บครอว์เลอร์, ฐานข้อมูลกราฟแบบ in-memory, เว็บเฟรมเวิร์กแบบ event-driven, อินเทอร์พรีเตอร์ Python, OCR, เว็บสเปรดชีต, static analysis, template engine และเว็บเซิร์ฟเวอร์อย่างง่าย
  • ความสำคัญ

    • อธิบายหลักการออกแบบสำคัญภายในขนาดโค้ดที่จำกัด
    • จัดทำขึ้นเพื่อให้เรียนรู้แนวคิดของระบบที่ซับซ้อนผ่านการ implement ขนาดเล็กได้

สัญญาอนุญาตและวิธีมีส่วนร่วมมีความชัดเจน

  • สัญญาอนุญาต

    • เอกสารนี้เผยแพร่ภายใต้สัญญาอนุญาต Creative Commons Attribution 3.0 Unported
    • สามารถใช้เอกสารได้หากปฏิบัติตามเงื่อนไขการแสดงที่มาผู้สร้างสรรค์
  • การใช้รายได้

    • ค่าลิขสิทธิ์ทั้งหมดที่เกิดจากการขายหนังสือจะบริจาคให้ Amnesty International
  • วิธีมีส่วนร่วม

    • สามารถแจ้งข้อผิดพลาดได้
    • สามารถเข้าร่วมแปลเป็นภาษาอื่นหรือรูปแบบอื่นได้
    • สามารถเขียนบทที่อธิบายสถาปัตยกรรมของโครงการโอเพนซอร์สใหม่ได้
    • ผู้ที่สนใจแปลใหม่หรือเขียนบทสามารถติดต่อผู้เกี่ยวข้องกับโครงการได้

บทสรุป

  • สรุปประเด็นสำคัญ

    • เอกสารนี้เป็นชุดกรณีตัวอย่างสำหรับเรียนรู้โครงสร้างภายในและการตัดสินใจด้านการออกแบบของแอปพลิเคชันโอเพนซอร์สอย่างเป็นระบบ
    • นักพัฒนาสามารถเข้าใจองค์ประกอบและเหตุผลด้านการออกแบบของทั้งระบบ ไม่ใช่แค่ชิ้นส่วนโค้ดแต่ละส่วน
    • สำหรับนักพัฒนาระดับเริ่มต้น เอกสารนี้เป็นจุดเริ่มต้นในการเรียนรู้วิธีคิดของนักพัฒนาที่มีประสบการณ์
    • สำหรับนักพัฒนาระดับกลางและระดับสูง เอกสารนี้เป็นแหล่งข้อมูลสำหรับเปรียบเทียบและวิเคราะห์กรณีจริงที่แก้ปัญหาการออกแบบซับซ้อน
  • คุณค่าในเชิงปฏิบัติ

    • มีคุณค่าใช้อ้างอิงไม่เพียงสำหรับนักพัฒนาที่ใช้โครงการโอเพนซอร์ส แต่ยังรวมถึงนักพัฒนาที่ออกแบบและดำเนินงานระบบด้วยตนเอง
    • ช่วยลดความผิดพลาดด้านการออกแบบที่เกิดซ้ำ และช่วยให้เรียนรู้กรณีการออกแบบที่ผ่านการพิสูจน์แล้ว
    • แสดงให้เห็นว่าการแบ่งปันความรู้บนฐานชุมชนสามารถมีส่วนช่วยยกระดับความสามารถในการพัฒนาซอฟต์แวร์ได้

1 ความคิดเห็น

 
desmond2 3 시간 전

ขอบคุณครับ