Translate

miércoles, 7 de noviembre de 2012

Infografía para emprendedores pobres...


Como arreglar cualquier computadora??

Es muy bueno!!

Sinatra, rápida creación de aplicaciones web en Ruby con el mínimo esfuerzo



Sinatra es un framework para aplicaciones web de software libre y código abierto. La idea es interesante es un dsl para hacer paginas webs. Utilizando Ruby se puede hacer paginas webs muy rápidamente.  Sinatra es pequeño y flexible. Sinatra no sigue el típico patrón modelo vista controlador que se ve en otros frameworks, como Ruby on Rails. En su lugar, Sinatra se enfoca en la "rápida creación de aplicaciones web en Ruby con el mínimo esfuerzo."

Me imagino que se puede utilizar en prototipos desechables o en hacer sitios poco complejos.





Veamos un ejemplo de una pagina simple:


#!/usr/bin/env ruby -I ../lib -I lib
require 'sinatra'
get('/') { 'this is a simple app' }

Y ya esta una pagina simple pero completa con 2 lineas de código. Esta filosofia se extendio a otras tecnologias y se puede usar framework similares a Sinatra en muchos lenguajes; saco la lista de la wikipedia:


PHP

JavaScript

Python

Erlang

Groovy

Scala

.NET

Perl

Java

Tengo muchas ganas de probar la version de scala, scalatra.

Dejo link:
http://es.wikipedia.org/wiki/Sinatra_(software)
http://www.sinatrarb.com

martes, 6 de noviembre de 2012

domingo, 4 de noviembre de 2012

Spring Data, accediendo fácilmente a cualquier almacén de datos

Spring Data es un proyecto SpringSource cuyo propósito es unificar y facilitar el acceso a diferentes tipos de almacenes de persistencia, tanto en los sistemas de bases de datos relacionales y almacenes de datos NoSQL.

Cada subtipo de proyecto dependiente del alamacen de datos se caracterizan por ofrecer CRUD (Create-Read-Update-Delete), métodos de búsqueda, clasificación y paginación. Spring Data proporciona interfaces genéricas para estos aspectos (CrudRepository, PagingAndSortingRepository), así como implementaciones de persistencia específica.

Podemos extender las interfaces como lo hacemos para nuestros daos de hibernate o jpa:


public interface UserRepository extends MongoRepository<User, String> {
        @Query("{ fullName: ?0 }")
        List<User> findByTheUsersFullName(String fullName);
        List<User> findByFullNameLike(String fullName, Sort sort);
}
...

Para los proyectos Neo4J y MongoDB; spring data nos ofrece Templates. Que nos permiten hacer operaciones de CRUD, busquedas Pero todos estos métodos funcionan sólo para el almacén de datos configurado. Spring Data JPA no ofrece Templates dado que EntityManager es como un template.

Para configurar un template lo podemos hacer de este modo:


 



   




Dependiente de la tecnología que utilicemos para almancenar datos podemos anotar nuestros objetos. Cada tipo de almacén de datos viene con su propio conjunto de anotaciones para proporcionar la meta información necesaria para la asignación. Vamos a ver cómo un usuario de dominio objeto simple se pueden asignar a los almacenes de datos:

JPA MongoDB Neo4j
@Entity
@Table(name="TUSR")
public class User {

  @Id
  private String id;

  @Column(name="fn")
  private String name;

  private Date lastLogin;

...
}
@Document(
collection="usr")
public class User {

  @Id
  private String id;

  @Field("fn")
  private String name;

  private Date lastLogin;

 ...
}
@NodeEntity
public class User {

  @GraphId
  Long id;


  private String name;

  private Date lastLogin;

...
}



Todo aquel que este familiarizado con las anotaciones de de JPA puede, utilizar sin problemas las anotaciones de los otros almacenes de datos. 

Algo muy importante es que Spring Data provee QueryDsl para las consultas a repositorios JPA, MongoDb y Neo4J. QueryDsl permite generar consultas por medio de un dsl de forma muy fácil.

No hay ninguna API general a todos los almacenes de persistencia. Las diferencias son demasiado fundamentales. Pero el proyecto de datos Spring proporciona un modelo de programación común para acceder a sus datos.

Dejo link:

http://www.infoq.com/articles/spring-data-intro
http://www.springsource.org/spring-data



Fancy es un nuevo lenguaje de programación de propósito general inspirado en Smalltalk, Ruby, Erlang y Io


Fancy es un nuevo lenguaje de programación de propósito general  inspirado en Smalltalk, Ruby, Erlang y Io, que se ejecuta en la máquina virtual de Rubinius. Tiene integración total con Ruby y las librerías de Ruby utilizadas en Rubinius.

Fancy es dinámico, orientado a objetos puro, basado en clases con soporte integrado para futures y actores (como Erlang). La sintaxis es fácil de aprender, consistente y está inspirada en Ruby y Smalltalk.



Veamos unos ejemplos:

"Hello, World!" println

El objeto String lanza un mensaje println, esto es muy similar a Smalltalk.


class Fixnum {
  def fib {
    match self {
      case 0 -> 0
      case 1 -> 1
      case _ -> self - 1 fib + (self - 2 fib)
    }
  }
}

15 times: |x| {
  x fib println
}

En este caso utiliza pattern matching.


class Greeter {
  def initialize: @name
  def greet {
    "Hello, #{@name}" println
  }
}

g = Greeter new: "World!"
g greet # => "Hello, World!"

Me parece un lenguaje por demás interesante, sería buena idea llevarlo a la plataforma Java. Que opinan?

Dejo links:
http://www.fancy-lang.org/
http://en.wikipedia.org/wiki/Fancy_(programming_language)


Libro gratuito de Git

Git es un sistema rápido de control de versiones escrito en C y que se ha hecho popular sobre todo a raíz de ser el elegido para el kernel de Linux.

Todo el libro Git Pro, escrita por Scott Chacon y publicado por Apress, está disponible en web. Todo el contenido está bajo la licencia Creative Commons, no comercial. Este libro es una gran ayuda para los que comenzamos con Git.

Dejo el link:
http://git-scm.com/book

jueves, 1 de noviembre de 2012

GNU/Linux Distribution Timeline 12.10


Les dejo una actualización del Timeline de Linux. Tantas distribuciones hace a gente muy diferente, con propósitos y usos muy diferentes y feliz!

Dejo link:
http://futurist.se/gldt/wp-content/uploads/12.10/gldt1210.png

sábado, 27 de octubre de 2012

Redline, corriendo Smalltalk en la plataforma Java


Si se junta un lenguaje orientado a objeto puro y la maquina virtual más usada del mercado, junto a la plataforma más robusta nos da redline. Redline es una gran idea, programar en smalltalk en la plataforma Java.

Proporcionar una implementación viable Smalltalk para la JVM puede ayudar a revitalizar la comunidad haciéndola llegar a la mayor audiencia posible. La máquina virtual de Java es sin duda la más utilizada y la plataforma de implementación más popular. Poder ejecutar Smalltalk en la JVM trae Smalltalk un público mucho más amplio posible.

Los desarrolladores que trabajan con Java y otros lenguajes de la JVM puede tener la oportunidad de trabajar con Smalltalk en un entorno en el que se sienta cómodo y aprovechar la productividad que trae Smalltalk.

Dejo link:
http://www.redline.st/

Haskell se va a las nubes!!

Cloud Haskell es un lenguaje de dominio específico (DSL) para el desarrollo de programas para un entorno de computación distribuida.  Proporciona un modelo de comunicación de paso de mensajes, inspirados en Erlang, sin introducir incompatibilidades con memoria compartida de concurrencia de Haskell.

Es una herramienta para escribir aplicaciones que deben ejecutarse en forma paralela en computadoras o máquinas virtuales. Esto nos provee confiabilidad, capacidad para ejecutar en paralelo así como para la creación de aplicaciones de cálculo intensivo que pueden beneficiarse de un montón de hardware.

Dejo link:
http://www.haskell.org/haskellwiki/Cloud_Haskell

jueves, 25 de octubre de 2012

Liberado JRuby 1.7.0!!

JRuby es el compilador de Ruby que compila en bytecode.

Tenemos una nueva versión! JRuby 1.7.0 fue liberado. Esta nueva versión nos permite correr Ruby 1.9 y soporta todas las características del lenguaje.

Otra característica muy importante es que usa el InvokeDynamic de la maquina virtual de Java 7, lo que le permite usar clousures en bytecode; aumentando notablemente el rendimiento de lenguajes que usan clousures y compilan a bytecode.

Un gran paso para la comunidad de JRuby!!

Dejo links:
http://jruby.org/2012/10/22/jruby-1-7-0.html
http://www.infoq.com/news/2012/10/jruby-17

lunes, 22 de octubre de 2012

InfoQ nos regala un libro: The Culture Game




InfoQ nos regala un librito llamado:  The Culture Game. De que se trata? Bueno, es un tutorial y guía de referencia para la creación de la agilidad del negocio en su organización. Este es el manual para quien desee desarrollar rápidamente una cultura de aprendizaje dentro de sus equipos.

Es gratuito y lo pueden bajar del siguiente link:

http://www.infoq.com/minibooks/Mezick-Culture-game


sábado, 20 de octubre de 2012

Endulzando javascript con Mozilla Sweet.js


Mozilla Sweet.js es un desarrollo de Mozilla que lo que permite es extender Javascript por medio de un sistema de macros. Con este framework podemos hacer un dsl en javascript o mejorar la sintaxis del lenguaje o agregar funcionalidad.

Vamos con un ejemplo, no quiero usar function por que es muy largo, quiero usar def:


macro def {
  case $name:ident $params $body => {
    function $name $params $body
  }
}

y ahora puedo hacer:


def add (a, b) {
  return a + b;
}

Es muy bueno!! También podemos definir clases y hacer muchas cosas más...

Dejo links:
http://sweetjs.org/
http://www.infoq.com/news/2012/10/Mozilla-Sweetjs
https://github.com/mozilla/sweet.js/wiki/Example-macros

Prueba kotlin!


Kotlin es el nombre del lenguaje de la empresa jetbrains del que ya hablamos.

Existe una pagina para probar este lenguaje; dejo link:

http://kotlin-demo.jetbrains.com/