Archivo del Autor

Alguna vez he tenido la necesidad de eliminar los saltos de línea en un campo de formulario de tipo textarea. Más aún, he tenido la necesidad de eliminar los saltos de línea del texto seleccionado dentro de un textarea. Con la siguiente función Javascript conseguimos localizar la porción de texto seleccionado y eliminar los saltos de línea o line breaks (“\n”) y los retornos de carro o carrier return (“\r”). Para ello utilizamos funciones propias del lenguaje Javascript (createTextRange, duplicate, replace) y expresiones regulares.

function suprSaltos(campo) {
 if (campo.createTextRange) {
  campo.focus(campo.caretPos);
  campo.caretPos = document.selection.createRange().duplicate();
  if(campo.caretPos.text.length>0) {
   var sel = campo.caretPos.text;
   var fin = '';
   while(sel.substring(sel.length-1, sel.length)==' ') {
    sel = sel.substring(0, sel.length-1);
    fin += ' ';
   }
   campo.caretPos.text = sel.replace(new RegExp('\\n','g'),''). _
                          replace(new RegExp('\\r','g'),'') + fin;
  } else campo.caretPos.text = '';
 }
 else campo.value += '';
}

Como en otras funciones, en esta función es necesario juntar la expresión en una única línea quitando los _ de final de línea porque de lo contrario no funcionará.

Etiquetas: , ,

Comments 4 Comentarios »

La red Kad de emule es la alternativa a la tradicional red de Servidores de la red eD2K ya que no depende de los servidores para funcionar.

Etiquetas: , , , , , , , , ,

Comments 6 Comentarios »

A propósito, con el desplome de las bolsas del mundo…

Una vez llegó al pueblo un señor, bien vestido, se instaló en el único hotel que había, y puso un aviso en la única página del periódico local, diciendo que estaba dispuesto a comprar cada mono que le llevaran por $10. Los campesinos, que sabían que el bosque estaba lleno de monos, salieron corriendo a cazar monos. El hombre compró, como había prometido en el aviso, los cientos de monos que le trajeron a $10 cada uno sin chistar. Pero, como ya quedaban muy pocos monos en el bosque, y era difícil cazarlos, los campesinos perdieron interés. Entonces el hombre ofreció $20 por cada mono, y los campesinos corrieron otra vez al bosque. Nuevamente, fueron mermando los monos, y el hombre elevó la oferta a $25, y los campesinos volvieron al bosque, cazando los pocos monos que quedaban, hasta que ya era casi imposible encontrar uno.

Llegado a este punto, el hombre ofreció $50 por cada mono pero, como tenía negocios que atender en la ciudad, dejaría a cargo de su ayudante el negocio de la compra de monos. Una vez que viajó el hombre a la ciudad, su ayudante se dirigió a los campesinos diciéndoles:
- Fíjense en esta jaula llena de miles de monos que mi jefe compró para su colección. Yo les ofrezco venderles a ustedes los monos por $35, y cuando el jefe regrese de la ciudad, se los venden por $50 cada uno.
Los campesinos juntaron todos sus ahorros y compraron los miles de monos que había en la gran jaula, y esperaron el regreso del ‘jefe’. Desde ese día, no volvieron a ver ni al ayudante ni al jefe. Lo único que vieron fue la jaula llena de monos que compraron con sus ahorros de toda la vida.

Ahora tienen ustedes una noción bien clara de cómo funciona el Mercado de Valores y la Bolsa.

Este post también lo podéis encontrar en Inversión y Ahorros y en Chistes con buen humor.

Etiquetas: , ,

Comments No Hay Comentarios »

Para validar direcciones de Internet simples (URL’s) de usuarios que introducen su página web en un campo de formulario podemos utilizar la siguiente función en Javascript:

function ValidarUrl(txtCampo)
  strExpReg = /^http:\/\/[a-zA-Z0-9-_:/.?&=]+$/;
  if (!strExpReg.test(txtCampoActual.value)){
    strMensaje = 'La página web no es válida,\ncontiene carácteres ';
    strMensaje += 'no válidos o no empieza por "http://"';
    alert(strMensaje);
    txtCampoActual.focus();
    return false;
  }
  return true;
end function

En este caso, la validación se realiza del lado del cliente (al ser Javascript) y la función recibe como parámetro el campo del formulario donde irá la URL, mostrando un mensaje de error si la URL no es válida y devolviendo el foco a ese campo.

Obtener su versión en ASP y otros lenguajes es fácil adaptando la expresión regular a la sintaxis de cada lenguaje

Etiquetas: , ,

Comments 3 Comentarios »

El otro día recibí este mensaje en el correo, en nombre de un amigo:

“Fulanito te ha agregado como amigo(a) en hi5. Necesitamos confirmar que conoces a Fulanito para que sean amigo(a)s en hi5. Haz clic en el botón para confirmar esta solicitud”

En principio lo ignoré porque no tengo demasiado tiempo para darme de alta y seguir las redes sociales, pero al día siguiente recibí otra solicitud de amigo de hi5 de otro amigo diferente enviada a otra dirección de correo antigua mía.

Hablando con mis amigos, parece que algunos de nosotros estábamos recibiendo solicitudes de amigo de hi5 automáticamente, ya que los remitentes decían que no los estaban enviando. Pensamos que se podría tratar de algún virus que enviara invitaciones automáticas y redirigiera a alguna web falsa, pero comprobé que no era así. Siguiendo los enlaces de las invitaciones que me habían enviado, me di de alta con datos falsos en hi5 dando direcciones de e-mail falsas de Yahoo, Gmail o Hotmail, y efectivamente, llegaba a una pantalla donde se me pedía introducir la contraseña de Yahoo, Gmail o Hotmail para que hi5 pudiera acceder a nuestra libreta de direcciones y automáticamente enviara invitaciones, supongo que a la gente que no tuviera cuenta en hi5…

Esto significaba que algunos de mis amigos se habían dado de alta en hi5 y habían proporcionado su contraseña de correo en Yahoo o Gmail a hi5, pero esto resulta MUY PELIGROSO, ya que por mucho que digan los de hi5 que no almacenan las contraseñas puede ser falso y además están accediendo a toda nuestra libreta de direcciones y otra información personal y confidencial (datos personales, mensajes,…). Para evitar males mayores, a estos amigos que habían proporcionado sus contraseñas de correo les recomendé que las cambiaran cuanto antes en Yahoo, Gmail o el proveedor que utilizaran.

Como norma general, NUNCA hay que dar ese tipo de contraseñas en las webs que lo soliciten, en este caso lo de las invitaciones de hi5 seguro que se puede hacer de manera manual y conscientemente, sabiendo a quién se le está enviando la invitación. Esta forma de hacer las cosas de hi5 es claramente una vía rápida de expansión de la red social, ya que de forma automática envía las invitaciones a todos los contactos de la libreta de direcciones, aparte de desconocer si realmente acceden sólo a las libretas de direcciones y destruyen las contraseñas o si realmente acceden a algo más.

Este caso me recuerda a algún otro correo que recibí hace tiempo de otra amiga en el que ponía algo así como “¿Quieres saber quién te tiene ignorado en el messenger?”, y redirigía a una página web donde pedía usuario y contraseña de nuestro messenger… Nunca se han de dar estos datos en sitios de terceros, ya que no sabemos para qué pueden ser utilizados y podemos ser víctimas de una suplantación de identidad o perder datos confidenciales…

Este post también lo podéis encontrar en Tecnología de la vida.

Etiquetas: , , , ,

Comments No Hay Comentarios »

Para validar direcciones de e-mail podemos utilizar la siguiente función en ASP:

function esValidoEmail(cadena)
  set expReg = New RegExp
  expReg.Pattern = "^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@_
                     [_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$"
  esValidoEmail = expReg.Test(cadena) and len(cadena) < 256
  set expReg = nothing
end function

Su versión en Javascript:

function esValidoEmail(cadena) {
  strExpReg = /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@_
                [_a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$/;
  return strExpReg.test(cadena);
}

Como en las otras funciones, en esta función en Javascript sí que es necesario juntar la expresión en una única línea quitando los _ de final de línea porque de lo contrario no funcionará.

Etiquetas: , ,

Comments No Hay Comentarios »

Los bancos sin comisiones por Internet como Uno-e, Openbank y Activobank son la mejor opción con todo gratis (transferencias, tarjetas) y con alta rentabilidad.

Etiquetas: , , , , , , , , ,

Comments No Hay Comentarios »

Continuando con las expresiones regulares, para validar fechas se puede utilizar la siguiente función en ASP:

function esValidoFecha(cadena)
  set expReg = New RegExp
  expReg.Pattern = "^(((0[1-9]|[12][0-9]|3[01])([/])(0[13578]|10|12)([/])_
                    (\d{4}))|(([0][1-9]|[12][0-9]|30)([/])(0[469]|11)_
                    ([/])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([/])(02)([/])_
                    (\d{4}))|((29)(\.|-|\/)(02)([/])([02468][048]00))|_
                    ((29)([/])(02)([/])([13579][26]00))|((29)([/])(02)_
                    ([/])([0-9][0-9][0][48]))|((29)([/])(02)([/])([0-9]_
                    [0-9][2468][048]))|((29)([/])(02)([/])([0-9][0-9]_
                    [13579][26])))$"
  esValidoFecha = expReg.Test(cadena)
  set expReg = nothing
end function

La expresión regular (que se puede poner en una única línea eliminando los _ finales) es un poco larga porque ha de tener en cuenta los días de los meses del año, los años bisiestos,… Para validar del lado del cliente (antes de enviar el formulario), se puede utilizar el mismo patrón en Javascript:

function esValidoFecha(cadena) {
  strExpReg = /^(((0[1-9]|[12][0-9]|3[01])([/])(0[13578]|10|12)([/])_
                (\d{4}))|(([0][1-9]|[12][0-9]|30)([/])(0[469]|11)_
                ([/])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([/])(02)([/])_
                (\d{4}))|((29)(\.|-|\/)(02)([/])([02468][048]00))|_
                ((29)([/])(02)([/])([13579][26]00))|((29)([/])(02)_
                ([/])([0-9][0-9][0][48]))|((29)([/])(02)([/])([0-9]_
                [0-9][2468][048]))|((29)([/])(02)([/])([0-9][0-9]_
                [13579][26])))$/;
  return strExpReg.test(cadena);
}

En esta función en Javascript sí que es necesario juntar la expresión en una única línea quitando los _ porque de lo contrario no funcionará.

Etiquetas: , , ,

Comments 8 Comentarios »

Entre los anuncios de diversas páginas web he visto muchas veces el de un grupo inversor privado que desde 1989 parece que se dedica a la inversión con alto rendimiento. Según pone en su página web (es probable que en esta página aparezca el enlace), se invierte un capital que puede ser de por ejemplo 2000 ó 6000 euros y se obtienen todos los meses 140 ó 180 euros. No conozco el tema a fondo, pero por informase en la web no se pierde nada. Parece ser que son un grupo de varias empresas que se dedican a las subastas y los préstamos. En la web pone más información, tendré que investigarlas mejor a ver qué ofrecen.

Este post también lo podréis encontrar en Inversión y Ahorros, con otros comentarios de visitantes diferentes a los que aparecen aquí.

Parece que se trataba de una estafa piramidal y ha sido desmantelada recientemente:

Etiquetas: , , , ,

Comments 29 Comentarios »

A la hora de mantener y cambiar contenidos de una página web, las cachés de los navegadores pueden jugar malas pasadas a los desarrolladores y diseñadores web, haciendo que los cambios no se reflejen de manera inmediata, sobretodo con contenidos en flash. Las cachés de los navegadores y los proveedores de Internet (como el famoso Proxy-caché de Telefónica) guardan las urls completas para ver si la tienen en caché a la hora de solicitar una página. Así, cuando la caché está activada y un usuario solicita la página http://www.example.com/a.htm, el navegador mira si tiene esa url y archivo en caché y si es así, lo coge de caché y no lo solicita al servidor.

Un truco para evitar que el navegador mire en la caché es pedirle la misma página pero con diferente url, es decir, http://www.example.com/a.htm?1 es una url diferente a http://www.example.com/a.htm?2, pero sin embargo devuelve la misma página. Los parámetros que le pasamos a la página (1 y 2) no son interpretados, con lo que es como si no estuvieran pero hacen que la url sea diferente. Para asegurarse de que el parámetro siempre será diferente, podemos generarlo dinámicamente desde asp o cualquier otro lenguaje y podemos utilizar la función en jscript getTime(), que nos devuelve la cantidad de milisegundos transcurridos desde el 1 de Enero de 1970 hasta el momento actual. De esta manera, podemos generar los enlaces desde páginas asp con esta función:

<script language="jscript" runat="server">
function getTime() {
 var d = new Date();
 return d.getTime();
}
</script>

y generar el enlace así:

<a href="http://www.example.com/a.htm?<%=getTime()%>">Enlace sin cache</a>

que se convertiría en algo así:

<a href="http://www.example.com/a.htm?1224505518887">Enlace sin cache</a>

Este truco es especialmente útil cuando una página contiene un objeto flash. En el ejemplo anterior, llamando a http://www.example.com/a.htm?1224505518887 devuelve el código html actualizado, pero si hay algún objeto flash que queramos actualizar en el interior de la página, esta solución no funciona, ya que la url del objeto flash llamado siempre será la misma. Para resolver esto, hemos de aplicar la variable de tiempo anterior directamente a la llamada al objeto flash:

<object classid="clsid:d27...">
  <param name="movie" value="home.swf?<%=getTime()%>" />
  <embed src="home.swf?<%=getTime()%>" pluginspage... />
</object>

quedando algo así:

<object classid="clsid:d27...">
  <param name="movie" value="home.swf?1224505518887" />
  <embed src="home.swf?1224505518887" pluginspage... />
</object>

y lo guardamos como asp con la funcion jscript getTime definida. De esta manera nos aseguramos que el objeto flash será leído del servidor sin pasar por la caché sin necesidad de cambiarle el nombre al archivo. Después, simplemente hay que llamar a la página http://www.example.com/a.asp, sin la variable de tiempo, porque ya se genera en el código de la página y lo que realmente nos interesa actualizar es el objeto flash.

Este tipo de solución también se puede utilizar para refrescar la página cada ciertos segundos, como una página que visualice una webcam que actualiza las imágenes por FTP cada x segundos.

Etiquetas: , ,

Comments 1 Comentario »