19 julio 2009

Cargar un Assembly (dll) dinámicamente (por código)

Antes o después tenemos que hacer aplicaciones que carguen dlls. El problema es que los Assemblys de .Net, aunque tenga la extensión dll, no son dlls de win32, por lo que el procedimiento “habitual” de carga no funciona.

Imaginad que tenemos la dll “MiExtension.dll” en C:\ (espero que nadie ponga en una aplicación real la ruta absoluta… esto es un ejemplo). De esa dll queremos cargar la clase “Controlador”.

Assembly miExtensionAssembly = Assembly.LoadFile(@"C:\MiExtension.dll");
Type miExtensionType = miExtensionAssembly.GetType("MiAplicacion.Controlador");
object miExtensionObjeto = Activator.CreateInstance(miExtensionType);
ITipoQueSea objetoFinal = (ITipoQueSea)miExtensionObjeto;


La primera línea carga el assembly, la segunda obtiene el tipo de la clase que se quiera (ojo, hay que darle toda la dirección del namespace, “Controlador” a secas no hubiera servido), la tercera instancia el objeto con el constructor por defecto y en la cuarta almaceno el Object con el tipo que sea.



Si necesitamos instanciar el objeto con un método que reciba parámetros, tendíamos que llamar a CreateInstance con dos parámetros, el primero el tipo (como en el ejemplo) y el segundo un array de Objects con los parámetros ordenados.

17 julio 2009

Vuelta a Portsmouth

Dentro de unas pocas horas me iré al aeropuerto para coger un vuelo a Portsmouth. Mi intención era asistir al baile de graduación este sábado 18… aunque me han dejado plantado y además se me ha olvidado recoger mi entrada, así que no sé si me será posible.

En cualquier caso el miércoles 22 es la ceremonia de graduación y esa sí que no me la pierdo jejeje :)

Después de eso estaré unos días por Londres y luego me voy a Edimburgo, así que probablemente no vuelva a escribir en una temporada… todo depende de si me encuentro con conexión o no, porque a día de hoy aun no me han confirmado nada :(

Así que por si acaso, ¡hasta pronto!

14 julio 2009

Semana Negra

Ayer fui a la Semana Negra y a pesar de lo que había oído por ahí, no defrauda. Es cierto que hace mucho tiempo que dejó de ser una feria de novela negra, pero sigue habiendo numerosos puestos con novelas y entrevistas a escritores de renombre. El apartado de música tampoco defrauda, aunque sinceramente no soy fan de ninguno de ellos :P

Nosotros hicimos una visita en plan “público general”, léase chiringuitos y atracciones. Aunque desde luego no faltó una vuelta por los puestos de libros. De hecho, es imposible evitarla, porque están a la entrada.

El lugar es bueno, parte de playa, parte de asfalto y con buses que te dejan a la entrada. Además han modificado el recorrido de los buses búho para que den servicio a la Semana Negra.

Vamos, que si estáis por Gijón estos días, id a visitarla ;)

12 julio 2009

Aunque parezca que no, sigo aquí

Ha pasado algo más de un mes desde la última vez que publiqué algo en este blog. La verdad es que lo he descuidado bastante, pero es porque he estado bastante ocupado. Además, en lo que va de año he escrito más del doble de lo que escribí el año pasado ;)

Acabo de volver de Bilbao de hacer un examen para una certificación de inglés, IELTS. El año pasado tuve que hacer ese mismo examen para entrar en el grado y la nota que saqué entonces es suficiente para entrar en un posgraduado, pero algunos tecnicismos me obligan a hacerlo de nuevo para entrar en ciertas universidades. Aun no sé a cuál quiero ir, así que prefiero solicitar a varias y decidir a cuál cuando tenga las cartas de aceptación en la mano.

Espero publicar a un ritmo algo más regular durante los próximos días, además, han pasado muchas cosas durante el tiempo que he estado inactivo y algunas me gustaría comentarlas. ¿Soy el único que siempre tiene que hacer cosas en vacaciones? ¿Cómo os arregláis los demás para seguir posteando con ese ritmo?

06 junio 2009

Ordenar filas en un JTable ( RowSorter )

Cada vez estoy recibiendo más consultas acerca de cómo hacer que un JTable pueda ordenar las filas al hacer click en el nombre de una columna, que es como se suelen comportar todas las tablas.

Vamos a poner un ejemplo sencillo para que sea más claro, pero el método es el mismo sin importar la cantidad de datos que tenga la tabla. Imaginemos que estamos construyendo una tabla que tendrá los enlaces de este blog. Lo primero sería crear una estructura de datos con el nombre de las columnas y otra con los datos de las filas. Por simplicidad usaré arrays en ambos casos:

private void populateColumnNames() {
columnNames = new String[] { "Nombre blog", "Dirección", "Autor" };
}

private void populateTableData() {
data = new Object[4][3];
data[0][0] = "Core dumped";
data[0][1] = "http://m3drano.es/";
data[0][2] = "Ramón Medrano";
data[1][0] = "Miguel Fernández";
data[1][1] = "http://www.miguelfernandez.info/";
data[1][2] = "Miguel Fernández";
data[2][0] = "Informático en apuros";
data[2][1] = "http://diegosuarezgarcia.es/blog/";
data[2][2] = "Diego Suárez García";
data[3][0] = "Un blog de Silverlight";
data[3][1] = "http://geeks.ms/blogs/eecsaky/";
data[3][2] = "Eugénio Estrada";
}


Ahora deberíamos crear un JTable que use esos datos. El procedimiento “normal”, suponiendo que tengamos un método que se encargue de devolvernos la tabla creada, sería este:



private JTable getJTable() {
if (table == null)
table = new JTable(data,columnNames);
return table;
}


Sin embargo, para conseguir una ordenación tendremos que separar explícitamente la tabla de su contenido y decir que queremos ordenación:



private JTable getJTable() {
if (table == null) {
table = new JTable();
// Creamos el modelo, la parte que contenrá los datos de la tabla
DefaultTableModel model = new DefaultTableModel();
// Creamos un ordenador de filas para el modelo
TableRowSorter sorter = new TableRowSorter(
model);
// Añadimos al modelo los datos que queremos que contenga la tabla
model.setDataVector(data, columnNames);
// Le decimos a la tabla que use el modelo de datos que hemos creado
table.setModel(model);
// Le decimos a la tabla que use la ordenación de filas que hemos
// creado
table.setRowSorter(sorter);
}
return table;
}


Con eso ya podemos hacer click en las columnas y estas ordenaran las filas como esperábamos :)


05 junio 2009

Ley del aborto, ¿por qué tiene tan pocos apoyos?

Vaya por delante que estoy a favor del aborto y que esto es una entrada de opinión y no una noticia, aunque no se para qué hago esta advertencia cuando los periódicos no la ponen y hacen exactamente lo mismo.

Hoy he leído en varios sitios opiniones acerca de la ley del aborto y de unas declaraciones hechas por la ministro Aído. Básicamente hay tres puntos conflictivos:

  • Será legal abortar hasta las 14 semanas sin que exista riesgo de salud para ninguna de las partes.

  • A partir de los 16 años una persona tendrá la potestad de decidir abortar.

  • Ninguna persona será privada de libertad en caso de abortar en disconformidad a la ley.

Personalmente, estoy a favor de las tres, o al menos, no en contra, y como parezco ser el único, expondré por qué:

  • Aborto legal hasta las 14 semanas sin necesidad de riesgo de salud.

Supongo que es por mi definición de “ser humano”. Para mi un humano debe ser capaz de tener una consciencia de si mismo, tener forma humanoide no significa que se tenga consciencia de uno mismo. Dado que no conozco ninguna prueba científica que demuestre o ponga en duda razonable la consciencia de un embrión de esa edad, no veo problema alguno en practicar ese aborto. No es distinto de cualquier otro ser vivo.

Desde un punto de vista menos científico y más filosófico, no recuerdo mi vida con menos de un año, lo que me lleva a preguntarme si el asesinato de humanos de edad inferior a un año debería ser considerado como tal. Suponiendo que nadie pueda recordar las experiencias anteriores a esa fecha, ¿podríamos estar hablando de una persona consciente de si misma? Si se trata de un ser humano, no se trata de la misma persona (entendiendo esto como un conjunto de experiencias), ya que todo lo vivido hasta esa fecha no está disponible para mi a nivel consciente (otras cosas como el desarrollo motor sí, pero muchos otros animales tienen ese tipo de capacidades... por lo que no veo qué instaría la aplicación de derechos humanos).

  • A partir de los 16 años una persona tendrá la potestad de decidir abortar.

Si una persona tiene potestad para decidir iniciar el proceso de creación de un ser vivo, debería tener la potestad de decidir su terminación, ya que no procede la aplicación de derechos humanos a formas de mida no humanas.

  • Ninguna persona será privada de libertad en caso de abortar en disconformidad a la ley.

Sólo nos faltaba. Supongamos el peor escenario posible, un aborto de algo que podamos llamar humano (con conciencia de si mismo). Aunque podamos argumentar, biológicamente, que se trata de un humano, difícilmente podríamos calificar su “vida” como un conjunto de experiencias resultantes de interactuar con su entorno a nivel consciente.

Lo que quiero decir es que, quizá no sea lo más deseable y deba ser evitado. Una de las formas más comunes de lograr que se evite una situación es penalizando de algún modo a las personas. Penalizar con una multa quizá fuera adecuado, pero privar de libertad, además de irónico, sería inadecuado. En muchos casos la propia ayuda al término del embarazo podría llegar a ser considerada por algunos como negación de auxilio, que curiosamente nos trae la discusión sobre la eutanasia.

Como el post está quedando muy largo voy a dejarlo ya, pero antes de que alguien deje algún comentario llamándome monstruo o cosas similares, quiero dejar claro que esta opinión se basa en razonamientos sobre hechos científicos demostrables. Si alguien tiene otra opinión basada en datos científicos y no en mitologías o emociones, me gustaría conocerla y discutir su argumentación... porque francamente me gustaría estar equivocado.

03 junio 2009

¿Master o Doctorado?

Hoy he ido a por unas cartas de recomendación y se han quedado un poco sorprendidos porque las pedía para hacer masters. Yo me quedé sorprendido de que ellos se quedaran sorprendidos :P

Al parecer daban por hecho que iba a hacer un doctorado, que igual haré, pero no ahora. No se, siempre me ha parecido que las empresas prefieren un master que un doctorado... o alguien con ambos. ¿Cómo lo veis vosotros?

Yo creo que haré el master ahora, que sólo es un añito, y después seguramente me tiraré a un doctorado.