R es un lenguaje funcional y a la vez tiene la característica de evaluación perezosa, es decir que no ejecuta código solo hasta que lo necesita. Parece rara esta característica pero es muy útil.
Supongamos lo siguiente:
> fx <- function() {
+ print("codigo muy costoso...")
+ }
> fx
function() {
print("codigo muy costoso...")
}
> fx()
[1] "codigo muy costoso..."
> otraFx <- function (i, f) { if (i > 10) f() }
> otraFx(2,fx)
> otraFx(20,fx)
[1] "codigo muy costoso..."
>
Por lo tanto la función fx no se ejecuta si no es necesario, otro ejemplo:
> f <- function(x) {
10
}
> f(stop("This is an error!"))
> [1] 10
Podemos forzar que ejecute el código, con force (que original) :
> f <- function(x) {
force(x)
10
}
> f(stop("This is an error!"))
#> Error in force(x): This is an error!
Una interesante característica, sin más dejo link:
http://adv-r.had.co.nz/Functions.html
Translate
jueves, 22 de enero de 2015
sábado, 17 de enero de 2015
jueves, 15 de enero de 2015
Rust 1.0 Alpha Released
Hace muy poco que hable sobre Rust y que paso? Un nuevo release de Rust 1.0 fue liberado. Ojo es la versión Alpha. Así es de poderoso este blog...
A la pregunta de en que andaba Rust, bueno están trabajando. Y han liberado una versión alpha.
Les dejo el release note.
Dejo link:
http://blog.rust-lang.org/2015/01/09/Rust-1.0-alpha.html
martes, 13 de enero de 2015
Python vs. R, Cual debo aprender primero?
Udacity es un sitio que dicta cursos de forma gratuita y es más que recomendable. Y quien no mejor para aconsejarnos que aprender primero Python o R, si nos vamos a dedicar a analizar datos.
Como sabrán los lenguajes más utilizados para el análisis de datos son Python y R. R no me sorprende para nada dado que el propósito del lenguaje es analizar datos. No es un lenguaje de propósito general, en cambio Python si es un lenguaje de propósito general, que cada vez más esta ganando lugar en la comunidad cientifica.
Yo me pregunto porque Python esta ganando tanto terreno en el plano científico, tal vez en otro post. Lo que yo pienso es que debe ser por la facilidad de uso, otra característica no se. Escucho opiniones.
Me ido por las ramas, lo importante es que dejo este interesante link, que si les cuenta cual es la ventaja de aprender uno o otro. No pienso contar el final.
Dejo link:
http://blog.udacity.com/2015/01/python-vs-r-learn-first.html?utm_content=buffer4eca6&utm_medium=social&utm_source=plus.google.com&utm_campaign=update
En que anda Rust?
Recuerdan a Rust? La verdad es que me había olvidado de este lenguaje, fue que en la encuesta de infoQ sobre "quien ocupara el lugar de C?" lo vi. Ahora tuve un poco de tiempo y decidí ver en que andaba...
Para los que no recuerdan Rust es un lenguaje similar a C pero más evolucionado, con muchas características interesantes. Como por ejemplo pattern matching, inferencia de tipo, clausuras, etc...
A la vez es multiparadigma, se puede programar de modo funcional o imperativo y tambien orientado a objetos. Pero por ejemplo no se encuentra mucha info de la programación orientada a objeto en rust.
Yo lo veo como un c++++, es decir con capacidades que hacen fácil programar pero a la vez tiene una orientación a tareas de bajo nivel. A la vez existe mucha documentación, lo que hace de este lenguaje un digno competidor de go.
Por ultimo les dejo unos ejemplos de rustbyexample :
// This is a comment, and will be ignored by the compiler
// You can test this code by clicking the "Run" button over there ->
// or if prefer to use your keyboard, you can use the "Ctrl + Enter" shortcut
// This code is editable, feel free to hack it!
// You can always return to the original code by clicking the "Reset" button ->
// This is the main function
fn main() {
// The statements here will be executed when the compiled binary is called
// Print text to the console
println!("Hello World!");
}
Otro ejemplo:
fn main() {
let x = 5u32;
let y = {
let x_squared = x * x;
let x_cube = x_squared * x;
// This expression will be assigned to `y`
x_cube + x_squared + x
};
let z = {
// The semicolon suppresses this expression and `()` is assigned to `z`
2 * x;
};
println!("x is {:?}", x);
println!("y is {:?}", y);
println!("z is {:?}", z);
}
Otro ejemplo:
fn main() {
let number: i32 = 13;
// TODO ^ Try different values for `number`
println!("Tell me about {}", number);
match number {
// Match a single value
1 => println!("One!"),
// Match several values
2 | 3 | 5 | 7 | 11 => println!("This is a prime"),
// Match an inclusive range
13...19 => println!("A teen"),
// Handle the rest of cases
_ => println!("Ain't special"),
}
let boolean = true;
// Match is an expression too
let binary: i32 = match boolean {
// The arms of a match must cover all the possible values
false => 0,
true => 1,
// TODO ^ Try commenting out one of these arms
};
println!("{} -> {}", boolean, binary);
}
Dejo link:
https://github.com/rust-lang/rust
http://doc.rust-lang.org/book/
http://www.rust-lang.org/
http://rustbyexample.com/
lunes, 12 de enero de 2015
ng-book
Quiero dejarles un link para descargar un buen libro de angular.
Dejo link:
http://www.creativealys.com/2015/01/11/the-complete-book-on-angularjs/
Dejo link:
http://www.creativealys.com/2015/01/11/the-complete-book-on-angularjs/
jueves, 8 de enero de 2015
Curso Gratuito de Fundamentos de Programación
Solo quiero hacerme eco de este curso que los que comienzan en la programación no se lo pueden perder.
Dejo link:
http://www.maestrodelacomputacion.net/curso-gratuito-fundamentos-de-programacion/
miércoles, 7 de enero de 2015
Corriendo R en la plataforma Java con Renjin
Como ven estoy a full con R, supongamos que queremos hacer una aplicación que realice análisis estadístico, y tengamos mucho trabajo por ese lado, pero por el otro se quiere que la aplicación sea web y tenga web services, ect.
Por un lado esta bueno utilizar R para la parte estadística pero por el otro sería bueno usar java donde tenemos todo ya más armado. Por lo tanto podemos usar Renjin que es un lenguaje que corre en la plataforma Java y que es muy similar a R.
Lo que nos permite hacer rengin es ejecutar R desde java y ver los resultados, y a la vez nos resuelve las diferencia de tipos y otros detalles. Por ejemplo:
engine.eval("df <- data.frame(x=1:10, y=(1:10)+rnorm(n=10))");
engine.eval("print(df)");
engine.eval("print(lm(y ~ x, df))");
Si nuestro proyecto java utiliza maven podemos utilizar lo agregando las siguientes dependencias:
Dejo link: http://www.renjin.org/
Por un lado esta bueno utilizar R para la parte estadística pero por el otro sería bueno usar java donde tenemos todo ya más armado. Por lo tanto podemos usar Renjin que es un lenguaje que corre en la plataforma Java y que es muy similar a R.
Lo que nos permite hacer rengin es ejecutar R desde java y ver los resultados, y a la vez nos resuelve las diferencia de tipos y otros detalles. Por ejemplo:
engine.eval("df <- data.frame(x=1:10, y=(1:10)+rnorm(n=10))");
engine.eval("print(df)");
engine.eval("print(lm(y ~ x, df))");
Si nuestro proyecto java utiliza maven podemos utilizar lo agregando las siguientes dependencias:
<dependencies> <dependency> <groupId>org.renjin</groupId> <artifactId>renjin-script-engine</artifactId> <version>0.7.0-RC7</version> </dependency> </dependencies> <repositories> <repository> <id>bedatadriven</id> <name>bedatadriven public repo</name> <url>http://nexus.bedatadriven.com/content/groups/public/</url> </repository> </repositories>
Dejo link: http://www.renjin.org/
martes, 6 de enero de 2015
Aprendiendo R en R con Swirl
He comenzado un curso en coursera sobre el lenguaje de programación R que esta ganando mucho espacio en el campo de la estadística. En fin en este curso utilizan swirl es un paquete de R que trae ejercicios en de R que se ejecutan en el entorno de R o se puede utilizar con R studio.
Ha simple vista esta muy bueno y se hace muy interactivo el aprendizaje.
Instalarlo es sumamente fácil, solo tenes que ir a la consola de R y escribir:
> install.packages("swirl")
> library("swirl")
> swirl()
Y Listo!!
Dejo el link:
http://swirlstats.com/
lunes, 5 de enero de 2015
Lua Cookbook
Lua es un lenguaje imperativo muy liviano y a la vez extensible, que se hizo famoso porque con el podemos personalizar la interfaz gráfica de World of Warcraft. Pero a la vez se utiliza en numerosas aplicaciones.
Quiero compartir el cookbook de Lua que se puede acceder de forma online:
http://stevedonovan.github.io/lua-cookbook/
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.
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:
Suscribirse a:
Entradas (Atom)