2011-09-09 16 views
21

के आसपास रास्ता ढूंढना मैंने क्रोमियम के स्रोत की जांच की, लेकिन मुझे इस राक्षस के चारों ओर नेविगेट करने के बारे में जानने की जरुरत है।क्रोमियम के स्रोत कोड

मैं उस कोड के उन हिस्सों की खोज कैसे करूं जो व्यवहार/सुविधाओं को लागू करते हैं, जिनमें मुझे रूचि है?

मान लें कि मैं देखना चाहता हूं कि पता बार में यूआरएल दर्ज करने के बाद क्या होता है। मैं कोड का टुकड़ा कैसे ढूंढूं?

या, मैं देखना चाहता हूं कि एचटीएमएल पार्स करते समय क्या होता है, एक निश्चित टैग तक पहुंच जाता है।

मेरे पास मेरे पास बड़ी संख्या में स्रोत कोड है, और इसके आसपास नेविगेट करने का कोई कौशल नहीं है। मैं उस कौशल को कैसे सीखूं?

+5

प्रारंभिक बिंदु के रूप में, http://www.chromium.org/developers/how-tos/getting-around-the-chrome-source-code पढ़ें - जो आपको देख रहे हैं कि आप जो देख रहे हैं उसका बेहतर अवलोकन उस राक्षसी स्रोत/निर्देशिका में। (मैंने वास्तव में यह नहीं सोचा था कि यह एक अच्छा _answer_ होगा, क्योंकि यह केवल एक टिप है ..) – maligree

+3

इसके अलावा तैयार है [आप एक नए कोडेबेस के आसपास अपना रास्ता कैसे ढूंढते हैं] (http://stackoverflow.com/ प्रश्न/70124/कैसे-करें-आप-खोज-अपना-रास्ता-चार-कोडेबेस) – Justin

+1

grep आपका मित्र है। या मुख्य और ट्रेस ढूंढें। बड़े कोड अड्डों को नेविगेट करना तुच्छ नहीं है। – Chris

उत्तर

11

मेरे में डाइविंग की तरह के लिए सिफारिश http://code.google.com/p/chromiumembedded/ के लिए स्रोत पर एक नज़र लेने के लिए है।

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

सीईएफ बहुत अच्छा है क्योंकि आप किसी ऐसे व्यक्ति को देख सकते हैं जो पहले से ही उन सभी चीजों को खींचने की प्रक्रिया को पहले से ही ब्राउज़र दृश्य पर स्कॉप्ड किया गया है और कुछ भी नहीं। आप देख सकते हैं कि कौन से हिस्से मुख्य रूप से वेबकिट से प्राप्त किए जाते हैं, आप देख सकते हैं कि क्रॉसओवर Google के कार्यान्वयन के साथ कहां आता है, और आप आसानी से देख सकते हैं कि कैसे V8 मिश्रण में फेंक दिया जाता है।

मैं सापेक्ष शब्दों में "आसानी से" कहता हूं क्योंकि हम अभी भी कुल मिलाकर कोड की एक बड़ी मात्रा में बात कर रहे हैं। सीईएफ आपको आवश्यकताओं के केंद्र में धक्का देगी, लेकिन वह सामान अभी भी पेड़ के बाकी हिस्सों की भारी मात्रा में खींच रहा है। इसे संकलित करने से मुझे 12 गीगा रैम और 8 कोर के साथ वास्तव में अच्छे कंप्यूटर पर एक घंटे लगते हैं, और जेनरेट की गई फाइलें 6-10 गीगा की तरह होती हैं।

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

संपादित करें: ओह आपके विशिष्ट उदाहरण के रूप में भी।

src जड़ http://src.chromium.org/viewvc/chrome/trunk/src है

/क्रोम http://src.chromium.org/viewvc/chrome/trunk/src/chrome

"क्रोम" पेड़ बड़े पैमाने पर प्रत्यक्ष कार्यान्वयन (सामान का एक बहुत, इसमें से अधिकांश भी वहाँ हालांकि में नहीं है, लेकिन है कि प्रारंभिक है शामिल बिंदु)। यह chromeos साथ ओवरलैप

/क्रोम/ब्राउज़र http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/

आप जहाँ आप होना चाहते करने के लिए बंद करने के लिए हो रही है (chromeos एक पागल चरम पर ले जाया क्रोमियम ब्राउज़र की तरह है) है। आप उन चीज़ों के विशिष्ट संदर्भ देखना शुरू कर देते हैं, जिन्हें आप ब्राउज़र से मिलान कर सकते हैं, जैसे टैब और व्हाट्नॉट (वास्तविक ब्राउज़र कार्यान्वयन के विशाल हाथी को अनदेखा करना जो कि इन सभी चीजों में अधिकांश मस्तिष्क को लेता है)

/क्रोम/ब्राउज़र/ui http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/

आपको उस स्थान पर लाता है जहां अधिकांश UI कोड ब्राउज़र के लिए है। यह भ्रमित हो सकता है जब क्रॉसओवर होता है या जब सामान माइग्रेट होता है, जैसे मूल स्रोत निर्देशिका में "ui" होता है जिसमें कुछ क्रॉसओवर होता है।

और अंत में http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/omnibox/

कौन सा में कोड का एक आश्चर्यजनक रूप से छोटी राशि है। लेकिन यह वही है जो आपको बहुत मिलता है। यहां कोड कई वर्गों का कार्यान्वयन है जो कहीं और बनाए गए हैं। गैर-वेबव्यू गुई घटक के लिए आप उन्हें मूल रूप से रूट "ui" और मूल विजेट्स सामान पर वापस इंगित करेंगे, जहां वास्तविक ईवेंट हैंडलिंग कोड का बड़ा हिस्सा है यदि मुझे सही याद है।

+0

धन्यवाद। आप। गंभीरता से, महान जवाब - बहुत बहुत धन्यवाद। यह, जो मैंने अपनी टिप्पणी में कुलीन द्वारा इंगित दस्तावेज़ों को पढ़ने से सीखा, उसके साथ विस्फोट की तरह लगता है। – ntl0ve

+0

यह कठिन लड़ा ज्ञान था। Google वेब से संबंधित विकास संदर्भों में सामान्य दृष्टिकोण के प्रचार को बढ़ावा नहीं देता है। हाल ही में Google इंजीनियर (एक गलती से सार्वजनिक) द्वारा एक पोस्ट में टिप्पणी की गई थी। इंजीनियरिंग की गुणवत्ता उनके ज्यादातर कामों में असाधारण है, क्रोम के साथ बहुत कुछ। अनिवार्य रूप से यह पर्याप्त गुणवत्ता वाला कोड है जो लोग उस पर काम करने की अपेक्षा करते हैं, बिना किसी दस्तावेज़ के कुशलतापूर्वक इसका उपयोग कर सकते हैं। मुद्दा यह है कि उनके लक्षित दर्शक एक ऐसा नहीं है जिसके लिए सीखने की आवश्यकता है। यह उनकी कंपनी की संस्कृति संस्कृति –

+0

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

1

आप इस कोशिश कर सकते हैं ... यह वास्तव में कहीं भी :-)

http://aaronboodman-com-v1.blogspot.com/2010/10/wherein-i-help-you-get-good-job.html

नेतृत्व देव मंचों के माध्यम से पढ़ना भी मदद मिल सकती है हो सकता है ...

http://groups.google.com/a/chromium.org/group/chromium-dev/topics

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

http://dev.chromium.org/developers/contributing-code

अंतिम, लेकिन कम से कम, आईआरसी अपने दोस्त है ...

http://dev.chromium.org/developers/irc

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