ANKI танд гадаад хэл сурах, ярилцлагад бэлтгэхэд хэрхэн тусалж болох тухай хоёр түүх

Залхуу програмист бол сайн програмист гэдэгт би үргэлж итгэдэг. Яагаад? Яагаад гэвэл ажилсаг хүнээс юм гуй, тэр хүн очоод хийнэ. Залхуу програмист 2-3 дахин их цаг зарцуулах боловч түүнд зориулж хийх скрипт бичих болно. Эхний удаад үүнийг хийхэд үндэслэлгүй удаан хугацаа шаардагдаж магадгүй ч давтан даалгавруудыг хийснээр энэ арга нь маш хурдан үр дүнгээ өгөх болно. Би өөрийгөө залхуу програмист гэж боддог. Энэ бол оршил байсан, одоо ажилдаа орцгооё.

Нэгдүгээр түүх

Хэдэн жилийн өмнө би англи хэлээ яаж сайжруулах вэ гэж бодож байсан. Уран зохиол унших шиг сайхан зүйл санаанд орж ирсэнгүй. Би цахим уншигч худалдаж аваад, ном татаж аваад уншиж эхлэв. Уншиж байхдаа танихгүй үгстэй тааралдсаар л. Уншигчдад суулгасан толь бичгүүдийг ашиглан би тэр даруй орчуулсан боловч би нэг онцлог шинжийг анзаарсан: үгс нь санахыг хүсээгүй. Хэдэн хуудасны дараа би энэ үгтэй дахин таарахад 90% магадлалтайгаар дахин орчуулга хийх шаардлагатай болсон гэх мэт. Уншиж байхдаа танихгүй үгсийг орчуулах нь хангалтгүй, өөр зүйл хийх хэрэгтэй гэсэн дүгнэлт гарсан. Үүнийг өдөр тутмын амьдралдаа нэвтрүүлж, ашиглаж эхлэх нь хамгийн тохиромжтой сонголт байх болно, гэхдээ би англиар ярьдаг улсад амьдардаггүй бөгөөд энэ нь боломжгүй юм. Тэгээд нэг удаа уншсанаа санав Завсрын давталт.

Энэ юу вэ, юугаар хооллодог вэ? Товчхондоо ийм байна мартах муруй, Википедиагаас иш татсан:

Эхний нэг цагийн дотор хүлээн авсан бүх мэдээллийн 60 хүртэлх хувийг мартдаг бол цээжилснээс хойш 10 цагийн дараа сурсан зүйлийн 35% нь санах ойд үлддэг. Дараа нь мартах үйл явц аажмаар үргэлжилж, 6 хоногийн дараа анх сурсан үгсийн нийт тооны 20 орчим хувь нь санах ойд үлдэж, сарын дараа мөн адил хэмжээ нь санах ойд үлддэг.

Тэгээд эндээс дүгнэлт

Энэ муруй дээр үндэслэн хийж болох дүгнэлтүүд нь үр дүнтэй цээжлэхийн тулд цээжилсэн материалыг давтах шаардлагатай байдаг.

Тиймээс бид нэг санаа олсон зайтай давталт.

АНКИ зай завсарлагатай давталтын санааг хэрэгжүүлдэг бүрэн чөлөөтэй, нээлттэй эхийн програм юм. Энгийнээр хэлэхэд компьютержсэн флаш картууд нэг талдаа асуулт, нөгөө талдаа хариулттай байдаг. Учир нь та асуулт/хариултыг тогтмол ашиглан хийж болно html/css/javascript, тэгвэл энэ нь үнэхээр хязгааргүй боломжуудтай гэж хэлж болно. Нэмж дурдахад тусгай зориулалтын тусламжтайгаар өргөтгөх боломжтой залгаасууд, тэдгээрийн нэг нь ирээдүйд бидэнд маш их хэрэг болно.

Гараар карт үүсгэх нь урт, уйтгартай бөгөөд хэсэг хугацааны дараа та энэ даалгаврыг мартах магадлал өндөр тул хэзээ нэгэн цагт би энэ ажлыг автоматжуулах боломжтой юу гэсэн асуултыг өөрөөсөө асуув. Хариулт нь тийм ээ, та чадна. Тэгээд би үүнийг хийсэн. Би шууд хэлье, энэ нь илүү их юм POC (Үзэл баримтлалын баталгаа), гэхдээ аль нь ашиглаж болно. Хэрэв хэрэглэгчид болон бусад хөгжүүлэгчдийн сонирхол байгаа бол үүнийг техникийн мэдлэггүй хэрэглэгчид ч ашиглах боломжтой бэлэн бүтээгдэхүүн болгон боловсруулж болно. Одоо миний хэрэглүүрийг ашиглахын тулд програмчлалын талаар тодорхой мэдлэг шаардагдана.

