Archivo

Archivo para la categoría ‘java’

Más fotos del Java Road Trip

Jueves, 26 de agosto de 2010

Bueno, Oracle publicó más fotos del Java road trip en Flickr, del cual les habia hablado ya dos meses atrás en New York. Como pueden ver por cada conjunto, el “Java bus” se ha movido por varias ciudades, incluso tienen un avión :)

No sé, pero yo no he visto el primer RubyBus o C#Bus (Esta bien, está bien sólo estoy bromeando aquí :) )

java, javafx, oracle, programación , , ,

Trucos unix: Herramientas de Java poco conocidas

Jueves, 5 de agosto de 2010

No puedo creer que estas las utilizo a diario y nunca las habia mencionado en el blog; En fin, el kit de desarrollador de Oracle (JDK) cuenta con unas cuentas joyas que usted puede llamar de la línea de comandos.

Por ejemplo, para ver la lista de procesos de Java, en vez de hacer esto:

1
2
auyan:~ josevnz$ ps aux|grep -i java|grep -v grep
josevnz    176   0.0  1.5   717716  62436   ??  S     5:49AM   0:02.52 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java -Djava.library.path=/Library/Frameworks/JavaFX.framework/Versions/1.2/lib/desktop -Dfile.encoding=MacRoman -classpath /Library/Frameworks/JavaFX.framework/Versions/1.2/lib/shared/javafxrt.jar:/Users/josevnz/Documents/workspace/mytests/dist/Main.jar com.sun.javafx.runtime.main.Main MainJavaFXScript=com.kodegeek.blog.totalbodyweight.app.Main

Utilice a jps:

1
2
3
4
auyan:~ josevnz$ jps -lm|grep -v 'sun.tools'
112 
176 com.sun.javafx.runtime.main.Main MainJavaFXScript=com.kodegeek.blog.totalbodyweight.app.Main
148

Ambas muestran que el PID de mi programa es el 176, pero ¿cual es más fácil?

¡Amor a primera vista! :)

Hay muchas otras, pero les dejo con este articulo de IBM el cual hace un mejor trabajo describiendo las herramientas.

–José

java, oracle , , ,

NetBeans 6.9 ya está afuera, JUnit no incluido en JavaFX

Viernes, 18 de junio de 2010

Para quienes han seguido el asunto de NetBeans (el cual ya salió en su versión final 6.9) y la cucaracha de JUnit, este es el resultado: JUnit no es soportado en proyectos de JavaFX.

Uno de los desarrolladores de NetBeans me mostró en el reporte de la cucaracha en donde está desactivado.

¿Entonces, cual es la solución? Bueno, algo inconveniente pero que funciona, simplemente cree un proyecto de Java (no JavaFX) y entonces desde allí incluya sus pruebas de unidad.

Pero como una foto dice más que mil palabras les dejo el ejemplo abajo, creado con uno de los ‘magos de código’ (wizzards) de NetBeans:


¡Misterio resuelto!

java, javafx, opensource, oracle, programación , ,

Java Road Trip Stop en la ciudad de Nueva York

Martes, 15 de junio de 2010

My cool T-Shirt!
Me gané una franela y un libro (Real-Time Java Programming , de eric J. Bruno. Muy contento)

Bueno, hoy comenzó oficialmente el Java Road Trip Stop en la ciudad de Nueva York. Este evento, el cual contó con la participación de New York City Java Meetup Group, es una iniciativa de Oracle para demostrar los últimos avances de Java en dispositivos como el Amazon Kindle, JavaFX en la televisión y entre otras cosas.

What is the Java Bus?
Oracle se acuerda de los desarrolladores de Sun, muestra su fe en Java

¿Pero, de verdad hubo algo bueno o fué sólo propaganda de Oracle, con los respectivos tragos gratis?

Nada que ver. La charla tuvo mucha substancia, y lo mejor fué lo que cada uno de sus expositores tuvo que ofrecer.

Timothy F in Java best practices
Timothy explicó lo que no se debe hacer en su charla de las mejores prácticas

Timothy F se encargó de romper el hielo con una presentación de las mejores prácticas (III), en este caso el manejo de código duplicado. Su explicación práctica de como utilizar patrones de diseño como Strategy, Visitor e incluso factory fué muy valiosa, definitivamente pienso utilizar esos tips en mi código de ahora en adelante.

Brian Goetz, Java concurrency in practice
Brian nos explicó cosas como el proyecto Da Vinci, Coin y otros en el nuevo JDK 7

Después le toco el turno a Brian Goetz (el autor de ‘Java Concurrency in Practice’) al bate. Brian explicó con mucha emoción y detalles los aspectos técnicos del nuevo JDK 7, las diferencias con el Java SE 7 (no es lo mismo, el JDK es una referencia de implementación) y de las cosas buenas, en especial de productividad, concurrencia, soporte de otros lenguajes como JRuby, Scala y maquillaje del lenguaje que vienen pronto (nos adelanta que un anunció importante viene en JavaOne de este año).

Me posing for the camera (II)
El Java Road Trip continua este Miércoles y luego se moverá a otras ciudades en los Estados Unidos

La organización del evento estuvo impecable, pudimos ver el “Java Bus” (tiene tecnología Java, y una pantalla de datos la cual usa JavaFX), regalaron libros a los asistentes (me gané uno por preguntón :) ) pero sobre todo el nivel de asistencia de los asistentes fué alto, todo en un ambiente relajado. Tampoco me puedo quejar de la oportunidad de hacer contactos con otros programadores de distintas areas de la industria.

IMG_8640.JPG
Java Meetup, muy buena experiencia, seguro me verán escribiendo más sobre este evento que ocurre al menos una vez al mes en NYC

¿Volveré a ir a un Java Meetup? Claro que sí. De verdad vale la pena y si usted vive cerca de Nueva York y le gusta Java entonces no debería perdérselo. En cuanto al Java Road Trip le recomiendo que vaya al sitio web y los siga desde Twitter, Facebook y otros.

java, oracle, programación , , ,

NetBeans 6.9: JUnit aún está roto

Domingo, 13 de junio de 2010

Después de probar varias soluciones que leí en la red y de ver como aún la versión 6.9 RC2 aún tiene esta cucaracha me decidí a reportar el problema.

La cucaracha es la 187528.

Si tu eres uno de los afectados te invito a comentar esta cucaracha, de esta manera los desarrolladores de NetBeans le darán más prioridad ;)

–José

java, javafx, opensource, programación

Optimizaciones del lado del cliente en aplicaciones web

Sábado, 12 de junio de 2010

(Si señor, no todo es en el lado del servidor)

Hace poco me tocó tratar con una empresa Venezolana de desarrollo de páginas web, debido a un sitio web con el cual tengo el gusto de trabajar. En una de las discusiones técnicas uno de sus programadores este sostenía que el uso de técnicas como compresión de archivos no era necesaria y que en muchos casos podía afectar a los usuarios finales. El cache en todo caso se encargaba de mejorar la experiencia después de la primera carga.

Una verdad a medias debo decir; Si el archivo a entregar al usuario es muy pequeño (por el orden de 1KB) entonces la compresión puede afectar negativamente el rendimiento ya que el archivo comprimido resultante puede ser más grande o el esfuerzo por descomprimir en tiempo real es costoso en CPU comparado con el tiempo que toma en bajárselo.

¿Pero que pasa si tiene mucho archivos pequeños? (pista, póngalos juntos en un sólo archivo, más eficiente)
¿Qué pasa si los archivos si son grandes? (compresión estática, dinámica)

Primero que nada, no hay balas de plata, cada solución tiene cosas buenas y cosas malas. A continuación les enumero algunas, en particular las que apliqué (les dejo Google para que busquen la explicación de que hace cada una de ellas, me gusta más mostrar los pedazos de código):

  • Compresión en HTTP usando PHP gzip: Esto lo ponen en la cabecera de sus archivos de PHP.
    1
    
    < ?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>;

    Lo que hace esto es definir el mime-type de la página como un archivo comprimido y inicia la compresión en el lado del servidor.

  • Si usa Apache, entonces pídale que comprima sus archivos en HTTP con gzip o mod_deflate
  • Si tiene Javascript u hojas de estilo grandes quizas no necesita comprimir los archivos con gzip, quizas pueda optimizarlos con yui compressor (hay otras implementaciones):
    1
    2
    
    # Primero hacemos un respaldo de todos los archivos, copiandolos a .orig. Luego iniciamos la conversión
    auyan:yuicompressor-2.4.2 josevnz$ for file in `find /Users/josevnz/Documents/bocaproyectos/currentwebsite/ -name '*.css.orig' -follow|sed 's#.orig##'`; do java -jar /Users/josevnz/Downloads/yuicompressor-2.4.2/build/yuicompressor-2.4.2.jar --nomunge --type css -o $file --verbose ${file}.orig && echo $file; done

    El tamaño se redujo considerablemente, sin usar gzip:

    1
    2
    3
    
    auyan:yuicompressor-2.4.2 josevnz$ ls -l /Users/josevnz/Documents/bocaproyectos/currentwebsite//css/style.css /Users/josevnz/Documents/bocaproyectos/currentwebsite//css/style.css.orig
    -rwx---r-x@ 1 josevnz  josevnz  2624 Jun 12 20:55 /Users/josevnz/Documents/bocaproyectos/currentwebsite//css/style.css
    -rwx---r-x@ 1 josevnz  josevnz  3893 May 31 15:37 /Users/josevnz/Documents/bocaproyectos/currentwebsite//css/style.css.orig

De nuevo no tiene que tomar mi palabra en serio. ¿Pero que tal la gente de Google? También hágase amigo de herramientas como FireBug.

¿Qué otros consejos tiene sobre la optimización de contenido en el lado del cliente que quiera compartir? (*hay un montón y este pequeño escrito no pretende ser una guía sobre todo lo que puede hacer*)

–José

internet, java, programación

¿Como ver que localizaciones están disponibles en Java?

Lunes, 7 de junio de 2010

Un programa realmente tonto, pero que a veces me encuentro escribiendo más de una vez:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Locale;
 
public class ShowLocale {
        public static void main(String [] args) {
                for (Locale locale: Locale.getAvailableLocales()) {
                        // Get the 2-letter language code
                        String language = locale.getLanguage();
                        // Get the 2-letter country code; may be equal to ""
                        String country = locale.getCountry();
                        // Get localized name suitable for display to the user
                        String locName = locale.getDisplayName();
                        System.out.println(String.format("%s %s %s", language, country, locName));
                }
        }
}
1
2
auyan:~ josevnz$ java -cp . ShowLocale|grep -i vene
es VE Spanish (Venezuela)

Que lo disfruten ;)

java

Adios NetBeans 6.9, hola Eclipse Ganymede + Exadel JavaFX plugin

Domingo, 6 de junio de 2010

Instalando el plugin para Eclipse de JavaFX

¿Será que Exadel mejorará el soporte de JavaFX en Eclipse?


La última gota que derramo el vaso; NetBeans 9.6 beta se cayó en medio de una operación sencilla, sin correr ni siquiera JavaFX. Me tiene realmente irritado que ni siquiera puedo crear mis pruebas de JUnit, así que moví todo mi proyecto a Eclipse. Las pruebas de JUnit las hice en un momento pero ahora me encuentro que tengo que montar soporte JavaFX 1.3.

¿Será sencillo?
¿Será mejor que NetBeans 6.9?

No tengo nada en contra de NetBeans, de hecho yo lo utilicé mucho antes que Eclipse (cuando se llamaba Forte). Hay un grupo de gente dedicada a corregir errores, pero quiero ver si al fin puedo terminar este proyecto en vez de pasar el tiempo reiniciando mi IDE.

Como si todo fuera tan fácil; Resulta que el plugin de Exadel para Eclipse se tira 3 peos dando un mensaje de error que dice ‘bad .class version‘.

Vamos a ver si lo resuelvo hoy mismo, ¡sino no me quedará otra que seguir trabajando con JavaFX 1.2!

java, javafx, opensource, programación

¿Como diseñar un firewall de bajo costo con Linux?

Martes, 18 de mayo de 2010

Es curioso las cosas que le saltan a uno a la cabeza cuando se está haciendo ejercicio en el gimnasio :) . Por alguna razón recordé un articulo es escribí para el blog ya hace 5 años atrás sobre Iptables en Linux y la excelente herramienta Firewall Builder.

De cualquier modo, después de leer el articulo de nuevo me di cuenta que nunca enumeré varias cosas importantes a la hora de configurar el firewall:

  • Utilice tarjetas de red buenas. En serio, no utilice las que vienen con la tarjeta madre, por lo general es mejor buscar tarjetas dedicadas las cuales tienen buen rendimiento (las basadas en Intel de 1GB aguantan mucha carga antes de comenzar a botar paquetes. Mi experiencia con las del chip Broadcom no es muy buena).
  • Asegúrese de instalar TCPWrappers en el firewall y de configurarlo apropiadamente para restringir servicios, entre esos el acceso a SSH. También juegue con el acceso de seguridad de sshd.conf.
  • No deje corriendo demonios que no necesite como servidores de ftp (ftpd == ¡no!), impresión (lpd) o X-Windows
  • Instale Nmap, Tcpdump, Ethereal. En serio, cuando alguna de las reglas le empiece a dar problemas estas herramientas lo van a sacar de apuros.

Yo en particular utilizaba el siguiente truco para instalar reglas de firewall en un servidor que tenia corriendo en Chenay (India):

  • Copiaba las reglas compiladas con firewall builder en el servidor usando scp
  • Un segundo script escrito por mi arrancaba un contador de 60 segundos. Durante ese tiempo las nuevas reglas eran ejecutadas en el servidor remoto.
  • Si durante ese tiempo yo no podía crear un archivo que le decia al firewall que todo estaba bien, entonces el script desactivaba todas las reglas de firewall para permitir de nuevo la entrada por SSH. Si habían reglas anteriores estas eran ejecutadas. Esto era crítico pues más de una vez una regla me dejaba sin conexión a mi servidor (mi regla de firewall era bastante estricta para evitar que me atacaran usando SSH)

Suena a mucho trabajo, pero esta solución le ahorró a la compañía en la que trabajaba como $50K en licencias con una solución que tenían cuando yo comencé a trabajar allí como administrador de sistemas (la licencia habia que renovarla y ellos tenían como dos años que no lo hacian por el costo). Eso sin contar la flexibilidad que yo tenía para instalar herramientas (por ejemplo, al final yo le monté Snort para detectar ataques en tiempo real y yo le mandaba reportes a dshield.org para poner a los hackers en su sitio :) )

¿Y ustedes, que trucos tienen con sus firewall de Linux? (Firewall builder ha evolucionado mucho desde hace 5 años y ahora hay soluciones en Linux por todos lados)

–Jose

java, linux , , ,

¿En donde están los trabajos?: Java Swing vs JavaFX vs Flex vs Silverlight

Jueves, 6 de mayo de 2010

Si esto es un indicativo de donde invertir el tiempo, por los momentos Java Swing y Adobe Flex son opciones seguras. JavaFX está aún en pañales…

java, javafx , , , ,