jueves, enero 20, 2011

Comparación entre los distintos formatos de compresión (zip,gzip,bzip2,rar,7z), tamaño de compresión, tiempo do compresión, descompresión.



Comparación entre los distintos formatos de compresión (zip,gzip,bzip2,rar,7z), tamaño de compresión, tiempo do compresión, descompresión.


Comparative between compression formats (zip,gzip,bzip2,rar,7z), compression size, compression time, decompression time.


Este comparativo se realiza sobre la compresión de un archivo grande, especificamente un archivo de imagen (.iso) de un juego de GameCube, y los elementos que se miden son el tamaño y el tiempo de compresión, en todos los casos se utiliza el nivel de compresión máxima con el fin de ver que formato brinda la mejor compresión.


This comparative is about the compression of a big file, specificaly a (.iso) image file of a GameCube game, the measure properties are compression time and compression size, in all the cases maximum compression level is used to be able to see witch format performs better.


Formato (format) parametros (params) Tamaño (size)
bytes
Tiempo (time) Tiempo descompresion
ORIGINAL 1459,978240
zip (.zip) -9 1272,705622 6m 56s 2m 9s
gzip (.gz) -9 1272,705473 6m 51s 2m 2s
bzip2 (.bz2) -9 1268,500602 31m 22s 8m 48s
rar (.rar) -m5 1212,932724 49m 13s 2m 41s
p7zip (.7z) defaults 1185,334394 31m 27s 6m 37s
p7zip -mx=9 1159,741390 42m 1s
p7zip -m0=LZMA2 -mx=9 1158,557214 37m 33s, 45m 9s 6m 4s

Como podemos ver los formatos que más se la rifan son el .rar y el .7z, por una diferencia considerable con los otros por lo que realizo más pruebas para estos dos formatos específicos con más archivos:

formato Tamaño Tiempo
original 1459,978240
rar a -m5 x.iso.rar x.iso 1163,104105 47m 49s
7z a -m0=LZMA2 -mx=9 x.iso.7z x.iso 1123,311172 2h 33m 1s
7z a -m0=LZMA2 -mx=9 -md=32m x.iso.7z x.iso 1147,526305 31m 35s

Como se aprecia en la tabla anterior, el 7z da una mejor compresión pero se tarda 2 horas para conseguir 40Mb menos, supongo que es por el tamaño default con que asigna el diccionario ya que consume gran cantidad de memoria, y me di cuenta que utilizo espacio de intercambio, por lo que probablemente eso impacto en tanto tiempo de ejecución, para comprobar realice la prueba definiendo el tamaño de diccionario limitando la cantidad de memoria requerida, según wikipedia, la cantidad requirida de RAM es 10 veces el tamaño del diccionario al comprimir y el tamaño del diccionario al descomprimir.

Así que con un diccionario de 32Mb -md=32m el tiempo de ejecución se reduce considerablemente incluso a un tiempo menor que el rar, con una compresión mejor.


Aquí el resultado con otro archivo, como se puede ver .7z obtiene mejor tiempo y una reducción considerable de 107Mb menos que .rar

formato Tamaño Tiempo
original 1459,978240
rar a -m5 832,572483 38m 42s
7z a -m0=LZMA2 -mx=9 -md=32m 725,846076 32m 33s

El resultado de otro archivo:


formato
Tamaño
Tiempo
original
1459,978240
rar a -m5
1212,932751
48m 21s
7z a -m0=LZMA2 -mx=9 -md=32m
1159,129496
34m 24s


Puede que valga la pena hacer un estudio sobre el .7z para ver la relación entre a) tamaño de diccionario, b) compresión obtenida, c) tiempo de ejecución.

martes, noviembre 16, 2010

El formato EPUB para publicar libros electrónicos

Después de investigar un poco en la web sobre los formatos en los que se están publicando los libros electrónicos, y de leer en la wiki http://en.wikipedia.org/wiki/Comparison_of_e-book_formats, me doy cuenta que los formatos más fuertes hoy día (2010-11-16) son el epub y el mobipocket


Recuerdo que tengo algunos libros en formato epub que baje la semana pasada, así que me doy a la tarea de investigar sobre el contenido del archivo, al mostrarlo con less veo la palabra zip, así que supongo que la extensión .epub es solo un adorno y en realidad se trata de un archivo .zip, cambio la extensión y luego extraigo el contenido con unzip, para ver que los archivos que contiene son en su mayoría XML, y que el libro esta descrito mediante los ya tan familiares XHTML y CSS lo cual es una grata sorpresa para mí que conozco estas tecnologías. Incluso el archivo de tabla de contenidos, es un XML bastante entendible.

En la wikipedia se puede encontrar más información respecto a este formato abierto, que Amazon todavía no soporta en el Kindle 3 http://en.wikipedia.org/wiki/EPUB

lunes, noviembre 01, 2010

Screen capture in linux, using ffmpeg

ffmpeg in ubuntu can be used in very simple way to capture directly from the X server in this way

TS=`date +%Y%m%d_%H%M`; ffmpeg -s 1024x600 -f x11grab -r 1 -i :0.0 -s 768x450 -vcodec flashsv sesion-$TS.flv

we indicate the original size (-s 1024x600) and the frame rate of grabbing (-r 1) that is and X grabbing (-f x11grab) the source screen (-i :0.0) and the desired video codec (-vcodec flashsv) o sea flashscreenvideo and the file format of the file container in this case flash video (.flv)

other example can be to obtain and avi using mpeg4 as video encoding

TS=`date +%Y%m%d_%H%M`; ffmpeg -s 1024x600 -f x11grab -r 1 -i :0.0 -s 768x450 sesion-$TS.avi

or using xvid codec

TS=`date +%Y%m%d_%H%M`; ffmpeg -s 1024x600 -f x11grab -r 1 -i :0.0 -s 768x450 -vcodec libxvid -aspect 16:9 -qmax 10 flashsv sesion-$TS.flv

we can omit the -qmax parameter or put a value between 2-31, 2 is the best quality

domingo, julio 04, 2010

como instalar java en ubuntu 10.04 10.4

para todos los que venimos usando el apt, sabemos que ejecutando un

sudo apt-get install APPNAME

es suficiente para instalar software, pero lo importante es conocer el nombre del paquete de software

en versiones anteriores de Ubuntu (8.04, 8.10, 9.04, 9.10) para instalar java el paquete que necesitabamos para el runtime era uno de estos:

* sun-java5-jre
* sun-java6-jre


y para el kit de desarrollo de software uno de estos dependiendo la versión que eligieramos:

* sun-java5-jdk
* sun-java6-jdk


Sin embargo en la version 10.04 decidieron cambiarle el nombre a los paquetes, debido a no se que razón y ahora se llaman respectivamente:

* openjdk-6-jre
* openjdk-6-jdk


Así que podemos instalar el entorno de ejecución de JAVA con:

sudo apt-get install openjdk-6-jre

y el entordo de desarrollo con:

sudo apt-get install openjdk-6-jdk

me pregunto, ¿de quien sera la grandiosa idea de cambiar los nombres a los paquetes?, deberían de dejar un alias con el mismo nombre que avise del nuevo nombre explicando la razón

espero esto les sea de utilidad

miércoles, mayo 05, 2010

¿como buscar archivos en los servicios de file sharing?

Pues aunque suene descabellado, ya hay un buscador especializado en dichos sitios, si conocen otros no olviden dejarlos en los comentarios para agregarlos.

http://www.filestube.com/

martes, mayo 04, 2010

ejemplo: superioridad de interfaz de texto sobre interfaz grafica

carajo, me borro todo lo que había escrito, el punto es que en la interfaz gráfica no detecta la partición como se ve aquí


mientras que si lo hace con la utilidad de linea de comandos como se ve acá

como mejorar el rendimiento de linux retrasando el uso de memoria virtual

hay una variable del kernel que nos permite indicarle el % (entre 0 y 100) de la tendencia del kernel al usar memoria virtual, para ver que valor tiene en nuestro sistema usamos este comando

cat /proc/sys/vm/swappiness
60

en mi caso tengo 60
para cambiarlo en la sesión de trabajo actual y ponerlo a 0

sudo sysctl vm.swappiness=0

para hacerlo permanente es necesario editar el archivo /etc/sysctl.conf
agregando la línea

vm.swappiness=0


salvamos y listo, la próxima vez que arranquemos esta variable sera 0 como podrán comprobar, en mi caso, al poner el valor en 0 ha mejorado considerablemente la responsividad de las aplicaciones

happy tunning

ALCANCE:

como todo, esta modificación tiene su lado negativo, y es que mientras se mejora el rendimiento mientras que aún hay memoria RAM libre, al retrasar el uso de swap hasta el final, cuando se agota la RAM, y es necesario hacer uso del fichero swap, el sistema se paraliza casi por completo mientras observamos como escribe turbadamente al disco duro, perdemos la respuesta del sistema por un buen rato (a mí me llego a pasar que hasta por 10 a 30 minutos), por lo que ya no recomiendo utilizar esta técnica

file sharing sites o como compartir archivos grandes

Problema:

necesito compartir un archivo grande con otra(s) personas, pero es muy grande para mandarlo por email

Solución:

en la red existe un buen número de sitios donde podemos subir archivos grandes (hasta de 50 a 200Mb) y nos genera un link con el cual poder compartir el archivo, dicho link es la única manera de acceder al archivo, es decir solo a quien le demos el link podra descargar el archivo

si el archivo rebasa el tamaña máximo, existen programas como el rar o el zip que permiten partir el archivo en varios trozos que posteriormente a ser descargados todos se pueden juntar

Sitios que ofrecen este servicio:

http://mediafire.com
http://rapidshare.com
http://depositfiles.com
http://socifiles.com
http://4shared.com

viernes, abril 30, 2010

microsoft discrimina, competencia desleal

Hoy (2010/04/30) es el evento de Microsoft titulado "Las tres pantallas y la nube", viene Steve Balmer de microsoft, curiosamente también aprovecha para comprometer al gobierno mexicano y seguir hacienda a México dependiente de sus tecnologías obsoletas , caras, monopólicas, excluyentes y enajenadoras

Es un gran cinismo de que hablen de elevar a México, pero solo estén dispuestos mientras puedan hacernos dependientes, por ejemplo presentan el sitio

http://www.elevemosmexico.org/

pero para variar solo lo pueden ver los que usan su tecnología, en este caso Silverlight, que es un intento por desplazar a flash que ya esta en uso en el 99% de los navegadores, sin embargo FLASH si brinda soporte para las diferentes plataformas ya sea linux, mac y obvio windows


así que no puedo ver que proponen porque me saca esto (click para ampliar), esto es la  forma moderna de discriminación, al igual que hacen las dependencias de gobierno y las páginas de los bancos donde si no uso Internet Explorer y windows, no se puede ver correctamente o no funciona correctamente, (me paso con la página de bancomer al tratar de imprimir mi constancia de intereses de crédito hipotecario):

¿porque microsoft no logra entender el concepto de interoperabilidad?

solo significa ser agnóstico en cuanto a la tecnología, por ej. a una carretera no le importa la marca del coche que tengamos, así debe ser con los portales de gobierno y comerciales, deben de dar acceso sin importar que navegador o sistema operativo usemos, solo de esta manera podemos cerrar la brecha digital y no comprometiendo el futuro del país con el uso de una solo tecnología propietaria que excluye y no sigue estándares para eliminar a la competencia, competencia desleal

martes, abril 27, 2010

windows, autorun y proclividad a la transmisión de virus

si queremos crear un medio extraible ( unidad usb, o cd, o dvd ) que cuando sea insertado en una máquina con windows, se ejecute un programa, acción o comando, es tan sencillo como colocar en la raíz del sistema de archivos de la unidad un archivo con nombre

autorun.inf

el cual debe contener lo siguiente:

[autorun]
open=RECYCLE\D-0-060-0000000000-1111111-2222222\venet.exe
icon=%SystemRoot%\system32\SHELL32.dll,4
action=Open folder to view files
shell\open=Open
shell\open\command=RECYCLE\D-0-060-0000000000-1111111-2222222\venet.exe
shell\open\default=1


como vemos este ejemplo lo tome de ejemplo de un virus que se colo en mi memoria usb, cuando fui a hacer la declaración al SAT y les di mi memoria para que usaran mi firma electrónica, en mi sistema ubuntu linux puedo meterlo con toda confianza, y ver que esos archivos que no estaban ahora aparecen, y no son otra cosa que un virus, también desde ubuntu puedo borrar el autorun.inf y la carpeta RECYCLED para limpiar la memoria del cochino virus

si buscamos en google venet.exe encontramos de que virus se trata y su comportamiento http://www.prevx.com/filenames/430314620930797656-X1/VENET.EXE.html muy perro por cierto

esto es una demostración más de lo poco fiable que son los sistemas operativos windows, ya que su diseñador, el tan conocido Bill Gates, penso, "el usuario es pendejo, para que complicarle la vida teniendo que abrir y ejecutar el contenido de los medios extraibles, no! mejor que se ejecuten solos cuando los inserte"

respecto a la sintaxis del autorun.inf
open se usa para especificar el comando que deseamos ejecutar
icon para indicar el path del icono que deseamos tener
action supongo que es para indicar en que acción se debe ejecutar
shell permite agregar elementos al menu contextual

para saber mas:

http://en.wikipedia.org/wiki/Autorun
http://es.wikipedia.org/wiki/Autorun
http://www.vsantivirus.com/inf-autorun.htm

jueves, abril 22, 2010

rsync y sus usos: sincronizar y respaldar archivos

rsync --archive --update --verbose --progress origen destino

origen y destino son las rutas de los archivos a copiar, pueden ser locales o remotos

para el caso de locales solo es el path absoluto o relativo

absoluto (comienza con /) ej:
/home/poncho/documentos

relativo (a donde estamos parados cuando damos el comando) ej:
documentos/tareas

para el caso le los remotos podemos especificar el usuario y el servidor de donde jalar los archivos ej:

poncho@www.google.com:/home/poncho

si el usuario es el mismo con el que estamos trabajando queda así:
www.google.com:/home/poncho

al ejecutar el comando el rsync compara que origen con el destino y copia todos los archivos que no están en el destino y los que han sido actualizados en el origen, y no hace nada si el archivo ya se encuentra en el destino, lo que permite replicar el origen en el destino

Como configurar apt para que utilice un proxy

añadir a
/etc/apt/apt.conf

lo siguiente:

ACQUIRE {
        http::proxy "http://192.168.2.100:3128/"
}

ajustar ip del proxy y puerto del proxy según sea necesario
si el proxy maneja autentificación quedaría "http://usuario:password@proxy_ip:port"

martes, abril 20, 2010

nota de configuración de DHCPd en DD-WRT

si en nuestra LAN tenemos un router linksys y hemos cambiado el sistema operativo por el fabuloso dd-wrt, y si tenemos activado como DHCP server el DNSMasq, pero queremos que el gateway no sea el linksys sino otro equipo en la LAN, tenemos que agregar en la pestaña de services > dnsmasq > aditional options

dhcp-option=lan,3,192.168.2.100

referencias:

http://www.linux.com/archive/articles/149040

hacking:
para averiguar que tiene que llevar lan, lo que hice fue mediante telnet conectarme el router, dado que no trae el comando ls, para poder ver que archivos hay en el sistema se puede usar echo * y para saber en que directorio estamos pwd


así podemos obtener el contenido del archivo /tmp/dnsmasq.conf

que contiene dicha linea "dhcp-option=lan,3,192.168.2.254"

después de hacer la modificación via la interface web, como se describe al inicio, si vemos el contenido de /tmp/dnsmasq.conf veremos que agrego al final la linea "dhcp-option=lan,3,192.168.2.100" lo cual nos permite especificar que gateway debe asignar el DHCP a los clientes

lunes, noviembre 21, 2005

Decisiones, all is about decisions!!!!

Tengo una gran cantidad de archivos de computadora, y por tanto es necesario que los queme en CDs o DVDs para liberar espacio en disco ya que son la mayoria archivos multimedia que deseo conservar y organizar, por tanto necesito una aplicación que me permita tener una base de datos de los archivos para así saber rapidamente en que cd tengo un archivo o para saber cuando un archivo esta repetido.

Así que quiero poner manos al codigo, y hacer una aplicación para cumplir con este proposito, pero tengo que analizar las alternativas que tengo para desarrollar dicha aplicacion las cuales son las siguientes:

  1. Standalone en Java
  2. Standalone en PHP / GTK+
  3. Aplicacion PHP con front end Web


Ahora bien no se en que sea mas conveniente programar la aplicación la opción 3 realmente creo que debo descartarla por se poco práctica, así que paso a analizar las ventajas y desventajas de las otras opciones:

Opcion 2
- aprender GTK
- la instalación parece complicada
+ fuerte dominio de PHP

Opcion 1
+ portabilidad, va a poder correr en windows, linux, mac, etc.
+ mejorar mis habilidades de desarrollo de java
+ va a ser sencillo que la aplicacion pueda ser usada por otros
- probablemente tenga un consumo alto de memoria, pero no necesariamente

Todo lo que tuve que hacer, para darme cuenta de que la Opción 2 no era recomendable:

Respecto a poder instalar PHP5 mediante apt en Debian, pues resulta que tengo que actualizar a la version testing para que pueda instalar los paquetes que existen, lo cual en si mismo es un buen experimento para averiguar que tan bien funciona el proceso de cambio de stable a testing, y a la ves ver que tan buenos son los paquetes de la distro testing, ademas para probar algo diferente a compilar de los fuentes y probar las mieles de los repositorios apt.

Ok, me animo a pasar a testing.
Voy a hacer el cambio y ver que pasa....

Ok voy a borrar la linea

APT::Default-Release "stable";
en /etc/apt/apt.conf

Y /etc/apt/sources.list queda como sigue:

deb ftp://ftp.us.debian.org/debian/ testing main contrib non-free
deb-src ftp://ftp.us.debian.org/debian/ testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free


Ok, ahora viene lo bueno.
apt-get update
apt-get upgrade


Segun el estimado le va a tomar 50 minutos en mi enlace a 512Kbits/seg, bajando a 52Kb/seg.

Sin embargo, hay paquetes que marca como retenidos y para ello al buscar en el google encontre que para solucionar esto hay que correr:
apt-get update
apt-get dist-upgrade


Lo cual actualiza incluso el kernel, y despues de reiniciar todo funciono correctamente y sin problema.

Una vez instalado hay que ver si ya puedo instalar el php5-cli para hacer aplicaciones php standalone para linea de comandos, y luego probar algunos ejemplos usando php con gtk.

Reiniciando la maquina, ahora si el sistema me permitio instalar los paquetes que se necesitan:

apt-get install php5-cli php5-dev



Luego descargar el fuente de php-gtk, y extraerlo.

y luego siguiendos las instrucciones
./buildconf
./configure

Pues no pasa el configure, ya que marca que solo se puede compilar con PHP 4.3.x, y al buscar en el google encontre que no es posible compilarlo con PHP5 y que las librerias GTK que utiliza son algo viejas.

En internet indican que hay instalar algunos paquetes pero esto de las dependencias es un lio bastante tedioso, otra opción es bajar las fuentes de PHP 4.3.10 y compilar el php, y luego el PHP-GTK, sin embargo no estariamos aprovechando las ventajas de orientacion a objetos de PHP5.

Todo esto demuestra que no es una opción viable, ya que la opción de java presenta ventajas considerables, en cuanto a portabilidad, facilidad en la instalación de elementos para el desarrollo, y el hecho de que la aplicación desarrollada puede ser usuda sin problema por los miles de usuarios con un JRE, así que las ventajas estan a la vista y por tanto voy a optar por olvidar este asunto del PHP-GTK y hacer el desarrollo en java.

jueves, noviembre 10, 2005

Accesando a archivos sobre SFTP desde el editor jEdit

Instalé el plugin de FTP para el jEdit ya que así puedo tener acceso a archivos remotos en un servidor unix (linux) usando SFTP, sin embargo al intentar me dio el error:

Cannot list directory: com.sshtools.j2ssh.SshException: Authentication has not been completed!

Al buscar en el google, encontre que el jEdit tiene una comunidad de usuarios, y dicho problema ya estaba documentado:
http://community.jedit.org/?q=node/view/1616

Al leer toda esa palabrería en resumidas cuentas comentan que es debido a un parametro de configuración del Servidor SSH sobre el que se esta intentando hacer la la conección, el parametro que mencionan es el parametro PasswordAuthentication entonces esto me indica que es algo que tiene que ver con el Servidor SSH, dado que estoy usando linux debian, se que el servidor ssh se llama sshd, por tanto consulto la pagina del manual de sshd

man sshd

Ahí encuentro que la configuración del servicio se encuentra en
/etc/ssh/sshd_config

Al abrir el archivo y buscar el parametro encuentro
PasswordAuthentication no

y lo cambio por
PasswordAuthentication yes

Luego para probar que esto era el problema pues reincio el servicio de sshd

/etc/init.d/ssh stop
/etc/init.d/ssh start

Y pruebo nuevamente la coneccion desde jEdit, y EUREKA problema resuelto!!!! Y ahora si ya puedo editar mis archivos sobre SFTP, genial !!!!

Este parametro es para habilitar que sshd acepte el password pelon por el tunel (tunneled clear text passwords), me imagino que debe tener alguna implicacion negativa para la seguridad, pero espero que no sea mucho problema ya que lo utilizo solo desde mi LAN.

miércoles, septiembre 28, 2005

Mi primer blog.

Esta es mi primer entrada en mi blog, solo para ver como va a quedar, por fin me anime a utilizar un servicio de blog, ya que si me espero a desarrollar mi propio software, pues nunca voy a comenzar, veamos que tal esta esto, como pude ver tiene un editor de texto enriquecido, podría ver como lo hicieron, esta muy bien, puedo tomar ideas para mis desarrollos DHTML.