Servicios de correo web alternativos a GMAIL y Outlook

Que hoy por hoy Gmail es el más popular de los servicios de correo electrónico gratuitos es de perogrullo, hace años que desbancó al entonces líder Hotmail (hoy Outlook) y no hay que extrañarse: funciona bien, es fiable, tiene app para dispositivos móviles, permite almacenar unas cantidades enormes de datos, enviar correos con adjuntos de tamaños descomunales… pero claro, está el tema de la privacidad. El correo es gratis, pero lo pagas con tus datos. Si no quieres que Google acceda a ellos tienes alternativas, pero otras grandes empresas como Outlook o Yandex al final van a ser más de lo mismo en ese terreno. Existen alternativas con empresas más pequeñas que te dan un mayor control sobre tu privacidad, aunque la mayoría son de pago. Voy a recomendar aquí tres que tienen opción de cuenta gratis por si os interesa:

  • ProtonMail: Esta es seguramente la más popular de las alternativas a las grandes proveedoras de correo por sus excelentes calificaciones en el terreno de la seguridad, ya que nos ofrece un cifrado fuerte de las comunicaciones. Ofrece cuatro planes de pago: el gratuito (Free), el Plus, el Visionary y el Professional. Si optamos por la versión gratis nos ofrece 500 megas de almacenamiento, un límite de 150 envíos al día y soporte técnico a través de email. Tiene app nativa para iOS y Android.
  • Tutanota: Un proyecto de correo electrónico con clientes desarrollados bajo licencia de software libre y que también hace énfasis en la seguridad, ofreciéndose además como un servicio ecológico (se compromenten a alimentar sus servidores con energías renovables). Ofrece tres planes de pago: Free, Premium y Pro. Si optamos por la versión gratis nos ofrece 1GB de almacenamiento en un correo con dominio de Tutanota, un calendario también con datos encriptados, un servicio de compresión de correos para ahorrar almacenamiento y la posibilidad de ampliar el almacenamiento pagando puntualmente sin tener que contratar un plan superior. Existe app para Android, F-Droid e iOS.
  • GMX: Es un servicio de la empresa Mail.com, propiedad del proveedor 1&1, que ofrece un correo gratuito con dominio GMX y mútiples herramientas como calendario, cifrado GPG, suite ofimática, almacenamiento cloud… pretendiendo ser lo más cercano posible a la oferta que realiza Gmail. Ojo porque en su página principal sí tiene anuncios. Cuenta con app para Android y para iOS.

Hay un par de proyectos que querría mencionar ya que, aunque no tienen plan gratuito sí ofrecen muy buenas prestaciones y su precio es muy bajo: Fastmail y Posteo.

Fastmail ofrece un plan de 3 euros al mes que da 2 GB de almacenamiento, servicio de calendario encriptado y da un periodo de prueba de 30 días. Además cuenta con varias potentes herramientas y una experiencia de usuario muy buena con su app móvil.

Por su parte Posteo cuesta solo 1 euro al mes, ofrece calendario cifrado, libreta de direcciones cifrada y correo cifrado y además afirma comprometerse a utilizar energías renovables y financiarse por medio de banca ética.

Recursos online gratuitos para aprender gallego.

Ya sea porque vayas a emigrar a Galicia, porque ya vivas allí, porque quieras opositar, por ser más eficiente en tu trato con el público o por el mero placer de aprender otro idioma, las motivaciones para estudiar gallego son múltiples y todas muy válidas. Para facilitarnos la labor en internet tenemos una serie de recusos gratuitos:

Galego RAG (normativo):

O portal da Lingua: La propia Xunta, a través de la Secretaría Xeral de Política Lingüística, ofrece una plataforma de teleformación donde podremos encontrar cursos para preprar el examen de certificación CELGA o cursos específicos para funcionarios de lenguaje jurídico y administrativo.

Tradutor Gaio: Un traductor gratuito desarrollado también por entidades públicas y disponible en formato web, app para Android y app para iOS. Los idiomas soportados son gallego, portugués, castellano, catalán, inglés y francés.

Isto é Galego!: Ofrecida por Cuac FM, esta plataforma está disponible a través de web y de app para Android e iOS. Son una serie de audios donde, a través del humor, puedes ver una aproximación menos formal, con un lenguaje coloquial y muchos modismos.

Conxugalego: Los verbos y sus conjugaciones suelen ser una de las dificultades al estudiar una lengua romance. Esta aplicación de SmartGalApps nos pedirá que insertemos el infinitivo de un verbo para devolvérnoslo conjugado en todos sus tiempos. Está disponible para Android y para iOS.

Dicionario RAG: Otro elemento importante a la hora de aprender un idioma es contar con un diccionario. El de la Real Academia Galega está disponible en su web, también para Android e iOS.

Dicionario de Sinónimos: Un proyecto de la Universidad de Vigo que nos dotará de un práctico diccionario de sinónimos, una ayuda para tener un vocabulario más amplio.

Galego internacional (reintegracionismo):

Los recursos arriba listados están enfocados a la normativa ortográfica oficial de la RAG. Existen también un movimiento que reclama una ortografía confluyente con la lusofonía, más cercana al portugués. Se habla de esta forma de galego internacional, puesto que el portugués es uno de los idiomas más hablados del mundo con casi 300 millones de hablantes y siendo oficial en 9 países, y de reintegracionismo, ya que en sus inicios gallego y portugués fueron un mismo idioma.

Dicionário Estraviz: Un completo diccionario de gallego internacional. Incluye un anexo con léxico gallego de uso común en portugués.

A Nossa Galáxia: Colección de recursos lingüísticos para profundizar en el estudio de la normativa reintegracionista.

Vocabulário Ortográfico: Una recopilación de vocabulario de Galicia y el norte de Portugal a cargo de la Academia Galega da Lingua Portuguesa.

Otros consejos:

Estos recursos, junto al estudio y la convesación, pueden ser muy útiles pero a la hora de estudiar cualquier idioma lo principal es consumir mucha de su producción cultural. La plataforma de préstamo de obras digitales de la red de bibliotecas públicas de Galicia, Galicia Le, ofrece muchas obras, como también lo hace Galiciana, la Biblioteca Dixital de Galicia (un proyecto algo abandonado por las administraciones). En esta entrada de El Salto Diario encontrarás también varios podcasts en gallego. También dispones de la RTVG , la corporación de radio y televisión públicas, que emite varios programas online y de la plataformá Nós Televisión con una programación variada.

Y como no, escucha mucha música. Hubo un proyecto de discográfica online con licencias Creative Commons agrupando grupos gallegos, O Toxo Rabudo. Lleva un par de años parado el proyecto y su dominio principal ya no funciona, pero todavía puede accederse a su blog para descargar los discos.

Operaciones a bit a bit: NOT, AND, OR y XOR

Seguimos con la racha de entradas encadenadas. Si la entrada de los tipos de configuración RAID nos llevó a definir el concepto de información de paridad ahora a raíz de esa entrada vamos a hablar de las operaciones bit a bit.

Hablamos de operaciones a nivel de bit porque con ellas trabajamos directamente sobre los bits, dígitos binarios, a nivel individual. Este tipo de operaciones son muy utilizadas en computación, a la hora de cifrar datos o, como comentábamos en el otro artículo, para realizar los cálculos de paridad. Es posible que te suenen los nombres de estas operaciones, pues son operaciones lógicas que ya vimos en su día en un artículo sobre LibreOffice Calc o también en la entrada sobre el álgebra booleana.

NOT: La operación NOT también podría ser llamada complemento y es un operador unario. Realiza la negación lógica de cada bit, es decir, invierte su valor. Por ejemplo, la operación NOT 1010 daría como resultado 0101.

AND: La operación AND, o conjunción lógica, funciona de forma similar a una multiplicación: sólo nos devolverá 1 si todas las entradas son 1, en el resto de casos devolvería 0. Es decir 0 AND 0 es igual a 0, 1 AND 0 es igual 0 y solo 1 AND 1 es igual a 1. Por ejemplo: 100111001011010100111010 AND 010110100001101111011000 = 000110000001000100011000. Cuando hacemos la operación AND la secuencia que dará como resultado no puede ser más larga que la mayor de las secuencias operadas.

