viernes, 23 de marzo de 2012

MS - Project


Descripción

MS -Project es el software mas popular para la gestion de proyectos, con este programa podremos hacer la planificación de nuestros proyectos, programando el tiempo de duracion de cada actividad.


Ahora vamos al Tutorial


Creando un Proyecto

Para crear nuestro primer proyecto nos vamos al menu la pestaña archivo opcion nuevo encontraremos Proyecto en blanco y le damos click en crear



Agregando información al proyecto

Una vez creado se puede definir para el proyecto algunas propiedades, seleccionando en el menú “Proyecto” y en la parte izquierda de la barra de herramientas “Información del Proyecto”.



Para que se defina entre otros: la fecha de inicio del proyecto, el calendario, la prioridad Menú Crear Opciones Sub-opciones



Actividades o Tareas

Regresando al menú tarea, se encuentra bajo él la barra de herramientas con las opciones que normalmente se utilizan más, a continuación está el área de trabajo donde se crean y modifican las tareas o actividades de un proyecto con sus atributos; y, por último en la parte inferior está la barra de estado, que es donde se informa el estado de alguna actividad.



Editando la actividad

Para ingresar una tarea más comunmente llamada en el ámbito de proyectos una actividad, se debe ubicar en el área de trabajo y digitar el nombre de la tarea, luego se puede completar la información, ya sea digitándola directamente en los diferentes espacios que tiene la tarea, para las fechas pueden seleccionarse a mano o presionando en la barra de herramientas la opción Autoprogramar, para el resto de información puede también dar doble click sobre la tarea o presionar el botón Información, apareciendo una ventana adicional con varios tabuladores, en el primero denominado “General” se tiene el nombre, duración (si es solo estimativa marcar la casilla denominada “Estimada”, el porcentaje completado (0% sin avance, 100% es terminada), la Prioridad de la tarea, modo de programación (manual o automático), fechas en las que inicia y termina, si se mostrará la escala de tiempo, si se oculta la barra y si es Resumida.



En todos los tabuladores en la parte inferior de la ventana se tiene: un botón de ayuda, uno para Aceptar los cambios y otro para Cancelar.

En el siguiente tabulador denominado “Predecesoras”, se tendrá información de que tarea antecede y el tipo de relación (si debe terminar la otra para esta empezar, si empiezan iguales, si deben terminar iguales y con cuántos días de diferencia.



El siguiente tabulador contiene la asignación de recursos



Luego está el tabulador denominado “Avanzado”, en el cuál se puede delimitar la tarea, indicando si hay una fecha límite para hacerla (dead line), el tipo de restricción y una fecha de esta, qué calendario se utiliza, un código del EDT (Estructura de Desglose de Trabajo), el método del valor acumulado, si es hito (0 días, son tareas referenciales).



A continuación está el de Notas, donde se puede incluir textos relacionados a la tarea


Por último, está el de Campos Personalizados, en el cuál se puede ingresar los datos de campos que se deseen adicionar a las tareas.



Agregando información al proyecto

Cuando una o más tareas son parte de una tarea o actividad mayor, estás deben estar bajo la tarea padre, se las debe seleccionar (se ponen oscuras), en la barra de herramientas se presiona el botón con la flecha verde hacia la derecha (Aplicar sangría) para que se indente hacia la derecha.



De manera que las tareas hijas se ven más a la derecha del padre, así:


Si uno presiona el botón Autoprogramar de la barra de herramientas, las fechas se llenan automáticamente.

En la parte derecha del área de trabajo aparece un diagrama Gant, mismo que refleja el plazo en el que una tarea se realiza en el tiempo y las relaciones entre tareas. Las que aparecen en negro son las tareas padres o de agrupación, las azules y rojas las tareas hijas y las no rellenas son las no programas.


Relaciones

Para relacionar dos tareas, se tiene la relación Fin – Comienzo, de manera que la una comience una vez finalizada la otra, se las puede seleccionar y presionar el botón que asemeja una cadena en el área Programación:



O se puede escribir en el atributo “Predecesores” el número de la tarea (parte izquierda) que debe terminar antes, en este caso la Número 2:



Dando como resultado:



Otro tipo de relación es la de Comienzo - Comienzo , es decir que la una inicie cuando la otra inicia, para ello puede crearse la relación FC y cambiar editando los predecesores ya sea en la venta con información o escribiendo en el atributo. Por ejemplo si queremos que la Actividad 3 inicie cuando inicia la Actividad 2, podemos ingresar a los datos de la Actividad 3 e incluir la predecesora:



Luego se debe cambiar el tipo a CC



El atributo Pos, permite indicar el número de unidades en que difieren los inicios para cuando se quiere que una tarea inicie x días, horas o unidades de tiempo antes o después de la otra tarea, quedando de la siguiente manera:



Como se puede ver en el atributo Predecesoras 4CC que quiere decir que inicie cuando la tarea 4 inicie, es decir la denominada Actividad 2.

Si se quisiera que empiece 1 día más tarde se puede hacerlo en la venta de información, en el tabulador Predecesoras, en atributo Pos como se explicó anteriormente o digitar a continuación del 4CC el signo más o el menos dependiendo de si es antes o después, la cantidad y el tipo de unidades (ejemplo d para días)



Quedando de la siguiente manera:


jueves, 15 de marzo de 2012

Comandos basicos en Linux


Descripción

Este es un tutorial de comandos basicos con linux utilizando la distribución centos 5.6. En Linux la organizacion de archivos es de tipo Jerárquico. Todos los archivos y directorios parten una raiz (/). No utiliza extensiones para diferenciar los tipos de archivos.Los directorios, subdirectorios y archivos tienen asignados permisos. El administrador “root” tiene los máximos privilegios.

Ahora vamos al Tutorial


Creando Archivos y Directorios

Archivos :

Diferentes maneras de crear un archivo

  • # touch archivo
  • # echo "Hola" > archivo
  • # vi archivo
Directorios :

Los nombres de los directorios son libres. En una misma ruta puede existir un nombre de archivo igual al nombre del directorio

  • # mkdir datos
  • # mkdir "datos contabilidad"

Copiar, Mover Archvios y Directorios

Archivos :
  • Copiar archivos : # cp archivo archivo.bak
  • Copiar todos los archivos a un directorio :# cp * /tmp
  • Copiar archivos que empieza con la palabra dat : # cp dat*/tmp
  • Mover archivo : # mv archivo archivo.bak


Ahora Vamos a desarrollar el siguiente arbol Jerarquico:



Comandos Arbol Jerarquico:

Estos son los comandos paso a paso de como se crea el arbol jerarquico



miércoles, 14 de marzo de 2012

Instalacion Centos5.6 - Linux


Introducción


  • Centos5.6 - Linux
  • Linux es un clón del sistema operativo UNIX. Es una implementación de UNIX distribuida gratuitamente en los términos de la Licencia GPL.

    Requerimientos para la instalación

  • Los requisitos mínimos para instalar Linux son:
      - Intel Pentium I/II/III/IV/Celeron
      - Espacio en disco duro 850 MB (Mínimo), 4 GB (Recomendado)
      - 64 MB mínimo para sistema en modo texto, 128 MB mínimo para sistema en modo gráfico.

  • Instalacion modo grafica de centos 5.6



    Uso de Estrucura Pilas - Caso de Almacen


    Introducción


  • Caso De Almacen
  • En un almacén se guardan contenedores en grupos de contenedores. Como Maximo, el almacén tiene espacion para M grupos de contenedores. NO es posible colocar mas de N contenedores en cada grupo. Cuando se va a guardar un nuevo contenedor en el Almacen, este se coloca en el primer grupo que tenga espacion. De esta manera, un nuevo grupo de contenedores, se forma, solamente sei es que ya estan llenos los anteriores y si hay espacion para un grupo mas. Cuando se va a retirar un contenedor, deben retirarse primero los que esten encima de el, los cuales se mueven hacia otros grupos, siguendo el mismo criterio cuando se guardan los contenedores. El almacén siempre debe tener espacio disponible para, al menos, N-1 contenedores, para poder mover los contenedores cuando se va a retirar; por tanto la capacidad real del alamacen es (M-1)*N+1.

    Ahora vamos al Desarrollo xD!


    1.- Creacion del Proyecto

    El proyecto se llamará Almacen. Dentro del proyecto Almacén se tendra que colocar el paquete Edtructuras; que contiene la estructura a utilizar; y el paquete almacen que contiene la clase y el programa principal.


  • Estructura pila
    • Primero Creamos la Interfaz TPila y Copiamos el siguiente codigo
    Your script
    /**
     *
     * @author JulioCsaR
     */
    
    public interface TPila
    {
     void Push(Object dato);
     Object Pop();
     Object Top();
     
     int  Cantidad();
     boolean Vacia();
     Object Obtener(int pos);
     void Modificar(Object dato, int pos);
     int  Buscar(Object dato);
     int  Buscar(Object dato, TComparar cmp);
    }
    

      Ahora Creamos la Clase TPilaP y copiamos el siguiente codigo
    Your script
    package Estructuras;
    
    /**
     *
     * @author JulioCsaR
     */
    
    public class TPilaP implements TPila
    {
     private TListaP P;
    
     public TPilaP()
     {
      P = new TListaP();
     }
     
     public void Push(Object dato)
     {
      P.Insertar(dato,0);
     }
     
     public Object Top()
     {
      return P.Obtener(0);
     }
     
     public Object Pop()
     {
      Object aux = Top();
      P.Eliminar(0);
      return aux;
     }
     
     public int Cantidad()
     {
      return P.Cantidad();
     }
     
     public boolean Vacia()
     {
      return P.Vacia();
     }
     
     public Object Obtener(int pos)
     {
      return P.Obtener(pos);
     }
     
     public void Modificar(Object dato, int pos)
     {
      P.Modificar(dato,pos);
     }
     
     public int Buscar(Object dato)
     {
      return P.Buscar(dato);
     }
     
     public int Buscar(Object dato, TComparar cmp)
     {
      return P.Buscar(dato,cmp);
     }
    }
    

  • Codigificación de la clase Almacén
    • Paso1 : Ahora se procede a la codificacion de la clase Almacen
    Your script
    package almacen;
    //importamos la estructura TPilaP
    import Estructuras.TPilaP;
    
    public class AlmacenP {
    
        int m;
        int n,t;
        TPilaP grupos[];
    
        public AlmacenP() {
            
            
        }
      Paso2: Contructor (M y N). Tener en cuenta que M representa el numero de GRUPOS de contenedores, N representa la CANTIDAD de contenedores, grupos es la estructura a utilizar, de tipo TPila.
    Your script
    public AlmacenP(int m,int n)
    {
        this.m=m;
        this.n=n;
        this.grupos=new TPilaP[m];
        for(int i=0;i<m;i++)
        this.grupos[i]=new TPilaP();
        this.t=0;
    
    
    }

      Paso3: Ahora se procede a la codificacion de los metodos de la clase Almacen. Cantidad de grupos, Cantidad de Contenedores.
    Your script
    public int CantidadGrupos()
    {
        return m;
    }
    public int CantidadContenedores (int grupo)
    {
      return grupos[grupo].Cantidad();
    }
    public int CantidadContenedores()
    {
        return t;
    }

      Paso4: Ahora se procede a la codificacion de los metodos de la clase Almacen. GuardarContenedor. Tener en cuenta que aca primero se ubica en que grupo se tiene la capacidad de recibir a un nuevo contenedor, y recien allo es donde se asigna.
    Your script
    public boolean GuardarContenedor( Object contenedor )
    {
        if(t==CapacidadAlmacen())
            return false;
        int g;
        g=BuscarGrupoCapacidad(-1);
        grupos[g].Push(contenedor);
        t++;
        return true;
    }

      Paso5: Ahora se procede a la codificacion de los metodos de la clase Almacen. RetirarContenedor. El proceso a seguir: primero buscar el contenedor, luego ir retirando cada uno de los contenedores que estan por encima del buscado, cada uno de los que se van retirando debe ir colocandose en alguno de los grupos que tenga capacidad
    Your script
    public boolean RetirarContenedor( String contenedor )
    {
        int g;
        Object aux;
    
        g=BuscarContenedor(contenedor);
        if(g==-1)
            return false;
    
        do{
            aux=grupos[g].Pop();
            if(!aux.equals(contenedor))
                {
                int gc;
                gc=BuscarGrupoCapacidad(g);
                grupos[gc].Push(aux);
            }
        }while(!aux.equals(contenedor));
        t--;
        return true;
    
    
    
    
    }

      Paso6: Ahora se procede a la codificacion de los metodos de la clase Almacen.BuscarContenedor. Se debe buscar dentro de la estructura de contenedores.
    Your script
    public int BuscarContenedor( String contenedor )
    {
        for(int i=0;i<m;i++)
            if(grupos[i].Buscar(contenedor)>=0)
                return i;
        return -1;
    }

      paso7: Ahora se procede a la codificacion de los metodos de la clase Almacen.CapacidadAlmacen y BuscarGrupoConCapacidad.
    Your script
    public int CapacidadAlmacen()
    {
        return (m-1)*n+1;
    }
    private int BuscarGrupoCapacidad(int ge)
    {
        for(int i=0;i<m;i++)
            if(i!=ge&& CantidadContenedores(i)<n)
                return i;
        return -1;
    }

      paso7: Ahora se procede a la codificacion de los metodos de la clase Almacen.ObtenerContenedor.
    Your script
    public Object ObtenerContenedor(int g,int p)
    {
        return grupos[g].Obtener(p);
    }

  • Codificacion del programa principal
    • Bien, Hasta ahora hemos preparado el programa para su correcto desenvolvimiento. Solo queda implementar el programa principal, que contendra un menu con 3 opciones: Retirar Contenedor, Guardar Contenedor, Obtener Contenedor.
    Your script
    package almacen;
    import java.io.*;
    
    public class Main {
    
        static  BufferedReader br;
    
       public static int ReadInt() throws IOException
       {
           return Integer.valueOf(br.readLine()).intValue();
       }
    
       public static float ReadFloat() throws IOException
       {
           return Float.valueOf(br.readLine()).floatValue();
       }
       public static double ReadDouble()throws IOException
       {
           return Double.valueOf(br.readLine()).doubleValue();
       }
       public static long ReadLong() throws IOException
       {
           return Long.valueOf(br.readLine()).longValue();
    
       }
    
       public static String ReadString()throws IOException
       {
           return br.readLine();
       }
    
        
        public static void main(String[] args) throws IOException{
    
    
    
            br=new BufferedReader(new InputStreamReader(System.in));
            AlmacenP a;
            a=new AlmacenP();
    
            String contenedor;
            int opc;
            String o;
            String aux;
            char Resp;
       
             int grupo;
             int posicion;
    
    
            do{
                System.out.println("**********Menu***********/n/n");
               System.out.println("1.- Retirar contenedor:");
               System.out.println("2.- Guardar Contenedor:");
               System.out.println("3.- Obtener Contenedor: ");
               System.out.println("\nIngrese Opcion:  ");
               o=br.readLine();
               opc = Integer.valueOf(o).intValue();
    
    
               switch(opc)
               {
                   case 1: System.out.println("\t/********Retirar Contenedor*******/:");
                           System.out.println("Ingrese contenedor");
                           contenedor=ReadString();
                           a.RetirarContenedor(contenedor);
                           System.out.println("\n"+ contenedor+" Retirado xD");
                           break;
    
                    case 2: System.out.println("\t/********Guardar Contenedor*******/:");
                            System.out.println("Ingrese Contenedor");
                            contenedor=ReadString();
                            a.GuardarContenedor(contenedor);
                            System.out.println("\n"+contenedor+" Guardado");
                            break;
    
    
                   case 3: System.out.println("\t/********Obtener Contenedor*******/:");
                           System.out.println("Ingrese grupo");
                           grupo=ReadInt();
                           System.out.println("Ingrese Posicion");
                           posicion=ReadInt();
                           System.out.println("Contenedor");
                           a.ObtenerContenedor(grupo, posicion);
    
                           break;
               }
    
    
    
            System.out.print("\n\n Desea hacer otra operacion ?? S / N ");
                              aux = br.readLine();
                              Resp = aux.charAt(0);
            }while (Resp == 'S' || Resp == 's');
           
        }
    
    
    }
    

    martes, 13 de marzo de 2012

    Carrito De Compras con Cookies


    Introducción

    Este es un tutorial de una aplicacion web (Carrito de compras) usando cookies, en java y usando la plataforma Netbeans IDE 7.0.1. Estos cookies actuan como pequeños trozos de informacion textual que el servidor puede enviar al cliente y que este no modifica y reenvia al servidor cuando vuelve a visitar el mismo sitio.

    Ahora vamos al Desarrollo xD!

    1.- Creacion del formulario en html

    Primero haremos lo mas facil!!. El diseño en html para seleccionar los libros. Para hacer esto le damos click derecho en WebPages, New y seleccionamos HTML.

    1.1.-Codigo del index.html

    El Diseño del index.html, quedara asi.

    El codigo del index.html es el siguiente.

    <!--
    To change this template, choose Tools | Templates
    and open the template in the editor.
    -->
    <!DOCTYPE html>

    <html>
        <head>
            <title></title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        </head>
        <body>
            
            <h1 align ="center">Seleccione el Libro de su preferencia </h1><br>
            <form name="form" action="Libros" method="POST">
              <h3 align ="center">Seleccione el libro de preferencia:  <select name="listar">
              
              <option>Java</option>          
              <option>C</option>
              <option>C++</option>
              <option>VB</option>
              <option>RubY</option>
              <option>Phyton</option>          
              </select>  <input type="submit" value="enviar" /> </h3>
            </form>
            
        </body>
    </html>

    2.-Creacion del Servlet Libros

    Creamos primero el paquete compra, dentro de este paquete estara el Servlet Libros

    Ahora Creamos el Servlet Libros

    2.1.-Codigo del Servlet Libros

    Your script
    package compra;
    import java.io.*;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.util.*;
    import javax.servlet.http.Cookie;
    
    /**
     *
     * @author JulioCsaR
     */
    
    public class Libros extends HttpServlet {
        
        private final Map libros = new HashMap();
        public void init() {
            libros.put("Java",  "67.00");
            libros.put("C",     "56.00");
            libros.put("C++",   "63.00");
            libros.put("VB",    "52.00");
            libros.put("Ruby",  "48.50");
            libros.put("Phyton","46.00");
        }  
        
    
               
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
          
            String lenguaje=request.getParameter("listar");
            String precio=libros.get(lenguaje).toString();
            //Creamos el Cookie, este recibe dos parametros: Nombre y valor 
            Cookie cookie=new Cookie(lenguaje,precio);
            //Añadir el cookie a la respuesta
            response.addCookie(cookie);        
            response.setContentType("text/html");
            PrintWriter out=response.getWriter();
            out.println( "<?xml version = \"1.0\"?>" );
            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD" + "XHTML 1.0 Strict//EN\" \"http://www.w3.org" + "/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
            out.println("<html xmlns = \"http://www.w3.org/1999/xhtml\">");
            out.println( "<head><title>LIBRERIA ATLANTIDA</title></head>" );
            out.println( "<body>" );
            out.println( "<h1 >Bienvenidos Libreria Atlantida! Usted selecciono " +lenguaje + "</h1>" );
            out.println("<p><a href=\"index.html\">\"Clickee aqui para seguir comprando</a></p>");
            out.println("<p><a href=\"Libros\">\"Clickee aqui para ver el resumen de su compra</a>");
            out.println( "</body>" );
            out.println( "</html>" );
            
            out.close();
            
            
        }
        
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
          
            
            Cookie cookies[] = request.getCookies();
            Double sum = 0.0;
            response.setContentType( "text/html" );
            PrintWriter out = response.getWriter();
            out.println( "<?xml version = \"1.0\"?>" );
            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD" +"XHTML 1.0 Strict//EN\" \"http://www.w3.org" + "/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
            out.println("<html xmlns = \"http://www.w3.org/1999/xhtml\">");
            out.println( "<head>");
            out.println( "<title>CARRITO DE COMPRAS</title>" );
            out.println( "</head>" );
            out.println( "<body>" );
            
            
                      if ( cookies != null && cookies.length != 0 )
                      {  out.println( "<h1 align=center>Compra Total</h1>" );
                         out.println( "<p>" );
                         out.println("<table width=298 border=1 cellpadding=6 align=center>");
                         out.println("<tr>");
                         out.println("<td width=208 align=center><strong><b>Titulo del Libro</b></strong></td>");
                         out.println("<td width=74 align=center><strong><b>Precio</b></strong></td>");
                         out.println("</tr>");
                             for ( int i = 0; i < cookies.length; i++ )
                             {   out.println("<tr>");
                                 out.println("<td>" + cookies[i].getName() + " Como programar.: </td>");
                                 out.println("<td>"+ cookies[i].getValue() + "</td>");
                                 out.println("</tr>");
                                 sum = sum + Double.parseDouble(cookies[i].getValue());
                             }
                         out.println("</table>");
                         out.println("<br>");                     
                         out.println("<h2 align=center><b>Monto Total S/.:  "+ sum+ "</b></h2>");
                      } 
                      else
                      {  out.println("<H1>No hay recomendaciones </H1>");
                         out.println("<p>Ud no selecciono ningun Libro</p>");
                      }
            out.println("</body>");
            out.println("</html>");
            out.close();
        }
    
        /** 
         * Returns a short description of the servlet.
         * @return a String containing servlet description
         */
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
    }
    

    El Resultado Seria


     
    Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Web Hosting Bluehost