Duha ka istorya kung giunsa ang ANKI makatabang kanimo nga makakat-on ug langyaw nga sinultian ug mangandam alang sa usa ka interbyu

Kanunay kong nagtuo nga ang tapolan nga programmer usa ka maayong programmer. Ngano man? Tungod kay hangyoa ang usa ka kugihan sa pagbuhat sa usa ka butang, siya moadto ug mobuhat niini. Ug ang usa ka tapulan nga programmer mogugol ug 2-3 ka beses nga mas daghang oras, apan magsulat usa ka script nga buhaton kini alang kaniya. Mahimong magkinahanglan kini og dili makatarunganon nga taas nga panahon aron mahimo kini sa unang higayon, apan sa balik-balik nga mga buluhaton kini nga pamaagi mobayad dayon. Giisip nako ang akong kaugalingon nga usa ka tapulan nga programmer. Kana mao ang pasiuna, karon moadto kita sa negosyo.

Usa ka istorya

Pipila ka tuig ang milabay naghunahuna ko kon unsaon nako pagpalambo ang akong Iningles. Wala nay mas maayo nga nahunahunaan kaysa pagbasa sa literatura. Nagpalit ako usa ka elektronik nga magbabasa, nag-download sa mga libro ug nagsugod ako sa pagbasa. Samtang nagbasa, nagsige kog makita nga dili pamilyar nga mga pulong. Gihubad dayon nako kini gamit ang mga diksyonaryo nga gitukod sa magbabasa, apan akong namatikdan ang usa ka bahin: ang mga pulong dili gusto nga mahinumduman. Sa dihang nakit-an nako kini nga pulong pag-usab pipila ka mga panid sa ulahi, nga adunay 90% nga posibilidad nga kinahanglan nako pag-usab ang paghubad, ug kini nahitabo matag higayon. Ang konklusyon mao nga dili igo ang paghubad lamang sa dili pamilyar nga mga pulong samtang nagbasa, kinahanglan nimo nga buhaton ang uban pa. Ang sulundon nga kapilian mao ang pagpaila niini sa adlaw-adlaw nga kinabuhi ug pagsugod sa paggamit niini, apan wala ako nagpuyo sa usa ka nasud nga nagsultig English ug kini dili mahimo. Unya nahinumdom ko nga nabasahan nako kaniadto Spaced Repetition.

Unsa kini ug unsa ang gikaon niini? Sa laktod, naa ni pagkalimot sa kurba, dugang nga kinutlo gikan sa Wikipedia:

Sulod na sa unang oras, hangtod sa 60% sa tanang impormasyon nga nadawat ang nakalimtan; 10 ka oras human sa pagsag-ulo, 35% sa nakat-onan nagpabilin sa memorya. Dayon ang proseso sa pagkalimot nagpadayon sa hinay-hinay, ug human sa 6 ka adlaw mga 20% sa kinatibuk-ang gidaghanon sa unang nakat-onan nga mga silaba nagpabilin sa panumduman, ug ang samang kantidad nagpabilin sa panumduman human sa usa ka bulan.

Ug ang konklusyon gikan dinhi

Ang mga konklusyon nga mahimong makuha base sa kini nga kurba mao nga alang sa epektibo nga pagsag-ulo gikinahanglan nga balikon ang gisag-ulo nga materyal.

Mao nga nakahunahuna kami gilay-on nga pagbalik-balik.

NKI usa ka hingpit nga libre ug bukas nga gigikanan nga programa nga nagpatuman sa ideya sa gilay-on nga pagbalik-balik. Sa yanong pagkasulti, ang mga computerized flash card adunay pangutana sa usa ka kilid ug tubag sa pikas. Tungod kay mahimo nimo ang mga pangutana / tubag gamit ang regular html/css/javascript, nan makaingon kita nga kini adunay tinuod nga walay kinutuban nga mga posibilidad. Dugang pa, kini mapalapad sa espesyal mga plugins, ug ang usa niini mahimong mapuslanon kaayo kanato sa umaabot.

Ang manwal nga paghimo og mga kard dugay, makakapoy, ug adunay taas nga posibilidad, pagkahuman sa usa ka panahon makalimtan nimo kini nga buluhaton, ug busa sa usa ka punto gipangutana nako ang akong kaugalingon sa pangutana, posible ba nga i-automate kini nga buluhaton. Ang tubag mao ang oo, mahimo nimo. Ug gibuhat ko kini. Isulti dayon nako, labi pa POC (Pagpamatuod sa konsepto), pero pwede gamiton. Kung adunay interes gikan sa mga tiggamit ug uban pang mga developer nga moapil, nan mahimo kini nga dad-on sa usa ka nahuman nga produkto nga bisan ang mga teknikal nga dili makamaong mobasa magamit sa mga tiggamit. Karon, ang paggamit sa akong utility nanginahanglan pipila ka kahibalo sa programming.

