miércoles, 21 de diciembre de 2011

El truco de la semana: Cambiar los tabs en Eclipse

Utilizo el IDE eclipse constantemente para programar, ya sea en Java o en PHP y me vuelvo loco cuando tengo que cambiar entre dos editores diferentes del mismo programa: estoy trabajando en un archivo y quiero mirar alguna cosa de otro... los dedos se me van automáticamente al ALT + TAB utilizado en windows para cambiar de ventana lo que hace que me salga del eclipse y vaya a parar a otra aplicación diferente. Esto me pasa no una vez, ni dos, sino constantemente y es un engorro.

Hoy he descubierto un par de atajos que pueden ayudar a moverse entre los editores de eclipse de una manera rápida y sin tener que echar mano al ratón:

CTRL + PgUp / CTRL + PgDown
Nos permite pasar al siguiente y anterior editor respectivamente

CTRL + F6
Tiene la misma función que el ALT+TAB de windows, pulsando F6 repetidas veces pasamos al siguiente editor, en el orden en que los hemos visitado, mucho mejor opción que la anterior.

CTRL + E
Abre un dialogo en el que vemos todos los editores abiertos y con las teclas del cursor y ENTER, saltamos a la ventana que más nos guste.

Mi solución:
La opción que más me gusta es la de CTRL + F6 pues funciona justo como yo quiero, pulsando una vez, voy al último editor visitado que generalmente es el que estoy buscando. Sin embargo la tecla F6 me pilla muy a desmano porque no la tengo entre las teclas más presionadas, por lo que he entrado en el editor de atajos de teclado y simplemente he cambiado la E por el F6, para cambiar sus funcionalidades cuando está CTRL pulsado.
Para hacer esto, en Window -> Preferences y ahí dentro de General, la opción Keys (o buscar Keys directamente en el cuadro de búsqueda superior)

martes, 20 de diciembre de 2011

Error de violación de seguridad Sandbox

Largo tiempo sin publicar... hoy lo hago para reportar este error que me ha surgido y que seguro a más de uno le puede ayudar a solucionar el problema, o incluso a mi en un futuro. Aquí va:

Si aparece en siguiente error de violación de seguridad:
Error #2049: Violación de la seguridad Sandbox:
http://100.100.100.100:7001/App/myApp.swf no puede cargar datos en http://100.100.100.200:8080/App2/dir/MyWebService?id=”5”

Hay que hacer lo siguiente.

Esto ocurre porque desde el archivo de Flex desplegado en la máquina 1 (IP:100.100.100.100 ) se está llamando a un web service situado en otra máquina 2 (IP: 100.100.100.200)
El problema se resuelve creando un fichero xml de nombre crossdomain.xml con este contenido:

<?xml version="1.0"?>
<cross-domain-policy>
 <allow-access-from domain="100.100.100.100" />
</cross-domain-policy>

Y se despliega en la raíz del servidor de la máquina 2. Es decir, tiene que estar accesible desde:
http://100.100.100.200:8080/crossdomain.xml

Ahora ya no debería aparece dicho error.

domingo, 20 de noviembre de 2011

Apagar ordenadores desde escritorio remoto en Windows

El típico comando del acceso directo para poder apagar ordenadores desde el escritorio remoto de windows:

%windir%\System32\shutdown.exe -s -f -t 00

viernes, 4 de noviembre de 2011

WicketSession fuera de Wicket

Wicket tiene su propio objeto de sesión que se puede utilizar dentro de una aplicación para guardar elementos entre distintas llamadas de un mismo cliente. Este objeto será una org.apache.wicket.Session o algún otro objeto que la extienda como WebSession o un objeto propio.

Mientras no nos salgamos de la aplicación de Wicket todo va bien y tendremos la sesión disponible... pero ¿y si tenemos que enviar al usuario a otra parte de nuestro servidor que se sale de nuestra aplicación? A un servlet distinto o un formulario de otra parte, por ejemplo. En ese caso perderemos la sesión y no podremos saber que se trata del mismo que viene de la aplicación Wicket.

Hay una solución para este problema y que nos dejará la sesión disponible en cualquier otro lugar (servlets, jsps...) y es a través de un filtro especial llamado WicketSessionFilter que hará justo lo que deseamos, transportar la sesión a otros lugares.
Para usarlo, debemos configurarlo primero en el archivo web.xml del servidor de aplicaciones:

<!-- The WicketSesionFilter can be used to provide thread local access to servlets/ JSPs/ etc -->
  <filter>
    <filter-name>WicketSessionFilter</filter-name>
    <filter-class>org.apache.wicket.protocol.http.servlet.WicketSessionFilter</filter-class>
    <init-param>
      <param-name>filterName</param-name>
      <!-- expose the session of the input example app -->
      <param-value>FormInputApplication</param-value>
    </init-param>
  </filter>
 
  <!-- couple the session filter to the helloworld servlet -->
  <filter-mapping>
    <filter-name>WicketSessionFilter</filter-name>
    <url-pattern>/helloworldservlet/*</url-pattern>
  </filter-mapping>

En el parámetr filterName, debemos poner el valor de otro filtro que ya tengamos en nuestra aplicación (la verdad que esto no lo se muy bien por qué, pero es como me ha funcionado) y el resto de campos se puede ver bastante bien en el ejemplo: el mapping al servlet en el que queremos tener disponible nuestra sesión de Wicket.

Ahora ya se puede acceder a la sesión desde el servlet de la siguiente manera:

Session wicketSession = Session.get();

Que dentro de un servlet quedaría algo así:

public class HelloWorldServlet extends HttpServlet
 {
        public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,
                IOException
        {
                res.setContentType("text/html");
                PrintWriter out = res.getWriter();
                String message = "Hi. " +
                        (Session.exists() ? " Veo la sesion de Wicket " + Session.get() + "."
                                : " No encuentro la sesion de Wicket.");
                out.println(message);
                out.close();
        }
 }


Fuente: http://wicket.apache.org/apidocs/1.4/org/apache/wicket/protocol/http/servlet/WicketSessionFilter.html

martes, 25 de octubre de 2011

Cisco Scientific Atlanta EPR2320 Drivers para el modem de ONO

Después de volverme medio loco buscando los drivers para el cable modem EPR2320 que viene (o venía) con ONO, he encontrado el enlace a los drivers desde la página de Cisco (el CD que viene no vale para nada, sólo trae un enlace a una página completamente desfasada de antes de que Cisco comprar Scientific Atlanta). No me entretengo más y dejo el enlace a los drivers:

http://www.cisco.com/web/consumer/support/modem_DPR2320.html#~drivers

Espero que a alguien le sirva!

viernes, 14 de octubre de 2011

Jugando con medidas y javaScript

Me está tocando realizar alguna que otra labor con javaScript y como yo pertenezco a la vieja escuela en este lenguaje, intento siempre sacarlo todo a través de las propiedades del propio lenguaje.

Esto, si bien tiene la ventaja de que aprendes javaScript puro y duro, tiene la desventaja de que hay que saber ciertos trucos si queremos obtener los mismos resultados independientemente del navegador que se esté usando. Y esto generalmente va referido a Internet Explorer que es el que más problemas causa y ha causado históricamente.

Por poner un ejemplo, para obtener la posición de la barra de scroll del navegador, en Firefox o Chrome nos valdrá con la propiedad window.pageXOffset; pero no en Internet Explorer 9 (y anteriores supongo) en el que hace falta coger el document.body.scrollLeft. De esta manera tenemos que empezar a hacer cosas como:
var hscroll = (document.all ? document.body.scrollLeft : window.pageXOffset);
var vscroll = (document.all ? document.body.scrollTop : window.pageYOffset);

Con esto hay que tener cuidado pues uno se puede ir a casa tranquilamente pensando que su trabajo funciona para encontrarse al día siguiente con que el cliente le dice "no funciona en Internet Explorer" y tu piense... ¿qué era Internet Explorer? ¿No lo habían prohibido ya? y te toque ponerte a buscar la solución para el navegador de los hacks.

Lo mismo pasa con otras propiedades como el ancho/alto del navegador o el ancho/alto del viewport de la página que estamos viendo: hay que dar varias vueltas para obtener el valor que de verdad queremos. Cansado de ello, he decidido pasarme a la nueva escuela e introducir jQuery para obtener todos estos valores. A través de sus funciones ya implementadas no es necesario preocuparnos del navegador, pues ellos lo hacen por nosotros.
Así por ejemplo, para obtener el scroll de la página nos vale con:
var hscroll = $(window).scrollTop();
var vscroll = $(window).scrollLeft();

O lo mismo para obtener el ancho y alto del navegador:
 var winW = $(window).width();
 var winH = $(window).height();

O para obtener el offset de un elemento con respecto a la ventana:
var imgOffset = $("#elementID").offset();
Conclusión: está muy bien saber por qué funcionan las cosas y jugar con las diferentes propiedades y en los diferentes navegadores, pero cuando hay que hacer algo serio que tiene que funcionar, es preferible usar alguna de las librerías fiables que existen en internet.

Cómo conectar Google Plus con Google Reader

(con el permiso de Genbeta):

Como compartir posts en Google+ desde Reader usando la función "Enviar a":

Como compartir posts en Google+ desde Reader usando la función "Enviar a"
La integración de Google+ con otros servicios de la compañía es una de las cosas más esperadas por los usuarios. Y sin duda, uno de los aspectos más demandados es que se produzca entre la red social y Reader, el popular lector de feeds. Por aquí, vimos una extensión para Chrome que permitía integrar ambos servicios, aunque su funcionamiento no resultaba el mejor del mundo.

Sin embargo, mientras llega oficialmente, podemos utilizar el método que nos explican desde ReadWriteWeb y que nos permitirá compartir en Google+ los posts que queramos desde Reader. Es muy simple: se trata de incluir a Google+ como un servicio más dentro de aquellos que nos aparecen en la lista “Enviar a” al final de cada post. Veamos como hacerlo.

Primero, nos vamos a la configuración de Google Reader (arriba, en la rueda dentada) y de allí, a la pestaña “Enviar a”. Después, nos desplazamos abajo del todo y pinchamos donde dice “Crear un enlace personalizado”. Nos aparecerán tres campos que rellenar. En ellos, pondremos los siguientes datos:

Nombre: Google+
URL: https://plusone.google.com/_/+1/confirm?hl=en&url=http://www.genbeta.com/web/como-compartir-posts-en-google-desde-reader-usando-la-funcion-enviar-a
URL del icono: https://ssl.gstatic.com/s2/oz/images/favicon.ico

Pulsamos el botón Guardar y ya está. A partir de ahora, cuando pulsemos en “Enviar a” y seleccionemos la opción “Google+” se nos abrirá en otra pestaña como el mismo formulario que se nos abre en un popup cuando pinchamos en el botón +1; es decir, que habremos hecho +1 en el post. Después, pues lo de siempre: pinchar en compartir, añadir algún texto si queremos y pulsar el botón oportuno.

Aunque no es la panacea, es la mejor solución que he visto hasta el momento para compartir rápidamente desde Reader, además sin hacer uso de extensiones y disponible desde todos los navegadores. Eso sí, sigo esperando a que implementen la dichosa integración con el lector de feeds, algo que por lógica debería no haber tardado mucho pero que se está haciendo de rogar.

Vía | ReadWriteWeb

jueves, 13 de octubre de 2011

Las X en Ubuntu

Algo que no termino de entender del todo es... Linux!! Pero bueno, poco a poco se va avanzando siempre que no olvidemos lo que ya sabiamos (este es el objetivo de este blog, ya sabéis). Hoy al equipo no le ha dado por comenzar como de costumbre y me aparece la consola directamente ¿Qué hago?

Después de loguearme ejecuto

startx

y con eso ya se inicia el sistema visual. Si después de eso resulta que se te queda pillado y necesitas volver a empezar de nuevo, te tocará reiniciar las "x". Para ello, en una consola (Alt + Ctrl + F2 por ejemplo) ejecuta lo siguiente:

$ sudo /etc/init.d/gdm restart

Fuente: 1

viernes, 7 de octubre de 2011

Instalar Joomla en un subdominio

Al instalar Joomla puede ser que quieras por un lado ponerlo en una carpeta diferente de la raíz y además acceder a él a través de un subdominio.

 Como ejemplo, pongamos que la carpeta de joomla se llamará "folder" y el subdominio "subdomain", por tanto, para instalar, deberás descomprimir todos los archivos en la carpeta folder de tu servidor web.

Para poder acceder a joomla a través de un subdominio, deberás configurar además las reglas necesarias, por ejemplo en el archivo .htaccess del directorio raíz, para que pongan algo así:

# Reglas adicionales para redireccionar a tu subdominio
RewriteCond %{HTTP_HOST} ^subdomain\.midominio\.com
RewriteCond %{REQUEST_URI} !^/subdomain/
RewriteRule (.*) folder/$1 [L]

Entendiendo que vas a instalar joomla a través del método semi-automático, accede al sitio a través del subdomino: subdomain.midominio.com (nota que no aparece la carpeta por ningún sitio, pues es justo lo que queremos)

Sigue los pasos del instalador y listo! ¿Listo? Puede que no del todo! En mi caso, y por lo que escribo este blog es para llamar la atención ya que al terminar la instalación, las URLs de los enlaces de joomla eran del estilo subdominio.midominio.com/folder y yo no quería que apareciera la carpeta folder

Para evitar que aparezca el nombre de la carpeta de instalación y acceder únicamente a través del subdominio, en el archivo configuration.php debes indicarlo en la variable $live_site ->

public $live_site = 'http://subdomain.midominio.com/';

Sigue estos pasos bajo tu propia responsabilidad, a mi me ha funcionado!

lunes, 3 de octubre de 2011

Minus, 11 Gb en la nube gratuitos

Minus es un servicio de almacenamiento online que nos brinda la posibilidad de alojar hasta 10 Gb de manera completamente gratuíta en la nube.
La página es muy sencilla y no requiere más datos que un nombre de usuario y una contraseña. Opcionalmente se puede facilitar una dirección de correo, pero no hay ningún proceso de activación o similar. Desde el momento que introduces esos datos puedes comenzar a utilizar el servicio.

Minus cuenta con una serie de herramientas tanto para escritorio (Windows, Linux y Mac) como para entornos móviles (Android y iPhone), así como extensiones para navegadores. Por si esto fuera poco además el servicio cuenta con una API sobre la que integrar las aplicaciones que los usuarios realicen.

Otra cosa buena de Minus es que no se limita a los 10 Gb que ofrece si no que además da la posibilidad de llegar hasta los 50 Gb de almacenamiento gratuito, regalando 1Gb por cada usuario que se registre a través de el enlace que le proporcionemos. Y 50 Gb de almacenamiento gratuito ya no es ninguna tontería...

He comenzado a utilizarlo un poco por encima y la interfaz parece muy sencilla e intuitiva, las subida se realizan en segundo plano mientras podemos navegar por los elementos que estamos subiendo a través de una previsualización. Reconoce las imágenes directamente y las muestra en formato galería. Promete mucho el servicio de Minus

Por ponerle alguna pega, simplemente es que no hay opción de comprar un almacenamiento ilimitado o algo similar que ofrecen otros servicios en internet, la única manera de conseguir más espacio es invitando a amigos.

Referencia: Minus

viernes, 23 de septiembre de 2011

Canon EOS 550D


Hace poco (casi un año ya, cómo pasa el tiempo) me compré una cámara compacta bastante barata: Fujifilm JX250. La cámara no es que sea espectacular pero cumple su función bastante bien y es ideal para situaciones en las que la cámara puede correr cierto peligro: salir de fiesta por la noche; llevarla en la mochila a una excursión de montaña; o en la parte de atrás del maillot cuando vas a montar en bici. Salvo cuando hay oscuridad, hace unas fotos aceptables y no estoy descontento del todo con ella.

Sin embargo, si te gusta la fotografía y en algún momento buscas sacarle algo más a tus fotos, tendrás que evolucionar y dar el salto hacia las reflex. Estas cámaras están en otra liga a la hora de hacer fotos sin embargo también tienen sus problemas, que principalmente yo los reduzco a dos:
  1. Su precio
  2. Su tamaño
Sabiendo esto, si aún así crees que quieres dar el salto, pues adelante, cómprate una cámara reflex! Yo es lo que he hecho. Tras darle unas cuantas vueltas me he decidido por la Canon EOS 550D con un objetivo 18-55mm. ¿Por qué esta?

  • Canon: posiblemente sea la marca con más cámaras vendidas, esto se traduce en que mucha gente tendrá cámaras similares o parecidas a las tuyas, para el tema de repuestos o material de segunda mano, no tendrás ningún problema
  • EOS 550D: pues no es ni la más sencilla ni muy complicada, anda en el segundo, tercer lugar de la lista de las reflex de Canon. Primero está la 1100D, luego la 500D y la siguiente es esta, la 550D. Aquí lo que se está pagando es el cuerpo de la cámara, los objetivos son intercambiables y más adelante podrás comprar otro. ¿Hay diferencias entre ellos que merezcan la pena? Pues sí las hay, que merezcan la pena o no, has de juzgarlo tu mismo. Desde luego si quieres empezar en el mundillo, no te recomiendo que te compres algo más grande a no ser que te quieras dedicar plenamente a ello. Encontré en la página de canon esta comparativa entre las 1100D, 550D y 600D, echa un vistazo y juzga por ti mismo.
  • Objetivo 18-55mm: es el que viene por defecto en los packs cámara + objetivo más barato. Menos de 18mm es un gran angular y creo que sólo se usa para espacios reducidos en ocasiones especiales o si te gusta y ya sabes más. Más de 55mm es un teleobjetivo, puede estar muy curioso pero ya es mucho más dinero. Para empezar con este está bien y más adelante se puede añadir un teleobjetivo o comprar uno de mayor rango como 18-135mm o similar.
La pega de Canon que no lo he mencionado es que seguramente se esté pagando algo de marca. Como no tengo mucha idea tampoco me he puesto a mirar las diferencias de precio y características entre Canon y otras marcas de Reflex como pueda ser Nikon por ejemplo. En varios post que he leído (siento no poner referencias, ahora no me acuerdo), leí que aunque se paga un poco más, merece la pena.

Ahh! Otra cosa que se me olvida poner es que la cámara graba vídeo en Full HD... sí sí, ya sé que estamos hablando de fotografía, pero si además nos llevamos una cámara de vídeo, pues a lo mejor lo podemos utilizar también no?

Ya os contaré cuando llegue a casa.

martes, 20 de septiembre de 2011

Restaurando tu ordenador portátil



Casi todos los nuevos portátiles vienen con una partición oculta que nos puede servir de recuperación en caso de que queramos "formatear" el ordenador. Anteriormente traían los cds con el sistema operativo y con los drivers, pero eso ya se lo ahorran y lo dejan en tus manos.

Me las he tenido que ver con un Asus y con un Acer, ambos con partición de recuperación. Parece fácil, pero la primera duda que surge aquí es ¿Cómo se accede a esta partición en caso de querer formatear? Pues no es algo estándar y cada marca pone sus teclas de acceso. Cuando esté arrancando el ordenador deberemos pulsar:
  • Asus: F9
  • Acer: Alt + F10
Esto activará el sistema de recovery y nos permitirá restaurar el equipo a sus configuraciones de fábrica.

Un problema con estas particiones es si tenemos algún tipo de fallo en el disco duro, en cuyo caso no podremos realizar esta operación nunca más. Por ello es muy importante que nada más arrancar el ordenador por primera vez creemos los CD/DVD de recuperación. Es un poco jodienda y tarda bastante, pero piensa que es un grado de seguridad más para tu portátil.

Un apunte más, acerca de estos sistemas de recuperación: cada uno es de su propio fabricante y trae sus propias características, pero todos tienen algo en común: son bastante cutres. En concreto, el de Acer por ejemplo, no te permite más que restaurar a la partición C: de manera que se cepilla todo el disco duro y sólo te deja una única partición (nada recomendable). La de Asus por lo menos te da la opción de formatear C: y mantener los datos que tengas en otras particiones, conservando así tus datos (aún así, siempre es recomendable hacer back-up).

Suerte con tu recuperación y que no tengas ningún problema

Ordenadores portátiles en Amazon.es

martes, 13 de septiembre de 2011

Cambiar el título de una página con Wicket

Si has utilizado Wicket, te habrás dado cuenta de que el título de la página no se puede modificar de la misma forma que se hace con otros componentes. Un componente normal, por ejemplo el contenido de un <span>, lo pondríamos de la siguiente manera para que fuera configurable e internacionalizable i18n:
<span><wicket:message key="content">Default Content</wicket:message></span>
Poniendo la propiedad "content" dentro del archivo de propiedades, tendremos nuestro <span> internacionalizado sin ningún problema.

Pero esta fórmula no aplica al título de la cabecera de la página, de manera que si ponemos:
<!DOCTYPE html>
<html>
 <head>
   <title><wicket:message key="page.title"></wicket:message></title>
 </head>
 ...
</html>
lo único que conseguiremos es que el título de la página diga "<wicket:message key="page.title"></wicket:message>"

La solución es ponerlo como un componente de wicket e inicializarlo desde Java. El archivo html de markup quedaría así:
<!DOCTYPE html>
<html>
 <head>
   <title wicket:id="window.title">Default title</title></title>
 </head>
 ...
</html>

Y desde el archivo java correspondiente lo inicializaremos de la siguiente manera:
add(new Label("window.title", new StringResourceModel("window.title", null))); 
de manera que el título de la página se cogerá del archivo de propiedades de la key "window.title"

jueves, 8 de septiembre de 2011

Copiar un conjunto de tablas dentro de la misma base de datos

Hoy quería hacer una copia de un blog de wordpress de manera que pudiera tener un sitio de pruebas en el que jugar sin miedo a cargarme algo del blog de verdad.
Uno de los pasos que hay que realizar es una copia de la base de datos utlizada por el blog. En mi caso no tengo más bases de datos así que la opción ha sido copiar las tablas con un nombre diferente a la misma base de datos.
Para mi sorpresa, buscando por internet, no he encontrado una manera rápida o semi-automática de realizar esta copia. He encontrado muchos posts de como copiar una tabla (pero solo una, no un conjunto de ellas) pero no me apetecía ejecutar una por una para cada tabla.
Comentar que uso MySQL por si alguien lo dudaba.

La solución para copiar las tablas a la misma base de datos pero con nombre distinto ha sido:
  1. Acceder al gestor de la base de datos a traves de phpMyAdmin
  2. Seleccionar todas las tablas que quería copiar, marcándolas con el correspondiente "checkbox"
  3. Abajo de todo el listado de tablas, hay un desplegable para realizar acciones en bloque, ahí he elegido Exportar
  4. Descargamos el archivo de exportación a nuestro ordenador y lo abrimos con un editor de texto. Buscamos el prefijo que tengan dichas tablas y lo sustituimos por un nuevo prefijo.
    Por ejemplo, si se llamaban todas wordpress_nombreDeTabla, buscamos wordpress_ y lo sustituimos por otroprefijo_
  5. En caso de que no haya un prefijo común a todas las tablas, siempre tendremos un patrón en todas ellas, por ejemplo "CREATE TABLE IF NOT EXIST nombreDeTabla". En este caso buscamos la cadena "CREATE TABLE IF NOT EXIST " (con el espacio del final incluido) y lo reemplazamos por "CREATE TABLE IF NOT EXIST otroprefijo_" de manera que todas las tablas pasarán a tener otroprefijo_ delante suyo.
  6. Guardamos el fichero
  7. Volvemos a phpMyAdmin y en el menú superior elegimos "Importar"
  8. Elegimos el archivo editado, y lo importamos. Todas las tablas deberán duplicarse con su nuevo nombre.
Espero que haya sido de utilidad y puedas copiar tus tablas de mySQL sin tener que ir una por una

jueves, 4 de agosto de 2011

Configurar drupal en un subdirectorio y a través de un subdominio

He escrito en otro blog cómo he configurado drupal para que funciona accediendo a él a través de un subdominio e instalandolo en un subdirectorio de la raíz de nuestra web.
También se explica como configurarlo para poder acceder a través de URLs limpias o "clean URLs"

Accede a la información

miércoles, 27 de julio de 2011

Iniciar eclipse en diferentes workspaces

Si trabajas con diferentes workspaces y no quieres andar cambiando entre uno y otro, o eligiendo al comenzar, puedes añadir al acceso directo el siguiente comando:

-data "D:\ix\workspace"

miércoles, 20 de julio de 2011

Extraer el audio de un archivo SWF con VLC a través de la línea de comandos

La manera más sencilla que he encontrado de extraer el audio de un fichero flash en formato swf (o flv) es a través del reproductor VLC.

En las pruebas que realizado he sacado un archivo de audio wav a partir de un archivo flash swf. Primero explico como hacerlo a través de la interfaz y luego, a través de la línea de comandos que puede ser muy interesante dependiendo de para qué lo queramos.

A través de la interfaz gráfica:

Para ello (lo tengo en inglés así que los nombres de menús y botones pueden no ser iguales):
  • Abrir VLC
  • Abrir el primer menú ("Media") y "Advanced Open File..."
  • En la parte superior elegimos el archivo flash del que queramos extraer el audio
  • En el botón de "Play" veremos que se pueden elegir otras opciones... elegimos "Stream"
  • Se abrirá un asistente cuya primera pantalla es el archivo de entrada que ya elegimos, le damos a "Next"
  • En la siguiente sección hay que elegir el destino, que será un fichero que elegiremos. En esta misma pantalla, desactivar la casilla "Transcoding"
  • Con estas opciones ya es suficiente, pulsamos sobre el botón "Stream" y en pocos segundos tendremos el archivo de audio donde hayamos indicado.

A través de la línea de comandos:


En los pasos anteriores, si en el asistente abrimos la última pantalla, veremos un texto que es el equivalente al comando necesario para ejecutar por línea de comandos. Por tanto, quedaría algo así:
  • Situarnos en la carpeta donde se encuentre el fichero vlc.exe (de lo contrario habrá que indicar la ruta completa, entre comillas preferiblemente).
  • Ejecutar el siguiente comando:
    vlc "D:\ruta\al\archivo\flash.swf" :sout=#file{dst="D:\ruta\al\archivo\audio.wav"} :no-sout-rtp-sap :no-sout-standard-sap :ttl=1 :sout-keep
  • Si queremos que a continuación se cierre el VLC, añadir al final:
    vlc://quit
  • Y si no se quiere mostrar la interfaz gráfica para nada, añadir después del vlc.exe:
    -I dummy  --dummy-quiet

martes, 19 de julio de 2011

Deshabilitar el hibernado en Windows7

Si quieres deshabilitar la capacidad de tu ordenador para que hiberne (bien porque no lo usas, bien porque quieres más espacio en C, bien por ambas) ejecuta en la línea de comandos (como administrador)

powercfg -h off

Y listo!


PD: si la hibernación está habilitada habrá un archivo en C: llamado hiberfil.sys que tendrá el mismo tamaño que tu memoria RAM. Al deshabilitarlo, se elimina el archivo y ganas ese espacio para ti

domingo, 17 de julio de 2011

Clonado de particiones con Ubuntu: GParted

Nunca había tenido que acudir a clonar una partición de un disco duro a otro, pero tras intentar otras opciones, es la única que me quedó para meter Windows7 en el nuevo disco SSD.

La opción que mejor me ha funcionado a mi es la de arrancar Ubuntu desde un LiveCD (LiveUSB en mi caso) y una vez ahí arrancar GParted (
sudo gparted
) para clonar las particiones.

Para que esto funcione deberemos tener pinchados los dos discos en el ordenador. En mi caso que se trata de un portatil, tenía pinchado el nuevo disco SSD y conectado por USB a través de una caja externa el antiguo HDD donde tengo la partición con el Windows7 que quiero que me sirva de origen de copia.

GParted tiene una interfaz gráfica muy sencilla de utilizar. Se muestran todos los discos físicos que hay pinchados (tres en mi caso teniendo en cuenta el USB de arranque de Ubuntu) y en cada uno de ellos las particiones que hay.

Botón derecho y copiar y botón derecho y pegar, serán suficientes para clonar una partición de uno a otro. Pero tenemos muchas más opciones como borrar particiones, formatearlas, crearlas, reducirlas, borrado del disco completo...
Hay que manejar la herramienta con cuidado pues nos podemos cargar toda la info en un periquete.

Para mi caso, los pasos a realizar fueron: borrar todas las particiones del nuevo disco (tenía instalado Ubuntu), crear una nueva tabla para el disco (borra cualquier información de boot que pudiera tener), ir al disco externo, desmontar el disco donde tengo el Sistema Operativo, copiar dicha partición (si no desmontamos antes, no nos dejará), volver al disco SSD y pegar la partición.
Se aplican los cambios y habremos finalizado con el clonado.

Puede servir para cualquier otra partición, aunque yo solo lo he utilizado para mover un windows de un disco a otro. Eso sí, una limitación de entrada es que no se puede cambiar el tamaño de la partición, se mantendrá el tamaño de la original aunque tenga espacio libre.

miércoles, 6 de julio de 2011

Crear USB de arranque de Ubuntu

Recibí mi disco SSD y cansado de no conseguir instalar en él Windows 7 que tengo original (ya contaré los problemas en otro post) decidí instalar Ubuntu para por lo menos poder probar la velocidad del nuevo dispositivo.

Cuándo te descargas Ubuntu viene en formato de imagen de CD/DVD, pero la verdad, yo ya estoy un poco cansado de los discos (uno de los motivos por los que no he sido capaz de instalar mi Windows original), no les veo utilidad teniendo pendrives de hasta 8GB y ordenadores que arrancas desde USB.

Para meter la imagen de Ubuntu (o cualquier otra distribución Linux) en un pendrive, tan sólo hace falta el "Universal USB installer" (gratuito claro), un pendrive de unos 2GB (o mayor si la imagen que queremos meter ocupa más, para Ubuntu valen 2GB) y por supuesto la imagen que descargaremos de internet.

Desde el instalador universal de USB elegimos el tipo de la imagen, el pendrive y la ubicación de la imagen y listo, nos la crea al momento. Reiniciamos el ordenador y arrancamos desde el USB (configurar en la BIOS, o pulsar ESC durante el arranque para elegir el dispositivo de arranque, o cualquier otro medio que tenga tu PC) y listo. Ya tenemos un LiveCD (LiveUSB en realidad) listo para juguetear o instalar

Enlace: Universal USB installer

viernes, 1 de julio de 2011

Ratón inalámbrico Trust, no vale nada

Hola, igual que hace unos días hacía un poco de publicidad de los repositorios gratuitos de Assembla porque me parece que ofrecen un buen servicio a sus clientes, porque los he probado y funcionan bien... hoy tengo que hacer publicidad negativa de la marca Trust. Bueno, no de toda, simplemente de su kit de ratón y teclado inalámbricos. Me lo compré como hace dos meses, allá por Semana Santa y hoy día 1 de julio ya estoy hasta las narices del ratón (el teclado he de reconocer que va estupendamente, vamos, normal, como cabría de esperar).

¿Cuáles son las pegas que le he encontrado?
  • El ratón se come las pilas. Al principio, con pilas normales y corrientes de las AAA de 1,5V, no me duraba más de una semana. Ahora he cambiado a pilas recargables y bueno, dura algo más, pero no el tiempo que pone en la caja, que habla de meses.
  • Por si esto no fuera ya motivo suficiente de cansancio (tener que tener siempre pilas de repuesto a mano), cuando el nivel de batería está bajo, empieza a hacer extraños: estás seleccionando un texto y deja de seleccionar a la mitad... estás arrastrando un elemento y lo suelta dónde le da la gana...
  • Los botones no andan muy finos... y es que no sé si se trata del mismo motivo anterior (un nivel bajo de batería) o de que simplemente no van muy bien.
  • Y último motivo y el cual ya ha colmado el vaso y me ha llevado a escribir esto: el botón izquierdo a empezado a funcionar cuando le da la gana, a veces hace click, otras no y otras doble click... Le cambié la pila ayer, así que descarto el nivel bajo de batería.
Lo he intentado abrir con un destornillador a ver si se le hubiera metido algo, para poder limpiarlo, pero no he sido capaz, sólo tiene un tornillo a la vista y buscar más supondría quitar las almohadillas que tiene en la parte inferior y por el cual arrastra bien sobre las superficies.

La verdad es que no todo es malo, pero sí casi todo, ¿qué es lo bueno?
  • Precio... comparado con sus competidores de microsoft o logitech, este es más barato... claro que lo barato me ha salido caro.
  • Receptor único para ratón y teclado y de un tamaño ínfimo: lo puedes dejar puesto en el ordenador constantemente aunque lo muevas de un sitio a otro porque apenas se nota que esté puesto.
  • Forma ergodinámica (se dice así?) del ratón, claro que todos sus competidores lo tienen.
Conclusión, que si quieres un ratón inalámbrico en condiciones, no te compres este de Trust, gástate un poco más de dinero y cómprate uno bueno, o busca otra marca barata y cuéntanos como te ha ido. De todas formas creo que Logitech está a la cabeza en este mundo. Si no siempre te quedan los cables que depende para donde, tampoco son tan malos.

martes, 28 de junio de 2011

Probando nueva tecnología: SSD

Ya llevan bastante tiempo en el mercado, pero por fin me he lanzado a probarlos, ahora que su precio es algo más asequible que hace unos meses.

Se dice que hoy en día el límite de los ordenadores no viene por la cantidad de memoria o la capacidad de proceso del micro, si no por la velocidad de acceso a los datos de los discos duros. En mi portatil, un Asus U30J, puede que no sea del todo cierto, aunque muy seguramente note muy mucho la diferencia.

Sin mirar mucho, me he dejado guiar por un compañero que me ha recomendado comprar un SSD de 120Gb de la marca OWC, el modelo Mercury Extreme Pro. No es muy conocida y menos en Europa, pero los datos de estos discos duros son muy buenos, superando a la media. Otra característica de estos SSD es que además de ser 100% compatibles con PC, tienen mucho cuidado en la compatibilidad con los MAC, por lo que los hacen muy recomendables si es el caso (no el mío, pero sí el de mi compañero). Aquí hay un artículo de alguien que lo ha probado con un Mac y hablan muy bien de los resultados obtenidos.

El precio que hemos conseguido tras buscar mucho por ahí es de 160€ más los gastos de envío, lo cual no está nada mal. Ahora solo queda que llegue el pedido, que lo estoy deseando.

Los siguientes pasos serán sustituir el actual HDD por el nuevo SSD y estudiar la manera de hacerlo. Hay quien recomienda hacer un clonado del disco duro actual al nuevo, hay quien recomienda comenzar de cero e instalar de nuevo el sistema operativo sobre el SSD... Ya veré, aunque soy más partidario de formatear todo y empezar de cero. La única pega que veo a todo el proceso es que voy a perder la partición "recovery" que traen los Asus para poder reinstalar todo en un "plis plas". Realmente no sé si es tan grave, siempre están los DVDs para hacer lo mismo desde la unidad óptica por no decir que "desperdiciar" 16Gb de los 120 que trae el SSD para tenerlos ahí simplemente de recovery no sé si es muy buena idea (eso sí, podríamos estar hablando de una instalación completamente nueva en tiempo record!).

Y por último comentar la opción que se ha pillado mi compañero para su Mac: un kit de sustitución de la unidad óptica por un soporte para un segundo disco duro. Lo tienes que hacer tu claro, pero te venden las piezas a medida y las instrucciones de cómo hacerlo. Si alguna vez has abierto un ordenador y no te da mucho reparo, no será problema instalarlo. Eso sí, adiós a la unidad de DVD. Para mi Asus venden cosas parecidas, pero sólo la he visto en una página de Estados Unidos y no me merece la pena andar pidiéndolo desde allí, además que con un disco duro externo por USB ya me vale.

Seguiré contando la experiencia

martes, 14 de junio de 2011

Repositorios gratuitos en Assembla

¿Buscas un servicio de repositorios gratuito? Pues Assembla puede ser tu solución. No digo que sea la única pero es la que he descubierto, que funciona bastante bien, sencillo y que es gratuito. Ofrecen repositorios SVN y GIT de manera completamente gratuita, para colaborar en grupo mediante invitaciones a otros usuarios.

Pagando incrementan sus servicios considerablemente, o también si se crean proyectos open source, que obviamente, serán públicos en modo lectura para todo el mundo.

martes, 7 de junio de 2011

Sumergiéndome en los PHP Frameworks

Llevo ya bastante tiempo programando en PHP, pero la verdad, siempre lo he hecho a pelo, partiendo de cero en la mayoría de ocasiones y creándome mis clases y scripts a medida que era necesario. He repetido muchas veces los mismos patrones que surgían una y otra vez proyecto tras proyecto, pero como ninguno era lo suficientemente grande (o eso creía yo) pues lo único que hacía era reutilizar código de los anteriores.

Bien, aunque ahora que he empezado a mirar frameworks y me he dado cuenta que gran parte del trabajo que yo repetía una y otra vez ya se encuentra implementado, empaquetado, testado y disponible gratuitamente; tengo que decir que no me arrepiento para nada de todas las líneas de código escritas o de los errores con los que me he tenido que pelear. Todo eso me ha dado una base y un conocimiento que no podría haber adquirido de otra forma.

Dicho esto paso a mencionar las tres opciones que he visto: Zend, Yii y Lithium

Zend es el único que conocía antes de ponerme con todo esto, y el único que he probado y con el que he llegado más lejos. Tras realizar algún ejemplo simple me llevo la impresión de que te dan mucho código ya hecho, pero no es sencillo, no es mágico y hace falta entender lo que estás haciendo. A cambio de eso te puedes abstraer de capas intermedias y dedicarte más a la estrategia de los proyectos. Como todo, con tiempo se podrán comenzar proyectos hasta un punto bastante avanzado en pocos pasos y no demasiado tiempo.

Los otros dos apenas he tenido ocasión de verlos y leer un poco acerca de ellos. Me da la impresión de que serán algo más modernos que Zend, quizá más rápidos y algo más mágicos (todo una impresión, como digo).

Próximamente me gustaría darles una oportunidad a los tres para poder dedicarme a uno en concreto o para utilizar lo mejor de cada uno. Algo que les pido es que se puedan integrar con el IDE que empleo (Eclipse para PHP) o en su defecto con el NetBeans PHP que también quiero probar.

viernes, 13 de mayo de 2011

Cisco VPN Client, ¿Quién lo necesita?

Hoy me ha hecho falta descargarme el cliente de VPN de Cisco, pero para ser sinceros, no he encontrado de donde descargarlo de una manera legal... bueno, ni siquiera sé si se puede o si se trata de un software de pago.

Finalmente lo he conseguido a través de la empresa, que lo tenían en sus repositorios de aplicaciones. Bien, ahora a instalarlo y a correr... No tan rápido! ¿Qué sistema operativo tengo? Uy, Windows 7 64bits y el cliente salta con una ventana diciendo que no soporta sistemas operativos de 64 bits... y qué hago yo ahora? Pues buscar en Internet y llegar aquí, dónde me mandan a Shrew Soft qué tiene un cliente VPN gratuito que puede sustituir al de Cisco tranquilamente.

No me lo creía, pero lo he bajado, lo he instalado, he cargado el archivo de configuración de cisco, y ha funcionado a las mil maravillas.
Además, no solo es para Windows, también funciona para Linux y para BSD, estupendo no?

Conclusión, sustituto al cliente de VPN de Cisco: Shrew Soft VPN Client gratuito

martes, 26 de abril de 2011

No funciona la tecla Scroll Lock en Ubuntu para tu KVM?

Eso mismo es lo que me pasaba a mi: en windows todo funcionaba bien, pulsando dos veces la tecla Bloq Despl (o Scroll Lock) el KVM recibía la instrucción y conmutaba a la otra máquina (Ubuntu). Pero por desgracia no pasa lo mismo desde Ubuntu hacia Windows

¿La solución?
  • Ir a un terminal completo (Ctrl + Alt + F1)
  • Aquí si que debería de funcionarte, con lo que podrás volver a Windows normalmente
  • Cuando regreses a Ubuntu, pulsa Ctrl + Alt + F7 para volver al control normal
Espero que funcione

lunes, 25 de abril de 2011

Redsnow se queda pillado uploading ramdisk

Sigo con la aventura de mi iPhone 3G como podéis comprobar, todavía sin liberar aunque ya con el jailbreak instalado!

Pero lo que quiero poner aquí es el problema que me ha salido esta mañana y que tiene una curiosa pero útil solución: al ejecutar el redSn0w para hacerle el jailbreak, en uno de los primeros pasos, uploading ramdisk, se quedaba pillado completamente teniendo que darle a Cancelar y reiniciar el teléfono.

Bueno, la solución pasa por:
  1. Ejecutar redSnow
  2. Arrancar el Task Manager o Administrador de tareas (Ctrl+Alt+Supr)
  3. Click derecho en el proceso del redsnow y "Set affinity" (en castellano no sé como dirá, pero algo similar)
  4. Desmarcar todos los procesadores menos el 1
  5. OK
  6. Continuar con redsnow normalmente
Pues sí, esto que he encontrado en este vídeo, funciona en mi caso a la perfección y me ha permitido terminar el proceso y por fin hacer el jailbreak al iPhone.

viernes, 15 de abril de 2011

Experimentando con blogs pasados

Programo este post para que salga en el pasado, de manera que pase inadvertido en la página principal, al menos entre los primeros posts del blog. De esta manera podría poner posts pasados que se me olvidó publicar en la fecha que realmente quería pero que por un motivo u otro, este campo tiene un valor importanta para situar cronológicamente este post.

Esto está siendo publicado el 15 de mayo de 2011 pero deberá salir con fecha de un mes antes.

Para terminar de meter algo de contenido al post, dejo algo tuenti:


viernes, 25 de marzo de 2011

Java Tip: Comparar dos fechas

Si tenemos dos fechas en Java, no las podemos comparar como si de int se tratara, con los comparadores lógicos '>', '<' e '='

Para compararlas podemos usar la función 'compareTo' que devolverá > 0 si la primera fecha es antes que la segunda o > 0 si por el contrario la primera fecha es después que la segunda

public static void main(String[] args) throws InterruptedException {
 Date d = new Date();
 Thread.sleep(1000);
 Date d2 = new Date();
 
 //Will output -1 
 System.out.println(d.compareTo(d2));

 //Will output 1
 System.out.println(d2.compareTo(d));

 //Will output 0
 System.out.println(d.compareTo(d));
}

miércoles, 23 de marzo de 2011

Picasa - Cambiar fecha de una foto

Si tenéis fotos de las antiguas, en papel fotográfico y las queréis digitalizar con un escaner, os encontraréis con el problema de que la fecha de la foto será la fecha del escaneo.

También puede pasar que se tenga mal configurada la fecha de la cámara al hacer las fotos.

Si nos gusta tener las fotos ordenadas, esto supone un rollo y el que no queden colocadas como uno desea. Por ello, con Picasa (si no lo conoces te lo recomiendo), es muy fácil cambiar esta fecha:

Herramientas -> Ajustar Fecha y Hora

y elegimos la fecha en la que se hizo la foto realmente.
LISTO

martes, 15 de marzo de 2011

iPhone 4.2.1 3G y Greenpoison... toca esperar

Pues eso, yo estaba ilusionado con la posibilidad de por fin hacerle el jailbreak al iPhone, pero parece que no se puede porque la versión que tengo en mi poder es una 3G y no una 3GS.

En el propio README de la versión que me he descargado para Windows viene bien claro una lista de dispositivos a los que se les podrá aplicar y el 3G no aparece.

Aún así lo intenté sin ningún resultado, por lo que tocará esperar a otra solución, ya que tampoco quiero actualizarle la baseband a la del iPad.

Por otro lado he visto esta web, donde parece posible, pero tengo que leérmelo todo con más calma y empaparme un poco de la jerga del iPhone y de su funcionamiento. A ver si en breve puedo contar que lo tengo liberado y con el jailbreak.

jueves, 10 de marzo de 2011

Tomar notas

Todo el tiempo me encuentro ante el dilema de cómo tomar notas y sobre qué medio. Soy mucho de utilizar papel y bolígrafo, anticuado dirán algunos, pero muy práctico y la mejor manera para plasmar ideas.

El problema me surge cuando días después quiero volver a echar un vistazo a esa hoja donde apunté cierto desarrollo... y la hoja no aparece por ningún lado: o bien la paso por alto y no soy capaz de identificarla del resto o bien se encuentra en la papelera de reciclaje de papel.

Por eso, cuando tengo idea de que lo que voy a escribir puede tener cierta importancia y que puedo volver sobre ello en algún momento no muy lejano, intento utilizar medios electrónicos. Por un lado tengo las "Sticky Notes" que vienen con Windows 7 y por otro utilizo el (ya abandonado) Google Notebook.

Sobretodo el segundo tiene la ventaja de que al ser de Google, es muy fácil buscar entre los apuntes que se tomen, además de poder clasificarlo en diferentes cuadernos. Por no decir que allá donde vayamos, lo tendremos (siempre que tengamos internet) a diferencia de los papeles.

Hay otro tipo de herramientas para tomar notas, pero orientado más a otros campos como evernote, con integración en teléfonos móviles para que no se nos escape nada a nuestras anotaciones.

Por último, como último medio de anotación, utilizo este blog de "reciente" creación: si considero que lo anotado, averiguado, inventado, descubierto... puede ser de interés general, lo plasmo como una entrada de este blog y así queda de manera pública para todos, incluido yo.

Y aún así y con todo, no estoy satisfecho. Hay algo que no termina de encajar en todo esto, algunas veces me da pereza abrir el google notebook, otras lo dejo todo desordenado, otras lo pongo en papel pensando que luego me acordaré, otras incluso escribo un post y luego no recuerdo que estaba aquí escrito... ¿No hay una herramienta útil que permita tomar notas en medio digital, de manera que sea como si de un papel se tratase (poder pintar con el ratón), que lo guarde online para poder acceder a ello desde cualquier punto y con un sistema que haga que las búsquedas sean eficiente? Si alguien conoce tal aplicación, ¡que me lo diga por favor!

miércoles, 9 de marzo de 2011

Escribir código fuente en Blogger

Hoy voy a probar a escribir código fuente en este post, de manera que quede bonito y visible para los usuarios.
Hasta hoy lo hacía de manera manual y rudimentaria, eligiendo el tipo de letra, los estilos y el color de fuente, pero claro, eso frena mucho la manera de escribir entradas, así que antes de seguir me he propuesto conseguir este punto.

La información la he encontrado aquí

Bueno, allá voy, escribiré un simple "HelloWorld.php" para probarlo:

<?php

echo "Hello world!";

?>


Actualización: en resumen y como recuerdo para mi, lo que hay que hacer para escribir en formato de código fuente en este blog es:
<pre class="brush: html">

</pre>

Y meter el contenido codificado, que se puede hacer aquí:
http://www.string-functions.com/htmlencode.aspx


Las distintas "brush" disponibles son:
  • CSS
  • Java
  • JavaFX
  • JScript
  • Php
  • Plain
  • Sql
  • Xml

miércoles, 2 de marzo de 2011

Singleton en PHP

Entre los patrones de diseño de programación, se encuentra el Singleton, consistente en pocas palabras en restringir la creación de objetos de una clase a una única instancia, que será la que se utilice en todo el resto del código.

Los requisitos para este patrón son dos:
  • Un único punto de acceso a la variable única o singleton, accesible desde todo el resto del código.
  • Constructor privado para que sólo la propia clase sea capaz de manejar la creación de si misma.

Hay aspectos avanzados en todo este patrón que no voy a tratar aquí, simplemente voy a contar una implementación básica y como pie de post mencionaré los otros aspectos.

Para crear un constructor privado en PHP:
private function __construct(){}

La clase tendrá una instancia de sí misma, privada y estática:
private static $instance

Y existirá un método para acceder a esta variable y que en caso de no existir, se creará. Este método será público para que sea accesible desde todos sitios y estático, pues en un principio no contaremos con ninguna instancia de la variable.
public static function getInstance(){
  if(self::$instance == NULL){
   self::$instance = new Singleton();
  }
  return self::$instance;
}

Poniendo todo junto, quedaría algo así:

class Singleton{

  private static $instance;

  private function __construct(){}

  public static function getInstance(){
  if(self::$instance == NULL){
    self::$instance = new Singleton();
  }
  return self::$instance;
}

  public function test(){
    echo "Cualquier cosa";
  }
}


Y para hacer uso de ello, sería de la siguiente manera:
Singleton::getInstance()->test();


Los aspectos más avanzados que decía que hay que tener en cuenta son la clonación y la serialización: todavía sería posible crear otras instancias del objeto Singleton mediante una clonación o serialización/deserialización. Para controlar esto se debe limitar el uso del método __clone y __wakeup lanzando un error en caso de que sean llamados

lunes, 28 de febrero de 2011

Wii por HDMI ¿Posible?

Pues tras mirar unos minutillos por internet, parece que si que es posible conectar nuestra videoconsola Wii a una pantalla a través de un cable HDMI, pero eso sí, es caro: la opción más rápida sería comprar el adaptador que venden desde Neoya y eso supone unos 40$

Y que nadie se piense que con esto va a tener alta definición en la Wii... NO, simplemente es un adaptador que nos permite meter la señal de la Wii por un puerto HDMI, pero los 480p seguirán siendo 480 y nada más.

¿Alguien lo ha probado?
¿Alguien conoce otro método?

Gestionar tus juegos de Wii

La aplicación WBFS te proporciona una interfaz gráfica para tu disco duro formateado para la Wii, con el sistema WBFS.

En otras palabras: una vez seas capaz de cargar juegos en la Wii desde una unidad externa, será un requisito que esta unidad esté formateada con WBFS para que sean reconocidos. Sin ser entendido en el tema (todavía), no podrás gestionar los ficheros de esa partición desde un PC como si de un disco duro cualquiera se tratara, de manera que necesitarás una aplicación que te ayude con esta gestión. WBFS es esa aplicación

¿Y por qué mi Android no utiliza mi WiFi?

Esa es la duda que me corroe... tengo mi router wifi, con el que conecto todos los ordenadores de la casa. Sin embargo, cuando se trata de móviles, todo falla. Se conectan con una señal óptima, se autentican y se les asigna IP... todo perfecto hasta que intentas realmente acceder a internet. En ese punto todo son esperas y esperas y finalmente, fallo en la conexión.

¿Alguna sugerencia?

Con la Wii también tuve mis problemas cuando cifraba la conexión con WPA, pero después de quitárselo y pasar a un nivel inferior, WEP, parece que todo funcionó. No así con los teléfonos.

Para más referencia, el teléfono en cuestión es un HTC Magic liberado y rooteado con Cyanogen.

Y no puedo terminar el post sin dejar mi teoría: tengo un router que es una mierda (en su día sería bueno, pero ahora ya tiene unos cuantos años) y que debería cambiar por uno más decente.

viernes, 28 de enero de 2011

Insertar varias filas en MySQL con Java

Ayer me preguntaban como se podían meter varias filas directamente en una base de datos MySQL a través de Java. A mi, lo único que se me ocurrió es preparar un string con tantos valores como filas queramos meter:

String s = "INSERT INTO table (aa, bb ,cc) values (?,?,?), (?,?,?) , (?,?,?) , (?,?,?)...."

y así tantas veces como filas queramos meter. Todo esto se podría automatizar con un método que devolviera ese string automáticamente pasándole el número de filas que quisiéramos (escrito rápido y sin mucha comprobación):

public String createInsert(int rows){
   String s = "INSERT INTO table (aa, bb, cc) values ";
   for(int i = 0; i < rows; i++){
      s += "(?,?,?),"
   }
   //Aquí habría que quitar la última coma
}

Pero hoy, la misma persona que me preguntó me informa que todo esto ya está preparado en Java y que se puede hacer de manera mucho más sencilla... así que aquí dejo una mejor solución (lo de antes no eran más que indagaciones):

String s = "INSERT INTO table (aa, bb ,cc) values (?,?,?)"
PreparedStatement st = connection.prepareStatement(s);
int rows = 20;
for(int i = 0; i < rows; i++){
   st.setString("a string")  //or whatever value: int, date, null
   st.setString("a string")  //or whatever value: int, date, null
   st.setString("a string")  //or whatever value: int, date, null
   st.addBatch();      //añadir una fila
}
st.executeBatch();

lunes, 24 de enero de 2011

Grub.cfg en lugar de menu.lst

Donde dije digo digo Diego... y dónde antes se editaba /boot/grub/menu.lst ahora se edita /boot/grub/grub.cfg

Así que si quieres cambiar las opciones de arranque de GRUB de tu Ubuntu 10.04, ya sabes, no busques por menu.lst porque no lo encontrarás, busca y edita grub.cfg en su lugar

domingo, 2 de enero de 2011

WhatsApp para Android

Hoy he descubierto la aplicación WhatsApp para mi Android. Había oído hablar de ella, pero no había hecho mucho caso pues no me parecía que ofreciera mucha mejora con respecto a otros servicios ya existentes como mandar un correo electrónico o el propio chat de gtalk (los dos te notifican de la llegada de un nuevo correo y de un nuevo chat).

 Sin embargo, hablando con dos amigos, que me han convencido, tienen toda la razón en que:
  • WhatsApp permite separar: mientras que los correos te llega una notificación por cada uno, con WhatsApp sólo te llega notificación cuando alguien te escribe... no quieres tener que estar leyendo todos los correos que te llegan al momento por si alguien te quiere decir algo.
  • Parece ser que el GTalk no va del todo fino en los iPhone
  • A mucha gente le da pereza escribir un email, mientras que la interfaz de esta aplicación invita a que se use más como SMS.
La cosa es que finalmente me la he instalado. Es necesario registrarse con nuestro número de teléfono, de manera que únicamente podremos tener una cuenta asociada a nuestra tarjeta. Y el primer "fallo" llega aquí:
  • No es gratuita. Se adquiere una licencia que nos permite utilizar la aplicación durante un año, tras el cual se deberá pagar por el uso de la misma (no estoy seguro de la cantidad pero me parece haber oído que algo así como 1 euro mensual... quizá me confunda y en su página no lo encuentro)
Cuando se verifica y activa la cuenta, llega el segundo fallo:
  • Detecta que tengo una ROM distinta de la de fábrica y dice que puede ser incompatible... a pesar de ello sigo adelante
La inicialización tarda bastante, yo de hecho he tenido que apagar el teléfono y volverlo a encender cansado de esperar (más de 10 minutos??).

Otro fallo, este de privacidad:
  • De buenas a primeras, puedes ver a todos los contactos que tienen la aplicación instalada, lo que quiere decir, que a partir del momento que la instalas, tu también saldrás en todas las listas de la gente que se la instale... Debería de haber una opción de privacidad para no aparecer en dichas listas automáticamente y poder ir añadiendo a los usuarios que quieras una vez ellos te hayan aceptado. Aunque luego se puede bloquear a usuarios, no es lo mismo.
Más fallos, de funcionamiento:
  • No sé si será debido a mi ROM y las incompatibilidades que puedan existir, pero al abrir la lista de contactos de WhatsApp, se me queda colgada y tengo que volver a abrirla para que funcione... esto me ha pasado sobretodo al principio y aleatoriamente, bastantes veces. También pasa esto en otras pantallas, pero menos... ya digo que no sé si será por mi ROM o no.
  • No hay manera de desactivar las notificaciones... hay que entrar en la elección del sonido y elegir "Ninguno", pero no hay un botón para desactivarlo y luego poder volverlo a activar, que sería mucho más rápido.
  • Igual que en el caso anterior, no hay manera de desactivar la aplicación momentaneamente en casa de que tengamos poca batería o que simplemente nos de la gana desactivarla... por lo que he visto, creo que la única manera sería desinstalándola... o quitando la conexión de datos claro...
  • Y por último, por la manera en que funciona la aplicación, supongo que gastará "bastante" batería. En los iPhone funciona a través de los mensajes "push", pero en android ese tipo de mensajes no están implementados todavía (por lo que tengo entendido) por lo que tendrán que tener otro sistema para la recepción de los mensajes que implicará un mayor consumo de batería.
Por tanto, y resumiendo, la aplicación en sí está bien, la idea es muy buena y da algo más que lo que pueden ser las notificaciones del correo o de otros medios de chat (ver el artículo del Androide Libre para más info). Sin embargo, el funcionamiento de la misma no es el mejor, echando en falta opciones de privacidad y sobre todo la posibilidad de poder suspender la aplicación temporalmente.