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 .
Kas tas ir un ar ko to Äd? ÄŖsÄk sakot, tas ir , 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 .
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 , 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 , 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 . 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 , 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 ar kuru jÅ«s varat izveidot savienojumu 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

Pirms meklÄt vÄrdu saistÄ«tajÄs vÄrdnÄ«cÄs, es to nogÄdÄju izmantojot bibliotÄku . 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 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 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 . 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, projektam pievienoju konvertÄÅ”anas funkcionalitÄti 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
ANKI + AnkiConnect instalÄÅ”ana
- LejupielÄdÄjiet ANKI no Å”ejienes:
- InstalÄjiet AnkiConnect spraudni:
UzstÄdīŔana
- LejupielÄdÄt no github repozitorija
git clone https://github.com/anatoly314/data2anki - InstalÄjiet atkarÄ«bas
cd data2anki && npm install - LejupielÄdÄt java atkarÄ«bas
- IzpakoÅ”ana jar-dependencies.zip un ievietojiet tÄ saturu data2anki/java/jars
- LejupielÄdÄt no github repozitorija
Izmantojiet, lai tulkotu vÄrdus:
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 Šø (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:
atslÄgÄ modules.dsl.wordToTranslatePath ievadiet ceļu uz to vÄrdu sarakstu, kurus vÄlaties tulkot.
- Palaidiet, kad darbojas ANKI lietojumprogramma
node data2ankiindex.js - PEĻŠA!!!
Izmanto karŔu izveidoŔanai no atzīmes
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 Šø (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:

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 funkcijasPiemÄrs Åemts no Å”ejienes:
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
- Palaidiet, kad darbojas ANKI lietojumprogramma
node data2ankiindex.js - PEĻŠA!!!
LÅ«k, kÄ tas izskatÄs mobilajÄ tÄlrunÄ«:

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 , 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

