मैंने हमेशा सोचा था कि एक आलसी प्रोग्रामर एक अच्छा प्रोग्रामर होता है। क्यों? क्योंकि मेहनती को कुछ करने के लिए कहो, वह जाकर करेगा। एक आलसी प्रोग्रामर 2-3 गुना अधिक समय बिताएगा, लेकिन एक स्क्रिप्ट लिखेगा - जो उसके लिए करेगा। शायद पहली बार यह अनुचित रूप से बहुत समय बिताया जाएगा, लेकिन दोहराए जाने वाले कार्यों के अधीन, यह दृष्टिकोण बहुत जल्दी भुगतान करता है। मैं खुद को एक आलसी प्रोग्रामर मानता हूं। यह एक प्रस्तावना थी, और अब व्यापार के लिए नीचे उतरो।
पहली कहानी
कुछ साल पहले मैंने सोचा कि मैं अपनी अंग्रेजी कैसे सुधार सकता हूं। साहित्य पढ़ने से बेहतर कुछ नहीं आया। एक इलेक्ट्रॉनिक रीडर खरीदा गया था, किताबें डाउनलोड की गईं और मैंने पढ़ना शुरू किया। अपरिचित शब्दों को पढ़ने की प्रक्रिया में लगातार सामने आया। मैंने तुरंत उन्हें अंतर्निहित शब्दकोशों का उपयोग करके अनुवाद किया, लेकिन मैंने एक विशेषता पर ध्यान दिया: शब्द याद नहीं रखना चाहते थे। जब मैं कुछ पृष्ठों के बाद फिर से इस शब्द पर आया, तो 90% संभावना के साथ मुझे फिर से एक अनुवाद की आवश्यकता थी, और इसलिए हर बार। निष्कर्ष यह था कि केवल पढ़ने की प्रक्रिया में अपरिचित शब्दों का अनुवाद करना पर्याप्त नहीं था, आपको कुछ और करने की आवश्यकता है। एक आदर्श विकल्प यह होगा कि हम इसे रोजमर्रा की जिंदगी में पेश करें और इसका उपयोग शुरू करें, लेकिन मैं अंग्रेजी बोलने वाले देश में नहीं रहता और यह संभव नहीं है। तब मुझे याद आया कि मैंने एक बार इंटरवल रिपीटेशन के बारे में पढ़ा था।
यह क्या है और इसके साथ क्या खाती है? संक्षेप में, भूलने की ऐसी अवस्था है , तो विकिपीडिया का एक उद्धरण:
पहले ही घंटे के भीतर, प्राप्त की गई सभी जानकारी का 60% तक भूल जाता है, याद रखने के 10 घंटे बाद, अध्ययन की गई जानकारी का 35% स्मृति में रहता है। इसके अलावा, भूलने की प्रक्रिया धीमी है, और 6 दिनों के बाद मूल रूप से सीखे गए सिलेबल्स की कुल संख्या का लगभग 20% मेमोरी में रहता है, वही राशि एक महीने के बाद मेमोरी में रहती है।
और निष्कर्ष यहाँ से है
इस वक्र के आधार पर जो निष्कर्ष निकाला जा सकता है, वह यह है कि प्रभावी संस्मरण के लिए, सीखी गई सामग्री को दोहराना आवश्यक है।
इसलिए हमें अंतराल पुनरावृत्ति का विचार आया।
ANKI एक पूर्ण मुक्त खुला स्रोत कार्यक्रम है जो अंतराल पुनरावृत्ति के विचार को लागू करता है। सीधे शब्दों में कहें, तो कम्प्यूटरीकृत फ्लैश कार्ड एक तरफ एक सवाल है, दूसरे पर उत्तर। चूँकि आप सामान्य HTML / css / जावास्क्रिप्ट का उपयोग करके प्रश्न / उत्तर दे सकते हैं, आप कह सकते हैं कि इसमें वास्तव में असीमित संभावनाएँ हैं। इसके अलावा, यह विशेष प्लगइन्स के साथ एक्स्टेंसिबल है, और उनमें से एक भविष्य में हमारे लिए बहुत उपयोगी होगा।
मैन्युअल रूप से कार्ड बनाना एक लंबा, थकाऊ काम है, और यह बहुत संभावना है कि थोड़ी देर के बाद आप इस व्यवसाय को हरा देंगे और इसलिए कुछ बिंदु पर मैंने खुद से पूछा कि क्या यह व्यवसाय स्वचालित हो सकता है। जवाब है हां, आप कर सकते हैं। और मैंने कर दिया। मैं तुरंत कहूंगा कि यह अधिक POC (अवधारणा का प्रमाण) है , लेकिन जिसका उपयोग किया जा सकता है। यदि उपयोगकर्ताओं और अन्य डेवलपर्स के हिस्से में रुचि है, तो इसे एक तैयार उत्पाद में लाया जा सकता है, जिसे तकनीकी रूप से निरक्षर उपयोगकर्ता भी उपयोग कर सकते हैं। अब, मेरी उपयोगिता का उपयोग कुछ प्रोग्रामिंग ज्ञान का अर्थ है।
मैं AIReader का उपयोग करके किताबें पढ़ता हूं । उसके पास बाहरी शब्दकोशों को जोड़ने की क्षमता है, और एक शब्द का अनुवाद करते समय, वह उस शब्द को सहेजता है जिसे आपने अनुवाद को एक पाठ फ़ाइल में कहा है। इन शब्दों का अनुवाद करने और ANKI कार्ड बनाने के लिए केवल एक चीज बची है।
सबसे पहले मैंने अनुवाद करने के लिए Google Translate , Lingvo API , आदि का उपयोग करने की कोशिश की। लेकिन इसने मुफ्त सेवाओं के साथ काम नहीं किया। मैंने विकास प्रक्रिया के दौरान मुफ्त सीमा का उपयोग किया, इसके अलावा, लाइसेंस की शर्तों के तहत, मुझे शब्दों को कैश करने का कोई अधिकार नहीं था। कुछ बिंदु पर, मुझे एहसास हुआ कि मुझे स्वयं शब्दों का अनुवाद करने की आवश्यकता है। नतीजतन, dsl2html मॉड्यूल को लिखा गया था जिसमें DSL शब्दकोशों को जोड़ा जा सकता है और जो उन्हें HTML प्रारूप में परिवर्तित कर सकता है।
यह है कि * .html में शब्दकोश प्रविष्टि कैसी दिखती है, गोल्डनडिक्ट संस्करण के साथ तुलना में मेरा संस्करण

कनेक्ट किए गए शब्दकोशों में एक शब्द की खोज करने से पहले, मैं इसे स्टैनफोर्ड कोरएनएलपी लाइब्रेरी का उपयोग करके एक शब्दकोश रूप (लेम्मा) में लाता हूं । दरअसल, इस लाइब्रेरी के कारण, मैंने जावा में लिखना शुरू कर दिया था और प्रारंभिक योजना जावा में सब कुछ लिखने की थी, लेकिन इस प्रक्रिया में मुझे नोड-जावा लाइब्रेरी मिली, जिसके साथ आप नोडज से जावा कोड को आसानी से निष्पादित कर सकते हैं और कोड का हिस्सा जावास्क्रिप्ट में लिखा जाता है। अगर मुझे यह लाइब्रेरी पहले मिल जाती, तो जावा में एक भी लाइन नहीं लिखी जाती। एक अन्य पक्ष परियोजना जो इस प्रक्रिया में पैदा हुई थी वह डीएसएल प्रलेखन के साथ एक भंडार का निर्माण है जो नेटवर्क में * .chm प्रारूप में पाया गया था, परिवर्तित और एक दिव्य रूप में लाया गया। यदि मूल फ़ाइल के लेखक, उपनाम yozhic द्वारा एक उपयोगकर्ता , इस लेख को देखता है, तो उसे किए गए काम के लिए बहुत बहुत धन्यवाद, इसके प्रलेखन के बिना मैं सबसे अधिक संभावना असफल रहा होगा।
तो, मेरे पास अंग्रेजी में एक शब्द है, इसकी शब्दकोश प्रविष्टि * .html प्रारूप में, यह सब कुछ एक साथ लाने के लिए बनी हुई है, शब्दों की सूची से ANKI लेख बनाएं और उन्हें ANKI डेटाबेस में जोड़ें। इस उद्देश्य के लिए निम्नलिखित data2anki परियोजना बनाई गई थी। वह जानता है कि शब्दों की सूची कैसे लें, अनुवाद करें, ANKI * .html लेख बनाएं और उन्हें ANKI डेटाबेस में लिखें। लेख के अंत में, इसका उपयोग करने के तरीके पर एक निर्देश है। इस बीच, दूसरी कहानी जहां अंतराल पुनरावृत्ति उपयोगी हो सकती है।
दूसरी कहानी।
प्रोग्रामर सहित अधिक / कम योग्य पेशे की तलाश में सभी लोगों को साक्षात्कार की तैयारी करने की आवश्यकता का सामना करना पड़ता है। आप कई अवधारणाओं का उपयोग नहीं करते हैं जो हर रोज़ अभ्यास में एक साक्षात्कार में पूछे जाते हैं और वे भूल जाते हैं। साक्षात्कार की अगली तैयारी में, संकलन, पुस्तक, संदर्भ पुस्तक के माध्यम से स्क्रॉल करना, मुझे इस तथ्य के साथ सामना करना पड़ा कि इस जानकारी को फ़िल्टर करने में बहुत समय और ध्यान लगता है जो आप पहले से जानते हैं क्योंकि यह हमेशा स्पष्ट नहीं होता है और आपको यह समझने के लिए इसे पढ़ना होगा कि यह क्या है। अप्रासंगिक। जब आप किसी ऐसे विषय पर आते हैं, जिसे वास्तव में दोहराया जाना चाहिए, तो अक्सर ऐसा होता है कि आप पहले से ही थक चुके होते हैं और तैयारी की गुणवत्ता प्रभावित होती है। कुछ बिंदु पर, मैंने सोचा कि इसके लिए ANKI कार्ड का उपयोग क्यों नहीं किया जाए? उदाहरण के लिए, किसी विषय पर नोट्स लेते समय, तुरंत प्रश्न - उत्तर के रूप में एक सारांश बनाएं, और फिर जब आप इसे दोहराते हैं, तो आपको तुरंत पता चल जाएगा कि आपको इस प्रश्न का उत्तर पता है या नहीं।
समस्या केवल इस बात में उत्पन्न हुई कि प्रश्नों को भरना बहुत लंबा और थकाऊ था। डेटा 2anki प्रोजेक्ट में प्रक्रिया को सुविधाजनक बनाने के लिए, मैंने मार्कडाउन पाठ को ANKI कार्ड में बदलने के लिए कार्यक्षमता जोड़ी। आपको बस एक बड़ी फाइल लिखने की जरूरत है जिसमें प्रश्नों और उत्तरों को अक्षरों के पूर्वनिर्धारित अनुक्रम के साथ चिह्नित किया जाएगा, जिससे पार्सर समझ जाएगा कि प्रश्न कहां है और उत्तर कहां है।
इस फ़ाइल के बन जाने के बाद, आप data2anki शुरू करते हैं और यह ANKI कार्ड बनाता है। मूल फ़ाइल को संपादित करना और साझा करना आसान है, आपको बस संबंधित कार्ड को मिटाने और प्रोग्राम को फिर से चलाने की आवश्यकता है, और एक नया संस्करण बनाया जाएगा।
स्थापना और उपयोग
ANKI + AnkiConnect स्थापित करें
- यहां से ANKI डाउनलोड करें: https://apps.ankiweb.net/
- AnkiConnect प्लगइन स्थापित करें: https://ankiweb.net/sared/info/2055492159
Data2anki स्थापित करें
- Github भंडार से data2anki डाउनलोड करें
git clone https://github.com/anatoly314/data2anki
- निर्भरता स्थापित करें
cd data2anki && npm install
- जावा निर्भरता को डाउनलोड करें https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-d dependencies.zip
- अनार जार पर निर्भरताएं। ज़िप और डेटा 2anki / जावा / जार में अपनी सामग्री डालें
शब्दों के अनुवाद के लिए उपयोग करें:
फ़ाइल data2anki / config.json में :
मोड कुंजी में, मान dsl2anki लिखें
प्रमुख मॉड्यूल में .dsl.anki.deckName और मॉड्यूल.dsl.anki.modelName , क्रमशः डेक नाम और मॉडल नाम लिखें (कार्ड बनाने से पहले ही बनाया जाना चाहिए)। अब केवल बेसिक प्रकार का एक मॉडल समर्थित है:
फ्रंट और बैक फ़ील्ड है, और एक कार्ड बनाएगा। फ्रंट में दर्ज किया गया टेक्स्ट आपको कार्ड के सामने दिखाई देगा, और बैक में आपके द्वारा दर्ज किया गया टेक्स्ट कार्ड के पीछे दिखाई देगा।
जहाँ स्रोत शब्द फ्रंट फ़ील्ड है और अनुवाद बैक फ़ील्ड में होगा।
बेसिक (और उलट कार्ड) के लिए समर्थन जोड़ने में कोई समस्या नहीं है, जहां शब्द और अनुवाद के लिए एक रिवर्स कार्ड बनाया जाएगा, जहां अनुवाद को मूल शब्द को याद करने की आवश्यकता होगी। केवल समय और इच्छा की उपस्थिति की आवश्यकता है।
mod.dsl.d शब्दकोशों Path कुंजी में, आप एक .dsl शब्दकोशों जुड़े के साथ एक सरणी रजिस्टर। प्रत्येक जुड़ा हुआ शब्दकोश एक निर्देशिका है जिसमें शब्दकोश फाइलें प्रारूप के अनुसार स्थित हैं: डीएसएल शब्दकोश संरचना
मुख्य मॉड्यूल में .dsl.wordToTranslatePath, उन शब्दों की सूची में पथ निर्दिष्ट करें जिन्हें आप अनुवाद करना चाहते हैं।
- ANKI एप्लिकेशन काम करते समय चलाएं
node data2anki\index.js
- लाभ !!!
मार्कडाउन से कार्ड बनाने के लिए उपयोग करता है
फ़ाइल data2anki / config.json में :
- मोड कुंजी में, मान markdown2anki लिखें
- प्रमुख माड्यूलों में.मार्कडाउन .anki.deckName और मॉड्यूल.dsl.anki.modelName आप क्रमशः लिखते हैं, डेक नाम और मॉडल नाम (कार्ड बनाने से पहले ही बनाया जाना चाहिए)। Markdown2anki मोड के लिए, केवल एक बेसिक प्रकार मॉडल समर्थित है।
प्रमुख मॉड्यूल में । चयनकर्ता के साथ लाइन स्वयं पार्स नहीं होगी और कार्ड में नहीं आएगी, पार्सर अगली पंक्ति से काम करना शुरू कर देगा।
उदाहरण के लिए, यह प्रश्न / उत्तर कार्ड:

यह मार्कडाउन में इस प्रकार दिखेगा:
# प्रश्न #
## प्रश्न 5. एक मल फ़ंक्शन लिखें जो निम्नलिखित सिंटैक्स के साथ संलग्न होने पर ठीक से काम करेगा।
`` `जावास्क्रिप्ट
कंसोल.लॉग (mul (2) (3) (4)); // आउटपुट: 24
कंसोल.लॉग (mul (4) (3) (4)); // आउटपुट: 48
`` ``
# उत्तर #
नीचे यह कोड दिया गया है कि यह कैसे काम करता है:
`` `जावास्क्रिप्ट
फ़ंक्शन मौल (x) {
वापसी फ़ंक्शन (y) {// अनाम फ़ंक्शन
वापसी फ़ंक्शन (z) {// अनाम फ़ंक्शन
वापसी x * y * z;
};
};
}
`` ``
यहाँ `mul 'फ़ंक्शन पहले तर्क को स्वीकार करता है और वह गुमनाम फ़ंक्शन लौटाता है जो दूसरा पैरामीटर लेता है और वह गुमनाम फ़ंक्शन लौटाता है जो तीसरा पैरामीटर लेता है और तर्कों के गुणन को लौटाता है जिसे क्रमिक रूप से पारित किया जा रहा है
जावास्क्रिप्ट फ़ंक्शन के अंदर परिभाषित बाहरी फ़ंक्शन वैरिएबल तक पहुंच है और फ़ंक्शन प्रथम श्रेणी का ऑब्जेक्ट है इसलिए इसे फ़ंक्शन द्वारा भी लौटाया जा सकता है और किसी अन्य फ़ंक्शन में एक तर्क के रूप में पारित किया जा सकता है।
- एक फ़ंक्शन ऑब्जेक्ट प्रकार का एक उदाहरण है
- एक फंक्शन में गुण हो सकते हैं और इसकी कंस्ट्रक्टर विधि का लिंक वापस आ सकता है
- एक फ़ंक्शन को चर के रूप में संग्रहीत किया जा सकता है
- एक फ़ंक्शन दूसरे फ़ंक्शन के पैरामीटर के रूप में पारित किया जा सकता है
- एक फ़ंक्शन को दूसरे फ़ंक्शन से वापस किया जा सकता है
एक उदाहरण यहाँ से लिया गया है: 123-जावास्क्रिप्ट-साक्षात्कार-प्रश्न
प्रोजेक्ट फ़ोल्डर में examples/markdown2anki-example.md
साथ एक फ़ाइल भी है examples/markdown2anki-example.md
- प्रमुख माड्यूल.मार्कडाउन.पैथटॉइफाइल में
निर्धारित करें, फ़ाइल का पथ जहाँ प्रश्न / उत्तर वाली * .md फ़ाइल निहित है
- ANKI एप्लिकेशन काम करते समय चलाएं
node data2anki\index.js
- लाभ !!!
मोबाइल फ़ोन पर यह कैसा दिखता है:
परिणाम
ANKI के डेस्कटॉप संस्करण पर प्राप्त कार्ड को आसानी से ANKI क्लाउड (100mb तक फ्री) के साथ सिंक्रनाइज़ किया जा सकता है, और फिर आप उन्हें हर जगह उपयोग कर सकते हैं। एंड्रॉइड और आईफोन के लिए क्लाइंट हैं, आप इसे एक ब्राउज़र में भी उपयोग कर सकते हैं। नतीजतन, यदि आपके पास समय है कि आपके पास खर्च करने के लिए कुछ भी नहीं है, तो आप लक्ष्यहीन रूप से फेसबुक या इंस्टाग्राम पर सील करने के बजाय, आप कुछ नया सीख सकते हैं।
उपसंहार
जैसा कि मैंने उल्लेख किया है, यह एक कार्यशील पीओसी से अधिक है जिसे आप तैयार उत्पाद की तुलना में उपयोग कर सकते हैं। कहीं-कहीं पर 30% डीएसएल पार्सर मानक लागू नहीं किया गया है, और इसलिए, उदाहरण के लिए, शब्दकोश में मौजूद सभी शब्दकोश प्रविष्टियां नहीं मिल सकती हैं , जावास्क्रिप्ट में इसे फिर से लिखने का भी विचार है, क्योंकि आप "स्थिरता" चाहते हैं, और इसके अलावा, अब यह लिखा है। बहुत इष्टतम नहीं है। अब पार्सर एक पेड़ का निर्माण कर रहा है, और यह शानदार है और कोड को जटिल करने की आवश्यकता नहीं है। Markdown2anki मोड में, चित्रों को पार्स नहीं किया गया है। मैं धीरे-धीरे देखने की कोशिश करूंगा, लेकिन, जब तक मैं खुद के लिए लिख रहा हूं, मैं सबसे पहले रेक को हल करूंगा कि मैं खुद पर हमला करूंगा, लेकिन अगर कोई मदद करना चाहता है, तो हम स्वागत करते हैं। यदि आपके पास कार्यक्रम के बारे में प्रश्न हैं, तो मुझे संबंधित परियोजनाओं में खुले मुद्दों के माध्यम से मदद करने में खुशी होगी। बाकी आलोचना और सुझाव यहां लिखें। मुझे उम्मीद है कि किसी को यह प्रोजेक्ट उपयोगी लगेगा।
PS यदि आप त्रुटियों को नोटिस करते हैं (और वे, दुर्भाग्य से, हैं), एक व्यक्तिगत में लिखें, मैं सब कुछ ठीक कर दूंगा।