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 functionNÀide on vÔetud siit:
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

