buen dia, estoy realizando un pequeño proyecto aplicando conocimientos adquiridos en el curos de programacion orientada a objetos, la pequeña aplicacion funciona "pero de una manera extraña😣😥". se ha creado un formulario en el cual esta la opcion de elegir que tipo de usario se va a crear (profesor o alumno), la informacion se puede ingresar correctamente, pero si selecciono de primeras el tipo de usuario alumno al momento de dar click al boton crear usuario(submit) la informacion no se envia y no se imprime en el DOM; Lo mas extraño es que si elijo al tipo de usuario profesor de primeras si me envia e inserta la informacion, luego cuando vuelvo a cambiar el tipo de usario por alumno ahi si me imprime la informacion que le asigne al tipo alumno😵🥴🤯😩

Agradezco muchisimo si alguien me puedise orientar y ayudarme a descubrir y a corregir este funcionamiento tan extraño.

Adjunto link para la descarga del proyecto: https://we.tl/t-9pWt7bGWO5

avatar

Intentando restaurar la BD desde el backup en la nueva BD me encontre con el problema Permission denied lo cual no me deja realizar el respectivo proceso de restauracion.

en la imagen que les dejo se puede observar la forma correcta de realizar la restaruacion del backup sin que tengan problemas con permisos denegados, estan simple como reemplazar el backSlash \ por un slash simple / en la ruta donde esta almacenado el backup.

avatar

Para realizar este proceso se debe acceder a la ruta de instalación de postgres desde la consola de comandos y allí ubicar el ejecutable pg_dump, en windows la ruta por defecto es la siguiente: C:\Program Files\PostgreSQL\13\bin; una vez ubicado en la ruta se ingresa todo el comando a ejecutar para el respectivo proceso del backup de nuestra base de datos.

en caso de querer guardar el archivo backup en alguna ruta en especial, despues del comando -f entre comillas dobles " " ingresamos la ruta donde queremos que nos guarde el archivo, ejemplo: -f "D:\Desktop[MiprimerBackup.sql](//MiprimerBackup.sql)" , en el ejemplo anterior observamos que la ruta que se eligio fue el disco local D en la carpeta escritorio asigando el nombre del archivo generado con su respectiva extension.

avatar

En el ejemplo que se muestra usando el INSERT con el comando SELECT, El profesor menciona que los Tipos de Datos en cada tabla deben ser exactamente iguales para que se pueda ejecutar la accion de insertar la consulta correctamente; para quien tenga la duda si coloco un VARCHAR con un parametro diferente(ejemplo VARCHAR(50) en la tabla donde se realizara la consulta) en el ejemplo el profesor usa VARCHAR(60) en ambas, Tambien es valido y la insercion de la consulta se hace correctamente.

avatar

hola cordial saludo a tod@s..... necesito una orientacion en un problema que trato de resolver en javascript; necesito almacenar unos valores dentro de una propiedad de un objeto pero que este valor no se reinicie y pueda seguir añadiendo mas valores.

aqui les dejo el codigo del problema.... agradezco muchisimo la ayuda y respectiva orientacion

