एक और वेबसाइट पुनर्निर्माण

इस ब्लॉग के पीछे के तर्क और तकनीकी ढांचे पर चर्चा

11 min 2120 words
Cameron Roots Cameron Roots's profile picture

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

फिर से जमीन तोड़ना...

मेरी वेबसाइट को अपडेट किए हुए काफी समय हो गया है। मैंने विभिन्न कॉन्फ़िगरेशन के साथ बहुत प्रयोग किया है। कुछ समय के लिए मैं Hugo Academic का उपयोग कर रहा था, फिर मैंने Bay पर स्विच किया जहाँ मैं बिना कुछ छुए कुछ समय तक बैठा रहा। किसी समय मैंने Flask के साथ खेला, लेकिन कभी भी पूरी तरह से इसमें नहीं लगा। जैसे-जैसे मैं अपने पीएचडी के अंत की ओर बढ़ रहा हूँ, मैंने सोचा कि अपनी वेबसाइट को कुछ अधिक आधुनिक में अपडेट करने और वास्तव में कुछ वास्तविक सामग्री पोस्ट करने का यह एक अच्छा समय होगा।

इस प्रक्रिया में, मैंने कुछ मानदंडों के बारे में सोचा जो मैं पूरा करना चाहता था:

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

दूसरा, मैं कुछ ऐसा चाहता था जिसे मैं बैक-एंड कोड का अधिकांश समझ सकूं। मैं JavaScript, HTML, और CSS के साथ काम कर सकता हूँ, लेकिन मैं इनमें से किसी का भी विशेषज्ञ नहीं हूँ। एक अंतर्विषयक जीवविज्ञानी के रूप में, मैं अपने अधिकांश प्रोग्रामिंग समय R और Python में स्क्रिप्ट और कमांड लाइन उपकरणों के साथ काम करता हूँ, हालांकि मैंने खुद को Rust भी सिखाया है ताकि मुझे एक निम्न स्तर की भाषा का ज्ञान हो सके। Hugo Go में लिखा गया है और Jekyll Ruby में है। एक बार जब आप एक भाषा जानते हैं, तो आप अन्य भाषाएँ सीख सकते हैं; हालाँकि, मैं नहीं चाहता कि मेरी व्यक्तिगत वेबसाइट एक महत्वपूर्ण कोडिंग प्रोजेक्ट में बदल जाए। लक्ष्य यह है कि एक सरल वेबसाइट हो जहाँ मैं अपने विचारों को साझा कर सकूँ और संभावित रूप से दूसरों के लिए सीखने के संसाधन प्रदान कर सकूँ। जिस भाषा से मैं पहले से परिचित हूँ, उसका उपयोग करके, मैं जल्दी से कोड देख सकता हूँ ताकि मैं किसी भी आवश्यक कार्यक्षमता को जोड़ सकूँ या जिन समस्याओं का सामना कर रहा हूँ उनके लिए समाधान निकाल सकूँ।

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

स्टैक सेट करना

ज़ोला - एक फीचर समृद्ध स्थिर साइट जनरेटर

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

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

मैंने पाया कि ज़ोला की सेटअप डॉक्यूमेंटेशन उत्कृष्ट थी। यदि आप मेरे साथ हैं, तो आप इसे यहां पा सकते हैं। मैं आर्च लिनक्स पर हूं, इसलिए मैंने इन चरणों का पालन किया:

# आर्च लिनक्स के लिए
$ sudo pacman -S zola
$ cd ~/code/  # या जहाँ भी आप अपनी वेबसाइट स्टोर करना चाहते हैं
$ zola init website_name
$ cd website_name
$ git init
$ git submodule add https://github.com/tchartron/blow.git themes/blow
$ zola serve

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

<div {% if class %}class="{{class}}" {% endif %}>
    <p><a href="http://{{loc | safe}}">Redirect</a></p>
    <script>
        window.location.href = "http://{{loc | safe}}";
    </script>
</div>

