Ésta función espera dos objetos que tengan la propieadd lat y lon como grados.
var distanceBetween = function(lonlatA, lonlatB) {
var lat1 = lonlatA.lat.toRad();
var lat2 = lonlatB.lat.toRad();
var lon1 = lonlatA.lon.toRad();
var lon2 = lonlatB.lon.toRad();
var R = 6371; // earth radius (Km)
return Math.acos(Math.sin(lat1)*Math.sin(lat2) + Math.cos(lat1)*Math.cos(lat2) * Math.cos(lon2-lon1)) * R;
}
La funcion toRad se puede definir para todo número de JS así:
if (typeof Number.prototype.toRad == 'undefined') {
Number.prototype.toRad = function() {
return this * Math.PI / 180;
}
}
La formula utilizada es ésta
http://en.wikipedia.org/wiki/Spherical_law_of_cosines
Artículos de opinión, videos de humor, música, tecnología, cosas extrañas, críticas, trailers de películas y ocio en general
domingo, 4 de noviembre de 2012
jueves, 1 de noviembre de 2012
Optimizando multiples imagenes PNG recursivamente
Utilizando la herramienta pngcrush disponible con apt-get y creando un pequeño shell script podemos optimizar todas las imagenes .png que queramos dentro de un árbol de directorios recursivamente.
El script requiere como parámetro el path a partir del cual se buscarán los ficheros y por seguridad no permite especificar el path raíz de nuestro linux.
Ojo que sobreescribe los ficheros, así que tener cuidado y haceros copia de seguridad por si acaso :)
Aquí os dejo el script para optimizar recursivamente todas vuestras imagenes png.
#!/bin/sh
if [ $# -lt 1 ]
then
echo "Missing path parameter to search into"
exit 2
fi
if [ "$1" = "/" ]
then
echo "root folder is not allowed"
exit 2
fi
read -p "Crush all PNG files under $1 folder? yes / no ?" answer
if [ "$answer" != "yes" ]
then
echo "Cancelled"
exit 2
fi
echo "Looping inside $1"
for png in `find $1 -name "*.png"`
do
echo "crushing $png"
pngcrush "$png" temp.png
mv -f temp.png $png
done;
Nota: la linea pngcrush podeis personalizarla a vuestro gusto, por ejemplo añadiendo -brute para que la compresion sea superior (aunque mucho más lento).
He conseguido aproximadamente un 10% de reducción sin usar brute básicamente porque no me apetece esperar varias horas (eran cientos de ficheros)
Espero que os sirva :)
El script requiere como parámetro el path a partir del cual se buscarán los ficheros y por seguridad no permite especificar el path raíz de nuestro linux.
Ojo que sobreescribe los ficheros, así que tener cuidado y haceros copia de seguridad por si acaso :)
Aquí os dejo el script para optimizar recursivamente todas vuestras imagenes png.
#!/bin/sh
if [ $# -lt 1 ]
then
echo "Missing path parameter to search into"
exit 2
fi
if [ "$1" = "/" ]
then
echo "root folder is not allowed"
exit 2
fi
read -p "Crush all PNG files under $1 folder? yes / no ?" answer
if [ "$answer" != "yes" ]
then
echo "Cancelled"
exit 2
fi
echo "Looping inside $1"
for png in `find $1 -name "*.png"`
do
echo "crushing $png"
pngcrush "$png" temp.png
mv -f temp.png $png
done;
Nota: la linea pngcrush podeis personalizarla a vuestro gusto, por ejemplo añadiendo -brute para que la compresion sea superior (aunque mucho más lento).
He conseguido aproximadamente un 10% de reducción sin usar brute básicamente porque no me apetece esperar varias horas (eran cientos de ficheros)
Espero que os sirva :)
Etiquetas:
compresion png,
linux,
optimizando imagenes,
pngcrush,
recursivo,
tutorial
Montar samba share de Ubuntu a Ubuntu con smbmount
Habitualmente utilizo máquinas virtuales a las cuales me conecto desde mi host (en éste caso ambas son Ubuntu 12, el host es la version client y el guest es la version server).
En la máquina guest, debemos tener instalado samba y configurado al menos un recurso compartido
$ sudo vim /etc/samba/smb.conf
[www]
comment = www folder
read only = no
path = /var/www
writeable = yes
guest ok = no
create mask = 644
directory mask = 644
$ sudo service smbd restart
En la máquina host, ejecutamos a mano o nos preparamos un script para lanzarlo cada vez que queramos montar el shared folder (también lo podemos poner en fstab con opción noauto, ya que recordemos que en éste caso estamos hablando de una máquina virtual que debe ser lanzada antes de montar el share)
Y ya está, con ésto tendremos montado el shared con permisos de leer, escribir y borrar.
La parte de uid y gid es importante para que no se nos monte con otro usuario y nos de problemas de escritura o borrado.
En la máquina guest, debemos tener instalado samba y configurado al menos un recurso compartido
$ sudo vim /etc/samba/smb.conf
[www]
comment = www folder
read only = no
path = /var/www
writeable = yes
guest ok = no
create mask = 644
directory mask = 644
$ sudo service smbd restart
En la máquina host, ejecutamos a mano o nos preparamos un script para lanzarlo cada vez que queramos montar el shared folder (también lo podemos poner en fstab con opción noauto, ya que recordemos que en éste caso estamos hablando de una máquina virtual que debe ser lanzada antes de montar el share)
#!/bin/bash
sudo smbmount //192.168.1.xxx/www /mnt/www -o rw,user=myuser,uid=1000,gid=1000
La parte de uid y gid es importante para que no se nos monte con otro usuario y nos de problemas de escritura o borrado.
Etiquetas:
guest,
host,
maquina virtual,
problemas al borrar,
samba share,
smb.conf,
smbmount,
ubuntu12
Suscribirse a:
Entradas (Atom)