No Gravatar

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.

No Gravatar

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

No Gravatar

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

top