Latest Entries »

Siguiendo lso temas de fase de analisis..es muy importante saber que meotdología nos conviene más implementar en nuestro poryecto de software; en el presente post adjunto una evaluación muy personal sobre: RUP. XP y MSF, esta evaluación ha sido desarrollada tomando algunas fuentes de la web, testimonios y opiniones personales.

Adjunto el archivo de la guia 2: aqui

Anuncios

En los siguientes post de aquí..a unos 6 meses.. Voy a compartir con ustedes los avances de una especialización tecnológica que está impartiendo el SENA (para quienes no lo conocen, el SENA es el servicio de aprendizaje Nacional acá en mi país Colombia, una institución que apoyado y ha creído en el desarrollo del país a través del talento nacional), esta especialización tecnológica en la que estoy participando siendo aprendiz..es acerca de desarrollo de aplicaciones para dispositivos móviles.. un tema que nos interesa a varios..por esta razón voy a compartir con ustedes los avances de guias, conceptos y temas que vaya adquiriendo para oderles compartir.

Como todo buen proyecto de software, se empieza por realizar análisis y diseño, esta especialización empezó por allí: el análisis e investigación sobre las rede inalámbricas… sobre este tema se centra la guía 1 que adjunto seguido al post.

Guia 1

Muchas veces necesitamos darle más memoria a la maquina virtual de Java para que ejecute ciertas funciones de nuestra aplicación, ya que si no se la damos tenemos el famoso mensaje: “PerGerm Space” ó “head space”. Aunque es necesario revisar esas funciones, ya que tal vez sea por las logica de la programación, se debe optimizar cada sentencia para consumir menos recursos del hardware..entonces en ese caso como el famoso argot popuar el problema no es de “Indio sino de flecha”..es decir el problema no es de la memoria de java, sino de la forma que estan programadas de las funciones.

En otros casos, como me sucedio a mi, el JVM no soportaba una conexión con Postgres para traer solo un millon de registros en un aplicativo de escritorio Java Swing…siempre se quedaba sin memoria, cuando mas o menos iba en el registro 300000 y observe por medio del taskmanager que consumia solo 291 mbs de las 2 gb de RAM de mi equipo (se debe tener en cuenta que mucha de la RAM de nuestros equipos se asigna a cosas como el SO, aplicaciones que se arrancan al inicio como los antivirus, etc.)  y se quedaba colgada la aplicación.

Buscando por alli encontre un articulo que me dio la luz: aumentar el tamaño de memoria de la maquina virtualen java, este buen articulo explica como de forma sencilla podemos dar parametros de inicialización a la maquina virtual de java, ya sea corriendo un JAR, una clase Java ó parametrizando por medio de un script como lo hace Tomcat.

Realize las pruebas por comandos y excelente!! mi aplicativo corrio perfectamente y pude hacer provecho de mi memoria RAM…pero… no podia decirle al cliente: “Siempre que ejecute el aplicativo cuando vaya a traer un millon de registros..entre el cmd o a la terminal y digite java -X256m -Xmx1024 ..etc. etc.”, por ello decidi hacer un .bat que me facilitara esa ejecución.. pero al ejecutarlo queda la pantalla del CMD detras del aplicativo, visible el cual el cliente puede cerrar en cualquier momento ya que tal vez no la quiere ver y con ello cierra el aplicativo y puede obtener perdidas de información o algo así.

Fue por ello que decidi crear un pequeño aplicativo Java que ejecutara el codigo al CMD con los parameros de memoria para la maquina virtual.. y listo!!!!.. se soluciono:  1ro – la necesidad de memoria para mi aplicación JAVA en Swing, 2do – la transparencia de  ejecución para el usuario  y 3ro- presentación para el usuario.(Estos dos ultimos inconevneintes nacieron al momento de ecsoger las opciones de solución)

Dejo el codigo que use para del segundo aplicativo para la ejecución del codigo CMD que ejecutara mi aplicativo Swing:

//extiende de Thread para usar hilos
public class Ejecutable extendsThread {
publicstaticvoidmain(String[] args) {
//instancio mi clase
Ejecutable ejecutable =new Ejecutable();
//ejecuto el hilo
ejecutable.start();
}
publicvoidrun(){
//Defino objeto pr de la clase Procces
 Process pr;
//Hago un string con el comando de consola o terminal
//El System.getProperty("user.dir") es para saber en que directorio esta siendo ejecutada mi clase Ejecución
String comando ="java -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m -jar \""+System.getProperty("user.dir")+"\\nombreJARMiaplicativo.jar \" ";
try{
//Ejecutamos el comando
pr = Runtime.getRuntime().exec(comando);
}
catch(Exception ex)
{
System.out.println("Ha ocurrido un error al ejecutar el comando. Error: "+ex);}
}
}

