वेब ब्राउज़र का निर्माण कैसे शुरू करें? [बन्द है]


89

मैंने स्क्रैच से वेब ब्राउज़र बनाने में कुछ प्रयास करने का निर्णय लिया। आधुनिक वेब ब्राउज़रों के सामान्य कार्य, वास्तुकला और विशेषताएं क्या हैं जिन्हें मुझे शुरू करने से पहले पता होना चाहिए?

किसी भी सिफारिश अत्यधिक सराहना की है!


9
हां, यह एक पागल परियोजना है, लेकिन हमें यहां मिकी लेने की आवश्यकता नहीं है - मुझे लगता है कि यह एक महान चर्चा का विषय है कि आप इसके आसपास कैसे जाएंगे :)
रॉस

8
मुझे कुछ समय पहले एक लेख याद आया जहाँ किसी ने इस तथ्य को गलत बताया कि नए रेंडरिंग इंजन बनाने के लिए किसी के पास अब हिम्मत नहीं है। नए ब्राउज़रों की जरूरत है, उन्होंने कहा, क्योंकि आज कंप्यूटर अलग हैं। एकाधिक कोर। पहला चरण Chrome प्रति टैब 1 प्रक्रिया के साथ है। देखते हैं आगे क्या होता है।
stesch

36
कुछ गेंदों को बढ़ाएं और वही करें जो आप चाहते हैं। अगर यह काम करता है, महान। यदि नहीं, तो प्रयास करते रहें, अन्यथा आप समाज के अन्य आधे लोगों की तरह समाप्त हो जाएंगे जो कहते हैं कि "कुछ भी नया न बनाएं, बस हमारे पास पहले से ही टूटी हुई गंदगी का उपयोग करें।"
uSeRnAmEhAhAhAhAhAhA

7
आपको उन गोलियों में से एक की जरूरत है जो ब्रैडली कूपर ने लिमिटलेस में ली हैं । ;)
अली गजनी 12

3
इसकी कोशिश करें। मैं शर्त लगाता हूं कि यहां के लोगों की तुलना में यह बहुत आसान है, खासकर अगर आप कई मौजूदा घटकों को एक साथ जोड़ते हैं। कुछ पाठ को पार्स करना और उनके अंदर पाठ के साथ कुछ रंगीन बक्से का उत्पादन करना कितना कठिन हो सकता है?
इयान वारबर्टन

जवाबों:


131

अच्छी तरह से इसे टुकड़ों में तोड़ दें। वेब ब्राउज़र क्या है? यह क्या करता है? यह:

  • बाहरी सामग्री लाता है। तो आपको एक HTTP पुस्तकालय की आवश्यकता है या (अनुशंसित नहीं) इसे स्वयं लिखें। HTTP प्रोटोकॉल की बहुत अधिक जटिलता / सूक्ष्मता है, जैसे समाप्त हो रहे हेडर, विभिन्न संस्करणों की हैंडलिंग (हालांकि यह इन दिनों ज्यादातर 1.1 है), आदि;
  • विभिन्न सामग्री प्रकारों को संभालता है। इस तरह की चीज के लिए एक विंडोस रजिस्ट्री है जिसे आप गुल्लक कर सकते हैं। मैं यहाँ MIME प्रकार पर आधारित सामग्री की व्याख्या कर रहा हूँ;
  • HTML और XML को पार्स करता है : DOM (डॉक्यूमेंट ऑब्जेक्ट मॉडल) बनाने के लिए;
  • पार्स और लागू होता है सीएसएस : यह सभी गुणों को समझने पर जोर देता है, माप की सभी इकाइयों और सभी तरीकों के मूल्यों को निर्दिष्ट किया जा सकता है (उदाहरण के लिए "सीमा: 1px ठोस काला" बनाम अलग-अलग सीमा-चौड़ाई, आदि गुण);
  • W3C दृश्य मॉडल को लागू करता है (और यह वास्तविक किकर है); तथा
  • एक जावास्क्रिप्ट इंजन है

