Dva příběhy o tom, jak vám ANKI může pomoci naučit se cizí jazyk a připravit se na pohovor

Vždy jsem věřil, že líný programátor je dobrý programátor. Proč? Protože požádejte pracanta, aby něco udělal, půjde a udělá to. A líný programátor stráví 2-3x více času, ale napíše skript, který to udělá za něj. Napoprvé to může trvat nepřiměřeně dlouho, ale u opakovaných úkolů se tento přístup velmi rychle vyplatí. Považuji se za líného programátora. To byla preambule, teď pojďme k věci.

První příběh

Před pár lety jsem přemýšlel, jak bych se mohl zlepšit v angličtině. Nic lepšího než čtení literatury mě nenapadlo. Koupil jsem si elektronickou čtečku, stáhl si knihy a začal jsem číst. Při čtení jsem stále narážel na neznámá slova. Okamžitě jsem je přeložil pomocí slovníků zabudovaných ve čtečce, ale všiml jsem si jedné vlastnosti: slova nechtěla, aby si je zapamatovali. Když jsem o pár stránek později na toto slovo narazil znovu, s 90% pravděpodobností jsem znovu potřeboval překlad, a to se stalo pokaždé. Závěr byl takový, že nestačí jen překládat neznámá slova při čtení, musíte dělat něco jiného. Ideální možností by bylo zavést jej do běžného života a začít používat, ale nežiji v anglicky mluvící zemi a je to nepravděpodobné. Pak jsem si vzpomněl, že jsem o tom kdysi četl Rozložené opakování.

Co to je a s čím se to jí? Stručně řečeno, existuje toto křivka zapomínání, další citace z Wikipedie:

Již během první hodiny je zapomenuto až 60 % všech přijatých informací, 10 hodin po zapamatování zůstává v paměti 35 % naučeného. Pak proces zapomínání postupuje pomalu a po 6 dnech zůstává v paměti asi 20 % z celkového počtu původně naučených slabik a stejné množství zůstává v paměti po měsíci.

A závěr odtud

Závěry, které lze na základě této křivky vyvodit, jsou takové, že pro efektivní zapamatování je nutné zapamatovanou látku opakovat.

Tak jsme přišli s nápadem rozložené opakování.

АNKI je zcela bezplatný a open source program, který implementuje myšlenku opakování s mezerami. Jednoduše řečeno, počítačové flash karty mají na jedné straně otázku a na druhé odpověď. Vzhledem k tomu, že můžete dělat otázky/odpovědi pomocí regular html/css/javascript, pak můžeme říci, že má skutečně neomezené možnosti. Navíc je rozšiřitelný o speciální pluginy, a jeden z nich se nám bude v budoucnu velmi hodit.

Ruční vytváření karet je zdlouhavé, zdlouhavé a s velkou pravděpodobností na tento úkol po čase zapomenete, a tak jsem si v určité chvíli položil otázku, zda je možné tento úkol zautomatizovat. Odpověď je ano, můžete. A udělal jsem to. Hned řeknu, je to víc POC (Proof of Concept), ale které lze použít. Pokud bude ze strany uživatelů zájem a zapojí se další vývojáři, lze jej dovést do hotového produktu, který mohou používat i technicky negramotní uživatelé. Nyní použití mé utility vyžaduje určité znalosti programování.

Čtu knihy pomocí programu AI Reader. Má možnost připojit externí slovníky a když přeložíte slovo, uloží slovo, které jste volali k překladu, do textového souboru. Zbývá jen přeložit tato slova a vytvořit karty ANKI.

Nejprve jsem se snažil použít pro překlad Překladač Google, Lingvo API atd. S bezplatnými službami to ale nefungovalo. Bezplatný limit jsem vyčerpal během procesu vývoje, navíc jsem podle podmínek licence neměl právo kešovat slova. V určitém okamžiku jsem si uvědomil, že musím slova přeložit sám. V důsledku toho byl napsán modul dsl2html ke kterému se můžete připojit DSL slovníky a kdo ví, jak je převést na HTML formát.

Takto vypadá položka ve slovníku v *. Html, moje možnost ve srovnání s možností GoldenDict

Dva příběhy o tom, jak vám ANKI může pomoci naučit se cizí jazyk a připravit se na pohovor

Než hledám slovo v připojených slovnících, přivedu ho do slovníková forma (lemma) pomocí knihovny Stanford CoreNLP. Ve skutečnosti jsem kvůli této knihovně začal psát v Javě a původní plán byl napsat vše v Javě, ale během toho jsem knihovnu našel uzel-java pomocí kterého lze relativně snadno spustit Java kód z nodejs a část kódu je napsána v JavaScriptu. Kdybych tuto knihovnu našel dříve, nebyl by v Javě napsán jediný řádek. Dalším vedlejším projektem, který se v průběhu zrodil, je tvorba úložiště s dokumentací DSL který byl nalezen v síti ve formátu *.chmpřeměněna a uvedena do božské podoby. Pokud je autorem původního souboru uživatel podle přezdívky yozhic Když vidí tento článek, moc mu děkuji za práci, kterou odvedl, bez jeho dokumentace bych to s největší pravděpodobností neuspěl.

Takže mám slovo v angličtině, jeho slovníkové heslo ve formátu *. Html, zbývá vše poskládat, ze seznamu slov vytvořit ANKI články a vložit je do ANKI databáze. Za tímto účelem byl vytvořen následující projekt data2anki. Může vzít seznam slov jako vstup, přeložit, vytvořit ANKI *. Html články a zaznamenat je do databáze ANKI. Na konci článku je návod, jak jej používat. Mezitím je druhý příběh, kde mohou být užitečná opakování s odstupem.

Druhý příběh.

Všichni lidé, kteří hledají více/méně kvalifikovanou specializaci, včetně programátorů, se potýkají s potřebou připravit se na pohovor. Mnohé z pojmů, které jsou při pohovorech kladeny, v každodenní praxi nepoužíváte a jsou zapomenuty. Při přípravě na pohovor, listování v poznámkách, v knize, v příručkách jsem se potýkal s tím, že vytřídění informací, které už znáte, zabere hodně času a pozornosti, protože to není vždy zřejmé a musíte přečtěte si to pozorně, abyste pochopili, co to je.irelevantní. Když přijdete na téma, které je opravdu potřeba zopakovat, často se stane, že už jste unavení a utrpí tím kvalita vaší přípravy. V určitém okamžiku jsem si řekl, proč k tomu nevyužít karty ANKI? Například při psaní poznámek k tématu si rovnou vytvořte poznámku v podobě otázky a odpovědi a při jejím opakování pak hned poznáte, zda na tuto otázku znáte odpověď nebo ne.

Jediný problém, který vyvstal, bylo, že psaní otázek bylo velmi dlouhé a zdlouhavé. Aby byl proces jednodušší, data2anki projekt jsem přidal funkci převodu snížení text v kartách ANKI. Stačí napsat jeden velký soubor, ve kterém budou otázky a odpovědi označeny předem určenou sekvencí znaků, podle kterých parser pochopí, kde je otázka a kde odpověď.

Jakmile je tento soubor vytvořen, spustíte data2anki a vytvoří karty ANKI. Původní soubor lze snadno upravovat a sdílet, stačí vymazat odpovídající kartu (karty) a spustit program znovu a vytvoří se nová verze.

