Visada tikėjau, kad tingus programuotojas yra geras programuotojas. Kodėl? Nes paprašyk darbščiojo ką nors padaryti, jis nueis ir padarys. O tingus programuotojas praleis 2-3 kartus daugiau laiko, bet parašys scenarijų, kuris tai padarys už jį. Pirmą kartą tai padaryti gali užtrukti nepagrįstai ilgai, tačiau atliekant kartotines užduotis toks požiūris labai greitai atsipirks. Laikau save tingiu programuotoju. Tokia buvo preambulė, o dabar eikime prie reikalo.
Istorija viena
Prieš keletą metų galvojau, kaip galėčiau pagerinti anglų kalbos žinias. Nieko geresnio neatėjo į galvą, kaip skaityti literatūrą. Įsigijau elektroninį skaitytuvą, atsisiunčiau knygų ir pradėjau skaityti. Skaitydamas vis užtikdavau nepažįstamus žodžius. Iš karto juos išverčiau naudodamasis skaityklėje įtaisytais žodynais, tačiau pastebėjau vieną ypatybę: žodžiai nenorėjo įsiminti. Kai po kelių puslapių vėl sutikau šį žodį, su 90% tikimybe, man vėl reikėjo vertimo, ir taip nutikdavo kiekvieną kartą. Peršasi išvada, kad skaitant neužtenka tiesiog išversti nepažįstamų žodžių, reikia daryti ką nors kita. Idealus variantas būtų įvesti jį į kasdienį gyvenimą ir pradėti naudoti, bet aš negyvenu angliškai kalbančioje šalyje ir tai mažai tikėtina. Tada prisiminiau, kad kažkada skaičiau apie .
Kas tai yra ir su kuo valgoma? Trumpai tariant, tai yra , papildoma citata iš Vikipedijos:
Jau per pirmą valandą pamirštama iki 60% visos gautos informacijos, praėjus 10 valandų po įsiminimo, atmintyje lieka 35% to, kas buvo išmokta. Tada užmiršimo procesas vyksta lėtai ir po 6 dienų atmintyje lieka apie 20% viso iš pradžių išmoktų skiemenų skaičiaus, o po mėnesio – tiek pat.
Ir išvada iš čia
Remiantis šia kreive galima padaryti išvadas, kad norint efektyviai įsiminti, reikia pakartoti įsimintą medžiagą.
Taigi mes sugalvojome idėją .
yra visiškai nemokama ir atviro kodo programa, įgyvendinanti intervalinio pasikartojimo idėją. Paprasčiau tariant, kompiuterizuotose „flash“ kortelėse vienoje pusėje yra klausimas, o kitoje – atsakymas. Kadangi klausimus / atsakymus galite pateikti naudodami įprastą html/css/javascript, tuomet galime pasakyti, kad jos galimybės tikrai neribotos. Be to, jį galima išplėsti specialiais , ir vienas iš jų mums labai pravers ateityje.
Kortelių kūrimas rankiniu būdu yra ilgas, varginantis ir su didele tikimybe po kurio laiko šią užduotį pamiršite, todėl kažkada uždaviau sau klausimą, ar įmanoma šią užduotį automatizuoti. Atsakymas yra taip, galite. Ir aš tai padariau. Iš karto pasakysiu, tai daugiau , bet kuriuos galima naudoti. Jei yra vartotojų susidomėjimas ir įsitraukia kiti kūrėjai, tai gali būti sukurta iki galutinio produkto, kurį gali naudoti net techniškai neraštingi vartotojai. Dabar, norint naudoti mano įrankį, reikia tam tikrų programavimo žinių.
Naudodamasis programa skaitau knygas . Jis turi galimybę prijungti išorinius žodynus, o kai išverčiate žodį, jis išsaugo žodį, kurį raginote versti, tekstiniame faile. Belieka išversti šiuos žodžius ir sukurti ANKI korteles.
Iš pradžių bandžiau naudoti vertimui , ir tt Tačiau su nemokamomis paslaugomis viskas nepavyko. Kūrimo proceso metu išnaudojau nemokamą limitą, be to, pagal licencijos sąlygas neturėjau teisės saugoti žodžių. Kažkuriuo momentu supratau, kad žodžius reikia išversti pačiam. Dėl to buvo parašytas modulis prie kurio galite prisijungti ir kas žino, kaip juos paversti HTML formatu.
Taip atrodo žodyno įrašas *. Html, mano variantas lyginant su galimybe

