1 Parte – Hessian: Un ejemplo de creación de un Web Services con Hessian en Java ejecutándolo con GlassFish

Java, Programación, Web Services 24 de January del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Hace mucho tiempo que había trabajado con Hessian, y la verdad es que me había gustado mucho:

The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments.

Y recordando un poco por que se me olvida aquí les dejo un ejemplo de un Web Services con Hessian, es una de las maneras más fáciles de implementar un Web Services ya que es:

  • Se puede implementar en  muchisimos lenguajes como:
    • Java
    • Ruby
    • Python
    • PHP
    • .NET C#
    • y muchos más
  • Nos olvidamos de definición de esquemas, SOAP, WSDL, CORBA IDL, etc
  • Soporta cifrado, compresión (es indispensable para no saturar el Ancho de Banda), autenticación, etc.
  • Es muy sencillo de implementarlo, y más

Este es un ejemplo muy pero muy básico, así que lo que quisimos hacer es obtener la lista de usuarios x.
Para crear el Servidor lo primero que hay que hacer es:

1.- Necesitamos crear un Proyecto Web, el cual sera el servidor que va estar escuchando todas las peticiones. (en mi caso utilice NetBeans)
2.- Después creamos nuestras clases (yo quiero regresar una lista con usuarios de tipo User que tiene como atributo userId, name, lasname, email)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
package com.serunix.bean;
 
/**
 *
 * @author serunix.com
 */
public class User  implements java.io.Serializable {
 
    private int userId;
    private String name;
    private String lasName;
    private String email;
 
    /**
     * @return the userId
     */
    public int getUserId() {
        return userId;
    }
 
    /**
     * @param userId the userId to set
     */
    public void setUserId(int userId) {
        this.userId = userId;
    }
 
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
 
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
 
    /**
     * @return the lasName
     */
    public String getLasName() {
        return lasName;
    }
 
    /**
     * @param lasName the lasName to set
     */
    public void setLasName(String lasName) {
        this.lasName = lasName;
    }
 
    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }
 
    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }
}

3.- Creamos nuestros métodos disponibles

1
2
3
4
5
6
7
8
9
10
11
12
13
 
package com.serunix.services;
 
import java.util.List;
 
/**
 *
 * @author serunix.com
 */
public interface UserServices {
 
    List ObtainListUsers();
}

4.- Creamos la implementación, la cual tendrá toda la lógica

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
package com.serunix.services.impl;
 
import com.caucho.hessian.server.HessianServlet;
import com.serunix.bean.User;
import com.serunix.services.UserServices;
import java.util.ArrayList;
import java.util.List;
 
/**
 *
 * @author serunix.com
 */
public class UserServicesImpl extends HessianServlet implements UserServices {
 
    public List ObtainListUsers() {
     List list = new ArrayList();
 
        User users = new User();
        users.setUserId(1);
        users.setName("sergio");
        users.setLasName("Salazar");
        users.setEmail("admin@serunix.com");
        list.add(users);
        users = new User();
        users.setUserId(1);
        users.setName("sergio2");
        users.setLasName("López2");
        users.setEmail("admin@serunix.com");
        list.add(users);
 
        return list;
    }
 
}

5.- Y por último modificamos nuestro web.xml y levantamos el server que en este caso estoy utilizando GlassFish

1
2
3
4
5
6
7
8
<servlet>
        <servlet-name>UserServicesImpl</servlet-name>
        <servlet-class>com.serunix.services.impl.UserServicesImpl</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UserServicesImpl</servlet-name>
        <url-pattern>/UserServicesImpl</url-pattern>
    </servlet-mapping>

6.- Y creamos nuestro cliente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package test.serunix;
 
import com.caucho.hessian.client.HessianProxyFactory;
import com.serunix.bean.User;
import com.serunix.services.UserServices;
import java.net.MalformedURLException;
import java.util.Iterator;
import java.util.List;
/**
 *
 * @author sergio
 */
public class testHessian {
 
    public static void main(String[] args) throws MalformedURLException, ClassNotFoundException {
 
        String url = "http://localhost:8080/EJEMPLOHESSIAN/UserServicesImpl";
 
        HessianProxyFactory factory = new HessianProxyFactory();
        UserServices userservices = (UserServices) factory.create(url);
        List users = userservices.ObtainListUsers();
 
        Iterator ite = users.iterator();
        while (ite.hasNext()) {
            User user = (User) ite.next();
            System.out.print("*******************  \n");
            System.out.print("Name: " + user.getName() + "  \n");
            System.out.print("LasName: " + user.getLasName() + "  \n");
            System.out.print("Email: " + user.getEmail() + "  \n");
        }
    }
}

7.- Y listo!!!!

La verdad es que es muy fácil, aquí les dejo el proyecto entero. Si me quieren dejar un feedback no duden en hacerlo.

Java: ¿Al iterar los elementos de un objeto List, tenemos que validar que sea distinto de null?

Java, Programación 19 de January del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Se que es algo super básico, pero la verdad es que nunca esta de más saberlo… o recordarlo jajajaj la situación es la siguiente: cuando obtenemos una lista de un objeto cualquiera y no sabemos si tiene datos, lo mejor es validar la lista, pero si no quieres hacerlo y hacer un Iterator, púes no es necesario que valides que sea null, ya que aunque la lista no tenga elementos se crea un objeto tipo iterador  por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
 * 
 */
package com.test.serunix;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
/**
 * @author serunix.com
 *
 */
public class TestList {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// creamos un tipo lista vació
		List<String> list = new ArrayList<String>();
		// creamos el itelador (se que se puede iterar de otra manera a partir de java 1.5)
		Iterator<String> ite = list.iterator();
		// no validamos el iterador
		while(ite.hasNext()) // así que el iterador revisa si hay elementos, de lo contrario no sigue el bucle.
		{
			String value = (String) ite.next();
		}
 
	}
}

En otras palabras, siempre se crea un tipo lista así que no daría un java.lang.NullPointerException sólo ocurría esta excepción si la lista fuera inicializada como un null o que el método regrese un null por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * 
 */
package com.test.serunix;
 
import java.util.Iterator;
import java.util.List;
 
/**
 * @author serunix.com
 *
 */
public class TestList {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<String> list = obtainListElement();
 
		Iterator<String> ite = list.iterator();
 
		while(ite.hasNext())
		{
			String value = (String) ite.next();
		}
	}
 
	public static List<String> obtainListElement() {
 
		List<String> list = null;
		return list;
 
	}
 
}

Así que cada quien sabe que hace en cada caso.

Open Source: Cómo podemos monitorizar nuestras aplicaciones con JAMon???

Java, Open Source, Programación 31 de December del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

JAMon: ¨The Java Application Monitor (JAMon) is a free, simple, high performance, thread safe, Java API that allows developers to easily monitor production applications.¨

Nos ayuda a monitorizar nuestras aplicaciones, para poder saber que recurso se manda ejecutar con mayor concurrencia, monitorización del jdbc proxi, etc. tanto en aplicaciones web como Stand-alone, en su página esta el software y la documentación necesaria para poderlo implementar de una manera fácil y en pocos pasos.
Cuando hice el un main() todo me funciono correctamente pero he tenido problemas para que muestre las estadísticas dentro de una aplicación web, así que les dejo el main que prácticamente es el que esta en su página, y cuando logre corregir los problemas que tengo para implementarlo en otra aplicación les escribo un nuevo post con los problemas y las soluciones, además de los resultados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
 * 
 */
package test;
 
import com.jamonapi.Monitor;
import com.jamonapi.MonitorFactory;
 
/**
 * @author serunix.com
 *
 */
public class TestJAMon {
 
	/**
	 * @param args
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws InterruptedException {
		// TODO Auto-generated method stub
 
		Monitor mon=null;
        for (int i=1; i<=10; i++) {
            mon = MonitorFactory.start("myFirstMonitor");
            Thread.sleep(100+i);
            mon.stop();
 
        }
        System.out.println(mon.toString()); 
 
 
	}
 
}

Base de datos: Un ejemplo de Ibatis con Spring en java

Base de datos, Java, Mysql, Open Source, Programación 22 de December del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

La verdad es que no sabía nada de este Ibatis (framework de persistencia de datos basado en archivos xml), si no te lo enseñan hay que aprender sólo para poderse dar una idea de las diferentes  opciones que hay en cuanto al manejo de la Data Base. Aquí les dejo un pequeño ejemplo de como sería la configuración de Ibatis con Spring y que esta en java, ya que también se puede hacer con Ruby. Ibatis tiene sus ventajas y desventajas, así que sólo queda probarlo.

1.- El ejemplo se basa en almacenar las recetas de una farmacia.

2.- Creamos los DTO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.serunix.model;
 
import java.util.List;
 
/**
 * @author serunix
 *
 */
public class Recipe {
 
	private int recipeId;
	private String patientName;
	private List<?> medicaments;	
}
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.serunix.model;
 
/**
 * @author serunix
 *
 */
public class Medicament  {
 
	private int medicamentId;
	private String name;
	private String description;
	private Recipe recipe;
}

2.- Los servicios

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.serunix.model.services;
 
import java.util.List;
 
import com.serunix.model.Recipe;
 
/**
 * @author serunix
 *
 */
public interface RecipeDaoImpl {
 
	List<?> getAllRecipes();
 
	Recipe getRecipeById(Integer id);
 
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.serunix.model.services;
 
import java.util.List;
 
import com.serunix.model.Medicament;
 
/**
 * @author serunix
 * 
 */
public interface MedicamentDaoImpl {
 
	List<?> getAllMedicaments();
 
	Medicament getMedicamentById(Integer id);
 
	int update(Medicament medicament);
 
	Boolean insert(Medicament medicament);
 
	int delete(Integer id);
}

3.- Los Daos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.serunix.model.daos;
 
import java.util.List;
 
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
 
import com.serunix.model.Recipe;
import com.serunix.model.services.RecipeDaoImpl;
/**
 * @author serunix
 *
 */
public class RecipeDao extends SqlMapClientDaoSupport implements RecipeDaoImpl {
 
 
	public List<?> getAllRecipes() {
		return (List<?>)getSqlMapClientTemplate().queryForList("Recipe.getAllRecipes", null);
	}
 
	public Recipe getRecipeById(Integer id) {		
	    return (Recipe)getSqlMapClientTemplate().queryForObject("Recipe.getRecipeById", id);	    
	 }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.serunix.model.daos;
 
import java.util.List;
 
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
 
import com.serunix.model.Medicament;
import com.serunix.model.services.MedicamentDaoImpl;
/**
 * @author serunix
 *
 */
public class MedicamentDao extends SqlMapClientDaoSupport implements MedicamentDaoImpl {
 
	 public List<?> getAllMedicaments() {
	        return (List<?>) getSqlMapClientTemplate().queryForList("getAllMedicaments", null);
	    }
	    public Medicament getMedicamentById(Integer id) {
	        return ((Medicament)getSqlMapClientTemplate().queryForObject("getMedicamentById", id));
	    }
	    public int update(Medicament medicament) {
	        return getSqlMapClientTemplate().update("update", medicament);
	    }
	    public Boolean insert(Medicament medicament) {
	        return (Boolean)getSqlMapClientTemplate().insert("insert", medicament);   
	    }
	    public int delete(Integer id) {
	        return (int)getSqlMapClientTemplate().delete("delete", id);
	    }
}

4.- Los mapeos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
 
<sqlMap namespace="Medicament">
 
    <cacheModel id="recipeCache" type="MEMORY" readOnly="false" >
        <flushInterval hours="24"/>
    </cacheModel>
 
    <resultMap class="com.serunix.model.Medicament" id="medicamentsMap">
      <result property="medicamentId"
              column="medicamentId"/>
      <result property="name"
              column="name"/>  
      <result property="description"
              column="description"/> 
 
    </resultMap>
 
 
    <select id="findMedicaments"  parameterClass="java.lang.Integer" resultMap="medicamentsMap" cacheModel="recipeCache">
    	SELECT * FROM tcmedicaments  WHERE recipeId = #id#;
    </select>
 
</sqlMap>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
 
<sqlMap namespace="Recipe">
 
    <cacheModel id="recipeCache" type="MEMORY" readOnly="false" >
        <flushInterval hours="24"/>
    </cacheModel>
 
	<resultMap class="com.serunix.model.Recipe" id="recipeMap">
      <result property="recipeId"
              column="recipeId"/>
      <result property="patientName"
              column="patientName"/>  
      <result property="medicaments"
              column="recipeId" select="Medicament.findMedicaments" />                                
    </resultMap>
 
    <select id="getRecipeById" parameterClass="java.lang.Integer"  resultMap="recipeMap" cacheModel="recipeCache">
 
        SELECT * FROM trrecipes  WHERE recipeId = #id#;
 
    </select>    
 
</sqlMap>

5.- Y bueno lo más importante creo yo, el spring-context.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">
 
<beans>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
        <property name="url"><value>jdbc:mysql://127.0.0.1/SU BASE</value></property>
        <property name="username"><value>SU USUARIO</value></property>
        <property name="password"><value>SU PASSWORD</value></property>
    </bean>
 
    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="dataSource"><ref bean="dataSource"/></property>
        <property name="configLocation">
            <value>classpath:SqlMapConfig.xml</value>
        </property>
        <property name="useTransactionAwareDataSource">
            <value>true</value>
        </property>
    </bean>
 
    <bean id="recipeDao" class="com.serunix.model.daos.RecipeDao">
        <property name="sqlMapClient">
            <ref bean="sqlMapClient"/>
        </property>
    </bean>
</beans>

y bueno aquí les dejo mi clase main….

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package test;
 
import java.util.Iterator;
 
import org.apache.log4j.Logger;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
import com.serunix.model.Medicament;
import com.serunix.model.Recipe;
import com.serunix.model.daos.RecipeDao;
 
/**
 * @author serunix
 *
 */
public class TestDaos {
	protected static Logger logger = Logger.getLogger(TestDaos.class);
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ClassPathXmlApplicationContext ctxt = new ClassPathXmlApplicationContext("spring-context.xml");
		RecipeDao repl = (RecipeDao) ctxt.getBean("recipeDao");
		Recipe recipe = (Recipe)repl.getRecipeById(1);
		Iterator<?> iteRecipe = recipe.getMedicaments().iterator();
		logger.info(" Recipe No. " + recipe.getRecipeId() + " \n");
		logger.info(" Patient Name: " + recipe.getPatientName() + " \n");
		while (iteRecipe.hasNext())
		{
			Medicament medicament = (Medicament)iteRecipe.next();
			logger.info(" ----- Medicaments ------------- \n");
			logger.info(medicament.getMedicamentId() + ".- Name: "+ medicament.getName() +" \n");
			logger.info( "\t Description: "+ medicament.getDescription() +" \n");
 
		}
 
	}
 
}

aquí les dejo el proyecto completo por si tienen algúna duda… PROYECTO TESTIBATIS
n

n
¿Qué framework de percistencia utilizas para la DB?
View Results

G2ZXWXZKCVA3

Maven: Cómo agregar una referencia de un jira al archivo change.xml?

Maven, Open Source, Programación 8 de December del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Lo primero es echarse un vistazo en la página de Apache, y leer un poco la documentación, y saber para que sirve cada uno de los plugins que tiene, la verdad es que revisando a fondo el archivo changes.xml, tiene muchísimas cosas interesantes que podrían servir para poder una referencia de cambios en nuestros proyectos, aquí les dejo un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
   <issueManagement>
            <system>Jira</system>
            <url>http://localhost:8080/secure/</url>
    </issueManagement>
   <reporting>
           ...
            <plugins>
                  <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-changes-plugin</artifactId>
                        <version>2.2</version>
                        <configuration>
                              <xmlPath> ./changes.xml </xmlPath>
                              <issueLinkTemplatePerSystem> 
                                    <Redmine>%URL%/%ISSUE%</Redmine>
                              </issueLinkTemplatePerSystem>
                              <!-- para configurar como se muestran las fechas
                                      que en este caso seria en ingles  pero 
                                     es configurable en el formato que quieras -->
                              <publishDateLocale>en</publishDateLocale>
                          <publishDateFormat>MM-dd-yyyy</publishDateFormat>
                        </configuration>
                        <reportSets>
                              <reportSet>
                                    <reports>
                                          <report>changes-report</report>
                                    </reports>
                              </reportSet>
                        </reportSets>
                  </plugin>
            </plugins>
        ...
      </reporting>

y si quieren publicarlo en un servidor remoto, sólo hay que agregar la plugin de ftp

Parte I: Cómo obtener los resultados de una búsqueda con JAVA, utilizando el API de spotify ???

Java, Programación 9 de November del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Ha estas alturas como todos ya saben, se ha liberado el API de Spotify para poder obtener los resultados de sus albums, artistas, etc. etc. y bueno, aquí un simple/básico ejemplo de como obtener los resultados si buscamos la palabra “thriller”, por medio de JAVA. Pero como hemos empezado con este ejemplo se me ha ocurrido crear el xsd y además crear los objetos, así que esta es la primera entrega.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
 
/**
 * @author sergio
 * 
 */
public class SpotifyTest {
 
	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
 
		try {
			URL url = new URL("http://ws.spotify.com/search/1/album?q=thriller");
			BufferedReader xml = new BufferedReader(
					new InputStreamReader(url.openStream()));
			String line;
			while ((line = xml.readLine()) != null) {
				System.out.println(line);
			}
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	// TODO Auto-generated method stub
}

Una forma de recargar/reload/refreshing un archivo properties con Spring

Java, Programación, Spring 8 de November del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Hay muchisisisisimas formas de hacer esto, y una de ellas es hacerlo con spring y sólo hay que definir los siguientes beans en el spring-context de la aplicación y este se encargara de hacer el reload en el tiempo que se le defina. Aquí les dejo su API.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<bean id="baseMessageSource"
            class="org.springframework.context.support.ResourceBundleMessageSource">
            <property name="basename">
                  <value>classpath:Application</value>
            </property>
      </bean>
<!-- messageSource,  spring lo tiene definido para los archivos properties, así que no hay que cambiarlo -->
      <bean id="messageSource"
            class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
            <property name="basenames">
                  <value>classpath:Application</value>
            </property>
            <property name="parentMessageSource">
                  <ref bean="baseMessageSource" />
            </property>
            <property name="cacheSeconds">
       <!-- En este caso cada 60 segundos -->
                  <value>60</value>
            </property>
      </bean>

IntelliJ IDEA: una propuesta de IDE para desarrollar…

Java, Mac, Programación 3 de November del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Buscado algunas cosas por Internet me encontré con este IDE que se llama IntelliJ IDEA y se encuentra actualmente en la versión 8  la verdad es que se ve muy bien, esta desarrollado en Java y soporta varios lenguajes para poder desarrollar, lo estoy probando pero la verdad es que cuando uno se acostumbra a uno eclipse es difícil agarrarle al onda a otro, en fin… lo único malo es que es de pago pero también su puede obtener una licencia Open Soucre cumpliendo ciertos requisitos.  :)

IntelliJ IDEA

IntelliJ IDEA

GitHub como hosting de código para nuestro proyecto en Ruby on Rails…

Open Source, Programación, RubyOnRails 27 de September del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Y bueno, para poder subir el código que hagamos me he creado una cuenta en GitHub (es un hosting para repositorios Git)… y así sera más fácil… se los recomiendo a todos aquellos que desarrollen en ruby on rails, además que se pueden encontrar muchisisisisiissmo ejemplo y lo mejor e todo es que se pueden descargar. :)

Programando en Ruby on Rails: 1.- Creando el proyecto

Base de datos, Mysql, Programación, RubyOnRails 27 de September del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Así es, es hora de aprender a programar en Ruby on Rails , y sólo se puede aprender un lenguaje de programación practicando, voy ha ir haciendo un proyecto ( aplicación web) y con forme vaya avanzando iré escribiendo un post. Además que subiré el código, los diagramas E-R, screenshot, etc. etc. y todo lo que vaya haciendo para que quede como ejemplo, yo espero ir avanzando por semana. Y bueno, en este primer post iniciaremos definiendo lo que queremos hacer y después creando el proyecto, ahhhh el proyecto va hacer una cosa muy sencilla ehhhhhh jajajaja.

Definición del Sistema: Crear un sistema para almacenar las publicaciones de los periódicos.
Nombre del proyecto: Hemeroteca (newspaper library)

Herramientas utilizadas:

a) Sistema Operativo: Mac OS
b) IDE: NetBeans 6.5 download (actualmente esta la versión 6.7 pero yo estoy trabajando con la 6.5)
c) Base de Datos: Mysql 5.0.67 aquí había publicado un post anterior.
d) ruby 1.8.6 (2008-08-11 patchlevel 287)

Iniciamos creando nuestro proyecto:
1.- Abrimos nuestro NetBeans

2.- Damos click derecho y elegimos New Proyect…

programación en ruby

programación en ruby

3.- Como baje el que tenia soporte para Ruby, nos muestra que tipo de proyecto, entonces ahí seleccionamos Ruby y elegimos Ruby on Rails Application

programación en ruby

programación en ruby

4.- Le damos click en siguiente, después nos pide el nombre y la ruta de nuestro NetBeansProyects. Yo le voy a poner de nombre NewspaperLibrary.

programación con ruby

programación con ruby

5.- Si le damos click en siguiente no pedirá la configuración de la base, en este caso no lo voy hacer ya que después podríamos hacerlo.

programación en ruby

programación en ruby

6.- Damos click en Finish y LISTO!!!!!! ya creamos nuestro primer proyecto en Ruby on Rails.

programación en ruby

programación en ruby

Hasta aquí nos quedamos, así que en la siguiente parte  subiré el diagrama E-R y crearemos la base.

http://www.wikio.es BlogESfera - Directorio de Blogs Hispanos blogarama - the blog directory Mi Ping en TotalPing.com
Internet blogs Programming Blogs - Blog Catalog Blog Directory Internet blogs Buzzear (ES) Publicidad por tu blog con Boosterblog directorio de blogs
Agregar Web - Directorio de webs Directorio webs Directorio Web
Anuncios Gratis Blog Directory Technology Blogs - Blog Rankings