F1 Help! La solución que buscabas

Desarrollo, programación, tips, consejos y soluciones para los usarios de PC

domingo, 20 de septiembre de 2009

Contador de Bits

Este codigo cuenta los bits prendido (en uno) de un entero, programado en Assembler, Sintaxys AT&T.
.data
s: .string "%d \n"
l: .long -1
.text

.global main
main:
movl $0,%ebx #ebx es nuestro contador
movl $0,%ecx #ecx es nuestro contador de ciclos
movl l,%eax #carga el long en memoria
rotador:
inc %ecx # i++
ror %eax # rota el eax
adc $0, %ebx # suma el carry
cmp $32,%ecx
jnz rotador
#jmp rotador
return:
pushl %ebx
pushl $s
call printf
addl $8, %esp
movl $0, %eax
ret

Podemos cambiar las siguientas lineas:
return:
pushl %ebx
pushl $s
call printf
por: movl %ebx, %eax y podemos usar esta linea como una funcion

Assembler - Hello World

He aqui el programa con el que todo programador empieza. "Hello World". Esta vez hecho en assembler, sintaxys de AT&T. Para un microprocesador I386

#Hello world
.data
s: .string "Hellow Word\n"
l: .long 555
.text
.global main
main:
pushl l
pushl $s
call printf
addl $8, %esp
movl $0, %eax
ret

Funcion que cortar un string segun caracter en C#

El funcionamiento de esta funcion es el siguiente, le mandamos una cadena la cual se va a cortar y lo que hace, corta el principio o el final de la cadena, segun indica el bool, hasta que encuentre el primer o la ultima existencia del caracter ingresado.

Veamos un ejemplo

Si cadena = " H:\Programacion\SystemChek\SystemCheck\programa.exe"

cortarporcaracter ( cadena, '\\' , true)

me va a devolver cadena = "H:\Programacion\SystemChek\"

y

cortarporcaracter ( cadena, '\\' , false)

me va a devolver

cadena = "programa.exe"

Aca el codigo de la función


private string cortarporcaracter(string cadena,char caracter, bool principio)

{
   int ubicacion = 0;
   if (principio)
   {
         for (int i = 0; i <= cadena.Length - 1; i++)
        {
              if (cadena[i] == caracter)
                       {
                             ubicacion = i;
                             break;
                       }

         }
         cadena = cadena.Substring(0,ubicacion+1);


    }
    else
    {
           for (int i = cadena.Length - 1; i >= 0; i--)
                 {
                       if (cadena[i] == caracter)
                            {
                              ubicacion = i;
                              break;
                             }

                }
          cadena = cadena.Substring(ubicacion + 1, cadena.Length - ubicacion - 1);
   }

   return cadena;

}


Extracción de CABs en GNU/Linux

Esta vez me encontré con el dilema de tener que extraer un archivo comprimido CAB (Microsoft Cabintet), desde Wikipedia vemos:

CAB (abreviatura de Cabinet) es el formato nativo de archivo comprimido de Microsoft Windows. Soporta compresión y firma digital, y se utiliza en una variedad de motores de instalación de Microsoft: Setup API, Device Installer, AdvPack (para la instalación de componentes ActiveX de Internet Explorer) y Windows Installer.

Originalmente fue llamado Diamond.

El formato de archivo CAB admite tres métodos de compresión de datos:
DEFLATE, creado por Phil Katz, el autor del formato de archivo ZIP.
Quantum, con licencia de David Stafford, el autor del Quantum archiver.
LZX, creado por Jonathan Forbes y Tomi Poutanen, dado a Microsoft cuando Jonathan se unió a la compañía.

La extensión de archivo CAB se utiliza también en muchos instaladores (InstallShield y otros), aunque no es el mismo formato de archivo.


Buscando y buscando , quise dar con una GUI para hacerlo, pero desgraciadamente no encontré nada, asi que tuve que recurrir a la siempre amada y siempre odiada consola. El programa para extraer por lo general viene instalado en el sistema, pero si este no es el caso, en Debian GNU/Linux lo instalamos rapidamente mediante

# aptitude install cabextract

Una vez instalado, lo unico que resta es utilizarlo :

$ cabextract -dDIR nombredelarchivo.cab

Donde DIR es el directorio destino de la descompresión

martes, 8 de septiembre de 2009

Borrar mensajes sin leer de la Pantalla de Bienvenida de Windows

Cuantas veces no hemos encontrado en la pantalla de bienvenida de Windows XP y que las personas observen la cantidad de mensajes que uno tiene en su cuenta. A mi en la facultad me pasa una infinidad de veces, y me pregunto porque estas personas tendrán que saber cuantos mail tengo si leer.

La solución es facil, abrimos el regedit (desde ejecutar, tecleamos regedit)

y reccorremos hasta llegar al siguiente lugar

HKEY_CURRENT_USER>>>>Software>>>>Microsoft>>>>Windows>>>>CurrentVersion>>>>Unreadmail

Ahi apareceran como carpetas las distintas cuentas que se han logueado en nuestra pc, lo unico que resta hacer es poner el valor de la clave "Message Count" a 0. Dentro de la cuenta que es nuestro inconveniente.