Prieš ieškodamas žodžio prijungtuose žodynuose, aš jį atnešu į naudojantis biblioteka . Tiesą sakant, dėl šios bibliotekos aš pradėjau rašyti Java ir pradinis planas buvo viską rašyti Java, bet eidamas radau biblioteką su kuria galite palyginti lengvai vykdyti Java kodą iš nodejs, o dalis kodo yra parašyta JavaScript. Jei šią biblioteką būčiau radęs anksčiau, Java nebūtų parašyta nė viena eilutė. Kitas šalutinis projektas, kuris gimė proceso metu, yra kūrimas kuris buvo rastas tinkle formatu *.chm, paverstas ir įneštas į dievišką pavidalą. Jei pradinio failo autorius yra vartotojas pagal slapyvardį yozhic Kai jis pamato šį straipsnį, labai dėkoju jam už atliktą darbą, be jo dokumentų greičiausiai nebūčiau pasisekęs.
Taigi, aš turiu žodį anglų kalba, jo žodyno įrašas formatu *. Html, belieka viską sudėti, iš žodžių sąrašo sukurti ANKI straipsnius ir suvesti juos į ANKI duomenų bazę. Tuo tikslu buvo sukurtas toks projektas . Galima įvesti žodžių sąrašą, išversti, sukurti ANKI *. Html straipsnius ir įrašyti juos į ANKI duomenų bazę. Straipsnio pabaigoje pateikiamos instrukcijos, kaip ją naudoti. Tuo tarpu antroji istorija yra ta, kur pasikartojimai intervalais gali būti naudingi.
Antroji istorija.
Visi žmonės, ieškantys daugiau/mažiau kvalifikuotos specialybės, įskaitant programuotojus, susiduria su poreikiu ruoštis pokalbiui. Daugelio interviu metu užduodamų sąvokų kasdienėje praktikoje nevartojate ir jos pamirštamos. Ruošdamasi interviu, vartydama užrašus, knygą, žinyną, susidūriau su tuo, kad reikia daug laiko ir dėmesio atsijoti informaciją, kurią jau žinai, nes ji ne visada akivaizdi ir tenka atidžiai perskaitykite, kad suprastumėte, kas tai yra. Nesvarbu. Atėjus prie temos, kurią tikrai reikia kartoti, dažnai nutinka taip, kad jau pavargote ir nukenčia pasiruošimo kokybė. Kažkuriuo metu pagalvojau, kodėl gi nepanaudojus ir ANKI kortelių? Pavyzdžiui, užsirašinėdami tema, iš karto sukurkite pastabą klausimo ir atsakymo forma, o tada pakartoję iš karto sužinosite, ar žinote atsakymą į šį klausimą, ar ne.
Vienintelė iškilusi problema buvo ta, kad klausimų spausdinimas buvo labai ilgas ir varginantis. Kad procesas būtų lengvesnis, projektas pridėjau konvertavimo funkciją tekstas ANKI kortelėse. Tereikia parašyti vieną didelį failą, kuriame klausimai ir atsakymai bus pažymėti iš anksto nustatyta simbolių seka, pagal kurią analizatorius supras, kur yra klausimas, o kur yra atsakymas.
Sukūrę šį failą, paleidžiate data2anki ir jis sukuria ANKI korteles. Originalų failą lengva redaguoti ir bendrinti, tereikia ištrinti atitinkamą (-as) kortelę (-es) ir paleisti programą dar kartą, ir bus sukurta nauja versija.
Montavimas ir naudojimas
ANKI + AnkiConnect diegimas
- Atsisiųskite ANKI iš čia:
- Įdiekite AnkiConnect papildinį:
Montavimas
- parsisiųsti iš github saugyklos
git clone https://github.com/anatoly314/data2anki - Įdiekite priklausomybes
cd data2anki && npm install - Parsisiųsti java priklausomybes
- Išpakavimas jar-dependencies.zip ir įdėkite jo turinį data2anki/java/jars
- parsisiųsti iš github saugyklos
Naudokite norėdami išversti žodžius:
Byloje data2anki/config.json:
raktu režimas įveskite vertę dsl2anki
raktu modules.dsl.anki.deckName и modules.dsl.anki.modelName atitinkamai parašyk и (jau turi būti sukurta prieš kuriant korteles). Šiuo metu palaikomas tik modelio tipas Pagrindinis:
Turi priekio ir nugaros laukus ir sukuria vieną kortelę. Tekstas, kurį įvedėte į priekį, bus rodomas kortelės priekyje, o tekstas, kurį įvedėte atgal, kortelės gale.
kur originalus žodis? Priekinis laukas, ir bus vertimas Užpakalinis laukas.
Nėra jokių problemų pridėti paramą Pagrindinė (ir atvirkštinė kortelė), kur žodžiui ir vertimui bus sukurta atvirkštinė kortelė, kur pagal vertimą reikės atsiminti originalų žodį. Viskas, ko jums reikia, yra laiko ir noro.
raktu modules.dsl.dictionariesPath užregistruokite masyvą su prijungtu *.dsl žodynai. Kiekvienas prijungtas žodynas yra katalogas, kuriame yra žodyno failai pagal formatą:
raktu modules.dsl.wordToTranslatePath įveskite kelią į žodžių, kuriuos norite išversti, sąrašą.
- Paleiskite, kai veikia ANKI programa
node data2ankiindex.js - PELNAS!!!
Naudojama kortelių kūrimui iš žymėjimo
Byloje data2anki/config.json:
- raktu režimas įveskite vertę markdown2anki
- raktu modules.markdown.anki.deckName и modules.dsl.anki.modelName atitinkamai parašyk и (jau turi būti sukurta prieš kuriant korteles). Dėl markdown2anki režimu palaikomas tik modelio tipas Pagrindinis.
raktu modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors rašote rinkiklius, kuriais atitinkamai pažymite klausimo ir atsakymo pradžią. Linija su pačiu parinkikliu nebus analizuojama ir nepateks į kortelę; analizatorius pradės veikti nuo kitos eilutės.
Pavyzdžiui, ši klausimų/atsakymų kortelė:

Tai atrodys taip:
#KLAUSIMAS# ## 5 klausimas. Parašykite mul funkciją, kuri tinkamai veiks, kai bus iškviesta tokia sintaksė. ``` javascript console.log(mul(2)(3)(4)); // išvestis : 24 console.log(mul(4)(3)(4)); // išvestis : 48 ``` #ANSWER# Žemiau pateikiamas kodas ir paaiškinimas, kaip jis veikia: ```javascript function mul (x) { return function (y) { // anoniminė funkcija return funkcija (z) { // anoniminė funkcija return x * y * z; }; }; } ``` Čia funkcija `mul` priima pirmąjį argumentą ir grąžina anoniminę funkciją, kuri paima antrą parametrą ir grąžina anoniminę funkciją, kuri paima trečiąjį parametrą ir grąžina argumentų dauginimą, kuris perduodamas nuosekliai. Apibrėžiama Javascript funkcija Inside turi prieigą prie išorinio funkcijos kintamojo, o funkcija yra pirmos klasės objektas, todėl funkcija taip pat gali ją grąžinti ir perduoti kaip argumentą kitoje funkcijoje. - Funkcija yra objekto tipo egzempliorius - Funkcija gali turėti savybių ir turėti nuorodą atgal į jos konstruktoriaus metodą - Funkcija gali būti saugoma kaip kintamasis - Funkcija gali būti perduodama kaip parametras kitai funkcijai - Funkcija gali būti grįžo iš kitos funkcijosPavyzdys paimtas iš čia:
Taip pat projekto aplanke yra failas su pavyzdžiais
examples/markdown2anki-example.md- raktu modules.markdown.pathToFile
užsirašykite kelią į failą, kur *.md klausimų/atsakymų failas
- Paleiskite, kai veikia ANKI programa
node data2ankiindex.js - PELNAS!!!
Štai kaip tai atrodo mobiliajame telefone:

Rezultatas
Kortelės, gautos ANKI darbalaukio versijoje, sklandžiai sinchronizuojamos su ANKI debesimi (nemokamai iki 100 MB), todėl jas galite naudoti bet kur. Yra klientų, skirtų Android и iPhone, taip pat galima naudoti naršyklėje. Taigi, jei turite daug laiko, užuot be tikslo naršę „Facebook“ ar žiūrėję į kates „Instagram“, galite išmokti ko nors naujo.
Epilogas
Kaip jau minėjau, tai labiau veikiantis POC, kurį galite naudoti, nei gatavas produktas. Apie 30 % DSL analizatoriaus standarto neįdiegta, todėl , taip pat yra mintis jį perrašyti JavaScript, nes noriu “nuoseklumo”, o be to dabar nelabai optimaliai parašyta. Dabar analizatorius kuria medį, bet, mano nuomone, tai nereikalinga ir nereikia apsunkinti kodo. IN markdown2anki režimu, vaizdai nėra analizuojami. Bandysiu karpyti po truputi, bet kadangi rašau sau, tai visų pirma išspręsiu tas problemas, kurias pats užlipsiu, bet jei kas nori padėti, tai laukiame. Jei turite klausimų apie programą, mielai padėsiu išspręsti iškilusias problemas susijusiuose projektuose. Kitą kritiką ir pasiūlymus rašykite čia. Tikiuosi, kad šis projektas bus kam nors naudingas.
PS Jei pastebėsite klaidų (o, deja, jų yra), rašykite man asmenine žinute, viską ištaisysiu.
Šaltinis: www.habr.com

