Skip to content

Lzok/telegraph

Repository files navigation

Telegraph

Telegraph to help us converting a string of bits into morse code or human readable text.

[ES/EN]: Proximamente disponible la version en ingles de este documento.

Prerrequisitos

Problema

El enunciado completo del problema puede encontrarse aca

Planteo de solucion

En este documento describo la forma en que pense la solucion del problema.

Solucion experimental

En este otro documento describo la forma en que resuelvo este problema utilizando un algoritmo de clusterizacion llamado K-Means, adaptado particularmente a esta situacion.

Esta solucion esta en etapa experimental, tomar recaudos. Toda contribucion a mejorarla y estabilizarla es bienvenida y apreciada!

Setup

  • Clonar el repositorio en un directorio a su eleccion.
git clone https://github.com/Lzok/telegraph .
  • Instalar las dependencias
npm install
  • Copiar el archivo de entorno ejemplo al que sera efectivamente usado y llenar las variables con la informacion deseada
cp .env.example .env 

# Abrir el archivo .env con cualquier editor y editar las siguientes variables

# Entorno de Node. development en este caso
NODE_ENV=development
# Puerto donde se correra la API. Puede ser cualquiera a eleccion.
PORT=3000
  • Correr la API
npm run dev

# O mediante Docker
# Los flags pasados a este comando son para evitar algunos inconvenientes de cache
# O que la imagen resultante no esta 100% actualizada mientras desarrollamos.
# Ademas, se usa el archivo docker-compose.dev.yml que corresponde a la version de desarrollo
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --force-recreate --build
  • Endpoints

Podes ver la documentacion para los endpoints disponibles en la ruta http://localhost:<PORT>/api/v1/docs

La misma fue generada con Swagger

  • Tests

Para correr la suite de tests, se debe dejar corriendo la API y en otra terminal ejecutar alguno de los siguientes comandos:

# Correr la suite completa (unit + integration)
npm run test

# Solo unit tests
npm run test:unit

# Solo integration tests
npm run test:integration
  • Hook pre-commit

    Antes de efectivizar cada commit se ejecuta el linter del codigo y se corren los test unitarios. Queda pendiente que corra la suite completa, por el momento no lo decidi de esta forma debido a que no quiero forzar a instalar Docker a quien no quiera.

Produccion

Se puede probar el build de la imagen productiva que genera docker con el siguiente comando: docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --force-recreate --build

Proximos pasos

TODO:

  • Mejorar el manejo de errores en las funciones, muchas no estan preparadas para recibir otra cosa que lo que esperan. Empezar al menos por las funciones que se comunican con el "mundo exterior".
  • Agregar tests para las cosas nuevas que se fueron agregando.
  • Correr la suite de tests completa en el pre-commit. En este momento solo corren los unitarios.
  • Plantear pruebas utilizando algoritmos de clusterizacion como K-means para asi poder, en teoria, decodificar mensajes que no sean constantes dentro del mismo. (Ver documento explicatorio)

Referencias

Lista de referencias utilizadas acerca del tema durante el desarrollo. Todas ellas online al dia de la fecha (05-05-2020)

Licencia

GNU AFFERO GENERAL PUBLIC LICENSE

La licencia completa la podes chequear aca

About

Telegraph to help us converting a string of bits into morse code or human readable text.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published