دو داستان در مورد اینکه چگونه ANKI می تواند به شما در یادگیری یک زبان خارجی و آماده شدن برای مصاحبه کمک کند

من همیشه معتقد بودم که یک برنامه نویس تنبل برنامه نویس خوبی است. چرا؟ چون از یک زحمتکش بخواهید کاری را انجام دهد، می رود و آن را انجام می دهد. و یک برنامه نویس تنبل 2-3 برابر زمان بیشتری را صرف می کند، اما فیلمنامه ای می نویسد که این کار را برای او انجام می دهد. انجام این کار در بار اول ممکن است زمان زیادی طول بکشد، اما با انجام کارهای مکرر، این روش خیلی سریع نتیجه خواهد داد. من خودم را یک برنامه نویس تنبل می دانم. این مقدمه بود، حالا بیایید به کار بپردازیم.

داستان یک

چند سال پیش به این فکر می کردم که چگونه می توانم انگلیسی خود را بهبود بخشم. هیچ چیز بهتر از خواندن ادبیات به ذهنم نمی رسید. یک خواننده الکترونیکی خریدم، کتاب ها را دانلود کردم و شروع به خواندن کردم. در حین مطالعه مدام با کلمات ناآشنا مواجه می شدم. من بلافاصله آنها را با استفاده از فرهنگ لغت های ساخته شده در خواننده ترجمه کردم، اما متوجه یک ویژگی شدم: کلمات نمی خواستند به خاطر بسپارند. وقتی چند صفحه بعد دوباره با این کلمه برخورد کردم، به احتمال 90 درصد دوباره نیاز به ترجمه داشتم و هر بار این اتفاق می افتاد. نتیجه این بود که فقط ترجمه کلمات ناآشنا در حین خواندن کافی نیست، باید کار دیگری انجام دهید. گزینه ایده آل این است که آن را وارد زندگی روزمره کنید و شروع به استفاده از آن کنید، اما من در یک کشور انگلیسی زبان زندگی نمی کنم و این بعید است. بعد یادم افتاد که یک بار در موردش خوانده بودم تکرار فاصله دار.

چیست و با چه چیزی خورده می شود؟ به طور خلاصه، این وجود دارد منحنی فراموشی، نقل قول بیشتر از ویکی پدیا:

در همان ساعت اول، تا 60 درصد از کل اطلاعات دریافتی فراموش می شود؛ 10 ساعت پس از به خاطر سپردن، 35 درصد از آنچه آموخته شد در حافظه باقی می ماند. سپس فرآیند فراموشی به آرامی پیش می رود و پس از 6 روز حدود 20 درصد از تعداد کل هجاهای اولیه یاد گرفته شده در حافظه باقی می ماند و همین مقدار پس از یک ماه در حافظه باقی می ماند.

و نتیجه گیری از اینجا

نتایجی که بر اساس این منحنی می توان گرفت این است که برای به خاطر سپردن موثر باید مطالب حفظ شده را تکرار کرد.

بنابراین ما به یک ایده رسیدیم تکرار فاصله دار.

ANKI یک برنامه کاملا رایگان و متن باز است که ایده تکرار فاصله را پیاده سازی می کند. به بیان ساده، فلش کارت های کامپیوتری یک طرف یک سوال و یک طرف دیگر یک پاسخ دارند. از آنجایی که می‌توانید سؤالات/پاسخ‌ها را با استفاده از منظم انجام دهید html/css/javascript، پس می توان گفت که واقعاً امکانات بی حد و حصری دارد. علاوه بر این، قابل ارتقا با ویژه است پلاگین هاو یکی از آنها در آینده برای ما بسیار مفید خواهد بود.

ایجاد دستی کارت طولانی، خسته کننده است و به احتمال زیاد پس از مدتی این کار را فراموش خواهید کرد و بنابراین در مقطعی از خودم این سوال را پرسیدم که آیا می توان این کار را خودکار کرد؟ پاسخ این است که بله، شما می توانید. و من این کار را کردم. فوراً می گویم، بیشتر است POC (اثبات مفهوم)، اما می توان از آن استفاده کرد. اگر علاقه ای از سوی کاربران وجود داشته باشد و توسعه دهندگان دیگر درگیر شوند، می توان آن را به محصول نهایی رساند که حتی کاربرانی که از نظر فنی سواد ندارند نیز می توانند از آن استفاده کنند. در حال حاضر، استفاده از ابزار من نیاز به دانش برنامه نویسی دارد.

من با استفاده از برنامه کتاب می خوانم AIRreader. این قابلیت اتصال دیکشنری های خارجی را دارد و زمانی که یک کلمه را ترجمه می کنید، کلمه ای را که برای ترجمه فراخوانده اید در یک فایل متنی ذخیره می کند. تنها چیزی که باقی می ماند ترجمه این کلمات و ایجاد کارت های ANKI است.

ابتدا سعی کردم برای ترجمه استفاده کنم گوگل ترجمه, Lingvo API و غیره. اما همه چیز با خدمات رایگان درست نشد. من محدودیت رایگان را در طول مراحل توسعه تمام کردم، علاوه بر این، طبق شرایط مجوز، حق کش کردن کلمات را نداشتم. در مقطعی متوجه شدم که باید کلمات را خودم ترجمه کنم. در نتیجه یک ماژول نوشته شد dsl2html که می توانید به آن متصل شوید دیکشنری های DSL و چه کسی می داند چگونه آنها را تبدیل کند HTML قالب

این چیزی است که یک مدخل فرهنگ لغت در * به نظر می رسد. HTML غیر فعال، گزینه من در مقایسه با گزینه GoldenDict

دو داستان در مورد اینکه چگونه ANKI می تواند به شما در یادگیری یک زبان خارجی و آماده شدن برای مصاحبه کمک کند

قبل از جستجوی کلمه ای در لغت نامه های متصل، آن را به آن می آورم فرم فرهنگ لغت (لم) با استفاده از کتابخانه استنفورد CoreNLP. در واقع، به خاطر این کتابخانه، من شروع به نوشتن در جاوا کردم و برنامه اولیه این بود که همه چیز را به جاوا بنویسم، اما در این فرآیند کتابخانه را پیدا کردم. node-java که با آن می توانید به راحتی کدهای جاوا را از nodejs اجرا کنید و بخشی از کدها با جاوا اسکریپت نوشته شده است. اگر این کتابخانه را زودتر پیدا کرده بودم، حتی یک خط هم در جاوا نوشته نمی شد. یکی دیگر از پروژه های جانبی که در این فرآیند متولد شد، ایجاد است مخزن با اسناد DSL که در شبکه در قالب * یافت شدchm، تبدیل شده و به صورت الهی در آمده است. اگر نویسنده فایل اصلی یک کاربر با نام مستعار باشد یوژیک وقتی این مقاله را می بیند، از او به خاطر کاری که انجام داده بسیار تشکر می کنم؛ بدون مستندات او، به احتمال زیاد موفق نمی شدم.

بنابراین، من یک کلمه به زبان انگلیسی دارم، مدخل فرهنگ لغت آن در قالب *. HTML غیر فعال، تنها چیزی که باقی می ماند این است که همه چیز را کنار هم بگذارید، مقالات ANKI را از لیست کلمات ایجاد کنید و آنها را در پایگاه داده ANKI وارد کنید. برای این منظور پروژه زیر ایجاد شد data2anki. می تواند فهرستی از کلمات را به عنوان ورودی بگیرد، ترجمه کند، ANKI ایجاد کند *. HTML غیر فعال مقالات و ثبت آنها در پایگاه داده ANKI. در پایان مقاله دستورالعمل نحوه استفاده از آن وجود دارد. در این میان، داستان دوم جایی است که تکرارهای فاصله دار می تواند مفید باشد.

داستان دوم.

