lunes, 29 de noviembre de 2010

Del Android al iPhone?

No exactamente, sigo conservando el android por supuesto, pero añado un iPhone (de los antiguos, 3G) a la lista de cacharros, por lo que algún consejo dejaré caer por aquí.

Primer paso en mi TODO-list:
  • LIBERARLO!
En cuanto tenga cable de datos y cargador sigo con la historia

Actualización: los cables siguen sin llegar :(

martes, 16 de noviembre de 2010

IP Dinámica con Ubuntu y DynDNS

Hoy toca jugar un poco con Linux, concretamente con Ubuntu, al que tenía muy abandonado últimamente. El objetivo que me he propuesto es redirigir una IP dinámica configurada a través del servicio DynDNS.com a mi servidor con Ubuntu a través de dos routers.

El cómo se configuran los routers para permitir el tráfico hasta el servidor interno es algo que no contaré aquí, pero como pistas, mirar las opciones de los routers de "NAT", "Port Forwarding" o "Virtual Server", cambian los nombres según los modelos.

Una vez se tiene una cuenta con un servidor del tipo DynDNS, se configura un dominio dinámico y ahora toca actualizar nuestra IP dinámica desde el servidor en cuestión.

El servicio a utilizar es ddclient:

sudo apt-get install ddclient

Nos aparecerá una interfaz gráfica (semi-gráfica diría yo :)) que nos guiará a través del proceso de configuración, incluyendo la elección del proveedor, nuestro nombre de usuario y contraseña, la manera de comprobar la IP del servidor y la opción de elegir que dominios se han de actualizar. Con estos simples pasos, podréis comprobar como vuestro dominio redirige perfectamente a vuestro servidor.

Para editar esta configuración posteriormente, se hace a través del fichero /etc/ddclient.conf

Se pueden añadir líneas como
ssl=yes

para que el tráfico sea seguro, ó

daemon=3600

para que la IP se actualice cada el número de segundos que le indiquemos (en el ejemplo una hora)

Fuentes: Ubuntu Documentation -> DynamicDNS

viernes, 12 de noviembre de 2010

Ver y matar los procesos de MySQL

¿Se te queda la base de datos colgada durante mucho tiempo sin dar respuesta?
¿Se consume la CPU de manera anormal y todo por culpa de mysql?

Pues bien, si quieres ver que es lo que está manteniendo ocupado al motor de bases de datos lo puedes hacer de la siguiente manera:

mysql -uroot -p
(ENTER YOUR PASSWORD)
show full processlist

De esta manera veremos todos los procesos que se están ejecutando en la base de datos y seguramente habrá alguna sentencia que no termina de ejecutarse correctamente.

Para matar el proceso que te deja sin recursos el ordenador, desde dentro de MySQL teclea
kill X

donde X es el número de proceso (primera columna de show full processlist)

jueves, 11 de noviembre de 2010

Pasar fechas de PHP a JavaScript

En el post anterior contaba como realizar un contador de tiempo con JavaScript para llegar a una determinada fecha en concreto.
La fecha que yo tenía, estaba en el servidor, el cual funciona con PHP, pero como acabo de decir, el contador funciona con JavaScript. Aunque pudiera pensarse que ambos son compatibles, no es así.

En PHP utilizo la función strtotime() que convierte la mayoría de formatos de fechas al formato timestamp de UNIX (número de segundos desde 1970).
En JavaScript utilizo la función Date() que acepta como parámetro un string con la fecha o un número con el timestamp.

¿Pasar el strtotime() de PHP al Date() de JavaScript verdad? Pues no es suficiente, no son compatibles, para que funcione es necesario multiplicar por 1000, es decir (sintaxis JavaScript)

var fecha = new Date(<?php echo strtotime($nuestra_fecha)*1000;?>);

Cuenta atrás en javaScript

Si tenéis la necesidad de realizar un contador de tiempo para una página web, se puede hacer en poco tiempo con jQuery y su plugin countdown

Los pasos a seguir vienen en la página de countdown, pero los resumo aquí rápidamente:
  1. Incluir el script de jquery (podéis poner lo que pongo a continuación o bajarlo a vuestro servidor):
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  2. Incluir el script de countdown y si se desea utilizar sus estilos, también el CSS:
    <style type="text/css">@import "jquery.countdown.css";</style> 
    <script type="text/javascript" src="jquery.countdown.js"></script>
  3. Aplicar el countdown o cuenta atrás a los elementos (div o span) que queramos:
    $(selector).countdown({until: liftoffTime});
En el último punto se le debe pasar como parámetro una fecha límite en la que el contador llegará a 0. También se le pueden pasar otros parámetros como el formato deseado de salida. Todo esto viene en la documentación del plugin.

miércoles, 10 de noviembre de 2010

Incrementar campo de MySQL con un único update

Si se quiere actualizar un campo de una tabla de MySQL sin tener que hacer un select antes, se puede hacer con :

UPDATE table SET table.field = table.field + 1 where id = 'id';

Drag and Drop con JTree en Swing

ACTUALIZACIÓN: en este otro artículo explico los  métodos necesarios para el drag and drop

Tres enlaces interesantes para poder hacer Drag and Drop con un jTree de Swing en JAVA:

http://weblogs.java.net/blog/shan_man/archive/2006/01/first_class_dra.html
http://weblogs.java.net/blog/shan_man/archive/2006/01/location_sensit.html

http://psecheresse.spaces.live.com/blog/cns!492816F77B21DC3D!278.entry

Actualización: si necesitas empezar desde un nivel más básico, aquí se explica desde 0 como se realiza Drag And Drop (DnD)

Y aquí dejo otro artículo con los métodos necesarios para el drag and drop

Plugins para Firefox

Estoy harto de tener que andar buscándolos por ahí, así que aquí dejo un listado de los que más me gustan y utilizo:

All in one Gestures:
 Plugin que añade funcionalidad a los gestos del ratón para poder movernos por el navegador sin tener que usar sus botones. Uno de los mejores plugins que he visto, muy adictivo y extremadamente útil.
Delicious Bookmarks

Diccionarios e idiomas para firefox:
Con estos diccionarios firefox nos hará correcciones ortográficas en aquellos textos que insertemos en la web, en cualquier idioma que seleccionemos.
FireFTP:
Cansado de tener que instalar siempre un cliente FTP para subir dos archivos o tener que bajartelos de algún sitio? Fire FTP es un cliente FTP integrado con firefox, pequeño, sencillo y útil.
WebDeveloper:
Si te dedicas al mundo del desarrollo web, estas herramientas web te serán de gran utilidad apra analizar tus páginas o las de la competencia.
Firebug:
Quizá la herramienta de mayor utilidad para el desarrollo web: te analiza el código css, html, javascript, te informa de los errores y te desgaja una página web en todos sus detallados componentes. Increíble la funcionalidad que tiene esta herramienta

Si se me ocurren más iré actualizando la lista.

TODO: Related Posts

ACTUALIZACIÓN: ya está implementado, toda la info la he sacado de aquí

Una de las cosas que quiero incluir en los post del blog es un "Related posts" que incluya los posts más parecidos al actual basándose en los tags, en el contenido o en lo que yo le diga... pero ahora no tengo tiempo de hacerlo. Para que no se me olvide, aquí dejo un vínculo que parece interesante:

http://www.bloggingtips.com/2008/09/08/5-related-posts-techniques-for-blogger-blogs/

Subclipse, JavaHL y Windows7 64bits

Running eclipse? Having problems with subclipse plugin? Getting following message?

Failed to load JavaHL Library.
These are the errors that were encountered:
no libsvnjavahl-1 in java.library.path
no svnjavahl-1 in java.library.path
no svnjavahl in java.library.path
java.library.path = .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java

Update no need to install that anymore, just go to Preferences > Team > SVN and under "Client" section select SVNKit (pure java)

Solution if you are running Windows7 64bit is to install Slik SVN no need anymore

That is the summary that solved my problem, all the information is here

lunes, 8 de noviembre de 2010

Montar disco virtual .vhd sin arrancar la máquina virtual en Windows7

En alguna ocasión me hacen falta ficheros de los discos de las máquinas virtuales de windows y es un rollo tener que arrancar la máquina para poder acceder a esos ficheros, más cuando el disco duro virtual lo tenemos en nuestro disco duro real.

En Windows7 se pueden montar estos discos sin la necesidad de arrancar la máquina virtual. Para ello:
  • Acceder al administrador de discos:
    • Tecla Windows + R y ejecutar: compmgmt.msc
    • ó
    • Mi PC, botón derecho y Administrar y Administrador de discos
  • Una vez abierto, hacemos click con el botón derecho de nuevo sobre Administrador de discos y elegimos la opción "Añadir VHD" (si aparece deshabilitada, deseleccionar cualquier disco que aparezca seleccionado en el panel de la derecha).
  • Elegimos la ruta del archivo del disco duro virtual .vhd y listo (No debe estar la máquina virtual arrancada, de lo contrario dará error).
De esta manera tenemos el disco duro virtual como un disco más de nuestro ordenador en Windows7

Sacado del artículo en inglés y probado en mi pc :)

Haciendo copia de seguridad de "Windows XP Mode"

Me veo ante la necesidad de formatear y hacer una limpieza del portatil. Hago copia de seguridad de todos mis archivos pero me encuentro ante una novedad: ¿qué hago con la máquina virtual "Windows XP Mode"? Lo tuve que instalar por incompatibilidades con el nuevo Windows 7 Pro y ahora que voy a formatear me gustaría que la máquina virtual se quedara tal cual está y que al arrancarla de nuevo una vez formateado Windows 7 todo se mantuviera igual.

Los archivos que hay que guardar si están en su ubicación por defecto son:
C:\Users\granaino\AppData\Local\Microsoft\Windows Virtual PC\Virtual Machines\Windows XP Mode.vhd
C:\Users\granaino\AppData\Local\Microsoft\Windows Virtual PC\Virtual Machines\Windows XP Mode.vmc

También se debe guardar el archivo de arranque de la máquina virtual:
C:\Users\XXXX\Virtual Machines\Windows XP Mode.vmcx

En este archivo están las rutas a los otros dos anteriores por si se quisiera cambiar su ubicación original (es un XML, al igual que el .vmc)

El primero es el disco duro virtual y el segundo el archivo con la configuración y la información de la máquina virtual (un XML). Si la máquina está arrancada o hiberanda, habrá más archivos en la primera carpeta. Seguramente todo vaya bien si los copiamos, pero por si las moscas, yo recomiendo apagar la máquina virtual antes de hacer la copia de seguridad.

ATENCIÓN: todavía no he formateado y no he probado si esto funciona, haz la copia de seguridad de estos ficheros bajo tu propio riesgo! Y si ya lo has hecho y sabes que funciona, comenta :)

viernes, 5 de noviembre de 2010

Recordando la magia de los túneles SSH

La de cosas que he llegado a hacer con los túneles a través de SSH y lo olvidados que los tenía... hoy no me acordaba ni de como se abría uno con el putty.

Para que no me vuelva a pasar y poder consultarlo rápidamente, aquí dejo las instrucciones rápidamente:
  • Cargar la sesión del putty con la que queremos abrir el túnel
  • Ir a Connection -> Tunnels e introducir los datos:
    • Source Port: puerto local de nuestra máquina
    • Destination: host:puerto de la máquina destino
  • Añadir el túnel (Add)
  • Volver a las sesiones y guardarla si no queremos tener que hacer esto cada vez.
Con esto ya está creado un túnel de los más sencillos

AppInventor, el nuevo invento de google para Android

Bueno, quizá no sea tan nuevo esto del appInventor, pero yo me he enterado estos días y me he registrado para poder utilizarlo, porque no está abierto todavía más que a través de invitaciones.

La idea es abrir el mundo de la programación incluso a aquellos que no saben programar... sí sí, suena muy raro, pero es la idea: algo muy sencillo muy visual y muy intuitivo.

He tenido la posibilidad de probarlo en la cuenta de un amigo y es impresionante lo bien que funciona (bueno... debo decir que en mi ordenador no conseguí que funcionara, pero tampoco lo intenté demasiado) y la integración que proporciona con el terminal android: con dar un simple click nos despliega la aplicación que hemos creado en el movil directamente... pero ahí no termina todo, si no que podemos cambiar el diseño y va cambiando a la vez en el dispositivo móvil!

Cómo pega le encuentro que se puede quedar un poco limitado las acciones que se pueden hacer, por lo que está muy bien para aplicaciones sencillas, pero no para cualquier tipo de aplicación.

Si se quiere ver en funcionamiento elandroidlibre tiene unos vídeos en los que crea una aplicación en un pispas.

Y ahora a esperar la invitación para poder usarlo.... mientras eclipse y código :)