Kaksi tarinaa siitä, kuinka ANKI voi auttaa sinua oppimaan vieraan kielen ja valmistautumaan haastatteluun

Olen aina uskonut, että laiska ohjelmoija on hyvä ohjelmoija. Miksi? Koska pyydä ahkeraa työntekijää tekemään jotain, hän menee ja tekee sen. Ja laiska ohjelmoija viettää 2-3 kertaa enemmän aikaa, mutta kirjoittaa käsikirjoituksen, joka tekee sen hänen puolestaan. Ensimmäisellä kerralla voi kestää kohtuuttoman kauan, mutta toistuvilla tehtävillä tämä lähestymistapa maksaa itsensä hyvin nopeasti. Pidän itseäni laiskana ohjelmoijana. Tämä oli johdanto, nyt mennään asiaan.

Tarina yksi

Muutama vuosi sitten mietin, kuinka voisin parantaa englantiani. Mikään ei tullut parempaa mieleen kuin kirjallisuuden lukeminen. Ostin elektronisen lukijan, latasin kirjoja ja aloin lukemaan. Lukiessani törmäsin jatkuvasti tuntemattomiin sanoihin. Käänsin ne heti lukijaan sisäänrakennettujen sanakirjojen avulla, mutta huomasin yhden piirteen: sanat eivät halunneet jäädä mieleen. Kun törmäsin tähän sanaan uudelleen muutaman sivun kuluttua, tarvitsin 90 %:n todennäköisyydellä uudelleen käännöksen, ja tämä tapahtui joka kerta. Johtopäätös oli, että ei riitä, että vain kääntää tuntemattomia sanoja lukemisen aikana, sinun on tehtävä jotain muuta. Ihanteellinen vaihtoehto olisi tuoda se jokapäiväiseen elämään ja alkaa käyttää sitä, mutta en asu englanninkielisessä maassa ja tämä on epätodennäköistä. Sitten muistin lukeneeni joskus aiheesta Väliaikainen toisto.

Mitä se on ja minkä kanssa sitä syödään? Lyhyesti sanottuna tämä on olemassa unohduskäyrä, lisälainaus Wikipediasta:

Jo ensimmäisen tunnin aikana jopa 60 % kaikesta vastaanotetuista tiedoista unohtuu, 10 tuntia ulkoa muistamisen jälkeen 35 % opitusta jää muistiin. Sitten unohtamisprosessi etenee hitaasti, ja kuuden päivän kuluttua muistiin jää noin 6% alun perin opittujen tavujen kokonaismäärästä ja sama määrä kuukauden kuluttua.

Ja johtopäätös tästä

Tämän käyrän perusteella voidaan tehdä johtopäätöksiä, että tehokkaan ulkoamisen kannalta on välttämätöntä toistaa muistiin tallennettu materiaali.

Joten keksimme idean väliaikainen toisto.

АNKI on täysin ilmainen ja avoimen lähdekoodin ohjelma, joka toteuttaa ajatuksen aikavälistä toistosta. Yksinkertaisesti sanottuna tietokoneistetuissa flash-korteissa on kysymys toisella puolella ja vastaus toisella puolella. Koska voit tehdä kysymyksiä/vastauksia käyttämällä tavallista html/css/javascript, voimme sanoa, että sillä on todella rajattomat mahdollisuudet. Lisäksi se on laajennettavissa erikoisilla laajennuksia, ja yksi niistä on meille erittäin hyödyllinen tulevaisuudessa.

Manuaalinen korttien luominen on pitkää, työlästä ja suurella todennäköisyydellä hetken kuluttua tämä tehtävä unohtuu, joten jossain vaiheessa esitin itselleni kysymyksen, onko mahdollista automatisoida tämä tehtävä. Vastaus on kyllä, voit. Ja minä tein sen. Sanon heti, se on enemmän POC (Proof of Concept), mutta joita voidaan käyttää. Jos käyttäjät ovat kiinnostuneita ja muut kehittäjät tulevat mukaan, niin se voidaan viedä valmiiksi tuotteeksi, jota myös teknisesti lukutaidottomat käyttäjät voivat käyttää. Nyt apuohjelmani käyttäminen vaatii ohjelmointitaitoa.

Luen kirjoja ohjelman avulla AI-lukija. Sillä on mahdollisuus yhdistää ulkoisia sanakirjoja, ja kun käännät sanan, se tallentaa käännettäväksi pyytämäsi sanan tekstitiedostoon. Jäljelle jää vain kääntää nämä sanat ja luoda ANKI-kortteja.

Aluksi yritin käyttää kääntämiseen Google Translate, Lingvo API jne. Mutta asiat eivät toimineet ilmaisilla palveluilla. Käytin ilmaisen rajan loppuun kehitysprosessin aikana, lisäksi minulla ei lisenssiehtojen mukaan ollut oikeutta välimuistiin. Jossain vaiheessa tajusin, että minun piti kääntää sanat itse. Tämän seurauksena moduuli kirjoitettiin dsl2html johon voit muodostaa yhteyden DSL-sanakirjat ja kuka tietää, miten ne muunnetaan HTML muoto.

Tältä sanakirjamerkintä näyttää *. Html, minun vaihtoehtoni verrattuna vaihtoehtoon KultainenDict

Kaksi tarinaa siitä, kuinka ANKI voi auttaa sinua oppimaan vieraan kielen ja valmistautumaan haastatteluun

Ennen kuin etsin sanaa yhdistetyistä sanakirjoista, tuon sen kohtaan sanakirjamuoto (lemma) kirjastoa käyttämällä Stanfordin CoreNLP. Itse asiassa tämän kirjaston takia aloin kirjoittaa Javalla ja alkuperäinen suunnitelma oli kirjoittaa kaikki Javalla, mutta samalla löysin kirjaston. solmu-java jolla voi suhteellisen helposti suorittaa Java-koodia nodejista ja osa koodista on kirjoitettu JavaScriptillä. Jos olisin löytänyt tämän kirjaston aikaisemmin, yhtäkään riviä ei olisi kirjoitettu Javalla. Toinen prosessissa syntynyt sivuprojekti on luominen arkisto DSL-dokumentaatiolla joka löytyi verkosta muodossa *.chm, käännetty ja tuotu jumalalliseen muotoon. Jos alkuperäisen tiedoston kirjoittaja on käyttäjä lempinimellä yozhic Kun hän näkee tämän artikkelin, kiitän häntä suuresti hänen tekemästään työstä; ilman hänen dokumentointiaan en olisi todennäköisesti onnistunut.

Joten minulla on sana englanniksi, sen sanakirjamerkintä muodossa *. Html, jäljellä on vain koota kaikki yhteen, luoda sanaluettelosta ANKI-artikkeleita ja syöttää ne ANKI-tietokantaan. Tätä tarkoitusta varten luotiin seuraava projekti data2anki. Se voi syöttää sanaluettelon, kääntää, luoda ANKI *. Html artikkeleita ja tallenna ne ANKI-tietokantaan. Artikkelin lopussa on ohjeet sen käyttöön. Sillä välin toinen tarina on paikka, jossa jaksotetut toistot voivat olla hyödyllisiä.

Toinen tarina.

Kaikki ihmiset, jotka etsivät enemmän tai vähemmän pätevää erikoisalaa, mukaan lukien ohjelmoijat, joutuvat valmistautumaan haastatteluun. Monia haastatteluissa kysytyistä käsitteistä et käytä jokapäiväisessä käytännössä ja ne unohtuvat. Valmistautuessani haastatteluun, selaillessani muistiinpanoja, kirjaa, hakuteosta, jouduin siihen, että jo tiedossasi olevan tiedon seulominen vie paljon aikaa ja huomiota, koska se ei aina ole itsestään selvää ja sinun on lue se huolellisesti ymmärtääksesi, mitä se on. Kun tulet aiheeseen, joka todella kaipaa toistoa, usein käy niin, että olet jo väsynyt ja valmistautumisen laatu kärsii. Jossain vaiheessa ajattelin, että miksei tähänkin voisi käyttää ANKI-kortteja? Esimerkiksi kun teet muistiinpanoja aiheesta, luo heti huomautus kysymyksen ja vastauksen muodossa, ja sitten toistaessasi sen tiedät heti, tiedätkö vastauksen tähän kysymykseen vai et.

Ainoa ongelma, joka ilmeni, oli se, että kysymysten kirjoittaminen oli erittäin pitkää ja työlästä. Prosessin helpottamiseksi, data2anki projekti Lisäsin muunnostoiminnon hinnanalennus teksti ANKI-korteissa. Sinun tarvitsee vain kirjoittaa yksi iso tiedosto, johon kysymykset ja vastaukset merkitään ennalta määrätyllä merkkijonolla, jonka avulla jäsentäjä ymmärtää missä kysymys on ja missä on vastaus.

Kun tämä tiedosto on luotu, suoritat data2anki ja se luo ANKI-kortit. Alkuperäistä tiedostoa on helppo muokata ja jakaa, sinun tarvitsee vain tyhjentää vastaavat kortit ja suorittaa ohjelma uudelleen, niin uusi versio luodaan.

Asennus ja käyttö

  1. Asenna ANKI + AnkiConnect

    1. Lataa ANKI täältä: https://apps.ankiweb.net/
    2. Asenna AnkiConnect-laajennus: https://ankiweb.net/shared/info/2055492159

  2. Asennus data2anki

    1. ladata data2anki github-arkistosta
      git clone https://github.com/anatoly314/data2anki
    2. Asenna riippuvuudet
      cd data2anki && npm install
    3. Lataa java-riippuvuudet https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Purkaminen jar-dependencies.zip ja aseta sen sisältö sisään data2anki/java/jars

  3. Käytä sanojen kääntämiseen:

    1. Tiedostossa data2anki/config.json:

      • avaimessa tila syötä arvo dsl2anki

      • avaimessa modules.dsl.anki.deckName и modules.dsl.anki.modelName kirjoittaa sen mukaan Kannen nimi и Mallin nimi (täytyy luoda jo ennen korttien luomista). Tällä hetkellä vain mallityyppiä tuetaan Perus:

        Sisältää etu- ja takakentät ja luo yhden kortin. Eteen kirjoittamasi teksti näkyy kortin etupuolella ja Takaosaan kirjoittamasi teksti kortin takana.

        missä on alkuperäinen sana? Etukenttä, ja käännös tulee sisään Takakenttä.

        Tuen lisääminen ei ole ongelma Perus (ja käänteinen kortti), jossa sanalle ja käännökselle luodaan käänteinen kortti, jossa käännöksen perusteella sinun tulee muistaa alkuperäinen sana. Tarvitset vain aikaa ja halua.

      • avaimessa modules.dsl.dictionariesPath rekisteröi taulukko yhdistetyllä *.dsl sanakirjoja. Jokainen yhdistetty sanakirja on hakemisto, jossa sanakirjatiedostot sijaitsevat seuraavassa muodossa: DSL-sanakirjan rakenne

      • avaimessa modules.dsl.wordToTranslatePath kirjoita polku käännettävien sanojen luetteloon.

    2. Käynnistä ANKI-sovelluksen ollessa käynnissä
      node data2ankiindex.js
    3. VOITTO!!!

  4. Käytetään korttien luomiseen markdownista

    1. Tiedostossa data2anki/config.json:

      • avaimessa tila syötä arvo markdown2anki
      • avaimessa modules.markdown.anki.deckName и modules.dsl.anki.modelName kirjoittaa sen mukaan Kannen nimi и Mallin nimi (täytyy luoda jo ennen korttien luomista). varten markdown2anki tilassa vain mallityyppiä tuetaan Perus.
      • avaimessa modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors kirjoitat valitsimia, joilla merkitset kysymyksen ja vastauksen alun. Itse valitsinta sisältävää riviä ei jäsennetä eikä se päädy korttiin, vaan jäsentäjä alkaa toimia seuraavalta riviltä.

        Esimerkiksi tämä kysymys/vastauskortti:

        Kaksi tarinaa siitä, kuinka ANKI voi auttaa sinua oppimaan vieraan kielen ja valmistautumaan haastatteluun

        Markdownissa se näyttää tältä:
        #KYSYMYS# ## Kysymys 5. Kirjoita mul-funktio, joka toimii oikein, kun sitä kutsutaan seuraavalla syntaksilla. ```javascript console.log(mul(2)(3)(4)); // lähtö : 24 console.log(mul(4)(3)(4)); // lähtö : 48 ``` #ANSWER# Alla on koodi ja sen toiminnan selitys: ```javascript function mul (x) { return function (y) { // anonyymi funktio return function (z) { // anonyymi funktio palauttaa x * y * z; }; }; } ``` Tässä `mul`-funktio hyväksyy ensimmäisen argumentin ja palauttaa anonyymin funktion, joka ottaa toisen parametrin ja palauttaa anonyymin funktion, joka ottaa kolmannen parametrin ja palauttaa argumenttien kertolaskun, joka välitetään peräkkäisissä Javascript-funktiossa määritelty sisällä on pääsy ulkoiseen funktiomuuttujaan ja funktio on ensimmäisen luokan objekti, joten funktio voi myös palauttaa sen ja välittää argumenttina toisessa funktiossa. - Funktio on objektityypin esiintymä - Funktiolla voi olla ominaisuuksia ja linkki takaisin konstruktorimetodiinsa - Funktio voidaan tallentaa muuttujaksi - Funktio voidaan välittää parametrina toiselle funktiolle - Funktio voi olla palautetaan toisesta funktiosta
        

        Esimerkki otettu täältä: 123-JavaScript-haastattelu-kysymykset

        Projektikansiossa on myös tiedosto, jossa on esimerkkejä examples/markdown2anki-example.md

      • avaimessa modules.markdown.pathToFile
        kirjoita polku tiedostoon, jossa *.md kysymys/vastaus tiedosto

    2. Käynnistä ANKI-sovelluksen ollessa käynnissä
      node data2ankiindex.js
    3. VOITTO!!!

Tältä se näyttää matkapuhelimessa:

Tulos

ANKI:n työpöytäversiolla vastaanotetut kortit synkronoidaan ilman ongelmia ANKI-pilven kanssa (ilmainen 100 Mt asti), ja sitten voit käyttää niitä kaikkialla. Androidille ja iPhonelle on asiakkaita, ja niitä voi käyttää myös selaimessa. Tämän seurauksena, jos sinulla on aikaa, johon sinulla ei ole mitään kuluttavaa, voit oppia jotain uutta päämäärättömän Facebookin tai Instagramin kissojen selaamisen sijaan.

Epilogi

Kuten mainitsin, tämä on enemmän toimiva POC, jota voit käyttää, kuin valmis tuote. Noin 30 % DSL-jäsennysstandardista ei ole käytössä, joten Esimerkiksi kaikkia sanakirjoissa olevia sanakirjamerkintöjä ei löydy, on myös idea kirjoittaa se uudelleen JavaScript, koska haluan "johdonmukaisuutta", ja sitä paitsi nyt sitä ei ole kirjoitettu kovin optimaalisesti. Nyt jäsentäjä rakentaa puuta, mutta mielestäni tämä on tarpeetonta eikä sen tarvitse monimutkaista koodia. SISÄÄN markdown2anki -tilassa, kuvia ei jäsennetä. Yritän leikata pikkuhiljaa, mutta koska kirjoitan itselleni, niin ratkaisen ennen kaikkea ongelmat, joihin itse astun, mutta jos joku haluaa auttaa, niin tervetuloa. Jos sinulla on kysyttävää ohjelmasta, autan mielelläni asiaankuuluvien projektien avoimissa asioissa. Kirjoita tähän muuta kritiikkiä ja ehdotuksia. Toivottavasti tästä projektista on jollekin hyötyä.

PS Jos huomaat virheitä (ja valitettavasti niitä on), kirjoita minulle henkilökohtaisella viestillä, korjaan kaiken.

Lähde: will.com

Lisää kommentti