Espero les sirva.. ya saben lo que dicen..siempre ahi mejor forma d ehacer las cosas..si saben de una mejor me comentan y lo mejoramos!!

Este es un webinar propio de ICEfaces gratuito, este es el mensaje de ICEfaces:

“Taller de migración a ICEfaces 2 Si está comenzando a desarrollar una aplicación basada en ICEfaces 1.8 o ya dispone de una completa pero le gustaría migrar a ICEfaces 2, ¡este taller de una hora es para usted! Durante el transcurso del taller estudiaremos las últimas características y mejoras en ICEfaces 2 y en JSF 2, además de mostrar en detalle los pasos necesarios para migrar su aplicación. Finalizaremos con una demostración en vivo de cómo portar una aplicación existente de ICEfaces 1.8 a ICEfaces 2.0.

Al final del webinar responderemos a las dudas que hayan podido surgir durante su desarrollo.

Title: Taller de migración a ICEfaces 2

Date: Wednesday, March 30, 2011 Time: 4:00 PM – 5:00 PM CEST

Space is limited.

Reserve your Webinar Seat Now!

Link de Registro

En ocaciones en el desarrollo de presentación de una aplicación necesitamos hacer validaciones en la presentación, como por ejemplo dadas unas condicones XY renderize un boton ó muestre un link, etc. para este tipo de cosas debemos usar valores booleanos ‘true’ or ‘false’ con el tag render..por ejemplo <h:commandButton value=”valor” action=”#{myBean.accion}” rendered=”false” /> ..con esta linea construimos un boton con label “valor” que no se va mostrar debido a que rendered esta en false (es decir no mostrar).

Algunas veces no es suficiente una variable booleana para decidir este tipo de cosa,es necesario hacer comparaciones logicas que den como resultado un booleano. Por ejemplo un link que muestre un reporte se muestre siempre y cuando el rol del usuario es admon ó gerente, y se oculta en cualquier otro caso. EL ( Expression Language ) nos permite una serie de literales, operadores y palabras reservadas para este tipo de acciones:

Literales

  • Boolean: true and false 
  • Integer: como en Java 
  • Floating point:como en Java  
  • String: con simple o dobles comillas; "es escape como \", ‘ es escape como\‘,y\es escape como\\
  • Null: null 

Operadores

  • Arithmeticos: +, - (binary), *, /, div, %, mod, - (unary) 
  • Logicos: and, &&, or, ||, not, ! 
  • Relationales: ==, eq, !=, ne, <, lt, >, gt, <=, ge, >=, le. Comparisones pueden ser echas sobre otrosvalores o tambien booleans, string, integer, or floating point literals. 
  • Empty: Puede ser usado para determinar si es un valor null o empty. 
  • Conditional: A ? B : C. Evalua B or C, dependiendo sobre el resultado de evaluacion de  A

Los siguientes operadores de “mayor” o “menor”, derecha a isquierda como los siguientes:

  • [] . 
  • ()  (changes precedence of operators) 
  • - (unary) not ! empty 
  • * / div % mod 
  • + - (binary) 
  • < > <= >= lt (lower than) gt (greater than) le (lower than or equal) ge  (greater than or equal) 
  • == != eq (equal) ne (not equal)  
  • && and 
  • || or 
  • ? :

Por ejemplo si deseamos mostrar un boton de una lista de archivos que vamos a procesar siempre y cuando el identificador del formato sea diferente de 99991 y 99992 y que el estado de este archivo sea verdadero:

<h:commandButton immediate="true" value="Procesar" rendered="#{formato.estado and ( (formato.idFormato ne '99991') and (formato.idFormato ne '99992'))}" action="#{accionesBBean.cargarFormato}" />

En el rendered esta validando: si formato.estado es ‘true’ o ‘false’  Y (por el and) ,un parentesis que agrupa las siguientes validaciones:  si el formato.id No es igual a 99991 Y formato.idFormato No es igual 99991….este tipo de validaciones es recomendable hacerlas en lo que refiere a la logica del negocio..es un ejemplo como poder sacar provecho de lo que ofrece EL.

Recomiendo los siguientes links, para revisar más ejemplos de validación con EL:

http://developers.sun.com/docs/jscreator/help/jsp-jsfel/jsf_expression_language_intro.html

 http://www.java-samples.com/showtutorial.php?tutorialid=550 http://gentle.compilertools.net/book/relations.html  –>Este es como para comprender más el uso y funcionamiento de ge,gt,lt,le

 http://desarrollandoideas.com.ar/2008/08/14/jsf-expression-language-el/  http://mediawiki.uca.es/index.php/JSF …jsf general

 http://courses.coreservlets.com/Course-Materials/pdf/jsf/04-Expression-Language.pdf ..detalle de Expression Language

