Dos historias de cómo ANKI puede ayudarte a aprender un idioma extranjero y prepararte para entrevistas

Siempre creí que un programador vago es un buen programador. ¿Por qué? Porque pídele a un trabajador que haga algo, él irá y lo hará. Y un programador perezoso dedicará 2 o 3 veces más tiempo, pero escribirá un script que lo hará por él. Puede llevar mucho tiempo hacer esto la primera vez, pero con tareas repetidas este enfoque dará sus frutos muy rápidamente. Me considero un programador vago. Ese fue el preámbulo, ahora vayamos al grano.

Primera historia

Hace unos años me preguntaba cómo podría mejorar mi inglés. No se me ocurrió nada mejor que leer literatura. Compré un lector electrónico, descargué libros y comencé a leer. Mientras leía, seguía encontrándome con palabras desconocidas. Inmediatamente las traduje usando los diccionarios integrados en el lector, pero noté una característica: las palabras no querían ser recordadas. Cuando volví a encontrarme con esta palabra unas páginas más tarde, con un 90% de probabilidad volvía a necesitar traducción, y esto sucedió siempre. La conclusión fue que no basta con traducir palabras desconocidas mientras se lee, hay que hacer algo más. La opción ideal sería introducirlo en la vida cotidiana y empezar a utilizarlo, pero no vivo en un país de habla inglesa y esto es poco probable. Entonces recordé que una vez leí sobre Repetición espaciada.

¿Qué es y con qué se come? En resumen, existe esto curva del olvido, cita adicional de Wikipedia:

Ya durante la primera hora se olvida hasta el 60% de toda la información recibida; 10 horas después de la memorización, el 35% de lo aprendido permanece en la memoria. Luego, el proceso de olvido avanza lentamente y después de 6 días aproximadamente el 20% del número total de sílabas aprendidas inicialmente permanece en la memoria, y la misma cantidad permanece en la memoria después de un mes.

Y la conclusión de aquí.

Las conclusiones que se pueden sacar con base en esta curva son que para una memorización efectiva es necesario repetir el material memorizado.

Entonces se nos ocurrió una idea repetición espaciada.

ANKI es un programa completamente gratuito y de código abierto que implementa la idea de repetición espaciada. En pocas palabras, las tarjetas didácticas computarizadas tienen una pregunta en un lado y una respuesta en el otro. Ya que puedes hacer preguntas/respuestas usando regular html/css/javascript, entonces podemos decir que tiene posibilidades verdaderamente ilimitadas. Además, es ampliable con especiales complementos, y uno de ellos nos será de gran utilidad en el futuro.

Crear tarjetas manualmente es largo, tedioso y con una alta probabilidad de que después de un tiempo te olvides de esta tarea, por lo que en algún momento me pregunté si es posible automatizar esta tarea. La respuesta es sí, puedes. Y lo hice. Diré de inmediato que es más. POC (Prueba de concepto), pero que se puede utilizar. Si hay interés por parte de los usuarios y otros desarrolladores se involucran, entonces se puede llevar a un producto terminado que incluso los usuarios técnicamente analfabetos puedan utilizar. Ahora, usar mi utilidad requiere algunos conocimientos de programación.

Leo libros usando el programa. Lector de AI. Tiene la capacidad de conectar diccionarios externos y, cuando traduces una palabra, guarda la palabra que solicitaste para traducir en un archivo de texto. Todo lo que queda es traducir estas palabras y crear tarjetas ANKI.

Al principio intenté usarlo para traducir. traductor google, API de Lingvo etc. Pero las cosas no funcionaron con los servicios gratuitos. Agoté el límite gratuito durante el proceso de desarrollo, además, según los términos de la licencia, no tenía derecho a almacenar palabras en caché. En algún momento me di cuenta de que necesitaba traducir las palabras yo mismo. Como resultado, se escribió un módulo. dsl2html al que puedes conectarte Diccionarios ADSL y quien sabe convertirlos en HTML formato.

Así es como se ve una entrada del diccionario en *. Html, mi opción comparada con la opción dictado dorado

Dos historias de cómo ANKI puede ayudarte a aprender un idioma extranjero y prepararte para entrevistas

Antes de buscar una palabra en diccionarios conectados, la llevo a forma de diccionario (lema) usando la biblioteca Stanford Core NLP. De hecho, debido a esta biblioteca, comencé a escribir en Java y el plan original era escribir todo en Java, pero en el proceso encontré la biblioteca. nodo-java con el que puedes ejecutar código Java con relativa facilidad desde nodejs y parte del código está escrito en JavaScript. Si hubiera encontrado esta biblioteca antes, no se habría escrito ni una sola línea en Java. Otro proyecto paralelo que nació en el proceso es la creación repositorio con documentación DSL que se encontró en la red en el formato *.chm, convertido y llevado a la forma divina. Si el autor del archivo original es un usuario por apodo yozhico Cuando ve este artículo le agradezco mucho el trabajo que ha realizado, sin su documentación lo más probable es que no lo hubiera conseguido.

Entonces, tengo una palabra en inglés, su entrada en el diccionario en el formato *. Html, todo lo que queda es juntar todo, crear artículos ANKI a partir de la lista de palabras e ingresarlos en la base de datos ANKI. Para ello se creó el siguiente proyecto datos2anki. Puede tomar una lista de palabras como entrada, traducir, crear ANKI *. Html artículos y registrarlos en la base de datos ANKI. Al final del artículo hay instrucciones sobre cómo utilizarlo. Mientras tanto, en la segunda historia es donde las repeticiones espaciadas pueden resultar útiles.

La segunda historia.

Todas las personas que buscan una especialidad más o menos cualificada, incluidos los programadores, se enfrentan a la necesidad de prepararse para una entrevista. Muchos de los conceptos que se preguntan en las entrevistas no se utilizan en la práctica diaria y se olvidan. Mientras me preparaba para una entrevista, hojeando notas, un libro, un libro de referencia, me enfrenté al hecho de que se necesita mucho tiempo y atención para seleccionar información que ya conoces, porque no siempre es obvia y hay que léalo atentamente para comprender qué es irrelevante. Cuando llegas a un tema que realmente necesita ser repetido, a menudo sucede que ya estás cansado y la calidad de tu preparación se resiente. En algún momento pensé, ¿por qué no usar tarjetas ANKI para esto también? Por ejemplo, cuando tome notas sobre un tema, cree inmediatamente una nota en forma de pregunta y respuesta, y luego, cuando la repita, sabrá inmediatamente si conoce la respuesta a esta pregunta o no.

El único problema que surgió fue que escribir las preguntas era muy largo y tedioso. Para facilitar el proceso, datos2anki proyecto agregué la funcionalidad de conversión reducción texto en tarjetas ANKI. Todo lo que necesita es escribir un archivo grande en el que las preguntas y respuestas se marcarán con una secuencia predeterminada de caracteres, mediante la cual el analizador comprenderá dónde está la pregunta y dónde está la respuesta.

Una vez creado este archivo, ejecuta data2anki y crea tarjetas ANKI. El archivo original es fácil de editar y compartir, sólo necesita borrar la(s) tarjeta(s) correspondiente(s) y ejecutar el programa nuevamente, y se creará una nueva versión.

Instalación y uso

  1. Instalación de ANKI + AnkiConnect

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

  2. Instalación datos2anki

    1. Descargar datos2anki desde el repositorio de 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. Desembalaje dependencias-jar.zip y colocar su contenido en data2anki/java/tarros

  3. Úselo para traducir palabras:

    1. En archivo data2anki/config.json:

      • en la clave modo introduce el valor dsl2anki

      • en la clave module.dsl.anki.deckName и module.dsl.anki.modelName escribe en consecuencia Nombre de la cubierta и Nombre de Modelo (ya debe estar creado antes de crear tarjetas). Actualmente solo se admite el tipo de modelo Basic:

        Tiene campos frontal y posterior y creará una tarjeta. El texto que ingrese en el frente aparecerá en el frente de la tarjeta y el texto que ingrese en el reverso aparecerá en el reverso de la tarjeta.

        ¿Dónde está la palabra original? Campo frontal, y la traducción estará en Campo trasero.

        No hay problema para agregar soporte Tarjeta básica (y invertida), donde se creará una tarjeta inversa para la palabra y la traducción, donde, según la traducción, deberá recordar la palabra original. Lo único que necesitas es tiempo y ganas.

      • en la clave module.dsl.dictionariesRuta registrar una matriz con conectado *.dsl diccionarios. Cada diccionario conectado es un directorio en el que se ubican los archivos del diccionario según el formato: Estructura del diccionario DSL

      • en la clave módulos.dsl.wordToTranslatePath ingrese la ruta a la lista de palabras que desea traducir.

    2. Inicie con la aplicación ANKI en ejecución
      node data2ankiindex.js
    3. BENEFICIO !!!

  4. Usos para crear tarjetas a partir de rebajas.

    1. En archivo data2anki/config.json:

      • en la clave modo introduce el valor markdown2anki
      • en la clave módulos.markdown.anki.deckName и module.dsl.anki.modelName escribe en consecuencia Nombre de la cubierta и Nombre de Modelo (ya debe estar creado antes de crear tarjetas). Para markdown2anki modo solo se admite el tipo de modelo Basic.
      • en la clave módulos.markdown.selectores.startQuestionSelectors и módulos.markdown.selectores.startAnswerSelectors escribes selectores con los que marcas el inicio de la pregunta y la respuesta, respectivamente. La línea con el selector en sí no se analizará y no terminará en la tarjeta; el analizador comenzará a trabajar desde la siguiente línea.

        Por ejemplo, esta tarjeta de pregunta/respuesta:

        Dos historias de cómo ANKI puede ayudarte a aprender un idioma extranjero y prepararte para entrevistas

        Se verá así en Markdown:
        #PREGUNTA# ## Pregunta 5. Escriba una función mul que funcione correctamente cuando se invoque con la siguiente sintaxis. ```javascript console.log(mul(2)(3)(4)); // salida: 24 console.log(mul(4)(3)(4)); // salida: 48 ``` #ANSWER# A continuación se muestra el código seguido de la explicación de cómo funciona: ```función javascript mul (x) { función de retorno (y) { // función anónima función de retorno (z) { // función anónima return x * y * z; }; }; } ``` Aquí la función `mul` acepta el primer argumento y devuelve la función anónima que toma el segundo parámetro y devuelve la función anónima que toma el tercer parámetro y devuelve la multiplicación de argumentos que se pasan en sucesivas funciones definidas en Javascript. El interior tiene acceso a la variable de función externa y la función es el objeto de primera clase, por lo que la función también puede devolverlo y pasarlo como argumento en otra función. - Una función es una instancia del tipo Objeto - Una función puede tener propiedades y tiene un enlace a su método constructor - Una función se puede almacenar como variable - Una función se puede pasar como parámetro a otra función - Una función se puede regresado de otra función
        

        Ejemplo tomado de aquí: 123-Preguntas-de-entrevista-en-JavaScript

        También hay un archivo con ejemplos en la carpeta del proyecto. examples/markdown2anki-example.md

      • en la clave módulos.markdown.pathToFile
        anota la ruta al archivo donde *.Maryland archivo de preguntas/respuestas

    2. Inicie con la aplicación ANKI en ejecución
      node data2ankiindex.js
    3. BENEFICIO !!!

Así es como se ve en un teléfono móvil:

resultado

Las tarjetas recibidas en la versión de escritorio de ANKI se sincronizan sin problemas con la nube de ANKI (hasta 100 MB gratis) y luego puedes usarlas en todas partes. Hay clientes para Android y iPhone, y también puedes usarlo en un navegador. Como resultado, si tienes tiempo y no tienes nada que gastar, en lugar de desplazarte sin rumbo por Facebook o los gatos en Instagram, puedes aprender algo nuevo.

El acto final

Como mencioné, esto es más una prueba de concepto funcional que puedes usar que un producto terminado. Alrededor del 30% del estándar del analizador DSL no está implementado y, por lo tanto, por ejemplo, no se pueden encontrar todas las entradas del diccionario que están en los diccionarios, también hay una idea para reescribirlo en JavaScript, porque quiero "coherencia" y, además, ahora no está escrito de forma muy óptima. Ahora el analizador está construyendo un árbol, pero en mi opinión esto es innecesario y no necesita complicar el código. EN markdown2anki modo, las imágenes no se analizan. Intentaré ir cortando poco a poco, pero como escribo para mí, primero solucionaré los problemas que yo mismo pise, pero si alguien quiere ayudar, de nada. Si tiene preguntas sobre el programa, estaré encantado de ayudarle a través de cuestiones abiertas en los proyectos relevantes. Escriba otras críticas y sugerencias aquí. Espero que este proyecto sea útil para alguien.

PD: Si notas algún error (y, lamentablemente, los hay), escríbeme en un mensaje personal, lo corregiré todo.

Fuente: habr.com

Añadir un comentario