Nagbasa kog mga libro gamit ang programa AI Reader. Kini adunay katakus sa pagkonektar sa mga eksternal nga diksyonaryo, ug kung imong gihubad ang usa ka pulong, kini nagtipig sa pulong nga imong gitawag alang sa paghubad sa usa ka text file. Ang nahabilin mao ang paghubad niini nga mga pulong ug paghimo og mga ANKI card.

Sa sinugdan misulay ako sa paggamit sa paghubad Google Translate, Lingvo API ug uban pa. Apan ang mga butang wala molihok sa libre nga mga serbisyo. Gikapoy nako ang libre nga limitasyon sa panahon sa proseso sa pag-uswag, dugang pa, sumala sa mga termino sa lisensya, wala akoy katungod sa pag-cache sa mga pulong. Sa usa ka punto nakaamgo ko nga kinahanglan nakong hubaron ang mga pulong sa akong kaugalingon. Ingon nga resulta, usa ka module ang gisulat dsl2html nga mahimo nimong ikonektar Mga diksyonaryo sa DSL ug kinsay nakahibalo unsaon pag-convert kanila ngadto sa HTML format.

Kini ang hitsura sa usa ka entry sa diksyonaryo sa *.html, akong kapilian kumpara sa kapilian GoldenDict

Duha ka istorya kung giunsa ang ANKI makatabang kanimo nga makakat-on ug langyaw nga sinultian ug mangandam alang sa usa ka interbyu

Sa wala pa mangita sa usa ka pulong sa konektado nga mga diksyonaryo, gidala ko kini sa porma sa diksyonaryo (lemma) gamit ang librarya Stanford CoreNLP. Sa tinuud, tungod niini nga librarya, nagsugod ako pagsulat sa Java ug ang orihinal nga plano mao ang pagsulat sa tanan sa Java, apan sa proseso nakit-an nako ang librarya. node-java diin dali ra nimo ma-execute ang Java code gikan sa mga nodejs ug pipila sa mga code gisulat sa JavaScript. Kung nakit-an ko kini nga librarya sa sayo pa, wala’y usa ka linya nga gisulat sa Java. Ang laing proyekto sa kilid nga natawo sa proseso mao ang paghimo repository nga adunay dokumentasyon sa DSL nga nakit-an sa network sa format *.chm, nakabig ug gidala ngadto sa diosnong porma. Kung ang tagsulat sa orihinal nga file usa ka tiggamit pinaagi sa angga yozhic Sa dihang nakita niya kini nga artikulo, nagpasalamat ako kaniya pag-ayo sa iyang nahimo; kung wala ang iyang dokumentasyon, lagmit dili ako molampos.

Busa, naa koy pulong sa English, ang entry sa diksyonaryo niini sa format *.html, ang nahabilin mao ang paghiusa sa tanan, paghimo mga artikulo sa ANKI gikan sa lista sa mga pulong ug isulod kini sa database sa ANKI. Alang niini nga katuyoan ang mosunod nga proyekto gihimo data2anki. Mahimong magkuha usa ka lista sa mga pulong ingon input, paghubad, paghimo ANKI *.html mga artikulo ug irekord kini sa database sa ANKI. Sa katapusan sa artikulo adunay mga panudlo kung giunsa kini gamiton. Sa kasamtangan, ang ikaduhang istorya diin ang gilay-on nga mga pagbalik-balik mahimong mapuslanon.

Ang ikaduhang istorya.

Ang tanan nga mga tawo sa pagpangita sa usa ka labaw pa / dili kaayo kwalipikado nga espesyalidad, lakip na ang mga programmer, nag-atubang sa panginahanglan sa pag-andam alang sa usa ka interbyu. Daghan sa mga konsepto nga gipangutana sa mga interbyu nga wala nimo gigamit sa adlaw-adlaw nga praktis ug kini nakalimtan. Kung nangandam alang sa usa ka interbyu, pag-flip sa mga nota, usa ka libro, usa ka reperensya nga libro, nag-atubang ako sa kamatuoran nga kini nanginahanglan daghang oras ug atensyon aron maayag ang kasayuran nga nahibal-an na nimo tungod kay dili kini kanunay nga klaro ug kinahanglan nimo. basaha kini pag-ayo aron masabtan kung unsa kini. Kung moabut ka sa usa ka hilisgutan nga kinahanglan gayud nga balikon, kasagaran mahitabo nga ikaw gikapoy na ug ang kalidad sa imong pagpangandam nag-antus. Sa usa ka punto naghunahuna ko, nganong dili gamiton ang ANKI card alang niini usab? Pananglitan, sa pagkuha og mga nota sa usa ka hilisgutan, paghimo dayon og usa ka mubo nga sulat sa porma sa usa ka pangutana ug tubag, ug unya sa imong pag-usab niini, mahibal-an dayon nimo kung nahibal-an nimo ang tubag niini nga pangutana o wala.

