Entradas

Mostrando entradas de marzo, 2010

Medir el tiempo de una rutina en PHP

Hace una semana comentaba como poder medir el tiempo de una rutina con c/c++ , principalmente con el fin de optimizar nuestro código. Hoy muestro como hacer lo mismo en PHP: $A = microtime(true); for($i = 0; $i < 1000000; ++$i) { /* Nuestro código */ } $B = microtime(true); $t = ($B - $A); echo("Duracion: ".$t." segundos."); Muy fácil, tomamos el valor del reloj antes del for ,tomamos nuevamente el valor del reloj después del for y finalmente calculamos la diferencia de tiempos (final - inicial), el resultado es el numero de segundos que tarda en realizarse nuestro código 1000000 veces. Sitúa tu rutina dentro de un bucle si dura poco, ya que si el resultado de la medición es de pocos milisegundos no nos sirve, mejor que dure unos segundos. Omite el bucle del código de ejemplo si ya dura de por si un tiempo apreciable.

CSS Tabs al estilo de Windows 7

Imagen
En este post podéis ver como crear pestañas casi idénticas a las de Windows 7, usando CSS y un poco de Javascript. Podría haberlo hecho sin javascript pero para no complicarme mucho y hacerlo compatible con la mayoría de los navegadores lo he usado, ya que para crear un mismo efecto de pestañas sin javascript, solo css, habría que usar el selector :target , el cual solo es compatible en algunos de los navegadores mas modernos. DEMO! El html: <div class="tabs-wrap"> <ul class="tabs"> <li><a href="#A">Tab A</a></li> <li><a href="#B">Tab B</a></li> <li><a href="#C">Tab C</a></li> <li><a href="#D">Tab D</a></li> </ul> <div id="A" class="panel">Text....A</div> <div id="B" class="panel">Text....B</div> <div id="C" class="

Reduce el tamaño de los ejecutables

Imagen
Para reducir el tamaño de archivos ejecutables, comúnmente *.exe y *.dll, existen multitud de herramientas que lo permiten, pero mi preferida es UPX. UPX es una herramienta de compresión de ejecutables, muy utilizada, muy rápida, con un alto nivel de compresión y que ademas es gratuita. Los ejecutables ocuparan menos de la mitad en la mayoría de los casos o incluso mucho menos, fíjate en la imagen, Photoshop.exe pasa de 49.650KB a 9.449KB , pero no todo es de oro, he oído tardaran mas en abrirse, ya que creo que necesitan descomprimirse en tiempo de ejecución, pero yo personalmente nunca note nada. Esta disponible en modo consola para Windows, linux, ... Yo, para tener el UPX siempre accesible de forma rápida, como se ve en la captura de arriba, cree dos accesos directos, uno de ellos con el parámetro -d que sirve para descomprimir y los metí en la carpeta sendTo .

Benchmark de rutinas en c

Cuando tenemos un programa funcionalmente terminado, lo ideal es optimizarlo para que no solo funcione correctamente, sino para que también sea rápido. Lo mejor para estos casos es ver el tiempo que tarda la CPU en realizar una rutina o función de tu programa y ver si mejora (disminuye) al "optimizarlo". #include <stdio.h> #include <time.h> int main () { clock_t A , B ; // Tiempo inicial y final (en ciclos) double t ; // Tiempo en segundos int i ; A = clock (); // Marcamos el inicio for ( i = 0 ; i < 10000 ; i ++) { /* Código a optimizar */ }; B = clock (); // Marcamos el final t = ( double )( B - A ) / CLOCKS_PER_SEC ; printf ( "%.16g ms \n " , t * 1000.0 ); return 0 ; } Como puedes ver uso un bucle para que se la ejecución de cierto código se repita muchas veces multiplicando el tiempo por 10000 en

Apagar todas las pantallas a la vez

Cuando tengo que levantarme un rato del ordenador, por ejemplo para ir a cenar, suelo apagar el monitor, pero esta tarea puede ser fastidiosa cuando tienes varias pantallas (imagínate tener que buscar y pulsar el botón power de 3 o mas pantallas para apagarlas y luego otra vez para encenderlas), yo, cuando empece a usar 2 pantallas fue lo que mas note, sobretodo por que el botón de encendido de una pantalla me quedaba oculto detrás de la otra. Así que para quienes tengan un problema parecido al mio o no quieran pulsar tantos botones de encendido os dejo mi solución al problema. Lo que hice fue crear un programa que enviara una señal a Windows para que apague las pantallas: #include <windows.h> #define MONITOR_ON -1 #define MONITOR_OFF 2 #define MONITOR_STANBY 1 int main() { SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF); } o "simplemente": #include <windows.h> int main(){ SendMessage((HWND)0xFFFF,274,0xF170,2); } Si lo compilá

Teclas de métodos abreviados

Imagen
Para quien no lo sepa o para quien no pueda disfrutar de las teclas multimedia , en Windows, en las propiedades de cualquier acceso directo existe la posibilidad de incluir una tecla de método abreviado o "hotkey", es decir, una tecla o combinación de teclas que al ser pulsadas en cualquier momento, ejecuta el acceso directo. Nunca vi a nadie usarlas, yo nunca las usé, y no por que no me gusten sino por que nunca me acuerdo de usarlas. Pueden ser realmente útiles si nos acostumbramos a usarlas, pero lo que mas nos "impide" usarlas es que seguramente no nos acordemos de que tecla elegimos para cierta aplicación, o que a la hora de querer abrir un programa no nos acordemos de que teníamos la "tecla abreviada". Por lo general la combinación sera CTRL + ALT + [Letra] , ya que no permite usar teclas de la A a la Z sueltas, ni CTRL + [Letra] , ALT + [Letra] ni WIN + [Letra] , pero si deja usar, aunque yo no las recomiendo, números (del teclado numérico de l

Como configurar las teclas multimedia

Imagen
Hoy en día la mayoría de los teclados incluyen lo que se llaman teclas multimedia que suelen estar en la parte superior, encima de las teclas F1,F2,...,F12,..., son muy útiles pero creo que se usan poquísimo, principalmente por que no estamos acostumbrandos a usarlas (yo ya he conseguido acostumbrarme a usar la tecla de abrir la calculadora) y por que a veces sirven para cosas que no nos resulta es útil, por lo que aunque tengamos una tecla para abrir MyPC, seguiremos usando el ratón, moviéndolo de un lado para otro de la pantalla buscando el programa que queremos abrir sin acordarnos de que pulsando una tecla esta todo hecho. Para cambiar la funcionalidad de las teclas sin tener que instalar ningún programa, en Windows XP podéis usar TweakUI solo tenemos que entrar en el registro (pulsa WIN+R y ejecuta regedit) y situate en: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey Veras que "dentro" de AppKey hay carpetas claves, a cada una le corresp

Cambiar el servicio de búsqueda de tipos de archivo

Cada vez que intentamos abrir un archivo desconocido para Windows aparece una ventanita preguntando si queremos abrir el archivo con un programa ya instalado o usar el servicio web para buscar un programa. Si seleccionamos usar el servicio web [...] por defecto nos abre una pagina de Microsoft que no suele aportar mucha información. Para quienes quieran cambiar el servicio solo tiene que abrir el editor de registro pulsando: WIN + R Y escribe regedit.exe Una vez dentro del editor de registro sitúate en la carpeta clave de HKEY_LOCAL_MACHINE: \SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Associations Y modifica el valor "Application" cambiando su contenido por "http://www.fileinfo.com/extension/%s" o por la web o servicio que tu prefieras, %s sera sustituido por la extensión del archivo. **Funciona en Windows 7, vista, XP y seguramente en todos a partir del 2000.

Minimiza el tamaño de los PNGs

Imagen
PNG fue creado para sustituir al formato GIF, pero nunca me convenció del todo ya que suele ocupar bastante mas que el gif, por lo que en la mayoría de los casos solía optar por gif como formato de imágenes e iconos para la web. Pues bien, descubro que muchas imágenes en png ocupan mas por que están mal comprimidas, es decir, algunos editores gráficos (como el Photoshop, segun la wikipedia) guardan estas imágenes poco o mal comprimidas. Usando la utilidad que os muestro a continuación se solventa este problema, ocupando en la mayoría de los casos menos que el formato gif y ademas con mejor calidad, recuerdo que png es un formato de compresión de imágenes sin perdida, que no esta limitado a 256 colores como gif, y ademas tiene la posibilidad de incluir canal apha. Solo queda que los png animados se popularicen entre los navegadores. PNGmin es el nombre que le e dado a la carpeta con todos los archivos necesarios (PNGOUT, OptiPNG, DeflOpt y AdvDef), os recomiendo que la copiéis en

HTMLayout, usa HTML en tus aplicaciones

Imagen
El otro día me dió por instalar el Avast!, un antivirus gratuito, y mirando el típico "Acerca de..." leí en los créditos que usaba HTMLayout , e inmediatamente me puse a buscar que era eso, pues ya me imaginaba lo que podía ser y quería saber si yo también podía usarlo. Y efectivamente, entre en su web y me descargué las demos y la sdk. Al ver las demos me sorprendió muchísimo sus posibilidades, ya que no solo era una dll que te permitía usar HTML en la interfaz de tus aplicaciones, sino que tambien css3 y unas cuantas cosas mas. Segun dicen en su web: (Traducido) HTMLayout es un motor de renderizado HTML ligero y rápido que te permite utilizar los archivos HTML como "skins" para tus aplicaciones. ...tiene tiempos de preparación muy cortos y su tiempo de inicio es cero. tiene HTML y CSS mejorado para tareas de diseño. Unidades%% y fondos ampliables Distribución de tamaño pequeño: se trata de htmlayout.dll 600KB sin comprimir. Aunque esto ultimo no es de

Resumen Febrero 2010

Imagen
El mes de febrero a sido un mes con bastantes cambios, principalmente el tema, que ya esta cerca de la versión final, tuvo modificaciones constantes principalmente los 15 primeros días. Antes: (Visto desde Internet Explorer 6) bueno en realidad se veía mucho mejor, con sombras, bordes redondeados y algún que otro degradado en el Google Chrome. Ahora: Al cambiar el tema se me olvido poner el script de Google Analitics y yo preguntándome por que no tenia visitas, espero que no me vuelva a pasar. 17 es el numero de posts publicados en Febrero,  ¿no esta mal no?,  e intentare para este mes mejorar, no solo en número sino en calidad. Tengo que cambiar el código del programa que resuelve sistemas de ecuaciones por uno mejorado que todavía no esta listo pero en breves lo cambiare. En cuanto al post del programa que dibuja fractales , ya esta disponible la descarga del ejecutable de ejemplo pero no el código fuente, ya que estoy haciendo una nueva versión. Creo que no hay nada mas

Donde esta la carpeta "SendTo" en Windows 7-8?

En Windows Xp era bastante fácil encontrar la carpeta "SendTo", carpeta que contiene todos los elementos del menú "Enviar a" cada vez que hacemos click con el botón derecho sobre un archivo. Esta carpeta tan útil esta mas escondida en el Windows 7 y seguramente en el "Vista". En XP la ruta de la carpeta era: C:\documents and settings\'USUARIO'\sendto En Windows 7 y 8 solo hace falta poner en la barra de direcciones: shell:sendto Esto nos lleva automáticamente a C:\Users\'USUARIO'\AppData\Roaming\Microsoft\Windows\SendTo ** 'USUARIO' debe ser sustituido. Otras direcciones interesantes shell:startup para ir a la carpeta Inicio en la que puedes meter accesos directos a programas que quieres que se inicien con Windows. shell:quick launch para ir a la carpeta C:\Users\USUARIO\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch .