Feda /dev/ - No Javascript allowed

Normas
spoiler
Personas non gratas
Memes feda dev




desu

#24089 como el.

B

.

1 respuesta
r2d2rigo

#24092 oooops, tampoco se pierde mucho porque era un link al developer story de stack overflow. Ya vere si me molesto en volver a hacer algo o paso.

Kaledros
#24080KazuluDev:

eres tu el que ha empezado repartiendo carnets

Son prejuicios míos, simplemente

Qué carnet he repartido ahí, exactamente.

Wei-Yu
#24090r2d2rigo:

pues no se decirte, tengo de todo ahi. En unos dias si quieres te puedo pasar una prueba tecnica que he hecho que tiene el codigo bastante limpio y bien estructurado.

Pues por mí guay realmente. No sé si alguien se animaría a compartir pruebas técnicas en un hilo e ir hablando del tema, a mí me darán una el lunes, igual me animo a empezar yo.

1
vivora

Vaya me he perdido la pelea de fronts vs backs, los becarios como yo que tocamos todo pero no sabemos hacer nada bien no entramos en estas peleas :)

eisenfaust

los webdev por lo general son inofensivos y cuando la cagan no tiene mucho impacto. yo el problema lo tengo con los javeros y muy especialmente la nueva especie de los frikis de la programacion funcional y el ddd (nueva escision de la revolucion puritana del GoF)

trabajar en sre y tener que explicarle por cuarta vez a un senior conceptos basicos sobre por que su aplicacion chupiguay hexagonal 100% test coverage best practices twelve factor esta petando por oom en produccion constantemente cambia mucho la perspectiva

7 5 respuestas
Kaledros

#24097 Normal. Entre que en backend lo de "senior" viene dado por los años que llevas y no por los conocimientos (con hilarantes resultados) y que con el DDD es la primera vez que se ha hecho popular un paradigma que si la lías en vez de ser un spaghetti que funciona a pedales directamente no va, son unas risas que pa qué.

1
Sphere

La semana que viene se va un jefe de vacaciones y me está mandando una cantidad de tareas bestial xDDDDDDD

Es ver el Outlook de reojo y los popups de "jira" "jira" "jira" "jira" "jira"

Ahora mientras se hace la comida le echaré un ojo y a ver lo que finiquito esta tarde.

desu
B

Sacado del hilo de 4chan, a raíz de lo de la devrel de ayer xdddd

wdaoajw

#24097 ayer me tocó explicarle a uno de esos varias veces que me da igual que su cluster tenga 2000 CPUs, que si su puto pod tiene un límite de 4 no pasa de ahí. Y el tío erre que erre con que tenían 2000 CPUs...

1 respuesta
desu

Hablando de CRUD y API.

Acabo de descubrir esto https://google.aip.dev/

Muxa calidad.

La verdad, si una organizacion no tiene una documentacion como esta, o usa una. para dise;ar... redflag.
si no tienes una guia de estilo para tu codigo... redflag.
si no tienes guias y docus de como escribir design docs... redflag.

creo que lo que mas te aporta de estar en una faang es aprender estos standares y procesos burocraticos, que si en una faang son excesivos, pero hay muchas buenas practicas que es importante aprender.

por ejemplo yo cuando lanzo procesos estoy dentro de este caso https://google.aip.dev/151 (Long-running operations)

Occasionally, an API may need to expose a method that takes a significant amount of time to complete. In these situations, it is often a poor user experience to simply block while the task runs; rather, it is better to return some kind of promise to the user and allow the user to check back in later.

Intuitivamente para mi es obvio que tengo que devolver un id al proceso para no bloquear y que despues se pueda consultar. de hecho hago casi todo como lo recomiendan. si me llegan multiples request yo tambien las meto en una cola como recomiendan. PERO. Cuando llego al lmiite de la cola por ejemplo, no las cancelo con un ABORT si es un limite que quiero cortar.

Resources that do not permit multiple operations in parallel (denying any new operation until the one that is in progress finishes) must return ABORTED if a user attempts a parallel operation, and include an error message explaining the situation.

Y por ejemplo, si tienes esto en tu API, significa que es el cliente quien tiene que gestionar los retries... y esto esta muy bien para simplificar tu servicio. el servicio solo se encarga de gestionar hasta X peticiones en paralelo y si hay algun problema o abort, es el cliente quien tomara decisiones.

Entonces todo es muy "obvio" pero este detalle de dise;o en su dia hace 3 a;os se me paso, y gracias a tener una guia como esta lo habria considerado y planteado la decision.

En algun momento voy a publicar ya esto en mi blog, tengo de docs tecnicas/referencias, apis, design docs, guias de codigo... hare un recopilatorio.

salu2

1
eisenfaust

#24102 por no mencionar el maravilloso mundo pre UseContainerSupport

Ranthas

#24097 Y digo yo, sólo digo eh, ¿no existen entornos de pre-prod dónde normalmente toda esta gente se queda estampada?

Desde que modificamos toda la infraestrucura de despliegues para añadir pre-prod todo han sido risas y fiestas. Algunas de las cosas más hilarantes que me he encontrado, de mano de esos "javeros medios", pero que me duplican de edad al strugglear contra preprod:

  • Los parámetros de la JVM son una especie de vudú jamaicano insondable e inescrutable.
  • La JVM sabe por arte de magia que hacer con los file descriptors, no problem mai friend, open fail, de yi-vi-em güil clous dem, everizing is okei
  • Usar profiles para evitar conflictos entre el SO de dev y el SO de prod es pedante y superficial
  • Test de black box mal hechos a propósito para justificar luego que el soft no funcione. Oye Juan, si este servicio espera procesar bulks de 10 millones de registros, ¿por qué los tests solo soportan use cases de 10 registros como máximo?
  • Usar implementaciones acopladas al SO, sobre todo para el manejo de ficheros
5 2 respuestas
r2d2rigo

#24105 claro que existen, lo que pasa es que un preprod suele ser una instancia shared con un core en la que cargan 1000 registros en la base de datos.

Luego echas el monstruo a correr con varios millones de registros y mira lo que pasa.

1 respuesta
fehnd

#24097 si te tuviese al lado te daba un abrazo

#24105 y a ti otro

Tengo miedo de eso cada día, y tener que discutirlo.

1
Ranthas

#24106 Lo que tiene delito es que el muy cabrón en los tests pone cómo máximo N registros, cuando N es literalmente, 1.000.000 veces menor que la carga media esperada

Y más delito aún porque en preprod tenemos un clon de una de las bbdd de prod, así que por volumen no es. Claro, que para gestionar 100 registros, pues lo empaquetas todo en el tipico Repo.FindAll() y te fumas un porro detrás, gestionar 10 millones pues lo mismo deberías plantear otra solución, pero eso si ya para otro día

Luego llega el caso de uso del mundo real, la app salta por los aires y el puto viejo de mierda suelta que los tests están ok, que debe ser otra cosa.

1 respuesta
desu

#24108 Te voy a hacer una pregunta en serio.

Que caso de uso, necesitas leer 10M de registros de una db relacional/horziontal? Que periodicidad tiene?

No se, yo con series temporales trabajo con muchos mas en druid de db, pero en relacional no me entra en la cabeza porque cojones necesitas sacar tantos registros.

2 respuestas
pantocreitor

#24109 Estuve haciendo el otro día un árbol que quería un cliente que carga los nodos on demand por el tema de la millonada de registros que hay.
El nota ha pedido ahora que quiere un botón para generar un Excel con todo el árbol y le comenté que eso iba a tardar bastante, que si no le importa pues se le hace.
Me contesta el subnormal que si el árbol no tarda en cargar por que va a tardar el Excel y me dice mira, yo le doy y en nada se van abriendo...

Ranthas

#24109 Cuando empezamos en un nuevo cliente, hay que migrar toda su información de sus sistemas a los nuestros. En municipios de 100.000+ habitantes, analizar la info de los últimos 4 años de, por ejemplo, el impuesto de bienes inmuebles urbanos, supera esa cifra de largo. La información debe sacarse siempre en bulk para poder hacer los cuadres de migración, no es tan sencillo como, por ejemplo, ir extrayendo los datos agrupados por DNI.

El proceso de migración actual es un autentico infierno porque se desarrolló teniendo en mente clientes mucho más pequeños, por lo que tenemos este tipo de problemas continuamente.

1 respuesta
desu
#24111Ranthas:

La información debe sacarse siempre en bulk para poder hacer los cuadres de migración, no es tan sencillo como, por ejemplo, ir extrayendo los datos agrupados por DNI.

No entiendo que es un cuadre de migración. Que todo quede como al principio? XD

Por ejemplo?

En que campo no podéis tener representaciones intermedias e ir en batch?

Entiendo que el problema es ese, no podeis tener una media a partir de ventanas con un porcentaje de error porque ese porcentaje de error, aunque sea 0.00000000000001 no lo quereis asumir...

1 respuesta
Ranthas

#24112 A ver como lo resumo para que sea entendible.

Tenemos un cliente, A, con su sistema informático, y que nos contrata a nosotros, B, con nuestro sistema informatico. Mover la info de A => B es el objetivo. ¿Dónde está la dificultad? En esencia, que aunque la información debería tratarse de la misma manera en ambos sistemas (por ejemplo, cobrar un recibo de Basura debería seguir la misma lógica en ambos sistemas, aunque las estructuras de datos / funcionamientos internos sean distintos) no se hace. En el municipio A, el IBIU, que es un impuesto estatal, se gestiona como les sale de los cojones y en el municipio B, como les sale de las narices, a pesar de que deberían gestionarse exactamente igual. Si fuese así, migrar esa información sería trivial. Pero no es así, nunca.

Como los datos de partida son inconexos, heterogéneos y el 90% de las veces, incoherentes incluso desde el punto de vista legal, no podemos establecer reglas para crear esas representaciones intermedias. Pongo un ejemplo muy sencillote:

  • Las tasas de agua se cobran según regulación nacional + regulaciones municipales. Algunos municipios cobran canon de saneamiento, otros alcantarillados, pero todos deben cobrar el IVA. Lo normal es crear una regla para toda liquidación que sea de Aguas, su importe se debe separar en los conceptos definidos por el Ayto + el concepto del IVA que es obligatorio.

Pues bien, llegas, creas la regla, cuadras los importes y ves que en el cliente A, su sistema dice que tienen 3 millones de euros en tasas de agua, y a ti te salen 2,7. Luego te pones a mirar y que encuentras? Que hay partidas de Aguas donde no han cobrado el IVA. En su lugar, esas partidas han cobrado el IVA en otro concepto que está en otro sitio. Y en ese otro sitio, están mezclados con otros conceptos que nada tienen que ver con Aguas. ¿Cómo lo discriminamos? Ya te lo digo: no se puede. Tienes que sacar toda la información en bruto y empezar a filtrar. Pero claro, tienes que filtrar no solo las tasas de Agua, sino todas las putas tasas que cobren IVA. Pues nada, a sacar toda la info de tasas. Y así, empiezas a tirar del hilo y tienes burradas como la que te digo.

Por otra parte, también tenemos el problema de que no podemos asumir ningún % de error. Si el cliente dice que en su sistema hay 3 millones de euros, nosotros debemos mover esa info y presentar un informe de nuestro sistema donde también están esos 3 millones.

3 2 respuestas
MartiONE

resumo dice

Wei-Yu

mmm software para secretarias

1 1 respuesta
aren-pulid0

#24115 software que lidia con el software de las secretarias

3 1 respuesta
Ranthas

#24116 ójala software para secretarias, no sabes cuanto hecho de menos picar cruds y poner botoncitos de "Aceptar" y "Cancelar"

1 respuesta
Fyn4r

#24117 donde la mayor complejidad en la lógica de negocio es poner un "deshacer acción", ese es el trabajo bueno, así tengo tiempo para farmear primals

1 1 respuesta
neil90

#24113 Real World Issues

Kaledros

Ah, trabajar con la administración. Ni a mi peor enemigo. Sólo al responsable del lamentable estado de la API del Catastro ya habría que colgarlo por los huevos encima de una hoguera y darle vueltas lentamente, como para pensar en trabajar con ayuntamientos...