jueves, 13 de marzo de 2014

Ordenar elementos Ascendente y Descendente con Java

Ordenar elementos Asc y Desc con Java - SortedMap/TreeMap



Para poder ordenar de manera asc y/o desc un conjunto de elementos usaremos la clase TreeMap, para poder realizarlo con una facilidad unica.


Creamos un SortedMap, cuyos valores respectivos (Key, Value) seran asignados, por ejemplo <String,Object>.

SortedMap<String, Object> map = new TreeMap<String, Object>();//Ascendente
//        SortedMap map = new TreeMap(java.util.Collections.reverseOrder()); //Descendente

        // Agrega algunos elementos
        map.put("0.002", "Dos");
        map.put("0.1", "Uno");
        map.put("0.00005", "Cinco");
        map.put("0.4", "Cuatro");
        map.put("0.3", "Tres");

        
        // Lee el TreeMap y te muestra los resultados en orden Descendente
        Iterator iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
        Object key = iterator.next();
            System.out.println("Clave : " + key + " Valor :" + map.get(key));
        }



Si probamos el ejemplo podremos observar que la lista de Map se ordena automticamente sin necesidad de añadir una lógica adicional.

miércoles, 12 de marzo de 2014

String, StringBuffer, StringBuilder

Diferencias entre String, StringBuffer y StringBuilder




String

Al concatenar con el operador "+", es la forma mas básica para unir 2 cadenas de caracteres pero es la peor manera en cuanto a rendimiento.


Ejemplo:

String hola = "Hola, ";
String nombre = "ssnova";

String holamundo = hola + nombre;

StringBuffer

Permite una concatenacion de caracteres mutable, es decir nos ayuda a concatenar de manera rápida, simple y eficiente. 

Nota: Los métodos son sincronizados, por lo que se puede usar de manera segura en ambientes multihilos.

StringBuffer holamundoBuffer = new StringBuffer();
holamundoBuffer.append("Hola, ");
holamundoBuffer.append("ssnova24");

String holamundo = holamundoBuffer.toString();

StringBuilder

Concebido recien desde el JDK 1.5, y es la clase mas eficiente para la concatenación de caracteres.
 Nota: Sus métodos son NO SINCRONIZADOS, por lo que tiene un mejor rendimiento que StringBuffer, para usar el StringBuilder no es complicado ya que tiene la misma declaración y manera de uso que el String Buffer.

StringBuilder holamundoBuilder = new StringBuilder();
holamundoBuilder.append("Hola, ");
holamundoBuilder.append("ssnova24");

String holamundo = holamundoBuilder.toString();



Midiendo el Rendimiento StringBuffer y StringBuilder


 StringBuffer sbuffer = new StringBuffer();
        inicio = System.currentTimeMillis();
        for (int i=0; i<1000000; i++) {
            sbuffer.append("zim");
        }
        fin = System.currentTimeMillis();
        System.out.println("Tiempo del StringBuffer: " + (fin-inicio));

        StringBuilder sbuilder = new StringBuilder();
        inicio = System.currentTimeMillis();
        for (int i=0; i<1000000; i++) {
            sbuilder.append("zim");
        }
        fin = System.currentTimeMillis();
        System.out.println("Tiempo del StringBuilder: " + (fin-inicio));

StringBuffer: 93 milisegundos en concatenar un millon de String.
StringBuilder: 47 milisegundos para concatenar un millon de String.

Nota Final: La misma operacion se realizo con el operador suma, y hay que limpiar continuamente el Heap, y solamente para concatenar 100000 string con el operador "+", se demora 99812 milisegundos.




martes, 11 de marzo de 2014

Convertir String a Date en Java

Convertir un String a Date en JAVA:

Para conseguirlo utilizaremos la clase SimpleDateFormat

Primer Caso - de "dd-MMM-yyyy" a Date

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
 String dateInString = "7-Jun-2013";
 
 try {
 
  Date date = formatter.parse(dateInString);
  System.out.println(date);
  System.out.println(formatter.format(date));
 
 } catch (ParseException e) {
  e.printStackTrace();
 }

Segundo Caso de dd/MM/yyyy a Date:

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
 String dateInString = "07/06/2013";
 
 try {
 
  Date date = formatter.parse(dateInString);
  System.out.println(date);
  System.out.println(formatter.format(date));
 
 } catch (ParseException e) {
  e.printStackTrace();
 }




  Tercer Caso de "MM dd, yyyy" a Date:

 SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy");
 String dateInString = "Jun 7, 2013";  
 
 try {
 
  Date date = formatter.parse(dateInString);
  System.out.println(date);
  System.out.println(formatter.format(date));
 
 } catch (ParseException e) {
  e.printStackTrace();
 }

  Cuarto Caso de "E, MM dd yyyy" a Date:

SimpleDateFormat formatter = new SimpleDateFormat("E, MMM dd yyyy");
 String dateInString = "Fri, June 7 2013";  
 
 try {
 
  Date date = formatter.parse(dateInString);
  System.out.println(date);
  System.out.println(formatter.format(date));
 
 } catch (ParseException e) {
  e.printStackTrace();
 }
 

Finalmente probamos y veremos los resultados

Espero haya servido de ayuda.

Habilitar el debub log spring 3

Habilitar el debug log de una app web con spring 3




Primer Paso:

Primero crearemos el archivo llamado "company-security-pre.config", dentro de dicho archivo colocaremos las siguientes lineas:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, R, A1
log4j.logger.pe.gob.sunat=DEBUG

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=/home/log/company-security-DEBUG.log
log4j.appender.R.MaxFileSize=3200KB
log4j.appender.R.MaxBackupIndex=5
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSSS} %p %t %c – %m%n

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.appender.A1.layout.ConversionPattern=%x - %m%n


