Educación y creatividad

Estos 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.

Bookmark and Share

Resolver falsos checkouts usando ClearCase y Eclipse

He 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

  • Si todo ha ido bien, al abrir Eclipse de nuevo, veremos que nuestro fichero problemático ya no está en checkout.

    Bookmark and Share

    Como añadir repositorios en Ubuntu

    Hay 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:

    • Sistema -> Administración -> Orígenes del software


    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:

    • 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.


    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

    Bookmark and Share

    Google AI Challenge

    Ya 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.

    Bookmark and Share

    Escuchando algoritmos de ordenación

    Creo 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 :P ). 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 :)

    Bookmark and Share

    Reconocimiento automático de sarcasmo

    sarcasmCuando 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.

    Bookmark and Share

    Aprendizaje automático en Stanford

    stanford-logoEl 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.

    Bookmark and Share

    JScrollPane, JTable y scroll horizontal

    Estaba 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

    Bookmark and Share

    Error 500 en WordPress

    Despué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:

    Permisos Cyberduck

    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.

    Bookmark and Share

    Resolviendo problemas con Subversion

    Estaba 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á.

    Bookmark and Share

Powered by WordPress with GimpStyle Theme design by Horacio Bella.
Entries and comments feeds. Valid XHTML and CSS.