F1 Help! La solución que buscabas

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

jueves, 23 de septiembre de 2010

Instalar Impresora HP en Debian

Seguramente han logrado instalar sus impresoras utilizando Cups. Pero que hay si estas son de las que vienen con Wifi y encima traen scanner. ¿Sera posible hacerlo funcionar en linux?

Pues claro. En los repositorios un par de paquetes importanticimos para la instalacion de las impresoras/scanner Hp. Este paquete se llama hplip. Tambien recomiendo instalar hplip-gui. Para esto desde consola ejecutamos como root:
# aptitude install hplip hplip-gui


Una vez que tengamos esto instalado. Recomiendo no usar cups para instalar la impresora. Ya que esta aplicacion de HP nos la configurara automaticamente y la tendremos disponible para mas tarde configurarla desde CUPS.

Entonces para poder instalarla desde una consola como root

lunes, 20 de septiembre de 2010

Un simple pero efectivo atoi

Hace mucho que no escribo en esta seccion del blog, pero bueno, no se alarmen. Hoy en uno de los foros que leo me pidieron que les enseñe a crear un atoi (convertir de cadena a entero) en c. Y como fue codigo 100% hecho por mi se me ocurrio compartirlo. Ademas por la explicacion que hice. Aqui va el codigo.
numero = 0;

for(i=0;cadena[i] != '\0' ;i ++) {

 digito=cadena[i] - '0';

 numero = numero * 10 + digito;

}
Como cada caracter es representado por un numero, a esto le podemos restar otros caracteres para obtener otro caracter o un numero. Por ejemplo para obtener el digito 5 desde el caracter '5' podemos hacer:

'5' - '0' = 5
'2' - '0' = 2

La idea es restar siempre el primer elemento de la secuencia ordenada de caracteres que queramos. Es posible aplciar esta tecnica para averiguar el numero de letra( 'g' - 'a').

Luego pensemos en un poco de matematica:

2345 = 2 x 1000 + 3 * 100 + 4 * 10 + 5

Esta idea nos da una pequeña intuicion. Tenemos que ir multiplicando cada digito(obtenido con la tecnica anterior) por un multiplo de 10 segun corresponda. Pero no es muy conveniente llegar al digito menos representativo para empezar a multiplicar.

Existe una mejor tecnica. Miren esta descomposicion efectuada gracias a la distribucion del producto:

2345 = 2 x 1000 + 3 * 100 + 4 * 10 + 5 = (2 * 100+ 3 * 10 + 4) * 10 + 5

Si seguimos desarrollando de esa manera, observaremos que al agregar un nuevo digito al numero, simplemente multiplicamos por 10 el numero anterior y le sumamos el digito siguiente:

numero = numero * 10 + digito

Todos sabemos que al multiplicar un numero por diez, se corre la coma a la derecha, apareciendo un cero final. Simplemente hay que sumarle el digito obtenido y listo.

Un agregado mas, en el for se recorre hasta que se obtiene un final de cadena. Pero se puede modificar para que recorra siempre que se obtenga un digito. Cuando este no aparezca mas se corta. Osea podremos parciar numeros desde cadenas como estos "1234holamundo"

Les dejo la pista para esto. En el for deberian chequear esta condicion: '0'<= cadena[i]<='9'