06 diciembre 2011

AIX - Volume Groups, Filesystems y puntos de montaje


Para tenerlo claro, un volume group es una conglomeración (como tener una gran unidad virtual) de physical volumes (
discos físicos), y un filesystem (sistema de archivos) es una partición que se crea a partir de espacios en el volume group. A los filesystems se le asignan puntos de montajes mediante los cuales el usuario puede acceder a la información que en ellos se almacena.






El comando "df -g" nos permite ver la información de los filesystems existentes (con el argumento "-g" vemos a información en GB) en el sistema así como los puntos de montaje que tienen asignados. Existe un comando similar en Linux con más argumentos y de mejor lectura.

# df -g
Filesystem GB blocks   Free %Used Iused %Iused Mounted on
/dev/hd4        0.19   0.01   96% 10078 79%    /
/dev/hd2        2.25   0.20   92% 43429 46%    /usr
/dev/hd9var     0.44   0.12   74% 8201 23%    /var
/dev/hd3        0.12   0.12  5%     37 1%    /tmp
/dev/hd1        0.06   0.06  1%   5    1%    /home
/dev/hd11admin   0.12   0.12  1%      5    1%    /admin
/proc             -      -  -       -     -    /proc
/dev/hd10opt    0.44   0.19   57% 8930 17%    /opt
/dev/livedump   0.25   0.25  1%       4   1%    /var/adm/ras/livedump


El comando “lspv” nos brinda información sobre el physical volume especificado. Cuando no se ingresan argumentos este comando nos muestra el nombre, el identificador y el volume group de los physical volumes existentes en el sistema. Ejemplos:


Sin argumentos:
# lspv
hdisk0       000ec0ea0c6d251b                 rootvg       active


Con el nombre del physical volume a consultar:
# lspv hdisk0
PHYSICAL VOLUME: hdisk0                VOLUME GROUP: rootvg
PV IDENTIFIER:   000ec0ea0c6d251b VG IDENTIFIER 000ec0ea0000d400000001340                                                                                     c6d25c4
PV STATE:        active
STALE PARTITIONS:   0                     ALLOCATABLE:   yes
PP SIZE:         64 megabyte(s)        LOGICAL VOLUMES:  12
TOTAL PPs:       639 (40896 megabytes) VG DESCRIPTORS:   2
FREE PPs:        551 (35264 megabytes) HOT SPARE:     no
USED PPs:        88 (5632 megabytes)   MAX REQUEST:   256 kilobytes
FREE DISTRIBUTION:  127..100..68..128..128
USED DISTRIBUTION:  01..28..59..00..00
MIRROR POOL:     None

02 noviembre 2011

Android - Firmando una aplicación para subir al Android Market

Para firmar una aplicación es necesario exportar la aplicación con Eclipse, pero sin firmarla con el certificado de debug. Para esto, pulsamos con el botón derecho en el proyecto y seleccionamos AndroidTools > Expor Unsigned Application Package. Ahora, basta determinar la ubicación en la que nuestro archivo APK será copiado en la PC.

Para continuar, digamos que nuestro archivo se llama enjoyit.apk. De este modo, el siguiente paso es firmar la aplicación con la llave privada que hemos generado en el post anterior, esta operación se lleva a cabo con el comando jarsigner, también disponible en el JDK.

Antes de firmar la aplicación verificaremos que la misma aun no está firmada; esto se realiza con la siguiente sentencia:
jarsigner.exe -verify enjoyeat.apk
Nos deberá aparecer un mensaje como el que listo a continuación:
jar is unsigned (signatures missing or not parsable)
Habiéndonos asegurado que el apk no está firmado, ejecutaremos la siguiente sentencia para realizar el firmado.
jarsigner -verbose -keystore nombre_key_store.keystore enjoyit.apk alias_key_store
A continuación, nos pedirá ingresar la contraseña con la que creamos la llave privada. Una vez finalizado el proceso de firmado, volveremos a verificar si el APK efectivamente ha sido firmado mediante la sentencia:
jarsigner.exe -verify enjoyeat.apk
Deberá aparecernos el mensaje:
jar verified.

Android - Obtener un certificado digital para firmar nuestra aplicación

Para instalar una aplicación en un equipo real es necesario firmarla con un certificado digital. Para instalar la aplicación en un emulador, esto también es necesario, sin embargo, todo lo hace automáticamente el eclipse.

Una buena noticia es que nuestro certificado digital no necesitar estar firmado por una CA (Autoridad Certificadora), y un certificado digital creado por nosotros mismos (autofirmado) es suficiente.

Necesitamos obtener una llave privada para firmar nuestro certificado.

Para generar una llave privada podemos utilizar la herramienta keytool, que está disponible en el JDK. Para eso, vamos a emplear la siguiente sentencia:

keytool -genkey -v -keystore nombre_key_store.keystore -alias alias_del_key_store -keyalg RSA -validity 10000
Escriba la contraseña del almacén de claves:
Volver a escribir la contraseña nueva:
┐Cuáles son su nombre y su apellido?
  [Unknown]:  Armando Picon
┐Cuál es el nombre de su unidad de organización?
  [Unknown]:  android
┐Cuál es el nombre de su organización?
  [Unknown]:  limagtug
┐Cuál es el nombre de su ciudad o localidad?
  [Unknown]:  Lima
┐Cuál es el nombre de su estado o provincia?
  [Unknown]:  Lima
┐Cuál es el c¾digo de país de dos letras de la unidad?
  [Unknown]:  PE
┐Es correcto CN=Armando Picon, OU=android, O=limagtug, L=Lima, ST=Lima, C=PE?
  [no]:  si
Generando par de claves RSA de 1.024 bits para certificado autofirmado (SHA1 with RSA) con una validez de 10.000 días
        para: CN=Armando Picon, OU=android, O=limagtug, L=Lima, ST=Lima, C=PE
Escriba la contrase±a clave para
        (INTRO si es la misma contraseña que la del almacén de claves):
Volver a escribir la contraseña nueva:
[Almacenando nombre_key_store.keystore]

Esta sentencia creará el archivo nombre_key_store.keystore con el alias alias_key_store.

Android - Como generar API Key de Google Maps para desarrollo

Hace unos meses un amigo publicó un post sobre el Uso de Google Maps API en Android en el blog de Lima GTUG.

En el primer punto nos indica obtener el api key de desarrollo y quería agregar algo más de detalle respecto a cómo obtener este dato.

1. Necesitamos generar un certificate's MD5 fingerprint (o huella digital de certificado MD5), empleando la herramienta keytool que viene con el Java SDK y que no forma parte del Android SDK. Para ello ejecutamos la siguiente sentencia:

keytool.exe -list -alias androiddebugkey -keystore c:\Users\\.android\debug.keystore -storepass android -keypass android

La respuesta que recibiremos será similar a la que pongo a continuación:

androiddebugkey, 29-sep-2011, PrivateKeyEntry,
Huella digital de certificado (MD5): 8D:70:55:75:8A:F8:62:53:54:62:A2:74:75:64:32:77 

2. Ya habiendo generado el dato anterior, iremos a la página: http://code.google.com/android/maps-api-signup.html, he ingresamos el dato generado.

Agregamos el dato en el campo "My certificate's MD5 fingerprinter".

A continuación, aceptamos los términos y condiciones, y finalmente, pulsamos en Generate API Key. La pantalla que aparecerá nos mostrará el API Key generado, la huella digital del certificado y un ejemplo del uso de este key en nuestro layout.

En la siguiente pantalla no aparecerá un resumen con el API Key generado,
la huella digital del certificado y un ejemplo de su uso en un layout.

De ahora en adelante, para hacer uso de Google Maps en nuestros proyectos de Android ya sabemos lo que requerimos.

13 octubre 2011

IBM WebSphere Portal Mobile Experience V7.0 - Your Portal Needs a Mobile Theme NOW


Kudos to Jon Lidaka for getting this published: -

Mobile is exploding and no longer considered an add-on. It is quickly becoming a primary channel for customers and employees to be productive.  The Portal Mobile Experience provides you code to quickly extend WebSphere Portal sites to mobile devices that support Webkit (Apple, Android, Blackberry phones).  This new theme shows how to control the look and feel, page navigation and content navigation on a smartphone and provides examples of rich mobile web interaction patterns such as swipe, carousel, accordion, and swap using CSS3 and HTML5.

Available here on Greenhouse. Get downloading NOW

Two rather useful tools for IBM WebSphere Portal and IBM Web Content Manager

Both are available in the Greenhouse; definitely worth a download ….


The IBM Portal Log Analyzer is a tool designed to help users of IBM's WebSphere Portal product troubleshoot issues with ConfigEngine and JVM startup failures.

Loading a ConfigTrace.log into the Log Analyzer tool allows you to:

• View an interactive list of ConfigEngine scripts that have been executed in your environment
• Quickly identify failed ConfigEngine scripts
• Find the right errors to troubleshoot
• View the properties used at the time of a specific ConfigEngine script


The IBM Support Tools portlet for Lotus WCM provides an assortment of tools that are useful in troubleshooting content related issues.

This portlet includes tools to view the JCR repository for WCM content, run an xpath query and view results, and directly execute various support jsps. These tools are commonly provided by support on a case to case basis to gather information specific to customer environment and content. With this portlet installed on the WCM system, it will help expedite the troubleshooting process.
greenhouse

The portlet is available for v6.0.1.X , v6.1.X and v7.0 of WebSphere Portal and can only be used on Portals that have WCM installed on the them.

17 junio 2011

Creación de un portal virtual a través del Configuration Task (aka ConfigEngine)

Para crear un portal virtual haciendo uso del ConfigEngine, necesitamos editar el archivo /ConfigEngine/config/helpers/virtual_portal.properties y debemos completar los siguientes parámetros (resaltados):

# VirtualPortalTitle: Title of the Virtual Portal
VirtualPortalTitle=PortalPrueba1

# VirtualPortalRealm: Realm of the Virtual Portal
VirtualPortalRealm=defaultWIMFileBasedRealm

# VirtualPortalHost: Hostname of the Virtual Portal
VirtualPortalHostName=

# VirtualPortalContext: Context of the Virtual Portal
VirtualPortalContext=prueba1

# VirtualPortalNlsFile: File which contains language specific information for the Virtual Portal
VirtualPortalNlsFile=

# VirtualPortalObjectId: ObjectId of the Virtual Portal
# The ObjectId is needed to modify, delete Virtual Portals and
# can be obtained by running task list-all-virtual-portals
# Note: Do not delete the default Virtual Portal (ObjectId ends with _0)
VirtualPortalObjectId=

Para este ejemplo voy a crear un portal con el contexto "prueba1". 

Una vez que hemos ingresado los datos correspondientes ejecutamos la siguiente sentencia:

./ConfigEngine.sh -DparentProperties=/ConfigEngine/config/helpers/virtual_portal.properties create-virtual-portal

++++ Actualización ++++
En algunas situaciones podría aparecerles el siguiente mensaje de error:


  [wsadmin] WASX7209I: Connected to process "WebSphere_Portal" on node node01 using SOAP connector;  The type of process is: UnManagedProcess
  [wsadmin] WASX7303I: The following options are passed to the scripting environment and are available as arguments that are stored in the argv variable: "[/opt/IBM/WebSphere/wp_profile/ConfigEngine]"
  [wsadmin] false
  [wsadmin] VirtualPortalTitle:    PortalPrueba1
  [wsadmin] VirtualPortalRealm:    defaultWIMFileBasedRealm
  [wsadmin] VirtualPortalContext:  prueba1
  [wsadmin] VirtualPortalHostName:
  [wsadmin] VirtualPortalNlsFile:
  [wsadmin] logged in as "uid=wpsadminaux,o=defaultWIMFileBasedRealm"
  [wsadmin] [06/17/11 17:09:21.148 PET] EJPXD0001I
  [wsadmin] [06/17/11 17:09:21.169 PET] EJPCA3001I: "VirtualPortalRealm in wkplc.properties with defaultWIMFileBasedRealm" already there. No action taken
  [wsadmin] [06/17/11 17:09:24.581 PET] EJPXD0002E
  [wsadmin] [06/17/11 17:09:24.583 PET] EJPCA3002E: ERROR: "VirtualPortal with context prueba1" already there
  [wsadmin] It appears that a Virtual Portal already exist with context prueba1.
  [wsadmin] java.rmi.RemoteException: com.ibm.wps.command.CreateVPFailedBecauseDuplicateKeyException: EJPEB0806E: Creating a virutal portal failed because a unique key constraint in the data backend was violated. Likely a virutal portal with the same context was deleted but still exists in the database. It is recommended to run the cleanup task for deleting resources by running the XML script Task.xml using the XML configuration interface.


Cuando suceda esto, debemos correr la siguiente sentencia desde la ruta "/bin":

./xmlaccess.sh -in ../doc/xml-samples/Task.xml -out result-Task.xml -url http://:10039/wps/config -user -password

Eliminando un Portal Virtual con el Configuration Task (aka ConfigEngine)

Para eliminar un portal virtual, lo primero que debemos hacer es obtener el listado de portales virtuales existentes. Para realizar esto ejecutamos la siguiente sentencia:

./ConfigEngine.sh list-all-virtual-portals

Al ejecutarla, se mostrará un listado como aparece en la siguiente figura.


Finalmente, con el valor que figura en el atributo "Object ID" del portal que deseamos eliminar ejecutamos la siguiente sentencia:

./ConfigEngine.sh delete-virtual-portal -DVirtualPortalObjectId=Z18_DNG2OKG10GV880I1P7FOOQ3GU6


No está de más señalar que "Z18_DNG2OKG10GV880I1P7FOOQ3GU6" es el Object ID antes mencionado. 

25 mayo 2011

WP6 to WP7: Migración de Temas

En estos días vengo trabajando en un proyecto de migración de la versión 6.0 a la versión 7.0 de IBM WebSphere Portal.

Cuando llegué a la parte de migración de temas seguí las instrucciones que figuran en el siguiente enlace:


Sin embargo, para que esto funciones tuve primero que aplicar las instrucciones de este enlace:


¿Por qué? Porque por defecto el WP7 trae consigo el PageBuilder v2 y para que podamos migrar los temas de la versión anterior es necesario emplear el PageBuilder v1.

19 mayo 2011

Creando el atajo "Android Project" en mi Eclipse

Por defecto, y a pesar de que le instalé el plugin del SDK de Android, cada vez que quería crear un nuevo proyecto debía ir a "Menu File > New > Project... > Android > Android Project". Un poco largo verdad? Bueno con algunos simples pasos podemos crear un atajo para solo tener que pulsar "Menu File > New > Android Project".

Vamos a "Menu Window > Customize Perspective..."


Una vez alli iremos a la pestaña "Shortcuts" y seleccionaremos "Android Project" como aparece en la figura; y eso es todo.


...Ya podemos seleccionar "Android Project" desde la opción "New".


Android - Conexión a un socket

El viernes pasado tuve la oportunidad de asistir a la reunión del grupo de estudio de Android que organiza la gente de Lima GTUG.

Esta vez mostré un pequeño ejemplo sobre cómo hacer que una aplicación Android se conecte con un socket. Para este fin, armé dos proyectos. El primero, constaba de una aplicación web que a través de un socket estaba a la espera de una invocacón para realizar una operación de suma. Y el segundo, nuestra pequeña calculadora de una operación.

Acá les comparto la presentación que usé para este tema.

02 marzo 2011

¿Android? Sí, Android!

Y bueno, hace unas semanas adquirí un smartphone android, el Huawei IDEOS u8150. Android es un sistema operativo para celulares, tablets y dispositivos móviles, actualmente propiedad de Google. Para los que no sepan mucho de Android acá les dejo una reseña sobre el mismo tomada de Android Argentina.


Android es un SO (sistema operativo) basado en Linux, inicialmente desarrollado por Android Inc., y comprado por el gigante Google en el 2005. 
Android fue creado, inicialmente, para celulares (denominados smartphones), y hoy en día también podemos encontrarlo en tablets, netbooks y otros dispositivos. 
Desde que se anunció la salida oficial de Android, el 5 de noviembre de 2007, junto con la creación de la Open Handset Alliance, un consorcio de 78 compañías de hardware, software y telecomunicaciones dedicadas al desarrollo de estándares abiertos para dispositivos móviles, el sistema operativo de Google comenzó a crecer de manera continua. 
Actualmente, Android posee el 32,9% de la cuota del mercado de smartphones a nivel mundial, dejando atrás a otros sistemas operativos, como SymbianiOS (Apple)Windows Phone, etc. 
Existe una gran comunidad de desarrolladores para Android. Actualmente, se encuentran disponibles en el Android Market alrededor 200.000 aplicaciones. Ademas, existen aplicaciones desarrolladas por aficionados que pueden descargarse externamente al Android Market. Estas aplicaciones, están desarrolladas en lenguaje de programación Java, y ya que la mayoría del código de Android es código abierto, cualquiera puede descargarlo, modificarlo, y crear sus propias aplicaciones, o incluso sus propias versiones de Android
Las versiones de Android conocidas estan representadas por nombres de postres en Inglés y son: 
Android 1.5 “Cupcake”Android 1.6 “Donut”Android 2.1 “Éclair”Android 2.2 “Froyo”Android 2.3 “GingerBread”, y el recientemente conocido Android 3.0 “HoneyComb”
Entre los celulares con Android más destacados podemos nombrar al Samsung Galaxy SSamsung Galaxy S IIMotorola Atrix 4GLG Optimus 3D y muchos más.

22 febrero 2011

IBM Support Assistan en Ubuntu 10.10

Hoy instalé el IBM Support Assistant Workbench en Ubuntu Maverick (10.10), debemos tomar en cuenta que Ubuntu no está incluido en la lista de sistemas operativos soportados por el ISA Workbench.

1. Instalé el paquete alien: $sudo apt-get install alien
2. Descargué el IBM Support Assistant (ISA) para Linux.
3. Descomprimí el archivo (Me bajé el 4.1 el cual además de una carpeta docs traía un archivo rpm que habitualmente sirve para Red Hat).
4. Abrí una ventana del terminal y me cambié al usuario "root" ($su -)
5. Instalé el ISA con el siguiente comando: # alien -civ support-assistant-4.1.2.00-20101123_1610.i386.rpm 
6. Si todo salió bien el ISA debió quedar instalado en la siguiente ruta: /opt/ibm/IBMSupportAssistant_41/
7. Para inicarlo ejecuté: # /opt/ibm/IBMSupportAssistant_41/rcp/rcplauncher

Y bueno, tras aceptar los términos de licencia y esas cosas, finalmente, apareció el workbench.

Listo, no hay nada más por ahora. Ya tenemos nuestro ISA Workbench corriendo.

Pantallazo-6.png