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 .
Mitä se on ja minkä kanssa sitä syödään? Lyhyesti sanottuna tämä on olemassa , 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 .
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 , 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 , 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 . 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 , 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 johon voit muodostaa yhteyden ja kuka tietää, miten ne muunnetaan HTML muoto.
Tältä sanakirjamerkintä näyttää *. Html, minun vaihtoehtoni verrattuna vaihtoehtoon

Ennen kuin etsin sanaa yhdistetyistä sanakirjoista, tuon sen kohtaan kirjastoa käyttämällä . Itse asiassa tämän kirjaston takia aloin kirjoittaa Javalla ja alkuperäinen suunnitelma oli kirjoittaa kaikki Javalla, mutta samalla löysin kirjaston. 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 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 . 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, projekti Lisäsin muunnostoiminnon 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ö
Asenna ANKI + AnkiConnect
- Lataa ANKI täältä:
- Asenna AnkiConnect-laajennus:
Asennus
- ladata github-arkistosta
git clone https://github.com/anatoly314/data2anki - Asenna riippuvuudet
cd data2anki && npm install - Lataa java-riippuvuudet
- Purkaminen jar-dependencies.zip ja aseta sen sisältö sisään data2anki/java/jars
- ladata github-arkistosta
Käytä sanojen kääntämiseen:
Tiedostossa data2anki/config.json:
avaimessa tila syötä arvo dsl2anki
avaimessa modules.dsl.anki.deckName и modules.dsl.anki.modelName kirjoittaa sen mukaan и (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:
avaimessa modules.dsl.wordToTranslatePath kirjoita polku käännettävien sanojen luetteloon.
- Käynnistä ANKI-sovelluksen ollessa käynnissä
node data2ankiindex.js - VOITTO!!!
Käytetään korttien luomiseen markdownista
Tiedostossa data2anki/config.json:
- avaimessa tila syötä arvo markdown2anki
- avaimessa modules.markdown.anki.deckName и modules.dsl.anki.modelName kirjoittaa sen mukaan и (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:

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 funktiostaEsimerkki otettu täältä:
Projektikansiossa on myös tiedosto, jossa on esimerkkejä
examples/markdown2anki-example.md- avaimessa modules.markdown.pathToFile
kirjoita polku tiedostoon, jossa *.md kysymys/vastaus tiedosto
- Käynnistä ANKI-sovelluksen ollessa käynnissä
node data2ankiindex.js - VOITTO!!!
Tältä se näyttää matkapuhelimessa:

Tulos
ANKI-työpöytäversiossa vastaanotetut kortit synkronoituvat saumattomasti ANKI-pilvipalvelun kanssa (ilmainen jopa 100 Mt:iin asti), ja voit käyttää niitä missä tahansa. Saatavilla on asiakasohjelmia Android и iPhone, voidaan käyttää myös selaimessa. Joten jos sinulla on aikaa tappaa, sen sijaan, että selailisit päämäärättömästi Facebookia tai katselisit kissoja Instagramissa, voit oppia jotain uutta.
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 , 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