और यह मूल रूप से एक वेब ब्राउज़र संक्षेप में है। अब इनमें से कुछ कार्य अविश्वसनीय रूप से जटिल हैं। यहां तक ​​कि आसान लगने वाले भी कठिन हो सकते हैं। बाहरी सामग्री लाना। आपको उपयोग के मामलों से निपटने की आवश्यकता है जैसे:

  • कितने समवर्ती कनेक्शन का उपयोग करना है?
  • उपयोगकर्ता को रिपोर्ट करने में त्रुटि;
  • प्रॉक्सी;
  • उपयोगकर्ता विकल्प;
  • आदि।

कारण यह है कि मैं और अन्य हमारी भौंहों को बढ़ा रहे हैं, रेंडरिंग इंजन कठिन है (और, जैसा कि किसी ने उल्लेख किया है, मानव वर्ष उनके विकास में चले गए हैं)। प्रमुख रेंडरिंग इंजन निम्नलिखित हैं:

  • ट्रिडेंट: Microsoft द्वारा इंटरनेट एक्सप्लोरर के लिए विकसित किया गया;
  • गेको: फ़ायरफ़ॉक्स में उपयोग किया जाता है;
  • वेबकिट: सफारी और क्रोम में प्रयुक्त 0-27;
  • KHTML: KDE डेस्कटॉप वातावरण में उपयोग किया जाता है। कुछ साल पहले KHTML से वेबकिट कांटा गया था;
  • इलेक्ट्रा: ओपेरा 4-6 में उपयोग किया जाता है;
  • प्रेस्टो: ओपेरा 7-12 में उपयोग किया जाता है;
  • ब्लिंक: क्रोम 28+, ओपेरा 15+, वेबकिट फोर्क;

शीर्ष तीन को आज इस्तेमाल किए जाने वाले प्रमुख रेंडरिंग इंजनों में से एक माना जाता है।

जावास्क्रिप्ट इंजन भी कठिन हैं। इनमें से कई ऐसे हैं जो विशेष रेंडरिंग इंजन से बंधे होते हैं:

  • स्पाइडरमोंकी: गेको / फ़ायरफ़ॉक्स में उपयोग किया जाता है;
  • TraceMonkey: फ़ायरफ़ॉक्स 3.1 में स्पाइडरमोंकी की जगह लेगा और JIT (सिर्फ-इन-टाइम) संकलन का परिचय देगा;
  • KJS: KHTML द्वारा प्रयुक्त, KHTML से बंधा हुआ;
  • JScript: इंटरनेट एक्सप्लोरर में उपयोग किए गए ट्राइडेंट का जावास्क्रिप्ट इंजन;
  • JavascriptCore: सफारी ब्राउज़र द्वारा वेबकिट में उपयोग किया जाता है;
  • Squirrelfish: वेबकिट में इस्तेमाल किया और TraceMonkey तरह JIT कहते दिया जाएगा;
  • V8: क्रोम और ओपेरा में Google का जावास्क्रिप्ट इंजन इस्तेमाल किया गया;
  • ओपेरा (12.X और उससे कम) ने भी अपना उपयोग किया।

और निश्चित रूप से सभी उपयोगकर्ता इंटरफ़ेस सामान हैं: पृष्ठों के बीच नेविगेशन, पृष्ठ का इतिहास, अस्थायी फ़ाइलों को साफ़ करना, URL में टाइप करना, URL को स्वतः पूर्ण करना आदि।

वह बहुत काम की चीज है।


* गेको :) भी सहमत हैं। मुख्य भाग HTML रेंडरर और जावास्क्रिप्ट इंजन हैं।
abatishchev

1
ओपेरा ने अपना बनाया। प्रेस्टो वर्तमान एक है, और इलेक्ट्रा उनका पिछला एक था।
टिम सुलिवन

महान गहराई से जवाब - मैं जावास्क्रिप्ट के बारे में सब एक साथ पार्स करना भूल गया!
रॉस

1
हालांकि दुनिया को ऐसे और लोगों की जरूरत है जिनके पास ब्राउजर बनाने के लिए गेंदें हैं। Cp eff.org/deeplinks/2016/04/save-firefox
पचेरियर

28

वास्तव में एक दिलचस्प परियोजना की तरह लगता है, लेकिन इसके लिए आपको एक बहुत बड़ा प्रयास करना होगा।

यह कोई आसान बात नहीं है, लेकिन अकादमिक दृष्टिकोण से, आप इससे बहुत कुछ सीख सकते हैं ।

कुछ संसाधन जो आप देख सकते हैं:

लेकिन इसे यथार्थवादी दृष्टिकोण से देखने पर, इसे खरोंच से कोड करने के लिए किए गए भारी प्रयास ने मुझे इस हास्य की याद दिला दी:


(स्रोत: geekherocomic.com )

शुभ लाभ :-)


ओह, जीएचसी को आगे बढ़ाया? मुझे लगता है कि जब वे रॉस के काम की शुरुआत कर रहे थे, तो मैं बिना सोचे समझे।
रॉस

@Ross: हाँ, वे अभी भी, हास्य देने कि नए आदमी कहा जाता है रूस से बोरिस, और वह एक "सुपर हैकर" LOL है
ईसाई सी Salvado

17

अधिकांश आधुनिक वेब ब्राउज़र विशाल जानवर हैं, और संभवतः काफी खराब तरीके से डिज़ाइन किए गए हैं क्योंकि वे (और स्वयं वेब) एक अजीब तरीके से विकसित हुए हैं।

आपको पहले अपनी परियोजना के लक्ष्यों (और आप जो हासिल करने की उम्मीद करते हैं) को बहुत स्पष्ट रूप से शुरू करने की आवश्यकता है । क्या यह ऐसा कुछ है जो आप केवल मनोरंजन के लिए कर रहे हैं, या क्या आप अन्य लोगों से अपने ब्राउज़र का उपयोग करने की उम्मीद करते हैं? यदि आप दूसरों से इसका उपयोग करने की अपेक्षा करते हैं, तो उनके लिए प्रोत्साहन क्या होगा? यह उम्मीद करना अवास्तविक है कि आप खरोंच से एक नया ब्राउज़र विकसित करेंगे, जिसे हर कोई क्रोम, सफारी, फ़ायरफ़ॉक्स, IE, ओपेरा, आदि के प्रतिस्थापन के रूप में उपयोग कर सकेगा। उन सभी परियोजनाओं में 10-15 साल का हेड स्टार्ट है। आप, और जब तक आप उन्हें पकड़ लेते हैं, तब तक वे आपसे 10-15 साल आगे होंगे। इसके अलावा, उनके पीछे बहुत अधिक मैन पावर है, और इसलिए यदि आप चाहते हैं कि आपकी परियोजना सफल हो, तो आपको किसी बिंदु पर उस मैन पावर की आवश्यकता होगी।

यही कारण है कि कई संसाधनों वाली बड़ी कंपनियों Apple और Google ने खरोंच से शुरुआत नहीं की। माइक्रोसॉफ्ट भी खरोंच से शुरू नहीं हुआ। मूल IE मोज़ेक पर आधारित था। केवल आज भी लगभग महत्वपूर्ण ब्राउज़र जो कि स्क्रैच से शुरू किए गए थे , ओपेरा , कॉनकेर और लिंक्स हैं, जो दुर्भाग्यवश सभी का बाजार में हिस्सा है। आइए फिलहाल लिंक्स के बारे में भूल जाएं, क्योंकि यह एक पाठ-केवल ब्राउज़र है और संभवतः एकमात्र कारण है जो अभी भी चारों ओर है क्योंकि यह इस विशिष्ट जगह पर कार्य करता है। ओपेरा यकीनन अब तक किए गए सबसे अच्छे ब्राउज़रों में से एक है, और फिर भी इसकी कभी भी एक महान बाजार हिस्सेदारी नहीं थी, इसलिए याद रखें कि सफलता और नवीनता एक ही बात नहीं है। KHTML कॉन्करर के पीछे का इंजन है, जो कभी भी स्वयं बहुत सफल नहीं हुआ, लेकिन वेबकिट का आधार है जो कि Apple और Google दोनों का उपयोग करता है। मुझे लगता है कि कोई निश्चित रूप से तर्क दे सकता है कि अगर KHTML कभी नहीं बनाया गया था, तो न तो सफारी या क्रोम मौजूद होगा। दिलचस्प रूप से पर्याप्त है, KHTML और ओपेरा दोनों बड़े पैमाने पर नार्वे के प्रोग्रामर द्वारा ओस्लो में एक ही इमारत में काम कर रहे थे।

आपको एक वेब ब्राउज़र बनाने की ज़रूरत है जैसे ऑपरेटिंग सिस्टम बनाना, क्योंकि यह अनिवार्य रूप से एक ब्राउज़र है - यह वेब ऐप चलाने के लिए एक ऑपरेटिंग सिस्टम है। और एक ऑपरेटिंग सिस्टम की तरह, एक वेब ब्राउज़र कई घटकों के साथ सॉफ्टवेयर का एक बहुत जटिल टुकड़ा है। बेशक, लोग खरोंच से नए ऑपरेटिंग सिस्टम बनाने में सफल रहे हैं। लिनस टोरवाल्ड्स के दिमाग में आता है। उसने लिनक्स बनाया, जो अब तक के सबसे सफल ऑपरेटिंग सिस्टमों में से एक है।

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

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

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

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

अंत में, बहुत सारे और बहुत सारे शोध करने के बाद, यह वह जगह है जहां आपको कोडिंग शुरू करना चाहिए मुझे लगता है:

  1. फिर से इंजीनियर मोज़ेक, लेकिन अपने खुद के डिजाइन विचारों के साथ। यह वही है जो मैं आपको बताऊंगा कि क्या आप इसे केवल मनोरंजन के लिए या अपने स्वयं के शैक्षिक लाभ के लिए कर रहे हैं। मूल HTML 1.0 और HTML 2.0 चश्मा, साथ ही HTTP 1.1 चश्मा और वर्तमान URI चश्मा पढ़ें, और सुनिश्चित करें कि आपका ब्राउज़र उन सभी चश्मे का पालन करता है। आप निश्चित रूप से मौजूदा सॉफ़्टवेयर डाउनलोड कर सकते हैं जो पहले से ही परिवहन प्रोटोकॉल, यूआरआई सम्मेलनों आदि को संभालता है, लेकिन अगर आप अपने ब्राउज़र को डिज़ाइन करने के बारे में गंभीर हैं, तो मुझे लगता है कि इन चीजों को खरोंच से भी करना एक अच्छा व्यायाम है, इसलिए आप प्राप्त करें सभी पहेली टुकड़े एक साथ कैसे फिट होते हैं, इसकी अच्छी समझ है। चरण 0 के अंत में, आपके पास एक ब्राउज़र होना चाहिए जो कि 90 के दशक में अत्याधुनिक होने की तुलना में कम से कम तुलनीय हो। यह एक अच्छा पहला मील का पत्थर है। और आप वास्तव में मूल मोज़ेक को डाउनलोड कर सकते हैंftp://ftp.ncsa.uiuc.edu/Mosaic/ और देखें कि यह आपके ब्राउज़र से कैसे तुलना करता है। यह देखना भी एक अच्छा व्यायाम है कि मोज़ेक जैसे प्राचीन ब्राउज़र में वर्तमान वेबसाइटें कैसे प्रस्तुत करती हैं।

  2. अपने ब्राउज़र में DOM के लिए समर्थन जोड़ें। W3C DOM लेवल 1 और लेवल 2 पर पहले ध्यान दें, क्योंकि बहुत सारे वर्तमान ब्राउज़र पूरी तरह से समर्थन करते हैं। फिर लेवल 3 और लेवल 4 को देखें। DOM वेब प्रोग्रामिंग के लिए बेहद मौलिक है, और इसलिए यदि आप वास्तव में एक आधुनिक वेब ब्राउज़र बनाने जा रहे हैं, तो इसे पूरा डिज़ाइन इस पर ध्यान देना होगा। चूँकि आप C # में ब्राउज़र लिख रहे हैं, आप इस बात पर ध्यान देना चाहते हैं कि आप अपने लाभ के लिए मौजूदा .NET ऑब्जेक्ट मॉडल का कैसे लाभ उठा सकते हैं।

  3. मौजूदा स्क्रिप्टिंग इंजनों को देखें और देखें कि क्या आप उन्हें अपने प्रोजेक्ट में पोर्ट कर सकते हैं। मैं आपको अपने स्वयं के जावास्क्रिप्ट दुभाषिया को लिखने से हतोत्साहित करूँगा, न केवल इसलिए कि यह अपने आप में एक बहुत बड़ी परियोजना है, बल्कि इसलिए कि पहले से ही जेएस संकलक (जैसे वी 8) को अनुकूलित करने में बहुत काम किया गया है। इसलिए जब तक आप संकलक डिजाइन में एक गुरु नहीं होते हैं, तब तक आपके हाथ से निर्मित जेएस दुभाषिया संभवतः पहले से ही वहां से हीन हो जाएगा, भले ही वह EMCAScript चश्मे का त्रुटिपूर्ण अनुसरण करता हो। फिर से, मुझे लगता है कि स्क्रिप्टिंग इंजन कुछ ऐसा होना चाहिए जो वास्तविक ब्राउज़र से किसी भी तरह पूरी तरह से अलग मॉड्यूल हो, इसलिए मुझे लगता है कि यह एक फ्रेमवर्क बनाने के लिए बहुत उपयोगी होगा जो आपको स्क्रिप्टिंग इंजन बनाने के बजाय किसी भी स्क्रिप्टिंग इंजन को स्थानापन्न करने की अनुमति देता है। यह केवल आपके ब्राउज़र के साथ काम करता है।

  4. उत्तरी अमेरिका (Google, Facebook, YouTube, Twitter, Wikipedia, Amazon, लोकप्रिय ब्लॉगिंग प्लेटफार्मों, आदि) में शीर्ष 10-20 वेबसाइटों के लिए HTML / CSS / JS स्रोत कोड देखें और इन साइटों के साथ अच्छी तरह से काम करने के लिए अपने ब्राउज़र को इंजीनियर करें। । यह एक ब्राउज़र बनाने की तुलना में कुछ हद तक अधिक समस्याग्रस्त समस्या है जो सभी मौजूदा मानकों का पालन करती है (कुछ जो वर्तमान ब्राउज़र अभी भी पूरी तरह से नहीं करते हैं) बहुत कम बनाने वाला ब्राउज़र है जो वेब पर सभी वेब साइटों को सही ढंग से प्रस्तुत करता है (कोई नहीं कर सकता) वो करें)। लोग शिकायत करेंगे कि आपका ब्राउज़र मानकों को तोड़ता है और आगे बढ़ता है, लेकिन यह इतनी बड़ी समस्या नहीं है जितना कि लोग शिकायत करते हैं कि वे आपके ब्राउज़र से Google या फेसबुक का उपयोग नहीं कर सकते हैं। मैं किसी भी ब्राउज़र के बारे में नहीं सोच सकता, जिसने अपनी पहली रिलीज़ पर सभी (या यहां तक ​​कि सबसे) मानकों का सही ढंग से पालन किया हो, इसलिए मैं कहता हूं कि कोशिश करना भी परेशान न करें।


1
+1 वेब ब्राउजर्स के अधिकांश कोड के लिए आज 1990 के दशक से सही तरीके से लीगेसी क्रैप के बोटलोड के साथ बुरी तरह से चूसना है । Google ने ब्लिंक बनाकर इसे हल करने की कोशिश की, जो मूल रूप से वेबकिट है जिसमें क्रैप को 8.8 मिलियन लाइनों के साथ हटा दिया गया था, लेकिन फिर भी, ब्लिंक के भीतर अटकी अपरिवर्तित गंदी बकवास के बोटलोड हैं।
पचेरियर

1
... अगर Google ने आज एक ब्राउज़र का निर्माण शुरू कर दिया होता , तो यह निश्चित रूप से इसे खरोंच से निर्मित करता , लेकिन अब टाइटैनिक को चालू करना उनके लिए बहुत महंगा है क्योंकि इसके सभी कर्मचारी पहले से ही ब्लिंक को जानते हैं। प्रतिस्पर्धात्मक ब्राउज़र-OS बनाने के लिए धन के साथ गहन कौशल और अच्छी तरह से वित्त पोषित एक नया स्टार्टअप निश्चित रूप से क्रोम पर बढ़त बना सकता है।
पचेरियर

15

आप अपने स्वयं के प्रतिपादन इंजन लिखने के रूप में मतलब है?

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

