{"id":34845,"date":"2019-10-31T22:00:43","date_gmt":"2019-10-31T19:00:43","guid":{"rendered":"https:\/\/prohoster.info\/blog\/dve-istorii-kak-anki-mozhet-vam-pomoch-vyuchit-inostrannyj-yazyk-i-podgotovitsya-k-intervyu\/"},"modified":"2019-10-31T22:00:43","modified_gmt":"2019-10-31T19:00:43","slug":"dve-istorii-kak-anki-mozhet-vam-pomoch-vyuchit-inostrannyj-yazyk-i-podgotovitsya-k-intervyu","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/dve-istorii-kak-anki-mozhet-vam-pomoch-vyuchit-inostrannyj-yazyk-i-podgotovitsya-k-intervyu","title":{"rendered":"Dou\u0103 pove\u0219ti despre cum ANKI te poate ajuta s\u0103 \u00eenve\u021bi o limb\u0103 str\u0103in\u0103 \u0219i s\u0103 te preg\u0103te\u0219ti pentru un interviu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Am considerat \u00eentotdeauna c\u0103 un programator lene\u0219 este un programator bun. De ce? Pentru c\u0103, dac\u0103 rogi un programator muncitor s\u0103 fac\u0103 ceva, el va merge \u0219i va face. Iar un programator lene\u0219 va cheltui de 2-3 ori mai mult timp, dar va scrie un script care va face acest lucru \u00een locul s\u0103u. Poate c\u0103 la prima utilizare s-ar putea s\u0103 se piard\u0103 o cantitate nejustificat\u0103 de timp, dar, \u00een cazul sarcinilor repetitive, aceast\u0103 abordare se amortizeaz\u0103 foarte repede. M\u0103 consider un programator lene\u0219. Aceasta a fost o introducere, iar acum s\u0103 trecem la subiect. <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h2 id=\"istoriya-pervaya\">Povestea \u00eent\u00e2i<\/h2>\n<p><\/p>\n<p>Acum c\u00e2\u021biva ani m-am g\u00e2ndit cum a\u0219 putea s\u0103 \u00eemi \u00eembun\u0103t\u0103\u021besc limba englez\u0103. Nimic mai bun dec\u00e2t citirea literaturii nu mi-a venit \u00een minte. Am achizi\u021bionat un e-reader, am desc\u0103rcat c\u0103r\u021bi \u0219i am \u00eenceput s\u0103 citesc. \u00cen timpul lecturii, \u00eent\u00e2lneam constant cuvinte necunoscute. Le traduceam imediat cu ajutorul dic\u021bionarelor integrate \u00een e-reader, dar am observat o particularitate: cuvintele nu voiau s\u0103 se memoreze. C\u00e2nd \u00eent\u00e2lneam acela\u0219i cuv\u00e2nt dup\u0103 c\u00e2teva pagini, aveam cu 90% \u0219anse s\u0103 am din nou nevoie de traducere, \u0219i a\u0219a de fiecare dat\u0103. Se impunea concluzia c\u0103 nu este suficient doar s\u0103 traduc cuvintele necunoscute \u00een timpul lecturii, trebuie s\u0103 faci ceva \u00een plus. Varianta ideal\u0103 ar fi fost s\u0103 le introduc \u00een uz \u0219i s\u0103 \u00eencep s\u0103 le folosesc, dar nu locuiesc \u00eentr-o \u021bar\u0103 vorbitoare de englez\u0103 \u0219i acest lucru este pu\u021bin posibil. Atunci mi-am amintit c\u0103 odat\u0103 am citit despre <noindex>Repeti\u021bii intercalate<\/noindex>.<\/p>\n<p><\/p>\n<p>Ce este asta \u0219i cu ce se m\u0103n\u00e2nc\u0103? Pe scurt, exist\u0103 a\u0219a-numita <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D1%80%D0%B8%D0%B2%D0%B0%D1%8F_%D0%B7%D0%B0%D0%B1%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F\">curb\u0103 a uit\u0103rii<\/a><\/noindex>, urmeaz\u0103 o citare din Wikipedia:<\/p>\n<p><\/p>\n<blockquote><p>\u00cen primele ore se uit\u0103 p\u00e2n\u0103 la 60% din informa\u021bia ob\u021binut\u0103, iar dup\u0103 10 ore de \u00eenv\u0103\u021bare, \u00een memorie r\u0103m\u00e2ne 35% din ceea ce a fost studiat. Ulterior, procesul uit\u0103rii se desf\u0103\u0219oar\u0103 lent, iar dup\u0103 6 zile \u00een memorie r\u0103m\u00e2n aproximativ 20% din totalul silabelor \u00eenv\u0103\u021bate ini\u021bial, aceea\u0219i propor\u021bie r\u0103m\u00e2n\u00e2nd \u00een memorie \u0219i dup\u0103 o lun\u0103.<\/p><\/blockquote>\n<p>\u0218i concluzia de aici <\/p>\n<p><\/p>\n<blockquote><p>Concluziile care pot fi f\u0103cute pe baza acestei curbe sunt c\u0103 pentru a memora eficient, este necesar\u0103 repetarea materialului \u00eenv\u0103\u021bat.<\/p><\/blockquote>\n<p>Iat\u0103 c\u0103 am ajuns la ideea <noindex>repeti\u021biei intercalate<\/noindex>.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/\">ANki<\/a><\/noindex> aceasta este o program\u0103 complet gratuit\u0103 \u0219i open-source, care implementeaz\u0103 ideea repet\u0103rii intervalice. Pe scurt, carduri flash informatizate, pe o parte este \u00eentrebarea, pe cealalt\u0103 partea este r\u0103spunsul. Deoarece po\u021bi crea \u00eentreb\u0103ri\/r\u0103spunsuri folosind obi\u0219nuitul <em>html\/css\/javascript<\/em>, se poate spune c\u0103 are \u00eentr-adev\u0103r posibilit\u0103\u021bi nelimitate. \u00cen plus, este extins\u0103 prin intermediul unor <noindex><a rel=\"nofollow\" href=\"https:\/\/ankiweb.net\/shared\/addons\/\">pluginuri<\/a><\/noindex>, iar unul dintre ele ne va fi de mare ajutor mai departe.<\/p>\n<p><\/p>\n<p>Crearea manual\u0103 a cardurilor este lent\u0103, plictisitoare \u0219i cu o mare probabilitate, dup\u0103 un timp, vei abandona acest lucru, a\u0219a c\u0103 \u00eentr-un anumit moment m-am \u00eentrebat dac\u0103 se poate automatiza aceast\u0103 activitate. R\u0103spunsul este da, se poate. \u0218i eu am realizat asta. Voi spune din start c\u0103 este mai mult <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Proof_of_concept\">POC (Proof of concept)<\/a><\/noindex>, dar utilizabil. Dac\u0103 va exista interes din partea utilizatorilor \u0219i al\u021bi dezvoltatori se vor al\u0103tura, atunci se poate dezvolta p\u00e2n\u0103 la un produs final, pe care s\u0103-l poat\u0103 folosi chiar \u0219i utilizatorii f\u0103r\u0103 cuno\u0219tin\u021be tehnice. \u00cen prezent, utilizarea utilit\u0103\u021bii mele presupune anumite cuno\u0219tin\u021be de programare.<\/p>\n<p><\/p>\n<p>Eu citesc c\u0103r\u021bi folosind programul <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.neverland.alreader&amp;hl=en\">AIReader<\/a><\/noindex>. Are capacitatea de a conecta dic\u021bionare externe \u0219i, de asemenea, \u00een timpul traducerii unui cuv\u00e2nt, salveaz\u0103 cuv\u00e2ntul pentru care ai solicitat traducerea, \u00eentr-un fi\u0219ier text. R\u0103m\u00e2ne s\u0103 traduc aceste cuvinte \u0219i s\u0103 creez carduri ANKI.<\/p>\n<p><\/p>\n<p>La \u00eenceput am \u00eencercat s\u0103 folosesc pentru traducere <noindex><a rel=\"nofollow\" href=\"https:\/\/translate.google.com\/\">Google Translate<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.lingvolive.com\/en-us\">Lingvo API<\/a><\/noindex> etc. Dar cu serviciile gratuite lucrurile nu au func\u021bionat. Limita gratuit\u0103 am epuizat-o \u00eenc\u0103 \u00een timpul dezvolt\u0103rii, iar \u00een plus, conform termenilor licen\u021bei, nu aveam voie s\u0103 cachez cuvintele. La un moment dat, am realizat c\u0103 trebuie s\u0103 traduc cuvintele eu \u00eensumi. \u00cen cele din urm\u0103, a fost scris un modul <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/dsl2html\">dsl2html<\/a><\/noindex> la care se pot conecta <noindex><a rel=\"nofollow\" href=\"http:\/\/lingvo.helpmax.net\/en\/troubleshooting\/dsl-compiler\/dsl-dictionary-structure\/\">dic\u021bionare DSL<\/a><\/noindex> \u0219i care poate s\u0103 le converteasc\u0103 \u00een <em>HTML<\/em> format. <\/p>\n<p><\/p>\n<p>Iat\u0103 cum arat\u0103 un articol de dic\u021bionar \u00een *<em>.html<\/em>, varianta mea \u00een compara\u021bie cu varianta <noindex><a rel=\"nofollow\" href=\"http:\/\/goldendict.org\/\">GoldenDict<\/a><\/noindex><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Dou\u0103 pove\u0219ti despre cum ANKI te poate ajuta s\u0103 \u00eenve\u021bi o limb\u0103 str\u0103in\u0103 \u0219i s\u0103 te preg\u0103te\u0219ti pentru un interviu\" src=\"\/wp-content\/uploads\/2019\/06\/98317e694331c5764fe890827d59e3b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cenainte de a c\u0103uta cuv\u00e2ntul \u00een dic\u021bionarele conectate, \u00eel aduc \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9B%D0%B5%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F\">forma sa de dic\u021bionar (lem\u0103)<\/a><\/noindex> folosind biblioteca <noindex><a rel=\"nofollow\" href=\"https:\/\/stanfordnlp.github.io\/CoreNLP\/\">Stanford CoreNLP<\/a><\/noindex>. De fapt, din cauza acestei biblioteci am \u00eenceput s\u0103 scriu \u00een Java, iar planul ini\u021bial a fost s\u0103 scriu totul \u00een Java, dar pe parcurs am g\u0103sit biblioteca <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/joeferner\/node-java\">node-java<\/a><\/noindex> cu ajutorul c\u0103reia po\u021bi executa relativ simplu cod Java din nodejs \u0219i o parte din cod este scris\u0103 \u00een JavaScript. Dac\u0103 a\u0219 fi g\u0103sit aceast\u0103 bibliotec\u0103 mai devreme, nu a\u0219 fi scris nicio linie \u00een Java. Un alt proiect secundar care s-a n\u0103scut \u00een proces este crearea <noindex><a rel=\"nofollow\" href=\"https:\/\/anatoly314.github.io\/dsl-manual\/\">unui depozit cu documenta\u021bia DSL<\/a><\/noindex> care a fost g\u0103sit\u0103 pe internet \u00een formatul *<em>.chm<\/em>, convertit\u0103 \u0219i adus\u0103 \u00eentr-o form\u0103 acceptabil\u0103. Dac\u0103 autorul fi\u0219ierului original, utilizatorul cu nickname-ul <strong>yozhic<\/strong> vede acest articol, \u00eei mul\u021bumesc foarte mult pentru munca depus\u0103; f\u0103r\u0103 documenta\u021bia lui, probabil nu a\u0219 fi reu\u0219it nimic.<\/p>\n<p><\/p>\n<p>A\u0219adar, am un cuv\u00e2nt \u00een englez\u0103, articolul s\u0103u din dic\u021bionar \u00een formatul *<em>.html<\/em>, r\u0103m\u00e2ne s\u0103 le unifici, s\u0103 creezi articole ANKI din lista de cuvinte \u0219i s\u0103 le introduci \u00een baza de date ANKI. \u00cen acest scop, a fost creat urm\u0103torul proiect <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex>. El poate lua ca input o list\u0103 de cuvinte, le traduce, creeaz\u0103 articole ANKI *<em>.html<\/em> \u0219i le \u00eenregistreaz\u0103 \u00een baza de date ANKI. La finalul articolului, exist\u0103 instruc\u021biuni despre cum s\u0103-l folose\u0219ti. \u00centre timp, \u00eens\u0103, iat\u0103 a doua poveste \u00een care repeti\u021biile intermediare pot fi utile.<\/p>\n<p><\/p>\n<h2 id=\"istoriya-vtoraya\">A doua poveste.<\/h2>\n<p><\/p>\n<p>To\u021bi oamenii \u00een c\u0103utarea unei specializ\u0103ri mai mult sau mai pu\u021bin calificate, inclusiv programatorii, se confrunt\u0103 cu necesitatea preg\u0103tirii pentru interviuri. Multe concepte care sunt \u00eentrebate la interviu nu le folose\u0219ti \u00een practica zilnic\u0103 \u0219i se uit\u0103. \u00cen timpul unei preg\u0103tiri pentru un interviu, r\u0103sfoind un rezumat, o carte, un ghid, m-am confruntat cu faptul c\u0103 dureaz\u0103 mult timp \u0219i aten\u021bie s\u0103 filtrezi informa\u021biile pe care deja le \u0219tii, pentru c\u0103 nu sunt \u00eentotdeauna evidente \u0219i e\u0219ti nevoit s\u0103 examinezi cu aten\u021bie pentru a \u00een\u021belege ce nu este relevant. C\u00e2nd ajungi la un subiect pe care trebuie s\u0103-l repe\u021bi cu adev\u0103rat, foarte des se \u00eent\u00e2mpl\u0103 s\u0103 fii deja obosit \u0219i calitatea preg\u0103tirii s\u0103 aib\u0103 de suferit. La un moment dat, m-am g\u00e2ndit, de ce s\u0103 nu folose\u0219ti cardurile ANKI \u0219i pentru asta? De exemplu, c\u00e2nd faci un rezumat al unui subiect, s\u0103 creezi imediat un rezumat sub form\u0103 de \u00eentrebare - r\u0103spuns, iar apoi, la repetare, s\u0103 \u0219tii imediat dac\u0103 \u0219tii sau nu r\u0103spunsul la aceast\u0103 \u00eentrebare.<\/p>\n<p><\/p>\n<p>Problema a ap\u0103rut doar din faptul c\u0103 introducerea \u00eentreb\u0103rilor este foarte lung\u0103 \u0219i plictisitoare. Pentru a u\u0219ura procesul, \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex> proiect am ad\u0103ugat func\u021bionalitatea de a converte\u0219te <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Markdown\">markdown<\/a><\/noindex> text \u00een cardurile ANKI. Tot ce trebuie s\u0103 face\u021bi este s\u0103 scrie\u021bi un singur fi\u0219ier mare \u00een care \u00eentreb\u0103rile \u0219i r\u0103spunsurile sunt marcate printr-o secven\u021b\u0103 de caractere convenit\u0103 anterior, astfel \u00eenc\u00e2t parserul s\u0103 \u00een\u021beleag\u0103 unde este \u00eentrebarea \u0219i unde este r\u0103spunsul.<\/p>\n<p><\/p>\n<p>Dup\u0103 ce acest fi\u0219ier a fost creat, rula\u021bi data2anki \u0219i va crea carduri ANKI. Fi\u0219ierul original este u\u0219or de modificat \u0219i distribuit, tot ce trebuie s\u0103 face\u021bi este s\u0103 \u0219terge\u021bi cardul(i) corespunz\u0103tor(e) \u0219i s\u0103 relua\u021bi programul, iar noua variant\u0103 va fi creat\u0103.<\/p>\n<p><\/p>\n<h2 id=\"ustanovka-i-polzovaniyu\">Instalare \u0219i utilizare<\/h2>\n<p><\/p>\n<ol>\n<li>\n<p>Instalarea ANKI + AnkiConnect<\/p>\n<p><\/p>\n<ol>\n<li>Desc\u0103rca\u021bi ANKI de aici: <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/\">https:\/\/apps.ankiweb.net\/<\/a><\/noindex><\/li>\n<li>Instala\u021bi plugin-ul AnkiConnect: <noindex><a rel=\"nofollow\" href=\"https:\/\/ankiweb.net\/shared\/info\/2055492159\">https:\/\/ankiweb.net\/shared\/info\/2055492159<\/a><\/noindex><\/li>\n<\/ol>\n<p>\n<\/li>\n<li>\n<p>Instalare <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex><\/p>\n<p><\/p>\n<ol>\n<li>Desc\u0103rca\u021bi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex> din repository-ul github\n<pre><code class=\"plaintext\">git clone https:\/\/github.com\/anatoly314\/data2anki<\/code><\/pre>\n<\/li>\n<li>Instala\u021bi dependen\u021bele\n<pre><code class=\"plaintext\">cd data2anki &amp;&amp; npm install<\/code><\/pre>\n<\/li>\n<li>Desc\u0103rca\u021bi dependen\u021bele java <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\/releases\/download\/0.1.0\/jar-dependencies.zip\">https:\/\/github.com\/anatoly314\/data2anki\/releases\/download\/0.1.0\/jar-dependencies.zip<\/a><\/noindex><\/li>\n<li>Descompune\u021bi <strong>jar-dependencies.zip<\/strong> \u0219i plasa\u021bi con\u021binutul s\u0103u \u00een <strong>data2anki\/java\/jars<\/strong><\/li>\n<\/ol>\n<p>\n<\/li>\n<li>\n<p>Utilizare pentru traducerea cuvintelor:<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>\u00cen fi\u0219ierul <strong>data2anki\/config.json<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>\u00een cheia <strong>mod<\/strong> introduce\u021bi valoarea <strong>dsl2anki<\/strong><\/p>\n<p>\n<\/li>\n<li>\n<p>\u00een cheia <strong>modules.dsl.anki.deckName<\/strong> \u0219i <strong>modules.dsl.anki.modelName<\/strong> introduce\u021bi, respectiv, <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#decks\">Numele Deck-ului<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#note-types\">Numele Modelului<\/a><\/noindex> (deja trebuie s\u0103 fie create \u00eenainte de generarea cardurilor). Acum este sus\u021binut\u0103 doar un model de tip <strong>Basic<\/strong>:<\/p>\n<p><\/p>\n<blockquote><p>Are c\u00e2mpuri Fa\u021b\u0103 \u0219i Spate, \u0219i va crea un card. Textul pe care \u00eel introduce\u021bi \u00een Fa\u021b\u0103 va ap\u0103rea pe fa\u021ba cardului, iar textul pe care \u00eel introduce\u021bi \u00een Spate va ap\u0103rea pe spatele cardului. <\/p><\/blockquote>\n<p>unde cuv\u00e2ntul original este <em>c\u00e2mpul Fa\u021b\u0103<\/em>, iar traducerea va fi \u00een <em>c\u00e2mpul Spate<\/em>. <\/p>\n<p><\/p>\n<p>Nu exist\u0103 nicio problem\u0103 s\u0103 ad\u0103uga\u021bi suport pentru <strong>Basic (\u0219i cardul inversat)<\/strong>, unde pentru cuv\u00e2nt \u0219i traducere se va crea \u0219i cardul inversat, unde, pe baza traducerii, trebuie s\u0103 v\u0103 aminti\u021bi cuv\u00e2ntul original. E nevoie doar de timp \u0219i dorin\u021b\u0103.<\/p>\n<p>\n<\/li>\n<li>\n<p>\u00een cheia <strong>modules.dsl.dictionariesPath<\/strong> introduce\u021bi un array cu dic\u021bionarele conectate *<em>.dsl<\/em> Fiecare dic\u021bionar conectat este un director \u00een care se afl\u0103 fi\u0219ierele dic\u021bionarului conform formatului: <noindex><a rel=\"nofollow\" href=\"https:\/\/anatoly314.github.io\/dsl-manual\/#dict.html\">Structura dic\u021bionarului DSL<br \/>\n<\/a><\/noindex><\/p>\n<p>\n<\/li>\n<li>\n<p>\u00een cheia <strong>modules.dsl.wordToTranslatePath<\/strong> introduce\u021bi calea c\u0103tre lista de cuvinte pe care dori\u021bi s\u0103 le traduce\u021bi.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p>\n<\/li>\n<li>Porni\u021bi atunci c\u00e2nd aplica\u021bia ANKI este activ\u0103 \n<pre><code class=\"plaintext\">node data2ankiindex.js<\/code><\/pre>\n<\/li>\n<li>PROFIT!!!<\/li>\n<\/ol>\n<p>\n<\/li>\n<li>\n<p>Utilizarea pentru crearea cardurilor din markdown<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>\u00cen fi\u0219ierul <strong>data2anki\/config.json<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>\u00een cheia <strong>mod<\/strong> introduce\u021bi valoarea <strong>markdown2anki<\/strong><\/li>\n<li>\u00een cheia <strong>modules.markdown.anki.deckName<\/strong> \u0219i <strong>modules.dsl.anki.modelName<\/strong> introduce\u021bi, respectiv, <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#decks\">Numele Deck-ului<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#note-types\">Numele Modelului<\/a><\/noindex> (deja trebuie s\u0103 fie create \u00eenainte de generarea cardurilor). Pentru <strong>markdown2anki<\/strong> mod, este sus\u021binut\u0103 doar un model de tip <strong>Basic<\/strong>.<\/li>\n<li>\n<p>\u00een cheia <strong>modules.markdown.selectors.startQuestionSelectors<\/strong> \u0219i <strong>modules.markdown.selectors.startAnswerSelectors<\/strong> introduce\u021bi selectoare prin care marca\u021bi \u00eenceputul \u00eentreb\u0103rii \u0219i r\u0103spunsului, respectiv. Linia cu selectorul nu va fi analizat\u0103 \u0219i nu va ajunge \u00een card, parserul va \u00eencepe s\u0103 func\u021bioneze de la urm\u0103toarea linie. <\/p>\n<p><\/p>\n<h5 id=\"naprimer-vot-eta-kartochka-voprosotvet\">De exemplu, aceast\u0103 card\u0103 \u00eentrebare\/r\u0103spuns:<\/h5>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Dou\u0103 pove\u0219ti despre cum ANKI te poate ajuta s\u0103 \u00eenve\u021bi o limb\u0103 str\u0103in\u0103 \u0219i s\u0103 te preg\u0103te\u0219ti pentru un interviu\" src=\"\/wp-content\/uploads\/2019\/06\/1d32d4c8b44e62027350031090405dd2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h5 id=\"budet-vyglyadet-v-markdown-sleduyuschim-obrazom\">Va ar\u0103ta \u00een markdown astfel:<\/h5>\n<pre>\n#QUESTION#\n## Question 5. Write a mul function which will work properly when invoked with following syntax.\n\n```javascript\nconsole.log(mul(2)(3)(4)); \/\/ output : 24\nconsole.log(mul(4)(3)(4)); \/\/ output : 48\n```\n#ANSWER#\nBelow is the code followed by the explanation of how it works:\n\n```javascript\nfunction mul (x) {\n  return function (y) { \/\/ anonymous function\n    return function (z) { \/\/ anonymous function\n      return x * y * z;\n    };\n  };\n}\n```\n\nHere the `mul` function accepts the first argument and returns the anonymous function which takes the second parameter and returns the anonymous function which takes the third parameter and returns the multiplication of arguments which is being passed in successive\n\nIn Javascript function defined inside has access to outer function variable and function is the first class object so it can be returned by the function as well and passed as an argument in another function.\n- A function is an instance of the Object type\n- A function can have properties and has a link back to its constructor method\n- A function can be stored as variable\n- A function can be pass as a parameter to another function\n- A function can be returned from another function\n<\/pre>\n<blockquote><p>Exemplul este preluat de aici: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ganqqwerty\/123-Essential-JavaScript-Interview-Questions\">123-\u00centreb\u0103ri de interviu JavaScript<\/a><\/noindex><\/p><\/blockquote>\n<p>De asemenea, exist\u0103 un fi\u0219ier cu exemple \u00een folderul proiectului <code>examples\/markdown2anki-example.md<\/code><\/p>\n<p>\n<\/li>\n<li>\u00een cheia <strong>modules.markdown.pathToFile<\/strong><br \/>\nspecifica\u021bi, calea c\u0103tre fi\u0219ierul unde se afl\u0103 *<em>.md<\/em> fi\u0219ier cu \u00eentreb\u0103ri\/r\u0103spunsuri<\/li>\n<\/ul>\n<p>\n<\/li>\n<li>Porni\u021bi atunci c\u00e2nd aplica\u021bia ANKI este activ\u0103\n<pre><code class=\"plaintext\">node data2ankiindex.js<\/code><\/pre>\n<\/li>\n<li>PROFIT!!!<\/li>\n<\/ol>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"vot-tak-eto-vyglyadit-na-mobilnom-telefone\">A\u0219a arat\u0103 pe telefonul mobil:<\/h4>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"D35VtcTtxrs\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/D35VtcTtxrs\/hqdefault.jpg\" alt=\"Reda\u021bi video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h2 id=\"rezultat\">Rezultatul<\/h2>\n<p><\/p>\n<p>Cardurile ANKI ob\u021binute pe versiunea desktop se sincronizeaz\u0103 f\u0103r\u0103 probleme cu cloud-ul ANKI (gratuit p\u00e2n\u0103 la 100mb), iar apoi le pute\u021bi folosi oriunde. Exist\u0103 clien\u021bi pentru Android \u0219i iPhone, de asemenea, se poate folosi \u0219i \u00een browser. A\u0219adar, dac\u0103 ave\u021bi timp pe care nu \u0219ti\u021bi cum s\u0103-l \u00eengriji\u021bi, \u00een loc s\u0103 derula\u021bi f\u0103r\u0103 \u021bint\u0103 pe Facebook sau s\u0103 viziona\u021bi pisici pe Instagram, pute\u021bi \u00eenv\u0103\u021ba ceva nou. <\/p>\n<p><\/p>\n<h2 id=\"epilog\">Epilog<\/h2>\n<p><\/p>\n<p>A\u0219a cum am men\u021bionat anterior, acesta este mai mult un POC de lucru, mai degrab\u0103 dec\u00e2t un produs finalizat. Aproximativ 30% din standardul parser-ului DSL nu este implementat, a\u0219a c\u0103, <noindex><a rel=\"nofollow\" href=\"https:\/\/anatoly314.github.io\/dsl-manual\/#tag_service.html#alt\">de exemplu, nu toate articolele din dic\u021bionare pot fi g\u0103site<\/a><\/noindex>, de asemenea, exist\u0103 ideea de a-l refacere pe <em>JavaScript<\/em>, deoarece se dore\u0219te &#171;consistency&#187;, \u0219i, \u00een plus, acum este scris nu foarte optim. Acum parserul construie\u0219te un arbore, ceea ce mi se pare de prisos \u0219i complic\u0103 codul. <strong>markdown2anki<\/strong> modul imagine, imaginile nu sunt parsate. Voi \u00eencerca s\u0103 continui s\u0103 \u00eembun\u0103t\u0103\u021besc, dar, de vreme ce scriu pentru mine, \u00een primul r\u00e2nd voi aborda acele probleme cu care m\u0103 voi confrunta personal, \u00eens\u0103, dac\u0103 cineva dore\u0219te s\u0103 ajute, este binevenit. Dac\u0103 ave\u021bi \u00eentreb\u0103ri despre program, voi fi bucuros s\u0103 ajut prin problemele deschise \u00een proiectele corespunz\u0103toare. Alte critici \u0219i sugestii, v\u0103 rog s\u0103 le scrie\u021bi aici. Sper c\u0103 acest proiect va fi util cuiva.<\/p>\n<p><\/p>\n<p>P.S. Dac\u0103 observa\u021bi gre\u0219eli (iar acestea, din p\u0103cate, sunt), scrie\u021bi-mi \u00een privat, le voi corecta.<\/p>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/454236\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042f \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0447\u0438\u0442\u0430\u043b, \u0447\u0442\u043e \u043b\u0435\u043d\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438 \u0442\u0440\u0443\u0434\u043e\u043b\u044e\u0431\u0438\u0432\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u043e\u043d \u043f\u043e\u0439\u0434\u0435\u0442 \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u0442. \u0410 \u043b\u0435\u043d\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442 \u0432 2-3 \u0440\u0430\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u043e \u043d\u0430\u043f\u0438\u0448\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u2014 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430 \u043d\u0435\u0433\u043e. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u043d\u0430 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e \u043d\u0435\u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u043e \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0445\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26237,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-34845","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042f \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0447\u0438\u0442\u0430\u043b, \u0447\u0442\u043e \u043b\u0435\u043d\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438 \u0442\u0440\u0443\u0434\u043e\u043b\u044e\u0431\u0438\u0432\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u043e\u043d \u043f\u043e\u0439\u0434\u0435\u0442 \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/news\/dve-istorii-kak-anki-mozhet-vam-pomoch-vyuchit-inostrannyj-yazyk-i-podgotovitsya-k-intervyu\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0414\u0432\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u0430\u043a ANKI \u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u044b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043a \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042f \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0447\u0438\u0442\u0430\u043b, \u0447\u0442\u043e \u043b\u0435\u043d\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438 \u0442\u0440\u0443\u0434\u043e\u043b\u044e\u0431\u0438\u0432\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u043e\u043d \u043f\u043e\u0439\u0434\u0435\u0442 \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/dve-istorii-kak-anki-mozhet-vam-pomoch-vyuchit-inostrannyj-yazyk-i-podgotovitsya-k-intervyu\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:00:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:43+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Dou\u0103 pove\u0219ti despre cum ANKI v\u0103 poate ajuta s\u0103 \u00eenv\u0103\u021ba\u021bi o limb\u0103 str\u0103in\u0103 \u0219i s\u0103 v\u0103 preg\u0103ti\u021bi pentru un interviu | ProHoster","description":"\u00centotdeauna am considerat c\u0103 un programator lene\u0219 este un programator bun. De ce? Pentru c\u0103, dac\u0103 \u00eei ceri unui programator harnic s\u0103 fac\u0103 ceva, se va duce \u0219i va face.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/dve-istorii-kak-anki-mozhet-vam-pomoch-vyuchit-inostrannyj-yazyk-i-podgotovitsya-k-intervyu","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0414\u0432\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u0430\u043a ANKI \u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u044b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043a \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e | ProHoster","og:description":"\u042f \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0447\u0438\u0442\u0430\u043b, \u0447\u0442\u043e \u043b\u0435\u043d\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438 \u0442\u0440\u0443\u0434\u043e\u043b\u044e\u0431\u0438\u0432\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u043e\u043d \u043f\u043e\u0439\u0434\u0435\u0442 \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u0442.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/dve-istorii-kak-anki-mozhet-vam-pomoch-vyuchit-inostrannyj-yazyk-i-podgotovitsya-k-intervyu","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:00:43+00:00","article:modified_time":"2019-10-31T19:00:43+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34845","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 20:49:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:14:05","updated":"2026-01-21 20:49:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/34845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=34845"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/34845\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/26237"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=34845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=34845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=34845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}