Entradas

Mostrando entradas de 2011

Eliminar archivos innecesarios de los proyectos

Hace tiempo, haciendo una copia de seguridad completa de mi carpeta de "programación" vi que ocupaba demasiado, que era hora de eliminar por ejemplo archivos ".obj" o ".o" que se generan al compilar y que solo son necesarios en ese momento. El IDE que mas archivos innecesarios genera es el Visual Studio, que por ejemplo, para un pequeño programa de unos pocos kilobytes genera una base de datos de 23 megabytes, esto es útil mientras trabajas en ese programa, pero cuando lo dejas por un tiempo largo, esos megas ocupan espacio junto con los de otros proyectos, y pueden ser borrado, ya que lo genera el automáticamente el Visual Studio cada vez que abres el proyecto. Para Borrar estos archivos fácilmente cada cierto tiempo cree un archivo por lotes ".bat" que se encargue de esto. Con forfiles borro carpetas y con el comando del /F /S /Q borro los archivos de determinada extensión en todas las subcarpetas y sin pedir confirmación. La ultima linea

Menú desplegable usando css

Imagen
Hoy comparto con todos este elegante menú desplegable o "drop down menu" hecho con CSS y nada de JavaScript. Ver / Descargar

Dominio propio

Mas novedades, como dice el titulo, ya tengo un dominio propio, acabo de comprar el dominio davidXL.es también he contratado un servidor (webhostingpad) que promete no tener limites en capacidad de disco y cantidad de datos transferidos, pero esto no es del todo cierto, ya que en los términos de uso "ilimitado" limitan el numero de archivos a 10.000, y si te pasas en cuanto a transferencia te envían un email para que te pases al plan plus. La verdad es que he contratado uno de los mas baratos, mi intención no es alojar grandes webs, sino que principalmente lo usare para hacer algunas pruebas, lo necesario para el blog y algunos proyectos pequeños. En algún futuro, posiblemente cuando finalize el contrato, si me veo apurado de recursos o capacidades me cambio, posiblemente a Bluehost, ya que me lo recomendaron y leí buenas criticas por la red.

Árbol con Css - css tree

Imagen
Basándome en uno ya hecho por "Css-Triks" , que solo permitía 2 niveles, lo he modificado para que soporte todos los que uno necesite. Ver / Descargar

Trucos de divisibilidad para números enteros

Creo que a todos nos han enseñado alguna vez estos trucos, seguramente en primaria. A mi ya se me habían olvidado, y la verdad es que resultan útiles en algunas ocasiones. Numero Regla 2 Si el numero es par 3 Si la suma de sus dígitos es múltiplo de 3 4 Si los últimos 2 dígitos es un numero divisible por 4 5 Si el ultimo numero es 5 o 0 6 Si el numero es par y divisible por 3 8 Si el numero es divisible por 4 y el resultado es par 9 Si la suma de sus dígitos es divisible por 9 10 Si el ultimo dígito es 0 Para el 7 y 13, que son algo mas complicados: http://www.smartick.es/blog/index.php/criterios-de-divisibilidad-del-7-y-del-13/ Podréis encontrar algo mas de información en: http://rocky-marciano.lacoctelera.net/post/200

Grandes cambios

Imagen
¡Hola de nuevo! después de estar casi todo el verano sin publicar nada y en general, este ultimo año solo he publicado unos dos post al mes, muchísimo menos de lo esperado, y no es por que tenga pocas ideas o material, sino que cuando termino un programa y me dispongo a compartirlo no se me ocurre nada para escribir, me da pereza subirlo, veo que no esta del todo completo o el código no es muy claro. Para evitar que esto no siga estando cada vez mas inactivo me he puesto manos a la obra y realizando unas serie de cambios que me permitirán publicar con mas comodidad, he borrado todo lo que tenia en el repositorio de Google Code, ya que no tenia ningún orden y lo he sincronizado con la carpeta mía del ordenador, por lo que los enlaces a códigos de ejemplo no estarán disponibles temporalmente. Logo del repositorio Con la nueva organización del repositorio me sera muy fácil ir publicando frecuentemente códigos nuevos, para empezar ya están disponibles todos los problemas de  http://

Como ocultar el cursor

Este pequeño código escrito en C es útil sobretodo si estas desarrollando juegos, protectores de pantalla o algún tipo de aplicación en el que desees que no se muestre la flechita del raton. case WM_SETCURSOR: SetCursor(NULL); return TRUE; Deberá estar junto con el resto de casos en el procedimiento de proceso de mensajes de ventana de la "winapi".

Programa que abre cierto tipo de archivo

Un ejemplo de como obtener el nombre, dirección del ejecutable entre otras cosas de un tipo de archivo, protocolo, clsid, etc. #include <windows.h> #include <Shlwapi.h> #include <stdio.h> #pragma comment(lib, "shlwapi.lib" ) char * assocStr [] = { "ASSOCSTR_COMMAND" , "ASSOCSTR_EXECUTABLE" , "ASSOCSTR_FRIENDLYDOCNAME" , "ASSOCSTR_FRIENDLYAPPNAME" , "ASSOCSTR_NOOPEN" , "ASSOCSTR_SHELLNEWVALUE" , "ASSOCSTR_DDECOMMAND" , "ASSOCSTR_DDEIFEXEC" , "ASSOCSTR_DDEAPPLICATION" , "ASSOCSTR_DDETOPIC" , "ASSOCSTR_INFOTIP" , "ASSOCSTR_QUICKTIP" , "ASSOCSTR_TILEINFO" , "ASSOCSTR_CONTENTTYPE" , "ASSOCSTR_DEFAULTICON" , "ASSOCSTR_SHELLEXTENSION" , "ASSOCSTR_DROPTARGET" , "ASSOCSTR_DELEGATEEXECUTE" ,

Ejemplo de grafica lineal en c

Imagen
El siguiente código es un ejemplo de como crear una gráfica lineal como la del administrador de tareas de windows (taskmgr.exe). Para cambiar el tipo de gráfica haz clik sobre ella con el botón izquierdo del ratón. #include <windows.h> #include <math.h> #define WIDTH 400 #define HEIGHT 125 HWND win = NULL ; DWORD timer = 0 ; HDC specdc = 0 , hdc = 0 ; HBITMAP bmp = 0 ; BYTE * pixels ; HPEN hPen ; unsigned int mode = 0 , time = 0 , pos = 0 , v0 , v1 = HEIGHT , grid = 0 , a , b ; int sine_rand () { static unsigned int values [ 10 ] = { 0 }, avg = 0 ;; int rn = ( rand ()% HEIGHT / 2 + sin (++ time / 31.416 )* HEIGHT / 2 + HEIGHT / 4 ); int index = time % 10 ; if ( rn >= HEIGHT ) rn = HEIGHT - 1 ; else if ( rn < 0 ) rn = 0 ; avg += rn - values [ index ]; values [ index ] = rn ; return avg / 10 ; } void CALLBACK Update ( UINT id , UINT m , DWORD u , DWORD v , DWORD w )

Capturar pantalla en c

Ayer busque como hacer capturas de pantalla en C y guardarlas después en un archivo bmp, pero todos los snippets que encontré me hacían únicamente un "Screenshot" de la pantalla principal, esto quiere decir que si usamos mas de un monitor no serviría. He escrito este código que captura el área del escritorio virtual (todas las pantallas), generando una imagen como la de la tecla ImprimirPantalla o PrintScreen. No creo que ha falta decirlo pero por si acaso, para elegir donde guardar el archivo bmp se modifica en la linea 24.. #include <windows.h> int main () { int width = GetSystemMetrics ( SM_CXVIRTUALSCREEN ); int height = GetSystemMetrics ( SM_CYVIRTUALSCREEN ); int top = GetSystemMetrics ( SM_YVIRTUALSCREEN ); int left = GetSystemMetrics ( SM_XVIRTUALSCREEN ); int size = width * height * 3 ; int headerSize = sizeof ( BITMAPINFOHEADER ) + sizeof ( BITMAPFILEHEADER ); BITMAPFILEHEADER bmFile = { 0x4D42 , headerS

Leer los tags id3v1 de un mp3

Imagen
La mayoría de los archivos mp3s guardan en su interior una serie de etiquetas que informan de quien es el artista, el titulo, album, etc. mediante las etiquetas ID3. Existe 2 versiones principales de etiquetas, ID3V1 y ID3V2 que es bastante mas difícil y complicado extraer su información que en su primera versión. Leer los tags ID3V1 de los mp3s es muy fácil, solo tenemos que extraer los últimos 128 bytes del mp3. En la versión 1.1 se añade información de numero de pista De los ultimos 128 bytes, los 3 primeros deben de ser "TAG", sino la cancion no tiene este tipo de tags. Title : 30 bytes (caracteres) Artist : 30 bytes (caracteres) Album : 30 bytes (caracteres) Year : 4 bytes (caracteres 0-9) Comment : 30 bytes (caracteres) Genre : 1 byte representado como numero sin signo Numero de pista : si el byte 28 de los comentarios es 0, no el caracter '0', entonces el byte 29 o ultimo (rango 0-29) sera un byte representado como numero sin signo que corresponde

Centrar ventana en windows

Una manera fácil de centrar la ventana en Windows, usando la siguiente función, cuyo único parámetro de entrada es el "manejador" (handle) de la ventana. Retorna verdadero si todo fue bien. bool centerWindow ( HWND hWnd ) { RECT rc ; GetWindowRect ( winHandle , & rc ); int x = ( GetSystemMetrics ( SM_CXSCREEN ) - ( rc . right - rc . left ))/ 2 ; int y = ( GetSystemMetrics ( SM_CYSCREEN ) - ( rc . bottom - rc . top ))/ 2 ; return SetWindowPos ( hWnd , 0 , x , y , 0 , 0 , SWP_NOZORDER | SWP_NOSIZE ); } Acuérdate de incluir windows.h

Significado de los pitidos del ordenador

Normalmente, cuando encendemos nuestro ordenador suele emitir un pequeño pitido al principio que nos indica que todo esta bien, el problema es cuando pita mas de una vez, quizás parpadeen algunos leds y no se encienda la pantalla, entonces es cuando algo va mal. Para saber el significado de los pitidos de la placa base al encender el ordenador solo tienes que continuar leyendo, la información esta sacada de un foro, y es una copia de  hard-h2o.com (codigos post pitidos nada mas encender) . Significado de los pitidos: Códigos genéricos Ningún pitido: no hay suministro eléctrico. Pitido ininterrumpido: fallo en el suministro eléctrico. Pitidos cortos seguidos: placa base dañada. Pitidos largos seguidos: Memoria dañada o CMOS corrupta. 1 pitido largo: la memoria no funciona o no está presente. 1 largo y 1 corto: fallo en la placa base o en la basic ROM. 1 largo y 2 cortos: fallo en la tarjeta de video o no está presente. 1 largo y 3 cortos: fallo en la tarjeta EGA. 2