sábado, 13 de diciembre de 2014

Komodo Edit Mucho Más Que Un Editor

0 comentarios
Hace unas semanas estaba buscando un Editor de Código Fuente que fuera multi-lenguaje al estilo del muy conocido NotePad++ pero más actualizado en cuanto a su diseño y tecnología.


Después de descargar y probar algunos conseguí la herramienta que estaba buscando, Komodo Edit, Es un editor multiplataforma para programadores que tiene mucha similitud a Notepad++, ya que nos permite editar códigos en diversos lenguajes, pero además nos permite Gestionar Proyectos, con esto último vemos que vas más allá de los editores convencionales.


De verdad lo recomiendo, y más si lo que andas buscando es una herramienta para editar código fuente orientado a la web, es muy interesante y al ser multiplataforma podemos utilizarlos tanto en Windows como en Linux y Mac, esto último es una característica maravillosa, ya no tendremos que tener un editor para cada sistema operativo.
  • Resaltado y coloreado de código fuente, con soporte para casi todos los lenguajes que podemos utilizar al construir una página web, como PHP, JavaScript, CSS, HTML, Python, Ruby, Perl, etc.
  • Multi-documento, que permite abrir y editar varios archivos al mismo tiempo.
  • Auto-completado de código con los típicos menús contextuales, que aparecen a medida que vamos escribiendo los programas.
  • Revisión de sintaxis en vivo, que nos proporciona información sobre los errores que podemos realizar en la sintaxis de los lenguajes de programación soportados, a medida que vamos realizando los scripts.
  • Vista previa de HTML, para poder ver las páginas web que estamos realizando dentro del propio editor.
  • Gestión de proyectos, con la posibilidad de navegar por las carpetas de nuestro sistema, en lo que llaman "live folders".
  • Posibilidad de conexión con servidores remotos para editar código directamente sobre el archivo publicado en un servidor, por medio de FTPSFTPSSH.
  • Posibilidad de extender el programa, con diversos complementos o add-ons creados por terceras personas, como ocurre con el navegador Firefox y sus extensiones.
Es un excelente Editor, te lo recomiendo.

No olvides Compartir y Dejar tus comentarios acerca de este Post.

domingo, 24 de agosto de 2014

Llenar un Datatable desde la base de datos

0 comentarios
Después de haber aprendido a establecer la conexión a diferentes motores de base de datos mediante JDBC, el siguiente paso es realizar las consultas y mostrarlas. Para el ejemplo hago uso de un JTable para mostrar los datos provenientes de las consultas y para efectos didácticos he preferido usar PostgreSQL, aunque usted puede hacer uso del motor de base de datos que prefiera como cualquiera de las clases implementadas en los tópicos:  Establecer Conexión a Base de Datos con JDBC MYSQL y Establecer Conexión a Base de Datos con JDBC PostgreSQL, que deberán ser incluidas en su proyecto, lo único que debería hacer es cambiar las instancias a las clases correspondientes como se muestra en las líneas siguientes, todo lo demás se mantiene. Observar que para este ejemplo he construido un JTable con solo 3 columnas, por ello limitarse a una consulta que retorne 3 columnas o modificar el código respectivo para ampliarlo:


Conexión a PostgreSQL:

...
        Ejm3_ConectarPostgreSQL cnndb = new Ejm3_ConectarPostgreSQL();
        CachedRowSet crs = cnndb.Function("SELECT deptno, dname, loc FROM dept")
...
Conexión a MySQL:

...
        Ejm2_ConectarMySQL cnndb = new Ejm2_ConectarMySQL();
        CachedRowSet crs = cnndb.Function("SELECT Host, User, Password FROM user");
...

Código de Ejemplo:

package jimmyosmar;

import javax.sql.rowset.CachedRowSet;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author jimmyosmar
 */
public class Ejm_LlenarJTableDesdeDataBase extends JFrame{

    DefaultTableModel dtmEjemplo;
    JTable tblEjemplo;
    JScrollPane scpEjemplo;
    public Ejm_LlenarJTableDesdeDataBase()
    {

        tblEjemplo = new JTable();
        scpEjemplo= new JScrollPane();

        //Llenamos el modelo
        dtmEjemplo = new DefaultTableModel(null,getColumnas());

        setFilas();

        tblEjemplo.setModel(dtmEjemplo);
        scpEjemplo.add(tblEjemplo);
        this.add(scpEjemplo);
        this.setSize(500, 200);

        scpEjemplo.setViewportView(tblEjemplo);

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    }

    //Encabezados de la tabla
    private String[] getColumnas()
    {
          String columna[]=new String[]{"Columna1","Columna2","Columna3"};
          return columna;
    }

    private void setFilas()
    {
        //Conectar a PostgreSQL\\
        Ejm_ConectarPostgreSQL cnndb = new Ejm_ConectarPostgreSQL();
        CachedRowSet crs = cnndb.Function("SELECT deptno, dname, loc FROM dept");

        Object datos[]=new Object[3]; //Numero de columnas de la tabla

        try {
            while (crs.next()) {
                for (int i = 0; i < 3; i++) {
                        datos[i] = crs.getObject(i + 1);
                }
                dtmEjemplo.addRow(datos);
            }

            crs.close();
        } catch (Exception e) {
        }
    }

    public static void main(String args[]) {
        Ejm_LlenarJTableDesdeDataBase obj1 = new Ejm_LlenarJTableDesdeDataBase();
        obj1.setVisible(true);
    }

}

sábado, 23 de agosto de 2014

¿Como obtener la IP y Nombre del Host desde Java?

0 comentarios

Muchas veces necesitamos obtener la ip donde estamos ejecutando nuestra aplicación, ya sea para llenar un Log o para realizar otra operación. Para conocer  la IP local desde Java solo tendremos que utilizar  el objeto InetAddress. (java.net.InetAddress)

con estas tres líneas podrás saber tu número de ip y tu nombre de host:

InetAddress IP; 
 
IP = InetAddress.getLocalHost();
System.out.println("Nombre de Host:"+IP.localHost.getHostName());
System.out.println( "Dirección IP:"+IP.localHost.getHostAddress());


Para conocer tu IP externa, debes hacer una llamada al exterior porque desde tu 
propia maquina no sabes cuál es tu ip, ya que realmente la ip pertenece al routerque es tu puerta de enlace.
para conocer realmente cuál es tu IP externa debes hacer una petición http, hay algunas páginas que te devuelven esta información , como http://www.whatismyip.com/ y http://checkip.amazonaws.com/
Te muestro un pequeño ejemplo:

URL whatismyip = new URL("http://checkip.amazonaws.com");
 
BufferedReader entrada = new BufferedReader(new InputStreamReader(
 
whatismyip.openStream()));
 
String IPpublic = entrada.readLine();
 
System.out.println("MI IP PUBLICA ES: = "IPpublic);
 
entrada.close();


viernes, 22 de agosto de 2014

Conexión JDBC PostgreSQL

0 comentarios
En este ejemplo estableceremos una conexión con PostgreSQL 9.3, para el cual es necesario contar con la respectiva librería como la que se muestra a continuación:

postgresql-9.3-1102.jdbc3.jar

Ustedes deberán conseguir la librería de acuerdo a la versión de PostgreSQL al cual deseen conectarse y establecer los parámetros de conexión como se muestra en el código siguiente:

package jimmyosmar;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
/**
 *
 * @author jimmyosmar
 */
public class Ejm12_ConectarPostgreSQL {

    public CachedRowSet Function(String sql)
    {
            try
            {
                    Class.forName("org.postgresql.Driver");

                    String url = "jdbc:postgresql://127.0.0.1:5432/postgres";
                    Connection con = DriverManager.getConnection(url, "usuario","contraseña");
                    Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                                      ResultSet.CONCUR_READ_ONLY);

                    ResultSet rs= s.executeQuery(sql);

                    CachedRowSet crs = new CachedRowSetImpl();
                    crs.populate(rs);

                    rs.close();
                    s.close();
                    con.close();

                    return crs;

            }
            catch(Exception e)
            {
                   System.out.println(e.getMessage());
            }

            return null;
    }

    public void StoreProcedure(String sql)
    {

            try
            {
                    Class.forName("org.postgresql.Driver");

                    String url = "jdbc:postgresql://127.0.0.1:5432/postgres";
                    Connection con = DriverManager.getConnection(url, "usuario","contraseña");
                    Statement s = con.createStatement();

                    s.execute(sql);

                    s.close();
                    con.close();

            }
            catch(Exception e)
            {
                   System.out.println(e.getMessage());
            }
    }
}

Conexión JDBC Mysql

0 comentarios
En este ejemplo estableceremos una conexión con MySQL, para el cual es necesario contar con la respectiva librería como la que se muestra a continuación:


Ustedes deberán conseguir la librería de acuerdo a la versión de MySQL al cual deseen conectarse y establecer los parámetros de conexión como se muestra en el código siguiente:
package jimmyosmar; 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
/**
 *
 * @author jimmyosmar
 */
public class Ejm12_2_ConectarMySQL {

    public CachedRowSet Function(String sql)
    {
            try
            {
                    Class.forName("org.gjt.mm.mysql.Driver");
                    String url = "jdbc:mysql://127.0.0.1:3306/mysql";
                    Connection con = DriverManager.getConnection(url, "usuario","contraseña");
                    Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                                      ResultSet.CONCUR_READ_ONLY);
                    ResultSet rs= s.executeQuery(sql);
                    CachedRowSet crs = new CachedRowSetImpl();
                    crs.populate(rs);
                    rs.close();
                    s.close();
                    con.close();
                    
                    return crs;
            }
            catch(Exception e)
            {
                   System.out.println(e.getMessage());
            }
            return null;
    }

    public void StoreProcedure(String sql)
    {
            try
            {
                    Class.forName("org.gjt.mm.mysql.Driver");

                    String url = "jdbc:mysql://127.0.0.1:3306/mysql";
                    Connection con = DriverManager.getConnection(url, "usuario","contraseña");
                    Statement s = con.createStatement();

                    s.execute(sql);

                    s.close();
                    con.close();

            }
            catch(Exception e)
            {
                   System.out.println(e.getMessage());
      }
    }
}


jueves, 21 de agosto de 2014

¿Que es Maven?

0 comentarios
Es una Herramienta de  Apache Software Foundation, Para la construcción y gestión de proyectos Java. Esta herramienta tiene una funcionalidad similar a Apache Ant y a PEAR de PHP. Está construido usando una arquitectura basada en plugins que permite que utilice cualquier aplicación controlable a través de la entrada estándar.

Maven viene con objetivos definidos para la realización de varias tareas previamente definidas, entre ellas podemos mencionar: empaquetado y compilación del código. También se puede usar en red sin ninguna complicación debido a que el motor incluido en su núcleo puede descargar plugins  de los repositorios Open Source en Java, Apache y demás organizaciones o desarrolladores. Maven provee soporte no sólo para obtener archivos de su repositorio, sino también para subir artefactos al repositorio al final de la construcción de la aplicación, dejándola al acceso de todos los usuarios.


Las partes del ciclo de vida del proyecto Maven son:

compile: Genera los ficheros .class compilando los fuentes .java.
test: Ejecuta los test automáticos de JUnit existentes, abortando el proceso si alguno de ellos falla.
package: Genera el fichero .jar con los .class compilados.
install: Copia el fichero .jar a un directorio de nuestro ordenador donde maven deja todos los .jar. De esta forma esos .jar pueden utilizarse en otros proyectos maven en el mismo ordenador.
deploy: Copia el fichero .jar a un servidor remoto, poniéndolo disponible para cualquier proyecto maven con acceso a ese servidor remoto.

miércoles, 20 de agosto de 2014

¿Qué IDE elegir para Programar Java?

0 comentarios
Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación; es decir, que consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Los IDEs pueden ser aplicaciones por sí solas o pueden ser parte de aplicaciones existentes. Al momento de Programar Con Java nos encontramos con decenas de IDEs en la web, algunos de licencia Privada, otros de código abierto, también los hay para diversos para diversos sistemas operativos. Pero las preguntas que nos vienen a la mente son ¿Cuál es el mejor? y ¿cuál es más fácil de usar? El mejor es el que se adapte a tus necesidades, no es lo mismo desarrollar una aplicación completa con uso de framework, conexión a base de datos, que solo editar unas pocas líneas para realizar un ejercicio práctico. En cuanto a la facilidad de uso, todos son relativamente muy intuitivos al momento de desarrollar aplicaciones, además la mayoría trae su documentación bien detallada. Por la experiencia que tengo en el desarrollo de aplicaciones Java, te recomiendo los siguientes IDEs:







Netbeans. Comenzó como un proyecto estudiantil en el Charles University, Praga, Republica Checa. Originalmente era llamado Xelfi. Fue el primer IDE programado en Java bajo el nombre de Xelfi con su primer release en 1997. El nombre actual lo propuso Jarda Tulach en descripción a lo que buscaban hacer con el proyecto: Network + Java Beans = Netbeans.













Eclipse. El proyecto Eclipse fue originalmente creado por IBM en Noviembre de 2001 y es apoyado por un consorcio de proveedores de software. La fundación Eclipse fue fundada en Enero de 2004 como una corporación independiente libre de lucro para apoyar a la comunidad Eclipse.









JDeveloper. El IDE de Oracle para trabajar con Java, ellos mismos lo definen como un ambiente que simplifica el desarrollo de las aplicaciones SOA y JEE basadas en java. Para los lenguajes Java, HTML, XML, SQL, PL/SQL, Javascript, PHP, Oracle ADF, UML y otros. Es un software propietario pero gratuito desde 2005.






Intellij IDEA. Es un entorno de desarrollo Java creado por Jet Brains del que existen dos distribuciones: Comunity Edition (open source) y Ultimate (comercial). Sus creadores definen este IDE como el más inteligente del mundo.

viernes, 30 de mayo de 2014

Conexión SSH y SFTP en JAVA

1 comentarios
Es muy común que nuestras aplicaciones necesiten hacer descargas o subidas de ficheros a otras máquinas, para ello, podemos usar el protocolo SFTP (Secure File Transfer Protocol). Con este protocolo agregamos un nivel de seguridad comparado con el típico FTP.

Para lograr esto con Java, necesitamos de una librería externa que no viene incluido en el JDK, que nos proveerá JSch (Java Secure Channel). y luego tenemos que agregar la librería .jar externa en nuestro IDE, ya sea Eclipse o NetBeans. JSch es utilizado en varias famosas aplicaciones como Eclipse y NetBeans, Jakarta, Ant, y otros.

Archivo CargaSFTP.java

1.        package test;  
2.          
3.        import java.io.FileWriter;  
4.        import java.io.PrintWriter;  
5.          
6.        import com.jcraft.jsch.ChannelSftp;  
7.        import com.jcraft.jsch.JSch;  
8.        import com.jcraft.jsch.Session;  
9.        import com.jcraft.jsch.UserInfo;  
10.         
11.       public class CargaSFTP {  
12.        private static final String user = "test";  
13.        private static final String host = "Ip-servidor";  
14.        private static final Integer port = 22;  
15.        private static final String pass = "**-Contraseña-**";  
16.         
17.        public static void main(String[] args) throws Exception {  
18.         System.out.println("------------------- INICIO ----------------- ");  
19.         JSch jsch = new JSch();  
20.         Session session = jsch.getSession(user, host, port);  
21.         UserInfo ui = new SUserInfo(pass, null);  
22.         
23.         /* Informacion de las rutas del archivo */  
24.         String nombreLocalArchivo = "localServidor.txt";  
25.         String carpetaLocal = "c:/test/";  
26.         String nombreRemotoArchivo = "NombreArchivoRemoto.html";  
27.         String carpetaRemota = "/listas/";  
28.         
29.         session.setUserInfo(ui);  
30.         session.setPassword(pass);  
31.         session.connect();  
32.         ChannelSftp sftp = (ChannelSftp) session.openChannel("sftp");  
33.         sftp.connect();  
34.         generarFichero(carpetaLocal, nombreLocalArchivo);  
35.         // Nos ubicamos en la carpeta Remota  
36.         sftp.cd("/docs/web/" + carpetaRemota);  
37.         System.out.println("Subiendo ...");  
38.         // Colocamos el archivo local en el servidor a la carpeta remota.  
39.         sftp.put(carpetaLocal + nombreLocalArchivo, nombreRemotoArchivo);  
40.         
41.         System.out.println("Archivo subido...");  
42.         
43.         System.out.println("El archivo se puede verificar en la url:");  
44.         System.out.println("Ip_servidor/~test"  
45.           + carpetaRemota + nombreRemotoArchivo);  
46.         
47.         sftp.exit();  
48.         sftp.disconnect();  
49.         session.disconnect();  
50.         
51.         System.out.println("----------------- FIN ----------------- ");  
52.        }  
53.         
54.        private static void generarFichero(String carpetaLocal,  
55.          String nombreLocalArchivo) {  
56.         FileWriter fichero = null;  
57.         PrintWriter pw = null;  
58.         try {  
59.          fichero = new FileWriter(carpetaLocal + nombreLocalArchivo);  
60.          pw = new PrintWriter(fichero);  
61.          pw.println("Fichero con extensión TXT, para ser cargado por SFTP");  
62.         
63.         } catch (Exception e) {  
64.          e.printStackTrace();  
65.         } finally {  
66.          try {  
67.           if (null != fichero)  
68.            fichero.close();  
69.          } catch (Exception e2) {  
70.           e2.printStackTrace();  
71.          }  
72.         }  
73.        }  
74.       }  

Archivo SUserInfo.java 
1.            
2.        package test;  
3.          
4.        import com.jcraft.jsch.UserInfo;  
5.          
6.        public class SUserInfo implements UserInfo {  
7.           
8.            private String password;  
9.            private String passPhrase;  
10.          
11.           public SUserInfo (String password, String passPhrase) {  
12.               this.password = password;  
13.               this.passPhrase = passPhrase;  
14.           }  
15.          
16.           public String getPassphrase() {  
17.               return passPhrase;  
18.           }  
19.          
20.           public String getPassword() {  
21.               return password;  
22.           }  
23.          
24.           public boolean promptPassphrase(String arg0) {  
25.               return true;  
26.           }  
27.          
28.           public boolean promptPassword(String arg0) {  
29.               return false;  
30.           }  
31.          
32.           public boolean promptYesNo(String arg0) {  
33.               return true;  
34.           }  
35.          
36.           public void showMessage(String arg0) {  
37.               System.out.println("SUserInfo.showMessage()");  
38.           }  
39.       }  

Con esto ya hemos realizado la conexión SFTP con el servidor FTP.