Kaks lugu sellest, kuidas ANKI aitab teil võõrkeelt õppida ja intervjuuks valmistuda

Ma olen alati arvanud, et laisk programmeerija on hea programmeerija. Miks? Sest kui paluda usinal teha midagi, siis ta läheb ja teebki. Aga laisk programmeerija kulutab 2-3 korda rohkem aega, kuid kirjutab skripti, mis teeb selle tema eest. Esmakordselt võib selleks kuluda põhjendamatult palju aega, kuid korduvate ülesannete korral tasub see lähenemine kiiresti ära. Pean end ka laiseks programmeerijaks. See oli sissejuhatus, nüüd aga asja juurde.

Esimene lugu

Mõned aastad tagasi mõtlesin, kuidas oma inglise keelt parandada. Mitte midagi paremat ei tulnud meelde kui kirjanduse lugemine. Ostsin elektroonilise lugeri, laadisin alla raamatud ja hakkasin lugema. Lugemise käigus sattusin pidevalt silmitsi tundmatute sõnadega. Tõlkisin need kohe lugerisse sisseehitatud sõnaraamatute abil, kuid märkasin ühte eripära: sõnad ei tahtnud meelde jääda. Kui ma pärast mõnda lehekülge uuesti seda sõna kohtasin, siis 90% tõenäosusega vajasin taas tõlget, ja nii iga kord. Tõukus mõte, et pelgalt tundmatute sõnade tõlkimisest ei piisa lugemise ajal, tuleb midagi veel teha. Ideaalne variant oleks see sõna kasutusele võtta ja hakata sellega pihta, kuid ma ei ela ingliskeelses riigis, mistõttu see on vähetõenäoline. Siis meenus mulle, et olin kunagi lugenud Intervallne kordamine.

Mis see on ja kuidas seda kasutatakse? Lühidalt öeldes on olemas unustamise kõver, edasi tuleb tsitaat Vikipeediast:

Juba esimese tunni jooksul ununeb kuni 60% kogu saadud teabest, kümne tunni pärast jääb mällu 35% õpitud materjalist. Edasi läheb unustamisprotsess aeglaselt ning kuue päeva pärast jääb mällu umbes 20% algselt õpitud silpide koguarvust, sama palju jääb mällu ka kuu pärast.

Ja järeldus siit

Järeldused, mida selle kõvera põhjal teha saab, on, et tõhusaks mäletamiseks on vajalik õpitu kordamine.

Nii oleme jõudnud ideeni intervallkordamisest.

Aureki on täiesti tasuta avatud lähtekoodiga programm, mis teostab intervallkordamise ideed. Lihtsamalt öeldes on see arvutitud flash-kaardid, ühelt poolt küsimus, teiselt poolt vastus. Kuna saate küsimusi/vastuseid teha tavaliste html/css/javascript, siis võib öelda, et sellel on tõeliselt piiritud võimalused. Lisaks sellele on see laiendatav spetsiaalsete pluginatega, millest üks osutub meile hiljem väga vajalikuks.

Käsitsi kaardikeste loomine on aeganõudev, tüütus ja suure tõenäosusega jätate selle varsti aretama, seetõttu küsisin endalt, kas on võimalik seda automatiseerida. Vastus – jah, on võimalik. Ja ma tegingi seda. Ütleksin kohe, et see on pigem POC (kontseptsiooni tõend), aga millega on võimalik töötada. Kui kasutajate poolt on huvi ja teised arendajad liituvad, siis on võimalik see viia valmis tooteks, millega saavad kasutada isegi tehniliselt ineptne kasutajad. Praegu tähendab minu utiliidi kasutamine teatud teadmisi programmeerimisest.

Lugen raamatuid programmi AIReader. Sellel on võimalus ühendada väliseid sõnaraamatuid ning sõna tõlkimisel salvestab see sõna, mille jaoks te tõlget kutsusite, tekstifaili. Jäänud on vaid tõlkida need sõnad ja luua ANKI kaardid.

Alguses proovisin tõlkimiseks kasutada Google Translate, Lingvo API ja ja. Kuid tasuta teenustega ei läinud kõik plaanipäraselt. Tasuta piirangud kurnasin juba arendusprotsessi käigus, lisaks ei olnud mul litsentsitingimuste kohaselt lubatud sõnu vahemällu salvestada. Ühel hetkel sain aru, et pean sõnu ise tõlkima. Lõppkokkuvõttes kirjutati moodul dsl2html , millega saab ühendada DSL sõnastikud ja mis suudab need konverteerida HTML formaati.

Nii näeb sõnastiku artikkel välja *.html, minu variant võrreldes variandiga GoldenDict

Kaks lugu sellest, kuidas ANKI aitab teil võõrkeelt õppida ja intervjuuks valmistuda

