OpenGL en Ubuntu
Para compilar programas que utilicen openGL, necesité instalar primero
El build-essential instalará las cosas que necesitas para compilar c++ y usar los makefiles. Por otro lado freeglut3-dev te proporcionará las bibliotecas que necesitas para crear programas openGL.
Inspiración

Este ejemplo crea un humanoide utilizando paralelepipedos que puedes girar y escalar con las letras ‘w’, ‘a’, ’s’ y ‘z’, la combinación de cualquiera de estas letras con la tecla
//#include <Windows.h>
#include <GL/glut.h>
#include <cstdlib>
//sample input:
// {1, 1, -1},{1, 0, -1},{1, 0, 0},{1, 1, 0}
// {0, 1, -1},{0, 0, -1},{0, 0, 0},{1, 0, 0}
// We are using the Standard Template Library namespace
using namespace std;
#define VERTICES 8
#define FACES 6
float angleX = 0.0f;
float angleY = 0.0f;
float angleZ = 0.0f;
float transZ = -10.0f;
float g_fCubeCoords[8][3];
void initGraphics(int argc, char* argv[]);
void startRendering();
void reshape(int w, int h);
void keyboard(unsigned char key, int x, int y);
void display();
void dibujaCubof(float width,float height, float depth){
//calcula 8 vertices
double mid_w= width/2.0, mid_h=height/2.0, mid_d=depth/2.0;
g_fCubeCoords[0][0]= mid_w;g_fCubeCoords[0][1]= mid_h;g_fCubeCoords[0][2]= mid_d;
g_fCubeCoords[1][0]= mid_w;g_fCubeCoords[1][1]= mid_h;g_fCubeCoords[1][2]=-mid_d;
g_fCubeCoords[2][0]= mid_w;g_fCubeCoords[2][1]=-mid_h;g_fCubeCoords[2][2]=-mid_d;
g_fCubeCoords[3][0]= mid_w;g_fCubeCoords[3][1]=-mid_h;g_fCubeCoords[3][2]= mid_d;
g_fCubeCoords[4][0]= -mid_w;g_fCubeCoords[4][1]= mid_h;g_fCubeCoords[4][2]= mid_d;
g_fCubeCoords[5][0]= -mid_w;g_fCubeCoords[5][1]= mid_h;g_fCubeCoords[5][2]=-mid_d;
g_fCubeCoords[6][0]= -mid_w;g_fCubeCoords[6][1]=-mid_h;g_fCubeCoords[6][2]=-mid_d;
g_fCubeCoords[7][0]= -mid_w;g_fCubeCoords[7][1]=-mid_h;g_fCubeCoords[7][2]= mid_d;
glBegin(GL_QUADS);
/// Front face
glVertex3fv(g_fCubeCoords[0]); glVertex3fv(g_fCubeCoords[1]);
glVertex3fv(g_fCubeCoords[2]); glVertex3fv(g_fCubeCoords[3]);
/// Back face
glVertex3fv(g_fCubeCoords[4]); glVertex3fv(g_fCubeCoords[5]);
glVertex3fv(g_fCubeCoords[6]); glVertex3fv(g_fCubeCoords[7]);
/// Left face
glVertex3fv(g_fCubeCoords[0]); glVertex3fv(g_fCubeCoords[3]);
glVertex3fv(g_fCubeCoords[7]); glVertex3fv(g_fCubeCoords[4]);
/// Right face
glVertex3fv(g_fCubeCoords[1]); glVertex3fv(g_fCubeCoords[5]);
glVertex3fv(g_fCubeCoords[6]); glVertex3fv(g_fCubeCoords[2]);
/// Top face
glVertex3fv(g_fCubeCoords[0]); glVertex3fv(g_fCubeCoords[4]);
glVertex3fv(g_fCubeCoords[5]); glVertex3fv(g_fCubeCoords[1]);
/// Bottom face
glVertex3fv(g_fCubeCoords[3]); glVertex3fv(g_fCubeCoords[2]);
glVertex3fv(g_fCubeCoords[6]); glVertex3fv(g_fCubeCoords[7]);
glEnd();
}
int main(int argc, char* argv[])
{
initGraphics(argc, argv);
startRendering();
return 0;
}
void initGraphics(int argc, char* argv[])
{
glutInit( &argc, argv ); // Start GLUT with command line arguments
glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB ); // Set up the display mode
glutInitWindowSize( 500, 500 ); // Set window init size
glutInitWindowPosition( 0, 0 ); // Set window init position
glutCreateWindow( "Humanoide con cubos" ); // Create the window with the string as its name
// GLUT rendering functions
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutDisplayFunc( display ); // Set up pointer functions
}
void startRendering()
{
glEnable(GL_DEPTH_TEST);
// Start rendering
glutMainLoop();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(100.0f, (GLfloat)w/(GLfloat)h, 0.1, 100);
}
void display()
{
static int i = 0;
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
glTranslatef(0.0f, 0.0f, transZ);
glRotatef(angleX, 1.0f, 0.0f, 0.0f);
glRotatef(angleY, 0.0f, 1.0f, 0.0f);
glRotatef(angleZ, 0.0f, 0.0f, 1.0f);
//torso
glColor3f(.3,.9,0);
dibujaCubof(3,4,1);
//pierna izquierda
glColor3f(0.0f,0.5f,0.1f);
glTranslatef (1,-3.5,0);
dibujaCubof(1,3,1);
//pierna derecha
glTranslatef(-2,0,0);
dibujaCubof(1,3,1);
//espinillas
glTranslatef(0,-3,0);
dibujaCubof(1.5,3.5,1.5);
glTranslatef(2,0,0);
dibujaCubof(1.5,3.5,1.5);
//PIES
glColor3f(1,1,1);
glTranslatef(.25,-2,.25);
dibujaCubof(2,.5,2);
glTranslatef(-2.5,0,0);
dibujaCubof(2,.5,2);
//cabeza
glTranslatef(1.25,11.5,0);
dibujaCubof(2,2,2);
//brazos
glColor3f(0.0f,0.5f,0.1f);
glTranslatef(2.75,-2,-.25);
dibujaCubof(2.5,1,1);
glTranslatef(-5.5,0,0);
dibujaCubof(2.5,1,1);
//codos
glColor3f(1,1,1);
glTranslatef(-1.75,0,0);
dibujaCubof(1,1.4,1.4);
glTranslatef(9,0,0);
dibujaCubof(1,1.4,1.4);
//manos
glColor3f(0.0f,0.5f,0.1f);
glTranslatef(1,0,0);
dibujaCubof(1,1,1);
glTranslatef(-11,0,0);
dibujaCubof(1,1,1);
glPopMatrix();
glutSwapBuffers();
}
void keyboard(unsigned char key, int x, int y)
{
switch(key)
{
case 27:
exit(0);
case 'w':
angleX += 1.0f;
break;
case 'W':
angleX -= 1.0f;
break;
case 's':
angleZ += 1.0f;
break;
case 'S':
angleZ -= 1.0f;
break;
case 'a':
angleY += 1.0f;
break;
case 'A':
angleY -= 1.0f;
break;
case 'z':
transZ += 0.1f;
break;
case 'Z':
transZ -= 0.1f;
break;
default:
break;
}
glutPostRedisplay();
}
Para compilar y ejecutar el ejemplo ‘humanoide.cpp’ utilizamos este par de línea.
./humanoide
Cómo instalar fuentes .otf en Ubuntu
iQ font – When driving becomes writing / Full making of
En Make Online me encontré con este divertido proyecto (puedes bajar la fuente aquí). Despues de ver el video quisé usar esta fuenta en el OpenOffice, pero resulta que no soporta las fuentes .otf (OpenType).
La solución que encontré es transformarla a .ttf, copiarla a la carpeta de fuentes y al final reconstruir el caché de fuentes.
Inspiración

