Educación y creatividad
Posted by Alberto - 30/11/10 at 01:11:06 amEstos dias estoy estudiando un curso sobre innovación y creatividad en la Universitat Oberta de Catalunya. A raiz de ello, he podido ver este video sobre educación y creatividad, que me ha parecido muy interesante y quiero compartir con vosotros.
Resolver falsos checkouts usando ClearCase y Eclipse
Posted by Alberto - 08/11/10 at 01:11:03 amHe estado usando ClearCase y Eclipse en un entorno Unix durante los últimos ocho meses. Uno de los problemas más comunes con los que me he topado en todo este tiempo es que, trabajando con vistas estáticas, a veces ocurría que en Eclipse me aparecía algún fichero en checkout, cuando realmente no lo estaba. Con lo cual se daba una situación en la que:
- No podía editar el fichero porque no estaba en checkout
- No podía hacer checkout del fichero, porque Eclipse se pensaba que ya lo había hecho
- No se podía deshacer el supuesto checkout, debido a que en realidad, no existe
Esta situación es debida un problema entre Eclipse y el plugin de ClearCase. La solución a este problema, fue la siguiente:
- Cerrar Eclipse
- Abrir un terminal y dirigirse al directorio de mi vista estática donde se encuentra el fichero con el que tenemos el problema
- Modificar el fichero “.copyarea.db“. Este fichero es usado por Eclipse para almacenar cierta información de los ficheros de la vista, hay uno en cada directorio de la vista. Tiene un aspecto parecido a este:
ClearCase CopyAreaDB
<directorio actual>
10:fichero01.txt|<una serie de metadatos (time stamp, checksum..)>
14:fichero02.txt|<una serie de metadatos (time stamp, checksum..)>
11:fichero03.txt|<una serie de metadatos (time stamp, checksum..)> - Modificamos sus permisos de escritura:
$> chmod +x .copyarea.db
- Localizamos la linea correspondiente a nuestro fichero problemático
- La parte importante: De la información contenida en cada línea, el último dígito indica si un fichero está en checkout o no: “1″ si está en checkout, “0″ en caso contrario. Si para nuestro fichero problemático, está a “1″, ya sabemos el problema. Lo seteamos a “0″ y guardamos los cambios.
- Quitamos permisos
$> chmod -x .copyarea.db
- Sistema -> Administración -> Orígenes del software
- Tipo de paquetes almacenados. deb si son binarios o paquetes precompilados, o deb-src si contiene el código fuente de los paquetes.
- La URL del repositorio
- El nombre de tu versión de Ubuntu (intrepid, hardy, lucid…)
- Componentes (main, restricted, universe, multiverse, partner…). Puede haber uno o varios nombres.
Si todo ha ido bien, al abrir Eclipse de nuevo, veremos que nuestro fichero problemático ya no está en checkout.
Como añadir repositorios en Ubuntu
Posted by Alberto - 05/11/10 at 09:11:33 pmHay tres maneras de añadir un repositorio en Ubuntu:
1. Usando la interfaz gráfica
Depediendo de que versión de Ubuntu estés usando, tendrás que buscar la opción “Orígenes del software” en distintas partes del menu. Por ejemplo:
2. Editando el fichero sources.list
Ubuntu usa apt para gestionar los paquetes instalados. La lista de repositorios está almacenada en el fichero
/etc/apt/sources.list
Este fichero contiene lineas parecidas a estas:
deb http://us.archive.ubuntu.com/ubuntu/ hardy main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ hardy main restricted
Cada repositorio está definido por cuatro elementos:
3. Usando el comando apt-add-repository
A partir de Ubuntu 9.10 (Karmic Koala), es posible añadir repositorios usando direcciones PPA (Personal Package Archive) con el comando apt-add-repository.
sudo add-apt-repository ppa:<nombre-del-repositorio>
Si no lo tienes instalado, puedes obtenerlo al instalar el paquete python-software-properties
sudo apt-get install python-software-properties
Google AI Challenge
Posted by Alberto - 10/09/10 at 04:09:55 pmYa es posible registrarse y participar en la Google AI Challenge 2010. El año pasado, se escogió el juego de Tron. En la edición de este año, se usará “Planet Wars”, un juego basado en Galcon.
Escuchando algoritmos de ordenación
Posted by Alberto - 25/08/10 at 12:08:10 amCreo que cualquiera que haya estudiado algoritmos de ordenación estará de acuerdo conmigo en lo útil que es la visualización de como funcionan los diferentes algoritmos (también supongo que entonces conocerá sorting-algorithms.com, pero lo enlazo por si acaso
). Hoy me he enterado de la existencia de algo nuevo para mi: la “audición” (no se bien como traducir audibilization) de algoritmos. Aqui hay un ejemplo:
Según el autor del video:
This particular audibilization is just one of many ways to generate sound from running sorting algorithms. Here on every comparison of two numbers (elements) I play (mixing) sin waves with frequencies modulated by values of these numbers. There are quite a few parameters that may drastically change resulting sound – I just chose parameteres that imo felt best.
Me parece bastante curioso
Reconocimiento automático de sarcasmo
Posted by Alberto - 21/05/10 at 09:05:17 pm
Cuando me enteré de la existencia de un algoritmo para reconocer el sarcasmo, quise saber más. El sarcasmo no es siempre fácil de identificar por una persona, asi que… ¿que tal lo haría una máquina? “Semi-supervised recognition of sarcastic sentences in Twitter and Amazon” describes el trabajo que han realizado en The Hebrew University (Israel) probando su algoritmo SASI con datos extraidos de Twitter y Amazon. Aunque han obtenido buenos resultados, todavía queda mucho por hacer en este campo (como esperaba antes de leer el articulo). Me pareció interesante como modelaron el problema, y que obtuvieran mejores resultados clasificando tweets en lugar de reviews de Amazon, por ser estas últimas información más estructurada.
Aprendizaje automático en Stanford
Posted by Alberto - 17/12/09 at 11:12:04 pm
El aprendizaje automático es una rama de la Inteligencia Artificial, que tiene como objetivo el desarrollo de sistemas que sean capaces de aprender a partir de la experiencia. Las técnicas de aprendizaje automático puedes usarse en muchos campos. Por ejemplo, sistemas de recomendación (como Amazon), biología, juegos, medicina…
Si estás interesado en aprender acerca de aprendizaje automático, deberías visitar el canal de Youtube de la Universidad de Stanford, ya que allí podrás encontrar un curso completo sobre este tema. Esta es la información del curso:
This course (CS229) provides a broad introduction to machine learning and statistical pattern recognition. Topics include supervised learning, unsupervised learning, learning theory, reinforcement learning and adaptive control. Recent applications of machine learning, such as to robotic control, data mining, autonomous navigation, bioinformatics, speech recognition, and text and web data processing are also discussed.
JScrollPane, JTable y scroll horizontal
Posted by Alberto - 10/12/09 at 09:12:11 pmEstaba implementando una interfaz gráfica con Java, y quería insertar un objeto JTable dentro de un JScrollPane. La tabla era más grande que el JScrollPane, pero pese a ello, no se porqué sólo se mostraba el scroll vertical. Gasté mucho tiempo leyendo manuales de Swing, revisando mi código… Era algo muy simple y todo parecía estar bien, pero entonces… ¿por que no funcionaba?
Finalmente, encontré la solución: resulta que hay un bug en Java que aparece cuando quieres usar una JTable dentro de un JScrollPane. La solución fue crear una clase que extendiera a JTable, para poder sobreescribir el método JTable.getScrollableTracksViewportWidth() por este otro:
public boolean getScrollableTracksViewportWidth() {
if (autoResizeMode != AUTO_RESIZE_OFF) {
if (getParent() instanceof JViewport) {
return (((JViewport)getParent()).getWidth() > getPreferredSize().width);
}
}
return false;
}
Fuente: DaniWeb Forum
Error 500 en WordPress
Posted by Alberto - 10/12/09 at 09:12:17 pmDespués de esto, he aprendido que es conveniente desactivar todos los plugins antes de actualizar WordPress automaticamente. No recuerdo cuando hice la última actualización, pero parece que la versión en inglés de este blog ha estado offline desde entonces.
Esta mañana quería leer un artículo del blog, y al entrar lo que veía era un mensaje de “Error 500″. Lo primero que hice fue intentar entrar en WordPress, y no tuve problema. Despues probé a desactivar los plugins, por si alguno estuviera dando problemas, y tampoco funcionó. Lo siguiente que hice fue consultar el log de Apache, y esto fue lo que encontré:
SoftException in Application.cpp:252: File “/home/xxxxx/public_html/blog/index.php” is writeable by group
Ahí estaba: un problema de permisos. Así que usando Cyberduck (aunque cualquier programa de FTP sirve), lo arreglé, eliminando los permisos de escritura para Grupo y Otros:

Nota: hay que aplicar este cambio a todos los archivos y directorios. En mi caso, marqué la opción “Aplicar cambios recursivamente”, pero todas las aplicaciones de FTP tienen que tener una opción similar.
Resolviendo problemas con Subversion
Posted by Alberto - 07/11/09 at 07:11:25 pmEstaba actualizando mi copia local, cuando tuve el siguiente error:
Can’t copy / move ‘
.svn-base’ to ‘ .tmp’: The system cannot find the file specified.
El problema era que en el repositorio existían dos ficheros cuyo nombre se diferenciaba sólo por el uso de mayúsculas (por ejemplo, Fichero.txt y fichero.txt). Esto es posible en sistemas basados en Unix, pero en esta ocasión yo estaba usando un ordenador con Windows, donde no es posible tener ficheros con el mismo nombre. De ahí que no pudiera actualizar mi copia local. Así que si tienes el mismo error que yo, con borrar o renombrar uno de los dos ficheros en el servidor, se solucionará.
Powered by WordPress with GimpStyle Theme design by Horacio Bella.
Entries and comments feeds.
Valid XHTML and CSS.