Enne kui otsin sõna ühendatud sõnastikest, viin selle sõnastiku vormi (lemmasse) kasutades raamatukogu Stanford CoreNLP. Tegelikult alustasin ma selle raamatukogu tõttu Java kirjutamist ja algne plaan oli kõik kirjutada Java-s, aga protsessi käigus leidsin raamatukogu node-java , mille abil on suhteliselt lihtne käivitada Java koodi nodejs-ist ja osa koodist on kirjutatud JavaScriptis. Kui oleksin selle raamatukogu varem leidnud, ei oleks Java-s ühtegi rida kirjutatud. Veel üks kõrvalprojekt, mis protsessi käigus tekkis, oli DSL dokumentatsiooni repositooriumi loomine , mis leiti internetist formaadis *.chm, konverteeritud ja nähtavaks tehtud. Kui originaalfaili autor on kasutaja nimega yozhic , siis suur aitäh talle tehtud töö eest, ilma tema dokumentatsioonita poleks mul tõenäoliselt midagi välja tulnud.

Nii et mul on ingliskeelne sõna, selle sõnaraamatu artikkel formaadis *.html, jäetakse kokku kõik ühte, luuakse ANKI artiklid sõnalistest nimekirjadest ja sisestatakse need ANKI andmebaasi. Selle eesmärgi saavutamiseks loodi järgmine projekt data2anki. See oskab võtta sisendiks sõnade nimekirja, tõlkida, luua ANKI *.html artiklid ja salvestada need ANKI andmebaasi. Artikli lõpus on juhend nende kasutamise kohta. Praegu on see siiski teine lugu, kus intervallide kordusi võib olla kasulik.

Teine lugu.

Kõik inimesed, sealhulgas programmeerijad, otsivad enam-vähem kvalifitseeritud spetsialiteeti, seisavad silmitsi vajadusega intervjuuks valmistuda. Paljusid kontseptsioone, mida intervjuul küsitakse, ei kasutata igapäevases praktikas ja need ununevad. Jälgides oma märkmeid, raamatut või käsiraamatut, avastasin, et kulutan palju aega ja tähelepanu selleks, et filtreerida välja juba teadaolevad teadmised, kuna need ei ole alati ilmsed ja tuleb vaeva näha, et mõista, et need ei ole asjakohased. Kui jõuate teema juurde, mida tõeliselt oli vaja korrata, on sageli nii, et olete juba väsinud ja ettevalmistuse kvaliteet kannatab. Ühel hetkel mõtlesin, et miks mitte kasutada ANKI kaarte ka selle jaoks? Näiteks teema kokkuvõtmisel luua kohe kokkuvõte küsimuse- ja vastusekujule ning seejärel korrates teate kohe, kas tead vastust sellele küsimusele või mitte.

Probleem tekkis ainult selles, et küsimustega tegelemine on väga aeganõudev ja igav. Protsessi lihtsustamiseks lisasin projekti funktsiooni, mis võimaldab konverteerida data2anki projekti markdown tekst ANKI kaardis. Kõik, mida vajate, on kirjutada üks suur fail, kus küsimused ja vastused on märgitud eelnevalt kokkulepitud sümbolite järjekorraga, mille alusel parser suudab mõista, kus on küsimus ja kus vastus.

Kui see fail on loodud, käivitate data2anki ja see loob ANKI kaardid. Originaalfaili on lihtne redigeerida ja jagada, piisab vaid vastava kaardi(t)e kustutamisest ja programmi uuesti käivitamisest, ning uus versioon luuakse.

Paigaldamine ja kasutamine

  1. ANKI + AnkiConnect paigaldamine

    1. Laadige ANKI alla siit: https://apps.ankiweb.net/
    2. Installige AnkiConnect plugin: https://ankiweb.net/shared/info/2055492159

  2. Installeerimine data2anki

    1. Laadige alla data2anki githubi hoidlast
      git clone https://github.com/anatoly314/data2anki
    2. Installige sõltuvused
      cd data2anki && npm install
    3. Laadige alla java sõltuvused https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Paki lahti jar-dependencies.zip ja paigutage sisu data2anki/java/jars

  3. Kasutamine sõnade tõlkimiseks:

    1. Failis data2anki/config.json:

      • võtmes mode märkige väärtus dsl2anki

      • võtmes modules.dsl.anki.deckName ja modules.dsl.anki.modelName märkige vastavalt Deck Name ja Model Name (peavad olema loodud enne kaartide loomist). Praegu toetatakse ainult mudelit, mis on tüüpi Basic:

        Omab Front ja Back välju, ja loob ühe kaardi. Esipaneelil sisestatud tekst ilmub kaardi esipanelile, ja tagapaneelil sisestatud tekst ilmub kaardi tagapanelile.

        kus algne sõna on Esimene väli, ja tõlge on Teine väli.

        Ei ole mingeid probleeme toeks lisada Põhi (ja tagurpidi kaart), kus sõna ja tõlge luuakse ja tagurpidi kaart, kus tõlke põhjal tuleb meelde tuletada algne sõna. Vaja on vaid aega ja soovi.

      • võtmes modules.dsl.dictionariesPath defineerite massiivi ühendatud *.dsl sõnastikega. Iga ühendatud sõnastik on kaust, kus asuvad sõnastiku failid vastavalt vormingule: DSL sõnastiku struktuur

      • võtmes modules.dsl.wordToTranslatePath defineerite tee sõnade loendisse, mida soovite tõlkida.

    2. Käitate töötava ANKI rakenduse juures
      node data2ankiindex.js
    3. Kasum!!!

  4. Markdownist kaartide loomise kasutamine

    1. Failis data2anki/config.json:

      • võtmes mode märkige väärtus markdown2anki
      • võtmes modules.markdown.anki.deckName ja modules.dsl.anki.modelName märkige vastavalt Deck Name ja Model Name (peavad olema loodud enne kaartide loomist). markdown2anki mood toetab ainult mudelit tüüpi Basic.
      • võtmes modules.markdown.selectors.startQuestionSelectors ja modules.markdown.selectors.startAnswerSelectors defineerite selektorid, millega märkate vastavalt küsimuse ja vastuse algust. Ise selektorireegel ei lahti tõlgita ega kaardile jõua, parser alustab tööd järgmiselt realt.

        Näiteks näeb see küsimus/vastus kaart välja:

        Kaks lugu sellest, kuidas ANKI aitab teil võõrkeelt õppida ja intervjuuks valmistuda

        Markdownis näeb see välja järgmiselt:
        #QUESTION#
        ## Question 5. Write a mul function which will work properly when invoked with following syntax.
        
        ```javascript
        console.log(mul(2)(3)(4)); // output : 24
        console.log(mul(4)(3)(4)); // output : 48
        ```
        #ANSWER#
        Below is the code followed by the explanation of how it works:
        
        ```javascript
        function mul (x) {
          return function (y) { // anonymous function
            return function (z) { // anonymous function
              return x * y * z;
            };
          };
        }
        ```
        
        Here the `mul` function accepts the first argument and returns the anonymous function which takes the second parameter and returns the anonymous function which takes the third parameter and returns the multiplication of arguments which is being passed in successive
        
        In Javascript function defined inside has access to outer function variable and function is the first class object so it can be returned by the function as well and passed as an argument in another function.
        - A function is an instance of the Object type
        - A function can have properties and has a link back to its constructor method
        - A function can be stored as variable
        - A function can be pass as a parameter to another function
        - A function can be returned from another function
        

        Näide on saadud siit: 123-JavaScript-Interview-Questions

        Projektikaustas on veel fail näidistega examples/markdown2anki-example.md

      • võtmes modules.markdown.pathToFile
        märkige failitee, kus * asub.md küsimuste/vastuste fail

    2. Käitate töötava ANKI rakenduse juures
      node data2ankiindex.js
    3. Kasum!!!

Nii see telefonis välja näeb:

Vaata videot

Tulemus

Desktopi versioonis saadud ANKI kaardid sünkroniseeruvad probleemideta ANKI pilvega (tasuta kuni 100MB) ja edasi saate neid kasutada igal pool. Olemas on rakendused Androidile ja iPhone'ile, samuti saab seda kasutada ka brauseris. Seega, kui teil on aega, mida ei oska kasutada, siis selle asemel, et mõttetult Facebooki või kiisusid Instagramis sirvida, saab õppida midagi uut.

Epilog

Nagu ma juba mainisin, on see pigem töötav POC, millega saab tööl kasutada, mitte lõpptoot. Umbes 30% DSL parseri standardist pole rakendatud, ja seetõttu näiteks ei saa leida kõiki sõnastikuartikleid, mis sõnaraamatutes on., samuti on plaan seda kirjutada JavaScript, kuna soovitakse „ühtsust“, ja lisaks sellele on see praegu kirjutatud mitte kõige optimaalsemalt. Praegu ehitab parser puu, mis minu arvates on liigne ja ei ole vajalik, see keerustab koodi. markdown2anki Piltide režiimis ei parse. Ma üritan aeglaselt edasi liikuda, kuid kuna kirjutamine on hetkel enda jaoks, siis esmalt lahendan need probleemid, millega ise kokku puutun. Kui keegi soovib aidata, on oodatud. Kui on küsimusi programmi kohta, olen avatud aitama läbi avatud issues vastavates projektides. Teised ettepanekud ja kriitika saatke siia. Loodan, et see projekt on kellelegi kasulik.

P.S. Kui märkate vigu (ja neid, kahjuks, on), kirjutage eraõigusesse, kõik parandatakse.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster