2009-07-18 7 views
5

मैंने हाल ही में एक दोस्त से कहा कि मैं उत्प्रेरक (पर्ल) सीखना शुरू कर रहा था और उसने काफी दृढ़ता से जोर दिया कि उत्प्रेरक की इतनी अजीबता है कि कई निर्भरताएं हैं, मुझे इसके बजाय रेल की तरह कुछ उपयोग करना चाहिए।ऐसी ढांचे का उपयोग करने में क्या गड़बड़ है जिसमें बहुत निर्भरताएं हैं?

क्या यह अच्छी बात नहीं है कि बहुत सारी निर्भरताएं हैं? क्या यह बहुत सारे कोड का पुनः उपयोग नहीं करता है? मैं समझता हूं कि ढांचे को स्थापित करने के साथ और अधिक प्रयास हो सकते हैं लेकिन क्या कोई अन्य नुकसान हैं?

मैं अपने Catalyst tutorial फिर से शुरू करूंगा जब तक कि मुझे कुछ रसदार प्रतिक्रियाएं न मिलें। :-)

+0

मुझे यकीन है कि यह रात में किसी को भी नहीं रख रहा है लेकिन इस सवाल का जवाब चुनना मुश्किल था। उन सभी के लिए धन्यवाद! मैंने सीपीएएन पर अपने उत्प्रेरक ट्यूटोरियल के साथ चिपकने का फैसला किया और मैंने उत्प्रेरक किताबों (betterworldbooks.com से) दोनों का आदेश दिया। आत्मविश्वास बढ़ाने के लिए धन्यवाद, श्री रॉकवे! – hourback

उत्तर

2

जब घटकों के बीच संस्करण निर्भरताएं होती हैं, तो आप एक गैर-कामकाजी स्थिति में समर्थित हो सकते हैं यदि आप एक घटक को संगत करने के लिए मजबूर हैं (सुरक्षा कारणों से) सुरक्षा समूह के संगत संस्करण से पहले उपलब्ध है।

मानता है कि आप पहले स्थान पर एक कार्यरत राज्य में जा सकते हैं। ऐसा हो सकता है कि यदि आप सभी निर्भरताओं के मौजूदा संस्करणों का उपयोग करने का प्रयास करते हैं, तो आप पाएंगे कि वे साथ नहीं खेलते हैं।

निर्भरता की संख्या जितनी अधिक होगी, जोखिम उतना ही अधिक होगा।

रेल इस समस्या से मुक्त नहीं है, या तो। प्रत्येक नई रूबी रिलीज के साथ, डाटाबेस ड्राइवरों को कैसे बनाया जाए, कहें, इसके निर्देशों को अपडेट करने के लिए एक स्क्रैबल है।

निष्पक्ष होने के लिए, यह समस्या सड़क के साथ बाधाओं के बावजूद समय के साथ "बेहतर" की ओर बढ़ी है।

+0

रेल की समस्या वास्तव में निर्भरताओं की संख्या के साथ नहीं है - इसके घटक ढांचे के अलावा, यह केवल रेक पर निर्भर करती है। – Chuck

+2

सैद्धांतिक रूप से सच है, लेकिन उत्प्रेरक के लिए नहीं। उत्प्रेरक की अधिकांश निर्भरता विशेष रूप से उत्प्रेरक के लिए लिखी गई थी, और उसी समूह द्वारा बनाए रखा जाता है जो उत्प्रेरक :: रनटाइम को बनाए रखता है। अगर निर्भरता के साथ कुछ गलत हो जाता है और यह कुछ अन्य निर्भरता को तोड़ देता है, तो हम एक ही समय में सबकुछ जारी करेंगे। हालांकि, यह कभी नहीं हुआ है। – jrockway

+0

@Chuck, अगर आप अपनी पोस्ट पढ़ते हैं, तो आप देखेंगे कि वह डेटाबेस ड्राइवरों जैसी चीजों के बारे में बात कर रहा था। निश्चित रूप से, रेल शायद डेटाबेस ड्राइवर पर निर्भर नहीं है, लेकिन मैं शर्त लगाता हूं कि आपका ऐप करता है। – jrockway

1

