domingo, 17 de mayo de 2009

martes, 12 de mayo de 2009

Organigrama FCYS UNI

Para que nadie pase pidiendo el organigrama de la Facultad de Ciencias y sistemas en la UNI, proporciono una manera de obtenerlo mas facil.

Este es el organigramad hasta 2009 proporcionado por "decanatura".

jueves, 7 de mayo de 2009

Sencillo "java.net" ejemplo

Buenos dias, buenas tardes, buenas noches. Cualquiera que sea el tiempo. Esta vez presento un ejemplo para algunos; para otros una solucion. Quien este familiarizado con el API de java.net este ejemplo le resultara util. El ejercicio plantea lo siguiente:

Crear una pequeña aplicacion servidor que soporte multiples clientes los cuales enviaran como peticion el nombre de un archivo en el servidor el cual buscara, luego de buscarlo lo leera (dado que siempre seran cadenas), y lo retornara al usuario que lo solicito.

Antes de iniciar recomiendo la lectura de "All about Sockets" de Sun MicroSystem/Oracle.

Primer paso clase Cliente:

utilizaremos:

private Socket echoSocket = null;
private PrintWriter out = null;
private BufferedReader in = null;
private BufferedReader stdIn=null;

El socket que es para abrir la comunicacion, el out para la escritura y el in para la lectura los inicilizamos en el constructor:

echoSocket = new Socket("127.0.0.1", 7000);
out = new PrintWriter(echoSocket.getOutputStream(), true);

in = new BufferedReader(new InputStreamReader( echoSocket.getInputStream()));

Luego comenzamos el proceso de envio y recepcion de mensajes dentro del metodo startProcess:


stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;

while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}


y el metodo cerrar al momento de concluir la comunicacion:

private void close() throws IOException{
out.close();
in.close();
stdIn.close();
echoSocket.close();
}


La clase mas sencilla quizas es el Server:


ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(7000);
} catch (IOException e) {
System.err.println("Could not listen on port: 7000.");
System.exit(1);
}

while(true){
new MultiServerThread(serverSocket.accept()).start();
}



y MultiServerThread el cual es un Thread quien administra cada hilo de la conexion que se realiza lo que permite la gestion de multiples clientes al mismo tiempo. (existen ventajas y desventaja de utilizar hilos para la administracion de multiples usuarios pero no es competencia de este post discutirlas.) Simplemente toma el socket cliente y lee las entradas:

while ((inputLine = in.readLine()) != null) {
try {
outputLine = inputLine;
if (outputLine.equals("exit")) {
break;
}
File file = new File(inputLine);
if (file.exists()) {
BufferedReader entrada = new BufferedReader(new FileReader(file));
outputLine = entrada.readLine();
} else {
outputLine = "File does not exist " + file.getAbsolutePath();
}
out.println(outputLine);
} catch (EOFException ex) {
ex.printStackTrace();
}
}

Si necesitas el codigo el cual se creo en Netbean 6.5.

Frase del Pragmatico

"No me importa que el gato sea blanco o negro; lo único que me importa es que cace ratones"

JavaNCSS Mide tu codigo

JavaNCSS es un comando simple que te ayuda a medir especificaciones acerca de tu codigo Java, con dos metricas clasicas de medicion clases y por funciones.

En la pagina oficial de JavaNCSS se muestra el ejemplo para el paquete java.*

Nr.   Classes Functions      NCSS Package
1 3 11 376 .
2 4 38 95 java.applet
3 70 1232 7060 java.awt
4 6 25 94 java.awt.datatransfer
5 30 117 861 java.awt.event
6 14 137 1023 java.awt.image
7 27 117 196 java.awt.peer
8 27 201 1268 java.beans
9 73 716 4221 java.io
10 72 711 3327 java.lang
11 7 92 288 java.lang.reflect
12 2 105 760 java.math
13 33 282 1504 java.net
14 19 73 318 java.rmi
15 3 10 71 java.rmi.dgc
16 3 13 47 java.rmi.registry
17 23 95 412 java.rmi.server
18 28 193 827 java.security
19 8 30 53 java.security.acl
20 5 8 22 java.security.interfaces
21 18 352 923 java.sql
22 40 522 4657 java.text
23 103 108 722 java.text.resources
24 30 322 2472 java.util
25 19 170 1064 java.util.zip
26 1 51 1093 sun.tools.ttydebug
27 1 0 2 sunw.io
28 2 1 6 sunw.util
--------- --------- ---------
671 5732 33762 Total

Packages Classes Functions NCSS | per
---------------------------------------------------
28.00 671.00 5,732.00 33,762.00 | Project
23.96 204.71 1,205.79 | Package
8.53 50.32 | Class
5.89 | Function



Caracteristicas de JavaNCSS

  • GNU/GPL 100%
  • Metrica es aplicable global, por clase o nivel de funcion
  • Sentencias de fuentes no comentadas (NCSS psei)
  • Metrica de McCabe
  • Promedio de valores calculados
  • Salida XML (Opcional)
  • XSLT hojas de estilo proveen generacion HTML y SVG.
  • Soporta sintaxis de Java .15 (generics, enums, varargs,etc)