Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
5
respuestas

[Duda] ERROR IMAGENES DEL PROYECTO EN GITHUB PAGES

Buenas tardes, les hago una consulta: Tengo una duda con relacion a la visualizacion de mi proyecto en Github Pages. Aquí copio el link de la publicación: https://jfierro2.github.io/desafio1-encriptador/. He notado que no se ha cargado correctamente una de las imagens del proyecto, la que se situa en el rectangulo de la dderecha. Agradeceré me orienten sobre cual puedde ser la naturaleza del inconveniente y sobre como puedo actualizar o corregir el proyecto y si debo hacerlo desde GitHub o a partir de Git. Cuando segui los pasos desde el Git para enviar el proyecto a mi repositorio remito recibi en consola el siguiente mensaje "$ git add . warning: in the working copy of 'imagenes/Muneco.svg', LF will be replaced by CRLF the next time Git touches it warning: in the working copy of 'reset.css', LF will be replaced by CRLF the next time Git touches it". Quiza ese pueda ser el origen del problema.

Muchas gracias!

5 respuestas

Hola Alumno, espero que estés bien.

Esto es una advertencia y no un error, puedes ignorarlo. Yo ensayé su proyecto en el link que me enviaste e incluso descargué desde tu github y no encontré problemas con la imagen. Pero en su código JavaScript, hay algunas inconsistencias y lógicas muy complejas sin haber la real necesidad. Es normal al principio pensar que para llegar al resultado siempre tenemos que realizar muchas operaciones y eso y aquello otro, pero al final generalmente casi siempre hay una solución más simple y limpia, es algo que se aprende con el tiempo y práctica.

Te dejo mi repositorio con el código que hice para este proyecto, puedes mirarlo para tener ideas de como puedes mejorar tu proyecto.

https://github.com/darkmoonsk/aluracrypter

Felicitaciones por tu proyecto y por tú ganas de aprender, sigue así.

Si tienes alguna duda, no dejes de preguntar. ¡Estamos aquí para ayudarte!.

¡Saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Buenas tardes, me ayudaría mucho saber cuales son las "inconsistencias" y "logicas complejas" que consideras innecesarias respecto de mi proyecto. Estoy tratando de descubrirlo por mi mismo pero aun sin exito. Esto es importante para poder avanzar en la corrección y/u optimizacion del codigo. Por otra parte, tambien apreciaria saber cuales son las herramientas de javascript que utilizaste en tu codigo ya que no comprendo la sintaxis, ¿es javascript orientado a objetos?¿donde puedo obtener informacion sobre las herramientas utilizadas en tu codigo?. Muchas gracias!

Hola, como estás?

Yo utilicé JavaScript puro, lo único es que puse la lógica de encriptar, desencriptar y validar el texto dentro de un objeto, y las llamo como métodos.

En tu función validar, la variable "ok" se inicializa en "false", pero no se usa en la lógica del código hasta que se le asigna un nuevo valor. Esta variable no es necesaria es suficiente con retornar true o false, en caso de que sea o no un texto válido. Puedes también quitar la variable de referencia del parrafo1 de dentro la función y ponerlo en el topo de tu código, ya que ella es usada varias veces en tu código, entonces no es necesario y ni bueno tener que declararlo toda vez que la función es llamada.

function validar(texto) {
    var regExp = /[A-ZáéíóúÁÉÍÓÚ]/;

    if (regExp.test(texto)) {
        return false;
    } else {
        return true;
    }
}

Al llamar validar(); debes pasar el parrafo1 que antes estaba declarado dentro de la función, validar(parrafo1); .

Yo creo también que deberías separar la lógica de encriptar de la lógica de desencriptar, porque generalmente buscamos hacer con que una función realice apenas un objetivo, cuando vemos que nuestra función está realizando demasiadas acciones buscamos dividirlas en otras funciones. Esto se debe porque queremos que nuestro código sea de fácil mantenimiento. Nosotros podemos volver años después a mirar este código y puede ser que no entendamos fácilmente lo que hicimos o que otra persona tenga que dar el mantenimiento y si nuestro código no es de fácil comprensión le costara trabajo.

function encriptar (texto) {
 const textoEncriptado = texto
            .replace(/e/g, "enter")
            .replace(/i/g, "imes")
            .replace(/a/g, "ai")
            .replace(/o/g, "ober")
            .replace(/u/g, "ufat");

        return textoEncriptado;
}

En esta función el texto que será encriptado es pasado como parámetro. Luego usamos el método replace, en JavaScript, métodos pueden ser encadenados, como no es una lista muy grande de letras que deben ser sustituidas no veo la necesidad de usar un bucle. Como aquí estamos usando expresiones regulares el replaceAll no es necesario, apenas pasamos la letra que queremos cambiar por el código y pasamos al final de la expresión la letra g que significa que queremos cambiar todas las partes del texto que esta letra aparece, como tenemos un método tras otro así que termina uno él empieza el otro usando el mismo texto, y al final guarda el texto dentro de la constante textoEncriptado y retornamos el texto encriptado.

Así puedes ir buscando en tu código como ir mejorando.

Y cuanto a las inconsistencias es que en tú página al presionar encriptar la entrada de texto congela y yo no puedo escribir nada más después y también si yo presiono copiar y luego desencriptar se genera 2 botones. También está permitiendo el usuario mover la caja de texto lo que no es una buena idea, pues cambia la apariencia de la página.

Hay algunos bugs a solucionar, pero creo que estás en buen camino, cualquier duda que tengas no dejes de preguntar.

¡Saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Buenas tardes, disculpe la demora en responder. He procurado revisar los errores y de implementar algunas de las sugerencias, procurando mantener la originalidad de mi proyecto, de allí la razon de mi demora. Ahora estoy avocado a avanzar con la formacion ya que deseo poder resolver el primer Challenge del curso de Java, pero apenas me haga un tiempo para seguir revisando mi proyecto muy probablemente me encontraré con nuevas dudas con relacion al hilo de esta misma consulta; de hecho he recreado parte del codigo y me ha quedado algo asi:

  const parrafo1 = document.querySelector(".parrafo1");

    const parrafo2 = document.querySelector(".parrafo2");

    const parrafo3 = document.querySelector(".parrafo3");

    const muneco = document.querySelector(".muneco");

    const mensaje = document.querySelector(".mensaje");

    const botonCopiar = document.querySelector(".copiar")

    const encriptador = {

        textoValido: function validar(parrafo1){

            var regExp=/[A-ZáéíóúÁÉÍÓÚ]/;

            if(regExp.test(texto)){

                    return false;

                }
            else{
                return true;
            }
        },

        codificador: function(parrafo1){

            const parrafoCodificado  = parrafo1 
            .replace(/e/g, "enter")
            .replace(/i/g, "imes")
            .replace(/a/g, "ai")
            .replace(/o/g, "ober")
            .replace(/u/g,"ufat");

            return parrafoCodificado;

        },

        decodificador: function(parrafo1){

            const parrafoDecodificado = parrafo1
            .replace(/enter/g, "e")
            .replace(/imes/g, "i")
            .replace(/ai/g, "a")
            .replace(/ober/g, "o")
            .replace(/ufat/g,"u");

            return parrafoDecodificado;
        }

    }


    const mostrarPantalla = {function(parrafo1){

        if(!parrafo1){

            parrafo2.style.visibility = "hidden";

            mensaje.style.display = "none";

            return;

        }


        parrafo3.style.display = "block";

        botonCopiar.style.display = "block"; 

        parrafo2.innerHTML = parrafo1;

        parrafo2.style.visibility = "visible";

        parrafo1.style.visibility = "hidden";

        muneco.style.display = "none";

        mensaje.style.display = "none";

        texto.focus();

        parrafo1 ="";

        parrafo1.placeholder ="Solo letras minúsculas y sin acentos";

        }

    }




    function boton1(){

        if(encriptador.textoValido == false){

            mostrarPantalla()

            return;

        }



    const textoEncriptado = encriptador.codificador(parrafo1.value);

    mostrarPantalla(parrafo1.value);

        }



    function boton2(){

        if(encriptador.textoValido == false){

            mostrarPantalla()

            return;

        }



    const textoDesencriptado = desencriptador.codificador(parrafo1.value)

    mostrarPantalla(parrafo1.value)



    }




    function boton3(){

        var botonCopiar = document.querySelector(".copiar")

        botonCopiar.style.display = "none"; 

        var botonCopiar2 = document.querySelector(".copiar2")

        botonCopiar2.style.display = "block"; 

        var parrafo3 = document.querySelector(".parrafo3");

        var boton3 = document.querySelector(".copiar");

        navigator.clipboard.writeText(parrafo3.textContent);      

    }

Pero me falta seguir revisando. Además todavía no pude abordar la cuestion de las "inconsistencias" que marcaste, y allí creo que puedo tener muchos interrogantes que resolver. En fin, dejo abierto este hilo ya que deseo poder volver sobre este particular mas adelante. Pero desde ya me resulta muy util la respuesta que me brindaste. Excelente!. Mil gracias!! Espero seguir contando con tu orientacion. De momento continuaré con la formacion para no retrasarme.

Saludos!

Hola Jorge,

Te está quedando más claro el código, y más fácil de identificar rápidamente que cada parte está haciendo. Cualquier duda que tengas estaré atento para ayudarte, también puedes encontrarme en el Discord del curso. Te deseo mucho éxito en tus estudios.

¡Saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios