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 .
Mis see on ja millega seda süüakse? Lühidalt öeldes on olemas selline , 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 .
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 , 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 , 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 . 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 , 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 , millega saab ühendada ja mis oskab neid konverteerida HTML formaati.
Nii näeb välja sõnaraamatute artikkel *.html, minu versioon võrreldes

Enne, kui otsin sõna ühendatud sõnaraamatutes, viin selle leksikaalsesse kasutades teeki . 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 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 , 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 . 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 projekti funktsionaalsuse konverteerida 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
ANKI + AnkiConnect installimine
- Laadige ANKI siit alla:
- Paigaldage AnkiConnect plugin:
Paigaldamine
- Laadige githubi hoidlatest
git clone https://github.com/anatoly314/data2anki - Installeerige sõltuvused
cd data2anki && npm install - Laadige java sõltuvused
- Pakkige lahti jar-dependencies.zip ja asetage selle sisu data2anki/java/jars
- Laadige githubi hoidlatest
Kasutamine sõnade tõlkimiseks:
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 ja (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:
võtmes modules.dsl.wordToTranslatePath märkige tee sõnaloendisse, mida soovite tõlkida.
- Käivitage töötava ANKI rakenduse juures
node data2ankiindex.js - TULUS!!!
Kaartide loomise kasutamine markdowni kaudu
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 ja (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:

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Пример взят отсюда:
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
- Käivitage töötava ANKI rakenduse juures
node data2ankiindex.js - TULUS!!!
Nii see mobiilis välja näeb:

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, , 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

