Երկու պատմություն այն մասին, թե ինչպես ANKI-ն կարող է օգնել ձեզ սովորել օտար լեզու և պատրաստվել հարցազրույցներին

Ես միշտ հավատում էի, որ ծույլ ծրագրավորողը լավ ծրագրավորող է։ Ինչո՞ւ։ Որովհետև աշխատասերից մի բան խնդրեք, նա կգնա և կանի։ Իսկ ծույլ ծրագրավորողը 2-3 անգամ ավելի շատ ժամանակ կծախսի, բայց սցենար կգրի, որը դա կանի իր փոխարեն։ Առաջին անգամ դա անելու համար կարող է անհիմն երկար ժամանակ պահանջվել, բայց կրկնվող առաջադրանքների դեպքում այս մոտեցումը շատ արագ կվճարի: Ես ինձ ծույլ ծրագրավորող եմ համարում։ Դա նախաբանն էր, հիմա անցնենք գործին։

Առաջին պատմությունը

Մի քանի տարի առաջ ես մտածում էի, թե ինչպես կարող եմ բարելավել իմ անգլերենը: Գրականություն կարդալուց ավելի լավ բան չէր մտքիս գալիս։ Ես գնեցի էլեկտրոնային ընթերցող, ներբեռնեցի գրքեր և սկսեցի կարդալ: Կարդալիս անընդհատ անծանոթ բառերի էի հանդիպում։ Ես անմիջապես թարգմանեցի դրանք՝ օգտագործելով ընթերցողի մեջ ներկառուցված բառարանները, բայց նկատեցի մի առանձնահատկություն՝ բառերը չէին ուզում հիշել։ Երբ մի քանի էջ անց նորից հանդիպեցի այս բառին, 90% հավանականությամբ, նորից թարգմանության կարիք ունեի, և ամեն անգամ դա տեղի էր ունենում։ Եզրակացությունն այն էր, որ կարդալիս բավական չէ պարզապես անծանոթ բառեր թարգմանելը, այլ բան է պետք անել։ Իդեալական տարբերակը կլինի այն ներմուծել առօրյա կյանքում և սկսել օգտագործել այն, բայց ես չեմ ապրում անգլիախոս երկրում, և դա քիչ հավանական է: Հետո հիշեցի, որ մի անգամ կարդացել եմ Տարածված կրկնություն.

Ի՞նչ է այն և ինչո՞վ է այն ուտվում: Մի խոսքով, սա կա մոռանալով կորը, հետագա մեջբերում Վիքիպեդիայից.

Արդեն առաջին ժամվա ընթացքում ամբողջ ստացված տեղեկատվության մինչև 60%-ը մոռացվում է, անգիր անելուց 10 ժամ հետո սովորածի 35%-ը մնում է հիշողության մեջ: Այնուհետև մոռանալու գործընթացը դանդաղ է ընթանում, և 6 օր հետո ի սկզբանե սովորած վանկերի ընդհանուր թվի մոտ 20%-ը մնում է հիշողության մեջ, և նույնքանը մնում է հիշողության մեջ մեկ ամիս անց:

Եվ եզրակացությունն այստեղից

Եզրակացությունները, որոնք կարելի է անել այս կորի հիման վրա, այն են, որ արդյունավետ մտապահման համար անհրաժեշտ է կրկնել մտապահված նյութը։

Այսպիսով, մենք հայտնեցինք մի գաղափար տարածված կրկնություն.

ԱՆԿԻ ամբողջովին անվճար և բաց կոդով ծրագիր է, որն իրականացնում է տարածված կրկնության գաղափարը: Պարզ ասած՝ համակարգչային ֆլեշ քարտերը մի կողմից ունեն հարց, մյուս կողմից՝ պատասխան: Քանի որ դուք կարող եք հարցեր/պատասխաններ անել՝ օգտագործելով կանոնավոր html/css/javascript, ապա կարելի է ասել, որ այն իսկապես անսահման հնարավորություններ ունի։ Բացի այդ, այն ընդարձակելի է հատուկ պլագիններ, և դրանցից մեկը ապագայում մեզ շատ օգտակար կլինի։

Ձեռքով քարտեր ստեղծելը երկար է, հոգնեցուցիչ և մեծ հավանականությամբ, որոշ ժամանակ անց դուք կմոռանաք այս առաջադրանքի մասին, և այսպես, ինչ-որ պահի ես ինքս ինձ հարց տվեցի, հնարավո՞ր է ավտոմատացնել այս առաջադրանքը: Պատասխանն է՝ այո, կարող ես։ Եվ ես դա արեցի։ Միանգամից կասեմ՝ ավելին POC (Հայեցակարգի ապացույց), բայց որը կարելի է օգտագործել։ Եթե ​​օգտատերերի կողմից հետաքրքրություն կա, և այլ մշակողներ ներգրավվեն, ապա այն կարելի է հասցնել պատրաստի արտադրանքի, որը կարող են օգտագործել նույնիսկ տեխնիկապես անգրագետ օգտվողները: Այժմ իմ կոմունալ ծրագրի օգտագործումը պահանջում է ծրագրավորման որոշակի գիտելիքներ:

