miércoles, 31 de diciembre de 2014

lunes, 29 de diciembre de 2014

Codecademy en español


Como lo oyes codecademy ahora tiene cursos en español, la pagina indica la siguiente leyenda: "Aprendé los conceptos y la sintaxis de los lenguajes de programación más conocidos"

Esto es genial, podes tomar cursos de Ruby, Python, HTML, JQuery, Javascript y PHP; de forma gratuita y en castellano, que más queres?

A estudiar!!!

Dejo el link:
http://www.codecademy.com/es/learn

viernes, 26 de diciembre de 2014

Papa noel nos trajo a Qt 5.4


Si bien el release de Qt 5.4 es anterior a navidad no tuve tiempo de hacer el post que le correspondía.

Qt 5,4 viene con varias mejoras entre las que podemos nombrar, muchas mejoras en el área de tecnología web:

  • Qt WebEngine: basado en Chromium, los widgets pueden embeber HTML y renderizarlo
  • Qt WebChannel: Permite por ejemplo desarrollar clientes web que soporten comunicación WebSocket con el servidor. 
  • Qt WebView: Una API que permite embeber un browser en la aplicación de forma nativa.  

Además soporte completo para el runtime de windows lo que se conoce como "Qt for WinRT" esta integración es tanto para Windows phone como Windows 8.

Una nueva licencia! Qt ha decidido moverse a  LGPLv3 .

Nuevas funciones para manejo gráfico... Y más y más!!!

Y como si fuera poco ha anunciado Qt creator 3.3, que permitirá crear aplicaciones para Android y iOS.

Dejo link:
http://qt-project.org/wiki/Qt-5.4-release

MailRelay, la forma más fácil y rápida de hacer publicidad por email


No es muy común esta clase de post en el blog pero estuve probando esta herramienta y me gusto mucho. Y quiero compartirla con ustedes.

MailRelay es una herramienta de envío de emails. No! No es un cliente de correo, es una plataforma de email marketing avanzado con características de gran alcance. Te permite crear, enviar y gestionar tus boletines enviados vía emails con estadísticas completas, a la vez podes analizar el comportamiento del suscriptor.

Email marketing??  Si, tambien se lo conoce como ciberbuzoneo  o en inglés: e-mailing es un método de marketing directo que utiliza el correo electrónico como medio de comunicación comercial para enviar mensajes a una audiencia. De esta forma podes tener al tanto a tus clientes de las novedades de tu empresa, nuevos productos, ofertas, etc...

Con MailRelay podemos crear boletines y enviárselas a un grupo de suscriptores, a la vez la herramienta analiza el comportamiento del subscriptor, de esta forma podemos saber cual es el articulo más visitado, y que suscriptores vieron que articulo pudiendo analizar las necesidades de los clientes según esta información.

MailRelay no solo permite crear campañas de email marketing sino que tambien darle un correcto seguimiento y tener un contacto real con los clientes. Y es muy importante este seguimiento tanto para fidelizar al cliente como para estimular las ventas.

Entre otras ventajas podemos nombrar:
  • Un seguimiento inteligente de los clientes: con esta herramienta podes saber que necesita cada suscriptor y podemos hacer un seguimiento de los clientes y sus necesidades. 
  • No vamos a ser catalogados como spam:  Mailrelay cumple con todas las normas de correo electrónico anti-spam, haciendo que la puntuación antispam sea menos posible.
  • Templates para nuestros boletines:  Mailrelay cuenta con una completa biblioteca de templates gratuitos que podemos utilizar. 
  • SMTP de alto rendimiento:  Mailrelay nos ofrece un servicio smtp que se distingue por su alto rendimiento. 
  • Facilidad de uso: No es necesario que contrates a un programador o un diseñador gráfico, cualquier persona puede utilizar este servicio. 
  • Atención personalizada: Recibe atención personalizada y respuesta inmediata a tus dudas.
Y además de estas características cuenta con muchas promociones y descuentos. Por ejemplo Mailrelay es el único software de email marketing que permite enviar gratis 75.000 emails al mes a 15.000 suscriptores con autorespondedores incluidos.

Como conclusión les aconsejo que vean con buenos ojos a Mailrelay dado su excelente soporte y sus ofertas. Y además es un excelente producto.

Dejo un video:


Dejo links:

martes, 23 de diciembre de 2014

Google anuncia Android Studio 1.0 y recomienda abandonar Eclipse


Android Studio


Estaba leyendo javahispano y me tope con esta noticia. Y me puse a descargar Android Studio.

Me parece que el cambio era sabido, más que nada porque las ultimas versiones de eclipse vienen con una calidad no muy buena.

Personalmente creo que es una gran apuesta de google y un gran paso para IntelliJ IDEA. Bueno a probarla!!

Dejo link: http://developer.android.com/sdk/index.html

Muchos Libros en GIT!!


Pero muchos libros, en diferentes idiomas la mayoría en ingles pero existe una selección de libros en castellano.

Sin más dejo el link:

Antergos Linux

Antergos es una distro de origen Gallego, comenzó como Cinnarch y luego decidió que el usuario elija el entorno de escritorio por lo que tuvo que cambiar de nombre.

Es una distro derivada de arch por lo tanto es rolling release y además utiliza pacman como administrador de paquetes.

Antergos es una distro simple que se basa en la idea de darle opciones al usuario y que el elija que instalar y que no. Cosa que me parece fantástica.

Además esta distribución viene con PacmanXG4 que es una GUI de Pacman, es muy potente y permite tener nuestros paquetes actualizados e instalar software fácilmente.

Tiene un potente instalador gráfico y te pregunta qué entorno de escritorio utilizar siendo por defecto Gnome 3 con Gnome shell. Con respecto a Gnome shell a mejorado muchísimo pero a mi modo de ver las cosas le falta bastante.

Dejo link: http://antergos.com/

Dejo screen shots:







jueves, 18 de diciembre de 2014

Cual es el próximo lenguaje nativo?

InfoQ esta haciendo una encuesta sobre cual va ha ser el lenguaje nativo del futuro, es decir que lenguaje va a ser el proximo C o C++. Y me llamo mucho la atención que en la lista de poxibles candidatos esten lenguajes como Haskell o OCaml. Y a la vez que hayan sido votados.

Por alguna razón no me imagino el lenguaje moderno y declarativo como Haskell, como el próximo lenguaje nativo.

Dejo link:http://www.infoq.com/research/next-native-language?utm_source=infoqresearch&utm_campaign=r-dir#

miércoles, 17 de diciembre de 2014

Vodexx, un nuevo portal de noticias de Java


Leyendo javahispano me encontré con un nuevo portal de noticias sobre Java llamado Vodexx. Por lo que se ve tiene alta calidad de noticias. Pero escoba nueva barre bien. Esperemos que siga así.

Les dejo el link: https://www.voxxed.com/

domingo, 14 de diciembre de 2014

Manjaro Linux

Volví con mi juego favorito, probar distros de linux!!

Como ustedes saben yo soy devoto de debian y sus derivados (Ubuntu, Mint, etc) Pero la verdad que quede sorprendido con Manjaro, un Arch muy fácil de utilizar.

Los puntos más admirables para mi es su interfaz muy amigable, Xfce es muy bueno. Nada que envidiarle a distros más pesadas. Y además tiene otras ventajas:

  • Es rolling release, eso es fantástico, tenemos las ultimas versiones siempre. 
  • Es muy liviano, rápido y ágil. Fácil de usar y estas productivo en poco tiempo. 


La instalación es muy rápida, y básica para que podamos luego instalar lo que queramos.

Sin más dejo link:
http://manjaro.org/

Y screenshots:









lunes, 8 de diciembre de 2014

Implementar booleanos de Javascript con Haskell


En javascript muchos tipos se comportan como boolenos, por ejemplo el string vacío “” o el cero se comportan como el false.

Nosotros podemos tener el mismo comportamiento en Haskell si lo deseamos, esto gracias a type class o clases de tipos.

Las clases de tipos son una especie de interfaz que define algún tipo de comportamiento. Si un tipo es miembro de una clase de tipos, significa que ese tipo soporta e implementa el comportamiento que define la clase de tipos. La gente que viene de lenguajes orientados a objetos es propensa a confundir las clases de tipos porque piensan que son como las clases en los lenguajes orientados a objetos. Bien, pues no lo son. Una aproximación más adecuada sería pensar que son como las interfaces de Java, o los protocolos de Objective-C, pero mejor.

¿Cuál es la declaración de tipo de la función ==?

ghci> :t (==)
(==) :: (Eq a) => a -> a -> Bool

Interesante. Aquí vemos algo nuevo, el símbolo =>. Cualquier cosa antes del símbolo => es una restricción de clase. Podemos leer la declaración de tipo anterior como: la función de igualdad toma dos parámetros que son del mismo tipo y devuelve un Bool. El tipo de estos dos parámetros debe ser miembro de la clase Eq (esto es la restricción de clase).

La clase de tipos Eq proporciona una interfaz para las comparaciones de igualdad. Cualquier tipo que tenga sentido comparar dos valores de ese tipo por igualdad debe ser miembro de la clase Eq. Todos los tipos estándar de Haskell excepto el tipo IO (un tipo para manejar la entrada/salida) y las funciones forman parte de la clase Eq.

Muy bien! Ahora vamos a intentar implementar el comportamiento de el tipo booleano en diferentes tipos, se nos va hacer bastante sencillo utilizando clase de tipos.

Lo que debemos hacer es crear una clase, que la definimos de la siguiente manera:

class YesNo a where
        yesno:: a -> Bool

Muy simple! YesNo es un typeclass que define una función. Esta función toma un argumento y devuelve true cuando se defina. Pero lo importante de la definición es que a no tiene tipo. Cuando realicemos instancias de esta función vamos a definir este tipo.

Instance YesNo Int where
     yesno 0 = False
     yesno _ = True

De esta manera indicamos como los enteros implementan nuestra clase. De esta manera cuando un entero es 0 devuelve false sino devuelve true.

Instance YesNo [a] where
     yesno [] = False
     yesno _ = True

También podemos definir el comportamiento para listas. Cuando la lista es vacía devuelve false sino true. Note que no definimos el tipo de la lista tampoco.

Instance YesNo Bool where
     yesno = id

En este caso estamos acudiendo a una función de la librería estándar "id", que toma el parámetro y lo retorna.
Podemos definir esta función para cualquier tipo que se nos ocurra...

Y luego podemos probarla:

> yesno “hola”
True
> yesno “”
False
> yesno 0
False

Muy simple!!

jueves, 4 de diciembre de 2014

Curso Online en castellano y gratuito sobre AngularJs

Quiero compartir un curso en castellano, gratuito y online de AngularJS.

AngularJS es el framework javascript de moda, esta muy interesante, se los recomiendo.

Dejo el link: http://edutin.com/es/cursos/online/angularjs-2372

Con que lenguaje de programación ganaría más dinero?

Una interesante pregunta, la gente de quartz decidió responderla a base de una encuesta con la cual mide los salarios de los programadores y en que lenguaje programan.



Dejo la fuente: http://qz.com/298635/these-programming-languages-will-earn-you-the-most-money/

Primeros pasos en Qt: Creación de widgets customs

Los widgets customs o componentes visuales pueden ser creados a partir de un componente existente o simplemente extendiendo de QWidget.

En este post vamos a extender uno existente. Supongamos que debemos crear un QSpinBox que permita trabajar con hexadecimales:

#ifndef HEXSPINBOX_H
#define HEXSPINBOX_H
#include <QSpinBox>
class QRegExpValidator;
class HexSpinBox : public QSpinBox
{
Q_OBJECT
public:
HexSpinBox(QWidget *parent = 0);
protected:
QValidator::State validate(QString &text, int &pos) const;
int valueFromText(const QString &text) const;
QString textFromValue(int value) const;
private:
QRegExpValidator *validator;
};
#endif

HexSpinBox hereda la mayoría de los métodos, pero sobreescribe, los que necesita. A la vez sobreescribe el constructor:

#include <QtGui>
#include "hexspinbox.h"
HexSpinBox::HexSpinBox(QWidget *parent)
: QSpinBox(parent)
{
setRange(0, 255);
validator = new QRegExpValidator(QRegExp("[0-9A-Fa-f]{1,8}"), this);
}

Setamos el rango desde 0 a 255 es decir 0 a FF. También debemos modificar los botones de tal manera que cuando sea presionados permitan ir navegando entre los números en hexadecimales, es decir luego del 10 siga con A.

Para validar este componente usa el metodo validate que es llamado por  QSpinBox.

QValidator::State HexSpinBox::validate(QString &text, int &pos) const
{
return validator->validate(text, pos);
}

Validate solo utiliza la expresión regular para validar. Ahora debemos escribir los métodos que pasen nuestros números a String y viceversa.

QString HexSpinBox::textFromValue(int value) const
{
return QString::number(value, 16).toUpper();
}

QString HexSpinBox::textFromValue(int value) const
{
return QString::number(value, 16).toUpper();
}

Y eso es todo tenemos nuestro primer componente!

martes, 25 de noviembre de 2014

viernes, 21 de noviembre de 2014

Flow

Flow es un software que permite el chequeo de tipos en script en javascript. Este software te permite encontrar errores de tipos en javascript.

El mecanismo es muy fácil, se crea un script, luego se corre flow y este te indica si hay algún problema.

Por ejemplo dado el siguiente script:

/* @flow */
function foo(x) {
  return x * 10;
}
foo('Hello, world!');

Tendremos la siguiente salida:

hello.js:5:5,19: string This type is incompatible with hello.js:3:10,15: number

Se puede utilizar tanto en Linux como en OS X.

Dejo links:
http://flowtype.org/
http://flowtype.org/docs/getting-started.html#_

jueves, 20 de noviembre de 2014

“Rebecca” el nuevo Mint ya esta disponible!!


La nueva versión de Mint se llama “Rebecca” y ya esta disponible para descargar la Release Candidate.

Un aspecto bastante importante de Rebecca es que será LTS, con soporte hasta 2019, una fantástica noticia para los usuarios de esta distribución, destinada a los perfiles más básicos de la informática en general y de GNU/Linux en particular.

Dejo link:
http://www.linuxmint.com/release.php?id=23

martes, 18 de noviembre de 2014

Firefox Developer edition

Todo comenzó con firebug y luego una lucha exploradores para proveer las mejores herramientas de desarrollo. Ahora Firefox dio otro paso un firefox dedicado a los desarrolladores. Con toda clase de herramientas, en mi opinión la más importante es un editor de código, no digo IDE porque le falta un poco. Luego las herramientas de siempre, inspector de elementos, consola, diseñador css, perfiladores, etc. 

La verdad muy buena noticia para el desarrollo web, espero que siga creciendo

Dejo link: https://www.mozilla.org/en-US/firefox/developer/

lunes, 17 de noviembre de 2014

Curso online de HTML5


Quiero compartir un curso gratuito de HTML 5 en español.

Dejo link:
http://edutin.com/es/cursos/online/HTML5-147

Ubuntu MATE

Este mes nos trajo muchas noticias, una muy buena es que ya esta disponible la versión de Ubuntu con Mate como entorno de escritorio.

Para el que no sabe, la wikipedia nos indica que "MATE es un ambiente de escritorio derivado del código base de GNOME 2. El nombre proviene de la yerba mate, una especie de acebo, una planta nativa de Sudamérica subtropical que se utiliza para preparar una bebida muy popular y energizante llamada mate. El nuevo nombre fue necesario para evitar conflictos con componentes de GNOME 3"

Si bien lo intente bajar varias veces se corta, voy a porbar el torrent.

Dejo screenshot:




Dejo link: https://ubuntu-mate.org/

viernes, 14 de noviembre de 2014

Microsoft hace open source .NET


La Noticia del siglo, si al parecer .net dio un vuelco al mundo open source y para colmo se viene una versión para Linux y Os X. Increíble!! Pero al parecer esto es el comienzo, dado que vamos a tener emuladores android y un sin fin de librerías ahora open source.

Esto es una genialidad, ya me dio ganas de aprender .net!!

Todo indica que microsoft se vio afectado por el crecimiento de otras tecnologías abiertas y no le quedo otra que brindar pelea en el mundo del software abierto.

Esto es solo un anuncio, vamos a ver que nos trae el futuro.

Dejo link:
http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx

jueves, 13 de noviembre de 2014

Buscan debatir en la legislatura entrerriana sobre una Ley de software libre



Solo quiero hacerme eco de una noticia regional que tiene que ver con el software libre.

"En la próxima sesión de la Cámara de Diputados ingresará un proyecto de Ley por el que se buscará establecer los lineamientos de las políticas de incorporación y gestión progresiva de software, confirmó AIM. La iniciativa propone migrar los sistemas informáticos de la administración pública de la provincia a sistemas de software libre. Además, el gobierno deberá promover el desarrollo de la industria."

Esto es un pequeño paso pero muy valorable, espero que se logre llegar a la incorporación de software libre y a la vez no menos importante, que para el proceso de migración se contraten empresas locales, para que el crezca la región también.

Dejo la fuente:  http://www.gestionentrerriana.com.ar/noticias_3613.html

martes, 11 de noviembre de 2014

Reinvéntate. Todo el tiempo con Acamica


Ya hemos hablado de acamica, una pagina en español para hacer cursos online. Hoy recibí un mail que se ha renovado y se viene con todo.

Lo nuevo es la capacidad de seguir una carrera, por ahora hay 2 de diseño web y de programación web.

Muy bueno!!

Dejo el link:
https://www.acamica.com

domingo, 9 de noviembre de 2014

Introduccion a la computacion y la programacion con Python