Instalace a použití

  1. Instalace ANKI + AnkiConnect

    1. Stáhněte si ANKI odtud: https://apps.ankiweb.net/
    2. Nainstalujte plugin AnkiConnect: https://ankiweb.net/shared/info/2055492159

  2. Instalace data2anki

    1. Stáhnout data2anki z úložiště github
      git clone https://github.com/anatoly314/data2anki
    2. Nainstalujte závislosti
      cd data2anki && npm install
    3. Stáhnout java závislosti https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Vybalování jar-dependencies.zip a vložte jeho obsah data2anki/java/jars

  3. Použijte k překladu slov:

    1. V souboru data2anki/config.json:

      • v klíči způsob zadejte hodnotu dsl2anki

      • v klíči modules.dsl.anki.deckName и modules.dsl.anki.název modelu pište podle toho Název paluby и Název modelu (musí být vytvořeno již před vytvořením karet). V současné době je podporován pouze typ modelu Basic:

        Má přední a zadní pole a vytvoří jednu kartu. Text, který zadáte v přední části, se zobrazí na přední straně karty a text, který zadáte do pole, se zobrazí na zadní straně karty.

        kde je původní slovo? Přední polea překlad bude k dispozici Zadní pole.

        Není problém přidat podporu Základní (a obrácená karta), kde se ke slovu a překladu vytvoří rubová karta, kde si na základě překladu budete muset původní slovo zapamatovat. Vše, co potřebujete, je čas a touha.

      • v klíči modules.dsl.dictionariesPath zaregistrovat pole s připojeným *.dsl slovníky. Každý připojený slovník je adresář, ve kterém jsou umístěny soubory slovníku v souladu s formátem: Struktura slovníku DSL

      • v klíči modules.dsl.wordToTranslatePath zadejte cestu k seznamu slov, která chcete přeložit.

    2. Spusťte se spuštěnou aplikací ANKI
      node data2ankiindex.js
    3. ZISK!!!

  4. Používá se pro vytváření karet z markdown

    1. V souboru data2anki/config.json:

      • v klíči způsob zadejte hodnotu markdown2anki
      • v klíči modules.markdown.anki.deckName и modules.dsl.anki.název modelu pište podle toho Název paluby и Název modelu (musí být vytvořeno již před vytvořením karet). Pro markdown2anki podporován je pouze typ modelu Basic.
      • v klíči modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors píšete selektory, kterými označíte začátek otázky, resp. odpovědi. Řádek se samotným selektorem nebude analyzován a neskončí na kartě, analyzátor začne pracovat od dalšího řádku.

        Například tato karta s otázkami/odpověďmi:

        Dva příběhy o tom, jak vám ANKI může pomoci naučit se cizí jazyk a připravit se na pohovor

        V markdown to bude vypadat takto:
        #QUESTION# ## Otázka 5. Napište funkci mul, která bude správně fungovat při vyvolání s následující syntaxí. ```javascript console.log(mul(2)(3)(4)); // výstup : 24 console.log(mul(4)(3)(4)); // output : 48 ``` #ODPOVĚĎ# Níže je kód následovaný vysvětlením, jak to funguje: ```javascript function mul (x) { return function (y) { // anonymní funkce return function (z) { // anonymní funkce return x * y * z; }; }; } ``` Funkce `mul` zde přijme první argument a vrátí anonymní funkci, která převezme druhý parametr a vrátí anonymní funkci, která převezme třetí parametr a vrátí násobení argumentů, které jsou předávány postupně. Funkce definovaná v JavaScriptu inside má přístup k vnější proměnné funkce a funkce je objekt první třídy, takže ji může funkce také vrátit a předat jako argument v jiné funkci. - Funkce je instancí typu Objekt - Funkce může mít vlastnosti a má odkaz zpět na svou metodu konstruktoru - Funkci lze uložit jako proměnnou - Funkci lze předat jako parametr jiné funkci - Funkce může být vrátil z jiné funkce
        

        Příklad převzat odtud: 123-JavaScript-Interview-Otázky

        Ve složce projektu je také soubor s příklady examples/markdown2anki-example.md

      • v klíči modules.markdown.pathToFile
        zapište si cestu k souboru, kde *.md soubor otázek/odpovědí

    2. Spusťte se spuštěnou aplikací ANKI
      node data2ankiindex.js
    3. ZISK!!!

Takhle to vypadá na mobilu:

Přehrát video

Výsledek

Полученные на desktop версии ANKI карточки без проблем синхронизируются с ANKI облаком (бесплатно до 100mb), а дальше вы можете пользоваться ими уже везде. Есть клиенты под Android и iPhone, также можно пользоваться и в браузере. В результате, если у вас есть время, которое не на что потратить, то вместо того, чтобы бесцельно пролистывать фейсбук или котиков в инстаграм, можно учить что-то новое.

Epilog

Jak jsem již zmínil, jedná se spíše o pracovní POC, které můžete použít, než o hotový produkt. Asi 30 % standardu analyzátoru DSL není implementováno, a proto například nelze najít všechny položky slovníku, které jsou ve slovnících, existuje také nápad to přepsat JavaScript, protože chci „konzistenci“ a kromě toho se to teď nepíše moc optimálně. Nyní parser staví strom, ale podle mého názoru je to zbytečné a nemusí to komplikovat kód. V markdown2anki režimu, snímky nejsou analyzovány. Budu se snažit krájet po troškách, ale jelikož píšu za sebe, tak v první řadě vyřeším problémy, na které si sám šlápnu, ale pokud by někdo chtěl pomoci, tak jste vítáni. Máte-li dotazy k programu, rád pomohu prostřednictvím otevřených problémů v příslušných projektech. Zde pište další kritiku a návrhy. Doufám, že tento projekt bude pro někoho užitečný.

PS Pokud si všimnete nějaké chyby (a bohužel nějaké jsou), napište mi do osobní zprávy, vše opravím.

Zdroj: www.habr.com

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster