viernes, 24 de agosto de 2007

ONO y sus "trampas"

El otro día estaba viendo el partido de BA-LON-CES-TO por laSexta (grande España, grande!!, o mejor dicho, estaba disfrutando de la paliza que España le dio a Lituania. El caso es que, en uno de los tiempos muertos, en lugar de dejar que los telespectadores contemplemos el trabajo de esas sacrificadas cheerleaders (nunca entenderé lo poco que se les valora, máxime cuando algunas son INGENIERAS AEROESPACIALES!!!! Ahí es nada...), la Sexta nos puso una publicidad de ONO.
Pues bien, el susodicho anuncio decía que ONO ofrecía a sus nuevos clientes 20partidos de fútbol por 30€... SÓLO PARA NUEVOS CLIENTES!!
Como soy cliente, me apresuré en entrar en la web de la operadora para comprobar si esta oferta también valía para los que ya somos clientes... Pues no! En las condiciones ponía bien claro que la oferta sólo era válida para nuevos clientes y con un contrato de permanencia de esos que casi son de por vida.
Ya había olvidado el tema, casi, cuando ayer me puse a ojear la revista esa que envían a los clientes. Sí, esa que nadie lee dónde ponen la programación y cosas de esas. Entonces recordé lo de la oferta y busqué por la revista a ver si ponía algo de los precios de los partidos de fútbol.
Y vaya si lo ponía... 11 eurazos y pico por partido!!!
Menos mal que vi que había bonos!! Bueno, menos mal no. Casi que la expresión sería "más mal!".... Os digo los precios de los bonos a ver que os parecen:
10 partidos: 105€
20 partidos: 195€ (ojo! no nos olvidemos del precio de oferta: 30€)
Abono de temporada: 43€ AL MES!!!
En fin... ya lo estaba dando por perdido cuando en casa hemos pensado: "cómo puede ser que para los clientes que ya somos de ONO cueste tanto y para los nuevos tan poco". No es que pensemos que esté mal que las operadoras intenten atraer a nuevos clientes con ofertas, sino que pensamos que también deben cuidar a los clientes que ya son de ONO y ofrecerles esas mismas ofertas...
El caso es que hemos llamado a ONO. Ha contestado una persona que, obviamente, no era de España. Y al preguntarle sobre la oferta nos ha contestado que "la oferta también es válida para los clientes que ya son de ONO".
GENIAL!! Ya tenemos el bono de 20 partidos de fútbol!!!

Pero todo esto te hace plantearte muchas cosas, no creéis?? ¿Por qué en los sitios dónde los clientes pueden ver los precios no pone el precio de oferta? ¿Por qué en los sitios dónde pone la oferta pone que sólo es válida para nuevos clientes?
Las respuestas, creo yo, se basan en una estrategia comercial muy sencilla: "Si el cliente lo quiere comprar y no dice nada de la oferta, pues le cobro más. Y si dice algo de la oferta, pues le cobro lo que tengo que cobrarle."
Se tendrían que plantear que a lo mejor mucha gente que compraría partidos de fútbol no lo hace por esos precios tan altos. Y que no todos van a preguntar por la oferta, por lo que posiblemente estén perdiendo más de lo que ganarán al cobrar precios tan exagerados....
En fin, no sé, es sólo una opinión... Supongo que lo tendrán estudiado... O NO... (qué juego de palabras, eh???)

Saludos!

jueves, 23 de agosto de 2007

RequiredFielValidator, Buttons y ValidationGroup

Esta mañana me he encontrado con un pequeño obstáculo en la programación de mi proyecto. Como considero que es interesante que la gente lo sepa, pues aquí os lo dejo, por si alguna vez os hace falta.
Primero os pongo en situación...

En un control de usuario, necesitaba insertar unos controles de validación de ASP.NET. Concretamente, necesitaba el control RequiredFieldValidator. Como supongo que sabéis, este control evalúa el valor de un control de entrada en una aplicación ASP.NET para asegurarnos que tiene algún valor. De esta forma evitamos errores en la introducción de valores.
Este control forma parte de un grupo de controles de validación que nos permiten no sólo evitar que un control de entrada se deje vacío, sino además podemos hacer que sigan ciertas normas.

El caso es que en el control había diferentes popups cada uno con su texto de entrada y sus botones asociados para introducir los datos o cancelar la introducción. La verdad es que es un tema un poco difícil de explicar, así que propondré un escenario parecido pero más sencillo.

Imaginad que estamos programando una web en la que, entre otras cosas, tenemos que poder introducir nuevos productos que luego podremos vender. Asimismo, tenemos que poder introducir algún tipo de clasificación. Concretamente, tenemos una página de la web en la que podemos crear nuevos tipos y subtipos de productos. Simplificando al máximo, el código sería el siguiente:

<h3>Nuevo Tipo</h3>

<asp:label id="tipoLabel" runat="server" text="Introducir nuevo tipo:"></asp:label>
<asp:textbox id="tipoTextBox" runat="server"></asp:textbox>

<asp:button id="introducirTipoButton" runat="server" text="Introducir" >
</asp:button>

<h3>Nuevo Subtipo</h3>

<asp:label id="subtipoLabel" runat="server" text="Introducir nuevo subtipo:"></asp:label>
<asp:textbox id="subtipoTextBox" runat="server"></asp:textbox>
<asp:button id="introducirSubtipoButton" runat="server" text="Introducir" validationgroup="subtipoValidation">
</asp:button>


A este código le añadimos dos controles de validación del tipo RequiredFielValidator para evitar que un usuario "despistado" pueda darle a cualquiera de los botones e introducir una clase o subclase vacías. El código resultante será:
<h3>Nuevo Tipo</h3>

<asp:label id="tipoLabel" runat="server" text="Introducir nuevo tipo:"></asp:label>
<asp:textbox id="tipoTextBox" runat="server"></asp:textbox>
<asp:RequiredFieldValidator ID="tipoRequiredFieldValidator"
runat="server"
ErrorMessage="Escribe algo!!"
ControlToValidate="tipoTextBox"/
<
<asp:button id="introducirTipoButton" runat="server" text="Introducir" validationgroup="tipoValidation">
</asp:button>

<h3>Nuevo Subtipo</h3>

<asp:label id="subtipoLabel" runat="server" text="Introducir nuevo subtipo:"></asp:label>
<asp:textbox id="subtipoTextBox" runat="server"></asp:textbox>
<asp:button id="introducirSubtipoButton" runat="server" text="Introducir" >
</asp:button>
<asp:RequiredFieldValidator ID="subtipoRequiredFieldValidator"
runat="server"
ErrorMessage="Aquí también tienes que escribir algo!!"
ControlToValidate="subtipoTextBox" /
>

Parece que todo está correcto, ¿verdad? Pues bien, probadlo y veréis como no es así.
El problema reside en que los controles de validación están esperando una señal para comprobar si el usuario ha rellenado o no el textbox correspondiente. Como los dos botones causan validación (es el comportamiento por defecto) en cuanto apretamos uno de ellos, pues los controles de validación comprueban si hemos escrito algo en los controles que ellos controlan, valga la redundancia, de forma que apretemos el que apretemos siempre saldrán los mensajes de comprobación.
La solución que se creó para esto es bien sencilla. Podemos asociar los controles (el Button y el RequiredFielValidator) a un grupo de validación mediante la propiedad ValidationGroup. De esta forma, el Button sólo enviará la señal a aquellos controles que formen parte del mismo grupo de validación.
El código quedaría así:
<h3>Nuevo Tipo</h3>

<asp:label id="tipoLabel" runat="server" text="Introducir nuevo tipo:"></asp:label>
<asp:textbox id="tipoTextBox" runat="server"></asp:textbox>
<asp:RequiredFieldValidator ID="tipoRequiredFieldValidator"
runat="server"
ErrorMessage="Escribe algo!!"
ControlToValidate="tipoTextBox"
ValidationGroup="tipoValidation" /
<
<asp:button id="introducirTipoButton" runat="server" text="Introducir" validationgroup="tipoValidation">
</asp:button>

<h3>Nuevo Subtipo</h3>

<asp:label id="subtipoLabel" runat="server" text="Introducir nuevo subtipo:"></asp:label>
<asp:textbox id="subtipoTextBox" runat="server"></asp:textbox>
<asp:button id="introducirSubtipoButton" runat="server" text="Introducir" validationgroup="subtipoValidation">
</asp:button>
<asp:RequiredFieldValidator ID="subtipoRequiredFieldValidator"
runat="server"
ErrorMessage="Aquí también tienes que escribir algo!!"
ControlToValidate="subtipoTextBox"
ValidationGroup="subtipoValidation" /
>
Sencillo, ¿verdad? Una vez se conoce la solución, sí que es sencillo. Por si os sirve de algo, la solución la encontre en este post de los foros de ASP.NET.

¿Le ponemos la guinda al pastel?
Imaginad que todo esto lo tengáis en un popup y queráis poner un botón que cancele la introducción y cierre el popup. Independientemente del código asociado, al introducir un botón, cuando hagamos click en él, se producirá la validación de nuevo y, si tenemos algún control de validación sin grupo de validación asociado, puede que haga que dicho control salte porque no se cumple la condición que el valida. Por supuesto, no se cerrará el popup...
¿Y esto por qué pasa? Sencillamente, porque, como hemos dicho, los controles Button por defecto tienen una propiedad activada que se llama CausesValidation (causa validación).
Lo único que tenemos que hacer es poner dicha propiedad a false... (OJO, siempre que no necesitemos dicha validación!!).
Por ejemplo, el botón quedaría así:
<asp:Button ID="cancelButton"
runat="server"
Text="Cancelar"
CausesValidation="false" /
>

Esta solución la tuve que aplicar en un PopupControlExtender del Ajax Control Tookit de ASP.NET para cerrar el popup que se abre y que no me causara la validación de los datos introducidos. El post dónde encontré la solución lo podéis leer aquí.
Espero que os pueda servir de algo.

Un saludo!

lunes, 13 de agosto de 2007

Mis derechos asertivos...

Escuchando el programa de la SER "Todo es ponerse" me he enterado de algo que creo que todos tendríamos que conocer.
La verdad es que, una vez escuchado (o leído) es algo que suena bastante lógico, pero que pocos aplicamos en la vida. Y que, cuando algunos lo aplican, parece cuanto menos desagradable, aunque no debiera ser así.
Supongo que la gran pregunta es ¿a qué me refiero? Pues sencillamente a los derechos asertivos de las personas. ¿Y eso qué es? Buena pregunta... Cito a la Wikipedia:
"Según Renny Yagosesky, escritor y orientador de la conducta, se trata de una categoría de comunicación compleja vinculada con la alta autoestima y que puede aprenderse como parte de un proceso amplio de desarrollo emocional. La define como una forma de expresión consciente, congruente, clara, directa y equilibrada, cuya finalidad es comunicar nuestras ideas y sentimientos o defender nuestros legítimos derechos sin la intención de herir, actuando desde un estado interior de autoconfianza, en lugar de la emocionalidad limitante típica de la ansiedad, la culpa o la rabia."
Pues bien, después de escucharlos en la radio (y ya que estaba delante del ordenador), me he planteado buscarlos para mostrarlos a tod@s.
Y he encontrado una web disc@pnet en la que hay una guía sobre la asertividad.
La verdad es que podemos encontrar varias cosas interesantes, pero sobretodo creo que tenemos que tener en cuenta una cosa que normalmente no respetamos: nuestros derechos asertivos.
La web en cuestión nombra una lista realizada por Olga Castanyer. En esta lista encontramos:
  1. El derecho a ser tratado con respeto y dignidad
  2. El derecho a tener y expresar los propios sentimientos y opiniones
  3. El derecho a ser escuchado y tomado en serio.
  4. El derecho a juzgar mis necesidades, establecer Mis prioridades y tomar mis propias decisiones.
  5. El derecho a decir no sin sentir culpa.
  6. El derecho a pedir lo que quiero , dándome cuenta de que también mi interlocutor tiene derecho a decir NO
  7. EL derecho a cambiar
  8. El derecho a cometer errores.
  9. El derecho a pedir información y ser informado.
  10. El derecho a obtener aquello por lo que pagué.
  11. El derecho a decidir no ser asertivo.
  12. El derecho a ser independientes.
  13. El derecho a decidir qué hacer con mis propiedades, cuerpo, tiempo, etc., mientras no se violen los derechos de otras personas.
  14. El derecho a tener éxito.
  15. El derecho a gozar y disfrutar.
  16. El derechoa mi descanso, aislamiento, siendo asertivo
  17. El derecho a superarme, aun superando a los demás. (Castanyer: 1996:48)
Aquí podéis encontrar una lista un poco más extensa, pero seguro que pensáis que con estos nos vale, no?
Seguro que una vez leído esto pensáis: "Claro! Eso ya lo sabía yo."...
Como muy bien dice Olga Castanyer estos derechos “no están escritos, pero todos los poseemos, y que muchas veces olvidamos a costa de nuestra autoestima”. Y para mí esto último creo que es lo más cierto. Concretamente en mi caso sea uno de los mayores problemas.
En fin, habrá que intentar solucionarlo, no? Intentaré seguir los consejos de la web y aplicar alguna de las técnicas que nos explican... Si lo consigo ya os contaré algo...

De todas formas, me parece algo interesante y que todos tendríamos que conocer bien...

Un saludo!

lunes, 6 de agosto de 2007

Visual Studio 2005 y Windows Vista...

Y la primera en la frente!

Por fin me decido a trabajar con el Visual Studio y ¡a qué mala hora!

Cansado ya de las limitaciones que tiene el Visual Express Developer y con envidia de aquellos, sobretodo subgurim, que me contaban lo fácil que eran algunas de las cosas en Visual Studio, he decidido empezar a usarlo.

En casa no he tenido que tener nada en cuenta, porque uso Windows XP, pero en el trabajo tenemos Windows Vista. Y, para variar, este sitema operativo, está lleno de incompatibilidades. Muchas nuevas funciones, pero muchas de ellas incompatibles con el hardware y el software que existe hoy en día por ahí.

Como todo, supongo que poco a poco esto se irá arreglando, más que nada porque los fabricantes se las tendrán que apañar para solucionar los problemas con parches y actualizaciones que permitan trabajar a sus usuarios. Pero mientras tanto...

Y lo más curioso es que la propia Microsoft tenga incompatibilidades en sus productos... Cuanto menos es algo difícil de comprender.

Bueno, a lo que iba. Estaba yo dispuesto a instalar el Visual Studio 2005 en mi flamante ordenador con Vista, cuando de repente me salió un aviso de que el software podría no funcionar bien (uan especie de incompatibilidad conocida) y si quería buscar la posible solución en Microsoft... Le digo que sí y cruzo los dedos... Y FUNCIONA!! Increible pero cierto. Me lleva a una página en la que encuentro las descargas necesarias para solucionar el problema... El SP1 del Visual Studio 2005 y una actualización de dicho SP para Windows Vista.

Leo la información y veo que tan sólo tengo que descargar dichas actualizaciones y podré utilizar el Visual Studio en mi Windows Vista. Pues bien, a ello.
Lo primero es descargar el SP1 del Visual Studio. Se puede descargar aquí.
A continuación descargad la actualización de dicho SP para Windows Vista. Se encuentra aquí.
Tened cuidado con que los idiomas sean los mismos.

Una vez descargados, sólo hay que instalarlos. Primero el SP1 y luego la actualización...

Y luego a funcionar, no?? Pues no! Porque cuando ejecutas el Visual Studio te avisa diciendo que lo recomendable es que lo ejecutes en como administrador... Y te da un hermoso enlace en el que dice, entre otras cosas, que para ejecutar el Visual Studio te recomiendan:
  • Ejecutar Visual Studio con permisos de administrado
  • Ser miembro del grupo local de "administradores"
  • Ejecutar haciendo click con el botón derecho sobre el icono y seleccionando "Ejecutar como administrador"
Por supuesto, todo esto en inglés... El enlace al que te envían es este.

En fin, qué haría yo sin Microsoft. Hace que cada día sea una nueva aventura inesperada!

viernes, 27 de julio de 2007

Mi proyecto y yo.... Una relación de AMOR y ODIO

Mi proyecto... Qué puedo decir de él??

Posiblemente el peso más grande que estoy cargando desde hace mucho tiempo.
En fin, mi proyecto puede ser la razón por la que, por fin, me estoy planteando ciertas cosas sobre mi vida...

Pero lo primero es lo primero. Y, antes de pensar en el futuro, tengo que terminar lo que empecé ya hace mucho... mi carrera. Ya va siendo hora de poner el punto y final (sí, y final) a esto. Despues de más de dos años sin hacer prácticamente (o sin prácticamente) nada, estoy más que decidido a terminar (casi podría decir empezar) el proyecto final de carrera (PFC o pefecé para muchos).

El caso es que hace ya más de dos años que empecé a plantearme qué hacer como proyecto. Y, por fin, dos intentos después, parece que he encontrado algo que me motive algo.
Por lo menos he encontrado algo que me va a ser útil, porque, tengo que decirlo, creo que como norma general, los PFCs no valen para nada. Pero eso es una opinión que puede que otro día plantee...

En fin, como iba diciendo, mi proyecto... En qué consiste mi proyecto??
Para mi, mi proyecto es la forma de dar el paso para probar algo nuevo, para empezar la búsqueda de aquello que realmente me interesa, de aprender algo... útil.
Y qué es eso? Pues la programación en ASP.NET. Desde siempre he pensado que la programación web era un tema interesante, pero nunca he tenido las ganas suficientes para ponerme a ello. Y gracias a mi amigo subgurim por fin me he decidido a ponerme a ello...
Y mi experiencia con el programa de gestión que usamos en la empresa ha sido el otro detonante. Necesita urgentemente una mejora.
Pues si juntamos las dos cosas obtenemos mi PFC: una APLICACIÓN WEB DE GESTIÓN DE PROYECTOS, CLIENTES Y FACTURACIÓN para la empresa con la que trabajo.

Y, por fin, poco a poco puedo decir que vaoy avanzando. Cada día pongo un ladrillito y la construcción va tomando forma. Y lo más importante, estoy aprendiendo, me está siendo útil de verdad. Para mi esto último es lo más importante. Que todo aquello a lo que dedico tiempo me aporte algo... Estoy cansado de hacer las cosas porque sí, sin que me valgan de nada... pero esto también es otro tema.

Bueno, dicho esto y a partir de aquí, procuraré ir añadiendo cositas sobre el desarrollo de mi proyecto y lo que voy encontrando y aprediendo. Por si a alguien le parece interesante o le puede resultar útil para aprender, porque ha decidido que también le interesa la programación web...

Si habéis llegado hasta aquí, sólo quiero daros las gracias. Y si decidís seguir accediendo a este blog, espero que algo de lo que encontreis os resulte útil.

Un saludo!