Open365 carga

Trasteando con Open365

Bueno, he solicitado acceso a la beta de Open365 y ya he podido probar algo. Vamos a comentar un poco por aquí de qué va la cosa.

Open365Hub

Open365 es un proyecto de la gente de EyeOS, unos chavales muy majos, y nos ofrece una suite de productividad en la nube muy interesante. Con un escritorio basado en KDE podemos sincronizar archivos entre nuestro dispositivo y su servicio por medio de Seafile, dispondremos de un cliente de correo electrónico y de las aplicaciones de LibreOffice Writer (procesador de textos), Calc (hoja de cálculo) e Impress (presentaciones). Open365 está muy pensado para el trabajo colaborativo, permitiéndote contactar con otros usuarios para compartir documentos y crear grupos para trabajar. También puedes acceder a todo desde el teléfono gracias a un app para Android. Y todo esto basándose en tecnología OpenSource.

LibreOffice Writer

LibreOffice Calc Open365

cliente correo open356

Open365 Android

Como veis, lo que os cuento arriba suena a idea cojonuda y a poderosa alternativa frente a la suite Office365 de Microsoft o a las de Google. ¿Hay algo malo? Bueno, pues no sabría deciros porque se trata de una beta, por lo que hay que asumir que todavía hay cosas que pulir, bugs que depurar y problemillas que solucionar. De momento el problema principal que he apreciado en su uso es que va muy lenta. De hecho los desarrolladores lo saben, ya que en la pantalla de carga de las aplicaciones van apareciendo hilarantes mensajes para amenizar la espera. Supongo que durante la beta no andarán sobrados de servidores y que cuando pasen a producción esto se solucionará. Os dejo un vídeo explicativo sobre la aplicación por parte de los creadores. Por mi lado diré que de momento no trabajaré con ella de forma regular (como ya dije, es una beta que tiene que finalizarse todavía), pero que espero que a medio plazo se convierta en una útil herramienta para mi y muchos usuarios más.

Open365 carga
Sí, este chiste aparece de verdad durante la carga.

No funciona el depurador de IE11: error en JSPlugin.3005

Me ha pasado en el trabajo: el depurador de Internet Explorer 11 no funciona. Y lo necesito porque estoy depurando una aplicación web que utiliza ActiveX y tiene que funcionar en Explorer. Pero al pulsar F12 e intentar usar el inspector de código veo un error, encabezado por

Exception in window.onload: Error: An error has ocurredJSPlugin.3005

Parece que es un error típico en Windows 7 si se actualiza directamente de IE8 a IE11. Las soluciones son:

  • Desinstalar actualizaciones para volver a la primera versión de IE del sistema operativo y, tras eso, primero actualizar a IE10 y luego a IE11.
  • Ir a la web de Microsoft, buscar la última actualización se seguridad de IE e instalarla. Os pondría un link, pero puede que haya cambiado cuando lo leáis, así que mejor buscadla.

HTML5: Lograr que un campo number acepte decimales

Una de las características de HTML5 era que permitía definir campos de tipos variados que ampliaban las opciones respecto al tradicional tipo text del HTML clásico.  Estos campos, además tienen la capacidad de autovalidarse.

Estos nuevos campos, por otra parte, requieren conocer todas sus opciones para exprimirlos a tope. Por ejemplo, si declaras un campo como el siguiente:

<input type="number" name="numero" />

En este caso te encontrarás con que si pones un número decimal la validación del navegador te dirá que está incorrecto. Pero tú sabes que no lo está ¿por qué pasa esto? Bueno, puedes arreglarlo de una forma muy simple: con el atributo step.

La mayoría de los navegadores mostrarán dos flechas en los campos de tipo number, para aumentar y decrecentar su valor. En step podemos definir cuánto queremos que este valor suba o baje en cada click. Por ejemplo:

<input type="number" step="5" name="numero" />

De esa form el valor irá cambiando de 5 en 5.

Pero esto de momento no nos soluciona el problema ¿cómo logramos que trague un decimal? Pues definiendo en step que el valor sea decimal.Si ponemos el valor de step como «0.01» nos permitirá meter decimales con dos cifras. Entonces si ponemos nuestro campo:

<input type="number" step="0.01" name="numero" />

Así tenemos un campo que admite dos cifras decimales, que suele ser lo más habitual. Si queremos más precisión entonces metemos más decimales en el step. Otra opción es añadir directamente el valor any a step. De esta forma permitirá meter tantos decimales como queramos.

<input type="number" step="any" name="numero" />

Visual Studio 2015: Borrar una solución

Pues nada, que me han actualizado a Visual Studio 2015 y que andaba yo intentado borrar un proyecto, de hecho la solución completa, que me había liado creándolo… y no encontraba la manera de hacerlo. ¿Cómo va esto? ¿cómo borro toda la solución? Bueno, los menús los tengo en inglés, así que os cuento paso a paso:

  • En el explorador de soluciones (Solution Explorer) seleccionáis la solución que queréis borrar.
  • Después, en la barra de menú superior os váis a Archivo (File) y allí pulsáis Cerrar Solución (Close Solution).
  • Y para acabar, os vais a la carpeta donde teníais guardado el proyecto y allí borráis todos los archivos.

Y listo, solución borrada.

jQuery: pulsar F11 y evitar entrar en modo pantalla completa

Un cliente tenía una petición curiosa: quería que su web mostrara un menú al pulsar la tecla F11 (habían migrado de una aplicación de escritorio a una web y estaban acostumbrados a pulsar F11 y que saliera eso) ¿Qué ocurre? Pues que F11 es la tecla que activa el modo a pantalla completa del navegador.

¿Se puede hacer esto? Sí, tenía mis dudas pero sí. Tenía mis dudas porque las teclas de función no siempre pueden sobreescribirse para limitar el comportamiento del navegador (por ejemplo, creo que con F5 o con F1 no sería posible). Pero F11, al menos en IE10, Chrome y Firefox sí puede ser deshabilitada. Os dejo el código, es javascript usando la librería jQuery:

$(document).keydown(function(event) {
  event.preventDefault();
    if (event.keyCode == 122) { // 122 es el código de F11
      event.originalEvent.keyCode = 0;
      window.alert("no dejo maximizar");
    }
});

Lógicamente, en lugar del window.alert ahí ya pondríais el código que queráis ejecutar en vuestra aplicación web.

Chateando en LAN con Linux: el comando talk

Existe desde los años 80 en los sistemas basados en UNIX, y Linux no es una excepción, un programa en línea de comandos llamado talk. ¿Qué nos permite hacer este comando? Pues chatear con otro terminal.

Imagina que dos usuarios estáis conectados por ssh a un mismo sistema y queréis comunicaros. En principio, si tenéis talk instalado (si no viene por defecto en vuestra distro lo podéis instalar desde algún repositorio tal que # apt-get install talk talkd), bastaría con que pusieras el comando talk seguido del usuario, y si ambos tenéis talk instalado se le abrirían dos ventanas de terminal: una para escribir y otra en la que vería los mensajes.

En caso de querer chatear con un usuario de otro equipo la cosa sería similar, en ese caso en lugar del usuario lo que tendríais que mandar como parámetro al abrir talk es el usuario seguido de una arroba y el nombre o la ip de la máquina. Por ejemplo:

#ej 1
#usuario en el mismo equipo
talk donnie
#ej 2
#usuario en LAN
talk donnie@192.168.1.100

El comando mesg será en este caso el que nos permitirá decidir si un usuario puede enviarnos mensajes por talk o no a nuestro terminal.

#Si no queremos recibir
#mensajes por talk
mesg n
#si queremos permitirlo
mesg y

Es posible que los cortafuegos impidan la comunicación con talk: Revisa los puertos TCP y UDP 518 y 517, así que fíjate si están abiertos.

Y de esta forma tienes un primitivo chat en tu equipo, no es gran cosa, pero en ocasiones es útil.

Cifrado extremo a extremo en Whatsapp ¿de qué va esto?

Seguramente a muchos ayer os apareció un mensaje tal que así si sois usuarios de Whatsapp:

actualización seguridad whatsapp

Por culpa del mensaje me pasé el día hablando de esto, así que creo que lo mejor es comentarlo por aquí. Whatsapp añade cifrado de extremo a extremo ¿esto qué significa?

Bueno, empezamos recordando que Whatsapp en sus inicios no era una aplicación que destacara por su seguridad ya que enviaba sus mensajes en texto plano. Las constantes publicaciones sobre los fallos de seguridad del popular servicio de mensajería llevaron a que en 2011 la compañía se decidiera a mejorar la seguridad aplicando un sistema de cifrado en tránsito. Esta solución evitaba que un atacante pudiera ver los mensajes mientras se enviaban, pero no protegía los mensajes almacenados a nivel local.

Ya a finales de 2014 Whatsapp anunció que comenzaría a aplicar un sistema de cifrado extremo a extremo, o end to end, para mejorar la seguridad en ese sentido, delegando del desarrollo y la implementación en una tercera empresa: Open Whisper Systems. Dicha empresa se ha basado en el software de código abierto de su creación TextSecure, que fue la base para el software de mensajería seguro Signal (nota: un amigo mío, experto en seguridad, me recomienda encarecidamente dicho software).

El funcionamiento del nuevo sistema de seguridad es el siguiente: se crea una clave privada vinculada al dispositivo cada vez que se envía un mensaje, que sólo se almacena en dicho dispositivo. El mensaje es cifrado con una clave pública y sólo puede ser descifrado con dicha clave privada. De esta forma ni la propia compañía podría tener acceso a los mensajes, al menos en teoría (luego en la práctica ya veremos).

¿Cómo se activa? En principio viene activado por defecto en la última versión, así que si actualizáis ya lo veréis. Si queréis saber si lo tenéis activado os vais a los ajustes de Whatsapp:

ajustes cuenta whatsapp

Y ahí pulsáis en Seguridad:

Pestaña seguridad

Debería estar tal que así. Para que esto funcione el usuario con el que os comunicáis debe tener también el whatsapp actualizado. Para saber si podéis comunicaros con esa persona de forma segura podéis pulsar en su nombre para ver sus datos, y por allí os aparecerá un mensaje tal que así para confirmaros si la conexión está cifrada:

whatsapp confirma cifrado

Pulsando este código además podrás confirmar que los mensajes se están enviando cifrados. Si el contacto está presente físicamente puedes hacerlo mediante el escaneo de un código QR en pantalla, y si no mediante la comparación de un código de 60 dígitos que aparece bajo el código.

En resumen, que Whatsapp es sensiblemente más seguro que antes de esta actualización, y probablemente en cuatro días tendrá una pelotera tremenda con el FBI por esto, sobre todo tras la polémica que también tuvieron con Apple. ¿Significa esto que puedes mandar fotos tuyas en pelotas por este medio? Yo no te lo recomendaría.

Javascript: convertir los saltos de línea de un textárea en un salto de línea html.

Se daba el caso hoy de que tenía que recoger el texto extraído de un textarea, mediante javascript, y mostrarlo dentro de un div al pulsar un botón en pantalla. ¿Y qué problema había? Que los saltos de línea desaparecían. ¿Cómo se puede solucionar? De dos formas: Hay con vertir el caracter ASCII(10), que se representa con el símbolo \n en una etiqueta br, o como otra opción meter el texto entre etiquetas pre para que sea interpretado por el navegador como texto preformateado. Veamos el ejemplo:

//usando jQuery
var texto = $('#idDelTextarea').val();
texto = texto.replace(/\n/g, "<br />");
$("#idDelDiv").html(texto);

//sin jQuery
var texto = document.getElementById("idDelTextarea").value;
texto = texto.replace(/\n/g, "<br />");
document.getElementById("idDelDiv").innerHtml = texto;

//con <pre>
//recogemos el texto con alguno de los métodos anteriores
texto = "<pre>" + texto + "</pre>";
//y lo metemos en el div

PostgreSQL: Consulta para saber en qué tabla está una columna

Lo hicimos en Oracle, en SQL-Server y en MySQL. No podíamos dejarnos PostgreSQL ¿cómo podemos saber en qué tabla está una columna sabiendo sólo el nombre de dicha columna?

Pues con una consulta sobre la vista columns, que contiene información sobre las columnas de todas las tablas y vistas. Veamos cómo sabríamos en qué tabla está la columna «NombrePaciente» (por poner un ejemplo práctico):

Select table_name
from columns
where column_name like 'NombrePaciente'

En vuestro caso cambiáis NombrePaciente por el nombre de columna que corresponda.

OsmAnd: alternativa a GoogleMaps en Android

Hace un tiempo que Google permite descargar mapas de GoogleMaps para utilizarlos offline, pero si no quieres depender de la empresa del buscador existe una alternativa Open Source, bajo licencia GPLv3: OsmAnd.

OsmAnd es un software para consulta de mapas y para navegación sirviéndose de GPS que se sirve de los mapas de Open Street Maps. Puedes encontrar dos versiones en el Play Store: una gratis, con algunas limitaciones, y una de pago. Por otra parte también está disponible completa en el repositorio F-Droid y en github puedes obtener el código del proyecto.

OsmAnd Compostela

Como navegador funciona muy bien: te da la opción de descargar los mapas completos o, si quieres ahorrar espacio y consumo de datos, sólo las carreteras. Al igual que GoogleMaps te irá guiando por voz y recalculará la ruta en caso de un cambio en el itinerario. Permite señalar puntos de interés en el mapa, buscar lugares ya sea por dirección o por coordenadas y, en la versión completa, obtener datos interesantes de la zona extraídos de la Wikipedia almacenándolos para su uso offline, una más que interesante funcionalidad si lo quieres utilizar para hacer turismo . En determinadas zonas incluso te avisará si estás superando el límite de velocidad en tu coche (esta funcionalidad creo que no está todavía disponible en todo el mapa, sólo en determinados puntos).

osmandstore

En las últimas versiones se le incluyeron interesantes opciones para rutas pedestres y ciclistas, una cantidad de rutas que aumenta dado que los usuarios pueden subir sus rutas GPX directamente desde la aplicación. De hecho la aplicación permite un modo de visualización diferente para rutas ciclistas. Y en algunhas ciudades se ha incluído la información sobre paradas y frecuencias del transporte público.

OsmAnd es un proyecto colaborativo todavía en expansión y tiene ciertas cosas que pulir. De hecho muchos usuarios señalan que HERE, que fue elegido mejor navegador del 2015 por Autobild, todavía ofrece unas opciones mejores. Pero creo que se trata de un proyecto interesante que seguir y con el que intentar colaborar, aunque sea un poquito. La versión completa está cargada de funcionalidades interesantes, e incluso la gratuíta es muy completa. Tal vez le pueda echar en falta que puede resultar poco intuitivo al primer uso, teniendo una curva de aprendizaje un pelín más marcada que GoogleMaps. Por el resto, según mi experiencia, chapeau.