कहा कि, यहाँ कुछ (स्पष्ट) संकेत हैं:

  1. बहुत सारे कोड लिखें जो छोटी चीजें करता है, जैसे सभी projecteuler.net समस्याओं को हल करें
  2. अपने टूलकिट और उसके सामुदायिक मानकों के बारे में सब कुछ जानें
  3. बहुत अधिक कोड लिखें
  4. परिमित राज्य मशीनों की एक वास्तविक ठोस समझ प्राप्त करें
  5. अभी और कोड लिखें
  6. सभी tcp / ip स्टैक के बारे में जानें और इसे http के लिए कैसे उपयोग किया जाता है
  7. http के बारे में आप सब जान सकते हैं
  8. मानकों को सीखें (html, xml, sgml, css)
  9. अपना 150 वां जन्मदिन मनाएं।
  10. वास्तविक ब्राउज़र प्रोजेक्ट पर आरंभ करें।

यहाँ नीचे संपादित करें

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

मैं अपने जीवन के दो तिहाई से अधिक के लिए प्रोग्रामिंग कर रहा हूं और मुझे लगता है कि मैं एक अच्छा सभ्य प्रोग्रामर हूं, लेकिन यह सोचना मेरे लिए मूर्खतापूर्ण होगा कि मैं स्क्रैच से एक सभ्य वेब ब्राउज़र लिखने का आधा मौका दूंगा ।

बेशक, अगर यह वही है जो आप करना चाहते हैं, तो मेरी टिप्पणी को अपने तरीके से खड़े न होने दें। आप शायद Internet Explorer से बेहतर कर सकते हैं।


12
मुझे उल्लेख करना चाहिए: यदि आप खरोंच से एक सेब-पाई बनाना चाहते हैं, तो आपको एक ब्रह्मांड बनाकर शुरू करना होगा।
Kris

@ Mk12: वास्तव में, धन्यवाद। अपडेट किया गया।
क्रिश

1
@ क्रिस आप एक यूनिवर्स कैसे बनाते हैं जब इसे बनाने के लिए कुछ भी नहीं है?
uSeRnAmEhAhAhAhAhAhAA

1
@ user2645707: मुझे नहीं पता होगा, मैं किसी को मुझसे ज्यादा स्मार्ट समझ रहा हूं। quotationspage.com/quote/26980.html
क्रिस

12
+1 के लिए "आप शायद इंटरनेट एक्सप्लोरर से बेहतर कर सकते हैं।"
पुलह नंदहा

14

यह एक बहुत ही महत्वाकांक्षी परियोजना है (विशेष रूप से एक एकल डेवलपर के लिए), लेकिन किसी दिन मुझे कुछ करना पसंद होगा - आप इसके बारे में बहुत कुछ सीख सकते हैं।

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


8

जैसा कि बाकी सभी ने पहले ही कहा है, एक वेब ब्राउज़र एक बहुत बड़ी परियोजना है। आपको tcp / ip & sockets के बारे में चिंता करने की ज़रूरत है, html रेंडर करना, css का उपयोग करना, DOM मॉडल बनाना, जावास्क्रिप्ट निष्पादित करना, विकृत मार्कअप और कोड से निपटना, और सभी प्रकार की फ़ाइलों को संभालने से पहले आप उन सभी चीजों के बारे में भी सोच सकते हैं जिनसे लोग उम्मीद करते हैं। एक ब्राउज़र (यानी बुकमार्क, इतिहास, निजी ब्राउज़िंग, सुरक्षा, आदि) यह एक बहुत बड़ी परियोजना है।

कहा जा रहा है, यह किया जा सकता है। मेरा सुझाव फ़ायरफ़ॉक्स के स्रोत को देखना होगा। मुझे पता है कि आपने कहा था कि आप एक ब्राउज़र को स्क्रैच से बनाना चाहते हैं, लेकिन पहले एक ओपन-सोर्स प्रोजेक्ट से सीखना बहुत मददगार होगा ।

मैं फ़ायरफ़ॉक्स स्रोत को डाउनलोड करूँगा, और धीरे-धीरे इसे नीचे उतारूंगा। दूसरे शब्दों में, मैं स्रोत ले लूंगा और सभी बुकमार्किंग कार्यक्षमता को हटा दूंगा। फिर, मैं addons को संभालने की क्षमता को हटा दूँगा। फिर, मैं फ़ाइलों को सहेजने के बारे में सभी कोड हटा दूँगा। मैं इस प्रक्रिया को तब तक जारी रखूंगा जब तक मुझे एक बहुत ही मूल वेब ब्राउज़र नहीं मिल जाता। मैं उस कोड को देखूंगा।

फिर, मैं अपना खुद का निर्माण शुरू करूँगा। मैं अलग-अलग फ़ायरफ़ॉक्स लेने के बाद जो ज्ञान प्राप्त करता हूं, उसे ले लेता हूं और उसे एक नए ब्राउज़र के निर्माण में लगा देता हूं।

एक भाग्य का बहुत आप के लिए!


क्या आप फ़ायरफ़ॉक्स को विघटित करने के लिए कोई संकेत प्रदान कर सकते हैं? मेरा मतलब है, मुझे एक exeफ़ाइल मिलती है , जिसे स्थापित करने पर, मुझे बहुत सारी dllफ़ाइलों के साथ एक स्रोत फ़ोल्डर मिलता है । मैंने उस वास्तविक कोड का अध्ययन कैसे किया जो यह किया था, और तर्क जो इसके पीछे चल रहा है?
सेक्सीबिट

यह टिप्पणी पार्टी के लिए देर से है, लेकिन फिर भी। .EXE और .DLL फ़ाइलें एक संकलन चरण का परिणाम हैं और आप इसके बारे में अधिक समझ बनाने की उम्मीद नहीं कर सकते हैं। कार्यक्रम की समझ बनाने के लिए आपको स्रोत कोड (कुछ सी ++ और विभिन्न फाइलों में अन्य भाषाओं) की आवश्यकता होगी। प्रोग्रामर को अपने स्वयं के कार्यक्रम की समझ बनाने की आवश्यकता होती है, इसलिए वे कोड के विभिन्न कार्यात्मक भागों को अलग और दस्तावेज करते हैं।
रॉय प्रिन्स


4

आप अच्छी तरह से गठित और वैध एक्सएचटीएमएल के साथ शुरू कर सकते हैं, जो आपके जीवन के वास्तविक "जीवन" में आने वाले टैग सूप से आसान होना चाहिए।

तब आपको वेब से अपनी आवश्यकताओं के लिए वास्तविक HTML को मोड़ने का एक तरीका खोजना होगा।

लेकिन अपने आप को बच्चा न करें: एक ब्राउज़र एक छोटी परियोजना नहीं है।


3

... तो सुरक्षा की चिंता शुरू हो जाती है

(गैर-कार्यात्मक और क्रॉस कटिंग चिंताओं को आम तौर पर हालांकि सामने माना जाना चाहिए :))


1

बहुत महत्वाकांक्षी परियोजना है, लेकिन एक डेवलपर अकेले ऐसा नहीं कर सकता है जिसे आपको टीम (प्रोजेक्ट मैनेजर, टेस्टर ...) की आवश्यकता है और हो सकता है कि आप भाषा के अपने चयन की समीक्षा करें c # केवल खिड़कियों पर काम करें (मैं लिनक्स पर मोनो जानता हूं लेकिन यह नहीं है वही) वैसे भी मैं आपको शुभकामनाएं देता हूं और मुझे आपके ब्राउज़र का उपयोग करने में खुशी होगी: डी


0

आपके हाथ में वास्तव में बहुत सारा खाली समय है, है ना? AFAIK, अधिकांश ब्राउज़र C ++ में लिखे गए थे, सभी उपयोगकर्ताओं के पास उनके कंप्यूटर पर .NET फ्रेमवर्क स्थापित नहीं होता है और यदि वे ऐसा करते हैं तो हो सकता है कि आपके लिए आवश्यक संस्करण न हो।

इसमें आपको कई साल लग सकते हैं लेकिन फिर भी, वहाँ कई ओपन सोर्स ब्राउज़र हैं, फ़ायरफ़ॉक्स, गूगल क्रोम .. आदि, आप कोड पर एक नज़र डालकर शुरू कर सकते हैं, उस के साथ सौभाग्य :)


1
क्रोम खुला स्रोत नहीं है; लेकिन इसके स्रोत कोड के सबसे क्रोमियम परियोजना में पाया जा सकता है
बेनामी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.