Dui storii nantu à cumu ANKI pò aiutà à amparà una lingua straniera è preparà per una entrevista

Aghju sempre cridutu chì un programatore lazy hè un bonu programatore. Perchè? Perchè dumandate à un travagliadore duru di fà qualcosa, andarà è fà. È un programatore lazy hà da passà 2-3 volte più tempu, ma scriverà un script chì farà per ellu. Puderà piglià un tempu irragionevule per fà questu a prima volta, ma cù i travaglii ripetuti stu approcciu pagherà assai rapidamente. Mi cunsiderà un programatore pigro. Chì era u preambulu, avà andemu à l'affari.

Una storia

Qualchi anni fà mi dumandava cumu puderia migliurà u mo inglese. Ùn ci hè nunda di megliu chì leghje a literatura. Aghju compru un lettore elettronicu, scaricatu libri è aghju cuminciatu à leghje. Durante a lettura, aghju continuatu à truvà parolle chì ùn sò micca cunnisciute. I tradutti subitu cù i dizziunari integrati in u lettore, ma aghju nutatu una funzione: e parolle ùn vulianu micca esse ricordate. Quandu aghju trovu sta parolla di novu uni pochi di pagine dopu, cù una probabilità di 90% aghju tornatu bisognu di traduzzione, è questu hè accadutu ogni volta. A cunclusione era chì ùn era micca abbastanza per traduce solu parolle scunnisciute mentre leghje, avete bisognu di fà qualcosa d'altru. L'opzione ideale seria di intruduce in a vita di ogni ghjornu è cumincià à aduprà, ma ùn aghju micca campatu in un paese di lingua inglese è questu hè improbabile. Allora aghju ricurdatu chì una volta aghju lettu Ripetizione spaziata.

Chì ghjè è chì si manghja ? In corta, ci hè questu curve scurdate, più citazione da Wikipedia:

Dighjà in a prima ora, finu à u 60% di tutte l'infurmazioni ricevute hè scurdatu; 10 ore dopu a memorizazione, u 35% di ciò chì hè statu amparatu resta in memoria. Allora u prucessu di scurdà prucede lentamente, è dopu à 6 ghjorni, circa 20% di u numeru tutale di sillabi inizialmente amparati resta in memoria, è a stessa quantità ferma in memoria dopu à un mesi.

È a cunclusione da quì

I cunclusioni chì ponu esse basati nantu à sta curva sò chì per una memorizazione efficace hè necessariu di ripetiri u materiale memorizatu.

Allora avemu avutu una idea ripetizione spaziata.

ÀNKI hè un prugramma completamente liberu è apertu chì implementa l'idea di ripetizione spaziata. Bastamente, e carte flash computerizzate anu una quistione da una parte è una risposta da l'altru. Siccomu pudete fà dumande / risposte usendu regularmente html/css/javascript, allora pudemu dì chì hà pussibuli veramente illimitati. Inoltre, hè espansibile cù speciali plugins, è unu di elli serà assai utile per noi in u futuru.

A creazione di carte manualmente hè longa, tediosa, è cù una probabilità alta, dopu un pocu vi scurdate di stu compitu, è cusì à un certu puntu aghju dumandatu a quistione, hè pussibule di automatizà stu compitu. A risposta hè sì, pudete. È aghju fattu. Dicu subitu, hè più POC (Prova di cuncettu), ma chì pò esse usatu. Se ci hè interessu da l'utilizatori è altri sviluppatori sò implicati, allura pò esse purtatu à un pruduttu finitu chì ancu l'utilizatori tecnicamente analfabeti ponu utilizà. Avà, aduprà a mo utilità richiede una certa cunniscenza di prugrammazione.

Aghju lettu libri cù u prugramma Lettore AI. Hà a capacità di cunnette dizziunari esterni, è quandu traduce una parolla, salva a parolla chì hà chjamatu per a traduzzione in un schedariu di testu. Il ne reste plus qu'à traduire ces mots et à créer des cartes ANKI.

Prima aghju pruvatu à aduprà per a traduzzione Google traduzzione, Lingvo API ecc. Ma e cose ùn anu micca travagliatu cù servizii gratuiti. Aghju esauritu u limitu liberu durante u prucessu di sviluppu, in più, sicondu i termini di a licenza, ùn aghju micca u dirittu di cache e parolle. À un certu puntu, aghju capitu chì avia bisognu di traduce e parolle stessu. In u risultatu, un modulu hè statu scrittu dsl2html à quale pudete cunnette Dizionari DSL è quale sà cumu cunvertisce in HTML furmatu.

Eccu ciò chì pare una voce di dizziunariu in *viktoria, a mo opzione paragunata à l'opzione GoldenDict

Dui storii nantu à cumu ANKI pò aiutà à amparà una lingua straniera è preparà per una entrevista

Prima di circà una parolla in dizziunari cunnessi, l'aghju purtatu à forma di dizziunariu (lemme) usendu a biblioteca Stanford CoreNLP. In fatti, per via di sta biblioteca, aghju cuminciatu à scrive in Java è u pianu originale era di scrive tuttu in Java, ma in u prucessu aghju trovu a biblioteca. node-java cù quale pudete eseguisce relativamente facilmente codice Java da nodejs è un pocu di u codice hè scrittu in JavaScript. S'e aghju trovu sta biblioteca prima, micca una sola linea seria stata scritta in Java. Un altru prughjettu side chì hè natu in u prucessu hè a creazione repository cù documentazione DSL chì hè statu trovu nantu à a reta in u formatu *.chm, cunvertitu è ​​purtatu in forma divina. Se l'autore di u schedariu originale hè un utilizatore per nickname yozhic Quandu ellu vede stu articulu, u ringraziu assai per u travagliu chì hà fattu; senza a so documentazione, probabilmente ùn averia micca successu.

Allora, aghju una parolla in inglese, a so entrata di dizziunariu in u formatu *viktoria, tuttu ciò chì resta hè di mette tuttu inseme, creà articuli ANKI da a lista di e parolle è entre in a basa di dati ANKI. Per questu scopu hè statu creatu u seguente prughjettu data2anki. Pò piglià una lista di parolle cum'è input, traduce, crea ANKI *viktoria articuli è arregistrallu in a basa di dati ANKI. À a fine di l'articulu ci sò struzzioni nantu à cumu aduprà. Intantu, a seconda storia hè induve e ripetizioni spaziate ponu esse utili.

A seconda storia.

Tutte e persone in cerca di una specialità più / menu qualificata, cumpresi i programatori, sò affruntati cù a necessità di preparà per una entrevista. Parechje di i cuncetti chì sò dumandati in l'entrevista chì ùn utilizate micca in a pratica di ogni ghjornu è sò scurdati. Quandu si preparava per una entrevista, scagliate note, un libru, un libru di riferimentu, aghju avutu affruntatu cù u fattu chì ci vole assai tempu è attenzione per sminuisce l'infurmazioni chì sapete digià perchè ùn hè micca sempre evidenti è avete da esse. leghjite cù cura per capisce ciò chì hè irrilevante. Quandu vene à un tema chì veramente deve esse ripetutu, spessu succede chì site digià stancu è a qualità di a vostra preparazione soffre. À un certu puntu aghju pensatu, perchè micca aduprà e carte ANKI per questu ancu? Per esempiu, quandu pigliate note nantu à un tema, create subitu una nota in a forma di una dumanda è risposta, è dopu quandu u ripetite, sapete immediatamente s'ellu sapete a risposta à sta quistione o micca.

L'unicu prublema chì hè ghjuntu era chì scrive e dumande era assai longa è tediosa. Per fà u prucessu più faciule, data2anki prughjettu aghju aghjustatu funziunalità cunvertisce neguzzioni testu in carte ANKI. Tuttu ciò chì avete bisognu hè di scrive un grande fugliale in quale e dumande è e risposte seranu marcate cù una sequenza predeterminata di caratteri, da quale l'analizzatore capisce induve hè a quistione è induve a risposta hè.

Una volta chì stu schedariu hè creatu, eseguite data2anki è crea carte ANKI. U schedariu uriginale hè faciule per edità è sparte, basta à sguassà a carta (s) currispundenti è eseguisce u prugramma di novu, è una nova versione serà creata.

Installazione è usu

  1. Installazione di ANKI + AnkiConnect

    1. Scaricate ANKI da quì: https://apps.ankiweb.net/
    2. Installa u plugin AnkiConnect: https://ankiweb.net/shared/info/2055492159

  2. rimarchevuli data2anki

    1. Scaricate data2anki da u repository github
      git clone https://github.com/anatoly314/data2anki
    2. Installa dipendenze
      cd data2anki && npm install
    3. Scaricate e dipendenze di java https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Unpacking jar-dependencies.zip è mette u so cuntenutu in data2anki/java/jars

  3. Aduprà per traduce e parolle:

    1. In u schedariu data2anki/config.json:

      • in a chjave modu entre u valore dsl2anki

      • in a chjave modules.dsl.anki.deckName и modules.dsl.anki.modelName scrive cusì Deck Name и Model Name (deve esse digià creatu prima di creà carte). Attualmente solu u tipu di mudellu hè supportatu Basic:

        Hà campi Fronte è Back, è creà una carta. U testu chì entre in Front appariscerà nantu à a fronte di a carta, è u testu chì inserite in Back appariscerà nantu à a parte posteriore di a carta.

        induve hè a parolla originale? Campu di fronte, è a traduzzione serà in Campu daretu.

        Ùn ci hè micca prublema per aghjunghje supportu Basic (è carta invertita), induve una carta inversa serà creata per a parolla è a traduzzione, induve basatu nantu à a traduzzione avete bisognu di ricurdà a parolla originale. Tuttu ciò chì avete bisognu hè u tempu è u desideriu.

      • in a chjave modules.dsl.dictionariesPath registrà un array cun cunnessu *.dsl dizziunari. Ogni dizziunariu cunnessu hè un repertoriu in quale i schedarii di dizziunariu sò situati in cunfurmità cù u formatu: Struttura di dizziunariu DSL

      • in a chjave modules.dsl.wordToTranslatePath entre u percorsu à a lista di e parolle chì vulete traduce.

    2. Lanciate cù l'applicazione ANKI in esecuzione
      node data2ankiindex.js
    3. PROFIT!!!

  4. Usi per creà carte da markdown

    1. In u schedariu data2anki/config.json:

      • in a chjave modu entre u valore markdown2anki
      • in a chjave modules.markdown.anki.deckName и modules.dsl.anki.modelName scrive cusì Deck Name и Model Name (deve esse digià creatu prima di creà carte). Per markdown2anki Modu solu tipu di mudellu hè supportatu Basic.
      • in a chjave modules.markdown.selectors.startQuestionSelectors и moduli.markdown.selectors.startAnswerSelectors scrive selettori cù quale marcate u principiu di a quistione è a risposta, rispettivamente. A linea cù u selettore stessu ùn serà micca analizata è ùn finisce micca in a carta; u parser hà da cumincià à travaglià da a linea dopu.

        Per esempiu, sta carta di dumanda / risposta:

        Dui storii nantu à cumu ANKI pò aiutà à amparà una lingua straniera è preparà per una entrevista

        Serà cusì in markdown:
        #QUISTION# ## Question 5. Scrivite una funzione mul chì hà da travaglià bè quandu invucatu cù a sintassi seguente. ```javascript console.log(mul(2)(3)(4)); // output : 24 console.log(mul(4)(3)(4)); // output : 48 ``` #RISPOSTA# Sottu hè u codice seguitu da a spiegazione di cumu funziona: ```javascript function mul (x) { return function (y) { // funzione anonima return function (z) { // funzione anonima return x * y * z; }; }; } ``` Quì a funzione `mul` accetta u primu argumentu è torna a funzione anonima chì piglia u sicondu paràmetru è torna a funzione anonima chì piglia u terzu paràmetru è torna a multiplicazione di l'argumenti chì hè passatu in successione In a funzione Javascript definita Dentru hà accessu à a variabile di funzione esterna è a funzione hè l'ughjettu di a prima classa per quessa pò esse tornata da a funzione ancu è passata cum'è argumentu in una altra funzione. - Una funzione hè una istanza di u tipu d'ughjettu - Una funzione pò avè pruprietà è hà un ligame à u so metudu di custruttore - Una funzione pò esse guardata cum'è variabile - Una funzione pò esse passata cum'è paràmetru à una altra funzione - Una funzione pò esse riturnatu da una altra funzione
        

        Esempiu pigliatu da quì: 123-JavaScript-Intervista-Questioni

        Ci hè ancu un schedariu cù esempi in u cartulare di u prugettu examples/markdown2anki-example.md

      • in a chjave modules.markdown.pathToFile
        scrivite u percorsu à u schedariu induve *.md file di quistione / risposta

    2. Lanciate cù l'applicazione ANKI in esecuzione
      node data2ankiindex.js
    3. PROFIT!!!

Questu hè ciò chì pare nantu à un telefuninu mobile:

risultatu

I carte ricevuti nantu à a versione desktop di ANKI sò sincronizzati senza prublemi cù u nuvulu ANKI (liberu finu à 100mb), è pudete aduprà in ogni locu. Ci sò clienti per Android è iPhone, è pudete puru aduprà in un navigatore. In u risultatu, sè vo avete u tempu chì ùn avete nunda per passà, allora invece di scrolling senza scopu per Facebook o i misgi in Instagram, pudete amparà qualcosa di novu.

Epilogue

Comu aghju dettu, questu hè più di un POC di travagliu chì pudete aduprà cà un pruduttu finitu. Circa 30% di u standard parser DSL ùn hè micca implementatu, è per quessa, per esempiu, micca tutte e voci di dizziunariu chì sò in dizziunari ponu esse truvate, ci hè ancu un'idea di riscriva lu in JavaScript, perchè vogliu "coerenza", è in più, avà ùn hè micca scrittu assai ottimali. Avà u parser hè di custruisce un arbulu, ma in u mo scusa questu ùn hè micca necessariu è ùn hà micca bisognu di cumplicà u codice. IN markdown2anki in modu, l'imaghjini ùn sò micca analizati. Pruvaraghju di taglià pocu à pocu, ma postu chì scrivu per mè stessu, risolve prima di tuttu i prublemi chì eiu stessu pistu, ma s'ellu ci vole aiutà, allora site benvenutu. Sì avete dumande nantu à u prugramma, saraghju felice di aiutà à traversu prublemi aperti in i prughjetti pertinenti. Scrivite altre critiche è suggerimenti quì. Spergu chì stu prughjettu serà utile à qualchissia.

PS Sè vo avete qualchì errore (è, sfurtunatamenti, ci sò parechji), scrivitemi in un missaghju persunale, correraghju tuttu.

Source: www.habr.com

Add a comment