Dúas historias de como ANKI pode axudarche a aprender unha lingua estranxeira e prepararse para entrevistas

Sempre pensei que un programador preguiceiro é un bo programador. Por que? Porque pídelle a un traballador que faga algo, el vai facelo. E un programador preguiceiro pasará 2-3 veces máis tempo, pero escribirá un guión que o fará por el. Pode levar un tempo razoablemente longo para facelo a primeira vez, pero con tarefas repetidas este enfoque pagará moi rápido. Considérome un programador preguiceiro. Ese foi o preámbulo, agora imos mans á obra.

Primeira historia

Hai uns anos preguntábame como podería mellorar o meu inglés. Non se me ocorreu nada mellor que ler literatura. Merquei un lector electrónico, descarguei libros e empecei a ler. Mentres lía, seguín atopando palabras descoñecidas. Inmediatamente tradutínas usando os dicionarios incorporados ao lector, pero notei unha característica: as palabras non querían ser lembradas. Cando me atopei con esta palabra unhas poucas páxinas máis tarde, cunha probabilidade do 90%, necesitaba de novo tradución, e isto sucedía cada vez. A conclusión foi que non abondaba con traducir palabras descoñecidas mentres lía, cómpre facer outra cousa. A opción ideal sería introducilo na vida cotiá e comezar a utilizalo, pero eu non vivo nun país de fala inglesa e isto é pouco probable. Entón lembrei que unha vez lin sobre Repetición espaciada.

Que é e con que se come? En resumo, hai isto curva de esquecemento, máis cita da Wikipedia:

Xa dentro da primeira hora esquécese ata o 60% de toda a información recibida; 10 horas despois da memorización, o 35% do aprendido permanece na memoria. A continuación, o proceso de esquecemento avanza lentamente e, despois de 6 días, preto do 20% do número total de sílabas aprendidas inicialmente permanece na memoria, e a mesma cantidade permanece na memoria despois dun mes.

E a conclusión dende aquí

As conclusións que se poden extraer a partir desta curva son que para unha memorización efectiva é necesario repetir o material memorizado.

Así que nos ocorreu unha idea repetición espaciada.

ANKI é un programa completamente gratuíto e de código aberto que implementa a idea da repetición espaciada. En pocas palabras, as tarxetas flash informatizadas teñen unha pregunta por un lado e unha resposta por outro. Xa que podes facer preguntas/respostas usando regular html/css/javascript, entón podemos dicir que ten posibilidades verdadeiramente ilimitadas. Ademais, é ampliable con especial complementos, e un deles será moi útil para nós no futuro.

Crear tarxetas manualmente é longo, tedioso e con moita probabilidade, despois dun tempo esquecerás esta tarefa, polo que nalgún momento me fixen a pregunta: é posible automatizar esta tarefa. A resposta é si, podes. E fíxeno. Vou dicir enseguida, é máis POC (Proba de concepto), pero que se pode utilizar. Se hai interese dos usuarios e outros desenvolvedores se involucran, entón pódese levar a un produto acabado que incluso os usuarios tecnicamente analfabetos poden usar. Agora, usar a miña utilidade require algúns coñecementos de programación.

Lin libros usando o programa Lector AI. Ten a capacidade de conectar dicionarios externos e, cando traduces unha palabra, garda a palabra que chamou para traducir nun ficheiro de texto. Só queda traducir estas palabras e crear tarxetas ANKI.

Ao principio tentei usar para traducir Tradutor de Google, Lingvo API etc. Pero as cousas non funcionaron cos servizos gratuítos. Esgotei o límite libre durante o proceso de desenvolvemento, ademais, segundo os termos da licenza, non tiña dereito a almacenar palabras na caché. Nalgún momento deime conta de que necesitaba traducir as palabras eu. Como resultado, escribiuse un módulo dsl2html ao que podes conectarte Dicionarios DSL e quen sabe convertelos en HTML formato.

Así se ve unha entrada do dicionario en *.html, a miña opción en comparación coa opción GoldenDict

Dúas historias de como ANKI pode axudarche a aprender unha lingua estranxeira e prepararse para entrevistas