1 2const MENU = [ 3 { 4 producto: "Hamburguesa sencilla", 5 precio: 5000, 6 codigo: "HS01" 7 }, 8 9 { 10 producto: "Hamburguesa especial", 11 precio: 12000, 12 codigo: "HE02" 13 }, 14 15 { 16 producto: "Papas a la francesa", 17 precio: 4000, 18 codigo: "PF03" 19 }, 20 21 { 22 producto: "Gaseosa", 23 precio: 2500, 24 codigo: "GS04" 25 }, 26] 27 28const restaurante = { 29 vendidos: [], 30 totalVentas: 0 31} 32 33 34const usuario = { 35 nombre: "Andres", 36 edad: 22, 37 deuda: 0, 38} 39 40 41const MOSTAR_MENU = () => { 42 console.log("Codigo - Producto - Precio") 43 for (let item of MENU) { 44 console.log(`${item.codigo} - ${item.producto} - ${item.precio}`) 45 } 46} 47 48let pedido = [] 49 50 51const REALIZAR_PEDIDO = codigo => { 52 codigo = codigo.toUpperCase() 53 if (!codigo) return "no se admiten campos vacios" 54 if (typeof codigo != "string") return "el valor ingresado no es valido" 55 const buscar = MENU.find(item => item.codigo === codigo) 56 if (!buscar) return "producto no encontrado" 57 pedido.push(buscar) 58 restaurante.vendidos = pedido.slice() 59} 60 61 62 63const MOSTAR_PEDIDO = () => { 64 console.log("Codigo - Producto- Precio") 65 for (let item of pedido) { 66 console.log(`${item.codigo} - ${item.producto} - ${item.precio}`) 67 } 68} 69 70 71 72const totalPagar = () => { 73 74 for (costo of pedido) { 75 usuario.deuda += costo.precio 76 pedido = [] //aqui se esta reiniciando la variable pedido, lo cual a su vez me reinicia tambien el valor de la propiedad del objeto restaurante.vendidos 77 } 78 return ` ${usuario.nombre}, Debes pagar un total de $${usuario.deuda}` 79} 80 81const PAGAR_PEDIDO = pago => { 82 switch (true) { 83 case pago < usuario.deuda: 84 console.log(`no te alcanza para pagar tu deuda; necesitas agregar $${usuario.deuda - pago} mas, para poder llevarte tu compra`) 85 break; 86 case pago === usuario.deuda: 87 console.log(`has pagado completamente tu deuda`) 88 usuario.deuda = 0 89 pedido = [] 90 break 91 case typeof pago != "number": 92 console.log("el valor de pago ingresado no es valido") 93 break 94 default: 95 console.log(`has pagado completamente tu deuda y tienes un cambio de $${pago - usuario.deuda}`) 96 usuario.deuda = 0 97 pedido = [] 98 break; 99 } 100} 101 102 103 104const VERVENTAS = () => { 105 console.log(` las ventas realizadas fueron : `) 106 for (let item of restaurante.vendidos) { 107 restaurante.totalVentas += item.precio 108 console.log(`${item.codigo} - ${item.producto} - ${item.precio}`) 109 } 110 return `para un total en ventas de: ${restaurante.totalVentas}` 111} 112

avatar

la palabra reservada return me sirve para realizar una acción (suma, resta, comparación etc) sin mostrar el resultado, hasta que dicha acción se llamada para que se ejecute.

El ejemplo más simple sería una función que suma dos valores:

1 2function sum(a, b) { 3 return a + b; 4} 5 6let result = sum(1, 2); 7alert( result ); // 3 8

en este ejemplo podemos observar la función "sum" la cual esta recibiendo 2 parámetros "a y b", dentro de esta función se esta realizando la acción de sumar a + b sin embargo no se esta recibiendo ningún valor ya que los parámetros a y b (es decir las variables a y b) aun no tienen ningún valor ni tipo de dato asignado; el valor de esa acción es la que se esta devolviendo con el return a la función "sum".

ya en la variable "result" vemos que se le **asigna como valor la función "sum" **mas los valores de los parámetros a y b que en este ejemplo serian 1 y 2; recuerda que con return se le asigno a la función "sum" la acción de sumar sus dos parámetros (a y b ósea 1 y 2), por eso al llamar a la variable "result" en el alert es como si se estuviera llamando directamente a la funcion "sum".

La directiva return puede estar en cualquier lugar de la función. Cuando la ejecución lo alcanza, la función se detiene y el valor se devuelve al código de llamada (asignado a la variable result del ejemplo anterior).

avatar

la formulacion correcta es la siguiente:

1// Saber si b es mayor que a o si b es mayor que c 2 3**let a = 20, b = 10 , c = 30 4 5let resp = b > a|| b > c 6 7 // false || false 8 9console.log(resp) // output: false**

avatar

Alguien sabe por qué el curso de vue.js desde cero no está disponible?

avatar

hola, estoy en la creación de un proyecto personal y me gustaria mucho poder incluir un slider como los que usa edteam en sus cards de presentación de especialidades o cursos que se encuentran en la pagina principal. si alguien me puede orientar como empezar a hacerlo lo agradesco mucho,

avatar

me surge la pregunta de cómo podría cambiar el reloj a formato de 12 horas he googleado pero las funciones que he encontrado para convertirlo a dicho formato son muy largas y no explican muy bien cómo funcionan. agradezco mucho si alguien me pudiera orientar un poco mejor. ✨🐱‍🏍

avatar

que tal compañeros. respecto a esta clase la verdad si estuvo un poco confusa, respeto y admiro mucho el trabajo del profe álvaro pero en esta clase fue muy poco lo que comprendí.

decidí retroalimentar mas el concepto de insertBefore() y dejaré mi aporte por si a alguien le llega a servir:

El método insertBefore tiene una función similar a appendChild, solo que no inserta el elemento hijo justo al final del elemento padre, sino antes de un elemento concreto que hay que especificar.

ejemplo:

HTML

<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Manipular El DOM</title>
</head>
<body>
   
   <div id="papa">

       <div class="hijo">hijo 1</div>

       <div class="hijo" id="hijo2">hijo 2

           <div class="nieto">nieto 1</div>
           <div class="nieto" id="nieto-2">nieto 2</div>
           <div class="nieto">nieto 3</div>

       </div>

       <div class="hijo">hijo 3</div>

       <div class="hijo">hijo 4</div>

   </div>

   <script src="Js/main.js"></script>
</body>
</html>```

JavaScript

```  const elemento1 = document.createElement('h1');

elemento1.appendChild(document.createTextNode('elemento nuevo'));

elemento1.id = 'nuevo';

elemento2 = document.getElementById('nieto-2');

elemento2.parentNode.insertBefore(elemento1, elemento2)```

des esta forma obtenemos como resultado un  nuevo elemento insertado justo despues de nieto 1 y antes de nieto 2

avatar

me surge la pregunta ya que el profesor no explico para qué sirve esa función.

quedo atento a cualquier respuesta que despeje mi duda.

avatar

no entendí por que el profesor Beto agrego después de la variable numbers el .length. si alguien me ayuda a aclarar la duda le agradezco mucho.

aqui el ejercisio que el profesor realizo apartir del minuto 3:30:

1 console.log(numbers[i] % 2 ===0) 2}```
Publicaciones
Certificados
Me gusta
Referidos