Ես գրքեր եմ կարդում ծրագրի միջոցով AIRreader. Այն ունի արտաքին բառարաններ միացնելու հնարավորություն, և երբ թարգմանում եք բառը, այն պահպանում է թարգմանության համար կանչած բառը տեքստային ֆայլում: Մնում է միայն թարգմանել այս բառերը և ստեղծել ANKI քարտեր։

Սկզբում փորձեցի օգտագործել թարգմանության համար Գուգլ թարգմանիչ, Lingvo API և այլն: Բայց ամեն ինչ չստացվեց անվճար ծառայությունների դեպքում: Ես սպառել եմ ազատ սահմանաչափը մշակման գործընթացում, բացի այդ, լիցենզիայի պայմանների համաձայն, բառեր քեշացնելու իրավունք չունեի։ Ինչ-որ պահի ես հասկացա, որ պետք է ինքս թարգմանել բառերը: Արդյունքում գրվել է մոդուլ dsl2html որին կարող եք միանալ DSL բառարաններ և ով գիտի, թե ինչպես դրանք վերածել HTML ձևաչափը։

Ահա թե ինչ տեսք ունի բառարանի մուտքը *: Html, իմ տարբերակը տարբերակի համեմատ GoldenDict

Երկու պատմություն այն մասին, թե ինչպես ANKI-ն կարող է օգնել ձեզ սովորել օտար լեզու և պատրաստվել հարցազրույցներին

Նախքան կապակցված բառարաններում բառ փնտրելը, բերում եմ այն բառարանի ձև (լեմմա) օգտվելով գրադարանից Stanford CoreNLP. Փաստորեն, այս գրադարանի պատճառով ես սկսեցի գրել Java-ով, և սկզբնական պլանը ամեն ինչ գրելն էր Java-ով, բայց ընթացքում ես գտա գրադարանը հանգույց-java որի օգնությամբ դուք կարող եք համեմատաբար հեշտությամբ կատարել Java կոդը nodejs-ից, իսկ կոդի մի մասը գրված է JavaScript-ով: Եթե ​​ես ավելի վաղ գտնեի այս գրադարանը, Java-ով ոչ մի տող չէր գրվի: Մեկ այլ կողմնակի նախագիծ, որը ծնվել է գործընթացում, ստեղծումն է պահեստ՝ DSL փաստաթղթերով որը հայտնաբերվել է ցանցում ձևաչափով *.չմ, դարձի եկած և աստվածային կերպարանք ստացավ։ Եթե ​​բնօրինակ ֆայլի հեղինակը մականունով օգտվող է յոժիկ Երբ նա տեսնում է այս հոդվածը, ես շատ շնորհակալ եմ նրան կատարած աշխատանքի համար, առանց նրա փաստաթղթերի, ես ամենայն հավանականությամբ հաջողության չէի ունենա:

Այսպիսով, ես անգլերեն բառ ունեմ, դրա բառարանի մուտքը ձևաչափով *: 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. Ներբեռնեք Java-ի կախվածությունը 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 գրեք համապատասխանաբար Տախտակամածի անունը и Model Անունը (Արդեն պետք է ստեղծվի քարտեր ստեղծելուց առաջ): Ներկայումս աջակցվում է միայն մոդելի տեսակը Հիմնական:

        Ունի առջևի և հետևի դաշտեր և կստեղծի մեկ քարտ: Առջևում մուտքագրված տեքստը կհայտնվի քարտի առջևի մասում, իսկ տեքստը, որը մուտքագրում եք «Հետ»՝ քարտի հետևի մասում:

        որտեղ է բնօրինակ բառը Առջևի դաշտ, իսկ թարգմանությունը կլինի մեջ Հետևի դաշտ.

        Աջակցություն ավելացնելու խնդիր չկա Հիմնական (և հետադարձ քարտ), որտեղ բառի և թարգմանության համար կստեղծվի հակադարձ քարտ, որտեղ թարգմանության հիման վրա անհրաժեշտ կլինի հիշել բնօրինակ բառը։ Ձեզ անհրաժեշտ է միայն ժամանակ և ցանկություն:

      • բանալիում 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 գրեք համապատասխանաբար Տախտակամածի անունը и Model Անունը (պետք է արդեն ստեղծվի քարտեր ստեղծելուց առաջ): Համար 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# Ստորև բերված է ծածկագիրը, որին հաջորդում է դրա աշխատանքի բացատրությունը. ```javascript ֆունկցիա mul (x) { return ֆունկցիա (y) { // անանուն ֆունկցիայի վերադարձ ֆունկցիա (z) { // անանուն ֆունկցիայի վերադարձ x * y * z; }; }; } ``` Այստեղ «mul» ֆունկցիան ընդունում է առաջին արգումենտը և վերադարձնում է անանուն ֆունկցիան, որն ընդունում է երկրորդ պարամետրը և վերադարձնում է անանուն ֆունկցիան, որն ընդունում է երրորդ պարամետրը և վերադարձնում է արգումենտների բազմապատկումը, որը փոխանցվում է հաջորդաբար Javascript ֆունկցիայի մեջ սահմանված: inside-ը հասանելի է արտաքին ֆունկցիայի փոփոխականին և ֆունկցիան առաջին դասի օբյեկտն է, ուստի այն կարող է վերադարձվել նաև ֆունկցիայի կողմից և փոխանցվել որպես արգումենտ մեկ այլ ֆունկցիայի մեջ: - Ֆունկցիան Օբյեկտի տիպի օրինակ է - Ֆունկցիան կարող է ունենալ հատկություններ և կապ ունի իր կոնստրուկտորի մեթոդի հետ - Ֆունկցիան կարող է պահվել որպես փոփոխական - Ֆունկցիան կարող է որպես պարամետր փոխանցվել մեկ այլ ֆունկցիայի - Ֆունկցիան կարող է լինել վերադարձել է մեկ այլ գործառույթից
        

        Այստեղից վերցված օրինակ. 123-JavaScript-Հարցազրույց-Հարցեր

        Նախագծի թղթապանակում կա նաև օրինակներով ֆայլ examples/markdown2anki-example.md

      • բանալիում modules.markdown.pathToFile
        գրեք ֆայլի ուղին, որտեղ *.md հարց/պատասխան ֆայլ

    2. Գործարկեք ANKI հավելվածը, որն աշխատում է
      node data2ankiindex.js
    3. ՇԱՀՈՒՅԹ!!!

Ահա թե ինչ տեսք ունի բջջային հեռախոսի վրա.

Արդյունք

ANKI-ի աշխատասեղանի տարբերակում ստացված քարտերը համաժամացվում են առանց խնդիրների ANKI ամպի հետ (անվճար մինչև 100 մբ), այնուհետև դրանք կարող եք օգտագործել ամենուր: Կան հաճախորդներ Android-ի և iPhone-ի համար, և դուք կարող եք այն օգտագործել նաև բրաուզերում: Արդյունքում, եթե ունեք ժամանակ, որի վրա ծախսելու ոչինչ չունեք, ապա Facebook-ի կամ կատուների միջոցով Instagram-ում աննպատակ պտտվելու փոխարեն կարող եք նոր բան սովորել։

Վերջաբան

Ինչպես նշեցի, սա ավելի շատ աշխատանքային POC է, որը դուք կարող եք օգտագործել, քան պատրաստի արտադրանք: DSL վերլուծիչի ստանդարտի մոտ 30%-ը չի ներդրված, և հետևաբար, օրինակ, բառարաններում եղած բոլոր գրառումները չեն կարող գտնել, կա նաև այն վերաշարադրելու միտք JavaScript, քանի որ ես ուզում եմ «հետևողականություն», և բացի այդ, հիմա այն այնքան էլ օպտիմալ չէ գրված։ Հիմա վերլուծիչը ծառ է կառուցում, բայց, իմ կարծիքով, դա ավելորդ է և կարիք չունի բարդացնելու կոդը: IN markdown2anki ռեժիմում, պատկերները չեն վերլուծվում: Կփորձեմ քիչ-քիչ կտրել, բայց քանի որ գրում եմ ինձ համար, առաջին հերթին կլուծեմ այն ​​խնդիրները, որոնց վրա ինքս եմ ոտք դնելու, բայց եթե որևէ մեկն ուզում է օգնել, ապա բարի եք։ Եթե ​​ծրագրի վերաբերյալ հարցեր ունեք, ես սիրով կօգնեմ բաց հարցերի միջոցով համապատասխան նախագծերում։ Այլ քննադատություններ և առաջարկություններ գրեք այստեղ: Հուսով եմ, որ այս նախագիծը օգտակար կլինի ինչ-որ մեկին:

Հ.Գ. Եթե նկատում եք սխալներ (և, ցավոք, կան), գրեք ինձ անձնական նամակով, ես կուղղեմ ամեն ինչ:

Source: www.habr.com

Добавить комментарий