Би программыг ашиглан ном уншдаг Агааржуулагч. Энэ нь гадаад толь бичгүүдийг холбох чадвартай бөгөөд тухайн үгийг орчуулах үед орчуулгад дуудсан үгийг текст файлд хадгалдаг. Эдгээр үгсийг орчуулж, ANKI карт үүсгэх л үлдлээ.

Эхэндээ би орчуулга хийх гэж оролдсон Google Translate, Lingvo API гэх мэт. Гэвч үнэ төлбөргүй үйлчилгээнд бүх зүйл бүтсэнгүй. Би хөгжүүлэлтийн явцад чөлөөт хязгаараа дуусгасан, үүнээс гадна лицензийн нөхцлийн дагуу би үгсийг кэш хийх эрхгүй байсан. Хэзээ нэгэн цагт би энэ үгийг өөрөө орчуулах хэрэгтэй гэдгээ ойлгосон. Үүний үр дүнд модуль бичигдсэн dsl2html та холбогдох боломжтой DSL толь бичиг мөн тэдгээрийг хэрхэн хувиргахаа хэн мэдэх билээ HTML формат.

*-д толь бичгийн оруулга ийм харагдаж байна..html, миний сонголтыг сонголттой харьцуулсан GoldenDict

ANKI танд гадаад хэл сурах, ярилцлагад бэлтгэхэд хэрхэн тусалж болох тухай хоёр түүх

Холбогдсон толь бичгүүдээс үг хайхын өмнө би үүнийг авчирдаг толь бичгийн хэлбэр (лемма) номын санг ашиглах Стэнфордын CoreNLP. Уг нь энэ номын сангаас болж би Java хэлээр бичиж эхэлсэн бөгөөд анхны төлөвлөгөө нь бүх зүйлийг Java хэл дээр бичих байсан ч энэ явцад би номын санг олсон. зангилаа-жава Үүний тусламжтайгаар та nodejs-аас Java кодыг харьцангуй хялбар гүйцэтгэх боломжтой бөгөөд зарим кодын JavaScript дээр бичигдсэн байдаг. Хэрэв би энэ номын санг өмнө нь олсон бол Жава хэл дээр нэг ч мөр бичихгүй байсан. Энэ явцад бий болсон өөр нэг талын төсөл бол бүтээл юм DSL баримт бичиг бүхий репозитор * форматаар сүлжээнд олдсон.chm, хувиргаж, бурханлаг хэлбэрт оруулсан. Хэрэв эх файлын зохиогч нь хочтой хэрэглэгч бол йожик Тэр энэ нийтлэлийг хараад би түүний хийсэн ажилд маш их талархаж байна; түүний бичиг баримтгүйгээр би амжилтанд хүрэхгүй байх байсан.

Тиймээс, надад англи хэл дээр нэг үг байна, түүний толь бичиг нь форматтай *.html, бүх зүйлийг нэгтгэж, үгсийн жагсаалтаас ANKI нийтлэл үүсгэж, ANKI мэдээллийн санд оруулах л үлдлээ. Үүний тулд дараах төслийг бий болгосон өгөгдөл2анки. Энэ нь үгийн жагсаалтыг оруулах, орчуулах, ANKI үүсгэх боломжтой *.html нийтлэл, тэдгээрийг ANKI мэдээллийн санд бүртгэнэ. Өгүүллийн төгсгөлд үүнийг хэрхэн ашиглах заавар байгаа. Энэ хооронд хоёрдахь түүх бол завсарлагатай давталт нь ашигтай байж болох газар юм.

Хоёр дахь түүх.

Программист гэх мэт илүү их / бага мэргэшсэн мэргэжил хайж байгаа бүх хүмүүс ярилцлагад бэлтгэх шаардлагатай тулгардаг. Ярилцлагын үеэр асуудаг олон ойлголтыг өдөр тутмын амьдралдаа ашигладаггүй бөгөөд мартагддаг. Ярилцлагад бэлдэж, тэмдэглэл, ном, лавлах номыг эргүүлж байхдаа аль хэдийн мэддэг байсан мэдээллийг шүүж авах нь маш их цаг хугацаа, анхаарал шаарддаг тул энэ нь үргэлж тодорхой байдаггүй тул та үүнийг хийх ёстой гэсэн асуудалтай тулгарсан. энэ нь юу болохыг ойлгохын тулд анхааралтай уншина уу. хамааралгүй. Та үнэхээр давтагдах шаардлагатай сэдэв дээр ирэхэд та аль хэдийн ядарч, бэлтгэлийн чанар муудах тохиолдол гардаг. Хэзээ нэгэн цагт би ANKI картыг яагаад ашиглаж болохгүй гэж бодсон юм бэ? Жишээлбэл, ямар нэгэн сэдвээр тэмдэглэл хөтлөхдөө асуулт хариултын хэлбэрээр нэн даруй тэмдэглэл үүсгэж, дараа нь үүнийг давтах үед та энэ асуултын хариултыг мэддэг эсэхээ шууд мэдэх болно.

Асуулт бичих нь маш урт бөгөөд уйтгартай байсан нь цорын ганц асуудал байсан юм. Үйл явцыг хөнгөвчлөхийн тулд, өгөгдөл2анки төсөл би хөрвүүлэх функцийг нэмсэн markdown ANKI карт дээрх текст. Танд хэрэгтэй зүйл бол асуулт, хариултыг урьдчилан тодорхойлсон тэмдэгтүүдийн дарааллаар тэмдэглэх нэг том файл бичих бөгөөд үүгээрээ задлан шинжлэгч асуулт хаана, хариулт нь хаана байгааг ойлгох болно.

Энэ файлыг үүсгэсний дараа та data2anki-г ажиллуулж, ANKI картуудыг үүсгэдэг. Анхны файлыг засах, хуваалцахад хялбар, та тохирох карт(ууд)-ыг устгаад програмыг дахин ажиллуулахад л шинэ хувилбар үүснэ.

Суурилуулалт, ашиглалт

  1. ANKI + AnkiConnect суулгаж байна

    1. ANKI-г эндээс татаж авна уу: https://apps.ankiweb.net/
    2. AnkiConnect залгаасыг суулгана уу: https://ankiweb.net/shared/info/2055492159

  2. тохиргоо өгөгдөл2анки

    1. Татаж авах өгөгдөл2анки github репозитороос
      git clone https://github.com/anatoly314/data2anki
    2. Хамаарал суулгах
      cd data2anki && npm install
    3. Java хамаарлыг татаж авах https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Савлаж байна jar-dependencies.zip болон агуулгыг нь байрлуул data2anki/java/jars

  3. Үгсийг орчуулахдаа ашиглана уу:

    1. Файлд data2anki/config.json:

      • түлхүүр дээр горим утгыг оруулна уу dsl2anki

      • түлхүүр дээр modules.dsl.anki.deckName и modules.dsl.anki.modelName дагуу бичих Тавцангийн нэр и загвар нэр (карт үүсгэхээс өмнө аль хэдийн үүсгэгдсэн байх ёстой). Одоогоор зөвхөн загварын төрлийг дэмждэг үндсэн:

        Урд болон хойд талбаруудтай бөгөөд нэг карт үүсгэх болно. Урд хэсэгт оруулсан бичвэр картны нүүрэн талд гарч ирэх ба арын хэсэгт оруулсан текст картны ард гарч ирнэ.

        эх үг хаана байна? Урд талбар, орчуулга нь дотор байх болно Арын талбай.

        Дэмжлэг нэмэхэд асуудал байхгүй Үндсэн (болон урвуу карт), үг болон орчуулгын урвуу картыг үүсгэх бөгөөд орчуулгад үндэслэн та эх үгийг санах хэрэгтэй. Танд хэрэгтэй зүйл бол цаг хугацаа, хүсэл юм.

      • түлхүүр дээр modules.dsl.dictionariesPath холбогдсон массивыг бүртгэх *.dsl толь бичгүүд. Холбогдсон толь бичиг бүр нь толь бичгийн файлуудыг форматын дагуу байрлуулсан лавлах юм. DSL толь бичгийн бүтэц

      • түлхүүр дээр modules.dsl.wordToTranslatePath Орчуулахыг хүссэн үгсийнхээ жагсаалтад хүрэх замыг оруулна уу.

    2. ANKI програм ажиллаж байгаа үед ажиллуулна уу
      node data2ankiindex.js
    3. АШИГ!!!

  4. Markdown-аас карт үүсгэхэд ашигладаг

    1. Файлд data2anki/config.json:

      • түлхүүр дээр горим утгыг оруулна уу markdown2anki
      • түлхүүр дээр modules.markdown.anki.deckName и modules.dsl.anki.modelName дагуу бичих Тавцангийн нэр и загвар нэр (карт үүсгэхээс өмнө аль хэдийн үүсгэгдсэн байх ёстой). Учир нь markdown2anki горимын зөвхөн загварын төрлийг дэмждэг үндсэн.
      • түлхүүр дээр modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors та асуулт, хариултын эхлэлийг тэмдэглэсэн сонгогчдыг бичнэ. Сонгогчтой мөр нь өөрөө задлан шинжлэгдэхгүй бөгөөд картанд дуусахгүй; задлан шинжлэгч дараагийн мөрөөс ажиллаж эхэлнэ.

        Жишээлбэл, энэ асуулт/хариултын карт:

        ANKI танд гадаад хэл сурах, ярилцлагад бэлтгэхэд хэрхэн тусалж болох тухай хоёр түүх

        Энэ нь тэмдэглэгээнд иймэрхүү харагдах болно:
        #АСУУЛТ# ## Асуулт 5. Дараах синтаксаар дуудагдсан үед зөв ажиллах mul функц бичнэ үү. ```javascript console.log(mul(2)(3)(4)); // гаралт: 24 console.log(mul(4)(3)(4)); // гаралт : 48 ``` #Хариулт# Энэ нь хэрхэн ажилладаг талаар тайлбар бүхий кодыг доор харуулав: ```javascript функц mul (x) { буцах функц (y) { // нэргүй функц буцаах функц (z) { // нэргүй функц буцах x * y * z; }; }; } ``` Энд `mul` функц нь эхний аргументыг хүлээн авч, хоёр дахь параметрийг авах нэргүй функцийг буцаана, гурав дахь параметрийг авч, дараалан дамжуулж буй аргументуудын үржүүлгийг буцаана Javascript-д тодорхойлогдсон функцийг буцаана. inside нь гадаад функцийн хувьсагч руу хандах эрхтэй бөгөөд функц нь нэгдүгээр зэрэглэлийн объект тул функцээр буцаан өгч, өөр функцэд аргумент болгон дамжуулж болно. - Функц нь Объектын төрлийн жишээ юм - Функц нь шинж чанартай байж болох ба түүний үүсгэгчийн арга руу буцах холбоос байна - Функцийг хувьсагч болгон хадгалах боломжтой - Функцийг өөр функцэд параметр болгон дамжуулж болно. өөр функцээс буцаж ирсэн
        

        Эндээс авсан жишээ: 123-JavaScript-Ярилцлагын асуултууд

        Төслийн хавтсанд жишээнүүдтэй файл бас бий examples/markdown2anki-example.md

      • түлхүүр дээр modules.markdown.pathToFile
        файл руу очих замыг бичнэ үү..md асуулт/хариултын файл

    2. ANKI програм ажиллаж байгаа үед ажиллуулна уу
      node data2ankiindex.js
    3. АШИГ!!!

Энэ нь гар утсан дээр иймэрхүү харагдаж байна.

үр дүн

ANKI-ийн ширээний хувилбар дээр хүлээн авсан картууд нь ANKI үүлэнд ямар ч асуудалгүйгээр синхрончлогдсон (100 mb хүртэл үнэгүй), дараа нь та тэдгээрийг хаана ч ашиглах боломжтой. Android болон iPhone-д зориулсан үйлчлүүлэгчид байдаг бөгөөд та үүнийг хөтөч дээр ашиглах боломжтой. Үүний үр дүнд, хэрэв танд зарцуулах зүйлгүй цаг байгаа бол Facebook эсвэл Instagram дээр муурыг зорилгогүйгээр гүйлгэхийн оронд та шинэ зүйл сурч болно.

Эпилог

Миний дурьдсанчлан, энэ нь бэлэн бүтээгдэхүүн гэхээсээ илүүтэй ажиллах боломжтой POC юм. DSL задлагч стандартын 30 орчим хувь нь хэрэгжээгүй тул жишээ нь толь бичигт байгаа бүх толь бичгийг олж чадахгүй, үүнийг дахин бичих санаа бас бий JavaScript, учир нь би "тууштай байдлыг" хүсч байгаа бөгөөд үүнээс гадна одоо энэ нь тийм ч оновчтой бичигдээгүй байна. Одоо задлан шинжлэгч мод барьж байна, гэхдээ миний бодлоор энэ нь шаардлагагүй бөгөөд кодыг төвөгтэй болгох шаардлагагүй юм. IN markdown2anki горимд зураг задлан шинжилдэггүй. Би бага багаар таслахыг хичээх болно, гэхдээ би өөрөө өөртөө зориулж бичиж байгаа тул хамгийн түрүүнд өөрийнхөө гишгэх асуудлуудыг шийдэх болно, гэхдээ хэн нэгэн нь туслахыг хүсвэл урьж байна. Хэрэв танд хөтөлбөрийн талаар асуух зүйл байвал холбогдох төслүүдийн нээлттэй асуудлуудаар дамжуулан туслахдаа баяртай байх болно. Бусад шүүмжлэл, санал хүсэлтээ энд бичээрэй. Энэ төсөл хэн нэгэнд хэрэг болно гэж найдаж байна.

Жич Хэрэв та ямар нэг алдаа анзаарсан бол (харамсалтай нь зарим нь байгаа) надад хувийн мессежээр бичээрэй, би бүгдийг засах болно.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх