A veces, se da uno cuenta que al hacer un tutorial en una computadora, es más fácil dar a entender nuestras ideas por medio de un vídeo. Afortunadamente en Linux existen varios programas que nos pueden ayudar a hacer esta tarea de forma muy sencilla. En este post muestro dos alternativas.
Xvidcap
Xvidcap es una pequeña utilería que realiza sin complicaciones la tarea de hacer un video de nuestro escritorio. Es un programa directo que se puede usar desde la línea de comandos o con una interfaz del usuario.
Instalación
La forma de instalación en Fedora no podía ser más fácil:
Xvidcap tiene un interfaz gráfica muy intuitiva, pero también es posible grabar desde la línea de comandos si es necesario:
xvidcap --gui no --file ~/video.mpg --frames 0 --fps 25 --cap_geometry 1024x768+0+0
Nota:
Desafortunadamente no funciona en Fedora 8(!)
Istanbul
Istanbul es un programa muy sencillo que nos permite hacer grabaciones completas de nuestro escritorio, de una sección o bien de una ventana en particular. La instalación en fedora es por medio de yum:
Al ejecutarlo, aparece un icono de un circulo rojo en el panel superior desde donde podemos configurar y empezar hacer las grabaciones.
Con el botón izquierdo se comienza a grabar y detener la grabación ( al parecer no hay pausa ) y con el botón derecho se tiene acceso al menú de configuración.
En este post se describe como instalar SDLMESS en Linux para emular a la Color Computer 3.

Nada de pantallas azules con la TRS-80 CoCo
Instalación
1. Bajar de http://rbelmont.mameworld.info/?page_id=163 los fuentes del emulador SDLMESS.
2. Desempaquetar los fuentes en /usr/local/share
3. Dentro del directorio sdlmess0124, asegurar que se tenga las comentado las siguientes banderas en el archivo makefile.sdl:
#BUILD_ZLIB = 1
#BUILD_EXPAT = 1
Pues la mayoría de los sistemas Linux ya tienen instaladas esas librerias. Adicionalmente se puede habilitar la siguiente bandera o modificarla con otra de acuerdo al microprocesador de nuestra máquina:
ARCHOPTS= -march=pentiumpro
4. Compilamos con:
Nota:
Si se tiene un sistema de dos procesadores, se debe de agregar la bandera -j3 y -j5 si se utiliza quad-core.
5. Terminada la compilación, es necesario crear el directorio roms donde se deben colocar los archivos con los roms de las computadoras que queremos emular. Para nuestra Color Computer 3, se debee conseguir en internet los roms para MESS ( un archivo coco3h.zip o coco3.zip ) y correr de preferencia la emulación con el microprocesador mejorado 6309 porque de esta forma podemos utilizar practicamente todas las aplicaciones recientes y antigüas que encontremos en Internet.
6. Crear un archivo de configuración cocoh.ini en el directorio ini con los parámetros comunes de uso.
#
# CORE MISC OPTIONS
#
skip_gameinfo
1
#
# WINDOWS VIDEO OPTIONS
#
window 1
maximize 0
#
# MESS SPECIFIC OPTIONS
#
ramsize 524288
skip_warnings 1
7. Agregar la ruta del emulador al $PATH.
8. El emulador se corre con el comando mess.
Algunas consideraciones
- Para acceder a los menúes de configuración es necesario presionar la tecla del bloqueo de desplazamiento (ScrLck) y después presionar la tecla TAB.
Algunas veces como programadores, nos enfrentamos a proyectos que son muy ambiciosos en sus requerimientos, pero al mismo tiempo tienen limitado el presupuesto justamente por su naturaleza experimental o novedosa. Para estos casos, el lenguaje C++ es un candidato idóneo porque al ser Orientado a Objetos nos permite manejar sin problemas la complejidad de este tipo de proyectos y al ser de medio nivel exige (en teoría) menores recursos.
Sin embargo, para obtener la máxima velocidad posible (sin recurir a trucos exótericos y no portables) se tienen que tomar en cuenta algunas consideraciones; de lo contrario es muy fácil caer en técnicas de programación que incluso nos pueden generar código de igual o peor rendimiento que si los hubieramos escrito en algún lenguaje de alto nivel o interpretado.
Poco a poco, conforme vaya teniendo tiempo iré poniendo en este post algunas recomendaciones para escribir código rápido en C++. Pero mientras tanto aquí están los primeras técnicas:
Pasar todo por referencia
En C y en C++ por defecto, en una función todo se pasa por valor y los parámetros son inicializados con copias de los argumentos. El procesamiento interno realizado para hacer estas copias hace que nuestras funciones sean inecesariamente ineficientes. Entonces, la recomendación es pasar todo por referencia o en su defecto usar apuntadores (punteros).
De igual forma, es muy fácil caer en la tentación de regresar copias de objetos en una función de esta manera:
Clase procesaClase
( Clase clase_entrada <-- Aqui alentamos
) {
// Se hace algo aquí
return clase_regreso; <-- Aqui alentamos
}
Claro que programar así puede ayudarnos en una emergencia a escribir código rapidamente (no nos preocupamos por la administración de memoria); pero de igual forma es MUY costoso en eficiencia.
El código anterior, queda mejor así:
void procesaClase
( const Clase &clase_entrada, Clase &clase_regreso
) {
// Se hace algo aquí
}
Evitar las copias en forma automática
Ahora que sabemos que las copias pueden hacer ineficiente nuestro código, es deseable contar un método automático que nos evite usarlas de forma accidental. Las solución, como adivino el lector, es declarar privados al constructor de copia y al operador de asignación, pero sin definirlos; así cuando queramos hacer una copia "involuntaria", el compilador nos avisará marcando errores y evitará que nuestro código se compile.
#include <iostream>
using namespace std;
class Clase {
private:
// Evitar las copias:
Clase( const Clase &clase );
Clase & operator= ( const Clase & clase );
public:
Clase() { cout <<"Constructor" <<endl; }
~Clase() { cout <<"Destructor" <<endl; }
};
int main() {
Clase clase;
Clase clase2;
clase2 = clase; //error
return 0;
}
Si disponemos de un equipo de varios núcleos, procurar programar con hilos
Próximamente
Evitar el uso de plantillas en lo posible
Las plantillas son muy utiles, pero la generalización tiene un precio a pagar. Si en realidad se desea gran velocidad de ejecución y no se utiliza varios tipos de datos en una misma clase, es mejor tener una clase especializada con los tipos fijos.
Usar funciones inline
Las funciones privadas que se utilizan dentro de la misma clase, deben de ser indicadas como funciones en línea. Con esto serán tratados como copy & paste donde son llamadas y evitaremos el costo de la carga de funciones. Sin embargo esto puede aumentar un poco el tamaño de nuestro código objeto.
Elegir un buen compilador y experimentar con sus variables de optimización
El compilador de C++ y sus optimizaciones pueden marcar la diferencia con mejoras de más del 50% en algunos casos. Realmente vale la pena gastar un poco de tiempo conociendo a fondo los parámetros de optimización de los compiladores que tenemos a la mano.
Advertencia
De nuevo y como siempre, toda técnica debe saberse cuando aplicarse y los consejos que presenté seguramente no son válidos en todas las situaciones; incluso pueden llegar a ser polémicos. El lector debe usarlos sabiamente para evitar que le sean incluso contraproducentes.
Tagged as:
c++,
optimización
Aprovechando que mi prima es una gran repostera, con su talento se unió la informática y el arte culinario para hacer un pequeño cluster de tres nodos de galletas decoradas usando una distribución "Tux Cookie" como base
Por cierto, si requieren galletas decoradas con algún logotipo, se pueden comunicar con nosotros al correo galletasdekoradas@gmail.com
Tagged as:
Cookies,
Galletas,
Galletas decoradas,
Gastronomía,
Linux,
Tux
Una de las ventajas de haber vivido en la década de los 80's del Siglo XX, es que pude ser testigo de la evolución de las computadoras de 8 bits. Fue una época fascinante porque existían una infinidad de máquinas y cada una era completamente diferente por su hardware y su software. Cada una era especial por lo que sus limitantes y ventajas ayudaban a los usuarios y programadores a sacarle el mayor provecho posible. Por eso no es raro que incluso hoy (2008) existan usuarios que las quieran y las sigan utilizando.
Surgieron durante esa época una enorme cantidad de juegos. Algunos tipo celular y otros realmente memorables que dan ganas de jugarlos por siempre. Afortunadamente, podemos utilizar un emulador para correrlos de nuevo pero ahora desde la comunidad de nuestra pantalla plana.
Mi computadora favorita, la Color Computer puede cobrar vida nuevamente en mi PC con el emulador MESS sin temor a que la real tenga más desgaste del que ya tiene. Hay una versión para windows y otra para Linux. En este post se trata la instalación en Windows.
Instalando MESS
1. Bajar la versión optimizada para i686 de MESS en la página de descargas (http://www.mess.org/download.php).
2. Como MESS no tienen un instalador, hay que desempaquetar el archivo zip en un directorio nuevo.
3. En el escritorio, creamos un acceso directo al archivo messuipp.exe desde el cual podemos arrancar comodamente nuestro emulador.

4. Hacemos un directorio llamado ROM en el cual se deben colocar los roms de las máquinas que deseemos usar. Para nuestra Color Computer 3, se debee conseguir en internet los roms para MESS ( un archivo coco3h.zip o coco3.zip ) y correr de preferencia la emulación con el microprocesador mejorado 6309. De esta manera podemos utilizar practicamente todas las aplicaciones recientes y antigüas que encontremos en Internet.
Algunas de las opciones que yo pongo por defecto:
Color Computer 3 (NTSC; HD6309)/Properties/Display/Run in a window
Color Computer 3 (NTSC; HD6309)/Properties/Advanced/Triple buffering
Estas las que desactivo:
Color Computer 3 (NTSC; HD6309)/Properties/Display/Start up Maximized
Y ya que compruebo que todo funciona bien:
Color Computer 3 (NTSC; HD6309)/Properties/Miscelaneous/Skip System Info
Color Computer 3 (NTSC; HD6309)/Properties/Miscelaneous/Skip Warnings
El cual nos crea un archivo ini/coco3h.ini con está configuración:
#
# CORE MISC OPTIONS
#
skip_gameinfo
1
#
# WINDOWS VIDEO OPTIONS
#
window 1
maximize 0
#
# FULL SCREEN OPTIONS
#
triplebuffer 1
#
# MESS SPECIFIC OPTIONS
#
ramsize 524288
skip_warnings 1
5. Al darle doble click a Color Computer 3 (NTSC; HD6309), debemos ver nuestra conocida pantalla verde:
En el menú devices podemos montar imagenes de diskettes o de grabaciones de cintas de cassettes.
Notas:
- Utilizar el comando RGB en el archivo de autoexec o en los programas que hagamos si usamos modo de video RGB.
Tagged as:
coco,
os9