« first day (1909 days earlier)      last day (1184 days later) » 

12:52 AM
La respuesta más difícil que he dado hasta ahora en stackoverflow es un script bat XD
0
A: ¿hay alguna forma en CMD de copiar validando tamaño del directorio?

Ariel MontesCreo que no existe una forma de hacer lo que buscas y aunque recomiendo hacer siempre este tipo de cosas con un lenguaje de programación y no de scripting entiendo que puede ser incomodo tener instalado interpretes de lenguajes que no utilizas y tampoco debemos usar compilados que no están firmad...

 
@Lolita de todo corazon te puedo decir que te apoyes en la documentacion official, y si la ves muy compleja entonces guiate del diccionario que te envio mi sensei y busca la parte de diccionarios
porque lista y diccionario son cosas distintas
recuerda que un diccionario esta conformado por clave y valor
espero ayudar en algo
 
 
6 hours later…
7:15 AM
Buenos dias
 
7:34 AM
Buenass
 
Hoola
 
A las güenas :-)
 
7:55 AM
Alguien aquí para un consejo sobre microservicios?
 
Yo quiero un consejo sobre microservicios
 
Y yo :-)
Aunque también me vale una pregunta sobre microservicios. Aún si no sé responderla, seguro que aprendo algo
 
XD
Pues mi consejo: piénsenlo bien, muy bien. Micro detalladamente bien.
En realidad tengo esta duda conceptual: microservicios, en resumen y según como lo entiendo, es una forma de modularizar una aplicación de tal forma que los componentes o módulos sean independientes uno del otro. ¿Lo entendí bien o estoy mal?
 
8:13 AM
Buenos días
 
Porque luego, veo que algunos componentes podrían no ser tan dependientes unos de otros. Eso significa que debo redefinir la lógica del negocio para aislar o romper ciertas dependencias. Ya que si un servicio del conjunto se saca de la ecuación, la app debería poder seguir funcionando. Allí me explota un poco el cerebro.
 
@MauricioContreras La independencia debes entenderla más bien a nivel de desarrollo y de despliegue. La idea es que cada microservicio pueda ser desarrollado por un equipo independiente, con tal de que esté claramente especificada la interfaz (que serán RPCs o APIS REST)
El despliegue también sería independiente. Cada microservicio iría a su propia máquina o contenedor
y su "ciclo de vida" también sería independiente, lo que incluye tener su propio repositorio, tests, integración continua, etc.
pero naturalmente puede "depender" de otros microservicios si necesita de su funcionalidad (que invocará vía las RPCs/REST o la que sea su interfaz "bien definida")
No veo yo tan claro que si apagas un microservicio el resto deba seguir funcionando. Eso implicaría que ese microservicio no hacía nada útil!
lo de la independencia no va por ahi
Quizás el resto podría funcionar, pero "mermadamente", sin alguna funcionalidad
por ejemplo el usuario quizás aún podría loguearse en el sistema, visitar diferentes páginas, crear su carrito de la compra, etc.. pero no podría finalizar la compra porque el microservicio de pagos no está funcionando
 
Nuestros microservicios dependen de otros: el microservicio que se encarga de revibir las peticiones de retirada de dinero llama al que se encarga de mirar el balance, por ejemplo
 
En el curso de microservicios que me dieron, incluyeron un canal
 
@Pikoh Estilo consejo Jedi?
 
8:19 AM
@PabloLozano cualquier estilo es bueno
;)
 
@Trauma Nosotros tenemos microservicios que consumen a otros via API REST, pero también hay microservicios "reactivos" que escuchan colas
 
@PabloLozano Eso es
 
Y según yo lo entiendo, la ventaja de los microservicios es que al tratarse de unidades de despliegue independientes, también son escalables separadamente. Así, ante un pico de compras, lanzarías más instancias del microservicio de pagos, en vez te tener que lanzar más instancias de la aplicación completa
 
Usando ese esquema, se pueden hacer muy independientes entre si
 
@Pikoh No sé si me he explicado: council or advice?
 
8:21 AM
@PabloLozano si si, te había entendido :)
 
@Pikoh Me ha entrado la duda sobre si querías el consejo con el verbo al final o no
 
consejo de una madre o consejo de ministros XD
simplemente Alguien aquí para un consejo sobre microservicios? se podía interpretar como que ofrecía consejos
 
@abulafia Yo aún estoy flipando con eso, hace poco tuve quye revisar un despliegue (es automático, pero nunca se sabe si algo puede ir mal) y teniamos dos instancias en el entorno DEV, 2 en el de test del cliente... y 30 en producción
30 pods para cada microservicio
el día de la superbowl tengo curiosidad por saber cuántos tendremos
 
@PabloLozano que tiene que ver la superbowl?
 
Eso me lleva a comentar otra interpretación más de "independencia" (o más bien diría aquí loose coupling). Ya que los microservicios escalan y por tanto van y vienen, quienes invocan a esos microservicios no pueden depender de conexiones "directas" en las que vaya involucrada su IP
 
8:25 AM
mi empresa es de gaming y apuestas deportivas en américa
 
@PabloLozano ahh ok
 
hace falta un sistema de nombrado, un load balancer, y esas cosas, que añaden un nivel de indirección entre ellos
 
la semana de la superbowl lo mismo hacen más negocio que en medio año
 
si si, imagino
pues os queda poco :)
 
así que es critico que esa semana todo vaya como la seda: prohibidos los despliegues, todo el mundo pidiendo permiso para cualquier cosa por triplicado... etc
 
8:26 AM
Apuestame 100$ por los chiefs
 
asumo que eso es un equipo de la nfl
 
correcto
 
no sé nada de ese deporte
 
pues yo estoy mega enganchado. Prefiero ver un partido de futbol americano que de soccer
 
yo soy de nba o tenis
fútbol me gusta(ba) jugarlo, pero no verlo
prefiero una pachanga que ver la final de la champions
 
8:28 AM
yo antes era muy de nba..pero descubrí el futbol americano hace unos 10 años y me enamoré.
la nba me engancharé despues de la superbowl
 
@abulafia glob.glob( 'Orquestator_*' ) ¿ Eso se usa así, verdad ?
 
@Trauma Sí, aunque es más útil cuando el * está en una carpeta, pues funciona recursivamente
 
Pues me está sacando la lista vacía ... y eso que hay 1 que si coincide
 
Prueba a iterar por os.listdir(".") y mirar si elemento.startswith("Orquestator_")
igual el cwd no es el que crees
 
es lo que estoy mirando ahora, el cwd
 
8:33 AM
BTW, ayer respondí una pregunta y tuve un deja vù.. ¿no hay ninguna sobre comparar objetos en Javascript? Estaba seguro de que habría pero no encontré para cerrar por duplicada
 
@PabloLozano a mi me suena. es una pregunta bastante recurrente
104
Q: Diferencias entre == y === (comparaciones en JavaScript)

Jordi CastillaSiempre he visto que en JavaScript hay: asignaciones = comparaciones == y === Creo entender que == hace algo parecido a comparar el valor de la variable y el === también compara el tipo (como un equals de java). ¿Alguien podría confirmarme este punto y extenderlo?. Soy javero y el no tipado...

?
 
Sí, pero me refiero a deepEquals
== y === se usan para primitivas
 
comparar objetos con varias propiedades te refieres?
 
1
Q: Comparar dos objetos en una función recursiva en javascript

Rafael SantosMe dan el siguiente problema... Escribir una función llamada deepEqual que reciba dos argumentos y retorne true si son el mismo valor o si son objetos con las mismas propiedades, en este último caso los valores de las propiedades deben ser comparados con una llamada recursiva de deepEqual. Usando...

Esta es la pregunta de ayer
pero no encuentro algo así, esperaba encontrarme hasta algo canónico
pero no he sabido encontrarlo
 
hmm..pues eso ya no me suena tanto
8
Q: ¿Cómo se deben comparar dos objetos en javascript?

JoriusMi pregunta en si es esa: ¿Cómo se deben comparar correctamente dos objetos en javascript? $(document).ready(function(){ function p(o){ return JSON.stringify(o) } function compare(o1, o2){ const r = (o1 === o2) console.log(p(o1) + ' === ' + p(o2) + ': ' + r) ...

y esta?
 
8:40 AM
quizá, pero la veo con más ruido, tanto las respuestas existentes como la pregunta
la que respondí me gusta, está bien definida
 
pues nada..si vuelve a salir la duda, usa esa como duplicado :)
 
9:00 AM
@abulafila cannot use a string pattern on a bytes-like object. ¿ Como se puede leer un archivo como texto, pero que no intente interpretarlo como utf-8 ?
asco de artificialidades de ese tipo entre string y bytes, de verdad
 
@Trauma especifica el encoding al abrir el archivo
 
@abulafia Es binario
 
f = open("fichero.txt", "rb")
entonces no puedes leerlo como texto, no?
 
se me queda de utf-8 inválido
pero tengo que hacer regex sobre el contenido
 
no entiendo qué tienes y qué necesitas
 
9:02 AM
tengo un archivo binario
 
un regex a nivel de bytes?
 
sip
 
Hmm... tiene sentido eso?
 
que mala pinta eso
XD
 
pues claro
pues en C++ funcionaba de lujo ... un string no es mas que una secuencia de bytes
 
9:03 AM
que va
de ahi vienen todos los problemas XD
 
en mi mundo es así ... y me gusta
 
un string es una secuencia de caracteres, codificada como bytes
vale, vamos pues a tu mundo
lee el archivo como binario, y especifica la regex como binaria
contenido = open("archivo.raro", "rb").read()
 
¡ Anda carajo ! ¿ Eso se puede hacer ? lo de regex binario (que cosa mas rara, la verdad)
 
re.match(rb"\xf0-.*?y su madre\xf4", contenido)
 
:-O
 
9:05 AM
@Trauma Es tu mundo
 
o convertir el archivo binario a string
y hacer un regex normal
 
en mi mundo no hay distinción entre binario y texto
pero el python este es mu raro
 
pues eso, es un mundo de bytes
 
pero sigo sin entender eso..nounca se me ocurrira hacer un regex en un archivo binario
 
python2 era como tu dices, y era el caos
 
9:06 AM
@Pikoh solo tengo que buscar secuencias de bytes que concuerden con un patrón
 
nunca se me ocurriría buscar una cadena de bytes en un archivo binario de hecho
 
@Trauma No es tan raro. Solo que te obliga a pensar si quieres trabajar con los bytes "puros", o con los caracteres que representan
 
siempre con bytes puros
 
en tu caso quieres bytes puros, pues usas bytes puros
 
ok, vamos a probar entonces
 
9:06 AM
que quieres trabajar con texto, entonces tendrás que especificar el encoding
tiene mucho sentido
 
@Trauma en ese caso, yo no usaria regex. Haz una busqueda secuencial en el byte array
 
a mi me sobra un paso :-)
@Pikoh tengo que buscar UUID
regex = re.compile( '[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}' )
 
@Trauma Y por culpa de gente como tu están las bases de datos llenas de registros con encodings mezclados y con utf-8 double-encocded :-)
 
@Trauma un uuid? o un patron?
 
a ver, que yo se exactamente lo que estoy haciendo, por favor. Un mínimo de respeto :-)
estoy ya estaba hecho en C++
 
9:08 AM
pero no entiendo almacenar esos datos en un archivo binario
 
pero me han dicho que lo pase a python
 
@Trauma ¿podrás poner ahí una b delante de las comillas?
 
@abulafia Si, claro
 
obviamente, desconozco el sistema, seguro que tiene su explicación
 
@Pikoh es un protocol buffer
las uuid corresponden a keys en Redis con los datos de usuario
el protocol buffer son los mensajes internos de la infraestructura
pero los protobuf llevan dentro los UUID
y no hay API para python para sacarlos
ni me voy a calentar la cabeza
un regex y a volar
 
9:10 AM
la primera vez que leo el concepto de soft keyword
 
@Trauma he tenido que mirar que es eso. Entiendo que es una serialización de datos estructurados. Con lo que, en mi opinion, para analizarles...no es mejor deserializar los datos?
 
7
Q: What are Python soft keywords?

a_guestAccording to the documentation of the keyword module, two new members have been added in Python 3.9: issoftkeyword softkwlist However their documentation doesn't reveal anything about their purpose. This change is not even mentioned in the What's New article, where typically all API changes are...

 
Bueno, voy a hacer los cambios y probar
@Pikoh no hay API python para eso
 
@Trauma Confirmado, las regexp de bytes funcionan. Acabo de probar
 
9:11 AM
@abulafia Ok. Gracias :-)
@Pikoh si si, ya se que se puede
pero implica otro archivo mas
 
vamos..que quieres pegarte con los bytes y ya esta. Estos programadores de C++
XD
 
asi es mas fácil y rápido de lo que parece: abres, regex, redis.get( ), y a volar
 
@Trauma Como no va a haber biblioteca python para trabajar con protocol buffers. Guido estuvo trabajando en Google
 
@Pikoh Eso :-)
@abulafia que si, que la hay
pero no la puedo usar
 
ah, vale
que al final te obligan a usar python, pero si puedes lo usas a modo de macro ensamblador
 
9:13 AM
eso parece XD
 
@abulafia lo uso a lo C++ xD
 
eso eran hombres, los que programaban ensamblador
 
bueno, vamos al tema
que me dais conversación y se me va :-)
( las ganas que tengo de hacer esto )
@abulafia Listo. Funciona perfecto :-)
with open( protoFile, 'rb' ) as f:
regex = re.compile( b'[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}' )
 
Alguno ha usado VSCode Share?
 
@MauricioContreras Yo, cuando salió para probarlo. Ya ni me acuerdo.
 
9:18 AM
@MauricioContreras Me obligaron a instalarlo ... y ahí está, sin usar :-)
 
@Trauma Claro, si no hay nada como saber lo que se hace :-)
 
@abulafia vale, que ayer lo usé, y la verdad que no me piola mucho.
 
@abulafia jejeje ... 100% cierto :-D
En el primer .proto de prueba, encuentra la que hay: [b'9acbe0f3-7d35-4f0d-8ba8-29d2bdf1ee83']
ummm ... como bytes ... a ver si Redis se lo traga ...
 
@Trauma Eso si que lo puedes pasar a caracteres sin problema (si es que la función python para manejar redis espera caracteres, que lo mismo espera bytes y entonces ya lo tienes hecho)
 
no no, Redis se lo traga tal cual
perfecto
ahora, a descomprimir los datos recibidos
 
9:21 AM
Redis sí, digo el módulo python para redis
 
y deberíá ser un diccionario python pasado a texto
@abulafia admite los bytes como key
joer. Ya falló
al descodificar desde base64 o al descomprimir
Vale, al descomprimir :-(
zlib.decompress( decodedData )
enga, a mirar la doc
 
te devuelve una cadena b64 que una vez decodificada es una secuencia de bytes que está comprimida?
 
@abulafia sip
 
por qué el b64? No puedes guardar directamente los bytes comprimidos?
 
Si de mi dependiera, por supuesto
 
9:25 AM
y está comprimida con zlib?
 
el jefecillo, que dice que en cosas de red se usa siempre base64
@abulafia Desde C++
 
no debería ser relevante
 
pues al descomprimir no le gusta :-(
 
¿qué excepción te da?
y al final cuando lo descomprimas te saldrá otra cadena base64 y al decodificarla un json, como si lo viera
 
@abulafia jejeje ... pues no, me saldrá una cadena de texto que contendrá una lista python serializada a string
;-p
 
9:28 AM
Y por qué no guarda en la base de datos un JPG con la captura de pantalla del resultado de imprimir la lista python?
 
@abulafia zlib.error
@abulafia ¡ Oye ! Pues igual mola :-D
 
@Trauma Más detalles?
 
Estos jefecillos, que son mu raros la verdad :-/
@abulafia Si me dices como los obtengo desde dentro del except
 
except Exception as e: print(e)
 
except ( base64.binascii.Error, zlib.error ):
 
9:30 AM
Exception a secas es un "catch-all", pero supongo que la sintaxis que te puse vale también para lo que tienes
except ( base64.binascii.Error, zlib.error ) as e:
   print(e)
 
error('Error -3 while decompressing data: incorrect header check',)
... ummmm ...
a ver como se comprime en C++
 
Hm... Puedes hacer un print(resultado_del_b64decode[:12]) por ejemplo, para ver los 12 primeros bytes a ver si tienen pinta correcta
 
voy
`b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\x03\xed]\xcdr\xe3:\xae\xde\xcfS\xf4N\x9b\xa9\x0c\x7fApvj[IT\xb1%\x8f,`
 
Bueno, al menos empieza por 1f 8b 08
 
¿ Ya te has buscado y leido la doc de zlib ? :-O :-O
Máquina
 
9:34 AM
Acabo de escribir a fichero la secuencia de bytes que me has pegado. El comando file dice que es un archivo gzip compressed
si intento gunzip me dice "unexpected end of file", lo que era expected
 
un momento, que tengo a un compi pythonista en la otra línea. A ver si me ilumina
 
pero no me da error de cabecera inválida
 
@abulafia Pues parece que es correcto entonces ... curioso ...
@abulafia zlib.decompress( decodedData, 31 )
 
Ah
 
algo en la forma de comprimir desde C++
 
9:39 AM
intenta usar gzip en lugar de zlib
 
@Pikoh no no, ya funciona
faltaba el argumento 31 en la llamada
 
con gzip no hace falta especificarle la versión
 
ok
128
A: zlib.error: Error -3 while decompressing: incorrect header check

dnozayYou have this error: zlib.error: Error -3 while decompressing: incorrect header check Which is most likely because you are trying to check headers that are not there, e.g. your data follows RFC 1951 (deflate compressed format) rather than RFC 1950 (zlib compressed format) or RFC 1952 (gzip com...

ahi tienes la explicación creo
 
le he pasado a gzip.decompress() la cadena que me has pegado y rompe con la excepción de "los datos terminaron antes de encontrar el end-of-stream", lo que tiene sentido e implica que parseó bien la cabecera, sin necesidad de 31s mágicos
 
adding 32 to windowBits will trigger header detection
@abulafia hmm..no tiene por que. Es posible que al no encontrar EOF no analice la cabecera,no?
 
9:42 AM
hechos son razones
el python este, que es muy mucho suyo
if (deflateInit2(&zs,
    compressionlevel,
    Z_DEFLATED,
    MOD_GZIP_ZLIB_WINDOWSIZE + 16,
    MOD_GZIP_ZLIB_CFACTOR,
    Z_DEFAULT_STRATEGY) != Z_OK
    ) {
    throw(std::runtime_error("deflateInit2 failed while compressing."));
}
así'se inicializa en C++
alguno de esos argumentos será el responsable
vale, pues ya sacamos los payloads
ahora, a ver como vienen los filtros
no se si vienen como lista de números o como carajo vienen
joer
ahora el ast.literal_eval( ) falla al intentar parsear bytes
 
Convierte los bytes a caracteres. y ahora si, tienes que saber su encoding, a menos que sea ascii puro
 
otra cosilla ... ¿ puedo ignorar un determinado bloque ?
osea, en un if, que no se ejecute el código
para no comentarlo todo
 
if False and loqueseaquetuvieras:
 
ummm ... vale
Ahora esto no es capaz de parsearlo, lo cual es lo esperado: '1 1.043237 1 1.043237 '
pero en realidad es una cadena válida, ¿ no ?
 
@Trauma Como cadena sí, como expresión python no
 
9:57 AM
osea, ast.literal_eval( ) fallará con esa cadena
 
efectivamente
 
que es justamente lo que necesito :-)
perfecto
 
a menos que toda ella esté entre comillas, en cuyo caso la aceptará como una expresión de tipo str
 
ya me la vas a liar O_o
'1 1.043237 1 1.043237 '
vale, no, no trae comillas
 
no, quiero decir esto: ast.literal_eval("'1 2 3 4'")
 
9:59 AM
ok, ya te entiendo
no, eso no llega
¿ Y si llegara un solo número ?
'1 '
 
eso si, sería una expresión correcta
y se parsearía como el entero 1
 
vale, puedo comprobar el tipo entonces
ok, el payload viene como dict
si no es ni dict ni list, entonces es un filtro
sea o no parseado por ast.literal_eval( )
ok, sencillo
 
Hmm.,. y no podrás recibir algo como '[12, 1 1.043 1 1.043, 4]' no?
 
la verdad es que no lo se ...
 
es decir, una lista que dentro tenga un filtro (que conste que no estoy entendiendo casi nada de lo que dices)
 
10:02 AM
espero que no :-(
 
no tendría sentido si eso lo generó python convirtiendo uno de sus datos a str
 
esas cosas las generan los matemáticos ... ya sabes, los sibaritas de la programación
 
en todo caso se vería más bien así: '[12, "1 1.043 1 1.043", 4]'
 
por lo que he visto, llegan siempre como numeros separados por espacios
no no, esas florituras no llegan
 
menudos sibaritas de tres al cuarto
 
10:03 AM
jejeje
@abulafia la última ya, y te dejo intranquilo :-)
¿ Una forma mas pythonera de poner esto ? if ( parsedData is None ) or ( ( not type( parsedData ) is dict ) and ( not type( parsedData ) is list ) ):
 
10:28 AM
@Trauma if not isinstance(parsedData, (dict,list))
 
@abulafia ¿ Tan cortito ? ¿ Eso incluye las 3 condiciones ?
 
yo diría que sí...
 
¡¡ MÁQUINA !!
:-O
 
isinstance(parsedData, (dict, list)) retorna True solo si el dato es o bien dict o bien list. Si es None no es ninguno de esos dos, por lo que dará False
pero espera que lo piense despacio que me lio mucho con los not....
tu quieres que la expresión sea True si...?
 
Si es None, o ( no es dict ni list )
 
10:32 AM
entonces yo hice: si (no es dict ni list). Si es None efectivamente no es dict ni list
pero sigo liandome bastante. ¿y si es int?
 
si es int debe dar True
 
es lo que da, pues no es dict ni list
not isinstance(parsedData, (dict,list)) creo que es lo que buscas
 
estoy viendo que el None sobra
 
aunque no me quedaría tranquilo sin un buen unit-testing exhaustivo :-)
 
pufff
 
10:33 AM
@Trauma sí, por eso lo quité
 
Ok
vamos a probar :-)
con el .proto de prueba, va bien
a ver si pillo uno de esos con miles de filtros y ya lo pruebo a fondo :-)
 
Vas viendo eso de que python es muy expresivo? ;-)
 
sigue sin gustarme :-)
Donde haya un !=
 
y eso es lo que acaba siendo un barullo ininteligible, mezlcar != con not y con and/or. Al final ya no sabes qué va a salir si no montas la tabla de verdad
 
@g3rv4 lo que te preguntaba de chrome extensions ayer al final lo que armé funciona. inyecto un script en la pagina, que recoge la info que necesito. pero como el script no puede hacer sendMessage al popup.js pues manda un customEvent al contentScript que es el que manda el mensaje al popup.js hahah
 
 
1 hour later…
11:49 AM
XDD
 
@NicolasOñate no tiene nada que ver hombre. Pero esta bien tambien
 
@Pikoh no confundas mi actitud con mi idea XD
 

« first day (1909 days earlier)      last day (1184 days later) »