<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10509075</id><updated>2025-03-06T14:03:18.833+01:00</updated><category term="Java"/><category term="HTPC"/><category term="ubuntu"/><category term="Android"/><category term="JBoss"/><category term="Moviles"/><category term="Seguridad"/><category term="ciberderechos"/><category term="drivers"/><category term="linux"/><category term="maven"/><category term="opensource"/><category term="soa"/><category term="tomcat"/><category term="wifi"/><title type='text'>El Blog de Discolo</title><subtitle type='html'>Un espacio donde tratar todo tipo de asuntos sobre casi cualquier aspecto de mi vida cotidiana desde el trabajo al ocio.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10509075.post-1474908132121075225</id><published>2014-10-12T20:09:00.000+02:00</published><updated>2014-10-12T20:09:40.976+02:00</updated><title type='text'>Copiar ficheros bajo MTP con Timestamp</title><content type='html'>Hoy he tenido un problema a la hora de liberar espacio del móvil de mi mujer porque al conectarlo por USB y copiar las imágenes y vídeos la fecha de modificación no se mantenía.
Lo primero que he intentado ha sido usar la linea de comandos con el comando -p (preserve)
&lt;pre&gt;cp -p &lt;origen&gt; &lt;destino&gt; (Operation not supported)&lt;/pre&gt;

Mirando un poco, he averiguado que los Android (no se si los antiguos o los nuevos, en mi caso es un Samsung Galaxy S3 Mini) se montan en Ubuntu utilizando el protocolo MTP con lo que hay que copiar los ficheros usando el comando gvfs-copy

Segundo intento
&lt;pre&gt;gvfs-copy --preserve &lt;origen&gt; &lt;destino&gt;&lt;/pre&gt;

Con esto se copian todos los ficheros pero no respeta la fecha de modificación, parece que se trata de un bug reconocido, no he tenido tiempo para investigar mucho, reconozco que soy un novato en sistemas operativos.

Solución final, me he creado un script (típica solución de linuxeros) que copia el fichero y luego le setea la fecha de modificación. Aquí os lo dejo, hay que tener en cuenta que en mi caso el dispositivo se montó en &lt;pre&gt;mtp://[usb:002,011]/&lt;/pre&gt; cada vez que se monta, este número cambia, tenedlo en cuenta a la hora de cambiar de directorio

&lt;pre  style=&quot;font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6HFeDptr4DvbfA7EaHHhiZa2iBEw0bIK0KN1xJkS5TsY6-NeWcnQwqaktPcM2EqDJiajfN2KbwUER3cvAsUkn5c4fWzNQ6DOQUpBXUfSIuS5VxZIQyHv9kF94_zSIe_N1kkl80A/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;&quot;&gt;&lt;code style=&quot;color:#000000;word-wrap:normal;&quot;&gt;1:  #!/bin/bash  
2:  cd /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C011%5D/Card/DCIM/Camera  
3:  for i in *  
4:  do  
5:      mod_date=$(stat -c &quot;%y&quot; &quot;$i&quot;|sed &#39;s/\..*$//&#39;)  
6:      dest_file=/media/discolo/Imagenes/Backup/&quot;$i&quot;   
7:      gvfs-copy $i &quot;$dest_file&quot;   
8:      touch -d&quot;$mod_date&quot; &quot;$dest_file&quot;  
9:  done  
&lt;/code&gt;&lt;/pre&gt;


Espero que le sirva a alguien,

Saludos.</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/1474908132121075225/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/1474908132121075225' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/1474908132121075225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/1474908132121075225'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2014/10/copiar-ficheros-bajo-mtp-con-timestamp.html' title='Copiar ficheros bajo MTP con Timestamp'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-534872470978966968</id><published>2011-11-01T13:00:00.000+01:00</published><updated>2011-11-01T13:00:33.909+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="opensource"/><category scheme="http://www.blogger.com/atom/ns#" term="soa"/><title type='text'>El desafío - Implantar una plataforma SOA Open Source</title><content type='html'>Bien, pues con todo lo que he ido aprendiendo, leyendo y experimentando durante este tiempo ahora llega el momento de la verdad.&lt;br /&gt;
En la empresa donde estoy trabajando, desde que llegué, he intentado cambiar la metodología y la forma de trabajar. Hemos pasado del &quot;vamos a apagar este fuego como sea para que funcione&quot; que me encontré al &quot;todo lo que hagamos tiene que ser reutilizable e independiente&quot; (vamos, un componente).&lt;br /&gt;
&lt;br /&gt;
Actualmente lo que tenemos es una plataforma grotesca que ha ido creciendo durante 3 o 4 años. Técnicamente tiene cosas interesantes, pero es muy dificil de evolucionar ya que el core no es opensource ni disponemos de los fuentes y todo lo que se va desarrollando se hace sobre este core con sus limitaciones y sus desventajas.&lt;br /&gt;
&lt;br /&gt;
A lo que vamos es a rediseñar todo el modelo actual de la empresa, con los cambios y evoluciones que ha sufrido. Empezar a definir servicios según las necesidades que van surgiendo. Estos servicios de momento se van a servir de los datos con los que trabaja la actual plataforma. Es decir, la implementación de los DAOs van a obtener los datos con el core actual para poder migrar cuando sea posible con el mínimo impacto.&lt;br /&gt;
&lt;br /&gt;
Lo primero que pretendo implantar será, como he dicho, unos servicios imprescindibles que permitan obtener ciertos datos que mostrar en un portal web de acceso a terceros, con lo que la interacción con los clientes se incrementa y dejamos de tener el cutre-portal-web para poder ofrecer contenidos dinámicos. Para esto utilizaremos Liferay, el contenedor de Portlets, y para diseñar los servicios Web voy a probar Apache Tuscany (&lt;a href=&quot;http://tuscany.apache.org/&quot;&gt;http://tuscany.apache.org/&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
Ya iré contando qué tal va evolucionando y qué otras soluciones OpenSource voy añadiendo, aunque en mi mente ya están jBPM para los procesos de negocio, Apache Synapse como ESB ligero y EsperTech para los eventos. Aunque también incorporaré otras en su versión Community como pueden ser Alfresco para la gestión documental y Liferay que ya he comentado.</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/534872470978966968/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/534872470978966968' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/534872470978966968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/534872470978966968'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2011/11/el-desafio-implantar-una-plataforma-soa.html' title='El desafío - Implantar una plataforma SOA Open Source'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-4778438956928396677</id><published>2011-07-21T11:44:00.000+02:00</published><updated>2011-07-21T11:50:23.756+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="tomcat"/><title type='text'>Acceso JMX remoto con JConsole a Tomcat</title><content type='html'>JConsole permite monitorizar en tiempo real el estado de la JVM que necesitemos y ejecutar operaciones JMX remotamente, incluso forzar GCs (Garbage Collections). Podemos acceder a nuestros procesos locales que estén ejecutando la JDK o procesos remotos que tengan habilitado el acceso remoto por JMX.&lt;br /&gt;
&lt;br /&gt;
En mi caso he necesitado monitorizar un applet local y un Tomcat 6 situado en otra máquina.&lt;br /&gt;
&lt;br /&gt;
JConsole es un programa que está situado en el bin de la JDK, basta con ejecutarlo para que aparezca un menú donde se elige el proceso local que está corriendo o el remoto.&lt;br /&gt;
&lt;br /&gt;
Para conectarnos por JMX remotamente habrá que habilitar el servicio en la máquina virtual remota. Esto se hace incluyendo los siguientes atributos en el inicio de la JVM:&lt;br /&gt;
&lt;blockquote&gt;-Dcom.sun.management.jmxremote &lt;br /&gt;
-Dcom.sun.management.jmxremote.port=&lt;b&gt;%my.jmx.port%&lt;/b&gt; &lt;br /&gt;
-Dcom.sun.management.jmxremote.ssl=false &lt;br /&gt;
-Dcom.sun.management.jmxremote.authenticate=false&lt;/blockquote&gt;&lt;br /&gt;
Esta es la forma fácil e insegura, ya que estoy deshabilitando la autenticación, pero para habilitarla a partir de ficheros de configuración sería algo así:&lt;br /&gt;
&lt;blockquote&gt;-Dcom.sun.management.jmxremote.authenticate=true&lt;br /&gt;
-Dcom.sun.management.jmxremote.password.file=jmxremote.password&lt;br /&gt;
-Dcom.sun.management.jmxremote.access.file=jmxremote.access&lt;/blockquote&gt;&lt;br /&gt;
Fichero de acceso:&lt;br /&gt;
&lt;blockquote&gt;# The &quot;monitorRole&quot; role has password &quot;QED&quot;.&lt;br /&gt;
# The &quot;controlRole&quot; role has password &quot;R&amp;D&quot;.&lt;br /&gt;
monitorRole QED&lt;br /&gt;
controlRole R&amp;D&lt;/blockquote&gt;&lt;br /&gt;
Fichero de passwords:&lt;br /&gt;
&lt;blockquote&gt;monitorRole tomcat&lt;br /&gt;
controlRole tomcat&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Donde lo he probado ha sido en Windows XP, con la versión de Tomcat 6.0.20, instalada como servicio, por lo que he tenido que ejecutar tomcat6w.exe para editar, desde la pestaña Java las propiedades Java y añadir las que he comentado al principio.&lt;br /&gt;
&lt;br /&gt;
Si queremos habilitar una conexión segura por SSL habría que configurar el keystore y el password, pero como no lo he probado dejo únicamente una referéncia:&lt;br /&gt;
&lt;a href=&quot;http://download.oracle.com/javase/1.5.0/docs/guide/management/agent.html#remote&quot;&gt;http://download.oracle.com/javase/1.5.0/docs/guide/management/agent.html#remote&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Aquí está la documentación para hacerlo en Tomcat 6&lt;br /&gt;
&lt;a href=&quot;http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html#Enabling_JMX_Remote&quot;&gt;http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html#Enabling_JMX_Remote&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Saludos!</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/4778438956928396677/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/4778438956928396677' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/4778438956928396677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/4778438956928396677'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2011/07/acceso-jmx-remoto-con-jconsole-tomcat.html' title='Acceso JMX remoto con JConsole a Tomcat'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-4862981194246519658</id><published>2011-06-17T23:12:00.000+02:00</published><updated>2011-06-17T23:12:05.599+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Mostrar los puertos escuchando relacionados con los procesos</title><content type='html'>Hoy me ha hecho falta saber qué proceso me estaba escuchando en el mismo puerto que me hacía falta y buscando he encontrado el cómo, por si a alguien le hace falta.&lt;br /&gt;
&lt;blockquote&gt;sudo netstat --tcp --udp --listening --program&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote&gt;rromero@madrid:~$ sudo netstat --tcp --udp --listening --program&lt;br /&gt;
Conexiones activas de Internet (solo servidores)&lt;br /&gt;
Proto  Recib Enviad Dirección local         Dirección remota       Estado       PID/Program name&lt;br /&gt;
tcp        0      0 localhost:64022         *:*                     ESCUCHAR    1445/novacomd   &lt;br /&gt;
tcp        0      0 localhost:12311         *:*                     ESCUCHAR    1445/novacomd   &lt;br /&gt;
tcp        0      0 localhost:ipp           *:*                     ESCUCHAR    1173/cupsd      &lt;br /&gt;
tcp        0      0 localhost:6968          *:*                     ESCUCHAR    1445/novacomd   &lt;br /&gt;
tcp        0      0 localhost:6969          *:*                     ESCUCHAR    1445/novacomd   &lt;br /&gt;
tcp        0      0 localhost:6970          *:*                     ESCUCHAR    1445/novacomd   &lt;br /&gt;
tcp        0      0 localhost:6971          *:*                     ESCUCHAR    1445/novacomd   &lt;br /&gt;
rromero@madrid:~$ ps -fea | grep novacomd&lt;br /&gt;
root      1445     1  5 16:59 ?        00:09:39 /opt/Palm/novacom/novacomd&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Info extraída de aquí:&lt;br /&gt;
&lt;a href=&quot;http://www.go2linux.org/which_service_or_program_is_listening_on_port&quot;&gt;http://www.go2linux.org/which_service_or_program_is_listening_on_port&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/4862981194246519658/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/4862981194246519658' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/4862981194246519658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/4862981194246519658'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2011/06/mostrar-los-puertos-escuchando.html' title='Mostrar los puertos escuchando relacionados con los procesos'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-200397095218727089</id><published>2011-05-19T09:49:00.000+02:00</published><updated>2011-05-19T09:49:45.952+02:00</updated><title type='text'>Singletons en Java</title><content type='html'>Tras realizar un diseño de un servicio, me puse a definir las clases necesarias, con su esqueleto básico con lo que varias requerían ser Singletons, por lo que utilicé la implementación típica sacada de los libros de ingeniería de software. &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;public class DefaultSingleton {&lt;br /&gt;
  private static DefaultSingleton instance = null;&lt;br /&gt;
&lt;br /&gt;
  private DefaultSingleton(){}&lt;br /&gt;
&lt;br /&gt;
  public synchronized DefaultSingleton getInstance() {&lt;br /&gt;
    if(instance == null) {&lt;br /&gt;
      instance = new DefaultSingleton();&lt;br /&gt;
    }&lt;br /&gt;
    return instance;&lt;br /&gt;
}&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
En teoría esto permite la inicialización única para accesos concurrentes ya que el getInstance() es sincronizado, pero cualquier objeto que necesite obtener la instancia deberá pasar por la sincronización, lo que puede no ser necesario y si no me equivoco también dará problemas de concurrencia.&lt;br /&gt;
&lt;br /&gt;
Para intentar evitar esta situación, se ha confiado durante mucho tiempo en el doble chequeo de la sincronización (Double-Checked Locking), pero sin entrar en más detalle, decir que se ha demostrado que genera diversos errores en entornos altamente concurrentes, sin entrar en más detalles pongo un enlace.&lt;br /&gt;
&lt;a href=&quot;http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html&quot;&gt;http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
A partir de aquí surgen dos alternativas, la inicialización impaciente (eager) o la perezosa (lazy). Los dos ejemplos anteriores son Lazy. La principal diferencia entre una y otra es cuándo se crea la instancia, si al iniciar la aplicación o al hacer el getInstance(). La elección de cada una dependerá de cada caso concreto, ya que si tienes pocos Singleton y requieren poco procesamiento, o simplemente te da igual lo que tarde en iniciarse la aplicación, optarás por la primera, si son muchos los Singleton que necesitas inicializar, algunos contienen un procesamiento complejo y/o lento, o simplemente prefieres que se vayan creando las instancias conforme vayan haciendo falta, por temas de recursos o lo que sea, tal vez prefieras la segunda opción. En mi caso me he decantado por la inicialización bajo demanda.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de inicialización impaciente.&lt;br /&gt;
&lt;blockquote&gt;public class EagerSingleton {&lt;br /&gt;
  private static EagerSingleton instance = new EagerSingleton();&lt;br /&gt;
&lt;br /&gt;
  private EagerSingleton(){}&lt;br /&gt;
&lt;br /&gt;
  public EagerSingleton getInstance() {&lt;br /&gt;
    return instance;&lt;br /&gt;
}&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Se puede observar como evitamos el synchronized ya que es la JVM quien se encarga de inicializar la instancia. Al centralizar la inicialización en un único punto (la JVM) previenes cualquier inicialización concurrente.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de inicialización perezosa (o bajo demanda).&lt;br /&gt;
&lt;blockquote&gt;public class LazySingleton {&lt;br /&gt;
  private static class InstanceHolder {&lt;br /&gt;
    public static LazySingleton instance = new LazySingleton ();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private LazySingleton (){}&lt;br /&gt;
&lt;br /&gt;
  public LazySingleton getInstance() {&lt;br /&gt;
    return InstanceHolder.instance;&lt;br /&gt;
}&lt;br /&gt;
&lt;/blockquote&gt;Aquí no se instanciará la variable instance hasta que algún objeto haga el getInstance() de tal forma que igual que en el caso anterior, será la JVM quien creará la instancia cuando deba ser ejecutado.&lt;br /&gt;
&lt;br /&gt;
Espero que este resumen rápido sirva para tener claro cómo utilizar un Singleton en Java.&lt;br /&gt;
&lt;br /&gt;
Aquí dejo un par de fuentes&lt;br /&gt;
&lt;a href=&quot;http://embarcaderos.net/2009/06/23/the-singleton-pattern-in-java-multi-threaded-applications/&quot;&gt;http://embarcaderos.net/2009/06/23/the-singleton-pattern-in-java-multi-threaded-applications/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.rockstarprogrammer.org/post/2006/oct/19/java-singletons-without-locks/&quot;&gt;http://www.rockstarprogrammer.org/post/2006/oct/19/java-singletons-without-locks/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/200397095218727089/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/200397095218727089' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/200397095218727089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/200397095218727089'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2011/05/singletons-en-java.html' title='Singletons en Java'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-2225188600863759641</id><published>2010-10-24T13:17:00.000+02:00</published><updated>2010-10-24T19:07:03.064+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="maven"/><title type='text'>Creando un archetype en Maven 2 / 3</title><content type='html'>Para empezar, un archetype de maven es una plantilla que sirve para generar proyectos muy fácilmente y empezar a trabajar rápidamente. En estas plantillas se debe generar todo lo necesario para que el proyecto funcione, por lo que incluirá tanto el pom.xml, las clases main y de test y todos los resources que hagan falta según el tipo de proyecto (persistence.xml, logback.xml, etc.).&lt;br /&gt;
&lt;br /&gt;
Si bien hay muchos archetypes por internet yo soy de usar la configuración que más me gusta y siempre acabo personalizando mucho mis proyectos por lo que me he acabado haciendo uno propio con las dependencias que suelo usar en un proyecto sencillo. Esto incluye lo siguiente:&lt;br /&gt;
&lt;br /&gt;
- SLF4J&lt;br /&gt;
- Logback&lt;br /&gt;
- HSQLDB como in-memory database&lt;br /&gt;
- Hibernate como implementación de JPA&lt;br /&gt;
- Spring como inyector de dependencias&lt;br /&gt;
- Junit 4&lt;br /&gt;
&lt;br /&gt;
Para generar el tutorial he utilizado lo siguiente:&lt;br /&gt;
- Apache Maven: 3.0&lt;br /&gt;
- Java version: 1.6.0_22&lt;br /&gt;
- Git version: 1.7.1&lt;br /&gt;
&lt;br /&gt;
Como he dicho antes hay muchos archetypes, incluso hay uno para generar archetypes (maven-archetype-archetype). El caso es que si tenemos muy claro lo que vamos a hacer e incluso ya tenemos nuestro proyecto base creado lo más sencillo es crearse un archetype a partir de este proyecto. Primero vamos a hacerlo y luego explicamos la diferencia principal con crearlo desde cero.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;El proyecto base&lt;/h2&gt;La estructura del proyecto es la siguiente.&lt;br /&gt;
&lt;blockquote&gt;.&lt;br /&gt;
├── pom.xml&lt;br /&gt;
└── src&lt;br /&gt;
├── main&lt;br /&gt;
│   ├── java&lt;br /&gt;
│   │   └── es&lt;br /&gt;
│   │       └── discolo&lt;br /&gt;
│   │           ├── app&lt;br /&gt;
│   │           │   └── App.java //Símplemente hace un log Hello World&lt;br /&gt;
│   │           ├── dao&lt;br /&gt;
│   │           │   ├── FooEntityDao.java //Interfaz Dao&lt;br /&gt;
│   │           │   └── impl&lt;br /&gt;
│   │           │       └── FooEntityDaoImpl.java //Implementación de JPA para ese interfaz&lt;br /&gt;
│   │           └── model&lt;br /&gt;
│   │               └── FooEntity.java //Entity para probar la integración con JPA&lt;br /&gt;
│   └── resources&lt;br /&gt;
│       ├── applicationContext.xml //Configuración de Spring&lt;br /&gt;
│       ├── logback.xml //Configuración de Logback&lt;br /&gt;
│       └── META-INF&lt;br /&gt;
│           └── persistence.xml //Configuración del persistence unit asociado a HSQLDB&lt;br /&gt;
└── test&lt;br /&gt;
├── java&lt;br /&gt;
│   └── es&lt;br /&gt;
│       └── discolo&lt;br /&gt;
│           └── test&lt;br /&gt;
│               ├── AbstractTest.java //Clase abstracta que configura el contexto de tests de Spring&lt;br /&gt;
│               └── PersistenceTest.java //Prueba la persistencia y las inyecciones de dependencias&lt;br /&gt;
└── resources&lt;br /&gt;
├── logback-test.xml //Configuración de test de Logback&lt;br /&gt;
└── testContext.xml //Configuración de Spring utilizada por AbstractTest&lt;/blockquote&gt;&lt;br /&gt;
&lt;h2&gt;Generando el archetype a partir del proyecto&lt;/h2&gt;Es tan sencillo como escribir:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;discolo@granada:~/workspace/jpa-spring-archetype$ mvn archetype:create-from-project&lt;br /&gt;
[INFO] Scanning for projects...&lt;br /&gt;
[INFO]                                                                         &lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] Building jpa-spring 1.0-SNAPSHOT&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] &gt;&gt;&gt; maven-archetype-plugin:2.0-alpha-5:create-from-project (default-cli) @ jpa-spring &gt;&gt;&gt;&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] &lt;&lt;&lt; maven-archetype-plugin:2.0-alpha-5:create-from-project (default-cli) @ jpa-spring &lt;&lt;&lt;
[INFO] 
[INFO] --- maven-archetype-plugin:2.0-alpha-5:create-from-project (default-cli) @ jpa-spring ---
[INFO] Setting default groupId: es.discolo
[INFO] Setting default artifactId: jpa-spring
[INFO] Setting default version: 1.0-SNAPSHOT
[INFO] Setting default package: es.discolo
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building jpa-spring-archetype 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ jpa-spring-archetype ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 13 resources
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ jpa-spring-archetype ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-archetype-plugin:2.0-alpha-5:jar (default-jar) @ jpa-spring-archetype ---
[INFO] 
[INFO] --- maven-archetype-plugin:2.0-alpha-5:add-archetype-metadata (default-add-archetype-metadata) @ jpa-spring-archetype ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.360s
[INFO] Finished at: Sun Oct 24 12:35:00 CEST 2010
[INFO] Final Memory: 6M/66M
[INFO] ------------------------------------------------------------------------
[INFO] Archetype created in target/generated-sources/archetype
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.555s
[INFO] Finished at: Sun Oct 24 12:35:00 CEST 2010
[INFO] Final Memory: 7M/65M
[INFO] ------------------------------------------------------------------------&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bien, con esto ya tenemos en target nuestro archetype generado. Vamos a ver lo que ha hecho maven dentro de target/generated-sources/archetype. Tenemos un pom.xml que corresponde al archetype, un src y un target. En el source está la configuración del archetype que incluye el proyecto modificado para adaptarse a la configuración y la estructura de la que partió al generarse. En el target tenemos el archetype listo para instalar.&lt;br /&gt;
&lt;br /&gt;
Echamos un vistazo rápido al src:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;src/&lt;br /&gt;
├── main&lt;br /&gt;
│   └── resources&lt;br /&gt;
│       ├── archetype-resources&lt;br /&gt;
│       │   ├── pom.xml&lt;br /&gt;
│       │   └── src&lt;br /&gt;
│       │       ├── main&lt;br /&gt;
│       │       │   ├── java&lt;br /&gt;
│       │       │   │   ├── app&lt;br /&gt;
│       │       │   │   │   └── App.java&lt;br /&gt;
│       │       │   │   ├── dao&lt;br /&gt;
│       │       │   │   │   ├── FooEntityDao.java&lt;br /&gt;
│       │       │   │   │   └── impl&lt;br /&gt;
│       │       │   │   │       └── FooEntityDaoImpl.java&lt;br /&gt;
│       │       │   │   └── model&lt;br /&gt;
│       │       │   │       └── FooEntity.java&lt;br /&gt;
│       │       │   └── resources&lt;br /&gt;
│       │       │       ├── applicationContext.xml&lt;br /&gt;
│       │       │       ├── logback.xml&lt;br /&gt;
│       │       │       └── META-INF&lt;br /&gt;
│       │       │           └── persistence.xml&lt;br /&gt;
│       │       └── test&lt;br /&gt;
│       │           ├── java&lt;br /&gt;
│       │           │   └── test&lt;br /&gt;
│       │           │       ├── AbstractTest.java&lt;br /&gt;
│       │           │       └── PersistenceTest.java&lt;br /&gt;
│       │           └── resources&lt;br /&gt;
│       │               ├── logback-test.xml&lt;br /&gt;
│       │               └── testContext.xml&lt;br /&gt;
│       └── META-INF&lt;br /&gt;
│           └── maven&lt;br /&gt;
│               └── archetype-metadata.xml&lt;br /&gt;
└── test&lt;br /&gt;
└── resources&lt;br /&gt;
└── projects&lt;br /&gt;
└── basic&lt;br /&gt;
├── archetype.properties&lt;br /&gt;
└── goal.txt&lt;/blockquote&gt;&lt;br /&gt;
Vemos que ha incluido nuestro proyecto dentro de src/main/resources/archetype-resources y que en src/main/resources/META-INF/maven existe un fichero archetype-metadata.xml, este es el que dice qué ficheros incluir y cuales no. Aunque parezca que ha respetado nuestro proyecto tal cual, no es así puesto que hace falta personalizarlo para que realmente sea una plantilla. Esto se puede ver por ejemplo en el fichero pom.xml&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;...&lt;br /&gt;
&lt;groupid&gt;${groupId}&lt;/groupId&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;artifactid&gt;${artifactId}&lt;/artifactId&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;version&gt;${version}&lt;/version&gt;&lt;br /&gt;
...&lt;/blockquote&gt;&lt;br /&gt;
Se ve como se han parametrizado los atributos que dependerán de quien genere un proyecto a partir de este archetype. Otro ejemplo en la clase de AbstractTest que empieza así:&lt;br /&gt;
&lt;blockquote&gt;#set( $symbol_pound = &#39;#&#39; )&lt;br /&gt;
#set( $symbol_dollar = &#39;$&#39; )&lt;br /&gt;
#set( $symbol_escape = &#39;\&#39; )&lt;br /&gt;
package ${package}.test;&lt;/blockquote&gt;&lt;br /&gt;
Estas cosas son las que hacen más sencillo generar el archetype a partir de un proyecto.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Instalando el archetype&lt;/h2&gt;Para poder usar el archetype deberá estar instalado en nuestro repositorio con lo que ejecutamos un mvn install desde target/generated-sources/archetype:&lt;br /&gt;
&lt;blockquote&gt;discolo@granada:~/workspace/jpa-spring-archetype/target/generated-sources/archetype$ mvn install&lt;br /&gt;
[INFO] Scanning for projects...&lt;br /&gt;
[INFO]                                                                         &lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] Building jpa-spring-archetype 1.0-SNAPSHOT&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ jpa-spring-archetype ---&lt;br /&gt;
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!&lt;br /&gt;
[INFO] Copying 13 resources&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ jpa-spring-archetype ---&lt;br /&gt;
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!&lt;br /&gt;
[INFO] Copying 2 resources&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] --- maven-archetype-plugin:2.0-alpha-5:jar (default-jar) @ jpa-spring-archetype ---&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] --- maven-archetype-plugin:2.0-alpha-5:add-archetype-metadata (default-add-archetype-metadata) @ jpa-spring-archetype ---&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] --- maven-archetype-plugin:2.0-alpha-5:integration-test (default-integration-test) @ jpa-spring-archetype ---&lt;br /&gt;
/home/discolo/workspace/defaultJPA_bkp/target/generated-sources/archetype/target/test-classes/projects/basic/archetype.properties&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ jpa-spring-archetype ---&lt;br /&gt;
[INFO] Installing /home/discolo/workspace/defaultJPA_bkp/target/generated-sources/archetype/target/jpa-spring-archetype-1.0-SNAPSHOT.jar to /home/discolo/.m2/repository/es/discolo/jpa-spring-archetype/1.0-SNAPSHOT/jpa-spring-archetype-1.0-SNAPSHOT.jar&lt;br /&gt;
[INFO] Installing /home/discolo/workspace/defaultJPA_bkp/target/generated-sources/archetype/pom.xml to /home/rromero/.m2/repository/es/discolo/jpa-spring-archetype/1.0-SNAPSHOT/jpa-spring-archetype-1.0-SNAPSHOT.pom&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] --- maven-archetype-plugin:2.0-alpha-5:update-local-catalog (default-update-local-catalog) @ jpa-spring-archetype ---&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] BUILD SUCCESS&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] Total time: 2.429s&lt;br /&gt;
[INFO] Finished at: Sun Oct 24 12:47:36 CEST 2010&lt;br /&gt;
[INFO] Final Memory: 6M/66M&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;/blockquote&gt;&lt;br /&gt;
&lt;h2&gt;Usando el archetype&lt;/h2&gt;Finalmente vamos a generar un proyecto a partir del archetype. Si escribimos mvn archetype:generate nos aparecerán tanto los locales como los remotos, aunque podemos filtrar y mostrar únicamente los locales incluyendo el parámetro -DarchetypeCatalog=local&lt;br /&gt;
&lt;br /&gt;
Nos vamos a una carpeta nueva:&lt;br /&gt;
&lt;blockquote&gt;mkdir /tmp/workspace&lt;br /&gt;
cd /tmp/workspace&lt;br /&gt;
mvn archetype:generate -DarchetypeCatalog=local&lt;br /&gt;
[INFO] Scanning for projects...&lt;br /&gt;
[INFO]                                                                         &lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] Building Maven Stub Project (No POM) 1&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] &gt;&gt;&gt; maven-archetype-plugin:2.0-alpha-5:generate (default-cli) @ standalone-pom &gt;&gt;&gt;&lt;br /&gt;
[INFO] &lt;br /&gt;
[INFO] &lt;&lt;&lt; maven-archetype-plugin:2.0-alpha-5:generate (default-cli) @ standalone-pom &lt;&lt;&lt;
[INFO] 
[INFO] --- maven-archetype-plugin:2.0-alpha-5:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: local -&gt; jpa-spring-archetype (Archetype - jpa-spring-archetype)&lt;br /&gt;
Choose a number: : 1&lt;br /&gt;
Downloading: http://repository.jboss.com/maven2/es/discolo/archetype/jpa-spring-archetype/1.1-SNAPSHOT/maven-metadata.xml&lt;br /&gt;
Downloading: http://snapshots.jboss.org/maven2/es/discolo/archetype/jpa-spring-archetype/1.1-SNAPSHOT/maven-metadata.xml&lt;br /&gt;
Define value for property &#39;groupId&#39;: : com.mycorp&lt;br /&gt;
Define value for property &#39;artifactId&#39;: : prueba-archetype&lt;br /&gt;
Define value for property &#39;version&#39;:  1.0-SNAPSHOT: : &lt;br /&gt;
Define value for property &#39;package&#39;:  com.mycorp: : &lt;br /&gt;
Confirm properties configuration:&lt;br /&gt;
groupId: com.mycorp&lt;br /&gt;
artifactId: prueba-archetype&lt;br /&gt;
version: 1.0-SNAPSHOT&lt;br /&gt;
package: com.mycorp&lt;br /&gt;
Y: : y&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] BUILD SUCCESS&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] Total time: 46.169s&lt;br /&gt;
[INFO] Finished at: Sun Oct 24 12:54:19 CEST 2010&lt;br /&gt;
[INFO] Final Memory: 7M/66M&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;/blockquote&gt;&lt;br /&gt;
Perfecto! Con esto ya tenemos nuestro proyecto listo para echar a andar. Vamos a pasar los tests por si algo no ha ido bien.&lt;br /&gt;
&lt;blockquote&gt;...&lt;br /&gt;
Results :&lt;br /&gt;
&lt;br /&gt;
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0&lt;br /&gt;
&lt;br /&gt;
12:57:13.824 [Thread-1] INFO  o.hibernate.impl.SessionFactoryImpl - closing&lt;br /&gt;
12:57:13.824 [Thread-1] INFO  o.h.c.DriverManagerConnectionProvider - cleaning up connection pool: jdbc:hsqldb:mem:test&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] BUILD SUCCESS&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
...&lt;/blockquote&gt;&lt;br /&gt;
Pues esto es todo, espero que os ahorre algo de tiempo a la hora de empezar vuestros proyectos. El código fuente en un repositorio de git, en codaset, por si queréis consultarlo o mejorarlo.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://codaset.com/discolo/jpa-hibernate-archetype&quot;&gt;http://codaset.com/discolo/jpa-hibernate-archetype&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Saludos,&lt;br /&gt;
Discolo.</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/2225188600863759641/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/2225188600863759641' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/2225188600863759641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/2225188600863759641'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2010/10/creando-un-archetype-en-maven-2-3.html' title='Creando un archetype en Maven 2 / 3'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-1045023143171767157</id><published>2010-04-22T19:59:00.000+02:00</published><updated>2010-04-22T19:59:59.941+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="drivers"/><category scheme="http://www.blogger.com/atom/ns#" term="HTPC"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="wifi"/><title type='text'>VIA VT6566 en Ubuntu</title><content type='html'>Esta vez tocaba lidiar con la wifi de mi HTPC que no conseguía conectarse. La placa base es la Zotac ITX 9300 WiFi.&lt;br /&gt;
El WiFi que trae es el VIA VT 6566 que hasta hace poco tenías que compilarlo e instalarlo manualmente en Linux, pero aún así no conseguía conectarme, me detectaba la red pero no conseguía acceder, me pedía una y otra vez la clave.&lt;br /&gt;
&lt;br /&gt;
Bien, estamos hablando de Ubuntu 9.10 con los drivers instalados manualmente. Hoy he probado con la beta2 de Ubuntu 10.04 en su LiveCD y me he dado cuenta que los drivers vienen ya instalados, pero sigo con el mismo problema de no poder conectarme.&lt;br /&gt;
&lt;br /&gt;
La red WiFi está protegida con WPA y el router es un DLink DIR655 Firmware 1.32NA.  En los logs del Router veía el siguiente mensaje cuando veía que no podía conectar:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Received Deauthentication&lt;/blockquote&gt;&lt;br /&gt;
Para más detalles tenía configurada la seguridad de la siguiente forma:&lt;br /&gt;
&lt;blockquote&gt;Security Mode: WPA-Personal&lt;br /&gt;
WPA Mode: Auto (WPA or WPA2)&lt;br /&gt;
Cipher Type: AES and TKIP&lt;/blockquote&gt;&lt;br /&gt;
Estaba de esa forma porque viene por defecto así, además así aumentas la compatibilidad porque utilizas WPA2 con los dispositivos más modernos y WPA con los legacy.&lt;br /&gt;
&lt;br /&gt;
Claro, si le quitaba el cifrado me podía conectar, pero para probar vale, no lo voy a dejar así.&lt;br /&gt;
&lt;br /&gt;
Finalmente vi que cambiando el modo a &lt;b&gt;WPA2 Only&lt;/b&gt; y el tipo de cifrado a &lt;b&gt;AES&lt;/b&gt; podía conectarme correctamente (menos mal).&lt;br /&gt;
&lt;br /&gt;
Saludos,&lt;br /&gt;
Discolo</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/1045023143171767157/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/1045023143171767157' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/1045023143171767157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/1045023143171767157'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2010/04/via-vt6566-en-ubuntu.html' title='VIA VT6566 en Ubuntu'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-585394781148216380</id><published>2010-04-13T08:30:00.000+02:00</published><updated>2010-04-13T08:39:10.523+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JBoss"/><title type='text'>Alojando múltiples dominios en JBoss (Hosting multiple domains in JBoss)</title><content type='html'>&amp;nbsp;Esto es una situación que creo que es común, sobretodo en entornos corporativos. Voy a explicar los pasos necesarios y las fuentes utilizadas para conseguirlo (espero que se entienda xD)&lt;br /&gt;
&lt;br /&gt;
Tenemos 2 instancias de Jboss y en cada máquina hay 2 interfaces: Servicio y Operación y Mantenimiento (O&amp;amp;M) por lo tanto, necesitábamos tener expuestos por la interfaz de servicio los WebServices que se usarán por los clientes y el resto (portal de administración, jmx-console, etc.) por el de O&amp;amp;M. A parte es interesante evitar modificar el máximo número de ficheros de configuración, sobretodo de las aplicaciones de Jboss.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En el enlace siguiente he visto toda la información que hace falta:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.fusioncube.net/index.php/hosting-multiple-domains-with-jboss&quot;&gt;http://www.fusioncube.net/index.php/hosting-multiple-domains-with-jboss&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aquí se puede entrar en más detalle:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://tomcat.apache.org/tomcat-5.5-doc/config/&quot;&gt;http://tomcat.apache.org/tomcat-5.5-doc/config/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Partimos de que JBoss AS se a arrancado en el puerto 0.0.0.0 para que escuche por todos los interfaces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ya que las aplicaciones Web se despliegan en la instancia de tomcat que incluye jboss (jboss-web.deployer) es ahí donde configuraremos el fichero server.xml.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Existen 3 partes importantes en este fichero:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1º Definición del Engine y del default host. El defaultHost debe ser un vhost válido definido dentro del Engine y será donde se desplegarán todas las aplicaciones que no tengan un virtual-host definido.&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;&quot;&gt;&amp;lt;Engine name=&quot;jboss.web&quot; defaultHost=&quot;localhost&quot;&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;2º Localhost. Ya existe en la configuración por defecto y le añadimos los alias para que todo lo que entre por localhost o por uno de sus alias irá a las aplicaciones que no tengan configurado un virtual-host en su jboss-web.xml (puesto que es el defaultHost).&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;lt;Host name=&quot;localhost&quot; autoDeploy=&quot;false&quot; deployOnStartup=&quot;false&quot; deployXML=&quot;false&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; configClass=&quot;org.jboss.web.tomcat.security.config.JBossContextConfig&quot; &amp;gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Alias&amp;gt;myHostname_om&amp;lt;/Alias&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Alias&amp;gt;172.1.3.137&amp;lt;/Alias&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Valve className=&quot;org.jboss.web.tomcat.service.jca.CachedConnectionValve&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cachedConnectionManagerObjectName=&quot;jboss.jca:service=CachedConnectionManager&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transactionManagerObjectName=&quot;jboss:service=TransactionManager&quot; &amp;gt;&amp;lt;/Valve&amp;gt; &amp;lt;/Host&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;3º Definición de cada virtual host extra. Un virtual host permite separar las aplicaciones web y aplicar distintas configuraciones. En este caso definimos uno para la lógica de servicio con 2 alias, uno para resolver por hostname y otro para resolver por IP. El name del host puede ser tanto una ip como un hostname, pero en este caso para llamar al host de una forma genérica se le ha llamado vhost_ls.&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;Host name=&quot;vhost_ls&quot; autoDeploy=&quot;false&quot; deployOnStartup=&quot;false&quot; deployXML=&quot;false&quot;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; configClass=&quot;org.jboss.web.tomcat.security.config.JBossContextConfig&quot;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Alias&amp;gt;myHostname_ls&amp;lt;/Alias&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Alias&amp;gt;192.168.2.137&amp;lt;/Alias&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Valve className=&quot;org.jboss.web.tomcat.service.jca.CachedConnectionValve&quot;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cachedConnectionManagerObjectName=&quot;jboss.jca:service=CachedConnectionManager&quot;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transactionManagerObjectName=&quot;jboss:service=TransactionManager&quot; &amp;gt;&amp;lt;/Valve&amp;gt; &amp;lt;/Host&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Una vez configurado el vhost se modificará la configuración de cada aplicación web que queremos que vaya al vhost_ls. Editando su fichero ./WEB-INF/jboss-web.xml, añadiremos lo siguiente (funciona tanto para el hostname como la ip):&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;jboss-web&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;virtual-host&amp;gt;myHostname_ls&amp;lt;/virtual-host&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;context-root&amp;gt;/&amp;lt;/context-root&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;/jboss-web&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Esto es lo que yo he configurado en nuestro entorno. En teoría, quedaría mejor tener el vHost-localhost el vHost-lógicaServicio y el vHost-O&amp;amp;M cada uno con sus alias, incluso quitar localhost, así solo poder atacar por esos dos, poniendo como defaultHost el de O&amp;amp;M, pero en la práctica no he sido capaz de hacerlo funcionar, así que si alguien lo intenta y lo consigue que me avise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un saludo y espero que os sea de ayuda.&lt;br /&gt;
&lt;br /&gt;
Discolo</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/585394781148216380/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/585394781148216380' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/585394781148216380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/585394781148216380'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2010/04/alojando-multiples-dominios-en-jboss.html' title='Alojando múltiples dominios en JBoss (Hosting multiple domains in JBoss)'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-7082664992194158403</id><published>2009-12-02T11:47:00.000+01:00</published><updated>2009-12-02T11:49:53.906+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ciberderechos"/><title type='text'>Manifiesto en defensa de los derechos fundamentales en internet</title><content type='html'>&lt;div class=&quot;intro&quot;&gt;Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que... &lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;full&quot;&gt;1.- &lt;b&gt;Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos&lt;/b&gt;, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.&lt;br /&gt;
2.- &lt;b&gt;La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial&lt;/b&gt;. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web. &lt;br /&gt;
3.- &lt;b&gt;La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español&lt;/b&gt;, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional. &lt;br /&gt;
4.- &lt;b&gt;La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural&lt;/b&gt;. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes. &lt;br /&gt;
5.- &lt;b&gt;Los autores&lt;/b&gt;, como todos los trabajadores, &lt;b&gt;tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades&lt;/b&gt; asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo. &lt;br /&gt;
6.- Consideramos que &lt;b&gt;las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales&lt;/b&gt;, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir. &lt;br /&gt;
7.- &lt;b&gt;Internet debe funcionar de forma libre y sin interferencias políticas&lt;/b&gt; auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.&lt;br /&gt;
8.- &lt;b&gt;Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España&lt;/b&gt;, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.&lt;br /&gt;
9.- &lt;b&gt;Proponemos una verdadera reforma del derecho de propiedad intelectual&lt;/b&gt; orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.&lt;br /&gt;
10.-  y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.&lt;b&gt;En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Actualización: 12/02 08:53 GMT&lt;/b&gt; por &lt;b&gt; &lt;a href=&quot;http://barrapunto.com/&quot;&gt;Candyman&lt;/a&gt; &lt;/b&gt;:Este manifiesto es obra de muchas manos, y propiedad de todos. Si te gusta, cópialo, pásalo, publícalo en tu weblog o haz lo que quieras con él.&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;full&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;full&quot;&gt;Fuente original de Barrapunto:&amp;nbsp; &lt;a href=&quot;http://ciberderechos.barrapunto.com/article.pl?sid=09/12/02/086200&quot;&gt;Manifiesto en defensa de los derechos fundamentales en internet &lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/7082664992194158403/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/7082664992194158403' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/7082664992194158403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/7082664992194158403'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2009/12/manifiesto-en-defensa-de-los-derechos.html' title='Manifiesto en defensa de los derechos fundamentales en internet'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-4776587744681307643</id><published>2009-11-21T10:43:00.000+01:00</published><updated>2009-11-21T10:44:49.391+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Eclipse y Flash en Karmic Koala</title><content type='html'>Tras actualizar sin paciencia a esta nueva versión de Ubuntu me he encontrado con un par de problemas y es que no funcionaban los botones en eclipse 3.4 y 3.5 y a veces el interfaz se comportaba de un modo extraño. La solución es la siguiente...&lt;br /&gt;
&lt;br /&gt;
Ejecuto este sencillo script y sin problemas&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export GDK_NATIVE_WINDOWS=1&lt;br /&gt;
&lt;eclipse_home&gt;/eclipse&lt;/eclipse_home&gt;&lt;br /&gt;
&lt;br /&gt;
Otro tema que ha habido que resolver ha sido el Flash que no iba nada bien ya que tengo puesto la versión de Ubuntu de 64bits y al pasar de la 9.04 a la 9.10 ha dejado de funcionar bien.&lt;br /&gt;
Solución:&lt;br /&gt;
&lt;br /&gt;
1º Desinstalar la versión actual del plugin de Flashplayer (mediante Gestor de paquetes, Terminal o como sea)&lt;br /&gt;
&lt;br /&gt;
2º Descargar la versión 10 de 64bits desde la web: &lt;a href=&quot;http://labs.adobe.com/downloads/flashplayer10.html&quot; target=&quot;_blank&quot;&gt;http://labs.adobe.com/downloads/flashplayer10.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
3º Copia el fichero &#39;libflashplayer.so&#39; a /usr/lib/mozilla/plugins. Debes ser root para poder hacerlo&lt;br /&gt;
&lt;br /&gt;
4º Reinicia firefox.&lt;br /&gt;
&lt;br /&gt;
Saludos!</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/4776587744681307643/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/4776587744681307643' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/4776587744681307643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/4776587744681307643'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2009/11/eclipse-y-flash-en-karmic-koala.html' title='Eclipse y Flash en Karmic Koala'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-6880435473341072170</id><published>2009-10-10T02:32:00.001+02:00</published><updated>2009-10-26T10:09:20.068+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Moviles"/><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad"/><title type='text'>Estafa telefónica con los números 882</title><content type='html'>Bueno, pues el otro día recibo un toque en mi movil desde el número &lt;b&gt;+88213550865&lt;/b&gt; y como no me fiaba ni un pelo pero me picaba la curiosidad empecé a indagar sobre por lo menos el prefijo y descubrí que pertenece a &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/International_Networks_%28country_code%29&quot;&gt;International Networks&lt;/a&gt;&quot; una oscura numeración de carácter internacional que se emplea en telefonía vía satélite.&lt;br /&gt;
&lt;br /&gt;
Es decir que por lo visto son empresas que se dedican a hacer perdidas a diestro y siniestro para ver si alguien pica y les devuelve el toque o les llama para así cobrarte un pastizal.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.the-scream.co.uk/forums/t28339.html%20&quot;&gt;Aquí hay bastante información al respecto&lt;/a&gt; (Inglés)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.securitybydefault.com/2009/02/fraude-internacional-mediante-llamadas.html&quot;&gt;Y aquí en la web que todo lo sabe de seguridad :D&lt;/a&gt; (Español)&lt;br /&gt;
&lt;br /&gt;
Espero que esta información os sea de utilidad para evitar que caigais en la tentación de devolver la llamada a estos &quot;listos&quot;.&lt;br /&gt;
Saludos.</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/6880435473341072170/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/6880435473341072170' title='59 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/6880435473341072170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/6880435473341072170'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2009/10/estafa-telefonica-con-los-numeros-882.html' title='Estafa telefónica con los números 882'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>59</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-4132542558436138985</id><published>2009-10-05T23:38:00.000+02:00</published><updated>2009-10-05T23:42:59.614+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTPC"/><title type='text'>El místico mundo de los HTPCs</title><content type='html'>Como aficionado a la tecnología y al cine quería añadir una entrada sobre los ordenadores de salón o Home Theatre Personal Computers.&lt;br /&gt;
&lt;br /&gt;
Tiempo atrás tenía un reproductor multimedia con disco duro, estuve mirando y remirando y el HMR-351N parecía la mejor opción.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.o2media.es/images/productos/o2_hmr-351N/o2_hmr-351n.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;195&quot; src=&quot;http://www.o2media.es/images/productos/o2_hmr-351N/o2_hmr-351n.jpg&quot; width=&quot;420&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Tenía &quot;sintozinador&quot; de T.V. por lo que podía grabar mis programas favoritos. Podía reproducir video en Alta Definición y un montón de cosas más.&lt;br /&gt;
Estuve revisando varios modelos entre ellos el Popcorn Hour 110 y al final opté por comprar el HMR-351N sin disco duro, comprar un disco duro portátil de 2.5&quot; y usarlo temporalmente porque también quería tener uno para mis cosas.&lt;br /&gt;
&lt;br /&gt;
Al final me compré a parte un disco duro de 1TB de Samsung, que funciona a 5.400rpm pero con un tiempo de acceso a disco bastante aceptable, por lo que debería hacer menos ruido, consumir menos electricidad y para ver películas ser más que suficiente.&lt;br /&gt;
&lt;br /&gt;
Empezaron las sorpresas con el HMR. La primera fué la pésima compatibilidad con contenido en Alta Definición. Para poder ver algo en HD tenías que hacer Streaming desde el ordenador, por lo que al ir por WIFI (en mi caso) a 720p iba muy muy justo, era un auténtico engorro y sólo podía hacerse con Windows. Pregunté al servicio técnico por si en alguna actualización futura del Firmware se pudiera cambiar y me contestaron que no, que ese chip no soportaba la decodificación de HD.&lt;br /&gt;
&lt;br /&gt;
Lo peor fue que al intentar ponerle el disco duro Samsung no funcionaba bien. Se formateaba bien, se hacían las particiones y al empezar a copiar las películas se reiniciaba. ¿Posible error del disco duro? ¿Problema de compatibilidad?&lt;br /&gt;
Pues volví a contactar con el servicio técnico y me dijeron que sólo garantizaban la compatibilidad con el Western Digital que venden junto con el disco duro. Qué majos!&lt;br /&gt;
&lt;br /&gt;
Solución... lo vendí...&lt;br /&gt;
&lt;br /&gt;
Antes del verano utilicé el dinero de vender el reproductor en comprarme un HTPC que sirviera para ver todo tipo de películas y tal vez para echar algún vicio.&lt;br /&gt;
Lo que buscaba era:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Tamaño ITX&lt;/li&gt;
&lt;li&gt;Core duo&lt;/li&gt;
&lt;li&gt;Capacidad para disco de 3.5&quot; (para reutilizar el Samsung)&lt;/li&gt;
&lt;li&gt;BluRay&lt;/li&gt;
&lt;li&gt;Teclado inalhámbrico con trackball&lt;/li&gt;
&lt;li&gt;Salida HDMI&lt;/li&gt;
&lt;li&gt;WiFi&lt;/li&gt;
&lt;li&gt;Gráfica aceptable &lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;Lo que finalmente monté fue una Zotac ITX con GeForce 9300 y WiFi integrado.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://techreport.com/r.x/ces-2009/zotac-board.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;329&quot; src=&quot;http://techreport.com/r.x/ces-2009/zotac-board.jpg&quot; width=&quot;420&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Además me trae salida óptica, HDMI, DVI, unos cuantos USBs y muchas cosas más.&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Aquí hay &lt;a href=&quot;http://www.avsforum.com/avs-vb/showthread.php?t=1111996&quot;&gt;una review (inglés)&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;La caja está bastante bien y es baratilla, con el tiempo han salido más y mejores, tanto estéticamente como técnicamente. Pero la elegida fué la APEX MI-008&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp;&lt;a href=&quot;http://www.apextechusa.com/images_u/mi/mi-008main.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.apextechusa.com/images_u/mi/mi-008main.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;Tiene una bahía de 3.5&quot; para el disco duro y una de 5.25&quot; para un lector normal (no slim). Además viene con una fuente de alimentación razonablemente silenciosa de 250W.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;El teclado no está mal, estuve mirando varios modelos y al final me quedé con este.&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;a href=&quot;http://www.ibertronica.es/detalle/TECTRA-6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;254&quot; src=&quot;http://www.ibertronica.es/detalle/TECTRA-6.jpg&quot; width=&quot;420&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;El procesador que he montado ha sido el Intel Core 2 Duo 7400 que creo que le viene de sobra para lo que quiero con un disipador de perfil bajo (el que viene en la caja no cabe). Además de 4GB de RAM a 1066MHz.&lt;br /&gt;
Para curarme en salud le puse un ventilador lateral Noctua que no hace nada de ruido y tiene unos limitadores para controlar las revoluciones.&lt;br /&gt;
&lt;br /&gt;
Estoy bastante contento con el conjunto. Tal vez la caja no fué la mejor elección. No me gusta mucho la orientación del ventilador de la fuente de alimentación hacia el mismo sitio que el disipador del procesador.&lt;br /&gt;
Tengo pendiente hacerle una modificación. Si le doy la vuelta, hacia arriba, y le hago unos orificios con un taladro a la caja seguro que consigo que esté más fresco el procesador. La temperatura no es un problema pero, como he dicho, la caja podría estar mejor hecha.&lt;br /&gt;
&lt;br /&gt;
De momento tengo un arranque dual con Ubuntu y Windows Media Center para ver con cuál me quedo. También tengo pendiente configurarlo para utilizar el mando de la Wii como mando a distancia una vez arrancado el XBMC (de los que he probado, el mejor). Poco a poco.&lt;br /&gt;
&lt;br /&gt;
Han ido saliendo placas base con el procesador Atom integrado, las famosas Zotac ION que por lo visto están dando un resultado muy bueno, consumen poco y lo reproducen todo. Como he comentado antes, han salido cajas muy buenas y bien ventiladas, con el espacio muy bien administrado. Peeeero, es muy caro estar a la última, por lo que me conformo con lo que tengo pues de momento me ha servido para todo lo que he necesitado.&lt;br /&gt;
&lt;br /&gt;
Hasta aquí mi historia sobre cómo ver una peli en el salón.</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/4132542558436138985/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/4132542558436138985' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/4132542558436138985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/4132542558436138985'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2009/10/el-mistico-mundo-de-los-htpcs.html' title='El místico mundo de los HTPCs'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10509075.post-6490789715425791789</id><published>2009-10-04T19:38:00.000+02:00</published><updated>2009-10-05T23:45:24.469+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>HTC Magic, esperando al Donut</title><content type='html'>Llevo ya un tiempo con la Magic (no es blanca, lo siento por los puristas) y aún no he tenido ningún problema en cuanto a funcionamiento, batería, etc.&lt;br /&gt;
Durante las búsquedas por Google he recopilado un grupo de webs bastante actualizadas que incluyen noticias, aplicaciones, comentarios y demás novedades que afectan a Android, hago referencia a ellas por si alguien las ve tan útiles como me han resultado a mí.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://and.roid.es/&quot;&gt;Blog sobre Android en español&lt;/a&gt; &lt;br /&gt;
&lt;a href=&quot;http://www.unandroideenvodafone.com/index.php&quot;&gt;Blog sobre HTC Magic y Android&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.android.com/&quot;&gt;Web oficial de Android&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
En todas se habla de la nueva actualización, que no llega aún a las Magic de Vodafone, a ver si los cambios que incluyen son usables y merecen la pena. Parece que sí. &lt;br /&gt;
&lt;br /&gt;
En cuanto a la conectividad, me sorprendió que no se pudiera enviar ficheros por Bluetooth, parece ser que has de ser root y disponer de una aplicación de pago para poder hacerlo. ¿Realmente tanto costaba ponerlo como una característica básica? ¿Tal vez la incluyan en la futura v2.0? Ni idea.&lt;br /&gt;
&lt;br /&gt;
Por otro lado gusta ver que amigos y compañeros del trabajo poco a poco van eligiendo Android y que lo encuentran divertido de usar y útil. Yo he notado bastante cambio en mi día a día símplemente a la hora de visitar sitios nuevos, de orientarme tanto a pie como en coche (Maps). Salir de dudas al instante mediante la Wapedia o Google. Y muchas cosas más.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://venturebeat.com/wp-content/uploads/2009/09/android_donut-gxz.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://venturebeat.com/wp-content/uploads/2009/09/android_donut-gxz.png&quot; width=&quot;177&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Bueno, hasta aquí mi pequeña reflexión sobre la Magic. No soy ningún experto ni pretendo serlo, símplemente un usuario más.&lt;br /&gt;
Saludos</content><link rel='replies' type='application/atom+xml' href='http://discolo.blogspot.com/feeds/6490789715425791789/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/10509075/6490789715425791789' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/6490789715425791789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10509075/posts/default/6490789715425791789'/><link rel='alternate' type='text/html' href='http://discolo.blogspot.com/2009/10/htc-magic-esperando-al-donut.html' title='HTC Magic, esperando al Donut'/><author><name>Discolo</name><uri>http://www.blogger.com/profile/06100021314796981071</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_KL37fOKDWd0/SxwLtttd3dI/AAAAAAAAAQ0/USdzrQ6sb3s/S220/discoloe.gif'/></author><thr:total>0</thr:total></entry></feed>