Vždy jsem věřil, že líný programátor je dobrý programátor. Proč? Protože požádejte pracanta, aby něco udělal, půjde a udělá to. A líný programátor stráví 2-3x více času, ale napíše skript, který to udělá za něj. Napoprvé to může trvat nepřiměřeně dlouho, ale u opakovaných úkolů se tento přístup velmi rychle vyplatí. Považuji se za líného programátora. To byla preambule, teď pojďme k věci.
První příběh
Před pár lety jsem přemýšlel, jak bych se mohl zlepšit v angličtině. Nic lepšího než čtení literatury mě nenapadlo. Koupil jsem si elektronickou čtečku, stáhl si knihy a začal jsem číst. Při čtení jsem stále narážel na neznámá slova. Okamžitě jsem je přeložil pomocí slovníků zabudovaných ve čtečce, ale všiml jsem si jedné vlastnosti: slova nechtěla, aby si je zapamatovali. Když jsem o pár stránek později na toto slovo narazil znovu, s 90% pravděpodobností jsem znovu potřeboval překlad, a to se stalo pokaždé. Závěr byl takový, že nestačí jen překládat neznámá slova při čtení, musíte dělat něco jiného. Ideální možností by bylo zavést jej do běžného života a začít používat, ale nežiji v anglicky mluvící zemi a je to nepravděpodobné. Pak jsem si vzpomněl, že jsem o tom kdysi četl .
Co to je a s čím se to jí? Stručně řečeno, existuje toto , další citace z Wikipedie:
Již během první hodiny je zapomenuto až 60 % všech přijatých informací, 10 hodin po zapamatování zůstává v paměti 35 % naučeného. Pak proces zapomínání postupuje pomalu a po 6 dnech zůstává v paměti asi 20 % z celkového počtu původně naučených slabik a stejné množství zůstává v paměti po měsíci.
A závěr odtud
Závěry, které lze na základě této křivky vyvodit, jsou takové, že pro efektivní zapamatování je nutné zapamatovanou látku opakovat.
Tak jsme přišli s nápadem .
je zcela bezplatný a open source program, který implementuje myšlenku opakování s mezerami. Jednoduše řečeno, počítačové flash karty mají na jedné straně otázku a na druhé odpověď. Vzhledem k tomu, že můžete dělat otázky/odpovědi pomocí regular html/css/javascript, pak můžeme říci, že má skutečně neomezené možnosti. Navíc je rozšiřitelný o speciální , a jeden z nich se nám bude v budoucnu velmi hodit.
Ruční vytváření karet je zdlouhavé, zdlouhavé a s velkou pravděpodobností na tento úkol po čase zapomenete, a tak jsem si v určité chvíli položil otázku, zda je možné tento úkol zautomatizovat. Odpověď je ano, můžete. A udělal jsem to. Hned řeknu, je to víc , ale které lze použít. Pokud bude ze strany uživatelů zájem a zapojí se další vývojáři, lze jej dovést do hotového produktu, který mohou používat i technicky negramotní uživatelé. Nyní použití mé utility vyžaduje určité znalosti programování.
Čtu knihy pomocí programu . Má možnost připojit externí slovníky a když přeložíte slovo, uloží slovo, které jste volali k překladu, do textového souboru. Zbývá jen přeložit tato slova a vytvořit karty ANKI.
Nejprve jsem se snažil použít pro překlad , atd. S bezplatnými službami to ale nefungovalo. Bezplatný limit jsem vyčerpal během procesu vývoje, navíc jsem podle podmínek licence neměl právo kešovat slova. V určitém okamžiku jsem si uvědomil, že musím slova přeložit sám. V důsledku toho byl napsán modul ke kterému se můžete připojit a kdo ví, jak je převést na HTML formát.
Takto vypadá položka ve slovníku v *. Html, moje možnost ve srovnání s možností

