Detectar orientación del dispositivo en JavaScript

Cuando estás realizando aplicaciones para dispositivos móviles o tablets siempre es interesante conocer la orientación del dispositivo. Es decir, si el usuario tiene el dispositivo apaisado o no.

Aquí os dejo un pequeño script para poder conocer la orientación:

function orientacionCambiada()
{
    alert(window.orientation);
}

window.addEventListener("orientationchange", orientacionCambiada, false);

Si la orientación está en -90 ó 90 estará el dispositivo en modo horizontal, si está en 0 ó 180 estará en vertical. read more

Leer más » 2 Comentarios

Instalación de PostGIS para PostgreSQL

Cada vez son más las aplicaciones que hacen uso de localizaciones dentro de su funcionamiento y que además, necesitan almacenarlas de alguna forma dentro de su base de datos. Es entonces cuando PostgreSQL toma ventaja frente a MySQL gracias a la existencia de PostGis.
PostGIS

PostGis es un software libre, tiene licencia GNU General Public License (GPL), convierte nuestra base de datos PostgreSQL en una base de datos espacial capacitada para almacenar y trabajar con datos espaciales.

La instalación es muy sencilla, esta que indico aquí es la que usé en local y en un servidor en producción con Ubuntu 12.04, supongo que en versiones posteriores será similar con algún cambio en las versiones de paquetes pero diría que la mecánica es la misma, pero si tenéis alguna duda preguntad en comentarios y lo vemos entre todos.

Instalamos los paquetes:

sudo apt-get install python-software-properties
sudo apt-add-repository ppa:ubuntugis/ppa
sudo apt-get update
sudo apt-get install postgresql-9.1-postgis
sudo apt-get install build-essential postgresql-9.1 postgresql-server-dev-9.1 libxml2-dev proj libjson0-dev xsltproc docbook-xsl docbook-mathml gettext postgresql-contrib-9.1 pgadmin3
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:olivier-berten/geo
sudo apt-get update
sudo apt-get install libgdal-dev

Una vez realizadas estas instalaciones, verficamos la versión de libGDAL, que debe ser 1.9.0

$ gdal-config --version 1.9.0 read more

Leer más » 12 Comentarios

Cómo eliminar la notificación de actualización de plugins de WooCommerce / WooThemes

Para los que manejáis WooCommerce es muy posible que no sólo utilicéis este metaplugin de WordPress para llevar a cabo ciertas tareas en vuestra tienda, sino que hagáis uso de otros plugins para añadir cierta funcionalidad. Por cierto, recordaros que WooCommerce es un plugin para montar tiendas sobre WordPress, y lo tenemos incluido en la lista de los mejores plugins para profesionales WordPress.

install_woothemes_woocommerce_linuxhispano

Pues bien, cuando hacemos uso de estas extensiones y son las propias de WooThemes (que el nombre no os confunda, esta empresa empezó haciendo temas y luego ya era tarde para cambiar el dominio raíz) nos aparece un mensaje bastante peleón que no podemos descartar (el clásico botón de “dismiss” para que no vuelva a aparecer no está) ¿Qué hacer? A mi personalmente no me gustan estos mensajes tan contaminantes, parece que nos estén obligando a realizar la acción, y ese tipo de checkers lo único que hacen es sobrecargar nuestra web de consultas a servidores externos nuestros. read more

Leer más » 1 Comentario

Metodos para eliminar ficheros y directorios

Unos comandos fáciles para eliminar ficheros o directorios.
Si el fichero que desea eliminar requiere privilegios de root, utilizaremos el comando “sudo”.

ELIMINACION DE FICHEROS:

1. Si estamos en el mismo directorio:
[code]$ rm -rf fichero[/code]
2. Si no estamos en el mismo directorio:
[code]$ rm -rf / ruta_al_directorio / fichero[/code]
3. Eliminar un fichero especifico de un directorio:
[code]$ find . -type f -name “fichero” -exec rm -f {} ;[/code]
4.Dejar únicamente un fichero específico en un directorio eliminando el resto:
[code]$ rm -f !(ejemplo.txt)[/code]
5. Eliminar todos los ficheros de un directorio sin eliminar el directorio (si estamos en el mismo directorio):
[code]$ rm -rf *[/code]
6. Eliminar todos los ficheros de un directorio sin eliminar el directorio (si no estamos en el mismo directorio):
[code]$ rm -rf /ruta_al_directorio/*[/code] read more

Leer más » 5 Comentarios

Comandos para simular instalación de programas

A la hora de instalar software en una maquina, desde la consola tenemos mucha mas información de lo que estamos instalando. Algunos paquetes tienen dependencias y hay que instalarlas también. A veces entran en conflicto con algo que ya tenemos o están obsoletas y nos da error.

Dry run (marcha en seco) es una forma de pruebas de software en los que no se utiliza el paquete o la aplicación real.

Con unos sencillos comandos de simulación podemos obtener bastante información del tipo:

– Buscar un paquete o aplicación que quiero instalar o parecido al que busco. read more

Leer más » 1 Comentario

wp_kses() o cómo limpiar cadenas HTML en WordPress para evitar ataques XSS

Cuando desarrollo plugins y themes para WordPress en CODECTION siempre procuro mirar por la seguridad, “sanitizando” variables tanto para evitar ataques vía inyección SQL como para evitar ataques XSS. Es muy frecuente, que si recibes peticiones y luego las devuelves por pantalla, las variables que manejes, si las maneja el usuario de alguna manera, puedan terminar siendo el origen de una ataque XSS.

Algo tan sencillo como pasar una etiqueta script o iframe en un sitio conveniente y además de un ataque XSS, eres una fuente de phising para el resto de la red. Por fortuna, WordPress facilita mucho la vida al desarrollador al respecto y para evitar este tipo de ataques nos ofrece una función que además es extensible en su funcionamiento vía parámetros.

La función en cuestión es wp_kses() y aunque es similar a strip_tags(), una función nativa de PHP, suele recomendarse para cuestiones de seguridad.

wp_kses-vs-strip_tags

¿Para qué usamos wp_kses?

Básicamente deciros que sirve para limpiar una cadena de elementos HTML indeseados (imaginad otros usos que no sea el de seguridad, se me viene a la cabeza un uso de “limpieza” de una cadena proveniente de Microsft Word o LibreOffice Write).

Tiene esta forma:

wp_kses($string, $allowed_html, $allowed_protocols);

Y los parámetros que recibe indican exactamente:

  • $string: cadena a filtrar
  • $allowed_html: etiquetas HTML que se permitirán y que no se limpiaran
  • $allowed_protocols: protocolos permitidos, por defecto vienen unos pocos y siempre se asegura que no va a permitirse etiquetas ni invocaciones a ficheros JavaScript

La función devolverá el código HTML totalmente limpiado.

El segundo parámetro es interesante, porque podemos definir también qué atributos pasarán de cada etiqueta, un ejemplo curioso:

array(
    'a' => array(
        'href' => array(),
        'title' => array()
    ),
    'br' => array(),
    'em' => array(),
    'strong' => array(),
);

Ejemplo

El ejemplo es original de Simon Wheatly. Tenemos de entrada:

Wisi <a href=”#” style=”color: red;”>defui nunc</a> dignissim <strong class=”weird”>transverbero ideo vel</strong> utinam blandit, iaceo meus epulae enim amet nibh sed brevitas. Pala consequat <script type=”text/javascript” src=”http://example.com/certainly/do/not/want/this.js”></script> capio sino regula typicus <small>luptatum</small> olim ullamcorper uxor in verto.

Vamos a dejar sólo:

  • La etiqueta ‘a’ y sus atributos ‘href’, ‘title’ y ‘target’
  • Y las etiquetas ’em’ y ‘strong’ => array()

El código sería este:

$entrada = 'Wisi <a href="#" style="color: red;">defui nunc</a> dignissim <strong class="weird">transverbero ideo vel</strong> utinam blandit, iaceo meus epulae enim amet nibh sed brevitas. Pala consequat <script type="text/javascript" src="http://example.com/certainly/do/not/want/this.js"></script> capio sino regula typicus <small>luptatum</small> olim ullamcorper uxor in verto.'; $etiquetas_permitidas = array( 'a' => array( 'href' => array(), 'title' => array(), 'target' => array() ), 'em' => array(), 'strong' => array(), ); $salida= wp_kses( $entrada, $etiquetas_permitidas ); echo $salida; read more

Leer más » 1 Comentario

Reconocimiento Optico de caracteres (OCR)

El reconocimiento óptico de caracteres (OCR), permite convertir diferentes tipos de documentos y pasarlos a texto plano (ejemplo: documentos en papel escaneados guardados como Tif, jpg, png, o ficheros en PDF.

La función es separar el texto de la imagen, o lo que es lo mismo, poder diferenciar un texto de una imagen cualquiera, esto permite tener acceso y editar el contenido del documento original (albaranes, formularios, facturas, etc.). Generalmente en el sector de la empresa se le llama “gestión documental” y se usa para agilizar los procesos de localización y recuperación de archivos, reducción de costes de almacenamiento de los documentos e incremento de la productividad. read more

Leer más » 2 Comentarios

Cifrar ficheros con GPG

¿Porque cifrar datos?

Principalmente es por privacidad. Cada día lanzamos a los cuatro vientos o en nuestro propia maquina tenemos información que puede ser sensible y esta expuesta.

Básicamente el cifrado de datos consiste en la utilización de alguna contraseña antes de enviarlos a su destino, de tal modo que el contenido del mismo no sea legible para los que no tengan dicha clave. Es muy útil en correos, discos y directorios, o cualquier formato de ficheros (vídeo, imagen, texto, etc).

Las contraseñas de cifrado y de descifrado pueden ser iguales (criptografía simétrica) o no (criptografía asimétrica).
GPG es una herramienta multiplataforma de cifrado/descifrado y es software libre licenciado bajo la GPL. Viene de serie en las principales distribuciones. read more

Leer más » 1 Comentario

MONITORIZAR LA SEÑAL DE WIFI POR CONSOLA

Visto en commandlinefu.com

Un comando para poder monitorizar la intensidad de la señal wifi cuando nos conectamos desde algún punto, sin tener que instalar ninguna aplicación para esta tarea desde la consola:
[code]$ cat /proc/net/wireless[/code]
1
El directorio /proc contiene un sistema de archivos virtual que se crea en memoria. Se utiliza para ofrecer información relacionada con el sistema (kernel, procesos y parámetros de configuración).
Se puede ajustar la frecuencia de actualización de los datos mediante la adición de un valor deseado (ejemplo, 1 segundo) con watch -n :
[code]$watch -n 1 cat /proc/net/wireless[/code]
Otra alternativa es utilizar el comando Awk:
[code]$watch -n 1 “awk ‘NR==3 {print “Signal strength = ” $3 “00 %”}”’ /proc/net/wireless”[/code]
2 read more

Leer más » 1 Comentario

Ejemplo de una aplicación multimedia simple en C++ gracias a SFML

sfml

SFML, Simple and Fast Multimedia Library, ofrece una interfaz simple para el desarrollo de aplicaciones multimedia. Está compuesto de cinco módulos: window, graphics, audio y network.

La instalación es sencilla en Ubuntu o Debian con sudo apt-get install libsfml-dev. Aquí os muestro un ejemplo de su sencillez de uso (se compila con g++ ejemplo.cpp -lsfml-graphics -lsfml-window -lsfml-system):

#include <SFML/Graphics.hpp> int main() { sf::RenderWindow window(sf::VideoMode(200, 200), "SFML funciona"); sf::CircleShape shape(100.f); shape.setFillColor(sf::Color::Green); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); window.draw(shape); window.display(); } return 0; } read more

Leer más » 1 Comentario