Translate
sábado, 23 de marzo de 2013
Discover DevTools
Code School abrió un curso gratuito llamado Discover DevTools, en el curso se muestran herramientas de desarrollo web y esta auspiciado por google.
Dejo link:
http://www.codeschool.com/courses/discover-devtools
Welcome to the Principles of Functional Programming in Scala class!
Me llego el mail de comienzo del curso de Programación funcional en scala, en realidad comienza el 25 de este mes, este curso es muy recomendable. Y ojo no es fácil, pero vale la pena.
Dejo link:
https://www.coursera.org/course/progfun
jueves, 21 de marzo de 2013
Xtend 2.4
Ya hable de Xtend hace tiempo...
Hace tiempo que no teníamos noticia pero ahora tenemos una nueva versión que tiene muchas novedades. Una de las más importantes es que podemos utilizar este lenguaje para escribir aplicaciones android, si android. Además:
- NuevAnotaciones activas. La nueva característica de anotación activa en Xtend se basa en anotaciones Java y permite participar en el proceso de traducción de código fuente a código fuente Xtend Java. as características del lenguaje.
- Xtend para el IDE de Eclipse ha sido mejorado, proporcionando un mejor soporte de herramientas de desarrollador de otros idiomas JVM. Esta nueva versión incluye las importaciones, extraer refactorización método, formateador, asistencia mejoradas de contenido, y mucho más.
- El plugin Xtend para el IDE de Eclipse ha sido mejorado, proporcionando un mejor soporte de herramientas de desarrollador de otros idiomas JVM.
- Anotaciones activas. La nueva característica de anotación activa en Xtend se basa en anotaciones Java y permite participar en el proceso de traducción de código fuente a código fuente Xtend Java.
- Y más!!
Y que más queres? hace todo!
Dejo link:
http://www.eclipse.org/xtend/
Scala IDE 3.0.0 final
Si señores después de un año de desarrollo Scala IDE 3.0.0 esta aquí! Que trae esta nueva versión:
- Un depurador para Scala
- Más herramientas de refactoring
- Generador de código
- Un editor más rápido
- Más colores, semantica resaltada, hipervinculos en los tipos, etc...
- Y más!!
Ya vamos descargando!!
Dejo link:
http://scala-ide.org/blog/3.0-final-announcement.html
martes, 19 de marzo de 2013
Que es Node.js?
Es así el motor javascript V8, el motor que utiliza chrome; inspiro a hacer un entorno de programación en el lado servidor orientada a eventos. Es decir con javascript podemos programar del lado cliente y servidor. Fue creado con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo, servidores web. Fue creado por Ryan Dahl en 2009, y su evolución está apadrinada por la empresa Joyent.
Dejo una infografía sobre Node.js:
Dejo una infografía sobre Node.js:
Dejo link:
sábado, 16 de marzo de 2013
Primeros pasos con Play! Part 5
Y luego de un descanso seguimos aprendiendo play framework. Recuerden que nos habíamos quedado acá:
http://emanuelpeg.blogspot.com.ar/2013/02/primeros-pasos-con-play-part-4.html
Nos habíamos quedado en crear el modelo de Algo:
package models
case class Algo (id: Long, nombre: String, descripcion: String)
object Algo {
def all(): List[Algo] = Nil
def create(nombre: String, descripcion: String) {}
def delete(id: Long) {}
}
Bueno creamos la case class Algo que nos sirve de modelo y luego un Objeto que va a realizar las tareas de listar, crear y borrar. Por ahora es un Objeto Dummy, onda que no hace nada pero luego vamos a implementar su interacción con la base de datos.
Para el que no este familiarizado con case class de scala puede leer esto: http://www.scala-lang.org/node/107.
Ahora vamos a hacer la pagina principal:
@(algos: List[Algo], algoForm: Form[String])
@import helper._
@main("Todo list") {
<h1>@algos.size algo(s)</h1>
<ul>
@algos.map { algo =>
<li>
@algo.nombre
@form(routes.Algo.delete(algo.id)) {
<input type="submit" value="Delete">
}
</li>
}
</ul>
<h2>Add a new Algo</h2>
@form(routes.Algo.newAlgo) {
@inputText(algoForm("Nombre"))
@inputText(algoForm("Descripcion"))
<input type="submit" value="Create">
}
}
Vamos a explicar un poquito, al principio declaramos una lista de Algo y un formulario; luego imprimimos cuantos algos hay y generamos un listado; permitiendo que se puedan eleminar; y para finalizar permitimos crear nuevos algos.
También importamos helper._ el cual nos ayuda a la creación de formularios. Normalmente un formulario crea un <form> de html.
Ahora vamos al controller a decirle que muestre nuestra nueva pagina:
package controllers
import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
object Algo extends Controller {
def index = Action {
val algoForm = Form(
"Nombre" -> nonEmptyText)
Ok(views.html.algoIndex(models.Algo.all() ,algoForm))
}
def newAlgo = TODO
def delete(id: Long) = TODO
}
Como vemos hemos hecho un formulario y le dijimos que nombre es requerido. Además que vaya a nuestra pagina.
Si vamos a http://localhost:9000/algo veremos la siguiente pagina:
Hermosa salvo porque todavía no guarda en la base de datos... Pero esto será en el próximo post!
http://emanuelpeg.blogspot.com.ar/2013/02/primeros-pasos-con-play-part-4.html
Nos habíamos quedado en crear el modelo de Algo:
package models
case class Algo (id: Long, nombre: String, descripcion: String)
object Algo {
def all(): List[Algo] = Nil
def create(nombre: String, descripcion: String) {}
def delete(id: Long) {}
}
Bueno creamos la case class Algo que nos sirve de modelo y luego un Objeto que va a realizar las tareas de listar, crear y borrar. Por ahora es un Objeto Dummy, onda que no hace nada pero luego vamos a implementar su interacción con la base de datos.
Para el que no este familiarizado con case class de scala puede leer esto: http://www.scala-lang.org/node/107.
Ahora vamos a hacer la pagina principal:
@(algos: List[Algo], algoForm: Form[String])
@import helper._
@main("Todo list") {
<h1>@algos.size algo(s)</h1>
<ul>
@algos.map { algo =>
<li>
@algo.nombre
@form(routes.Algo.delete(algo.id)) {
<input type="submit" value="Delete">
}
</li>
}
</ul>
<h2>Add a new Algo</h2>
@form(routes.Algo.newAlgo) {
@inputText(algoForm("Nombre"))
@inputText(algoForm("Descripcion"))
<input type="submit" value="Create">
}
}
Vamos a explicar un poquito, al principio declaramos una lista de Algo y un formulario; luego imprimimos cuantos algos hay y generamos un listado; permitiendo que se puedan eleminar; y para finalizar permitimos crear nuevos algos.
También importamos helper._ el cual nos ayuda a la creación de formularios. Normalmente un formulario crea un <form> de html.
Ahora vamos al controller a decirle que muestre nuestra nueva pagina:
package controllers
import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
object Algo extends Controller {
def index = Action {
val algoForm = Form(
"Nombre" -> nonEmptyText)
Ok(views.html.algoIndex(models.Algo.all() ,algoForm))
}
def newAlgo = TODO
def delete(id: Long) = TODO
}
Como vemos hemos hecho un formulario y le dijimos que nombre es requerido. Además que vaya a nuestra pagina.
Si vamos a http://localhost:9000/algo veremos la siguiente pagina:
Hermosa salvo porque todavía no guarda en la base de datos... Pero esto será en el próximo post!
Nuevo versión de Ceylon!!
Si señores Ceylon M5 es ta aquí!! y que nos podemos encontrar en esta nueva versión?
Bueno esta versión viene con varias novedades, por ejemplo las tuplas, interacción directa con javascript, el operador : , verbatim strings (que seria en castellano como cadenas textuales) , tipos de parámetros por defecto, nuevos módulos como ceylon.time para las fechas y ceylon.net.httpd; y más y más!!
A medida que vaya aprendiendo las nuevas características las posteo.
Dejo links:
http://ceylon-lang.org/documentation/1.0/roadmap/#milestone_5_done
http://ceylon-lang.org/blog/2013/02/15/progress-report/
miércoles, 13 de marzo de 2013
¡Llevemos programación a las escuelas!
Porque no enseñar a programar en la escuela secundaria?? Porque no utilizar python?? y por que no hacer vídeos juegos con el fin de alentar el aprendizaje?? Al parecer todas estas preguntas se hizo Hugo Ruscitti y decidió que era muy bueno aprender a programar y que python era un excelente lenguaje para aprender y que hacer vídeo juegos iba a facilitar la tarea.
Por lo tanto decidió sugerir pilas engine. Pilas es un framework para hacer vídeo juegos de manera sencilla.
Está dirigido a personas que comienzan a programar vídeo juegos y quieren lograr resultados interesantes y divertidos en poco tiempo. Está dirigido a personas que comienzan a programar vídeo juegos y quieren lograr resultados sorprendentes y divertidos en poco tiempo.
Pero ¿Por qué darle importancia a aprender a programar? Hugo contesta lo siguiente en su pagina:
"Porque programar te permite aprender haciendo cosas, se vuelve algo muy significativo y divertido, te da muchas herramientas y oportunidades de aprendizaje: te permite tener el control de la computadora y decirle qué hacer. Podrías crear un videojuego, una aventura multimedia, un sitio web o un puñado de ventanas con botones e imágenes que hacen algo útil (o no).
Hacer programas de computadora no es solamente escribir código, consiste en crear una estrategia paso a paso de lo que queremos lograr. Es algo dirigido a un resultado, es comenzar con una idea básica (a veces incompleta) y convertirla en realidad."
Dejo link:
http://pilas-editor.com.ar/
http://pilas-engine.com.ar/
https://pypi.python.org/pypi/pilas/
martes, 12 de marzo de 2013
Tenemos una nueva versión de Jetty!!
Salio Jetty 9.0 y con todo. La novedad más importante es que soporta el protocolo SPDY, es el protocolo creado por Google para mejorar la performance. También con este protocolo el servidor puede refrescar una parte de la pagina sin que el cliente lo solicite. Si, si, es lo más!! Por ahora este protocolo es soportado por Chrome (claro), Firefox y Opera.
El propósito de SPDY es reducir el tiempo de carga de las páginas web. SPDY aprovecha TCP, que es el protocolo más extendido para HTTP, por lo que sería más fácil distribuirlo. Sólo es necesario que el servidor y el cliente puedan manejar este protocolo, haciéndose transparente para las aplicaciones que lo usen. Este nuevo protocolo utilizaría una sola conexión TCP para manejar varias peticiones HTTP a la vez de manera concurrente. Además usa SSL como capa subyacente para incrementar la seguridad.
Esto es muy groso!! Pero no es todo también soporta muchas de las características de Servlet 3.1, aunque el soporte no es completo en la versión 9.0, sino que en el futuro cercano habrá una revisión menor del servidor en la que se completará el soporte para Servlet 3.1. Por la parte que a JSP le toca, el Jetty ha pasado a soportar JSP 2.2.
Que otra novedad nos trae? que corre sobre Java 7 pero no en Java 6. Migraron a Java 7.
Conclusión grandes cambios para este pequeño servidor web, que a pesar de ser pequeño y ligero tiene mucho para dar!!
Dejo link:
http://jetty.codehaus.org/jetty/
http://www.eclipse.org/jetty/documentation/current/
WAT!!!!
Este video es muy divertido; pero muy divertido. Cuenta las peripecias con las que se encuentra un programador Ruby o Javascript. Y por suerte cuenta solo algunas ...
Todos los lenguajes tienen algunas malas decisiones de diseño y esta persona las muestra de modo muy divertido.
Todos los lenguajes tienen algunas malas decisiones de diseño y esta persona las muestra de modo muy divertido.
lunes, 11 de marzo de 2013
Code school nos regala un curso de Heroku
La gente de code school ha publicado un vídeo con el objetivo de enseñar como se deployear aplicaciones en la plataforma Heroku. Heroku es un hosting para aplicaciones hechas en Ruby on Rails o otras tecnologias, un hosting bastante interesante y con un montón de add-ons para agregar mayor funcionalidad a las aplicaciones. Una onda Google App Engine pero para diferentes tecnologías Esta bueno es buena idea probarlo.
Dejo link:
http://www.codeschool.com/code_tv/heroku?__utma=1.292742160.1349920258.1362364220.1363050406.17&__utmb=1.1.10.1363050406&__utmc=1&__utmk=58240682&__utmv=-&__utmx=-&__utmz=1.1363050406.17.7.utmcsr%3Dmailchimp%7Cutmccn%3Dcode_tv_heroku%7Cutmcmd%3Demail%7Cutmcct%3Dnull
domingo, 10 de marzo de 2013
Learn Java
Quiero compartir una pagina la cual tiene como objetivo aprender java. Con esta pagina podemos probar java de forma online. Podemos leer tutoriales, hacer ejercicios,y aprender!!
Dejo link:
http://www.learnjavaonline.org/
sábado, 9 de marzo de 2013
Grunt, Un framework javascript para correr tareas.
Node.js es un framework que viene creciendo cada vez más. Grunt, es una herramienta basada en tareas, herramienta de linea de comando escrito en javascript para la plataforma Node.js. Con este framework podemos correr tareas; esta diseñado para ser extensible. Vale la pena darle una mirada..
Dejo link:
http://gruntjs.com
5 libros para aprender Spring Framework y String MVC
Spring Framework es un Framework que nos provee la inyección de dependencia y la programación orientada a aspecto; que puede ser tan fantástico esto? Y nos provee una forma de conectar diferentes tecnologías y frameworks sin acoplarnos a ellos.
Les quiero compartir un link sobre libros para aprender Spring Framework y Spring MVC.
Dejo link:
http://www.dzone.com/links/r/5_good_books_to_learn_spring_framework.html
jueves, 7 de marzo de 2013
Mir, servidor gráfico de Canonical
Canonical ha anunciado que se encuentra desarrollando un servidor gráfico llamado Mir, el cual no tiene nada que ver ni con X.Org ni con Wayland, siendo este último el servidor gráfico por el que está apostando la mayoría de los desarrolladores del mundo Linux.
La razón para pasar olímpicamente de Wayland es el objetivo que tienen en Canonical de hacer de Ubuntu un sistema operativo que sea capaz de correr en móviles, tabletas, televisiones y por supuesto ordenadores.
«Estamos desarrollando un servidor gráfico de nueva generación llamado Mir. Un componente a nivel de sistema destinado a reemplazar el gestor de ventanas X y cuyo fin es proporcionar experiencias de usuario también de nueva generación tanto en ordenadores con Linux como en dispositivos móviles que funcionan con Ubuntu»
Esto es un paso muy importante para Canonical pero se aleja de la comunidad, creo que cada vez esta dando pasos para alejarse de linux y su comunidad y acercarse a seguir sus propios objetivos.
Creo que estamos rompiendo a linux en pedazos y esto no es malo, lo malo es que desarrollemos los mismos pedazos más de una vez. Linux tiene un grabe problema con la fragmentación, cada vez tenemos linux más diferentes, con mayores problemas de incompatibilidad, con reinventos de la rueda todo el tiempo. A mi me gusta que cada distro tenga su forma de hacer las cosas, usar gnome, kde, xfce o cualquier otro; pero creo que cuando esto trae problemas de compatibilidad, de duplicidad de trabajo por parte de los desarrolladores, no es bueno.
Dejo link:
https://wiki.ubuntu.com/MainInclusionProcess
Esto es un paso muy importante para Canonical pero se aleja de la comunidad, creo que cada vez esta dando pasos para alejarse de linux y su comunidad y acercarse a seguir sus propios objetivos.
Creo que estamos rompiendo a linux en pedazos y esto no es malo, lo malo es que desarrollemos los mismos pedazos más de una vez. Linux tiene un grabe problema con la fragmentación, cada vez tenemos linux más diferentes, con mayores problemas de incompatibilidad, con reinventos de la rueda todo el tiempo. A mi me gusta que cada distro tenga su forma de hacer las cosas, usar gnome, kde, xfce o cualquier otro; pero creo que cuando esto trae problemas de compatibilidad, de duplicidad de trabajo por parte de los desarrolladores, no es bueno.
Dejo link:
https://wiki.ubuntu.com/MainInclusionProcess
Suscribirse a:
Entradas (Atom)