Translate

miércoles, 22 de febrero de 2012

Code Hero

"Code Hero" es el video juego que fue diseñado para aprender a programar en javascript. Es un juego en primera persona y usa la api Unity3D.
Lo realmente malo es que se descarga para windows o mac solamente; pruebo si mi wine lo tira!

Dejo el video:



Dejo link:
http://primerlabs.com/codehero

LungoJS



Quiero compartir un screencast sobre LongoJS un framework que aprovecha las caracteristicas de HTML 5, CSS 3 y javascript para desarrollar aplicaciones moviles.

LungoJS - RESTful + Templating + Cache (Spanish) from LungoJS on Vimeo.


Dejo la fuente y links:
http://www.genbetadev.com/desarrollo-aplicaciones-moviles/lungojs-usando-restful-templating-cache-screencast
http://vimeo.com/37014134
http://www.lungojs.com/

Apache celebra su 17 aniversario con un release de su servidor

Leo en infoq que el servidor Apache cumple 17 añitos y para festejarlo libera su versión 2.4 de su servidor http.


Dejo mis felicitaciones!!


Y dejo links:
http://httpd.apache.org/
http://www.infoq.com/news/2012/02/Apache-HTTP-Server-2-4


martes, 21 de febrero de 2012

Infografía sobre HTML 5

Comparto una Infografía sobre HTML 5 y sus nuevos tags y propiedades:

Pinned Image

viernes, 17 de febrero de 2012

Spring data y mongodb parte 2

Spring data nos brinda muchos beneficios para poder utilizar MongoDB entre los cuales ya nombramos en este post:

http://emanuelpeg.blogspot.com/2012/02/mongodb-spring-data.html

Pero vamos a empezar?

Spring MongoDB requiere MongoDB 1.4 o superior y JDK 1.5 o superior. Obiamente que lo ideal seria utilizar Spring MongoDB en un proyecto que use Spring.

Antes que nada debemos iniciar MongoDB como lo explica el siguiente post:

Podemos hacer un proyecto Spring con maven y agregar las siguientes dependencias:


    org.springframework.data
    spring-data-mongodb
    1.0.0.M5
  


y el siguiente repositorio:


  
    spring-milestone
    Spring Maven MILESTONE Repository
    http://maven.springframework.org/milestone
  



Debemos agregar un archivo log4j.properties si necesitamos ver el log. El archivo va a contener lo siguiente:

http://emanuelpeg.blogspot.com/2012/02/instalar-mongodb-en-linux.html

log4j.category.org.springframework.data.document.mongodb=DEBUG
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %40.40c:%4L - %m%n


Para el siguiente ejemplo vamos hacer una clase persona:

package org.spring.mongodb.example;

public class Person {

  private String id;
  private String name;
  private int age;
   
  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
  
  //Getters and setters
  
  @Override
  public String toString() {
    return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
  }
  
}


Buenisimo, ahora hacemos un main para probar:

package org.spring.mongodb.example;

import static org.springframework.data.mongodb.core.query.Criteria.where;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;

import com.mongodb.Mongo;

public class MongoApp {

  private static final Log log = LogFactory.getLog(MongoApp.class);

  public static void main(String[] args) throws Exception {

    MongoOperations mongoOps = new MongoTemplate(new Mongo(), "database");

    mongoOps.insert(new Person("Joe", 34));

    log.info(mongoOps.findOne(new Query(where("name").is("Joe")), Person.class));

    mongoOps.dropCollection("person");
  }
}


Es magia.

En 4 lineas de código se guarda en la base de datos NoSQL MongoDB y se consulta con una consulta con where y se logea el resultado y al terminar la prueba se borra los datos; en 4 lineas.

En este pequeño ejemplo se pueden ver 4 cosas:

  • Se puede instanciar MongoTemplate con el objeto estandar de MongoDB com.mongodb.Mongo y el nombre de la base.
  • Se puede guardar un POJO así de simple sin metadata, ni herencia, ni nada raro.
  • MongoDB sabe el ObjectID por convensión, se maneja el campo id por convesión
  • La clase Persona puede tener solo getters, dado que asigna los datos por convensión. Si los nombres de los parametros del contructor coinciden con los datos usa estos datos para construir el objeto.



Para la proxima un ejemplo más copado. Continuara...

miércoles, 15 de febrero de 2012

Apache Apollo la nueva generación de mensajería!





ActiveMQ Apollo es más rapido, seguro, confiable y facil de mantener broker de mensajería. El cual fue construido a partir de Apache ActiveMQ. Los ingenieros de Apache le dieron una vuelta de rosca a ActiveMQ.

Apollo sólo soporta el protocolo STOMP pero al igual que ActiveMQ, ha sido diseñado para correr sobre varios protocolos. En futuras versiones se añadirá soporte OpenWirepor lo que puede ser compatible con ActiveMQ 5.x clientes JMS.

Entre los cambios de arquitectura podemos nombrar:


  • Refactor basado en Thread Model
  • Implementación para scala 2.8
  • Protocolo agnóstico
  • Administración basada en REST



Dejo links:
http://activemq.apache.org/apollo/
http://activemq.apache.org/apollo/documentation/architecture.html
http://activemq.apache.org/apollo/documentation/getting-started.html

martes, 14 de febrero de 2012

Documentación completa de Play Framework disponible en español


Me llego el siguiente mail de la gente de play, una gran noticia:

"Finalmente hemos concluido la traducción de la documentación de Play
Framework. Pueden consultarla en http://playdoces.appspot.com/

Hace apenas tres meses anunciábamos en esta lista que junto con varios
colegas iniciábamos la traducción de la documentación de Play
Framework, y al mismo tiempo invitábamos a todos los usuarios de este
framework a sumarse a la tarea.

Hoy, mientras nos preparamos para el lanzamiento de play 2.0, gracias
a la colaboración de colegas de América Latina y España ya podemos dar
por concluida la traducción de toda la documentación del sitio de play
Framework.

Aquí tienen los links:

Página principal: http://playdoces.appspot.com/

Si vives en alguno de los países a quienes google restringe el acceso
a las aplicaciones de Google Application Engine (¿qué habrá pasado con
el lema de “No seas malo”?), también tenemos una copia del sitio
alojada en openshift: http://playdoces-opensas.rhcloud.com/

Anuncio de la versión 2.0 de play: http://playdoces.appspot.com/2.0

Hola mundo en play: http://playdoces.appspot.com/documentation/latest/firstapp

Tutorial completo de play: una aplicación completa paso a paso:
http://playdoces.appspot.com/documentation/latest/guide1

y muchos artículos más que pueden encontrar en
http://playdoces-opensas.rhcloud.com/documentation/latest/home

También pueden ver el anuncio en el blog:
http://playlatam.wordpress.com/2012/02/14/documentacion-completa-de-play-framework-disponible-en-espanol/

Queremos agradecer a @rodriguezlaurag y @mfmontanari de Argentina,
@gualtrapa de España, @pjquero de Venezuela and @alfonsokim de México,
y también a los desarrolladores de la traducción japonesa del sitio de
Play, @garbagetown y @ikeike443, cuyo trabajo forkeamos
descaradamente.

Esperamos que nos ayuden a difundir esta noticia y que esta iniciativa
ayude a impulsar el uso de Play en los países de habla hispana.

Saludos

Sas (@develsas)"



Felicitaciones!! 

lunes, 13 de febrero de 2012

Más de Spring Data y MongoDB

Sigo leyendo sobre spring-data un proyecto que se las trae. Ahora vamos analizar el proyecto Spring Data con MongoDB.

Repository es la interfaz más general de Spring Data; CRUDRepository extiende esta y agrega metodos basicos para hacer las operaciones CRUD.


public interface CrudRepository
    extends Repository {
                                                                                         
    T save(T entity);
                                                                                         
    T findOne(ID primaryKey);
                                                                                         
    Iterable findAll();

    Long count();
                                                                                         
    void delete(T entity);
                                                                                         
    boolean exists(ID primaryKey);
                                                                                         
    // … more functionality omitted.
}



PagingAndSortingRepository nos provee los metodos de busqueda:


public interface PagingAndSortingRepository extends CrudRepository {

    Iterable findAll(Sort sort);

    Page findAll(Pageable pageable);
}





Donde Pageable es una clase que sirve para paginar; por ejemplo si quisieramos ir a 2 pagina y la pagina va cada 20 filas se debe instanciar de la siguiente manera: new PageRequest(1, 20)

Seteamos spring para que cree los proxys de nuestra interfaces:


  






Luego inyectamos el objeto a la clase que lo deberia usarlo:

public class SomeClient {

  @Autowired
  private PersonRepository repository;

  public void doSomething() {
    List persons = repository.findByLastname("Matthews");
  }
}




Tambien se pueden definir implementaciones para las interfaces por ejemplo si tenemos un metodo particular. Simplemente hay que definir la implementación:


interface UserRepositoryCustom {

  public void someCustomMethod(User user);
}


class UserRepositoryImpl implements UserRepositoryCustom {

  public void someCustomMethod(User user) {
    // Your custom implementation
  }
}


Como se puede ver no hay que extender de ninguna clase de Spring data, ni hay que hacer algo raro. Ahora hacemos la interfaz posta, la cual va tener los metodos que provee Spring Data y el metodo custom:


public interface UserRepository extends CrudRepository, UserRepositoryCustom {

  // Declare query methods here
}



Esa es una primera parte de Spring Data con MongoDB. Mientras voy aprendiendo escribo algo acá!

Dejo link:
http://static.springsource.org/spring-data/data-document/docs/current/reference/html/

viernes, 10 de febrero de 2012

Instalar MongoDB en Linux

No es el super tutorial, no por culpa mía sino que es muy fácil instalar mongoDB. 
Empezamos bajando la base de este link: http://www.mongodb.org/downloads 
Una vez que hallamos bajado el archivo nos logeamos como root en el directorio que se bajo la base y movemos el archivo a opt (o a la que quieran ustedes)


# mv mongodb-linux-x86_64-2.0.3-rc0.tgz /opt/
# cd /opt


Ahora vamos a descomprimir el archivo y de paso borramos el tgz:


# tar -xvf mongodb-linux-x86_64-2.0.3-rc0.tgz 
# rm mongodb-linux-x86_64-2.0.3-rc0.tgz 

Se crea la carpeta data

# mkdir -p /data/db/
# chown `id -u` /data/db

Luego de crear el directorio de datos dado que MongoDb usa una carpeta para datos con el path configurable pero nosotros vamos usar el path por defecto.

Y ahora a levantar:

# cd mongodb-linux-x86_64-2.0.3-rc0/bin
# ./mongod

Ahora podemos jugar un rato: 

#db.foo.save( { a : 1 } )
#db.foo.find()

Dejo links:

miércoles, 8 de febrero de 2012

NoSQL

Dejo un gráfico que muestra en que conceptos se basaron para desarrollar las bases NoSQL.

Los puntos son: Consistencia, distribuido o capacidad de distribuirse y disponibilidad. En El grafico se puede ver por ejemplo que Voldemort es una base clave-valor que se apoyo sobre los conceptos de disponibilidad y capacidad de distribuirse.


NoSQL y SQL amigos?


Xeround esta brindando un servicio donde mezcla base de datos NoSQL con bases de datos SQL de forma híbrida. En front-end se trabaja con una base MySQL pero el corazón del servicio es una base NoSQL distribuida de 50 gigas.

Xeround provee base de datos como servicio para aplicaciones MySQL en la nube. De esta forma el desarrollador trabaja con una base MySQL sin tener que lidiar con detalles de bases NoSQL.

El servicio se ejecuta en la nube proporciona la alta disponibilidad (99,9%) y la escalabilidad en general,asociado a un almacén de datos NoSQL, que se puede implementar en Amazon EC2 y Rackspace, y puede ser utilizado como un add-on de Heroku para bases de datos de hasta 500 MB.

Dejo links:
http://www.infoq.com/news/2012/02/Hybrid-SQL-NoSQL
http://xeround.com/
http://xeround.com/developers/



martes, 7 de febrero de 2012

Smalltalk y Javascript un solo corazón!


Cada vez estamos en la era donde se va a poder escribir cualquier programa en cualquier lenguaje en cualquier tecnología . Y este es un buen ejemplo! Compilar Smalltalk a Javascript.

Existen varios proyectos que permiten hacer esto:

ST2JS:
ST2JS – Smalltalk to Javascript translator
http://www.squeaksource.com/ST2JS/
ST2JS – Traductor de Smalltalk a JavaScript (Parte I)
http://diegogomezdeck.blogspot.com/2006/07/st2js-traductor-de-smalltalk.html
ST2JS – Traductor de Smalltalk a JavaScript (Parte II)
http://diegogomezdeck.blogspot.com/2006/07/st2js-traductor-de-smalltalk_28.html

Otro proyecto muy bueno es S8, paso a copiar y pegar un párrafo de la presentación de este framework:

"El pasado sábado 17 tuvo lugar una importante reunion de Smalltalkig donde definimos el alcance de lo que llamamos Proyecto S8 y el rol que queremos que Smalltalking juegue en ese Proyecto. S8 comenzo siendo un proyecto personal de Alejandro Reimondo de desarrollo de un Smalltalk corriendo sobre la maquina virtual javascript open source de Google, la famosa V8 (de alli su nombre). Durante el transcurso de ese proyecto que aun continua en desarrollo, nos dimos cuenta que S8 podria transformarse en una plataforma de desarrollo para otros frentes, incluso aquellos que no necesiten soporte de V8 (un ejemplo de ello es el smalltalk jtalk o su nuevo nombre Amber). Es por ello que decidimos ponerle licencia MIT y potenciar una comunidad que utilize la herramienta desde Smalltalking. De esa forma le daremos previsibilidad a la herramienta y sustentabilidad en el tiempo, dos cosas que para los smalltalkers es fundamental"

Copiado textualmente de :
http://leodemarco.blogspot.com/2011/09/lanzamiento-de-s8-en-smalltalking.html

Dejo la fuente:
http://ajlopez.wordpress.com/2011/09/22/smalltalk-and-javascript/

domingo, 5 de febrero de 2012

Configuración De Servidores Con GNU/Linux

Quiero compartir un libro de Linux totalmente gratuito y sobre licencia Creative Commons. Es de muy buena calidad, dejo el link:

http://www.mediafire.com/?axozs408qao4a83

viernes, 3 de febrero de 2012

MongoDB + Spring Data

Ya hablamos bastante de spring data y también de mongoDB. El proyecto Spring Data intenta facilitarnos el acceso a diferente repositorios de datos. En esta oportunidad vamos a hablar de como nos facilita el acceso y manejo de la base de datos noSQL MongoDB.

Recordemos que MongoDB es una base documental, clave-valor; escrita en c++. Es conocida como la MySQL de las bases NoSQL. Dado que es liviana, muy usada y fácil de usar.

Spring Data nos provee:

  • Configuración basada en Spring con XML o anotaciones
  • MongoTemplate nos brinda la principales funcionalidades que se pueden aplicar a la base MongoDB.
  • Traducción de las excepciones a excepciones más amigables.
  • Mapeos de objetos integrados con Spring's Conversion Service
  • Querys, criterias y DSLs basados en java.
  • Implementaciones de interfaces de repositorio con métodos comunes.
  • Integración con QueryDSL!!
  • Persistencia cross-store; soporta entidades de JPA
  • Log4j
  • Integración con Map-Reduce
  • Monitorización y administración basado en JMX 


Para utilizar esta herramienta con maven es necesario agregar el siguiente repositorio:


    spring-milestone
    Spring Maven MILESTONE Repository
    http://maven.springframework.org/milestone



y la siguiente dependencia:


 org.springframework.data
 spring-data-mongodb
 1.0.0.RC1
 



Dejo links:
http://www.springsource.org/spring-data/mongodb
http://static.springsource.org/spring-data/data-document/docs/current/reference/html/