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ī:

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

Kartes, kas saņemtas ANKI darbvirsmas versijā, bez problēmām tiek sinhronizētas ar ANKI mākoni (bezmaksas līdz 100 mb), un pēc tam varat tās izmantot visur. Ir klienti operētājsistēmai Android un iPhone, un to var izmantot arī pārlūkprogrammā. Rezultātā, ja tev ir laiks, kuram nav ko tērēt, tad tā vietā, lai bezmērķīgi scrollītos pa Facebook vai kaķiem Instagram, vari uzzināt ko jaunu.

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

Pievieno komentāru