« first day (2272 days earlier)      last day (118 days later) » 

12:33 AM
@Christian yo tengo 6 abiertas... la clave para mi es no jugarlo live, sino cuando tenes un rato. Y sin apuro por mover
 
12:51 AM
@g3rv4 eso no te sirve para partidas reales donde te ponen un reloj y tienes que hacer movimientos en menor de 1 segundo
hasta ahora solo puedo hacer movimientos en 30 segundos que por lo menos tengan coherencia y pueda garantizar un empate contra alguien de nivel muy bajo
 
@Christian ah claro, pero no estoy entrenando para partidas reales de torneo
 
1:25 AM
@g3rv4 a bueno, igual te recomiendo ir disminuyendo el tiempo progresivamente, ayuda a tu mente
 
 
5 hours later…
6:26 AM
Egun on
 
6:57 AM
A las güenas :-)
Asco de Martes :-(
 
7:09 AM
Buenos días
 
7:24 AM
@abulafia Esto es lo de ayer que dijimos, y aun tenia Cánon y Cañón (que debia ser una de estas 2 la palabra)
 
Cazon y Calon en la vida las habría pensado. Yo probé cajón (pues no tenía descartada la jota) y capón. La eñe por alguna razón no existía para mi (y sí, era cañon)
 
@abulafia Me pasa lo mismo con la Ñ xD encima yo lo juego en catalán tambien, que la Ñ en si no existe, entiendo que por eso no pensé en esa letra
 
conoceis la variante "absurdle"? Por desgracia solo está en inglés, pero es una vuelta de tuerca interesante
no hay "palabra del día", porque el algoritmo no tiene ninguna palabra "pensada", sino que te va dando pistas para ir reduciendo poco a poco el número de posibles palabras que cumplan las pistas hasta que al final solo quede una, pero lo hace de tal forma que requieras el mayor número de intentos posible
por ejemplo, en un caso como el de ayer, si ya tienes adivinado CA*ON, la letra central la vas a fallar repetidamente hasta que solo quede ya una posibilidad
en esta variante no hay limite de intentos
 
Wordle (ES) #12 4/6

⬜⬜⬜⬜🟨
⬜🟨⬜🟩🟩
⬜⬜🟩🟩🟩
🟩🟩🟩🟩🟩

https://wordle.danielfrg.com
Resultado de hoy
 
y la estrategia jugadora cambiaría, pues te puede interesar probar al inicio palabras que no tengan letras comunes, para ir reduciendo posibilidades
 
7:34 AM
@abulafia ostras, pues no lo sabia
 
Wordle (ES) #12 4/6

⬜⬜⬜🟨🟩
⬜🟨⬜⬜🟩
🟨⬜🟩⬜🟩
🟩🟩🟩🟩🟩

https://wordle.danielfrg.com
Toma ya! Posible record mundial? Seis intentos en absurdle
Absurdle 6/∞

⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜
🟩🟩⬜⬜🟩
🟩🟩⬜⬜🟩
🟩🟩🟩🟩🟩
 
8:22 AM
Wordle (ES) #12 4/6

🟨🟨⬜⬜🟩
⬜⬜⬜🟨🟩
⬜⬜⬜⬜🟩
🟩🟩🟩🟩🟩

https://wordle.danielfrg.com
malditos..me habeis enganchado
Buenos dias
 
Wordle (ES) #12 3/6

⬜⬜⬜🟨⬜
🟩🟩⬜🟨⬜
🟩🟩🟩🟩🟩

https://wordle.danielfrg.com
 
Wordle (ES) #12 4/6

⬜🟨🟨🟨⬜
⬜⬜🟩🟩🟩
⬜⬜🟩🟩🟩
🟩🟩🟩🟩🟩

https://wordle.danielfrg.com
 
Va a ser tradición matinal el jueguecito al final :D
 
esto es el nuevo gutten morgen
 
8:40 AM
gentes de typescript, hay alguien conectado?
 
8:52 AM
@MANZARBEITIA parece que no, aun asi pregunta a ver si te puedo ayudar
 
Pues tío es a la hora de importar la librería de lodash, muy utilizada, que me indica lo siguiente: "can only be default-imported using the 'allowSyntheticDefaultImports' flag" y en el tsconfig.json añado el parametro que me solicita: "allowSyntheticDefaultImports": true"
pero el error permanece
 
@MANZARBEITIA 3 comillas?
 
nono que lo he puesto entre comillas para el chat ahora
las comillas no es el problema
"allowSyntheticDefaultImports": true, --> Así es como está
 
@MANZARBEITIA y has probado con "true"?
no deberia afectar pero nunca se sabe
tal vez solo interprete strings
 
9:20 AM
nana no es nada de eso
q tengo un tsconfig enorme
y me pilla el resto de trues
tengo q revisar todo bien
 
 
2 hours later…
11:25 AM
... cuanto El Silencio ...
 
@Trauma shhh no lo rompas
 
xD
 
11:44 AM
Aqui, avanzando con el interprete Lisp. La última semana resolviendo todos los conflictos donde None y NIL se mezclaron. La letra con sangre entra
 
Nil ... ¿ Que se supone que significa ? Not ... ¿ Que ?
 
NIL es nulo, nada.
 
Pues vaya, me esperaba algo con un poco mas de sex-appeal :-(
 
En Lisp sólo NIL es falso; cualquier otra cosa es True, incluyendo cosas que en Python se consideran falsas.
 
¿ Y la lista vacía ( ) ? Creo recordar que era falso también
 
11:52 AM
@Trauma También
 
Ok
puffff con el DeviceConfigResult, es mas complejo de lo que recordaba ...
... y eso que lo escribí yo ...
 
jejeje ... ` goose egg` ... eso es sex-appeal, si señor xD
 
12:26 PM
0
Q: Pasar variable de python a html

adrianEstoy creando un proyecto que trabaja a la vez con html y python. La idea es que desde el programa de python se mande una cifra numérica y que html la reciba y tenga una función particular para cada respuesta. Mi programa es complicado para explicarlo por aqui, pero lo resumire en un simple ejemp...

Madre mia que cacao
 
@abulafia cacao se queda corto O_o
 
12:38 PM
Wordle (ES) #12 5/6

⬛⬛⬛🟨🟨
⬛🟨⬛⬛⬛
⬛🟨🟨🟨⬛
⬛⬛🟩⬛🟩
🟩🟩🟩🟩🟩

https://wordle.danielfrg.com
OMG que me costó, casi me doy por rendido jajaja
 
@abulafia ¿Cómo puede alguien imaginar tales cosas?
 
@CandidMoe Lo que creo es que se está explicando fatal. Quiero pensar que en el fondo hay un backend en django o flask.
No sé si el trocito de html que muestra sería un template generado en ese backend, o es parte del frontend con algún framework js
 
@abulafia O sea, le falta conocer lo que hay debajo, la mecánica misma del HTTP + HTML.
 
yo creo que es peor... no sabe la diferencia entre servidor y cliente...
y cuando alguien no puede explicar lo que esta haciendo, quiere decir que no solamente no tiene idea de lo que esta haciendo, si no que probablemente su solucion sea un engendro...
 
12:55 PM
a mi lo que más me mata es lo de que python lo envíe y "html lo reciba"
 
@gbianchi Seguramente terminara trabajando para Banco Santander.
 
aunque supongo que en realidad se está refiriendo a que un template use una variable de python
 
@abulafia el problema es que tengas que suponerlo. Como dice gonzalo, si no sabe explicar el problema, el problema es de base para empezar
 
sí, sí, estoy de acuerdo, por eso dije que "menudo cacao"
 
1:21 PM
@Excorpion Deberia haber otro color para identificar a las letras que se repiten mas de una vez,casi pierdo xD
 
@Dramaturgo Mmm no lo creo
un pool de 5 letras no es tanto como para dar mas ayuda
yo incluso probé "eseso" para verificar posiciones
obvio, no como palabra, pero si para formar otras... es- -eso
 
yo lo probé hasta quedarme solo con consonantes, primera palabra que me toca con dos vocales repetidas
 
2:20 PM
@abulafia Estas?
 
2:45 PM
@JuanPerez ayer me preguntaste algo.. viste mi respuesta?
 
@gbianchi Si la vi.. pero no encontre como hacer esas 2 consultas en una sola..
 
@JuanPerez entonces no leiste lo que te conteste
 
"no veo porque no...
salvo porque son incongruentes entre si..."
Fue esto
 
tu primera consulta tenia un where de la forma campo = valor.. y tu segunda consulta tenia un where de la forma campo = valor2....
campo no puede ser igual a valor y valor2.. no?
 
si es que de la primera consulta esta una columna que tengo que ir a buscar a una segunda consulta..
 
2:49 PM
@JuanPerez no tiene logica lo que decis
 
Esta es la primera consulta
SELECT t1.comprobante_total, t1.comprobante_tipo_, t1.comprobante_subTotal, t1.monto_total, DATE_FORMAT(t1.timbre_fecha, '%m') timbre_mes_fecha, t1.timbre_fecha, t1.emisor_rfc, t1.emisor_nombre, t1.comprobante_metodo_pago_, t1.is_verify_data, t1.folio, t1.timbre_uuid, t1.total_impuestos_retenidos, t1.total_impuestos_trasladados
FROM prueba t1
WHERE t1.comprobante_tipo_ = 'I'
ORDER BY t1.timbre_fecha ASC
De esa consulta tengo que tomar el valor t1.timbre_uuid y hacer otra consulta..
SELECT * FROM prueba WHERE comprobante_tipo_ ='P' AND id_documento_new IN (t1.timbre_uuid)
me entiendes?
 
si.. y vos leiste los where?
WHERE t1.comprobante_tipo_ = 'I'
WHERE comprobante_tipo_ ='P'
como esperas que algo en la segunda sea P.. si solo te quedaste con los I????
 
Es que en una tengo que tomar los tipo I y en la segunda creo que esta demas el where del tipo P
Porque ya se le esta pasando el timbre_uuid
 
@JuanPerez yo leo lo que me mostras.. no otra cosa...
no tengo ni idea que tenes que hacer.. pero me preguntas si se pueden hacer juntas.. y es obvio que si... pero no tienen sentido..
es mas.. si solo tenes que agregar ese id, entonces porque no lo pones en la primera y listo..
no tiene sentido nada de lo que me estas diciendo...
 
no encuentro como explicarte..
 
3:00 PM
@JuanPerez entonces es muy dificil que te ayude.. si vos no entendes el problema (que yo no veo) yo menos...
 
3:11 PM
@gbianchi que guacho
 
@g3rv4 que pacho?
 
@gbianchi como te escapaste con ese enroque
 
@g3rv4 epa.. estaba todo pensado...
 
no por mi :P
 
3:27 PM
Va tomando forma mi interprete Lisp: ya funcionan las macros.

Tengo esta macro en un archivo test.lisp:

(defmacro and (&rest lista)
    (loop
        (if (not lista) (return T))
        (if (car lista) (setq lista (cdr lista)) (return nil))
    )
)

La macro equivale al `all()` de Python: retorna NIL si alguno de los elementos es NIL, o T (True) en otro caso.

Ejecutando en el REPL:

>(load "test.lisp")
T
>(and)
T
>(and 1)
T
>(and nil)
NIL
>(and 1 2 3)
T
>(and 1 nil 3)
NIL
>
 
yo mientras tanto viendo como me intentan robar la cuenta corporativa
me han intentado acceder desde Colombia, Vietnam, filipinas y ucrania al mismo tiempo XD
 
@gbianchi mira esto..
SELECT
	DATE(tot.fecha) fecha1,
	YEAR(tot.fecha) anio,
	DATE_FORMAT(fecha,'%m') mes,
	DATE_FORMAT(fecha,'%u') semana,
	SUM( tot.total_lineas_noinconsistentes + tot.total_lineas_inconsistentes ) total
FROM prueba tot
WHERE fecha >= Date_format( date_add( NOW(), INTERVAL - 5 DAY ), '%Y-%m-%d' )
	AND fecha <= Date_format( date_add( NOW(), INTERVAL 0 DAY ), '%Y-%m-%d' )
GROUP BY DATE(tot.fecha), YEAR(tot.fecha), DATE_FORMAT(fecha,'%u'), DATE_FORMAT( tot.fecha, '%d-%m' )
ORDER BY DATE( tot.fecha ) ASC
SELECT
	DATE(fecha) fecha1,
	YEAR(fecha) anio,
	DATE_FORMAT(fecha,'%m') mes,
	DATE_FORMAT(fecha,'%u') semana,
	COUNT(*) total
FROM prueba1
WHERE
	fecha >= Date_format( date_add( NOW(), INTERVAL - 5 DAY ), '%Y-%m-%d' )
	AND fecha <= Date_format( date_add( NOW(), INTERVAL 0 DAY ), '%Y-%m-%d' )
	AND estado_activo = 'Activo'
	AND estado_cuenta = 'Activo'
GROUP BY DATE(fecha), YEAR(fecha), DATE_FORMAT(fecha,'%m'), DATE_FORMAT(fecha,'%u')
ORDER BY DATE( fecha ) ASC
@gbianchi es posible unir esas 2 consultas son tablas diferentes si..
para obtener un resultado de columnas así:
fecha | anio | mes | semana | total | total 1
 
3:44 PM
@JuanPerez y cual es total y cual total 1?
 
total es el primero de la consulta y total 1 la segunda consulta..
 
y por que no haces un join de prueba y prueba1?
tambien otra cosa, pero no creo que te sirva es un union, te devolvera los datos de una y de otra, pero no mezclados
 
intente hacer algo así:
SELECT
	DATE(tot.fecha) fecha1,
	YEAR(tot.fecha) anio,
	DATE_FORMAT(tot.fecha,'%m') mes,
	DATE_FORMAT(tot.fecha,'%u') semana,
	SUM( tot.total_lineas_noinconsistentes + tot.total_lineas_inconsistentes ) total
FROM prueba tot
JOIN prueba1 ams ON DATE(tot.fecha) = DATE(ams.fecha) AND ams.estado_activo = 'Activo' AND ams.estado_cuenta = 'Activo'  AND ams.tipo = 'creado'
WHERE tot.fecha >= Date_format( date_add( NOW(), INTERVAL - 5 DAY ), '%Y-%m-%d' )
	AND tot.fecha <= Date_format( date_add( NOW(), INTERVAL 0 DAY ), '%Y-%m-%d' )
pero los datos no son los correctos..
 
@JuanPerez ese query estaria bien...
 
@JuanPerez ¿Por qué no?
 
3:53 PM
2022-01-13	2022	01	02	33373 25912
2022-01-14	2022	01	02	33916 26359
2022-01-17	2022	01	03	33916 26298
2022-01-18	2022	01	03	34905 27045
esos tendrian que ser los datos correctos..
2022-01-13	2022	01	02	864761176
2022-01-14	2022	01	02	893991844
2022-01-17	2022	01	03	891922968
2022-01-18	2022	01	03	944005725
Y eso es lo que me arroja..
 
y has mirado que arroja tot.total_lineas_noinconsistentes y tot.total_lineas_inconsistentes por separado?
 
esta es la respuesta de la primera consulta por separado
2022-01-13	2022	01	02	33373
2022-01-14	2022	01	02	33916
2022-01-17	2022	01	03	33916
2022-01-18	2022	01	03	34905
esta es la respuesta de la segunda consulta por separado
2022-01-13	2022	01	02	25912
2022-01-14	2022	01	02	26359
2022-01-17	2022	01	03	26298
2022-01-18	2022	01	03	27045
 
no por separado no, en la misma query, en vez de SUM( tot.total_lineas_noinconsistentes + tot.total_lineas_inconsistentes ) total: SUM( tot.total_lineas_noinconsistentes) total y SUM(tot.total_lineas_inconsistentes ) total 2
porque al estar en join el resultado puede variar
 
fecha | anio | mes | semana | total_lineas_noinconsistentes | total_lineas_inconsistentes
2022-01-13	2022	01	02	146	33227
2022-01-14	2022	01	02	146	33770
2022-01-17	2022	01	03	146	33770
2022-01-18	2022	01	03	146	34759
 
ese 146 es lo que te esta volviendo loco
 
4:11 PM
no se
 
bueno, en general todos los resultados del total, al hacer join la query varia
 
si, por eso no encuentro como unirlas..
es que necesito esos resultados así para pasar todo a una tabla resumen..
 
@JuanPerez tienes un join sin mas, la question que te tienes que hacer es qué tipo de join necesitas
left, full inner...
 
@NicolasOñate ni con left, inner, full me funciona..
 
la query funciona, pero no como deseas, debes fijarte en las clausulas del where y en el tipo de join que usas
 
4:21 PM
por dios
que es ese join?
esta mal....
JOIN prueba1 ams ON DATE(tot.fecha) = DATE(ams.fecha) AND ams.estado_activo = 'Activo' AND ams.estado_cuenta = 'Activo' AND ams.tipo = 'creado' <- todo eso no va en el where?
 
@gbianchi es que esto:
AND ams.estado_activo = 'Activo' AND ams.estado_cuenta = 'Activo' AND ams.tipo = 'creado'
pertenece a la tabla prueba 1
 
vamos a empezar por el principio.. probaste unir los querys sin hacer todo esto, si no como vienen?
 
empecemos desde el principio
esta es la primera query:
 
no quiero ver las querys
 
SELECT
	DATE(tot.fecha) fecha1,
	YEAR(tot.fecha) anio,
	DATE_FORMAT(tot.fecha,'%m') mes,
	DATE_FORMAT(tot.fecha,'%u') semana,
	SUM( tot.total_lineas_noinconsistentes + tot.total_lineas_inconsistentes ) total
FROM ftth_andes_ams_total tot
WHERE tot.fecha >= Date_format( date_add( NOW(), INTERVAL - 5 DAY ), '%Y-%m-%d' )
	AND tot.fecha <= Date_format( date_add( NOW(), INTERVAL 0 DAY ), '%Y-%m-%d' )
GROUP BY DATE(tot.fecha), YEAR(tot.fecha), DATE_FORMAT(tot.fecha,'%u'), DATE_FORMAT(tot.fecha, '%d-%m')
 
4:23 PM
quiero la estrategia de resolucion
 
vuelvo a pregunta, probaste unir los querys asi como vienen?
 
con union all ?
 
vos tenes problemas con estrategias de resolucion de algoritmos...
no.. con el join...
tenes el query A
y el query B
y queres armas el query C, magicamente uniendo A y B, pero no como estan, si no transformandolos
yo te pregunto...
como primer paso, no seria mejor hacer un join exactamente como estan?
 
no se como hacer eso que comentas..
 
4:25 PM
o sea... tenes A que es enorme.. tenes B que es enorme.. armemos C, pero en base a esos dos enormes...
 
full join
 
select campos
From (TODA TU CONSULTA a, COMPLETA) INNER JOIN (TODA TU CONSULTA B, COMPLETA) ON los campos que las unene
 
@NicolasOñate no... no estoy hablando de codigo, si no de estrategia de resolucion...
@NicolasOñate no hablo de eso
 
4:26 PM
@gbianchi ahh ok ok
 
@gbianchi te me estas haciendo mayor. Te veo un poco gruñon ya XD
 
@Pikoh estoy a punto de hacer un live session...
noto demasiados problemas de debug y falta de estrategias... aca no falla el codigo.. falla como se quiere resolver...
 
@gbianchi paciencia
 
Te entiendo
 
SELECT *
FROM
(
	SELECT
		DATE(tot.fecha) fecha1,
		YEAR(tot.fecha) anio,
		DATE_FORMAT(tot.fecha,'%m') mes,
		DATE_FORMAT(tot.fecha,'%u') semana,
		SUM( tot.total_lineas_noinconsistentes + tot.total_lineas_inconsistentes ) total
	FROM ftth_andes_ams_total tot
	WHERE tot.fecha >= Date_format( date_add( NOW(), INTERVAL - 5 DAY ), '%Y-%m-%d' )
		AND tot.fecha <= Date_format( date_add( NOW(), INTERVAL 0 DAY ), '%Y-%m-%d' )
	GROUP BY DATE(tot.fecha), YEAR(tot.fecha), DATE_FORMAT(tot.fecha,'%u'), DATE_FORMAT(tot.fecha, '%d-%m')
@gbianchi asi te refieres..
 
4:28 PM
no
 
si señor!
 
Bueno, yo me voy. Hasta mañana
 
agregale el On.. si no va a fallar...
 
ahhh vaale ya lo pillo
 
4:29 PM
el on debería ser por la fecha verdad
 
@JuanPerez supongo que si...
@NicolasOñate estrategias.. esto te va a dar el resultado correcto.. siempre...
 
no se tendria que dar un alias para poder hacer el on?
 
@JuanPerez supongno.. yo te di la estrategia....
ayuden a esta persona...
0
Q: Error Syntac error in update statment

Dakasestoy tratando de actualizar unas tablas y me da el siguiente error Syntax error in UPDATE statement Tengo el siguiente codigo Public Function actualizarEquipo(cte As DEquipos) As Boolean Try conectar() cmd = New OleDbCommand("UPDATE EquiposBDA Set [Tipo] = '" &...

 
@JuanPerez si, algo como select * from () t1 inner join () t2 on t1.blabla = t2.blabla
 
SELECT *
FROM
(
	SELECT
		DATE(tot.fecha) fecha1,
		YEAR(tot.fecha) anio,
		DATE_FORMAT(tot.fecha,'%m') mes,
		DATE_FORMAT(tot.fecha,'%u') semana,
		SUM( tot.total_lineas_noinconsistentes + tot.total_lineas_inconsistentes ) total
	FROM ftth_andes_ams_total tot
	WHERE tot.fecha >= Date_format( date_add( NOW(), INTERVAL - 5 DAY ), '%Y-%m-%d' )
		AND tot.fecha <= Date_format( date_add( NOW(), INTERVAL 0 DAY ), '%Y-%m-%d' )
	GROUP BY DATE(tot.fecha), YEAR(tot.fecha), DATE_FORMAT(tot.fecha,'%u'), DATE_FORMAT(tot.fecha, '%d-%m')
 
4:35 PM
ahora el * por los resultados que deseas
 
perfecto....
estrategias chicos...
 
grande @gbianchi
 
@gbianchi la estrategia es: No hay estrategia
o como dirian mis criaturas fantásticas favoritas: Zi zomoz muchoz ganamoz, zi zomoz menoz llamamoz a maz
 
@NicolasOñate Si no tienes ningún plan, tú enemigo no puede desbaratarlo.
 
@gbianchi en esa misma query puedo tener entonces tantos inner como desee cierto?
SELECT t1.fecha1, t1.anio, t1.mes, t1.semana, t1.total_clientes_ffth_antes, t2.total_clientes_ftth_activos_andes
FROM
(
	SELECT
		DATE(fecha) fecha1,
		YEAR(fecha) anio,
		DATE_FORMAT(fecha,'%m') mes,
		DATE_FORMAT(fecha,'%u') semana,
		SUM( tot.total_lineas_noinconsistentes + tot.total_lineas_inconsistentes ) total_clientes_ffth_antes
	FROM ftth_andes_ams_total
	WHERE fecha >= Date_format( date_add( NOW(), INTERVAL - 5 DAY ), '%Y-%m-%d' )
		AND fecha <= Date_format( date_add( NOW(), INTERVAL 0 DAY ), '%Y-%m-%d' )
queria agregar otra consulta mas..
 
4:51 PM
@JuanPerez si pero asi no
seria:
select t1.a,t2.b,t3.c from t1
inner join t2 on t1.a = t2.a
inner join t3 on t1.a = t3.a
 
Buenas a todos. ¿Cómo justificar la diferencia entre hacer tests unitarios y test de integración?, he estado leyendo y al final, veo bastante habitual una discusión sobre quienes creen que con uno de los dos es suficiente. Yo veo el beneficio y diría de usar ambos, pero.,.¿como explicar el beneficio de hacer ambos tipos de test?
Quería decir que, siento el beneficio de hacer ambos tipos de test (unitarios e integración), sin embargo no logro definir / enumerar de forma clara las diferencias principales de ambos y el valor que aportan cada uno por separado :P ¿Algún artículo/libro o lugar donde aprender o conocer esto? O si alguien puede iluminarme, le estaría muy agradecido. Gracias por adelantado
 
5:18 PM
my take: los unit tests son geniales porque son rápidos
es clarísimo lo que testean y los puedo correr muy facil
los integration tests son geniales porque puedo testear muchas más cosas
si puedo testear lo que quiero con un unit test, lo prefiero porque tengo tiempo de iteración más rápido (y lo que agregan de tiempo en el test suite es mucho menos)
 
 
1 hour later…
6:49 PM
@Trauma ¿Por qué los gatos insisten en pararse frente a una puerta cerrada cuando no tiene intención de salir?
 
@CandidMoe el portal al inframundo esta cerrado y esperan su apertura
por eso no salen/entran si tu les abres, por que no eres tu quien debe abrir el portal
Los gatos son seres que pasan entre esas dimensiones, mientras los perros son guardianes que no permiten que malas entidades se apropien de nuestras zonas
 
Gracias por tu respuesta @g3rv4
 
Voy a darle una vuelta mas de tuerca a ver si se anima alguien mas, me faltan argumentos xD. Que sucede si alguien que ha hecho test unitarios te dice, al final, uno de integración testea lo que testea el unitario, ¿Para que hacer tantos unitarios pudiendo hacer el de integración? ¿Como responder a eso? :P
 
@Sergio Cuando falla un test de integración no sabes (al menos no directamente) qué función/clase/método ha sido el causante
 
7:01 PM
@Sergio Un test unitario me sirve para saber si una función en particular funciona correctamente. Mira este:
    def test_nil(self):
        nil = LispCons(None, NIL)
        self.assertEqual(nil, NIL)
 
@Sergio Tomalo con "pinzas": Con los unitarios testeamos código, con los de integración, funcionalidad. Uno no reemplaza al otro, podrías tener cada mínima función con su correspondiente test, y que todos se resuelvan con éxito, pero aún así fallar un test de integración.
 
Yo diría que un test unitario te permite saber si una función "pura" hace lo correcto (una función sin estado interno, cuyas salidas dependan sólo de las entradas). También te puede permitir ver si una clase (que tiene más estado que una función) se comporta correctamente ante cierta secuencia de operaciones. Un test de integración te permite saber como el estado global influye en el resultado.
 
No necesariamente global, más bien cómo se integran ciertos componentes. Para un estado global creo que se aplicaría un e2e test, o me equivoco?
 
El test unitario no requiere mucho "setup", al ser el estado mínimo. Uno de integración requiere un setup más complejo (bases de datos de test, mocking de servicios externos...) por tanto es más pesado de diseñar
 
Simplemente comprueba que el átomo NIL sea igual a la lista NIL. Eso no lo ve el usuario ni quién está ocupando la API, pero me sirve para descartar errores tontos mientras depuro. Esa prueba la puse pues tuve un problema que finalmente se debio a que la comparación no funcionaba.
 
7:05 PM
@MauricioContreras Probablemente me equivoco yo, nunca he tenido del todo claros esos términos
 
Sois unos grandes, estas son las cosas que buscaba, un poco de reflexion sobre ello, muchas cosas las "siento" dentro de mi pero no logro exteriorizarlas o materializarlas en un concepto
 
@Sergio Respondiendo directamente a esta pregunta: 1) No, el test de integración no testea lo mismo que el test unitario (las interacciones entre componentes hay que testearlas también, no sólo los componentes) y 2) Para qué tantos test unitarios? porque son mucho más rápidos de pensar, escribir y ejecutar. Y te da una primera red de seguridad antes de acometer los de integración
 
pero siento exactamente eso, que:
Veo que se complementan pero es dificil justificarlo debidamente.

Por un lado tenemos los test unitarios:
- Rápidos, escueto, específicos y localizados

Por otro lado tenémos los test integración:
- Lentos, pronlongado, global y generalizado
 
Si, pero es como preguntarse "¿Para qué someter a un automóvil a tests de conducción, cuando ya se ha sometido a test cada una de sus piezas?" eso por un lado, y por otro "¿para qué vas a someter a tests de calidad los tornillos y la chapa, pudiendo simplemente conducir el coche y ver si lo rompes?"
2
 
Creo que cada cosa tiene su valor aportar.
Rapidez para tener mayor velocidad de integración y refactorización, además, los test unitarios si están bien hechos son una documentación del código

Por otro lado, realizaría test de integración para los "casos raros" que surjan que no controlen los unitarios, ya que estos acaban alargando el proceso de integración
 
7:10 PM
y esta analogía me ha hecho ver otro detalle. Si testeas los componentes, esos ya los tienes testeados para otras aplicaciones en las que quizás se integren de otra forma
 
Jajaja, muy buena analogía @abulafia xDD me encanta, por favor un tag a ese comentario!!!!
xD
Gracias de verdad, cada día mas orgulloso de ser parte de esta comunidad, aporta tantas cosas!! hasta buenos ratos ;)
Llevo mucho que no colaboro, (tiempos duros laborales) a ver si tengo mas hueco y estoy mas presente! Ahora soy fan de Python así que, habrá que subir ese puntaje en Python para atraer a mas pythoneros :D. Gracias a todos por estas reflexiones, me han sido de gran ayuda
Ah, y creo que de todas las reflexiones la que mas peso de todas me llevo es la última

", esos ya los tienes testeados para otras aplicaciones en las que quizás se integren de otra forma"
Esto, creo que es lo que casi mas valor aporta, aparte del probar el conjunto de acciones entre sí, la analogía del coche es perfecta. Gracias!!!!
 
7:32 PM
@Sergio Cada vez hay más preguntas de python, pero el ratio de preguntas de baja calidad es muy alto en esta etiqueta (no sé si más alto que en otras, la verdad, porque me centro solo en python). Hay muchas preguntas de "quiero hacer esto" sin más detalles. Otras de simplemente "este es el enunciado de lo que me han mandado hacer". Y bastantes "filosóficas" o pidiendo recomendaciones, que acaban cerradas por "basada en opiniones"
 
@abulafia Grandísimo detalle thanks!!
Intentaré aunar esfuerzos en este sentido para limpiar un poco cuando pueda :)
Habrá que "educar" mas y mejor a la comunidad pyhton, que luego ya se sabe..nos "critican" que el código es feo y difícil de leer porque es "escueto", que si tal cosa o tal cual otra..
En mi opinión "habladurías" jeje, eso de que es feo y no se lee para el que sea guarrete, porque si está limpio Python es hermoso, además de ahorrarte buenas líneas de código y en mi opinión personal, centrarte en lo importante (la lógica) y no del ruido de visual :)
 
Yo ya lo he dicho otras veces y lo repito: para mi python es lo más parecido a pseudocódigo ejecutable que puedo pensar. Siempre que intento explicar un algoritmo a alguien de forma independiente del lenguaje y quiero ilustrarlo con algo de pseudocódigo, lo que me sale parece python :-)
 
hasta que conoces pseudo-christian, será el próximo python en español!
 
Además (no sé si por el uso continuado o por alguna cualidad propia que tenga el lenguaje) ha hecho "clic" en mi cabeza y encaja perfectamente con la forma en que pienso. Hasta el punto de que si algo no acabo de entenderlo bien, busco una implementación en python para entenderlo.
 
Pues ahora que lo dices...tal cual eh, buena forma de sintetizarlo, me la guardo ;)
Yo lo justificaría de 2 formas:
1º, la experiencia, he tocado todo tipo de lenguajes en el siguiente orden, PHP, JS(node, después typescript), Bash scripting, VB, Java, c++, y ahora Python
Después de esto, me he dado cuenta que, ¿Para que escribir mas lineas? Mi vida tiene un límite, prefiero escribir mas "programas, cosas en mi vida", primer punto. Al cambio a Python mi mente literalmente "se despejó", escribo a veces alguna función "puntualmente" y especialmente cuando lo tengo MUY claro, tan rápido como escribo estas lineas, y es increíble sentir ese "poder" de escribir algo y que funcione como un programa. (tiene relación con lo que comentaba Abulafia antes)
Por lo tanto, me centro en la lógica, que quiero y no en llavecitas ni en historias que hacen "microcortes" o interrumpen el flujo mental de la lógica que quieres hacer, al menos a mi eh
 
7:45 PM
Para mi el comic de antigravity lo expresó perfectamente. Yo también vengo de programar en muchos lenguajes y "Python ha hecho la programación divertida otra vez"
 
El 2º punto, teniendo el cuenta el primero, es que si escribo mas rápido, y encima hago TDD, el tiempo ligero adicional de hacer test en cada desarrollo, lo compenso usando Python, por lo que, en igual de "condiciones", experiencia y velocidad, dos desarrollos igual con sus test en Pyhton vs la mayoría de otros lenguajes de su nivel, es un tiempo menor en Python
Si sumamos que laboralmente muchas veces el tiempo es un "handicap" importante, donde incluso puede condicional el rumbo o decisión de realizar algo o no, hacerlo mejor o peor, creo que es importante tener en cuenta el tiempo
 
Efectivamente. Muchas críticas de python se centran en su tiempo de ejecución, pero su fuerza está en el tiempo de desarrollo. El tiempo de ejecución al final no suele ser tan relevante, y en todo caso se puede optimizar a posteriori o incluso reescribir en C, una vez el diseño y el prototipo python funcionan correctamente
 
Exacto, otra razón, además de la compatibilidad de porque es bueno.
también es criticado por no manejar multi-thread, (cosa que además está en entre dicho) pues existe un artículo mas o menos recientemente del señor Sam Gross, donde está trabajando en un repositorio donde eliminar el GIL de Python (algo que recientemente he aprendido sobre ello)
https://mail.python.org/archives/list/python-dev@python.org/thread/ABR2L6BENNA6UPSPKV474HCS4LWT26GY/
Me pareció interesante que pudiera existir un Python que cambie esto, aunque, con sus consecuencias, me he leído el artículo y no tiene desperdicio, explicado de forma bastante sencilla como funcionan aspectos de la
 
MicroPython no tiene GIL
 
Ummh, MicroPyhton? :P
 
7:53 PM
@Sergio ¿¿¿???
 
No había escuchado sobre ello
 
MicroPython es una implementación de Python para microcontroladores
Está disponible para cualquier microprocesador superior a Arduino.
 
@CandidMoe Bastante probable que sea porque tampoco tiene GC ¿me equivoco?
 
Vengo desarrollando app con MicroPython desde hace como un año, y la diferencia respecto a C es INMENSA.
 
Supongo que dependiendo del objetivo que quieras cubrir te conviene una u otra cosa
 
7:59 PM
@abulafia Funciona bien. Tengo un registro minuto a minuto de la memoria disponible:
candid@bell:~$ mosquitto_sub -t sensor1/+
{"time":"16:57", "temp":24.0, "humi":43.0, "uptime":"13d 03:51", "mem":20240}
{"time":"16:58", "temp":24.0, "humi":45.0, "uptime":"13d 03:52", "mem":20240}
 
y soporta multithreading?
 
Lo puse para revisar la aplicación más que a Python. Son aplicaciones que, como ves, tienen un uptime alto (13 dias en este caso).
@abulafia Si, soporta multi-threading. También soporta asyncio, que ahora uso intensamente.
 
Yo sé que el GIL está íntimamente relacionado con el GC basado en contadores de referencias que usa la implementación C. La implementación java en cambio usa el GC de java que es diferente, y por eso Jython no tiene GIL
supongo que micropython también usará un GC distinto
asyncio mola mucho, pero ese sí que no me ha hecho "clic" todavía
me cuesta horrores entender código asíncrono, quizás porque no quiero hacer el salto de fé de "vale, esto se usa así, no intentes comprender cómo lo hace el intérprete por debajo"
 
La verdad es que cuando he tocado JS, el tema async es un poco tocada de webos en algunos casos, especialmente realizando test :/ mockear awaits y hacer continue() con chai, callbacks buah, horroroso
 
@abulafia Es raro. Para mi fue, "Esto era lo que estaba esperando toda mi vida".
 
8:04 PM
Abulafia, entiendo perfectamente que tiene muchíiisima experiencia en general, pero igual, te recomiendo mirar el doc de Sam Gross hablando sobre NOGIL, ya que su artículo y motivación principal es la "discuión" y analiza distintas opciones y soluciones, yo que no me considero gran experto todvía, me aportado una visón del procesamiento de hilos muy top, diría
 
@Sergio Nada de "tests"; a probar directamente en la vida real. Mi software corre en un microprocesador, asi que nada de debug ... a lo más, un analizar lógico para tracear los pines.
 
@CandidMoe Sí, desde un punto de vista sintáctico. Pero teniendo en cuenta que yo vengo del ensamblador y el C, y quiero entender bien cómo los conceptos de alto nivel se mapean sobre la arquitectura (hardware), el hecho de que una "corutina" pueda reanudarse "por la mitad" rompe lo que sabía sobre funciones, la pila y todo lo demás. Entiendo que los marcos de pila ya no están en la pila sino en el heap, pero...
...todo el bucle de eventos, su relación con select(), con las operaciones de E/S no bloqueantes, ... es decir todo lo que está implementado en asyncio (o debería decir re-implementado?) me supera
 
@CandidMoe Me refería a que cuando he utilizado async fue con JS y no ḿe gustó demasiado, igual en Python es mas sencillo, ahora trabajo microservicios y con asyncio no he tenido tanta comedura de cabeza, que en parte también es por como se ejcuta JavaScript internamente
 
entiendo cómo usarlo y cómo escribir código asíncrono, pero no sabría escribir un reemplazo de asyncio, por así decir
 
@abulafia Estoy seguro que si me aplico lo suficiente, sabre como se hace. Es sólo que tengo otros intereses en este momento.
 
8:07 PM
@abulafia En JavaScript, existe una librería bastante útil llamada "proxyquire" donde simulas llamadas externas
 
@CandidMoe Y eso te ha salvado de quedarte "atascado" como yo con asyncio :-)
 
@abulafia Lo reconozco publicamente: hay cosas que no entiendo (y que debería entender).
 
Dices, cada vez que se llame a este recurso, sobreescribe con tal otro, pero cuando metes esto con async, uf, empieza la fiesta, porque debes mockear doblemente, la llamada.

Primero mockeas una llamada y luego la llamad de la llamada, pero entonces debes conocer todas las llamadas encadenadas que se hacen
 
@Sergio Ahi aplicaria test de integración, que ejecuten la llamada real en un ambiente de prueba. O sea, algún bot que realmente cargue la página y haga click.
 
@Sergio Este Sam Gross tiene algo que ver con la reciente noticia de que Facebook había hecho un python sin GIL? O es un esfuerzo independiente?
 
8:10 PM
mmmh, pues no sabría decirte, pero el artículo es del 7 de octubre 2021, osea bastante reciente
y el repo 21k de forks
LOL correcto @CandidMoe
xD acabo de ver su perfil en Github y pone "Organizations => Meta research" OMG
 
Ah, pues sí. Es el artífice de la noticia que yo había leido
 
Osea, que eso de que "facebook ha hecho"....
 
Si, quizás lo recuerde mal. "Un trabajador de facebook"
 
Digamos que Sam Gross ha hecho y Facebook está ahí apoyando :DDD
 
a ver si soy capaz a encontrar la referencia a aquella noticia...
 
8:14 PM
Bueno supongo que habrán colaborado el equipo y mas gente pero, el artículo de análisis que presenta, parece que lleva la "voz cantante"
@abulafia si pls! :)
 
Thanks
 
> This is a proof-of-concept implementation of CPython that supports multithreading without the global interpreter lock (GIL), from Facebook research. An overview of the design is described in the Python Multithreading without the GIL Google doc. Also see the related discussions on LWN and Hacker News.
Ahi es donde menciona "Facebook Research", pero luego no vuelve a aparecer Facebook en ninguna otra fuente
asi que supongo que el redactor lo sacó de su perfil de Github
@CandidMoe En esta discusión forum.micropython.org/viewtopic.php?t=2417 (de 2016) dice que Micropython es single-thread y que por eso no tiene GIL, pero que quizás se le añada soporte para hilos y que eso podría causar la inclusión de un GIL. La discusión es ya un poco antigua ¿seguirá siendo relevante? ¿Han conseguido meter hilos sin gil? ¿cómo?
 
@abulafia MicroPython puede correr un thread por núcleo.
 
Posiblemente entonces tenga un intérprete por núcleo
eso evitaría la necesidad de un GIL
 
8:26 PM
@abulafia Estamos hablando de micros con 2 cores.
 
Bueno, eso no cambia las cosas, creo. El GIL hace falta tanto con dos hilos como con 32, a menos que haya tantos intérpretes como hilos
 
MicroPython just provides one thread per core (or more accurately, a "main" thread on the first core and an optional second thread).
No tengo nada más oficial que eso, y otra referencia que no puedo recupera.
 
Bueno bueno:
However, this restriction will not apply in the event of the occurrence (certified by the United States Centers for Disease Control or successor body) of a widespread viral infection transmitted via bites or contact with bodily fluids that causes human corpses to reanimate and seek to consume living human flesh, blood, brain or nerve tissue and is likely to result in the fall of organized civilization.
XD
 
9:17 PM
@CandidMoe, ya me decidí el proyecto, me gustó mucho la idea de lo del terrario domotizado
 
@AQMR Hasta puedes poner un live-feed de tu colonia.
 
Le añadiré una cámara Ip pequeñita, si puede ser con visión infrarroja, sistema de regadío automático en el techo que cada vez que se queden sin humedad llueva durante un minutejo, luces rojas de led (ya que las hormigas no ven el rojo)
@CandidMoe Que es eso?
Ah coña, vale, sisi, para eso tenía pensado implementar la camarita
Y si puedo hacer lo de los time lapses que me dijiste ayer, quedría de vicio, que se manden a una nube para poder verlos
 
@AQMR Puedes conectar la cámara directo al RP.
 
Eso es
A ver qué tal me sale, tengo hasta verano del año que viene para hacerlo, asi que guay
 
Pones el RP arriba del terrarium y le puedes conectar una pequeña pantalla led para, no se, temp, humedad y cualquier cosa que impresione a las visitas.
 
9:21 PM
Solo espero que me den por válido el proyecto, porque como no les guste me lo tiran para abajo
Espera, que es RP?
 
Raspberry Pi
 
Ah coño, vale XD
El caso es que, si hay mucha humedad no romperé la RP?
Tu di que la especie que tengo con un 30% de humedad les sobra, pero...
 
La pones afuera, sólo pasas los cables.
La electrónica funciona mientras la humedad no se condense.
 
Veré como lo hago, porque si mal no recuerdo ese falso techo tiene un compartimento para meter ahí cosas, quizá tenga que modificarlo un poco
Y tengo que pensar una forma en que las destroza todo de mis hormigas no muerdan los cables
Que son muy curiosas
 
@AQMR Mejor montalo en su propia base. Te será más fácil para moverlo entre el escritorio y el Terrarium si tienes que trabajar en él. También facilitará el transporte.
 
9:27 PM
Es un cuarto vacío con una mesa que ocupa todo el cuarto, créeme, no me va a faltar espacio XD
Tengo que mirar este fin de semana cómo distribuir las cosas
 
Puedes desarrollar todo en el escritorio y luego llevarlo al terrarium.
 
Eso acabaré haciendo
Porque sino...
Quizá haga que se pueda controlar también por voz
Sería un puntazo
 
Podrías pintar a las hormigas con un trazador radioactivo y seguirlas en 3D con contadores geiger.
Podrías documentar la vida de un hormiga desde su nacimiento.
 
Eso ya prefiero no hacerlo
Ya es demasiado, además que al estar todas juntas en una colonia que no se va a ver realmente por dentro, difícil
 

« first day (2272 days earlier)      last day (118 days later) »