همه افرادی که در جستجوی یک تخصص بیشتر یا کمتر واجد شرایط هستند، از جمله برنامه نویسان، با نیاز به آماده شدن برای مصاحبه مواجه هستند. بسیاری از مفاهیمی که در مصاحبه ها پرسیده می شود، در تمرینات روزمره استفاده نمی کنید و فراموش می شوند. هنگام آماده شدن برای مصاحبه، ورق زدن یادداشت ها، یک کتاب، یک کتاب مرجع، با این واقعیت مواجه شدم که الک کردن اطلاعاتی که قبلاً می دانید نیاز به زمان و توجه زیادی دارد زیرا همیشه واضح نیست و باید آن را با دقت بخوانید تا بفهمید چیست. بی ربط. وقتی به موضوعی می‌رسید که واقعاً نیاز به تکرار دارد، اغلب اتفاق می‌افتد که از قبل خسته شده‌اید و کیفیت آماده‌سازی شما کاهش می‌یابد. در نقطه ای فکر کردم، چرا از کارت های ANKI برای این کار نیز استفاده نکنیم؟ به عنوان مثال، هنگام یادداشت برداری از موضوعی، بلافاصله یادداشتی در قالب پرسش و پاسخ ایجاد کنید و سپس با تکرار آن، بلافاصله متوجه خواهید شد که آیا پاسخ این سوال را می دانید یا خیر.

تنها مشکلی که پیش آمد این بود که تایپ سوالات بسیار طولانی و خسته کننده بود. برای سهولت در فرآیند، data2anki پروژه من قابلیت تبدیل را اضافه کردم نشانه گذاری متن در کارت های ANKI. تنها چیزی که نیاز دارید این است که یک فایل بزرگ بنویسید که در آن پرسش ها و پاسخ ها با دنباله ای از کاراکترهای از پیش تعیین شده مشخص می شوند، که توسط آن تجزیه کننده متوجه خواهد شد که سوال کجاست و پاسخ کجاست.

پس از ایجاد این فایل، data2anki را اجرا می کنید و کارت های ANKI ایجاد می کند. فایل اصلی به راحتی قابل ویرایش و اشتراک گذاری است، فقط باید کارت(های) مربوطه را پاک کرده و دوباره برنامه را اجرا کنید تا نسخه جدید ایجاد شود.

نصب و استفاده

  1. نصب ANKI + AnkiConnect

    1. ANKI را از اینجا دانلود کنید: https://apps.ankiweb.net/
    2. افزونه AnkiConnect را نصب کنید: https://ankiweb.net/shared/info/2055492159

  2. نصب data2anki

    1. دانلود data2anki از مخزن github
      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-dependencies.zip و محتویات آن را در آن قرار دهید data2anki/java/jars

  3. برای ترجمه کلمات استفاده کنید:

    1. در پرونده data2anki/config.json:

      • در کلید حالت مقدار را وارد کنید dsl2anki

      • در کلید modules.dsl.anki.deckName и modules.dsl.anki.modelName بر این اساس بنویس نام عرشه и نام مدل (قبل از ایجاد کارت باید قبلا ایجاد شده باشد). در حال حاضر فقط نوع مدل پشتیبانی می شود اساسی:

        دارای فیلدهای جلو و عقب است و یک کارت ایجاد می کند. متنی که در جلو وارد می‌کنید در جلوی کارت و متنی که در Back وارد می‌کنید در پشت کارت ظاهر می‌شود.

        کلمه اصلی کجاست میدان جلو، و ترجمه در خواهد بود میدان پشت.

        هیچ مشکلی برای اضافه کردن پشتیبانی وجود ندارد کارت پایه (و معکوس)، جایی که یک کارت معکوس برای کلمه و ترجمه ایجاد می شود که بر اساس ترجمه باید کلمه اصلی را به خاطر بسپارید. تنها چیزی که نیاز دارید زمان و آرزو است.

      • در کلید modules.dsl.dictionariesPath ثبت آرایه با *dsl لغت نامه ها هر فرهنگ لغت متصل، دایرکتوری است که فایل های فرهنگ لغت مطابق با فرمت در آن قرار دارند: ساختار فرهنگ لغت 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. یک تابع mul بنویسید که در صورت فراخوانی با نحو زیر به درستی کار کند. `` javascript console.log(mul(2)(3)(4)); // خروجی : 24 console.log(mul(4)(3)(4)); // خروجی : 48 ``` #ANSWER# در زیر کد زیر توضیح داده شده است که چگونه کار می کند: ``` تابع جاوا اسکریپت mul (x) { تابع بازگشت (y) { // تابع ناشناس بازگشت تابع (z) { // تابع ناشناس x * y * z; }; }; } ``` در اینجا تابع `mul` آرگومان اول را می پذیرد و تابع ناشناس را برمی گرداند که پارامتر دوم را می گیرد و تابع ناشناس را که پارامتر سوم را می گیرد و ضرب آرگومان هایی را که به صورت متوالی در تابع جاوا اسکریپت تعریف شده ارسال می شود برمی گرداند. inside به متغیر تابع خارجی دسترسی دارد و تابع اولین شی کلاس است، بنابراین می توان آن را توسط تابع نیز برگرداند و به عنوان آرگومان در تابع دیگری ارسال کرد. - یک تابع نمونه ای از نوع Object است - یک تابع می تواند خصوصیات داشته باشد و یک پیوند به متد سازنده خود دارد - یک تابع را می توان به عنوان متغیر ذخیره کرد - یک تابع را می توان به عنوان پارامتر به تابع دیگری ارسال کرد - یک تابع می تواند از تابع دیگری برگردانده شد
        

        نمونه برگرفته از اینجا: 123-جاوا اسکریپت-مصاحبه-سوالات

        در پوشه پروژه نیز فایلی با مثال وجود دارد examples/markdown2anki-example.md

      • در کلید modules.markdown.pathToFile
        مسیر فایلی که در آن *.md فایل پرسش/پاسخ

    2. با اجرای برنامه ANKI راه اندازی کنید
      node data2ankiindex.js
    3. سود!!!

