Que afortunados somos de tenerte en KZbin, debemos recompensarte por compartir tu conocimiento, buen amigo y colega.
@rubendariohernandezcenteno5259 Жыл бұрын
Midu, este curso tiene mucho nivel, hay muy poco contenido de excelente calidad y gratis como este, la verdad está quedando perfecto.
@RoxanaConstantine5 ай бұрын
Voy a decir algo que no viene al tema pero, me animan mucho tus videos.Mas allá de la programación, soy una persona que vive largos períodos en soledad y el mundo de la programación a veces es solitario.Me gusta mucho que tengas tanta alegría ❤ porque me haces sentir animada.
@diegonaranjo18747 ай бұрын
uy parce, enserio que midu me deja muy sorprendido y loco con las cosas que hace, yo creo que esto no se coge con experiencia y siendo constante en programacion, siento que este nivel de sabiduria y logica con la que lleva todo un paso mas alla es de alguien con talento, midu es el messi de la programacion, sos el mejor y mi ejemplo a seguir bro
@clayman1325 Жыл бұрын
En horabuena Midu Gracias por subir este video, Esperado hace 1 mes :D
@midulive Жыл бұрын
😊 a ti
@clayman1325 Жыл бұрын
@@midulive strategy pattern y factory pattern es un uso o un ejemplo de Dependency injection, se ve muy similar. Excelente video que esta buenisimo que nosea solo hello world :D
@offGamingChannel Жыл бұрын
Hablando de buenas prácticas, comento un par de detalles (avanzados, quizás) a considerar en el uso de un UUID tal como se presenta aquí: 1. La función UUID() no es determinante, por lo que en un entorno con réplica, en las instancias slave, puede devolver valores diferentes al master dependiendo de la configuración de MySQL; en particular binlog_format. 2. En una tabla InnoDB, la PRIMARY KEY es su índice clusterizado, lo que determina el órden físico de los datos. Como en este caso, el valor de id no es secuencial, los registros se ingresarán "en medio de la tabla" requiriendo mover registros (page splitting) para hacer lugar y mantener así el órden. Esto implica un impacto en rendimiento al insertar y fragmentación de los datos afectando también la lectura. Se podría jugar con el fill factor para minimizar el impacto.
@offGamingChannel Жыл бұрын
3. La calidad de datos es mejor tratarla al momento de insertar. Por ejemplo, si voy a necesitar luego comparar un string en minúsculas, es mejor ya almacenarlo en minúsculas; luego en todo caso puedo convertirlo a camel case al mostrarlo. En este caso, se utilizar la función LOWER() sobre el campo "name" para buscar registros. Tener en cuenta que el uso de una función sobre un campo inhibe el uso de índices (en versiones anteriores a MySQL 8); es decir, por más que creemos un índice por "name" no será tomando en cuenta. Los indices funcionales (los que se crean a partir del resultado de una función) fueron agregados en MySQL 8.
@offGamingChannel Жыл бұрын
Muy buen video! Espero mi aporte como DBA sea de utilidad. =)
@futudev10 ай бұрын
Excelente aporte!
@bettinimarcelo Жыл бұрын
Siempre subiendo buen contenido gratuito, muy bien diez, felicitado! Un aporte: SQL es case insensitive por default, no hace falta convertir texto a mayúsculas, minúsculas o lo que sea.
@je813 Жыл бұрын
Buenas midu!! Estoy esperando con muchas ganas la parte del testeo. Me encantaría que pudieras explicar toda la parte de los mocks de las dependencias y la base de datos. Un saludo y gracias por el cursazo!!
@amneriscalle11 ай бұрын
Gracias x estos cursos, muy buenas las explicaciones, en especial cuando mostrás de dónde salen las herramientas que usamos. En la mayoría de los cursos te dan la herramienta directamente y uno las aprende y las usa como robot, sin saber por qué ni de dónde. Gracias de nuevo, un saludo desde Argentina.
@oOserg1Oo Жыл бұрын
estuve buscando por un tiempo sobre injeccion de dependicias lo entendi pero hacian uso de algun otra libreria, gracias por tu tiempo por que acabo de darme cuenta que no se necesita de tantas librerias para poder lograr algunas cosas.
@midulive Жыл бұрын
Exacto, no se necesitan librerías para conseguirlo. Aunque pueden ayudar, el concepto se puede hacer sin nada!
@faustojosevincesmendoza6854 Жыл бұрын
Lo bueno de mysql2 es que crea una PISCINA DE CONEXIONES, asi se reciclan las conexiones y no por cada petición estas conectándote y desconectándote cuando termine, es algo que usa mysql el antiguo.
@bettinimarcelo Жыл бұрын
para el campo rate les recomiendo usar una restricción CHECK para evitar que sea menor a 0 y mayor a 10
@fernandoangelrodriguezgonz1393 Жыл бұрын
Siiii 🥳🥳🥳. Rato esperando por la continuacion del curso de Node, Midu. No lo pude ver en Twich pero ahora lo hago por aki y depues me paso por Twich para ver la directa. Mil gracias por estos excelentes cursos que es de lo mejor que se puede encontrar tanto en español como ingles. Eres el mejor Midu ❤❤❤
@mafi9789 ай бұрын
Wow midu la verdad es que con estos cursos estoy aprendiendo más conceptos de programación, patrones, arquitecturas y buenas prácticas, que con asignaturas enteras de la carrera y de forma más dinámica y práctica, eso sí, no creo que sea un curso de inicialización, creo que tienes que tener ya unas bases detrás para poder seguir el ritmo.
@juansebastian27217 ай бұрын
Magnifico trabajo Midu, he aprendido un montón, muchas gracias por tomarte el tiempo para compartir tus conocimientos. Un saludo Capo.
@CharlyAlemania Жыл бұрын
1:13:59 Jaja qué genial hostear la Base de Datos de Planet Scale en Frankfurt, yo vivo acá y frente a mi casa hay un data center enorme, quizás esté ahí 🙈
@diegovieramartinez23953 ай бұрын
Increíble , me he visto el curso completo , he aprendido un montón de cosas
@karmax068 Жыл бұрын
Muchas gracias por este video, llevava esperandolo muchisimo, pero tambien es bueno tomarse descansos, espero y hayas disfrutado tus vacas❤
@AndrePonc3 Жыл бұрын
Muy genial midu! :) Gracias por el videazo
@midulive Жыл бұрын
Muchas gracias!
@lautarodecima3350 Жыл бұрын
Excelente cursos, sos el único que explica estas cosas a detalle en videos espero que sigas así. En este curso vas a incluir la sección de hacer test con vitest o jest??
@SonGoku-pc7jl Жыл бұрын
muchisimas gracias, increible el curso y el patrón de inyeccion de dependencias muy divertido e interesante, infinitas gracias!!!
@DiatonicoWeb Жыл бұрын
Para db en mysql yo uso en mac sequelpro, es liviano y para lo básico va muy bien
@JoGoku5 ай бұрын
Seria interesante que enlazaras las clases anteriores a los videos, para seguir mejor el orden de las clases
@Retales2022 Жыл бұрын
Me viene de lujo este video ahora la verdad 🙌
@luizarnoldchavezburgos3638 Жыл бұрын
hola midu. Gracias por compartir tu contenido, ahora faltaría ir probando bun con todo este tipo de arquitectura e ir contribuyendo para solucionar los bugs. Ya que creo que bun es el futuro y nodeJS no se va a poner las pilas
@santiagowu5365 Жыл бұрын
Ya hay integración de Elysia y Prisma para hacer backend con bun.
@4lt4r10 Жыл бұрын
moviendo las consultas desde un SP, también evita las inyecciones!
@Jefferson-SDET7 ай бұрын
No desarollo en Javascript, pero los conceptos que se tratan igualmente son muy buenos
@TSpods Жыл бұрын
muchas gracias por subir estos tutoriales me ayudan muchísimo
@jacarrascom11 ай бұрын
Midu, lograste pasar el curso a typescript? En algún momento comentaste de la arquitectura recomendada por expertos, donde tener esa info. Gracias por compartir.
@felipe41817 ай бұрын
Quedé con la misma duda
@RemusIPRUNA Жыл бұрын
Hola, soy nuevo en el canale y respetosamente te pregunto, donde estan los cursos que lo estas mencionando en "2:14 Repaso de la clase 4" (y porque no, las clases de 1 al 3). Me interesa entender la mecanica MVC. Creo que eres el unico que lo ha explica a mi entendimiento despues de mirar decenas sino centenas de videos en internet. Muchas gracias! EDIT: Lo he encontrado! ajaja
@watercubz Жыл бұрын
El curso es por parte tienes q verlo desde el 1 al 6
@blurdesigner Жыл бұрын
Hola Midu, no puedo usar la version free para subir la base de datos de mysql, me dice que para mi región no está disponible. Alguna alternativa?
@misterl81296 ай бұрын
1:10:00 @midu consulta, genial eso de extraer todo y modularizar y encapsular todo de esa manera, pero, así debiese hacerse si es que comenzaste a trabajar con clases? Me explico, asumiría que si vas a trabajar con programacion funcional, que todo sea en base a funciones, si es por clases, que todo siga esa estructura y finalmente claro, envolviste parte de la logica en una funcion, hay un mix de ambos, eso se suele ver? Creería que no :o Gracias
@dagcomunica5921 Жыл бұрын
Gracias por tan magnifico aporte al conocimiento. Gran video
@fprz14 Жыл бұрын
Muy educativo, gracias!
@LucasLeónKriger Жыл бұрын
Hola, aqui un error que me costo 4 días... Estoy utilizando DBeaver en Windows, conectando con una base de datos MY SQL server 8.0. Por alguna razón que desconozco en lugar de utilizar UUID_TO_BIN utiliza (UNHEX(REPLACE(UUID(), '-', '')) tambien en el SELECT cambialo por: SELECT HEX(id) AS id, title, year, director, duration, poster, rate FROM movie; no sé porque utiliza una función de maríaDB si alguien me puede ayudar a entenderlo... Utilizando HEX(id) se generó perfectamente la base de datos.
@zhare981111 ай бұрын
yo tambien tuve el mismo error pero según chatgpt es por tema de versiones de mysql seguro midu estaba trabajando con una versión anterior
@CarlosFelipeRiveraG-tl2yf8 ай бұрын
@@zhare9811 imposible, yo con la última versión y me funciona bien, de pronto deben cambiar el motor a innoDB
@alfonsspj6 ай бұрын
para quienes quieran ver el ID en este formato "550e8400-e29b-41d4-a716-446655440000" (UUID) en el SELECT que mostro el compañero arriba cambian HEX(id) AS id por: CONCAT_WS('-', SUBSTRING(HEX(id), 1, 8), SUBSTRING(HEX(id), 9, 4), SUBSTRING(HEX(id), 13, 4), SUBSTRING(HEX(id), 17, 4), SUBSTRING(HEX(id), 21) ) AS id
@gose035 ай бұрын
@@alfonsspj También me costo trabajo, no se en que versión o si es el soporte de la aplicación. Esta información se encuentra en la documentación de MySQL, otro particular es que a mi no me permitio colocar como default esta función, MySQL tiene ese detalle, de hecho tuve que hacer un BeforeInsert Trigger para colocar el NEW.id en (UNHEX(REPLACE(UUID(), '-', '')). Para fines teoricos como este esta bien un Id como el hecho con UUOD, pero se aconseja INT UNSIGNED para este tipo de campos PK
@JCMVBlogs Жыл бұрын
Este hombre me da la vida !
@Yayobyte9 ай бұрын
gracias por el curso papa. Plannet scale ya no tiene free plans
@droid-jr9940 Жыл бұрын
ando Preparado !!!!! miduLive!!!
@frangarcia73482 ай бұрын
PlanetScale elimino la capa gratuita, que plataforma se puede usar para reemplazarla?
@enoccastro93555 ай бұрын
cual es el video anteior? donde se arreglo lo de las cabeceras?
@jacarrascom Жыл бұрын
muchas gracias por los videos del curso, son geniales. Que hacer si necesito conectarme con mas de una BD?
@juanpasten60779 ай бұрын
Gracias Midu!
@ramirezhernandezrobertocar8591 Жыл бұрын
Más de Node con MySQL 🙏🙏🙏
@leonardoramirez8226 Жыл бұрын
La mejor manera de evitar sql injection , sería tener stored procedures en lugar de los dmls directos
@jsantos12202 ай бұрын
Pregunta, no hay que hacer connection.end() en ninguna parte?
@miguecast Жыл бұрын
Básicamente lo que ha hecho es encapsular y pasar el modelo como parámetro. Creía que para hacer inyección de dependencias necesitabas crear un contenedor con Awilix o similares.
@plasmodiun1 Жыл бұрын
Tal cual aveces eso de decirlo de otra forma confunde mas cuando no conoces sobre el tema
@nicolasramos83948 ай бұрын
Donde se hizo lo de MongoDB? en la clase anterior ya estaba hecho
@felipe41817 ай бұрын
@midulive llevamos 9 meses esperando, ese bebe no llego 😭
@ernestoorange63684 ай бұрын
creo que se brinco esa parte :(
@diegounanue Жыл бұрын
Cuando sigue este curso no tenia una pagina con el temario y certificado?
@Smileeee_23 Жыл бұрын
Muchas gracias midu.
@bryanalexandermoscolbravo44646 ай бұрын
Hola Midu, quisiera saber que si una buena practica es usar el los nombre de las columnas los snake_case en minúscula
@jeanpaulvillarreal48442 ай бұрын
Alguien me podría decir y si el propio midu lo puede hacer. ¿Porqué en la inyección de dependencias no se usa un patrón como el factory para hacer una función que mediante parámetros te devuelva un u otro modelo en ves de hacer un archivo para cada modelo?
@FireCrauter Жыл бұрын
23:00 con ChatGPT o una IA se puede agregar mas movie
@santiagowu5365 Жыл бұрын
Ahora estoy probando Elysia y Prisma con MySQL para usar bun y es muy cómodo. Para cuando curso de bun midu?
@gerrcass1 Жыл бұрын
Es curioso, veo en la web de bun que dicen ser "SQL-first"... entiendo que va un poco contra el uso de ORM.. ¿Qué opinan?.. Esto dice en su web: "Bun's goal is to help you write SQL, not to hide it behind awkward constructs."
@AlexYT-f4e Жыл бұрын
Una pregunta sobre la inyección de dependencias... a ver si alguien en los comentarios me puede arrojar luz :D En el ejemplo que ha hecho, al crear la app le pasa el modelo "movie" en el caso de una aplicación con 30 o 40 modelos, por ejemplo... ¿no sería un rollo y un poco chungo tener que pasar todos los modelos? ¿Cuál sería la forma óptima de hacerlo en ese caso?
@AlexYT-f4e Жыл бұрын
nadie? :(
@kein7 Жыл бұрын
Es que para aplicaciones mas grandes ya se empieza a dividir la aplicación en microservicios por lo que no tendrías una aplicación para todo el negocio sino para ciertas funcionalidades especificas de él y ahora respondiendo a tu pregunta si tuvieras 20 o 30 modelos lo mas probable es que la aplicación pueda ser dividida en microservicios donde cada una de ellas cumpla un objetivo concreto. Esto se hace así para poder escalar la infraestructura de manera mas eficaz.
@kein7 Жыл бұрын
De igual forma si tuvieras 20 o 30 modelos seria mucho mejor tenerlos usando mvc que sin una arquitectura definida ya que te permite tener separadas las funcionalidades, además de igual forma es difícil que los 20 y 30 modelos sean de funcionalidades que no tengan relación entre si por lo que podrias ir agrupando en carpetas las que abarcan cierta área de tu aplicación y e ir importando las areas no mas y dentro de cada área se vayan importando los modelos que se desprenden de ellas.
@Mik3aglin6 ай бұрын
Buenas gente. El tema de inyecciñón de dependencias como lo explica aquí midu. Si teneis un servicio que depende de otro, tendrías que pasarle entonces todo a ese servicio? Osea el servicio B usa el Servicio A El servicio A le tienes que inyectar el modelo A. Entocnes al servicio B le vas a tener que inyectar el Modelo B y el Servicio A pero para inyectar el servicio A has tenido que inyectar a su router el modelo A y el modelo B? ES un poco jaleo hay alguna otra forma de hacerlo? o se me está pasando algo. O ya habría que usar algun paquete para que te lo gestione rollo spring y puedas inyectarlo de manera más facil?
@Gulliver626 Жыл бұрын
Hola, que pasa si yo estoy usando sequalize? que puedo hacer? o dejo de usarlo?
@plojiarendio6278 Жыл бұрын
Hola Midu, la plataforma para desplegar ya no acepta constraints por que busca implementar non-blocking schema, hay alguna otra plataforma o hay una forma de solucionarlo?
@h3ctor19919 ай бұрын
¿Tienes un ejemplo o video igual que con posgres?
@danielbenavides1907 Жыл бұрын
Hola a todos, durante la ejecucion de la bd en mysql me ha dado este error Error Code: 1901. Function or expression '`UUID_TO_BIN`()' cannot be used in the DEFAULT clause of `id` si alguien le ha sucedido lo mismo, me podria ayudar?
@samuelaponte268711 ай бұрын
A mi también me pasa lo mismo :/, lo solucionaste?
@danielbenavides190711 ай бұрын
@aponte2687 hola, dentro de la base de datos en la tabla de movies puse esto id varchar(36) primary key default(UUID()) asi fue como lo solucione!
@cesarcoloradocaceres8428 ай бұрын
Es por la versión del MySql, para crear el UUID usé esto: (UNHEX(REPLACE(UUID(), '-', ''))) y para recuperarlo: CONCAT_WS('-', SUBSTR(HEX(id), 1, 8), SUBSTR(HEX(id), 9, 4), SUBSTR(HEX(id), 13, 4), SUBSTR(HEX(id), 17, 4), SUBSTR(HEX(id), 21) ) AS uuid Espero sirva, saludos!
@jlonso1840 Жыл бұрын
En "herramientas a usar" docker cuenta?
@fernandosoria912919 күн бұрын
no entiendo porque crea una db con dbengin y despues crea otra con workbench y con el mismo puerto, si alguien me explica se lo agradecería
@JohanChk Жыл бұрын
seguirás haciendo el curso de node? :'|
@ricardovallejo9471 Жыл бұрын
Grande midu
@CarlosFelipeRiveraG-tl2yf8 ай бұрын
planetscale ya no ofrece servicios free?
@uncalvopelabola6 ай бұрын
alguien me dice donde explico lo de la clase 4?
@nilocastilloumeres2437 Жыл бұрын
No se si pueda enviarme el link de las clases hasta el 4to para poder verlo
@10tronic Жыл бұрын
Como tecleas tan rápido? Practicas en algún lado? Se que usas Copilot sin embargo cuando lo haces tu mismo lo haces a todas hostias. :V
@samuelaponte268711 ай бұрын
La experiencia xd
@ThePerros14 Жыл бұрын
Han usado supabase?
@JohanChk Жыл бұрын
midu podrías porfavor adjuntar el script de creación de la db, no lo veo en el repositorio
@ThePenitentOneArg Жыл бұрын
31:52 Midu en modo Milei
@diego.coder26 Жыл бұрын
Algún video sobre prisma? :0
@aerleylopez Жыл бұрын
Alguien sabe si planetscale es totalmente de paga por que trato de usar la versión gratuita y siempre me pide una targeta de crédito:(
@pegaenespannol8 ай бұрын
Planet Scale removió la capa gratuita
@felipe41817 ай бұрын
si, que falla!
@carlosrofts52304 ай бұрын
Vps de Google , solo lee los requisitos para que sea gratis.
@carlosrofts52304 ай бұрын
Railway
@Jorge-lg8mx6 ай бұрын
Adiós al plan "hobby" de Planet Scale :(
@diegonaranjo18747 ай бұрын
alguien sabe una buena alternativa para windows de dbngin?
@jorgemason8030 Жыл бұрын
parece que la version uuid de mysql no es version 4
@DAVIDIL81 Жыл бұрын
no entiendo para qué sirve o si quiera si es necesario XAMPP o WAMPP o levantar un servidor local... perdona mi ignorancia... pero estoy hecho un lío con esto
@cesarcoloradocaceres8428 ай бұрын
XAMPP son servidores locales para que funcione tu MySql Workbrench
@MarianitoRayser Жыл бұрын
Pero de este modo, que tan escalable seria el proyecto???, porejemplo si quiero agregar comentarios en las movies.. o likes... no se complicaria?? Abrazo midu !! gracias por toda esta data..
@jennifferorjuela9478 ай бұрын
Lastima que todos los servicios que en ese tiempo estaban free, ya no lo estan! :(
@ragnardanneskjold1084 Жыл бұрын
y el link de github??
@gusmoeta3 ай бұрын
planetscale ya no ofrece bbdd gratis desde abril de 2024
@user-yg3oc3rt1x7 ай бұрын
fl0 está caida verdad? O soy el unico que no le deja ingresar?
@carlosrofts52304 ай бұрын
Usa railway
@davosalaz86066 ай бұрын
Es mejor la programación pura y Open source ... En cuanto tenga el tiempo aportaré la mejor identacion en codigo
@JohanChk Жыл бұрын
UNSIGNED para tipos decimales esta deprecado
@stivenreina2267 Жыл бұрын
20:44
@benjaminaldaya7235 Жыл бұрын
a estudiar!!!
@programacion36948 ай бұрын
owo
@fernandosoria912919 күн бұрын
que bodrio es sql, lo que menos me gusta del backend
@UltisaerRevternae-pl1rh8 ай бұрын
38:56 Reto solucionado , filtra por genero y por letra , si quiero todos los géneros que contentan la i se le tiene "Action, Crime, Sci-Fi" Tiene la validación de un genero existe o no y luego si trae toda la informacion Ademas lo acompañe este reto con el anterior que era traer paginación y para ello con limit y offset se hace sencillo y en la respuesta mande mas información para que el usuario sepa en que pagina esta cuanta información posee esa pagina, la cantidad total de elementos existentes y asi static async getAll({ genre, page = 1, size = 3 }) { const offset = size * (page - 1); let genreCondition = "%%"; if (genre) { const [genreExists] = await connection.query( `SELECT EXISTS(SELECT 1 FROM genres WHERE name LIKE ?) AS isExist;`, [`%${genre}%`] ); if (!genreExists[0].isExist) { return { message : `Genre ${genre} not found`} } genreCondition = `%${genre}%` } const [totalMovies] = await connection.query( `SELECT COUNT(DISTINCT m.id) AS total FROM movies AS m;` ) const [totalMoviesByGenre] = await connection.query( `SELECT COUNT(DISTINCT m.id) AS total FROM movies AS m INNER JOIN movies_genres AS mg ON m.id = mg.movie_id INNER JOIN genres AS g ON g.id = mg.genre_id WHERE g.name LIKE ?;`, [genreCondition] ); const total = totalMovies[0].total; const totalByGenre = totalMoviesByGenre[0].total; const totalPagesByGenre = Math.ceil(totalByGenre / size); const [movies] = await connection.query( `SELECT m.id, m.title, m.year, m.director, m.duration, m.poster, GROUP_CONCAT(g.name ORDER BY g.name) as genre, m.rate FROM movies as m INNER JOIN movies_genres AS mg ON m.id = mg.movie_id INNER JOIN genres AS g ON g.id = mg.genre_id GROUP BY id HAVING genre LIKE ? LIMIT ? OFFSET ? ;`, [genreCondition , size, offset] ); return { page, size, total_data_by_genre: totalByGenre, total_pages_by_genre: totalPagesByGenre, total_data_in_page: movies.length, total_entries: total, data: movies } }