2008-08-19 14 views
17

के लिए सी ++ के लिए विकसित करने के लिए विजुअल स्टूडियो का उपयोग करना क्या किसी के पास यूनिक्स के लिए अनुप्रयोग विकसित करने के लिए विजुअल स्टूडियो का उपयोग करने की कोशिश करने के लिए युद्ध कहानियां हैं? और मैं नीचे चल रहे एक मोनो या वाइन वर्चुअल प्लेटफॉर्म के साथ .NET का उपयोग नहीं कर रहा हूं।यूनिक्स

हमारी कंपनी के बारे में 20 डेवलपर्स है सभी Windows XP/Vista चल रहा है और लिनक्स & सोलारिस के लिए मुख्य रूप से विकसित कर रहा। हाल ही में जब तक हम सभी एक मुख्य लिनक्स सर्वर में लॉग इन नहीं हुए और संशोधित/निर्मित कोड अच्छे पुराने तरीके से: Emacs, Vi, dtpad - अपना चयन करें। तब किसी ने कहा, "अरे - हम अंधेरे युग में रह रहे हैं, हमें एक आईडीई का उपयोग करना चाहिए"।

इसलिए हमने कुछ कोशिश की और निर्णय लिया कि विजुअल स्टूडियो एकमात्र ऐसा था जो हमारी प्रदर्शन आवश्यकताओं को पूरा करेगा (हाँ, मुझे यकीन है कि आईडीई एक्स एक बहुत अच्छा आईडीई है, लेकिन हमने वीएस चुना है)।

समस्या है, तुम कैसे सेटअप फ़ाइलें उपलब्ध वी.एस. के लिए स्थानीय स्तर पर करने के लिए अपने पर्यावरण भी उपलब्ध निर्माण सर्वर से करते हैं, लेकिन? हम एक विजुअल स्टूडियो प्लगइन लिखने के साथ बस गए - यह हमारी फ़ाइलों को स्थानीय रूप से और बिल्ड सर्वर पर लिखता है जब भी हम "सेव" दबाते हैं और हमारे पास थोड़ा वसा "सिंक" बटन होता है जिसे हम सर्वर की ओर से बदलते समय दबा सकते हैं (जब के लिए हम अपने स्रोत नियंत्रण सर्वर से नवीनतम फ़ाइलों को अपडेट करते हैं)।

प्लगइन भी निर्माण सर्वर में दृश्य स्टूडियो के बाहरी निर्माण सिस्टम सुविधा है जो अंततः बस ssh का उपयोग करता है और हमारे स्थानीय कॉल "बनाना" उपयोगिता (जो बूस्ट v2 बिल्ड है - महान निर्भरता की जाँच है, लेकिन वास्तव में धीमी गति से शुरू करने के लिए है नतीजतन शुरू करने के लिए 30-60 सेकंड)। परिणाम विजुअल स्टूडियो में वापस पाइप किए जाते हैं ताकि डेवलपर त्रुटि पर क्लिक कर सकें और कोड की उचित रेखा (वास्तव में काफी हद तक) ले जाया जा सके। बिल्ड सर्वर जीसीसी का उपयोग करता है और हमारे सभी सोलारिस बिल्डों को क्रॉस-कंपाइल करता है।

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

क्या आपके उपकरण को रोकने और प्रतीक्षा करने से कहीं ज्यादा परेशान है? निराशा के लायक लाभ क्या हैं?

विचार, कहानियां, सहायता?

+7

आईडीई का उपयोग नहीं करना _not_ अंधेरे आयु है। – alternative

उत्तर

1

वाह, जो विजुअल स्टूडियो के लिए वास्तव में अजीब उपयोग की तरह लगता है। मैं विम में दूर चिंगिंग बहुत खुश हूँ। हालांकि, एक चीज जिसे मैं विजुअल स्टूडियो के बारे में पसंद करता हूं वह डीबगर है। ऐसा लगता है कि आप इसका उपयोग भी नहीं कर रहे हैं।

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

3

