Administración de Sistemas: Tonido plug + Tests Externos + Tests de configuración

Hace ya bastantes meses me pillé un TonidoPlug al que le puse el PlugApps. Lo quería para tener un mini servidor linux para hacer pruebas y para desarrollo local en unas condiciones muy parecidas a las que tendría en producción.

Sin embargo descubrí un uso todavía mejor. Como es un aparatito que tengo enchufado las 24 horas y conectado a Internet, qué mejor que usarlo para hacer cosas relacionadas con Internet que me permitiese estar más tranquilo.

Me monté un cron y un script PHP y cada hora se conecta a mi servidor y hace varias pruebas. Pruebas externas. Simplemente accede a las páginas que podrán acceder los usuarios y comprueba que todo esté funcionando. Si falla cualquier cosa, me manda un correo y me llega al instante al móvil, permitiéndome corregirlo al momento o al menos avisar a quien corresponda.

Esto mismo se podría hacer en el propio servidor, pero por supuesto no podrías detectar problemas de red que hacen que el servidor esté inaccesible, que el servidor esté colgado, o que tarde demasiado en responder. Pueden haber falsos positivos en relación a mi propia red de casa, pero como puedo comprobarlo al instante con la conexión del móvil, no me supone ningún problema.

Además de hacer estas pruebas hace algunas cosas más, como cambiar un dynahost que tengo con la IP del router justo cuando cambia la IP.

Además de este conjunto de scripts tan útiles que ejecuto desde casa, tengo otro script en PHP que se encarga de comprobar que la configuración del sistema sea la correcta. Si tengo que replicar máquinas o hacer migraciones, me viene de perlas tener un script que me vaya indicando por ejemplo los mods de apache, los módulos de php, los servicios que hay que instalar y tener ejecutando. Que compruebe también los binds de los sockets que se hagan en la interfaz adecuada, que las configuraciones sean seguras, que el iptables esté bien configurado con las reglas pertinentes etc.

Simplemente cuando añado una dependencia nueva, modifico ese script y me garantiza que podré hacer migraciones sin “peligro” de que se hayan roto cosas sueltas por ahí.

Leer más...

C#: C# y CSharpUtils : SliceStream y SpaceAssigner

Hoy voy a empezar a hablar de la librería CSharpUtils que tengo en googlecode.

Hace un par de meses volví a meterme con C# después de varios años. Y la verdad es que estoy muy contento con C#, .NET y el espléndido trabajo de mono-project que permite ejecutar .NET 4.0 tanto en Linux como en MAC incluyendo aplicaciones GUI y aplicaciones de servidor con ASP.NET y FastCGI.

Comentar también que hay un compilador de PHP que genera código .NET que permite ejecutar PHP muchísimo más rápido utilizando el JIT de .NET: phalanger. Aunque el hecho de que en PHP no haya tipado estricto impide bastantes optimizaciones.

Leer más...

Tecnología: Discos duros SSD : El futuro en el presente

Llevo ya bastante tiempo echándole un ojo a los discos duros SSD. Y finalmente me he decidido a hacerme con uno.

Los discos duros tradicionales tienen partes mecánicas que los hacen lentos y que producen ruido y calor.
Aunque vendan discos duros tradicionales Sata III, ninguno de los que he visto llega a los 100 MB/s de lectura o de escritura secuencial.
Los más frecuentes son de 7200 RPM aunque se pueden encontrar algunos de 1000 RPM. Las RPM (Revoluciones Por Minuto) indica el número de giros que puede hacer el disco para acceder a un dato. Cuando los datos están contiguos, el disco duro no tiene que girar y puede leer a máxima velocidad (lectura secuencial). Sin embargo cuando se acceden a diferentes archivos o a archivos cuyas partes están esparcidas en diferentes partes del disco duro (fragmentación), la lectura ya no es secuencial. El disco tiene que girar para acceder al dato que se quiere leer. Ahí es donde entra en juego la velocidad de giro del disco (la velocidad de búsqueda). Los discos que comentaba pueden girar completamente a 7200 RPM. Lo que significa que un giro completo le llevará 8.3 milisegundos. (1 segundo / (7200 rpm / 60 segundos en cada minuto)) * 1000 milisegundos en un segundo = 8.33~ milisegundos. En el caso de los discos duros de 10000 rpm, el tiempo de búsqueda es de 6 milisegundos. Incluso en el caso de algunos discos duros empresariales de 15000 rpm, el tiempo de búsqueda es de 4 milisegundos.

Leer más...

Tecnología: Nuevo Chrome Book

Leo en el blog oficial de google que a partir el día 15 de junio estará disponible el chromebook en varios países incluyendo España. Será el primer laptop con ChromeOS instalado.

La noticia se ha hecho eco en diferentes blogs, como en bandaancha, xatakamovil o alt1040. Blogs que, ya de paso, recomiendo enérgicamente.

El portátil de Google tendrá como sistema operativo ChromeOS. Un rapidísimo arranque de unos 8 segundos gracias a su core linux lightweight, su hardware específico y el disco SSD de 16 GB que llevará integrado. Todo el almacenamiento será en la nube y no requerirá de antivirus ya que todas las aplicaciones se ejecutarán dentro del sandbox de seguridad del navegador. El sistema operativo se actualiza automáticamente de forma que no tendremos que preocuparnos por los updates. El estado del sistema operativo se guarda en la red, de forma que podemos arrancar ese ordenador u otro con nuestro usuario y contraseña y todo seguirá como lo dejamos.

Al final es un Google Chrome a pantalla completa más integrado y cohesionado y con más acceso al sistema, que trabaja exclusivamente en la web.

Podéis leer más información en los blogs que he citado anteriormente.

Leer más...

PHP: Iterar sobre un conjunto de días

En ocasiones nos interesa recorrer desde una determinada fecha hasta otra fecha y obtener los timestamps del inicio del día (00:00:00) hasta las (23:59:59) de ese mismo día (o 00:00 del siguiente).
Este ejemplo muestra dichos instantes de los días desde el 1 de enero de 2011 hasta hoy utilizando
DateTime y el método modify. </div>

$dateToday = new DateTime('today');  
$dateCheck = new DateTime('1 january 2011');  

for ($dateCheck = new DateTime('2011-01-01'); $dateCheck <= $dateToday; $dateCheck->modify('+1 day')) {  
    $dateCheck2 = clone $dateCheck;  
    $dateCheck2->modify('+1 day -1 second');  
    //$date = $dateCheck->getTimestamp();  
    echo $dateCheck->format('d-m-Y H:i:s');  
    echo ' -> ' . $dateCheck2->format('d-m-Y H:i:s');  
    echo "\n";  
}  

Leer más...

Suscribirse via RSS