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á.
Instalar Erlang en Mac
Posted by Alberto - 06/11/09 at 12:11:01 amEn primer lugar es necesario instalar XCode, para tener el compilador GCC. Despues, estos son los pasos que hay que seguir:
1. Bajar la última versión de Erlang. En mi caso, descargué la R13B02-1, obteniendo un fichero llamado otp_src_R13B02-1.tar.gz
2. Tras descomprimir el fichero:
$ cd otp_src_R12B-2
$. /configure
$ make
$ sudo make install
Estos son los pasos estandar, pero en mi caso tuve un problema con el comando “make”. El error que obtenía era el siguiente:
gen/wxe_events.cpp: In function ‘void initEventTable()’:
gen/wxe_events.cpp:277: error: ‘wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN’ was not declared in this scope
gen/wxe_events.cpp:278: error: ‘wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP’ was not declared in this scope
gen/wxe_events.cpp:279: error: ‘wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN’ was not declared in this scope
gen/wxe_events.cpp:280: error: ‘wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP’ was not declared in this scope
gen/wxe_events.cpp:281: error: ‘wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSED’ was not declared in this scope
gen/wxe_events.cpp:282: error: ‘wxEVT_COMMAND_AUINOTEBOOK_DRAG_DONE’ was not declared in this scope
gen/wxe_events.cpp:283: error: ‘wxEVT_COMMAND_AUINOTEBOOK_BG_DCLICK’ was not declared in this scope
make[4]: *** [i386-apple-darwin9.8.0/wxe_events.o] Error 1
make[3]: *** [release] Error 2
make[2]: *** [release] Error 2
make[1]: *** [release] Error 2
make: *** [install.libs] Error 2
La solución fue compilar Erlang descativando el soporte para wxwidgets, así que los pasos que tuve que seguir fueron:
$ cd otp_src_R12B-2
$. /configure
$ touch lib/wx/SKIP
$ make
$ sudo make install
Como arreglar las teclas Inicio y Fin en Mac
Posted by Alberto - 11/07/09 at 05:07:19 pmHay una cosa que no me gusta de OS X: el comportamiento de las teclas Inicio, Fin, Avanzar Página y Retroceder Página. Para tener el mismo comportamiento con estas teclas que en Windows o Linux, abre un editor de texto y escribe:
{
“\UF729″ = “moveToBeginningOfLine:”;
“$\UF729″ = “moveToBeginningOfLineAndModifySelection:”;
“\UF72B” = “moveToEndOfLine:”;
“$\UF72B” = “moveToEndOfLineAndModifySelection:”;
“\UF72C” = “pageUp:”;
“\UF72D” = “pageDown:”;
}
Guarda el fichero como DefaultKeyBinding.dict en el directorio ~/Library/KeyBindings y reinicia tu Mac.
Mostrar archivos ocultos en Leopard
Posted by Alberto - 03/07/09 at 01:07:39 amHe encontrado un widget muy util. Añade un botón en el dashboard, para poder mostrar u ocultar los archivos ocultos del sistema. Se instala, pulsas “Show” y ya tienes tus ficheros ocultos a la vista en el Finder.

La clase java.util.Properties
Posted by Alberto - 21/06/09 at 11:06:50 pmNo conocía esta clase hasta que la empecé a usar hace unos meses. Me encanta por lo fácil que hace la gestión de propiedades (o parámetros) en Java.
public class Properties extends Hashtable {
protected Properties defaults;
public Properties();
public Properties(Properties defaults);
public String getProperty(String key);
public String setProperty(String key, String defaultValue);
public Enumeration propertyNames();
public void load(InputStream in) throws IOException;
public void save(OutputStream out, String header);
public void list(PrintStream out);}
Extiende java.util.HashTable, así que esta clase almacena cada propiedad como un par de (clave, valor). Si tu aplicación necesita diferentes parámetros para funcionar, puedes incluirlos en un fichero, y usar un objeto java.util.Properties para cargarlos.
Properties props = new Properties();
FileInputStream fichero = new FileInputStream(”fichero-de-propiedades.txt”);
props.load(fichero)
Con estas tres lineas, tendrás un objeto llamado “props” que contendrás las propiedades almacenadas en el fichero “fichero-de-propiedades.txt”. Pero, ¿cual debe ser el formato del fichero? Tiene que tener un par (propiedad, valor) por linea, ambos separados por un espacio en blanco, un “=” o “:”. Por ejemplo, el siguiente fichero sería válido:
Propiedad1=Valor1
#Esto es un comentario
Propiedad2:Valor2
Propiedad3 Valor3
Despues de cargar este fichero, ¿como accedemos a las propiedades? Si queremos usar el valor de “Propiedad1″:
String value = getProperty(”Propiedad1″);
O si quisieramos modificar el valor de “Propiedad2″:
setProperty(”Propiedad2″,”Nuevo valor”);
Más info: java.util.Properties
Como editar la variable PATH en Mac
Posted by Alberto - 23/05/09 at 10:05:17 pmPara cambiar el PATH (u otra variable de entorno, como CLASSPATH) en Mac, es necesario editar un fichero llamado .profile situado en tu directorio home. Abre una ventana de terminal y escribe:
open -e ~/.profile
Si no teneis este fichero, podeis crearlo con:
touch ~/.profile
Ahora, hay que incluir una linea como la siguiente:
export PATH=(fichero-que-quieres-añadir):$PATH
Si por ejemplo, quisieras añadir un fichero llamado algo.jar, que guardas en tu carpeta de Documentos, tendrías que escribir:
export PATH=~/Documents/algo.jar:$PATH
El término apropiado
Posted by Alberto - 15/05/09 at 05:05:34 pm
Powered by WordPress with GimpStyle Theme design by Horacio Bella.
Entries and comments feeds.
Valid XHTML and CSS.