Lo colocaremos en un ruta por ejemplo "C:/home/log/", aqui colocaremos este archivo.

Segundo Paso:

En nuestro archivo de configuración application-service.xml, o en algun similar donde colocamos el component-scan, crearemos un bean para el debug log.

  <bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass"  value="org.springframework.util.Log4jConfigurer" />
    <property name="targetMethod" value="initLogging" />
   
    <property name="arguments">
     <!-- Log PreProduccion
    <list>
        <value>/home/log/company-security-pre.config</value>
    </list>-->
    <!-- Log Produccion   -->
    <list>
        <value>/home/log/company-security-pre.config</value>
    </list>
    </property>
   
    </bean>


Finalmente guardamos y probamos.

Espero haya servido de ayuda.


viernes, 7 de marzo de 2014

Algunos seriales para adobe master collection CS5 -PHOTOSHOP

Seriales para Adobe Master Collection CS5:


Aqui les dejo seriales de Adobe Master Collection CS5 - PHOTOSHOP, en si acepta cualquier producto del Master Collection CS5, PHOTOSHOP:

1330-1953-8438-8500-7117-3533
1330-1158-3088-0438-6574-0867
1330-1361-6670-4304-7886-6688
1330-1241-0674-5648-4729-1904
1330-1397-1014-7571-2817-1355
1330-1250-9206-4495-3796-9368
1330-1331-8999-1502-9478-2917
1330-1281-8916-6015-7348-5124
1325-1558-5864-4422-1094-1126
1325-1958-5864-4422-1094-1178
1330-1615-1663-0498-6205-1791
1330-1953-8438-8500-7117-3533
1330-1158-3088-0438-6574-0867
1330-1229-6975-5285-6957-5367
1330-1979-8805-1771-3236-6920
1330-1412-8335-5009-5945-5806
1330-1273-0645-3090-0296-3987
1330-1707-7604-4076-3330-1320
1330-1126-8389-5347-7026-1516 


1330-1438-4657-0503-2409-9339
1330-1178-1469-1838-5933-3301
1330-1892-3397-6011-5572-9542
1330-1839-2965-7190-2921-7032
1330-1634-5298-7483-7429-2348
1330-1182-4704-3825-8468-6637
1330-1239-8564-2010-9537-5618
1330-1327-3782-7399-1623-8098
1330-1517-3781-6362-7596-5660
1330-1784-8793-4389-9013-7031
1330-1634-1083-3217-5769-6738
1330-1230-2480-2284-9907-7831
1330-1985-9548-0538-9132-8266
1330-1860-3020-5244-9087-9860
1330-1303-4803-9383-5764-1887
1330-1917-9737-6056-2348-8338
1330-1529-0181-7064-0812-5708
1330-1490-3607-6017-1703-3666
1330-1952-3599-5063-6930-4999
1330-1118-2169-5554-5043-0261
1330-1110-9105-9055-3111-7284
1330-1685-9773-7697-3445-2035
1330-1533-0435-5877-8941-4272
1330-1999-4537-9060-0531-0793
1330-1034-4141-3047-8214-8252
1330-1929-6463-4119-2326-8897
1330-1476-0242-7221-7595-5287
1330-1741-0512-0515-6113-5177
1330-1908-9073-0059-2540-9960
1330-1747-1837-0235-2132-9526
1330-1797-0253-1334-7490-5663
1330-1733-4174-7963-6070-7017
1330-1956-5317-2294-1430-2819
1330-1429-9724-3330-8740-0962
1330-1033-6147-5059-6457-1125
1330-1222-8963-3991-7297-3163
1330-1171-1752-4071-7174-4921
1330-1675-2224-7908-0483-9470
1330-1751-3954-5932-4027-8369
1330-1902-1155-7486-5392-4937
1330-1884-7103-9750-5288-0745
1330-1564-6857-1825-4424-2580
1330-1181-2251-2391-0598-2720
1330-1811-7312-5925-0349-7885
1330-1175-1961-4193-2939-0377
1330-1639-2041-5770-5896-9616
1330-1639-2041-5770-5896-9616
1330-1369-9780-1730-5273-9901
1330-1477-8408-3494-0279-4881
1330-1628-4937-8926-0449-2395
1330-1231-4414-2502-0307-1737
1330-1650-4225-6586-8325-4296
1330-1936-0520-3608-5098-5953
1330-1749-9032-1249-1547-3573




No olvidemos que podemos borrar el archivo cache.db para colocar las seriales cuando no reconoce el producto.




miércoles, 5 de marzo de 2014

Comando para crear tu primer proyecto YII - Primer proyecto Yii

Para comenzar a trabajar con el framework Yii:

1. Descargar Yii Framework, al descomprimir colocarlo en C:/xampp/htdocs/YiiMain
2. Luego abrir CMD y colocar las siguientes lineas: 
C:\xampp\htdocs\YiiMain\framework>yiic webapp "C:/xampp/htdocs/cmsGeneric"

1. Donde primero nos ubicamos en la carpeta del framework (
C:\xampp\htdocs\YiiMain\framework). 
2. Luego colocamos la palabra reservada "yiic webapp", esto es para poder indicarle a Yii que deseamos crear un proyecto web.
3. Finalmente colocamos la ruta donde deseamos crear el proyecto ("C:/xampp/htdocs/cmsGeneric"), terminando pulsamos enter, esperamos un poco y luego digitamos "yes".

4. Finalmente lo abrimos desde NetBeans y a trabajar.