قصتان حول كيف يمكن أن تساعدك ANKI في تعلم لغة أجنبية والاستعداد للمقابلة

لقد اعتقدت دائمًا أن المبرمج الكسول هو مبرمج جيد. لماذا؟ لأنه إذا طلبت من العامل المجتهد أن يفعل شيئًا ما، فسوف يذهب ويفعله. وسيقضي المبرمج الكسول وقتًا أطول بمقدار 2-3 مرات، لكنه سيكتب نصًا يقوم بذلك نيابةً عنه. قد يستغرق الأمر وقتًا طويلاً بشكل غير معقول للقيام بذلك في المرة الأولى، ولكن مع المهام المتكررة، سيؤتي هذا النهج ثماره بسرعة كبيرة. أنا أعتبر نفسي مبرمج كسول. كانت هذه هي الديباجة، والآن دعونا ننتقل إلى العمل.

القصة الأولى

قبل بضع سنوات كنت أتساءل كيف يمكنني تحسين لغتي الإنجليزية. لم يتبادر إلى ذهني شيء أفضل من قراءة الأدب. اشتريت قارئًا إلكترونيًا، وقمت بتنزيل الكتب وبدأت القراءة. أثناء القراءة، ظللت أواجه كلمات غير مألوفة. لقد ترجمتها على الفور باستخدام القواميس المدمجة في القارئ، لكنني لاحظت ميزة واحدة: الكلمات لا تريد أن يتم تذكرها. عندما عثرت على هذه الكلمة مرة أخرى بعد بضع صفحات، مع احتمال 90٪، كنت بحاجة إلى الترجمة مرة أخرى، وكان هذا يحدث في كل مرة. وكان الاستنتاج هو أنه لا يكفي مجرد ترجمة الكلمات غير المألوفة أثناء القراءة، بل عليك القيام بشيء آخر. سيكون الخيار المثالي هو إدخاله في الحياة اليومية والبدء في استخدامه، لكنني لا أعيش في بلد يتحدث الإنجليزية وهذا غير مرجح. ثم تذكرت أنني قرأت عنها ذات مرة التكرار المتباعد.

ما هو وماذا يؤكل؟ باختصار، هناك هذا منحنى النسيان، اقتباس إضافي من ويكيبيديا:

بالفعل خلال الساعة الأولى، يتم نسيان ما يصل إلى 60٪ من جميع المعلومات الواردة، وبعد 10 ساعات من الحفظ، يبقى 35٪ مما تم تعلمه في الذاكرة. ثم تتم عملية النسيان ببطء، وبعد 6 أيام يبقى حوالي 20٪ من إجمالي عدد المقاطع التي تم تعلمها في البداية في الذاكرة، ويبقى نفس المقدار في الذاكرة بعد شهر.

والخاتمة من هنا

الاستنتاجات التي يمكن استخلاصها بناءً على هذا المنحنى هي أنه من أجل الحفظ الفعال من الضروري تكرار المادة المحفوظة.

لذلك توصلنا إلى فكرة التكرار متباعدة.

أنكي هو برنامج مجاني تمامًا ومفتوح المصدر ينفذ فكرة التكرار المتباعد. ببساطة، تحتوي بطاقات الفلاش المحوسبة على سؤال من جهة وإجابة من جهة أخرى. حيث يمكنك القيام بالأسئلة/الأجوبة باستخدام العادية html/css/javascriptإذن يمكننا القول أن لديها إمكانيات لا حدود لها حقًا. بالإضافة إلى ذلك، فهو قابل للتوسيع باستخدام خاص الإضافاتوواحد منهم سيكون مفيدًا جدًا لنا في المستقبل.

يعد إنشاء البطاقات يدويًا أمرًا طويلًا ومملًا ومع احتمال كبير، بعد فترة ستنسى هذه المهمة، ولذا في مرحلة ما سألت نفسي السؤال، هل من الممكن أتمتة هذه المهمة. الجواب هو نعم يمكنك. وأنا فعلت ذلك. سأقول على الفور، إنه أكثر من ذلك POC (إثبات المفهوم)، ولكن التي يمكن استخدامها. إذا كان هناك اهتمام من المستخدمين والمطورين الآخرين، فيمكن تقديمه إلى منتج نهائي يمكن حتى للمستخدمين الأميين تقنيًا استخدامه. الآن، يتطلب استخدام الأداة المساعدة الخاصة بي بعض المعرفة بالبرمجة.

