{"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\/pl\/blog\/news\/dve-istorii-kak-anki-mozhet-vam-pomoch-vyuchit-inostrannyj-yazyk-i-podgotovitsya-k-intervyu","title":{"rendered":"Dwie historie, jak ANKI mo\u017ce pom\u00f3c ci w nauce j\u0119zyk\u00f3w obcych i przygotowaniu si\u0119 do rozmowy kwalifikacyjnej","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Zawsze uwa\u017ca\u0142em, \u017ce leniwy programista to dobry programista. Dlaczego? Poniewa\u017c je\u015bli poprosisz pracowitego o zrobienie czego\u015b, p\u00f3jdzie i to zrobi. A leniwy programista sp\u0119dzi 2-3 razy wi\u0119cej czasu, ale napisze skrypt, kt\u00f3ry b\u0119dzie to robi\u0142 za niego. Mo\u017ce za pierwszym razem zajmie to nieuzasadnion\u0105 ilo\u015b\u0107 czasu, ale przy powtarzaj\u0105cych si\u0119 zadaniach takie podej\u015bcie bardzo szybko si\u0119 op\u0142aca. Uwa\u017cam si\u0119 za leniwego programist\u0119. To by\u0142a wst\u0119pna uwaga, a teraz przejd\u017amy do rzeczy. <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h2 id=\"istoriya-pervaya\">Pierwsza historia<\/h2>\n<p><\/p>\n<p>Kilka lat temu pomy\u015bla\u0142em, jak mog\u0119 poprawi\u0107 sw\u00f3j angielski. Nic lepszego nie przysz\u0142o mi do g\u0142owy ni\u017c czytanie literatury. Kupi\u0142em czytnik elektroniczny, za\u0142adowa\u0142em ksi\u0105\u017cki i zacz\u0105\u0142em czyta\u0107. Podczas czytania ci\u0105gle natrafia\u0142em na nieznane s\u0142owa. Od razu je t\u0142umaczy\u0142em za pomoc\u0105 wbudowanych w czytnik s\u0142ownik\u00f3w, ale zauwa\u017cy\u0142em jedn\u0105 szczeg\u00f3lno\u015b\u0107: s\u0142owa nie chcia\u0142y si\u0119 zapami\u0119tywa\u0107. Kiedy po kilku stronach znowu spotyka\u0142em to s\u0142owo, z 90% prawdopodobie\u0144stwem potrzebowa\u0142em ponownie t\u0142umaczenia, i tak za ka\u017cdym razem. Nasun\u0105\u0142 si\u0119 wniosek, \u017ce samo t\u0142umaczenie nieznanych s\u0142\u00f3w podczas czytania to za ma\u0142o, trzeba zrobi\u0107 co\u015b wi\u0119cej. Idealnym rozwi\u0105zaniem by\u0142oby wprowadzenie go do u\u017cycia i zacz\u0119cie korzystania, ale nie mieszkam w angloj\u0119zycznym kraju i to ma\u0142o mo\u017cliwe. Przypomnia\u0142em sobie, \u017ce kiedy\u015b czyta\u0142em o <noindex>powtarzaniu interwa\u0142owym<\/noindex>.<\/p>\n<p><\/p>\n<p>Czym to jest i z czym to si\u0119 je? M\u00f3wi\u0105c kr\u00f3tko, jest taka <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\">krzywa zapominania<\/a><\/noindex>, oto cytat z Wikipedii:<\/p>\n<p><\/p>\n<blockquote><p>Ju\u017c w ci\u0105gu pierwszej godziny zapomina si\u0119 do 60% ca\u0142ej przyswojonej informacji, a po 10 godzinach od zapami\u0119tania w pami\u0119ci pozostaje 35% przyswojonego materia\u0142u. Proces zapominania nast\u0119pnie przebiega wolno, i po 6 dniach w pami\u0119ci pozostaje oko\u0142o 20% z og\u00f3lnej liczby pocz\u0105tkowo zapami\u0119tanych s\u0142\u00f3w, a tyle samo pozostaje w pami\u0119ci po miesi\u0105cu.<\/p><\/blockquote>\n<p>I st\u0105d wniosek <\/p>\n<p><\/p>\n<blockquote><p>Wnioski, kt\u00f3re mo\u017cna uczyni\u0107 na podstawie tej krzywej, m\u00f3wi\u0105, i\u017c do efektywnego zapami\u0119tywania konieczne jest powtarzanie przyswojonego materia\u0142u.<\/p><\/blockquote>\n<p>I oto doszli\u015bmy do idei <noindex>powtarzania interwa\u0142owego<\/noindex>.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/\">AANKI<\/a><\/noindex> To jest ca\u0142kowicie darmowy program z otwartym \u017ar\u00f3d\u0142em, kt\u00f3ry realizuje ide\u0119 powt\u00f3rze\u0144 interwa\u0142owych. M\u00f3wi\u0105c pro\u015bciej, s\u0105 to komputerowe fiszki, z pytaniem po jednej stronie, a odpowiedzi\u0105 po drugiej. Mo\u017cliwo\u015b\u0107 tworzenia pyta\u0144\/odpowiedzi za pomoc\u0105 zwyk\u0142ych <em>html\/css\/javascript<\/em>, co mo\u017cna powiedzie\u0107, \u017ce ma naprawd\u0119 nieograniczone mo\u017cliwo\u015bci. Ponadto, jest rozszerzalny za pomoc\u0105 specjalnych <noindex><a rel=\"nofollow\" href=\"https:\/\/ankiweb.net\/shared\/addons\/\">wtyczek<\/a><\/noindex>, a jedna z nich b\u0119dzie nam w przysz\u0142o\u015bci bardzo przydatna.<\/p>\n<p><\/p>\n<p>Tworzenie fiszek r\u0119cznie jest czasoch\u0142onne, nu\u017c\u0105ce i z du\u017cym prawdopodobie\u0144stwem z czasem zrezygnujesz z tego, dlatego w pewnym momencie zada\u0142em sobie pytanie, czy mo\u017cna to zautomatyzowa\u0107. Odpowied\u017a brzmi \u2014 tak, mo\u017cna. I to zrobi\u0142em. Powiem od razu, to bardziej <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Proof_of_concept\">POC (proof of concept)<\/a><\/noindex>, ale kt\u00f3rym mo\u017cna si\u0119 pos\u0142ugiwa\u0107. Je\u015bli b\u0119dzie zainteresowanie ze strony u\u017cytkownik\u00f3w i do\u0142\u0105cz\u0105 inni deweloperzy, mo\u017cna to doprowadzi\u0107 do gotowego produktu, kt\u00f3rym b\u0119d\u0105 mogli si\u0119 pos\u0142ugiwa\u0107 nawet u\u017cytkownicy o niskich umiej\u0119tno\u015bciach technicznych. Na razie u\u017cycie mojego narz\u0119dzia wymaga pewnej wiedzy z zakresu programowania.<\/p>\n<p><\/p>\n<p>Czytam ksi\u0105\u017cki za pomoc\u0105 programu <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.neverland.alreader&amp;hl=en\">AIReader<\/a><\/noindex>. Ma on mo\u017cliwo\u015b\u0107 pod\u0142\u0105czania zewn\u0119trznych s\u0142ownik\u00f3w, a tak\u017ce podczas t\u0142umaczenia s\u0142owa zapisuje s\u0142owo, dla kt\u00f3rego wywo\u0142ano t\u0142umaczenie, do pliku tekstowego. Zosta\u0142o tylko jedno, przet\u0142umaczy\u0107 te s\u0142owa i stworzy\u0107 fiszki ANKI.<\/p>\n<p><\/p>\n<p>Na pocz\u0105tku pr\u00f3bowa\u0142em u\u017cywa\u0107 do t\u0142umaczenia <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> itd. Ale z darmowymi us\u0142ugami nie posz\u0142o. Wykorzysta\u0142em darmowy limit jeszcze w trakcie rozwoju, ponadto, zgodnie z warunkami licencji, nie mia\u0142em prawa do cache'owania s\u0142\u00f3w. W pewnym momencie zrozumia\u0142em, \u017ce musz\u0119 t\u0142umaczy\u0107 s\u0142owa sam. W rezultacie napisano modu\u0142 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/dsl2html\">dsl2html<\/a><\/noindex> , do kt\u00f3rego mo\u017cna pod\u0142\u0105cza\u0107 <noindex><a rel=\"nofollow\" href=\"http:\/\/lingvo.helpmax.net\/en\/troubleshooting\/dsl-compiler\/dsl-dictionary-structure\/\">s\u0142owniki DSL<\/a><\/noindex> i kt\u00f3ry potrafi konwertowa\u0107 je do <em>HTML<\/em> formatu. <\/p>\n<p><\/p>\n<p>Tak wygl\u0105da artyku\u0142 w s\u0142owniku w *<em>.html<\/em>, moja wersja w por\u00f3wnaniu do wersji <noindex><a rel=\"nofollow\" href=\"http:\/\/goldendict.org\/\">GoldenDict<\/a><\/noindex><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Dwie historie, jak ANKI mo\u017ce pom\u00f3c ci w nauce j\u0119zyk\u00f3w obcych i przygotowaniu si\u0119 do rozmowy kwalifikacyjnej\" src=\"\/wp-content\/uploads\/2019\/06\/98317e694331c5764fe890827d59e3b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Przed wyszukaniem s\u0142owa w pod\u0142\u0105czonych s\u0142ownikach sprowadzam je do <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\">formy s\u0142ownikowej (lematu)<\/a><\/noindex> za pomoc\u0105 biblioteki <noindex><a rel=\"nofollow\" href=\"https:\/\/stanfordnlp.github.io\/CoreNLP\/\">Stanford CoreNLP<\/a><\/noindex>. W rzeczywisto\u015bci to dzi\u0119ki tej bibliotece zacz\u0105\u0142em pisa\u0107 w Javie, a pocz\u0105tkowy plan polega\u0142 na tym, aby napisa\u0107 wszystko w Javie, ale w trakcie znalaz\u0142em bibliotek\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/joeferner\/node-java\">node-java<\/a><\/noindex> za pomoc\u0105 kt\u00f3rej stosunkowo \u0142atwo mo\u017cna uruchamia\u0107 kod Java z nodejs, a cz\u0119\u015b\u0107 kodu napisana jest w JavaScript. Gdybym znalaz\u0142 t\u0119 bibliotek\u0119 wcze\u015bniej, nie napisa\u0142bym ani jednej linijki w Javie. Kolejnym pobocznym projektem, kt\u00f3ry powsta\u0142 w tym procesie, jest stworzenie <noindex><a rel=\"nofollow\" href=\"https:\/\/anatoly314.github.io\/dsl-manual\/\">repozytorium z dokumentacj\u0105 DSL<\/a><\/noindex> kt\u00f3ra zosta\u0142a znaleziona w sieci w formacie *<em>.chm<\/em>, skonwertowana i przekszta\u0142cona w przyjemniejsz\u0105 form\u0119. Je\u015bli autor oryginalnego pliku, u\u017cytkownik o nicku <strong>yozhic<\/strong> widzi ten artyku\u0142, to serdeczne dzi\u0119ki za wykonan\u0105 prac\u0119, bez jego dokumentacji prawdopodobnie nic by mi si\u0119 nie uda\u0142o.<\/p>\n<p><\/p>\n<p>Wi\u0119c mam s\u0142owo w j\u0119zyku angielskim, jego artyku\u0142 s\u0142ownikowy w formacie *<em>.html<\/em>, pozostaje zintegrowa\u0107 wszystko w ca\u0142o\u015b\u0107, stworzy\u0107 artyku\u0142y ANKI z listy s\u0142\u00f3w i wprowadzi\u0107 je do bazy danych ANKI. W tym celu powsta\u0142 nast\u0119puj\u0105cy projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex>. Potrafi przyj\u0105\u0107 list\u0119 s\u0142\u00f3w, t\u0142umaczy\u0107 je, tworzy\u0107 artyku\u0142y ANKI *<em>.html<\/em> i zapisywa\u0107 je w bazie danych ANKI. Na ko\u0144cu artyku\u0142u znajduje si\u0119 instrukcja, jak z niego korzysta\u0107. Tymczasem oto druga historia, w kt\u00f3rej powt\u00f3rzenia interwa\u0142owe mog\u0105 by\u0107 przydatne.<\/p>\n<p><\/p>\n<h2 id=\"istoriya-vtoraya\">Druga historia.<\/h2>\n<p><\/p>\n<p>Wszyscy ludzie w poszukiwaniu bardziej lub mniej wykwalifikowanej specjalno\u015bci, w tym programi\u015bci, staj\u0105 przed konieczno\u015bci\u0105 przygotowania si\u0119 do rozmowy kwalifikacyjnej. Wiele koncepcji, kt\u00f3re s\u0105 pytane podczas wywiadu, nie jest u\u017cywanych w codziennej praktyce, przez co si\u0119 zapomina. Przy kolejnym przygotowaniu do rozmowy, przegl\u0105daj\u0105c notatki, ksi\u0105\u017ck\u0119, przewodnik, natkn\u0105\u0142em si\u0119 na to, \u017ce po\u015bwi\u0119ca si\u0119 bardzo du\u017co czasu i uwagi na filtrowanie informacji, kt\u00f3re ju\u017c znasz, poniewa\u017c nie zawsze s\u0105 one oczywiste, co sprawia, \u017ce trzeba si\u0119 wg\u0142\u0119bia\u0107, aby zrozumie\u0107, \u017ce s\u0105 to nieistotne informacje. Kiedy jednak podchodzisz do tematu, kt\u00f3ry naprawd\u0119 musisz powt\u00f3rzy\u0107, bardzo cz\u0119sto okazuje si\u0119, \u017ce jeste\u015b ju\u017c zm\u0119czony, a jako\u015b\u0107 przygotowa\u0144 cierpi. W pewnym momencie pomy\u015bla\u0142em, a czemu by nie wykorzysta\u0107 kart ANKI do tego? Na przyk\u0142ad, przy sporz\u0105dzaniu notatek z jakiego\u015b tematu, od razu tworzy\u0107 notatk\u0119 w formie pytania-odpowiedzi, a p\u00f3\u017aniej podczas powt\u00f3rki od razu wiedzie\u0107, czy znasz odpowied\u017a na to pytanie.<\/p>\n<p><\/p>\n<p>Problem pojawi\u0142 si\u0119 tylko w tym, \u017ce wpisywanie pyta\u0144 zajmuje bardzo du\u017co czasu i jest nu\u017c\u0105ce. Aby u\u0142atwi\u0107 proces, do <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex> projektu doda\u0142em funkcjonalno\u015b\u0107 do konwertowania <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Markdown\">markdown<\/a><\/noindex> Tekst na kartach ANKI. Wszystko, co musisz zrobi\u0107, to napisa\u0107 jeden du\u017cy plik, w kt\u00f3rym pytania i odpowiedzi b\u0119d\u0105 oznaczone wcze\u015bniej ustalon\u0105 sekwencj\u0105 symboli, wed\u0142ug kt\u00f3rej parser zrozumie, gdzie jest pytanie, a gdzie odpowied\u017a.<\/p>\n<p><\/p>\n<p>Po utworzeniu tego pliku uruchamiasz data2anki, a on tworzy karty ANKI. Oryginalny plik mo\u017cna \u0142atwo edytowa\u0107 i udost\u0119pnia\u0107, wystarczy usun\u0105\u0107 odpowiedni\u0105 kart\u0119(y) i ponownie uruchomi\u0107 program, a nowa wersja zostanie stworzona.<\/p>\n<p><\/p>\n<h2 id=\"ustanovka-i-polzovaniyu\">Instalacja i u\u017cytkowanie<\/h2>\n<p><\/p>\n<ol>\n<li>\n<p>Instalacja ANKI + AnkiConnect<\/p>\n<p><\/p>\n<ol>\n<li>Pobierasz ANKI st\u0105d: <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/\">https:\/\/apps.ankiweb.net\/<\/a><\/noindex><\/li>\n<li>Instalujesz wtyczk\u0119 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>Instalacja <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex><\/p>\n<p><\/p>\n<ol>\n<li>Pobierasz <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex> z repozytorium github\n<pre><code class=\"plaintext\">git clone https:\/\/github.com\/anatoly314\/data2anki<\/code><\/pre>\n<\/li>\n<li>Instalujesz zale\u017cno\u015bci\n<pre><code class=\"plaintext\">cd data2anki &amp;&amp; npm install<\/code><\/pre>\n<\/li>\n<li>Pobierasz zale\u017cno\u015bci 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>Wypakowujesz <strong>jar-dependencies.zip<\/strong> i umieszczasz jego zawarto\u015b\u0107 w <strong>data2anki\/java\/jars<\/strong><\/li>\n<\/ol>\n<p>\n<\/li>\n<li>\n<p>U\u017cywanie do t\u0142umaczenia s\u0142\u00f3w:<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>W pliku <strong>data2anki\/config.json<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>w kluczu <strong>tryb<\/strong> wpisujesz warto\u015b\u0107 <strong>dsl2anki<\/strong><\/p>\n<p>\n<\/li>\n<li>\n<p>w kluczu <strong>modules.dsl.anki.deckName<\/strong> i <strong>modules.dsl.anki.modelName<\/strong> wpisujesz, odpowiednio, <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#decks\">Nazwa talerza<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#note-types\">Nazwa modelu<\/a><\/noindex> (powinny by\u0107 ju\u017c utworzone przed stworzeniem kart). Obecnie wspierany jest tylko model typu <strong>Podstawowy<\/strong>:<\/p>\n<p><\/p>\n<blockquote><p>Ma pola Front i Back i tworzy jedn\u0105 kart\u0119. Tekst, kt\u00f3ry wprowadzasz w Front, pojawi si\u0119 z przodu karty, a tekst, kt\u00f3ry wprowadzasz w Back, pojawi si\u0119 z ty\u0142u karty. <\/p><\/blockquote>\n<p>gdzie oryginalne s\u0142owo znajduje si\u0119 w <em>Pola Front<\/em>, a t\u0142umaczenie b\u0119dzie w <em>Pola Back<\/em>. <\/p>\n<p><\/p>\n<p>Nie ma problemu z dodaniem wsparcia dla <strong>Podstawowy (i odwr\u00f3cona karta)<\/strong>, gdzie do s\u0142owa i t\u0142umaczenia b\u0119dzie tworzona r\u00f3wnie\u017c odwr\u00f3cona karta, na kt\u00f3rej wed\u0142ug t\u0142umaczenia nale\u017cy przypomnie\u0107 sobie oryginalne s\u0142owo. Wymagana jest tylko ch\u0119\u0107 i czas.<\/p>\n<p>\n<\/li>\n<li>\n<p>w kluczu <strong>modules.dsl.dictionariesPath<\/strong> wpisujesz tablic\u0119 z po\u0142\u0105czonymi *<em>.dsl<\/em> s\u0142ownikami. Ka\u017cdy pod\u0142\u0105czony s\u0142ownik to katalog, w kt\u00f3rym znajduj\u0105 si\u0119 pliki s\u0142ownika zgodnie z formatem: <noindex><a rel=\"nofollow\" href=\"https:\/\/anatoly314.github.io\/dsl-manual\/#dict.html\">Struktura s\u0142ownika DSL<br \/>\n<\/a><\/noindex><\/p>\n<p>\n<\/li>\n<li>\n<p>w kluczu <strong>modules.dsl.wordToTranslatePath<\/strong> wpisujesz \u015bcie\u017ck\u0119 do listy s\u0142\u00f3w, kt\u00f3re chcesz przet\u0142umaczy\u0107.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p>\n<\/li>\n<li>Uruchamiasz przy dzia\u0142aj\u0105cej aplikacji ANKI \n<pre><code class=\"plaintext\">node data2ankiindex.js<\/code><\/pre>\n<\/li>\n<li>ZYSK!!!<\/li>\n<\/ol>\n<p>\n<\/li>\n<li>\n<p>U\u017cywanie do tworzenia kart z markdown<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>W pliku <strong>data2anki\/config.json<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>w kluczu <strong>tryb<\/strong> wpisujesz warto\u015b\u0107 <strong>markdown2anki<\/strong><\/li>\n<li>w kluczu <strong>modules.markdown.anki.deckName<\/strong> i <strong>modules.dsl.anki.modelName<\/strong> wpisujesz, odpowiednio, <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#decks\">Nazwa talerza<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#note-types\">Nazwa modelu<\/a><\/noindex> (powinny by\u0107 ju\u017c utworzone przed stworzeniem kart). Dla <strong>markdown2anki<\/strong> trybu wspierany jest tylko model typu <strong>Podstawowy<\/strong>.<\/li>\n<li>\n<p>w kluczu <strong>modules.markdown.selectors.startQuestionSelectors<\/strong> i <strong>modules.markdown.selectors.startAnswerSelectors<\/strong> wpisujesz selektory, kt\u00f3rymi oznaczasz pocz\u0105tek pytania i odpowiedzi odpowiednio. Sam ci\u0105g z selektorem nie zostanie sparsowany i nie trafi na kart\u0119, parser zacznie prac\u0119 od nast\u0119pnego wiersza. <\/p>\n<p><\/p>\n<h5 id=\"naprimer-vot-eta-kartochka-voprosotvet\">Na przyk\u0142ad ta karta pytanie\/odpowied\u017a:<\/h5>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Dwie historie, jak ANKI mo\u017ce pom\u00f3c ci w nauce j\u0119zyk\u00f3w obcych i przygotowaniu si\u0119 do rozmowy kwalifikacyjnej\" 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\">B\u0119dzie wygl\u0105da\u0142a w markdown nast\u0119puj\u0105co:<\/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>Przyk\u0142ad wzi\u0119ty st\u0105d: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ganqqwerty\/123-Essential-JavaScript-Interview-Questions\">123-Pytania na rozmow\u0119 kwalifikacyjn\u0105 w JavaScript<\/a><\/noindex><\/p><\/blockquote>\n<p>W projekcie znajduje si\u0119 r\u00f3wnie\u017c plik z przyk\u0142adami <code>examples\/markdown2anki-example.md<\/code><\/p>\n<p>\n<\/li>\n<li>w kluczu <strong>modules.markdown.pathToFile<\/strong><br \/>\nprosz\u0119 wpisa\u0107 \u015bcie\u017ck\u0119 do pliku, w kt\u00f3rym znajduje si\u0119 *<em>.md<\/em> plik z pytaniami\/odpowiedziami<\/li>\n<\/ul>\n<p>\n<\/li>\n<li>Uruchamiasz przy dzia\u0142aj\u0105cej aplikacji ANKI\n<pre><code class=\"plaintext\">node data2ankiindex.js<\/code><\/pre>\n<\/li>\n<li>ZYSK!!!<\/li>\n<\/ol>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"vot-tak-eto-vyglyadit-na-mobilnom-telefone\">Oto jak to wygl\u0105da na telefonie kom\u00f3rkowym:<\/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=\"Odtwarzaj wideo\" 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\">Wynik<\/h2>\n<p><\/p>\n<p>Karty ANKI uzyskane w wersji desktopowej synchronizuj\u0105 si\u0119 bez problemu z chmur\u0105 ANKI (darmowo do 100MB), a dalej mo\u017cesz korzysta\u0107 z nich wsz\u0119dzie. Istniej\u0105 aplikacje na Androida i iPhone'a, mo\u017cna te\u017c u\u017cywa\u0107 ich w przegl\u0105darce. W rezultacie, je\u015bli masz czas, kt\u00f3rego nie masz co wydawa\u0107, zamiast bez celu przegl\u0105da\u0107 Facebooka lub koty na Instagramie, mo\u017cesz uczy\u0107 si\u0119 czego\u015b nowego. <\/p>\n<p><\/p>\n<h2 id=\"epilog\">Epilog<\/h2>\n<p><\/p>\n<p>Jak ju\u017c wspomnia\u0142em, to raczej roboczy POC, z kt\u00f3rego mo\u017cna korzysta\u0107, ni\u017c gotowy produkt. Jako\u015b 30% standardu parsera DSL nie zosta\u0142o zaimplementowane i dlatego, <noindex><a rel=\"nofollow\" href=\"https:\/\/anatoly314.github.io\/dsl-manual\/#tag_service.html#alt\">na przyk\u0142ad nie wszystkie artyku\u0142y s\u0142ownikowe, kt\u00f3re s\u0105 dost\u0119pne w s\u0142ownikach, mog\u0105 by\u0107 znalezione<\/a><\/noindex>, jest tak\u017ce pomys\u0142, aby przepisa\u0107 go na <em>JavaScript<\/em>, poniewa\u017c pragniemy &#171;sp\u00f3jno\u015bci&#187;, a ponadto obecnie jest napisany nieco nieoptymalnie. W tej chwili parser buduje drzewo, co moim zdaniem jest zb\u0119dne i tylko komplikuje kod. W <strong>markdown2anki<\/strong> trybie obrazk\u00f3w nie s\u0105 one parsowane. Postaram si\u0119 powoli nad tym pracowa\u0107, ale poniewa\u017c pisz\u0119 to na w\u0142asne potrzeby, to w pierwszej kolejno\u015bci zajm\u0119 si\u0119 problemami, na kt\u00f3re sam natrafi\u0119, a je\u015bli kto\u015b chcia\u0142by pom\u00f3c, to serdecznie zapraszam. Je\u015bli masz pytania dotycz\u0105ce programu, ch\u0119tnie pomog\u0119 poprzez otwarte zg\u0142oszenia w odpowiednich projektach. Pozosta\u0142\u0105 krytyk\u0119 i propozycje pisz tutaj. Mam nadziej\u0119, \u017ce ten projekt b\u0119dzie komu\u015b pomocny.<\/p>\n<p><\/p>\n<p>P.S. Je\u015bli zauwa\u017cy\u0142e\u015b b\u0142\u0119dy (a niestety s\u0105), pisz do mnie prywatnie, wszystko poprawi\u0119.<\/p>\n<p>\u0179r\u00f3d\u0142o: <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.1.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\/pl\/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.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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\udd47 Dwie historie, jak ANKI mo\u017ce Ci pom\u00f3c nauczy\u0107 si\u0119 j\u0119zyka obcego i przygotowa\u0107 si\u0119 do rozmowy kwalifikacyjnej | ProHoster","description":"Zawsze uwa\u017ca\u0142em, \u017ce leniwy programista to dobry programista. Dlaczego? Poniewa\u017c je\u015bli poprosisz pracowitego o zrobienie czego\u015b, p\u00f3jdzie i to zrobi.","canonical_url":"https:\/\/prohoster.info\/pl\/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":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/34845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=34845"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/34845\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/26237"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=34845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=34845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=34845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}