lunes, 29 de diciembre de 2014

Kernel 3.5 en Ubuntu 12.04

El Linux kernel 3.5 fue lanzado oficialmente, pero Ubuntu recién va por la versión 3.2, podés actualizar e instalar un núcleo más aceitado.

El kernel 3.5 agrega varias prestaciones interesantes, entre las cuales podemos mencionar el soporte para sumas de comprobación (checksums) de los metadatos en sistemas de archivos EXT4, soporte para restaurar y comprobar conexiones TCP, soporte para TCP Early Retransmit (RFC 5827), un nuevo algoritmo de gestión de colas en la red diseñado para combatir el desbordamiento de búfer, estadísticas de E/S Btrfs y mucho más.

“Incluye algunas correcciones de dm/md, unos arreglos de gma500, el comando kgdb 'dmesg' funciona nuevamente, hay algunas correcciones de red, algunos ruidos de xfs y cifs y más. Un 50% del parche es el nuevo nombre del reloj SPEAr que se trata de algunas búsquedas y reemplazos”, dijo Linus Torvalds en el anuncio oficial.

Principales característica de Linux kernel 3.5:

· Sumas de comprobación para los metadatos EXT4;
· Uprobes: userspace probes;
· Filtrado de llamadas basado en Seccomp;
· Combate la carga del búfer: gestión de colas con CoDel;
· Un arreglo para las conexiones TCP;
· TCP Early Retransmit;
· Estadísticas de los fallo de E/S en sistemas Btrfs y mejoras de la latencia;
· SCSI en FireWire y USB.

El kernel 3.5 también trae mejoras en muchas áreas, como correcciones para la gestión de la memoria, redes, virtualización, seguridad, perf/tracing, bloques, mejoras para los sistemas de archivos Btrfs, Tmpfs, XFS, CIFS, JFFS2, exofs, Cifs y otros cambios centrales.

Para leer la lista completa de los drivers recién añadidos, los nuevos dispositivos compatibles y otras mejoras, no dudes en ver el registro oficial de cambios y la página de Linux kernel 3.5 DriverArch.

32 bits  sudo add-apt-repository ppa:upubuntu-com/kernel-i386

64bits  sudo add-apt-repository ppa:upubuntu-com/kernel-amd64

sudo apt-get update
sudo apt-get install linux


Desinstalación:

sudo apt-get purge linux-image-3.5.0-030500-generic

miércoles, 19 de noviembre de 2014

[Script TTS] Síntesis de voz en Linux desde la terminal usando Google TTS

FUENTE: https://github.com/Glutanimate/simple-google-tts/blob/master/README.md

Usando nuestra terminal podemos usar la tecnología de Google para leer palabras o textos desde la terminal.

En primer lugar tenemos que descargar las dependencias

sudo apt-get install git xsel libnotify-bin libttspico0 libttspico-utils libttspico-data libwww-perl libwww-mechanize-perl libhtml-tree-perl sox libsox-fmt-mp3


A continuación descargamos el script de Michal Fapso
git clone https://github.com/Glutanimate/simple-google-tts.git

Antes del siguiente paso recomiendo cerrar la terminal y volver a abrirla
cd simple-google-tts
Tenemos dos opciones, usar un sintetizador interno o uno online, para usar el interno escribimos
./simple_google_tts -p es “Hola Mundo”

En el caso de que querramos usar el sintetizador online omitimos el parámetro -p

Si queremos leer un texto (formato txt)
./simple_google_tts es /ubicacióndel archivo/nombre texto.txt

Para más opciones
./simple_google_tts -h

jueves, 31 de julio de 2014

Listas Desplegables Simples o Dependientes

Fuentes: https://forum.openoffice.org/es/forum/viewtopic.php?f=21&t=3397
                     https://www.youtube.com/watch?v=BA5TmnPEpbk
                    http://www.flashforward-financiero.es/index.php/calc-open-office/trucos-y-consejos/29-listas-desplegables-dependientes



Dos opciones, usar un rango de celdas, ver en la siguiente imagen:
Insertar -> Nombres -> Definir

Para lo cual, le pondremos un nombre a nuestra selección. Para efectos de demostración le pondremos “países”, y una vez hecho esto vamos a cualquier hoja en donde necesitemos la lista por supuesto en el mismo documento, seleccionamos una celda y vamos al menú:

Datos -> Validez

Dentro de ésta opción de menú, nos aparecerá una pantalla en donde podemos elegir diferentes tipos de elección, entre los cuales, elegiremos “Intervalo de celdas” y nos aparecerá un cuadro de texto en donde debemos especificar el origen, entonces ahí ponemos el nombre de la lista que antes habíamos creado en este caso “países”  y con eso ya tendremos una lista de selección."

captura01.png


O, puedes usar datos introducidos directamente en la lista como en la siguiente imagen.
captura02.png


Una tercera posibilidad es que insertes un control cuadro combinado (ComboBox) como te muestro en la siguiente imagen, solo que este ya requiere un poco más de pasos, pero es mucho más versatil pues puedes vincularlo con bases de datos.





captura03.png 
 
 
Listas desplegables dependientes y la validación de datos en CALC de LibreOffice.
En esta nota mostrare cómo crear listas desplegables dependientes en Calc de Libre Office. Es un uso particular del módulo de “Validación de datos”. La validación de datos es útil, para tus propios hojas, y es esencial cuando compartimos las hojas de cálculo con otras personas.



Como seguramente habrás podido observar y sufrido, gran parte de los errores en las fórmulas, funciones o en los modelos, tiene su origen en la introducción, en la celda que sirve de operando, de un el valor o de una la naturaleza errónea para su objeto. Cuando ocurre, añoramos el que no tuvieses un filtro para evitar estos fallos, y que el ordenador no produjese alguna descarga correctora.
El comando de validación de datos de Calc te permite establecer ciertas reglas que dictan lo que puede ser introducido en una celda. Por ejemplo, puede que te interese  limitar la entrada de datos en una celda a que sean números enteros entre 10 y 18. Si el usuario hace una entrada inválida, Calc puede entonces mostrar un mensaje de aviso, con una ayuda o con las instrucciones.
Este comando está en el menú de Datos:

Este comando, da mucho juego, y hay muchas posibilidades, en esta nota sólo trataremos el uso de la validación de datos, para restringir las entradas a una lista de valores concretos y específicos que están introducidos en unas celdas, configurando una serie de listas. En estos casos debemos de utilizar la opción de Intervalo de celdas. Este comando supone una alternativa muy útil al uso de los controles de formularios, de las distas autodeplegables, y que no suponen ni macros ni programación para su uso.


Vemos el contexto de un caso en el que vamos a utilizar este procedimiento.
Supongamos que somos una agencia de guías de montaña, y organizamos excursiones en diferentes zonas del Pirineo. (el eterno binomio de zonas-vendedores, familias- productos, etc. Una clasificación de doble entrada). Y queremos que cada vez que elegimos una zona nos aparece una lista desplegable que mostrara solo y exclusivamente las excursiones de esa zona. Es decir una lista desplegable en función del valor fijado por otra lista desplegable (de aquí el nombre de la nota de hoy listas desplegables dependientes).
Las excursiones de las diferentes zonas de excursiones de nuestra empresa aparecen en esta hoja en rangos verticales. Las excursiones están en las celdas sombreadas con amarillo y que le he puesto el nombre de “Excursiones”.

Bueno, ¡pues vamos a ello¡
Paso 1: Empezamos creando nombres de rangos. El primero será “Zonas”, y que agrupara las zonas de excursiones,  celdas B16:I16, un rango en horizontal. Después crearemos unos nombres de rangos que coincidan con los nombre de las zonas. Es importante que se llamen igual. El rango solo hará referencia a la primera celda de excursiones. Hay dos opciones, o creamos un nombre que se asigne a un grupo de celdas fijas, o lo hacemos de forma dinámica, y permitimos que la lista de excursiones pueda ser ampliada o modificada. Esta segunda opción es la que vamos a explicar.
Para dar los nombres utilizaremos la opción de Nombres\Crear… del menú de “Insertar”. Señalamos las celdas que constituyen las dos primeras filas de la tabla de datos, las zonas y la primera excursión, el nombre del rango y la celda a la que hará referencia.



De esta forma el rango AISA= $B$17, SALAZAR=$C$17,  etc.
Paso 2: Creamos la celda de introducción del datos de ZONA.  Nos posicionamos en la celda C7, y la combinamos con la celda D7, y le datos el nombre de “mizona”, para que de esta forma podamos trasladar estas celdas a cualquier sitio de la hoja, y que todas las fórmulas que vayamos utilizando necesiten de este origen haga referencia al nombre.
Seguidamente, y estando en la celda C7, daremos las instrucciones de validación de datos, eligiendo “Datos\Validez…”, eligiendo “Intervalo de celdas”, y en Origen marcando el rango “Zonas”.

Ya tenemos la primera lista desplegable.  Ahora nos queda que Calc nos muestre una lista desplegable que dependa de la zona elegida.
Paso 3: Nos posicionamos en la celda C8, la combinamos con las celdas C8:E8, para que quepa todo el nombre.  Para que la lista cambie en función de la zona elegida, crearemos un rango dinámico, que cambie con “mizona”, le llamaremos “miexcursio”, y hará referencia a esta fórmula:
=  DESREF(INDIRECTO(mizona);0;0; CONTARA(DESREF(INDIRECTO(mizona);0;0;FILAS(Excursiones);1));1)
Repetimos los mismos pasos para crear la validación pero ahora en “Origen” pondremos el nombre de “miexcursio”. Y ya debería funcionar.


Algunas aclaraciones:
  1. El uso de los nombres de los rangos, no es un capricho o por hacerme el virtuoso. Nos permite, trasladar la tabla de datos, de zonas y excursiones a otras hojas del libro, sino la validación exige que este en la misma hoja o que haga referencia al nombre de la hoja que contenga la lista de valores.
  2. las tripas de la fórmula de “miexcursio”: =  DESREF(INDIRECTO(mizona);0;0; CONTARA(DESREF(INDIRECTO(mizona);0;0;FILAS(Excursiones);1));1)
a)  Utilizamos una combinación de las funciones DESREF, INDIRECTO, CONTARA y FILAS.
b)  Con DESREF encapsulamos un grupo de celdas que comenzaran en la celda que marque la zona elegida, por eso le hemos puesto un nombre, y esa dirección se sabrá gracias a la función INDIRECTO, que nos dará una referencia absoluta, y el vértice inicial de la matriz de celdas a encapsular.
c)  Para determinar el número de celdas que conformará esa lista utilizamos la función CONTARA, para que cuente valores alfanuméricos,  que hay en las celdas consecutivas hacia debajo de esa zona. Volvemos a utilizar la función DESREF, y le marcamos un nuevo encapsulado de celdas, formado por la primera excursión de la zona y el número de FILAS que contiene el rango “Excursiones”.
Este modelo tiene una limitación y es que si necesitamos de mas excursiones para una zona que las que posibilita el rango “Excursiones”, tenemos que ampliar este rango, bien entrando en el menú de “Nombres”, o insertando celdas hacia abajo, seleccionando tos las celdas de la última fila del rango “Excursiones”, y que están señalado por las celdas con el signo “*”.
 

martes, 12 de noviembre de 2013

Puertos Serie en WINE >> ttyACM0 2 COM1

De cosecha propia




$ sudo usermod -a -G dialout $USER # Habilita el usuario actual para usar los puertos seriales

$ sudo ln -sf /dev/ttyUSB0 ~/.wine/dosdevices/com1 # Crear enlace simbólico al dispositivo, permite que WINE pueda escribir en él.
$ sudo ln -sf /dev/ttyACM0 ~/.wine/dosdevices/com2 # Crear enlace simbólico al dispositivo, permite que WINE pueda escribir en él.

$ wine APP.exe



.

miércoles, 30 de octubre de 2013

Script para Apagar Maquina Virtual y PC (VirtualBox)



#!/bin/bash
# vboxmanage list vms -l ## Listar Maq Virtuales
# vboxmanage startvm "NombreMaq"
# vboxmanage controlvm "NombreMaq" reset
# vboxmanage controlvm "Win.FLP_SP3" poweroff
# vboxmanage controlvm "Win.FLP_SP3" acpipowerbutton

# sleep < s segundos , m minutos , h hora>
# Ejemplo: sleep 10s 
#                   sleep 10m
#                   sleep 10h

echo "Voy a apagar la PC en 1 Hora!!!"
sleep 1h
echo "Apagando Maq Virtual."
#
sudo -u <USER> vboxmanage controlvm "<NOMBREMAQVIRTUAL>" acpipowerbutton
#
echo "Maq Virtual Apagada."

echo "Apagando PC."
sleep 30s
shutdown -h +1


martes, 29 de octubre de 2013

Ver o Capturar Streeming RTMP con rtmpdump y mplayer (Ejemplo TN - Todo Noticias)

FUENTES: http://pclosmag.com/html/Issues/201104/page19.html
                  http://www.tdt-latinoamerica.tv/foro/tn-streaming-en-vivo-16-9-por-tn-com-ar-t4425-40.html


TN utiliza un protocolo conocido como RTMP para enviar el contenido al player flash. Los parámetros necesarios para establecer la conexión no están facilmente accesibles (no estan embebidos en el código HTML de la pagina) asi que hay que "escuchar" la transmisición para determinarlos. Una vez que se tiene estos parámetros se puede utilizar rtmpdump para conectarse y grabar o ver el streaming.

En linux, esta "rtmpdump" comando que le pasa el streaming directamente a mplayer para verlo en pantalla:



VGA >>> rtmp://stream.tn.com.ar/live
HD   >>> rtsp://stream.tn.com.ar/live/tnhd1/



# sudo apt-get install rtmpdump


VGA
# rtmpdump -r rtmp://stream.tn.com.ar/live \
         -a live \
         -y tnmovil2 \
         -W http://tn.com.ar/sites/all/themes/dozer/swf/cplayer/player.swf \
         -p http://tn.com.ar/envivo/24hs \
         -f "LNX 10,3,162,29" | mplayer -



HD
# rtmpdump -r rtmp://stream.tn.com.ar/live \
         -a live \
         -y  tnhd1 \
         -W http://tn.com.ar/sites/all/themes/dozer/swf/cplayer/player.swf \
         -p http://tn.com.ar/envivo/24hs \
         -f "LNX 10,3,162,29" | mplayer -

jueves, 24 de octubre de 2013

Puertos Serie Virtuales - Compartir un Dispositivo Serie por la Red en GNU/Linux [Socat Netcat++]

FUENTES:
http://thehackerway.com/2011/08/08/herramientas-para-hacking-en-entornos-de-red-%E2%80%93-conectividad-con-socat-parte-iii/
http://blog.marcelofernandez.info/2013/05/como-compartir-un-dispositivo-serie-por-la-red-en-linux/


Socat es similar a netcat pero para streams bidireccionales. Socat es conocido también como Netcat++ debido a que es una herramienta que extiende de manera significativa las potencialidades que proporciona Netcat. Permite realizar cosas (especialmente lo relacionado con diferentes tipos de conexiones) que con Netcat no es posible realizar por si solo, por otro lado es una herramienta mucho mas moderna y responde mejor a las necesidades de un hacker y/o administrador de red utilizando nuevas tecnologías en el campo de la conectividad y protocolos de comunicación. A diferencia de Netcat, esta herramienta cuenta con muchísimas mas opciones y su uso es un poco mas complejo, se necesitan conocimientos de redes de datos y conocer los protocolos de comunicación que se pueden utilizar con Socat para sacarle el máximo provecho a esta herramienta. Como ya se ha dicho, se trata de una herramienta un poco mas completa y compleja, por este motivo, esta será la primera entrada donde se planten las bases del uso de Socat y algunos conceptos teóricos necesarios para saltar a la practica y utilizar de forma adecuada las potencialidades que esta estupenda herramienta pone a nuestra disposición.
"Socat es una herramienta basada en línea de comandos que establece dos flujos de bytes bidireccionales y los datos de las transferencias entre ellos. Debido a que las corrientes pueden ser construidos a partir un gran conjunto de diferentes tipos de sumideros y fuentes de datos, socat se puede utilizar para muchos propósitos diferentes ".

Socat soporta muchos tipos de conexión y cada tipo esta indicado por una “palabra reservada” que indica la utilidad de la conexión, en cualquier caso, cuando se ejecuta Socat desde linea de comandos es requerido que se indique como mínimo dos direcciones donde la primera indica el origen de la conexión y los paquetes que se definan en dicho nodo se transmitirán al destino de la conexión que es la segunda dirección IP que se indica en el comando, todas las conexiones son bidireccionales por defecto, es decir, que ambos nodos pueden leer y escribir datos hacia el otro extremo de la conexión, a menos que se indique que la conexión es unidireccional de forma explicita.

Todas las opciones del comando y la especificación de direcciones se encuentra en http://www.dest-unreach.org/socat/doc/socat.html es recomendable visitar dicho sitio para conocer en profundidad las opciones y especialmente las especificaciones de las direcciones, que son básicamente, el tipo de conexión que se intenta establecer en cada nodo. Esta entrada será más practica sin olvidar que los detalles teóricos son sumamente importantes, se intentará indicar ejemplos prácticos de socat explicando los conceptos teóricos que hay detrás de cada ejemplo.

Si tenemos la necesidad de utilizar un puerto serial (por ejemplo, un dispositivo con un adaptador USB/Serie en /dev/ttyUSB0, un módem 3G o una placa Arduino en /dev/ttyACM0, etc.) conectado físicamente a una máquina en la red, que por diferentes motivos (distancia, pereza, lo que sea), lo queremos acceder como si fuera local.

En la PC-A el programa para acceder al Arduino en /dev/ttyACM0, y el Arduino conectado en PC-B de la red. La idea es que el programa acceda al Arduino como si estuviera directamente conectado en la PC-A, haciendo de alguna manera “transparente” la red que separa PC-A y PC-B.

Para esto vamos a utilizar la herramienta socat, que es como netcat pero para streams bidireccionales. Los pasos son:

//tanto en PC-A “servidor” como en PC-B “cliente”.
# sudo apt-get install socat                                           

//Ejecutar en el servidor
# socat -d -d -d OPEN:/dev/ttyACM0 TCP4-LISTEN:31337                  

//Ejecutar en el cliente
# socat -d -d -d TCP4:<IP PC-A>:31337 PTY,link=/dev/ttyACM0        

# sudo chown USER:USER -vR /dev/ttyACM0 ; sudo chown USER:USER -vR /dev/pts
# sudo chmod 775 -vR /dev/ttyACM0 ; sudo chmod 775 -vR /dev/pts


Lo que estamos haciendo es que socat en PC-A "Server" habrá el archivo /dev/ttyACM0 (el dispositivo serie a compartir), y además abra un socket en modo LISTEN (escuchando por conexiones) en todas las interfaces del equipo, particularmente en el puerto 31337. Las opciones -d -d -d son opcionales y sirve para habilitar los mensajes de debug.


Y en PC-B "Cliente" se conecte a la IP 192.168.X.X:31337, y que localmente lo haga ver como un nuevo dispositivo serial (pseudo terminal) creado por socat mismo en /dev/pts/X, y además haga un symlink de éste al archivo /tmp/ttyACM0. A partir de éste momento en /tmp/ttyACM0 existe un archivo que puede ser abierto y ser utilizado como un dispositivo serie local.

Notese el cambio de usuario y permisos para poder acceder de PC-B al puerto serie "Virtual" desde cualquier usuario y/o programa.

Un detalle, cuando se cierra la conexión del socat en el cliente hacia el servidor, en el servidor también se termina la ejecución del socat (y viceversa), por lo que en caso de volver a establecer la sesión, es necesario ejecutar nuevamente en ambos equipos.