Frases: Software y catedrales

El software y las catedrales se parecen mucho. Primero lo construimos, después rezamos.

–-Anónimo

ver post completo...

Frases: Programación

"Los programas deben ser escritos para que la gente los lea y sólo incidentalmente, para que las máquinas los ejecuten."

---Abelson / Sussman


visto en: hackification

ver post completo...

Gestiona tu proyecto facilemente con Scrumy

Navegando por ahí me encontré con Scrumy una herramienta que permite organizar y gestionar las tareas que se deben realizar en un proyecto con todo el estilo de Scrum.

No hay mucho más que decir les dejo el link del sitio, el cual permite crear proyectos de manera gratuita en su modo FREE o puedes pagar un poco para acceder a todas las funcionalidades en su modo PRO: SCRUMY!!



Aquí les dejo un video que explica de qué trata SCRUMY:


ver post completo...

¿Necesitas iconos para tu web?

Hola a todos.

Siempre cuando desarrollamos un sistema llega el momento de escoger qué
iconos utilizarás. Si eres nuevo y no tienes ideas de las licencias
que pueden tener las imágenes que circulan en la web, pues debo decirte
que no puedes llegar y tomar los iconos que quieras...

Excepto en Wikimedia Commons donde encontrarás una cantidad impresionante de imágenes (en formato PNG y SVG) e iconos bajo licencia "GNU General Public License" más conocida como "GNU GPL" o "GPL".

Para más información visita los siguientes enlaces:
GNU GPL (Wiki)
GNU GPL (Sitio oficial)

Saludos.-

ver post completo...

Frases: Proyectos

"Si deseas empezar y desarrollar algo grandioso, no necesitas millones de dólares de capitalización. Necesitas suficiente pizza y Diet Coke en la nevera, una PC barata y trabajo y dedicación para realizar tu idea."

---John Carmack


visto en: hackification

ver post completo...

¿Cómo aplicarías SCRUM?

Mencionábamos sobre la metodología ágil de desarrollo SCRUM permite, entre otras cosas, involucrar al cliente durante todo el proceso de desarrollo, además de motivar constantemente al equipo de trabajo a través de breves reuniones diarias. Todo el equipo conoce perfectamente en qué punto del desarrollo se encuentra el proyecto y qué falta por hacer.



¿Cómo aplicarías SCRUM? Aquí les dejo un ejemplo o plantilla de cómo se podría llevar aplicar:

Etapa 1: Toma de requerimientos.
Definición del "Product Backlog", el cual corresponde a todas las tareas, requerimientos o funcionalidades a realizar. Esta información será recopilada a través de reuniones entre el "Scrum Team" y el "Product Owner".

Etapa 2: Análisis de requerimientos y Diseño Arquitectónico.
Se analizará el "Product Backlog" y a través de éste se generará el diseño base del sistema, el cual involucra por ejemplo: modelo de base de datos, principales módulos del sistema.

Etapa 3: Desarrollo del Sistema.
Durante todo el proceso de desarrollo, el equipo de trabajo realizará reuniones diarias de 15 a 30 minutos, denominadas "Daily Scrum Meeting". El objetivo de éstas es que todo el equipo de trabajo se entere del estado de las diversas tareas y se resuelvan dudas que puedan surgir en éste proceso.

Mediante las "Sprint Planning Meeting" se definirán los diversos "Sprint Backlog" (conjunto de requerimientos que equivalen a un incremento del sistema), los cuales contemplarán parte de las funcionalidades descritas en el "Product Backlog". Los "Sprint Backlogs" tendrán una duración ideal de 2 semanas.

En esta fase se genera un documento que indica los objetivos del "Sprint" denominado "Sprint Goal".

Una vez finalizado un "Sprint Backlog", se realizará una reunión denominada "Sprint Review" donde se mostrará al "Product Owner" los avances realizados. Éste podrá revisar la entrega y hará las observaciones correspondientes.

Por último, se inicia el "Sprint Retrospective". Donde se marcan los aspectos positivos (para repetirlos) y los aspectos negativos (para no repetirlos) experimentados en el "Spring Backlog".

El ciclo se repite hasta abarcar todas las funcionalidades descritas en el "Product Backlog".

Etapa 4: Aceptación y entrega del Producto.
Contempla las siguientes tareas:


  • Revisión final del producto.


  • Entrega del Sistema.

    • Código Fuente

    • Documento de diseño arquitectónico del Sistema

    • Manuales de administración y uso del Sistema



  • Instalación del Sistema en ambiente de producción



ver post completo...

SCRUM: Metodología de Desarrollo de Software

A grandes rasgos se puede decir que SCRUM es una Metodología Ágil de desarrollo de software que se concentra en cómo los miembros del equipo deberían funcionar (comunicarse, trabajar, etc.), a fin de producir un sistema flexible en un entorno que cambia constantemente.

La filosofía de SCRUM está en involucrar, motivar y mantener constantemente informado sobre el estado del proyecto a el equipo de trabajo y el cliente.




Es una metodología que, para cumplirla, requiere de mucha responsabilidad por parte del equipo de trabajo. El cual consta de un jefe de proyecto, un equipo de desarrollo y el cliente.

Hoy en día muchas empresas están adoptando ésta metodología debido a su fácil implantación y adaptabilidad a cambios.
Es tan simple que lo más probable (si es que has participado en proyectos en tu trabajo, universidad o instituto) hayas afrontado un proyecto de una manera muy similar (más adelante publicaré un "ejemplo de cómo se podría ejecutar SCRUM").

A continuación definiremos los roles y conceptos de SCRUM.

Roles:


  • Product Owner: Conoce y marca las prioridades del proyecto o producto (cliente).

  • Scrum Master: Guía las reuniones y ayuda al equipo ante cualquier problema que pueda aparecer (Jefe de proyecto).

  • Scrum Team: Son los responsables de implementar las funcionalidades o requerimientos elegidos por el Product Owner. Desarrollan el producto.

  • Stackeholders: Personas relacionadas con el producto o su financiamiento. Participan durante los Sprint Review y pueden aportar ideas, sugerencias o necesidades.

  • Usuarios: Son los beneficiarios finales del producto.



Actividades principales:

  • Product Backlog: Pila de requerimientos o funciones del sistema, definida y priorizada por el Product Owner.

  • Sprint Backlog: Pila de funcionalidades a desarrollar durante una iteración o sprint extraídas del Product Backlog. Estos desarrollos se aconseja no superen cuatro semanas, de esta manera se mantiene un control del proyecto.

  • Spring Planning Meeting: Reuniones entre el Scrum Master, Scrum Team y Product Owner y consiste en planificar las tareas a desarrollar en un número determinado de Sprint Backlogs. Se genera un documento que indica los objetivos del Sprint denominado Sprint Goal.

  • Daily Scrum Meeting: Pequeñas reuniones entre el Scrum Master y el Scrum Team, cuya duración no supera los 30 minutos. Se realizan durante el desarrollo del Spring Backlog y consiste en informar el estado de éste, respondiendo a las siguientes preguntas:

    • ¿Qué tareas has realizado desde la última reunión? (qué he hecho).

    • ¿Sobre qué tareas trabajarás en el día actual? (que voy a hacer hoy).

    • ¿Qué obstáculos o riesgos impiden o pueden impedir el normal avance? (qué ayuda necesito).



  • Sprint Review: Reunión de no más de dos horas de duración, que informa los avances realizados en el Sprint al Product Owner y Stackeholders.

  • Sprint Retrospective: Actividad para reorganizar las tareas del Product Backlog. Se analizan los aspectos positivos y negativos del Sprint Backlog.


ver post completo...

Frases: Diseño de Software

"Mucho del software hoy en día se parece a una pirámide egipcia: con millones de ladrillos apilados uno encima del otro, sin integridad estructural y hecho por pura fuerza bruta y miles de esclavos."

--Alan Kay


visto en: hackification

ver post completo...

Tipos de datos básicos en Python

Como habíamos mencionado en el primer post de python, éste es un lenguaje de tipado dinámico pero al mismo tiempo fuertemente tipado.

En python tenemos los siguientes tipos básicos:

  • Boleanos
  • Números (Enteros, decimales y complejos)
  • Cadenas de Texto



Sintaxis para declarar boleanos:
algoVerdadero = True
algoFalso = False


Sintaxis para declarar números:
#Asi de declaran variables de tipo entero
numeroPositivo = 10
numeroNegativo = -15

#Una variable float
numeroFloat = 2.0254


Operadores numéricos:
a = 5.0
b = 3.0
print( a+b )  #imprime -> 8.0
print( a-b )  #imprime -> 2.0

print( a*b )  #imprime -> 15.0
print( b**b ) #imprime -> 9.0, representa 3.0^3.0 (potencia)

print( a/5 )  #imprime -> 1.6666
print( a//5 ) #imprime -> 1, es el resultado entero de la división 
print( a%5 )  #imprime -> 2, es el resto de la división


Sintaxis para declarar cadenas de texto
a = "Hola"
b = " Mundo"
print( a+b )  #imprime "Hola Mundo"
print( a+(b*2) ) #imprime "Hola Mundo Mundo"

Si quieres comenzar a desarrollar en Python en ESTE LINK encontrarás información sobre el interprete e IDEs.

ver post completo...

IDEs para programar en Python


En el post anterior (Click Aquí) vimos una pequeña pincelada sobre Python y algunos de sus conceptos.

Ahora bien ¿Qué herramientas de desarrollo podemos ocupar para programar en Python?


Partiendo por lo más básico cuándo instalamos el intérprete de python, éste viene con un IDE gráfico integrado llamado IDLE.

Ahora bien, si queremos algo más sofisticado y gratis, tenemos a nuestro querido amigo Eclipse IDE el cual debemos complementar instalando el plugin PyDev. Con esto tendremos resaltado de sintaxis, autocompletado de código, refactorización, resalte de errores, etc.
Otros IDE gratis son: BOA Constructor y Eric.

En lo personal utilizo Eclipse+PyDev y funciona muy bien.

Si tienes alguna duda sobre cómo configurar Eclipse para programar en Python, comentala y te ayudaré.

Saludos.-

ver post completo...

Frases: Programación

"Cualquier tonto puede escribir código que un ordenador entiende. Los buenos programadores escriben código que los humanos pueden entender."

--Martin Fowler


visto en: hackification

ver post completo...

Cosas que pasan

Para los que trabajamos a más de alguno le parecerá familiar ésta historia.



¿Y a tí en tu lugar de trabajo te ha sucedido algo parecido?

ver post completo...

Un primer vistazo a Python


Hola a todos,

Hace algún tiempo que tengo ganas de aprender a utilizar el lenguaje de programación Python (más detalles sobre Python AQUÍ)...

¿Qué es Python?





Es un lenguaje interpretado o de script (a diferencia de Java que es compilado), es decir un programa intermedio (llamado "intérprete") es encargado de leer y ejecutar el código en la máquina.



Posee tipado dinámico, es decir, que el tipo de las variables se determinará en tiempo de ejecución.

A pesar de ésto, es fuertemente tipado, esto quiere decir que no se puede tratar a una variable como si fuera de un tipo distinto al que es.

Además es Orientado a Objetos (también soporta Programación Imperativa, Funcional y Orientada a Aspectos) y por si fuera poco Multiplataforma. El interprete de Python está disponible para: Linux, Windows, Mac OS, etc. Por lo tanto si no se utilizan librerías o APIs que utilicen rutinas especificas de la plataforma (S.O), el código escrito en Python debiese correr en todos estos sistemas sin realizar prácticamente ningún cambio.

Más adelante comenzaré a subir ejercicios básicos para que juntos aprendamos a utilizar este simple y poderoso lenguaje de programación.

Como pequeño adelanto les dejo el código completo necesario para escribir el típico Hola Mundo:

print("Hola Mundo")


Si quieres instalar el interprete de python para comenzar a programar, descarga el que corresponda a la plataforma que utilizas en éste enlace: DESCARGA PYTHON

Saludos.-


ver post completo...

Acá les dejo el link donde encontrarás las fotos de los creadores de algunos lenguajes de programación como java, python, c#, php y más...

Presiona AQUí

¿Qué te pareció ver a los creadores de tus lenguajes de programación preferidos?

Saludos.-

ver post completo...


Desde Java 5 se incorporaron los conceptos de varargs (argumentos variables) y bucles for-each.





El primero nos permite pasar un número variable de argumentos a un método de manera transparente. El segundo nos facilita sobre manera la manera en que se realizan los bucles for.

Ambas funcionalidades nos entregan el mismo dinamismo proporcionado por otros lenguajes como Python o PHP.

Veamos un ejemplo que mezcle éstas funcionalidades
-La mayoría de los programadores Java escribiría código como éste:


public class VarargsForEach{
public static void main(String[] args){
for( int i=0 ; i<args.lengt ; i++){
String argumento = args[i];
System.out.println( argumento );
}
}
}


-Ahora utilizando varargs y bucles for-each, nuestro código quedaría de la siguiente manera:

public class VarargsForEach{
public static void main(String... args){
foreach( String argumento : args ){
System.out.println( argumento );
}

imprimir("Hola", " como", " estas ", "...", 1,2,3, " chao");
}

public static void imprimir( Object... parametros ){
foreach( Object parametro : parametros ){
System.out.println( parametro );
}
}
}


Los varargs nos proporcionan mayor abstracción y flexibilidad en los métodos. Por otro lado los bucles for-each nos entregan simplicidad y elegancia en el código.



ver post completo...




Hola a todos,

Como les contaba en los Post anteriores (post 1, post 2), la nueva versión de Struts (Struts2) es muy diferente a su predecesor.

[si es primera vez que ves este post te recomiendo visitar los post anteriores]





Es por esto que voy a explicar en más detalles cómo funciona y configura este framework.
Para ésto me basaré en el proyecto Struts2 publicado en el Grupo de Google (archivo: MVCStruts2.rar).

Lo primero que se debe hacer es editar el descriptor de despliegue (archivo web.xml) para añadir el filtro que permite que Struts2 pueda ejecutarse en nuestro proyecto.
Nuestro web.xml debiese quedar así:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

<display-name>MVCStruts2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>


<filter>  
<filter-name>struts</filter-name>  
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
</filter>  

<filter-mapping>  
<filter-name>struts</filter-name>  
<url-pattern>/*</url-pattern> 
</filter-mapping>

</web-app>


De esta manera el servidor web (Tomcat en éste caso) sabrá que cualquier petición realizada debe pasar por el filtro FilterDispatcher, el cual es el Controlador de nuesta aplicación Web.

Struts2 nos permite crear un archivo xml de configuración, en el cual podemos especificar qué debe hacer nuestro Controlador según la petición recibida por parte del cliente. Este archivo se llama struts.xml y debe crearse en package por defecto del proyecto Web Resources:src.
El archivo del proyecto podemos escribirlo de la siguiente manera:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">    

<struts>
<include file="login-config.xml" />
</struts>


Como se puede apreciar prácticamente no hay nada de contenido en archivo, esto es porque se está utilizando un tag xml llamado include, el cual permite importar el contenido de otros archivos de configuración xml struts2. De esta forma evitamos que a medida que nuestra aplicación crezca, lo haga al mismo ritmo nuestro archivo struts.xml. Ahora veamos el contenido del archivo login-config.xml (el cual contiene las acciones de login de nuestra aplicación).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">    

<struts>
<package name="accesopackage" extends="struts-default">
<action name="login" method="validarUsuario" class="cl.struts2.login.action.LoginAction">  
<result name="success">/WEB-INF/home/home.jsp</result>
<result name="error">/WEB-INF/index.jsp</result>
</action>

<action name="logout" method="cerrarSessionUsuario" class="cl.struts2.login.action.LoginAction">
<result name="success">/WEB-INF/index.jsp</result>
</action>
</package>
</struts>


Este archivo lo único que nos dice es que se ejecute la clase 'cl.struts2.login.action.LoginAction' y el método 'validarUsuario()' cuando llegue la acción 'login', y la misma clase pero el método 'cerrarSessionUsuario()' cuando llegue la acción 'logout'.
En la acción 'login', si la ejecución del método es correcta se retornará la acción SUCCES, la cual nos llevará a la página '/WEB-INF/home/home.jsp', en caso contrario o ante un ERROR nos llevará a la página de inicio '/WEB-INF/index.jsp'.

Ahora podemos crear nuestra página index.jsp la cual hará de login de usuario y llamará a la acción 'login'.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ingresar al sistema</title>
<link rel="stylesheet" href="estilos/estilos.css" type="text/css" />
<script type="text/javascript" language="javascript">
function validar(){
var user = document.form.username.value;
var pass = document.form.password.value;
if( user!=null && pass!=null ){
document.form.submit();
}
else{
alert("Ingrese usuario y contraseña");
}
}
</script>

</head>
<body>
<form method="post" name="form" action="login">
<table class="tabla">
<tr>
<td align="center" colspan="2" class="franja-titulo">
Ingresar al Sistema
</td>
</tr>
<tr>
<td class="texto">
Usuario: 
</td>
<td>
<input type="text" name="username" id="username" class="campo-texto">
</td>
</tr>
<tr>
<td class="texto">
Contraseña: 
</td>
<td>
<input type="password" name="password" id="password" class="campo-texto">
</td>
</tr>
<tr>
<td align="center" colspan="2" class="texto-tabla">
<%
if( request.getAttribute("error")!=null ){
%>
Error al validar los datos
<%
}
%>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="button" value="Aceptar" onclick="validar();">
</td>
</tr>
</table>
</form>
</body>
</html>


Como se puede ver en la imagen, el formulario web de index.jsp redireccionará a la acción 'login'.
Por lo tanto ahora veamos el código de nuestra clase 'cl.struts2.login.action.LoginAction'.
public class LoginAction extends ActionSupport implements ServletRequestAware,ServletResponseAware{

private static final long serialVersionUID = 1L;

private Logger logger = Logger.getLogger( LoginAction.class );

private HttpServletRequest request;
private HttpServletResponse response;


public String validarUsuario(){
if( SessionUtil.existeSession(request, SessionUtil.SESSION_USUARIO) ){
logger.debug("[validarUsuario] usuario ya validado");
return SUCCESS;
}

String username = request.getParameter("username");
String password = request.getParameter("password");

logger.debug("[validarUsuario] se reciben parametros: {usuario = " +username+ ", password = " + password +"}");

Usuario usuario = null;

if( username!=null && password!=null ){
logger.debug("[validarUsuario] se valida usuario");
Usuario usu = new Usuario();
usu.setUsername( username );
usu.setPassword( password );

ServicioUsuarios servicio = new ServicioUsuarios();
usuario = servicio.obtenerUsuario(usu);
}

if( usuario!=null ){
logger.debug("[validarUsuario] validacion correcta");
SessionUtil.crearSession(request, SessionUtil.SESSION_USUARIO, usuario, 15);
return SUCCESS;
}

SessionUtil.cerrarSession(request);
request.setAttribute("error","1");
logger.debug("[validarUsuario] error al validar usuario");
return ERROR;
}



public String cerrarSessionUsuario(){
logger.debug("[cerrarSessionUsuario] Cerrar session de usuario");
SessionUtil.cerrarSession(request);
return SUCCESS;
}


public HttpServletRequest getServletRequest() {
return this.request;
}

public HttpServletResponse getServletResponse() {
return this.response;
}

public void setServletResponse(HttpServletResponse response) {
this.response = response;
}


public void setServletRequest(HttpServletRequest request) {
this.request = request;
}

}


En el código se puede ver la clase LoginAction y su método validarUsuario(), el cual se ejecutará con la acción 'login'. No voy a explicar en detalle el contenido de este método (ya que con el material publicado anteriormente no debiese haber problemas para entender ésto ;)), pero se entiende que de alguna manera valida el usuario y password del usuario. Si la validación es correcta retornará la acción SUCCES, en caso contrario ERROR (si tienes dudas con ésto vuelve a ver la foto del archivo login-config.xml).

Más adelante se detallará cómo funcionan los interceptores y cómo se ejecutan las llamadas AJAX.

Atento a sus dudas o consultas.
Saludos.-


ver post completo...

"Hay dos formas de diseñar software: la primera es hacerlo tan simple que obviamente no hay deficiencias y la segunda es hacerlo tan complicado que no hay deficiencias obvias. La primera forma es mucho más difícil."

--C.A.R. Hoare


visto en: hackification

ver post completo...

J2EE: Strus2 + log4j + AJAX (II)




En el post anterior se mostró los distintos frameworks utilizados para desarrollar un proyecto Web Java, el cual puede ser descargado desde el Grupo de Google (archivo: MVCStruts2.rar).





A continuación explicaré la arquitectura del proyecto y cual es la función de cada un de los componentes de éste.
En esta imagen podemos ver el diseño arquitectónico del sistema.

Esta imagen muestra cómo es la división arquitectónica de la aplicación, muestra claramente cómo se aplica el patrón MVC. Además da a conocer el flujo y la forma en que se comunican los distintos componentes que participan en el sistema.

A continuación se definirán los distintos tipos de clases que constituyen el sistema:

HTML y JSP: Básicamente son las páginas Web que muestran gráficamente el sistema al usuario. Los usuarios al ejecutar funciones sobre las páginas Web (capa vista) generan eventos, los cuales son capturados por el Controlador.

Controlador: Es el intermediario entre la capa Vista y la capa Modelo, obtiene los eventos realizados por el usuario en la capa Vista y ejecuta la acción (ActionClases) correspondiente en el Modelo, la cual responderá a la solicitud realizada por el cliente. El controlador está constituido por los archivos de configuración XML (struts.xml) que son interpretados por el framwork Struts2.

InterceptorClases: Son clases que heredan de la interfaz Interceptor que proporciona el framework Struts2. Su función es interceptar las invocaciones que realiza la capa vista sobre el controlador para invocar a las ActionClases (y viceversa), durante ésta interrupción éstas clases pueden realizar validaciones (ejemplo: validar sesión de usuario), etc. y si ésta es correcta el flujo o acción se realiza normalmente.

ActionClases: Heredan de la clase ActionSupport proporcionada por el framework Struts2. Su función (en éste proyecto) es validar la integridad de los datos recibidos e invocar a los diversos Servicios los cuáles le proveerán de la información necesaria para retornar la respuesta requerida por la capa Vista.

Servicios: Son clases de negocio, las cuáles pueden obtener datos a través de la invocación a diversas ClasesDAO, procesarlos y devolver la información solicitada por la capa Web.

ClasesDAO: Estas clases acceden "directamente" a diversos orígenes de datos (Bases de datos, archivos de texto).

ClasesTO: Estas clases proporcionan objetos de transferencia, los cuales "viajaran" a través de la aplicación. Por ejemplo: una clase DAO consultará un origen de datos, y retornará un lista de objetos TO.

ClasesUtil: Son clases utilitarias que proporcionarán funciones que podrán ser utilizadas por todos los componentes del sistema.


ver post completo...



Hola a todos,

Hace unos días me interesé en aprender cómo utilizar Struts2, la nueva versión del
framework de desarrollo web de Java Apache Struts. Me impresionó lo distinta que es ésta con respecto a su predecesor, investigando descubrí que para desarrollarla no se basaron
en Struts 1.x, sino que en otro framework llamado WebWork.




El framework Struts 2 está basado en el patrón MVC. Struts2 puede ser descargado desde éste link AQUÍ.

Por otro lado tenemos log4j, también desarrollado por la fundación Apache. Este framework permite definir la salida de los mensajes de la aplicación en tiempo de ejecución (muy util e implementado en varios lenguajes y organizaciones). Este puede ser descargado desde éste link AQUí .

Por último el proyecto utiliza AJAX, para "facilitar" su implementación y abstraerse del manejo de estado de las llamadas AJAX y de la compatibilidad con Navegadores, es que se utilizó el framework PrototypeJs.

Soy precursor de que se debe aprender haciendo.
Es por eso que he subido al Grupo de Google (archivo: MVCStruts2.rar) un proyecto Web Java hecho sobre el IDE Eclipse con un ejemplo práctico utilizando todas las herramientas nombradas anteriormente. De ésta forma todos podrán tener una base de conocimiento para comenzar cualquier proyecto.

Este proyecto Web corre sobre Tomcat 6.x y como dice el título del post, utiliza log4j, ajax (framework prototypejs) y Struts2.

Cualquier duda o consulta pueden darla a conocer acá mismo, en todo caso más adelante publicaré más información y detalles sobre cómo funcionan las tecnologías mencionadas.

Ah! acá les dejo fotos de cómo se ven las páginas del proyecto.










Para ambientar el proyecto procura tener instalada la máquina virtual de java (JDK), Eclipse IDE y Tomcat 6.x.

Cuando corras el proyecto en tu equipo recuerda editar las variables de entorno que
se definen dentro del archivo web.xml.

El usuario de prueba de la aplicación es: user = egacl; pass = sorete.
Esta información la puedes editar (o agregar más usuarios)
en el archivo usuarios.txt, el cual encontrarás dentro del proyecto.

En ESTE LINK encontrarás el proyecto [nombre archivo = MVCStruts2.rar].

Cualquier duda o consulta la puedes postear aquí.


ver post completo...




En el Post Anterior les contaba que GetBook, el proyecto de 7mo semestre de Ingeniería, había finalizado.

Les quiero contar un poco más sobre como se enfrentó el proyecto.




-Trabajamos con metodología orientada a objetos.
-Como modelo de desarrollo se decidió utilizar el modelo incremental.
-Para gestionar el proyecto Microsoft Office Project.
-Para la documentación utilizamos una mezcla entre ESA y PRINCE2.
-Diagramas generados con Enterprise Architect 7.0 y BizAgi.
-Se utilizaron patrones de diseño como: MVC, DAO, DTO.

El proyecto tuvo una duración de 78 días, comenzando el Lunes 06 de Abril de 2009 y finalizando el día Martes 07 de Julio de 2009.

Los Integrantes del Equipo son:
-Eugenio Contreras, Jefe de Proyecto.
-Pablo Gavilán, Desarrollador.
-Claudio Rozas, Desarrollador.

*Debido al tiempo acotado, sumado a 4 ramos que tuvimos en paralelo al desarrollo del proyecto (+ el trabajo), es que todos realizamos las labores de desarrollo, diseño y documentación.

Ha sido una muy buena experiencia y lo más satisfactorio es que el software cumplió con las expectativas de la Institución y será implementado y publicado a través del enlace público del Instituto Profesional CIISA.


ver post completo...

Todos mis amigos, compañeros de trabajo y estudios saben que èste semestre (7mo de Ingeniería)
he estado desarrollando, junto a un equipo de compañeros, un Sistema de Biblioteca para el
Instituto Profesional CIISA el cual fue dado como gran trabajo para el curso Taller de Ingeniería de Software II.





Bueno el semestre ya casi ha terminado y el sistema està completamente terminado.
Personalmente estoy conforme por la dedicación entregada y los resultados obtenidos.
Este software estará en producción en unas semanas más y marca un hecho histórico en CIISA,
ya que es el primer Sistema creado por alumnos (que no están realizando tesis y tienen 5 ramos)
que se pone verdaderamente en marcha y es aprobado en la institución.

Aquí les dejo una fotos que muestra como se ve el sistema y algunas de las funcionalidades que ofrece a los usuarios públicos.

[Home]


Agradezco a mis compañeros de equipo, ya que el esfuerzo para desarrollar ésto fue realmente notable y de calidad.

Mas adelante subiré más fotos y datos del proyecto.


ver post completo...

Bienvenido a GetGeek

Hola!
Mi nombre es Eugenio Contreras, estudio Ingeniería en Informática (a un año de titularme) y les doy la bienvenida.

Como podrán ver éste es el primer post en el blog de GetGeek, es una pequeña intro de lo que encontrarán
por éstos lados de la red. Espero disfruten de los diversos temas frikis y de programación que se publicarán.

El objetivo de GetGeek es compartir conocimiento, generar discusiones constructivas y responder dudas sobre temas relacionados con la informática (programación, bases de datos, sistemas operativos, etc). Aprovechando todo el dinamismo que entrega la Web 2.0.


Para comenzar algunos de mis enlaces preferidos:
No puedo Creer que lo hayan inventado,
MundoGeek,
XKCD,
XKCD en español,

Y por último un chiste geek:

Saludos.-


ver post completo...

top