Две приче о томе како АНКИ може да вам помогне да научите страни језик и припремите се за интервјуе

Увек сам веровао да је лењи програмер добар програмер. Зашто? Јер замолите вредног радника да уради нешто, он ће отићи и урадити. А лењи програмер ће потрошити 2-3 пута више времена, али ће написати скрипту која ће то учинити уместо њега. Можда ће требати неразумно дуго да се ово уради први пут, али са поновљеним задацима овај приступ ће се врло брзо исплатити. Сматрам се лењим програмером. То је била преамбула, а сада да пређемо на посао.

Прича прва

Пре неколико година сам се питао како да побољшам свој енглески. Ништа боље није пало на памет од читања литературе. Купио сам електронски читач, преузео књиге и почео сам да читам. Читајући, стално сам наилазио на непознате речи. Одмах сам их превео користећи речнике уграђене у читач, али сам приметио једну особину: речи нису хтеле да се памте. Када сам неколико страница касније поново наишао на ову реч, са вероватноћом од 90% поново ми је био потребан превод, и то се дешавало сваки пут. Закључак је био да није довољно само превести непознате речи док читате, већ треба радити нешто друго. Идеална опција би била да га уведем у свакодневни живот и почнем да га користим, али ја не живим у земљи енглеског говорног подручја и то је мало вероватно. Онда сам се сетио да сам једном читао Спацед Репетитион.

Шта је то и са чиме се једе? Укратко, постоји ово крива заборава, даље цитат са Википедије:

Већ у току првог сата заборавља се до 60% свих примљених информација; 10 сати након памћења, 35% наученог остаје у меморији. Затим процес заборављања тече полако и након 6 дана у меморији остаје око 20% од укупног броја иницијално научених слогова, а исто толико у меморији након месец дана.

И закључак одавде

Закључци који се могу извести на основу ове криве су да је за ефикасно памћење неопходно понављање наученог градива.

Па смо дошли на идеју размакнуто понављање.

АНКИ је потпуно бесплатан програм отвореног кода који имплементира идеју размакнутог понављања. Једноставно речено, компјутеризоване флеш картице имају питање на једној страни и одговор на другој. Пошто можете да постављате питања/одговоре користећи обичне хтмл/цсс/јавасцрипт, онда можемо рећи да има заиста неограничене могућности. Поред тога, може се проширити посебним додаци, а један од њих ће нам бити од велике користи у будућности.

Ручно креирање карата је дуго, заморно и са великом вероватноћом, после неког времена ћете заборавити на овај задатак, па сам у једном тренутку поставио себи питање да ли је могуће аутоматизовати овај задатак. Одговор је да, можете. И урадио сам то. Одмах ћу рећи, више је ПОЦ (доказ концепта), али који се може користити. Ако постоји интересовање корисника и укључе се други програмери, онда се то може довести до готовог производа који чак и технички неписмени корисници могу да користе. Сада, коришћење мог услужног програма захтева одређено знање о програмирању.

Читам књиге користећи програм АИРеадер. Има могућност повезивања екстерних речника, а када преведете реч, он чува реч коју сте позвали за превод у текстуалну датотеку. Остаје само да преведете ове речи и креирате АНКИ картице.

У почетку сам покушао да користим за превод Гоогле Транслате, Лингво АПИ итд. Али ствари нису ишле са бесплатним услугама. Исцрпео сам слободан лимит током процеса развоја, осим тога, према условима лиценце, нисам имао право да кешујем речи. У неком тренутку сам схватио да морам сам да преведем речи. Као резултат, написан је модул дсл2хтмл на који се можете повезати ДСЛ речници и ко зна да их претвори у ХТМЛ- formatu.

Овако изгледа унос из речника у *Хтмл., моја опција у поређењу са опцијом ГолденДицт

Две приче о томе како АНКИ може да вам помогне да научите страни језик и припремите се за интервјуе

Пре него што потражим реч у повезаним речницима, доводим је до облик речника (лема) користећи библиотеку Станфорд ЦореНЛП. У ствари, због ове библиотеке сам почео да пишем на Јави и првобитни план је био да све напишем на Јави, али сам у процесу пронашао библиотеку ноде-јава са којим можете релативно лако извршити Јава код из нодејс-а и део кода је написан у ЈаваСцрипт-у. Да сам раније пронашао ову библиотеку, ни један ред не би био написан у Јави. Још један споредни пројекат који је рођен у том процесу је стварање спремиште са ДСЛ документацијом који је пронађен на мрежи у формату *.цхм, претворен и доведен у божански облик. Ако је аутор оригиналне датотеке корисник по надимку иозхиц Када види овај чланак, много му се захваљујем на послу који је урадио; без његове документације највероватније не бих успео.

Дакле, имам реч на енглеском, њен унос у речнику у формату *Хтмл., остаје само да се све састави, креирају АНКИ чланци из листе речи и унесу у АНКИ базу података. У ту сврху креиран је следећи пројекат дата2анки. Може узети листу речи као унос, превести, креирати АНКИ *Хтмл. чланке и евидентирати их у АНКИ бази података. На крају чланка налазе се упутства о томе како да га користите. У међувремену, друга прича је у којој размакнута понављања могу бити корисна.

Друга прича.

Сви људи који траже више/мање квалификовану специјалност, укључујући програмере, суочени су са потребом да се припреме за интервју. Многе од појмова који се питају у интервјуима не користите у свакодневној пракси и они се заборављају. Припремајући се за интервју, прелиставајући белешке, књигу, приручник, суочио сам се са чињеницом да је потребно много времена и пажње да се пробију информације које већ знате јер нису увек очигледне и морате пажљиво прочитајте да бисте разумели о чему се ради.небитно. Када дођете до теме коју заиста треба поновити, често се деси да сте већ уморни и да пати квалитет ваше припреме. У неком тренутку сам помислио, зашто не бих користио АНКИ картице и за ово? На пример, када правите белешке о некој теми, одмах направите белешку у виду питања и одговора, а онда када је поновите, одмах ћете знати да ли знате одговор на ово питање или не.

Једини проблем који се појавио је тај што је куцање питања било веома дуго и заморно. Да бисте олакшали процес, дата2анки пројекат Додао сам функцију конверзије маркдовн текст на АНКИ картицама. Све што је потребно је да напишете једну велику датотеку у којој ће питања и одговори бити означени унапред одређеним низом знакова, по којима ће парсер разумети где је питање, а где одговор.

Када се овај фајл креира, покрећете дата2анки и он креира АНКИ картице. Оригинални фајл се лако мења и дели, само треба да обришете одговарајућу картицу(е) и поново покренете програм, а нова верзија ће бити креирана.

Инсталација и употреба

  1. Инсталирање АНКИ + АнкиЦоннецт

    1. Преузмите АНКИ одавде: https://apps.ankiweb.net/
    2. Инсталирајте додатак АнкиЦоннецт: https://ankiweb.net/shared/info/2055492159

  2. Инсталација дата2анки

    1. Преузимање дата2анки из гитхуб спремишта
      git clone https://github.com/anatoly314/data2anki
    2. Инсталирајте зависности
      cd data2anki && npm install
    3. Преузмите јава зависности https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Распакивање јар-зависности.зип и ставите њен садржај дата2анки/јава/јарс

  3. Користите за превођење речи:

    1. У фајлу дата2анки/цонфиг.јсон:

      • у кључу начин унесите вредност дсл2анки

      • у кључу модулес.дсл.анки.децкНаме и модулес.дсл.анки.моделНаме писати у складу са тим Децк Наме и Име модела (већ мора бити креиран пре креирања картица). Тренутно је подржан само тип модела основни:

        Има предње и задње поље и креираће једну картицу. Текст који унесете испред ће се појавити на предњој страни картице, а текст који унесете на полеђини ће се појавити на полеђини картице.

        где је оригинална реч? Предње поље, а превод ће бити у Задње поље.

        Нема проблема са додавањем подршке Основна (и обрнута картица), где ће бити направљена обрнута картица за реч и превод, где ћете на основу превода морати да запамтите оригиналну реч. Све што вам треба је време и жеља.

      • у кључу модулес.дсл.дицтионариесПатх региструјте низ са повезаним *.дсл речници. Сваки повезани речник је директоријум у коме се налазе датотеке речника у складу са форматом: Структура ДСЛ речника

      • у кључу модулес.дсл.вордТоТранслатеПатх унесите путању до листе речи које желите да преведете.

    2. Покрените са покренутом АНКИ апликацијом
      node data2ankiindex.js
    3. ДОБИТАК !!!

  4. Користи се за креирање картица од мардовна

    1. У фајлу дата2анки/цонфиг.јсон:

      • у кључу начин унесите вредност маркдовн2анки
      • у кључу модулес.маркдовн.анки.децкНаме и модулес.дсл.анки.моделНаме писати у складу са тим Децк Наме и Име модела (већ мора бити креиран пре креирања картица). За маркдовн2анки подржан је само тип модела основни.
      • у кључу модулес.маркдовн.селецторс.стартКуестионСелецторс и модулес.маркдовн.селецторс.стартАнсверСелецторс пишете селекторе којима означавате почетак питања, односно одговор. Сам ред са селектором неће бити рашчлањен и неће завршити на картици; парсер ће почети да ради од следећег реда.

        На пример, ова картица са питањем/одговором:

        Две приче о томе како АНКИ може да вам помогне да научите страни језик и припремите се за интервјуе

        У маркдовну ће изгледати овако:
        #ПИТАЊЕ# ## Питање 5. Напишите мул функцију која ће исправно радити када се позове са следећом синтаксом. ```јавасцрипт цонсоле.лог(мул(2)(3)(4)); // излаз : 24 цонсоле.лог(мул(4)(3)(4)); // излаз : 48 ``` #АНСВЕР# Испод је код праћен објашњењем како функционише: ```јавасцрипт фунцтион мул (к) { ретурн фунцтион (и) { // анонимна функција ретурн фунцтион (з) { // анонимна функција ретурн к * и * з; }; }; } ``` Овде функција `мул` прихвата први аргумент и враћа анонимну функцију која узима други параметар и враћа анонимну функцију која узима трећи параметар и враћа множење аргумената који се прослеђују узастопно у дефинисаној у Јавасцрипт функцији унутра има приступ спољној функцијској променљивој, а функција је објекат прве класе тако да може бити враћена и од стране функције и прослеђена као аргумент у другој функцији. - Функција је инстанца типа Објецт - Функција може имати својства и има везу са својим конструкторским методом - Функција се може ускладиштити као променљива - Функција се може пренети као параметар другој функцији - Функција се може враћен из друге функције
        

        Пример преузет одавде: 123-ЈаваСцрипт-Интервју-Питања

        У фасцикли пројекта постоји и датотека са примерима examples/markdown2anki-example.md

      • у кључу модулес.маркдовн.патхТоФиле
        запишите путању до датотеке где је *.доктор медицине фајл питања/одговора

    2. Покрените са покренутом АНКИ апликацијом
      node data2ankiindex.js
    3. ДОБИТАК !!!

Овако то изгледа на мобилном телефону:

Резултат

Картице примљене на десктоп верзији АНКИ-ја синхронизују се без проблема са АНКИ облаком (бесплатно до 100мб), а затим их можете користити свуда. Постоје клијенти за Андроид и иПхоне, а можете га користити и у претраживачу. Као резултат тога, ако имате времена на које немате на шта да потрошите, онда уместо бесциљног листања по Фејсбуку или мачкама на Инстаграму, можете научити нешто ново.

Епилог

Као што сам споменуо, ово је више радни ПОЦ који можете користити него готов производ. Око 30% стандарда ДСЛ парсера није имплементирано, те стога, на пример, не могу се пронаћи сви речнички уноси који се налазе у речницима, постоји и идеја да се то препише JavaScript , јер желим „доследност“, а осим тога, сада није написано баш оптимално. Сада парсер гради стабло, али по мом мишљењу ово је непотребно и не треба да компликује код. ИН маркдовн2анки режим, слике се не рашчлањују. Покушаћу мало по мало да сечем, али пошто пишем за себе, пре свега ћу решити проблеме на које ћу и сам закорачити, али ако неко жели да помогне, онда је добродошао. Ако имате питања о програму, радо ћу помоћи у решавању отворених питања у релевантним пројектима. Остале критике и сугестије напишите овде. Надам се да ће овај пројекат некоме бити од користи.

ПС Ако приметите грешке (а, нажалост, има их), пишите ми у личну поруку, све ћу исправити.

Извор: ввв.хабр.цом

Додај коментар