मैंने 8 हफ्तों तक एक छोटा ब्राउज़र बनाया।
(github.com/beginner-jhj)नमस्ते! मैं कंप्यूटर इंजीनियरिंग विभाग में प्रवेश लेने वाला 12वीं कक्षा का छात्र हूँ।
पिछले 8 हफ्तों में मैंने C++, QT के जरिए बुनियाद से एक छोटा browser engine बनाकर देखा।
यह C++ के साथ मेरा पहला अनुभव था, इसलिए बहुत सी trial and error हुईं, लेकिन rendering pipeline के मुख्य हिस्सों को सीधे कोड में उतारते हुए मैंने बहुत कुछ सीखा।
पूरी rendering pipeline को 5 चरणों में बाँटकर implement किया:
-
HTML string का विश्लेषण करके DOM tree बनाना (error correction सहित)
-
CSS rules parsing और Cascade के जरिए Computed Style की गणना
-
block/Inline model के आधार पर box की position और size की गणना
-
image caching और loading के बाद layout recalculation (Reflow) को संभालना
-
Qt Graphics View Framework का उपयोग करके अंतिम Painting
क्योंकि यह कोड मैंने अभी-अभी सीखी गई C++ में लिखा है, इसमें कई कमियाँ हो सकती हैं।
अगर आप code structure या सुधार की दिशा पर feedback दें, तो मैं आभारी रहूँगा और उससे सीखूँगा!
अधिक जानकारी के लिए https://github.com/beginner-jhj/mini_browser/blob/main/README.ko.md देखें।
14 टिप्पणियां
सबसे पहले, आपको शुभकामनाएँ।
वेब ब्राउज़र बनाने का विचार करना ही कमाल है..
अब जब आपको एक अच्छा अनुभव मिल गया है..
Chromium कोड डाउनलोड करके..
उसे build करके देखें
और उसका analysis करने का अनुभव भी लेना अच्छा रहेगा।
क्योंकि सृजन, अनुकरण की जननी है।
आपने काफ़ी दिलचस्प काम किया है। अगर Claude का इस्तेमाल किए बिना खुद किया होता तो शायद और ज़्यादा सीखने को मिलता, लेकिन AI का उपयोग अब मुख्यधारा बन चुका है, इसलिए यह भी एक अच्छा अनुभव लगता है.
एक आइडिया देना चाहूँगा: इस अनुभव के आधार पर एक og tag parser बनाकर देखें तो कैसा रहेगा।
og tag वेबपेज पर सेट की गई प्रतिनिधि thumbnail image जैसी सरल जानकारी होती है। इसे लाने का काम DOM parser का उपयोग करके आसान है, लेकिन DOM parser के भारी होने की समस्या रहती है।
इसलिए किसी दूसरे DOM parser का उपयोग किए बिना, पूरे DOM को parsing किए बिना, सिर्फ़ खास tag जानकारी लाने वाला छोटा और efficient parser बनाया जाए, तो वह एक उपयोगी library बन सकती है।
खासकर mobile app में ऐसी library की कमी महसूस हुई है। अगर इसे javascript/kotlin/swift भाषाओं का उपयोग करके mobile के लिए बनाया जाए, तो यह एक लोकप्रिय open source library बन सकती है.
मुझे तो बस इतना याद है कि CSAT खत्म होने के बाद और यूनिवर्सिटी में दाखिले तक मैं खूब मस्ती करता रहा था... README पढ़कर लगा कि आपने मुख्य बातें बहुत अच्छी तरह समझ ली हैं। मैंने भी यह किताब पढ़कर इसे swift में implement किया था। हाहा
अरे, क्या यह किसी किताब के बारे में है? मैंने README एक बार पढ़ा था, लेकिन उसमें किताब का ज़िक्र नहीं दिखा...!
README में ऐसी कोई बात नहीं थी। किताब की सामग्री से मिलती-जुलती होने की वजह से मुझे भ्रम हुआ... माफ़ कीजिए;;;
यह
'밑바닥부터 시작하는 웹 브라우저'नाम की किताब है। किताब के उदाहरणpythonमें इम्प्लीमेंट किए गए हैं।बताने के लिए बहुत-बहुत धन्यवाद :D लगता है Kyobo Book Centre में एक बार हल्के से देखना पड़ेगा..!
जब मैं 12वीं में था, तो सिर्फ़ Linux APM इंस्टॉल करना आता था और उसी के दम पर dev community में थोड़ा अकड़ दिखाता था
वाह, ग़ज़ब, कांप गया
बहुत मज़े से पढ़ा!
मेरा मानना है कि बनाने के लिए मेहनत करना और कोशिश करना ही अपने आप में प्रथम श्रेणी की बात है। README भी मानो एक रिपोर्ट जैसा था, इसलिए पढ़ना और भी दिलचस्प लगा।
अगली बार क्या होगा, यह देखने की उत्सुकता है, हाहा
वाकई शानदार है।
मैंने इसे बस सरसरी तौर पर देखा, लेकिन जब मैं 12वीं कक्षा में था, तब मैं ऐसी बात सोचने की भी हिम्मत नहीं कर सकता था। CS की अच्छी तरह पढ़ाई करें और उम्मीद है कि आप एक बेहतरीन engineer बनें।
धन्यवाद! मैं पूरी मेहनत करूँगा और एक बेहतरीन इंजीनियर के रूप में आगे बढ़ूँगा!
बहुत मज़े से पढ़ा, और बहुत अच्छा लगा! व्यक्तिगत रूप से एक बात पूछना चाहता/चाहती हूँ—क्या आपसे संपर्क करने का कोई तरीका है?
इतना लंबा लेख पढ़ने के लिए आपका बहुत-बहुत धन्यवाद! कृपया hj5014221@gmail.com पर संपर्क करें।
लगता है लिंक टूटा हुआ है :(
अरे, मैं main repo का लिंक दे देता हूँ! https://github.com/beginner-jhj/mini_browser