Así se puede resumir el estado de enajenación mental que padezco hoy. Tendrá que ver o no que nos encontramos en el fatídico día de la semana en que toda persona se encuentra más p’allá que p’acá. Ese lunes odiado por todos que nos hace replantearnos nuestra existencia semana a semana.
Esta mañana he llamado a Vodafone para liberar mi iPhone 4 y volar para siempre de la compañía, que no es que sea mala, pero es que ya estoy cansado de pagar más que nadie y tener menos que nadie. Pagando 20 euros mensuales para casi no hablar y tener 150 MB de internet. Tener tan pocos megas no es que sea poco, es absurdo. Que sí, que la tarifa tiene 150 minutos para hablar con quien quieras a la hora que quieras, pero si lo que haces más es navegar, como yo, te dan por ahí y no hay tutía…
El problema viene cuando eres un poco ansia de tus derechos e intentas ejercerlos. Resulta que como soy un ansia, el iphone 4 (y el contrato) lo tengo desde las 2:00 de la mañana del 30 de julio de 2010. Vamos el día que salió el iphone 4. Pues llamas hoy día 30 de enero de 2012, pensando que tu permanencia ha acabado. Ciertamente ha acabado, porque el sistema automático te lo dice. Debe ser que cualquier informático que programara el sistema diría que desde las 2:00 del 30 de julio del 2010 sí que han pasado 18 meses… Pero cuando hablas con la teleoperadora española (síiiii, española!!!!, y no soy racista!!!, y no es broma!!!) te quedas frio porque “si pide hoy la liberación la van a rechazar” pero que “llame mañana y en 15 días lo tengo liberado”. ¿Perdón? no solo me obligáis a estar 18 meses más 1 día, sino que ¿voy a tener que estar casi 19 para asegurarme que me liberáis el teléfono? Me van a clavar 6 euros + IVA por liberarlo y hasta que no lo tenga libre no me puedo ir…
Ya me sonó raro que no me liberaran el móvil a los 12 meses como es de recibo en otras compañías, querían sangrarme hasta más no poder…
Todo esto no sería problema si lo pudiera liberar por otros medios, pero resulta que el bloqueo de vodafone me cuesta 100 euros quitarlo, no sé si será porque lo bloquean con pegamento…
Así que mi portabilidad a Pepephone tendrá que esperar, porque hasta que estos sanguijuelas no me dejen en paz no me podré ir.
Por favor, no os cojáis un iPhone con vodafone!
Escrito en apple, iPhone, teleoperadoras, Uncategorized, vodafone | Deja un Comentario »
Cuando tu ecosistema ya incluye más de un dispositivo iOS, se te pueden complicar un poco las cosas cuando quieres sincronizar todos. En mi caso tengo un Mac, un iPhone 4 y un iPad 1.
Por ejemplo, antes de darme cuenta de la solución parcial que os voy a comentar, si yo quería eliminar una aplicación de todos los dispositivos tenía que borrarla de iTunes, del iPhone y del iPad, porque si no lo hacía, después de unas cuantas sincronizaciones, la aplicación se encontraba de nuevo en todas partes, como un virus. Y no era lo que yo quería.
Me di cuenta esta mañana que el problema tiene que ver con un checkbox que aparece debajo de la lista de apps en la pestaña Apps del dispositivo iOS. Esta checkbox no solo afecta a que las aplicaciones compradas desde iTunes se copien automáticamente al sincronizar dispositivos iOS en los que se puedan ejecutar. También significa que cuando sincronizas, si alguna aplicación del dispositivo no está en iTunes se te preguntará con un diálogo preguntándote qué hacer, si copiar la app a iTunes o no copiarla. Si respondes no copiar y le dices que no te vuelva a preguntar, siempre que elimines una aplicación de iTunes la eliminaras del dispositivo en cuestión al sincronizar.
Tened en cuenta que esto antes de nuestra iCloud-vida nos podía llevar a perder una aplicación comprada (y pagada) en el dispositivo, pero como ahora las compras se pueden recuperar cuando quieras, no hay problema ninguno. Además si tenéis configurado tanto los dispositivos iOS como iTunes para la descarga automática de compras, no os pasará esto.
Oh Apple, lo fácil que sería que en la lista de apps de iTunes saliera un checkbox para cada dispositivo asociado a tu cuenta y pudieras elegir de una forma cómoda estas cosas en vez de andar rompiéndote la cabeza… Además, queda muy bonito ver exactamente cómo están colocadas todas en el dispositivo, pero ahora con la sincronización wifi es todo super lento (antes solo lento), ¿sería mucho pedir que sólo se mostrara la colocación bajo petición? (un botón, ventana a parte, etc…)
Espero que le sirva a alguien.
Escrito en apple, iPad, iPhone, iTunes, sincronizacion | Deja un Comentario »
Me entero hoy de que la clase SimpleDateFormat de Java no es thred safe. Es decir, se pueden producir errores inesperados si se accede concurrentemente desde varios hilos a un objeto de esa clase.
En la tipica clase de constantes podemos tener lo siguiente:
public interface FECHAS {
public static final String FORMATO_DATE_JAVA = "dd/MM/yyyy";
public static final SimpleDateFormat SDF_DATE_JAVA = new SimpleDateFormat(FORMATO_DATE_JAVA);
}
Más tarde lo utilizaríamos de la forma siguiente:
fecRegulariz = "25/03/2011";
resultado.setFechRegularizacion(FECHAS.SDF_DATE_JAVA.parse(fecRegulariz));
Esto sería incorrecto ya que varios thread accediendo concurrentemente a la instancia almacenada en SDF_DATE_JAVA pueden acabar en una fecha errónea en la salida.
El artículo que me lo explicó después de que findbugs me sacara la advertencia: SimpleDateFormat and Thread Safety
Escrito en java, programación | 1 comentario
Para validar una dirección de email o ver si se cumple un patrón en un String mucha gente hace 10 bucles anidados, 20 variables, 5 clases… y a saber qué más. Aquí os muestro una manera sencilla de validar una cadena usando las clases de Java que manejan expresiones regulares (paquete java.util.regex, disponible desde Java 1.4) en 3 simples líneas:
// inicializamos el patrón
Pattern p = Pattern.compile(".+@.+\\.[a-z]{2,}");
// Lo aplicamos a la cadena que contiene el email
Matcher m = p.matcher(email.getText());
// y vemos si hay correspondencia con el patrón
boolean emailValido= m.matches();
Explicaciones:
- (.) es cualquier carácter
- (+) indica que el carácter/grupo de caracteres anterior se puede repetir 1 o más veces
- (*) indica que el carácter/grupo de caracteres anterior se puede repetir 0 o más veces
- ({m,n}) indica que el carácter/grupo de caracteres anterior se puede repetir entre m y n veces. Sí, ({) y (}) también son caracteres reservados en las expresiones regulares
- (\) protege un carácter que es reservado en las expresiones regulares. (\\) protege un carácter reservado dentro de un literal String en Java, ya que (\) es un carácter reservado también en Java
- ([]) señala un grupo de caracteres
Ejemplos:
- [a-zA-Z0-9] empareja con cualquier letra minúscula o mayúscula o cualquier número: “a”, “9″, “5″
- [a-zA-Z0-9]+ empareja con cualquier letra minúscula o mayúscula o cualquier número 1 o más veces: “a”, “9a”, “B5f”
- [a-zA-Z0-9]* empareja con cualquier letra minúscula o mayúscula o cualquier número 0 o más veces: “”, “a”, “9a”, “B5f”
- . empareja con cualquier carácter 1 sola vez: “a”, “s”, “J”, “@”
- d{2,2}m{2,2}a{4,4} empareja solamente con “ddmmyyyy”
- \. empareja con “.” (recuerda que en un literal String habrá que poner \\.)
Seguro que hay algún email correcto que no valida y alguno incorrecto que sí, pero confío en que estudiando un poco expresiones regulares se puede refinar bastante. Tened en cuenta que ese refinamiento sin utilizar expresiones regulares convertiría los 10 bucles en 15, las 20 variables en 25, etc… Estoy siendo muy exagerado a propósito, pero si no me creéis, intentad programar esto con métodos de la clase String, a ver cuántas líneas llenáis.
Escribo esto porque mucha gente no sabe ni lo que es ni para lo que sirve una expresión regular y pueden resultar la mar de útiles en muchas ocasiones.
La mayoría de editores de texto avanzado (UltraEdit y Notepad++) y entornos de programación (NetBeans y Eclipse, por ejemplo) tienen soporte de expresiones regulares en sus motores de búsqueda y sustitución. En estos últimos se puede conseguir sustituir un texto (complejo) a lo largo de muchos ficheros fuente, sin apenas esfuerzo. Como ejemplo, podemos buscar ([a-zA-Z0-9]+)\.almacenar\(([a-zA-Z0-9]+)\) y sustituirlo por $1.incluir($2,$1). $1 y $2 se llaman grupos de sustitución y se configuran encerrando valores en paréntesis (sí, otro carácter reservado). Si os fijáis hay dos grupos en la expresión regular: ([a-zA-Z0-9]+) y ([a-zA-Z0-9]+). Dará los siguientes resultados:
objeto1.almacenar(variable5) -> objeto1.incluir(variable5, objeto1)
obj3.almacenar(var1) -> obj3.incluir(var1, obj3)
almacen.almacenar(galleta) -> almacen.incluir(galleta, almacen)
Bueno, espero que aunque el ejemplo no sea muy bueno, hayáis cogido cómo funciona. Es fácil.
Podéis ver el post original que me dio la idea en http://www.devx.com/tips/Tip/42339
Escrito en curiosidades, informática, java, programación | Etiquetado java | Deja un Comentario »
Buscando casa como siempre, me he encontrado con la respuesta a muchas preguntas que tenía sobre las ayudas del estado y los baremos que se siguen para su adjudicación, en concreto sobre el IPREM.
¿Qué es?
Es un índice que se utiliza en España como referencia para concesión de ayudas y subsidios del estado.
¿Cómo se expresa el IPREM?
Se puede expresar de forma mensual, y también de forma anual, teniendo en cuenta si nos reparten el sueldo en 12 o 14 pagas.
Para 2011 el IPREM es 532,51 € mensual, 6.390,13 € para 12 pagas y 7.455,14 € para 14 pagas
¿Se refiere al sueldo neto o al sueldo bruto?
Se refiere al sueldo bruto.
¿Cómo se utiliza?
Normalmente cuando te piden que los ingresos no superen un límite te dicen: “ingresos que no excedan 5,5 el IPREM”. Si tomamos como ejemplo el IPREM para 2011 que hemos dicho antes y si suponemos que cobramos 23000 euros brutos en 14 pagas, para ver si superamos el 5,5 calculamos 5,5 x 7455,14 que corresponde al IPREM en 14 pagas y nos resulta 41003,27, que es bastante mayor que 23000. Podemos estar tranquilos, ya que cobramos lo suficientemente poco para que nos permitan optar a la vivienda…
Podéis obtener más información en http://www.iprem.com.es
Escrito en curiosidades, economía, sociedad | 2 Comentarios »
Os pongo un post muy interesante sobre los diferentes tipos de curva y como se deben de tomar. La verdad, que pese a haberme encontrado con alguna del tipo “doble radio” no sabia que obtenían esa denominación y mucho menos conocía la teoría de como se deben tomar. Muy útil, y más para un ratón de rotonda y curva como soy yo, que a 150 no me gusta ir, pero tomar una curva a cuchillo…
Escrito en coches | Etiquetado conducir, curvas, técnica | 2 Comentarios »
