Translate

domingo, 31 de julio de 2011

Microsoft and Linux, un vídeo de cumpleaños

Increíble este vídeo, nunca pensé que microsoft quisiera hacer las pases con Linux. Por el cumpleaños de Linux la gente de Redmond ha hecho el siguiente vídeo:



Me da desconfianza, es muy raro... Que opinan?

jueves, 28 de julio de 2011

Blog sobre Erlang


Estoy leyendo aprendiendo-erlang.blogspot y me parece muy buena información, claro y conciso.

Una buena forma de ir aprendiendo erlang.

martes, 26 de julio de 2011

JetBrains crea un nuevo lenguaje para la JVM


Kotlin es el nombre del nuevo lenguaje de la empresa jetbrains. Recordemos que jetbrains es la creadora de la exitosa ide IntelliJ.

Kotlin es un lenguaje que intenta solucionar incombenientes al escribir codigo Java. Entre otras características podemos nombrar:

El sistema toma control de las referencias nulas, no es necesario null pointer.
Soporta Clojures

Es interoperable con Java; Java puede llamar a Kotlin y Kotlin puede llamar a Java.


Veamos un ejemplo de un Hola Mundo:

class Greeter(name : String) {
fun greet() {
println("Hello, ${name}");
}
}

fun main(args : Array) {
Greeter(args[0]).greet()
}


Dejo links:

viernes, 22 de julio de 2011

JQuery EasyUI


JQuery EasyUI es una colección de plugins para diseñar interfaces de usuario con JQuery. Entre los componentes que ofrece podemos nombrar form, validatebox, combo, combobox, combotree, calendar.

Con Easyui se pueden desarrollar interfaces profesionales de forma rapida. A la vez soporta theme como Jquery UI.

Dejo links:

http://www.jeasyui.com/
http://www.jeasyui.com/demo/

jueves, 21 de julio de 2011

Sindicato Unión Informática

Siempre que estamos bien, no pensamos en el futuro. Es hora de ver y trabajar por nuestro futuro. Me llego este mail y quiero compartirlo:

Seguramente muchos no saben pero el 28-JUL hay convocado un paro en IBM.
Es raro escuchar esto, dado que nuestra profesión no está acostumbrada a estar sindicalizada.

Pero analizando los sueldos que pagan y la estructura que se conoce en empresas grandes como IBM, plantean que los profesionales comienzen a "unirse" por mejores condiciones laborales y salariales. Más datos en http://www.union-informatica.com.ar/.

Como podrán observar un sueldo en IBM evaluación 2, está por debajo de los 6000$AR (unos 1450 USD), que es el básico de muchos asalariados sin especialización (obreros, camioneros, etc).

Es decir, las lineas bajas están mejor representados y unidos, generando mejores negociaciones para todos ellos. Hace rato que había leído acerca de la próxima "rebelión" de las lineas medias (profesionales). Es decir, los que mayormente integramos esta lista :).

Se que el problema pasa mayormente en las grandes compañías que tienen las famosas software factories. Si bien, muchos trabajamos en empresas más pequeñas donde nos permiten usar hasta nuestras herramientas, no siempre es el caso. Hay grandes empresas donde usan Smalltalk también y estamos inmersos en el mismo dilema.

¿Que opinan, será favorable?

miércoles, 20 de julio de 2011

InvokeDynamic en Java 7


Ya hemos hablado en post anteriores sobre el proyecto Da Vinchi:

da-vinci-machine-project.html

InvokeDynamic es el primer fruto de este proyecto, básicamente que permite hacer InvokeDynamic, invocar métodos al vuelo; si si va ser usado para closures. Si bien no se puede usar desde java es una mejora importante para jvm preparando todo para el uso de closures en la versión 8 de java.

La pregunta es cantada, para que hacen esta mejora en java 7 si la vamos a ver en java 8. Es para los lenguajes script que actualmente corren en java.
Poder ejecutar al vuelo métodos le da la posibilidad a lenguajes script a correr mucho más rápido. Anteriormente se veían obligados a un uso de reflexión.
En conclusión en java 7 los lenguajes scripts son mucho más rápidos y la pregunta es: el futuro de la plataforma esta en otros lenguajes?

Dejo links:

http://java.sun.com/developer/technicalArticles/DynTypeLang/index.html

sábado, 16 de julio de 2011

Java 7


Vamos a ver algunas características de la nueva versión de Java:

Switch con string: la verdad que esto tendría que haber estado hace tiempo, ahora podemos hacer lo siguiente:

switch (color) {
case “red”:

break;
case “blue”:

break;

case “black”:

break;
}



Diamante: el operador diamante nos permite no declarar 2 veces el tipo en objetos generic.

List colores = new ArrayList<>();



Try de recursos: Esto esta bueno, antes de java 7 cuando abriamos un archivo debíamos cerrarlo, ahora no! Veamos un antes y despues para ser más claro:
Antes:

try {
fis = new FileInputStream(source);
fos = new FileOutputStream(target);

byte[] buf = new byte[8192];

int i;
while ((i = fis.read(buf)) != -1) {
fos.write(buf, 0, i);
}
}
catch (Exception e) {
e.printStackTrace();
} finally {
if ( fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}

if ( fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}



Ahora:

   try (InputStream fis = new FileInputStream(source);
OutputStream fos = new FileOutputStream(target)){

byte[] buf = new byte[8192];

int i;
while ((i = fis.read(buf)) != -1) {
fos.write(buf, 0, i);
}
}
catch (Exception e) {
e.printStackTrace();
}


Multiple declaraciones de excepciones: Es un alivio y genial. Seguro que les paso que hacian un try y tenian que capturar muchas excepciones, pero siempre hacian lo mismo; ahora ya no es necesario:

try {

} catch (Exception1 | Exception2 e) {
...
}


Estas son algunas de las nuevas características. Pinta lindo!

Java 7 launch pack: múltiples presentaciones y un libro gratis


Leyendo Javahispano me entere del Java 7 launch pack, es un pack con multiples presentaciones para ponerse al día con Java 7

Dejo link:

Eiffel y el diseño por contrato.


Eiffel es el lenguaje pionero en el diseño por contrato. Diseño por contrato es un concepto basado en la calidad del software.

Diseño por contrato es una metafora de como los objetos deben colaborar entre ellos. La metafora se puede explicar como un cliente que debe contratar un servicio; lo cual lo hace por medio de un contrato.

El proveedor debe proporcionar un producto determinado o servicio y tiene derecho a esperar hasta que el cliente pague.

El cliente debe pagar y tiene derecho a obtener el producto o servicio.
Ambas partes deben cumplir con ciertas obligaciones, tales como las leyes y reglamentos, aplicables a todos los contratos.

Las relaciones entre componentes de software estan definidas de forma formal por medio de los contratos, los cuales especifican las precondiciones, postcondiciones y invariantes.

La idea central de diseño por contrato como los componentes de software colaboran entre si, teniendo obligaciones y beneficios. Cuando definimos una función tenemos:
  • Precondiciones: Son los requisitos que debe cumplir quien llama esta función.
  • Postcondiciones: Es lo que debe hacer la función, es su obligación y un beneficio para el que llama a la función.
  • Invariantes: Mantener una cierta propiedad, que garanticen que ante tal entrada se obtenga determinada salida.
Muchos Lenguajes que proveen la capacidad de hacer asserciones, pero en el diseño por contrato estas se escriben antes de escribir el código y estas son parte del diseño.

El diseño por contrato es central en eiffel. Eiffel provee la expresión require para las precondiciones, ensure para las poscondiciones y invariant para las invariantes.

Veamos como se declara una clase en eiffel:

indexing
description: "Simple bank accounts"
class
ACCOUNT
feature -- Access
balance: INTEGER
-- Current balance
deposit_count: INTEGER is
-- Number of deposits made since opening
do
… As before …
end
feature -- Element change
deposit (sum: INTEGER) is
-- Add sum to account.
require
non_negative: sum >= 0
do
… As before …
ensure
one_more_deposit:
deposit_count = old deposit_count + 1
updated: balance = old balance + sum
end
feature { NONE } -- Implementation
all_deposits: DEPOSIT_LIST
-- List of deposits since account's opening.
invariant
consistent_balance: (all_deposits /= Void) implies
(balance = all_deposits . total)
zero_if_no_deposits: (all_deposits = Void) implies
(balance = 0)
end -- class ACCOUNT

Por ejemplo en el método o característica deposit es requerido que el valor a sumar no sea negativo y se asegura que la cantidad de balances haya aumentado.

En Java existen diferentes framework que nos proveen el diseño por contrato iContract2, Contract4J, jContractor, Jcontract, C4J, Google CodePro Analytix, STclass, OVal con AspectJ, Java Modeling Language (JML), SpringContracts de Spring framework, Modern Jass.

Para satisfacer las necesidades de las aplicaciones a gran escala y misión crítica de hoy, el diseño por contrato puede ser una gran solución.

Dejo links:

jueves, 14 de julio de 2011

JBoss Application Server 7 is here!


Hoy me llego un mail de la gente de DZone, por el release de JBoss 7.
Indican 7 ventajas de usar la nueva versión del servidor:
  1. El tiempo asombrosamente más rápido hasta 10 veces.
  2. Java EE 6 - entre las primeras implementaciones. No es cabeza ya que WebSphere V8, soporta Java EE 6.
  3. Muy ligero
  4. Modular - proporciona aislamiento de la aplicación real.
  5. Gestión Elegante - consola simplificada y APIs.
  6. Administración - administración servidores como grupos.
  7. Testeable - simplifica las pruebas a través del proyecto Arquillian.

Bueno es el momento de bajarlo, probarlo y ver si es verdad lo que dicen!

Dejo links:



domingo, 10 de julio de 2011

¿Compartimos el conocimiento?



En una entrevista Linus Benedict Torvalds, le preguntaron si hacia backup y el dijo que hacer backup es tonto. La persona inteligente publica lo que quiere resguardar y deja que la gente lo copie, lo mejore.

Esto sucede también con el conocimiento, yo tengo una memoria paupérrima pero si transmito el conocimiento tengo a quien preguntar cuando me olvide.

Dejo este post muy interesante y recomiendo que lo lean:

Como Optimizar tus Contenidos para Google

Es importante hacer algo de SEO para tener mayor audiencia dejo un o post muy interesantes:

sábado, 9 de julio de 2011

Plugins útiles para Eclipse


Gracias al amigo Mario descubrí dos plugins muy útiles para eclipse.

Mousefeed es un plugin que te va indicando los shortcut del teclado cuando hacemos una acción con el mouse, que podriamos hacer con el teclado.

Eclipsenotepad es un Notepad embebido en eclipse, el cual podemos usar para diferentes tareas, por ejemplo un porta papeles auxiliar y lo que se nos ocurra.

Estos plugins pueden ser instalados desde el Marketplace de eclipse o de la forma tradicional.

Conocen otros plugins utilies para eclipse?

Dejo los links:

Cambios en blogger


Gente!! Ojo; google piensa cambien el nombre de blogger. Todavia no se si esto me afecta, dejo toda la noticia de genbeta:

El cambio de diseño en la interfaz de sus aplicaciones web no va a ser lo único nuevo que vamos a ver en Google estos días: nos acaba de llegar la noticia de que la compañía de Mountain View va a cambiar el nombre de los servicios Picasa y Blogger, las herramientas para compartir imágenes y mantener bitácoras.

Sus nuevos nombres aún no se han revelado, pero la fuente indica que Blogger pasará a llamarse Google Blogs y Picasa se conocerá como Google Photos. También es de suponer que con los nuevos nombres llegue una nueva interfaz semejante a la que ya está presente en Google Calendar, Maps y Gmail gracias al tirón de Google+. Parece que otros servicios también tendrán un cambio de nombre, pero han asegurado que YouTube no va a sufrir ningún cambio. Normal, teniendo en cuenta su enorme popularidad.

Los cambios de nombre pueden ser efectivos dentro de cuatro o seis semanas, fecha en la que Google+ puede abrirse al público (para esto último ya se rumorea el día 31 de julio como muy tarde). Ya sabemos que Blogger va a tener un profundo lavado de cara, pero… ¿Y Picasa? Es una buena oportunidad para que Google relance un servicio de imágenes ahora que Flickr está de capa caída. No parece que tengamos que esperar mucho para ver todos estos cambios… Google nos va a mantener bastante ocupados este mes.

viernes, 8 de julio de 2011

7 proyectos Java que cambiaron el Mundo

Estaba leyendo un articulo sobre los 7 proyectos java que cambiaron el mundo: JUnit, Eclipse, Spring, Solr, Jenkins o Hudson, Apache Hadoop, Android.

Me sorprendió la parecencia de Solr y Hadoop; nunca los he usado; debería probarlos.

Que proyecto agregarían o sacarían?

Dejo el link:

http://radar.oreilly.com/2011/07/7-java-projects.html