Linux Blog http://www.rz0r.net Otro blog mas de linux Sun, 01 Aug 2010 00:27:12 +0000 en hourly 1 http://wordpress.org/?v=3.0.1 Detección y redirección de móviles con Apache mod_rewrite. http://www.rz0r.net/2010/07/deteccion-y-redireccion-de-moviles-con-apache-mod_rewrite/ http://www.rz0r.net/2010/07/deteccion-y-redireccion-de-moviles-con-apache-mod_rewrite/#comments Wed, 28 Jul 2010 04:51:56 +0000 rz0r http://www.rz0r.net/?p=148

Cuando se desarrollan aplicaciones web o versiones móviles de sitios una aspecto fundamental es la detección del móvil y sus capacidades existen 2 opciones para realizar esta tarea ambas utilizan base de datos formatos XML con las características de los móviles una es opensource WURFL y la otra es Device Atlas la cual funciona en base a licencias, gratuita para evaluación con la data de ambas es posible implementar la detección del móvil y sus capacidades.

Ahora bien como dice el titulo de este articulo detección y redirección con Apache mod_rewrite , si no se requiere una solucion compleja lo mas sencillo y rápido si se esta trabajando con Apache es usar su modulo de re-escritura de url ( mod-rewrite ) y eso es mediante unas cuantas reglas en un archivo .htaccess en el directorio como estas:


RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} ^(Android|BlackBerry) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(Motorolla|Nokia|Samsung|SonyEricsson) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} iP(hone|od) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*Mobile.*Safari

RewriteRule ^$ http://movil.midominio.com  [R=301,L]

La deteccion es proporcionada por las expresiones regulares evaluadas de la variable “HTTP_USER_AGENT” y la redireccion por la expresion “RewriteRule ^$ http://movil.midominio.com [R=301,L]” en este caso por ejemplo tenemos un sitio en “midominio.com” y una version movil en “movil.midominio.com” el htaccess redireccionara cada peticion que sea movil al subdominio automaticamente.

]]>
http://www.rz0r.net/2010/07/deteccion-y-redireccion-de-moviles-con-apache-mod_rewrite/feed/ 0
Permutaciones con Python http://www.rz0r.net/2010/04/permutaciones-con-python/ http://www.rz0r.net/2010/04/permutaciones-con-python/#comments Wed, 14 Apr 2010 05:24:18 +0000 rz0r http://www.rz0r.net/?p=139

Después de un buen rato sin postear nada en el blog por falta de tiempo, ahora regreso para postear algunos artículos sobre programación.

Python es un excelente lenguaje para una tarea como la de generar códigos por ejemplo series o códigos para una lotería o promoción.

Python en su versión 2.6 que probé viene con la librería “Itertools” la cual provee funciones iterativas para el manejo eficiente de ciclos y secuencias.

Para demostrar el uso de la librería un ejemplo sencillo seria generar códigos sin repetición únicos alfanuméricos de 5 dígitos suponiendo que los caracteres pueden ser: ’3479JKLNPQRTWXY’.

recordando un poco de matematica n!/(n-r)! se pueden hacer 360360 permutaciones.

supongamos que necesitamos los codigos generados en sets de 50,000 y necesitamos 300,000 tendriamos algo como esto

import itertools

# permutacion
code = '3479JKLNPQRTWXY'
codigos = itertools.permutations(code,5)

# ruta a los archivos
path_prefix = '/home/strafe/data-codes/'

# numeracion de los archivos
files_number = range(1,6,1)

# lista con los nombres de los archivos
files = []
for x in files_number:
    files.append(path_prefix + "set"+str(x)+".csv")

# procesamiento.
inicio=0
fin=50000
for f in files:
    file = open(f,'w')
    x = list(itertools.islice(codigos,inicio,fin,1))
    for i in x:
        print >> file, "".join(i)

    file.close()
    inicio=fin
    fin=fin+50000   

en el codigo se utilizan “itertools.permutations” y “itertools.islice”, itertools.permutations hace el trabajo y itertools.islice permite tomar un rango determinado de la tupla.

Por razones de desempeño y uso de memoria es mas eficiente usar itertools.islice ya que de esa manera la memoria no se agotaria en tratar de procesar el resultado de itertools.permutations de una sola vez.

al final se tendria un resultado como este en los archivos:

3PQ4K
3PQ4L
3PQ4N
3PQ4R

referencias:

http://docs.python.org/library/itertools.html

]]>
http://www.rz0r.net/2010/04/permutaciones-con-python/feed/ 0
Agregando color a la terminal en OpenSolaris 2009 http://www.rz0r.net/2009/08/agregando-color-a-la-terminal-en-opensolaris-2009/ http://www.rz0r.net/2009/08/agregando-color-a-la-terminal-en-opensolaris-2009/#comments Mon, 31 Aug 2009 05:42:08 +0000 rz0r http://www.rz0r.net/?p=126

La terminal en opensolaris 2009 por default no trae activos los colores para el comando ls o el vim, a como viene por defecto en las distribucciones de linux, en lo particular me gusta ver los colores en la terminal para solucionar esto bastara con agregar unas cuantas lineas de codigo bash en los archivos .bashrc y .profile para tener funcionando la terminal con los colores.

.bashrc

alias  ls='ls --color=auto'
TERM=xterm-color
export TERM

.profile

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
ls colors

ls colors

vim colors

vim colors

]]>
http://www.rz0r.net/2009/08/agregando-color-a-la-terminal-en-opensolaris-2009/feed/ 0
Google Code ahora con soporte para Mercurial. http://www.rz0r.net/2009/06/google-code-ahora-con-soporte-para-mercurial/ http://www.rz0r.net/2009/06/google-code-ahora-con-soporte-para-mercurial/#comments Wed, 17 Jun 2009 04:52:24 +0000 rz0r http://www.rz0r.net/?p=120

Una muy buena eleccion de google code al incluir el soporte para mercurial en mi opinion personal es mas eficiente que otros VCS y DVCS(sistemas de control de version distribuidos) la transicion es mas sencilla viniendo de otros VCS, portable funciona en freebsd/solaris/linux/windows y puedes usar ssh o http para la comunicacion con el repositorio.

Segun google Mercurial tuvo mejor desempeño que Git a como se puede ver en su analisis

Tambien se puede comparar y ver un analisis mas detallado entre los DVCS (hg/bazzar/git) en el sitio de Python.

para probarlo he creado mi repositorio y funciona muy bien. aunque por el momento he estado usando Bitbucket probablemente me cambie a google code por el 1GB de espacio ofrecido.

Referencia:

http://hgbook.red-bean.com/
http://google-code-updates.blogspot.com/2009/05/mercurial-now-available-to-all-open.html
http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/
http://betterexplained.com/articles/a-visual-guide-to-version-control/

]]>
http://www.rz0r.net/2009/06/google-code-ahora-con-soporte-para-mercurial/feed/ 0
PHP como simple CGI en Apache Windows. http://www.rz0r.net/2009/06/php-como-simple-cgi-en-apache-windows/ http://www.rz0r.net/2009/06/php-como-simple-cgi-en-apache-windows/#comments Wed, 03 Jun 2009 04:50:39 +0000 rz0r http://rz0r.wordpress.com/?p=60

Por lo general paso la mayor parte del tiempo programando en Linux, pero a veces debo usar otros entornos como windows,  por lo que esta vez mostrare una forma diferente de configurar PHP en windows, la mas común es configurar el PHP como modulo, pero también se puede hacer como CGI  aplicando la siguiente configuración en el httpd.conf  de Apache (esto servirá para versión 2.2.x)

# php configuration as CGI
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Action application/x-httpd-php "/php/php-cgi.exe"
SetEnv PHPRC C:/php
<Directory "C:/php">
    AllowOverride All
    Options None
    Order allow,deny
    Allow from all
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

Asumiendo que PHP fue extraído en el directorio “c:/php” definimos el script action(el ejecutable del CGI), los types( para el manejo de las extensiones .php ), el script alias(ubicación del php), el SetEnv PHPRC para la ubicación del archivo de configuración y las directivas para el directorio.

Reiniciamos el servicio y con esto bastara para tener funcionando el PHP como un simple CGI en Apache 2.2.x.
la ventaja de usar el PHP como CGI es que cuando cambies la configuración del “php.ini” no sera necesario reiniciar el servicio.

]]>
http://www.rz0r.net/2009/06/php-como-simple-cgi-en-apache-windows/feed/ 0