F1 Help! La solución que buscabas

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

sábado, 28 de febrero de 2015

CIF SIngle Chip en Windows 7 (32bits / 64bits)

Esta semana tuve que enfrentarme a esta camarita plug & play de Genius (Eye 110 en mi caso, pero son varios los modelos de cámara que utilizan este chipset).

Tras vario renegar logré hacerla andar en Windows 7 (32 y 64 bits).


Habilitar/Deshabilitar Touchpad (Linux)

Aquellas personas de manos torpes como las mías, se encontrarán en muchas oportunidades molestándose a si mismos tocando accidentalmente el touchpad de sus notebooks.

En mi caso esto puede suceder en varias oportunidades en el día. Para combatir dicho problema nada mejor que poder deshabilitar el touchpad/trackpad.

Cómo en GNU/Linux no encontré ninguna forma gráfica de hacerlo de manera sencilla nada que mejor que ponerles nuestras manos encima a la consola.

martes, 4 de marzo de 2014

Rediseño del blog

Como verán reactivamos el sitio que durante mucho tiempo dejamos sin actualizar.

Este nuevo comienzo viene de la mano de un nuevo diseño del sitio, para aportar simpleza y facilidad de lectura al mismo. Dejando de lado o en un segundo plano todo lo que no es contenido.

Esperamos que lo disfruten y estar publicando nuevamente más seguido.

Crear un dump (backup) de todas las bases de datos MySQL

Al momento de realizar un backup completo de nuestro servidor resultar útil y ágil realizar con un único comando un dump de todas las bases de datos que se encuentran en nuestro servidor.

En estos casos suelo recurrir al siguiente comando:

$ mysqldump -u nombreUsuario -p --all-databases --add-drop-table > dump_name.sql

Al ejecutar el comando el sistema solicitará el password del usuario en cuestión. Si este comando fuese utilizado en un script puede ingresarse la contraseña del usuario tras la bandera p.

Montar localmente directorios remotos de un servidor ajeno

En ocaciones tenemos que conectarnos utilizando SSH a servidores remotos para trabajar. Este tipo de acceso es muy util pero resulta algo tedioso cuando tenemos que manipular varios archivos y queremos ir previsualizando su contenido.

Para estas ocacciones podemos utilizar sshfs para montar localmente de forma segura un directorio en un servidor remoto.

Para instalar sshfs en nuestras distros basadas en Debian podemos recurrir al siguiente comando:

# aptitude install sshfs

Luego para montar el directorio utilizamos el siguiente comando:

$ sshfs usuarioRemoto@servidorRemoto:/path/al/directorio/remoto /path/local

Al ejecutar el comando se nos solicitará la contraseña de nuestro usuario remoto.

Ejemplo de uso:

$ sshfs guest@127.0.0.1:/demo /home/p4bl1t0/demo

Finalmente para no tener que ser root para montar este tipo de directorio podemos agregar nuestro usuario al grupo fuse. El siguiente comando es necesario para tal efecto:

# usermod -a -G nombreGrupo nombreUsuario

miércoles, 13 de julio de 2011

Generar un PROXY (clase) para consumir un Web Service en .NET

Hoy vamos a la inversa del otro día. Queremos generar una clase con la cual podamos consumir un determinado web service.

jueves, 7 de julio de 2011

Codigos Postales - Argentina

La idea prncipal de este tutorial es enseñarle como aprovechar el sistema de Codigo Postales del Correo Argentino. Veran que se puede obtener un codigo postal de una ciudad simplemente haciendo un Post a una pagina determinada.Es realmente facil.

Cada provincia tiene un codigo. Ese codigo se usa para formar la pagina a la cual se le va hacer la peticion. Como datos hay que pasarle la variable localidad con el nombre entero o uno parte de la ciudad que estemos buscando. Como resultaro obtendremos codigo html, que representa una lista HTML con los resultado.

Aca les paso el codigo, esta hecho en python pero es muy facil de interpretar y llevar a otro lenguaje.

miércoles, 6 de julio de 2011

Detectar dispositivos móviles en Blogger

Tratando de hacer este blog muchísimo más amigable para smartphone y además como parte del rediseño completo del sitio me encontré husmeando en las plantillas de blogger con el siguiente código:

<b:if cond='data:mobile == &quot;false&quot;'>
Que en definitiva te permite detectar si el dispositvo es un movíl o si es una computadora.

martes, 5 de julio de 2011

Buscar coordenas de una ciudad usando Google

Hoy necesitaba buscar las coordenadas de varias ciudades de Argentina, por lo que hice este scirpt.

Toma como entrada un arivo llamado citys.txt con el formato "codigo postal, nombre ciudad".

Y devuelve un archivo con las coordenadas, y la provincia entre otras cosas.

Asignarle un Alias a un Namespaces en Visual Studio

Otra cortita y al pies. Esta es mas bien un SNIPPET de código. Muchas veces tenemos namespace de nombre largo o de complicada lectura y lo que queremos es reducir el impacto visual y mejorar la legilibilidad del código, sobretodo si estamos compartiendo o trabajando en conjunto sobre el mismo. Es por esta razones que resulta interesante asignarle alias a los NAMESPACES.

El código necesario es el siguiente:

Generar una Interface a partir de un WSDL

Cortita y al pie!

Un par de veces en el trabajo me enfrenté al problema de tener que a partir de un WSDL tener que generar la interfaz para un Web Service de manera de que otro servicio pueda consumir los datos que le iba a ofrecer. En varias de esas oportunidades terminabamos cambiando la óptica, porque no conocía la manera de como generar un Web Service a partir de un WSDL. Pero hoy me enteré en la búsqueda de otra cosa que con el siguiente comando, podemos generar a partir de un WSDL una interfaz PUNTO.NET para luego crear nuestro Web Service. Lo único que restaría es hacer una clase que la implemente.

El comando es el siguiente:

domingo, 3 de julio de 2011

Separador (clearfix) CSS sin etiquetas HTML

Cada vez que utilizamos la propiedad float:left/right en nuestro CSS, para armar la estructura de nuestro sitio, tenemos que estar atentos a que si los bloques que estamos "flotando" tienen distinto alto puede ocurrirnos que los bloquespresenten un comporamiento no deseado.
Es por esto que al final de los elemento flotantes colocabamos un elemento de bloque con la propiedad clear:both para solucionar este inconveniente o asegurar la disposición que estabamos buscando. Ya que este elemento se situaba por debajo de todos los bloques y cerraba nuestro contenedor.

El problema de esta solución es que estamos agregando HTML a la página que no tiene ningun sentido (semántico) para el contenido y el significado del sitio. Además si el contenido que se genera es dinámico tenemos que asegurarnos que el elemento se agregue al final para que no produzca efectos colaterales y se cierre correctamente el contenedor.

Es por eso que desde CSS-Tricks nos acercan esta solución CSS:
.grupo:before,
.grupo:after {
    content:"";
    display:table;
}
.grupo:after {
    clear:both;
}
.grupo {
    zoom:1; /* For IE 6/7 */
}

viernes, 1 de julio de 2011

Título semántico en listas HTML

Al tratar de otorgarle más semántica nuestro marcado HTML nos hemos encontrado que no exista dentro de nuestra lista (UL) una etiqueta para informar el título de la lista (algo que describa los elementos de la misma). En cambio etiquetas como "fieldset" tienen a "legend" para titularlas

Ejemplo:
Mi leyenda

Mi contenido dentro del fieldset


También tenemos a "thead" y "th" para generar encabezados semánticos a nuestras tablas.

Como en las listas no existe nada de esto, pensé en utilizar el atributo title de todo elemento y combinarlo un poco con los pseudo-elementos "before" y "after" para poder obtener mi título semántico.

El código es el siguiente:
<ul title="Navegadores que soportan título semático en UL OL DL">
    <li>IE 8+</li>
    <li>FF 3+</li>
    <li>Chrome</li>
    <li>Opera 6+</li>
    <li>Safari 4+</li>
</ul>

Y el CSS aplicado:
ul{
    list-style-type:square;
    padding-left:20px;
}
ul:before{
    content:attr(title);
    position:relative;
    left:-20px;
    color:blue;
    font-weight:bold;
}

Para obtener este resultado

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'