lunes, 31 de diciembre de 2012

¿Tengo la mente sucia? (IV)

Hace un par de días nos reunimos Gustavo, Auzzie, Daisy y yo para cenar y felicitarnos las fiestas y tras salir de nuestro restaurante nos encontramos con esta "publicidad" en otro restaurante cercano aunque he de decir que el restaurante es muy conocido por este tipo de mensajes pero aún así me parece bastante curiosa la forma de promocionar el rabo de toro o el cocido con pelotas.

  
Y bueno, viendo el día que es hoy no queremos dejar pasar la oportunidad de desearos un muy feliz año nuevo y que hayamos colaborado para sacaros una sonrisa.

¡¡¡FELIZ 2013!!!

viernes, 28 de diciembre de 2012

Consulta tus cuentas sin restricciones

En estas fechas solemos hacer balance de todo lo acontecido durante el año y nos hacemos propositos para mejorar en el año que va a comenzar y, tal y como está la situación económica, también es buen momento para hacer balance de nuestras cuentas y así poder ver donde se nos ha ido el presupuesto.

En mi caso accedí a la banca electrónica de Cajamar e intenté realizar una consulta de movimientos desde el uno de enero de 2012 hasta hoy pero Cajamar solo permite realizar consultas de seis meses (en bloques de seis meses), imagino que para evitar la saturación de sus sistemas pero en fin, el caso es que no he podido salirme con la mía... ¿o sí?


Al pulsar el botón "Aceptar" de la página de Cajamar me di cuenta que no se hacía ninguna petición al servidor (no se volvía a cargar la página) y por tanto la validación de los datos se debía hacer utilizando javascript así que me puse a mirar el código de la página para ver si me podía saltar dicha validación.


Como se puede apreciar, al pulsar el botón "Aceptar" se llama a la función doSubmit pasandole los parámetros 'ACEPTAR', 2 y false. Si buscamos la función doSubmit la encontramos en el archivo screen_code_v1.js que es incluido en la parte inicial de la página.


Y al abrir este archivo y mirar lo que hace la función doSubmit nos encontramos con una pequeña sorpresa:


A la función se le pasan tres parámetros y el segundo de ellos (llamado a) es el que controla si se debe o no hacer la validación de los campos del formulario. En este caso si el valor de a es igual a 2 se realizará la validación del formulario y si le indicamos cualquier otra cosa no se realizará dicha validación. ¡Esto pinta bien!

¿Podríamos llamar a la función doSubmit con los parámetros 'ACEPTAR', 1 y false? la respuesta es sí pero tenemos que tener en cuenta dos cosas, la primera es que la página de Cajamar se carga en varios frames y que el formulario se encuentra en un frame llamado "contenido" y la segunda es que debemos simular la pulsación del botón ACEPTAR por lo que debemos ejecutar todo el código de dicho botón, es decir:

field_executed(getFieldLayer('ACEPTAR'),getForm('ACEPTAR').REACTION_CODE); doSubmit('ACEPTAR',2,false);

Por lo que nuestro código debería quedar así

contenido.field_executed(contenido.getFieldLayer('ACEPTAR'), contenido.getForm('ACEPTAR').REACTION_CODE); contenido.doSubmit('ACEPTAR',1,false);


Notese que hemos cambiado el 2 por un 1 en la función doSubmit y que hemos añadido el identificador "contenido" antes de llamar a las funciones.

Como queda un poco largo lo podemos guardar en nuestros favoritos (marcadores) creando así un nuevo bookmarklet como los que ya he comentado en alguna ocasión.

Y, finalmente, después de ejecutar este bookmarklet tengo ante mi la consulta de todo el año de mi cuenta.


Si queremos acortar un poco el bookmarklet podemos introducir la fecha que queremos en el formulario y luego pulsar el botón "Aceptar". Esto hará que se muestre el mensaje de error pero también hará que se ejecute la primera parte del código del bookmarklet, es decir field_executed(getFieldLayer('ACEPTAR'), getForm('ACEPTAR').REACTION_CODE) por lo que ya no sería necesario volver a ejecutarla y ahora si podríamos escribir en la barra de direcciones simplemente javascript: contenido.doSubmit('ACEPTAR',1,false) obteniendo el mismo resultado.


Si todo esto os parece demasiado complejo también podéis utilizar la extensión Tamper Data de Firefox y modificar los datos del formulario justo antes de ser enviados obteniendo el mismo resultado.

Espero que os sea de utilidad y que el balance del año (y de vuestras cuentas) haya sido positivo.

sábado, 22 de diciembre de 2012

¡¡¡Feliz Navidad!!!

La felicidad es hacer lo que se desea
y desear lo que se hace.

No sueñes tu vida, vive tus sueños. 


¡Feliz Navidad!
(Gustavo y fossie)

un poco de música navideña...


martes, 18 de diciembre de 2012

SMS mJoy v1.07

Os dejo una nueva versión de SMS mJoy ya que un usuario me ha comentado que el formato de los teléfonos moviles alemanes pueden ser del tipo +4915712345678 pero SMS mJoy lo rechazaba así que tras realizar algunas pruebas y validar que la web de mJoy si permite el envio a dichos números he modificado la aplicación aunque no conozco a nadie en Alemania así que no he podido verificar que lleguen los mensajes correctamente.

Como sabéis, en la web de mJoy, se menciona que se pueden enviar mensajes a cualquier parte del mundo  ¿vosotros habéis tenido exito con mJoy o con SMS mJoy enviando SMS a otros países? ¿cuales?


Notas para la actualización / instalación:
Si ya disponéis de una versión de SMS mJoy solo tenéis que descomprimir el fichero zip sobre la versión que tengáis (se respetará vuestra agenda y configuración). Si es la primera vez que descargáis SMS mJoy podéis descomprimirlo en cualquier carpeta de vuestro ordenador.

Cualquier consulta o sugerencia siempre es bienvenida.

mJoy!

Actualización:
SMS mJoy v0.06 disponible (Android)

Descargar SMSmJoy
Descargar Código Fuente (VB.NET2005)

domingo, 9 de diciembre de 2012

Intercambiar teclas del teclado

Hace unos dias Daisy derramó un poco de agua sobre el teclado de su portatil y pese a que lo secó lo más rápido que pudo las teclas mayusculas izquierda y mayusculas derecha dejaron de funcionar aunque, por fortuna, el resto del teclado si respondia correctamente.

Cuando este tipo de cosas suceden lo mejor es tratar de secar el teclado rápidamente, incluso abrirlo y limpiarlo por dentro pero, aún así, es posible que algún circuito se haya dañado y a no ser que seamos unos manitas en electrónica la solución será pasar por caja y adquirir un nuevo teclado pero siendo un portatil tenía pinta de ser algo caro así que tocaba ingeniarselas de alguna otra forma.

Una opción válida para salir del paso es utilizar el telcado en pantalla que suele llevar el sistema operativo (Win7 en este caso) pero no me parece una opción muy interesante a largo plazo ya que es algo incomodo de utilizar así que pense que algo más práctico seria darle la funcionalidad de las mayusculas a otra tecla del teclado y recordé unas prácticas que se solian hacer en los primeros cursos de programación que consistian en modificar la interrupción del teclado a bajo nivel precisamente con esta finalidad aunque eso de volver a ponerme a programar en ensamblador no me llamaba mucho la atención así que me puse a buscar y vi que ya hay varios programas que permiten el mapeo de teclas, es decir, intercambiar teclas para este tipo de casos como por ejemplo MSKLC (Microsoft Keyboard Layout Creator) o SharpKeys.

Programa SharpKeys

Este último me gustó bastante porque es muy completo, es de código abierto y se ha desarrollado en Visual C#.NET lo cual me animó a profundizar un poco más en el tema y aprender como se realiza el mapeo de teclas en Windows.

Básicamente cada tecla del teclado tiene asignado un número (un código de 2 bytes) y cada vez que se pulsa una tecla este código se le envía al sistema operativo para que sepa que tecla se ha pulsado y actue en consecuencia así que lo único que hay que hacer es decirle a Windows que cada vez que pulse la tecla X entienda que se ha pulsado la tecla Y.

Como en el teclado de Daisy lo que no funciona son las mayusculas lo que vamos a hacer es sustituir la tecla CONTROL DERECHA (que si funciona correctamente) por el código de las mayusculas. Mirando en el código de SharpKeys podemos ver la lista de los códigos asignados a cada tecla pero a nosotros solo nos interesan las mayusculas (00 2A) y la tecla CONTROL DERECHA (E0 1D)



Así que ahora lo único que hace falta es saber donde poner estos códigos para que Windows sepa lo que tiene que hacer y nuevamente recurrimos al código de SharpKeys donde podemos ver lo siguiente.


Básicamente lo que hace es introducir un valor en el registro de Windows (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout) con los mapeos que se hayan definido en SharpKeys aunque nosotros solo vamos a usar uno.

Según se entiende en el código de SharpKeys, se define un array de bytes con una estructura fija 8 bytes a cero luego otros 4 bytes que representan el número de mapeos a realizar, luego 4 bytes que representan el mapeo propiamente dicho y despues otros 4 bytes a cero. Como curiosidad hay que indicar que el mapeo los códigos se deben poner invertidos, es decir, si nuestra tecla es 00 2A en la estructura se debe escribir 2A 00 quedando algo así:


Con todo lo que ya sabemos no es difícil crear un archivo para incluir esa información en el registro de Windows y hacer efectivo el mapeo que hemos definido. Solo debemos guardarlo con extensión .reg, hacer doble click sobre él y confirmar que deseamos realizar las modificaciones en el registro. Para que los cambios surtan efecto se debe reiniciar el sistema (o volver a abrir la sesión)


