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...

PHP: WHICH en PHP para Windows

Which es un comando muy útil en linux que permite determinar la ruta absoluta de un ejecutable que está en el path. Además si el ejecutable a lanzar está en diversas carpetas del path, mostrará cual de todos esos ejecutables tiene prioridad y por tanto el que sería ejecutado.

Para poderlo utilizar desde la consola, basta con crear el archivo which.bat con el siguiente contenido y situarlo en la carpeta donde se halle el intérprete de PHP además de haber añadido dicha carpeta a la variable de entorno PATH.

which.bat  
@"%~dp0\php.exe" -r"$cmd_to_check = $argv[1]; $exts = array('exe', 'bat', 'cmd'); foreach (explode(';', getenv('PATH')) as $path) { foreach ($exts as $ext) { $file = $path . '\\' . $cmd_to_check . '.' . $ext; if (is_file($file)) { echo $file; exit; } } } echo $test . ' not found';" %*

Código expandido:

<?php  
$cmd_to_check = $argv[1];  
$exts = array('exe', 'bat', 'cmd');  
foreach (explode(';', getenv('PATH')) as $path) {  
    foreach ($exts as $ext) {  
        $file = $path . '\\' . $cmd_to_check . '.' . $ext;  
        if (is_file($file)) {  
            echo $file;  
            exit;  
        }  
    }  
}  

Ejemplo de uso:

C:\>which php
c:\php\php.exe

Leer más...

Suscribirse via RSS