{"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\/en\/blog\/news\/dve-istorii-kak-anki-mozhet-vam-pomoch-vyuchit-inostrannyj-yazyk-i-podgotovitsya-k-intervyu","title":{"rendered":"Two stories of how ANKI can help you learn a foreign language and prepare for an interview","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>I have always believed that a lazy programmer is a good programmer. Why? Because if you ask a hardworking one to do something, they will just go and do it. But a lazy programmer will spend 2-3 times longer, but will write a script that does it for them. It might take an unreasonable amount of time the first time, but with repetitive tasks, this approach pays off very quickly. I consider myself a lazy programmer. That was the preamble, now let's get to the point. <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h2 id=\"istoriya-pervaya\">The first story<\/h2>\n<p><\/p>\n<p>A few years ago, I thought about how to improve my English. Nothing better than reading literature came to mind. I bought an e-reader, downloaded books, and started reading. While reading, I constantly encountered unfamiliar words. I immediately translated them using the built-in dictionaries on the e-reader, but I noticed one thing: the words just wouldn't stick. When I came across the same word a few pages later, there was a 90% chance I still needed a translation, and it was like that every time. It became clear that it wasn't enough to just translate unfamiliar words while reading; I needed to do something more. The ideal option would have been to incorporate them into everyday use, but I don't live in an English-speaking country, making that quite difficult. Then I remembered that I once read about <noindex>spaced repetition<\/noindex>.<\/p>\n<p><\/p>\n<p>What is it and how does it work? In short, there is such a <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\">forgetting curve<\/a><\/noindex>, here is a quote from Wikipedia:<\/p>\n<p><\/p>\n<blockquote><p>Within the first hour, up to 60% of all acquired information is forgotten; after 10 hours, 35% of what was learned remains in memory. The forgetting process then continues slowly, and after 6 days, about 20% of the originally learned material remains in memory, and the same amount remains after a month.<\/p><\/blockquote>\n<p>And the conclusion is <\/p>\n<p><\/p>\n<blockquote><p>The conclusions we can draw from this curve are that for effective memorization, it is essential to repeat the material learned.<\/p><\/blockquote>\n<p>So we have arrived at the idea of <noindex>spaced repetition<\/noindex>.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/\">ANKI<\/a><\/noindex> This is a completely free open-source program that implements the idea of spaced repetition. In simple terms, computerized flashcards, with a question on one side and an answer on the other. Since you can create questions\/answers using ordinary <em>html\/css\/javascript<\/em>, it can be said that it has truly limitless possibilities. Additionally, it is extensible with special <noindex><a rel=\"nofollow\" href=\"https:\/\/ankiweb.net\/shared\/addons\/\">plugins<\/a><\/noindex>, and one of them will be very useful to us later.<\/p>\n<p><\/p>\n<p>Creating cards manually is tedious and time-consuming, and there's a high likelihood that after some time you'll give up on it. So at some point, I asked myself if it was possible to automate this process. The answer is yes, it is possible. And I did it. I'll say right away, it's more of a <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Proof_of_concept\">POC (Proof of concept)<\/a><\/noindex>, but one that is usable. If there is interest from users and other developers join in, it can be developed into a finished product that even technically illiterate users can use. For now, using my utility requires some programming knowledge.<\/p>\n<p><\/p>\n<p>I read books using the program <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.neverland.alreader&amp;hl=en\">AIReader<\/a><\/noindex>. It has the capability to connect external dictionaries, and when translating a word, it saves the word you called for translation in a text file. The only remaining task is to translate these words and create ANKI cards.<\/p>\n<p><\/p>\n<p>At first, I tried using <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. But with free services, it didn't work out. I exhausted the free limit just during the development phase, and according to the license conditions, I wasn't allowed to cache words. At some point, I realized that I needed to translate the words myself. In the end, a module was written called <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/dsl2html\">dsl2html<\/a><\/noindex> to which you can connect <noindex><a rel=\"nofollow\" href=\"http:\/\/lingvo.helpmax.net\/en\/troubleshooting\/dsl-compiler\/dsl-dictionary-structure\/\">DSL dictionaries<\/a><\/noindex> and which can convert them into <em>HTML<\/em> format. <\/p>\n<p><\/p>\n<p>Here's how a dictionary entry looks in *<em>.html<\/em>, my version compared to the version <noindex><a rel=\"nofollow\" href=\"http:\/\/goldendict.org\/\">GoldenDict<\/a><\/noindex><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Two stories of how ANKI can help you learn a foreign language and prepare for an interview\" src=\"\/wp-content\/uploads\/2019\/06\/98317e694331c5764fe890827d59e3b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Before searching for a word in the connected dictionaries, I bring it to its <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\">dictionary form (lemma)<\/a><\/noindex> using the library <noindex><a rel=\"nofollow\" href=\"https:\/\/stanfordnlp.github.io\/CoreNLP\/\">Stanford CoreNLP<\/a><\/noindex>. In fact, because of this library, I started writing in Java, and the initial plan was to write everything in Java, but during the process, I found the library <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/joeferner\/node-java\">node-java<\/a><\/noindex> which allows you to execute Java code from nodejs relatively easily, and part of the code is written in JavaScript. If I had found this library earlier, I wouldn't have written a single line in Java. Another side project that emerged in the process is the creation of <noindex><a rel=\"nofollow\" href=\"https:\/\/anatoly314.github.io\/dsl-manual\/\">a repository with DSL documentation<\/a><\/noindex> that was found online in the format *<em>.chm<\/em>, converted, and brought into a usable format. If the author of the original file, a user by the nickname <strong>yozhic<\/strong> , sees this article, I want to thank him greatly for his work; without his documentation, I probably wouldn't have succeeded.<\/p>\n<p><\/p>\n<p>So, I have a word in English, its lexical entry in the format *<em>.html<\/em>, now it's time to bring everything together, create ANKI entries from the word list, and add them to the ANKI database. For this purpose, the following project was created <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex>. It can take a list of words as input, translate them, create ANKI *<em>.html<\/em> entries, and store them in the ANKI database. At the end of the article, there are instructions on how to use it. Meanwhile, this is the second story where spaced repetition can be useful.<\/p>\n<p><\/p>\n<h2 id=\"istoriya-vtoraya\">The second story.<\/h2>\n<p><\/p>\n<p>All individuals searching for a more or less qualified specialty, including programmers, face the need to prepare for interviews. Many concepts asked in interviews are not used in everyday practice and are forgotten. During my next interview preparation, while flipping through notes, a book, or a reference guide, I found that a lot of time and attention goes into sorting out information that you already know, because it is not always obvious and requires careful reading to determine its relevance. When you approach a topic that truly needs repetition, it is often the case that you are already tired, and the quality of preparation suffers. At some point, I thought, why not use ANKI cards for this? For example, while summarizing a topic, you could immediately create a summary in the form of a question and answer, and then during repetition, you would immediately know whether you know the answer to that question or not.<\/p>\n<p><\/p>\n<p>The problem only arose in that entering questions is very time-consuming and tedious. To simplify the process, I <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex> added functionality to the project to convert <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Markdown\">markdown<\/a><\/noindex> Text in ANKI cards. All you need to do is write one large file where the questions and answers are marked with a predetermined sequence of characters, so the parser understands where the question is and where the answer is.<\/p>\n<p><\/p>\n<p>Once this file is created, you run data2anki and it generates ANKI cards. The original file is easy to edit and share; you just need to delete the corresponding card(s) and run the program again, and a new version will be created.<\/p>\n<p><\/p>\n<h2 id=\"ustanovka-i-polzovaniyu\">Installation and Usage<\/h2>\n<p><\/p>\n<ol>\n<li>\n<p>Installing ANKI + AnkiConnect<\/p>\n<p><\/p>\n<ol>\n<li>Download ANKI from here: <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/\">https:\/\/apps.ankiweb.net\/<\/a><\/noindex><\/li>\n<li>Install the AnkiConnect plugin: <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>Installation <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex><\/p>\n<p><\/p>\n<ol>\n<li>Download <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/anatoly314\/data2anki\">data2anki<\/a><\/noindex> from the GitHub repository\n<pre><code class=\"plaintext\">git clone https:\/\/github.com\/anatoly314\/data2anki<\/code><\/pre>\n<\/li>\n<li>Install dependencies\n<pre><code class=\"plaintext\">cd data2anki &amp;&amp; npm install<\/code><\/pre>\n<\/li>\n<li>Download Java dependencies <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>Unpack it <strong>jar-dependencies.zip<\/strong> and place its contents in <strong>data2anki\/java\/jars<\/strong><\/li>\n<\/ol>\n<p>\n<\/li>\n<li>\n<p>Usage for word translation:<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>In the file <strong>data2anki\/config.json<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>in the key <strong>mode<\/strong> you specify the value <strong>dsl2anki<\/strong><\/p>\n<p>\n<\/li>\n<li>\n<p>in the key <strong>modules.dsl.anki.deckName<\/strong> and <strong>modules.dsl.anki.modelName<\/strong> you specify, respectively, <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#decks\">Deck Name<\/a><\/noindex> and <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#note-types\">Model Name<\/a><\/noindex> (should already be created before creating cards). Currently, only the model type is supported <strong>Basic<\/strong>:<\/p>\n<p><\/p>\n<blockquote><p>Has Front and Back fields, and will create one card. Text you enter in Front will appear on the front of the card, and text you enter in Back will appear on the back of the card. <\/p><\/blockquote>\n<p>where the source word is <em>Front field<\/em>, and the translation will be in <em>Back field<\/em>. <\/p>\n<p><\/p>\n<p>There is no problem adding support for <strong>Basic (and reversed card)<\/strong>, where a reverse card will be created for the word and translation, where you'll need to recall the original word based on the translation. You just need to have the time and desire.<\/p>\n<p>\n<\/li>\n<li>\n<p>in the key <strong>modules.dsl.dictionariesPath<\/strong> you specify an array with connected *<em>.dsl<\/em> dictionaries. Each connected dictionary is a directory containing dictionary files formatted as follows: <noindex><a rel=\"nofollow\" href=\"https:\/\/anatoly314.github.io\/dsl-manual\/#dict.html\">DSL Dictionary Structure<br \/>\n<\/a><\/noindex><\/p>\n<p>\n<\/li>\n<li>\n<p>in the key <strong>modules.dsl.wordToTranslatePath<\/strong> you specify the path to the list of words you want to translate.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p>\n<\/li>\n<li>You run it while ANKI is working \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>Usage for creating cards from markdown<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>In the file <strong>data2anki\/config.json<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>in the key <strong>mode<\/strong> you specify the value <strong>markdown2anki<\/strong><\/li>\n<li>in the key <strong>modules.markdown.anki.deckName<\/strong> and <strong>modules.dsl.anki.modelName<\/strong> you specify, respectively, <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#decks\">Deck Name<\/a><\/noindex> and <noindex><a rel=\"nofollow\" href=\"https:\/\/apps.ankiweb.net\/docs\/manual.html#note-types\">Model Name<\/a><\/noindex> (should already be created before creating cards). For <strong>markdown2anki<\/strong> mode only the model type is supported <strong>Basic<\/strong>.<\/li>\n<li>\n<p>in the key <strong>modules.markdown.selectors.startQuestionSelectors<\/strong> and <strong>modules.markdown.selectors.startAnswerSelectors<\/strong> you specify the selectors that mark the beginning of the question and answer, respectively. The line with the selector will not be parsed and will not appear on the card; the parser will start working from the next line. <\/p>\n<p><\/p>\n<h5 id=\"naprimer-vot-eta-kartochka-voprosotvet\">For example, this question\/answer card:<\/h5>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Two stories of how ANKI can help you learn a foreign language and prepare for an interview\" 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\">Will look like this in markdown:<\/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>Example taken from here: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ganqqwerty\/123-Essential-JavaScript-Interview-Questions\">123-JavaScript-Interview-Questions<\/a><\/noindex><\/p><\/blockquote>\n<p>There is also a file with examples in the project folder <code>examples\/markdown2anki-example.md<\/code><\/p>\n<p>\n<\/li>\n<li>in the key <strong>modules.markdown.pathToFile<\/strong><br \/>\nspecify the path to the file where it is located *<em>.md<\/em> file with questions\/answers<\/li>\n<\/ul>\n<p>\n<\/li>\n<li>You run it while ANKI is working\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\">This is how it looks on a mobile phone:<\/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=\"Play 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\">Result<\/h2>\n<p><\/p>\n<p>The cards obtained on the desktop version of ANKI sync without issues with the ANKI cloud (free up to 100mb), and thereafter you can use them everywhere. There are clients for Android and iPhone, and it can also be accessed via a browser. As a result, if you have time that you don't know how to spend, instead of aimlessly scrolling through Facebook or cat videos on Instagram, you could learn something new. <\/p>\n<p><\/p>\n<h2 id=\"epilog\">Epilogue<\/h2>\n<p><\/p>\n<p>As I mentioned, this is more of a working POC that can be used rather than a finished product. About 30% of the DSL parser standard is not implemented, and therefore, <noindex><a rel=\"nofollow\" href=\"https:\/\/anatoly314.github.io\/dsl-manual\/#tag_service.html#alt\">for example, not all dictionary articles that are available in dictionaries can be found<\/a><\/noindex>, there is also an idea to rewrite it in <em>JavaScript<\/em>, as there is a desire for \"consistency,\" and moreover, it is currently written not very optimally. Right now, the parser constructs a tree, which I think is unnecessary and complicates the code. <strong>markdown2anki<\/strong> image mode, images are not parsed. I will try to gradually refine it, but since I am writing for myself for now, I will primarily address the issues I encounter myself; however, if anyone wants to help, they are more than welcome. If there are questions regarding the program, I will be happy to assist through open issues in the respective projects. Other critiques and suggestions can be sent here. I hope this project will be useful to someone.<\/p>\n<p><\/p>\n<p>P.S. If you notice errors (and unfortunately there are some), please message me, and I will correct everything.<\/p>\n<p>Source: <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\/en\/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=\"en_US\" \/>\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\/en\/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\udd47Two stories of how ANKI can help you learn a foreign language and prepare for an interview | ProHoster","description":"I have always believed that a lazy programmer is a good programmer. Why? Because if you ask a hardworking one to do something, he will just go and do it.","canonical_url":"https:\/\/prohoster.info\/en\/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":"en_US","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\/en\/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\/en\/wp-json\/wp\/v2\/posts\/34845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=34845"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/34845\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/26237"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=34845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=34845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=34845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}