قرأت الكتب باستخدام البرنامج هوائي. لديه القدرة على ربط القواميس الخارجية، وعندما تترجم كلمة، فإنه يحفظ الكلمة التي طلبت ترجمتها في ملف نصي. كل ما تبقى هو ترجمة هذه الكلمات وإنشاء بطاقات ANKI.

في البداية حاولت استخدام للترجمة الترجمة من Google, واجهة برمجة تطبيقات لينغفو إلخ. لكن الأمور لم تسر مع الخدمات المجانية. لقد استنفدت الحد المجاني أثناء عملية التطوير، بالإضافة إلى ذلك، وفقًا لشروط الترخيص، لم يكن لدي الحق في تخزين الكلمات مؤقتًا. وفي مرحلة ما أدركت أنني بحاجة لترجمة الكلمات بنفسي. ونتيجة لذلك، تمت كتابة وحدة dsl2html التي يمكنك الاتصال بها قواميس DSL ومن يعرف كيفية تحويلها إلى HTML شكل.

هذا هو الشكل الذي يبدو عليه إدخال القاموس في *. HTML، خياري مقارنة بالخيار جولدن ديكت

قصتان حول كيف يمكن أن تساعدك ANKI في تعلم لغة أجنبية والاستعداد للمقابلة

قبل البحث عن كلمة في القواميس المتصلة، أحضرها إلى نموذج القاموس (ليما) باستخدام المكتبة ستانفورد كور إن إل بي. في الواقع، بسبب هذه المكتبة، بدأت الكتابة بلغة Java وكانت الخطة الأصلية هي كتابة كل شيء بلغة Java، لكن في هذه العملية وجدت المكتبة عقدة جافا يمكنك من خلالها تنفيذ تعليمات Java البرمجية بسهولة نسبيًا من Nodejs ويتم كتابة بعض التعليمات البرمجية بلغة JavaScript. إذا وجدت هذه المكتبة في وقت سابق، فلن يتم كتابة سطر واحد في Java. مشروع جانبي آخر ولد في هذه العملية هو الخلق مستودع مع وثائق DSL والذي تم العثور عليه على الشبكة بالتنسيق *.chm، تم تحويله وإحضاره إلى الشكل الإلهي. إذا كان مؤلف الملف الأصلي مستخدمًا باللقب yozhic عندما يرى هذا المقال، أشكره كثيرًا على العمل الذي قام به، وبدون توثيقه، على الأرجح لم أكن لأنجح.

إذن، لدي كلمة باللغة الإنجليزية، مدخلها في القاموس بالتنسيق *. HTMLكل ما تبقى هو تجميع كل شيء معًا وإنشاء مقالات ANKI من قائمة الكلمات وإدخالها في قاعدة بيانات ANKI. ولهذا الغرض تم إنشاء المشروع التالي data2anki. يمكن أن يأخذ قائمة من الكلمات كمدخل، وترجمة، وإنشاء ANKI *. HTML المقالات وتسجيلها في قاعدة بيانات ANKI. وفي نهاية المقال توجد تعليمات حول كيفية استخدامه. في هذه الأثناء، القصة الثانية هي حيث يمكن أن يكون التكرار المتباعد مفيدًا.

القصة الثانية.

يواجه جميع الأشخاص الذين يبحثون عن تخصص أكثر أو أقل تأهيلاً، بما في ذلك المبرمجين، الحاجة للتحضير للمقابلة. العديد من المفاهيم التي يتم طرحها في المقابلات لا تستخدمها في الممارسة اليومية ويتم نسيانها. عند التحضير للمقابلة، وتصفح الملاحظات، أو الكتاب، أو المرجع، واجهت حقيقة أن الأمر يتطلب الكثير من الوقت والاهتمام لغربلة المعلومات التي تعرفها بالفعل لأنها ليست واضحة دائمًا وعليك أن تبحث عنها. اقرأها بعناية لتفهم ماهيتها. عندما تتطرق إلى موضوع يحتاج حقًا إلى التكرار، فغالبًا ما يحدث أنك متعب بالفعل وتتأثر جودة تحضيراتك. في مرحلة ما فكرت، لماذا لا تستخدم بطاقات ANKI لهذا أيضًا؟ على سبيل المثال، عند تدوين ملاحظات حول موضوع ما، قم على الفور بإنشاء ملاحظة على شكل سؤال وإجابة، ومن ثم عند تكرارها، ستعرف على الفور ما إذا كنت تعرف إجابة هذا السؤال أم لا.

المشكلة الوحيدة التي نشأت هي أن كتابة الأسئلة كانت طويلة جدًا ومملة. ولتسهيل العملية، data2anki المشروع أضفت وظيفة التحويل تخفيض السعر النص في بطاقات ANKI. كل ما تحتاجه هو كتابة ملف واحد كبير يتم فيه تمييز الأسئلة والأجوبة بتسلسل محدد مسبقًا من الأحرف، والذي من خلاله سيفهم المحلل اللغوي مكان السؤال ومكان الإجابة.

بمجرد إنشاء هذا الملف، تقوم بتشغيل data2anki ويقوم بإنشاء بطاقات ANKI. من السهل تحرير الملف الأصلي ومشاركته، كل ما عليك فعله هو مسح البطاقة (البطاقات) المقابلة وتشغيل البرنامج مرة أخرى، وسيتم إنشاء نسخة جديدة.

التثبيت والاستخدام

  1. تثبيت ANKI + AnkiConnect

    1. تحميل أنكي من هنا: https://apps.ankiweb.net/
    2. تثبيت البرنامج المساعد AnkiConnect: https://ankiweb.net/shared/info/2055492159

  2. تركيب data2anki

    1. جارى التحميل data2anki من مستودع جيثب
      git clone https://github.com/anatoly314/data2anki
    2. تثبيت التبعيات
      cd data2anki && npm install
    3. تحميل تبعيات جافا https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. التفريغ jar-dependeency.zip ووضع محتوياته فيه data2anki/java/jars

  3. استخدم لترجمة الكلمات:

    1. في ملف data2anki/config.json:

      • في المفتاح طريقة أدخل القيمة dsl2anki

      • في المفتاح Modules.dsl.anki.deckName и Modules.dsl.anki.modelName الكتابة وفقا لذلك اسم السطح и نموذج الاسم (يجب أن يتم إنشاؤها بالفعل قبل إنشاء البطاقات). حاليًا يتم دعم نوع النموذج فقط الباقة الأساسية:

        يحتوي على حقول أمامية وخلفية، وسيقوم بإنشاء بطاقة واحدة. سيظهر النص الذي تدخله في المقدمة على الجزء الأمامي من البطاقة، وسيظهر النص الذي تدخله في الخلف على الجزء الخلفي من البطاقة.

        أين الكلمة الأصلية؟ المجال الامامي، وستكون الترجمة موجودة المجال الخلفي.

        ليست هناك مشكلة لإضافة الدعم الأساسية (والبطاقة المعكوسة)، حيث سيتم إنشاء بطاقة عكسية للكلمة والترجمة، حيث ستحتاج إلى تذكر الكلمة الأصلية بناءً على الترجمة. كل ما تحتاجه هو الوقت والرغبة.

      • في المفتاح Modules.dsl.dictionariesPath تسجيل مصفوفة متصلة *.دي اس ال القواميس. كل قاموس متصل هو دليل توجد فيه ملفات القاموس وفقًا للتنسيق: هيكل قاموس DSL

      • في المفتاح Modules.dsl.wordToTranslatePath أدخل المسار إلى قائمة الكلمات التي تريد ترجمتها.

    2. قم بالتشغيل مع تشغيل تطبيق ANKI
      node data2ankiindex.js
    3. ربح!!!

  4. يستخدم لإنشاء بطاقات من تخفيض السعر

    1. في ملف data2anki/config.json:

      • في المفتاح طريقة أدخل القيمة markdown2anki
      • في المفتاح Modules.markdown.anki.deckName и Modules.dsl.anki.modelName الكتابة وفقا لذلك اسم السطح и نموذج الاسم (يجب أن يتم إنشاؤها بالفعل قبل إنشاء البطاقات). ل markdown2anki يتم دعم نوع الطراز فقط الباقة الأساسية.
      • في المفتاح Modules.markdown.selectors.startQuestionSelectors и Modules.markdown.selectors.startAnswerSelectors تكتب محددات تحدد بها بداية السؤال والإجابة على التوالي. لن يتم تحليل السطر الذي يحتوي على المحدد نفسه ولن ينتهي به الأمر في البطاقة، وسيبدأ المحلل اللغوي في العمل من السطر التالي.

        على سبيل المثال، بطاقة الأسئلة/الإجابة هذه:

        قصتان حول كيف يمكن أن تساعدك ANKI في تعلم لغة أجنبية والاستعداد للمقابلة

        سيبدو مثل هذا في تخفيض السعر:
        #QUESTION# ## السؤال 5. اكتب دالة متعددة ستعمل بشكل صحيح عند استدعائها باستخدام الصيغة التالية. ```جافا سكريبت console.log(mul(2)(3)(4)); // الإخراج: 24 console.log(mul(4)(3)(4)); // الإخراج: 48 ``` #ANSWER# يوجد أدناه الكود متبوعًا بشرح كيفية عمله: ```javascript function mul (x) { return function (y) { // وظيفة مجهولة return function (z) { // دالة مجهولة return x * y * z; }; }; } ``` هنا تقبل الدالة `mul` الوسيطة الأولى وترجع الدالة المجهولة التي تأخذ المعلمة الثانية وترجع الوظيفة المجهولة التي تأخذ المعلمة الثالثة وترجع مضاعفة الوسائط التي يتم تمريرها على التوالي في وظيفة Javascript المحددة داخل لديه حق الوصول إلى متغير الوظيفة الخارجية والدالة هي كائن من الدرجة الأولى لذلك يمكن إرجاعها بواسطة الوظيفة أيضًا وتمريرها كوسيطة في وظيفة أخرى. - الدالة هي مثيل لنوع الكائن - يمكن أن تحتوي الدالة على خصائص ولها رابط يعود إلى طريقة الإنشاء الخاصة بها - يمكن تخزين الدالة كمتغير - يمكن تمرير الدالة كمعلمة إلى دالة أخرى - يمكن أن تكون الدالة عاد من وظيفة أخرى
        

        المثال مأخوذ من هنا : 123-أسئلة-مقابلة-جافا سكريبت

        يوجد أيضًا ملف يحتوي على أمثلة في مجلد المشروع examples/markdown2anki-example.md

      • في المفتاح Modules.markdown.pathToFile
        اكتب المسار إلى الملف حيث *.md ملف الأسئلة والأجوبة

    2. قم بالتشغيل مع تشغيل تطبيق ANKI
      node data2ankiindex.js
    3. ربح!!!

وهذا ما يبدو على الهاتف المحمول:

نتيجة

تتم مزامنة البطاقات المستلمة على إصدار سطح المكتب من ANKI دون مشاكل مع سحابة ANKI (مجانية تصل إلى 100 ميجابايت)، ومن ثم يمكنك استخدامها في كل مكان. هناك عملاء لنظامي Android وiPhone، ويمكنك أيضًا استخدامه في المتصفح. نتيجة لذلك، إذا كان لديك وقت ليس لديك ما تنفقه، فبدلاً من التمرير بلا هدف عبر Facebook أو القطط على Instagram، يمكنك تعلم شيء جديد.

خاتمة

كما ذكرت، يعد هذا بمثابة إثبات مفهوم عملي يمكنك استخدامه أكثر من كونه منتجًا نهائيًا. لم يتم تطبيق حوالي 30% من معيار محلل DSL، وبالتالي، على سبيل المثال، لا يمكن العثور على كافة إدخالات القاموس الموجودة في القواميس، هناك أيضًا فكرة لإعادة كتابتها جافا سكريبت، لأنني أريد "الاتساق"، علاوة على ذلك، فهو الآن غير مكتوب على النحو الأمثل. الآن يقوم المحلل ببناء شجرة، ولكن في رأيي هذا غير ضروري ولا يحتاج إلى تعقيد التعليمات البرمجية. في markdown2anki الوضع، لا يتم تحليل الصور. سأحاول أن أقطع شيئًا فشيئًا، ولكن بما أنني أكتب لنفسي، فسوف أقوم أولاً بحل المشكلات التي سأتدخل فيها بنفسي، ولكن إذا أراد أي شخص المساعدة، فنحن نرحب بك. إذا كانت لديك أسئلة حول البرنامج، سأكون سعيدًا بتقديم المساعدة من خلال القضايا المفتوحة في المشاريع ذات الصلة. اكتب انتقادات واقتراحات أخرى هنا. آمل أن يكون هذا المشروع مفيدًا لشخص ما.

ملاحظة: إذا لاحظت أي أخطاء (ولسوء الحظ، هناك بعض الأخطاء)، فاكتب لي في رسالة شخصية، وسأقوم بتصحيح كل شيء.

المصدر: www.habr.com

إضافة تعليق