domingo, 29 de mayo de 2016

Reproducir simultameamente varios mplayer

Hello again!

Esta vez quiero comentar un pequeño truco/hack/dato sobre mplayer (un reproductor por consola). Resulta ser que mplayer normalmente no se banca que lo pases a background (segundo plano) asi como asi con &.

mplayer movie.mkv & #esto no anda

Por si queres correr dos vídeos simultáneamente tenes que definirle el input y output con las flechitas <>:
  
mplayer movie.webm &>/dev/null </dev/null & mplayer movie.avi &>/dev/null </dev/null & #esto te abre las dos ventanas juntas y te libera la terminal

Es una forma muy copada de comparar distintos encodings.

Bueno, fue corta la primavera y tengo que volver a mi nihismo existencial constante.

Bye!

Anoche, bandas, amigos y nada


 Porque no tengo ganas de escribir ni armar un articulo, solamente dejar una marca mas en el blog. Porque realmente no tengo nada que decir realmente, porque las noches son todas distintas pero los sentimientos siempre iguales. 
Porque no quiero ponerme a leer los apuntes. 
Porque me siento un pendejo depresivo de vuelta.
Porque si y porque no.

Un par de fotos y un adiós.

jueves, 26 de mayo de 2016

Graph Data: Les miserables

https://plot.ly/~chelsea_lyn/9211/network-of-coappearances-of-characters-in-victor-hugos-novel-les-miserables-3d-v/#plot

martes, 10 de mayo de 2016

Listar funciones de un modulo en python

Puede sucedernos en algun momento que necesitemos saber que funciones contiene una clase o modulo de python para, por ejemplo, comparar clases o saber si podemos usar tal o cual funcion. 
En principio existe un atributo de todo objeto en python que es COSA.__dict__ que contiene tanto las funciones como otras informaciones que podrían molestar por momentos. 

Para filtrar el resultado de __dict__ podemos usar ciertos artilugios, para mostrarlo empecemos por crear una nueva clase con solo dos funciones:

>>> import types
>>> class Foo:
...     def F1(): pass
...     def F2(): pass
...
 

El atributo __dict__ nos devuelve demasiada información innecesaria
 
>>> Foo.__dict__
{'F1': <function F1 at 0x7f9cc85b07d0>, '__module__': '__main__', 'F2': <function F2 at 0x7f9cc85b0848>, '__doc__': None}


Podemos filtrar los elementos que no deseamos y retornar solo los nombres.

>>> [a for a in Foo.__dict__ if isinstance(Foo.__dict__.get(a), types.FunctionType)]
['F1', 'F2']
>>>

Espero que les haya sido de utilidad y hasta otro momento.

Saludos!

lunes, 9 de mayo de 2016

Multiples botones submit en HTML

Suele suceder que tenemos una forma con varios parametros pero al momento de realizar la accion podemos aceptar, cancelar, guardar, eliminar, etc ... 

Una forma de lograr este cometido es usando multiples botones de submit (enviar) en una forma con una variable. 

<input type="submit" name="action" value="Update" />
<input type="submit" name="action" value="Delete" />

De esta forma la variable action va a contener lo que queremos hacer. 
El problema con esto es que el nombre de la accion va a ser lo mismo que 
se muestre, alternativamente podemos usar distintas variables de forma 
tal que el texto mostrado no tenga que ser reflejado en el codigo.
 
<input type="submit" name="update_button" value="Update" />
<input type="submit" name="delete_button" value="Delete" />
 
Esto es interesante si deseamos cambiar, por ejemplo, el idioma de la pagina.
Del lado del server lo que tendriamos que hacer seria una simple comprobacion de
la variable que decidimos usar. 

Espero que les sea de utilidad y hasta la proxima!
 

viernes, 6 de mayo de 2016

Escalando matriz de puntos

Saludos compañeros !

En esta ocasion vamos a ver como se puede escalar una matriz de puntos (x,y).

Pero primero, a que le llamamos "escalar"? Supongamos que tenemos un monton de puntos sueltos en un espacio indefinido, podriamos tener uno en (0, 1) y otro en (34235, 54234). Pero como eso es bastante dificil de graficar vamos a darles unas diensiones mas normales, digamos 100x100. Asi lo que querriamos de output es una matriz con valores entre 0 y 100 sin perder las proporciones de los puntos.


Vamos directo al ejemplo!

>>> a = [(1,6), (2,5), (3,4), (34,42), (32,12)]
>>> x_mx=max(a, key=lambda x: x[0])[0] # esto se explica aca!
>>> y_mx=max(a, key=lambda x: x[1])[1]
>>> x_img=100
>>> y_img=100
>>> map(None, map(lambda x: x[0]*x_img/x_mx, a), map(lambda x: x[1]*y_img/y_mx, a)) # vamos a ir desglosando esto abajo...
[(2, 14), (5, 11), (8, 9), (100, 100), (94, 28)]


El operador map de python es extraordinario para trabajar con arreglos, en escencia lo que hace es aplicar la funcion que tiene como primer parametro a cada elemento de una lista (como un for abreviado). Y si tenemos dos o mas listas las une.
Esta sentencia: map(lambda x: x[0]*x_img/x_mx, a) simplemente aplica la vieja y querida regla de tres simples a cada elemento, donde x_img es el tamaño que deseamos obtener. Analogamente se ejecuta sobre el eje y.
La sentencia por fuera: map(None, x... ,  y... ) simplemente une ambos arrays para obtener el resultado.


Y como diria algun viejo personaje de dibujos animados, ee-e-e-eso es todo amigos !

Saludos y hasta la proxima!


Python maximo elemento del eje

Buenas a todos, y por supuesto, a todas. Hoy justo estaba probando algo que me parece bastante importante comentar.

En python si queremos obtener el mayor elemento de una de las filas de una matriz podemos usar la funcion max con un argumento que seleccione la fila deseada.

No tiene mucho sentido dicho asi ? Vamos directro al ejempo!

>>> a = [[1,6], [2,5], [3,4]] #array de puntos en el plano x, y
>>>max(a, key=lambda x: x[0])[0] #coordenada x mayor
>>>max(a, key=lambda x: x[1])[1] #coordenada y mayor

La importancia real de conocer este simple truco radica en que se usan funciones estandard que no dependen de ningun paquete, a diferencia de numpy.amax que cumple una funcion muy similar.

Gracias por leer y hasta la proxima!