Archivo para la categoría 'Informática'

Calculo de cuartiles en MySQL

Disclaimer: Este artículo se basa en la experiencia personal, y puede contener algún error. No debe ser utilizado en presencia de niños o bases de datos no controladas.

En estadística descriptiva, las medidas de posición no central permiten conocer otros puntos característicos de la distribución que no son los valores centrales. Entre las medidas de posición central más importantes están los cuantiles que son aquellos valores de la variable, que ordenados de menor a mayor, dividen a la distribución en partes, de tal manera que cada una de ellas contiene el mismo número de frecuencias.

Los tipos más importantes de cuantiles son:

* Los cuartiles, que dividen a la distribución en cuatro partes;
* Los quintiles, que dividen a la distribución en cinco partes;
* Los deciles, que dividen a la distribución en diez partes;
* Los percentiles, que dividen a la distribución en cien partes.

Fuente: Wikipedia.

Para los que ( como yo ) no tengan ni la más mínima idea de esto de la estadística, diremos solamente que los cuartiles son una medida que indican el valor por debajo del cual queda la parte indicada de los datos. Así, el valor del primer cuartil nos indica el punto en el que quedan por debajo el 25% de los datos totales analizados.

Por norma general, y salvo que estéis metidos en el negocio de la estadística, de la banca o vaya-usted-a-saber-que, y sobre todo si os dedicáis a la programación informática, tendréis que calcular, para una serie de valores, el primer, segundo y tercer cuartil.

Dado que la mejor forma de almacenar datos es utilizar una base de datos como MySQL, suena raro que este SGBD no incorpore una función para realizar este tipo de calculo ( sobre todo porque Excel si que tiene la función CUARTIL ), aunque basta con una petición un poco elaborada para obtener lo que necesitamos.

Presuponemos una tabla llamada datos, formada por un único campo ( valores ), que contiene tantos registros como necesitemos. Para el calculo de cuartiles de estos datos, podemos utilizar la siguiente petición SQL:

SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(f.v ORDER BY f.v SEPARATOR ','),',',25/100*COUNT(*)+1),',',-1) AS cuartil_1,
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(f.v ORDER BY f.v SEPARATOR ','),',',50/100*COUNT(*)+1),',',-1) AS cuartil_2,
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(f.v ORDER BY f.v SEPARATOR ','),',',75/100*COUNT(*)+1),',',-1) AS cuartil_3
FROM (
SELECT valores as v
FROM datos
) AS f;

En el ejemplo, los valores de la tabla datos se extraen con una petición directa “SELECT valores as v FROM datos“, lo que nos permite utilizar cualquier tipo de petición para obtener los valores necesarios ( en mi caso ese SELECT contiene varios LEFT JOIN y condiciones multiples para ajustarlo a mi base de datos estadísticos ).

NOTAS VARIAS:

  • Los resultados entre nuestra búsqueda en una base de datos MySQL y los mismos valores en una hoja Excel pueden variar, debido a las diferentes formas en que estos sistemas llevan a cabo las operaciones.
  • Las búsquedas son extremadamente rápidas, aún utilizando un volumen de datos muy alto ( más de 12,000 registros en menos de un segundo ).
  • La petición en si seguramente se pueda optimizar bastante. Se aceptan sugerencias :D
  • Este artículo se basa en varias horas perdidas buscando por Internet e intentando comprender la estadística dichosa. Vayan por adelantadas mis disculpas por los posibles errores que puedan aparecer.

Soria, a la cabeza de la piratería.

Revisando uno de los cientos y cientos de correos pendientes, llego a esta asombrosa noticia, con su impactante titular:

La mitad de las tiendas venden software pirata

La noticia, de por si, es lo de siempre. Se vende mucho software pirata ( algo que todos sabemos ). Lo que me ha llamado la atención es el recuadro adjunto, con desglose de % de piratería en tiendas por ciudades, y la ganadora del premio “Ciudad mas pirata de España”: Soria, mi ciudad natal.

Para los que no tengan el “honor” de conocer esta ciudad, les haré un breve resumen. Una ciudad pequeña, donde la informática está en manos de amables dependientes que recién salieron del módulo de grado superior de Administración de Sistemas, y que por cierto llevan toda su vida instalando Sistemas Operativos piratas a amigos y familiares.

No es, en este caso, una cuestión de mala fe. Es, mas bien, un sencillo caso de las mas brutal ignorancia en lo que a  la ética mercantil se refiere, en una ciudad donde se destina mas dinero en patrocinar el equipo de fútbol local, que en tener una buena universidad.

Un nuevo récord para Soria, quien lo duda :D

Como recordar la url de del.icio.us

Del.icio.us es un sistema de bookmark ( marcadores o favoritos ) vía web, muy utilizado, y extremadamente útil.

Si alguna vez habéis intentado acceder a del.icio.us y no recodáis el nombre del dominio ( que tiene tela ), hay algunos trucos útiles que pueden seros de ayuda:

  1. En Firefox, basta con poner el nombre que creáis adecuado ( lo mas parecido posible ) en la barra del navegador. Al poner un nombre de dominio incompleto Firefox realizará una búsqueda automática en google usando la opción “Voy a tener suerte”.
  2. Si por el contrario estáis usando Explorer, la forma mas rápida de acceder es mediante la url http://www.delicious.com, a la que se accede de forma muy rápida, escribiendo delicious en la barra del navegador y pulsando Control+Enter.

Estos dos trucos serán de mucha ayuda para todos los que, como yo, son incapaces de recordar de primera mano la dirección, y en su lugar escriben cosas como:

el.icio.us dl.icio.us de.icio.us delicio.us del.cio.us del.iio.us del.ico.us del.ici.us del.icious del.icio.s del.icio.u ddel.icio.us deel.icio.us dell.icio.us del..icio.us del.iicio.us del.iccio.us del.iciio.us del.icioo.us del.icio..us del.icio.uus del.icio.uss edl.icio.us dle.icio.us de.licio.us deli.cio.us del.ciio.us del.iico.us del.icoi.us del.ici.ous del.iciou.s del.icio.su e.licio.us d.licio.us delicio.us de.icio.us de.lcio.us de.liio.us de.lico.us de.lici.us de.licious de.licio.s de.licio.u dde.licio.us dee.licio.us de..licio.us de.llicio.us de.liicio.us de.liccio.us de.liciio.us de.licioo.us de.licio..us de.licio.uus de.licio.uss ed.licio.us d.elicio.us del.icio.us de.ilcio.us de.lciio.us de.liico.us de.licoi.us de.lici.ous de.liciou.s de.licio.su eli.cio.us dli.cio.us dei.cio.us del.cio.us delicio.us deli.io.us deli.co.us deli.ci.us deli.cious deli.cio.s deli.cio.u ddeli.cio.us deeli.cio.us delli.cio.us delii.cio.us deli..cio.us deli.ccio.us deli.ciio.us deli.cioo.us deli.cio..us deli.cio.uus deli.cio.uss edli.cio.us dlei.cio.us deil.cio.us del.icio.us delic.io.us deli.ico.us deli.coi.us deli.ci.ous deli.ciou.s deli.cio.su eli.ci.ous dli.ci.ous dei.ci.ous del.ci.ous delici.ous deli.i.ous deli.c.ous deli.cious deli.ci.us deli.ci.os deli.ci.ou ddeli.ci.ous deeli.ci.ous delli.ci.ous delii.ci.ous deli..ci.ous deli.cci.ous deli.cii.ous deli.ci..ous deli.ci.oous deli.ci.ouus deli.ci.ouss edli.ci.ous dlei.ci.ous deil.ci.ous del.ici.ous delic.i.ous deli.ic.ous deli.c.ious deli.cio.us deli.ci.uos deli.ci.osu elicio.us dlicio.us deicio.us delcio.us deliio.us delico.us delici.us delicious delicio.s delicio.u ddelicio.us deelicio.us dellicio.us deliicio.us deliccio.us deliciio.us delicioo.us delicio..us delicio.uus delicio.uss edlicio.us dleicio.us deilcio.us delciio.us deliico.us delicoi.us delici.ous deliciou.s delicio.su elico.us dlico.us deico.us delco.us delio.us delic.us delicous delico.s delico.u ddelico.us deelico.us dellico.us deliico.us delicco.us delicoo.us delico..us delico.uus delico.uss edlico.us dleico.us deilco.us delcio.us delioc.us delic.ous delicou.s delico.su elicous dlicous deicous delcous delious delicus delicos delicou ddelicous deelicous dellicous deliicous deliccous delicoous delicouus delicouss edlicous dleicous deilcous delcious deliocus delicuos delicosu elicious dlicious deicious delcious deliious delicous delicius delicios deliciou ddelicious deelicious dellicious deliicious deliccious deliciious delicioous deliciouus deliciouss edlicious dleicious deilcious delciious deliicous delicoius deliciuos deliciosu

Fuente: este artículo, que curiosamente es la primera url que aparece al buscar mal la url en google :D

Ordenar los logs de apache

Una de las tareas de un administrador de sistemas es controlar los logs ( archivos que guardan registros de todas las visitas en nuestro servidor web ), para, entre muchas otras cosas, generar estadísticas de visitas.

Si utilizamos mas de un servidor web para la misma página web, es necesario que los archivos de logs estén correctamente ordenados, ya que de lo contrario los resultados no serían fiables.

Para hacerlo en GNU/Linux, nada mas facil que utilizar el siguiente comando:

sort -t ‘ ‘ -k 4.9,4.12n -k 4.5,4.7M -k 4.2,4.3n -k 4.14,4.15n -k 4.17,4.18n -k 4.20,4.21n archivo_sin_ordenar > archivo_ordenado

Por supuesto, cambiaremos los nombres de archivo_sin_ordenar y archivo_ordenado por los nombres que queramos.

El mejor antivirus

Comentando el artículo de LifehackerFive Best Antivirus Applications“, surge de nuevo la eterna discusión sobre antivirus y sistemas operativos, que siempre puede dar pie a un buen debate.

Primero, creo que la lista de LifeHacker no es del todo adecuada, porque casi todos son shareware (Recordatorio: shareware no es lo mismo que gratis), cuando existen otras alternativas como ClamWin, de la que apenas se habla, y que funciona de maravilla.

Segundo, porque le pese a quien le pese, los virus es algo que solo tiene peligro en los sistemas operativos de Microsoft, y hay vida fuera de estos.

Tercero, porque la conciencia en Internet ha empezado a crecer poco a poco, y cada día en más difícil que un ordenador en manos de un usuario “normal” se infecte con un virus. Seguramente sea debido a un proceso de aprendizaje basado en “infectarme, formatear, infectarme, formatear”, ya que todas esas alertas de pánico que salen en las televisiones ( cada vez menos ), no sirven para absolutamente nada.

Sin embargo, aún hoy todavía existen casos de gente que se infecta, y más que por la habilidad de los creadores de virus ( que también ), estoy convencido de que es porque el sistema operativo donde se ejecutan, lo hace de una forma muy insegura, a pesar de que se ha hablado de ello miles de veces, y por muchas versiones distintas de Windows que saquen.

La moraleja, la misma de siempre: Pasaros a GNU/Linux :D

End 6 !

El proyecto end6.org pretende concienciar a la gente para que dejen de utilizar Micrososft Internet Explorer 6 y cambien a cualquiera de los navegadores libres existentes ( como Firefox u Opera ), o incluso actualicen a Internet Explorer 7.

De entre los ( muchos ) motivos para este cambio, el autor destaca:

  • Agujeros de seguridad
  • Cuelgues
  • Pésimo soporte a CSS
  • No hay navegación por pestañas

Yo personalmente ampliaría el proyecto para abolir de una vez por todas el peor navegador web de todos los tiempos ( y casi diría el único que ni es compatible con los estándares, ni quiere serlo ), sobre todo ahora que hay muchas otras opciones, y mucho mejores.

Conseguir que nos devuelvan el coste de Windows

En Linux.com han publicado este excelente artículo sobre como conseguir que nos devuelvan el coste de licencia del sistema operativo Microsoft Windows, que suele venir instalado en absolutamente casi todos los equipos nuevos.

Aunque el artículo está en ingles, es de fácil lectura, y los consejos que da son realmente valiosos, como por ejemplo:

  • Debes concienciarte de que el proceso ( por desgracia ) llevará tiempo.
  • NUNCA aceptes la licencia de Windows que aparece al arrancar por primera vez el equipo. Si lo haces, perderás cualquier opción de devolución.
  • Se paciente, y sobre todo, educado.

Una de las cosas que me llaman la atención, es que mucha gente no lleva a cabo este proceso, primero por la complicación, y segundo por que lo obtenido tampoco es que sea mucho. Sin embargo, como el propio autor dice, los usuarios de Software Libre obtienen un descuento de algo que les obligan a usar, y no necesitan, y por otro lado, si todos aquellos usuarios de software libre que se encuentren en la misma tesitura lo hicieran, seguramente el procedimiento se simplificaría mas aún.

Arreglar problemas con Explorer.

Un programador web dedica, por norma general, aproximadamente el 20% de su tiempo en arreglar fallos de visibilidad y funcionamiento en el navegador Internet Explorer.

No es algo que me haya inventado, o que haya leído en algún enlace de Internet. Simple y llanamente he calculado cuanto tiempo he estado programando para la web en la que trabajo, y cuanto para hacer funcionar esa misma web en Explorer. Personalmente, y teniendo en cuenta que es una web muy sencilla, me parece un % muy bajo para que lo supongo que serán las horas invertidas en los grandes proyectos.

Sin embargo, sigue siendo vergonzoso que uno de los miles cientos de navegadores existentes se lleve una parte tan grande de mi tiempo. No me importa arreglar un pequeño fallo ( esa capa rebelde que se empeña en moverse 2 pixels… ), pero que algo que se ve igual al 98% en Firefox, Opera y Links ( la versión texto de la web ), e incluso en el navegador de mi Nokia Communicator, no se pueda ver en el dichoso explorer… no es normal.

¿ Y de quien es la culpa ? No es de la gente que usa este navegador, eso seguro. Sobre todo porque la gran parte de estos usuarios no tienen ni idea de lo que hacen. La culpa, nos pese o no, es nuestra, de los que programamos webs y hacemos modificaciones para que se vean bien en el navegador de mierda de Microsoft.

Nosotros, los que hacemos posible que un navegador que es inseguro, incompatible con los estándares mas estandarizados de la estandarizada Internet, lento y de pago ( se supone que se paga con el Sistema Operativo ), somos los únicos culpables de tener que lidiar con semejante chapuza. Y también somos los únicos que tenemos la posibilidad de remediarlo.

Si un coche incumple las normativas vigentes, no puede circular. No se cambian las carreteras para que ese modelo de coche pueda funcionar alegando que “a mucha gente le gusta ese modelo”. Primero porque no es seguro, segundo porque no es lógico. Sin embargo, en Internet este modelo ( hay que hacerlo para todos, aunque haya alguno que no quiera saber nada de lo que se acuerda entre todos ), parece que hay que cumplirlo obligadamente. Y a eso es a lo que nos tenemos que negar.

Y no, no hablo de ponerle una pistola en la cabeza a nadie para que deje de usar Explorer y use otro navegador como Firefox. Hablo de hacer páginas que sean 100% compatibles con lo que marcan los señores del W3C, que son los que saben de esto. Y si el navegador que todos conocemos no quiere saber nada de esas normativas, que apechugue con las consecuencias. Y si, lo siento mucho por la gente que se empeñe en usar este navegador. Un mensaje informativo de que esa web cumple con el estandard pertinente, y su navegador no debería bastar. Aunque a lo mejor se pueden poner un enorme montón de banners publicitarios para los que usan Explorer ( “ya que son tan tontitos que no pueden poner un Firefox, aprovechemos la coyuntura” ).

Sea como sea, de ahora en adelante no pienso dedicar un solo segundo a hacer ñapas o chapuzas para el dichoso Explorer. Prefiero emplear ese tiempo en cosas como la usabilidad de una web, o directamente en tomar cervezas :-)

Technorati Tags: , , , ,

Paamayim Nekudotayim

Con el termino Paamayim Nekudotayim se denomína al operador de resolución de PHP, representado por dos “dos puntos” ( :: ).

Después de la parrafada técnica que solo comprenderán los mas avezados programadores, una versión mas ligera.

En programación orientada a objetos, los distintos elementos se separan con dos caracteres “dos puntos” unidos ( :: ). Esto es común a casi todos los lenguajes de programación, que normalmente varían en bastantes cosas.

Y si, es un comentario muy freak, pero me lo han comentado esta mañana, y me apetecía contarlo :-)

La computadora ENIAC

ENIAC ( Electronic Numerical Integrator And Computer, o Computador e Integrador Numérico Electrónico en castellano ), era el nombre que recibía la primera computadora electrónica de caracter general. Fabricada en la Universidad de Pennsylvania, pesaba 27 toneladas, ocupaba 167 metros cuadrados, y 160 Kw.

ENIAC

 

Pese a su enorme talla, e increible peso, la ENIAC era la computadora mas avanzada del momento, siendo capaz de calcular la potencia 5000 de un numero de hasta 5 cifras en tan solo 1.5 segundos.

Diseñada con la intención de realizar cálculos de  proyectiles, disponía de mas de 6000 interruptores que permitían reconfigurar su programa, en un proceso que podía durar semanas.

La programación de esta supercomputadora corrió a cargo de 6 mujeres ( Kay Antonelli, Jean Bartik, Betty Holberton, Marlyn Meltzer, Frances Spence y Ruth Teitelbaum ), lo que les convirtió en las madres de los programadores digitales.

Después de casi 10 años de trabajo continuo, fué desconectada a las 23.45 del 2 de octubre de 1955.

« Previous PageNext Page »