Programación

La programación informática o programación algorítmica, acortada como programación, es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales.

Algoritmo

Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programación concreto) uno o más algoritmos.

Compilación

El programa escrito en un lenguaje de programación de alto nivel (fácilmente comprensible por el programador) es llamado programa fuente y no se puede ejecutar directamente en una computadora.

Desarrollador

Para conseguirlo se hace uso de tecnologías de software del lado del servidor y del cliente que involucran una combinación de procesos de base de datos con el uso de un navegador web a fin de realizar determinadas tareas o mostrar información.

Diseño Web

Actividad que consiste en la planificación, diseño, implementación y mantenimiento de sitios web. No es simplemente la implementación del diseño convencional ya que se abarcan diferentes aspectos como el diseño gráfico web; diseño de interfaz y experiencia de usuario

lunes, 22 de agosto de 2016

Google tendrá nuevo sistema operativo y su nombre sera Fuchsia

Si bien Android es el líder absoluto en cuanto a móviles y Chrome OS tiene una importante cuota de mercado en Estados Unidos, al parecer Google no estaría del todo satisfecho con lo que pueden ofrecer ambos sistemas operativos.
¿Por qué lo decimos? Pues porque, según información que podemos obtener del propio GitHub de la compañía, Google ya estaría trabajando en un nuevo sistema operativo, el cual tendría el nombre de Fuchsia.
Fuchsia
Fuchsia en GitHub


La información ha sido rebotada en las últimas horas por gran cantidad de medios por su vital importancia, existiendo la posibilidad de que este proyecto Fuchsia sea la confirmación de aquellos rumores que decían que Google estaba trabajando en un sistema operativo que unificara a Android y Chrome OS en una sola plataforma adaptable dependiendo del dispositivo en el que esté corriendo en ese momento.
Lo interesante del asunto es que Fuchsia, hasta donde sabemos, no usa kernel Linux como usarían actualmente Android y Chrome OS, sino que estaría usando Magenta, un “microkernel de tamaño mediano” basado a su vez en LittleKernel.
fuchsia
¿Llegará a sustituirlos?

Sin ponernos innecesariamente técnicos, les podemos decir que Magenta tendría varias ventajas sobre el kernel Linux, lo cual podría significar una considerable mejora tanto en featuresañadidos como en rendimiento.
Ahora, tampoco estamos 100% seguros de que Fuchsia venga a tomar el lugar de Android y Chrome OS, pudiendo tratarse también de un nuevo OS para un nuevo modelo de negocio. Como el IoT por ejemplo.
Por ahora no se sabe más del proyecto Fuchsia, pero estamos seguros de que más adelante tendremos una noción mucho más clara de lo que se viene con el nuevo sistema operativo de Google.

Fuente: GitHub

Poner la base de datos conectarse en ServletContextListener


ServletContextListener es útil para informar sobre el contexto Initilazation y la destrucción. En un sistema web de administración de contenido típico, normalmente hay una base de datos detrás. El ejemplo siguiente muestra cómo conectar base de datos MySQL durante la fase de inicialización de contexto. 

Herramientas y paquetes: eclipse y el conector de MySQL JDBC.
1. crear un proyecto web dinámico TestServlet, importar el archivo .jar de conector para el proyecto.
Será el archivo jar en el directorio lib. Crear una base de datos "testdb" y una tabla "user". Poner algunos registros dentro para probar la conexión más adelante.
2. poner un elemento de oyente en el web.xml Descriptor de despliegue y también poner la configuración de la base de datos en él.
<?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>TestServlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <listener>
    <listener-class>com.programcreek.testservletlistener.myServletListener</listener-class>
  </listener>
  <context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql://localhost/</param-value>
  </context-param>
  <context-param>
   <param-name>database</param-name>
   <param-value>testdb</param-value>
  </context-param>
  <context-param>
   <param-name>user_name</param-name>
   <param-value>xiaoran</param-value>
  </context-param>
  <context-param>
   <param-name>password</param-name>
   <param-value>xiaoran</param-value>
  </context-param>
  <servlet>
    <description></description>
    <display-name>testClass</display-name>
    <servlet-name>testClass</servlet-name>
    <servlet-class>edu.uams.testservlet.testClass</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testClass</servlet-name>
    <url-pattern>/testClass</url-pattern>
  </servlet-mapping>
 
</web-app>
3. Cree una clase  "myServletListener"
package com.developer.testservletlistener; 
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
 
/**
 * Application Lifecycle Listener implementation class myServletListener
 *
 */
public class myServletListener implements ServletContextListener {
 
 /**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent event) {
 
     ServletContext sc = event.getServletContext();
 
     String url = sc.getInitParameter("url");
     String user_name = sc.getInitParameter("user_name");
     String password = sc.getInitParameter("password");
     String database = sc.getInitParameter("database");
     Database db = new Database(url + database, user_name, password);
     //System.out.println("estoy en el escuchador");
     sc.setAttribute("db", db);
 
    }
 
 /**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
    }
 
}
4. Escriba la clase de base de datos que es para conectar la base de datos y facilitando las operaciones de base de datos.
package com.developer.testservletlistener; 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class Database {
 
 private Connection conn = null;
 
 public Database(String url, String user_name, String password) {
  try {
   Class.forName("com.mysql.jdbc.Driver");
 
   this.conn = DriverManager.getConnection(url, user_name, password);
 
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 public Connection getConnection() {
  return this.conn;
 }
 
 public ResultSet runSql(String sql) throws SQLException {
  Statement sta = conn.createStatement();
  return sta.executeQuery(sql);
 }
}
5. Escriba la clase de Servlet de prueba.
package com.developer.testservletlistener;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
//import javax.servlet.ServletContext;
 
/**
 * Servlet implementation class testClass
 */
public class testClass extends HttpServlet {
 private static final long serialVersionUID = 1L;
 
 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
  *      response)
  */
 protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
 
  response.setContentType("text/html");
 
  Database db = (Database) getServletContext().getAttribute("db");
  PrintWriter out = response.getWriter();
 
  String sql = "select * from user";
  ResultSet rs;
  try {
   rs = db.runSql(sql);
 
   while(rs.next()){
    out.println(rs.getString("user_name"));
   }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
 }
 
 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
  *      response)
  */
 protected void doPost(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
 }
 
}
6. Generar el proyecto y desplegar en Tomcat 6,7,8.
Genere el proyecto y copiar los archivos al directorio de tomcat "webapps".

Prototipo de clase de base de datos de Java

¿Podemos hacer una clase de conexión de base de datos que nos permite cambiar sólo el archivo de configuración y luego utilice la base de datos? Hice el prototipo de esta clase que es muy sencillo. Pero la idea es buena, siempre uso un archivo jar muy simple para obtener la base de datos configuración que luego puede hacer operaciones de consulta SQL.
package com.developer.db;
import java.sql.*;
 
public class DB {
 
 private Connection conn = null;
 
 public DB(String url, String user_name, String password) {
  try {
   Class.forName("com.mysql.jdbc.Driver");
   conn = DriverManager.getConnection(url, user_name, password);
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 public ResultSet runSql(String sql) throws SQLException {
  Statement sta = conn.createStatement();
  return sta.executeQuery(sql);
 }
 
 @Override
 protected void finalize() throws Throwable {
  if (conn != null &amp;&amp; !conn.isClosed()) {
   conn.close();
  }
 }
 
}
Aquí está el código para llamar la clase DB:
package com.developer.test; 
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
 
import com.developer.db.DB;
 
public class Main {
 
 public static void main(String []args){
 
  // leer url, username, password de archivo de configuración
  Properties configFile = new Properties();
  String url = "";
  String user_name = "";
  String password = "";
  String database = "";
  try {
   configFile.load(Main.class.getClassLoader().getResourceAsStream("config.properties"));
   url = configFile.getProperty("url");
   database = configFile.getProperty("database");
   user_name = configFile.getProperty("user_name");
   password = configFile.getProperty("password");
  } catch (IOException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
 
  //instancia objecto DB
  DB db = new DB(url + database, user_name, password);
  try {
   ResultSet rs = db.runSql("select * from user");
   while(rs.next()){
    System.out.println(rs.getString("user_name"));
   }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}
Este es el prototipo de esta idea, una clase de conexión de base de datos completa debe ser capaz de: 

1) conectar base de datos como SQLServer, Accsss, etc. 

2) tiene la función como runDB(), que puede Agregar, actualizar, eliminar las operaciones mediante una matriz. Tome la actualización por ejemplo, runDB (actualización, datos), en que los datos están una matriz de asignación. 

3) tiene la función de registro con lo que yo he mostró en el post anterior.

Código Java para conectar base de datos Mysql y usando el tipo Arraylist

Para llegar a utilizar JDBC y ArrayList hacer en el siguiente ejemplo para ayudar a mí mismo. Los pasos es la siguiente:

  • Crear una base de datos "travel" con una tabla llamada a "person"
  • Definir una clase denominada a "Person" para el mapeo de columnas de la tabla persona.
  • Conectar base de datos Mysql
  • Seleccione algunos registros de la base de datos de "travel"
  • Hacer que los objetos basados en cada registro extraído de "person" la tabla.
  • Usando ArrayList de objetos para almacenar los objetos de la persona.
  • Imprimir los datos en ArrayList


Person.java Clase de personal
 
package javaapplication1;
 
/**
 *
 * @author developer
 */
public class Person {
    private String name;
    private String jobtitle;
    private int frequentflyer;
 
    public int getFrequentflyer() {
        return frequentflyer;
    }
 
    public void setFrequentflyer(int frequentflyer) {
        this.frequentflyer = frequentflyer;
    }
 
    public String getJobtitle() {
        return jobtitle;
    }
 
    public void setJobtitle(String jobtitle) {
        this.jobtitle = jobtitle;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}
Main.java // Clase Principal de Test
package javaapplication1;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javaapplication1.Person;
 
public class Main {
    public static void main(String[] args) throws SQLException {
        ArrayList<Person> personlist = new ArrayList<Person>();
        //List<Person> personlist = new List<Person>();
        try {
            // Step 1: Cargar driver jdbc. jdbc:mysql://localhost:3306/travel
            Class.forName("com.mysql.jdbc.Driver");
 
            // Step 2: Establecer conexión
            String url = "jdbc:mysql://localhost:3306/travel";
            Connection conn = DriverManager.getConnection(url, "root", "admin");
            Statement st = conn.createStatement();
            ResultSet srs = st.executeQuery("SELECT * FROM person");
            while (srs.next()) {
                Person person = new Person();
                person.setName(srs.getString("name"));
                person.setJobtitle(srs.getString("jobtitle"));
                person.setFrequentflyer(srs.getInt("frequentflyer"));
                personlist.add(person);
            }
 
            System.out.println(personlist.size());
            System.out.println(personlist.get(1).getName());
            System.out.println(personlist.get(2).getName());
            System.out.println(personlist.get(3).getName());
            System.out.println(personlist.get(4));
 
        //System.out.println(namelist.);
        } catch (Exception e) {
            System.err.println("Got an exception! "); //Encontré una excepción e imprime
            System.err.println(e.getMessage());
        }
    }
}