मेरा व्यक्तिगत अनुभव अधिक निर्भरता आप होते हैं, उन्हें वर्ज़निंग है कि आप का ट्रैक रखने के लिए है, और इस भयानक स्थितियों को जन्म दे सकता है। विशेष रूप से, एक निर्भरता को अद्यतन करना (उदाहरण के लिए, आप जिस बग को तय करना चाहते हैं, उसके कारण) आप अन्य निर्भरताओं के साथ संगतता समस्याएं ला सकते हैं। एक उदाहरण के रूप में, मुझे व्यक्तिगत रूप से ऐसी स्थिति थी जहां जीसीसी 4.0.3 ने फू के साथ काम किया लेकिन बार (फू की निर्भरता) के साथ नहीं, और जीसीसी 4.0.5 ने बार के साथ काम किया लेकिन फू के साथ नहीं। सौभाग्य से, 4.0.2 काम किया।

इसके अलावा, अधिक निर्भरता "फ्रेंकस्टीन के राक्षस" उत्पादों, भागों है कि तैयार किया गया है एक साथ खेलने के लिए अग्रिम नहीं कर रहे थे का बना पर बाहर बिंदु होते हैं। एक अच्छी तरह से एकीकृत ढांचा अच्छा और सुसंगत खेलने के लिए बनाया गया है। यह, निश्चित रूप से, मतभेदों को उचित रूप से लपेटकर तय किया जा सकता है।

+2

उत्प्रेरक के सभी हिस्सों को एक-दूसरे के साथ एकीकृत करने के लिए डिज़ाइन किया गया है। वे खुद को प्रयोग करने योग्य बनाने के लिए भी डिज़ाइन किए गए हैं। – jrockway

+2

पर्ल के मॉड्यूल परीक्षण इस परिदृश्य को बहुत कम संभावना बनाते हैं और, मामलों में ऐसा होता है, बग के रूप में रिपोर्ट करना बहुत आसान होता है। – ijw

+0

@jrockway: डिजाइन लक्ष्यों और वास्तविकता अक्सर अलग चीजें होती हैं। – Flimzy

7

इसमें विशेष रूप से कुछ भी गलत नहीं है। उत्प्रेरक का लाभ यह है कि इसके टुकड़ों का उपयोग उन लोगों द्वारा किया जा सकता है जो उत्प्रेरक का उपयोग नहीं कर रहे हैं। इसका मतलब यह है कि महत्वपूर्ण आंखों में और अधिक आंखें देख रही हैं, और बग फिक्सिंग कर रही हैं।

सबसे बड़ी शिकायत मैंने सुना है की है कि यह देखने के लिए उन सभी संदेशों CPAN खोल में से जाना के रूप में उत्प्रेरक स्थापित करने है कष्टप्रद है। समाधान आपके ओएस के पैकेज मैनेजर का लाभ उठाने के लिए है क्योंकि आप शुरू कर रहे हैं। डेबियन पर, apt-get install libcatalyst-perl स्थापित कोई अन्य पर्ल मॉड्यूल के साथ एक मशीन पर स्थापित करने के लिए 15 सेकंड लेता है। 15 सेकंड (एक सादा सीपीएएन इंस्टॉल या तो मुश्किल नहीं है, लेकिन मुझे लगता है कि मानक सीपीएएन खोल आपको बहुत सारे बेवकूफ प्रश्न पूछता है, और यह नए शौक को बंद करता है।)

निर्भरताओं के बारे में चिंता न करें, इसके लिए अच्छे उपकरण हैं उन्हें प्रबंधित करना, और वे ढांचे को मजबूत और अधिक लचीला बनाते हैं।

6

यह एक विषय के बारे में मैं पहले पोस्टिंग देखा है है। मेरा मतलब है इसके बारे में एक लेख लिखना और आखिर में ऐसा करना है।

यह यहाँ है: The Lie of Independence

मैं इसे पढ़ने के लिए प्रोत्साहित करते हैं। हालांकि, सरल सरल है। सवाल गलत है. यह नहीं है 'क्या आप कई निर्भरताओं के साथ एक आवेदन या ढांचे का उपयोग करते हैं, या कोई ऐसा नहीं है?'

यह है: 'क्या आप एक ऐसे एप्लिकेशन या ढांचे का उपयोग करते हैं जिसमें बहुत से बाहरी निर्भरताएं हैं, या कोई आंतरिक रूप से ऐसा करने का प्रयास करता है?'

और यह सवाल है कि 'क्या आपको वास्तव में विश्वास है कि इस ढांचे को लिखने वाला व्यक्ति या लोग वेब कार्य को संसाधित करने के लिए किए जाने वाले प्रत्येक कार्य के हर छोटे विवरण के हर छोटे से विवरण को समझते हैं?'

+0

बहुत उपयोगी लेख! धन्यवाद, जैक। – hourback

संबंधित मुद्दे