Kaks lugu, kuidas ANKI vÔib teid aidata vÔÔrkeelt Ôppida ja intervjuuks valmistuda

Olen alati arvanud, et laisk programmeerija on hea programmeerija. Miks? Sest kui paluda töötaval inimesel midagi teha, lĂ€heb ta ja teeb. Laisk programmeerija peab kulutama 2-3 korda rohkem aega, kuid kirjutab skripti, mis teeb seda tema eest. VĂ”ib-olla kulub esmakordselt sellele ebamugavalt palju aega, kuid korduvate ĂŒlesannete korral tasub see lĂ€henemine kiiresti end Ă€ra. Pean end laiskaks programmeerijaks. See oli sissejuhatus, nĂŒĂŒd lĂ€heme asja juurde.

Esimene lugu

MĂ”ni aasta tagasi mĂ”tlesin, kuidas ma saaksin oma inglise keelt parandada. Midagi paremat, kui lugeda raamatuid, ei tulnud mulle pĂ€he. Ostsin e-luger, laadisin alla raamatud ja hakkasin lugema. Lugemise kĂ€igus kohtasin pidevalt tundmatuid sĂ”nu. TĂ”lkisin need kohe sisse ehitatud sĂ”naraamatute abil, kuid mĂ€rkasin ĂŒht omadust: sĂ”nad ei jÀÀnud meelde. Kui ma paar lehte hiljem sama sĂ”na uuesti kohtasin, siis 90% tĂ”enĂ€osusega vajan ma uuesti tĂ”lget, ja nii iga kord. JĂ”udsin jĂ€reldusele, et pelgalt tundmatute sĂ”nade tĂ”lkimine lugemise kĂ€igus ei ole piisav, on vaja teha midagi muud. Ideaalne lahendus oleks olnud see sĂ”na kasutusele vĂ”tta ja hakata seda kasutama, kuid elan ma mitte ingliskeelses riigis, seega on see keeruline. Siis meenutasin, et olin kunagi lugenud Intervallide kordamine.

Mis see on ja millega seda sĂŒĂŒakse? LĂŒhidalt öeldes on olemas selline unustamisĂ€pp, edasi tsitaat Vikipeediast:

Juba esimese tunni jooksul ununeb kuni 60 % kogu saadud teabest, 10 tunni pÀrast jÀÀb mÀllu 35 % Ôpitud materjalist. Edasi edeneb unustamisprotsess aeglaselt ja 6 pÀeva pÀrast jÀÀb mÀllu umbes 20 % algselt Ôpitud silpidest, sama palju jÀÀb mÀllu ka kuu pÀrast.

Ja jÀreldus siit

JÀreldused, mida saab teha selle kÔvera pÔhjal, on need, et efektiivseks meeldejÀtmiseks on vajalik Ôpitud materjali kordamine.

Nii oleme jÔudnud idee juurde intervallide kordamisest.

ANKI see on tĂ€iesti tasuta avatud lĂ€htekoodiga programm, mis viib ellu intervallide kordamise idee. Lihtsalt öeldes, on need arvutiga juhitavad kaardid, kus ĂŒhel poolel on kĂŒsimus ja teisel vastus. Kuna saate kĂŒsimusi/vastuseid luua tavalise html/css/javascript, vĂ”ib öelda, et sellel on tĂ”eliselt piiramatu potentsiaal. Lisaks saab seda laiendada spetsiaalsete pluginatega, millest ĂŒks osutub meile hiljem tĂ”eliselt kasulikuks.

Kaartide kĂ€sitsi loomine on aeganĂ”udev, tĂŒlikas ning suure tĂ”enĂ€osusega loobute sellest varsti, seega kĂŒsisin endalt, kas on vĂ”imalik see automatiseerida. Vastus – jah, on vĂ”imalik. Ja ma tegin selle Ă€ra. Ütleksin kohe, et see on rohkem POC (Proof of Concept), kuid millega saab kasutada. Kui kasutajate huvi on olemas ja teised arendajad liituvad, siis on selle vĂ”imalik viia valmis tooteks, millega saavad hakkama isegi tehniliselt harimata kasutajad. Praegu eeldab minu utiliidi kasutamine teatud programmeerimisalaseid teadmisi.

Lugesin raamatuid programmi AIReader. Sellel on vĂ”imalus ĂŒhendada vĂ€liseid sĂ”naraamatuid ning tĂ”lkides hoiab ta sĂ”na, mille kohta te tĂ”lget kĂŒsisite, tekstifailis. NĂŒĂŒd peab vaid need sĂ”nad tĂ”lkima ja ANKI kaardid looma.

Alustasin tĂ”lgetega, kasutades Google Translate, Lingvo API jne. Kuid tasuta teenustega ei Ă”nnestunud. Tasuta limiit sai mul otsa juba arendamise kĂ€igus, peale selle ei tohtinud ma litsentsi tingimuste kohaselt sĂ”nu vahemĂ€lus hoida. Ühel hetkel sain aru, et pean sĂ”nu ise tĂ”lkima. LĂ”puks kirjutasin mooduli dsl2html , millega saab ĂŒhendada DSL sĂ”naraamatud ja mis oskab neid konverteerida HTML formaati.