Webinar gratuito ANDROID!!!

El señor San Shing y su organizacion JAvapasion, nos permite hoy acceder a un webinar totalmente gratis sobre android.

Android Programming (with Passion!) Feb. 24th, 2011 Webinar (Free to everyone)

This is part of Android Programming (with Passion!)” online course from JavaPassion.com.  This Webinar is free for everyone to join.  (You don’t have to be a paying member of JavaPassion.com in order to join this Webinar.)  In this Webinar, we are going to cover “UI menu”
 

Title:   Android Programming (with Passion!) Feb. 24th, 2011 Webinar (Free to everyone)
Date: Thursday, February 24, 2011
Time: 5:00 PM – 6:00 PM EST
After registering you will receive a confirmation email containing information about joining the Webinar.
System Requirements
PC-based attendees
Required: Windows® 7, Vista, XP or 2003 Server
Macintosh®-based attendees

Link de registro: https://www3.gotomeeting.com/register/79613834
Required: Mac OS® X 10.4.11 (Tiger®) or newer

 

Cuando abrimos un workspace en eclipse aveces observamos que se que queda cargando y cargando y…cargando, hasta que nos damos cuenta que el eclipse esta bloquedao y revisamos en el task manager (en el caso de Windows) que eclipse no esta haciendo ningun proceso pero si esta consumiendo memoria ram, esto algunas veces sucedes por que al iniciar el Javatooling del workspace se queda pegado, esto sucede por que depronto cerramos mal eclipse la ultima vez que usamos el workspace ya sea por que lo forzamos a cerrar o por un bajon de luz, etc.

Para no creer que nuetsro workspace esta dañado y que no podemos volver a usarlo ya que siempre se queda pegado cargando java tooling debemos hacer lo siguiente:

1. Sin abrir eclipse, vamos al directorio del workspace
2. Ya en el directorio del workspace abrimos: .metadata –> .plugins –> org.eclipse.core.resources
3. En este directorio buscamos la carpeta que dice: .projects , cogemos la carpeta y la movemos de ahi..es decir la quitamos del directorio y la ponemos por ejemplo en el escritorio.
4. Minimizamos todo y abrimos eclipse, con el workspace que nos esta presentando inconvenientes y del que acabampos de quitar la carpeta .projects
5. Esperamos a que cargue completamente el workspace, observamos que el javatooling ahora si carga…extraño no?
6. Una vez cargue el workspace completamente, lo cerramos de nuevo, al momento que eclipse esta guardando el workspace nos puede mostrar error, esto sucede por que el .projects original posee archivos que internta bsucar eclipse y no estan.
7. Una vez cerardo eclipse, buscamos la carpeta .projects, que copiamos por ejemplo en el escritorio , y la volvemos a copiart a la direcciòn original (ruta tratada en el paso dos). El nos pregunta que si sobreescribimos, le decimos que si y listo!!
8. Volvemos abrir eclipse, el mismo workspace y chekeamos que cargue completamente.

El paso 7 se hace en casos como por ejemplo cuando usamos control de versiones, donde .projects guarda informaciòn sobre el versionamiento y la sincronizaciòn con el repositorio…. por ello es improtante hacer respaldo del original.

En desarrollo de software es habitual que la base de datos sobre la cual se esta trabajando deba ser respaldada y restaurada algunas veces, el respaldo es habitual ya que este es nuestro soporte en desarrollo (ya sea del dba encvargado o de algunos desarrolaldores que trabajen con la bd) en caso de fallas ó migraciones, etc. sobre estos casos debe ser restaurada..pero algunas veces necesitamos es sobre un mismo schema al cual se le han echo cambios a la estructura, volver a montar un respaldo anterior sin borrar todo el schema, y el respaldo echo haya sido por el utilitario EXP ó EXPDP.

Para no tener muchos incovenientes es mejor borrar todos los objetos y restaurar por medio del IMPDP, para tener mayor certeza sobre los objetos que realmente estaran en nuestra base de datos.

Para automatizar este borrardo de los objetos puede usar el siguiente script:

SET SERVEROUTPUT ON SIZE 1000000
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM user_objects
WHERE object_type IN (‘TABLE’, ‘VIEW’, ‘PACKAGE’, ‘PROCEDURE’, ‘FUNCTION’, ‘SEQUENCE’, ‘SNAPSHOT’, ‘MATERIALIZED VIEW’)) LOOP
BEGIN
IF cur_rec.object_type = ‘TABLE’ THEN
EXECUTE IMMEDIATE ‘DROP ‘ || cur_rec.object_type || ‘ “‘ || cur_rec.object_name || ‘” CASCADE CONSTRAINTS’;
ELSE
EXECUTE IMMEDIATE ‘DROP ‘ || cur_rec.object_type || ‘ “‘ || cur_rec.object_name || ‘”‘;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(‘FAILED: DROP ‘ || cur_rec.object_type || ‘ “‘ || cur_rec.object_name || ‘”‘);
END;
END LOOP;
END;
/

Debe ser ejecutado por el mismo usuario propietario dle schema a borrar…lo puede hacer si desea desde una herramienta como SQLDeveloper.

Leyendo un excelente diario online: elcolombiano.com !… un diaro muy de nuestra tierra,muy bien actualizado y practico para lectura desde dispositivos moviles como smartphones hasta equipos de escritorio…algo que carece de otros buenos diarios que apesar de El tiempo y popularidad les ha faltado esa cobertura multiplataforma…

Encontre un buen articulo que contiene,a mi manera de ver, algunos consejos sobre el uso de las redes sociales como herramienta publicitaria para nuestro negocio. A continuación se presentan estos tips..con algunos comentarios:

1. Pensar que todo es gratis. Las empresas piensan que como se trata de redes sociales no hay que invertir recursos. Requiere talento pago.
Ademas del talento..el cual es muy importante..se debe tener en cuenta cierto costo, ya que algunas pautas, en caso de facebook se paga para por: número de apariciones de una pauta o por el número de clicks que puede haber sobre esta. Es decir que es clave escoger que estrategia nos sirve más.

2. No tener objetivos claros. No tiene sentido tener presencia en las redes sociales porque están de moda. El primer paso es definir su papel.
Ademas de promover el negocio, es bueno tener objetivos que involucren a los clientes potenciales..permitiendoles de algun modo que nuestro negocio es su amigo.

3. Hablar con lenguaje corporativo. Las redes sociales implican cercanía. Priman valores como confianza, sinceridad y actitud de servicio
La simplicidad punto.

4. No decir cosas interesantes. La gente espera mensajes realmente atractivos. Los usuarios se van si no hay contenidos relevantes.
Creo que el uso de contenidos buenos, simples y muy graficos..son ideas fundamenales a tener en cuenta al momento de hacer una publicaciòn que nuestros clientes van a captar.

5. No capitalizar. Hay marcas que crean una página en Facebook y abren un perfil en Twitter, consiguen seguidores pero no capitalizan lo ganado
El incremento de estadisticas en seguidores o amigos no es indice para decir si vale la pena o no el esfuerzo en estas redes..creo más bien en intentar obtener cuantitativamente la influencia que esta publicidad se refleja en nuestras ventas.

6. Pensar que las redes sociales son virales por sí mismas. No es cierto que siempre que se pone un tema en las redes se multiplicará.
No dejemos que el efecto multiplicador se vuelva un “monstruo” sin control..donde nuestros contenidos publicitarios de alguna forma se pueda volver una anti-publicidad.

7. Planear a corto plazo. Hay que ver la estrategia de redes sociales como un pilar integral de la estrategia digital de la marca.

8. Todas las redes sociales sirven para todo. Muchas marcas creen que pueden hacer lo mismo en Facebook, Twitter y los blogs.

9. Cualquiera puede hacer una estrategia de redes sociales. Se requiere conocimiento para saber hasta dónde llegar y cómo impactar.
Es algo muy complicado..saber hasta que limites se debe llegar..por ejemplo si nuestra intención es atraer a las personas a nuestra pagina para poder cerrar un negocio..no podemos permitir que nuestro perfil o espacio publicitario se convierta en el centro de este ejercicio..solo debe ser un canal de relacion cliente-negocio.

10. Las únicas redes sociales son Facebook y Twitter. Son un entorno gigante y se deben usar según las necesidades.
Si estan son las más conocidas..y tal vez aca e latinoamerica son de lás mas conocidas, pero por ejemplo no podemos dejar a un lado otras como MySpace (usados por bandas de musica)..ó depronto hasta hi five, en el caso de España la red social Tuenti es más fuerte que el propio Facebook…Es decir que debemos tener claro muchas aspectos como la posición geografica, teniendo en cuenta las culturas y población objetivo de cada estretegia y espacio para ser unico que nos diferencie de los demás.

Si desean ver la noticia completa pueden ingresar al siguiente link:
aqui

Algunas veces deseamos compartir carpetas desde windows Xp a un vista o win 7….pero no nos deja que el cliente a conectarse las pueda ver; para esto se debe activar… o mas bien desactivar las carpetas compartidas simple y asi automaticamente se activa el estilo avanzado.

Es muy sencillo, solo entrar a opcipones de carpeta–>la pestaña ver y al final deshabilitar=” Utilizar uso compartido simple archivos ” y listo!!!

Al compartior carpeta ya le permitira escoger que usuarios y que “nivel” tienen estos usuarios sobres los archivos