Translate

miércoles, 7 de octubre de 2015

Libro sobre el pasado, el presente y el futuro del Java para conmemorar su 20 aniversario



Quiero hacerme eco de la noticia que leí en javahispano, o'reilly publico un libro gratuito sobre el presente, pasado y futuro de java. El nombre del libro es Java: The Legend Past, Present, and Future
escrito por Ben Evans.


Dejo link:
http://www.javahispano.org/portada/2015/10/7/libro-sobre-el-pasado-el-presente-y-el-futuro-del-java-para.html
http://www.oreilly.com/programming/free/java-the-legend.csp

10 Libros sobre algoritmos que un programador debe leer


Quiero compartir este interesante articulo sobre algoritmo.  Los programadores siempre tenemos que reeveer los algoritmos y buscar las buenas soluciones

Dejo link:
http://java67.blogspot.sg/2015/09/top-10-algorithm-books-every-programmer-read-learn.html

SOAP vs REST

Mucho se a dicho de Rest y SOAP pero siempre es bueno aclarar las diferencias entre Rest y SOAP. A mi entender las diferencias son muchas, y no se mezclan, es decir el objetivos de su creación es totalmente diferentes.

Aprovecho y les dejo este cuadrito:


Dejo link:
http://javarevisited.blogspot.sg/2015/08/difference-between-soap-and-restfull-webservice-java.html

Scala Tutorial: Getting Started with Scala


Quiero compartir un pequeño tutorial sobre Scala que esta muy bueno de la gente de Udemy. Empieza muy fácil y es muy bueno para empezar.

Dejo link:
https://blog.udemy.com/scala-tutorial-getting-started-with-scala/

lunes, 5 de octubre de 2015

Reduce el riesgo a fallas con ELM


Ya he hablado de Elm, es un lenguaje funcional que compila a javascript. Bueno hace muy poco leo en infoQ un articulo sobre la reducción de fallas utilizando ELM.

Según este articulo una aplicación Elm, "una vez que se compila, por lo general trabaja en el primer intento sin regresiones o excepciones de tiempo de ejecución".

A la vez este articulo muestra que  ELM es más rápido que muchos frameworks javascripts:




Dejo link:
http://www.infoq.com/news/2015/09/elm-introduction-feldman

miércoles, 30 de septiembre de 2015

ionide una IDE para F#

Si adaptamos Atom para programar en F# que nos queda? Ionide es la respuesta. Un entorno de desarrollo para F# que nos ofrece:

  • syntax highlighting
  • error highlighting
  • autocompletion
  • tooltips
  • integración con F# de forma interactiva (como un RELP) 
  • Scaffolding

Dejo algunos gif:




Dejo link:
http://ionide.io/

Nuevo curso de Html 5

HTML5 XSeries Program – W3Cx

HTML5 XSeries Program from W3Cx
Master the most in-demand and fastest growing job skill today. Build new programming skills or sharpen existing ones in this two part XSeries Program from the W3C, creators of HTML5. For entrepreneurs, start-ups and large organizations, HTML5 knowledge is key to developing websites, mobile apps, video games and more. This hands-on course will teach you new techniques that you can start applying right away. Secure your future as a 21st-century developer and enroll today. 
Learn More

domingo, 27 de septiembre de 2015

Teoría de Categorías explicado por Erik Meijer

Erik Meijer es un groso, no voy a exponer su cv en este blog, solo voy a decir que le envidio mucho las remeras. Erik nos explica la Teoría de Categorías :


jueves, 24 de septiembre de 2015

Se viene GNOME 3.18

Hace varios post hable sobre Gnome y dije que no estaba bueno, bueno me equivoque. La verdad es que encontraron el camino, había que tenerles paciencia se esta poniendo muy bueno y si no mira este vídeo:



domingo, 20 de septiembre de 2015

Python 3.5 trae nuevas características

Recientemente se anuncio python 3.5 que trae nuevas características, nuevos módulos, mejoras en librerías estandar y seguridad.

Vamos a mostrar un poco la nueva sintaxis:

Corrutinas con sintaxis asincrónica-esperar: que permite a los desarrolladores escribir código como si fuera secuencial. De hecho, el compilador incorpora a través de una secuencia de corrutinas, por lo que es efectivamente concurrente. Veamos el siguiente ejemplo:

async def read_data(db):
data = await db.fetch('SELECT ...')
if (data...)
    await api.send(data ...')

Un operador que permite expresar multiplicación entre matrices:

S = (H @ beta - r).T @ inv(H @ V @ H.T) @ (H @ beta - r)
instead of:
S = dot((dot(H, beta) - r).T, dot(inv(dot(dot(H, V), H.T)), dot(H, beta) - r))

Desembalaje, que pretende extender el uso permitido del operador * y hacer posible el uso de múltiples veces en llamadas a funciones, o en el interior de tuplas:

>>> print(*[1], *[2], 3)
1 2 3
>>> dict(**{'x': 1}, y=2, **{'z': 3})
{'x': 1, 'y': 2, 'z': 3}


>>> *range(4), 4
(0, 1, 2, 3, 4)

Como primer pantallazo, son noticias muy buenas!!!


jueves, 17 de septiembre de 2015

10 tips para los que se inician en Python


Quiero compartir un post sobre tips para los que se inician en python. Esta muy bueno, fácil de entender y muy útil.

Dejo link:
http://www.techbeamers.com/top-10-python-coding-tips-for-beginners/


lunes, 14 de septiembre de 2015

Bazel


Bazel es la herramienta que Google utiliza para construir la mayoría de su software. Esta es de código abierto.

 Según Google, Bazel está dirigido a construir "código de forma rápida y fiable" y es "fundamental para la capacidad de Google dado que es una empresa grande y que crece rápidamente"

Antes de la construcción de Bazel, Google construía su software utilizando Makefiles que no le daba mayor confiabilidad. Además, en comparación con los Makefiles, Bazel ofrece conceptos de alto nivel, como "test", "C ++ binario", las nociones de "plataforma de destino" y "host plataforma ", etc.

Bazel soporta varios lenguajes en los que estan c++, java, rust, scala o groovy.

Dejo link:
http://bazel.io/

domingo, 13 de septiembre de 2015

Introducción a ScalaTest


Vamos a hacer algunos test con ScalaTest. Empecemos haciendo una clase:

case class Guest(name: String)

case class Room(number: Int, guest: Option[Guest] = None){ room =>

  def isAvailable(): Boolean = ???

  def checkin(guest: Guest): Room = ???

  def checkout(): Room = ???

}

/*
 * We will automatically create 10 rooms
 * if these are not specified.
 */
case class Hotel(
  rooms: List[Room] = (1 to 10).map(n => Room(number=n)).toList){

  def checkin(personName: String): Hotel = ???

}

Hemos hecho una clase Hotel que contiene 10 habitaciones. El ??? significa que el metodo no fue definido, pero me permite compilar. Vamos a trabajar bien TDD.

Antes que nada agregamos el framework al proyecto utilizando sbt:

libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.4" % "test"

Ahora vamos a hacer una clase común para reutilizar métodos comunes:

package org.me.hotel

import org.scalatest.{FlatSpec,Matchers}

abstract class UnitTest(component: String) extends FlatSpec
  with Matchers{

  behavior of component

}

Como se puede ver hicimos una clase padre o general para todos los tests, esta extiende de FlatSpec e implementa Matchers.

A la vez le pasamos por parámetro el nombre del componente a probar. Si quisieramos utilizar esta clase lo hariamos de la siguiente manera:

class MyClassUnitTest extends UnitTest("MyClass")

A la vez utilizamos Matchers dado que nos provee expresiones más cercanas a los humanos como:

(2+2) should equal (4)
(2+2) shouldEqual 5
(2+2) should === (4)
(2+2) should be (4)
(2+2) shouldBe 5

Bueno ahora definimos nuestro test:

package org.me.hotel

class RoomTest extends UnitTest("Room") {

  it should "provide info about its occupation" in {
    Room(1).isFree() shouldEqual true
    Room(1,None).isFree() shouldEqual true
    Room(1,Some(Guest("Bruce"))).isFree() shouldEqual false
  }

  it should "allow registering a new guest if room is free" in {
    val occupiedRoom = Room(1).checkin(Guest("James"))
    occupiedRoom.isFree shouldEqual false
    occupiedRoom.guest shouldEqual(Option(Guest("James")))
  }

  it should "deny registering a new guest if room is already occupied" in {
    an [IllegalArgumentException] should be thrownBy {
      Room(1,Some(Guest("Barbara"))).checkin(Guest("Bruce"))
    }
  }

  it should "deny checking out if room is already free" in {
    an [IllegalArgumentException] should be thrownBy {
      Room(1).checkout()
    }
  }

  it should "allow checking out if room is occupied by someone" in {
    val room = Room(1,Some(Guest("Carmine")))
    val freeRoom = room.checkout()
    freeRoom.isFree shouldEqual true
  }

}

Como se puede ver los test quedan escritos casi en lenguaje natural.

Si corremos los tests nos darán un error:

> test
[info] RoomTest:
[info] Room
[info] - should provide info about its occupation *** FAILED ***
[info]   scala.NotImplementedError: an implementation is missing
[info]   at scala.Predef$.$qmark$qmark$qmark(Predef.scala:252)
[info]   at org.me.hotel.Room.isFree(Room.scala:6)
[info]   at org.me.hotel.RoomTest$$anonfun$1.apply$mcV$sp(RoomTest.scala:6)
[info]   at org.me.hotel.RoomTest$$anonfun$1.apply(RoomTest.scala:5)

...

[info] Run completed in 699 milliseconds.
[info] Total number of tests run: 15
[info] Suites: completed 6, aborted 0
[info] Tests: succeeded 3, failed 12, canceled 0, ignored 0, pending 0
[info] *** 12 TESTS FAILED ***
[error] Failed tests:
[error]   org.me.hotel.RoomTest
[error]   org.me.hotel.HotelTest
[error] (test:test) sbt.TestsFailedException: Tests unsuccessful
[error] Total time: 6 s, completed 12-ago-2015 16:08:47

Ahora a hacer que nuestras clases pasen sus tests, Suerte!!!!


martes, 8 de septiembre de 2015

Este sábado 12 empieza el #HackathonLitoral2015 en Santa Fe. Inscribite!

Quería invitarlos al hackathon litoral: 
Traé tu idea al Hackathon Litoral 2015!  Santa Fe / Paraná
En la tercera edición del Hackathon Litoral, logramos algo que soñábamos: unir a las ciudades de Santa Fe y Paraná en dos eventos y así potenciar la comunidad.
 
Te invitamos a traer tus ideas para mejorar la vida en la ciudad. Primero nos encontramos en el GDG IOT DevFest, para aprender a armar prototipos funcionales y formar los equipos.
Sumate el sábado 12 de septiembre a las 8:30 am en la Facultad de Ingeniería y Ciencias Hídricas, Universidad Nacional del Litoral. [Ciudad Universitaria, Ruta Nacional N° 168 - Km. 472,4, Santa Fe]



 
Una semana después nos reencontramos en el Hackathon, para pasar las próximas 36 horas diseñando los prototipos. El evento se realizará en el Club Social en Paraná, desde el viernes 18 de septiembre a las 7:00 PM hasta el sábado 19 a las 10:00 am. [San Martín 958, Paraná, Entre Ríos]



¿Cómo me inscribo?
 
bit.ly/hack-litoral
 

¿Cuáles son los temas de este Hackathon?
 
• Comidas
• Cultura
• Ciudad Verde
• Transporte
• Educación
 
¿A quiénes se convoca?
 
Estudiantes, Tecnólogos, Desarrolladores, Emprendedores, Diseñadores, Curiosos, Inquietos, Creativos, Cocineros, Cerveceros, Amantes de los viajes, Hoteleros, Agentes de Viaje, Doctores, Organizaciones Sociales, Nutricionistas, Turistas, Bloggeros, Twitteros, Periodistas.
 
¿Cómo es la dinámica?
El objetivo del evento es armar equipos para presentar prototipos funcionales que solucionen problemas concretos usando tecnología y diseño.
Debido a la naturaleza colaborativa del evento no habrá ganadores, perdedores, premios o un jurado que evalúe las ideas.
Todos tienen la posibilidad de crear con la ayuda de los participantes el equipo de mentores.
 
¿Dónde encuentro más información?
 

  

¡Te esperamos!

Curso recomendado de Coursera

Me llego el siguiente mail de Coursera, muy buenos cursos:

Ready to learn something new?
   My Courses  Course Catalog
We have recommendations for you
We combed our catalog and found courses and Specializations that we think match your interests. Browse our recommendations below, and start learning something new today.

Recommended Specializations

Java Programming: An Introduction to SoftwareJava Programming: An Introduction to Software
Duke University • Available Now
Python for EverybodyPython for Everybody
University of Michigan • Available Now
Java Programming: Object-Oriented Design of Data StructuresJava Programming: Object-Oriented Design of Data Structures
University of California, San Diego • Available Now
Emerging Technologies: From Smartphones to IoT to Big DataEmerging Technologies: From Smartphones to IoT to Big Data
Yonsei University • Available Now
View All Specializations