Divi stāsti par to, kā ANKI var palÄ«dzēt apgÅ«t sveÅ”valodu un sagatavoties intervijām

Es vienmēr uzskatÄ«ju, ka slinks programmētājs ir labs programmētājs. Kāpēc? Jo palÅ«dziet čaklam kaut ko izdarÄ«t, viņŔ ies un izdarÄ«s. Un slinks programmētājs pavadÄ«s 2-3 reizes vairāk laika, bet uzrakstÄ«s skriptu, kas to izdarÄ«s viņa vietā. Pirmajā reizē tas var aizņemt nepamatoti ilgu laiku, taču, veicot atkārtotus uzdevumus, Ŕī pieeja atmaksāsies ļoti ātri. Es sevi uzskatu par slinku programmētāju. Tāda bija preambula, tagad Ä·ersimies pie lietas.

Stāsts viens

Pirms dažiem gadiem es domāju, kā es varētu uzlabot savu angļu valodu. Nekas labāks nenāca prātā par literatÅ«ras lasīŔanu. Es iegādājos elektronisko lasÄ«tāju, lejupielādēju grāmatas un sāku lasÄ«t. Lasot man visu laiku uznāca nepazÄ«stami vārdi. Es uzreiz tos iztulkoju, izmantojot lasÄ«tājā iebÅ«vētās vārdnÄ«cas, taču pamanÄ«ju vienu iezÄ«mi: vārdus negribēja atcerēties. Kad pēc dažām lappusēm es atkal satiku Å”o vārdu, ar 90% varbÅ«tÄ«bu, man atkal bija vajadzÄ«gs tulkojums, un tas notika katru reizi. Secinājums bija tāds, ka nepietiek vienkārÅ”i iztulkot nepazÄ«stamus vārdus lasot, vajag darÄ«t kaut ko citu. Ideāls variants bÅ«tu to ieviest ikdienā un sākt lietot, bet es nedzÄ«voju angliski runājoŔā valstÄ« un tas ir maz ticams. Tad es atcerējos, ka kādreiz lasÄ«ju par Atkārtojums ar intervālu.

Kas tas ir un ar ko to ēd? ÄŖsāk sakot, tas ir aizmirstÄ«bas lÄ«kne, papildu citāts no Wikipedia:

Jau pirmās stundas laikā tiek aizmirsti lÄ«dz 60% no visas saņemtās informācijas, 10 stundas pēc iegaumēŔanas atmiņā paliek 35% no uzzinātā. Tad aizmirstÄ«bas process norit lēni, un pēc 6 dienām atmiņā paliek aptuveni 20% no sākotnēji apgÅ«to zilbju kopskaita, un tikpat daudz paliek atmiņā arÄ« pēc mēneÅ”a.

Un secinājums no Ŕejienes

Pamatojoties uz Å”o lÄ«kni, var izdarÄ«t secinājumus, ka efektÄ«vai iegaumēŔanai ir nepiecieÅ”ams atkārtot iegaumēto materiālu.

Tāpēc mums radās ideja periodisks atkārtojums.

АNKI ir pilnÄ«gi bezmaksas un atvērtā koda programma, kas Ä«steno ideju par atkārtoÅ”anos. VienkārÅ”i sakot, datorizētajām zibatmiņas kartēm vienā pusē ir jautājums, bet otrā – atbilde. Tā kā jÅ«s varat uzdot jautājumus/atbildes, izmantojot parasto html/css/javascript, tad mēs varam teikt, ka tam ir patiesi neierobežotas iespējas. Turklāt tas ir paplaÅ”ināms ar Ä«paÅ”u spraudņi, un viens no tiem mums ļoti noderēs nākotnē.

Manuāla kartīŔu izveide ir gara, apnicÄ«ga un ar lielu varbÅ«tÄ«bu pēc kāda laika par Å”o uzdevumu aizmirsÄ«si, un tāpēc kādā brÄ«dÄ« uzdevu sev jautājumu, vai ir iespējams Å”o uzdevumu automatizēt. Atbilde ir jā, jÅ«s varat. Un es to izdarÄ«ju. Es teikÅ”u uzreiz, tas ir vairāk POC (koncepcijas pierādÄ«jums), bet ko var izmantot. Ja ir interese no lietotājiem un iesaistās citi izstrādātāji, tad to var novest lÄ«dz gatavam produktam, ko var izmantot pat tehniski analfabēti lietotāji. Tagad, lai izmantotu manu utilÄ«tu, ir vajadzÄ«gas dažas programmēŔanas zināŔanas.

Es lasu grāmatas, izmantojot programmu AI lasÄ«tājs. Tam ir iespēja savienot ārējās vārdnÄ«cas, un, tulkojot vārdu, tas saglabā tulkoÅ”anai izsaukto vārdu teksta failā. Atliek tikai iztulkot Å”os vārdus un izveidot ANKI kartes.

Sākumā mēģināju izmantot tulkoÅ”anai Google tulkotājs, Lingvo API utt. Taču ar bezmaksas pakalpojumiem viss neizdevās. Izstrādes procesā izsmēlu bezmaksas limitu, turklāt saskaņā ar licences nosacÄ«jumiem man nebija tiesÄ«bu glabāt vārdus keÅ”atmiņā. Kādā brÄ«dÄ« sapratu, ka man paÅ”am jātulko vārdi. Rezultātā tika uzrakstÄ«ts modulis dsl2html ar kuru jÅ«s varat izveidot savienojumu DSL vārdnÄ«cas un kurÅ” zina, kā tos pārvērst par HTML formātā.

Šādi izskatās vārdnīcas ieraksts *. Html, mans variants salīdzinājumā ar opciju GoldenDict

Divi stāsti par to, kā ANKI var palÄ«dzēt apgÅ«t sveÅ”valodu un sagatavoties intervijām

Pirms meklēt vārdu saistÄ«tajās vārdnÄ«cās, es to nogādāju vārdnÄ«cas forma (lemma) izmantojot bibliotēku Stenfordas CoreNLP. PatiesÄ«bā Ŕīs bibliotēkas dēļ es sāku rakstÄ«t Java un sākotnējais plāns bija visu rakstÄ«t Java, bet Å”ajā procesā es atradu bibliotēku mezgls-java ar kuru var salÄ«dzinoÅ”i viegli izpildÄ«t Java kodu no nodejs un daļa koda ir rakstÄ«ta JavaScript. Ja es Å”o bibliotēku bÅ«tu atradis agrāk, Java valodā nebÅ«tu rakstÄ«ta neviena rindiņa. Vēl viens blakus projekts, kas dzima procesā, ir radīŔana repozitorijs ar DSL dokumentāciju kas tika atrasts tÄ«klā formātā *.chm, pārveidots un pieņemts dieviŔķā formā. Ja oriÄ£inālā faila autors ir lietotājs pēc segvārda jozhic Kad viņŔ ierauga Å”o rakstu, es viņam ļoti pateicos par paveikto darbu; bez viņa dokumentācijas man, visticamāk, tas nebÅ«tu izdevies.

Tātad, man ir vārds angļu valodā, tā vārdnÄ«cas ieraksts formātā *. Html, atliek vien visu salikt, izveidot ANKI rakstus no vārdu saraksta un ievadÄ«t ANKI datubāzē. Å im nolÅ«kam tika izveidots Ŕāds projekts data2anki. Tas var izmantot vārdu sarakstu kā ievadi, tulkot, izveidot ANKI *. Html rakstus un ierakstÄ«t tos ANKI datubāzē. Raksta beigās ir norādÄ«jumi par tā lietoÅ”anu. Tikmēr otrajā stāstā var bÅ«t noderÄ«gi atkārtojumi ar intervālu.

Otrais stāsts.

Visi cilvēki, kuri meklē vairāk/mazāk kvalificētu specialitāti, tostarp programmētāji, saskaras ar nepiecieÅ”amÄ«bu sagatavoties intervijai. Daudzus intervijās uzdotos jēdzienus jÅ«s ikdienā neizmantojat un tie tiek aizmirsti. Gatavojoties intervijai, Ŕķirstot pierakstus, grāmatu, uzziņu grāmatu, saskāros ar to, ka ir nepiecieÅ”ams daudz laika un uzmanÄ«bas, lai izsijātu jau zināmo informāciju, jo tā ne vienmēr ir acÄ«mredzama un ir uzmanÄ«gi izlasiet, lai saprastu, kas tas ir. nav nozÄ«mes. Nonākot pie tēmas, kas tieŔām jāatkārto, nereti gadās, ka esi jau noguris un cieÅ” sagatavoÅ”anās kvalitāte. Kādā brÄ«dÄ« es domāju, kāpēc gan neizmantot ANKI kartes arÄ« Å”im? Piemēram, veicot piezÄ«mes par tēmu, nekavējoties izveido piezÄ«mi jautājuma un atbildes formā, un tad, to atkārtojot, uzreiz zināsi, vai zini atbildi uz Å”o jautājumu vai nē.

VienÄ«gā problēma, kas radās, bija tā, ka jautājumu rakstīŔana bija ļoti ilga un nogurdinoÅ”a. Lai atvieglotu procesu, data2anki projektam pievienoju konvertēŔanas funkcionalitāti samazinājums teksts ANKI kartēs. NepiecieÅ”ams tikai uzrakstÄ«t vienu lielu failu, kurā jautājumi un atbildes tiks atzÄ«mētas ar iepriekÅ” noteiktu rakstzÄ«mju secÄ«bu, pēc kuras analizētājs sapratÄ«s, kur ir jautājums un kur ir atbilde.

