Escrito por Iván Alonso el Martes 17 de Noviembre de 2009

Cuando vamos a deshacer algún cambio en Xcode, nos encontraremos con el siguiente aviso cuando alcancemos el punto en que el archivo fue guardado por última vez:

“You are about to undo past the last point this file was saved. Do you want to do this?”

Pesadez infinita… Lo eliminamos ejecutando lo siguiente desde la terminal:

defaults write com.apple.Xcode XCShowUndoPastSaveWarning NO
Escrito por Iván Alonso el Lunes 16 de Noviembre de 2009

Con este primer post vamos a marcar los principios de una serie de entradas sobre desarrollo con OpenGL y C++. Dado que últimamente estoy utilizando mi nuevo Mac para todo, todos los ejemplos los voy a ir haciendo sobre OS X (y, salvo imposibilidades de fuerza mayor, en XCode, para ir cogiendo más soltura con el entorno).

¿Qué es OpenGL? Es una librería para gráficos 2D y 3D.

200911162133.jpg

¿Por qué voy a usar OpenGL y no <inserta aquí tu librería favorita>? Por muchas razones. Principalmente porque es un estándar aceptado profesionalmente, lo que significa que aprender te puede incluso servir de algo en la vida, además de únicamente para satisfacer tus ansias de conocimiento. Segundo porque es utilizable en muchas plataformas (Windows, Mac, Linux…). Esto es posible porque es una librería enfocada únicamente a lo que está enfocada: renderizar gráficos. No tiene conceptos de ventanas ni interactúa en modo alguno con el sistema de ventanas de ningún sistema operativo, ni se encarga de manejar la entrada desde los periféricos ni una larga serie de cosas que son distintas en cada sistema. Y tercero, porque tiene bindings a (es utilizable desde) una multitud de lenguajes, desde Smalltalk hasta C#, pasando por Visual Basic, el tiempo sigue pasando, siguen apareciendo lenguajes nuevos, pero puedes seguir utilizando OpenGL.

¿Y por qué no DirectX? Por una simple cuestión de cantidad de plataformas a las que puedes llegar con OpenGL (lógicamente mucho mayor a la de DirectX). Hasta donde llega mi conocimiento con ambos sistemas se pueden conseguir resultados idénticos mediante las mismas funcionalidades. De hecho, la experiencia adquirida con cualquiera de los dos sistemas probablemente te permita seguir haciendo lo mismo con el otro.

Más información en la wikipedia y en la página de OpenGL. Tutoriales interesantes en NeHe.

A ver si en el siguiente post ya conseguimos que algo se mueva en pantalla…

Escrito por Iván Alonso el Lunes 16 de Noviembre de 2009

Facebook Lite es un rapido, mas simple camino para manteenerte en contacto con tus amigos. Si te gusta, tu puedes elegir utilizarlo en uno de el Facebook regular yendo a el menù Herrmientas. Nosotros aun tenemos trabajo que hacer antes de que este completo, pero nosotros apreciariamos obtener tu hoja de vuelta en lo que tenemos construido hasta ahora.

Creo que sí, aún tienen trabajo que hacer antes de que esté completo.

Escrito por Iván Alonso el Lunes 16 de Noviembre de 2009

Necesitamos instalar:

  1. Mono para OS X (incluye Mono, GTK# y Cocoa#)
  2. MonoDevelop para OS X

Con la primera ejecución de MonoDevelop nos buscará las últimas actualizaciones.

Para comprobar que todo está funcionando correctamente, crearemos una aplicación de prueba que muestre un Hola Mundo, pero la peculiaridad estará en que utilizaremos los mismos espacios de nombres que usamos cuando programamos bajo Windows. Es decir, no utilizaremos GTK#, Cocoa#, ni ningún otro subsistema, sino WinForms.

Creamos una nueva solución C# vacía, como la siguiente:

Captura de pantalla 2009-11-16 a las 13.49.15.png

Tras esta ventana, puede aparecer otra para activar determinadas opciones para personalizar el proyecto, pero no marcaremos ninguna (en caso de necesitarlas, puede hacerse posteriormente en las opciones del proyecto).

Se habrá creado la solución HolaMundo con el proyecto HolaMundo en su interior. Haciendo click derecho sobre el proyecto añadiremos un nuevo archivo C# (Añadir, Nuevo Archivo, Empty Class, y le ponemos como nombre -por ejemplo- CHolaMundo).

Captura de pantalla 2009-11-16 a las 13.53.28.png

Captura de pantalla 2009-11-16 a las 13.54.50.png

Incluiremos el siguiente código en el nuevo archivo creado:

using System;
using System.Windows.Forms;
 
namespace HolaMundo
{
   public class CHolaMundo : Form
   {
      static public void Main ()
      {
         Application.Run (new CHolaMundo ());
      }
 
      public CHolaMundo ()
      {
         Text = "Hello Mono World";
      }
   }
}

Si intentamos compilar en este momento, nos devolverá el error:

Error CS0234: The type or namespace name `Windows’ does not exist in the namespace `System’. Are you missing an assembly reference?

La razón es que, por defecto, el compilador de C# incluído con mono únicamente referencia los siguientes ensamblados: mscorlib.dll, System.dll y System.Xml.dll. Para que el proyecto sepa que debe referenciar System.Windows.Forms, podemos lanzar el compilador desde línea de comandos (con el parámetro -r:System.Windows.Forms.dll), o añadirlo permanentemente a las opciones del proyecto.

Bajo el nombre del proyecto, en los archivos de la solución, veremos la carpeta Referencias, sobre la que haremos doble click, y buscamos el ensamblado que queremos referenciar en nuestro proyecto:

Captura de pantalla 2009-11-16 a las 14.09.23.png

Tras incluirlo, la solución ya funcionará perfectamente, por lo que podemos hacer un Build (Command+K) y Ejecutar (Command+Alt+Enter), y podremos ver este resultado:

Captura de pantalla 2009-11-16 a las 14.17.19.png

Desde luego no es la aplicación de .Net más compleja que podíamos utilizar como ejemplo, pero ya es algo. Y tanto el código utilizado como el ejecutable resultante son 100% compatibles con sistemas Windows.

Escrito por Iván Alonso el Jueves 12 de Noviembre de 2009

200911121051.jpg

Gordon, la mascota de Go

Los pasos necesarios que hay que realizar para poder programar, compilar y enlazar código en Go sobre Mac OS X son los siguientes (que no son más que una explicación algo más extendida y específica para Mac de la página de información en golang, distribuida mediante una licencia cc-by-3.0). Si buscáis un manual sobre cómo hacer lo mismo pero sobre Ubuntu, os recomiendo este de MundoGeek.

Necesitamos incluir nuevas variables de entorno, que serán utilizadas por varios componentes posteriores. Para esto editamos nuestro archivo .bashrc, que está en nuestro directorio personal o home, y añadimos al final las siguientes líneas:

export GOROOT=$HOME/go
export GOOS=darwin
export GOARCH=amd64
export GOBIN=$HOME/bin
export PATH=$PATH:$GOBIN

Obviamente, debemos acordarnos de crear estos dos directorios dentro de nuestra home: go y bin.

GOOS especifica que estamos utilizando un Mac, y GOARCH que utilizaremos la arquitectura de 64 bits. Si tenemos un equipo de 32 bits utilizaremos GOARCH=386. Una vez editado este archivo comprobaremos que el funcionamiento es el correcto desde una nueva terminal, con el comando:

$ env | grep GO

Una vez establecidas las variables de entorno nos descargaremos el resto de herramientas del repositorio de Go, para lo que tendremos que utilizar la herramienta Mercurial para Mac.

200911121050.jpg

Desde la misma portada de la web de mercurial podremos descargarnos directamente la última versión de la aplicación (1.3.1 en el momento de escribir estas líneas), que será un paquete mpkg que debemos instalar. Una vez terminado este proceso ya dispondremos de todos los comandos necesarios desde la terminal, como el gestor de código distribuido hg (podéis probar a ejecutar hg sin ningún parámetro desde la terminal y podréis ver cómo ya está funcionando).

Tras esto nos descargaremos todo el código relacionado con el proyecto Go, utilizando el siguiente comando:

$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT

El proceso será como sigue, y se realizará en apenas un par de minutos:

$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
requesting all changes
adding changesets
adding manifests
adding file changes
added 3976 changesets with 16799 changes to 2931 files
updating working directory
1640 files updated, 0 files merged, 0 files removed, 0 files unresolved
$

Tras habernos descargado todo el código necesario, podemos generar las herramientas finales que utilizaremos. Para esto es necesario disponer en nuestra máquina de gcc, bison, libc6-dev y el editor ed. Todas estas herramientas estarán ya instaladas en el sistema si tenéis instalado el IDE XCode, algo que, por otra parte, recomiendo.

Supongo que si os estáis dedicando a desarrollo de software sobre un Mac ya lo tendréis instalado, si no, aquí está disponible. Sólo necesitáis estar dados de alta como desarrolladores en developer.apple.com para poder realizar cualquier descarga.

Comenzamos la generación de las herramientas con:

$ cd $GOROOT/src
$ ./all.bash

Lo que podrá llevar un rato de intenso floodeo de información en la terminal, mientras se realizan todas las compilaciones, pruebas unitarias, etc., etc. Al terminar, tal y como especifica el manual de instalación de Go, el proceso mostrará algo similar a:

[...]
--- cd ../test
N known bugs; 0 unexpected bugs

Donde N es un número que varía dependiendo de la versión que hayamos descargado. En mi caso particular, utilizando Snow Leopard y las especificaciones que os he mostrado (darwin, amd64), no se encuentra ningún fallo.

[...]
--- cd ../test
0 known bugs; 0 unexpected bugs

Por último, ahora que ya se han generado todas las herramientas necesarias, utilizaremos el clásico ejemplo del Hola Mundo para comprobar que todo funciona como debe. Cremos el archivo hello.go (si nuestras variables de entorno son correctas, podemos hacer esto en cualquier lugar, por ejemplo en una carpeta en el escritorio), con el siguiente contenido:

package main
import "fmt"
 
func main() 
{
   fmt.Printf("hello, world\n")
}

Lo compilamos con el comando 6g. Este es el compilador que hemos generado para amd64, si estuvieramos utilizando 386 el comando sería 8g. Esta será además la nomenclatura utilizada para todos los comandos y extensiones de archivo resultantes, utilizando siempre un 6 para amd64, un 8 para 386 y un 5 para arquitecturas arm.

6g hello.go

Se ha generado con esto el archivo hello.6, que enlazamos con el comando 6l:

6l hello.6

Y por último se habrá creado un archivo ejecutable de nombre 6.out, que podemos lanzar como cualquier otro ejecutable Unix:

$ ./6.out
hello, world
$

Y con esto y un bizcocho ya podemos empezar a programar en Go, echándole un vistazo a toda la información que se puede encontrar en su página web, golang.org.

Escrito por Iván Alonso el Martes 10 de Noviembre de 2009

Últimamente vengo utilizando la agenda personal de espoiler.tv para organizar las series que estoy viendo. Aparte de un blog escrito por Hernán Casciari, que te va poniendo al día de las novedades en el mundo televisivo internacional (usa y uk, principalmente), tiene una serie de herramientas bastante interesante, como una amplia base de datos de series (que, siendo realistas, no necesita nadie existiendo tv.com), y una agenda personal.

¿Como se utiliza? Te das de alta con un par de clicks y eliges las series que estas siguiendo de entre su base de datos. Marcas cuál es el último capítulo que has visto de las mismas, y podrás ver una parrilla interesante que te informa de qué se ha emitido y cuándo.

Incluye también otra serie de herramientas, como facilidades de búsqueda de lugares de descarga, tanto para enlaces de descarga directa como para torrents… pero no nos engañemos, no tiene información sobre ningún enlace, sino que simplemente crea sobre la marcha búsquedas de google para que encuentren el nombre de la serie seguido de el número del episodio. Pueden encontrar lo que tú buscas… o no.

¿Tiene eso alguna utilidad real? Lo dudo. Los que ya sabemos dónde buscar las cosas sabemos en qué páginas nos proporcionan mejores facilidades, como una paridad perfecta entre los archivos de vídeo y los subtítulos, o donde también podamos encontrar episodios doblados, algo que algunos quieren/necesitan y que espoiler.tv deja completamente de lado.

Captura de pantalla 2009-11-10 a las 18.14.37.png

Captura de pantalla 2009-11-10 a las 18.20.52.png

Algunas de las series que estoy viendo ahora mismo

(tal y como aparecen en la agenda de espoiler.tv), por si queréis recomendaciones

¿Y entonces para qué utilizar algo como espoiler.tv? En mi caso particular, sólo como sustituto tecnológico de nuestro anterior sistema: un cuaderno junto a los mandos de la tele donde apuntábamos el último capítulo en el que nos habíamos quedado. Ahora, si paso por casa de algún amigo con un disco duro portátil, puedo echar un vistazo al último episodio que he visto de cada serie.

Mi recomendación: el blog es interesante, se aprenden algunas cosas sobre series antiguas y te enteras de las últimas noticias. Y de vez en cuando conoces alguna serie que no habías visto. Las herramientas, exceptuando la agenda personal, son completamente prescindibles. Ojalá tuvieran esta agenda en algunos foros que conozco…

Escrito por Iván Alonso el Viernes 6 de Noviembre de 2009

O el clásico “me disculpo por la longitud del mensaje, no he tenido tiempo de hacerlo más corto“.

200911061822.jpg

Lo sorprendente es que aún me pasa dependiendo de quién sea el destinatario del correo.

Escrito por Iván Alonso el Jueves 5 de Noviembre de 2009

Hoy, haciendo una búsqueda normal y corriente en Google, me encuentro con esto:

En respuesta a las quejas que hemos recibido en relación con la Digital Millennium Copyright Act (ley estadounidense de protección de los derechos de autor), hemos eliminado 1 resultados de esta página. Si lo desea, puede leer la queja de DMCA que ha originado la retirada de estas páginas en ChillingEffects.org.

Primera vez que lo veo. Y además era por una reclamación de Audiovisual Sport acerca de las competiciones de fútbol españolas (antes de que nadie pregunte, mi búsqueda no tenía absolutamente nada que ver… buscaba un wiki sobre una saga de libros que estoy leyendo).

Es curioso ver cómo, aunque no consigas que eliminen tus contenidos de la red, puedes quejarte a Google para que deje de indexarlos.

Escrito por Iván Alonso el Miércoles 4 de Noviembre de 2009

He estado echando un vistazo a aplicaciones para publicar posts sin necesidad de conectarme al propio blog, editar el post en su sistema de edición web, teniendo que incluir las imágenes una a una, etc. En realidad el primer pensamiento fue intentar programar una aplicación sencilla para Mac, pero rápidamente me di cuenta de que, si se me ha ocurrido a mí, ya debía existir.

200911041149.jpg

Así que he estado buscando las opciones disponibles y me ha parecido que Ecto era la mejor aplicación de escritorio para publicar en blogs bajo Mac (si alguien está en desacuerdo, por favor explayaos en los comentarios y dejad enlaces para que pruebe otras aplicaciones). Es una aplicación de pago, aunque con una versión de prueba que dura bastante, así que para hacerse una idea de lo que tiene basta. Y después, la ética de cada cual sabrá qué hacer.

Únicamente debes configurarlo indicando las url de tus blogs, su punto de entrada xml (que hay que activar en los paneles de administración, aunque yo ya lo tenía hecho para poder editar y publicar desde el iPhone), y tu nombre de usuario y contraseña, obviamente. A partir de ahí, Ecto te da un listado de los posts ya publicados, etiquetas y categorías, y un sistema de escritura y edición de contenidos mucho más sencillo, y rápido, que cualquier interfaz web.

Si quieres publicar un post que incluye una foto, únicamente tienes que arrastrarla a la aplicación (incluso desde el navegador web). Cuando el post se publique, la propia aplicación se encargará de subirla a tu propio blog (para no hacer hotlinking) y de publicar con el mismo formato que estás utilizando en tu editor en ese momento.

Ecto.png

Captura durante la edición de este propio post

Lo cierto es que desde que uso un Mac la productividad se ha multiplicado. Por ejemplo, para incluir la imagen anterior, en Windows habría necesitado: capturar la pantalla, abrir la captura en un programa de edición, recortar lo que interesa, cambiar el tamaño del recorte para que tenga el ancho que me interesa, y guardar como un determinado formato (las capturas son en bmp), sin contar la edición del post. Ahora, con la combinación Command + Shift + 4 hago una captura directamente de un trozo del escritorio (que además ya se hace en png). Con el propio programa Vista Previa (el equivalente hipervitaminado a un vista previa de imágenes + pdf) puedo editar el tamaño en un momento, y con arrastrar el icono desde el escritorio hasta Ecto ya está añadida en el post. Menos de diez segundos.

En Windows utilizaba Paint.Net, que es un editor de imágenes fantástico, pero tenía que utilizar un par de pasos más para cambiar formatos y recortar trozos de imagen y, además, Vista Previa para Mac es una aplicación excepcionalmente ligera y de arranque muy rápido (y viene por defecto con el sistema operativo). Y para terminar el combo, si añades una aplicación para publicación en blogs desde el escritorio, la velocidad se multiplica aún más. Muy recomendable.

Si utilizáis otros sistemas operativos distintos a OS X, dejad algún apunte para conocer otras aplicaciones parecidas, porque yo no había utilizado ninguna hasta ahora y la diferencia es abismal.

Escrito por Iván Alonso el Miércoles 28 de Octubre de 2009

Cuanto más rojo sea el color, peor conexión (hablando de la relación ancho de banda/precio). Fijándonos en las barras del gráfico inferior, estamos muy a la derecha, lejos incluso de la media del mundo civilizado, con un ancho de banda que es, de media, prácticamente el mismo que Méjico o Grecia.

Viendo los 61 mbps que tiene Japón (¡de media!) me entran ganas de llorar.