Obtener latitud y longitud de una direccion con Google
//direccion a buscar
$direccion= urlencode('12167 SW 27TH ST 1911, MIRAMAR, 33025');
//Buscamos la direccion en el servicio de google
$geocode=file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$direccion.'&sensor=false');
//decodificamos lo que devuelve google, que esta en formato json
$output= json_decode($geocode);
//Extraemos la informacion que nos interesa
$lat = $output->results[0]->geometry->location->lat;
$long = $output->results[0]->geometry->location->lng;
//la imprimimos
echo $lat.', '.$long;
direccion
Integracion de Apache con Subversion en Windows
Instalar el servidor Subversion.
Crear el directorio o directorios a ser utilizados como repositorio de los proyectos: en este caso C:\Proyectos\. Esto es solo el directorio que contendrá el repositorio, ahora desde la consola se crea el repositorio con el comando svnadmin create.
Esto creara la estructura del repositorio dentro del directorio Proyectos:
Ahora para la integración del subversión al apache, copiar los archivos mod_authz_svn.so and mod_dav_svn.so de el directorio bin de la instalacion de Subversion al directorio modules de apache. Editar el archivo de configuracion de apache httpd.conf.
Quitar el # al principio de las lineas o agregarlas:
#LoadModule dav_svn_module modules/mod_dav_svn.so
#LoadModule authz_svn_module modules/mod_authz_svn.so
Luego cambiar:
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> Por: <Directory /> Options FollowSymLinks AllowOverride None Order allow,deny Allow from All Satisfy all </Directory>
Incluir al final del archivo la ruta de configuracion del subversión (mas adelante se creara)
Include c:/etc/subversion.conf
Crear el directorio C:\etc, donde se guardara la configuración del subversión
Otra vez en la consola, se crearan los usuarios que tendran acceso al repositorio con el comando htpasswd:
La opcion –c es para crear el archivo y la opcion –m para encriptar el password. Esto creara el archivo svn-auth-file:
Ahora crear el archivo svn-acl (sin extension) en C.\etc, donde se definen los accesos al repositorio:
Por ultimo crear el subversion.conf en /etc, donde se le indica al apache cual es la ruta del repositorio y los permisos de acceso:
Reiniciar el apache, y el repositorio estará creado:
Obtener codigo fuente de una pagina con PHP
Una pequeña funcion para obtener el codigo de una pagina.
function curl_get_file_contents($URL,$cookie){
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_URL, $URL);
curl_setopt($c, CURLOPT_COOKIE, $cookie);
$contents = curl_exec($c);
curl_close($c);
//Valida si hay contenido sino retorna falso
if ($contents) return $contents;
else return false;
}
Para llamarla
//Si la pagina no necesita alguna cookie $fuente=curl_get_file_contents($url,null); //Para paginas que necesiten alguna cookie por ejemplo aceptar un Disclaimer $fuente=curl_get_file_contents($url,'Disclaimer=true;');
Manipular fechas en Qt Jambi
Transformar de QDate a Date
//Definimos el formato de fecha deseado
SimpleDateFormat formatoDelTexto = new SimpleDateFormat("yyyy-MM-dd");
//Transformamos la fecha QDate a ese formato
fechaTexto = ui.datFechaNacimiento.date().toString("yyyy-MM-dd");
//Se setea al atributo del objeto
empleado.setFechaNacimiento(formatoDelTexto.parse(fechaTexto));
Transformar de Date a QDate
//Transformamos la fecha Date a String
String fechaTexto2 = empleado.getFechaIngreso().toString();
//La dividimos por los guiones
String[] fecha2 = fechaTexto2.split("-");
//La seteamos al componente usando el constructor QDate
ui.datFechaIngreso.setDate(new QDate(Integer.parseInt(fecha2[0]),
Integer.parseInt(fecha2[1]),
Integer.parseInt(fecha2[2])));
Signals y Slots
Cuando se cambia algo en un widget en la programación de GUI (Interfaces Graficas de Usuario), frecuentemente se quiere que otro widget sea notificado. Generalmente, se quiere que los objetos de un tipo sean capaces de comunicarse con los de otro tipo. Por ejemplo, si el usuario hace click en un botón Cerrar, probablemente se quiere que la función close() de la ventana sea llamada. Signals y slots son el mecanismo de Qt Jambi para esa comunicación entre objetos.
Un Signal es emitido cuando un evento en particular ocurre. Los widgets de Qt Jambi tienen signals predefinidos, pero siempre se podrá heredar de los widgets para añadir signals propios. Un Slot es un método que es llamado a responder un signal en particular. Tambien existen slots predefinidos pero se pueden añadir propios para el manejo de los signals que se quieran.
El mecanismo de los signals y slots es de tipo seguro. La firma de un signal debe coincidir con la del slot que lo recibe. Una clase que emite un signal no conoce ni le importa que slots reciben dicho signal. El mecanismo de los signals y slots de Qt Jambi aseguran que si se conecta un signal a un slot, el slot será llamado con los parámetros del signal en el momento apropiado.
Ejemplo:
Si se tiene en una ventana un botón llamado button1 y un método llamado clickButton(). Para conectar el botón a ese método se hará: ui.button1.clicked.connect(this,”clickButton()”). También se puede crear un método llamado on_button1_clicked(), que se conectara directamente a la señal clicked del botón ya que en el constructor la clase llama implícitamente un método llamado connectSlotsByName();
Codigo Ejemplo:
package vistas;
import com.trolltech.qt.gui.*;
public class VentanaPractica extends QWidget {
Ui_VentanaPractica ui = new Ui_VentanaPractica();
public static void main(String[] args) {
QApplication.initialize(args);
VentanaPractica testVentanaPractica = new VentanaPractica();
testVentanaPractica.show();
QApplication.exec();
}
public VentanaPractica() {
ui.setupUi(this);
//asociar signal al slot
ui.button1.clicked.connect(this,"clickarButton()");
}
public VentanaPractica(QWidget parent) {
super(parent);
ui.setupUi(this);
}
//slot asociado al signal click del boton
public void clickarButton(){
//colocar un texto en el QLineEdit
ui.text.setText("hola");
}
//slot tambien asociado al boton
public void on_button1_clicked(){
System.out.println("click");
}
}
Crear Nuevo Proyecto Jambi en Eclipse
En el post anterior explicamos la instalación de Jambi y su integración con eclipse, en este explicare como iniciar un nuevo proyecto con el plugin de Jambi para Eclipse. Abrimos el eclipse en un workspace nuevo, luego abrimos en el Menu, Windows -> Preference y en la ventana que aparece seleccionamos Qt Jambi Preference Page, en Jambi Location clicamos en Browse, y seleccionamos la carpeta donde se descomprimió el Jambi, luego clicamos en Validate:
Las otras opciones son colocar los archivos de imagen en una carpeta separada (yo desmarco esta opción) y la de ponerle un prefijo al archivo de clase generado por el Designer (esta la dejo marcada):
Luego hacemos click en Apply y luego en Ok, Nos dirá que debemos reiniciar el Eclipse para tomar los cambios. Entonces cerramos y volvemos a abrir este workspace. Ahora vamos a buscar la opción File -> New -> Other…->Qt Jambi y seleccionamos la opción Qt Jambi Project (Using Designer Form):
Damos click en Next y nos aparece la opción de nombre del proyecto, damos un nombre y hacemos click en Next. En la siguiente ventana dejamos todo como esta y seleccionamos en Next. En la ultima ventana nos pide el paquete donde ubicaremos la vista que nos va a crear para empezar a trabajar y el nombre de esa ventana y de que tipo es, seleccionamos y hacemos click en Finish:
Ya creamos el proyecto, cambiamos la perspectiva para poder ver el diseñador, seleccionamos Window -> Open Perspective -> Other y seleccionamos Qt Designer UI:
Vemos que nos genero tres archivos en el paquete, el Ui_VentanaPractica.java depende del VentanaPractica.jui, cada cambio que hagamos en el ultimo recompila el primero, por eso no demos tocarlo porque cada cambio que hagamos se perderá en cada recompilación. El otro es que queda VentanaPractica.java es el que usaremos para manipular y correr la ventana.
Hasta aquí llega esta explicación, espero les sirva, en otros post trabajaremos con cosas mas complicadas como el manejo de eventos y adaptar un modelo MVC a un proyecto Jambi.
Instalación Qt Jambi y su integración con Eclipse
Descargamos los archivos de la dirección (por ahora Qt Jambi es el único binding que Nokia le da soporte, aunque ya se anuncio que ya no darán soporte al proyecto y quedara como los demás con soporte por una comunidad de usuarios), en esa pagina se encuentran los binarios para Windows, Mac y Linux, también la integración con Eclipse, además de las fuentes. En este tutorial seguiremos la instalación en Windows (en Linux es el mismo proceso). Descargamos ambos archivos Qt Jambi 4.5.2_01Binary for Windows 32-bit y Qt Jambi 4.5.2_01 for Windows:
Descomprimimos el binario de Jambi en un directorio cualquiera del disco y luego el de integración en la carpeta de eclipse:
Ya con esto terminamos la instalacion de Jambi y ya esta integrado al Eclipse.
En proximo post mostrare como crear un nuevo proyecto con Eclipse y el plugin de Jambi.
Introduccion QT Jambi: binding java de Qt
Bueno al fin empiezo actualizar mi blog, para este post y algunos posteriores voy a colocar cosas de un proyecto en el que estoy trabajando con Java utilizando el binding de Qt para este lenguaje llamado Qt Jambi. Empezaremos definiendo estos últimos, les copiare lo que dice la Wikipedia sobre Qt.
Qt es una biblioteca multiplataforma para desarrollar interfaces gráficas de usuario y también para el desarrollo de programas sin interfaz gráfica como herramientas de la consola y servidores. Qt es utilizada principalmente en KDE, Google Earth, Skype, Qt Extended, Adobe Photoshop Album, VirtualBox y Opie. Es producido por la división de software Qt de Nokia, que entró en vigor después de la adquisición por parte de Nokia de la empresa noruega Trolltech, el productor original de Qt, el 17 de junio de 2008.
Qt es utilizada en KDE, un entorno de escritorio para sistemas como GNU/Linux o FreeBSD, entre otros. Qt utiliza el lenguaje de programación C++ de forma nativa, adicionalmente puede ser utilizado en varios otros lenguajes de programación a través de bindings.
Funciona en todas las principales plataformas, y tiene un amplio apoyo. El API de la biblioteca cuenta con métodos para acceder a bases de datos mediante SQL, así como uso de XML, gestión de hilos, soporte de red, una API multiplataforma unificada para la manipulación de archivos y una multitud de otros para el manejo de ficheros, además de estructuras de datos tradicionales.
Jambi es una implementación o binding para Java de Qt. En el próximo post publicare el proceso de la instalación de Jambi y su integración con Eclipse.
Bienvenida
Este es mi primer blog, aqui tratare de postear (regularmente espero) noticias interesantes sobre tecnologia, programacion (tambien tutoriales y enlaces), software y algunos temas off topic interesantes sobre musica, cine y deporte.
















