viernes, 22 de abril de 2011

Procesar múltiples archivos a la vez con la consola de Linux

Si están en Linux y necesitan procesar muchos archivos a la vez, como por ejemplo renombrar un lote de archivos, o aplicar un comando a algunos, pueden hacerlo con la siguiente línea:

for variable in [expresión]; do comando $variable; done

Sí, un bucle for en la misma consola. variable es el nombre de la variable que representará cada archivo que concuerde con [expresión], por ejemplo para tener todos los archivos .jpg, se escribiría

for v in *.jpg;

siendo ahora v el nombre de la variable. Para obtener el nombre de cada archivo, hay que expandir el valor de la variable con el signo $. Con ese valor podemos ahora ejecutar el comando que deseemos sobre cada archivo. Para verlo bien, este ejemplo simple lista todos los archivos PDF que se encuentren en el directorio de trabajo:

for i in *.pdf; do echo $i; done

Como verán la consola de Linux es muy poderosa, por eso les recomiendo que busquen algún tutorial sobre programación en Shell para sacarle todo el provecho posible.

domingo, 17 de abril de 2011

Programas compilados con g++ ahora piden una DLL


Si son de programar en C++ y usar el compilador de GNU g++ en Windows, a lo mejor les haya pasado que después de actualizarlo, sus programas ahora para ejecutarse les pidan una DLL llamada libstdc++-6.dll, cosa que antes no sucedía.
Al arrancar el ejecutable les muestra el siguiente mensaje de error:

"Error al iniciar la aplicación porque no se encontró libstdc++-6.dll. La reinstalación de la aplicación puede solucionar el problema."

El problema está a partir de la versión 4.5 de g++. Antes de esta versión, g++ enlazaba esta librería (libstdc++) estáticamente a los ejecutables compilados, por lo que ese error nunca aparecía. A partir de la versión 4.5, ya no se comporta de esta manera y enlaza la librería de forma dinámica, por lo que es necesaria esa DLL cuando no se está ejecutando el programa con el directorio de g++ como directorio de trabajo.
Para solucionarlo, pueden copiar la mencionada DLL a la carpeta del sistema de Windows, o incluir el directorio de g++ en la variable PATH del sistema.
Si quieren tener el comportamiento anterior de g++, es decir enlazar la librería estáticamente, compilen sus programas con la opción

-static-libstdc++

y ya no dependerán de esa DLL.

miércoles, 13 de abril de 2011

Instalador offline de Skype para Windows

Cuando descargan Skype de la página oficial, el programa instalador que se bajan es un ejecutable de 1 MB aproximadamente, que es quien se encarga de descargar los verdaderos archivos necesarios para la aplicación.
Si esto les molesta como a mí, les parece innecesario o simplemente desean disponer del instalador completo para no tener que descargarlo cada vez que lo quieran instalar, o porque necesitan instalarlo en varias computadoras y quieren evitar que se descargue para cada una, pueden usar este instalador offline como suele llamarse, o full, disponible desde el siguiente enlace:
http://www.skype.com/go/getskype-full

Insertar caracteres Unicode en Linux

Seguro que en Windows están acostumbrados a insertar ciertos caracteres desde el pad numérico con la combinación ALT+(código ASCII decimal), por ejemplo ALT+64 para la arroba (@) o ALT+92 para la barra invertida (\).
En Linux, esta manera no existe, pero sí hay otra forma de insertar caracteres especiales, y no en formato ASCII sino Unicode.
La manera de insertarlos es con la combinación

CTRL+SHIFT+u+(código Unicode)

manteniendo presionadas continuamente sólo las teclas CTRL y SHIFT, y tipeando las demás. Al soltar CTRL y SHIFT, el caracter se insertará.
Para conocer el código Unicode de un caracter, pueden ejecutar el Mapa de caracteres (desde el menú Aplicaciones de Gnome o con el comando charmap), buscar el caracter deseado y fijarse en la barra de estado que va a aparecer algo como "U+004A LATIN CAPITAL LETTER J" (por ejemplo para la letra J). Esos números después del U+ son los que deben escribir con la combinación de teclas anteriores.
O sino pueden ir copiando los caracteres deseados desde el mismo Mapa de caracteres.

sábado, 9 de abril de 2011

Hedgewars: alternativa libre al Worms

Si son fanáticos del Worms, para el que no lo conozca existe Hedgewars, un clon software libre del excelente Worms World Party, y con muchas mejoras y elementos propios.
En lugar de gusanos, acá tenemos erizos, y el objetivo del juego es el mismo: acabar con todos los erizos de los equipos contrarios y sobrevivir a la batalla. Incluye muchas más armas que el juego original, y permite jugar partidas a través de Internet y LAN.
Además, funciona tanto en Windows como en Linux.
Pueden ir viendo el material multimedia oficial disponible para ir conociéndolo, pero no pueden dejar de probarlo. ¡Se los recomiendo!

Sitio oficial

jueves, 7 de abril de 2011

Windows XP anda lento y los íconos del escritorio se ven mal

Éste es un problema que una vez tuvo un amigo en su computadora, que es tan molesto y a la vez tan fácil su solución que uno no lo puede creer.
"Mi computadora anda lenta" era una de las descripciones para este problema. Navegar por las carpetas se hacía muy tedioso ya que sí, era como que se trababa todo. El menú Inicio demoraba en aparecer, y lo hacía todo trabado. Si movías una ventana, el movimiento no era fluido, sino que a cada rato se redibujaba la ventana y de manera excesivamente lenta.
"Los íconos del escritorio se ven mal" era otra descripción. Por más de que estuviera activada la opción de fondo transparente para los íconos del escritorio, el recuadro de color que rodea al nombre seguía apareciendo, y el canal alfa de los íconos no funcionaba (los bordes se veían mal y todos pixelados, tal como muestra la imagen). Esto aunque estuviera activada la configuración "Más alta" (32 bits).
Uno podría pensar que el problema está en la placa de video. Reinstalando, actualizando y toqueteando los drivers, llegué a la conclusión de que no. Entonces un virus... pero tampoco.
El problema es tan absurdo como fácil de arreglar: están bloqueados los elementos web del escritorio.
Solamente hay que hacer click derecho en el escritorio, Propiedades, pestaña Escritorio, botón Personalizar escritorio, pestaña Web, y desactivar la opción "Bloquear elementos del escritorio". Aceptar todo y listo, se arregla todo.
Es increíble cómo esa simple opción le hacía funcionar tan mal la computadora... Pero bueno, volvió a funcionar bien.

martes, 5 de abril de 2011

Pausar un programa en C/C++

Me pasó que quería pausar por un momento un programa que hice en C++ y que después continuara la ejecución sin intervención del usuario, porque necesitaba eso, que vaya ejecutando una acción cada un cierto tiempo (algo así como un timer).
En todos lados encontraba como solución usar el getch(), pero el problema con eso es que el usuario necesita apretar una tecla para continuar. Además y peor, getch() no es compatible con todas las plataformas, viene incluida en la cabecera conio.h sólo para Windows.
Otra solución es usar system("pause"), pero también depende de la plataforma.
Buscando encontré un código para una función sleep() que recibe como parámetro la cantidad de milisegundos que querés que se pause el programa, y está hecho con funciones estándar, por lo que es compatible con cualquier plataforma y compilador.
Pueden ver el código acá, o bajarse este archivo .h que hice para simplificar las cosas. Para usar la función, solamente incluyan la cabecera con

#include "wait.h"

y cuando lo deseen, llamen a

wait(ms);

pasándole los milisegundos. Le cambié el nombre de sleep() a wait(), porque sleep() ya es una función existente y puede causar problemas.


El código funciona tanto en C como en C++.

Problemas al graficar con Octave en Windows


Este problema lo tiene Octave 3.2.4 en Windows, al instalarlo con los paquetes de Octave-Forge (es decir, al instalarlo desde el archivo de instalación para Windows brindado por la página Octave-Forge).
Cuando uno usa el comando plot (o alguna otra función relacionada con graficar), no aparece ningún gráfico, y parece como si la función nunca termina de ejecutarse. Si se cancela con Ctrl+C, y la volvemos a llamar, ahora sí aparece una ventana de gnuplot, pero con el gráfico de la llamada anterior y "tildada", es decir, que no responde a ninguna acción.
El problema está en el paquete oct2mat (cuya función es convertir los archivos .m en estilo de código compatible con Matlab), y la solución es escribir en el prompt de Octave lo siguiente:

pkg rebuild -noauto oct2mat

y reiniciar el programa. La línea anterior deshabilita la carga automática de ese paquete, por lo que no molestará más con los ploteos.
Fuente: Wiki de Octave

Encore ENUWI-N3 en Ubuntu


Esto me hizo renegar mucho... Cuando me compré la placa de red inalámbrica para poder agarrar Internet Wi-Fi, una Encore ENUWI-N3, estuve casi 2 meses sin poder usarla porque no podía instalarla en Ubuntu.
Busqué y busqué en foros y tutoriales y todo Internet, pero la placa seguía sin andar.
Hasta que un día no sé cómo, encontré este tutorial que les dejo a continuación que me salvó la vida... :p. Sólo deben seguir los pasos que ahí se detallan y la placa va a funcionar correctamente.

Wireless: instalar drivers RT2870 Y RT3070 en Ubuntu (Tutoriales Apócrifos)

Aclaro que en Ubuntu 10.10, esta placa ya es detectada automáticamente y funciona al instante sin hacer nada.

Ubuntu no monta automáticamente la unidad USB


Esto me pasaba en Ubuntu 9.10, en la versión 10.10 no tuve más este problema, pero les dejo cómo lo solucionaba por si a alguien le ocurre.
La cosa era así: enchufaba el pen-drive en la computadora, y nunca lo montaba automáticamente. No sólo eso, ni siquiera lo detectaba como una unidad para poder montarlo manualmente con mount. Pero el pen-drive sí era detectado como un dispositivo, el comando lsusb lo listaba, aunque era prácticamente como si no estuviera enchufado.
La solución es fácil: escribir en consola

sudo modprobe usb_storage

escribir la contraseña y listo, la unidad USB va a ser detectada y montada automáticamente, y el ícono va a aparecer en el escritorio.

domingo, 3 de abril de 2011

¡Hola mundo!



Hola a todos. Con este post doy por iniciado y les doy la bienvenida a este blog donde mi principal objetivo es ir compartiendo mis experiencias sobre problemas que me ocurrieron con la computadora, y que tuve que estar un largo rato buscando una solución... por eso acá quiero compartir esas soluciones para que si a alguno le ocurrió el mismo problema, pueda resolverlo de forma rápida y no perder el tiempo.
Pero además, mi intención es compartir mis conocimientos, descubrimientos y aprendizajes sobre otros temas, como son la programación, el software libre, diseño, hardware y cosas sobre informática en general.
¡Espero que les guste y les sea de utilidad!

Johny