मुझे आपका दर्द महसूस होता है। हमारे पास एक ऐसा एप्लिकेशन है जो 'क्रॉस-प्लेटफार्म' है। एक सामान्य क्लाइंट/सर्वर एप्लिकेशन जहां क्लाइंट को विंडोज़ और लिनक्स पर चलाने में सक्षम होना चाहिए। चूंकि हमारे ग्राहक आधार ज्यादातर विंडोज़ का उपयोग करते हैं, हम वीएस -2008 का उपयोग करके काम करते हैं (डीबगर जीवन को बहुत आसान बनाता है) - हालांकि हमें अभी भी लिनक्स बिल्ड करने की आवश्यकता है।

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

0

हम आपके द्वारा वर्णित एक समान समाधान का उपयोग कर रहे हैं।

हम अपने कोड दुनिया के विंडोज पक्ष पर संग्रहीत और यूनिक्स (QNX 4 की है।25 सटीक होने के लिए) एनएफएस माउंट के बावजूद पहुंच है (विंडोज़ के लिए यूनिक्स सेवाओं के लिए धन्यवाद)। वीएस में आउटपुट करने के लिए मेकअप और पाइप चलाने के लिए हमारे पास यूनिक्स में एक एसएसएच है। कोड तक पहुंच तेजी से है, बनाता है पहले की तुलना में थोड़ा धीमा है, लेकिन हमारी सबसे लंबी संकलन वर्तमान में दो मिनट से भी कम है, न कि एक बड़ा सौदा।

यूनिक्स विकास के लिए वीएस का उपयोग करना इसे स्थापित करने के प्रयास के लायक है, क्योंकि अब हमारे पास IntelliSense है। कम टाइपिंग = खुश डेवलपर।

1

नेटवर्क शेयर।

बेशक, आपके पास नेटवर्क पर हत्यारा अंतराल है, लेकिन कम से कम आपकी फाइलों की एक प्रति है।

आप यह नहीं सुनना चाहते कि मैंने दोनों प्लेटफॉर्म पर विकास करते समय क्या किया। लेकिन आप जा रहे हैं: दिन में कुछ बार ड्रैग-एन-ड्रॉप कॉपी करें। स्थानीय निर्माण और रन, और यह सुनिश्चित करने के लिए यूनिक्स पर समय-समय पर जांच कर रहा है कि जीसीसी खुश था और यूनिट परीक्षण भी उस मंच पर खुश थे। वहां वास्तव में एक तेजी से बदलाव चक्र नहीं है।

1

@monjardin

मुख्य कारण हम इसे क्योंकि फिर से फैक्टरिंग/खोज उपकरण दृश्य के माध्यम से प्रदान की है का उपयोग असिस्ट (साबुत टमाटर से) एक्स। यद्यपि इंटेलि-अर्थ की तरह कई अन्य अच्छे हैं। हम पर्यावरण को पूरा करने के लिए हमारे अन्य टूल्स AccuRev, Bugzilla और Totalview के साथ एकीकरण की भी जांच कर रहे हैं।

@roo

कई compilers का उपयोग करते हुए एक दर्द की तरह लगता है। हमारे पास हमारे सभी प्लेटफार्मों के लिए जीसीसी के साथ चिपके रहने की लक्जरी है।

@josh

यिक्स! यह त्रुटियों को पेश करने के लिए एक शानदार तरीका की तरह लगता है! :-)

7

वीएस चग्स मेरे साथ पकड़ने के लिए।
हमम ... आपको मशीन को अधिक स्मृति की आवश्यकता है & grunt। मेरे साथ प्रदर्शन की समस्या कभी नहीं थी।

मेरे पास लगभग एक दशक का अनुभव है जो आप प्रस्तावित कर रहे हैं, वित्तपोषण में अधिकांश, बैंकिंग, स्टॉक एक्सचेंजों, स्टॉक ब्रोकरेज निकस में ग्राहकों के लिए रीयल-टाइम सिस्टम विकसित करना।

आगे बढ़ने से पहले, मुझे यह स्वीकार करने की आवश्यकता है कि यह सब वीएस 6 + सीवीएस, और देर से, एसवीएन में किया गया था। ताकि वे अपने काम की दुकान है और यह तार्किक मील के पत्थर पर काम के पैकेज की जांच कर सकते