Antes de buscar unha palabra nos dicionarios conectados, tráioa a forma de dicionario (lema) utilizando a biblioteca Stanford CoreNLP. De feito, por mor desta biblioteca, comecei a escribir en Java e o plan orixinal era escribir todo en Java, pero no proceso atopei a biblioteca. nodo-java co que pode executar con relativa facilidade código Java desde nodejs e parte do código está escrito en JavaScript. Se atopara esta biblioteca antes, non se escribiría unha soa liña en Java. Outro proxecto paralelo que naceu no proceso é a creación repositorio con documentación DSL que se atopou na rede no formato *.chm, convertido e traído á forma divina. Se o autor do ficheiro orixinal é un usuario por alcume yozhic Cando ve este artigo, agradézolle moito o traballo que fixo; sen a súa documentación, moi probablemente non o tería triunfado.

Entón, teño unha palabra en inglés, a súa entrada no dicionario no formato *.html, só queda xuntar todo, crear artigos ANKI a partir da lista de palabras e introducilos na base de datos ANKI. Para iso creouse o seguinte proxecto datos 2anki. Pode levar unha lista de palabras como entrada, traducir, crear ANKI *.html artigos e rexistraos na base de datos ANKI. Ao final do artigo hai instrucións sobre como usalo. Mentres tanto, a segunda historia é onde as repeticións espaciadas poden ser útiles.

A segunda historia.

Todas as persoas que buscan unha especialidade máis/menos cualificada, incluídos os programadores, enfróntanse á necesidade de prepararse para unha entrevista. Moitos dos conceptos que se preguntan nas entrevistas non utilizas na práctica cotiá e esquécense. Cando me preparaba para unha entrevista, hojeaba notas, un libro, un libro de consulta, atopeime co feito de que leva moito tempo e atención pechar información que xa coñeces porque non sempre é obvia e hai que léao atentamente para comprender o que é.irrelevante. Cando chegas a un tema que realmente hai que repetir, adoita ocorrer que xa estás canso e a calidade da túa preparación se resente. Nalgún momento pensei, por que non usar tarxetas ANKI para isto tamén? Por exemplo, ao tomar notas sobre un tema, crea inmediatamente unha nota en forma de pregunta e resposta, e despois, cando o repites, saberás inmediatamente se coñeces a resposta a esta pregunta ou non.

O único problema que xurdiu foi que escribir preguntas era moi longa e tediosa. Para facilitar o proceso, datos 2anki proxecto Engadín a funcionalidade de conversión descenso texto en tarxetas ANKI. Todo o que necesitas é escribir un ficheiro grande no que as preguntas e as respostas estarán marcadas cunha secuencia de caracteres predeterminada, pola cal o analizador entenderá onde está a pregunta e onde está a resposta.

Unha vez creado este ficheiro, executa data2anki e crea tarxetas ANKI. O ficheiro orixinal é fácil de editar e compartir, só tes que borrar a(s) tarxeta(s) correspondente(s) e executar de novo o programa, e crearase unha nova versión.

Instalación e uso

  1. Instalación de ANKI + AnkiConnect

    1. Descarga ANKI desde aquí: https://apps.ankiweb.net/
    2. Instala o complemento AnkiConnect: https://ankiweb.net/shared/info/2055492159

  2. Instalación datos 2anki

    1. Descargar datos 2anki desde o repositorio github
      git clone https://github.com/anatoly314/data2anki
    2. Instalar dependencias
      cd data2anki && npm install
    3. Descargar dependencias de java https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Desembalaxe jar-dependencies.zip e coloca o seu contido en data2anki/java/jars

  3. Use para traducir palabras:

    1. En arquivo data2anki/config.json:

      • na clave modo introduza o valor dsl2anki

      • na clave modules.dsl.anki.deckName и modules.dsl.anki.modelName escribir en consecuencia Nome da plataforma и Nome do modelo (xa debe ser creado antes de crear tarxetas). Actualmente só se admite o tipo de modelo Básico:

        Ten campos diante e traseiro e creará unha tarxeta. O texto que introduza na parte dianteira aparecerá na parte frontal da tarxeta e o texto que introduza na parte Atrás aparecerá na parte posterior da tarxeta.

        onde está a palabra orixinal? Campo frontal, e a tradución estará en Campo traseiro.

        Non hai ningún problema para engadir soporte Básico (e tarxeta invertida), onde se creará unha tarxeta inversa para a palabra e a tradución, onde en función da tradución terás que lembrar a palabra orixinal. Todo o que necesitas é tempo e ganas.

      • na clave modules.dsl.dictionariesPath rexistrar unha matriz con * conectado.dsl dicionarios. Cada dicionario conectado é un directorio no que se atopan os ficheiros do dicionario segundo o formato: Estrutura do dicionario DSL

      • na clave modules.dsl.wordToTranslatePath introduza o camiño á lista de palabras que quere traducir.

    2. Inicie coa aplicación ANKI en execución
      node data2ankiindex.js
    3. BENEFICIO!!!

  4. Usos para crear tarxetas a partir de rebaixa

    1. En arquivo data2anki/config.json:

      • na clave modo introduza o valor markdown2anki
      • na clave modules.markdown.anki.deckName и modules.dsl.anki.modelName escribir en consecuencia Nome da plataforma и Nome do modelo (xa debe ser creado antes de crear tarxetas). Para markdown2anki modo só se admite o tipo de modelo Básico.
      • na clave modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors escribes selectores cos que marcas o inicio da pregunta e da resposta, respectivamente. A liña co selector en si non será analizada e non acabará na tarxeta; o analizador comezará a traballar desde a seguinte liña.

        Por exemplo, esta tarxeta de preguntas/respostas:

        Dúas historias de como ANKI pode axudarche a aprender unha lingua estranxeira e prepararse para entrevistas

        En rebaixa quedará así:
        #QUESTION# ## Pregunta 5. Escriba unha función mul que funcione correctamente cando se invoque coa seguinte sintaxe. ```javascript console.log(mul(2)(3)(4)); // saída : 24 console.log(mul(4)(3)(4)); // saída : 48 ``` #RESPOSTA# Abaixo está o código seguido da explicación de como funciona: ```javascript function mul (x) { return function (y) { // función anónima return function (z) { // función anónima devolve x * y * z; }; }; } ``` Aquí a función `mul` acepta o primeiro argumento e devolve a función anónima que toma o segundo parámetro e devolve a función anónima que toma o terceiro parámetro e devolve a multiplicación de argumentos que se están pasando en sucesivos Na función Javascript definida dentro ten acceso á variable de función externa e a función é o obxecto de primeira clase, polo que a función tamén pode devolvela e pasar como argumento noutra función. - Unha función é unha instancia do tipo Obxecto - Unha función pode ter propiedades e ten unha ligazón ao seu método construtor - Unha función pódese almacenar como variable - Unha función pódese pasar como parámetro a outra función - Unha función pode ser devolto doutra función
        

        Exemplo tomado de aquí: 123-JavaScript-Entrevista-Preguntas

        Tamén hai un ficheiro con exemplos no cartafol do proxecto examples/markdown2anki-example.md

      • na clave modules.markdown.pathToFile
        anote o camiño ao ficheiro onde *.md ficheiro de preguntas/respostas

    2. Inicie coa aplicación ANKI en execución
      node data2ankiindex.js
    3. BENEFICIO!!!

Así se ve nun teléfono móbil:

Resultado

As tarxetas recibidas na versión de escritorio de ANKI sincronízanse sen problemas coa nube ANKI (gratuíta ata 100 MB) e entón podes usalas en todas partes. Hai clientes para Android e iPhone, e tamén podes usalo nun navegador. Como resultado, se tes tempo no que non tes nada para gastar, en vez de desprazarte sen rumbo por Facebook ou os gatos en Instagram, podes aprender algo novo.

Epílogo

Como mencionei, este é máis un POC de traballo que podes usar que un produto acabado. Aproximadamente o 30% do estándar do analizador DSL non está implementado e, polo tanto, por exemplo, non se poden atopar todas as entradas do dicionario que están nos dicionarios, tamén hai unha idea para reescribilo JavaScript, porque quero “coherencia”, e ademais, agora non está escrito moi óptimamente. Agora o analizador está a construír unha árbore, pero na miña opinión isto é innecesario e non precisa complicar o código. EN markdown2anki modo, as imaxes non se analizan. Intentarei recortar pouco a pouco, pero xa que escribo para min, antes de nada resolverei os problemas que eu mesmo pisarei, pero se alguén quere axudar, benvido. Se tes dúbidas sobre o programa, estarei encantado de axudarte a resolver problemas abertos nos proxectos relevantes. Escribe aquí outras críticas e suxestións. Espero que este proxecto sexa útil para alguén.

PD Se notas algún erro (e, por desgraza, hai algún), escríbeme nunha mensaxe persoal, corrixireino todo.

Fonte: www.habr.com

Engadir un comentario