Tag: Web

Breve Introducción a las Expresiones Regulares

Una de las herramientas más potentes y a la vez más avanzadas que puede tener cualquier persona que "flirtee" con código y tratamiento de texto, son las expresiones regulares. Una aplicación directa de las expresiones regulares es la detección de patrones dentro de textos o la validación de los mismo de acuerdo a un patrón.

Dicho más formalmente, las expresiones regulares son un lenguaje para la descripción de lenguajes. Una expresión regular define un lenguaje. Por ejemplo, la expresión regular /[a-z]+/ define el lenguaje formado por las cadenas que consisten en repeticiones de una o mas letras minúsculas.

En el ejemplo la expresión sólo nos encontraría aquellas palabras que tuviesen todas las letras en minúsculas. En este conjunto por consiguiente se excluirían todos los nombres propios, las primeras palabra tras un punto por ir escribirse en mayúsculas o incluso aquellas palabras que van todas sus letras en mayúsculas. Para ello basta incluir en la expresión anterior el conjunto de la mayúsculas, pudiendo aparecer ninguna mayúscula o n mayúsculas del conjunto de las letras mayúsculas. La expresión quedaría tal que así /[A-Z]*[a-z]+/. A continuación se adjuntan un par de tablas con la sintaxis que define las expresiones regulares. Puede ayudaros a entender mejor las dos que os he presentado y puede ayudaros a generar otras nuevas.

 

Algunos metasímbolos usados en las expresiones regulares

*El elemento precedente debe aparecer 0 o más veces
+El elemento precedente debe aparecer 1 o más veces
.Un carácter cualquiera excepto salto de línea
?Operador unario. El elemento precedente es opcional
{n}Que coincida exactamente n veces
{n,}Que coincida al menos n veces
{n,m}Que coincida al menos n veces y no mas de m
|O uno u otro
^Comienzo de línea
$Fin de línea
.Cualquier carácter que no sea el retorno de carro
[...]Conjunto de caracteres admitidos
[^...]Conjunto de caracteres no admitidos
-Operador de rango
(...)Agrupación
\Escape
\nRepresentación del carácter fin de línea
\tRepresentación del carácter de tabulación

 

Abreviaturas para las clases más comunes en las expresiones regulares

CódigoSignificado
\d[0-9] Dígitos del 0 al 9
\D[^0-9] Carácter que no sea un dígito
\w[a-zA-Z0-9_] Carácter alfanumérico
\W[^a-zA-Z0-9_] Carácter no alfanumérico
\s[ \t\n\r\f] Espacio en blanco
\S[^ \t\n\r\f] Carácter que no es un espacio en blanco

 

No obstante la definición de estas expresiones, dependiendo de la dificultad del patrón a definir, puede no siempre ser trivial. A esto se le suma la experiencia que pueda tener cada uno para definir dichas expresiones.  Por eso herramientas como RegExr me parecen imprescindibles: una herramienta online para aprender, construir y probar expresiones regulares.

RegExr: http://regexr.com

RegExr_screenshot

Algunas de las características más destacadas de RegExr son:

  • Resultados actualizados en tiempo real, mientras tecleas
  • Información detallada de cada expresión cuando pasas sobre ella
  • Extensa batería de ejemplos y chuletas
  • Deshacer y Rehacer muy sencillo
  • Puedes compartir tus patrones y expresiones y votar las del resto de la comunidad (y "favoritearlas")

Si queréis recordar/practicar expresiones regulares, o simplemente queréis aprender practicando, os animo a que hagáis algunas pruebas con la herramienta. Recordad que podéis probar a usar las dos expresiones que aparecen en esta entrada si no sabéis por donde empezar.

El Peligro de la Reutilización de Contraseñas

Hace unos días un amigo me mandaba la siguiente noticia que hablaba de 13 millones de cuentas robadas del servicio de hosting 000webhost:

http://unaaldia.hispasec.com/2015/10/cuando-barrer-debajo-de-la-alfombra.html

https://www.000webhost.com/000webhost-database-hacked-data-leaked (Comunicado de 000webhost)

Lo primero que hice fue comprobar si alguna de mis cuentas había sido robada y se estaba distribuyendo de alguna forma en la red. Para ello lo más fácil es entrar en “Have I been pawned?“ como ya se comentó en el post "Clef – Inicio de sesión fácil y seguro":

https://haveibeenpwned.com

000webhost-reset-password

Efectivamente una de mis direcciones de email asociada a las credenciales de acceso que usé para hacer uso de los servicios de hosting, había sido comprometida y estaba circulando por la red. Lo siguiente que hice fue comprobar si la combinación del email y el password de la cuenta comprometida los había utilizado en otra cuenta para otro servicio. Es decir, si había reciclado la contraseña. ¡Gracias a Dios!, no fue el caso. Esto fue posible gracias a que conservo un listado de todas mis cuentas, encriptado fuertemente con una contraseña maestra acorde a la fortaleza del encriptado (actualmente existen servicios de este tipo que se denominan baúles de contraseñas). Esto me llevo a una par de reflexiones.

La primera es sobre a quien hacemos garante de nuestros datos cuando nos registramos en un servicio web. Cómo guarda la información, qué medidas de seguridad implementa el servicio, qué hace con los datos (si mercantiliza los datos)... Habitualmente confiamos en los servicios o simplemente no nos resulta preocupante lo que pueda pasar con esos datos. En la mayor parte de las veces ni se llega a esta reflexión, lo que resulta aún más preocupante.

Como segunda reflexión está el lado de los datos que decidimos introducir en el servicio web. Si son verdaderos o falsos los datos que damos (en el caso de que puedan serlo), qué tipo de credenciales de acceso usamos, si podemos eliminar la cuenta creada y el servicio borra totalmente nuestros datos aportados, así como toda la información generada... Pero lo que tenemos que tener en cuenta sobre todo, es que nunca debiéramos usar la misma contraseña en dos servicios, puesto que nunca vamos a tener la garantía de que nunca serán robadas las cuentas del servicio web y puede que tampoco sepamos con certeza las medidas de seguridad que está implementando el servicio. LA REUTILIZACIÓN DE CONTRASEÑAS NUNCA ES ACONSEJABLE EN NINGÚN CASO.

A día de hoy tenemos multitud de credenciales de acceso para diversos servicios web y es habitual caer en la mala práctica de reutilizar contraseñas. Esto es muy peligroso porque puede ser comprometida las credenciales dadas a un servicio, y que estas se usen en otro que pueda comprometer algo más que los propios datos e información que damos, como la contratación o variación de servicios contratados de manera online.

Si eres demasiado perezoso como para gestionar varias credenciales para cada uno de los servicios web de los que haces uso, te recomiendo que le eches un ojo al post:

Clef – Inicio de sesión fácil y seguro

Se trata de un servicio gratuito de autenticación e inicio de sesión único, simple y seguro.

Si tras leer este post, eres ahora un poco más consciente de lo que implica la reutilización de una contraseña, y además sabes que lo has hecho, te recomiendo el ejercicio de cambiar las contraseñas de todas aquellas credenciales de acceso para las que hayas reutilizado una contraseña.

LinkedIn – Error en la indexación de contenidos

Habitualmente las redes sociales generan extractos de manera automática de las distintas direcciones web que llegan a sus redes, ya sea porque periódicamente buscan contenido, o  porque los usuarios comparten dichas direcciones.

La primera vez se comparte un contenido no indexado o cuando se descubre un nuevo contenido web tras una dirección, se genera un extracto a modo de resumen, que puede durar más o menos en obtenerse dependiendo de la calidad del servidor que aloje ese contenido. A causa de que a veces los contenidos pueden estar alojados en servidores con un tiempo de respuesta alto, se generan extractos la primera vez y se asocian a la dirección web, de manera que la próxima vez que un usuario comparta la dirección, el extracto ya está generado y cacheado en la red social.

Estos extractos normalmente se mantienen estáticos y cada cierto tiempo (dependiendo de la red social), se revisan y actualizan.

¿Y si se produce una mala indexación?

A veces puede ocurrir que se genere un extracto equivocado a alguna dirección web , de cuyo contenido seas autor. Esto supone una mala indexación del contenido en la red social, generando un extracto que no tiene que ver con el contenido tras la dirección.

Personalmente tuve un caso recientemente en este mismo blog y he esperado hasta ahora (1 mes desde entonces), para publicar toda la incidencia estando ya resuelta.

Todo comenzó con una entrada como otras tantas que publico, pero la cual tuvo un pico en el número de veces que se compartía en una de las redes sociales.  Tras haberla publicado, la entrada había alcanzado 5K+ visitantes en la red LinkedIn. Demasiado para lo que es usual en una entrada en mi blog y todavía más para un contenido que había publicado hace tan poco tiempo y en una red social como LinkedIn (a través de la que no es tan frecuente que se comparta).

Share_buttons

Aparentemente un número de comparticiones tan alto de uno de mis contenidos resultaba beneficioso. Cuando pinche en el botón de LinkedIn de mi web, mi sorpresa fue que LinkedIn estaba compartiendo un contenido que no tenía nada que ver con el mío, usando en enlace web de mi entrada.

LinkedIn_button_content

Esto ocasionaba un problema para mi imagen al relacionar un contenido que no tenía nada que ver conmigo, a un enlace de una entradas de mi blog.

Pensé que podría ser un error en el código del botón de la red social o puede que habrían inyectado código malicioso en mi web. Descarté ambas opciones al compartir directamente la dirección web desde la red de LinkedIn, en la sección de compartir actualizaciones.

LinkenIn_content

Al poner cualquier dirección web, LikedIn lo mejora añadiendo una imagen destacada y un extracto a modo de resumen. En este caso el contenido mal indexado se volvía a repetir, siendo el mismo contenido mal indexado que el del botón de compartir en LinkeIn existente en la entrada de mi blog.

Esto me llevo a la resolución de que LinkedIn había generado un extracto equivocado para la dirección url de mi entrada. Con lo que me puse en contacto con el soporte técnico de LinkeIn desde la siguiente dirección:

https://ayuda.linkedin.com/app/home

Nada más entrar fui directo a "Contáctanos", y algo que me llamo la atención es que te obligan buscar respuesta primero dentro de su centro de ayuda antes de ponerte en contacto directo con ellos y abrir un ticket. Este hecho pone en valor la apuesta y calidad de un buen FAQ que evite la apertura de un ticket que puede resolverse consultados el FAQ. Esta práctica permite evitar la degradación del sistema de asistencia por la apertura demasiados tickets. A menor número de tickets, mayor tiempo para dar respuesta y solución por parte del equipo de soporte técnico a la incidencia propuesta.

Una vez se ha buscando la incidencia en el centro de ayuda, es posible ir a "Contáctanos":

https://ayuda.linkedin.com/app/ask

Tras el intercambio de unos cuantos mensajes con el soporte técnico que se dilató a lo largo de un mes, la incidencia quedó resuelta y la dirección web de la entrada de mi blog tuvo el extracto acorde al contenido:

https://mascandobits.es/blog/aplicaciones/clef-inicio-de-sesion-facil-y-seguro/

Conclusiones

search-engine-spider

Es importante gestionar la imagen de tus contenidos y asegurarte de que se referencian de manera correcta en las redes sociales, debido que las redes sociales dotan de mayor relevancia a un contenido en los buscadores.

Un contenido mal referenciado puede generar resultados no deseados en los buscadores para tus contenidos y esto supone un grave problema. La búsqueda orgánica de contenidos en los buscadores, suele ser un punto de entrada relevante al consumo de los contenidos de una web, permitiendo que los potenciales lectores encuentren dichos contenidos y los consuman.

Evernote – Base de conocimiento Personal

Muchas veces apuntamos cosas, o decimos que nos tenemos que acordar de algo, y hacemos pequeñas notas mentales o escritas que resultan importantes para nosotros, ya que de alguna forma queremos que sirvan de recuerdo en un futuro lejano o no.

Llevo varios años usando sistemas combinados o ideados por mí mismo para tal cometido. Usando blogs, notas en el sistema operativo o en la nube, creando las anotaciones allí donde pienso que las necesitaré y que por alguna razón pienso que nunca se perderán y las encontraré. Pero esto no es así siempre y muchas veces necesitas hacer un gran esfuerzo  para recordar dónde dejaste la nota que contiene información que ahora necesitas, o simplemente acordarte de aquello que dijiste que te tenías que acordar para un futuro.

Por otro lado en lo que concierne al conocimiento, es bien sabido que la información con la que ya hemos trabajado y nos resultó útil, resulta una fuente muchos más conveniente a causa de ser un conocimiento asimilado, tanto en contenido como en la forma en la que se presenta. Recordar y volver a utilizar esa información que resulta un conocimiento más real por ser conocido, hace que haya una mejor y más directa aplicación del mismo.

evernote_notes

Yo creo haber dado con la solución, y se llama Evernote. Es un sistema que te permite dejar cualquier tipo de nota manuscrita, tipografiada(con el teclado), con imágenes, urls, capturas, adjuntos…. Suena como un cajón desastre, pero lo que realmente le da fuerza al sistema es su capacidad de búsqueda y de indexación y la posibilidad de integrarse con el sistema y los navegadores. También puede integrarse en móviles, tablets o sistemas similares…. Lo mejor de todo llega cuando encima tiene capacidad de sincronización en la nube y te permite tener acceso y añadir contenidos cuando quieras desde donde quieras. También tiene capacidad de uso la herramienta vía web, lo que aumenta aún más  el alcance de un sistema completo como pocos.

evernote_archive

Si sueles hacer anotaciones, bien porque andas con mil cosas, eres imaginativo, o necesitas un soporte para hacer un seguimiento y gestión de aquellas cosas que te gustaría recordar en un futuro, tu herramienta es EverNote:

https://evernote.com/intl/es/evernote/

La información no vale para nada cuando la guardas; vale cuando la necesitas.