Personalizando Scripts en función del SO GNU/Linux


Soy de esas personas que utilizan varias distribuciones GNU/Linux constantemente y por lo tanto a menudo los scripts de una no me valen para la otra. El ejemplo más tonto. Ubuntu/Lubuntu/Kubuntu/Elementary Os etc, crean un usuario con poderes de superusuario para realizar tareas administrativas. En cambio Debian, Fedora, etc proveen del usuario root para este tipo de tareas.



"Imagen aleatoria por que quedaba chachi"


Esto supone un problema, ya que un simple apt-get install a la hora de instalar cien paquetes por ejemplo en Ubuntu le precede un sudo que en Debian no se utiliza por defecto.

Como buen amante del arte y de Python hay librerías como Pillow con las que me gusta trastear. El problema reside en que Pillow require unas librerías que mientras en un lugar se instalan de una forma en otro se instalan de otra.

version=`cat /etc/issue | cut -d " " -f 1`

if (( $version == "Ubuntu" ))
 then
 sudo apt-get install libjpeg-dev libfreetype6-dev zlib1g-dev
 pip install Pillow

elif (( $version == "Debian" ))
 then
 su -c "apt-get install libjpeg-dev libfreetype6-dev zlib1g-dev"
 pip install Pillow
else
 echo "Este script no es compatible con tu SO"
 echo "Las dependencias que necesitas para instalar Pillow son: "
 echo "libjpeg-dev libfreetype6-dev zlib1g-dev"
fi

 Así que dando vueltas y trasteando un ratito pensé en obtener la información de donde estaba de /proc/version y en función de esto determinar la forma de instalación. Pero siendo precisamente para hacer la distinción entre estos dos sistemas era más sencillo utilizar el primer dato de /etc/issue que nombra la distribución -al menos en el caso de Debian y Ubuntu-.

De esta manera almacenamos en version el SO usado y en función de él le decimos unas instrucciones u otras :)


Como siempre Un fuerte abrazo!

Y Feliz Navidad ;) !


Hola! Soy un Google Bot

Como bien sabemos, cuando accedemos a una página enviamos una serie de información al servidor por medio del User-Agent entre la que podemos encontrar Navegador Web, versión, sistema operativo, procesador x86 o x64.

Esta información es muy útil ya que ayuda a determinar que aplicación está visitando la página web. Si es un usuario de Mac con Opera o si por ejemplo, es un bot de google. De esta forma puede saber si la versión de la página es compatible con ese navegador o amueblarla para que sea compatible con el mismo.

Lo interesante o "gracioso" es que esta información es modificable. Es decir, yo que uso firefox en GNU/Linux normalmente puedo hacerme pasar por un bot de Google o por un usuario de Edge en Windows 10 a pesar de estar en Debian, Fedora, etc.


Hay una extensión para firefox denominada user agent switcher que nos permite realizar este tipo de cosas.


Desde ella, podemos añadir nuevos User-agents como el de google bot.

La información del user agent del google bot la he obtenido accediendo a la página whatsmyuseragent.com Desde la caché de google, de forma que los datos que aparecieran fueran los que le aparecerían al propio bot de google que es el que almacenó la página en caché.

El user-agent de googleBot es el siguiente:

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)


Búsqueda de google desde el User-Agent de Firefox



Búsqueda de google desde el User-Agent de GoogleBot


¿Notáis alguna diferencia?


Como se puede observar hay ciertas páginas que se adaptan en función de la aplicación con la que se visiten. Por ejemplo, a la hora de escribir esta entrada si cargo la página con el User Agent de Google me avisa de varios errores y después al pasar a la pestaña de HTML no me da la opción, me tira a un error 404.

Una idea interesante, sería al usar TOR con Tails usar el User Agent de Edge en Windows 10 para que nuestro rastro en la mayoría de servidores quede ante un sistema Windows del que carecemos. 

De cualquier forma no es ninguna tontería la idea de usar un User-Agent distinto ya que al hacer estadísticas a menudo se descartan los datos provenientes de bots obteniendo así un resultado limpio de personas que utilizan la aplicación.


Un fuerte abrazo!

Comparativa Windows 10 Mac Os X Elementary Os y Debian

Llevo ya algún tiempo queriendo hacer algo de este estilo y antes de comenzar con este post me gustaría recalcar que todo lo dicho es basado en experiencias personales.

Hace un año quise hacer justo esta pequeña reflexión/comparación como consejo pero consideré que aún no había tenido la experiencia necesaria para poder reflejar todo lo que a un usuario podría -tal vez- interesarle a la hora de decidirse.


Windows 10


Pantallaso.png
«Pantallaso» por Henryleonardo92 - Trabajo propio. Disponible bajo la licencia CC BY-SA 4.0 vía Wikimedia Commons.


En ese afán de superación solo digno de microsoft y sus ideas innovadoras se incluye la capacidad -muy practica, honestamente a la hora de trabajar con muchas cosas- de varios escritorios. Innovación que ya existía en distros como Ubuntu 12.04 e imagino -pero no aseguro por no haberlo experimentado- en anteriores. No obstante es un buen punto a Windows que siempre ha sido caracterizado por ser un sistema operativo para juegos. En teoría en esta nueva versión de actualización gratuita durante el primer año de lanzamiento si tenemos Windows 7 u 8 originales han incluido nuevas mejoras de seguridad. Así como un rediseño de la interfaz mezclando el clásico menú de inicio con la interfaz metro de Windows 8. Algo así como lo que muchos intentaban realizar con el programa classic start.
El sistema operativo de los gamers trae también a su propia chica robótica, Cortana que vendría siendo algo así como Siri en Mac.



Mac Os X

Logo de OS X El Capitan
«OS X El Capitan logo» por Apple Inc. - http://www.apple.com/osx/elcapitan-preview/. Disponible bajo la licencia Dominio público vía Wikimedia Commons.



En una esfera de la sociedad donde gastarse 1200 euros en un ordenador para navegar por internet en la mayor parte de los casos tenemos a este lugarteniente del diseño por quién me inclino más a la hora de trabajar. -Los linuxeros tendemos a movernos mejor en un sistema proveniente de Unix-.

Entre sus datos más destacables está el hecho de tener el sistema operativo hecho a medida del hardware, hardware también propietario y exclusivo de mac en algunos casos. -Si se te rompe una pieza, se te romperán los bolsillos de tanto rascarlos-

Apple es destacado por su servicio de atención al cliente lo que en el mundo laboral valoramos mucho. Cuando tienes que sacar un producto no tienes tiempo para estarte con tonterías. No obstante y un dato curioso, es que según parece Fedora, la hermanita de RedHat, corre mejor en un mac que su propio sistema operativo.Fedora 23 vs Mac OS X El capitán

Lo único que puedo decir es que Mac para el desarrollo Web, es una completa gozada. Pero casi que me quedo antes con Elementary por Precio, Similitud y el hecho -nada despreciable- de sentirme como en casa al estar en un entorno GNU/Linux. Destacaría de Mac los tiempos de sus últimos discos SSD. Una completa maravilla cuando nos prima la velocidad y nuestra imagen de cara al exterior -mero postureo nada despreciable en el ámbito laboral cuando se trata de vender un producto- queda muy bonito tener una manzanita.

Además contamos en la mayoría de los casos con los mismos programas que podríamos tener en Windows.


Elementary Os Freya


Para todos aquellos amantes del diseño este sistema proveniente de Ubuntu nos trae el escritorio Pantheon. Un escritorio, que a opinión personal, enamora.

Muy similar el estilo maquero de hacer las cosas es una distro muy centrada en el diseño que dice consumir poco. No obstante y aunque obtiene los paquetes directos de Ubuntu 14.04 la estabilidad no es algo que le premie, al menos no con bajos recursos (1GB RAM)

A falta de suites como Adobe y programas como Autocad disponibles en Windows y Mac tenemos otros similares como Gimp o Krita para sustituir a Photoshop, Eclipse, Sublime Text, BlueFish como sustituto a Dreamweaver, KidKad -entre otros- como sustituto, gratuito además, de Autocad, etc. Esta distro es tal vez perfecta para un uso familiar o incluso laboral como autónomo pero por mi experiencia con ella aún hay cosas importantes por pulir en las que me centraría antes de intentar mejorar el aspecto visual más aún.

Geary, por ejemplo, programa que viene instalado por defecto a pesar de darte la opción de agregar una cuenta de gmail no está actualizado a las últimas políticas de google por lo que para acceder a tu cuenta debes de bajar la configuración de seguridad de la misma.

No obstante para usuarios comunes es una maravilla. Interfaz adorable -nótese mi encanto con el diseño-, no hay temas de licencias -ya sé ya sé que muchos me diréis pero si Windows es gratis y aunque os sorprenda: no es así. Lo que es gratis es piratearlo y ya sabéis eso de lo gratis sale caro-, tiene el market de ubuntu integrado por lo que cualquier usuario puede instalar y desinstalar paquetes al puro estilo app store de android.

Un dato a mencionar es que por defecto no hay ninguna suite ofimática instalada pero se puede instalar libreoffice desde el propio market de manera gratuita.

Debian, la alternativa estable

Cuando la estabilidad es un factor decisivo y el hecho de que exista la posibilidad de que algo se pueda colgar durante unos segundos es un problema realmente serio.

A lo largo de mi vida Linuxera he trabajado con muchísimas distros que he ido probando y degustando y aprendiendo y trasteando y bueno... todas esas cosas que todo curioso informático hace. Comencé a programar -  a trastear más bien, no creo que a aquello se le pudiera llamar programar - en un Windows XP hace 6 años con C y Python. Hace un poco menos de 4 mis disco duro se rompió -un duro golpe contra el suelo- y me llevó a instalar otro sistema operativo en uno nuevo. Ubuntu 12.04. En el 2013 probé Debian después de una sucesión incontable de distribuciones. Fedora, CentOs, OpenSuse, Puppy Linux, Damn Small Linux -nótese mi gusto minimalista-, etc. Desde entonces nunca y repito nunca se me ha colgado.

Fiel a la rama main -rama estable y más que probada y reprobada- nunca he tenido un solo fallo y los progamas digamos más actualizados en ocasiones puntuales los he cogido de otras ramas como testing.

También es cierto que me he cargado el entorno de escritorio unas 30 veces trasteando con la terminal mientras aprendía. Por lo que quizás Debian sea para un público con unos conocimientos técnicos básicos, al menos unas nociones sobre instalación y desinstalación de paquetes, repositorios, claves gpg, etc...

En Debian tengo entendido que podemos instalar el escritorio Pantheon de elementary y así tener lo mejor de ambos mundos. Por lo que resulta una alternativa bastante interesante, eso sí, tendremos que trastear un poco.


EDICIÓN
Tras probar Debian con el escritorio Pantheon tuvo una serie de fallos que se acentuaron con el tiempo. Los mismos que trae Elementary y necesitan ser pulidos. De hecho me llevaron hasta el punto tan extremo de tener que eliminar Pantheon y restaurar todo o reinstalar Debian.

Una alternativa -que imagino que en Debian será idéntica pero lo he probado en esta ocasión en un Lubuntu que ya traía OpenBox de fábrica. Es tunear un poquito OpenBox obteniendo así los siguientes resultados en el caso en el que nos guste el estilo maquero:

 

 Las imágenes mostradas en las capturas de pantalla, tanto fondo de pantalla, como splash art, como iconos, no son de mi propiedad y pertenecen a sus respectivos dueños.

Para darle ese estilo he usado OpenBox de gestor de ventanas, cairo-dock de dock y un tema que traía de mac y nitrogen para poner los fondos de pantalla.

De esta forma digamos que podríamos tener un estético Mac con toda la funcionalidad y seguridad de un equipo Linux. Además de que OpenBox consume muy pocos recursos como gestor de ventanas.
 

He intentado, dentro de mi subjetividad -ya que no dejan de ser experiencias personales altamente subjetivas- ser lo más objetivo posible con las cosas que de facto he considerado relevantes.  Sé que muchos fanboys de Mac o de Windows o incluso de distros Linux creerán que sus sistema es el mejor y es insuperable y no hay que hacer ninguna comparativa por que no es necesario pero jajaj... creo que no tengo que decir nada al respecto.




Como siempre, un fuerte abrazo.

No me hagas reir tanto por favor

Por favor, clic en la imagen para agrandar

Creo que sobran los comentarios tras esta imagen de un anuncio que me apareció consultando desde un Lubuntu 15.10 unas dudas en un foro de desarrollo web.

Deberíamos descargarlo no? Hay que solucionar esos errores de Windows pero son tantos... no sé si podrá con todo jajaj.


Necesitaba hacer un post con esto. Ay, que risión.

Un abrazo!

Proyecto para la difusión de la palabra y apertura del pensamiento hecho en Python

La razón por la que he estado ausente/desaparecido tantísimo tiempo del blog


En Mayo/Junio comencé un proyecto a modo reto informático. Siendo Python mi lenguaje nativo, nunca lo había utilizado para el Desarrollo Web. Por ello quise hacer -mientras aprendía como hacer- un proyecto que siempre me había hecho ilusión tener, una revista.

Pero una revista... ¿de qué? De todo lo que merece ser escuchado.  Así seguí con la propuesta de la revista y con la oportunidad de generar un nuevo movimiento. Algo así como los escritores de la generación del 27 pero en un ámbito más global y con una meta: otorgar a la palabra y al pensamiento elaborado la difusión que se merece. Mejorar, de alguna manera el mundo al tratar de abrir mentes al compartir ideas, pensamientos, artículos que de otra manera se hubieran limitado a un tweet de 140 caracteres o a una charla perdida en el viento y borrada con el transcurso del tiempo.

A finales de Junio le comenté la idea a mi fiel compañero Adrián, quién entonces estaba terminando el primer curso de Filosofía en la universidad autónoma de Madrid. No solo le pareció una gran idea sino que además ayudó a conceptualizar esta serie de ideas y expresarlas de alguna forma en el manifiesto. Fue tan grande su aportación y ayuda en todo que pasamos a ser conjuntamente directores de una revista en la que invertimos muchísimo trabajo.

Aproximadamente hará un mes lanzamos la revista y día de hoy está en un periodo en pruebas a nivel informático en el que iremos añadiendo o corrigiendo cosas pero ya se puede comenzar a utilizar.

Para los curiosos sobre el apartado técnico de la plataforma está hecho en Python + Flask,  para la edición de artículos antes de ser publicados utiliza el editor de texto tinymce. http://www.tinymce.com/ y corre sobre GNU/Linux

Para terminar dejo el manifiesto de dicha revista para todo aquél que desee saber más http://lapiceroblanco.com/manifiesto

Un fuerte abrazo.



Curso matplotlib - 7 - Cargando datos desde un fichero

En esta ocasión aprenderemos como cargar los datos desde un fichero como puede ser un fichero csv.
Un fichero csv está ordenado por líneas y datos separados por un delimitador que por estandar suele ser el delimitador ','.



Para esto podríamos utilizar la librería csv o más sencillo la libreria numpy que hay que instalarla por medio de pip install numpy.

Una vez instalada el código necesario para representar los datos es más bien escaso:

import matplotlib.pyplot as plt
import numpy as np

x, y = np.loadtxt('data.txt', delimiter = ',', unpack = True)
plt.plot(x, y)
plt.xlabel('')
plt.ylabel('')
plt.title('Curso MatPlotLib\nblog.curiosoinformatico.com')
# Para añadir etiquetas o cualquier otra cosa debemos hacerlo antes de llamar a
# plt.show()
plt.show()

Y con esto y un bizcocho ya habremos terminado de representar nuestros valores.
El código como siempre está disponible en el drive del curso

Anterior Siguiente


Un fuerte abrazo!


Curso matplotlib - 6 - Diagrama de sectores

Para realizar el siguiente ejercicio vamos a partir de un código base:

import matplotlib.pyplot as plt



Al siguiente código le añadiremos las fracciones o dicho de una forma más informal, los quesitos, las actividades a las que se corresponden y los colores.


fracciones = [6, 4, 2, 3]
actividades = ['Durmiendo', 'Comiendo', 'Trabajando', 'Jugando']
colores = ['g', 'r', 'b', 'y']



Finalmente le diremos a matplotlib que dibuje nuestro diagrama de sectores:

plt.pie(fracciones, labels = actividades, colors = colores, shadow = True, startangle = 0, explode = (0, 0.1, 0, 0))

Los parámetros marcados en negrita son parámetros opcionales como vienen siendo el ángulo de inicio, el sombreado del diagrama y la extrusión de los elementos. En este caso al primer elemento Durmiendo le hemos dicho que su extrusión es 0, el segundo, comiendo le hemos indicado que 0.1 y así sucesivamente. Con todos las cosas opcionales marcadas previamente nuestro diagrama de sectores debería quedarnos como en la siguiente imagen.







No bastando con eso podemos añadir un porcentaje por medio del argumento autopct = '%1.1f%%'.
El código final debería ser similar a este:

import matplotlib.pyplot as plt

fracciones = [6, 4, 2, 3]
actividades = ['Durmiendo', 'Comiendo', 'Trabajando', 'Jugando']
colores = ['g', 'r', 'b', 'y']

plt.pie(fracciones,
        labels = actividades,
        colors = colores,
        shadow = True,
        startangle = 0,
        explode = (0, 0.1, 0, 0),
        autopct = '%1.1f%%')

plt.title('Curso MatPlotLib\nblog.curiosoinformatico.com')
# Para añadir etiquetas o cualquier otra cosa debemos hacerlo antes de llamar a
# plt.show()
plt.show()



Como siempre el código lo podemos encontrar en el drive de este curso.



Un fuerte abrazo!


Curso matplotlib - 5 - Diagramas apilados


Este tipo de gráficos son de gran utilidad cuando deseamos saber, por ejemplo, en qué expendemos nuestro tiempo a lo largo de una semana, la evolución de alguna situación, etc.




Para poder realizarlo debemos crear una variable que contenga el espacio donde ocurrirán los distintos sucesos. En esta ocasión a esta variable la llamaremos días.

dias = [1, 2, 3, 4, 5]

A continuación, definiremos la serie de sucesos que ocurrirán esos días con su contenido en horas.

durmiendo =  [8, 8, 4, 8, 8]
comiendo =   [2, 4, 8, 2, 1]
trabajando = [8, 2, 8, 4, 9]
jugando =    [4, 8, 2, 8, 4]

Y finalmente, le diremos a la matplotlib que dibuje nuestra gráfica.


plt.stackplot(dias, durmiendo, comiendo, trabajando, jugando, colors = ['m', 'c', 'r', 'b'])


El problema de esto reside en que por defecto matplotlib no nos deja poner una etiqueta para cada valor. Pero eso lo podemos solucionar de la siguiente manera:

plt.plot([], [], color = 'm', label = 'Durmiendo')
plt.plot([], [], color = 'c', label = 'Comiendo')
plt.plot([], [], color = 'r', label = 'Trabajando')
plt.plot([], [], color = 'b', label = 'Jugando')

El código final debería quedar de la siguiente manera:



Como siempre, podemos obtener este código del drive personal de estos apuntes.


Un fuerte abrazo.

Curso matplotlib - 4 - Diagrama de dispersión


"Un diagrama de dispersión o gráfica de dispersión o gráfico de dispersión es un tipo de diagrama matemático que utiliza las coordenadas cartesianas para mostrar los valores de dos variables para un conjunto de datos. Los datos se muestran como un conjunto de puntos, cada uno con el valor de una variable que determina la posición en el eje horizontal (x) y el valor de la otra variable determinado por la posición en el eje vertical (y)" https://es.wikipedia.org




Desde matplotlib podemos realizar este tipo de diagrama de una forma super-sencilla. Para ello, necesitaremos una lista de puntos en x y una lista de puntos de y.

Dicho en código:
x = [1, 2, 3, 4, 5, 6, 7, 8]
y = [3, 6, 1, 4, 5, 6, 7, 2]

Después de esto, nuestra misión será invocar a la función plt.scatter con los siguientes parámetros:

plt.scatter(x, y, label = 'Visitas de esta hora', color = 'g', marker = 'x', s = 100)

La etiqueta corresponde a la etiqueta que le pondremos en la leyenda si deseamos ponérsela. Recordamos que para poner una leyenda invocábamos a la función plt.legend()




Ya hablamos del atributo color en su momento en el post anterior, el atributo marker, nos indica qué marcador utilizará para dibujar los puntos. Los distintos marcadores los podemos encontrar aquí. Finalmente el atributo s indica size, es decir, tamaño. Es opcional y si no lo ponemos cogerá por defecto s = 1, cuanto mayor sea el número que pongamos mayor será el tamaño de nuestro marcador.


El código, como siempre, lo podemos encontrar en el drive de este curso.

Un fuerte abrazo.

Curso matplotlib - 3 - Diagrama de barras e histogramas

A continuación mostraremos los pasos para crear un diagrama de barras y un histograma con matplotlib en Python.





Al igual que para la recta utilizábamos la función plot, para la creación de una diagrama de barras utilizaremos la función bar.

Quedándonos así el código de la siguiente manera: 

import matplotlib.pyplot as plt

x = [5, 9, 10, 20, 43]
y = [3, 2, 40, 2, 20]

x2 = [21, 22, 53, 53, 43]
y2 = [32, 5, 6, 32, 34]

plt.bar(x, y, label = 'Primer Experimento')
plt.bar(x2,y2, label = 'Segundo Experimento')
plt.xlabel('Largo')
plt.ylabel('Ancho')
plt.title('Curso MatPlotLib\nblog.curiosoinformatico.com')


# Para añadir etiquetas o cualquier otra cosa debemos hacerlo antes de llamar a
# plt.show()
plt.legend()
plt.show()


Respecto al tutorial anterior hemos modificado los apartados señalados en negrita.
En la definición de las variables hemos añadido nuevos valores para tener un mayor rango y hemos sustituido plt.plot por plt.bar

No obstante, no hace falta ser muy avispado para observar que algo sigue fallando. No podemos distinguir entre el Experimento 1 y el Experimento 2 ya que ambos son del mismo color. Para esto, matplotlib tiene un nuevo argumento que es el color. El color puede ser referenciado por medio de un código hexadecimal, por el nombre del color preprogramado o por una letra, por ejemplo, r para rojo, g para verde, etc.




El código que hemos cambiado/añadido para obtener este resultado es el siguiente:

plt.bar(x, y, label = 'Primer Experimento', color = 'c')
plt.bar(x2,y2, label = 'Segundo Experimento', color = 'g')


Histograma:

A continuación aprenderemos a realizar un histograma bastante sencillo que analice las edades de una población. Para ello primero necesitaremos una muestra con todas las edades de la población. Estas las representaremos en una lista:

edades_de_la_poblacion = [44,11,33,45,21,12,32,20,25,24,26,14]

Para clasificar estas edades necesitaremos unos bins o cajas contenedoras. Estas agruparán las edades de 0 a 10, de 10 a 20, de 20 a 30, etc.

Estos clasificadores los crearemos en una lista:

bins = [0, 10, 20, 30, 40]







Finalmente llamaremos a la representación del histograma pasándole la muestra y los clasificadores como argumentos. También le deberemos de pasar el tipo de histograma que en este caso lo llamaremos de barras. Tipo 'bar'  y un argumento opcional que nos permitirá separar las columnas.

La sentencia al completo sería así:

plt.hist(edades_de_la_poblacion, bins, histtype = 'bar', rwidth = 0.6)


Si el último argumento no lo escribimos o lo ponemos con un valor = 1 el resultado sería el siguiente:



Con esto hemos concluido este apartado. Como siempre, un fuerte abrazo. Los archivos los podemos encontrar en el drive de este curso: 



Curso matplotlib - 2 - leyendas títulos y etiquetas


A continuación veremos formas de customización de matplotlib como son el hecho de crear etiquetas o labels. Un Label es cómo llamamos a una variable. Por ejemplo, podríamos crear dos etiquetas para medir los lados de un cuadrado.

Las etiquetas las he llamado Largo y Ancho, para el título simplemente invocamos a la función plt.title('Con nuestro título favorito')




Podemos crear nuevas variables que plasmar en nuestro lienzo. Para ello creamos nuevos puntos como pueden ser, por ejemplo: 

x2 = [1, 2, 3]
y2 = [4, 5, 6]

Y trazamos la líneas.

plt.plot(x2,y2)

El resultado será el siguiente



Ahora disponemos de dos líneas en pantalla pero no tenemos del todo claro de qué es cada  línea. Aquí es donde entra el uso de la leyenda. Una leyenda nos brinda información acerca de qué significa cada línea.

Para crear la leyenda, antes de invocar a plt.show() invocamos la función plt.legend()
Pero con esto matplotlib no tiene suficiente información para saber a qué corresponde cada función. Para ello le tenemos que indicar a la hora de llamar a plot qué etiqueta corresponde a cada cosa. Un ejemplo sería.

plt.plot(x,y, label="Cuadrado")
plt.plot(x2,y2, label="Rectángulo)


El resultado final deberá ser el siguiente:


El código lo podéis encontrar en el drive que he dedicado a este curso. 


Con esto damos por concluido el segundo tutorial sobre matplotlib.


Curso MatPlotLib - 1 - Instalación y primeros pasos




Sobre las bases: Como bien sabemos, matplotlib es una librería para Python y por ende el querer aprender cómo se utiliza da por hecho que ya conocemos el lenguaje de programación Python en profundidad. Así como el hecho de la instalación del intérprete, añadir la ruta del mismo en Windows, etc.

Aunque normalmente me valga de distribuciones GNU/Linux para hacer cualquier cosa, esta vez, por petición popular realizaré el curso en Windows 10. No obstante los pasos deberían ser los mismos.

La primera acción que deberemos realizar es -lógicamente- instalar la librería. Para ello utilizaremos pip. Ejecutamos 

pip install matplotlib

A continuación empezaremos a escribir nuestro primera aplicación con matplotlib, para ello deberemos abrir nuestro IDL e importar la librería. En este caso para simplificar las cosas yo la importaré como plt.

import matplotlib.pyplot as plt

Al crear un plot trazaremos una línea que pase por una serie de puntos x1, x2, x3 e y1, y2, y3

plt.plot([1,2,3],[4,5,6])

Nuestro plot recibe dos parámetros, (x, y), que como podemos observar en el código son dos listas con diferentes puntos.

Con esto nuestro gráfico ya estaría dibujado, no obstante, al igual que sucede con PyGame debemos llevarlo a la pantalla, es decir, debemos hacerlo aparecer.


plt.show()


Ejecutamos nuestro programa bien sea desde el intérprete o desde la terminal y...

Voila! Ya tenemos nuestra primera gráfica creada.


A la mínima en la que nos fijemos un poco en nuestra creación observaremos que tiene unos botones en la parte inferior. De las flechas ya hablaremos más adelante, la cruz nos permite desplazarnos por la gráfica, la lupa nos permite hacer zoom a un determinado punto, deberemos trazar un rectángulo con ésta para seleccionar el área. Si al trazar el rectángulo lo realizamos con el botón derecho del ratón realizaremos un zoom inverso.




El siguiente botón nos permite modificar los espacios que hay alrededor de la gráfica pero ya hablaremos de él cuando nos toque tocarlo y el último nos permite guardar la gráfica en una serie de distintos formatos. 



Con esto damos por concluida la instalación y los primeros pasos de matplotlib.

Como siempre, un fuerte abrazo.



Git en 15 minutos

Recuerdo que en su momento me costó lo suyo aprender a usarlo


Toneladas de documentación, cientos y cientos de usuarios que creían tener nociones de git enseñando lo mismo de formas diferentes provocaban al final un lío tremendo en cualquier mente "no privilegiada". A mi me tocó aprender a usar Git en su tiempo como a la mayoría de las personas que conozco, buscando esto en google, buscando esto otro en google, buscando...



Imagen Obtenida de try.github.io


GitHub ha puesto a nuestra disposición un servicio gratuito para aprender las bases de Git. Se puede acceder desde la siguiente dirección web:  https://try.github.io 


De forma muy bien explicada e interactiva podremos ver paso a paso las bases de Git y al finalizar nos otorgará una medallita bastane graciosa y nos dará un enlace a un curso que profundiza más aún.



Con aire futurístico y de diseño similar a la película Tron Legacy podremos realizar una serie de tutoriales interactivos donde aprender todos los secretos de Git si deseamos profundizar mucho más.

Los videotutoriales recomiendo verlos incluso a los usuarios más experimentados ya que resultan bastante amenos e incluso divertidos de seguir y nos vienen bien para recordar cosas o quien sabe, aprender nuevas que desconocíamos. La lástima, es que este segundo, es de pago a partir del segundo nivel.

Como no todos tenemos el dinero para pagar un curso especializado, github nos provee de una serie de videotutoriales desde youtube en la siguiente lista de reproducción:







Si tenéis más documentación easy-learning sobre Git, sed libres de publicar un comentario.

Un fuerte abrazo!

Debian KDE el sistema que se comía solito 8GB de Ram


Menos mal que tenía 16...



Debian 8 ha sido la joya de la corona. Espectacularmente increible tanto en KDE como GNOME como en XFCE ( los demás no los he probado )

En equipo que sale en la imagen es un core i7 16GB de ram. El otro día dejé el equipo descargando unas cosillas y me fui. A la vuelta para mi completa sorpresa me encontré con que el espacio libre en la memoria era del 50%. No sé si transmission-gtk, iceweasel, unas actualizaciones y skype juntitos pudieron comerse semejante memoria me la verdad es que me dejó a cuadros. El consumo no bajó hasta que reinicié el ordenador consumiendo entonces apenas casi nada. Supongo que se juntarían algunos procesos extras en segundo plano a la vez para aprovechar al máximo la capacidad del equipo en ese momento.

Por lo demás lo cierto es que me tiene terriblemente enamorado. Yo siempre he sido de Gnome como entorno y Sublime Text como editor. Pero recientemente volví a probar KDE y quitando unos fallos que ya corregirán como cryptsetup que al meter una partición encriptada en crypttab saltaba directamente al modo emergencia... es increible. Al principio reconozco que tarda un poco en cargar, incluso en aparecer el entorno gráfico pero después va a más no poder de velocidad.

El nuevo editor que probé fue Atom, un editor escrito en HTML5 que usa una librería para hacer aplicaciones de escritorio que suena demasiado bien. Es altamente similar a SublimeText solo que es OpenSource.

Por lo demás comentando que llevo desde hace unos meses pero especialmente desde que empezó el verano trabajando en un proyecto web personal muy especial. Esa es la razón por la que no he escrito entradas en este periodo de tiempo. Está ya a puntito de caramelo y en cuanto esté en un servidor de producción se lo mostraremos al mundo. Pista: No tiene que ver con la informática. He considerado que es algo que puede ayudar mucho más al mundo que los demás proyectos que tenía en la cola.

Un fuerte abrazo!


Gamers: No queméis vuestros portátiles este verano

Unos tips que os salvarán la vida




Aunque se sale un poco de la tónica de lo que suelo escribir. Esta vez, basándome en el portátil casi en llamas con el que juega mi hermano de vez en cuando he querido comentar lo siguiente.

Algunos procesadores se empiezan a resentir a partir de 75 grados, temperaturas que en verano fácilmente alcanzan la mayoría.

Los ordenadores alcanzan temperaturas altísimas. De estos, los peores son los portátiles. Por es los jugadores profesionales suelen preferir usar ordenadores de semitorre refrigerados al máximo. En cambio, para aquellos jugadores ocasionales que prefieren los portátiles les traigo una serie de consejos.



  • Desconecta la batería
    • Razón: Vas a jugar durante un largo periodo de tiempo. Si desconectas la batería y usas el portátil enchufado aparte de preservar la vida útil de esta. Reducirás ligeramente el calentamiento del equipo.

  • Usa un refrigerador de portátil.
    • Estos aparatos alrededor de 15 euros se colocan en la parte inferior del equipo y le dan aire por donde suele cogerlo. Aunque le de poco aire la diferencia de temperatura es notable (Si os fijáis los equipos suelen tener una entrada de aire en la parte inferior y una salida en la parte izquierda)

  • Usa un disco duro SSD
    • Aunque parezca mentira los discos duros son una de las principales fuentes de calor. Tenéis que pensar que tienen varios cabezales moviendose sobre una serie de discos que van girando continuamente y eso genera una energía que se traduce en forma de calor. Si disponéis del dinero tenéis discos SSD actualmente en la marca Kingston de 80 Gigas por 60 euros. Con esta compra además ganaréis en velocidad.

  • Haz pausas
    • Si notas tu ordenador demasiado caliente para un poco. Apágalo y espera a que se enfríe. Si careces de aire acondicionado esto es todavía más recomendable.

  • Reduce la potencia del procesador
    • Si llevas el procesador al máximo el ordenador se calentará muchísimo más que si no lo llevas. Cada sistema operativo es distinto en cuanto a esto pero como la mayoría de los juegos son para Windows, En esta ocasión explicaré como hacerlo en este. Por lo demás no tenéis que preocuparos tenéis mucha documentación por la red.
    • Para reducir la potencia nos vamos a plan de energía, desde donde yo recomiendo dejarlo en economizador.Ya que ajustará la potencia del equipo para consumir menos energía y por ende calentarse menos. Podemos ir desde panel de control o desde la barra de búsqueda de Windows.


Una vez aqui seleccionamos el plan de energía economizador.



A continuación, haremos clic en cambiar configuración del plan y nos llevará a la siguiente pestaña:



Haremos clic en cambia configuración avanzada de energía


Clicaremos en la opción Cambiar la configuración que no está actualmente disponible



y buscaremos Administración de energía del procesador > Estado máximo del procesador y lo reduciremos a una potencia donde nos sintamos cómodos. Yo lo he reducido al 50% y mi hermano puede jugar sin problemas. Pero esto depende un poco de cada procesador. Aquí ya es ir probando.

Con todo esto ya habremos podido reducir la temperatura de nuestro equipo unos diez grados aproximadamente. /(Estimación hecha basándome en experiencias propias)


Por último también es recomendable tener activos solo los programas que realmente vamos a usar para de esta forma optimizar el rendimiento y el consumo de energía pero eso ya lo dejaremos para otra entrada.


Un fuerte abrazo!


Los routers de Movistar bailan Samba

Husmeando husmeando





Husmeando por mi red local intenté acceder vía telnet a mi router. Por probar a ver qué podía encontrarme ya que me estaba dando mucha guerra con el panel tan limitado de administración que traía. Los routers HomeStation de Movistar son tan majos que si no tienes el aparato asignado por DHCP no te deja seleccionar su ip para asignarle un puerto. Y lógicamente esto con un servidor para cosas personales eh.. como que no tiene mucho sentido.

Estos aparatos tienen un puerto USB al que puedes conectar un pendrive y compartir ficheros como si de un NAS integrado se tratara. Yo pensaba que usarían un servicio propio de movistar pero para mi sorpresa utilizan el servicio samba para realizar esta integración.

No es la primera vez que el software libre o cosas derivadas de este nos sorprende en nuestro día a día.
Por ejemplo, el otro día andando por la calle me sorprendí con una señal de autobuses de ALSA en Guadalajara, España, en la que había salido una pantallita de un error del sistema de Ubuntu sobre el horario de autobuses.

Cada vez más empresas se animan a vivir sobre GNU/Linux y Unix. Tal vez por la seguridad, escalabilidad y alta disponibilidad de los sistemas. O tal vez por  la reducción de costes que evita pagar licencias en el caso de algunas distribuciones. 


Un fuerte abrazo!

Raspberry Pi ATX Cooler


Y entonces... se hizo la luz



La Raspberry para mi fue el invento del siglo. En ella he podido probar todos los experimentos que se me han ocurrido pero siempre perdía en dos aspectos. 1. Potencia y 2. Capacidad.


El tema de la capacidad podía resolverse añadiendo un disco duro externo pero entonces teníamos un problema más si queríamos tenerlo encendido 24h: Calentamiento.


No soy muy fan de los apartos quemados. De hecho mi ordenador fijo está hecho a piezas de otros que valían para poco o nada y lleva 3 ventiladores. 2 de ellos de fuente de alimentación pero eso es para otro tema.

El caso es que quería varias cosas. 

1. Reducir la temperatura del microprocesador de la raspberry para aumentar su vida útil.
2. Tener una caja donde el aire fluyera y pudiera además incluir uno o más discos duros.
3. Poder poner raspberrys en cluster en esta caja. ( para un futuro no muy lejano )

Husmeando por casa encontré un viejo ventilador de cpu, un potenciómetro, un cargador de 12 V 1 A de un Router y la caja sin nada dentro de una fuente de alimentación que ya había desvalijado.

Ahí surgió la magia. Cubrí con celo las partes que pudieran hacer contacto con la raspberry o otros aparatos que introdujeta. Busqué el lugar óptimo para el ventilador y tras unas horas de corta pega suelda e ingéniate un método para poner el ventilador que los tornillos no llegan...

 

Funcionó!

El potenciómetro regula la potencia con la que el ventilador gira. Al principio era un apaño porque no tenía la resistencia que necesitaba pero después me gustó la idea de poder regular el enfriamiento de la raspberry.

Es una idea, como todo, siempre hay mejores. Pero yo con mi nuevo invento soy feliz y espero que duremos mucho tiempo juntos.




Un fuerte abrazo!

Carcasa LowCost Raspberry!

Papel, tijeras y mucha imaginación





Pensé en comprarme una nueva Raspberry pero al final el precio de cogerle una caja y demás se me iba de las manos. Quería hacer una replica de la que ya tenía a efectos de tener un servidor web clónico de forma que si una raspberry se caía la otra cogía la carga de la primera sin perder datos.

La otra opción era recurrir al hecho de usar piezas de lego para hacer la carcasa de la raspberry. Podría tenerla al aire libre pero... no me parecía factible.

Entonces sucedió el milagro. Navegando por la red me encontré con esta carcasa lista para imprimir. Podemos imprimir una cartulina, recortarla y ponérsela a nuestra Raspberry. Lo mejor, es que podemos usar este modelo de imagen para personalizar nuestra carcasa antes de imprimirla.

A falta de impresoras 3D, buenas son las tijeras.

http://squareitround.co.uk/Resources/Punnet_net_Alpha3.pdf

Generando claves Wifi por defecto




Hace ya un tiempo se descubrió el algoritmo que usaban los routers de telefónica y jazztel para generar sus contraseñas por defecto. Nuestros amigos de seguridad wireless crearon el siguiente generador de claves online:  http://www.seguridadwireless.net/wpamagickey.php

Siendo una curiosidad a probar no era demasiado práctico si deseáramos escanear nuestra ubicación en busca de puntos de acceso que pudieran tener la contraseña por defecto. Siempre con una utilidad didáctica y para probar la seguridad de un sitio. Entrar en una red wireless ajena es un delito y está penado por la ley.

Posteriormente un grupo de personas hizo público el algoritmo que se usaba para generar las claves. Y de ello salieron utilidades como CalcWlan. CalcWlan.sh no es más que un script para sistemas GNU/Linux y (aunque no lo he probado) imagino que en sistemas Unix como Mac también funcionará.

El algoritmo es muy sencillo. Realiza una suma MD5 y un par de cosas más para obtener la clave final. El resultado será correcto siempre y cuando se utilice este algoritmo para generar la contraseña por defecto y esta, no haya sido cambiada posteriormente.

Me he tomado la libertad de re-subirlo a la red ya que no me gustaría que se perdiese. Esta vez a drive.

CalcWlan.sh




He visto varias modificaciones adaptadas por internet. De cualquier forma la que yo he usado ha sido esta. El código corresponde a sus correspondientes autores y en esta ocasión por mi parte no ha habido ningún tipo de modificación.

El funcionamiento es muy sencillo. Desde la terminal accedemos al script. Por ejemplo si lo tenemos en la carpeta de descargas cd ~/Descargas

Le damos permisos de ejecución chmod +x calcwlan.sh

Y finalmente procedemos a ejecutarlo indicando nuestra interfaz wireless. Por regla general esta será wlan0 pero podemos verla utilizando la utilidad iwconfig


./calcwlan.sh wlan0

El script automáticamente buscará las redes cercanas compatibles e irá sacando sus claves por defecto utilizando el algoritmo integrado dentro de él.

Es bastante útil a la hora de hacer comprobaciones y advertir a nuestros amigos y familia sobre su seguridad en red. Es muy sencillo de utilizar como podemos ver pero ante cualquier duda, comentario.

Un fuerte abrazo!