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.
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:
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