Translate

jueves, 10 de enero de 2013

Software libre para una sociedad libre


Richard Stallman es el creador del sistema GNU y la GPL, pilares básicos del Software libre. En 2002, GNU Press publica la primera edición de su libro: Free Software, Free Society: Selected Essasys of Richard M. Stallman.

En el libro, Stallman intenta hacernos comprender como los fabricantes de software y sus prácticas monopólicas están retrasando la evolución de la informática.

El libro esta en español.

Dejo link:
http://www.gnu.org/philosophy/fsfs/free_software.es.pdf

El blog recomendado de la semana: Softwarez Live



Softwarez Live es un blog para los que empezamos en python, tiene vídeo tutoriales y muy buena info espero que crezca.

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

Strings y GString, Tratando cadenas con Groovy


Dado el ultimo post y que me gusta comparar lenguajes, veamos como Groovy trata los Strings. 


Groovy permite el uso de " y de ' similar a javascript. De esta forma podemos usar uno o el otro según nos convenga; por ejemplo:


"Hola me llamo: 'Pepe'" o 'Hola me llamo: "Pepe"'


Groovy permite concatenar strings con el + :



a = "world"
print "hello " + a + "\n"

""" permite tener string multilinea por ejemplo:



def text = """\
Hola Pepe!
Como estas?
"""

Es posible utilizar notación para literales de cadena que tienen otras ventajas como por ejemplo no se necesita barras invertidas adicionales para escapar caracteres especiales. Esto es especialmente útil con expresiones regulares o nombres de archivos de Windows.



def s = /.*foo.*/
def dirname  = /^.*\//
def basename = /[Strings and GString^\/]+$/

GString permite interpolación de cadenas similar a Velosity, JExl o JSP EL.  



foxtype = 'quick'
foxcolor = ['b', 'r', 'o', 'w', 'n']
println "The $foxtype ${foxcolor.join()} fox"

Internamente lo que pasa es que si una cadena contiene un ${...}  el compilador se da cuenta y instancia GString. GString trabaja la interpolación como lazy evaluation; lo que permite muchísimo. 


println new Date()



x = "It is currently ${ new Date() }"
assert x.values[0] instanceof Date
y = "It is currently ${ writer -> writer << new Date() }"
assert y.values[0] instanceof Closure
sleep 5000
println x
println y

GString también le permite usar clusures de la siguiente forma:


def deepest = {-> "deepest"}
def deep = {-> "deeper and $deepest"}
println "how deep is deep? $deep"

// which is equivalent to:

println "how deep is deep? ${{-> "deeper and ${{-> "deepest"}}"}}" // for demonstrating it is a nested usage only



Otro lenguaje y otra forma de hacer las cosas. Groovy permite manejar Strings fácilmente. 


Dejo Link: 

http://groovy.codehaus.org/Strings+and+GString




String Interpolation en Scala 2.10


Como vimos en un post anterior Scala libero la versión 2.10 con importantes novedades, entre ellas String Interpolation o Interpolación de cadenas. Lo que permite esta técnica es llamar  variables directamente desde el string, sin tener la necesidad de concatenar strings. Veamos un ejemplo:

val name = "Pepe"
println(s"Hola $name")  // Hola Pepe

Podemos ver que en el ejemplo se utilizo "s" este prefijo nos permite el uso de variables de manera directa dentro de la propia cadena. s nos permite utilizar cualquier variable que este en el contexto y también expresiones:

println(s"1 + 1 = ${1 + 1}")

"f" permite formatear una cadena muy similar al printf de otros lenguajes como C++, veamos un ejemplo:

val height = 1.9d
val name = "Pepe"
println(f"$name%s is $height%2.2f meters")  // Pepe is 1.90 meters

Ojo f es type-safe; lo que significa que si utilizamos una manera de formatear números y la variable es string; va a lanzar una excepción.

raw se diferencia de s dado que escapa caracteres especiales. Veamos un ejemplo:

scala> s"a\nb"
res0: String =
a
b

Pero con raw sería:

scala> raw"a\nb"
res1: String = a\nb

La interpolación de cadenas no funciona con sentencias “pattern matching”. Esta funcionalidad está planificada para su inclusión en la versión 2.11 de Scala.

Un gran avance, Scala sigue creciendo!!

Dejo link:
http://docs.scala-lang.org/es/overviews/core/string-interpolation.html



miércoles, 9 de enero de 2013

Se Libre...Se Linux

Un poco de publicidad ...



Más allá del vídeo y la cuestión marketinera, Linux es un sistema operativo que logra que lo quieran y tener gente que con ese amor y pasión lo construye.

Desarrollo dirigido por pruebas en Python

Quiero invitarlos a ver el siguiente tutorial, que nos explica TDD en phyton

Dejo el link:
http://pybonacci.wordpress.com/2013/01/07/desarrollo-dirigido-por-pruebas-en-python-i-una-historia-que-pasa-todos-los-dias/

domingo, 6 de enero de 2013

Scala 2.10.0 fue liberado!!


Scala 2.10 ha sido lanzado oficialmente incluyendo muchas nuevas características. Incluyendo nuevas características. Entre ellas se puede nombrar, interpolación de strings, actores de Akka ahora son parte del lenguaje.

Dejo el link:
http://www.scala-lang.org/node/27499

Ceylon IDE


Ceylon IDE es un plugin de eclipse que nos facilita programar en Ceylon, entre las características podemos nombrar:

Una perspectiva con Ceylon Explorer view


  • Compilación incremental y reporte de errores interactivo
  • Inter-compilación con Java
  • Compilación con Javascript
  • Ejecutar o Depurar tanto con la JVM como con Node.js
  • Resaltado de sintaxis personalizable
  • Jerarquía de tipos de ventanas emergentes
  • Reporte de / / todo y / fix / en vista Tareas y anotaciones de tareas

Y mucho más!

Dejo un video:



Dejo link:
http://ceylon-lang.org/documentation/current/ide/

sábado, 5 de enero de 2013

Spring Scala, Facilitando el uso de Spring en Scala


El objetivo de Spring Scala es facilitar el uso de Spring framework en proyectos Scala. Como sabrán la adopción de Scala está creciendo cada vez más; pero los que venimos del mundo Spring; no podemos utilizar el conocimiento que tenemos? Claro que si, podemos utilizar Scala con Spring. Hoy podemos utilizar Spring en proyectos Scala sin utilizar Spring Scala pero al igual que cualquier lenguaje Scala tiene su propia forma de hacer las cosas y si usamos Spring haremos las cosas muy al estilo Java. Por lo tanto el proyecto Spring Scala arregla esto.


Que provee Spring Scala?
  • Facilidad para utilizar inyección de dependencia
  • Configuración de beans de forma funcional
  • Utilizar Template de Spring a la manera de Scala

Si quieren utilizarlo utilizando maven deben agregar el siguiente repositorio y la dependencia:



    
        milestone.repo.springsource.org
        repo.springsource.org-milestone
        https://repo.springsource.org/libs-milestone
    


    org.springframework.scala
    spring-scala
    1.0.0.M1


Spring Scala está en progreso por lo tanto se esperan muchos cambios y puede tener algunos bugs.

Dejo links:
http://blog.springsource.org/2012/12/10/introducing-spring-scala/

viernes, 4 de enero de 2013

Crypt4you – Aprende criptografía y seguridad informática gratis!!


Criptografía (del griego κρύπτω krypto, «oculto», y γράφως graphos, «escribir», literalmente «escritura oculta») tradicionalmente se ha definido como la parte de la criptología que se ocupa de las técnicas, bien sea aplicadas al arte o la ciencia, que alteran las representaciones lingüísticas de mensajes, mediante técnicas de cifrado y/o codificado, para hacerlos ininteligibles a intrusos (lectores no autorizados) que intercepten esos mensajes. Por tanto el único objetivo de la criptografía era conseguir la confidencialidad de los mensajes. Para ello se diseñaban sistemas de cifrado y códigos. En esos tiempos la única criptografía que había era la llamada criptografía clásica.

Que sería mi vida sin la wikipedia!! Todo estos conceptos y conceptos de seguridad informática los podes encontrar en  Crypt4you y de forma gratuita.

Dejo el link:
http://www.dragonjar.org/crypt4you-aprende-criptografia-y-seguridad-informatica-de-otra-forma-y-gratis.xhtml?utm_source=anonymous&utm_medium=twitter&utm_campaign=Feed%3A+dragonjar%2FpKru+%28La+Comunidad+DragonJAR%29

jueves, 3 de enero de 2013

Tutorial de Node.js


Quiero compartir el siguiente tutorial para iniciar en Node.js; según la pagina:

"El objetivo de este documento es ayudarte a empezar con el desarrollo de aplicaciones para Node.js, enseñándote todo lo que necesites saber acerca de JavaScript "avanzado" sobre la marcha. Este tutorial va mucho más allá del típico manual "Hola Mundo"."

Dejo el link:
http://www.nodebeginner.org/index-es.html

miércoles, 2 de enero de 2013

Ubuntu Phone, linux se viene con todo!!

Creo que la noticia ya no es tan novedosa, pero no quiero dejar de ser eco de este gran acontecimiento, Ubuntu lanzo su versión mobile. Y porque esto es tan bueno? Porque diversifica el mercado y es otro linux para nuestras tables y celulares. Recordemos que linux es el rey del mercado mobile, con el indiscutido rey Android; pero también existen otros sistemas como Firefox OS, Open WebOS, Sailfish, Tizen, Meego y ahora Ubuntu.

Si bien no hablaron de algún proveedor que proporcione Ubuntu preinstalado, creo que va a ver opciones. También creo que es la hora de como usuarios pedir a las empresas más opciones.

Recuerdan que cuando ubuntu empezo a triunfar empezaron a proliferar las distros basadas en él. Pasara lo mismo con Ubuntu Phone? Se viene Linux Mint Phone?

Dejo un video:



Dejo links:
http://www.ieco.clarin.com/tecnologia/Anuncian-lanzamiento-software-Ubuntu-celulares_0_839916212.html

Encapsular lo que varia




Termine el libro de Patrones de Erich Gamma. La verdad muy bueno, me intereso mucho como muestra los patrones desde un lenguaje dinamicamente tipado como SmallTalk y desde otro estaticamente tipado como C++. Les dejo unos párrafos que me gustaron, que tratan de describir la mayoría de los patrones de comportamiento:

Encapsular aquello que puede variar es el tema de muchos patrones de comportamiento. Cuando un determinado aspecto de un programa cambia con frecuencia, estos patrones definen un objeto que encapsula de dicho aspecto. De esta manera, otras partes del programa pueden colaborar con el objeto siempre que dependan de ese aspecto. Los patrones normalmente definen una clase abstracta que describe el objeto encapsulado, y el patrón toma su nombre de ese objeto. Por ejemplo:

  • Estrategia: encapsula un algoritmo.
  • Estado: encapsula un comportamiento dependiente del estado.
  • Mediador: encapsula el protocolo entre objetos.
  • Iterador: encapsula el modo de acceder y recorrer una colección. 

Estos patrones describen aspectos de un programa que probablemente cambien. La mayoría de los patrones tienen dos tipos de objetos: el nuevo objeto que encapsula y el objeto existente que usa un nuevo objeto creado. Normalmente si no fuera por el patrón, la funcionalidad de los nuevos objetos seria una parte integral de los existentes. Por ejemplo, el código de una Estrategia probablemente estaría ligado al contexto de la estrategia, y el código de un Estado se encontraría implementado directamente en el contexto del estado.

Pero no todos los patrones de comportamiento de objeto dividen así la funcionalidad. Por ejemplo, el patrón Chain of Responsibility trata con un numero indeterminado de objetos, cada uno de los cuales puede que ya exista en el sistema

El patrón Chain of Responsibility muestra otra diferencia entre los patrones de comportamiento: no todos definen relaciones de comunicación estática entre las clases. El patrón Chain of Responsibility describe el modo de comunicación entre un numero indefinido de objetos. Otros patrones usan objetos que se pasan como parámetros.

Como conclusión solo les puedo recomendar que lean "Patrones de Diseño" de Erich Gamma.

domingo, 30 de diciembre de 2012

Feliz 2013!!



Feliz año nuevo 2013 para todos, en especial a todas las persona que nos siguen, comentan o simplemente leen cada tanto.

Mis mejores deseos para todos!!

jueves, 27 de diciembre de 2012

JEdit versión 5 soporta Scala y Dart


Si no conocen JEdit, que les puedo contar? Es un editor de texto hecho en Java por lo tanto es multiplataforma. Es muy bueno, soporta plugins y más de 200 lenguajes, es configurable y de licencia GPL; lo único que le falta es que cebe mate.

Yo lo uso mucho en linux porque en linux no esta el notepad++ que personalmente me parece muy bueno también.

Lo interesante de la noticia es que ahora en su versión 5 va a soportar Scala y Dart. Se puede ver el crecimiento de este editor pero tambien de estos dos lenguajes que cada vez más se van haciendo espacio.

Dejo links:
http://www.infoq.com/news/2012/12/jedit5
http://www.jedit.org/