स्रोत कोड संशोधन

डेवलपर्स अलग SourceSafe खजाने की है। जब उन्हें लगता है कि वे एकीकरण परीक्षण करना चाहते हैं, तो हम एक स्क्रिप्ट चलाते हैं जो इसे एसवीएन में जांचता है।

एक बार एसवीएन में चेक किए जाने के बाद, हमारे पास एक ऐसी प्रक्रिया है जो स्वचालित रूप से प्रासंगिक एकीकरण के लिए लक्ष्य मशीनों पर संकलित करने के लिए प्रासंगिक मेकफ़ाइल उत्पन्न करेगी।

हमारे पास स्क्रिप्ट का एक और सेट है जो एसवीएन से नए सामान को फ़ोल्डर्स में सिंक करता है जो वीएस की देखभाल करता है। कुछ अंतर है क्योंकि वीएस स्वचालित रूप से नई फाइलें नहीं ले सकता है; हम आमतौर पर इसे मैन्युअल रूप से संभालते हैं। यह केवल परियोजना के पहले कुछ दिनों नियमित रूप से होता है।

यह एक सिंहावलोकन है कि हम कोड कैसे बनाए रखते हैं।मुझे कहना है, मैंने शायद कुछ विवरणों पर चमक ली है (यदि आप रुचि रखते हैं तो मुझे बताएं)।

कोडिंग पहलू से

कोडिंग, हम makefile में पूर्व प्रोसेसर (अर्थात #define, आदि) और झंडे पर काफी भरोसा संकलन प्रक्रिया को आकार। क्रॉस प्लेटफार्म पोर्टेबिलिटी के लिए, हम जीसीसी का उपयोग करते हैं। कुछ बार, हम एचपी-यूएक्स और कुछ अन्य कंपाइलर्स पर एसीसी का उपयोग करने के लिए मजबूर थे, लेकिन हमें बहुत दुख नहीं था। एकमात्र चीज जो निरंतर दर्द है, यह है कि हमें प्लेटफॉर्म पर थ्रेड हीप रिक्त स्थान के लिए देखना था। कंपाइलर हमें इससे नहीं बचाता है।

क्यों?

आम तौर पर सवाल यह है कि "एच * क्या आपको विकास का इतना जटिल तरीका भी होगा?"। हमारा जवाब आम तौर पर एक और सवाल है जो जाता है, "क्या आपको कोई संकेत है कि कोर डंप की जांच करके या जीडीबी का उपयोग करके बहु-थ्रेडेड एप्लिकेशन को डीबग करना कितना पागल है?"। असल में, तथ्य यह है कि जब आप किसी अस्पष्ट बग को डिबग कर रहे होते हैं तो हम कोड की प्रत्येक पंक्ति के माध्यम से पता लगा सकते हैं/कदम उठा सकते हैं, यह सब प्रयास के लायक बनाता है!

प्लस! ... वीएस की इंटेलिजेंस सुविधा कक्षाओं से संबंधित विधि/विशेषता को ढूंढना इतना आसान बनाती है। मैंने यह भी सुना कि वीएस 2008 ने क्षमताओं को दोबारा हासिल किया है। मैंने अपना ध्यान ग्रहण पर जावा पर स्थानांतरित कर दिया है जिसमें दोनों विशेषताएं हैं। याद रखें जैसे आप अपने दिमाग को सामान बनाने के लिए ऊर्जा समर्पित करने के बजाय कोडिंग व्यवसाय तर्क पर अधिक उत्पादक ध्यान केंद्रित करेंगे!

भी! ... हम एक ऐसे उत्पाद के साथ खत्म हो जाएंगे जो विंडोज और लिनक्स दोनों पर चल सके!

शुभकामनाएं!

2

हम मैक और पीसी के लिए विकसित करते हैं। हम जो भी विचार पसंद करते हैं, हम स्थानीय रूप से काम करते हैं, ज्यादातर वीएस लेकिन एक्सकोड भी। जब हमें लगता है कि हमारे परिवर्तन बिल्ड सर्वर के लिए पर्याप्त स्थिर हैं, तो हम उन्हें चेक इन करते हैं। दो बिल्ड सर्वर (मैक और पीसी) स्रोत नियंत्रण चेकइन की तलाश करते हैं, और प्रत्येक एक निर्माण करता है। त्रुटियों को टीम में वापस ईमेल किया गया है।

बिल्डिंग सर्वर पर लाइव संपादन फाइलें मेरे लिए अनिश्चित लगती हैं। क्या होता है यदि आप किसी बिल्ड डेवलपर के संपादन के लिए अनुरोध करते हैं जो निर्माण नहीं करेगा?

2

मुझे पता है कि यह वास्तव में आपके प्रश्न का उत्तर नहीं देता है, लेकिन आप दूरस्थ एक्स सत्र स्थापित करने पर विचार करना चाहेंगे, और बस KDevelop जैसे कुछ चलाएं, जिस तरह से, एक बहुत अच्छा आईडीई है - या यहां तक ​​कि Eclipse , जो अधिक मुख्यधारा है, और इसमें व्यापक डेवलपर आधार है। आप शायद अपने विंडोज मशीनों पर एक्स सर्वर के रूप में Xming जैसे कुछ का उपयोग कर सकते हैं।

1

मुझे cygwin में जीसीसी का उपयोग कर विजुअल स्टूडियो में प्लेस्टेशन 2 कोड विकसित करने का अच्छा अनुभव रहा है। यदि आपके पास जीसीसी और ग्लिब के साथ साइगविन है, तो आपके लक्षित वातावरण के लगभग समान होना चाहिए। तथ्य यह है कि आप को सोलारिस और लिनक्स संकेतों में पोर्टेबल होना चाहिए कि साइगविन को ठीक काम करना चाहिए।

1

मेरे अधिकांश प्रोग्रामिंग अनुभव विंडोज में हैं और मैं दृश्य स्टूडियो का एक बड़ा प्रशंसक हूं (विशेष रूप से रिशेर्पर के साथ, यदि आप सी # कोडिंग कर रहे हैं)। इन दिनों मैं सी ++ में लिनक्स के लिए एक आवेदन लिख रहा हूं। सभी आईडीई (नेटबीन्स, केडेवेल, ग्रहण सीडीटी, आदि) की कोशिश करने के बाद, मैंने पाया कि नेटबीन्स कम से कम क्रोधित हैं। मेरे लिए, पूर्ण न्यूनतम आवश्यकताएं हैं कि मैं कोड के माध्यम से एकल-चरण में सक्षम हूं और मेरे पास इंटेलिजेंस है, आदर्श रूप से कुछ रिफैक्टरिंग फ़ंक्शन भी। यह मेरे लिए आश्चर्यजनक है कि कैसे आज के लिनक्स आईडीई दस साल पहले विजुअल स्टूडियो 6 के करीब नहीं थे।सबसे बड़ा दर्द बिंदु अभी नेटबीन्स में इंटेलिजेंस को कितना धीमा और खराब तरीके से कार्यान्वित किया गया है। 8 जीबी रैम के साथ फास्ट मशीन पर पॉप्युलेट करने में 2-3 सेकंड लगते हैं। ग्रहण सीडीटी की इंटेलिजेंस और भी लगी थी। मुझे खेद है, लेकिन इंटेलिजेंस के लिए 2 सेकंड का इंतजार इसे काट नहीं देता है। तो अब मैं Windows से वी.एस. का उपयोग कर, भले ही अपने ही निर्माण लक्ष्य linux है में देख रहा हूँ

...

क्रिस, तुम मुक्त स्वचालन बिल्ड सर्वर 'CruiseControl' है, जो जुड़ता है को देखने के लिए चाहते हो सकता है सभी मुख्य स्रोत नियंत्रण प्रणालियों (svn, tfs, sourceafe, आदि) के साथ। स्रोत उद्देश्य प्रणाली में चेक-इन पर प्रतिक्रिया देना इसका पूरा उद्देश्य है। आम तौर पर, आप इसे कॉन्फ़िगर करते हैं ताकि जब भी कोई भी कोड जांचता है, तो एक बिल्ड शुरू किया जाता है और (आदर्श) यूनिट परीक्षण चलाए जाते हैं। कुछ भाषाओं के लिए कुछ महान प्लगइन्स हैं जो कोड विश्लेषण करते हैं, यूनिट टेस्ट कोड कवरेज इत्यादि मापते हैं। सूचनाएं सफल/टूटी हुई बिल्डों के बारे में टीम को वापस भेजी जाती हैं। यहां एक पोस्ट है जिसमें यह वर्णन किया गया है कि इसे C++: link (thoughtworks.org) के लिए कैसे सेट किया जा सकता है।

मैं बस विंडोज़ वीएस 2008 का उपयोग करने के लिए एक लिनक्स-केवल सरल कॉन्फ़िगरेशन (नेटबीन्स + एसवीएन, बिना निर्माण स्वचालन के) में कनवर्ट करने के साथ शुरू कर रहा हूं, जिसमें ऑटोमेशन बैक-एंड बनाने के साथ यूनिट परीक्षण चलाता है linux। मुझे लगता है कि यह सब कुछ कॉन्फ़िगर करने के लिए मुझे लेने के लिए कितना समय लगेगा, लेकिन जितना जल्दी होगा, मुझे लगता है।

मेरे आदर्श अंत-राज्य में मैं वीएस प्रोजेक्ट से नेटबीन्स प्रोजेक्ट फ़ाइल को स्वतः उत्पन्न करने में सक्षम हूं, ताकि जब मुझे लिनक्स में कुछ डीबग करने की आवश्यकता हो तो मैं उस आईडीई से ऐसा कर सकता हूं। वीएस परियोजना फाइलें एक्सएमएल आधारित हैं, इसलिए यह बहुत कठिन नहीं होना चाहिए।

यदि किसी के पास इनमें से किसी के लिए कोई संकेतक है, तो मैं वास्तव में इसकी सराहना करता हूं।

धन्यवाद,

क्रिस्टोफ़

1

आप डेवलपर्स निजी शाखाओं में काम हो सकता था (आसान यदि आप एक DVCS का उपयोग कर रहे हैं)। फिर, जब आप कुछ कोड जांचना चाहते हैं, तो आप इसे [विंडोज़ | यूनिक्स] पर अपनी निजी शाखा में देखें, [सिक्स | विंडोज़] पर अपने सैंडबॉक्स को अपडेट करें और मुख्य शाखा में वापस आने से पहले बिल्ड/टेस्ट करें।

0

"अंतिम बिल्डर" (http://www.finalbuilder.com/) देखें। एक संस्करण नियंत्रण प्रणाली का चयन करें (उदाहरण के लिए सीवीएस या एसवीएन, ईमानदार होने के लिए, सीवी इस विशेष उपयोग केस को इसकी आवाज़ से बेहतर तरीके से अनुकूल करेंगे) और फिर फाइनलबिल्डर पर बिल्ड ट्रिगर्स सेट अप करें ताकि चेकइन संकलन कर सकें और परिणाम आपको वापस भेज सकें ।

आप फाइनलबिल्डर में नियम सेट अप कर सकते हैं जो आपको बेसलाइन या कुछ शाखा फ़ोल्डर्स में टूटे हुए कोड को चेक/विलय करने से रोकता है लेकिन इसे दूसरों को अनुमति देता है (हम टूटी हुई/बेसलाइन या/शाखाओं/* को टूटा हुआ काम नहीं करते हैं, लेकिन हमारे पास देवताओं के लिए एक/wip/branching फ़ोल्डर है जो संभावित रूप से टूटे हुए कोड को साझा करने की आवश्यकता है या बस दिन के अंत में प्रतिबद्ध होना चाहते हैं)।

आप कई "बिल्ड सर्वर" पर एफबी को विचलित कर सकते हैं ताकि आप एक बॉक्स पर निर्माण करने की कोशिश करने वाले 20 लोगों के साथ हवादार न हों, या सभी छोटे बिटी कामों को संसाधित करने के लिए एक बॉक्स की प्रतीक्षा कर रहे हों।

हमारे प्रोजेक्ट में मैक और विन क्लाइंट्स के साथ एक लिनक्स-आधारित सर्वर है, जो सभी एक सामान्य कोडबेस साझा करते हैं। यह सेट अप हमारे लिए हास्यास्पद रूप से अच्छी तरह से काम करता है।

0

मैं काम पर एक ही चीज़ कर रहा हूं। मैं जिस सेटअप का उपयोग करता हूं वह विंडोज विकास के लिए वीएस है, जिसमें लिनक्स वीएम वर्चुअलबॉक्स के तहत स्थानीय बिल्ड/निष्पादन सत्यापन के लिए चल रहा है। वर्चुअलबॉक्स में एक सुविधा है जहां आप मेजबान ओएस (मेरे मामले में विंडोज 7) पर एक फ़ोल्डर बना सकते हैं जो अतिथि में एक आरोही फाइल सिस्टम (मेरे मामले में उबंटू एलटीएस 12.04) के रूप में उपलब्ध है।इस तरह, जब मैं वीएस बिल्ड शुरू करता हूं, और यह फाइलों को सहेजता है, तो मैं इसे सत्यापित करने के लिए तुरंत लिनक्स के तहत एक मेक शुरू कर सकता हूं और इसे ठीक से चलाता हूं।

हम स्रोत नियंत्रण के लिए एसवीएन का उपयोग करते हैं, अंतिम लक्ष्य एक लिनक्स मशीन है (यह एक गेम सर्वर है), ताकि मेरे स्थानीय लिनक्स निर्माण के समान मेकफ़ाइल का उपयोग किया जा सके। इस तरह, अगर मैं प्रोजेक्ट में एक फाइल जोड़ता/एक कंपाइलर विकल्प बदलता हूं, तो हम ए-डी जोड़ना/बदलना चाहते हैं, मैं शुरुआत में वीएस के तहत संशोधन करता हूं, और फिर उसी परिवर्तन को प्रतिबिंबित करने के लिए तुरंत लिनस मेकफ़ाइल को बदल देता हूं। फिर जब मैं प्रतिबद्ध करता हूं, तो बिल्ड सिस्टम (बांस) परिवर्तन को उठाता है, और इसका स्वयं का सत्यापन बनाता है।

हार्ड अर्जित अनुभव का कहना है कि यदि आप इसे पहले दिन से बनाते हैं तो यह परिमाण का एक आदेश आसान है।

पहली परियोजना जिसे मैंने केवल विंडोज के रूप में शुरू किया था, मुझे इसे लिनक्स में बंद करने के लिए किराए पर लिया गया था, क्योंकि वे एक समरूप सर्वर वातावरण में स्विच करना चाहते थे, और बाकी सब कुछ लिनक्स था। इस तरह के एक सेटअप में एक विंडोज प्रोजेक्ट को पुनः स्थापित करना प्रयास का काफी बड़ा खर्च था।

परियोजना संख्या दो को पहले दिन से "दो सिस्टम बिल्ड" किया गया था। हम विकास/डीबग के लिए वीएस का उपयोग करने की क्षमता को बनाए रखना चाहते थे क्योंकि यह एक बहुत पॉलिश आईडीई है, लेकिन हमें लिनक्स सर्वर पर अंतिम तैनाती की आवश्यकता भी थी। जैसा कि मैंने ऊपर बताया है, जब परियोजना शुरूआत से ही दिमाग में बनाई गई थी, तो यह काफी दर्द रहित था। सबसे बुरा हिस्सा एक फ़ाइल था: system_os.cpp जिसमें ओएस विशिष्ट दिनचर्या शामिल थीं, जैसे "लिनक्स युग मिलिसेकंड में शुरू होने के बाद से वर्तमान समय प्राप्त करें" इत्यादि।

थोड़ा सा विषय प्राप्त करने के जोखिम पर , हमने इसके लिए यूनिट परीक्षण भी बनाए, और ओएस विशिष्ट टुकड़ों के लिए यूनिट परीक्षणों के साथ विश्वास का एक बड़ा सौदा प्रदान किया कि उन्होंने दोनों प्लेटफॉर्म पर भी काम किया।