Algunas notas que estáis mencionado: - Se puede rellenar una tabla con un CSV directamente desde consola. Efectivamente, pero no siempre es tan fácil, a veces tienes que convertir los datos a otro formato (rediseño de la BD) o sacar los datos de otra API o de otro sito. El tip es agrupar los inserts, no tanto el CSV, el CSV era solo un ejemplo. - En compiladores más antiguos no se puede cambiar un if dentro de otro por un and porque no garantizan que la evaluación del and sea de izquierda a derecha. En estos casos lo que se puede hacer es poner uno después de otro, si es que vas a retornar nulo u otro valor. - No es el lenguaje como tal el que tiene un "estándar" para la nomenclatura de variables/funciones/clases. Existen varios estándares para cada lenguaje. A lo o que me refería es a usar el estándar mayoritario, que usa la mayoría de gente.
@fernandomoran3163 Жыл бұрын
Cual es tu lenguaje favorito
@fullpeliculafhdhdsd9242 Жыл бұрын
Buena aclaración.
@alexestrada9588 Жыл бұрын
@@no-name1.612 khee
@revytech1001 Жыл бұрын
Si, en la práctica antes de cada registro se requieren validaciones que no dependen del tipo de dato si no del modelo de negocio. A medida que estas se cumplan se pueden ir agregando al query.
@flavioe.salasm.9922 Жыл бұрын
the Art of postgresql... te enseña a no ser tan pendejo....
@jinjanwarrior5912 Жыл бұрын
Me molarian más videos de este estilo
@mihailion2468 Жыл бұрын
Para el primer tip, puedes mejorarlo aún más usando el LOAD DATA INFILE de mySQL, que lo que hace es básicamente leer directamente el fichero y lo vuelca a base de datos, ya te imaginas lo rápido que puede llegar a ser
@jsanca Жыл бұрын
Eso mismo iba a decir, sin embargo el uso del script es muy valido cuando se necesita procesamiento de la linea, escapar, componer, agregar, remover, etc
@arielcg_ Жыл бұрын
El tema con eso es que necesitas acceso al propio servidor, porque el INFILE es un archivo en el disco del servidor. Como estés en una base de datos administrada por otros (como puede ser Amazon RDS), ya no puedes hacer eso. Y aún si tienes acceso, tienes que saber en qué directorio colocar el archivo, ya que MySQL no puede leer de cualquier lugar del sistema.
@Mariomm_marti Жыл бұрын
Una cosa, en el primer tip es tan extremadamente lento porque haces una query por insert, pero lo habitual (cuando no los importas sino que rellenas desde una API o algo así) es hacer INSERT INTO [... ]VALUES([...]),([...]),([...])... En PostgreSQL al menos, los datos se almacenan paginados de 8KB en 8KB. Si no recuerdo mal, usan LSMTrees para optimizar la inserción. Al pasar todos los VALUES en una sola query, es capaz de analizar cómo guardar mejor la información y es mucho más rápido (si mandas los values de uno en uno, no sabe cuál es el siguiente y no puede optimizar el espacio para el anterior). El comentario va con la intención de explicar el motivo, que no es solo el interrupt del sistema operativo. Muchos ORM aprovechan esto y te obligan a hacer el #commit() o algo así para generar una sola query. Espero que te resulte de utilidad (quizá ya lo sabías), y que leas esto :)
@enriquerafaelbecerrabocang5848 Жыл бұрын
Gracias hermano, así me queda más claro.
@VirusZyrus Жыл бұрын
Crea mas videos asi... nos ayudan mucho a mejorar el rendimiento de nuestros proyectos
@unlugartrufado Жыл бұрын
En cuanto a la nomenclatura..... no depende del lenguaje, depende de los estándares de naming. Por ejemplo en python se suele usar PEP8, pero hay otros. Y en C ocurre igual. Hay varios estándares. Cada uno usa el que quiere. De hecho suele ser habitual indicárselo a linter para que te advierta cuando lo incumples. Pero no es cosa propia del lenguaje en la mayoría de los casos. De hecho si así fuera, estaría implementado en el lexer.
@lautarochaparro1332 Жыл бұрын
2 videos en menos de una semana gracias por todo antonio, te queremos. con mucho amor tu comunidad.
@darkcomtech Жыл бұрын
Me gustan estos videos que te ayudan a mejorar la refactorización y el estilo del código.
@johanx22x Жыл бұрын
Acerca del tip 4, tambien se puede aplicar lo mismo a la hora de llamar a una función, es mucho mejor que esta se encuentre en un diccionario o un mapa que hacer un montón de condiciones para cada caso, solo hay que investigar un poco el lenguaje con el cual se esta trabajando para encontrar la manera de hacerlo, en caso de ser posible te ahorras varias lineas de codigo y ganas un codigo mas limpio y legible.
@danielmesa5722 Жыл бұрын
Cada día más crack 💥💥, sería bueno más videos de estos con ejemplos con código como buenas prácticas, principios solid, refactoring o patrones. (me gustó mucho que cada topic tenía su ejemplo práctico)
@David-iv4eq Жыл бұрын
Muchas Gracias, justamente empezaré un proyecto de la Uni, aplicaré lo que dijiste :3 Me gustan este tipo de videos jajaja
@03zet Жыл бұрын
Muchas gracias por los tips Antonio, yo recientemente he conseguido mi primer trabajo como desarrollador y estos tips me van a servir bastante y desde luego que los aplicaré, espero que de vez en cuando subas videos de este estilo.
@dos2ratosmas Жыл бұрын
Muy bueno lo del Early return, lo vi varias veces usado y no entendia porque lo hacian, gracias!
@PedroGonzalez-su8wv Жыл бұрын
Al ver que duraba 27 minutos pensé en que se me iba a hacer eterno, pero se pasó de volada, haces muy interesantes tus videos incluso para explicar cosas técnicas bro (:
@neo-clon Жыл бұрын
La verdadera razón del tiempo que toma el insert, es que en cada uno se ejecuta de forma implicita un begin transaction con su respectivo commit
@UnDarkVader Жыл бұрын
... además del tiempo de validación de sintaxis por parte del motor de BD para cada instrucción recibida
@sispemspe8662 Жыл бұрын
En Oracle, si yo quiero hacer eso, tengo varias alternativas, 1) generar un archivo CTL para levantarlo con un loader, 2) crear una tabla externa con el archivo y usarlo como parte de la base de datos, 3) correr los inserts dentro del servidor desde una interfaz sql abierta directamente en la base, 4) crear un proceso de base que levante todo eso en memoria y luego lo inserte utilizando una sentencia forall. Todas esas alternativas eliminan el tráfico de red que generan los lenguajes no nativos a la base de datos, o lo minimizan, como él caso de la 4ta alternativa. Esa sentencia tiene como propiedad el aprovechar los paquetes del tráfico de red en toda su capacidad.
@secundariab.2741 Жыл бұрын
Bro, y si tienes multibles tablas como 5 que estan relacionadas con la informacion que vas a procesar, cual seria la solucion? crear un store procedure para insertar las 5 a la vez?
@sispemspe8662 Жыл бұрын
@@secundariab.2741 primero tenes que determinar el orden en el que vas a insertar, si tenes múltiples tablas con datos relacionados, por lo general, unas son transaccionales y otras son tablas base que alimentan a las primeras. Para que los inserts no fallen, tenes que empezar por las tablas base, y luego ir a insertar en las transaccionales. Una vez que determinaste el orden en que deben ser insertados los registros, elegís alguno de los métodos, dependiendo de cómo estes trabajando los datos.
@alexiscastillo9889 Жыл бұрын
Sobre el tip 4 en C/C++ existen los enums con valores por defecto, que sería lo mismo que un diccionario, muy utiles. Grande Antonio.
@duvandiaz2627 Жыл бұрын
en java tambien estan!!!
@formax07 Жыл бұрын
En typescript también!
@leo_perez_2023 Жыл бұрын
muy bueno, muchas gracias! bien venidos los consejos!
@maqarg Жыл бұрын
Excelente!!! Gracias por el video. Saludos desde Buenos Aires Argentina!
@davidromaniuk Жыл бұрын
Tu amor por la perfeccion es fantastica
@agustinvega774611 ай бұрын
Que buen video bro! saludos desde las tierras caribeñas de Colombia!
@ignacioinzerilli2382 Жыл бұрын
Me gustarian mas videos de este estilo, muy bueno, grandee
@alberto3028 Жыл бұрын
24:02 No solo sirve para que te aparezca en el IDE, el jsdoc en js sirve como validador de tipos tal y como hace typescript si añades un checkJS: true al tsconfig, además podrás ejecutar el tsc solo como validador en la línea de comandos, sin tener que transpilar a JS. Ese es el valor fundamental del jsdoc, tener validación de tipos sin necesidad de typescript, ya que al final es solo sugar.
@retrogameplaysgordis Жыл бұрын
25:20, he trabajado en proyectos medio grandes de Python y eso se lo pasan por el forro. En este ultimo discrepo bastante, para mí no harás el "ridiculo" solo tienes que adaptarte al proyecto y con las personas con las que estés trabajando, ya que hay bastante mierdisenior que obligan a los juniors a trabajar con la nomenclatura que ellos digan xd
@AntonioSarosi Жыл бұрын
Si está hecho está hecho, no vas a cambiar todas las variables de un code base gigante solo para seguir un estándar. Si empiezas un proyecto nuevo en 2022 y pones camel case en Python pues hombre, será porque quieres porque otra razón no hay jaja. Pero yo he visto de todo gente que mezcla las dos cosas en el mismo proyecto por ejemplo.
@retrogameplaysgordis Жыл бұрын
@@AntonioSarosi Tienes toda la razón, por cierto, para cuando creando mi propia distro de Linux? Saludos crack
@mikeldiaz3249 Жыл бұрын
Excelente vídeo!!! Tus explicaciones son bastante detalladas y claras. Apoyo para que hagas más vídeos de estos, siendo jr. me ayuda muchísimo.
@pavelramos Жыл бұрын
Me has animado a darle una revisada a javascript y node, yo es que no soy desarrollador, pero si cargo mi arsenal en pendrives para ahorrarme varias horas manuales en la oficina. Habrás encontrado alguna herramienta que se asemeje a pillow de python en js? Felicidades por como ha crecido el canal y sobre todo el contenido!
@_chris_6786 Жыл бұрын
Antes de pasar a mi comentario, felicitarte por este enorme esfuerzo que haces. Está súper. Con respecto al último tip sobre nomenclaturas, es cierto, pero... En el "corpus" de todos los lenguajes de programación existen elementos comunes, esos son: * variables * constantes * funciones * clases * keywords etc... Lo bueno sería poder diferenciar estos elementos, y en el caso de variables y funciones, ambas escritas en snake_case, no se pueden distinguir cuál es cuál. Por ello, estaría bueno que, para nombres de variables y propiedades de una clase usemos siempre snake_case en minúsculas, y para nombres de funciones usemos camelCase (esto también aplica para métodos). En general lo usaríamos asi: * variables o propiedades (snake_case) * constantes (MAYÚSCULAS) * funciones y métodos (camelCase) * clases (UpperCamelCase) * parámetros (snake_case) ya que los parámetros son variables En mi mejor entender, con esta forma sí ya podemos distinguir a los elementos. Un fuerte abrazo y más videos así.
@AntonioSarosi Жыл бұрын
Hace años podría ser interesante hacer eso, pero hoy en día como tienes coloreado de sintaxis sabes cuál es cuál. Yo al menos me baso más en el color que el formato del nombre para saber si es función/clase/variable, etc
@densohc2223 Жыл бұрын
llevo mas de 2 meses tratando de aprender progrmacion y siento que no aprendo nada con este video me has echo entender varias cosas y seguire intentado aprender js mas a profundo que es lo que me interese ay html y css
@lazaroaltedill Жыл бұрын
10/10 super el video tome nota de todos los consejos , los aplique en un proyecto y la verdad que se nota la diferencia. Sigue con videos asi. Slaudos
@azraelaxel3124 Жыл бұрын
he programado por dos años (por hobby) en proyectos propios... pero todos los consejos me sirvieron mucho!.... por ahí no tanto el de CSV a SQL, pero si piensas en la teoría de lo que has dicho igual se aplica a muchas cosas más (simplificar el código para que todo entre, de ser posible, en una sola línea de código)... espero que saques nuevos videos así!
@alister_ Жыл бұрын
Simplificar no significa reducir la cantidad de líneas de código. Lo importante es que sea fácil de entender, fácil de mantener y fácil de modificar.
@jufran_87 Жыл бұрын
Excelentes consejos, muchas gracias por compartir
@adriangranado3622 Жыл бұрын
“Parsear visualmente” jajajaja que bueno, lo mejor es que te he entendido perfectamente
@jonathan8406 Жыл бұрын
Que buenos pro tips Antonio, El pattern matching fue mi favorito junto con los objetos y diccionarios y también sobre los DocStrings, Rust rules!
@licdavidob11 Жыл бұрын
Me gusta como en el min. 15:30 ya te anticipas a los comentarios y preguntas, y de una vez muestras la extensión jajajaja, se me hizo gracioso. Pero si, ya lo instale igual 😆
@AliHamza-en8cn Жыл бұрын
Video increíble de mucha ayuda para los que están empezando espero que haya segunda parte. Eres un crack.
@densohc2223 Жыл бұрын
asi es muy bueno
@hiscariotex Жыл бұрын
Vamos papi. Otro video
@christianquispe4017 Жыл бұрын
tambien puedes crear chunks de N registros y ejecutas por bloques los querys de INSERT
@CodeWithDesign Жыл бұрын
Vamoss por mas... falta esto en youtube.. te sigo crack..
@anomfb Жыл бұрын
buen consejos amigo. bien explicado. y con ejemplos. no solo habla. sino que tambien muestra como usarse. que bueno.
@GROOVETECHSETS Жыл бұрын
Mas videos como este, en serio... Buenísimo!
@eacardenase Жыл бұрын
Tremendo contenido! Justo he estado pensando en cómo hacer una query con un archivo .csv a una base de datos y has dado justo en el clavo!
@kriollo_dev Жыл бұрын
Hola Antonio, como siempre buenos videos, sólo un alcance; para hacer un insert de un csv más y más pro, puedes usar el load data de mysql, con php se puede y mucho más rápido y eficiente, yo lo ocupo para cargar archivos de miles de registros cada hora y la base ninse inmuta... eso no más, gracias por los videos
@cokeDeToro Жыл бұрын
Mola este vídeo! dale con más tips!!
@edgaralejandrogonzalez6689 Жыл бұрын
Me he tardado en verlo (lo tenía pendiente) pero me encantó, estaría genial una segunda parte
@brunomontd Жыл бұрын
Que buen vidio! Antoniooo
@josedanielmendoza2305 Жыл бұрын
Ufff bellísimo... nada de esto métodos lo habia visto antes ... están buenisimos
@Magistrado1914 Жыл бұрын
Excelente vídeo y explicación Visto en 04/11/2022
@michaelrivera1070 Жыл бұрын
Muchas gracias por tu consejos, han sido de gran ayuda
@unlimited_code Жыл бұрын
¡Excelente! - ¡Buen trabajo Tony!
@soycmramos Жыл бұрын
No puedo creer que en serio me quedé 1/2h viendo este video. Estuvo buenísimo. Like y suscrito ¡Muchas gracias!
@dariorodrigotorrejon4004 Жыл бұрын
Genio me sirvió mucho el vídeo para el día a día 😁 saludos desde Argentina y seguí así!
@julianromero6114 Жыл бұрын
Que buen video amigo, toma tu like
@daumienebi Жыл бұрын
Justo podía llegar a necesitar algo así para una aplicación que estoy creando, pero en mi caso tengo los datos en un JSON. Muchas gracias!
@brandonlopez6328 Жыл бұрын
Bárbaro! Buen video bro
@asdas9 Жыл бұрын
no me sabia el de continue bastante util tu video :D
@josewilhelm2717 Жыл бұрын
Buen video! Sí me gustarían más videos así!
@saidneder41 Жыл бұрын
Tremendo Antonio!
@tekunramirez Жыл бұрын
hey muchas gracias por tus aportes
@migueljurado6783 Жыл бұрын
Muy bueno Don Antonio! jej
@UnDarkVader Жыл бұрын
Rust ahora tiene los std::collections::HashMap para hacer frente a la necesidad de usar diccionarios. Útil para 19:55.
Жыл бұрын
una mejor manera de realizar inserciones grandes a la base desde un orgien como un csv o un txt es realizar un load data infile, es casi instantanea la insercion de tus registros.
@kcireorenom8430 Жыл бұрын
sigue así, esos temas están guapos.
@noelserdna Жыл бұрын
un video muy chulo.... aunque muchos los conocía volverlos a escuchar siempre es bueno
@jesuopin1612 Жыл бұрын
VIDEAZOO!
@danielroa9618 Жыл бұрын
Muchas gracias, me gustan este tipo de videos, haz mas de este tipo, saludos desde Colombia
@ericmp1199 Жыл бұрын
24:40 "camel case pero empieza en mayúscula" - te refieres a PascalCase supongo 🤣
@frannixo6746 Жыл бұрын
Lo de retorno anticipado se le llama clausula de guarda si mal no recuerdo
@AntonioSarosi Жыл бұрын
Claro eso es un guard clause, se usa en los early return pero no se refiere a exactamente lo mismo. Los guards son los ifs que vas poniendo para cubrir edge cases, early return es simplemente el hecho de retornar pronto si no puedes seguir. Creo que no hay un término exacto, yo lo puse en Google y salía retorno anticipado jajaja
@frannixo6746 Жыл бұрын
@@AntonioSarosi Esto al final es como todo en este mundillo, diferentes nombres para cosas similares. Buen Video
@calapp Жыл бұрын
Muy buen video, otra cosa que veo hacer a mucha gente, incluso con experiencia, es poner condicionales ante boleanos en vez de devolver la expresion boleana directamente. Un saludo!
@Centorios Жыл бұрын
Por temas de atomicidad, esta manera de encararlo es mas rapido pero en caso de haber un error en el proceso se ROLLBACKEA toda la transaccion, al hacerlo de manera poco optima estarias asegurando la atomicidad de todos los datos (solamente no se insertaria el o los valores erroneos, no se descartarian todos los datos)
@christianosorio7473 Жыл бұрын
El Early Return lo conocia como Guard Clauses, excelente vídeo
@jmrodev Жыл бұрын
Muy buen video con grandes concejos !!!
@pitogrilloАй бұрын
Muchas veces pongo dos IF anidados en lugar de un AND porqué se lee mucho mejor la condición y el compilador lo optimiza así que no hay problema.
@MuStevenPlay Жыл бұрын
Grande Sarosi, nice video
@TheJFMR Жыл бұрын
Buenos trucos, el del early return me gustó. Me lo habían contado, pero ahora lo entendí.
@newentu Жыл бұрын
Excelente datos!!
@pandaren0830 Жыл бұрын
Discúlpame si me equivoco, pero en el primer ejemplo no seria mejor manejarlo dentro de una transacción, porque el tema de conexiones a la DB se puede mitigar configurando un pool de conexiones. No es lo mismo realizar miles de registros uno por uno que hacer miles de registros dentro de una transacción usando únicamente un solo commit.
@alexdevorigin1 Жыл бұрын
de hecho en la sentencia sql esta el bulk tambien, sin embargo esta bien lo que comentas.
@josevicente632 Жыл бұрын
Excelente video!! Saludos desde colombia
@Runcoding Жыл бұрын
Un Linter vendría bien para un estándar de código y si no lo hay pues sugerirlo en tu trabajo, os ahorrares muchas discusiones de punto y coma, comillas dobles o simples y esos dilemas os lo aseguro 👍
@cortizmardones Жыл бұрын
Al 'Early Return' también se le conoce como clausula de guarda.
@juanorozco5298 Жыл бұрын
Muchas gracias por este video, nos ayudas a muchos ❤❤
@dmz3010 Жыл бұрын
Thanks Maquina!
@latinmu Жыл бұрын
muy buenos tips, soy nuevo en el mundo del desarrollo y me van a servir bastante en mi carrera profesional.
@aluissp Жыл бұрын
Algunas me las sabía otras no, buen video Antonio
@johanpalaciose Жыл бұрын
Grande Antonio
@bernardoabel4136 Жыл бұрын
muy buen video, aprendi mucho
@M4rc05 Жыл бұрын
más! :D
@diegogutierrez8473 Жыл бұрын
muy bueno, esperamos parte 2
@viarnay Жыл бұрын
Este men es un boss. Le veo un futuro tan brillante que vas a necesitar gafas de sol para mirarle
@zeusjean Жыл бұрын
vamos por la parte 2 :)
@SystemsAdventure Жыл бұрын
Genial 👌
@irvagui Жыл бұрын
Buenísimos tips 👌👌
@ProfeDuilio Жыл бұрын
Bravo Antonio 👏
@sentadoensilla Жыл бұрын
Algunas veces el insert involucra varias tablas, en esos casos debemos hacer mas trucos, pero siempre es mejor aplicar estructuras enves de ciclos
@ciwic Жыл бұрын
Buenos tips!
@iqanansoft11 ай бұрын
Con el Tip numero 1 acordaros de utilizar "TRANSACTIONS" si el gestor de la BD lo permite, y con un número de registros ni muchos ni pocos.
@dairoparra Жыл бұрын
Me gustó bastante el video.
@eduardocortez5839 Жыл бұрын
eres grande bro
@gustavodiaz9732 Жыл бұрын
Gracias maestro
@santiagohn6784 Жыл бұрын
Cuidado con quitar los if dentro de if. Hay lenguajes que no garantizan que se evaluen de izquierda a derecha como c++ hasta hace un par de estándares, y como la expresión de la derecha únicamente se pueda evaluar si la primera es verdadera vas a tener buenos errores. De hecho me pasó en una práctica de implementar protocolos de nivel de enlace en c++ que no le funcionaba a la profesora porque usaba una version de gcc anterior y en una parte que comprobaba si un puntero no es null y luego consultaba un valor lo hacía al revés dando un index out of bounds.
@AntonioSarosi Жыл бұрын
Sí en esos casos te la puede liar. Si tienes que retornar se puede poner en ifs distintos uno después de otro, no hace falta que este uno "dentro" de otro.