Skip to content

Florball/lim-2018-05-bc-core-am-cipher

Repository files navigation

Método cifrado César

Pensado en un público tecnológico

Interpretando las necesidades de un publico joven y tecnológico, un público que desea mantener la privacidad en sus conversaciones, analicé los objetivos de la existencia de esta página para sacar el máximo provecho a todas las posibilidades que Internet le pueda brindar al usuario de diario, ese usurio que usa aplicaciones de mensajería como whats'app, messenger,instagram, etc. Desarrollé y diseñé este proyecto a medida del usuario, para cumplir con las necesidades de cada uno de ellos, buscando una óptima usabilidad para los usuarios finales.

  • Los principales usuarios son jovenes que usan aplicaciones de mensajeria por movil, tablet y laptop, usuarios que desean mantener su privacidad.
  • El objetivo del usuario es mantener la seguridad de que sus mensajes seran privados.
  • La página es útil para los usuarios porque les permite mantener conversaciones con sus amigos o familiares con mensajes cifrados, eligiendo un número de desplazamiento para su cifrado(número de desplazamiento de las letras).

UI

La interfaz debe permitir al usuario:

  • elegir un offset indicando cuántas posiciones queremos que el cifrado desplace cada caracter
  • insertar un mensaje (texto) que queremos cifrar
  • ver el resultado del mensaje cifrado
  • insertar un mensaje (texto) a descifrar
  • ver el resultado del mensaje descifrado

Scripts / Archivos

  • README.md: debe explicar cómo descargar, instalar y ejecutar la aplicación así como una introducción a la aplicación, su funcionalidad y decisiones de diseño que tomaron.
  • src/index.html: este es el punto de entrada a tu aplicación. Este archivo debe contener to markup (HTML) e incluir el CSS y JavaScript necesario.
  • src/cipher.js: acá debes implementar el objeto cipher, el cual debe estar exportado en el objeto global (window). Este objeto (cipher) debe contener dos métodos:
    • cipher.encode(offset, string): offset es el número de posiciones que queremos mover a la derecha en el alfabeto y string el mensaje (texto) que queremos cifrar.
    • cipher.decode(offset, string): offset es el número de posiciones que queremos mover a la izquierda en el alfabeto y string el mensaje (texto) que queremos decifrar.
  • src/index.js: acá debes escuchar eventos del DOM, invocar cipher.encode() o cipher.decode() según sea necesario y actualizar el resultado en la UI.
  • test/cipher.spec.js: este archivo contiene algunos tests de ejemplo y acá tendrás que implementar los tests para cipher.encode() y cipher.decode().

Hacker edition

No estás limitada a implementar solo la parte obligatoria. Te sugerimos crear también una función cipher.createCipherWithOffset() que reciba un offset y devuelva un nuevo objeto con dos métodos (encode y decode) que solo reciban el string y usen el offset que se pasó a createCipherWithOffset a la hora de crear el objeto.

Lo anterior, nos ayuda a observar tu capacidad de autoaprendizaje, pudiendo agregar a tu trabajo un elemento que lo lleva al siguiente nivel.

Para el diseño de la experiencia de usuario, puedes investigar y aplicar algunas de las técnicas y herramientas relacionadas al proceso de diseño como entrevistas y testeos con usuarios o sketching y prototipado.

Lo mismo en habilidades blandas, puedes realizar una planificación experta teniendo en consideración la utilización de herramientas de planificación, como un calendario, trello, papelógrafo u otras, creando un plan paso a paso de cómo quiere abarcar el reto o problema. Realizando una estimación realista del tiempo.

Entrega

El proyecto será entregado subiendo tu código a GitHub (commit/push) y la interfaz será desplegada usando GitHub pages.

Evaluación

Te aconsejamos revisar la rúbrica para ver la descripción detallada de cada habilidad y cada nivel.

General

Característica/Habilidad Nivel esperado
Completitud 3
Investigación 3
Documentación 2

Tech

Habilidad Nivel esperado
JavaScript
Estilo 2
Nomenclatura/semántica 2
Funciones/modularidad 1
Estructuras de datos 0
Tests 2
HTML
Validación 2
Estilo 3
Semántica 2
SEO 0
CSS
DRY 2
Responsive 2
SCM
Git 1
GitHub 2
CS
Lógica 1
Arquitectura 1
Patrones/paradigmas 0

UX

Habilidad Nivel esperado
User Centricity 2

Habilidades Blandas

Para este reto queremos que intentes llegar al nivel 2 por lo menos en 5 de tus habilidades blandas y que tengas el nivel 1 en sólo 3 habilidades.

Habilidad Nivel esperado
Planificación y organización 2
Autoaprendizaje 2
Solución de problemas 2
Dar y recibir feedback 2
Adaptabilidad 2
Trabajo en equipo 1
Comunicación eficaz 1
Presentaciones 1

Puntos de experiencia

Este proyecto en el bootcamp te otorgará 100 XP (Puntos de experiencia).

Primeros pasos

  1. Antes que nada, asegúrate de tener un 📝 editor de texto en condiciones, algo como Atom o Code.
  2. Para ejecutar los comandos a continuación necesitarás una 🐚 UNIX Shell, que es un programita que interpreta líneas de comando (command-line interpreter) así como tener git instalado. Si usas un sistema operativo "UNIX-like", como GNU/Linux o MacOS, ya tienes una shell (terminal) instalada por defecto (y probablemente git también). Si usas Windows puedes usar Git bash, aunque recomendaría que consideres probar 🐧 GNU/Linux.
  3. Haz tu propio 🍴 fork del repo de tu cohort, tus coaches te compartirán un link a un repo privado y te darán acceso de lectura en ese repo.
  4. ⬇️ Clona tu fork a tu computadora (copia local).
  5. 📦 Instala las dependencias del proyecto con el comando npm install. Esto asume que has instalado Node.js (que incluye npm).
  6. Si todo ha ido bien, deberías poder ejecutar las 🚥 pruebas unitarias (unit tests) con el comando npm test.
  7. A codear se ha dicho! 🚀

Tips / Pistas

A continuación un video de Michelle que te lleva a través de la fórmula matemática del Cifrado César y un par de cosas más que debes saber para resolver este proyecto. ¡Escúchala con detenimiento y sigue sus consejos! :)

tips caesar cipher

También te compartimos más información de lo que Michelle te ha explicado en el video anterior:

Estos son algunos tips que te pueden ayudar en la organización y realización de tu proyecto, teniendo en cuenta el desarrollo de tus habilidades blandas:

  • Para comenzar realiza una organización de tu proyecto, ve con qué recursos cuentas y el tiempo que tienes para completarlo.
  • Si hay algo que no sepas pregunta e intenta resolverlo; puedes comenzar con una búsqueda en google, luego consultando a tu squad y por último a tus coaches. Si hay algo que yo no sé, otro me puede ayudar. El aprendizaje es un proceso colaborativo.
  • Una vez que empieces a avanzar pide feedback, tus compañeras pueden tener excelentes ideas o formas de resolver el proyecto que te pueden ayudar.
  • Cuando te topes con un problema, busca alternativas, y para eso consulta diferentes fuentes.
  • Si ya te ves invirtiendo mucho tiempo en detalles debes saber priorizar y seguir con lo más importante, los proyectos tienen tiempo limitado y debes saber administrarlo.
  • Trabaja en equipo, pregunta e intenta completar el proyecto sin rendirte.
  • Prepara tu presentación, si no logro comunicar mis ideas a los demás no se podrá apreciar todo el esfuerzo y trabajo que invertiste.

Recursos (Q & A)

El código de sli.do para el proyecto 1 :

  • Turno am: U414