मेरा पहला हैकाथॉन जीतना — उत्पाद और सीखे गए पाठ
परिचय
इस सप्ताह, मैंने अपने पहले हैकाथॉन में भाग लिया — एक दो दिवसीय, ऑनलाइन हैकाथॉन जिसका नाम था विकसित करें ताकि विघटन हो जिसने प्रत्येक 1-4 लोगों के साथ लगभग सौ टीमों को आकर्षित किया। लगभग बीस घंटे की कोडिंग, बहुत कुछ सीखने, और कुछ नींद रहित रातों के बाद, मैंने बनाया SurgeLingo, एक विघटनकारी भाषा सीखने का उपकरण — जिसने मुझे 'सर्वश्रेष्ठ एकल हैक', एक कनाडाई टेक शिखर सम्मेलन के टिकट, और बीट्स हेडफोन, अन्य चीजों के साथ जीता। यहाँ मैंने जो सीखा, उत्पाद के बारे में, और अंत में कुछ सुझाव दिए गए हैं।
SurgeLingo के बारे में
यह मूल रूप से हैकाथॉन सबमिशन पेज पर पोस्ट किया गया था.
प्रेरणा
मैं खुद एक भाषा सीखने वाला हूं, और जब मैं शुरुआती और मध्यम स्तर पर था, तो मुझे हमेशा समझने योग्य, सुलभ सामग्री ढूंढना मुश्किल लगता था। अधिकांश विदेशी संसाधन या तो बहुत लंबे, कठिन, या प्राप्त करने में मुश्किल थे।
मैंने इसे हल करने के लिए SurgeLingo बनाया। यह उपयोगकर्ता द्वारा चुनी गई सेटिंग्स, जैसे भाषा, कठिनाई, और टैग के आधार पर वाक्यों का एक व्यक्तिगत फीड प्रदान करने के लिए लाखों वाक्यों के साथ एक ओपन-सोर्स वाक्य डेटाबेस का उपयोग करता है। ये वाक्य धीरे-धीरे अधिक कठिन हो जाते हैं, और केवल एक क्लिक के साथ सीखे और संग्रहित किए जा सकते हैं।
ऑनलाइन पहलू सुलभता की समस्या को हल करता है, व्यक्तिगत प्रतिक्रिया कठिनाई की समस्या को हल करती है, और 200-अक्षर की सीमा इसे SurgeLingo के साथ सीखने के लिए आसान बनाती है, चाहे एक मिनट के लिए बस स्टॉप पर बैठकर हो या घर पर एक घंटे के लिए गहन अध्ययन कर रहे हों।
यह क्या करता है
से वाक्य लेकर तातोएबा, SurgeLingo टैग किए गए वाक्यों, या 'सर्जेस' का एक विशाल डेटाबेस बनाता है — क्योंकि प्लेटफॉर्म का उपयोग करके, उपयोगकर्ता अपनी सीखने में 'आगे बढ़ते' हैं। ये वाक्य प्राकृतिक भाषा प्रसंस्करण के माध्यम से अपने असंयुक्त रूप में कम कर दिए जाते हैं, और उपयोगकर्ता के ज्ञात शब्दों के साथ तुलना की जा सकती है ताकि व्यक्तिगत परिणाम दिखाए जा सकें।
एक उपयोगकर्ता अपनी खुद की शब्द सूची अपलोड कर सकता है, उदाहरण के लिए एक आवृत्ति सूची से, इन ज्ञात शब्दों को जनरेट करने के लिए। जब भी वे एक वाक्य देखते हैं, वे एक लाल, अज्ञात शब्द पर क्लिक कर सकते हैं जिसे उन्होंने अब सीख लिया है, उसे भी अपने डेटाबेस में जोड़ने के लिए — या बस पूरे वाक्य को अध्ययन करने के बाद ज्ञात के रूप में चिह्नित कर सकते हैं।
एक अधिक केंद्रित सत्र के लिए, उपयोगकर्ता वापस मिले वाक्यों की कठिनाई बदल सकते हैं (उदाहरण के लिए, आसान से, जहां वाक्य की 90% सामग्री ज्ञात है, कठिन तक, जहां यह 70% है)। वे एक विशिष्ट प्रकार के सर्ज की खोज भी कर सकते हैं वाक्य के अंदर पाए जाने वाले शब्दों, एक टैग, एक लेखक आदि को निर्दिष्ट करके — शब्दावली सीखने के लिए एकदम सही। संदर्भ में। सिर्फ फ्लैशकार्ड्स से सीखना वास्तव में आपको विकसित होने में मदद नहीं करेगा जब तक कि आप नए शब्दों को संदर्भ में नहीं देखते (जैसा कि SurgeLingo प्रदान करता है), क्योंकि यह इसके अर्थ को मजबूत करेगा और इसके उपयोग का प्रदर्शन करेगा।
नीचे आप एक सर्ज का उदाहरण देख सकते हैं।
इसके अतिरिक्त, उपयोगकर्ता अपने खुद के सर्ज लिखकर और जमा करके समुदाय में योगदान करते हैं।
स्टैक
छोटी समय सीमा के बावजूद, यह मैंने कभी शुरू किया था उनमें से सबसे महत्वाकांक्षी परियोजनाओं में से एक था।
द फ्रंटएंड Nuxt और Vue 2 के साथ बनाया गया था। स्टाइलिंग के लिए TailwindCSS का उपयोग किया गया था, और मॉड्यूल nuxt-auth
से फोर्क करके और nuxt-axios
यूजर प्रमाणीकरण और बैकएंड से अनुरोधों के लिए सुचारू रूप से उपयोग किए गए थे।
द बैकएंड Flask Python माइक्रोफ्रेमवर्क के साथ बनाया गया था, और उपयोगकर्ता जानकारी, वाक्य ('surges'), और इसी तरह की चीजों को स्टोर करने के लिए एक PostgreSQL डेटाबेस का उपयोग किया गया था।
द nltk
Python पैकेज, एक प्राकृतिक भाषा प्रसंस्करण लाइब्रेरी, का उपयोग किया गया था ताकि surge वाक्य और उपयोगकर्ता के शब्दकोष स्टेम्ड, एक प्रक्रिया जो अंदर के शब्दों को उनके मूल रूप में कम करती है। इसने संयुग्मन वाली भाषाओं के समर्थन की अनुमति दी। Flask का विस्तार करने या सामग्री निर्माण की अनुमति देने वाले कई अन्य पैकेज का भी उपयोग किया गया था।
चुनौतियाँ
Nuxt और Flask एक दुर्लभ संयोजन है, और इसलिए मुझे बैकएंड API और फ्रंटएंड के समन्वय के लिए कई समस्याओं के लिए गहराई से खोजना पड़ा।
इनमें से सबसे स्पष्ट उपयोगकर्ता प्रमाणीकरण था — मुझे एक कुकी-आधारित अंतर्निहित रीफ्रेश सिस्टम स्थापित करना पड़ा, और फ्रंटएंड पर प्रमाणीकरण के लिए मैं जिस लाइब्रेरी का उपयोग कर रहा था, वह nuxt-auth
Flask को ध्यान में रखकर नहीं बनाया गया था। इसलिए, मुझे मॉड्यूल कॉन्फ़िगरेशन को कस्टमाइज करना पड़ा और JWT टोकन पासिंग के लिए एक कम ज्ञात दृष्टिकोण अपनाना पड़ा।
एक और चुनौती, निस्संदेह, समय की थी। अकेले काम करना और सप्ताहांत में कुछ गतिविधियां होना, परियोजना को विकसित करने का जुगाड़ करना एक चुनौती थी। मुझे कुछ पृष्ठों के लिए 'जल्द आ रहा है' सामग्री छोड़नी पड़ी जो प्राथमिकता नहीं थी, जैसे कि हमारे बारे में या उपयोगकर्ता प्रोफाइल।
मैंने क्या सीखा
मुझे शब्द प्रसंस्करण के बारे में बहुत कुछ सीखने को मिला, क्योंकि मुझे कई भाषाओं में सभी शब्दों को स्टेम करना पड़ा ताकि वाक्य विश्लेषण अच्छी तरह से काम कर सके।
इसी तरह, मैंने Flask के माध्यम से PostgreSQL प्रबंधन के कुछ पहलुओं का पता लगाया जिनके बारे में मुझे पहले पता नहीं था, जैसे कि BaseQuery
s, उन्नत फ़िल्टरिंग, और अधिक। यह नया ज्ञान निश्चित रूप से भविष्य में काम आएगा।
आगे के लिंक
युक्तियाँ
हैकाथॉन में नया होने के कारण, मेरे लिए बहुत कुछ अजनबी था — यहां कुछ चीजें हैं जो मुझे लगता है कि मैंने शुरू करने से पहले सुनी होतीं।
मुख्य कार्यक्षमता पर ध्यान केंद्रित करें
मैंने अपंजीकृत उपयोगकर्ताओं के लिए होम पेज बनाने में बहुत अधिक समय (कई घंटे) लगाया — केवल इसके लिए कि यह वीडियो या फोटो में ऊपरी 20% के बाहर दिखाया भी नहीं गया। इसने वेब ऐप की वास्तव में मुख्य सुविधाओं को विकसित करने में मेरे द्वारा बिताए गए समय से ध्यान भटकाया — और जब मुझे मुख्य कार्यक्षमता के कुछ हिस्सों को बनाने में कुछ कठिनाइयों का सामना करना पड़ा, तो मैंने जो समय खोया उसने मुझे तनाव दिया।
इसलिए, मेरा पहला सुझाव है कि नींव से ऊपर की ओर बनाएं, उन सजावटों पर ध्यान दिए बिना जिन्हें निर्णायक शायद ही कभी देखेंगे।
मैंने कुछ 404 पृष्ठ और खाली लिंक भी छोड़ दिए (जैसे उपयोगकर्ता सेटिंग्स) — यह असंभव है कि कोई भी उन्हें कभी देखेगा।
एक कार्य योजना बनाएं
यह किसी भी परियोजना के लिए स्पष्ट है, न केवल छोटी हैकाथॉन वाली के लिए — यह जानना महत्वपूर्ण है क्या आप क्या बना रहे हैं और आप इसे कैसे बनाने जा रहे हैं इससे पहले कि आप ऐसा करना शुरू करें। मैंने सप्ताहांत के मध्य में एक कालानुक्रमिक टूडू सूची बनाई, और मेरे सामने कार्य रखने से विकास प्रक्रिया तेज हो गई और मुझे बग पहचानने में मदद मिली।
उत्पाद का जीवंत वर्णन करें
अधिकतर हैकाथॉन में एक थीम होगी — अपने सबमिशन पर ध्यान दें कि वह कैसे उस थीम/समस्या को संबोधित करता है, जितने आकर्षक और भावनात्मक शब्दों का उपयोग कर सकते हैं उतना करें। बेशक, मत झूठ बोलें उत्पाद के बारे में — लेकिन थोड़ा बहुत काफी होता है।
इसके अतिरिक्त, मुझे लगता है कि एक अच्छी तरह से भरा हुआ सबमिशन फॉर्म भी चमत्कार करता है। मैंने कुछ पृष्ठ लिखे — और मुझे लगता है कि इस पर खर्च किया गया आधा घंटा कुछ फ़ंक्शन लिखने में लगे एक और आधे घंटे से अधिक मूल्यवान था।
मदद मांगने से डरें नहीं
हैकाथॉन के नेता अत्यंत उत्साही और सहायक थे — यहां तक कि मेरे कुछ स्पष्ट रूप से शुरुआती सवालों के लिए भी। और जबकि एक प्रतिस्पर्धी माहौल होता है, साथी हैकर्स भी आमतौर पर मदद करने और हैकाथॉन से संबंधित एक-दो त्वरित सवालों के जवाब देने में खुश होते हैं।
समय को ध्यान में रखें
समय सीमा की आवश्यकताओं में सबमिशन विवरण भरना, वीडियो बनाना शामिल है (मैंने वास्तव में इसमें लगने वाले समय का कम अनुमान लगाया था, प्रस्तुति बनाना, इसे अच्छी तरह से रिकॉर्ड करना और अपलोड करने में लगभग 90 मिनट लगे), और उद्घाटन समारोह देखना — साथ ही नींद भी, बेशक।
मेरा समापन बेहद तंग था, और इससे दोनों बग और तनाव पैदा हुए। मैं सुझाव दूंगा कि अंतिम समय सीमा से कम से कम दो घंटे पहले सभी कोडिंग समाप्त करने का लक्ष्य रखें - बाकी समय का उपयोग वीडियो के दौरान उभर सकने वाले बग की खोज करने, अपने रिकॉर्डिंग सॉफ्टवेयर को सेट करने, फोटो लेने, एक लेख लिखने आदि के लिए करें।
निष्कर्ष
कुल मिलाकर, यह बनाना बहुत मजेदार था, हालांकि समय सीमा के कारण थोड़ा तनाव हुआ - शायद वीडियो प्रविष्टि में यह परिलक्षित होता है। मैंने SurgeLingo विकसित करते हुए बहुत कुछ सीखा, और मुझे लगता है कि इसमें वास्तविक भविष्य की क्षमता है - मैं इस पर काम जारी रखने पर गहराई से विचार कर रहा हूं।
हैकाथॉन में भाग लेना अद्भुत था, और अगली सुबह यह पता चलने पर कि मैंने एक श्रेणी जीती है - कुछ शानदार पुरस्कारों के साथ - यह और भी खास हो गया!
मुझे आशा है कि इसके बारे में पढ़ना और सुझावों पर नज़र डालना आपकी मदद करेगा।
टिप्पणी करें