Bienvenido a Java Mexico

Java México es una comunidad de desarrolladores mexicanos en el lenguaje Java.

Este sitio es colaborativo, automáticamente al registrarte obtienes un Blog para compartir tus conocimientos o información acerca del lenguaje. Antes de publicar en tu blog o los foros por favor lee los lineamientos de publicación.

Para dudas y problemas con respecto al lenguaje Java puedes visitar los Foros de Discusión.

También puedes responder nuestra encuesta para saber en que estado vives!

El usuario tiene la culpa

No importa el tiempo que invertiste en revisar cada línea de código, las pruebas unitarias, las horas de desvelo y la frustración para que tu proyecto funcione correctamente. El usuario siempre se encargará de hallarle un problema.

Te preguntas ¿qué hice mal y/o qué pude haber omitido?. Vuelves a revisar el código, realizas varias pruebas más. Todo parece funcionar bien.

De pronto el usuario aparece de la nada y te dice que hay un nuevo problema. No puede llenar los formularios por que el sistema le marca un error. Le preguntas que datos trato de introducir, el responde que solo siguio las instrucciones que le dijeron.

"... me marca error al introducir los datos en el formulario"

De nueva cuenta te desvelas tratando de hallar la causa de los problema, realizas más pruebas y de nuevo todo parece funcionar bien. ¿Qué estaré haciendo mal?

Migrar de Subversion a Git, sin mirar atrás

Este post no es realmente acerca de Java, pero quiero dejarlo en este sitio de todas maneras, ya que realmente no tengo otro blog y además no deja de ser algo muy técnico.

En mi trabajo desde hace varios años utilizamos Subversion, pero decidimos pasarnos a Git. El mismo Git incluye herramientas para integración con svn, pero son algo limitadas. Además creo que es un buen pretexto para aprovechar y reorganizar el repositorio, partiéndolo en varios repositorios distintos, abandonando algunas cosas obsoletas, ramas que llevan años abandonadas, etc.

En mi búsqueda por lograr esto, me encontré con esta herramienta llamada svn2git:

http://www.gitorious.org/svn2git

Parece que la desarrolló el equipo de KDE, para realizar lo mismo que yo estaba buscando: migrarse de una buena vez de svn a git, sin mirar atrás, reorganizando su código en varios repositorios, etc.

Esta herramienta está hecha en C++ y requiere Qt para poderse compilar, aunque no tiene interfaz gráfica. Debe ejecutarse en el servidor que contiene el repositorio de Subversion que se quiere migrar (no una copia de trabajo).

Subir un archivo por FTP librería commons net (nuevamente otro ejemplo).

/*No olvides darle permisos a tu firewall de windows o a tu antivirus antes de ejecutar la aplicación, por que si no lo haces te arrojará un error en el socket Exception y unas cuantas lineas de errores, simplemente desactiva o da permisos en el cortafuegos y con esto estará funcionando de maravilla la aplicación. Hasta luego y espero que les sirva de algo esta pequeña ayuda. :D */

package subiendo_archivo;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class Subiendo_archivo
{

public static void main(String[] args)
{
FTPClient client = new FTPClient();
try
{
client.connect("tuservidor.com");

boolean login = client.login("ususario", "contraseña");
if (login)
{
System.out.println("Iniciando sesión Satisfactoriamente");
int replay = client.getReplyCode();
if (FTPReply.isPositiveCompletion(replay))
{

Tipo de Pruebas para Desarrollo de Software

Tema: Explicación sobre los diferentes tipos de pruebas que se pueden hacer en el desarrollo de software.
Categoría: Explicación concreta / Calidad - Integración Continua
Tecnologías / Componentes: XUnit, Sonar, PMD, Findbugs, Thucydides, Checkstyle, Cobertura


Contenidos

1 Introducción
2 Pruebas Unitarias
3 Pruebas de Aceptación de Usuario
4 Pruebas de Regresión
5 Pruebas Funcionales
6 Pruebas de Integración
7 Pruebas No Funcionales
8 Pruebas de Stress
9 Pruebas de Calidad de Código
9.1 Cobertura:
9.2 Análisis de Líneas de Código:
9.3 Complejidad:
9.4 Diseño de Clases:
9.5 Violaciones de Calidad:
9.6 Sonar:
10 Resumen

El garbage collector y los memory leaks

Antecedente

Una de los aportes más relevantes de Java es la inclusión del recolector de basura ( garbage collector) tanto que hoy en día es un estándar y ni se menciona como una característica del lenguaje. Java no lo inventó, pero si aportó mucho para su adopción.

El GC corre automáticamente en la JVM cada cierto tiempo. No hay forma de proveer cuando lo hará (o si lo hará) ni de forzar a que corra (o que no lo haga). Existen varias estrategias de implementación y es todo un tema que sigue en desarrollo e investigación. Lo mejor de todo es que como usuarios de la plataforma tenemos muy poco que hacer para utilizarlo.

Referencias

La regla para que un objeto pueda ser recolectado es sencilla, no debe de haber referencias al objeto.

....
Empleado a = new Empleado("God"); // a es la 1ra referencia
Empleado b = a; // b es la segunda referencia al mismo objeto "God"
...

En el ejemplo anterior se creó un objeto de tipo Empleado y hay dos referencias a él (a y b). Este objeto no será recolectado por el gc y su memoria seguirá en uso.

Cuando ya no hay referencias al objeto:
 

Pequeño ejemplo para subir un archivo FTP con la librería commons net

Una pequeña colaboración de código para subir un archivo al FTP, igual soy principiante en el campo, pero creo que cualquier aporte mientras ayude a la comunidad es un buen aporte :D

package nuevo_subir;    

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import org.apache.commons.net.ftp.FTP;  
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class Nuevo_subir
{
    public static void main(String[] args) throws SocketException, UnknownHostException, IOException
    {
        try
        {
            FTPClient ftpClient = new FTPClient();
            ftpClient.connect(InetAddress.getByName("yourserver.com"));
            ftpClient.login("user","pass");
           
            //Verificar conexión con el servidor.
           
            int reply = ftpClient.getReplyCode();
           
            System.out.println("Respuesta recibida de conexión FTP:" + reply);
           
            if(FTPReply.isPositiveCompletion(reply))
            {

Herramientas que todos deberíamos usar

Esta es una lista de lo que (según yo) deberíamos usar para comenzar un proyecto.

1. Git / Subversion

Tener un repositorio como Github (u otros más), para poder compartir nuestro código. Hay muchos código útiles con los que podemos aprender y aportar un poco. Algunas empresan antes de contratar gente les preguntan si tienen una cuenta y que proyectos han hecho.

2. Servicios en la nube

Muchas veces herramientas como evernote y/o dropbox te salvan la vida. Cuando no cuentas con tu máquina y es necesario un archivo es recomendable guardar una copia.

  1. SaaS, servicios como gmail, dropbox, drive,etc
  2. PaaS, google app engine, etc.
  3. IaaS, servicios como los de amazon, etc.

Existen muchas herramientas para generar notas, mapas mentales, probar código sin necesidad de instalar un servidor, etc.

3. Aplicaciones portables

Sublime Text 2

Acabo de iniciar con grails y estoy muy satisfecho de los resultados de mis pruebas, asi que decidi ahondar un poco, y descubri su integracion perfecta con bootstrap.

y en si el motivo de este post es platicarles que al estar checando el sitio de bootstrap, lei que recomiendan el editor Sublime Text 2.

obviamente lo baje y lo instale y otra gran sorpresa, es un excelente editor de texto, supera por mucho a notepad++, de hecho dedusco que quiere ser como el textmate de las macs (utiliza muchos mecanismos internos de textmate ellos mismo los dicen).

para generar mis pruebas con grails es super excelente, el codigo html lo generea casi solo, muchas instrucciones de grails te las propone, las variables ya usadas tes las suguiere.

eso si hay que darle una buena batallada para entenderlo pero los beneficios valen la pene el esfuerzo.

puedes contruir comandos para grails (u otro lenguaje) etc. yo no le quise buscar y lo hago todo directo desde la ventanita de dos.

tambien hay que comentar que es de pago 59 dlls, pero la puedes evaluar e informan en su sitio que a la fecha no hay limite de tiempo para la evaluacion.

Programador Java/Groovy en Polanco

Buscamos un programador con 5+ años de experiencia desarrollando software con Java, para trabajar en una empresa que se dedica a la venta de productos y servicios electrónicos. Somos una empresa pequeña pero estable, hemos tenido crecimiento lento pero constante desde que empezamos en 2009. Nos encontramos en la zona de Polanco.

Puntos extras si manejan las siguientes tecnologías (y dependiendo a qué grado las manejen):

- PostgreSQL 9
- Spring 3
- Grails
- Groovy
- Linux (línea de comando, no tanto para administrar pero tenemos varios servidores y el acceso es por ssh así que deployments y monitoreo es casi siempre por CLI)
- Subversion/Git

Cosas que he aprendido del curso con Martin Odersky Vol. 1 | Recursividad

Buenas tardes. Pues dado que hoy tengo una
pereza tremenda para salir, me dije a mí mismo:
"Mí mismo, hagamos una entrada en JavaMéxico".

Había dicho que cada sábado iría posteando algo
pero, ya saben, un joven recién salido de casa
capaz pagarse sus gustos... En fin.

Este curso de Martin Odersky es muy interesante desde mi particular
punto de vista:

+ En primera, tienes frente a ti al creador del lenguaje
de programación, por tanto uno aprende a usar Scala de la manera en
que fue pensado desde un inicio.

+En segunda, porqué aprendes temas muy base, qué
muy probablemente no te enseñaron en la escuela, y que te ayudan
a ver los problemas de tu trabajo de otra manera.

=====Nota====================================================
Dado que hubo un caso con los ejercicios de la semana pasada, no postearé
el código que yo conseguí que funcionase, era lo que quería hacer, pero tal parece
que si lo hago y me descubren me expulsan del curso; prefiero no arriesgarme :D
============================================================

En la primer semana el tema a tratar me parecía algo "soso", era recursividad y vamos

Distribuir contenido