Comprobar la velocidad de conexión desde línea de comandos en Linux.

Hay múltiples webs que nos permiten ejecutar tests de velocidad, pero a veces estamos administrando un servidor sin entorno gráfico y resulta útil poder lanzar un comando que nos de el resultado. Con la siguiente línea puedes hacerlo sin tener que instalar nada:

curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -

Os dejo una captura del resultado desde casa de mis padres.

Teste de velocidad comandos

Calcular la mediana en SQL-Server

Como no me apetece meterme en una discusión infructuosa con un individuo *troll ultraderechista sexualmente frustrado* voy a aprovechar la hora de comer en el trabajo para comentaros cómo podemos calcular la mediana de una serie de números en SQL-Server. Ya vimos no hace mucho el significado de este término y también cómo podemos calcularlo en Libre Office Calc.

Si vamos a trabajar con SQL-Server 2012 o superior la función PERCENTILE_DISC() nos servirá, sin tener que hacer nada más. Es una función que calcula un percentil concreto para una serie de valores ordenados de un conjunto de filas, y su sintaxis es:

PERCENTILE_DISC ( número ) WITHIN GROUP ( ORDER BY exp_ordenación [ ASC | DESC ] )
OVER ( [ partido_por ] )

Aquí os copio sus argumentos de la web de documentación de Microsoft directamente, donde también tenéis ejemplos de código para SQL-Server y para Azure:

  • número :El percentil que se va a calcular. El valor debe estar entre 0,0 y 1,0.
  • WITHIN GROUP ( ORDER BY exp_ordenación[ ASC | DESC ]):Especifica una lista de valores para ordenar y cuyo percentil se va a calcular. Solo se permite una exp_ordenación. El criterio de ordenación predeterminado es ascendente. La lista de valores puede ser de cualquiera de los tipos de datos válidos para la operación de ordenación.
  • OVER ( partido_por ):Divide el conjunto de resultados generado por la cláusula FROM en particiones a las que se aplica la función de percentil. Para más información, vea Cláusula OVER (Transact-SQL). Las cláusulas y no se pueden especificar en una función PERCENTILE_DISC.

De esta forma PERCENTILE_DISC(0.5) calculará la mediana del cojunto de filas que estamos analizando.

Pero ¿qué pasa si trabajamos con una versión anterior a SQL-Server 2012? Te parecerá algo prehistórico, pero en muchos sitios sigue funcionando SQL-Server 2008 o 2005. ¿Cómo lo hago ahí donde no dispongo de la función PERCENTILE_DISC()?

Bueno, ahí he hecho una solución un poco picapedrera, porque según el conjunto de datos que tengamos las hay bastante mejores. Esta realmente consume muchos recursos, pero por otra parte es universal. Si la tabla cuenta con una columna de Identidad la cosa puede ser más eficiente:

Básicamente he usado una tabla llamada Actividades, donde hay una columna numérica llamada Importe. Para calcular la mediana de este importe vamos a sacar los dos valores centrales dividiendo las filas en dos mitades, ordenando una de forma descendente y otra ascendente. Tras eso los sumamos y hacemos la media de la suma.

Select ((
    Select Top 1 Importe
    From   (
                    Select  Top 50 Percent Importe
                    From    Actividades
                    Where   Importe Is NOT NULL
                    Order By Importe
                    ) As A
    Order By Importe DESC) + 
    (
    Select Top 1 Importe
    From   (
                    Select  Top 50 Percent Importe
                    From    Actividades
                    Where   Importe Is NOT NULL
                    Order By Importe DESC
                    ) As A
    Order By Importe Asc)) / 2 as MedianaImportes

Configurar las combinaciones de teclas en Virtual Box

Si estás usando Virtual Box y no has tocado las combinaciones de teclas de la máquina seguramente te hayas frustrado al intentar hacer la combinación de teclas Ctrl+Alt+Supr, o al pulsar Ctrl+C para copiar un fichero y ver que de repente te cambia el tamaño de la pantalla. El visor de Virtual Box tiene una serie de comandos propios y la tecla anfitrión por defecto es Ctrl Derecha, pero esto puede configurarse:

En la parte superior te vas a Archivo->Preferencias, desde donde te abrirá una nueva ventana. En la columna izquierda de dicha ventana pulsas Entrada y en el menú que te abrirá vas a la pestaña Máquina Virtual. Aquí tienes una captura de la ventana.

Configuración VirtualBox

Ahí puedes modificar la tecla anfitrión por defecto y poner una que uses menos, además de poder definir las combinaciones como más nos plazca o habilitar algunas que no vienen por defecto.

SQL-Server: Reiniciar el valor de una columna de identidad

Imaginemos que hemos borrado todos los registros de una tabla, en SQL-Server, que tenía definida una columna de identidad como clave primaria. Ahora queremos que las nuevas inserciones no comiencen desde el último Id borrado sino desde el principio ¿Cómo lo hacemos? Es muy simple:

DBCC CHECKIDENT ('NuestraTabla', RESEED, 1);

Vale, pero ¿y si no hemos borrado todos los valores sino, por ejemplo, solo un 20% de ellos? ¿Cómo hacemos para que empiece desde el valor máximo? Pues con este método lo haríamos:

DBCC CHECKIDENT ('NuestraTabla', RESEED, 1);
DBCC CHECKIDENT ('NuestraTabla', RESEED);

De esta forma le ponemos el valor a 1 y luego el segundo comando pondrá automáticamente el valor máximo de la tabla.

¿Y si hemos metido manualmente un valor en la Id, desactivando el chequeo de identidad para la inserción, mayor que el que tocaba y queremos que siga desde ahí?

DBCC CHECKIDENT ('NuestraTabla', RESEED);

Pues de nuevo invocamos la función sin ningún valor definido.

Cifrar una máquina virtual de Virtual Box

Virtual Box nos permite dar un extra de seguridad a nuestras máquinas virtuales cifrando sus discos duros, recurriendo al algoritmo de cifrado simétrico AES, dándonos a elegir entre claves de 128 bits y de 256 bits.

Para ello seleccionamos en la pantalla principal de Virtual Box la máquina que queremos cifrar y pulsamos el botón de Configuración.

Virtual box

Allí nos vamos a la pestaña Disk Encryption, marcamos el check de Enable Disk Encryption, elegimos en el desplegable el tipo de cifrado y finalmente definimos una contraseña.

Cifrar Unidad

Tras aceptar comenzará el cifrado de los discos de la máquina elegida. Una vez terminado cuando la iniciemos nos pedirá la contraseña para continuar. Si queremos deshacer el cifrado basta con desmarcar el check de Enable Disk Encryption y poner la contraseña cuando nos la pida.

Diferencia entre muestra y población.

Población y Muestra son dos términos usados en estudios de estadística, similares y relacionados. Por dicha similitud tienden a ser confundidos, por lo que es importante que sepamos diferenciarlos para no tomar, literalmente, la parte por el todo.

La población, también llamada universo, es un conjunto de elementos sobre los que se realizan estudios y observaciones. Se trata de una variable o magnitud aleatoria con unas determinadas características comunes. Es, en resumen, el conjunto formado por todos los elementos a estudiar. Pero hay casos en los que el total de la población adquiere una magnitud demasiado extensa para ser estudiada. Por ejemplo, si queremos hacer un estudio sobre la salud cardiovascular en la Unión Europea no podemos pretender usa datos de todos los ciudadanos con historiales médicos.

La muestra es una selección abarcable de parte de una población para su estudio. Por definición, la muestra se siempre una parte de la población. Esta debe ser representativa, por lo que el método de selección debe ser adecuado (preferiblemente aleatorio) para evitar acabar teniendo un muestra sesgada que nos de un resultado irreal (decía un catedrático en estadística que un muestreo suficientemente torturado puede demostrar cualquier cosa). Siguiendo el ejemplo anterior, si hacemos el estudio sobre salud cardiovascular eligiendo solo a gente de entre 20 y 30 años y lo repetimos después con gente de más de 70, el resultado obtenido será radicalmente distinto.

Si la selección del muestreo es adecuada el resultado del estudio sobre una muestra será más preciso que al realizarlo sobre el total de la población, dado que trabajamos sobre un conjunto de datos más pequeño y esto nos permitirá minimizar errores.

En resumen: La población es el total de individuos o elementos que queremos estudiar y la muestra es una selección aleatoria de elementos de esa población que utilizaremos para trabajar de forma más precisa.

Numerar de forma automática los títulos en Libre Office Writer

Seguimos con las entradas sobre ofimática, que es uno de los temas que van a tener una ampliación en el blog en los próximos meses. ¿Cómo podemos numerar de forma automática los títulos en Libre Office Writer?

Vamos a empezar creando un documento sin trastear en los estilos, poniendo la lista de títulos como simples líneas. Después aplicaremos estilos para tener tres niveles:

Texto ejemplo

Si seleccionamos el título y pulsamos F11 abriremos el menú de Estilos y Formato.

Menú estilos

Tras eso seleccionamos el texto que queremos formatear para el primer nivel y le damos estilos.

Configurando estilos

El el botón de la derecha desplegamos el menú y elegimos Nuevo Estilo a Partir de Selección. Ahí crearemos el estilo para el Título A (le he puesto A ya que Título 1 es uno de los predeterminados por el sistema).

Nuevo eStilo
Pulsamos este botón situado a la derecha y elegimos Nuevo Estilo desde Selección

Repetimos esa operación para definir un estilo para los tres niveles de título que queremos (en tu caso tantos como quieras anidar, claro).

Títulos

Y finalmente aplicamos esos estilos al resto de líneas. Nos quedará en principio algo así.

Títulos formateados

El siguiente punto es crear un esquema de numeración. Nos vamos a Herramientas->Numeración de Capítulos y desde ahí vamos a la pestaña Numeración. Configuraremos así el primer nivel: En Estilo de párrafo seleccionamos el estilo de párrafo Título A, en Número ponemos el formato de numeración que queremos usar, en Estilo de Carácter lo he dejado en ninguno. Los campos Antes y Después nos permiten elegir un carácter que poner precediendo o antecediendo al número y finalmente tenemos Empezar En donde decidimos desde qué numero se empieza a contar.

Esquema Numeración

Aplicamos estilos a los tres niveles de título y, si queremos definir una sangría podemos hacerlo desde la pestaña Posición.

Una vez acabado y aceptado la numeración se aplicará directamente a los títulos que hemos configurado en el documento. El resultado final sería algo así:

Resultado final

SQL-Server: Usar Try…Catch en una transacción.

Desde SQL-Server 2008 es posible utilizar la instrucción Try…Catch. Estas instrucciones nos permiten implementar un mecanismo de control de errores: metemos un bloque de código dentro de la instrucción Try, para intentar ejecutarlo, y dentro de Catch metemos las instrucciones para controlar la respuesta en caso de error.

La sintaxis básica de un Try…Catch en SQL-Server es la siguiente:

BEGIN TRY  
     ---Bloque de código 
END TRY  
BEGIN CATCH  
     --Código en caso de error. 
END CATCH  

Cuando realizamos una transacción podemos exprimir al 100% la instrucción Try…Catch. La idea es la siguiente: Comenzamos la transacción, intentamos una acción en un bloque Try. En caso de que falle mostramos el error y ejecutamos un rollback para anular la transacción. En caso de éxito confirmamos la ejecución de la transacción.

Veamos un código de ejemplo:

BEGIN TRANSACTION;  --Comienza

BEGIN TRY  --Aquí empieza el try
    Insert into Ejemplo(Id,Nombre) values(22,'Manuel');
    Delete From Espera Where Nombre = 'Manuel' 
--Intentaremos esas dos acciones
END TRY  
BEGIN CATCH  
--El primer paso en el Catch
--Será recoger y mostrar
--Todos los errores
    SELECT   
        ERROR_NUMBER() AS ErrorNumber  
        ,ERROR_SEVERITY() AS ErrorSeverity  
        ,ERROR_STATE() AS ErrorState  
        ,ERROR_PROCEDURE() AS ErrorProcedure  
        ,ERROR_LINE() AS ErrorLine  
        ,ERROR_MESSAGE() AS ErrorMessage;  
--Si hay transacción abierta
--Hacemos un rollback sobre ella
--Para anularla
    IF @@TRANCOUNT > 0  
        ROLLBACK TRANSACTION;  
END CATCH;  
--Fuera del bloque vamos a
--comprobar que haya transacción abierta.
--Si la hay es que no tuvo que ir por el CATCH
--Por tanto confirmamos.
IF @@TRANCOUNT > 0  
    COMMIT TRANSACTION;  
GO  

Calcular media, mediana y moda con Libre Office Calc

Bueno, ayer veíamos cuales eran las definiciones y diferencias entre media, mediana y moda y hoy vamos a ver cómo aplicarlas en Libre Office Calc. Para ello he puesto 15 valores numéricos distintos en una hoja:

Ejemplo con varios valores

Para calcular la mediana tenemos la función MEDIANA(),que recibe como parámetros un conjunto de valores. En el ejemplo de la imagen habríamos hecho =MEDIANA(A1:A15) para que la calcule entre los valores de esas celdas.

Para la media tenemos dos funciones PROMEDIO() y PROMEDIOA(). ¿Qué las diferencia? Que PROMEDIO() ignorará lo valores que no sean numéricos mientras que PROMEDIOA() los tomará como un 0.

Finalmente para la moda también tenemos dos funciones: MODA.UNO() y MODA.VARIOS(). Como ya sabéis puede haber varias modas en un conjunto de valores. La función MODA.UNO() nos devuelve un valor, el inferior, y si no hay repeticiones envía un erorr. La función MODA.VARIOS() devuelve una matriz con todas las modas si la usamos en una fórmula matricial, en caso contrario se comporta como MODA.UNO().

Aquí os dejo una captura con los resultados. Podéis ver que PROMEDIO() y PROMEDIOA() dan resultado distintos porque la celda A10 tiene un valor textual en lugar de uno numérico:

Resultados

 

Diferencia entre media, mediana y moda

La media, la mediana y la moda son términos estadísticos que se usan para la comprensión de tendencias centrales cuando analizamos un conjunto de valores.

La media aritmética o promedio es especialmente útil cuando tratamos con distribuciones regulares. Se calcula mediante la suma de todos los valores observados dividida entre el número de observaciones. Pierde utilidad cuando se trata de distribuciones muy irregulares, con mucha diferencia. El ejemplo clásico de esto: si yo me como un pollo y tú no comes nada la media es que nos hemos comido medio pollo por cabeza.

La mediana es el valor numérico central de un conjunto de números, y es más útil cuando tratamos con distribuciones irregulares. Para su cálculo necesitamos ordenar toda la serie de valores de menor a mayor. Tras esto, en caso de que el número total de valores sea par, la mediana se calcula sacando el promedio de los dos valores centrales. En el caso de que sea una cantidad impar de valores la mediana será directamente el valor central.

Finalmente la moda es la incidencia más repetida en un conjunto de valores. Esto implica que puede haber más de una moda. Es útil cuando lo relevante es conocer el valor más común.

Veamos un ejemplo: imaginemos que tenemos un grupo de cinco amigas y vamos a calcular la media, mediana y moda de sus salarios anuales. Una cobra 12.000 euros, otra 15.000, otra 300.000 y hay dos que cobran 18.000.

La media sería el resultado de (12.000+15.000+300.000+18.000+18.000)/5, que es 72.600 euros. Como ves, al haber un valor tan alejado del resto dispara la media muchísimo.

Para la mediana vamos a ordenar los valores: 12.000|15.000|18.000|18.000|300.000. Al ser impar ya nos quedamos con el valor central, que sería 18.000 euros.

Finalmente para la moda miramos cual es el valor más repetido, que son también 18.000 euros ya que está dos veces en la lista.

Si crees que esto no es útil para el día a día piénsalo mejor, comprender bien estos conceptos nos permite abordar de forma más crítica muchas informaciones económicas que nos dan desde la prensa o desde los gobiernos.