Kad Å”is fails ir izveidots, palaižat data2anki, un tas izveido ANKI kartes. Sākotnējo failu ir viegli rediģēt un kopÄ«got, jums vienkārÅ”i jāizdzēŔ atbilstoŔā(-s) karte(-es) un vēlreiz jāpalaiž programma, un tiks izveidota jauna versija.

UzstādīŔana un lietoŔana

  1. ANKI + AnkiConnect instalēŔana

    1. Lejupielādējiet ANKI no Å”ejienes: https://apps.ankiweb.net/
    2. Instalējiet AnkiConnect spraudni: https://ankiweb.net/shared/info/2055492159

  2. UzstādīŔana data2anki

    1. Lejupielādēt data2anki no github repozitorija
      git clone https://github.com/anatoly314/data2anki
    2. Instalējiet atkarības
      cd data2anki && npm install
    3. Lejupielādēt java atkarības https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. IzpakoŔana jar-dependencies.zip un ievietojiet tā saturu data2anki/java/jars

  3. Izmantojiet, lai tulkotu vārdus:

    1. Failā data2anki/config.json:

      • atslēgā mode ievadiet vērtÄ«bu dsl2anki

      • atslēgā modules.dsl.anki.deckName Šø modules.dsl.anki.modelName rakstiet attiecÄ«gi Klāja nosaukums Šø Modeļa nosaukums (jāizveido jau pirms kartīŔu izveides). PaÅ”laik tiek atbalstÄ«ts tikai modeļa veids pamata:

        Ir priekŔējie un aizmugurējie lauki, un tiks izveidota viena kartÄ«te. Teksts, ko ievadāt priekŔā, tiks parādÄ«ts kartÄ«tes priekÅ”pusē, un teksts, ko ievadāt aizmugurē, tiks parādÄ«ts kartes aizmugurē.

        kur ir oriÄ£inālais vārds? PriekŔējais lauks, un tulkojums bÅ«s pieejams Aizmugurējais lauks.

        Nav problēmu pievienot atbalstu Pamata (un apgrieztā karte), kur vārdam un tulkojumam tiks izveidota apgrieztā kartÄ«te, kur, pamatojoties uz tulkojumu, bÅ«s jāatceras oriÄ£inālais vārds. Viss, kas jums nepiecieÅ”ams, ir laiks un vēlme.

      • atslēgā modules.dsl.dictionariesPath reÄ£istrēt masÄ«vu ar savienotu *.dsl vārdnÄ«cas. Katra pievienotā vārdnÄ«ca ir direktorijs, kurā atrodas vārdnÄ«cas faili atbilstoÅ”i formātam: DSL vārdnÄ«cas struktÅ«ra

      • atslēgā modules.dsl.wordToTranslatePath ievadiet ceļu uz to vārdu sarakstu, kurus vēlaties tulkot.

    2. Palaidiet, kad darbojas ANKI lietojumprogramma
      node data2ankiindex.js
    3. PEĻŅA!!!

  4. Izmanto karŔu izveidoŔanai no atzīmes

    1. Failā data2anki/config.json:

      • atslēgā mode ievadiet vērtÄ«bu markdown2anki
      • atslēgā modules.markdown.anki.deckName Šø modules.dsl.anki.modelName rakstiet attiecÄ«gi Klāja nosaukums Šø Modeļa nosaukums (jāizveido jau pirms kartīŔu izveides). PriekÅ” markdown2anki režīmā tiek atbalstÄ«ts tikai modeļa veids pamata.
      • atslēgā modules.markdown.selectors.startQuestionSelectors Šø modules.markdown.selectors.startAnswerSelectors tu raksti selektorus, ar kuriem atzÄ«mē attiecÄ«gi jautājuma un atbildes sākumu. Rinda ar atlasÄ«tāju netiks parsēta un nenonāks kartē; parsētājs sāks darboties no nākamās rindas.

        Piemēram, Ŕī jautājumu/atbilžu kartÄ«te:

        Divi stāsti par to, kā ANKI var palÄ«dzēt apgÅ«t sveÅ”valodu un sagatavoties intervijām

        Tas izskatīsies Ŕādi:
        #QUESTION# ## 5. jautājums. Uzrakstiet mul funkciju, kas darbosies pareizi, ja to izsauc ar Ŕādu sintaksi. ``` javascript console.log(mul(2)(3)(4)); // izvade : 24 console.log(mul(4)(3)(4)); // izvade : 48 ``` #ANSWER# Tālāk ir kods, kam seko tā darbÄ«bas skaidrojums: ```javascript function mul (x) { return function (y) { // anonymous function return function (z) { // anonÄ«ma funkcija return x * y * z; }; }; } ``` Å eit funkcija `mul` pieņem pirmo argumentu un atgriež anonÄ«mo funkciju, kas ņem otro parametru un atgriež anonÄ«mo funkciju, kas ņem treÅ”o parametru un atgriež argumentu reizinājumu, kas tiek nodota secÄ«gā definētajā Javascript funkcijā iekŔā ir piekļuve ārējam funkcijas mainÄ«gajam, un funkcija ir pirmās klases objekts, tāpēc funkcija to var arÄ« atgriezt un nodot kā argumentu citā funkcijā. - Funkcija ir objekta tipa eksemplārs - Funkcijai var bÅ«t Ä«paŔības un tai ir saite atpakaļ uz tās konstruktora metodi - Funkciju var saglabāt kā mainÄ«go - Funkciju var nodot kā parametru citai funkcijai - Funkcija var bÅ«t atgriezās no citas funkcijas
        

        Piemērs ņemts no Å”ejienes: 123-JavaScript-Intervija-Jautājumi

        Projekta mapē ir arī fails ar piemēriem examples/markdown2anki-example.md

      • atslēgā modules.markdown.pathToFile
        pierakstiet ceļu uz failu, kur *.md jautājumu/atbilžu fails

    2. Palaidiet, kad darbojas ANKI lietojumprogramma
      node data2ankiindex.js
    3. PEĻŅA!!!

Lūk, kā tas izskatās mobilajā tālrunī:

Play video

Piedzīvojiet efektīvu rezultātu spēku

ŠŸŠ¾Š»ŃƒŃ‡ŠµŠ½Š½Ń‹Šµ на desktop версии ANKI карточки без проблем ŃŠøŠ½Ń…Ń€Š¾Š½ŠøŠ·ŠøŃ€ŃƒŃŽŃ‚ŃŃ с ANKI облаком (бесплатно Го 100mb), а Гальше вы можете ŠæŠ¾Š»ŃŒŠ·Š¾Š²Š°Ń‚ŃŒŃŃ ими уже везГе. Š•ŃŃ‚ŃŒ клиенты поГ Android Šø iPhone, также можно ŠæŠ¾Š»ŃŒŠ·Š¾Š²Š°Ń‚ŃŒŃŃ Šø в Š±Ń€Š°ŃƒŠ·ŠµŃ€Šµ. Š’ Ń€ŠµŠ·ŃƒŠ»ŃŒŃ‚Š°Ń‚Šµ, если у вас ŠµŃŃ‚ŃŒ Š²Ń€ŠµŠ¼Ń, которое не на что ŠæŠ¾Ń‚Ń€Š°Ń‚ŠøŃ‚ŃŒ, то вместо того, чтобы Š±ŠµŃŃ†ŠµŠ»ŃŒŠ½Š¾ ŠæŃ€Š¾Š»ŠøŃŃ‚Ń‹Š²Š°Ń‚ŃŒ Ń„ŠµŠ¹ŃŠ±ŃƒŠŗ или котиков в инстаграм, можно ŃƒŃ‡ŠøŃ‚ŃŒ что-то новое.

Epilogs

Kā jau minēju, tas ir vairāk darba POC, ko varat izmantot, nevis gatavs produkts. Apmēram 30% no DSL parsētāja standarta nav ieviesti, un tāpēc piemēram, nevar atrast visus vārdnÄ«cās esoÅ”os vārdnÄ«cu ierakstus, ir arÄ« doma to pārrakstÄ«t JavaScript, jo es gribu ā€œkonsekvenciā€, turklāt tagad tas nav uzrakstÄ«ts Ä«paÅ”i optimāli. Tagad parsētājs bÅ«vē koku, bet, manuprāt, tas ir lieki un nevajag sarežģīt kodu. IN markdown2anki režīmā attēli netiek parsēti. MēģināŔu griezt pamazām, bet tā kā rakstu priekÅ” sevis, tad pirmām kārtām risināŔu tās problēmas uz kurām pati uzkāpÅ”u, bet ja kāds vēlas palÄ«dzēt, laipni lÅ«gts. Ja jums ir jautājumi par programmu, es ar prieku palÄ«dzēŔu atrisināt jautājumus attiecÄ«gajos projektos. Rakstiet Å”eit citu kritiku un ieteikumus. Ceru, ka kādam Å”is projekts noderēs.

PS Ja pamanāt kādas kļūdas (un diemžēl tādas ir), rakstiet man personÄ«gi, visu izlaboÅ”u.

Avots: www.habr.com

Iegādājieties uzticamu mitināŔanu vietnēm ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa vietņu mitināŔanu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster