lunes, 15 de marzo de 2010

De las distribuciones de Linux más populares, ¿cuál es la más liviana?

Muchos usuarios novatos o incluso experimentados se han preguntado alguna vez cuál de las distribución de Linux más populares de hoy en día es la más liviana, refiriéndose a la cantidad de recursos de hardware consumidos que nos ha obligadolinuxses2 en muchas ocasiones a tener que actualizar o cambiar nuestra máquina por una más nueva y potente.

Es por esto que los chicos de The Linux Experiment han realizado un interesante pero improvisado estudio sobre cómo se comportan las distribuciones más populares en diferentes instantes del proceso de instalación. Para este estudio se utilizaron máquinas virtuales en VirtualBox 3.1.4 (Windows) con 512 MB de RAM, 8 GB de disco duro y un procesador de tipo x86.

Los resultados fueron los siguientes:

Memoria RAM utilizada en el primer inicio



Luego de haber instalado el sistema se analizó la cantidad de memoria utilizada para iniciar el sistema por primera vez. En el gráfico anterior podemos apreciar que Kubuntu 9.10 y Mandriva 2010.0 con KDE son las que utilizan la mayor cantidad de memoria con casi 200 MB de RAM, mientras que Debian 5.0 es la que utiliza menos, sólo 75 MB de RAM.

Memoria RAM utilizada luego de instalar las actualizaciones



Esta prueba mide la cantidad de memoria utilizada al iniciar el sistema luego de haberlo actualizado. Podemos apreciar que Kubuntu sigue siendo el que consume aún más memoria al momento de iniciar con más de 300 MB de RAM consumidos, mientras que Debian sigue consumiendo los 75 MB de RAM. La gran mayoría de las otras distribuciones mantuvo o disminuyó el consumo de RAM.

Tamaño de las particiones creadas por defecto



El gráfico anterior muestra el tamaño de las diferentes particiones creadas por defecto al momento de la instalación de cada una de las distribuciones. A excepción de Debian que utiliza el sistema de archivos ext3, todas las demás distribuciones utilizan ext4.

Espacio utilizado luego de la instalación y actualización



El gráfico anterior muestra el tamaño utilizado por cada una de las distribuciones luego de haber sido instaladas y actualizadas. La distribución que utiliza más espacio es OpenSUSE 11.2 con KDE con 3.7 GB y la que utiliza el menor espacio es Debian 5.0 con menos de 1.5 GB.

Conclusiones


Las conclusiones son muy claras, la distribución que consume menos RAM y espacio en el disco duro es Debian 5.0 seguida por Xubuntu y Ubuntu 9.10. Esta información es bastante útil si aún no te has decidido por que distribución instalarle a tu cacharrito, pero es sólo una referencia mínima por lo que se recomienda probar muchas distribuciones para saber cuál realmente es la que satisface tus necesidades.

Muchos podrán criticar que este experimento está bastante incompleto ya que no se analizaron tópicos como el consumo de CPU, algunas distribuciones como Arch Linux, Gentoo, Slackware o alguna distribución minimalista especialmente diseñada para equipos con pocos recursos, pero el autor señala que la intención de estas pruebas es analizar el comportamiento de las distribuciones más populares de la actualidad, con sus instalaciones por defecto y corriendo con poca memoria RAM, cuya tarea no es menor ya que no cualquiera estaría dispuesto a darse este trabajo.

Se invita a los lectores a completar el análisis realizando nuevas pruebas y comentando sus resultados, yo personalmente les recomiendo que utilicen una herramienta llamada Phoronix Test Suite para medir el rendimiento de tu sistema.

FUENTE

Skype buscaría estandarizar su codec SILK y publicaría su código

En la pagina de www.fayerwayer.com publicaron una muy buena noticia,

Skype ha enviado el código fuente de su codec de audio SILK a Internet Engineering Task Force (IETF), la organización que define y desarrolla los estándares de Internet. Lo que busca Skype es por una parte entregar al resto del mundo un codec de alta calidad para la transmisión de voz por Internet y por otra parte, obtener mejoras a través de la revisión de este código por otros expertos.

SILK es un codec o codificador/decodificador especialmente dedicado a la transmisión de voz en tiempo real que se ha incluido en las últimas versiones de Skype para sistemas de escritorio (Windows/Mac/Linux), y pronto se llevará a los equipos móviles.  SILK cuenta con mecanismos de optimización adaptativa, esto quiere decir que a medida que trabaja se da cuenta de qué optimizaciones son necesarias y puede proveer una calidad de sonido cercana a una conversación directa con poco ancho de banda, enfocándose en la voz para no desperdiciar recursos en ruido ambiental.

Según el CTO de Skype, SILK es el resultado de tres años de desarrollo, en donde se han enfocado en crear un codec de alta calidad y escalable en varios sentidos a través de su optimización adaptativa, por ejemplo respondiendo bien a las condiciones variables de la red (lentitud/latencia) y usando adecuadamente los recursos para funcionar bien incluso en aparatos con poca potencia de procesamiento como son los equipos móviles.

En el documento enviado a IETF se encuentra el código fuente de una implementación de referencia de SILK.  Si bien el código es abierto, no se trata de Software Libre, y es aquí en donde se nota la diferencia entre los conceptos de Software Libre y Código Abierto, ya que sólo se permite usar el código para pruebas e investigación, si se quiere usar para desarrollar productos comerciales se requiere una licencia de Skype.

Links:
- SILK speech codec (IETF Draft)
- Advances in audio (Daniel Berg, CTO de Skype)

viernes, 12 de marzo de 2010

Paginación en PHP

Como en mi vida diaria de Ingeniero no solo tengo que lidiar con Voz Ip, hay veces que tengo que programar algo y no me acuerdo, en este caso me paso con PHP y la paginación, buscando en nuestro buen amigo google halle un buen ejemplo (link), espero que les sea de mucha utilidad.

Este articulo explica uno de los metodos mas faciles y eficientes para paginar resultados obtenidos de una base de datos en PHP.

Como primer tenemos nuestra base de datos, en nuestro caso la nombramos "noticias" y le añadimos una tabla llamada "articulos" con la siguiente estructura...

CREATE TABLE `articulos` (
`id` INT NOT NULL AUTO_INCREMENT ,
`titulo` VARCHAR( 255 ) NOT NULL ,
`descripcion` TEXT NOT NULL ,
`contenido` TEXT NOT NULL ,
`fecha` DATE NOT NULL ,
`visible` TINYINT( 1 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

Nosotros hemos cargado la tabla con los titulares de un diario, la paginación final tiene este aspecto..


Pasemos a explicar el código, primero hemos creado la función de conexión a la base de datos...

function conectar()
{
$base_de_datos = "noticias";
$db_usuario = "root";
$db_password = "";




if (!($link = mysql_connect("localhost", $db_usuario, $db_password)))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db($base_de_datos, $link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}


No olviden modificar las variables $base_de_datos, $db_usuario y $db_password con sus correspondientes valores, esa función puede ir en un include (seria lo mas recomendado), luego llamamos a la funcion...

$db = conectar();

Ya tenemos la variable $db apuntada a nuestra base de datos el siguiente paso es definir los valores por defecto, como por ejemplo cada cuantos artículos paginar...

$registros = 3;

Y detectar si la variable $pagina (indica el numero de pagina actual) esta definida, si no es así le damos el valor 1 ósea que si no se paso por la url la variable $pagina (por ejemplo: "paginacion.php?pagina=2") entramos a la pagina 1 directamente...



$pagina = $_GET["pagina"];



if (!$pagina) {
$inicio = 0;
$pagina = 1;
}
else {
$inicio = ($pagina - 1) * $registros;
}


Como dato adicional la variable $inicio indica desde que registro empezar a mostrar los resultados. Pasemos al corazón de la paginación, miremos primero el código...



$resultados = mysql_query("SELECT id FROM articulos WHERE visible = 1");
$total_registros = mysql_num_rows($resultados);
$resultados = mysql_query("SELECT * FROM articulos WHERE visible = 1 ORDER BY fecha DESC LIMIT $inicio, $registros");
$total_paginas = ceil($total_registros / $registros);


Como ven realizamos 2 consultas similares en cuanto a su criterio de selección ("WHERE visible = 1"). Con la primer consulta obtenemos el numero de resultados totales...



$resultados = mysql_query("SELECT id FROM articulos WHERE visible = 1");
$total_registros = mysql_num_rows($resultados);


Ese dato de $total_registros nos sirve para poder determinar la cantidad de paginas. La segunda consulta tiene en el SQL dos elementos a analizar, el primero es el ORDER BY que lo que hace es ordenar los resultados por fecha y de forma descendente ("DESC") en caso contrario usaríamos "ASC".

El segundo elemento a ver es LIMIT $inicio, $registros esa cláusula SQL cumple la función de limitar los resultados devueltos, el primer valor pasado como parámetro indica desde que registro empezar a devolver los resultados y el segundo parámetro indica la cantidad de registros que debe devolver desde $inicio.

Luego solo queda el bucle que devuelve los resultados...

while($articulo=mysql_fetch_array($resultados)) {



echo "<b>".$articulo["titulo"]."</b><br>";
echo "<font color='#666666'>".$articulo["descripcion"]."</font><br><br><br>";




}

Como parte final nos queda lo que seria el navegador de paginas...


El código del navegador de paginas se divide en tres partes, primero la que muestra el link a la pagina anterior

if(($pagina - 1) > 0) {
echo "<a href='paginacion.php?pagina=".($pagina-1)."'>< Anterior</a> ";
}




El link a la pagina anterior será visible siempre y cuando no estemos en la primer pagina ($pagina - 1) > 0). La segunda parte del navegador de paginas seria la que muestra la cantidad de paginas...

for ($i=1; $i<=$total_paginas; $i++){
if ($pagina == $i) {
echo "<b>".$pagina."</b> ";
} else {
echo "<a href='paginacion.php?pagina=$i'>$i</a> ";
} }


Y la tercer parte es la que muestra el enlace a la pagina siguiente...

if(($pagina + 1)<=$total_paginas) {
echo " <a href='paginacion.php?pagina=".($pagina+1)."'>Siguiente ></a>";
}


En este caso muestra el enlace siempre y cuando no estemos en la ultima pagina (($pagina + 1)<=$total_paginas).

Podes descargar el ejemplo, lee el archivo leee.txt que esta dentro del ZIP para poder importar la base de datos y así utilizar el ejemplo.

Un agradecimiento a la web: www.elguruprogramador.com.ar por esta pasta de codigo sencillo y muy bien explicados

NOTA: En el archivo paginación.php agregar $pagina = $_GET["pag"];

miércoles, 10 de marzo de 2010

MSI presenta un terminal completamente táctil

En la página de Elio Rojano encontre esta interesante nota:

La empresa MSI acaba de presentar en el CeBIT un terminal IP completamente táctil, sin botones y que funciona con elsistema operativo Android.

El CeBIT es un evento donde los principales fabricantes presentan sus productos rodeados de medios, profesionales y muchos curiosos, principalmente porque las novedades presentadas son bastante llamativas para todos los públicos.
Uno de los grandes descubrimientos de esta exposición ha sido un teléfono completamente tactil con una pantalla de 9? y que en el cartelito dicta:

Soporta:

- PSTN y DECT (opcional)
- VoIP
- Llamadas de Videoconferencia
- Mensajería Instantánea
- Fácil panel táctil
- Sistema operativo Android


Pese a esto, el teléfono es impresionante, no sólo porque corre Android, si no porque su diseño “frontal” es perfectamente configurable y bastante original, no hay más que ver las fotografías y el siguiente vídeo:


martes, 9 de marzo de 2010

SNEP 1.1.2 Liberado

SNEP es una interfaz grafíca para manejar Asterisk. Esta provee un alto nivel de control sobre el routeo y laadministración de los usuarios, haciendo la administración de la PBX sencilla para aquellos que no tienen mucho conocimiento técnico.


Descargar

lunes, 8 de marzo de 2010

i6net lanza la versión VXI* 4.4 de su navegador de VoiceXML

La gente de i6net acaba de publicar la versión de VXI* 4.4 de su navegador de VoiceXML para las últimas versiones de Asterisk 1.4 y Asterisk 1.6.


Esta versión también es compatible con Asterisk EC2 (de Amazon EC2) y servidores virtuales Xen.


Esta versión tiene los siguientes cambios y modificaciones:

  • add: Complete DTMF buffering during HTTP long requests.

  • add: Add paramter threshold to configure the VAD/silence (record).

  • add: Add parameter autoexit to kill asterisk if the connection with VXI is lost.

  • add: Set record maxtime shadow variable.

  • add: Improve prompt hangup and bargein (skip HTTP processing, limit queue-fill).

  • mod: Select the first account with redirection(s).

  • add: Add clean support of noinput and hangup event during the record.

  • add: Add the account parameter “force” to set Transfercapability=VIDEO.

  • mod: Improvement of the bridge transfer (use with transcode).

  • mod: Disable the msgqlock.

  • add: Add parameter videoprofile (to controle the video codec transcoder).

  • add: Check the account in the vxml(@) execution.

  • mod: Correction to control the call answer.

  • add: bridge and spawn modes for localformat.

  • mod: Add the DOCTYPE in the grammars.

  • mod: Correction in the session release (wait for playall).

  • mod: Correction for better speech support.


Para descargarlo podeis hacerlo desde su propia página web:

» Linux 32bit : Debian Etch | Debian Lenny | CentOs 5 | Debian Sarge | otros…
» Linux 64bit : Debian Etch | Debian Lenny | CentOs 5 | otros…

O entrar su web para más información:
http://www.i6net.com/products/vxi/

martes, 2 de marzo de 2010

OutCALL (integración de Asterisk con Outlook)

OutCALL es un programa diseñado para integrar Asterisk con Microsoft Outlook. Se pueden configurar tanto cuentas SIP como IAX. Tras más de 1000 descargas, sus creadores han decidido liberarla bajo una licencia BSD, y sus características son las siguientes:

* Extensiones ilimitadas SIP e IAX.
* Integración automática con Outlook 2000 o superior.
* Log de llamadas.
* Aviso de llamadas mediante pop-ups.
* Realización de llamadas desde Outlook, un email o un contacto.
* Actualización automática de los datos de un contacto.
* Notificaciones automáticas de actualizaciones de la aplicación.
* Información de debug detallada.
* Completa integración con Asterisk.

http://outcall.sourceforge.net/