इसे templates/shortcodes/redirect.html में जोड़ने के बाद, मैं ऐसे रीडायरेक्ट सेट कर सकता हूं जो मेरे एनालिटिक्स के साथ भी काम करते हैं।

उमामी के साथ ईयू को संतुष्ट करना

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

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

उमामी सेट करना वास्तव में सीधा था। मुझे बस अपने HTML हेड में एक स्क्रिप्ट टैग जोड़ने की आवश्यकता थी और मैं तैयार था। यह खाता निर्माण प्रक्रिया के दौरान स्पष्ट किया गया था। मुझे नहीं पता कि मैं लंबे समय में उमामी के साथ रहूँगा या नहीं, लेकिन यह एक पंक्ति का एकीकरण का मतलब है कि मैं न्यूनतम प्रयास के साथ एक अलग एनालिटिक्स प्रदाता में बदल सकता हूँ।

क्लाउडफ्लेयर पेजेस के साथ मुफ्त में स्थिर होस्टिंग

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

Cloudflare पेजेस अच्छा है क्योंकि आप सीधे अपनी स्थिर साइट को उनकी सेवा पर अपलोड कर सकते हैं। इससे आपको Github CI जैसी किसी चीज़ का उपयोग करने या किसी जटिल API रिलीज़ प्रक्रिया के बारे में चिंता करने की आवश्यकता नहीं होती है। मुझे लगता है कि Cloudflare में सीधे रीडायरेक्ट्स को शामिल करना संभव हो सकता है, जिससे मैं Zola में उस फीचर को जोड़ने की आवश्यकता से बच सकता हूँ। अभी, Cloudflare पेजेस मुफ्त है और इसमें आप जो डेटा स्टोर कर सकते हैं उस पर कोई सीमा नहीं लगती। इसमें सर्वरलेस फ़ंक्शंस भी शामिल हैं, इसलिए मैं इसका उपयोग अपने स्थिर वेबसाइट में अधिक कार्यक्षमता बनाने के लिए कर सकता हूँ। मेरे पास व्यक्तिगत परियोजनाओं के लिए बहुत सारे विचार हैं, इसलिए Cloudflare प्लेटफ़ॉर्म के साथ समायोजित होना मुझे भविष्य की परियोजनाओं के लिए भी तैयार करता है।

पहले, मुझे Zola का उपयोग करके अपनी साइट बनानी है। इसके लिए, मैं zola build कमांड का उपयोग कर रहा हूँ। यह मेरे प्रोजेक्ट डायरेक्टरी में public नामक एक फ़ोल्डर बनाएगा। फिलहाल, मैं अपलोड प्रक्रिया को मैन्युअल रूप से संभाल रहा हूँ। यदि आपके पास एक Cloudflare खाता नहीं है, तो बस एक खाता बनाएं और अपने डैशबोर्ड के वर्कर्स और पेजेस सेक्शन पर जाएं। पेजेस टैब पर क्लिक करें, अपने नए प्रोजेक्ट का नाम दें, और public फ़ोल्डर अपलोड करें। यदि आपके पास एक डोमेन नहीं है, तो वे आपको उपयोग करने के लिए एक सबडोमेन देंगे। अंततः मैं अपलोड प्रक्रिया को स्वचालित कर दूंगा। ऐसा करने के लिए दस्तावेज़ीकरण यहाँ है।

यह उल्लेख करना महत्वपूर्ण है कि लेखन के समय, Cloudflare पेजेस में Firefox उपयोगकर्ताओं के लिए एक दीर्घकालिक बग है। सामग्री अपलोड करते समय, किसी भी कारण से इसमें अतिरिक्त मेटाडेटा शामिल होता है जो Cloudflare के पेजों को इस तरह से संभालता है कि वे केवल कच्चा HTML प्रदर्शित करते हैं। इसे स्वचालित रूप से करने का एक तरीका हो सकता है, लेकिन इसे आपके "public/" फ़ोल्डर की जड़ में एक अतिरिक्त "_headers" फ़ाइल जोड़कर ठीक किया जा सकता है।

/*
! X-Content-Type-Options

भविष्य की योजनाएँ

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

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