Por si queréis realizar otros mapeos diferentes os dejo la lista completa de códigos que aparecen en SharpKeys.



Quisiera agradecer desde aquí a Randy Rants por el buen trabajo que ha hecho con SharpKeys y por compartir el código para que todos podamos aprender y, aunque os invito a utilizar su aplicación, yo prefiero hacer las cosas a mano.

miércoles, 5 de diciembre de 2012

Covers y guitarras

Siempre me ha encantado la música, podría decir que casi de todo tipo, desde clásica, hasta hard-core (bueno esto sería más bien ruido) pasando por Jazz, Rock, Pop, Heavy... 

Ahora, por el fluir de la vida, no me es posible disftutar de tanta como en tiempos de adolescencia y posteriores escuchaba. Eran otros tiempos, el cassette dominaba nuestras vidas y las dobles-pletinas eran nuestras mejores amigas. Los locutores de radio mataban el inicio o el final de las canciones para que no pudiéramos grabarlas completamente en nuestra cinta TDK D90 quema-cabezales si eran de hierro o mejorcillas si eran de cromo. Estas cosas cotidianas dieron a luz, por ejemplo, la canción de Gigatrón - Grábame el de Slayer parodiando a Bon Jovi...

Bueno, que me voy... realmente este post no es para todo esto. Ya me estoy haciendo el viejo que va contando batallitas jejeje. Mi padre toca la guitarra, siempre me ha gustado escucharle. Tuvo un grupo musical cuando contaba veinte años que cantaban canciones de la época en castellano y esas mismas me las cantaba a mi en casa cuando yo era pequeño. De ahí que yo aprendiera a tocar algún punteo de los que él sabía como un rock and roll típico, la Bamba o el bajo de Stand by me

Lo último que he visto en internet son las llamadas "covers" y lo que dan de sí. Guitarra en estado puro. En fin, algún día aprenderé, de verdad :)

Mientras tanto os dejo con un par de videos. El primero es de la BSO de Piratas del Caribe, es la famosa canción He's a pirate que suena a menudo en televisión.




La siguiente canción, es un video en el que se puede ver hasta donde puede llegar el Canon de Pachelbel.
Me encanta lo que ha hecho el taiwanés Jerry C con ella (sí, lo sé, soy un macarrón de cuidado). Ha creado escuela y todo. Miles de seguidores han hecho su propia versión, de la versión de Jerry en Youtube!



viernes, 30 de noviembre de 2012

SMS mJoy v1.06

Os dejo una nueva versión de SMS mJoy, que, para los que la conozcáis, es una pequeña aplicación para Windows que permite enviar SMS de forma gratuita utilizando la web mJoy como pasarela.


Los cambios introducidos en esta versión son los siguientes:
  • BUG: Si se intentaba "modificar" el Nick de un contacto existente se mostraba un mensaje indicando que ese Nick ya estaba en uso. Por ejemplo, al cambiar el nick "fossie" a "FOSSIE"
  • Permite seleccionar el tipo de envio, bien utilizando el ID de registro como hasta ahora (opción por defecto) o utilizando un usuario y contraseña de mJoy (especificandolo en la sección "Enlace mJoy").
  • Permite la recarga de créditos de un usuario de mJoy. Si se ha indicado un usuario/contraseña válido de mJoy la recarga se realiza de forma automática (independientemente del método de envío seleccionado) cada vez que se inicia la aplicación y cada vez que se envia un SMS. También se puede realizar la recarga de forma manual pulsando el botón "Obtener créditos" de la ventana opciones.
  • Se añade la opción de obtener la lista de contactos de mJoy. Los contactos de mJoy aparecerán sombreados en rojo y no podrán modificarse, solo eliminarse. Para que esta opción funcione correctamente será necesario indicar un usuario/contraseña de mJoy válido en sección "Enlace mJoy" de la ventana opciones (solicitado por Anónimo)
  • Se renombra el menú "Opciones" pasandose a llamar "Herramientas" donde se encuentra el nuevo submenú "Opciones" desde el cual se accede a la configuración de la aplicación.
  • Se agregan algunos iconos
Si ya disponeis de una versión de SMSmJoy solo tenéis que descomprimir el fichero zip sobre la versión que tengáis (se respetará vuestra agenda y configuración) y si es la primera vez que descargáis SMS mJoy podéis descomprimirlo en cualquier carpeta de vuestro ordenador.

Cualquier consulta o sugerencia siempre es bienvenida.

mJoy!


Descargar SMSmJoy
Descargar Código Fuente (VB.NET2005)

martes, 27 de noviembre de 2012

Un recuerdo de mi niñez

Hoy es un día triste para mí. Hace un año nos dejó mi padrino, que fue mi tío. A su lado y la de mis primos viví momentos muy especiales ya que siempre estuvimos muy unidos, pasábamos muchos días del verano juntos y, por supuesto, jugábamos. Cuando fui creciendo él siempre estuvo allí, para preguntarme como me iban las cosas, escucharme y, por qué no, aprender mutuamente de muchas cosas. Él era electricista de profesión y aprendí de él muchas de las pequeñas chapuzas que actualmente soy capaz de hacer.

El otro día, de camino al trabajo en el Metro de Madrid, subió uno de tantos músicos callejeros que tocan alguna melodía conocida para ganarse unos cuantos céntimos. Y en este caso, me puso los pelos de punta. Era un hombre peruano tocando un instrumento típico de viento de allí y la canción que sonaba era "The Sound of Silence" de Simon y Garfunkel.

Mi tío asistía a misa todos los domingos y allí se cantaba una particular versión en castellano. A él le encantaba esta canción y muchas veces asistí con él y cantamos juntos. Al escucharla en el metro me vino una vez más la imagen de mi padrino a la mente. Toda una sucesión de recuerdos que pasan en un segundo delante de tí y te hace estremecer.

Gracias, tito, por haber formado parte de mi vida, por hacerme reir y llorar, sentir que debo salir adelante como tú luchaste hasta el final.

.... People talking without speaking, people hearing without listening..... 



jueves, 15 de noviembre de 2012

Primer Sorteo de Navidad 2012

Una de las cosas que nos hacen ver que se acerca la navidad, además del frío y las castañas, es la venta de números para el sorteo extraordinario de Navidad. Vayamos donde vayamos encontramos décimos de lotería por todas partes intentando tentarnos para que participemos en el sorteo y nosotros no queriamos ser menos pero queremos hacerlo de una forma especial, volviendo al verdadero significado de la Navidad, es decir compartiendo nuestro décimo desinteresadamente.

Hemos comprado este décimo de lotería (Nº35025, serie 177, fracción 8ª) y lo queremos compartir con todos vosotros de forma gratuita.


Para participar en nuestro especial sorteo de Navidad lo único que tenéis que hacer es dejar un comentario  (no anónimo) indicando que queréis participar y también enviar un correo electrónico a fossie.gustavo@gmail.com con el asunto "Sorteo 2012" y el nick con el que habéis puesto el comentario. Recordar, tenéis que hacer ambas cosas porque sinó, en caso de resultar ganadores no podríamos contactar con vosotros para entregaros el premio.

La verdad es que somos novatos en esto de realizar sorteos y más aún en el tema de repartir dinero así que vamos a poner una serie de normas para intentar que no haya ningún problema.

  • El número de participantes está limitado a 100 ya que es nuestro primer sorteo y tampoco queremos que se nos vaya de las manos :D
  • Para participar debéis dejar un comentario no anónimo en este post y enviar un correo electrónico a fossie.gustavo@gmail.com con el asunto "Sorteo 2012" indicando el nick con el que habéis puesto el comentario.
  • Solo podrán participar personas residentes en España y con las que nos podamos comunicar en castellano porque, sinceramente, no me veo explicando estas cosas en etrusco, klingon o navi.
  • En caso de que el décimo resulte premiado será repartido a partes iguales entre todos los participantes (descontando la parte que se quede el estado). Nos pondremos en contacto por correo electrónico para acordar la forma de entregar el premio.
  • Solo utilizaremos vuestra dirección de correo electrónico en caso de resultar premiados y no será compartida ni utilizada para otros fines.
  • En caso de que el premio a repartir sea inferior a 1 euro realizaremos un sorteo entre todos los participantes de forma que habrá solo un único premiado.
  • Si un usuario quiere renunciar al premio o no conseguimos ponernos en contacto con él para su entrega su parte del premio quedará a nuestra disposición.
  • La fecha limite de participación será el 21 de diciembre de 2012 as las 23:00:00 (hora española). Todos los comentarios y correos que lleguen con posterioridad serán descartados.
  • Si se produce algún tipo de problema nos reservamos el derecho de solucionarlo como estimemos oportuno. Intentaremos hacerlo lo más correctamente posible pero somos novatos en estas cuestiones y no sabemos que puede suceder.
¡¡¡Suerte a todos!!!


Participantes confirmados hasta la fecha:
  1. indigenica
  2. margenero
  3. CleptoMatices
  4. Sr XX terror
  5. chupatintas
  6. La Esencia del Vino
  7. MARIA DEL MAR
  8. Daisy
  9. Antonio Ramírez López
  10. Shurmanito_MoreNiKo_27
  11. La Mari
  12. Auzzie
  13. DeathNeos
  14. AOCarallo
  15. Javi
  16. peligros martinez lopez
  17. David
  18. Jose María D.
  19. Lau
  20. Englandlua
  21. Rocio
  22. agux
  23. LogoSide
  24. CALLAITOMASWAPITO
  25. Nefestari
  26. andresmcid
  27. Migueles
  28. whitefurcia
  29. felisario
  30. Jose Luis Blanco
  31. Fapitán América
  32. Djinn
  33. GatoSifones
  34. Kinino
  35. Dario
  36. Inma LM
  37. Vedorira
  38. disken
  39. Borch
  40. Cashondo
  41. Darkcorner92
  42. RazonEquis
  43. Madrikeka
  44. hermana daisy
  45. amigo hermana daisy
  46. Next
  47. Amiga de la hermana de Daisy
  48. Amiga de la amiga de la hermana de Daisy
  49. Hermanita hermana Daisy
  50. Hermano de la amiga de la hermana de Daisy
  51. Novia del hermano de la amiga de la hermana de Daisy
  52. Juan Antonio Calles
  53. Anillo
  54. kaiser
  55. Fan De la Madrugada
  56. aYa
  57. Castañas
  58. pochito
22/12/2012 - 16:00
Finalmente ha terminado el Sorteo de Navidad y no hemos sido afortunados pero ha sido todo un placer compartir la experiencia con vosotros. Muchas gracias por estar ahí. Tal vez haya más suerte la próxima vez.

¡¡¡Gracias a todos!!!

lunes, 12 de noviembre de 2012

La fría luz del día

Hace unos meses estrenaron en el cine "La fría luz del día". Película rodada en su mayoría por las calles de Madrid. Participan en ella Bruce Willis y Sigourney Weaver, aunque no son los principales protagonistas. 
Un año atrás, regresando a casa observé unas señales de prohibido aparcar a lo largo de la avenida donde vivo y en el motivo rezaba algo como "The cold light of day". Me llamó la atención y revisé en internet donde constaté que Bruce y Sigourney podrían pasar algún día por delante de mi casa y yo sin despeinarme ;)

Como uno tiene obligaciones familiares y, afortunadamente, laborales pues al final no vi nada de nada. Quizás la escena la rodaron de noche o mientras yo estaba en el curro, vaya usted a saber.

Y por fin, vi la película anoche. Decir que, quizá en otro mercado que no sea el madrileño, quizás tenga su gracia pero si te pones "quisquilloso" no entenderás cosas como porqué la línea 7 de metro pasa por la estación de Sol (rebautizada en la película como "Puerta del Sol") o por qué ciertas distancias a la carrera casi teletransportan de un sitio a otro bastante más lejos de donde se apunta.

Eso sí, es una visita turística en toda regla. Sale la Cibeles, La Puerta del Sol, La Puerta de Alcalá (que casi se llevan por delante...), Las Ventas y no sé si me dejo algo en el tintero... Mejor vedla!!

Por otro lado, la costumbre que tienen de usar coches con matrículas ficticias. Por supuesto algunas, algo garrafales como un BMW Serie 5 de hace unos añitos con letras NUG!!!! pero si no existe ni existirá hasta dentro de bastantes años. Algo más normal es ver un Range Rover bastante nuevecito pero con matricula de hace más de 10 años (BDA) o un Peugeot 406 con matrícula CDU. Supongo que esto es como los números de teléfono 555 de las películas americanas... pero choca verlo en una película de verdad cuando las rodadas aquí suelen usar matriculas verdaderas.

Sí, lo sé, soy un friki tikismikis y sé que esto a la gente le dará exáctamente igual pero... yo soy así ;)

En serio, la película tampoco es tan mala, o sí ;) Echadle un vistazo y me contáis :)

Desde luego hay verdaderos ríos de tinta por internet sobre la película.

Constantes o variables de solo lectura

Desde hace ya bastante tiempo utilizo VB.NET para programar y una de las cosas que me parecieron curiosas cuando pasé de VB6 a VB.NET fue la posibilidad de definir variables como ReadOnly ¿que finalidad podría tener una variable de tipo solo lectura si precisamente cuando definimos una variable lo que queremos es que su valor cambie?, si una variable no puede modificarse ¿no sería lo mismo que una constante?

Pues hace unos días me encontré con un escenario que tiene justo ese matiz que hace posible esta distinción entre una variable ReadOnly y una constante.

Mi caso particular fue una solución de VB.NET que contenía dos proyectos. Uno de ellos era una Aplicación de Windows Forms y el otro era del tipo Biblioteca de clases, es decir, un archivo EXE y una DLL. La idea de este proyecto era tener una serie de funciones en la DLL que serian llamados desde el EXE, algo que es muy frecuente en programación. El caso es que, en un momento dado, el EXE muestra un mensaje definido dentro de la DLL y es aquí donde encontré la particularidad.

El mensaje estaba definido en la DLL como una constante dentro de una clase, es decir, algo así:

Public Class MiClase
Public Const Mensaje As String = "Bienvenidos a California"
End Class

y se llamaba desde el EXE utilizando algo así:

Public Class MiForm
Private Sub MiForm_Load(ByVal sender As System.Object,ByVal e As  System.EventArgs) Handles MyBase.Load

MessageBox.Show(MiDLL.MiClase.Mensaje)
End Sub
End Class

Se compiló el proyecto y todo funcionaba correctamente, el EXE mostraba el mensaje sin problemas pero poco después se decidió cambiar el mensaje "Bienvenidos a California" por el texto "Bienvenidos a Florida" así que, en principio, solo era necesario modificar el valor definido en la constante y volver a compilar la DLL pero no fue así.

Pese a haber realizado la modificación correctamente el EXE seguía mostrando el mensaje "Bienvenidos a California" y esto es debido a que el compilador "incrusta" el valor de las constantes dentro del EXE por lo que por mucho que se cambie su valor en la DLL, si no se vuelve a compilar el EXE no tendrá ningún efecto.

Para evitar este tipo de situaciones se puede que definir como ReadOnly de forma que el compilador siempre obtenga su valor de la DLL quedando así:

Public Class MiClase
Public Shared ReadOnly Mensaje As String = "Bienvenidos a California"
End Class

Una vez compilado el proyecto (tanto el EXE como la DLL) si se podrán hacer los cambios posteriores sobre la DLL sin necesidad de volver a compilar el EXE.

Después de esto la pregunta es ¿cuando se pueden utilizar constantes? pues, visto lo visto, creo que lo mejor es definir constantes cuando su valor no puede cambiar nunca y cuando digo que no puede cambiar nunca no me refiero a que no vaya a cambiar sino a que realmente no puede cambiar. En nuestro caso anterior el mensaje puede cambiar, de hecho, se quiso que cambiara y se cambió pero una constante de verdad no puede cambiar, por ejemplo, la velocidad de la luz es una constante y no puede cambiar... y, en fin, si alguien la cambia y cambia todos los principios de la física tampoco nos vamos a poner nosotros tiquismiquis para no querer cambiar nuestra aplicación ¿no?.

jueves, 8 de noviembre de 2012

Civismo

El civismo se refiere a las pautas mínimas de comportamiento social que nos permiten convivir en colectividad (...) Se basa en el respeto hacia el prójimo, el entorno natural y los objetos públicos; buena educación, urbanidad y cortesía.

Este, en mi opinión, es uno de los principios básicos de la sociedad pero lamentablemente parece que hay muchas personas a las que no les suena mucho y van "a su bola".

Yo soy una de las personas que suele dar vueltas y vueltas hasta conseguir aparcar el coche en un lugar adecuado ya no solo por evitar las multas sino también porque no quiero molestar a nadie y, tal vez por ello, me molesta aún más cuando alguien que va "a su bola" y aparca el coche en segunda fila impidiendo que yo pueda salir del lugar donde había conseguido aparcar después de dar unas cuantas vueltas.

A simple vista esto podría parecer una tonteria pero no entiendo porque yo tengo que perder 20 minutos de mi tiempo esperando que la persona en cuestión quite su coche para que yo pueda salir. Es decir, yo pierdo 15 minutos para aparcar correctamente más los 20 minutos de espera forzosa solo porque esta persona ha decidido que su tiempo es más valioso que el mio y no quiere tener que dar vueltas buscando un sitio. Conclusión el pierde 0 minutos y yo pierdo 35 ¿es justo?

Se que no esta bien generalizar y hay casos y casos. Entiendo perfectamente que hay urgencias y situaciones que no podemos preveer y, si tengo que perder 20 minutos por el bien común no tengo problema pero perderlos porque alguien esta haciendo la compra o cosas por el estilo pues la verdad me toca las narices.

Al final resulta que las personas que tratamos de vivir en sociedad cumpliendo las normas somos "tontos" y este tipo de gente es "la lista" que va por la vida sin complicaciones y, lo que realmente me da pena de todo esto, es que "crean escuela" ya que esta claro que todo el mundo quiere ser "listo" y no perder su valioso tiempo pero aún así, yo estoy orgulloso de ser "tonto" porque si todos pensaramos un poquito más en el projimo el mundo iría un poco mejor.

¿Has dejado de ser un ciudadano cívico? ¿estas cansado de que los demás no lo sean?

Actualización 18:30

Es sorprendente que estas cosas puedan suceder con tanta frecuencia. Me ha vuelto a pasar pero, en esta ocasión tiene más guasa aún ya que ha sido una moto la que me impedía salir de mi aparcamiento. He esperado un rato pero al parecer el propietario/a de la moto ha pensado que para que se va a tomar la molestia de aparcar ya que si me molesta su moto ya la moveré yo ¿no? ¿acaso cuesta tanto encontrar un sitio para aparcar una moto?

lunes, 5 de noviembre de 2012

ClanDownloader v1.08

Nueva versión de ClanDownloader con algunas mejoras importantes que creo que os facilitaran la tarea de descargar las series infantiles favoritas de los más pequeños (Wow Wow Wubbzy, Las Tortugas Ninja, Lazy Town, Pocoyó, Peppa Pig, Bob Esponja, Dora la Exploradora, Dino Tren, Ray Cósmico Quantum, Pokémon, Mike el Caballero, etc.)


Los cambios realizados en la versión v1.08 respecto a la v1.07 son:
  • BUG: Cuando se cerraba la aplicación, si existian descargas en curso, se preguntaba si se deseaba cancelar las descargas, si se respondia NO la aplicación quedaba "colgada" aunque las descargas seguian en curso (gracias manuti manuti).
  • BUG: El botón "Actualizar series" no mostraba correctamente el contador de series disponibles.
  • Se cambia el nombre del menú "Archivo" por "Acciones".
  • Series Favoritas
    • Se permite establecer una serie como "Favorita" (bien marcando la estrella que hay junto al desplegable de series o en el menú Opciones->Series favoritas).
    • Al marcar una serie como favorita se permite descargar en grupo todos los vídeos que no hayan sido descargados previamente de esas series (Menú Acciones -> Descargar vídeos de series favoritas). Al hacer click, se solicitará una carpeta donde se realizará la descarga y se creará una subcarpeta por cada serie.

    • Se crea el menú "Opciones" dentro del cual se incluyen las opciones de "Configuración", "Series favoritas"
  • Actualizaciónes automáticas
    • Se crea el menú "Buscar actualizaciones" dentro del menú "Acciones" que permite lanzar manualmente las acciones de buscar actualizaciones de ClanDownloader y buscar actualizaciones de series y vídeos.
    • La acción buscar actualizaciones de ClanDownloader simplemente mostrará un aviso cuando se detecte una nueva versión de la aplicación.
    • La acción buscar actualizaciones de series y vídeos permite actualizar la base de datos de la aplicación (ClanDownloaderData.xml) desde un servidor online de forma que cada vez que yo actualice mi base de datos la compartiré con todos vosotros tratando de evitar que perdáis los nuevos capítulos de vuestras series.
    • Estas dos acciones se pueden configurar para que se ejecuten cada vez que se inicie la aplicación lo que nos permitirá estar lo más actualizados posible. Para lo cual se incluyen las opciones "Buscar actualizaciones de ClanDownloader al iniciar la aplicación" y "Buscar actualizaciones de series y vídeos al iniciar la aplicación" en la pantalla de configuración.
  • Se incluyen algunos iconos en los menús.
  • Se añade la lista de enlaces en el HTML generado para poder copiarlos en foros.
  • Se añade la velocidad de descarga en la barra de progreso (solicitado por Unknown).
  • Se añade el tiempo estimado de descarga en la barra de progreso.
  • Conversor de Audio/Vídeo.
    • Se crea el menú "Extra" donde se añade un conversor "básico" de audio/vídeo para convertir los vídeos a DivX, xVid o MP3. Esta funcionalidad ha sido solicitada por varios de vosotros (Gustavo y kni/Marc por ejemplo) y, aunque aún se puede mejorar bastante creo que ya se puede empezar a utilizar de una forma medianamente aceptable aunque estoy abierto a sugerencias.
    • La conversión de los archivos se realiza mediante una herramienta externa llamada FFmpeg que ha sido incluida en el fichero de descarga de ClanDownloader.
    • Para convertir los vídeos debéis acceder al menú "Extra -> Conversor Audio/Vídeo" y después pulsar el botón "Nuevo" que mostrará una ventana para especificar los vídeos a convertir y el formato de salida. Para añadir archivos a la lista de conversiones debéis seguir los siguientes pasos.
      • Pulsar el icono de la carpeta (1) y seleccionar el vídeo (o los vídeos) que deseéis convertir.
      • Indicar la carpeta y el nombre del archivo destino (2). Teniendo en cuenta que si habéis seleccionado varios vídeos en el punto anterior deberéis indicar una carpeta y será ClanDownloader quien determine el nombre resultante (normalmente el nombre del archivo origen cambiando la extensión). Si solo habéis indicado un vídeo podréis indicar la ruta y el nombre del archivo resultante. Si en el punto anterior se seleccionan varios vídeos de distintas carpetas no se podrá seleccionar el destino y los archivos resultantes se guardarán en la misma carpeta que el archivo origen.
      • Seleccionar el formato (3) del archivo de destino que puede ser "Audio y Vídeo" para crear un archivo .avi o solo "Audio" para el caso de querer un archivo .mp3
      • Seleccionar el tipo de vídeo (4) donde, por el momento, se puede elegir el codec de vídeo xVid o DivX generando en ambos casos un archivo .avi
      • Seleccionar el tipo de audio (5). Por el momento solo es posible utilizar el formato mp3.
      • Seleccionar el bitrate del vídeo (6). Es decir, la calidad del vídeo de salida, cuanto más alto sea este valor más calidad tendrá (y ocupará más).
      • Seleccionar la frecuencia de muestreo de audio (7). Es decir, la calidad del audio, cuanto más alto sea este valor más calidad tendrá (y ocupará más).


