Du rakontoj pri kiel ANKI povas helpi vin lerni fremdan lingvon kaj prepari por intervjuo

Mi ĉiam kredis, ke maldiligenta programisto estas bona programisto. Kial? Ĉar petu laboranton fari ion, li iros kaj faros ĝin. Kaj maldiligenta programisto pasigos 2-3 fojojn pli da tempo, sed skribos skripton, kiu faros ĝin por li. Eble necesas neracie longa tempo por fari tion la unuan fojon, sed kun ripetaj taskoj ĉi tiu aliro pagos tre rapide. Mi konsideras min maldiligenta programisto. Tio estis la preambulo, nun ni eklaboru.

Rakonto unu

Antaŭ kelkaj jaroj mi scivolis kiel mi povus plibonigi mian anglan. Nenio pli bona venis al la menso ol legi literaturon. Mi aĉetis elektronikan legilon, elŝutis librojn kaj mi eklegis. Legante, mi daŭre trovis nekonatajn vortojn. Mi tuj tradukis ilin per la vortaroj enkonstruitaj en la leganto, sed mi rimarkis unu trajton: la vortoj ne volis esti memoritaj. Kiam mi renkontis ĉi tiun vorton denove kelkajn paĝojn poste, kun 90% probableco mi denove bezonis tradukon, kaj tio okazis ĉiufoje. La konkludo estis, ke ne sufiĉis simple traduki nekonatajn vortojn dum legado, oni devas fari ion alian. La ideala elekto estus enkonduki ĝin en la ĉiutagan vivon kaj ekuzi ĝin, sed mi ne loĝas en anglalingva lando kaj ĉi tio estas neverŝajna. Tiam mi rememoris, ke mi iam legis pri Spacigita Ripeto.

Kio ĝi estas kaj per kio ĝi estas manĝata? Resume, estas ĉi tio forgesa kurbo, plia citaĵo el Vikipedio:

Jam en la unua horo, ĝis 60% de ĉiuj ricevitaj informoj estas forgesitaj; 10 horojn post enmemorigo, 35% de tio, kio estis lernita, restas en memoro. Tiam la procezo de forgeso daŭrigas malrapide, kaj post 6 tagoj ĉirkaŭ 20% de la tuta nombro de komence lernitaj silaboj restas en memoro, kaj la sama kvanto restas en memoro post monato.

Kaj la konkludo de ĉi tie

La konkludoj, kiuj povas esti tiritaj surbaze de tiu ĉi kurbo, estas ke por efika parkerigo necesas ripeti la parkerigitan materialon.

Do ni elpensis ideon interspacigita ripeto.

АNKI estas tute senpaga kaj malfermkoda programo, kiu efektivigas la ideon de spacigita ripeto. Simple dirite, komputiligitaj fulmkartoj havas demandon unuflanke kaj respondon aliflanke. Ĉar vi povas fari demandojn/respondojn per regula html/css/javascript, tiam ni povas diri, ke ĝi havas vere senlimajn eblecojn. Krome, ĝi estas ekspansiebla kun specialaj kromaĵojn, kaj unu el ili estos tre utila al ni estonte.

Mane krei kartojn estas longa, teda, kaj kun alta probableco, post iom da tempo vi forgesos pri ĉi tiu tasko, kaj do iam mi faris al mi la demandon, ĉu eblas aŭtomatigi ĉi tiun taskon. La respondo estas jes, vi povas. Kaj mi faris ĝin. Mi tuj diros, estas pli POC (Pruvo de koncepto), sed kiu povas esti uzata. Se estas intereso de uzantoj kaj aliaj programistoj partoprenas, tiam ĝi povas esti alportita al preta produkto, kiun eĉ teknike analfabetaj uzantoj povas uzi. Nun, uzi mian ilon postulas iom da scion pri programado.

Mi legis librojn uzante la programon AI-Leganto. Ĝi havas la kapablon konekti eksterajn vortarojn, kaj kiam vi tradukas vorton, ĝi konservas la vorton, kiun vi vokis por traduki, al tekstdosiero. Restas nur traduki ĉi tiujn vortojn kaj krei ANKI-kartojn.

Komence mi provis uzi por tradukado Google translate, Lingvo API ktp. Sed aferoj ne funkciis kun senpagaj servoj. Mi elĉerpis la liberan limon dum la evoluprocezo, krome, laŭ la kondiĉoj de la permesilo, mi ne havis la rajton konservi vortojn. Iam mi konstatis, ke mi bezonas mem traduki la vortojn. Kiel rezulto, modulo estis skribita dsl2html al kiu vi povas konektiĝi DSL-vortaroj kaj kiu scias konverti ilin en HTML formato.

Jen kiel aspektas vortara eniro en *.html, mia opcio kompare kun la opcio GoldenDict

Du rakontoj pri kiel ANKI povas helpi vin lerni fremdan lingvon kaj prepari por intervjuo

Antaŭ ol serĉi vorton en kunligitaj vortaroj, mi alportas ĝin al vortara formo (lemo) uzante la bibliotekon Stanfordo CoreNLP. Fakte, pro ĉi tiu biblioteko, mi komencis verki en Java kaj la originala plano estis skribi ĉion en Java, sed en la procezo mi trovis la bibliotekon. nodo-java per kiu oni relative facile povas ekzekuti Java-kodon el nodejs kaj iuj el la kodo estas skribita en JavaScript. Se mi estus trovinta ĉi tiun bibliotekon pli frue, eĉ unu linio ne estus skribita en Java. Alia flankprojekto kiu naskiĝis en la procezo estas la kreado deponejo kun DSL-dokumentaro kiu troviĝis en la reto en la formato *.chm, konvertita kaj alportita en dian formon. Se la aŭtoro de la originala dosiero estas uzanto per kromnomo yozhic Kiam li vidas ĉi tiun artikolon, mi tre dankas lin pro la laboro, kiun li faris; sen lia dokumentado, mi plej verŝajne ne sukcesus.

Do, mi havas vorton en la angla, ĝia vortara eniro en la formato *.html, restas nur kunmeti ĉion, krei ANKI-artikolojn el la listo de vortoj kaj enigi ilin en la ANKI-datumbazon. Tiucele la jena projekto estis kreita data2anki. Ĝi povas preni liston de vortoj kiel enigo, traduki, krei ANKI *.html artikolojn kaj registri ilin en la datumbazo de ANKI. Ĉe la fino de la artikolo estas instrukcioj pri kiel uzi ĝin. Intertempe, la dua rakonto estas kie spacigitaj ripetoj povas esti utilaj.

La dua rakonto.

Ĉiuj homoj serĉantaj pli/malpli kvalifikitan specialaĵon, inkluzive de programistoj, alfrontas la bezonon prepariĝi por intervjuo. Multaj el la konceptoj, kiujn oni demandas en intervjuoj, vi ne uzas en ĉiutaga praktiko kaj ili estas forgesitaj. Preparante por intervjuo, foliumante notojn, libron, konsultlibron, mi alfrontis la fakton, ke necesas multe da tempo kaj atento por kribri informojn, kiujn vi jam konas, ĉar ĝi ne ĉiam estas evidenta kaj vi devas. legu ĝin atente por kompreni kio ĝi estas.negrava. Kiam vi venas al temo, kiu vere devas esti ripetita, ofte okazas, ke vi jam estas laca kaj la kvalito de via preparo suferas. Iam mi pensis, kial ne uzi ANKI-kartojn ankaŭ por ĉi tio? Ekzemple, prenante notojn pri temo, tuj kreu noton en formo de demando kaj respondo, kaj tiam kiam vi ripetos ĝin, vi tuj scios ĉu vi scias la respondon al tiu ĉi demando aŭ ne.

La nura problemo kiu ekestis estis ke tajpi demandojn estis tre longa kaj teda. Por faciligi la procezon, data2anki projekto mi aldonis konverti funkciecon marko teksto en ANKI-kartoj. Vi nur bezonas skribi unu grandan dosieron, en kiu demandoj kaj respondoj estos markitaj per antaŭfiksita sinsekvo de signoj, per kiu la analizanto komprenos kie estas la demando kaj kie estas la respondo.

Post kiam ĉi tiu dosiero estas kreita, vi rulas data2anki kaj ĝi kreas ANKI-kartojn. La originala dosiero estas facile redaktebla kaj dividi, vi nur bezonas viŝi la respondan karton(j)n kaj ruli la programon denove, kaj nova versio estos kreita.

Instalado kaj uzo

  1. Instalante ANKI + AnkiConnect

    1. Elŝutu ANKI de ĉi tie: https://apps.ankiweb.net/
    2. Instalu AnkiConnect kromaĵon: https://ankiweb.net/shared/info/2055492159

  2. fikso data2anki

    1. Elŝutu data2anki el github-deponejo
      git clone https://github.com/anatoly314/data2anki
    2. Instalu dependecojn
      cd data2anki && npm install
    3. Elŝutu javajn dependecojn https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Malpakado jar-dependencoj.zip kaj enmetu ĝian enhavon data2anki/java/jars

  3. Uzu por traduki vortojn:

    1. En dosiero data2anki/config.json:

      • en la ŝlosilo reĝimo enigu la valoron dsl2anki

      • en la ŝlosilo modules.dsl.anki.deckName и modules.dsl.anki.modelName skribu laŭe Nomo de la Ferdeko и modelo Nomo (devas esti jam kreita antaŭ krei kartojn). Nuntempe nur la modelo-tipo estas subtenata bazaj:

        Havas Antaŭan kaj Malantaŭan kampojn, kaj kreos unu karton. Teksto, kiun vi enigas antaŭe, aperos sur la fronto de la karto, kaj teksto, kiun vi enigas en Malantaŭe, aperos sur la malantaŭo de la karto.

        kie estas la originala vorto? Antaŭa kampo, kaj la traduko estos en Malantaŭa kampo.

        Ne estas problemo aldoni subtenon Baza (kaj inversigita karto), kie inversa karto estos kreita por la vorto kaj traduko, kie surbaze de la traduko vi devos memori la originan vorton. Vi nur bezonas tempon kaj deziron.

      • en la ŝlosilo modules.dsl.dictionariesPath registri tabelon kun konektita *.dsl vortaroj. Ĉiu kunligita vortaro estas dosierujo en kiu la vortardosieroj troviĝas laŭ la formato: DSL vortara strukturo

      • en la ŝlosilo modules.dsl.wordToTranslatePath enigu la vojon al la listo de vortoj, kiujn vi volas traduki.

    2. Lanĉu kun la ANKI-aplikaĵo funkcianta
      node data2ankiindex.js
    3. PROFITO!!!

  4. Uzoj por krei kartojn el markdown

    1. En dosiero data2anki/config.json:

      • en la ŝlosilo reĝimo enigu la valoron markdown2anki
      • en la ŝlosilo modules.markdown.anki.deckName и modules.dsl.anki.modelName skribu laŭe Nomo de la Ferdeko и modelo Nomo (devas jam esti kreita antaŭ krei kartojn). Por markdown2anki reĝimo nur modelo tipo estas subtenata bazaj.
      • en la ŝlosilo modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors vi skribas elektilojn per kiuj vi markas la komencon de la demando kaj respondo, respektive. La linio kun la elektilo mem ne estos analizita kaj ne finiĝos en la karto; la analizilo komencos funkcii de la sekva linio.

        Ekzemple, ĉi tiu demando/respondkarto:

        Du rakontoj pri kiel ANKI povas helpi vin lerni fremdan lingvon kaj prepari por intervjuo

        Ĝi aspektos jene en markdown:
        #DEMANDO# ## Demando 5. Skribu mul-funkcion kiu funkcios ĝuste kiam oni alvokas kun la sekva sintakso. ```javascript console.log(mul(2)(3)(4)); // eligo : 24 console.log(mul(4)(3)(4)); // eligo : 48 ``` #RESPONDO# Malsupre estas la kodo sekvata de la klarigo pri kiel ĝi funkcias: ```javascript function mul (x) { return function (y) { // anonima funkcio return function (z) { // anonima funkcio return x * y * z; }; }; } ``` Ĉi tie la funkcio `mul` akceptas la unuan argumenton kaj resendas la anoniman funkcion kiu prenas la duan parametron kaj resendas la anoniman funkcion kiu prenas la trian parametron kaj resendas la multobligon de argumentoj kiu estas pasigita en sinsekve En Javascript funkcio difinita ene havas aliron al ekstera funkcio variablo kaj funkcio estas la unuaklasa objekto do ĝi povas esti resendita de la funkcio ankaŭ kaj pasita kiel argumento en alia funkcio. - Funkcio estas ekzemplo de la Objekta tipo - Funkcio povas havi ecojn kaj havas ligon reen al sia konstruaĵa metodo - Funkcio povas esti stokita kiel variablo - Funkcio povas esti transdonita kiel parametro al alia funkcio - Funkcio povas esti revenis de alia funkcio
        

        Ekzemplo prenita de ĉi tie: 123-JavaScript-Intervjuaj-Demandoj

        Estas ankaŭ dosiero kun ekzemploj en la projekta dosierujo examples/markdown2anki-example.md

      • en la ŝlosilo modules.markdown.pathToFile
        notu la vojon al la dosiero kie *.md demando/respondo dosiero

    2. Lanĉu kun la ANKI-aplikaĵo funkcianta
      node data2ankiindex.js
    3. PROFITO!!!

Jen kiel ĝi aspektas sur poŝtelefono:

rezulto

Kartoj ricevitaj sur la labortabla versio de ANKI estas senprobleme sinkronigitaj kun la ANKI-nubo (senpaga ĝis 100mb), kaj tiam vi povas uzi ilin ĉie. Estas klientoj por Android kaj iPhone, kaj vi ankaŭ povas uzi ĝin en retumilo. Rezulte, se vi havas tempon, pri kiu vi havas nenion por elspezi, tiam anstataŭ sencele rulumi Facebook aŭ katoj en Instagram, vi povas lerni ion novan.

Epilogo

Kiel mi menciis, ĉi tio estas pli funkcianta POC, kiun vi povas uzi, ol preta produkto. Proksimume 30% de la DSL-analiznormo ne estas efektivigitaj, kaj tial, ekzemple, ne ĉiuj vortaraj enskriboj kiuj estas en vortaroj troveblas, ekzistas ankaŭ ideo por reverki ĝin JavaScript, ĉar mi volas "koherecon", kaj krome nun ĝi ne estas skribita tre optimume. Nun la analizilo konstruas arbon, sed laŭ mi ĉi tio estas nenecesa kaj ne bezonas kompliki la kodon. EN markdown2anki reĝimo, la bildoj ne estas analizitaj. Mi provos tranĉi iom post iom, sed ĉar mi skribas por mi, mi antaŭ ĉio solvos la problemojn, kiujn mi mem paŝos, sed se iu volas helpi, tiam vi estas bonvena. Se vi havas demandojn pri la programo, mi volonte helpos per malfermitaj aferoj en la koncernaj projektoj. Skribu aliajn kritikojn kaj sugestojn ĉi tie. Mi esperas, ke ĉi tiu projekto estos utila al iu.

PS Se vi rimarkas iujn erarojn (kaj, bedaŭrinde, estas iuj), skribu al mi en persona mesaĝo, mi korektos ĉion.

fonto: www.habr.com

Aldoni komenton