7 पॉइंट द्वारा baeba 2 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें

सारांश अवलोकन

  • मुख्य विषय

    • उन किताबों और संबंधित सामग्री का परिचय, जिनमें डेवलपर्स ने ओपन-सोर्स एप्लिकेशनों की आंतरिक संरचना और डिज़ाइन निर्णयों को खुद समझाया है।
  • मुख्य बातें

    • आर्किटेक्ट्स के विपरीत, software developers को ऐतिहासिक रूप से महत्वपूर्ण बड़े programs की संरचना को व्यवस्थित रूप से सीखने के अवसर कम मिलते हैं।
    • इससे मौजूदा सफल उदाहरणों का लाभ उठाने के बजाय मिलती-जुलती गलतियां दोहराने की समस्या पैदा होती है।
    • ये किताबें प्रमुख open source projects की संरचना, components, उनके interaction के तरीके और development process से मिले सबक को संकलित करती हैं।
    • शुरुआती developers अनुभवी developers की सोचने की शैली सीख सकते हैं, और intermediate व advanced developers जटिल डिज़ाइन समस्याओं के समाधान के उदाहरणों का संदर्भ ले सकते हैं।
    • सारी सामग्री Creative Commons Attribution 3.0 license के तहत उपलब्ध है, और किताबों की बिक्री से होने वाली आय Amnesty International को दान की जाती है।
    • त्रुटि रिपोर्ट करने, अनुवाद करने और नए अध्याय लिखने जैसे community contributions संभव हैं।

भूमिका

  • Software design सीखने की संरचनात्मक सीमाएं

    • आर्किटेक्ट्स अपनी शिक्षा के दौरान असंख्य इमारतों का निरीक्षण करते हैं और experts की आलोचनात्मक समीक्षा भी साथ-साथ सीखते हैं।
    • इसके विपरीत, software developers के पास बड़े programs को गहराई से समझने के अवसर सीमित होते हैं।
    • कई developers मुख्यतः अपने द्वारा लिखे गए programs के आधार पर अनुभव जुटाते हैं।
    • परिणामस्वरूप, वे अतीत के बेहतरीन डिज़ाइन उदाहरणों पर आगे बढ़ने के बजाय मिलती-जुलती डिज़ाइन गलतियां दोहराने की अधिक संभावना रखते हैं।
  • सामग्री का उद्देश्य

    • उद्देश्य ओपन-सोर्स एप्लिकेशनों की वास्तविक संरचना को ऐसे रूप में उपलब्ध कराना है जिसका विश्लेषण किया जा सके।
    • Project authors खुद software structure और design background की व्याख्या करते हैं।
    • यह developers को दूसरे developers की design thinking सीखने में मदद करता है।

मुख्य भाग

ओपन-सोर्स projects की संरचना को सीधे समझाया जाता है

  • मुख्य विश्लेषण विषय

    • कुल चार किताबें अलग-अलग ओपन-सोर्स एप्लिकेशनों और संबंधित विषयों को कवर करती हैं।
    • हर अध्याय किसी खास project या technical topic की संरचना और design approach समझाता है।
    • लेखक उस project के developers या संबंधित experts होते हैं।
  • विश्लेषण के मुख्य प्रश्न

    • Program के मुख्य components क्या हैं।
    • हर component किस तरह interact करता है।
    • Development process में कौन-से design decisions लिए गए।
    • Project बनाते समय कौन-से सबक मिले।

AOSA Volume 1 प्रमुख ओपन-सोर्स एप्लिकेशनों की संरचना पर केंद्रित है

  • मुख्य सामग्री

    • Asterisk, Audacity, Bash, Berkeley DB, CMake, Eclipse, Graphite, HDFS, LLVM, Mercurial, Selenium WebDriver, Sendmail जैसे विभिन्न projects को कवर करता है।
    • System software, development tools, databases, distributed file systems, collaboration tools, visualization tools जैसे व्यापक क्षेत्रों को शामिल करता है।
  • महत्व

    • ओपन-सोर्स projects की आंतरिक संरचना को वास्तविक developers के दृष्टिकोण से समझा जा सकता है।
    • अलग-अलग technical domains में बार-बार सामने आने वाली design problems और उनके solutions की तुलना की जा सकती है।

AOSA Volume 2 विस्तारित technical domains और design examples देता है

  • मुख्य सामग्री

    • Scalable web architecture, Firefox release engineering, FreeRTOS, GDB, GHC, Git, GPSD, MediaWiki, Moodle, nginx, Open MPI, Puppet, PyPy, SQLAlchemy, Twisted, ZeroMQ आदि को कवर करता है।
    • Web, compilers, operating systems, distributed systems, language runtimes, frameworks, infrastructure tools जैसे विविध topics शामिल हैं।
  • महत्व

    • जटिल software systems को design और operate करने के तरीकों पर case studies देता है।
    • Intermediate और advanced developers के लिए design decisions के वास्तविक उदाहरणों की समीक्षा करने में उपयोगी है।

POSA ओपन-सोर्स एप्लिकेशनों की performance समस्याओं पर केंद्रित है

  • मुख्य सामग्री

    • Chrome में high-performance networking, SocialCalc से EtherCalc में बदलाव, Ninja build system, XML parsing optimization, MemShrink, mobile network performance, bioinformatics में big data processing आदि को कवर करता है।
  • महत्व

    • यह दिखाता है कि software performance improvement सिर्फ code optimization नहीं है, बल्कि structural design, deployment methods, network environment और data processing methods से जुड़ा होता है।
    • Performance problems का वास्तविक उदाहरणों के आधार पर विश्लेषण किया जा सकता है।

500 Lines or Less छोटे code में core ideas लागू करता है

  • मुख्य सामग्री

    • Visual programming tools, continuous integration system, dynamic build system, web crawler, in-memory graph database, event-driven web framework, Python interpreter, OCR, web spreadsheet, static analysis, template engine, simple web server आदि को कवर करता है।
  • महत्व

    • सीमित code size के भीतर core design principles समझाता है।
    • छोटे implementations के जरिए complex system concepts सीखने के लिए संरचित है।

License और contribution methods स्पष्ट हैं

  • License

    • यह सामग्री Creative Commons Attribution 3.0 Unported license के तहत उपलब्ध है।
    • Attribution की शर्त पूरी करने पर सामग्री का उपयोग किया जा सकता है।
  • आय का उपयोग

    • किताबों की बिक्री से मिलने वाली सारी royalties Amnesty International को दान की जाती हैं।
  • Contribution methods

    • त्रुटियां रिपोर्ट की जा सकती हैं।
    • दूसरी भाषाओं या formats में अनुवाद में भाग लिया जा सकता है।
    • नए ओपन-सोर्स projects की architecture समझाने वाला अध्याय लिखा जा सकता है।
    • नए translation या chapter writing में रुचि रखने वाले लोग project maintainers से संपर्क कर सकते हैं।

निष्कर्ष

  • मुख्य सार

    • यह सामग्री ओपन-सोर्स एप्लिकेशनों की आंतरिक संरचना और design decisions को व्यवस्थित रूप से सीखने के लिए case studies का संग्रह है।
    • Developers केवल अलग-अलग code snippets नहीं, बल्कि पूरे system की structure और design reasoning को समझ सकते हैं।
    • शुरुआती developers के लिए यह अनुभवी developers की सोचने की शैली सीखने का starting point है।
    • Intermediate और advanced developers के लिए यह जटिल design problems को हल करने वाले वास्तविक examples की तुलना और विश्लेषण करने की सामग्री है।
  • व्यावहारिक महत्व

    • यह न केवल ओपन-सोर्स projects का उपयोग करने वाले developers, बल्कि उन्हें खुद design और operate करने वाले developers के लिए भी reference value रखता है।
    • यह दोहराई जाने वाली design mistakes घटाने और verified design examples सीखने में मदद करता है।
    • यह दिखाता है कि community-based knowledge sharing software development skills को बेहतर बनाने में योगदान दे सकती है।

1 टिप्पणियां

 
desmond2 2 시간 전

धन्यवाद