این چیزی است که در تلفن همراه به نظر می رسد:

نتیجه

کارت های دریافت شده در نسخه دسکتاپ ANKI بدون مشکل با ابر ANKI (رایگان تا 100 مگابایت) همگام می شوند و سپس می توانید از آنها در همه جا استفاده کنید. کلاینت هایی برای اندروید و آیفون وجود دارد و می توانید از آن در مرورگر نیز استفاده کنید. در نتیجه، اگر زمانی دارید که چیزی برای صرف آن ندارید، به جای اینکه بی‌هدف در فیس‌بوک یا گربه‌ها در اینستاگرام پیمایش کنید، می‌توانید چیز جدیدی یاد بگیرید.

خاتمه

همانطور که اشاره کردم، این بیشتر یک POC کارآمد است که می توانید از آن استفاده کنید تا یک محصول نهایی. حدود 30 درصد از استاندارد تجزیه کننده DSL پیاده سازی نشده است، و بنابراین، به عنوان مثال، همه مدخل های فرهنگ لغت که در فرهنگ لغت وجود دارند، یافت نمی شوند، همچنین ایده ای برای بازنویسی آن وجود دارد جاوا اسکریپت، زیرا من "پیوستگی" را می خواهم، و علاوه بر این، اکنون خیلی بهینه نوشته نشده است. اکنون تجزیه کننده در حال ساخت یک درخت است، اما به نظر من این غیر ضروری است و نیازی به پیچیده کردن کد ندارد. که در markdown2anki حالت، تصاویر تجزیه نمی شوند. سعی می کنم کم کم کم کنم ولی چون برای خودم می نویسم اول از همه مشکلاتی را که خودم پا می گذارم حل می کنم اما اگر کسی می خواهد کمک کند خوش آمدید. اگر در مورد برنامه سوالی دارید، خوشحال می شوم از طریق مسائل باز در پروژه های مربوطه کمک کنم. انتقادات و پیشنهادات دیگر را اینجا بنویسید. امیدوارم این پروژه برای کسی مفید باشد.

PS اگر متوجه هر گونه خطا شدید (و متأسفانه برخی از آنها وجود دارد)، در یک پیام شخصی برای من بنویسید، من همه چیز را اصلاح می کنم.

منبع: www.habr.com

اضافه کردن نظر