martes, 26 de febrero de 2013

Si todo el mundo sabría programar, seria mejor?


Si en todas las escuelas del mundo se enseñara a programar, tendríamos un mundo feliz? Existe un movimiento para intentar que se enseñe programación en todas las escuelas. Que piensan de esta idea? Yo creo que puede ser bueno para nuestra profesión y a la humanidad. Dado que la gente van a entender que hacemos. Y a la humanidad es bueno dado que es bueno enseñar a resolver problemas y es lo que hacemos cuando programamos.




Dejo link:
http://www.code.org/

Comienza nuevamente Functional Programming Principles in Scala

Según fuentes muy pero muy confiables comienza nuevamente el curso de Functional Programming Principles in Scala en coursera dictado por Martin Odersky. La verdad es muy recomendable, muy buen curso.

Dejo un video:


Dejo link:
https://www.coursera.org/course/progfun



lunes, 25 de febrero de 2013

Hoy comienza el curso de MongoDB para javeros



Hoy comienza el curso de MongoDB para javeros, y no te anotaste? media pila. Yo ahora lo estoy viendo a ver que onda.

Les dejo el link:
https://education.10gen.com

Primeros pasos con Play! Part 4


Seguimos con Play!

Vamos a modificar el ejemplo, primero vamos a modificar la clase Application.scala de la siguiente manera:

package controllers

import play.api._
import play.api.mvc._

object Application extends Controller {
 
  def index = Action {
    Ok("Hola!")
  }
 
}





Estamos devolviendo “Hola!” que es texto plano. Pero si nos equivocamos y ponemos así:

def index = Action {
    Ok("Hola!)
}

Play nos ayuda, nos indica donde esta el error:


Bueno vamos a hacer un ABM de algo, primero vamos a modificar el archivo conf/routes de la siguiente manera:

# Algo page
GET     /algo                          controllers.Algo.index
GET     /algo/new                   controllers.Algo.new
GET     /algo/:id/delete            controllers.Algo.delete(id: Long)

Ahora vamos hacer el nuevo action llamado Algo.scala que va a ser así:

package controllers

import play.api._
import play.api.mvc._

object Algo extends Controller {
 
  def index = TODO
 
  def newAlgo = TODO
 
  def delete(id: Long) = TODO
 
}

Dejamos los métodos en TODO, es decir que lo vamos a hacer más adelante. Si corremos el servidor y vamos a http://localhost:9000/algo vemos lo siguiente:


Para que se entienda TODO es un método que devuelve un action es así:

  val TODO = Action {
    NotImplemented[play.api.templates.Html](views.html.defaultpages.todo())
  }

Por lo tanto cuando busca controllers.Algo.index devuelve al action TODO. Pero ahora rápidamente vamos a escribir el model de Algo. Pero esto lo vamos a ver en el próximo post...


sábado, 23 de febrero de 2013

Primeros pasos con Play! Part 3


Siguiendo con los posts:

http://emanuelpeg.blogspot.com.ar/2013/02/primeros-pasos-con-play.html
http://emanuelpeg.blogspot.com.ar/2013/02/primeros-pasos-con-play-part-2.html

Tenemos que bajarnos Scala-IDE del siguiente link:
http://scala-ide.org/download/milestone.html y tenemos que bajar eclipse del siguiente link: http://www.eclipse.org/downloads/ (juno) y si no queremos usar la ultima versión podemos bajar Indigo : http://www.eclipse.org/downloads/packages/release/indigo/sr2

Descomprimimos el empaquetado y ya tenemos el IDE funcionando.
Ahora vamos a importar el proyecto. Para ello vamos a la carpeta raíz del proyecto y ponemos:

play eclipse

Entonces desde eclipse hacemos import... → “exiting projects into workspace” con esto tenemos nuestro proyecto en eclipse.

Ahora esta todo configurado, podemos programar libremente.

Vamos a ver como se muestra la pagina cuando corremos la aplicación. En conf/routes se define el punto de entrada de la aplicación; sería como un struts.xml en struts. En este archivo podemos ver algo como esto:

# Home page
GET     /                           controllers.Application.index

Esto quiere decir que si vamos a / va a llamar al controlador Application al método index. Si vemos el action podemos ver lo siguiente:

package controllers

import play.api._
import play.api.mvc._

object Application extends Controller {
 
  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }
 
}

Como pueden ver este controller devuelve el objeto Ok que es un Action. Este action indica que todo salio bien, es decir que termino con código 200. Con el método views.html.index(message: String), se esta llamando a las vista index.scala.html. Si abrimos este archivo podemos ver:

@(message: String)

@main("Welcome to Play 2.1") {
   
    @play20.welcome(message)
   
}

La plantilla permite mezclar contenido html con declaración de Scala, las declaraciones de scala comienzan con el @.

Por ahora no vamos a modificar nada pero en el próximo post, ya lo verán...


jueves, 21 de febrero de 2013

Webinar gratuito sobre MySQL


Me llego un mail de los chicos de oracle al parecer van a dictar un webinar sobre Mysql 5.6. en castellano. Que más queres? me inscribo, les dejo el mail:

"Regístrate gratis para este seminario web en vivo, donde conocerás de los expertos lo nuevo y asombroso de MySQL 5.6, la más reciente versión de la base de datos open source más popular del mundo. Participa en esta sesión interactiva para toda Latinoamérica y libera el potencial de MySQL 5.6!"


Try jQuery


Un nuevo curso gratuito de codeschool llamado "try jquery"... Como pueden sospechar es de jquery. Esto es muy bueno, voy a empezarlo yaaa!!!

Dejo link:
http://www.codeschool.com/courses/try-jquery

miércoles, 20 de febrero de 2013

Ubuntu for tablets esta aquí!!

Ubuntu for tablets esta aquí!! Sip, luego de presentar ubuntu para celulares, ahora la versión para tablets. Creo que era un movimiento cantado, todas las empresas ven como la nueva generación de pcs, las tablets y los celulares. Que piensan?? Otras distribuciones linux se van a volcar a las tables?? Cual les gustaría?

Dejo el vídeo presentación:


martes, 19 de febrero de 2013

Que es List comprehension??


List comprehension seria en español como "Lista de comprensión" pero me suena raro la traducción. Más allá de la traducción, que sería List comprehension? Bueno antes que nada, se acuerdan de las definiciones matemáticas de por ejemplo números pares o múltiplos que veíamos en la escuela? por ejemplo la definición de los números pares mayores a 10 sería así:

s = { 2 * x  | x  € N, 2 * x > 10 }

Esto se lee como los números pares (2*x) que pertenecen (€) a los números naturales (N) y que sean mayores que 10. Esto define la lista de forma compresiva. Es decir se puede conocer el valor de la lista dependiendo de la posición sin enumerar sus elementos. Esto si lo definimos en Haskell sería así:

s = [ 2*x | x <- [0..], x*2 > 10 ]

Como vemos es muy similar a la definición matemática, lo que indica que Haskell es muy buen lenguaje funcional. Se ve que los se define los números naturales como [0..] lo que indica que esta lista es infinita; por lo tanto la búsqueda de cada elemento se hace de forma perezosa.

Otros lenguajes implementan las List comprehension, por ejemplo Python, Scala, Erlang, Ceylon, Clojure, F#, Groovy, Ruby, etc.

En resumen podemos decir que List comprehension es una característica de algunos lenguajes con lo cual podemos definir listas de forma comprensiva y algo importante es que se pueda resolver de forma perezosa, para no tener que calcular elementos que no usamos.


Dejo link:
http://www.haskell.org/haskellwiki/List_comprehension
http://www.erlang.org/doc/programming_examples/list_comprehensions.html
http://en.wikipedia.org/wiki/List_comprehension

lunes, 18 de febrero de 2013

Planet Mongo

Quiero recomendar un blog sobre mongodb, el cual engloba toda la info de mongodb. Es importante recalcar el esfuerzo que esta haciendo la comunidad y como esta creciendo esta base NoSQL.

Dejo link: http://planet.mongodb.org

JavaZone X : The Streaming

Una buena publicidad de JavaZone:


sábado, 16 de febrero de 2013

Ceylon: comparativa con otros lenguajes


Dejo una buena comparación de lenguajes, tomando a Ceylon como principal protagonista. Muy buena la conclusión.

Dejo link:
http://codemonkeyjunior.blogspot.mx/2013/02/ceylon-comparativa-con-otros-lenguajes.html

El lenguaje Java vuelve a ser el más utilizado según el indice TIOBE

Desde abril del 2012 C lideraba el indice TIOBE pero este mes ha vuelto Java a tomar la punta. Esto es una bueno noticia para la comunidad Java.

Las otras cosas que me llamaron la atención fue el crecimiento de Bash, MATLAB y Assembly. Pero el lenguaje que más creció fue Objective-C  gracias a los productos de Applet.

Una cosa rara es que javascript cayo con respecto al año pasado 1,04% lo cual me resulta extraño dado que me parece que hay más proyectos javascript.

Estas son mis opiniones, que opinan ustedes?



Dejo link:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

martes, 12 de febrero de 2013

Primeros pasos con Play! Part 2


Bueno vamos a hacer la primera aplicación con scala. Que necesitamos??

  • Tener play instalado como lo indica aquí
  • Tener Scala-IDE que se puede bajar de aquí o algún editor como vi, nano, etc.

En el comando escribimos play new nombreDeLaAplicacion

Ahora se va a ejecutar un programa interactivo que nos va a preguntar el nombre del proyecto y si vamos usar java o scala. Luego de finalizar hacemos ls para verificar que se creo la carpeta del proyecto.

Si hacemos cd nombreDeLaAplicacion podemos ver los siguientes directorios:

app: se encuentra el core de la aplicación; se encuentran los objetos del modelo, controles y vistas. Aquí se encuentran los .scala
conf: se encuentran las configuraciones, application.conf, routes y archivo de internacionalización.
project: se encuentran los scripts de creación estos se basan en sbt.
public: contiene todos los recursos publicos como imagenes, css, javascripts, etc.
test: se encuentran todos los test que se escriben como especificaciones Specs2

Ojo play utiliza UTF-8 como única codificación. Por lo tanto todo tiene que estar acorde a esta codificación.

Ahora podemos utilizar la consola play ejecutando el comando play dentro del directorio del proyecto.

play
(demora un rato)
run

Con run estamos corriendo el ejemplo. Si todo fue bien van a poder ver la linea:

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

Ahora vamos al browser (cual quiera) y vamos a la url: http://localhost:9000/

Y va a salir una pagina de play. Que esto? Nuestra aplicación funcionando!!

Que sucedió? Por qué me muestra esta pagina? Lo que sucede es que existe un archivo llamado conf/routes el cual define todos los accesos a la aplicación. Es decir con que url llegas a que pagina. Existe una linea así:

GET     /       controllers.Application.index

Lo que indica es que con / vamos a el controlador Application al método index. Si hacemos un cat de app/controllers/Application.scala podremos ver:

cat  app/controllers/Application.scala

package controllers

import play.api._
import play.api.mvc._

object Application extends Controller {
 
  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }
 
}

Como se puede ver el controlador devuelve un Action el cual maneja las respuestas del pedido del browser. Si el resultado de la petición es 200(ok) el Action devuelve la vista index. Esta vista se puede ver haciendo: cat app/views/index.scala.html

@(message: String)

@main("Welcome to Play 2.1") {
   
    @play20.welcome(message)
   
}

Como podemos ver recibe como parámetro un string (message) y con el imprime la pagina de bienvenida de play.
Antes de hacer una modificación vamos a configurar Eclipse, pero esa es otra historia...

to be continued ...

Primeros pasos con Play!



Tengo muchas ganas hace rato de aprender play y grails, pero por cuestiones de tiempo se me hacia imposible. Ahora tome la convicción de hacerme tiempo y aprender estos frameworks!

Voy a empezar con play y voy a desarrollar en scala. La idea es hacer el post paso por paso. Abrer que sale.

Primero voy a la pagina de play! (http://www.playframework.com/) y descargo el framework del siguiente link: http://downloads.typesafe.com/play/2.1.0/play-2.1.0.zip

Luego de descargar play-2.1.0.zip lo descoprimimos, yo como uso linux lo voy a descomprimir en /opt.

mv play-2.1.0.zip /opt
cd /opt
unzip play-2.1.0.zip
rm play-2.1.0.zip

La pagina oficial dice que no hay que instalarlo en /opt dado que es necesario tener permisos especiales. Esto lo podemos solucionar con chmod aunque no es el mejor camino.

Chmod 777  play-2.1.0 -R

Ahora me voy a fijar que java tengo instalado, dado que tiene que ser java 6 o superior.

java -version

Si no tuviera java 6 o superior debería instalarlo.

Ahora agregamos a play a nuestro PATH. Yo lo voy a agregar a mi .profile

cd /home/miUsuario
nano .profile

Y agrego las siguientes lineas:

export PLAY=/opt/play-2.1.0
export PATH=$PATH:$PLAY

Y guardo. Ahora a actualizar las variables de entorno.

source ~/.profile

Y con el comando env vemos las variables de entorno. Si todo esta bien probar si play funciona:

play help

Ahora tenemos play instalado. A crear una aplicación pero esto va a ser en un próximo post.

To be continued…

domingo, 10 de febrero de 2013

Ubuntu Peronista


Linux es popular y soberano, por esta razón el Gran general Perón nos enseña a utilizarlo. Este blog   es donde escribe el general a los trabajadores usuarios de Ubuntu.

"Ubuntu es un sistema operativo Libre, Justo y Soberano.

Muchas veces he asistido en el a los trabajadores, pero hoy siento un verdadero orgullo, pues interpreto en este movimiento colectivo Ubuntero, el renacer de una verdadera conciencia del software popular."

Dejo link: http://ubuntuperonista.blogspot.com.ar

sábado, 9 de febrero de 2013

Play 2.1 introduce CDI y modularidad


Play 2.1 se viene con inyección de dependencia y modularidad, será el primer trabajo de Rod Johnson?

El framework para hacer aplicaciones de forma rápida anuncio que su próxima versión soportará CDI y modularidad. De esta forma se va a poder inyectar dependencias con anotaciones. A la vez van a dividir el framework en modulos que tengan mínima dependencia entre ellos.

Se viene con todo play!!

SolusOS un Debian elegante...


Hace un tiempo que estoy probando distros Linux, el objetivo es elegir una distro nueva y que me guste. De esta forma encontré a SolusOS. Un Debian con un escritorio muy bueno, simple y elegante; con lo justo y necesario.  Parece bastante estable. Porque lo elegí?


  • Es un debian y en debian estoy cómodo
  • Ligero y elegante. 
  • Fácil de usar.


Bueno, ahora voy a probarla!

Dejo link:
http://solusos.com/

viernes, 8 de febrero de 2013

Amo programar



Yo siempre digo que el eclipse es como mi patio donde puedo jugar a resolver problemas, crear cosas, aprender, etc. Es un lugar donde soltamos las ganas de crear de resolver problemas. Por suerte no soy el único loco.

Dejo un link que sería muy bueno que vean:
http://dokkillo.in/2013/01/amo-programar/



jueves, 7 de febrero de 2013

Aprende python en Pyschools

Que manera de haber recursos para aprender python! Ahora quiero dejar una pagina que tiene como objetivo que aprendas python.

Dejo link:
http://www.pyschools.com/

lunes, 4 de febrero de 2013

Agile Best Practices

La gente de codeschool nos invita a ver un vídeo sobre buenas prácticas de metodología ágil. Esta muy bueno y debemos apoyar estas iniciativas gratuitas

Dejo link:
http://www.codeschool.com/code_tv/agile-best-practices?utm_campaign=codetv&utm_medium=email&utm_source=mailchimp

¿Por qué Windows se deteriora con el uso y Linux no?


Gente, les pido un favor lean el siguiente articulo que esta muy bueno y es bastante entretenido. Explica porque windows se vuelve más pesado con el tiempo y porque linux no.

Dejo el link:
http://papeldeperiodico.com/por-que-windows-se-deteriora-con-el-uso-y-linux-no/

sábado, 2 de febrero de 2013

El mundo de la programación.

Esta infografía es muy buena para saber algunos nombres de gente que ha hecho mucho para que nuestra disciplina crezca.


Por que es bueno programar en linux?



Linux es un sistema operativo muy bueno para las personas que comienzan a programar o quieren aprender a programar, por que?

  • Casi todas las plataformas y lenguajes corren sobre linux hasta .net con mono.
  • Es fácil instalar plataformas y lenguajes como PHP, C++, Python, Ruby ... 
  • Múltiples IDEs, para todos los gustos y todas las plataformas. 
  • La mayoría de los entornos gratuitos y los estudiantes tenemos poco dinero. 
  • Seguridad! 
  • Licencia de tus programas.
  • Los programadores linux tenemos más levante. 
  • etc...


Escribí esto con un poco de imparcialidad, porque realmente me gusta programar en Linux, pero la mayoría son ciertas y demostrables. Seguro que se les ocurre otra, comenten!!


Aprenda a Pensar Como un Programador con Python


Les quiero compartir un libro para aprender programación con python. El autor indica lo siguiente en el prologo:


"Como educador, investigador, y autor de libros, estoy encantado de ver la finalización de este libro. Python es un lenguaje de programación divertido y extremadamente fácil de usar que en los últimos años se ha hecho muy popular ..."


Dejo link:
http://manuales.gfc.edu.co/python/thinkCSpy.es.pdf

viernes, 1 de febrero de 2013

Repositorio de ejemplos en Ceylon


La gente de Ceylon ha creado un repositorio con ejemplos del lenguaje; para poder cosultar mientras aprendemos.

Dejo link:
https://github.com/ceylon/ceylon-examples

Mi escritorio KDE

Estoy probando KDE porque no estoy muy contento con el funcionamiento de Cinnamon, pero no se si lo voy a tomar como escritorio por default. Lo que estoy haciendo es mirando antes de comprar. No me gusta la tipografía  alguien sabe como se puede mejorar esto? Letras muy grandes y por ahí chicas.

Pero salvo eso nos estamos llevando bien!!