Thursday July 29th 2010

Insider

Archives

Optimizar las concatenaciones del texto en Java

 procesos compu 

Los problemas de perfomance al concatenar con += en vez de ocupar un objeto StringBuffer y utilizar el método append lo podemos observar en la siguiente imagen:

clip_image004

Podemos observar que si son 20 líneas, en este caso el uso del += se tarda 745.2 veces más, y entre mas líneas este número crece.

Esto se debe a que el objeto String es inmutable, por lo que cada vez que se utilizar la concatenación por medio del += se está añadiendo al Heap.

Si adicional al usar el StringBuffer, inicializamos con el numero de caracteres que tendrá la cadena (en algunos casos se pueda) podemos mejorar todavía más el perfomance de la aplicación.

Por Ejemplo -> cadenaDeTexto.setLength(300);

El código para que puedan comprobarlos por ustedes mismos es el siguiente:

public class Main {
public static void main(String[] args) {
  //Test the String Concatenation using + operator
        long startTime = System.currentTimeMillis();
        String result = "hello";
        for(int i=0;i<1500;i++){
        result += "hello3";
        result += "hello4";
        result += "hello";
        result += "hello2";
        result += "hello3";
        result += "hello4";
        result += "hello";
        result += "hello2";
        result += "hello3";
        result += "hello4";
        result += "hello3";
        result += "hello4";
        result += "hello";
        result += "hello2";
        result += "hello3";
        result += "hello4";
        result += "hello";
        result += "hello2";
        result += "hello3";
        result += "hello4";  
        
        }
        long endTime = System.currentTimeMillis();
        System.out.println("Time taken for string concatenation using += operator : "
                                        + (endTime – startTime)+ " milli seconds");
        //Test the String Concatenation using StringBuffer
        long startTime1 = System.currentTimeMillis();
        StringBuffer result1 = new StringBuffer("hello");
        result1.setLength(300);
        for(int i=0;i<1500;i++){
        result1.append("hello3");
        result1.append("hello4");
        result1.append("hello");
        result1.append("hello2");
        result1.append("hello3");
        result1.append("hello4");
        result1.append("hello");
        result1.append("hello2");
        result1.append("hello3");
        result1.append("hello4");
        result1.append("hello3");
        result1.append("hello4");
        result1.append("hello");
        result1.append("hello2");
        result1.append("hello3");
        result1.append("hello4");
        result1.append("hello");
        result1.append("hello2");
        result1.append("hello3");
        result1.append("hello4");
        
        }
        long endTime1 = System.currentTimeMillis();
        System.out.println("Time taken for string concatenation using StringBuffer.append :  " 
                                        + (endTime1 – startTime1)+ " milli seconds");
        }
/* (non-Java-doc)
* @see java.lang.Object#Object()
*/
public Main() {
super();
}
}

Contraseña por default en WebLogic Server

 logo_oracle

Cuando se crea una aplicación en Jdeveloper y necesitamos por un motivo a otro(crear un datasource) entrar a la consola de administración de WebLogic nos damos cuenta de que no se puede ingresar a esta con el usuario por default weblogic y su contraseña correspondiente weblogic que encontramos en la página de Oracle.

Por un motivo u otro, el password por default se cambia a weblogic1

El usuario y pass del servidor WebLogic integrado en Jdeveloper son los siguientes:

Usuario:       weblogic

Contrasena: weblogic1

Que es content management system(CMS)

DotNetNuke

     CMS es content management system, y en español lo podemos definir como un gestor de contenidos, el cual su función principal es no reinventar la rueda a la hora de crear una aplicación desde cero.

Un CMS es muy útil cuando un programador independiente decide crear un sistema para una empresa pequeña o mediana, ya que se ahorra módulos de seguridad, pagos en línea, editores del sitio entre otros.

Sin embargo, en una empresa mediana – grande sería mejor considerar un propio CMS, ya que de esta forma se tendrá el 100% del control del mismo, haciendo mucho más fácil la tarea de crear aplicaciones e integrar a estas todo lo que contiene el CMS empresarial.

Cuando buscamos CMS comerciales podemos encontrar gratis y pagados, uno de los más populares por ejemplo en .Net es DotNetNuke(DNN), el cual con una herramienta muy intuitiva permite incluso modificar las páginas web como si son documentos Word (incluso más fácil que modificar una página en wikipedia).

 

Algunos CMS para C#.

Algunos CMS para java

¿Conocen algún otro que sea bueno?

Especialmente para la tecnología Java?

A probar Microsoft Visual Studio 2010

VisualStudio2010 

Para los que pensaban que me había dedicado exclusivamente a java… no es así. Sigo tratando de actualizarme con las diferentes tecnologías, aunque estas no tengan que ver con lo que actualmente estoy trabajando.

Siento que si te dedicas al mundo del desarrollo, hay que estar continuamente actualizado de las diferentes herramientas que te rodean.

Al final, en la vida todo lo aprendido sirve de algo. Ya sea que por ejemplo lanzo una empresa de desarrollo de software y debido a que tengo diferentes conocimientos pueda adecuar cada proyecto a la tecnología correspondiente.

En fin, solo los invito a probar Microsoft Visual Studio 2010 con el framework 4 que al final es lo más importante, así sean programadores de php, cobol, java, c++ o f#.

image_2

Pueden descargar Microsoft Visual Studio 2010 Express desde el siguiente link:

http://www.microsoft.com/express/Windows/

Las descargas son las siguientes:

Microsoft® Visual Web Developer® 2010 Expres

Microsoft® Visual Basic® 2010 Express

Microsoft® Visual C#® 2010 Express

Microsoft® Visual C++® 2010 Express

 

Si alguien va a empezar desarrollando, en alguna de estas versiones… les aconsejo C++ o C# para evitar futuros traumas en su migración a Java u otro lenguaje similar.

Consejos para la seguridad en un web Service

 

sakila-security 

Les dejo algunas sugerencias para mejorar la seguridad de un web service en el caso que este deba ser privado y maneje informacion delicada de la empresa.

  • Es recomendable utilizar un nuevo puerto para los web services, esto con el fin de crear en el firewall una tabla con únicamente las ip que si deben tener acceso al web service.
  • No entregar el WSDL a personas que no estén en el proyecto, ni mandarlo al azar por correo electrónico.
  • La documentación del web service, no debe navegar libremente en el trabajo ni por correo electrónico, ya que esta posee información importante del web service tal como los métodos que recibe entre otras cosas.
  • Utilizar el principio de esconder para obtener mayor seguridad, nadie puede atacar algo que no conoce.
  • Utilizar la seguridad por medio de llaves entre cliente y web service para evitar que otra persona tenga acceso al web service sin permiso previo.
  • El canal de comunicaciones con el web Service debe ser por medio de una VPN (Virtual Private Network), esto debido a que la VPN ya maneja los datos encriptados.
  • No esperar hasta ser atacados para aplicar la seguridad en un web service.

 

Puede investigar más, leyendo sobre WSS(Web Services Security), pero en lo personal creo que con los consejos de arriba ya tienen un Web Service seguro.