domingo, 8 de julio de 2012

Conectar Ice Cream Sandwich con Ubuntu 12.04 LTS


Bueno, después de idas y vueltas, pude leer el filesystem de un Samsung Nexus S.


Primero que nada, hay que asegurarse que la conexión del dispositivo está configurado como "MTP".
Luego, arranca la magia;


Ahora hay dos opciones
  • Primera
sudo apt-get install libusb-dev
Luego, descargar la última versión de la biblioteca MTP para linux libmtp, descargarla en la carpeta personal o donde quieran, e instalarla

cd libmtp-1.1.2
./configure --prefix=/usr
make
sudo make install
Conectar el dispositivo android, y debería montarselos de forma automática.
Esa fue fácil. El problema es que por defecto ubuntu no trae instaladas las bibliotecas de manejo de MTP.
  • Segunda
Hay que instalar las herramientas necesarias:
sudo apt-get install mtp-tools mtpfs

Después, con el teléfono el el USB, es necesario correr las siguientes sentencias;
mtp-detect | grep idVendor
mtp-detect | grep idProduct

Abrir, otra terminal y ejecutar el siguiente comando:
gksu gedit /etc/udev/rules.d/51-android.rules
Eso abrirá un editor de texto, donde tendrán que agregar las siguientes líneas;
SUBSYSTEM=="usb"
ATTR{idVendor}=="VENDORID"
ATTR{idProduct}=="PRODUCTID", MODE="0666"
VENDORID y PRODUCTID son los que sacamos de la consola.
Salvar el archivo, y desconectar el teléfono.


Abrir nuevamente la consola, y ejecutar:
sudo service udev restart
sudo mkdir /media/GalaxyNexus
sudo chmod a+rwx /media/GalaxyNexus
sudo adduser USUARIO fuse
Donde USUARIO es el nombre que aparece arriba de la consola, a la izquierda del "@" (tu usuario).
Paso siguiente, escribir gksu gedit /etc/fuse.conf, y se abrirá otro editor de texto, donde hay que descomentar la última línea para dar los permisos necesarios.
#user_allow_other, sacar el #.

Salvar los cambios, y reinicar.
Para finalizar, es necesario agregar a la lista de comandos:
android-connect
android-disconnect

Esto, escribiendo en el terminal:
echo "alias android-connect=\"mtpfs -o allow_other /media/GalaxyNexus\"" >> ~/.bashrc
echo "alias android-disconnect=\”fusermount -u /media/GalaxyNexus\"" >> ~/.bashrc
source ~/.bashrc
Increíblemente, enchufé un iPhone y lo reconoció sin mayores inconvenientes...
Lo increíble es que en un android que está basado en linux, se tenga que hacer toda esa triquiñuela y no lo traiga implementado de forma nativa.

domingo, 24 de junio de 2012

J2ee + Primefaces + GlassFish

Intentando liquidar con el proyecto final del curso de J2ee, resolví usar Primefaces para solucionar la parte gráfica.

Existen varios tutoriales, incluso en el PrimeFace ShowCase se muestra como es fácil integrar una aplicación j2ee con los jars empaquetados que distribuye esta gente. Mentira

Varias cosas a tener en cuenta cuando estás en el nivel "muy amateur":

Skins o Themes: dependiendo de la versión que tengas disponible y la alineación de los planetas en el cosmos, se refieren a lo mismo de forma indistinta.
Existe la posibilidad de importar los .jars con los themes, pero lo que finalmente me resultó fue descomprimir el .jar y tirar la carpeta images y el .css para adentro del proyecto, y en cada .xhtml agergar el tag;

        <h:head>
           <link type="text/css" rel="stylesheet" href="theme.css"/>
        </h:head>

Con eso deberíamos poder instalar cualquier tema del repositorio.

faces-config.xmlSi bien la nueva especificación del estándar están las notaciones como "@ManagedBean(value="myBean")@SessionScoped", no pude safar de crearlo y especificarlos en el mismo, por ejemplo;

   <managed-bean>
       <managed-bean-name>fileUploadController</managed-bean-name>
       <managed-bean-class>FileUploadController</managed-bean-class>
       <managed-bean-scope>session</managed-bean-scope>
   </managed-bean>

FileUpload Auto: Después de que el proyecto estaba configurado, necesitaba un control para manejo de archivos. Intenté probar con el FileUploadAuto, y no me funcionaba, pero tampoco me daba ningún error. Así que cambié a FileUploadSimple, que me tiró una muy linda Exception y me di cuenta que era lo que estaba pasando.

Primero: Estos controles usan unas bibiliotecas de apache (common-io y el commons-fileupload).
Estos jars hay que importarlos al proyecto e indicar que los empaquete dentro de /WEB-INF/lib.

Segundo: Si compila todo, pero no se logra hacer el deploy, hay copiar esos jars en toda carpeta /lib que se encuentre dentro del GlassFish.

Tercero: Agregar los siguientes tags en el web.xml

<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

Con eso y agregando los Backing Beans que sean necesarios, debería funcionar.




lunes, 16 de enero de 2012

Es relativo...

Lunes otra vez, y más pesado que de costumbre...

Después de haber metido horas de playa, que el roce con el agua tibia quema... tabla y tabla, que no me podía abrochar la camisa hoy de mañana... comida y bebida que el mate hoy vino con carqueja y yerba para flojitos...

La paloma este fin de semana quebró la gala. La cantidad de gente justa, el agua transparente, ni frío ni calor, olas de entre medio metro y metro.

Flotando en el medio del agua, pensando en el asadito que se venía en un par de horas, es cuando se te vienen a la mente frases como: "Yo no elegí nacer en Uruguay, solo tuve suerte!".