sábado, 31 de agosto de 2013

Leiningen, el maven de Clojure

Leiningen es como maven, nos permite crear nuestros proyectos clojure, manejar las dependencias, ejecutar una aplicación, etc...

Como lo instalamos en linux? Fácil abrimos una consola y escribimos:

wget https://raw.github.com/technomancy/leiningen/stable/bin/lein

Le damos permiso:

chmod +x lein

y luego ejecutamos:

./lein

Esperamos un rato...

Agregamos a lein al path:

export $PATH=/path/lein:$PATH

y luego si queremos creamos un proyecto así:

lein new app my-stuff

Bien para empezar, voy a seguir dando le rosca a leiningen en próximos post.

Dejo links:
https://github.com/technomancy/leiningen
http://leiningen.org/

martes, 27 de agosto de 2013

Principles of Reactive Programming

Como lo anuncio este blog, en un post anterior el señor Martin Odersky, estaba trabajando en otro curso. Se hizo esperar pero ya nos podemos inscribir a "Principles of Reactive Programming".

Que podemos aprender en este curso? Vamos a aprender a escribir aplicaciones basadas en componentes, orientadas a eventos, escalable y resistente a fallas.

Dejo el link:
https://www.coursera.org/course/reactive

Dejo un video:

 


domingo, 25 de agosto de 2013

Como empezamos con Clojure?


La idea es ve como podemos empezar con Clojure, yo también estoy empezando así que "esto puede fallar" veamos una forma fácil de empezar utilizando el zip que se encuentra en la pagina: http://clojure.org/downloads. Deszipiamos este archivo y ejecutamos:

java -cp clojure-1.5.1.jar clojure.main

Como ven van a necesitar java con la JDK 6 o superior funciona de maravillas.

y con esto ya podemos utilizar el RELP:

user=> (+ 1 2 3)
6
user=> (javax.swing.JOptionPane/showMessageDialog nil "Hello World")

Otra formas de generar nuestros proyectos Clojure es con Leiningen que es como el maven de Clojure, pero eso es otro post. Esto es solo una pequeña prueba para el hombre pero un gran paso para un desarrollador.

Clojure el lenguaje funcional para plataforma Java

Clojure nos da una manera rápida y fácil para acceder a la plataforma Java. Se puede llamar a cualquier API directamente con:

(System/getProperties)
-> {java.runtime.name=Java(TM) SE Runtime Enviroment
… etc...

Clojure agrega una cantidad de formas sintácticas de llamar métodos Java. Veamos un ejemplo:

// Java
“hello”.getClass().getProtectionDomain()

;Clojure
(.. “hello” getClass getProtectionDomain)

Clojure provee una forma simple para implementar Java interfaces y subclases de Java. También todas las funciones de clojure implementan Callable y Runnable. Esto se podría utilizar para llamar las funciones desde thread.

(.start (new Thread (fn [] (println “Hello” (Thread/currentThread)))))
->Hello #<Thread Thread[Thread-0,5,main]>

Como podemos ver Clojure es claro y simple y se puede llamar a clases java directamente.

Clojure es un lenguaje funcional

Clojure es un lenguaje funcional pero no es un lenguaje funcional puro como Haskell. Es un lenguaje funcional con las siguientes características:

  • Las Funciones son first-class objects, lo que sería que podemos crearlas, pasarlas como parámetros, guardarlas en variables, retornarlas, como cualquier otro tipo de datos.
  • Los datos son inmutables
  • Las funciones son puras, lo que significa que una función siempre devuelve el mismo valor con iguales parámetros; no mantiene estados.

La programación funcional es fácil de entender, es menos propenso a errores y mucho más fácil de reutilizar. Por que?

  • Es simple, sin loops, ni variables, ni mutables estados.
  • Es thread safe.
  • Es paralelizable, como las funciones no mantienen estados se pueden resolver de forma paralela, lo que aprovecha mucho más múltiples micros. 

Por que Clojure?


Las características más importantes de Clojure son la simplicidad y la potencia. Y esto es por sus características:
  • Programación Funcional: la programación funcional es simple y además es fácil de entender, fácil de mantener, fácil de testear
  • Clojure corre sobre la plataforma Java lo que lo hace potente, los beneficios de toda la plataforma java con sus frameworks y herramientas; podemos utilizarlos en Clojure.
  • Lisp es simple, lisp tiene una sintaxis sumamente simple y fácil de aprender.
  • Lisp es también potente, gracias a las macros de lisp, podemos fácilmente hacer DSLs y modificar el lenguaje para hacer mucho escribiendo muy poco.


Por todas estas características podemos afirmar que clojure es simple y potente.

viernes, 23 de agosto de 2013

Netis, Netty en Scala

Recuerdan a nuestro amigo Netty?, Netty es un framework de Jboss que provee un manejo asíncrono en aplicaciones web, un framework ideal para hacer comet o utilizar wesocket de HTML 5.

Netty es un cliente NIO infraestructura de servidor que permite el desarrollo rápido y sencillo de aplicaciones de red, tales como servidores de protocolo y los clientes. Simplifica y agiliza la programación de la red tales como TCP y UDP socket servidor.

Cuando lo usarían? Por ejemplo si quieren hacer un chat el cliente (browser) sabe cuando enviar un texto, pero es incapaz de saber cuando le contestan. Por lo tanto lo que se hacia antes (cuando era joven XD ) era tener un javascript que cada 1 minuto o menos pregunte al servidor si alguien le estaba hablando. Obviamente esto mataba al servidor si eran muchos usuarios; pero en esa época no quedaba otra.

Por suerte evolucionamos, se inventaron técnicas de comet y también websocket con html 5. Y todo más fácil con Netty!

Netis nos brinda una capa de abstracción para utilizar Netty desde scala, pero programando scala-like. Es un framework que nos permite utilizar fácilmente Netty desde scala.


Dejo link: https://github.com/prassee/netis

Scalapeño 2013 en parleys

Scalapeño es una conferencia sobre el lenguaje Scala y han subido vídeos de esta conferencia a parleys.

Que más decir?
Ha disfrutar!!

Dejo link:
http://parleys.com/channel/52013e6ce4b0354ac31ac5f7/presentations

miércoles, 21 de agosto de 2013

Programming Principles: Functions and Objects with Professor Martin Odersky

El próximo 17 de Septiembre comienza nuevamente Programming Principles: Functions and Objects con el profesor Martin Odersky, el creador de Scala. El que no haya hecho este curso se lo recomiendo se aprende muchísimo y no solo de Scala si no de programación funcional y orientada a objetos.

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

Dejo video:

sábado, 17 de agosto de 2013

Debian cumple 20 años

Esta noticia es vieja, el día de ayer Debian cumplió 20 añitos, no quería dejar pasar la oportunidad para felicitar a mi distro preferida, he usado Debian hace ya bastante y siempre tuve buenos resultados. Por cuestiones laborales me he pasado a las distribuciones Red Hat pero siempre extraño al apt get y todas las características de este gran sistema operativo.

En servidores sin duda es el más confiable, no hay con que darle. Y es también el papa de grandes distros como Ubuntu, Mint, Elementary OS, knoppix, etc... Que más decir?

Feliz Cumpleaños!!

jueves, 15 de agosto de 2013

Peppermint Linux OS

Si pensamos en una distribución basada en Ubuntu, pero que prioriza los servicios en la nube, estamos pensando en Peper mint.

Peper mint en una distro basada en Lubuntu por lo que utiliza  LXDE desktop environment. Pero lo más importante es que es una distro que prioriza los servicios en la nube, por lo tanto espera que utilices google doc, gmail, dropdox, etc...

Trae de forma nativa las siguientes aplicaciones:

  • Chromium Web Browser
  • Dropbox
  • Guayadeque (Music Player)
  • Ice
  • X-Chat (IRC Client)
  • Transmission (Torrent Client)
  • Gnome-Mplayer (Media Player)

Y como aplicaciones en la nube:

  • Editor by Pixlr (Image Editor)
  • Express by Pixlr (Photo Editor)
  • Pixlr-o-Matic (Photo Filter App)
  • Last.FMSSB
  • Seesmic Web
  • The Cloud Player
  • YouTube
  • eBuddy
  • Google Calendar
  • Google Docs
  • Gmail
  • Google Reader
  • Peppermint Bug Tracking
  • Peppermint Forums

Dejo link: http://peppermintos.com/

Dejo algunas pantallas:





Smalltalk en el browser con Amber

Amber es un lenguaje inspirado en smalltalk (no es smalltalk) que compila a javacript. Amber compila eficientemente a javascript porque tiene una relación uno a uno con elementos javascript.

Está diseñado para que el desarrollo del lado del cliente sea más rápido y más fácil. Amber incluye un entorno de desarrollo, un framework para prueba de unidad, inspector de objetos y depurador.

Como lo podemos utilizar, muy facil importando la librería y corriendo una función:

<script src="js/amber.js" type="text/javascript"></script>
<script type="text/javascript"> loadAmber()</script>


Dejo link:
http://amber-lang.net/

Twitter University: Building a world-class engineering organization




A la gente de twitter se le ocurrio una gran idea, compartir el conocimiento que tienen con todo el mundo y para ello van abrir Twitter University. Donde obtendremos enseñanza y entrenamiento. Va a ser una plataforma en la cual podremos tomar cursos de desarrollo, html, css, escalabilidad, etc.


Espero con ansias!!


Dejo el link del anuncio:
https://blog.twitter.com/2013/twitter-university-building-a-world-class-engineering-organization

Elementary OS Luna Review

Sigo viendo Elementary OS y me gusta bastante, ahora les dejo un vídeo:



Otra cosa, muy bueno el canal InfinitelyGalactic de you tube.

martes, 13 de agosto de 2013

Linux Shell Scripting Cookbook



Quiero compartir un libro sobre scripting en el shell de linux. Que lo disfruten!!


Dejo link:
http://www.vaqueano.com/posts/ebooksytutoriales/246/Linux-Shell-Scripting-Cookbook-Sarath-Lakshman.html

Learn to Program: The Fundamentals

Me gustaría aconsejarles que hagan el curso "Learn to Program: The Fundamentals" de Cursera, la verdad es que esta muy bueno; y comienza la próxima semana. El curso es un curso básico de programación en Python, pero los conocimientos se pueden extrapolar a cualquier lenguaje.


Dejo links:

lunes, 12 de agosto de 2013

Tomcat 8.0.0-RC1 (alpha) Released


Tengo el agrado de comunicar el primer release de Tomcat 8. Que hay de nuevo viejo??
  • Soporte para Java Servlet 3.1, JavaServer Pages 2.3, Java Unified Expression Language 3.0 y Java WebSocket 1.0.
  • Soporte para Web socket
  • HTTP protocol upgrade
  • Soporte experimental para SPDY
  • y mucho más!!

Los cambios son muchos y la espera larga, pero se viene un producto que promete.

Dejo link:
http://tomcat.apache.org/
http://tomcat.apache.org/download-80.cgi

acamica.com


Gracias al amigo del blog Matías, pude conocer la pagina acamica.com; es un proyecto similar a
Coursera.org y Edx.org pero con el foco puesto en América Latina, con clases online y gratis de universidades de la región.

Lo probé y esta muy bueno y tiene cursos muy interesantes, me anote a varios!!

Dejo link:
http://acamica.com/

domingo, 11 de agosto de 2013

PyCursos


Quiero recomendarles la pagina PyCursos donde podrán encontrar varios cursos de Python en Portugués, como mi portugués no es muy bueno no pude hacer cursos, pero espero que crezca y podamos hacer cursos en castellano.

Dejo el link:
http://beta.pycursos.com/

Se acabo la esperás con nosotros Elementary OS Luna!!

Es una distro que estoy esperando hace rato, estaba en estado beta pero hace unos días han liberado su primera versión estable.

Elementary OS es un distro basada en Ubuntu, pero que basa su diseño en las MACs; les dejo un video:


Dejo links:

Dejo algunas pantallas:





Cierre de una instancia de Base de datos Oracle

En el post anterior hablamos como levantar un base oracle, ahora vamos a hablar de como bajar la base.


Existen diferentes modos de bajar la base de datos, cada uno tiene que ver como termina lo que esta haciendo.

ABORT: como podrán imaginar es el modo más rudo, se debe utilizar solo cuando es necesario, pero es la forma más rápida de terminar. Es como apagar el servidor, jeje...
INMEDIATE: Es la opción más utilizada, se realiza un rollback de las transacciones no confirmadas.
TRANSACTIONAL: para cuando tenemos tiempo, permite que finalice todas las transacciones y luego baja la base.
NORMA: cuando tenemos más tiempo aun, Espera que todas las sessiones se desconecten.

Como pueden imaginar ABORT es la más rápida y NORMAL la más  lenta.

Como levanta la base de datos Oracle??

Como sabrán este blog es de software libre y yo apoyo al software libre, pero en ocaciones no se puede elegir con que herramientas trabajar, por lo que tenemos que resignarnos a aprender herramientas comerciales. En este caso voy a hablar de la base de datos Oracle que digan lo que digan no hay con que darle, es muy buena pero la desventaja que tiene es que no es muy intuitiva en su uso.

Quiero contarles como levanta una base de datos Oracle, si han usado Oracle sabrán que se tiene que logearse al sqlplus y luego para levantar con el comando startup. De esta forma levanta la base de datos de forma normal y abierta lo que permite conectar a cualquier usuario a la base. Pero no es la unica forma de levantar la base de datos.



Oracle tiene diferentes estadios de actividad:
  • La base esta apagada, en este estadio no hicimos nada; solo podemos levantarla. 
  • Base de datos no montada este es el primer estadio de la base, en este modo se incluyen las siguientes tareas:
    • Búsqueda de archivos de industrialización pfile para los amigos; lo hace en el siguiente orden:
      • Primero busca el spfile con la siguiente estructura spfile<SID>.ora este archivo es compilado por nada en el mundo lo editen con el nano, vi o otro editor; lo van a romper; les digo porque me paso. 
      • si no lo encuentra busca spfile.ora
      • si no lo encuentra busca init<SID>.ora; este archivo es texto plano; editenlo con cualquier editor. 
      • Estos archivos contienen parámetros de industrialización por eso pfiles y cuando hacemos startup le podemos indicar que archivo usar startup pfile="/home/oracle/miPFile.ora"
    • Asignación SGA
    • Inicio de los procesos de segundo plano
    • Apertura del archivo alert<SID>.log y de los archivos de rastreo.
  • Base de datos Montada, en este estadio la base realiza las siguientes tareas:
    • Asociación de una base de datos con una instancia iniciada previamente.
    • Búsqueda y apertura de los archivos de control especificados en el archivo de parámetros. 
    • Lectura de los archivos de control, para obtener los nombres y los estados de los archivos de datos y de los archivos de redolog en linea. Sin embargo no se hacen comprobaciones para verificar la existencia de los archivos de datos y redologs.
  • Base de datos Abierta, es el estado "normal" de la base, donde los usuario pueden acceder; que hace en este estadio: 
    • Apertura de los archivos de datos en linea
    • Apertura de los archivos de redolog en linea.
Para que me puede servir levantar una base en un estado intermedio? Para muchas acciones, por ejemplo podemos montar la base y no abrirla para hacer un backup y así me aseguro que nadie inserte datos mientras dura el backup. Y seguramente si Oracle tuvo un problema al levantar quedo en un estado intermedio. 


sábado, 3 de agosto de 2013

Las personas detrás del lenguaje.

Sigo revisando la historia de los lenguajes Java y sus inventores, recuerden que vimos Scala, Clojure, Groovy, Jython, JRuby y Ceylon. Ahora vamos con Kotlin, Gosu, Fantom, Redline.

Kotlin es un lenguaje de la empresa Jetbrains, Jetbrains es la empresa dueña de la IDE java, IntelliJ. La idea era hacer un lenguaje estéticamente tipado, más evolucionado que Java que compile a bytecode y javascript. Quien esta detrás de este lenguaje?  Andrey Breslav es Language Engineer, entre otras cosas comenzó su carrera en Borland, donde trabajó en implementaciones de lenguajes. Tambien contribuyo con algunas librerías, James Strachan (este pibe esta en todas) y Evgeny Goldin. Si no se acuerdan James Strachan es el creador de Groovy.

Guidewire Software se le ocurrió hacer un lenguaje script llamado GScript, este lenguaje se utilizaba para escribir reglas de negocio, y fue mejorado por 8 años dando luz a Gosu, Gosu fue liberado a la comunidad con licencia Apache. Gosu esta inspirado en Java, C#, EMACScript y también Ruby.

Brian and Andy Frank (los hermanos Frank) querían resolver el problema de la portabilidad entre java y .net. Es decir querían escribir un programa y compilarlo para la plataforma java y la .net; para hacer esto se les ocurrió hacer un lenguaje nuevo, llamado Fantom. Oriiginalmente era un lenguaje que embebía a otros lenguajes, pero luego tomo protagonismo. Fantom es un lenguaje inspirado en Java y C#. Es de tipado estático y actualmente compila a bytecode, MIL (microsoft internal language) y javascript.

Redline Smalltalk, la idea es llevar Smalltalk a la plataforma java, Smalltalk real con imagenes y todo. No se bien a quien se le ocurrió, pero la idea es genial. En este proyecto están trabajando: Sean T. Allen, James Ladd y Rob Roland

Debería ver la historia de otros lenguajes...
...pero esa es otra historia y debe ser contada en otra ocasión...

Libros de linux


Quiero compartir unos cuantos libros de linux, unix y hacking ético, para quien les interese:

Dejo los links:
http://tuxapuntes.com/manual-hacking-etico/
http://tuxapuntes.com/aprenda-linux-como-si-estuviera-en-primero-2/
http://tuxapuntes.com/introduccion-al-sistema-operativo-unix-2/
http://tuxapuntes.com/sistema-operativo-gnulinux-basico-uoc/

jueves, 1 de agosto de 2013

Libros sobre Pharo


Pharo es un moderno IDE open source para el lenguaje Smalltalk-80. Smalltalk es un gran lenguaje; todo lo bueno fue hecho en smalltalk y esta IDE no permite utilizar el lenguaje de forma cómoda.  

Dejo unos libros:
http://rmod.lille.inria.fr/pbe2/
http://pharobyexample.org/versions/PBE1-2009-10-28.pdf

Y dejo link para bajar Pharo:
http://www.pharo-project.org/home

Un agujero en la memoria colectiva: cómo el copyright hizo desvanecerse medio siglo de libros

Este articulo no tiene una relación directa con el software pero si, con las ideas, con la creación y el software también es eso.

Resulta que la gente de cookingideas publico un interesante articulo que muestra a las claras lo mal que hacen las leyes de copyrigth a las ideas y al proceso creador.


Transcribo un parrafo del articulo:

"El gráfico que ilustra este artículo muestra el número de ediciones de libros disponibles por décadas en Amazon, la mayor librería del mundo. En él puede apreciarse cómo a partir de la segunda década de los años 20 el número de libros publicados se desploma brutalmente desde su cénit, a finales del siglo XIX, y no empieza a remontar hasta los albores del siglo XXI. La explicación de tan enorme hiato es la aprobación de la legislación de copyright en Estados Unidos en 1923, que retiraron de las estanterías miles de títulos que hasta entonces estaban disponibles para los lectores."

Dejo el link:
http://www.cookingideas.es/agujero-memoria-20130801.html

Infografia, la historia de Linux

Muy buena infografia sobre la historia del sistema operativo libre:

Infografia, la historia de Linux