Crear una gráfica de dispersión con LibreOffice Calc

Toda buena hoja de cálculo tiene una utilidad de creación de gráficas y LibreOffice no va a ser menos. La suite ofimática libre nos permite crear, con su programa Calc, gráficas para dar color y hacer más visuales nuestras representaciones de datos.

Dispersión datos

Lo primero es meter los datos en las dos columnas. Para nuestro ejemplo vamos a hacer una gráfica que muestra la relación entre la distancia recorrida y el tiempo invertido, que mostrará la evolución de la velocidad. La columna X muestra el tiempo invertido y la columna Y la distancia recorrida en dicho tiempo. En dicha gráfica podremos comprobar como el cansancio va haciendo que en cada intervalo se vaya recorriendo menos distancia.

Tras insertar los datos lo siguiente es irnos al menú Añadir->Objeto->Gráfica y en los distintos modelos que podemos elegir escogemos Dispersión:

Asistente gráfica 1

Tras eso escogemos el rango de datos seleccionando las dos columnas donde hemos metido los datos. En el siguiente paso, donde hay que confirmar las series, ya nos debería traer los valores por defecto de ambas columnas. En caso contrario tendrías que seleccionarlas también.

Asistente Gráfica 2

Finalmente le damos un título a la tabla y también a ambos ejes de la misma, para que sea evidente su función.

Asistente de la gráfica 4

Y tras completar todos los pasos ya tenemos nuestra gráfica de dispersión lista y podemos visualizarla.

Gráfica evolución

Anuncios

Evitar el mensaje de error “No está permitido guardar cambios” cuando intenta modificar una tabla en SQL Server

A veces al realizar ciertas modificaciones sobre una tabla, como cambiar el tipo de datos o la precisión de una columna, el orden de la mismas o al agregar una nueva recibimos un mensaje de error de SQL-Server que nos dice que “No está permitido guardar cambios porque no se permiten cambios que obliguen a crear tablas de nuevo“. ¿Hay alguna forma de modificar esto y permitir el cambio? Sí, hay dos opciones.

La primera es no utilizar la interfaz gráfica para hacer la modificación sino usar instrucciones SQL. Si por ejemplo queremos cambiar la precisión y permitir valores nulos en una columna de la tabla podríamos hacerlo así:

alter table Clientes alter column ObservacionesCliente nvarchar(500) NULL

Otra solución es desactivar la opción de Impedir guardar cambios que requieren volver a crear tablas en el entorno gráfico. En el menú Herramientas, hacemos click en Opciones y, dentro de ese menú, vamos al submenú Diseñadores. Allí desactivamos la opción Impedir guardar cambios que requieren volver a crear tablas y, a continuación, hacemos click en Aceptar para guardar los datos. Os dejo una captura de dicho menú:

SQL-Server Opciones Diseñadores

Expresiones regulares en Javascript para validar fecha u hora.

Vamos con una entrada rápida en Javascript. Ya hace años que revisamos el tema de las expresiones regulares, pero hoy vamos a ver un ejemplo concreto ¿Cómo hago una expresión regular que me valide un formato de fecha dd/mm/aaaa?

Pues sería esta:
/^\d{1,2}\/\d{1,2}\/\d{2,4}$/

Ok ¿Y como valido un formato de hora tipo hh:mm:ss? Pues con esta:
/^(0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$/

Premios Simpson NBA 2018

Hasta que no acabe la temporada la NBA no repartirá sus premios oficiales, pero ya sabéis que este blog durante los playoff reparte los PREMIOS SIMPSON NBA 2018!!!! En este enlace podéis ver a los ganadores del año pasado… y aquí van los de esta temporada regular:

  • Premio anual Montgomery Burns por su sobresaliente labor en el campo de la Excelencia: El año pasado le veía un poco perdido tras abandonar Atlanta, donde había discurrido toda su carrera. Pero este año Al Horford se ha reconvertido en un jugador clave para los Celtics similar a lo que ha sido Draymond Green en los Warriors: defiende posiciones interiores y exteriores, es el Celtic que más tiros sale a defender, cierra a los rivales para permitir el rebote de sus compañeros, en ataque es capaz de generar juego y situaciones de ventaja como si de un base se tratara… Dejo de lado los números clásicos, para mi Horford ha sido el jugador de la campaña.

  • Premio Matlock: Va a cumplir 41 años en julio y nos volvemos a preguntar ¿Habrá visto esta temporada su último Maaaaatlock Manu Ginobili? Pues esperemos que no, porque a pesar de los años y la pérdida de físico que implican él sigue siendo un jugador productivo en ambos lados de la cancha: por su técnica, por su inteligencia táctica, por su intensidad. El propio Kerr se lo pidió en los Play off, queremos un año más de Manu.

  • Premio Hank Scorpio: Danny Ainge. Personalmente, creo que lo que le hizo a Isaiah Thomas estuvo mal viéndolo desde el punto de vista personal, pero desde el punto de vista del negocio le salió redondo: se hizo con una estrella de la liga como Irving sacrificando a un Thomas muy tocado físicamente y a un buen jugador como Crowder,  en el mercado de agentes libres también pescó bien con Hayward (aunque se lesionara en el primer partido, pero eso ya escapa del control de la dirección deportiva), apostó por Rozier y Smart para no hipotecarse con la renovación de Avery Bradley y le traspasó por un Morris que ha rendido bien, y finalmente la jugada de intercambiar puestos en el draft con los Sixers también parece que de momento ha sido muy inteligente (Tatum liderando en anotación al equipo en playoff vs un Fultz que se pasó más de medio año con problemas de espalda y que ha sembrado dudas).
  • Premio yo me llamo Ralph: En este vídeo hay un pase de Julius Randle que… en fin, judgad vosotros mismos.

  • Premio a la persona que menos se ha esforzado para llegar hasta aquí: John-Blair “J. B.” Bickerstaff se encontró con un equipo plagado de lesiones y un proyecto que se caía a pedazos tras la destitución del mediocre Fizdale. ¿Qué se le exigía al joven JB? Perder todo lo posible de cara al draft. Y así lo hizo, presión 0.
  • Premio Tiborowski: Repite el ganador del año pasado, Giannis Antetokounmpo ha firmado otro año para estar en las quinielas por el MVP y ha sido el jugador nacido fuera de los EEUU con mejor rendimiento, una bestia capaz de finalizar (el mejor anotador hoy por hoy cerca del aro), generar juego, rebotear y defender. Un jugador de impacto en ambos lados de la pista. Parece que sus Bucks no acaban de despegar ¿Acabará cambiando de aires o llegará algún entrenador (o entrenadora) que cambie el rumbo mediocre y desencantado que marcó la era Kidd para este joven equipo?

  • Premio Nelson Muntz: Todavía está fresca en mi retina la imagen de Marcus Smart echándose al cuello de JR Smith tras una falta flagrante muy fea del jugador de Cavs sobre Al Horford. Ramón trecet llama a Smart “el centurión de los Celtics”, siempre presto a defender a sus compañeros y con una actitud irreprochable en defensa. Es cierto que como finalizador en ataque es muy flojo pero ¿se acuerda alguien de sus bajos porcentajes cuando salta a intentar un tapón a dos manos? ¿cuando maltrata su propio cuerpo para defender a jugadores más altos y pesados en situaciones de pick&roll? ¿cuando persigue como un perro de presa a su rival? Smart no es un estilista, pero es un tío cuyo juego se basa en la entrega y la dureza, como lo fueron en el pasado gente como Dennis Rodman o un Tony Allen de quien sería justo sucesor cuando se retire.

  • Premio Bombardeo: Dos años seguidos el premio se lo ha llevado Brad Stevens, pero esta temporada dejamos Boston para irnos a Utah a reconocer el trabajo del coach Quin Snyder. Un alumno aventajado de leyendas como Mike Krzyzewski, a quien asistió en Duke, Ettore Messina, con quien trabajó en el CSKA, o Greg Popovich, de quien no fue asistente pero sí aprendió sus métodos durante su paso por la liga de desarrollo entrenando a los Austin Spurs. Este año el papel era complicado, tras la marcha de Hayward y Georghe Hill había quien decía que no tenían potencial para alcanzar los playoff en el Oeste… y al final no solo entraron sino que se cargaron a Oklahoma. Un equipo donde la estrella es un pivot especialista en defensa, el peso anotador recae sobre un novato y donde la manija ha caído en la mano de un Ricky Rubio que ha tenido que reconvertir su juego de forma exitosa.
  • Premio Homero: Cambiaba de aires Ricky Rubio en un fichaje no exento de polémica, era un jugador muy querido en Minneapolis por su trabajo comunitario, y en ese traslado a Salt Lake City veía un cambio de filosofía al jugar para un entrenador muy distinto a Thibodeau. Este cambio nos ha mostrado a un Ricky que ha firmado sus peores números en asistencias y robos, dos categorías donde acostumbraba a estar entre los cinco mejores de la liga, pero que a su vez ha logrado sus mejores dígitos en anotación y porcentaje de tiro. Y que la bajada numérica en asistencias y robos no resulte engañosa: ha estado mejor tanto a la hora de manejar el ritmo de los partidos y distribuir juego como en defensa, más agresivo y sólido (recordemos aquí lo que hablábamos en el artículo sobre el porcentaje de robos.)

  • Los Excitantes de Springfield: Hemos quitado este año el premio Qué Homer he Tenido a la canasta más afortunada y añadimos el quinteto que formará Los Excitantes de Springfield. Este año es evidente que empezamos con el ganador del Premio anual Montgomery Burns por su sobresaliente labor en el campo de la Excelencia: Al Horford, que sería el pivot e iría acompañado en mi quinteto por Giannis Antetokounmpo y Kevin Durant en los aleros y por el rejuvenecido Chris Paul y el salto de calidad de Victor Oladipo en las posiciones exteriores.

Linux: script para crear usuarios automáticamente con contraseñas aleatorias desde una lista dada en CSV.

Vamos con un script para automatizar tareas. Tenemos un CSV, le llamaremos user.csv, con los siguientes datos: Nombre, Primer Apellido y Usuario. Algo tal que así

Manuel,Garcia,ManuG1
Pedro,Rodriguez,PredroR2
Maria,Abalo,MariaA45
Josefa,Perez,JosefP21
Marta,Rios,MartaR91

La idea del script es la siguiente: recorre el fichero csv y crea a los usuarios con ese nombre y apellido y ese código de usuario. Asigna una contraseña generada de forma aleatoria y redirige la salida a un fichero para poder notificar a los usuarios creados su usuario y contraseña.

#!/bin/bash

OLDIFS=$IFS
IFS=","

while read firstname lastname userid 
do 
     PS=$(openssl rand -base64 12)   
     useradd -c "${firstname} ${lastname}" -p $PS -d /home/"${userid}" -s /bin/bash "${userid}"            
     echo "Usuario: ${userid} - Contraseña: $PS ....." >> resultado.txt 
done < user.csv

La opción de crear los usuarios con contraseña no es recomendable en todos los ámbitos por temas de seguridad, lo he hecho en este caso porque el ejemplo real en el que lo hice lo había requerido así el cliente, pero según la política y el contexto de seguridad no es algo recomendable en todos los casos porque podrían ser vistas por algún usuario no autorizado, así que aunque la generes así es mejor obligar a los usuarios a cambiarla. Para crearlo sin contraseña en la instrucción useradd quita el parámetro -p $PS, la línea de encima que genera el password (que ya sería inútil) y el $PS en la salida.

Obtener edad desde una fecha en Javascript

Hace un tiempo habíamos visto cómo obtener una edad desde una fecha de nacimiento en PostgreSQL, en MySQL y en MS SQL-Server. ¿Y en javascript? Vamos a ver tres funciones:

En la primera función el parámetro que recibiremos será una cadena con una fecha en formato YYYYMMDD (por ejemplo 20180211 para hoy):

function terIdade(cadeaData) {
    var hoxe = new Date();
    var nacemento = new Date(cadeaData);
    var idade = hoxe.getFullYear() - nacemento.getFullYear();
    var m = hoxe.getMonth() - nacemento.getMonth();
    if (m < 0 || (m === 0 && hoxe.getDate() < nacemento.getDate())) {
        idade--;
    }
    return idade;
}

Otra opción, pasando el mismo parámetro, es conseguir el resultado el milisengundos y operar con él para obtener la edad. Para eso dividiremos la diferencia entre fechas entre 1000*60*60*24*365.25:

function terIdade(cadeaData) {
    var nacemento = new Date(cadeaData);
    var data = new Date();
    var dif = data-birthdate;
    var idade = Math.floor(dif/31536000000);
    return idade;
}

La tercera opción sería no mandar a la función una cadena con la fecha, sino separados el año, el mes y el día (pasándoselos como enteros, no como cadenas). Y para el resto haríamos más o menos la misma operación que en el ejemplo.

function terIdade(ano,mes,dia) {
    var hoxe = new Date();   
    var idade = hoxe.getFullYear() - ano;
    var m = hoxe.getMonth() - mes;
    if (m < 0 || (m === 0 && hoxe.getDate() < dia)) {
        idade--;
    }
    return idade;
}

Libre Office 6 ya está disponible

Viene cargadito de cambios LibreOffice 6. Ayer, 31 de enero de 2018, The Document Foundation liberó la última versión de la conocida suite ofimática libre para sistemas operativos Windows, MacOS y Linux.

Si tenéis una manzanita necesitaréis al menos la versión 10.9 del sistema operativo instalada en vuestro equipo. En caso de usuarios de Windows ya no hay soporte en esta versión para Windows XP o para Vista, siendo Windows 7 SP1 el sistema operativo mínimo requerido. En el caso de Linux os puedo dar una lista de requisitos más detallada:

  • Kernel 2.6.18 o superior.
  • glibc2 versión 2.5 o superior.
  • gtk versión 2.10.4 o superior.
  • 256 MB de RAM como mínimo.
  • Al menos 1.55 gigas de espacio en disco duro.
  • Entorno de escritorio (GNOME o KDE).

Entre las múltiples novedades, aparte de la interfaz y de las mejoras en la integración de LibreOffice Online (la versión cloud de LibreOffice), encontramos nuevas plantillas para Impress, nuevas tipografías, mejoras en el corrector gramatical, nuevos estilos para tablas y formularios en Writer, la posibilidad de exportar directamente a ePUB los documentos o la posibilidad de firmarlos con OpenPGP.

Ya puedes descargarlo desde la página del proyecto.