martes, 26 de enero de 2016

VLSM



Bibliografia:

Ayala,(2008).VLSM (Mascaras de subred de longitud variable).Recuperado de:http://southworks.com/blog/2008/09/02/vlsm-mascaras-de-subred-de-longitud-variable/


Ballesteros,(2011).VLSM. Recuperado de: https://telematicaupc.wordpress.com/2011/03/07/vlsm/

Mikrotic.(2015).Tutorial VLSM. Recuperado de: http://www.mikrotikxperts.com/index.php/informacion/conocimientos-basicos/16-tutorial-vlsm

miércoles, 20 de enero de 2016

Tutorial Java Base de datos.

Hola amigos en esta ocasión vamos a mostrar desde la creación de una base de datos y sus tablas mediante la realización de un ejercicio en Netbeans que realiza las cuatro funciones básicas como son: guardar, Editar, Actualizar y Eliminar datos y a su ves genere los repostes.

1. Crear la base de datos correspondiente al proyecto (Matriculas).
2. Creamos las tablas necesarias con sus atributos correspondientes. (Tb_Estudiante).

3. Creamos un proyecto en Netbeans con su respectivo nombre (Sistema_Matriculas) y sus paquetes correspondientes (Modelo,Vista,Controlador).
4. Creamos la clase que nos permite conectar con la base de datos (Cls_Conexion) en el paquete controlador.

Tal y como se lo muestra en el siguiente código:
Antes de realizarla debemos agregar la librería My SQL Driver

public class Cls_Conexion {
    Connection miconexion=null;
   
    public Connection conexion() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            miconexion=DriverManager.getConnection("jdbc:mysql://localhost/Matriculas","root","root");}
       
        catch (Exception e) {
            System.out.printf(e.getMessage());}
        return miconexion;
    }  
}

5.- Creamos la clase Estudiante con su constructor y métodos get y set en este caso hemos puesto 7 atributos.



public class Cls_Estudiante {
    public String Nombre,Apellido,Cedula,Telefono,Edad,Sexo,Direccion;
   
    public Cls_Estudiante (){}

    public Cls_Estudiante( String Nombre, String Apellido, String Cedula, String Telefono, String Edad, String Sexo, String Direccion) {

        this.Nombre = Nombre;
        this.Apellido = Apellido;
        this.Cedula = Cedula;
        this.Telefono = Telefono;
        this.Edad = Edad;
        this.Sexo = Sexo;
        this.Direccion = Direccion;
    }

    public String getNombre() {
        return Nombre;
    }

    public void setNombre(String Nombre) {
        this.Nombre = Nombre;
    }

    public String getApellido() {
        return Apellido;
    }

    public void setApellido(String Apellido) {
        this.Apellido = Apellido;
    }

    public String getCedula() {
        return Cedula;
    }

    public void setCedula(String Cedula) {
        this.Cedula = Cedula;
    }

    public String getTelefono() {
        return Telefono;
    }

    public void setTelefono(String Telefono) {
        this.Telefono = Telefono;
    }

    public String getEdad() {
        return Edad;
    }

    public void setEdad(String Edad) {
        this.Edad = Edad;
    }

    public String getSexo() {
        return Sexo;
    }

    public void setSexo(String Sexo) {
        this.Sexo = Sexo;
    }

    public String getDireccion() {
        return Direccion;
    }

    public void setDireccion(String Direccion) {
        this.Direccion = Direccion;
    }   
}

6. Creamos el formulario Frm_Estudiantes donde colocamos 8 labels 8 cajas de texto 8 botones, y además una tabla para mostrar los datos.


public class Frm_Estudiantes extends javax.swing.JFrame {

    /**
     * Creates new form Frm_Estudiantes
     */
    public Frm_Estudiantes() {
        initComponents();
        mostrardatoscedula("");
    }

    Método mostrar datos

    public void MOSTRARDATOS(String valor){
        DefaultTableModel modelo = new DefaultTableModel();
       
        modelo.addColumn("ID");
        modelo.addColumn("Nombre");
        modelo.addColumn("Apellido");
        modelo.addColumn("Cedula");
        modelo.addColumn("Telefono");
        modelo.addColumn("Edad");
        modelo.addColumn("Sexo");
        modelo.addColumn("Dirección");
       
        Tabla_Datos.setModel(modelo);
        String sql ="";
        if (valor.equals("")){
            sql="Select * from Tb_Estudiante";}
        else{
            sql="Select * from Tb_Estudiante Where cedula='"+valor+"'";}

        String []datos =new String [8];
        try{
            Statement st=(Statement) cn.createStatement();
            ResultSet rs= st.executeQuery(sql);

            while(rs.next()){
                datos[0]=rs.getString(1);
                datos[1]=rs.getString(2);
                datos[2]=rs.getString(3);
                datos[3]=rs.getString(4);
                datos[4]=rs.getString(5);
                datos[5]=rs.getString(6);
                datos[6]=rs.getString(7);
                datos[7]=rs.getString(8);
                modelo.addRow(datos);}       
            Tabla_Datos.setModel(modelo);}
        catch(Exception e){}
    }

7. Código correspondiente al botón guardar

int op = JOptionPane.showConfirmDialog(null,"Deseas guardar los datos");
        if(op== JOptionPane.YES_OPTION){
           
            try {
                PreparedStatement pst =(PreparedStatement) cn.prepareStatement("INSERT INTO Tb_Estudiante(Nombre,Apellido,Cedula,Telefono,Edad,Sexo,Direccion) Values(?,?,?,?,?,?,?)");
                
                String nombre = txtNombre.getText();
                String apellido = txtApellido.getText();
                String cedula = txtCedula.getText();
                String telefono = txtTelefono.getText();
                String edad =cmbEdad.getSelectedItem().toString();
                String sexo= txtSexo.getText();
                String direccion = txtDireccion.getText();
               
                Cls_Estudiante e = new Cls_Estudiante(nombre, apellido, cedula, telefono, edad, sexo, direccion);
               
               
                pst.setString(1, e.getNombre());
                pst.setString(2, e.getApellido());
                pst.setString(3, e.getCedula());
                pst.setString(4, e.getTelefono());
                pst.setString(5, e.getEdad());
                pst.setString(6, e.getSexo());
                pst.setString(7, e.getDireccion());
               
                pst.executeUpdate();
                mostrardatoscedula("");
               
               
            } catch (Exception e) {
            }
           
                     
        }else{
            JOptionPane.showMessageDialog(null,"No se guardaron los datos");
            btnGuardar.setText("Interrumpido");
        }

8. Código correspondiente al botón Editar.

private void EditarActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
        int fila =Tabla_Datos.getSelectedRow();
        if(fila>=0){
            txtID.setText((String) Tabla_Datos.getValueAt(fila, 0).toString());
            txtNombre.setText((String) Tabla_Datos.getValueAt(fila, 1).toString());
            txtApellido.setText((String) Tabla_Datos.getValueAt(fila, 2).toString());
            txtCedula.setText((String) Tabla_Datos.getValueAt(fila, 3).toString());
            txtTelefono.setText((String) Tabla_Datos.getValueAt(fila, 4).toString());
            cmbEdad.setSelectedItem((String) Tabla_Datos.getValueAt(fila, 5).toString());
            cmbSexo.setSelectedItem((String) Tabla_Datos.getValueAt(fila, 6).toString());
            txtDireccion.setText((String) Tabla_Datos.getValueAt(fila, 7).toString());
        }
        else{ JOptionPane.showMessageDialog(null,"No selecciono ningun dato");
        }
    }                                     

9. Código correspondiente al botón Actualizar.


try {
            PreparedStatement pst = (PreparedStatement) cn.prepareStatement(""
                    + "UPDATE Tb_Estudiante SET Nombre='" + txtNombre.getText() +
                    "',Apellido='" + txtApellido.getText() +
                    "',Cedula='" + txtCedula.getText()+
                    "',Telefono='" + txtTelefono.getText() +
                    "',Edad='" + cmbEdad.getSelectedItem()+
                    "',Sexo='" + cmbSexo.getSelectedItem()+
                    "',Direccion='" + txtDireccion.getText()+
                    "' Where id='" + txtID.getText()+"'");
            pst.executeUpdate();
            mostrardatoscedula("");                                  
        } catch (SQLException ex) {}

       
10. Código correspondiente al botón Eliminar

try {
            int op = JOptionPane.showConfirmDialog(null,"Desea eliminar este dato");
                if(op==JOptionPane.YES_OPTION){
                    int fila =Tabla_Datos.getSelectedRow();
                    String id = Tabla_Datos.getValueAt(fila, 0).toString();
                    PreparedStatement pst = (PreparedStatement) cn.prepareStatement("DELETE FROM Tb_Estudiante where ID = '"+id+"'");
                    pst.executeUpdate();
                    mostrardatoscedula(""); }
                else{
                JOptionPane.showMessageDialog(null,"El dato no se ha borrado");}  
        } catch (SQLException ex) {

        }

11. Creamos un popmenu dentro del navegador


12. Agregamos dentro del popmenu dos menuItems, en este caso se llamarán Editar y Eliminar

Algo importante luego de esto debemos agregar el popmenu a nuestra tabla.

12. Por último vamos a generar los reportes para poder presentar nuestros datos para lo cual utilizamos el siguiente código

Código Reporte general

try {
            JasperReport reporte = JasperCompileManager.compileReport("Reporte_General");
            JasperPrint imprime =  JasperFillManager.fillReport(reporte, null,this.cn);
            JasperViewer.viewReport(imprime);
                      
        } catch (Exception e) {
            System.out.printf("No se ejecuta");
        }
Código Reporte Específico
Según el parámetro Cedula

String parametrocedula = txtCedula.getText();
        Map parametro= new HashMap();
        parametro.put("Cedula",parametrocedula);
        try {
            JasperReport reporte =JasperCompileManager.compileReport("Reporte_Especifico.jrxml");
            JasperPrint imprime = JasperFillManager.fillReport(reporte,parametro,this.cn);
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2x2GqJtMcfOK24UKxSdLVdcxXJr49nDZOyOpWZ15gYVu5hdXnNLuZFN-666SzCd4TnQLuqg0pjarIb8pvWM0HUUx4gtx0EyuWX2Ch488gYdlFuchkey58YpIpV6ou7Jby5l9jkDF_bR2e/s400/3.jpg
            JasperViewer.viewReport(imprime);
        } catch (Exception e) {

            System.out.printf("No se ejecuta");     }




lunes, 18 de enero de 2016

Enrutamiento Estatico (3 routers)

En esta ocasión les traigo un ejercicio de enrutamiento estático utilizando 3 routers.
Como podemos observar en la imagen tenemos toda la red realizada en Packettracer



Antes de nada veamos los datos :


Lan1: 172.168.0.0 /18
Lan2: 172.168.64.0 /18
Lan3: 172.168.128.0 /18

Wan1: 200.16.5.0 /30
Wan2: 200.16.5.4 /30
Wan3: 200.16.5.8 /30

Entonces empecemos directamente con las tablas de enrutamiento

Tabla enrutamiento Router 1 :



Tabla enrutamiento Router 2 :




Tabla enrutamiento Router 3 :





Cabe mencionar que las figuras anteriores de tablas de enrutamiento tienen todos los caminos posibles para llegar a la exitosa comunicación de paquetes entre ordenadores.

jueves, 14 de enero de 2016

Crean app que resuelve problemas matemáticos en tres segundos



Estudiantes de la Universidad Tecnológica de Panamá (UTO), crearon una aplicación que permite desarrollar en tres segundos problemas matemáticos de álgebra, trigonometría, ecuaciones y derivadas.
“One Second”, es el nombre de esta nueva herramienta que tiene como principal objetivo convertirse en el tutor de aprendizaje de estudiantes a los que se les hace difícil aprender de forma rápida los procesos matemáticos.
La aplicación es gratuita y puede ser descargada para dispositivos móviles, además funciona con una ilustración gráfica que permite al usuario entender cómo se hizo el procedimiento.
Esta app cuenta con más de 10.000 usuarios diarios, entre otras cosas, por ser la primera aplicación web de este tipo desarrollada en América Latina.
“Con One Second, nuestro objetivo es hacer que a más gente le guste las matemáticas. Tan simple como eso. Nosotros no pretendemos hacer que los estudiantes sean menos aplicados, sino más bien brindarles una herramienta que les ayude en el estudio y aplicación de las matemáticas a la vida”, explicaron sus creadores.
La aplicación tiene un algoritmo que utiliza una búsqueda heurística —lo mismo que usa Waze para calcular la ruta más corta entre dos puntos— que descifra el camino más breve para solucionar un problema. En un algoritmo, los dos panameños concentraron las respuestas a los problemas matemáticos que uno ve desde la escuela hasta la universidad.
De allí que surjan planteamientos en contra, como el clásico “¿puede una app como esta hacer más ‘vagos’ a los estudiantes?” El equipo tiene una respuesta clara.
“La educación tiene que evolucionar acá en Panamá”, dice Girón, ingeniero de 23 años. Cuando salieron las calculadoras —imagina— hubo gente que se opuso y dijo “No, eso no puede ser ¡la gente tiene que sumar dos más dos!”, y está seguro que con OneSecondSolver sucede lo mismo. Pero explica que ellos ponen la parte abstracta de la matemática en la app —esto incluye todo el proceso del problema— para que la gente se preocupe en entender lo que esa ecuación hace en la vida real. Una oportunidad para darle un sentido vivo a la matemática, algo que los jóvenes consideran que falta en la docencia actual.
“Este tipo de cosas es lo que buscamos, si se cambia una ‘x’ en una ecuación, que el estudiante sea capaz de ver este cambio y se concentre en cosas más complejas, que tengan que ver con la realidad”, añade Girón.
La aplicación funcionaba anteriormente bajo el nombre de MateLab y tenía 400 usuarios activos al mes. Pero fue relanzada el pasado 4 de enero como OneSecondSolver y en solo un par de días la app ha resuelto alrededor de 2 mil 200 problemas, con más de mil 700 usuarios utilizándola y 200 usuarios registrados por día. La página recibe un promedio de 5 mil visitas diarias. Su viralidad no es ninguna incógnita.
Felipe Chen, también ingeniero de 23 años, comenta que la aplicación lleva el nombre porque tienen como objetivo que esta pueda resolver cualquier problema en no más de un segundo, sin importar su complejidad.

Resumen:
Esta noticia trata acerca de una aplicación la cual ha sido creada para resolver problemas matemáticos y de álgebra, 2 jóvenes panameños han dado origen a la aplicación que actualmente ha tenido una gran acogida con muchas descargas en los últimos días, puesto que hasta ahora a resuelto una gran cantidad de problemas.

Enlace:
http://laestrella.com.pa/vida-de-hoy/tecnologia/panamenos-crean-resuelve-problemas-matematicos/23914771

Bibliografia:
Molina.D.(2015). Crean app que resuelve problemas matemáticos en tres segundos.Recuperado de:http://laestrella.com.pa/vida-de-hoy/tecnologia/panamenos-crean-resuelve-problemas-matematicos/23914771



sábado, 9 de enero de 2016

Segundo avance Proyecto Scratch

A su disposición les dejo el segundo avance de mi proyecto en Scratch empleando una serie de objetos los cuales son dinámicos, se manejo diferentes tipos de condicionales y sobretodo se ha tratado en lo mas posible de ser creativo al momento de desarrollar la multimedia.

Cabe decir que la aplicación aun no tiene el objetivo  que deseamos puesto a que solamente es un avance, pero la idea que se tiene se la ira plasmando y puliendo poco a poco, de tal manera que de como resultado la culminación exitosa de nuestra multimedia.
Pero hasta el momento relato lo que únicamente realiza :

Dar bienvenida al usuario 
Preguntar su nombre 
Presentar diferentes Botones los cuales nos dirigían hacia otras interfaces ya sea la modalidad de empezar y la modalidad de repaso.