domingo, 26 de noviembre de 2017

uyGuia

El proyecto uyGuia se ha descontinuado por diferentes motivos.
Al que quiera seguir utilizando la APK o hacerlo via WEB tiene que usar la nueva dirección:
uyguia.krabtv.com

El ícono de Android que aparece descargara la APK que apunta a ésta webapp en su telefono.

viernes, 26 de agosto de 2016

SUS 17 mini

Hemos decidido saltearnos la versión 16 de S.U.S. ya que el año no se presentó muy próspero.

Así que pensamos en un desarrollo doble para el 2017: El SUS 17 mini y el SUS 17 pro.

Estamos en pleno desarrollo del SUS 17 mini que contará con una novedad que llamamos streamdb. Se trata del almacenamiento de los videos en un formato TS unificado a los criterios de la configuración del usuario.
Se podra seleccionar fragmentos de 1 segundo de duración mínima de cada video, concatenarlos con otros y generar un solo stream. A su vez, a l hora de almacenar el streamdb podrá manejar múltiples unidades de discos. En el momento de almacenar define en que disco guardarlo evitando que se llenen.
El sistema genera un stream multicast con video H264 y audio mp2. El video soporta hasta el FullHD (1920x1080) y el audio se emite en estereo a 192kb.

En desarrollo.
El sistema se controlará desde una API web, una consola Linux y/o su propio sitio web.
Se podrá emitir videos previamente almacenados y el sistema mantendrá un sistema para relleno en caso de no haber videos en el spooler.
Cuenta con un motor gráfico de doble spool: uno para aplicaciones y otros para gráficos del usuario.

Otras funcionalidades se encuentran en desarrollo.

Hemos venido reescribiendo el código desde nuestro primer SAS. Ganando en experiencia en éste terreno en donde hay pocas alternativas para los Cable Operadores y emisores de video profesional.

Muy pronto!

martes, 9 de agosto de 2016

Scripts controlados

Queremos compartir un nuevo script que nos está resultando muy util en nuestros sistemas. Es una evolución de KRUN (Krab RUN) siempre apuntando a la simplicidad y efectividad.
El nuevo código requiere que el programador cargue una variable con un ID que no vaya a repetir. Que no se encuentre en tiempo de ejecución en otros programas y que sea mnemotécnicamente identificable por el programador.

El concepto es muy simple, se lanza el script y al ingreso comprueba si existe su propia ID dentro de los programas en ejecución, en caso de no existir asume que no fue ejecutado  y se ejecuta mediante un exec y finaliza el script. La diferencia es que el lanzado por exec tendrá la ID como parte de los parametros de ejecución. De ésta manera en la segunda instancia si existirá una copia ejecutándose y no se lanzará nuevamente.

#!/bin/bash
# #########################################################
# Script programado por Carlos Giurleo - V0.2
# Uso de dominio publico
#
# ID unica para este script basado en el nombre sin ruta
unid="`basename $0 | base64`"
#
# Control de duplicado
if [ "`ps aux | grep ${unid} | grep -v grep`" = "" ]; then
        echo ${unid} > /tmp/${unid}.unid
        exec $0 $@ ${unid}
        exit
fi
# Control de instancia
if [ "`echo $@ | grep ${unid}`" = "" ]; then
        exit
fi
 # #########################################################
#
#
# MAIN

while true; do
        echo Funciona
        sleep 1
done


Si el script se vuelve a cargar estando en ejecución, no se validará porque ya existirá una copia y continua al segundo control. El mismo verifica que en la linea de comandos exista la ID. Esta trampa está para evitar el siguiente escenario:
Un script se ejecuta desde un cron. Se carga, hace su primer recarga y ya se está ejecutando con el ID entre sus comandos. Si el cron lo vuelve a ejecutar, la primer trampa no lo dentendria ya que SI existe una copia en ejecución. Para evitar que se ejecute nuevamente la segunda trampa detectará que no es una ejecución válida ya que no tiene el ID entre los parámetros.

Obviamente desde el # MAIN hacia el final irá el código que necesite. El loop fue colocado como demo.

Código cedido a dominio público.


lunes, 14 de marzo de 2016

KSMS descontinuado

Desde hace varios años venimos utilizando los servicios de mensajes de texto (SMS) para diferentes funciones.
Lo hemos utilizado para controlar servidores, interacción con programas de TV, servicios al cliente, retorno de status, etc.
Todo ha sido posible gracias a una pequeña gran aplicación llamada gammu la cual viene funcionando desde hace mas de 7 años en un servidor Ubuntu Server.
No fué facil desarrollar el sistema, hemos pasado largas jornadas de testing y cientos de SMSs de prueba para llegar a dejarlo operativo a total satisfacción.
Hemos desarrollado una serie de scripts para controlar dicha aplicación y poder crear un sistema que recibe SMSs, los procesa por su primer palabra y en base a ésta redirecciona al servidor con el mensaje o ejecuta algún script complemento para dicha función.
También desarrollamos servicios que envían SMSs bajo determinados parámetros.
Algunos de los servicios que hemos brindado:
  • CX - Función que devolvía los datos el registro CX de URSEC.
  • ENCUESTA - Función para realizar encuestas.
  • CLIP - Enviaba mensajes en pantalla a la señal de CLIP (Canal 175 - TVCable Young)
  • CCY - Función para pedir películas para el canal CABLE CLUB (Canal 172 - TVCable Young)
  • PROMESA - Función creada para la Primer Iglesia Bautista de Young, devolvía una promesa de la Biblia al azar.
También lo utilizamos para mensajes al Canal Local (Young Tevé) y otros servicios mas.
Controlabamos varios servidores pudiendo ejecutar comandos como ser: switchear videos, mandar a tandas, lanzar programas, reiniciar servidores y varios mas.

En breve vamos a apagar definitivamente el servidor que opera nuestro viejo sistema de SMSs. Iremos reemplazando paulatinamente los servicios por aplicaciones web y/o para celulares.


Gracias a todos los que han utilizado el servicio.

jueves, 11 de febrero de 2016

Krab run

Dependiendo de la complejidad del sistema que estemos desarrollando, podemos toparnos con la necesidad de lanzar procesos varias veces y no saber si están siendo ejecutado o ya terminaron. Por ejemplo, un cron que se ejecuta cada una hora pero no queremos que se ejecute si el anterior pedido se encuentra en proceso actualmente.

Probablemente existan muchas f'órmulas para solucionar ésto como por ejemplo marcas al inicio del script que las borramos en la salida, pero también puede darse el caso de que el script aborte en plena ejecución dejando la marca.

En fin, despues de muchos intentos llegué a un pequeño script que llamé krun (Krab RUN) que comparto por si le interesa a alguien mas.
El script lo copié a /usr/bin/ y para ejecutar cualquier programa basta con poner: krun programa [parámetros] .

#!/bin/bash
# krun - Krab Run - Copyright 2015 Carlos Giurleo
# Este programa se distribuye bajo los terminos de la General Public License de GNU

if [ "${1}" = "" ]; then
        echo "krun - Krab Run - Copyright 2015 Carlos Giurleo"
        echo "Version: 20160110"
        echo "Use: $0 programa [parametros]"
        exit
fi
LOCK_FILE="/tmp/`echo -n ${0}${@} | md5sum | awk '{print $1}'`.lock"
if ! [ -e ${LOCK_FILE} ]; then
        echo -e $$ $0 $@ > ${LOCK_FILE}
fi
PATH=${PATH}":./"
export LOCK_FILE
flock -n ${LOCK_FILE} $@ && if [ -e ${LOCK_FILE} ]; then rm ${LOCK_FILE}; fi

El script genera en el /tmp un archivo MD5 .look relativo a la linea completa de ejecución. Dentro está el PID de ese krun el comando con sus parámetros.

Si se va a ejecutar un script y se quiere tener un loop constante pero modificable, se puede incluir dentro de dicho script un while de la siguiente manera:

while [ -e ${LOCK_FILE} ]; do

De esa manera cuando se elimine el archivo lock del tmp no se cumple la condición para el loop y sale del script.


domingo, 31 de enero de 2016

Musica 24 en producción

Entramos en la face Beta de Musica 24. El producto se encuentra operativo al 100%. Solo resta solucionar problemas imprevistos que vayan surgiendo.

En estos dias lo tendremos operativo en nuestro primer cliente que se mostró interesado en el sistema y oficiará de beta-test .


Musica24 es un sistema de stream de audio por internet orientado a insituciones que deseen publicidad exclusiva.

El cliente obtiene una dirección única de stream reproducible con la mayoría de los reproductores o navegadores compatibles con html5. También obtiene un usuario mediante el cual podrá administrar su cuenta.
Desde dicha cuenta podrá seleccionar uno de los varios estilos de música y que publicidad desea tener activa.

El ciclo es:    [cancion] - [pique] - [publicidad] - [pique]  para luego reiniciar el ciclo.

El administrador podrá cambiar datos del cliente e incluso desactivarlo. Al desactivarlo el cliente no tendrá acceso a su cuenta y solo escuchará publicidad generica de musica24.net

Hemos implementado el concepto de que cada cliente perrtenezca a un administrador. De ésta manera los administradores no podrán modificar valores de clientes que no sean propios.

http://musica24.net:8000/demo.ogg



lunes, 25 de enero de 2016

Musica 24

Presentamos un nuevo servicio en etapa alpha: Música 24. Se trata de un servidor de stream de música de 24 horas orientado a lugares donde desean tener música funcional y a su vez anunciar sus productos.

El servidor cuenta, en ésta primera etapa, con 3 estilos diferentes de música que el cliente podrá seleccionar en su propia cuenta. La dirección de stream es única para cada cliente y podrá compartirla si lo desea. El stream tendrá entre canción y canción un spot publicitario mas la identificación de su comercio si así lo desea. De ésta manera el cliente ofrece no solo música sino también una publicidad moderada y exclusiva de sus servicios.

El servicio se encuentra en etapa de pruebas, de igual manera se puede escuchar la emisión de prueba en http://musica24.net:8000/demo.ogg