Nii nÀeb vÀlja sÔnaraamatute artikkel *.html, minu versioon vÔrreldes GoldenDict

Kaks lugu, kuidas ANKI vÔib teid aidata vÔÔrkeelt Ôppida ja intervjuuks valmistuda

Enne, kui otsin sĂ”na ĂŒhendatud sĂ”naraamatutes, viin selle leksikaalsesse kuju (lemmale) kasutades teeki Stanford CoreNLP. Tegelikult alustasin ma selle teegi tĂ”ttu Java-s kirjutamist ja algne plaan oli kĂ”ik kirjutada Java-s, kuid protsessi kĂ€igus leidsin teegi node-java mille, millega on suhteliselt lihtne kĂ€ivitada Java koodi nodejs-ist ning osa koodist on kirjutatud JavaScriptis. Kui ma oleksin selle raamatukogu varem leidnud, ei oleks Java-sse rida kirjutatud. Veel ĂŒks kĂ”rvalprojekt, mis sĂŒndis protsessi kĂ€igus, on loomine repo, kus on DSL dokumentatsioon , mis leiti internetist formaadis *.chm, konverteeritud ja viidud inimlikku redigeerimise. Kui originaalfaili autor, kelle kasutajanimi on yozhic , nĂ€eb seda artiklit, 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Ônastiku artikkel formaadis *.html, tuleb kÔik kokku viia, luua ANKI artiklid nimekirjast sÔnadest ja sisestada need ANKI andmebaasi. Selle eesmÀrgi saavutamiseks loodi jÀrgmine projekt data2anki. See suudab vastu vÔtta nimekirja sÔnadest, tÔlkida, luua ANKI *.html artiklid ja salvestada need ANKI andmebaasi. Artikli lÔpus on juhend, kuidas neid kasutada. Praegu on see aga teine lugu, kus intervallide kordused vÔivad olla kasulikud.

Teine lugu.

KĂ”ik inimesed, kes otsivad vĂ€hemal vĂ”i rohkemal mÀÀral kvalifitseeritud spetsialiteeti, sealhulgas programmeerijad, seisavad silmitsi vajadusega valmistuda intervjuudeks. Paljud kontseptsioonid, mida intervjuul kĂŒsitakse, ei pruugi olla igapĂ€evaselt praktikas kasutusel ja need unustatakse. JĂ€rgmise korral intervjuuks valmistudes, konspekteerides mĂ€rkmeid, raamatut vĂ”i kĂ€siraamatut, mĂ€rkasin, et vĂ€ga palju aega ja tĂ€helepanu kulub info filtreerimisele, mille te juba teate, sest see ei ole alati ilmne ja peate sĂŒvenema, et mĂ”ista, et see ei ole asjakohane. Kui aga lĂ€henete teemale, mida tĂ”eliselt peab kordama, on tihti nii, et olete juba vĂ€sinud ja ettevalmistuse kvaliteet kannatab. MillegipĂ€rast mĂ”tlesin, et miks mitte kasutada ANKI kaarte ka selle jaoks? NĂ€iteks teema konspekteerimise kĂ€igus luua kohe konspekt kĂŒsimuse ja vastuse vormis ning seejĂ€rel korduse kĂ€igus teate kohe, kas te teate vĂ”i mitte vastust sellele kĂŒsimusele.

Probleem tekkis ainult selles, et kĂŒsimuste sisestamine on vĂ€ga aeganĂ”udev ja tĂŒĂŒtus. Protsessi lihtsustamiseks lisasin data2anki projekti funktsionaalsuse konverteerida markdown ANKI kaardi tekst. KĂ”ik, mida vajate, on kirjutada ĂŒks suur fail, kus kĂŒsimused ja vastused on tĂ€histatud eelnevalt kokku lepitud sĂŒmbolite jĂ€rjestusega, mille abil parser mĂ”istab, kus on kĂŒsimus ja kus vastus.

PÀrast selle faili loomist kÀivitate data2anki ja see loob ANKI kaardid. Originaalfaili on kerge redigeerida ja jagada, piisab vaid vastava kaardi(de) kustutamisest ja programmi uuesti kÀivitamisest, et luua uus variant.