La lista de séries disponibles es la siguiente:



Consejos para la actualización a ClanDownloader v1.08:
Si tenías ClanDownloader v1.07 es recomendable descargar ClanDownloader v1.08 en otra carpeta. Después copia los archivos "ClanDownloader.exe", "ClanDownloaderExtra.xml" y la carpeta "FFmpeg" de la v1.08 sobre la versión 1.07 (no sobreescribas ClanDownloaderData.xml).
Una vez hecho esto ejecuta ClanDownloader.exe desde tu carpeta de siempre (se abrirá la nueva versión 1.08) e importa el fichero de datos "ClanDownloaderData.xml", es decir, ve al menú "Acciones" y pulsa en la opción "Importar datos" y luego selecciona el archivo "ClanDownloaderData.xml" de la versión v1.08 que acabas de descargar.

Si es la primera vez que descargas ClanDownloader solo necesitas descomprimir el fichero ZIP en la carpeta que prefieras y ejecutar ClanDownloader.exe

Para cualquier aclaración no dudéis en dejar un comentario.


Descargar ClanDownloader
Descargar Código Fuente

jueves, 18 de octubre de 2012

martes, 9 de octubre de 2012

¿Tengo la mente sucia? (III)

Siguiendo con la saga ¿tengo la mente sucia? hoy le toca a los publicistas de Paredes que me han sorprendido con este cartel. 

Chic@s, atent@s, lo que hay que elegir son las botas ¿eh?. Esto me recuerda un chiste.

Un hombre está mirando descaradamente a dos chicas en la playa, y una le pregunta:

- Pero, bueno, ¿tú qué coño quieres?
- ¡Ah!, ¿es qué puedo elegir?

¡¡¡Paredes te deja elegir!!!

martes, 25 de septiembre de 2012

SMS mJoy v1.05

Como algunos recordareis existe un problema en la aplicación SMS mJoy por el cual, en ocasiones, da un mensaje de error "User already exists" (el usuario ya existe) al intentar enviar el mensaje. Esto es debido a que la aplicación genera "nicks" para poder registrarse en la página de mJoy y realizar el envio pero, por desgracia, la generación de estos "nicks" no es 100% aleatoria de forma que puede llegar a ocurrir que dos personas utilizando SMS mJoy generen el mismo "nick" con lo cual la página de mJoy no permitirá enviar el SMS. A priori esto es un "mal menor" ya que, por lo general, con volver a intentar el envio se resuelve pero como cada vez somos más los usuarios de SMS mJoy (de lo cual me alegro) y cada vez son más los SMS enviados la posibilidad de obtener un "nick" repetido es cada vez es mayor y algunos usuarios ya me han comentado que ya no les basta con ese segundo intento, incluso intentandolo una tercera o cuarta vez también les ha fallado por lo que era momento de tomar cartas en el asunto y este fin de semana me he puesto a revisar el código y ver la forma de solucionarlo.

Los cambios introducidos en esta versión son los siguientes:
  • Se mejora la generación de nicks aleatorios modificando la semilla (utilizando Ticks en lugar de Milliseconds) y añadiendo al nick generado tres caracteres hexadecimales obtenidos en función del MD5 del texto del sms, número de teléfono y ticks de forma que esos tres caracteres hexadecimales deberían ser diferentes para cada SMS.
  • Deja de utilizarse el fichero "mJoyUsersRND.xml" (se puede eliminar), en su lugar se utiliza "SMSmJoyUsersRND.xml" que es exactamente igual pero los usuarios se generan con el nuevo algoritmo
  • Se añade la opción "Guardar SMS en disco durante el envio". Esta opción guarda la información del mensaje en disco antes de realizar el envio y la elimina al terminar el proceso. Esto es útil para poder recuperar el SMS si la aplicación queda inestable y se tiene que forzar su cierre. El SMS se recuperará automáticamente al volver a iniciar la aplicación.
  • Se añade la opción "Buscar actualizaciones al inicio" que permite buscar actualizaciones de SMSmJoy de forma automática cada vez que se inicie la aplicación. También se puede lanzar el proceso de detección de una nueva versión accediendo al menú "Opciones > Buscar actualización ahora"

Si ya disponeis de una versión de SMSmJoy solo tenéis que descomprimir el fichero zip sobre la versión que tengáis (se respetará vuestra agenda y configuración) y si es la primera vez que descargáis SMS mJoy podéis descomprimirlo en cualquier carpeta de vuestro ordenador.

Cualquier consulta o sugerencia siempre es bienvenida.

mJoy!


Descargar SMSmJoy
Descargar Código Fuente (VB.NET2005)