La pagina infotutoriales cuenta con varios libros interesantes, pero en esta ocasión quiero compartir con ustedes un libro sobre python.

Dejo el link:
http://www.infotutoriales.info/2014/11/introduccion-la-computacion-y-la.html

Introducción a la programación en C

Quiero compartir este libro sobre C, aunque este en Ingles, es muy fácil de leer y les va a ser muy útil.

Dejo link:
http://www.geekboots.com/c/intro

jueves, 6 de noviembre de 2014

Immutable.js

Como sabrán Javascript es un lenguaje muy influenciado por lenguajes funcionales. Clausuras, Curryng, etc.

Con Immutable.js tienes la característica de los inmutables en javascript!!

El framework permite generar listas y luego no poder modificarlas. Dando le una mayor seriedad al lenguaje.

Veamos un ejemplo:

var list1 = Immutable.List.of(1, 2);
var list2 = list1.push(3, 4, 5);
var list3 = list2.unshift(0);
var list4 = list1.concat(list2, list3);
assert(list1.size === 2);
assert(list2.size === 5);
assert(list3.size === 6);
assert(list4.size === 13);
assert(list4.get(0) === 1);
Dejo link! https://github.com/facebook/immutable-js




miércoles, 5 de noviembre de 2014

¿Cuáles serán los 7 empleos del futuro?

Go, un caso raro?

Me asombra muchísimo el éxito que esta teniendo go, hablan de el nuevo java, etc... Porque me asombra? Básicamente porque es un lenguaje no orientado a objeto. Mi primer pensamiento fue que es un lenguaje que viene a reemplazar a c, pero no fue solo el caso. Esta ganando espacio en diferentes ámbitos.

Lo que podemos deducir es que tal vez existe un lugar para olvidarnos de los objetos y  programar de forma procedural, pero siguiendo este lineamiento de pensamiento, decanta la pregunta: No le habremos dado mucha importancia a la programación orientada a objetos?

Sin duda el mercado esta cambiando, mirando con más atención el paradigma funcional. La programación orientada a objetos esta en su atardecer? Que opinan?

viernes, 31 de octubre de 2014

Scala Best Practices




Quiero compartir un link con un manual o escrito, la verdad no se como llamarlo, de buenas practicas
en scala. Esta muy bueno, tienen consejos simples como no usar la palabra return, hasta más complejos.

Dejo link:
https://github.com/alexandru/scala-best-practices

miércoles, 29 de octubre de 2014

Recursos sobre Clojure


Gracias a un grupo de google plus sobre Clojure, he conseguido y quiero compartir un montón de recursos sobre clojure que acá les dejo.

Dejo link: https://clojure.zeef.com/vlad.bokov

martes, 28 de octubre de 2014

Que son las aplicaciones Reactivas?

Una pequeña infografia que describe muy bien los principios de las aplicaciones reactivas:

Ojo! se que no se ve, solo tienen que hacer click en la imagen. 

sábado, 25 de octubre de 2014

La evolución de windows

Esta es una imagen que describe de forma muy clara la evolución del sistema operativo de microsoft:




Primeros pasos en Qt: Emitir una señal

En los post anteriores estuvimos viendo el mecanismo de signals y slots que permitían manejar una señal emitida por un componente.

Además estuvimos haciendo una ventana de dialogo que permitía, para buscar un texto determinado. Este dialogo no puede hacer la acción porque no conoce el texto donde se debe realizar la búsqueda.

Resumiendo:

  • Tenemos 2 ventanas una con todo el texto donde se debe realizar la búsqueda y la otra que permite ingresar el texto a buscar. 
  • Por lo tanto la ventana main o padre debe realizar la búsqueda.
  • La ventana de dialog debe enviar una señal con el texto ingresado.
  • Esta señal va a ser procesada por la ventana main que realizará la búsqueda.
Vamos a conectar las ventana como dijimos:

connect(ventanaBusqueda, SIGNAL(aceptar(QString)), this, SLOT(busqueda(QString));

En la ventana padre debemos conectar nuestra ventana de búsqueda con el proceso de búsqueda. Noten el detalle de que indicamos el tipo de parámetro de las funciones.

Si probamos esto no va a suceder nada porque nuestra pantalla de dialog no emite la señal, veamos como podemos hacer esto:

emit aceptar(text)

En el botón del dialog debemos emitir la señal. Con emit emitimos una señal, en este caso emitimos la señal aceptar y le pasamos un testo como parámetro.

Dejo link:
http://qt-project.org/doc/qt-4.8/signalsandslots.html