jueves, 22 de noviembre de 2012

Como resetear mi Samsung Galaxy S SCL (I9003)

Valencia, 22/11/2012 Gatsu

Hace tiempo escribí como cambiar el escritorio de mi teléfono Android porque dejó de funcionar. Hoy me ha hecho algo peor, se encendía, desbloqueaba la SIM, pero no podía acceder a ningún sitio. Después de un buen rato examinando el problema me he visto obligado a resetear el dispositivo, pero claro cuento con una desventaja, y es que tengo el botón de home estropeado. He buscado en varias páginas como hacer un hard reset al móvil pero ninguna combinación me ha servido. En última instancia he visto que se puede resetear el dispositivo si en la aplicación de Marcador escribes un código y llamas, la pregunta es, ¿cómo accedo al Marcador si mi dispositivo no me deja hacer nada? Muy sencillo, siguiendo estos pasos:

  1. Ten tu móvil con suficiente batería (yo lo he hecho con un 70%).
  2. Enciende el móvil de forma normal.
  3. Introduce el código para desbloquear la SIM (a menos que no tengas PIN, entonces omite este paso).
  4. Coge otro teléfono, y llama al que da problemas.
  5. Si recibes la llamada, acéptala, entonces pulsa en Añadir llamada y marca la siguiente combinación: *2767*3855#
  6. Le das a llamar y te cargará un mensaje en rojo y en inglés diciendo que se va a resetear el móvil.
El resto corre a cuenta del teléfono, se reiniciará, tardará un poco porque cargará la configuración de fábrica, y a volver a configurar tu móvil a tu antojo.

lunes, 17 de septiembre de 2012

IPN, Notificación de Pago Instantánea de Paypal

Valencia, 17/09/2012 Gatsu


Todo el mundo conoce Paypal hoy en día, y si no lo conoce, que le eche un vistazo a su página oficial.
Cuando una persona efectua una compra, una suscripción, una cancelación... una acción con su cuenta paypal hacia una cuenta empresarial que vende un producto o servicio, los encargados de gestionar esa cuenta empresarial pueden habilitar la opción de IPN, que consiste en ejecutar una página alojada en su hosting que se ejecutará en cada acción que haga un usuario para un producto empresarial. Su uso más común es el de registrar en una base de datos los movimientos para no estar pendiente del histórico de paypal.
Aunque suena complejo, Paypal ofrece ejemplos para distintos lenguajes de programación en servidor del código necesario para que la ejecución del archivo IPN sea correcta, después ya es cuestión de añadir las funcionalidades que sean necesarias.

Vamos por partes, comencemos por registrarnos una cuenta en sandbox de paypal (https://developer.paypal.com/), después nos creamos dos cuentas preconfiguradas, una personal y otra business, ésto ahorra todo el tiempo de poner los datos de cuenta, además es importante mencionar que, mientras trabajemos bajo sandbox, el dinero es virtual, con lo que podemos experimentar todo lo que queramos sin preocuparnos.
Una vez creadas las cuentas, entramos a la cuenta business, y en perfil, pulsamos sobre "Preferencias de Notificación de Pago Instantánea", editamos la configuración colocando una URL (ojo, enlace activo y sin puertos, por ejemplo www.dominio.es/ipn.jsp). Ahora vamos a crear el archivo ipn, por mi experiencia lo voy a mencionar para el lenguaje jsp, pero como he mencionado anteriormente, paypal ofrece ejemplos para varios lenguajes web.

En función del lenguaje que utilice nuestro servidor, accediendo a la página de ejemplos ipn de paypal, seleccionamos el archivo de texto con el lenguaje que utilizamos. Para jsp tengo que mencionar que hay una frase literal que debería ser un comentario pero por error no lo es, me refiero a "check notification validation".
Lo primero a modificar del archivo que descarguemos es la línea que hace la conexión a la URL de paypal, ya que si estamos trabajando con sandbox, esa URL es incorrecta, y la tenemos que cambiar por "https://www.sandbox.paypal.com/cgi-bin/webscr". Cuando dejemos el archivo ipn de forma oficial entonces pondremos la URL que venía originalmente en el archivo.
Lo siguiente a tener en cuenta es la parte de los parámetros que recibe el archivo, no están todos los necesarios escritos, para saber exactamente todos los parámetros que hay, y sus posibles valores, podéis acceder a la página de variables de IPN.

Una vez visto y comprendido todo lo anterior, solo queda añadir el código que necesitemos ejecutar. Yo me he basado en filtrar con condiciones en función de si el usuario realiza una suscripción, o se realiza el pago automático de la suscripción, y si el usuario cancela o se termina la suscripción. A continuación pongo un fragmento de código para que se entienda mejor:

if(res.equals("VERIFIED")) { if (paymentStatus != null && paymentStatus.equals("Completed") && txnType.equals("subscr_payment")){ //pago completado y periódico //conexión a la base de datos y notificación correspondiente } else if (txnType.equals("subscr_eot") || txnType.equals("subscr_cancel")){//suscripcion cancelada //conexión a la base de datos y notificación correspondiente } } else if(res.equals("INVALID")) { // log for investigation } else { // error }

Aspectos a tener en cuenta de la IPN:

  • Como hay varias formas de invocar al archivo, es posible que las variables que sirven para un uso, no funcionen para otro, por lo que hay que hacer todas las comprobaciones necesarias para que no falle la ejecución de código.
  • Si se produce un error con la ejecución de código. paypal seguramente reitere la petición en cuestión de segundos (incluso minutos), hasta 8 veces, por lo que si se encuentran registros duplicados es muy posible que sea por eso.
  • Desde el entorno de sandbox se puede testear la funcionalidad del archivo ipn enviando una petición e insertando todos los valores que creamos oportunos. Esta prueba puede dar falsos positivos, por ejemplo para crear una suscripción podemos pasar variables a través del formulario de botón de paypal, pero a la hora de que el usuario realice una cancelación, no podemos añadir información adicional, y es posible que alguna variable sea nula y produzca fallos.
Espero que os sea de utilidad.
Un saludo.

jueves, 14 de junio de 2012

Pantalla en negro y error en Compiz con Ubuntu 12.04

 Valencia, 14/06/2012 Gatsu

Como siempre hasta ahora, cada vez que quiero instalar Ubuntu paso por una odisea, pero bueno también tiene sus cosas buenas, por ello acabo solucionando los fallos. En esta ocasión (porque ya tuve fallos con Ubuntu 11.04) se me ha presentado el fallo de la pantalla en negro, y error en Compiz, que es el gestor de ventanas nuevo, os explico como lo he solucionado.
Lo primero de todo, si es una instalación nueva, vuelve a instalar machacando ese Ubuntu, si no lo es entonces te recomiendo que hagas caso de este enlace de Planeta Diego.

A la hora de instalar de nuevo Ubuntu no hay que seleccionar que disponemos de internet para que descargue actualizaciones, porque si las descarga y tienes una gráfica Nvidia seguramente te descargará la versión que corrompe al Compiz y ya la hemos liado. Con este asunto ya tenemos garantizado que instalamos Ubuntu, y cargará, pero queda el pantallazo en negro del Grub. Para ello me he instalado Grub Customizer con las siguientes líneas en la Terminal:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer 
Y ya como en la vez anterior, modificamos la resolución del Grub en Preferencias\Apariencia a una resolución personalizada de 800x600x8, y guardamos al salir. 

Por último, dado lo limitado que es mi pc, el estilo predeterminado de Ubuntu (a parte de que no me gusta) me consume muchos recursos y me va lento siendo recién formateado, así que como no te instala más temas, si quieres trabajar con la versión de escritorio de Gnome de toda la vida (bueno, versión 3, pero estilos de toda la vida) hay que instalarlos con estas líneas en la Terminal:
sudo apt-get install gnome-panel
Luego cierras sesión, y encima de la caja para poner contraseña saldrá un botón con la imagen de Ubuntu, le clicas y cambias el tema al que más te interese.

domingo, 10 de junio de 2012

WebP, formato de imágenes desarrollado por Google

Valencia, 10/06/2012 Gatsu

En realidad WebP lleva ya tiempo existiendo, pero bueno yo lo descubrí hace poco, y no me sorprende. WebP es un tipo de imagen creada por Google, cuya característica importante es la compresión de tamaño y mantenimiento de calidad. Podemos convertir imágenes jpg y png con el conversor gratuito que tenemos en Google Developers. El inconveniente que le veo es que solo Google Chrome (y Chromium) reconocen este tipo de imagen y la visualizan, el resto de exploradores lo reconocen como un archivo descargable, de hecho ni siquiera programas como Gimp o el visualizador de imágenes de Ubuntu reconocen la extensión.


Hasta que el resto de navegadores le den soporte, la única opción que se me ocurre para darle un buen uso a este tipo de imagen es comprobar por javascript si se usa Chrome o no, y en función de ello cargar las imágenes WebP o las normales. Es cierto que tendríamos el servidor con más archivos, pero para todos los usuarios de Chrome les supondría una navegación más liviana a la hora de esperar a la carga de las distintas imágenes.

Por último, mencionar que de la misma forma que podemos convertir una imagen jpg o png a WebP, podemos convertir una WebP a jpg o png. Yo he hecho una prueba de ambos procesos y tengo que decir que es cierto y funciona.

miércoles, 11 de enero de 2012

Depura tus aplicaciones caseras Android en tu móvil o tablet en Ubuntu

Valencia, 11/01/2012 Gatsu

Buenas noches, entre momentos de desesperación por exámenes y frustraciones con asuntos androides, esta mañana me topé con la inutilidad de poder usar mi móvil (recien actualizado de froyo a gingerbread) para depurar aplicaciones creadas con Eclipse. Estuve buscando en muchos foros, páginas, la ayuda de android, etc., y nadie sabía que pasaba, hasta que me topé con el blog de "Prueba a reiniciar", y parecía como si estuviese hecho ese post para mí, pues en 2 minutos solucioné el problema que en horas no conseguí.

Para empezar, un paso obvio pero siempre digno de recordar, activar la depuración USB del móvil o tablet Android (Ajustes/Aplicaciones/Desarrollo) y conectamos el dispositivo al pc. Después acudid a la carpeta de la sdk de android, y os meteis en platform-tools (desde la terminal), ahora detenemos el servicio ADB con la orden "sudo ./adb kill-server" y lo reconectamos con "sudo ./adb start-server". Después de ello comprobamos con "./adb devices" que salga alguna combinación de números y letras, y que no sea todo "?????????", en ese caso enhorabuena, ya puedes depurar con tu dispositivo Android aplicaciones en Eclipse.

Si no te ha salido, te recomiendo el artículo de "Como preparar tu móvil Android para depurar tus programas de Eclipse en Ubuntu" de "Prueba a reiniciar"