Instrucciones
Paso 1. Crear una archivo otf2ttf.sh y pegar el siguiente código.
# Quick and dirty hack: converts a font to truetype (.ttf)
Print("Opening "+$1);
Open($1);
Print("Saving "+$1:r+".ttf");
Generate($1:r+".ttf");
Quit(0);
Nota: No te olvides de darle permisos de ejecución al script
Paso 2. Instalar fontforge
Paso 3. Ejecutar la siguiente línea de comando para realizar la conversión.
Paso 4. Copiar el archivo FONTNAME.ttf a /usr/share/fonts
Paso 5. Reconstruir el caché de fuentes
Twitter integrado en Pidgin

El plugin microblog-purple permite integrar un cliente twitter a tu Pigdin, con el que podrás leer los mensajes más recientes y postear, todo como si se tratase de un chat.
En Ubuntu Intrepid, añadimose al repositorio (Sistema -> Administración -> Orígenes del software) la siguiente línea:
Después de recargar la lista de paquetes, instalamos con la siguiente línea:
Basado en este post
¿Cómo eliminar la contraseña de tus archivos PDF?
Solo si conoces el password del PDF del que quieres eliminarlo, puedes usar la herramienta de línea de comandos pdftops y ps2pdf para liberar tu PDF de sus cadenas.

1. Instala pdftops. En Ubuntu, puedes escribir:
2. Instala ps2pdf (parece que ya se incluye por default en Ubuntu)
3. Convierte el PDF a un archivo postscript, usando el password:
4. Convierte el postscript resultante (file.ps) de regreso a un PDF:
Post original @townx
Esta fue la forma larga, si no les funciona pueden probar con qpdf,
1. Instalan con la línea:
2. Eliminan la contraseña con:
Flickrfs: montar tu cuenta Flickr de Yahoo! en tu escritorio

Acostumbraba almacenar las imágenes que utilizo en este blog en una cuenta de google pages, pero como ésta ya no es una opción, tuve la necesidad de buscar otra manera de hacerlo. Aquí es donde el servicio Flickr de Yahoo! entra en escena. Después de hacer el upgrade del Ubuntu 8.04 al Intrepid 8.10, encontré en los repositorios: Flickrfs.
Hechos:
- Flickrfs es un sistema de archivos virtual que se monta en tu máquina como si fuera otra partición más. Una vez que se montó, obtiene toda la información sobre las imágenes hospedadas en tu cuenta de flickr y los muestra como archivos.
- Facilmente puedes copiar fotos de tu máquina a la partición montada y automaticamente se cargarán a tu cuenta de flickr. De forma similar puedes copiar los archivos montados a tu máquina local y éstos serán descargados.
- Flickrfs usa FUSE (Filesystem in USErspace).
- Todos los archivos montados tiene un meta archivo asociado, el cual proporciona acceso al título, descripción, tags e información de licensia. Modificar cualquiera de estos campos y guardarlos causará que también se actualicenen el servidor.
Se instala con esta línea
Después creamos una carpeta en blanco en donde se montará nuestra cuenta de Flickr, por ejemplo:
y ejecutamos flickrfs con la siguiente línea
Se abrirá un navegador que mostrará una imagen parecida a esta

Después de autorizar el acceso de flickrfs y si todo sale bien, el siguiente mensaje se mostrará en la consola.
Dentro de la carpeta ~/FlickrDownloads/sets se pueden crear los nuevos álbumes.
Mas información en el blog de Manish Rai Jain
¿Como crear tus propios ringtones con el audio de los videos de youtube?

Si has googleado mucho y no encunetras el ringtone que buscas… y además estás cansado de los sitios en donde te piden registrar hasta el nombre de tu perro entonces este post es para tí.
Los usuarios linux sabemos que al reproducir videos como los de youtube se crea un archivo temporal flv en la carpeta /tmp y esta es la clave de todo el proceso. Extraemos del .flv el audio, lo editamos y lo guardamos como mp3.
Estos son los pasos que seguí para hacer el proceso, ¡no son más de 10 minutos!
1. Busca en youtube algún video con el audio que buscas.
2. Deja cargar el video y copia el archivo temporal que está /tmp.
3. Renombra el archivo como file.flv
4. Instala el convertidor de flv a ogg con la siguiente línea
5. Extrae el audio del archivo flv con el comando
6. Ahora tienes un archivo de audio con el mismo nombre del flv: “file.ogg”
7. Instala Audicity si quieres solo una sección del audio con la siguiente línea.
8. En Audicity abre el archivo “file.ogg”, selecciona la parte del audio que quieres, luego Editar->Recortar, después Archivo->Exportar selección… , escoje el fomato mp3 y listo!.
¿Cómo usar Foxit Reader en Ubuntu?
Por mucho tiempo he estado usando el Evince como visor de documentos PDF. Hasta hoy tuve la necesidad de hacer notas sobre un libro (en PDF) y recordé que con Foxit Reader es posible, lo malo es que solo es para güindous. Descargué el Foxit Reader aquí y lo ejecuté con Wine y bualá, ahora puedo hacer notas y subrayar mis PDFs. El único inconveniente es que marca la esquina superior derecha de las páginas con una leyenda mientras el producto no esté registrado, lo cuál no me molesta del todo.

Lo segundo fue establecer FoxReadear como visor predeterminado en Ubuntu, este script que encontré aquí (tutorial completo) hace el trabajo.
# Purpose: To convert Linux-style filename to Windows-style to pass as an argument
# to wine when starting Foxit Reader
Filename="z:"${1//\//\\}
#assuming you use the default installation folder for Foxit in Wine
App='eval wine "/home/dennys/shared_folder/FoxitReader30_enu/Foxit Reader.exe" "'$Filename'"'
$App
Solo hay que cambiar la linea ‘eval wine….’ con la ruta del ejecutable “Foxit Reader.exe”, después elegir un archivo PDF, click-derecho “Abrir con otra Aplicacion”, seleccionar el script “foxit.sh” y ya. Ahora podras visualizar tus documentos en FoxitReader con un doble-click.
