ProHoster > Blogs > interneta ziÅas > Divi stÄsti par to, kÄ ANKI var palÄ«dzÄt apgÅ«t sveÅ”valodu un sagatavoties intervijÄm
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
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.
IzpakoÅ”ana jar-dependencies.zip un ievietojiet tÄ saturu data2anki/java/jars
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 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.
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 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:
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
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
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.