Installeerimine ja kasutamine

  1. ANKI + AnkiConnect installimine

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

  2. Paigaldamine data2anki

    1. Laadige data2anki githubi hoidlatest
      git clone https://github.com/anatoly314/data2anki
    2. Installeerige sÔltuvused
      cd data2anki && npm install
    3. Laadige java sÔltuvused https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Pakkige lahti jar-dependencies.zip ja asetage selle sisu data2anki/java/jars

  3. Kasutamine sÔnade tÔlkimiseks:

    1. Failis data2anki/config.json:

      • vĂ”tmes reĆŸiim 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 juba loodud enne kaartide loomist). Praegu toetatakse ainult mudeli tĂŒĂŒpi Basic:

        Omab esi- ja tagakĂŒlge ning loob ĂŒhe kaardi. Esi poolele lisatud tekst ilmub kaardi esikĂŒljele ja tagakĂŒljele lisatud tekst kaardi tagakĂŒljele.

        kus algne sÔna on Esi vÀli, ja tÔlge on Tagasi vÀli.

        Ei ole probleemi lisada toetust Basic (ja pöördkaardile), kus sÔna ja tÔlgenduse jaoks loodakse pöördkaart, kus tÔlke jÀrgi tuleb meenutada algset sÔna. Vajalik on vaid aeg ja soov.

      • vĂ”tmes modules.dsl.dictionariesPath mĂ€rkige massiiv ĂŒhendatud *.dsl sĂ”naraamatud. Iga ĂŒhendatud sĂ”naraamat on kataloog, kus asuvad sĂ”naraamatu failid vastavalt vormingule: DSL sĂ”naraamatu struktuur

      • vĂ”tmes modules.dsl.wordToTranslatePath mĂ€rkige tee sĂ”naloendisse, mida soovite tĂ”lkida.

    2. KÀivitage töötava ANKI rakenduse juures
      node data2ankiindex.js
    3. TULUS!!!

  4. Kaartide loomise kasutamine markdowni kaudu

    1. Failis data2anki/config.json:

      • vĂ”tmes reĆŸiim 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 juba loodud enne kaartide loomist). Mudeli toetamiseks toetatakse ainult tĂŒĂŒpi markdown2anki modules.markdown.selectors.startQuestionSelectors Basic.
      • vĂ”tmes modules.markdown.selectors.startAnswerSelectors ja mĂ€rkige selektorid, millega tĂ€histate kĂŒsimuste ja vastuste algust vastavalt. Ise selektoriga joont ei töödeldakse ja kaardile ei satu, parser alustab tööd jĂ€rgmise reaga. NĂ€iteks see kĂŒsimus/vastus kaart:

        Kaalutakse markdownis jÀrgmiselt:

        Kaks lugu, kuidas ANKI vÔib teid aidata vÔÔrkeelt Ôppida ja intervjuuks valmistuda

        NÀide on vÔetud siit:
        #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 vÔetud siit: 123-JavaScript-Interview-Questions

        Veel on ka projektikaustas nÀidiste fail. examples/markdown2anki-example.md

      • vĂ”tmes modules.markdown.pathToFile
        mĂ€rkige faili tee, kus see asub *.md kĂŒsimuste/vastuste fail

    2. KÀivitage töötava ANKI rakenduse juures
      node data2ankiindex.js
    3. TULUS!!!

Nii see mobiilis vÀlja nÀeb:

MĂ€ngi videot

Tulemus

Desktopi versioonis saadud ANKI kaardid sĂŒnkroniseeruvad probleemideta ANKI pilvega (tasuta kuni 100mb), seejĂ€rel saad neid kasutada igal pool. On kliente Androidi ja iPhone'i jaoks, samuti saab kasutada ka brauseris. Seega, kui sul on aega, mida kulutada, siis selle asemel, et mĂ”ttetult Facebookis sirvida vĂ”i Instagramis kasse vaadata, saad Ă”ppida midagi uut.

Epilog

Nagu ma juba mainisin, on see pigem töötav POC, millega saab kasutada, mitte lĂ”plik toode. Ligikaudu 30% DSL parsi standardist pole rakendatud ja seetĂ”ttu, nĂ€iteks ei ole kĂ”iki sĂ”nastikuartikleid, mis sĂ”naraamatutes on, vĂ”imalik leida, samuti on mĂ”te see ĂŒmber kirjutada JavaScript, kuna soovin saavutada „kauakestvust“, ja pealegi on see praegu kirjutatud mitte eriti optimaalselt. Praegu loob parser puu, mis, minu arvates, on ĂŒleliigne ja keerustab koodi. PildireĆŸiimis ei parsi pilte. PĂŒĂŒan vaikselt edasi töötada, kuid kuna praegu kirjutan enese jaoks, lahendan peamiselt neid probleeme, millele ise komistan, kuid kui keegi soovib aidata, siis olete oodatud. Kui on kĂŒsimusi programmi kohta, vastan hea meelega avatud probleemide kaudu vastavates projektides. Muud kriitika ja ettepanekud kirjutage siia. Loodan, et see projekt on kellelegi kasulik. markdown2anki P.S. Kui mĂ€rkate vigu (ja kahjuks neid on), kirjutage mulle, kĂ”ik parandan.

Olen alati arvanud, et laisk programmeerija on hea programmeerija. Miks? Sest kui paluda usinal inimesel midagi teha, siis ta lÀheb ja teeb.

Allikas: habr.com

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster