Thursday, May 23, 2013

Utilización de GeoXML3

GeoXML3 nos permite procesar desde el navegador web con javascript un fichero XML que en nuestro caso será un KML y así adaptar su contenido a nuestras necesidades.

Entre las posibilidades que tenemos al cargar desde javascript el contenido de un archivo KML están:
  1. Utilización selectiva del contenido del KML.
  2. Implementación de filtros de visualización.
  3. Modificación de contenido.
Para trabajar con estas librerías se deben incluir en nuestro sitio las siguientes librerías javascript.
jquery-1.9.1.js  Descargar
geoxml3.js   Descargar  

La librería geoxml3 que yo les dejo para la descarga esta modificada para utilizar jQuery para realizar ajax, es por esto que indico que deben estar ambas librerías incluidas. Si optas por utilizar la librería geoxml3 de la pagina del proyecto o autor no es requerimiento incluir jQuery a tu proyecto, aunque a mi al hacer esto me arrojaba errores y es por ello opte por modificar los ajax para que utilice jQuery.

Código de inclusión

<script type="text/javascript" src="jquery-1.9.1.js" charset="utf-8">
<script type="text/javascript" src="geoxml3.js" charset="utf-8">

<script type="text/javascript" charset="utf-8">
    jQuery(function(){
    //Objeto con la configuración inicial del mapa
    var mapOptions = {
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    //Se crea el mapa donde se insertaran los 
    //elementos del archivo KML
    var myMap = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);


    //Se crea el parser para el archivo KML
    var myParser = new geoXML3.parser({
        //Se indica el mapa donde se insertaran los 
        //elementos del KML
        map: myMap,

       processStyles: true,
       //Función donde puedes tomar los marcadores y visualizarlos 
       //en el mapa, o almacenarlos para así   luego filtrar, etc
       createMarker: function(placemark){
                    //Como ejemplo sólo estamos mostrando todos
                    //los marcadores tal cual están en el KML
                    myParser.createMarker(placemark);
        },
       //Función que se ejecuta después de que fue 
        //completamente analizado el KML
       afterParse:function(document){
               alert("EL ARCHIVO KML YA FUE PROCESADO");
        }

});
//Ahora le indicamos a nuestro parser la url de nuestro KML.
myParser.parse('url_de_nuestro_kml');
/*
Si el KML está alojado en un servidor externo debemos utilizar un proxy php que se encarge de descargar nuestro archivo.
Si este es el caso MIREN LA SIGUIENTE ENTRADA donde hay un ejemplo para la descarga de KML's desde google maps.  ENLACE
*/
});
</script>


Y en el body tiene que ir un DIV como el siguiente, no olvidar que las dimensiones y la posición son sólo de ejemplo:

<div style="width:400px;height:600px;">






Descargar KML con CURL en PHP

Me tope con la necesidad de obtener el archivo KML que define un mapa google maps para ser procesado por el navegador web desde javascript y me tope con la imposibilidad de hacer un Coss Domain con ajax para este propósito  por lo cual tuve que crear un archivo php que hiciese de proxy con google maps y se encargara de su descarga.

El archivo PHP que hace de proxy se llamo proxy.php y recive como parametro por GET la url del KML en google maps.

Con lo cual su la nueva url que utilizaremos en un ajax desde javascript quedaría así:

var URL_KML = "proxy.php?mapa=" + escape("url_del_mapa_en_googlemaps");


jQuery.ajax({
    type: "GET",
    url: URL_KML,
    success: function(kml) {
           //Tu código para procesar el KML es aquí
    }
  });


El archivo proxy.php lo pueden descargar desde: proxy.php








Tuesday, April 30, 2013

Como comprimir un directorio en linux

Desde la línea de comando te posicionas en el directorio superior al que se desea comprimir y se ejecuta el siguiente comando:

tar -zcvf nombre-archivo.tar.gz nombre-directorio

Eliminar carpetas SVN recursivamente.


Si te han entregado un proyecto versionado con el sistema SubVersion y te molestan las carpetas .svn que son incluidas por el sistemas de subversion, y obviamente no tienes a mano un cliente de subversión que haga este trabajo por tí, tienes la siguiente alternativa:


En Linux

Desde la línea de comando nos posicionamos en la carpeta principal de nuestro proyecto y ejecutamos el siguiente comando:

rm -rf `find -type d -name .svn`


En Windows

Desde la consola, nos posicionamos en la carpeta principal de nuestro proyecto y ejecutamos el siguiente comando:

FOR /r "." %f IN (.svn) DO @RD /s /q "%f"

Monday, April 29, 2013

Obtener Charset y otros de dump Sybase

En ASE 15(Adaptive Server Enterprise 15), es posible obtener información de un archivo DUMP ejecutando un comando "load database" y usando como parámero "with headeronly".

load database [db_destino]  from [archivo.dump] with headeronly


[db_destino]: Es la base de datos en la fual debiera cargarse la información del dump.

[archivo.dump]: Es el archivo que contiene el dump de la base de datos que deseamos cargar en nuestro sybase.


La información que podemos obtener es:
  • Que base de datos fue dumpeada: ID/name: 1/master
  • Cuando se realizo el dump: Sep 17 2012 1:28AM
  • Que versión de ASE tenía el server cuando se realizo el dump: 15.5
  • El tamaño de pafina(page size) en el servidor: 4K
  • El numero de paginas(number pages), el next object ID, sort order, estatus y charset
  • El mapa de segmentación(the segmentation map)
Esta información es muy útil para momentos en los que debemos cargar un dump del cual no poseemos información de la configuración del servidor desde el cual fue extraído y necesitamos que nuestro server destino(target) tenga la misma configuración que el server fuente(source). 

Referencia: http://benohead.com/sybase-get-information-about-a-dumped-database/

Saturday, April 27, 2013

Listado Plugins Wordpress


Plugins Wordpress

Categories Image

Agrega la posibilidad de incluir una imagen a las categorías.



JSON API

Deja habilitados servicios web services restful para la obtención de las categorias y post de tu wordpress.

URL: http://wordpress.org/extend/plugins/json-api/


Thursday, April 25, 2013

Crear Archivo Vacío de tamaño especifico


Windows

 Con permisos de administrador, desde consola tecleamos el comando:

 fsutil file createnew [archivo] [tamaño]

donde :

               [archivo] : es el nombre y ruta del archivo a crear.            
               [tamaño] : es el tamaño en bytes del archivo a crear.

Ejemplo:
 
Crear archivo llamado "archivo_de_prueba.txt" de 10 MB:

 10 MB = 10 * 1000 * 1024 [bytes] = 10240000[bytes], por lo tanto el comando queda como:

 fsutil file createnew "C:\archivo_de_prueba.txt" 10240000 


Linux

Para crear el archivo se utiliza el comando:

dd if=/dev/zero of=[archivo] bs=[base_tamaño] count=[coef_base]

donde:

[archivo]  : es el nombre y ruta del archivo a crear.
[base_tamaño] : es la base usada para el calculo del tamaño, esta base esta en bytes.
[coef_base] : es el coeficiente por el cual se multiplicara para calcular el tamaño del archivo.

por lo tanto el tamaño del archivo se calcula con las opciones bs y count del comando dd.

Tamaño Archivo en bytes = bs[bytes] * count.

Ejemplo: Crear archivo llamado ejemplo.qa de 1 GB.

dd if=/dev/zero of=ejemplo.qa bs=1024 count=1048576



Wednesday, October 12, 2005

Un Arraylist Simple y creo que bastante util.

Este ArrayList lo tengo hace bastante tiempo, y
por ende debe de tener errores,,, no creo que sean
muchos ya que la complejidad del código es mínima,
sin más aquí les dejo los códigos fuentes:




Ahora comentaré el header:

Tipos de datos definidos:
  1. typedef void* Object;
  2. typedef unsigned long int Index;
  3. typedef unsigned char* String;
  4. typedef unsigned char Boolean;


1) Object: Este tipo de dato es un simple puntero a void
con este trato de representar a cualquier elemento
que se desee almacenar en la lista.

2)Index: Es es un dato de tipo entero largo sin signo que
trata de representar los indices de los elementos
que son almacenados en la lista.

3)String: Este es un puntero a caracter, bueno,..mejor dicho
es el nombre mas comun que se me vino a la cabeza.

4)Boolean: Este es solo un caracter sin signo que lo e tomado
como booleano,, dandole a los valores falso y verdadero
los valores (char)0 y (char)1 respectivamente.


5)ArrayList: Este es un puntero a una estructura de tipo
__ArrayList, deje el dato definido como puntero porque
así es más simple de usar,,, y ademas las funciones que
componen este codigo facilitan su uso.

6)ArrayNode: Este es un puntero a una estructura __ArrayNode,
la cual esta encargada de almacenar los datos que se iran
depositando en la lista, ademas de almacenar su indice y
una descripcion.

Macros definidas:

1) ARRAYLIST_DATA(x): Esta macro es utilizada para efectuar los
un cast a los punteros que se le asignen a la lista(osea es
solo para hacer las cosas más legibles).


Saludos,
Ricardo Harnisch