Než hledám slovo v připojených slovnících, přivedu ho do pomocí knihovny . Ve skutečnosti jsem kvůli této knihovně začal psát v Javě a původní plán byl napsat vše v Javě, ale během toho jsem knihovnu našel pomocí kterého lze relativně snadno spustit Java kód z nodejs a část kódu je napsána v JavaScriptu. Kdybych tuto knihovnu našel dříve, nebyl by v Javě napsán jediný řádek. Dalším vedlejším projektem, který se v průběhu zrodil, je tvorba který byl nalezen v síti ve formátu *.chmpřeměněna a uvedena do božské podoby. Pokud je autorem původního souboru uživatel podle přezdívky yozhic Když vidí tento článek, moc mu děkuji za práci, kterou odvedl, bez jeho dokumentace bych to s největší pravděpodobností neuspěl.
Takže mám slovo v angličtině, jeho slovníkové heslo ve formátu *. Html, zbývá vše poskládat, ze seznamu slov vytvořit ANKI články a vložit je do ANKI databáze. Za tímto účelem byl vytvořen následující projekt . Může vzít seznam slov jako vstup, přeložit, vytvořit ANKI *. Html články a zaznamenat je do databáze ANKI. Na konci článku je návod, jak jej používat. Mezitím je druhý příběh, kde mohou být užitečná opakování s odstupem.
Druhý příběh.
Všichni lidé, kteří hledají více/méně kvalifikovanou specializaci, včetně programátorů, se potýkají s potřebou připravit se na pohovor. Mnohé z pojmů, které jsou při pohovorech kladeny, v každodenní praxi nepoužíváte a jsou zapomenuty. Při přípravě na pohovor, listování v poznámkách, v knize, v příručkách jsem se potýkal s tím, že vytřídění informací, které už znáte, zabere hodně času a pozornosti, protože to není vždy zřejmé a musíte přečtěte si to pozorně, abyste pochopili, co to je.irelevantní. Když přijdete na téma, které je opravdu potřeba zopakovat, často se stane, že už jste unavení a utrpí tím kvalita vaší přípravy. V určitém okamžiku jsem si řekl, proč k tomu nevyužít karty ANKI? Například při psaní poznámek k tématu si rovnou vytvořte poznámku v podobě otázky a odpovědi a při jejím opakování pak hned poznáte, zda na tuto otázku znáte odpověď nebo ne.
Jediný problém, který vyvstal, bylo, že psaní otázek bylo velmi dlouhé a zdlouhavé. Aby byl proces jednodušší, projekt jsem přidal funkci převodu text v kartách ANKI. Stačí napsat jeden velký soubor, ve kterém budou otázky a odpovědi označeny předem určenou sekvencí znaků, podle kterých parser pochopí, kde je otázka a kde odpověď.
Jakmile je tento soubor vytvořen, spustíte data2anki a vytvoří karty ANKI. Původní soubor lze snadno upravovat a sdílet, stačí vymazat odpovídající kartu (karty) a spustit program znovu a vytvoří se nová verze.
Instalace a použití
Instalace ANKI + AnkiConnect
- Stáhněte si ANKI odtud:
- Nainstalujte plugin AnkiConnect:
Instalace
- Stáhnout z úložiště github
git clone https://github.com/anatoly314/data2anki - Nainstalujte závislosti
cd data2anki && npm install - Stáhnout java závislosti
- Vybalování jar-dependencies.zip a vložte jeho obsah data2anki/java/jars
- Stáhnout z úložiště github
Použijte k překladu slov:
V souboru data2anki/config.json:
v klíči způsob zadejte hodnotu dsl2anki
v klíči modules.dsl.anki.deckName и modules.dsl.anki.název modelu pište podle toho и (musí být vytvořeno již před vytvořením karet). V současné době je podporován pouze typ modelu Basic:
Má přední a zadní pole a vytvoří jednu kartu. Text, který zadáte v přední části, se zobrazí na přední straně karty a text, který zadáte do pole, se zobrazí na zadní straně karty.
kde je původní slovo? Přední polea překlad bude k dispozici Zadní pole.
Není problém přidat podporu Základní (a obrácená karta), kde se ke slovu a překladu vytvoří rubová karta, kde si na základě překladu budete muset původní slovo zapamatovat. Vše, co potřebujete, je čas a touha.
v klíči modules.dsl.dictionariesPath zaregistrovat pole s připojeným *.dsl slovníky. Každý připojený slovník je adresář, ve kterém jsou umístěny soubory slovníku v souladu s formátem:
v klíči modules.dsl.wordToTranslatePath zadejte cestu k seznamu slov, která chcete přeložit.
- Spusťte se spuštěnou aplikací ANKI
node data2ankiindex.js - ZISK!!!
Používá se pro vytváření karet z markdown
V souboru data2anki/config.json:
- v klíči způsob zadejte hodnotu markdown2anki
- v klíči modules.markdown.anki.deckName и modules.dsl.anki.název modelu pište podle toho и (musí být vytvořeno již před vytvořením karet). Pro markdown2anki podporován je pouze typ modelu Basic.
v klíči modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors píšete selektory, kterými označíte začátek otázky, resp. odpovědi. Řádek se samotným selektorem nebude analyzován a neskončí na kartě, analyzátor začne pracovat od dalšího řádku.
Například tato karta s otázkami/odpověďmi:

V markdown to bude vypadat takto:
#QUESTION# ## Otázka 5. Napište funkci mul, která bude správně fungovat při vyvolání s následující syntaxí. ```javascript console.log(mul(2)(3)(4)); // výstup : 24 console.log(mul(4)(3)(4)); // output : 48 ``` #ODPOVĚĎ# Níže je kód následovaný vysvětlením, jak to funguje: ```javascript function mul (x) { return function (y) { // anonymní funkce return function (z) { // anonymní funkce return x * y * z; }; }; } ``` Funkce `mul` zde přijme první argument a vrátí anonymní funkci, která převezme druhý parametr a vrátí anonymní funkci, která převezme třetí parametr a vrátí násobení argumentů, které jsou předávány postupně. Funkce definovaná v JavaScriptu inside má přístup k vnější proměnné funkce a funkce je objekt první třídy, takže ji může funkce také vrátit a předat jako argument v jiné funkci. - Funkce je instancí typu Objekt - Funkce může mít vlastnosti a má odkaz zpět na svou metodu konstruktoru - Funkci lze uložit jako proměnnou - Funkci lze předat jako parametr jiné funkci - Funkce může být vrátil z jiné funkcePříklad převzat odtud:
Ve složce projektu je také soubor s příklady
examples/markdown2anki-example.md- v klíči modules.markdown.pathToFile
zapište si cestu k souboru, kde *.md soubor otázek/odpovědí
- Spusťte se spuštěnou aplikací ANKI
node data2ankiindex.js - ZISK!!!
Takhle to vypadá na mobilu:

Výsledek
Полученные на desktop версии ANKI карточки без проблем синхронизируются с ANKI облаком (бесплатно до 100mb), а дальше вы можете пользоваться ими уже везде. Есть клиенты под Android и iPhone, также можно пользоваться и в браузере. В результате, если у вас есть время, которое не на что потратить, то вместо того, чтобы бесцельно пролистывать фейсбук или котиков в инстаграм, можно учить что-то новое.
Epilog
Jak jsem již zmínil, jedná se spíše o pracovní POC, které můžete použít, než o hotový produkt. Asi 30 % standardu analyzátoru DSL není implementováno, a proto , existuje také nápad to přepsat JavaScript, protože chci „konzistenci“ a kromě toho se to teď nepíše moc optimálně. Nyní parser staví strom, ale podle mého názoru je to zbytečné a nemusí to komplikovat kód. V markdown2anki režimu, snímky nejsou analyzovány. Budu se snažit krájet po troškách, ale jelikož píšu za sebe, tak v první řadě vyřeším problémy, na které si sám šlápnu, ale pokud by někdo chtěl pomoci, tak jste vítáni. Máte-li dotazy k programu, rád pomohu prostřednictvím otevřených problémů v příslušných projektech. Zde pište další kritiku a návrhy. Doufám, že tento projekt bude pro někoho užitečný.
PS Pokud si všimnete nějaké chyby (a bohužel nějaké jsou), napište mi do osobní zprávy, vše opravím.
Zdroj: www.habr.com