Ang bugtong problema nga mitungha mao nga ang pag-type sa mga pangutana taas kaayo ug kapoy. Aron mapadali ang proseso, data2anki proyekto nga akong gidugang convert functionality markdown teksto sa ANKI cards. Ang tanan nga imong gikinahanglan mao ang pagsulat sa usa ka dako nga file diin ang mga pangutana ug mga tubag markahan sa usa ka gitino nang daan nga han-ay sa mga karakter, diin ang parser makasabut kung asa ang pangutana ug kung asa ang tubag.

Kung nahimo na kini nga file, gipadagan nimo ang data2anki ug nagmugna kini nga mga kard sa ANKI. Ang orihinal nga file dali nga i-edit ug ipaambit, kinahanglan nimo nga papason ang katugbang nga (mga) kard ug ipadagan pag-usab ang programa, ug usa ka bag-ong bersyon ang himuon.

Pag-instalar ug paggamit

  1. Pag-instalar sa ANKI + AnkiConnect

    1. I-download ang ANKI gikan dinhi: https://apps.ankiweb.net/
    2. I-install ang AnkiConnect plugin: https://ankiweb.net/shared/info/2055492159

  2. Pag-instalar data2anki

    1. Pag-download data2anki gikan sa github repository
      git clone https://github.com/anatoly314/data2anki
    2. I-install ang mga dependency
      cd data2anki && npm install
    3. Pag-download sa mga dependency sa java https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Pag-unpack jar-dependencies.zip ug ibutang ang sulod niini data2anki/java/jars

  3. Gamita sa paghubad sa mga pulong:

    1. Sa file data2anki/config.json:

      • sa yawe mode isulod ang bili dsl2anki

      • sa yawe modules.dsl.anki.deckName ΠΈ modules.dsl.anki.modelName isulat sumala niana Ngalan sa Deck ΠΈ Model Ngalan (Kinahanglang nahimo na sa dili pa maghimo og mga kard). Sa pagkakaron ang matang sa modelo lamang ang gisuportahan Basic:

        Adunay Front ug Back field, ug maghimo ug usa ka card. Ang teksto nga imong gisulod sa Atubangan makita sa atubangan sa kard, ug ang teksto nga imong gisulod sa Likod makita sa likod sa kard.

        asa ang orihinal nga pulong? Natad sa atubangan, ug ang hubad anaa sa Natad sa likod.

        Walay problema sa pagdugang sa suporta Basic (ug gibaliktad nga kard), diin ang usa ka reverse card pagabuhaton alang sa pulong ug paghubad, diin base sa hubad kinahanglan nimong hinumdoman ang orihinal nga pulong. Ang imong gikinahanglan mao ang panahon ug tinguha.

      • sa yawe modules.dsl.dictionariesPath magparehistro og array nga adunay konektado *.dsl mga diksyonaryo. Ang matag konektado nga diksyonaryo usa ka direktoryo diin ang mga file sa diksyonaryo nahimutang uyon sa format: Ang istruktura sa diksyonaryo sa DSL

      • sa yawe modules.dsl.wordToTranslatePath pagsulod sa dalan sa lista sa mga pulong nga gusto nimong hubaron.

    2. Ilunsad ang aplikasyon sa ANKI nga nagdagan
      node data2ankiindex.js
    3. GANTOS!!!

  4. Gigamit alang sa paghimo og mga kard gikan sa markdown

    1. Sa file data2anki/config.json:

      • sa yawe mode isulod ang bili markdown2anki
      • sa yawe modules.markdown.anki.deckName ΠΈ modules.dsl.anki.modelName isulat sumala niana Ngalan sa Deck ΠΈ Model Ngalan (Kinahanglang nahimo na sa dili pa maghimo og mga kard). Kay markdown2anki mode lamang nga matang sa modelo ang gisuportahan Basic.
      • sa yawe modules.markdown.selectors.startQuestionSelectors ΠΈ modules.markdown.selectors.startAnswerSelectors nagsulat ka og mga tigpili diin imong markahan ang sinugdanan sa pangutana ug tubag, matag usa. Ang linya nga adunay tigpili mismo dili ma-parse ug dili matapos sa kard; ang parser magsugod sa pagtrabaho gikan sa sunod nga linya.

        Pananglitan, kini nga pangutana/tubag nga kard:

        Duha ka istorya kung giunsa ang ANKI makatabang kanimo nga makakat-on ug langyaw nga sinultian ug mangandam alang sa usa ka interbyu

        Kini tan-awon sama niini sa markdown:
        #PANGUTANA# ## Pangutana 5. Pagsulat ug mul function nga mogana sa saktong paagi kung gisangpit sa mosunod nga syntax. ```javascript console.log(mul(2)(3)(4)); // output : 24 console.log(mul(4)(3)(4)); // output : 48 ``` #TUBAG# Sa ubos mao ang code nga gisundan sa katin-awan kung giunsa kini paglihok: ```javascript function mul (x) { return function (y) { // anonymous function return function (z) { // anonymous function pagbalik x * y * z; }; }; } ``` Dinhi ang `mul` function modawat sa unang argumento ug ibalik ang anonymous function nga mokuha sa ikaduhang parameter ug ibalik ang anonymous function nga mokuha sa ikatulo nga parameter ug ibalik ang multiplication sa argumento nga gipasa sa sunodsunod Sa Javascript function nga gipasabot sa sulod adunay access sa outer function variable ug ang function mao ang una nga klase nga butang aron mahimo usab kini ibalik sa function ug ipasa ingon usa ka argumento sa lain nga function. - Ang usa ka function usa ka pananglitan sa tipo sa butang - Ang usa ka function mahimong adunay mga kabtangan ug adunay usa ka link balik sa pamaagi sa pagtukod niini - Ang usa ka function mahimong tipigan ingon variable - Ang usa ka function mahimong ipasa ingon usa ka parameter sa lain nga function - Ang usa ka function mahimo mibalik gikan sa laing function
        

        Pananglitan nga gikuha gikan dinhi: 123-JavaScript-Interbyo-Mga Pangutana

        Adunay usab usa ka file nga adunay mga pananglitan sa folder sa proyekto examples/markdown2anki-example.md

      • sa yawe modules.markdown.pathToFile
        isulat ang dalan sa file diin *.md pangutana/tubag nga file

    2. Ilunsad ang aplikasyon sa ANKI nga nagdagan
      node data2ankiindex.js
    3. GANTOS!!!

Kini ang hitsura sa usa ka mobile phone:

resulta

Ang mga kard nga nadawat sa desktop nga bersyon sa ANKI gi-synchronize nga wala’y mga problema sa ANKI nga panganod (libre hangtod sa 100mb), ug pagkahuman magamit nimo kini bisan diin. Adunay mga kliyente alang sa Android ug iPhone, ug mahimo usab nimo kini gamiton sa usa ka browser. Ingon usa ka sangputanan, kung adunay ka oras nga wala ka’y gasto, imbis nga wala’y katuyoan nga pag-scroll sa Facebook o mga iring sa Instagram, makakat-on ka usa ka bag-o.

Epilogo

Sama sa akong nahisgutan, kini usa ka nagtrabaho nga POC nga mahimo nimong gamiton kaysa usa ka nahuman nga produkto. Mga 30% sa DSL parser standard wala gipatuman, ug busa, pananglitan, dili tanang mga entry sa diksyonaryo nga anaa sa mga diksyonaryo makita, adunay ideya usab nga isulat kini pag-usab JavaScript, tungod kay gusto nako ang "pagkamakanunayon", ug labut pa, karon wala kini gisulat nga maayo kaayo. Karon ang parser nagtukod og usa ka kahoy, apan sa akong opinyon kini dili kinahanglan ug dili kinahanglan nga komplikado ang code. SA markdown2anki mode, ang mga hulagway wala ma-parse. Paningkamutan nako nga putlon sa hinay-hinay, apan tungod kay ako nagsulat alang sa akong kaugalingon, una sa tanan akong sulbaron ang mga problema nga ako mismo ang motunob, apan kung adunay gusto nga motabang, mahimo ka nga malipay. Kung adunay ka mga pangutana bahin sa programa, malipay ako nga motabang pinaagi sa bukas nga mga isyu sa mga may kalabotan nga proyekto. Isulat ang ubang mga pagsaway ug mga sugyot dinhi. Nanghinaut ko nga kini nga proyekto mahimong mapuslanon sa usa ka tawo.

PS Kung namatikdan nimo ang bisan unsang mga sayup (ug, sa walay palad, adunay pipila), pagsulat kanako sa usa ka personal nga mensahe, akong tul-iron ang tanan.

Source: www.habr.com

Idugang sa usa ka comment