Facundo Batista: PyCon Ar 2015


La semana pasada se hizo la séptima conferencia nacional de Python en Argentina, la PyCon Ar 2015.

Fue en Mendoza. Un poco lejos para ir en auto o en micro, así que decidí en ir en avión. A nivel de costo era lo mismo, y la ganancia en tiempo era notable. Me permitió viajar el jueves, y volver el domingo, sin perder completamente ambos días o más.

Allá me quedé en un hostel, que siempre es más comunitario que un hotel, aunque menos privado. Pero bien. Fuí a Casa Pueblo Hostel, lindo y barato.

El evento se hizo en el Espacio Cultural Julio Le Parc, un lugar muy grande (que no estaba para nosotros sólos, obviamente). Tenía sus limitaciones (el viernes para el segundo track se hizo en un aula que siempre desbordaba) pero estuvo bien.

Algo para destacar es que teníamos el almuerzo resuelto (una vianda fría, abundante) muy al estilo de las PyCon yanquies. Y como allá, se almuerza en rondas en el piso, en el parque, en cualquier lado, porque se desborda cualquier capacidad de "asientos para comer". Me gusta lo de proveer la solución para el almuerzo, se resuelven un par de problemas de un mismo golpe: la gente no tiene que salir masivamente a buscar qué come y dónde, y de yapa no se demora en llegar al bloque de la tarde.

Dando la charla de Async en Py3

A nivel contenidos, la conferencia estuvo espectacular. Aproveché un montón de charlas: la de "Practical OpenCV" de Diego Ramirez estuvo interesante; "Encantando PythonES para masticar data" del gran Juanjo Ciarlante me enseñó un montón de cosas sobre map&reduce; la de "socket a asyncio en 45 minutos" de Marcos Dione me pareció super valiosa para dar en dos horas, le explicaría mucho a mucha gente; David Weil con "Es posible detectar las excepciones de un código Python" siempre con análisis interesantes super prácticos y de bajo nivel; Sofía Martin con "Tu primera aplicación con Kivy para móviles" mostrando lo fácil y directo que es hoy día hacer Python para Android; y "Cacheando fuera de Django" de Guillermo Narvaja, con tips e info basada en experiencia real.

Y estoy dejando afuera a las dos keynotes: Ashwini Oruganti hablando del futuro de Python y la PSF, y Simon Willison disertando sobre Microservicios. Bien, pero nada del otro mundo.

A nivel personal, dí dos charlas, una sólo y otra acompañado. Por un lado "Programación asincrónica en Python 3: el futuro ya llegó", que no era la primera vez que la daba y encima me quedé sin tiempo y faltó explicar muchos ejemplos. Pero a la gente le gustó (o al menos eso me fueron comentando). Y además dimos con Joac "No es magia: descriptores al desnudo", una charla sobre un tema tan complicado que creo que haberla dado en tiempo y mostrando todo lo que queríamos fue un éxito por si mismo. Y de nuevo, recibimos mucho feedback positivo.

Joac y myself dando la charla

El lado negativo de todo fue que fui a Mendoza, pero no paseé ni conocí nada. Ya volveré, claro que sí.

Juanjo Conti: PyConAr 2015

Voy a intentar contar y resumir mis experiencias vividas en PyConAr 2015; ya pasó más de una semana y eso hace que los recuerdos pierdan detalle.

Si bien ya hace varios años que no uso Python profesionalmente o, mejor dicho, en el día a día, siempre rescato su comunidad y me gusta, cuando puedo, participar en ella.

Jueves 12

Ya que las charlas empezaban el 13 y el 12 había talleres introductorios, no planifiqué llegar para el primer día. De hecho, en mi esquema original iba a llegar en colectivo el viernes a la mañana y volverme de la misma forma el sábado a la noche. Las circunstancias cambiaron y llegué en auto el jueves a la siesta. Luego de buscar hospedaje, tipo 16 hs, me llegué al Espacio Cultural Le Parc, donde se estaba desarrollando la conferencia.

Luego de intentar acreditarme en una conferencia sobre agua, encontré el stand de acreditación indicado y me acerqué al salón donde se estaba desarrollando DjangoGirls Mendoza, un tutorial que pretender llevar a personas (en principio mujeres [*]) con cero o poca experiencia programando a utilizar herramientas profesionales siguiendo los pasos de un tutorial. Cuando entré, no me di cuenta, pero estaba interrumpiendo: aproveché para saludar a Humitos, Marcos Dione, @EllaQuimina y CynCyn.

Al cerrar el evento nos fuimos a tomar algo a la calle Arístides Villanueva, donde están TODOS los bares y comedores en Mendoza.

Viernes 13

Las charlas estaba divididas en dos tracks, el amarillo en un salón circular y el azul en un aula normal.

Del primer día mis charlas preferidas fueron:

El día lo cerró Ashwini Oruganti con una keynote sobre el futuro de Python. No era una charla técnica y no trataba sobre el futuro técnico del lenguaje sino más bien sobre como hacer que la comunidad perdure en el tiempo. La slide final resumía la charla diciendo algo así como "El futuro de Python sos vos": así que salí a dar charlas, metete en proyectos, programá, preguntá, respondé, ayudá.

Sábado 14

El sábado arranqué temprano porque daba mi charla Qué extrañé de Python en los últimos 4 lenguajes en los que trabajé. Creo que el hecho de que sea la primera del día me jugó un poco en contra e hizo que no haya tantos asistentes como me hubiese gustado. De todas formas estoy conforme con como salió.

http://www.juanjoconti.com/charlas/missing-python/

De este día me gustaron:

La keynote final estuvo a cargo de Simon Willison y contó como migraron a microservicios en Evenbrite. La única charla que está filmada, gracias a Roberto Allende que la filmó desde el público.

Durante la conferencia, algunas empresas plantearon juegos o desafíos. Yo le dediqué algunas horas del sábado al de Machinalis que consistía en programar un bot en Python dentro de http://thewalnut.io que resuelva cierto problema. Por entretenerme con eso, me perdí una charla que me interesaba sobre cómo hacer aplicaciones para celulares con Kivy. Por suerte, acabo de encontrar las slides online: https://speakerdeck.com/entrerrianas/tu-primera-aplicacion-con-kivy-para-moviles

Antes de irnos, Machinalis anunció los ganadores de su concurso:

Más

En PyConAr hubo mucho más. Demasiado para un post. Rescato: las charlas relámpago y las charlas a la hora de comer o en el café.

[*] Si son hombre podés ir pero solo si llevás a una mujer.

Joaquin Tita: How to turn on "three finger drag" on Mac Os X

  1. From the Apple menu, choose System Preferences. 
  2. Click the Accessibility icon. 
  3. Choose Mouse & Trackpad from the options on the left. 
  4. Click Trackpad Options. 
  5. Place a checkmark next to "Enable dragging." 
  6. From the related pop-up menu, choose “three finger drag” so there's a checkmark next to it. 
  7. Click OK.

Marcos Dione: went-to-pycon.ar-2015

Last weekend I was at PyCon.ar at Mendoza, Argentina. As always, it was a good opportunity to find old and new friends; learn more about python, technology and more; and this time I even gave a talk.

I went to see several talks, but they were not recorded, so I have no links to videos to provide. The highlight for me was Argentina En Python's and DjangoGirl's Django tutorial. It was a very good taste of what the former are doing all over South America, which is simply incredible.

The talk I gave was actually heavily based/stolen from a talk by A. Jesse Jiryu Davis called How Do Python Coroutines Work?. I recommend you to watch it because it's amazing. That was one of the things I forgot to mention during the talk; the other one is that the classes Future and Task developed in the live-coding session[1] resemble a lot the ones the asyncio module offers, so their introduction is completely deliberate, even when they're swept under the rug quickly. Thanks to @hernantz, I was remembered of the article/book chapter that Davis and GvRossum wrote about asyncio.

I also used a lightning talk slot for promoting ayrton and showing a little Elevation. I just put the few slides online here.

So all in all, it was once more an amazing experience. Crossing my fingers, see you next year!


[1] The first rue about giving a talk is that you never do live coding. Some are just too stubborn...


python

Juanjo Conti: PyConAr 2015, la semana que viene, en Mendoza

La semana que viene, de jueves a sábado, es PyConAr 2015, la conferencia anual e itinerante de Python Argentina. Este año se hace en Mendoza.

No iba a ir: era lejos, tenía que planificar con anticipación y alguna otra excusa que me había puesto. Había mandado una charla y la habían rechazado.

Hoy recibí un mail en el que me decían que la mía había quedado como la primer charla suplente, que no había entrado por un pelito y que ahora había un slot disponible.

Así que: iiiiuuuuujjuuuu! Nos vemos allá!

PS: llevo libros de mi editorial Automágica (Xolopes, Santa Furia y La prueba...), que son ON TOPIC porque están maqueteados con Python, si alguno quiere uno, reserve por acá.

Juanjo Conti: Basado en hecho reales...

Un cuento basado en hechos reales...

¿Por qué no cojió esa nocho Guido Pividoni?

A Guido lo conozco de la primaria, pero hasta esa noche no lo había vuelto a ver.

Ya es más de media noche. Estoy llegando tarde al cumpleaños de mi prima y acelero por una avenida libre de autos con la esperanza de llegar a picar algo.

Increible, hice en menos de diez minutos el trayecto que de día me toma media hora.

Hay autos estacionados en toda la cuadra, excepto frente a las cocheras: las opciones son estacionar en la mano contraria o hacerlo tapando la entrada de la casa de mis tíos. Elijo la segunda y después de intentar entrar y volver a salir un par de veces, el auto queda estacionado más o menos donde debería. Camino por detrás del auto. La vereda en esa parte es extremadamente alta, tanto que para llegar desde la calle hay que subir una especie de escalón de un metro: doblo la rodilla y me impulso hacia arriba, con tan mala suerte que golpeo con la cabeza un canasto de basura que el Demonio colgó de uno de los árboles.

Siento el golpe, el repentino ardor. Al no saber qué me golpeó, instintivamente llevo mi cuerpo hacia abajo y termino apoyando las palmas de las manos en el suelo.

Me levanto y me toco la cabeza. Con la yema de dos dedos siento como una parte de cuero cabelludo se me levantó. Me miro la mano y está llena de sangre. Alcanzo a tocar el timbre y el que me abre es uno de los primos pequeños, uno de doce años. Me mira y después se da vuelta: “¡¡¡El tío Juanjo tiene sangre en la cara!!!”. Siento que me pongo pálido. Me acompañan hasta el baño y cuando me veo al espejo tengo media barba de pintura roja. Un par de manos acompaña la herida hasta abajo del chorro de la canilla y desde mi perspectiva veo como un litro de agua colorada se va al desagüe. “Tenemos que ir a una guardia”, dice alguien y cuando me doy cuenta estoy sentado en un auto camino al hospital más cercano. Presiono una toalla oscura contra la herida y siento como la patilla se me pone dura de sangre reseca.

En la guardia me preguntan mi obra social. Me siento a esperar. Cuando ambos brazos ya se me acalambraron de sostener la toalla me hacen pasar. La doctora escarba en mi cabeza para mirar y hace un gestito de dolor. “Te hiciste un siete, vamos a tener que ponerte unos puntos”. Me acuesto y me ponen anestesia local: “esto puede arder”, advierte. Luego, solo siento las sombras de los movimientos de la doctora. Siento la fuerza que hace para que la aguja atraviese mi cuero cabelludo pero no el dolor del pinchazo, siento como tira del hilo para ajustarlo pero es tan vaga la sensación que ni siquiera llego a contar cuántos son los puntos. “Acá podría hacerle un punto más”, dice la doctora. Y le pide un bisturí a la enfermera. Con ayuda del filo me corta un poco de pelo y completa el que dice es el quinto.

“Ahora la enfermera te va a poner la antitetánica”.

La doctora se va y nos deja solos. Ella mira la orden y dice para los dos con un poco de sorpresa: “ah… no es de las que se ponen en el brazo. Te debe haber dado esta para que haga efecto más rápido”.

Miro a la enfermera abrir el descartable y pienso: “¿Qué culpa tiene?”. “¿Qué culpa tiene la enfermera para tener que verme el culo peludo?”.

Salgo rengueando y vuelvo al auto. Ahora vamos a la farmacia a comprar los antibióticos, el material para higienizar la herida y la antitetánica para reponer la que usaron conmigo. Vamos a una de esas 24 horas. Hay dos personas haciendo cola, un viejo y una chica joven. Veo que alguien más quiere sumarse, así que acelero el paso y ocupo el tercer lugar. El que queda cuarto parece tener mi edad.

Llega mi turno y entrego la orden. El farmacéutico la mira: “Mmm, no che, una letra del nombre de la obra social está tachada, fijate, era una F y arriba le hicieron una D. Vas a tener que volver a que te corrijan la orden”. “¿De verdad?”, le digo con la mejor cara de poco amigo que puedo lograr e inclinando levemente la cabeza hacia delante para que me vea los vendajes.

“Dale loco... ¡es un centímetro de tinta!, ¿no podés darmelos igual?”.

Que sí, que no, retórica va, contra retórica viene. Le digo que los dos somos piezas muy chiquitas en un sistema que solo busca exprimirnos el jugo, que si no nos ayudamos entre tuerquitas, no nos ayuda nadie. Lo convenzo. O al menos yo creo haberlo convencido; es eso o decide atenderme solo por la cola de cinco personas que se formó luego de que estuviéramos discutiendo media hora. No importa, la cuestión es que mientras va recolectando los distintos items de mi lista se frena en uno. Trato de no mirar para atrás pero el murmullo de puteadas de los que están en la cola me empuja contra el blindex. “La antitetánica no dice la concentración”. No tengo idea de lo que me habla. “Si no dice la concentración te tengo que vender la de concentración mínima, pero para un adulto se suele usar la de 500. Tendrías que volver a la guardia y que te lo anoten…”. No termina de hablar. Sabe que después de lo de la obra social mal escrita esto es un detalle. Se acerca con la orden y un teléfono: “Acá está el número, llamá y preguntá”. Yo me atrinchero cerca del cuadradito del blindex para evitar que alguien ocupe mi lugar y llamo rápido, pido con la doctora y obtengo la confirmación. “Si, dice que 500”. Podría haber llamado al 110 y habría sido lo mismo.

El farmacéutico me entrega una bolsita con todo y le pago, pero antes de dejar mi lugar la reviso. “Che, una consulta, esto no es iodopovidona, ¿no?”. “A ver… uh, tenés razón, te estaba vendiendo otra cosa”. Le presto atención a la cara de dormido del farmacéutico y ante la duda vuelvo a revisar lo que me vendió, sobre todo los antibióticos. “Hay una diferencia de cuatro pesos”, me grita. “Bueno, dame unos caramelos de miel”, le contesto. Se queda mirándome. “No, vos me tenés que pagar cuatro pesos más”. “Ah… bueno, dale, sí, sí, no hay problema”. A esa altura ya somos casi compinches con el farmacéutico. Miro el reloj, ya pasó una hora desde que le entregue la orden. Me da el frasquito: iodopovidona. Povidona, povidona...

¡AHHHHHHH!, ya se de dónde me sonaba esa cara. Me doy vuelta. El que siguen en la cola es Guido Pividoni, de la primaria. Esa noche por fin había convencido a una compañera del trabajo y habían terminado en su departamento. Cuando ya estaban acostados ella lo frenó en seco: “No, sin forro yo no cojo”. Pividoni buscó en el cajón y no encontró nada. “Para, aguantame”, le dijo. “Bajo a la farmacia y en cinco minutos vuelvo, vos no te muevas de acá”.

puntos.jpg

Anoche tuve un pequeño accidente que disparó esta historia.

Manuel Kaufmann (Humitos): Lo que nos deja el fracaso

Aunque crean que mi vida es un éxito por la cantidad de proyectos, empresas, fundaciones y organizaciones que he fundado y las diferentes cuentas de banco que no dejan de aumentar diariamente sus activos (?); tengo que decirles algo:

Soy un fracasado

Estuve 4 días (de reloj -diría mi abuela) trabajando en configurar correctamente PAC, WPAD, Polipo/Squid dentro de la Red Libre y Portal Cautivo de PyFi Spot y, no lo logré.

Probé varias configuraciones diferentes y aquí dejo algunos comentarios para en un futuro no caer de nuevo en las mismas ideas:

  1. Polipo no soporta funcionar como proxy transparente

  2. Las únicas funciones soportadas dentro del archivo wpad.dat son las que figuran en su documentación. No se puede utilizar otras funciones que sí están implementadas en los Browsers cuando uno abre la consola de desarrollo. Por ejemplo, yo traté de utilizar XMLHttpRequest y no está disponible.

  3. Una buena forma de debuggear nuestro archivo PAC es utilizar estas herramientas:

    • pacparser
    • En Google Chrome, ingresando a chrome://net-internals/ y luego a la sección de Proxy y Events. Dentro de Events uno puede ver qué archivo wpad.dat está bajando y si da algún error al ejecutarlo.
  4. Para que WPAD funcione a la perfección por DNS debemos configurar las siguientes cosas; teniendo en cuenta que nuestro dominio es "redlibre":

    • Nuestro DNS debe resolver wpad.redlibre a la PC que tiene ese archivo.
    • Nuestro Web Server debe entregar ese archivo.
    • Mediante http://wpad.redlibre/wpad.dat debo poder descargar el archivo wpad.dat. Esto es lo que busca Firefox (lo dice la práctica).
    • Mediante http://wpad/wpad.dat también debo poder descargar el archivo. Esto es lo que hace Google Chrome (lo dice la práctica)
  5. Tinyproxy no tiene función de caché.

  6. La única forma que encontré de hacer un proxy transparente es con Squid y esta regla de iptables. Además, me sigue redirigiendo al Portal para loguearme:

    $IPTABLES -i $IFACE_HOSTAPD -t nat -A PREROUTING -m mark ! \
        --mark 99 -p tcp --dport 3128 -j REDIRECT --to-ports 80
    

    Esto quiere decir, básicamente, que todo lo que entra por $IFACE_HOSTAPD y no está marcado como 99 y es TCP y va al puerto 3128 -> lo redirigimos al puerto 80 de la misma máquina.

  7. Nadie sabe en qué momento los navegadores hacen un GET del archivo wpad.dat. Sin embargo, por lo general lo hacen al abrirse o al forzar su recarga desde algún lugar oscuro de la interfaz. Aunque, por otro lado, Google Chrome lo pide periódicamente cada un cierto tiempo desconocido.

  8. Cualquier cabecera HTTP que tenga que ver con Caché no es respetada por Firefox ni Chrome. Implementé una versión de wpad.dat que era generada con Flask + Jinja2 dependiendo del IP que la solicitaba y no logré hacer que no cachee su contenido utilizando Pragma y Cache-Control de varias formas y combinaciones.

  9. Google Chrome en Linux no "auto descubre" el proxy. Viene con esa configuración deshabilitada (al menos en Xubuntu 14.04). Entonces, para que auto descubra el proxy hay que llamarlo así:

    google-chrome --proxy-auto-detect
    

    Por lo que, tener una "auto configuración" de proxy en una red que muchos van a tener Linux y usar Google Chrome, es una estupidez. Firefox, por default, viene bien configurado.

  10. La función myIpAddress() dentro del archivo PAC devuelve algo muy diferente en Firefox (mi verdadero IP dentro de la red en la que estoy) y Google Chrome (127.0.1.1). Por lo tanto, no es confiable y no debería usarse.

  11. Parece que si instalás un paquete en Linux, Google Chrome comienza a obtener correctamente el IP utilizando la función anterior:

    sudo apt-get install libnss-myhostname
    
  12. Hay una función myIpAddressEx() (notar el Ex en el nombre) que no alcancé a probar porque ya estaba muy hinchado los huevos; pero que supuestamente funciona.

  13. Ah! agregale otro tema al myIPAddress(): los MS Windows 8 te devuelve la dirección de IPV6!!!

    —César Ballardini

  14. El Content-Type del archivo PAC debe ser application/x-ns-proxy-autoconfig porque sino puede ser que algunos browsers no lo utilicen.

  15. alert() y console.log() dentro del archivo PAC no tienen ningún efecto. "No insista".

César me estuvo ayudando muchísimo, sobre todo con las ideas de cómo implementarlo y qué probar para poder llegar a buen puerto. Sin embargo, creo que ambos nos cansamos de dedicarle tiempo y esfuerzo a algo que está demasiado mal implementado y se rompe por todos lados. Sinceramente, creo que no hay un standard bien creado.

PAC y WPAD anda si lo ponés en una maceta y no dejás más que una plantita a la cual cuidas con mucho esmero, y cuando crece la arrancás para que no sea diferente.

—César Ballardini

Y yo me despedí de él así:

Te lo digo así: PAC, WPAD, Google Chrome, Firefox e Internet Explorer se pueden ir bien a la mierda. No puedo creer que esta gente haya inventado una tecnología tan pero tan mala para auto-configurar un proxy de mierda. Que no respete estándares y que sea tan difícil de debuggear.

Acordate bien de esto: ¡estos tipos son unos hijos de puta!

—Manuel Kaufmann

Entonces, borré todo lo que hice, desinstalé Polipo, Tinyproxy y Squid. Además, borré el archivo wpad.dat y mandé todo al carajo. No tiene sentido implementar algo que es tan inestable. Para lo único que simple todo esto es para tener algo demasiado-muy sencillo, esa plantita a la que hace referencia César.

Espero que la siguiente persona que quiera configurar PAC y WPAD llegue a este artículo antes de aventurarse en esto y terminar siendo un fracasado más.

Facundo Batista: El rumbo tan temido


Me gustó mucho la editorial de Eduardo Aliverti, en Marca de Radio del sábado pasado.

Me gustó porque se explaya un poco en conceptos que comparto, pero bien contado, mostrando lo que me parece que sería el rumbo si gana la derecha (a.k.a. Macri) en Argentina.

Acá pongo unos parrafitos centrales, pero pueden acceder al texto completo o incluso al audio.

Lean, por favor, que al final del post hago un par de preguntas...

Van a devaluar a lo pavote para recomponer la maximización de la renta agropecuaria exportadora. Van a satisfacer a una burguesía que es local, no nacional. Van a bajar la demanda por vía fiscal y monetaria, van a desregular el mercado cambiario, van a producir la caída del salario real, van a destruir a las pequeñas y medianas empresas, aumentará el desempleo y el trabajo informal y al final de la película que ya vimos y sufrimos chiquicientas veces van a reprimir y se fugarán de nuevo en helicóptero pero con su plata bien pipona.

Los científicos volverán a lavar los platos, a los pobres les mantendrán la AUH pero la cobrarán el día del arquero porque desfinanciarán al Estado como motor del consumo, los sectores medios se encantarán con ese comienzo de dólar para todos para más tarde o más temprano ir a reventar las puertas de los bancos, las empleadas domésticas tendrán que cantarle a Gardel en el reclamo de sus derechos adquiridos, los que tienen una pyme de producción quedarán en la lona por invasión de importados y los que la tienen de servicios sufrirán que no les pueden pagar la cuota o la tasa de lo que sea porque la gente se quedó sin laburo.

La inflación descenderá, eso sí, pero entonces habrá de preguntarse, otra vez, créase o no, para qué sirve que baje si no hay ni salario real ni empleo. Habrá ese período inicial de espejitos de colores porque, seguro, aparecerán los dólares que tienen guardados en las silobolsas (unos 10 mil millones, según cálculos aceptados por interesados y especialistas) y, grandemente probable, los que provengan de un nuevo endeudamiento internacional para engordar reservas.

No es tan sencillo como se lo expresa porque hay también reservas que no son monetarias sino sociales, y aun cuando ganaran en las urnas tendrán enfrente a una potencia movilizadora, combativa, nada despreciable.

Pero el rumbo es ése.

Si llegaron hasta acá, gracias por acompañarme :)

Entonces, creo que todos caemos en tres alternativas, luego de haber leido estos párrafos...

  • Aliverti está equivocado, las cosas no van a ser así si gana Macri
  • Está en lo cierto, y es un bajón
  • Está en lo cierto, y es el modelo ideal de país ideal

A mí me parece (como anticipé al comienzo), que está en lo cierto, y que es un bajón.

Aunque Scioli no me representa, y creo que habría que marcarle la cancha muy bien, me parece que más o menos va a seguir llevando el país por el modelo de los últimos años. A Macri, sin embargo, le tengo pavor.

Vos, ¿de qué lado estás?

GiLgAmEzH: HowTo (stress)test a website with Apache Benchmark

Hoy por la mañana @reydelhumo queria probar un sitio que tiene en una raspy, yo le recomendé que use ab para hacer algunas pruebas básicas de load.

Usar ab es muy simple, pero es mucho más lindo poder hacer gráficos de los resultados, así que aproveché el momento para armar este post.

El objetivo es poder hacer varios tests contra una URL usando diferentes valores de concurrencia/cantidad de requests y gráficar la salida.

Primero hay que ejecutar las pruebas con ab:

ab -c 3 -n 100 -v 2 -g out1.tsv -H "Accept-Encoding: gzip,deflate"  http://python.org.ar/

Esa configuración significa:

  • -c 3: concurrencia 3
  • -n 15: 15 request
  • -v 2: verbose (muestra los headers)
  • -g out1.tsv: salida para gnuplot
  • -H -H "Accept-Encoding: gzip,deflate" Hacer requests con gzip (igual que cualquier browser)

La idea es repetir N veces la prueba con los mismos parametros renombrando outN.tsv.

Yo ejecuté tres pruebas:

/tmp  ll out*.tsv
-rw-r--r-- 1 gilgamezh users 4934 Oct 31 11:26 out1.tsv
-rw-r--r-- 1 gilgamezh users 4930 Oct 31 11:26 out2.tsv
-rw-r--r-- 1 gilgamezh users 4936 Oct 31 11:27 out3.tsv

Cada una nos da una resumen con una salida, pero mucho mejor ver un gráfico. Con gnuplot es muy simple.

Yo uso un template que edito cada vez:

# output as png image
set terminal png

# save file to "benchmark.png"
set output "benchmark_python.org.ar.png"

# graph title
set title "Benchmark en python.org.ar"

# aspect ratio for image size
set size 1,1

# enable grid on y-axis
set grid y

# x-axis label
set xlabel "Request"

# y-axis label
set ylabel "Response Time (ms)"

# plot data from bench1.tsv,bench2.tsv and bench3.tsv using column 10 with smooth sbezier lines
plot "out1.tsv" using 10 smooth sbezier with lines title "Benchmark 1:", \
     "out2.tsv" using 10 smooth sbezier with lines title "Benchmark 2:", \
     "out3.tsv" using 10 smooth sbezier with lines title "Benchmark 3:"

Es un poco precario porque hay que editarlo a mano con el nombre de los .tsv. Algún día me voy a tomar el tiempo de automatizar todo. ;)

lo guardo como gnuplot.template y ejecuto:

gnuplot gnuplot.template

Y listo! tenemos nuestro gráfico. (sí hay que tener gnuplot instalado. en Arch el paquete se llama python-gnuplot)

/images/benchmark_python.org.ar.png

Por ejemplo la conclusión de esta prueba es que python.org.ar necesita un caché de frontend :)

Juanjo Conti: Goodreads review: Mas cuentos de los viudos negros (Isaac Asimov)

Muy entretenido. Muy Asimov.
En la edición pirata/epub que leí en el celular, el cuarto cuento estaba mal editado y lo pasé. El último me pareció muy denso y salté las últimas páginas :D Cada cuento tiene un epílogo con comentarios del autor. Esto es, tal vez, lo más interesante del libro.
Debería haber empezado por el primero de los libros de la saga, pero el autor dice que no es necesario.

Rating: 3/5

Original: https://www.goodreads.com/review/show/1418550444