<    April 2017    >
Su Mo Tu We Th Fr Sa  
                   1  
 2  3  4  5  6  7  8  
 9 10 11 12 13 14 15  
16 17 18 19 20 21 22  
23 24 25 26 27 28 _2_9  
30
00:27 MA|Pablo3 joined
00:33 juantelez joined
00:37 marky1991 joined
01:02 qlixed joined
01:03 nicoechaniz joined
01:09 juantelez joined
01:14 cramm joined
01:27 MA|Pablo3 joined
01:45 juantelez joined
01:57 D3f0 joined
02:04 Atila joined
02:06 Atila joined
02:07 nicoechaniz joined
02:11 Atila joined
02:27 fuaa2 joined
02:31 juantelez joined
02:55 D3f0 joined
03:09 juantelez joined
03:27 fuaa2 joined
03:28 cramm joined
03:29 <Atila> hola
03:30 <Atila> saben, estoy tratando de entender curses, pero estoy un poco confundido
03:30 <Atila> en algunos sitios es llamado como "ncurses"
03:31 <Atila> tambien encontre en github "textland"
03:31 <Atila> saben la diferencia entre "curses" y "ncurses" ?
03:58 <mefistofeles> Atila: ncurses es una implementación específica de "curses" y es la más usada/moderna
04:03 juantelez joined
04:15 <Atila> mefistofeles: ok
04:27 MA|Pablo3 joined
04:33 Jevix joined
04:33 <lalita> Jevix: Te damos la bienvenida a #pyar
04:55 humitos joined
05:04 Atila joined
07:00 grafuls joined
07:24 pcaruana joined
09:40 GeekHrafn joined
09:40 <GeekHrafn> morning!
10:35 nicoechaniz joined
11:19 micabressan joined
11:25 chinosoliard joined
11:33 mguillech joined
11:41 <Facu> Muy buenos días a todos!
11:43 <StucKman> vaca..
11:43 sergiusens joined
11:49 Gonza joined
11:59 angelluis joined
12:01 marcosmoyano joined
12:13 <micabressan> Buen dia
12:16 <Facu> hola mci
12:16 <Facu> hola micabressan
12:16 <Facu> so monday
12:16 <micabressan> hola Facu
12:19 manuq joined
12:21 <StucKman> Facu: fuck yeah
12:21 <Facu> StucKman, si yeah quiere
12:22 ezequiel joined
12:22 ezequiel joined
12:23 <StucKman> Facu: :)))
12:24 entrerrianas joined
12:33 litox joined
12:35 mefistofeles joined
12:36 Darni joined
12:46 tiki_ joined
12:48 fisa joined
12:52 GiLgAmEzH joined
13:00 aguz joined
13:06 matibarriento joined
13:09 pyarense_i|77320 joined
13:09 <lalita> pyarense_i|77320: Te damos la bienvenida a #pyar (fijate que te mandé un mensaje por privado, mirá en la otra pestaña arriba)
13:10 acangiani joined
13:10 <pyarense_i|77320> Buen dia, estoy leyendo tutoriales y tratando de aprender python... pero necesito resolver un codigo un poco rapido
13:11 <StucKman> pyarense_i|77320: pregunte nomás
13:12 <pyarense_i|77320> necesito un codigo que acceda a una direccion web (la cual le va a devolver un json) y cargar los dator recibidos en una base mysql
13:12 <StucKman> no, tanto como el código no te vamos a dar
13:12 <StucKman> qué has hecho hasta ahora?
13:12 <pyarense_i|77320> si, lo se
13:12 <pyarense_i|77320> es que hace dias que estoy leyendo tutoriales y no encuentro lo que busco
13:12 <StucKman> pero por ejemplo, para hacer el pedido web, usá el módulo requests
13:13 <Facu> hola pyarense_i|77320
13:13 <pyarense_i|77320> o capaz lo encontre y no me di cuenta
13:13 <StucKman> y no, los tutos son mucho más básicos y generales que eso
13:13 <StucKman> para la db, depende un poco de si vas a hacer un sistema permanente o es sólo un hack de una vez
13:14 kyheo joined
13:31 mefistofeles joined
13:33 <pyarense_i|77320> es un sistema permanente
13:33 <pyarense_i|77320> esa consulta se tiene que efectuar cada determinado tiempo
13:33 <pyarense_i|77320> 1 o 2 veces por dia
13:35 <StucKman> pyarense_i|77320: podé susar o un módulo que hable directamente con mysql o usar un ORM si teneés que hacer algo de procesamiento de tu lado
13:40 marky1991 joined
13:40 TiN joined
13:43 eduzen joined
13:44 delfox joined
13:44 marky1991_2 joined
13:55 <ralsina_> Buenas!
13:55 <ralsina_> Sin probarlo, adivinen que hacen estas 4 cosas: [] = []; {} = {}; (,) = (,), () = ();
13:58 <eduzen> o/
14:01 <eduzen> ralsina_ me suena raro el (,)
14:02 <StucKman> ralsina_: ohno, ahora somo JS?
14:02 <StucKman> verry inter3esting
14:03 <Facu> ralsina_, tirando esas cuatro cosas por separado en un interprete, o todo junto?
14:04 <* Facu> adivina: nada; error; error; nada
14:04 <* Facu> prueba
14:04 <StucKman> me suena que error, error, nada, nada
14:04 <Facu> bueh, 3 de 4
14:04 <Facu> nada mal
14:05 <StucKman> py o py legacy?
14:05 <ralsina_> Facu: creoq ue lo tuyo es un record, yo emboqué 2
14:05 <ralsina_> StucKman: creo que los dos
14:05 <ralsina_> eduzen: (,) es una tupla vacía
14:05 <Facu> ralsina_, no, (,) no vale
14:05 <StucKman> notable los casos especiales
14:05 <Gonza> cda
14:06 <ralsina_> 2do nivel: a,b,[] = 1,2,[]
14:06 <StucKman> qué mal
14:06 <ralsina_> que obviamente funciona mientras no muevas la [] de lugar :-)
14:07 <* Facu> adivina: a=1, b=2, y listo
14:07 <StucKman> makes sense dado lo anterior
14:07 <Facu> no entendría por qué no se puede mover, a ver
14:08 <ralsina_> si moves las dos, obviamente funciona
14:08 <Facu> ah, eso
14:08 <StucKman> ah
14:08 <ralsina_> pero no sorprende un unpacking en el que si moves los items de la izquierda explota?
14:08 <ralsina_> (o los de la derecha ;-)
14:08 <Facu> y sino asterisco
14:08 <Facu> a,*b,c = 1,[],[]
14:08 <ralsina_> eeeeek
14:08 <StucKman> ralsina_: y no, tiene que ser un iterable
14:09 <ralsina_> StucKman: no cualquier iterable
14:09 <ralsina_> StucKman: dict es iterable pero no sirve
14:09 <ralsina_> de hecho, de los builtin, el unico que sirve es lista
14:09 <StucKman> tambien por cantidad
14:09 <Facu> ralsina_, ?
14:09 humitos joined
14:09 <StucKman> ralsina_: hablás del de la izq, rite?
14:09 <Facu> >>> (a, b) = "12"
14:09 <Facu> eso vale
14:10 <StucKman> Facu: tás haciendo trampa, casi
14:10 <ralsina_> Ok, [] = {} si funciona
14:10 <ralsina_> En la izq, se puede usar algo que no sea lista?
14:10 <StucKman> me pregunto si los [] de la izq los optimizará con un ()
14:10 <Facu> ralsina_, tupla ↑
14:10 <StucKman> ralsina_: tuplas
14:10 <StucKman> bueno, not really
14:10 <ralsina_> Ah, pero tuplas con cosas adentro
14:10 <StucKman> () = ()
14:10 <StucKman> ^
14:10 <StucKman> SyntaxError: can't assign to ()
14:11 <Facu> "secuencias de objetos"
14:11 <Facu> todas
14:11 <ralsina_> () no es una tupla
14:11 <ralsina_> no?
14:11 <StucKman> Facu: salvo la vacía
14:11 <StucKman> cómo que no?
14:11 <ralsina_> () es nada
14:11 <Facu> ralsina_, sí: >>> type(())
14:11 <Facu> <class 'tuple'>
14:11 <StucKman> In [11]: type(())
14:11 <StucKman> Out[11]: tuple
14:11 <ralsina_> porque () es el operador asociacion!
14:11 <Facu> None es nada
14:11 <StucKman> no, es el constructor de tuplas también :)
14:11 <ralsina_> (unacosa) no es una tupla, (una,otra) si, () tambien????
14:11 <StucKman> depende del parser, supongo
14:12 <StucKman> ralsina_: así parece
14:12 <Facu> ralsina_, como expresás una tupla vacia si no es con "()" ?
14:12 <ralsina_> () es el constructor de tuplas mientras tenga una cantidad no-uno de cosas adentro. NICE
14:12 <ralsina_> tuple()
14:12 <StucKman> ah, y también es delimitador de parámetros de funciones
14:12 <StucKman> de declaracione de funciones
14:12 <Facu> nah, ahí construis una tupla vacia, no la expresás
14:12 <ralsina_> segual
14:12 <Facu> una lista vacía es "[]", no "list()"
14:13 nicoechaniz joined
14:13 <StucKman> ralsina_: porque (1,)
14:13 <ralsina_> las dos son tuplas vacias, una es una tupla vacia literal
14:13 <StucKman> claro, los objetos son equilavente
14:13 <Facu> ralsina_, eso
14:13 <StucKman> ambas expresiones sintácticas dan el mismo objeto
14:14 <StucKman> 'el mismo'
14:14 <ralsina_> 20 años haciendo python y me entero de estas cosas
14:14 <StucKman> +1
14:14 <StucKman> bueno, 17 años...
14:16 <Facu> ralsina_, son corner cases conceptuales
14:16 <StucKman> bueno, no al nivel de JS, por suerte
14:16 <ralsina_> por eso me sorprende, porque ya pensé que los conceptos los tenía :-)
14:16 <StucKman> a mi me mató lo del return en el finally
14:17 <ralsina_> Igual, no me voy a sorprender ahora por mis falencias como programador, me rio y sigo nomás :)
14:17 <StucKman> ralsina_: los conceptos capaz que si, pero eso es el modelo semántico
14:17 <Facu> que el return que usa es por el último que pasa?
14:17 <StucKman> la sintaxis es otra cosa :)
14:17 <StucKman> Facu: sorprende que puedas pasar por dos returns :)
14:17 <StucKman> (o mas)
14:18 <StucKman> pyarense_i|77320: te alcanzan los punteros que te pasé?
14:19 <Facu> StucKman, yo me desayuné que el último return es el que usaba; pero podés pasar por dos returns porque el "finally" te asegura que SIEMPRE se ejecuta
14:19 sergiusens joined
14:20 <StucKman> Facu: o por más, si tenés finallys anidados
14:20 <Facu> StucKman, claro
14:20 <StucKman> which is *wierd* a cierto nivel
14:20 <Facu> StucKman, pero me asustaría/sorprendería que un finally no se ejecute
14:20 <StucKman> pero teniendo en cuenta la intención del finally, en restrocpectiva, tiene sentido
14:21 <StucKman> Facu: si, por eso, es como tener dos males y elegir por uno
14:32 marcosmo` joined
14:36 qlixed joined
14:40 t0n1 joined
14:42 Darni joined
14:43 <t0n1> buenas gente
14:55 <matibarriento> buenas pyar
14:59 Darni joined
15:00 b00tstr4p joined
15:03 <enriquetaso> Buenas, tengo una duda sobre buenas prácticas:
15:06 <GiLgAmEzH> Hola! Aumentamos el cupo del BsAs Python Meetup para que ingresen todos los que estaban en lista de espera :-) Por favor los que ya saben que no van a ir liberen sus lugares!!
15:06 <GiLgAmEzH> Recuerden dejar su DNI cuando se anotan y llevarlo al evento.
15:08 kyheo joined
15:10 <enriquetaso> tengo una lista de funciones `validators = [check_schema(), duplicate_msg()]`, actualmente para usar esos validadores realizo un map(lambda f: f(msg.message), validators) y tengo hardcodeado el manejo de exceptions.. quiero sacar ese codigo hardcodeado pero no se como.. deberia hacer una funcion que devuelva: 'expected_error' y 'traceback_error' ?
15:11 humitos_ joined
15:11 <enriquetaso> practicamente el except loggea el msg y agrega el mensaje a una lista de duplicados o de schema_fail
15:11 chinosoliard joined
15:15 micabot joined
15:24 delfox joined
15:26 <qlixed> enriquetaso, porque pensas que lo tenes "harcodeado" el manejo de excepciones?. El manejo de excepciones es parte natural del flujo de una app que funciona con notificacion de errores de ese estilo.
15:26 <Facu> hola t0n1, matibarriento
15:28 <StucKman> enriquetaso: capá si nos pasteás el cacho de código...
15:28 <Facu> enriquetaso, el validador puede devolver algunas excepciones que son "esperadas", pero además pueden explotar por cualquier cosa (y esas serían las inesperadas, right?)
15:35 <enriquetaso> https://pastebin.com/X5GuPD4S
15:35 <lalita> enriquetaso: [#15245] def process(self): put = self.put mark_ok = self._stream_in.ma - Pastebin.com
15:37 <enriquetaso> la idea es que el processor reciba una lista de validadores (self._validators), y cada validador haga lo que tenga que hacer por su cuenta (como esta ahora) pero y que el processor no tenga codigo hardcodeado sobre los validadores.
15:37 <enriquetaso> qlixed, Facu, StucKman ^
15:39 <qlixed> enriquetaso, entonces necesitas manejar la excepcion dentro de cada funcion y hacer una de dos cosas:
15:40 kyheo joined
15:41 <qlixed> 1) Usar una excepcion generica, por ej: ProcessError, que dentro de cada validador usas para indicar el error. Ahi podes crear tu propia excepcion, indicando el tipo de excepcion y demas yerbas que necesites para la parte de log que usas ahi.
15:42 <qlixed> 2) No usar excepciones, devolver un error code que indique el problema.
15:42 <qlixed> pero eso te romperia un toque el esquema de map y lambda creo.
15:42 <StucKman> enriquetaso: map(lambda f: f(msg.message), self._validators)
15:42 <StucKman> no es mejor
15:43 <StucKman> ah, no
15:43 <StucKman> no dije nada :)
15:43 <Facu> enriquetaso, qlixed, yo, para situaciones excepcionales, usaría excepciones, y no un código de error
15:43 <Facu> enriquetaso, lo que dice qlixed de tener una excepción particular es la manera de hacerlo
15:44 <Facu> luego, en algún lado, agarrás ProcessError y de ahí adentro sacás la info necesaria para hacer lo que tengas que hacer
15:44 <Facu> enriquetaso, acordate que a una excepción le podés poner los atributos que te plazca
15:45 <qlixed> Claaaaaaa... con eso metes lo que necesites para tus logs/Stats que haces dps.
15:46 <Facu> yeap
15:46 <enriquetaso> no me termina de quedar claro porque ese codigo "esta feo"
15:47 <StucKman> enriquetaso: lo único que huele un poco son los dos primeros excepts, pero dado que tenés uqe hacer cosas distintas, yo no diría que esté muy mal
15:48 <enriquetaso> main: https://pastebin.com/KuptYAWe
15:48 <lalita> enriquetaso: [#15246] main.py # Validators validators = [ load_cupper_v - Pastebin.com
15:48 <StucKman> por ahí capá el bicho log_metrics_dict() tiene mala pinta
15:48 <enriquetaso> validator: https://pastebin.com/TJB5WhSr
15:48 <lalita> enriquetaso: [#15247] Possible Spam Detected
15:48 <StucKman> juaz
15:48 <StucKman> spammer!
15:48 <StucKman> :-P
15:49 <qlixed> enriquetaso, el problema es que si cada validador tenes una excepciones diferentes que se pueden tirar... es un problema.
15:49 <qlixed> por que para cada validador que agregue una nueva excepcion vas a tener que cambiar el procesador para poder loguear la info, es muy cohesivo el codigo.
15:50 <qlixed> con la except generica ya le sacas cohesion a lo loco.
15:50 <qlixed> por que estandarizas el protocolo de comunicacion entre partes.
15:50 <enriquetaso> validator: https://pastebin.com/TJB5WhSr
15:50 <lalita> [#15247] https://pastebin.com/TJB5WhSr : Possible Spam Detected [by enriquetaso, 2017-04-24, 15:47:14]
15:50 <qlixed> Me fui a la mierda? tal vez, pero bueno...
15:50 <enriquetaso> jajaja spammer master
15:51 <enriquetaso> no, gracias qlixed, porque estoy re confundida
15:51 <enriquetaso> osea, NO SE QUE TOCAR directamente
15:52 <enriquetaso> y es porque me faltan buenas practicas, claramente
15:52 <qlixed> let me help a bit con pseudocodigo.
15:52 <qlixed> enriquetaso, no te vuelvas loca por eso, las buenas practicas no son siempre buenas practicas en todos los casos.
15:53 <qlixed> hay cosas genericas como pep8, pero para esto de gestion de Excepciones, es medio un "lo armo y lo voy ajustando on-demand"
15:53 <enriquetaso> StucKman, claro el log_metrics_dict() es una de las cosas que me marcaron para cambiar, pero lo tengo que pasar como parametro? wtf
15:53 <StucKman> para empezar en una función, no un dict?
15:53 <qlixed> enriquetaso, podrias pasarlo como parametro y hacer el catch de la excepcion en la funcion.
15:58 <StucKman> o suena más a un dict de dicts
15:59 <qlixed> pero me parece que es llevar y traer un dict que se podria evitar.
15:59 <qlixed> mmmm...
16:00 <qlixed> La responsabilidad de llevar las stats de falla no deberia ser del mismo validador, deberian ser del que llama al validador.
16:00 <qlixed> Que es como esta ahora.
16:01 <StucKman> podés hacer que
16:01 <StucKman> tener una excepcion base de la que heredan las otras
16:01 <StucKman> y hacer onda
16:01 <StucKman> except BaseExc:
16:01 <StucKman> perdón
16:01 <StucKman> except BaseExc as e:
16:02 <StucKman> metrics.failed[type(e)][msg_type] += 1
16:02 <StucKman> o algo por el estilo
16:02 <StucKman> podés usar type(e).__name__
16:04 <enriquetaso> meter una excepcion particular dentro del processor.py o dentro de las funciones del validator?
16:04 <StucKman> no particular
16:04 <StucKman> sino que sea la base del resto
16:04 <qlixed> Eso que menciona StucKman esta bueno tambien.
16:04 <StucKman> entonces tenés una sola excepción a cachear
16:04 <StucKman> y un solo bloque de tratamiento
16:05 <enriquetaso> ahah
16:05 <StucKman> pero bueno, también hay que tener en cuenta si tiene sentido, yo no haría ese refactoring hasta que no haya otra excepción a agarrar u nada mas que hacer
16:05 <StucKman> o tu jefe te lo ordene, claro :)
16:05 <qlixed> tendrias que agregar en validator.py una excepcion base qeu puede eser: ValidatorError, y de ahi heredar InvalidSchemaError y DuplicatedMessageError
16:06 <enriquetaso> claro, porque solo hay 2 excepticones posibles, DuplicatedMessageError e InvalidSchemaError
16:06 <qlixed> Y en el process() meter except ValidatorError y volar las otras dos.
16:07 <Facu> claro, quizás no se justifique el refactoring *ahora*, a menos que quieras hacerlo para aprender y listo
16:09 <enriquetaso> Si, lo voy a hacer asi aprendo y listo
16:09 <enriquetaso> entonces en el processor, solo verifico ValidatorError
16:09 <enriquetaso> el tema es que tengo que hacer cosas distintas segun la excepcion
16:10 <* StucKman> escribiendo queries SQL como si fuera python
16:11 samsagaz joined
16:11 Juan_Carlos joined
16:12 <qlixed> enriquetaso, segun el msg_type
16:12 <qlixed> q parece que los distingue.
16:13 <qlixed> ah, no, deberia ser segun el subtipo de excepcion... duh'
16:15 <Facu> enriquetaso, distintas cosas como qué?
16:17 <qlixed> enriquetaso, si, ahi se ve bastante... igual, cambia el mensaje...
16:17 <qlixed> excepto el catch generico, que deberias dejar.
16:17 <Facu> enriquetaso, con una excepción genérica y un dict de dict para las stats, hasta te queda menos código abajo de todo
16:18 Darni joined
16:20 <enriquetaso> lo que tiene es que ahora se comportan distinto los validadores, el de duplicados si tiene que sacar el mensaje y el de schema no
16:23 MalaLeche joined
16:26 <MalaLeche> buenas tardes
16:31 dlitvak joined
16:35 <Facu> enriquetaso, pero eso no sucede en el pedazo de código que *llama a los validadores*
16:35 <Facu> hola MalaLeche
16:39 <enriquetaso> bueno, por lo que me dijo mi senior, que empiece por manejar la excepcion en el validator y despues vemos(?
16:39 marky1991 joined
16:40 Guest89650 joined
16:40 <lalita> Guest89650: Te damos la bienvenida a #pyar
16:41 Guest89650 joined
16:42 marky1991_2 joined
16:43 marky1991 joined
16:45 samsagaz joined
16:45 <dlitvak> buen diaa
16:53 <StucKman> dlitvak: noches
16:53 <dlitvak> son las 7 recien StucKman :P
16:54 <dlitvak> tardes
16:54 b00tstr4p joined
16:57 <Facu> hola dlitvak
16:58 <Facu> enriquetaso, sí, es la forma de hacerlo: en los validadores generás una excepción en particular (o varias que hereden de una en particular) y luego en el que llama a los validadores capturás la(s) excepcion(es) y hacés cosas
16:59 <Facu> enriquetaso, y luego, en función de las cosas que hacés ahí, le vas agregando data a las excepciones
17:02 fuaa joined
17:03 <GeekHrafn> https://youtu.be/744vbJgwG_4
17:03 <lalita> GeekHrafn: [#15248] PBS Home Video - The Internet Show (1995) - YouTube
17:07 grafuls joined
17:08 <enriquetaso> Gracias Facu!! Me esta quemando medio feo porque hago un except general en el processor que hace un if para saber si tiene que agregar la excepcion a la lista de duplicados o no
17:12 <Facu> enriquetaso, esa lista de duplicados que decís es duplicated_msgs_by_type ?
17:26 fuaa2 joined
17:26 Darni left
17:31 D3f0 joined
17:42 D3f0 joined
17:47 acangiani joined
18:00 <enriquetaso> si
18:02 <Facu> enriquetaso, nos mata el delay (?)
18:02 <Facu> enriquetaso, ahí es donde entra el doble dict
18:03 <enriquetaso> el doble dict
18:03 <Facu> porque no hacés más duplicated_msgs_by_type[msg_type] += 1, hacés counter[type(err)][msg_type] += 1
18:03 <Facu> enriquetaso, ↑
18:04 <enriquetaso> aaaah, esta bien, al final me dijeron que lo resuma manejando la excepcion en el validator
18:04 <Facu> enriquetaso, asumiendo que el de duplicados sigue levantando DuplicatedMessageError (que ahora hereda de la única que hablábamos)
18:04 <enriquetaso> https://www.irccloud.com/pastebin/CusESfvS/
18:04 <lalita> enriquetaso: [#15249] Snippet | IRCCloud
18:05 <enriquetaso> aah claro, deberia manejar el 'duplicated_msgs_by_type[msg_type] += 1,duplicated_msgs_by_type[msg_type] += 1' dentro del validator.. tenes razon Facu
18:06 <Facu> enriquetaso, no, para mí es todo afuera del validador
18:06 <Facu> es la manera de no multiplicar código N veces si tenés N validadores
18:11 MalaLeche joined
18:21 celia joined
18:24 <enriquetaso> Facu++
18:25 <* Facu> le pasa un mate a enriquetaso
18:26 manuq joined
18:29 manuq_ joined
18:39 <Facu> GiLgAmEzH, en el meetup va a haber buena internet para el expositor? o algo inconfigurable con mil proxies? quizás una red para invitados? tengo que saber de antemano si voy a poder mostrar algo o no
18:49 <GeekHrafn> xD
19:04 samsagaz joined
19:25 nicolas17 joined
19:58 mguillech joined
19:59 daniel1 joined
19:59 <lalita> daniel1: Te damos la bienvenida a #pyar
20:00 <StyXman> dlitvak: che, decile a tu primo que deje de defender hackers: https://krebsonsecurity.com/2017/04/the-backstory-behind-carder-kingpin-roman-seleznevs-record-27-year-prison-sentence/
20:00 <lalita> StyXman: [#15250] The Backstory Behind Carder Kingpin Roman Seleznev’s Record 27 Year Prison Sentence — Krebs on Security
20:02 b00tstr4p joined
20:40 D3f0 joined
20:41 TheCoffeMaker joined
20:49 juantelez joined
21:05 carpediem joined
21:05 carpediem joined
21:13 <dlitvak> StyXman: jajaja wat?
21:13 <dlitvak> litvak es uno de los apellidos judios mas comunes jajaja
21:13 <dlitvak> https://www.wikiwand.com/en/Litvak
21:13 <lalita> dlitvak: [#15251] Litvak - Wikiwand
21:13 <StyXman> dlitvak: :)))
21:14 <dlitvak> https://www.wikiwand.com/en/Lithuanian_Jews
21:14 <lalita> dlitvak: [#15252] Lithuanian Jews - Wikiwand
21:36 Fr4n joined
22:20 sergiusens joined
22:25 nicoechaniz joined
22:32 D3f0 joined
22:33 D3f0 joined
22:33 D3f0 joined
22:34 D3f0 joined
22:35 D3f0 joined
22:35 D3f0 joined
22:36 b00tstr4p joined
22:36 D3f0 joined
22:37 D3f0 joined
22:38 D3f0 joined
22:39 D3f0 joined
22:56 <GiLgAmEzH> Facu: dejame preguntar y te aviso
22:56 <Facu> GiLgAmEzH, gracias
22:59 <GiLgAmEzH> Facu: mandé mail preguntando. el plan B si no necesitas traficar una cantidad de datos muy grandes es usar un celu con LTE
22:59 <GiLgAmEzH> ahi en microcentro anda bien
23:00 <Facu> GiLgAmEzH, no, es poco
23:01 <Facu> GiLgAmEzH, me interesa más que haya conectividad real, pero tampoco es crítico (si ya se de antes qué onda)
23:27 nicoechaniz joined
23:27 Fr4n joined
23:34 nicoechaniz joined
23:59 nicoechaniz joined