OR: La operación OR, o disyunción lógica, dará como salida 1 siempre que una o más de sus entradas sean 1. Es decir, 1 OR 1 es igual a 1, 1 OR 0 es igual a 1 y solo 0 OR 0 es igual a 0. Por ejemplo: 1000 OR 0011 = 1011. Cuando hacemos la operación OR la secuencia que dará como resultado no puede ser más corta que ninguna de las secuencias operadas.

XOR: La operación XOR, u OR exclusivo, dará como salida 1 siempre que solo una de las dos entradas sea 1. Es decir, que 0 XOR 0 será igual a 0, 1 XOR 1 será igual a 0 pero 1 XOR 0 o 0 XOR 1 serán igual a 1. Por ejemplo 1010 XOR 1001 = 0011 Dado que es complicado revertir su resultado es muy utilizada en algoritmos de cifrado.

¿Qué es la paridad en una configuración de RAID?

Bueno, mi última entrada había sido explicar qué es un RAID y raíz de eso me han preguntado otra cosa ¿Qué es la paridad?

Bueno, la información de paridad es un tipo de redundancia que nos permite recuperar los datos al vuelo en caso de que falle algún disco. Esto también lo permite una copia en espejo (RAID 1), pero con una diferencia: En el artículo anterior veíaimos que en un RAID 1 tenemos todo un disco ocupado con los datos redundantes, en cambio en un RAID 5 decíamos que solo ocupábamos el equivalente a un disco para almacenar la paridad, si tenemos cuatro discos aprovechamos el espacio de 3 ¿Qué brujería es esta? Pues una brujería matemática.

La información de paridad es una informacion calculada operando con el resto de datos de la misma división. De esta forma si se rompe un disco podemos recuperarlos comparando los datos que tenemos con los de paridad. Por poner un ejemplo simplificado, pensemos en álgebra sencilla. Imagina que calculásemos la paridad sumando los valores de los sectores de una misma división: El valor del sector 1 sería 1, del sector 2 sería 2, del sector 3 sería 3 y la paridad sería su suma ( 1+2+3=6 ). Si se rompiese el disco que conteía el sector 2 tendríamos esto en nuestros discos: 1+X+3=6. Podemos resolver la ecuación para saber que X era 2 antes de tener que cambiar el disco. Aunque el cálculo de paridad es realmente más complejo, esencialmente sería algo así.

Los sistemas de paridad simple más sencillos suelen usar la operación XOR para hacer estos cálculos a nivel de bit. Los sistemas más complejos, por ejemplo la doble paridad del RAID 6, utilizan operaciones más complicadas como un código Reed-Solomon u operaciones sobre un campo de Galois concreto. El requerir operaciones más complejas para calcular la paridad provoca que la velocidad de escritura sea menor, a cambio de conseguir una mayor tolerancia a fallos ya que podrían fallar hasta dos discos sin que perdamos datos.

Tipos de RAID más comunes

Me pregunta un amigo que és un RAID así que ya me ha dado una excusa para escribir una entrada sobre esto: RAID es el acrónimo de Redundant Array of Independent Discs, que en castellano sería Matriz Redundante de Discos Independientes. Y si ahora acabo aquí con razón te quejarías de que el título del post es engañoso. Una vez visto el significado vamos a explicarlo: el RAID es un sistema de almacenamiento que utiliza varios discos duros de forma conjunta para almacenar y replicar la información. Existen distintos tipos de configuraciones según busquemos mejorar la velocidad o la seguridad de nuestros datos, o el balance más equilibrado entre ellas. Vamos a ver cuáles son los tipos más habituales, ilustradas con unos gráficos sacados de la wikipedia:

RAID 0

También llamado Stripped Volume. Es uno de los tipos más básicos de RAID y requiere de solo dos discos. Cuando lo configuramos así ambos discos funcionan como uno solo, sumando sus tamaños, y la información se distribuye de forma equitativa entre ambos discos. Esto duplica la velocidad de escritura y de lectura pero reduce la tolerancia a fallos: si se estropea uno de los discos perderemos todos los datos pues no hay paridad ni respaldo.

RAID 1

También llamado Espejo, o Mirror en inglés. Como el RAID 0 requiere solo de dos discos, ambos del mismo tamaño. Básicamente lo que se hace en esta configuración es escribir los mismos datos en los dos discos, uno sería el “espejo” del otro. El gran problema de este tipo de RAID es que solo podemos usar la mitad del espacio disponible pues la otra mitad estará dedicada a replicación, como ventajas nos da una pequeña mejora en la velocidad de lectura y una gran tolerancia a fallos: si falla uno de los discos tenemos todos los datos en el otro que, además, se volverán a duplicar cuando sustituyamos el disco roto.

RAID 5

El RAID 5, o de paridad distribuida, es uno de los más usados en entornos empresariales por su buena combinación de rendimiento, aprovechamiento de discos y tolerancia a fallos. Aquí ya necesitaremos al menos 3 discos para empezar a trabajar. Con esta configuración cada vez que se escribe un bloque de datos se escribe tambien un bloque de paridad en su misma división. Esto permitirá que en caso de que rompa uno de los discos los datos puedan recuperarse al reconstruir el raid, aunque si rompiesen dos discos ya sí perderíamos toda la información. Respecto al RAID 1 se aprovecha más espacio, pues dispondríamos de un espacio igual al número de discos menos uno: por ejemplo con 4 discos de 2 teras tendríamos 6 teras disponibles. También conseguimos una mejora de la velocidad de lectura en una proporción similar, aunque no así en la escritura. La cantidad de discos que se puden montar en RAID 5 es teóricamente ilimitada, pero hay que tener en cuenta que cuantos más discos tenga la matriz más probabilidades hay de que falle uno.

RAID 6

Similar al RAID 5 pero añadiendo un segundo nivel de paridad. Esto permitiría recuperar los datos en caso de que fallen dos de los discos, aunque en lugar de sacrificar el espacio de un disco para paridad sacrificaríamos el de dos. Para la configuración del ejemplo anterior, 4 discos de 2 teras, tendríamos 4 teras disponibles en lugar de 6. Aunque logra una mejora en la velocidad de lectura algo menor que la del RAID 5 penaliza la escritura al tener que hacer más cálculos de paridad. Puede ser más recomendable que un RAID 5 si se quiere utilizar un número grande de discos al tener una mayor tolerancia a fallos.

RAID 10

El RAID 10, o RAID 1+0, es básicamente una combinación de un RAID 1 y un RAID 0. Es una configuración muy popular a la hora de montar servidores de bases de datos por su buena combinación de velocidad con tolerancia a fallos. Requiere al menos cuatro discos y han de ser siempre un número par. Básicamente se monta primero cada par de discos haciendo un RAID 1, con uno replicando al otro, y después se hace un RAID 0 sobre esos conjuntos de discos. Es bastante robusto pues podrían fallar a la vez un disco de cada par sin perder datos. Existe también una opción similar pero a la inversa que sería el RAID 0+1, pero es poco utilizado por tener una menor tolerancia a fallos. También, con un mayor número de discos, podríamos hablar de un RAID 100: consiste en coger dos matrices de discos en RAID 10 y aplicar sobre ellas un RAID 0 a mayores, o de un RAID 101: lo mismo pero aplicando un RAID 1 a las matrices en RAID 10.

Existen más configuraciones que las aquí citadas, tanto básicas como combinadas (RAID 2, RAID 3, RAID 4, RAID 30, RAID 50…). puedes verlas todas en el artículo de Wikipedia del que saqué las imágenes de ejemplo, donde también tienes explicaciones más detalladas de algunas de las configuraciones aquí explicadas.

Linux: Ejecutar comandos desde el historial con el operador !

El operador ! en la consola de Linux además de ser el operador lógico de negación también nos permite ejecutar comandos que hayamos llamado previamente desde el historial.

Por un lado podemos hacerlo en base a su número en el historial. Si ejecutas el comando history verás una lista de los comandos ejecutados y su número. Si después ejecutas ! seguido del número ejecutará de nuevo ese comando. Por ejemplo, si quieres usar de nuevo el comando que en el historial tiene el número 1501

!1501

Otra posibilidad es ejectuar los comandos seleccionando en orden inverso de ejecución. Si al comando ! le pasamos un número negativo ejecutará el comando que ejecutamos hace ese número de comandos. Me estoy liando al explicarlo, así que os pongo tres ejemplos. El primero es ejecutar el último comando que ejecutamos previamente:

!-1

¿Y si queremos ejecutar el penúltimo?

!-2

¿Y si queremos ejecutar el sexto por la cola?

!-6

Finalmente tenemos la opción de usar !! para lanzar el último comando que ejecutamos pero modificando parámetros. Imagina que tienes que ejecutar un comando muy largo como root pero te has olvidado de loguearte como tal. Pues podrías hacer lo siguiente y no tendrías que volver a escribir todo el comando:

su -c !!

Configuración de la tarjeta de red en Virtual Box

Una máquina virtual de Virtual Box nos permite configurar hasta 8 tarjetas de red distintas. Desde el entorno gráfico podremos configurar hasta cuatro, necesitando usar línea de comandos para configurar la otra mitad.

Por defecto el hardware virtualizado será una tarjeta AMD PCNet FAST III, aunque también tenemos la opción de cambiarlo por un adaptador de la familia Intel PRO/1000 si fuera necesario por temas de drivers en nuestro sistema operativo invitado. La lista de tarjetas disponibles sería esta:

  • AMD PCNet PCI II (Am79C970A)
  • AMD PCNet FAST III (Am79C973)
  • Intel PRO/1000 MT Desktop (82540EM)
  • Intel PRO/1000 T Server (82543GC)
  • Intel PRO/1000 MT Server (82545EM)
  • Paravirtualized network adapter (virtio-net)

Desde ese panel también podremos cambiar la MAC, lo que nos resultará útil para realizar tests de seguridad o para usar el Team Viewer de forma indefinida sin pagar licencia (me han contado, señoría, yo nunca selojuro…). Basta con pulsar el botón de recargar al lado de la dirección MAC y nos asignará una nueva.

En cuanto al modo de conexión hay seis opciones:

  • No Conectado: Simplemente emula el comportamiento del equipo si la tarjeta de red estuviera presente pero con el cable desconectado.
  • NAT: En modo NAT, Virtual Box emulará un router entre el exterior y el sistema operativo invitado. Este poseerá un servidor DHCP sirviendo hacia el invitado y mapeando el tráfico de la máquina virtual de forma transparente para el usuario. Cada máquina en modo NAT tiene su propio router por lo que estarán en redes aisladas: las máquinas con tarjetas en NAT no se pueden ver entre si.
  • NAT Network: Funciona de forma similar al modo NAT con la diferencia de que Virtual Box en este caso emulará un mismo router para todas la máquinas, lo que implica que podrán verse entre sí como si estuvieran todas en la misma red.
  • Bridged: El modo Briged, o puente, simula que la tarjeta virtual está conectada a la misma red que la tarjeta del equipo anfitrión, por lo que ambas se verán como si fuesen miembros de la misma red física.
  • Red Interna: Este modo nos permite configurar una red aislada de máquinas virtuales, que en principio no tendría salida hacia el exterior. Para poder conectar esta red a internet tendríamos que configurar en algún equipo una segunda tarjeta en modo NAT o Bridged para que disponga de salida a través del anfitrión.
  • Solo Anfitrión: El último modo nos permite configurar una red aislada similar al modo Red Interna pero con la salvedad de que en este modo el equipo anfitrión también formaría parte de la red.

Existe un modo más, definido como Generic Driver que nunca he utilizado. Creo que permite cargar drivers de algunos packs de expansión.

La instrucción With…End With de Visual Basic

Unas de las cosas más cómodas de la sintaxis de Visual Basic es la instrucción WITH…END WITH que, básicamente, nos permite acceder a los miembros de un objeto sin repetir su nombre constantemente.

La sintaxis básica sería la siguiente:

WITH Objeto
'lo que vayamos a hacer
'con sus miembros
END WITH

Dicho así no se entiende bien, pero con un ejemplo lo vemos claro. Tenemos aquí un objeto Mensaje y sus miembros son los valores que necesitamos para enviar un email:

 With Mensaje
   Set .Configuration = iConf
       .To = "correo@gmail.com"
       .From = "Donnie"
       .Subject = "Ejemplo with"
       .HTMLBody = correoHTML
       .Send
End With

Como podéis ver esta sintaxis nos ahorra escribir la referencia al objeto Mensaje antes de cada uno de sus elementos. Es a su vez cómodo para escribir y para leer el código.

Es posible anidar una sentencia WITH dentro de otra para acceder a un objeto interno, pero esto puede hacer nuestro código más difícil de leer.

With obVentana
    With .Etiqueta
        .Mensaje= "Esto es un aviso."
        .Fondo = Brushes.DarkSeaGreen        
    End With

    .Titulo = "VENTANA DE AVISO"
    .Show()
End With

Expresión regular en PHP para validar todo tipo de urls

Esta es una expresión regular que me he encontrado hoy modificando un antiguo proyecto en PHP y que podemos usar para validar tanto direcciones de email como direcciones url, recurriendo a la función preg_match() de PHP.

/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/

Investigando un poco he dado con el autor, o al menos con quien parece ser la primera fuente en publicar dicha expresión: Matthew O’Riordan. Aquí un link al hilo de StackOverflow donde lo explica.

¿Qué significa que un teléfono o tablet es IP68 o IP69K?

Me preguntaba un amigo el otro día que significaba IP68 porque le habían ofrecido un teléfono Ulefone que en su descripción destacaba esa característica. IP será la abreviatura de Ingress Protection, protección de entrada en castellano y se trata de un estándar internacional para medir y certificar la resistencia de un dispositivo electrónico ante cuerpos extraños. Este estándar es definido y regulado por la normativa IEC 60529 (equivalente a la EN 60529 de la Unión Europea).

El primer número define el nivel de resistencia ante intrusiones o cuerpos sólidos:

  • X: Implica que no hay datos disponibles
  • 0: No hay ningún tipo de protección ante el acceso o el contacto con cuerpos sólidos
  • 1: Protección contra cuerpos mayores de 50 milímetros de diámetro.
  • 2: Protección contra cuerpos mayores de 12.5 milímetros de diámetro y 80mm de longitud. Por ejemplo, un dedo podría penetrar dentro del dispositivo
  • 3: Protección contra cuerpos mayores de un diámetro de 2.5 milímetros. El dispositivo podría ser penetrado por algunas herramientas o cuerpos de más de ese tamaño.
  • 4: Protección contra cuerpos sólidos de más de un milímetro de diámetro. El dispositivo solo podría ser penetrado con algún tipo de hilo o con herramientas de precisión.
  • 5: Protección contra polvo grueso, arena, etc. Puede entrar una cantidad de polvo en el dispositivo pero no suficiente para dañarlo.
  • 6: Dispositivo totalmente estanco al polvo.

El segundo número lo que marcaría es su nivel de estanqueidad ante el agua:

  • 0: Sin protección.
  • 1: Protegido contra la condensación
  • 2: Protección contra gotas de agua que caen con un ángulo de 15º sobre la posición normal del dispositivo, testeado con cuatro ejes.
  • 3: Protección contra gotas de agua que caen con un ángulo de 60º sobre la posición normal del dispositivo, testeado con cuatro ejes y con agua vertida en forma de spray.
  • 4: Protegido contra salpicaduras en cualquier dirección
  • 5: Protegido contra chorros en cualquier dirección.
  • 6: Protegido contra chorros y olas.
  • 7: Protegido contra una inmersión total durante un corto espacio de tiempo.
  • 8: Protegido contra una inmersión total durante un largo espacio de tiempo. Generalmente es testeado de 3 a 1.5 metros de profundidad durante 30 minutos.

¿Y la IP69K?

Pues en este caso iría un paso más allá en cuanto a estanqueidad. Fue regulada originalmente por el estándar alemán DIN 40050-9, que posteriormente sería substituído por la normativa ISO 20653. En el estándar EN 60529 sería IPX9.

Básicamente IP69K testearía la resistencia del dispositivo ante líquidos a alta presión y alta temperatura, con agua a 80 grados, a una presión de entre 80 y 100 bares a una distancia de 10 o 15 centímetros desde cuatro ángulos distintos, aplicando 30 segundos por cada ángulo.

Así que si necesitas un equipo electrónico para trabajar en condiciones duras, de polvo extremo, humedad extrema, arena, etc… buscar un dispositivo que cumpla estos estándares sería una buena idea.