Antes de cerrar Google Reader busqué algún servicio alternativo y encontré The Old Reader. Importó mis suscripciones bien y desde hace varios meses soy un feliz usuario.
Hasta este domingo, que estaba caído. Parecía que estaban haciendo un mantenimiento. En el momento en que escribo esto llevan más de 72 horas sin servicio. Han tenido graves problemas con los servidores y tienen que restaurar la base de datos desde el último backup.
Esta entrada no es una queja, faltaría más. Sé lo que supone restaurar desde un backup del orden de decenas de Gigas. Su base de datos parece que rondaba un Tera, así que el proceso debe ser una pesadilla.
Sólo me pregunto si The Old Reader sobrevivirá a esta caída. Los usuarios no solemos ser muy pacientes. Me encantaría saber las cifras de nuevos usuarios de otros servicios similares en los últimos días.
Les deseo un pronto restablecimiento. Desconozco la fuente de financiación de The Old Reader, pero me temo que peligre.
Actualización (29/07/2013):
Parezco un cuervo de mal agüero, pero es que lo de la semana pasada pintaba muy mal. The Old Reader cierra y se mantendrá como un servicio privado para unas pocas cuentas escogidas:
http://blog.theoldreader.com/post/56798895350/desperate-times-call-for-desperate-measures
Actualización final:
Parece que todo vuelve a la normalidad, vuelven a funcionar en abierto. Bienvenidos sean.
miércoles, 24 de julio de 2013
miércoles, 19 de junio de 2013
UTF8 sí o sí
Función susceptible de mejora, pero extremadamente útil.
/**
* Sirve en UTF-8 sí o sí.
*/
function supericonv($txt) {
$txt1 = iconv('ISO-8859-15', 'UTF-8', $txt);
$retVal = strpos($txt1, 'Ã') === FALSE ? $txt1 : $txt;
$retVal = str_replace(array("¿", "»", "«"), array("¿", "»", "«"), $retVal);
return $retVal;
}
/**
* Sirve en UTF-8 sí o sí.
*/
function supericonv($txt) {
$txt1 = iconv('ISO-8859-15', 'UTF-8', $txt);
$retVal = strpos($txt1, 'Ã') === FALSE ? $txt1 : $txt;
$retVal = str_replace(array("¿", "»", "«"), array("¿", "»", "«"), $retVal);
return $retVal;
}
viernes, 13 de abril de 2012
(n+1)*n/2
La suma de los N primeros números naturales es
Utilidad aplicada:
Supongamos un modelo de datos (una tabla) en el que hay un atributo para ordenar, un entero correlativo que empieza en 0. Para garantizar la coherencia de los datos, tenemos que asegurarnos que cada operación de modificación deja la tabla bien:
Aquí tenemos un ejemplo de datos coherentes:
S = (N+1)*N/2
Utilidad aplicada:
Supongamos un modelo de datos (una tabla) en el que hay un atributo para ordenar, un entero correlativo que empieza en 0. Para garantizar la coherencia de los datos, tenemos que asegurarnos que cada operación de modificación deja la tabla bien:
Aquí tenemos un ejemplo de datos coherentes:
+--------+-------+
| _order | id |
+--------+-------+
| 0 | 18685 |
| 1 | 21971 |
| 2 | 21979 |
| 3 | 21977 |
| 4 | 21975 |
| 5 | 21973 |
| 6 | 22047 |
+--------+-------+
Y aquí uno de datos no coherentes: se ha borrado un dato pero no se ha actualizado bien el _order en la tabla:
+--------+-------+
| _order | id |
+--------+-------+
| 0 | 18685 |
| 1 | 21971 |
| 2 | 21979 |
| 3 | 21977 |
| 4 | 21975 |
| 6 | 21973 |
| 7 | 22047 |
+--------+-------+
¿Cómo comprobar en una tabla estas incoherencias? Aquí entra en juego nuestra fórmula.
Si todo está bien, la suma de los _order + 1 debe ser igual a la suma de los n enteros hasta los N registros que tengamos en la tabla.
SELECT COUNT(id),
cliente,
SUM(_order+1) AS suma_order,
ROUND((COUNT(id)+1)*COUNT(id)/2, 0) AS suma_buena
FROM tabla
GROUP BY cliente
HAVING ROUND((COUNT(id)+1)*COUNT(id)/2, 0) != SUM(_order+1)
ORDER BY COUNT(id);
jueves, 14 de julio de 2011
Tira nº 76: usuaria avanzada
miércoles, 6 de julio de 2011
Suscribirse a:
Entradas (Atom)

