Skip to content

Código en Español

Desarrolladores hispanohablantes: preguntas, chambas y memes

t/codigo_en_espanol

Comunidad para quienes programan en español. Dudas técnicas, trabajo remoto para empresas de afuera, sueldos en dólares, freelancing, universidad y memes. Escribe como hablas, nadie te va a corregir la ortografía.

18 members
15 posts
Created May 2026
+1

Community rules

3 rules for t/codigo_en_espanol

  1. En español, preferentemente

    Si escribes en inglés no pasa nada, pero la idea es que este sea un espacio en español.

  2. Respeta los modismos

    Un mexicano, un argentino y un español no hablan igual. Nadie se burla del acento de nadie.

  3. No drive-by self promotion

    Your own stuff is fine when it answers the thread. A bare link with no context is an advert.

Moderated by Sofía Ramírez

Discussions

2

Showing 15 posts.

Posts in t/codigo_en_espanol

  • Accepted answer

    jaja bienvenido al club, a todos nos pasó wey. Va explicado: En Python las variables son etiquetas que apuntan a objetos, no cajas. Cuando haces copia = matriz, las dos etiquetas apuntan a LA MISMA lista. Con matriz.copy() sí creas una lista nueva... pero es una copia superficial (shallow): la lista de afuera es nueva, pero adentro sigue teniendo LAS MISMAS listas internas. Entonces copia[0] y matriz[0] son el mismo objeto. Puedes comprobarlo: print(copia is matriz) # False print(copia[0] is matriz[0]) # True, aquí está el problema Soluciones: import copy copia = copy.deepcopy(matriz) o para una matriz de números: copia = [fila.copy() for fila in matriz] Y ojo con esta trampa que sale en exámenes: matriz = [[0] * 2] * 2 también crea dos filas que son la misma lista. Mejor [[0] * 2 for _ in range(2)].
    1 reply

  • Accepted answer

    Buenísimo que estés migrando! Te respondo en orden: 1. Si es un servicio nuevo y solo Postgres, pgx directo con pgxpool. Tenés mejor soporte de tipos de Postgres (arrays, jsonb, uuid), COPY, LISTEN/NOTIFY y errores más claros. database/sql te conviene solo si querés poder cambiar de base o usás una librería que lo pide. 2. El pool: pgxpool por defecto usa el mayor entre 4 y la cantidad de CPUs. Para 20 rps sobra. Yo lo configuro en la URL: postgres://user:pass@host:5432/reservas?pool_max_conns=10&pool_max_conn_idle_time=5m Y ojo: pool_max_conns es POR INSTANCIA. Con tus 4 réplicas son 40 conexiones contra Postgres. Si después metés un pooler tipo PgBouncer en modo transaction, revisá el tema de los prepared statements. 3. sqlc, sin dudas. Escribís SQL de verdad, te genera el código Go tipado, y si cambiás una columna no compila. Para queries dinámicas (filtros opcionales) a veces escribo a mano. Y pasale el ctx del request a todas las queries, como en el post de context 😉
    1 reply
10

  • Nice build. One suggestion: put the probe inside a small bottle of water inside the fridge, not in the air. Air temperature jumps every time the door opens, you will get false alarms. Vaccine fridges do this with glycol bottles.
    1 reply
  • ¡Muy buen proyecto! Ojo con las DS18B20 sumergibles, muchas vienen clonadas. A mí me salían 85 °C de repente: es el valor de reset del sensor, aparece cuando la alimentación es débil o el cable es largo. Si ves 85.0 exacto, no es la heladera prendiéndose fuego 😄
    1 reply

  • Accepted answer

    ¡Hola Lucía! Pregunta súper válida 💜 Cuando haces useState([]) TypeScript tiene que adivinar el tipo con lo único que le das: un array vacío. Un array vacío no tiene elementos, entonces TS dice "esto es un array de... nada", o sea never[]. Y claro, "nada" no tiene propiedad nombre. La solución es decirle qué va a haber dentro: interface Usuario { id: number nombre: string } const [usuarios, setUsuarios] = useState<Usuario[]>([]) Con eso ya te autocompleta u.nombre, y si escribes u.nombr te avisa. Bonus: res.json() devuelve any, así que si quieres ser estricta pon .then((data: Usuario[]) => setUsuarios(data)), o mejor valida con zod. Tu tech lead tiene razón con lo del any jaja
    1 reply

  • Accepted answer

    Hola Rosa, nada de disculpas, tu pregunta está perfecta: con el error y lo que ya probaste, así da gusto ayudar. El problema es que el script está en el <head>. El navegador lo ejecuta ANTES de crear el botón, entonces getElementById('agregar') devuelve null, y null no tiene addEventListener. Dos soluciones: 1. Agrégale defer: <script src="app.js" defer></script>. Así se descarga en paralelo pero se ejecuta cuando el HTML ya está listo. Es lo que yo uso siempre. 2. O mueve el <script> al final del body, justo antes de cerrarlo. Y un extra: lista.innerHTML += con el texto del usuario es peligroso, si alguien escribe HTML se mete en tu página. Mejor así: const li = document.createElement('li') li.textContent = texto lista.appendChild(li) ¡Vas muy bien!
    1 reply
11

  • Wow no sabía que en España estaba así. Desde México siempre pensamos que en Europa todos ganan bien jaja. Lo de 14 pagas nunca lo entendí
    1 reply
  • I have translated it. In Germany the same consultancy Model exists, we call it 'Bodyleasing'. I would like to point out that the Registration of working hours is a strong tool, the employees should use it.