martes, 22 de julio de 2014

Monitorizando el Sistema (Linux)

Qué encontrarás en esta entrada?
  • Comandos para monitorizar el sistema en Linux.

En la última entrada hablábamos de cómo comunicarnos con nuestro ordenador a través del conocido programa de mensajería instantánea de Google, Hangouts (la evolución de gTalk). Esto nos permitía "hablar" con nuestro ordenador desde cualquier lugar del mundo utilizando, por ejemplo, un teléfono móvil con conexión a Internet.

Como ya comenté en la anterior publicación, las posibilidades que se abren ante nosotros son infinitas. A mi se me ha ocurrido (aunque he de reconocer que no ha sido una idea muy original) utilizarlo para monitorizar el sistema a distancia.


Existen muchas formas de monitorizar un sistema Linux mediante el intérprete de la línea de comandos. Yo os voy a hablar, de manera muy básica, de algunas de estas opciones.

  • Ver espacio en los discos: El comando "df" os muestra una tabla en la que os aparecen los discos y/o particiones que tengáis montados en ese momento y el espacio usado y disponible de cada uno de ellos. Con la opción "-h" os aparece en "formato humano", es decir, con las siglas de las unidades más apropiadas, para una fácil comprensión.  



  • Ver temperaturas y voltajes: Para esto hay que instalarse "sensors". Una vez hecho, sólo hay que teclear el nombre del programa para que nos muestre todos los datos que recogen estos sensores de nuestra máquina.

  • Ver la memoria en uso: La memoria está reflejada en un archivo dinámico situado en "/proc/meminfo". Haciendo un "cat" del archivo (comando que sirve para mostrar el texto que hay dentro), podemos ver toda esta información.

  • Uso de la CPU: Hay varias formas de hacer esto. El conocido comando "top", por ejemplo, nos muestra en su cabecera estos datos. Yo he preferido instalarme "sysstat". Una vez instalado, un "mpstat" nos muestra unas estadísticas globales del uso del procesador. Si tecleamos "mpstat -P ALL 1 1", por ejemplo, nos muestra una información más detallada de cada uno de los procesadores que tengas por separado (los números hacen referencia al número de iteraciones y al tiempo que hay entre ellas, en este caso, realizamos una única interacción y salimos del programa). 


  • Procesos corriendo: El comando "top", el cual ya habíamos adelantado, nos muestra una lista de procesos e información sobre ellos. Otra forma de sacarlos, es con el comando "ps". Tecleando "ps -A" nos aparece una lista con todos los procesos y sus números identificativos (PIDs). Si tecleamos "ps axu" podemos ver información más completa, incluyendo el uso de la CPU que implica cada una de las aplicaciones. Por último, el comando "ps axu --sort -%cpu", además de mostrarnos la lista anterior, ordenaría los programas por uso de CPU (como hace "top"), lo cual puede ser bastante interesante.

  • Comprobar si un proceso está corriendo: El comando "ps" se puede combinar con un "grep" (buscar) para encontrar un programa de la siguiente manera: "ps -A | grep nombre_del_programa". Abreviadamente, se puede usar el comando "pgrep nombre_del_programa", que devolverá el PID en caso de encontrarlo.

  • Sesiones: El comando "who" muestra quién tiene la sesión iniciada en el sistema en el momento de ejecutarse, mientras que el comando "last" muestra un registro histórico con los últimos inicios de sesión del sistema. El comando "uptime" nos da información sobre el último arranque del sistema (información a la que también podemos acceder por medio de "who -b").


Añadir que, ya que estamos mirando posibles aplicaciones para consultar información a distancia sobre lo que "se está cociendo" en nuestro ordenador, comentaros brevemente el uso de "amulecmd"

La aplicación "amulecmd" nos ayuda a monitorizar a distancia el estado del aMule que tengamos instalado en nuestro ordenador. aMule es un cliente P2P muy popular en Linux, como lo fuera el eMule para Windows. Lo primero que habría que hacer es habilitar las conexiones externas en aMule, y establecer una contraseña para ello.


Una vez hecho esto, se podrá acceder mediante una consola tecleando "amulecmd" (en cuyo caso nos pedirá los datos de acceso). Estos pasos se pueden automatizar en un único comando: "amulecmd -P CONTRASEÑA". Una vez dentro, podremos ejecutar las diferentes acciones.

Estos comandos también se pueden ejecutar desde fuera con el parámetro "-c", por ejemplo, tecleando "amulecmd -P CONTRASEÑA -c Status", nos dirá el estado de la aplicación en ese momento, y "amulecmd -P CONTRASEÑA -c "show DL"" nos mostraría las descargas.

Espero que os resulte tan útil esta información como me ha sido a mi recopilarla.

domingo, 13 de julio de 2014

Comunicación ordenada

Qué encontrarás en esta entrada?
  • Cómo enviar mensajes instantáneos a tu ordenador y que te responda.
  • Ver información a distancia.
  • Ejecutar comandos. 

En primer lugar, agradecerle a Altair·Mikoto su ayuda en este tema, así como a la fuente en la que ambos nos basamos: el excelente blog RSPPI.

Desde el principio de la humanidad, el hombre ha buscado una compañera con la que compartir su monótona existencia. Durante mucho tiempo esa búsqueda estuvo brutalmente sesgada por los requisitos de la exigente selección natural... hasta la era digital, en la cual los geeks de todas partes descubrimos que, a falta de encontrar la pareja perfecta, podíamos construírnosla nosotros mismos en un desconcertante intento de "cyber-do it yourself". Ya vimos en este mismo blog alguna bizarra propuesta. El la citada ocasión construimos un script en shell de Linux que recogía una serie de datos, principalmente del sistema, y luego producía un discurso (a través de un "text to speech" como eSpeak) adecuado a las circunstancias del momento.

Hoy mi intención no es "construirme otra novia", sino crear un programa no "humanizado" que sea capaz de darme información a distancia desde mi ordenador, en lugar de ejecutarse en modo local. Para ello vamos a basarnos en las indicaciones que nos dan desde RSPPI. Resumiendo un poco lo que dicen en su elaborada entrada, la idea consiste en utilizar centerIM, un programa por línea de comandos de mensajería instantánea, al estilo de Finch (la versión "light" de Pidgin). Este programa permite redirigir los mensajes a un "contestador automático", el cual puede ser un script en shell de Linux que tome como variables de entrada lo que se le diga por mensajería instantánea y realice una acción en consecuencia. Para más detalles os recomiendo que lo leáis con atención en RSPPI, donde podréis encontrar cómo configurarlo todo paso a paso.

Con esto habríamos conseguido establecer una profunda e íntima comunicación con lo más profundo de nuestro ordenador. Podríamos programarle un random de chistes aleatorios (como el Sr. Mañoso... "ni siquiera sabía que se pudieran comer") y contestaciones ingeniosas (que lo mismo tendría su gracia), pero yo he preferido hacerme un menú con opciones que me proporcionen distinta información sobre el estado de mi ordenador de sobremesa.

Podría preguntarle ahora mismo a mi ordenador por el espacio en mi disco duro principal a través de Hangouts, y me respondería algo como lo de abajo.


O podría decirle desde mi móvil que si me he dejado el Firefox abierto en casa, y me contestaría:


Es más, quiero saber qué programas están consumiendo más memoria en mi ordenador de casa. Se lo voy a preguntar:


Ups! Ese programa me lo he dejado encendido? No debería: voy a cerrarlo!


Cómo está ahora mismo la pantalla?


Y, combinándolo con mutt, veo en mi correo:


En RSPPI tenéis algún ejemplo de cómo programarlo, aunque en mi opinión es algo personal de cada uno (cada cuál sabe de qué quiere hablar con su ordenador). El límite, una vez más, es la imaginación de cada uno.

domingo, 15 de junio de 2014

A vista de Nexus

Qué encontrarás en esta entrada?
  • Análisis de la cámara del Nexus 5.
  • Comparación con la cámara del SONY XPERIA P.

Vamos a dejar a un lado las excursiones que hemos estado haciendo estos días en Astaroth's World, dentro de la sección "Paso a Paso", para retomar una actividad más sedentaria: la del análisis de dispositivos.

En este caso vamos a centrarnos en la cámara del Nexus 5, así como las opciones que permite su aplicación "Galería" en combinación con  el sistema operativo Android 4.4.3 (KitKat).

Antes de empezar, quiero dejar clara, una vez más, mi férrea opinión sobre fotografía móvil. Salvo contadas excepciones, la fotografía móvil pertenece a la práctica del "point & shoot", es decir: "apunta y dispara". Está bien para documentar algo concreto cuando no tienes una cámara a mano, para compartir una imagen curiosa en las redes sociales, para entrenar el llamado "ojo fotográfico", etc., pero esto no es, en mi opinión, "fotografía". La fotografía, para mi, implica el control total y no automatizado de todos los parámetros que intervienen en ella. Es decir, para mi estás haciendo fotografía (desde el punto de vista técnico) cuando eliges qué ISO utilizar, qué apertura del diafragma, qué velocidad de obturación y enfocas manualmente a lo que quieras, habiendo reflexionado previamente sobre por qué ese conjunto de parámetros, y no otro, es el adecuado para la situación en la que te encuentres. Además de esto, se podría añadir que para llamar a algo "fotografía" debería transmitir un mensaje intencionadamente.

Sin duda alguna, independientemente de la nomenclatura, somos muchos a los que nos gusta capturar un momento y a veces no tenemos encima el equipo necesario para llevar acabo semejante tarea. En tal caso, tener un móvil que nos permita hacer una primera aproximación fotográfica al sujeto que ha captado nuestra atención, puede ser interesante. En este contexto, voy a hablaros de mis primeras impresiones con la cámara del Nexus 5, en un artículo más técnico que fotográfico, sin pretensiones demasiado ambiciosas en ninguno de los dos campos: una simple reseña de "primeras impresiones".

El Nexus 5 cuenta con una cámara frontal de 8MPx, como ya hiciera el SONY Xperia P (mi anterior móvil). Sin embargo, vamos a ver que hay diferencias entre ambas.

El software actualizado que lleva el modelo del teléfono de Google cuenta con la tecnología "HDR+". Al principio desconfiaba de esta funcionalidad, pero creo que les ha salido bastante aceptable. ¿Qué significa "HDR"? Éstas son las siglas de "High Dynamic Range", y viene a ser una técnica de procesamiento por software que junta información para mejorar la subexposición y sobrexposición de las fotos. Originalmente, la técnica consistía en sacar varias fotos en distintas condiciones de iluminación (variando, por ejemplo, el tiempo de exposición), y luego se combinaban para que los blancos más luminosos y los negros más oscuros no perdiesen sus texturas por completo. Actualmente hay distintas variantes de estas técnicas, algunas de ellas basadas en una única toma (en lugar de en varias tomas), aprovechando que el sensor puede obtener más información de la que finalmente muestra.

El HDR puede utilizarse de forma sutil, o descontrolada. Muchos fotógrafos son muy críticos con el HDR, normalmente porque se asocia a la segunda forma de proceder.

Atardecer en el Parque de los Cerros
Uno de mis primeros HDR's (muy exagerado)

En este caso, la técnica "HDR+" que utiliza el Nexus 5 está bastante bien medida. No da a tus fotos un aspecto de forzada irrealidad, sino que simplemente mejora las sombras para que no sean zonas negras sin texturas, e igual procede con las altas luces.

Fotografía realizada con el Nexus 5 sin flash en condiciones de pobre luminosidad.

Vamos a comparar, a continuación, fotos del Nexus 5 sin la tecnología HDR+, fotos con esta tecnología, y fotos del SONY Xperia P. Aclarar que ya de por si la competición es algo injusta, ya que el SONY Xperia P es un teléfono casi dos años más antiguo que el Nexus 5, y que por tanto no puede competir con él en temas de fluidez de la aplicación, pantalla (que es mucho más pequeña), etc.

Nexus 5

Nexus 5 - HDR+

SONY Xperia P

Nexus 5

Nexus 5 - HDR+

SONY Xperia P

Nexus 5

Nexus 5 - HDR+

SONY Xperia P

Nexus 5

Nexus 5 - HDR+

SONY Xperia P
Lo primero que observamos es que la relación de aspecto de ambas cámaras es distinta. Esto es debido a que se ha utilizado el SONY Xperia P con la configuración de cámara panorámica (3264x1836~6MPx), en lugar de aprovechar los 8MPx, a cambio de tener una proporción más cuadrada (4:3). Esto no es una diferencia con respecto al Nexus 5, puesto que se puede configurar de igual manera.

Lo siguiente en lo que podemos fijarnos es el efecto del HDR+. En condiciones de iluminación escasa, es capaz de resolver de manera bastante satisfactoria las texturas de las sombras más extremas. También es cierto que en situaciones de iluminación más favorable, donde su efecto sería más innecesario, no parece aportar demasiado, e incluso en ocasiones parece que podría empobrecer el contraste. Mi opinión, al menos en esta primera vuelta de reconocimiento, es que no lo recomendaría como modo por defecto, sino que lo activaría sólo cuando lo considerase realmente necesario.

A la izquierda, el Nexus 5, sin el modo HDR+. A la derecha, el sutil efecto del HDR+. También se le une que el cálculo automático del ISO ha perjudicado a la fotografía de la izquierda, añadiéndola más ruido.

Cómo el HDR+ puede resolver una situación de luminosidad muy desigual. El Nexus 5, por defecto, ha optado por favorecer los detalles de las luces altas, oscureciendo demasiado las sombras. El SONY Xperia P ha hecho lo contrario, y ha perdido la información que aparecía en la pantalla (más luminosa). Con el modo HDR+ se alcanza un compromiso entre ambas opciones.

La nueva aplicación "Galería", que viene por defecto en el Nexus 5 con Andorid 4.4.3, incluye algunas cosas interesantes. En primer lugar, te lee los álbumes "Picasa" (o "Google+") de forma más intuitiva de cómo lo hacía la aplicación "Album" que venía con el Android 4.1.2 del SONY Xperia P. Además, está más integrada con la cámara, ofreciendo opciones básicas de edición y post-procesado.



Destacar entre las nuevas funciones la llamada "Efecto de enfoque". Salvando las diferencias, esta funcionalidad pretende hacer algo parecido a lo que ofrecen las cámaras Lytro: cambiar el intervalo enfocado después de haber tomado la foto. Se puede reducir la profundidad de campo (diferencia entre las distancias máxima y mínima en las que aparecen las cosas enfocadas), y enfocar en uno u otro sujeto de la foto a posteriori (después de haber sido tomada).





Mientras que las cámaras Lytro funcionan por unos sensores que guardan el recorrido del rayo de luz para luego reconstruir la información de la toma, sospecho que el "truco" aquí es mucho más sencillo: tiene pinta de guardar una foto en la que aparezca todo razonablemente enfocado (con gran profundidad de campo), y luego realiza un filtro por software que intenta extraer información sobre la distancia a la que están los distintos objetos (para ello, te pide que muevas la cámara después de hacer la foto, de esta forma, los objetos se mueven de manera distinta dependiendo de la distancia a la que estén, y podría inferirse ésta por cómo ha variado la posición de los mismos), para aplicar sobre ellos un filtro de desenfoque dependiendo de esta distancia.


Otra opción bastante interesante es la llamada "Photo Sphere". Se trata de una variante del asistente para fotografías panorámicas/360º de toda la vida. En este caso, en vez de guiarte para que hagas fotos según rotas sobre tu propio eje para conseguir una vista de 360º, te da la opción de hacer fotos también hacia arriba y hacia abajo, reconstruyendo una esfera completa alrededor tuya. Estas fotos se guardan y se componen para que puedas verlas desde el móvil. Tiene la opción de utilizar los sensores del aparato para que, según muevas el dispositivo, veas una parte u otra de la esfera, de tal manera que parezca una "ventana mágica" que te muestra a tu alrededor la foto de algún sitio que te rodea. La idea es bastante curiosa. También es posible subir la imagen a visores web que permitan compartirlo. En una búsqueda rápida he encontrado, por ejemplo, Photo Sphere Viewer, que cumple tal función.

Y hasta aquí mis impresiones iniciales. Supongo que en breve podréis ver los resultados en  Garbage from my mobile.