Translate

jueves, 5 de enero de 2017

Top 10 del contenido de InfoQ en el 2016

Me llego un mail muy interesante de infocola o InfoQ, sobre los temas más leídos en el 2016.

Como yo, seguro que se te paso alguno. Por lo que comparto con vos este mail:

January 2017

Top 10 Content of 2016

In this special newsletter we show case the Top 10 content items published on InfoQ in 2016.

Top MiniBooks

The JHipster Mini-book is a guide to getting started with hip technologies today: AngularJS, Bootstrap and Spring Boot. This book shows you how to build an app with JHipster.
What is machine learning? Who is using it? How does it work? What are some real-world uses? Get answers to these questions and so much more in this free eBook! It's like a crash course in machine learning geared specifically for today's modern fraud fighter. Download Now.
SPONSORED CONTENT

Top News

While some applications will have an easy migration path to .NET Core, especially ones based on ASP.NET MVC, others may run into problems. Not just obvious ones such as porting from WinForms or WPF to Universal Windows Applications (UWP), but subtler issues that are deep within the core of the .NET Framework.
Services requiring an enterprise platform built of 100s of shared libraries to be able to run and only allowing approved network clients for talking to services are two anti-patterns, Ben Christensen explained at the recent Microservices Practitioner Summit sharing his experiences from building distributed systems and the trend he sees in increased coupling with binary dependencies.
Over the last year we've shown you various features that were being considered for C# 7. With the preview of Visual Studio 15, Microsoft has decided to demonstrate the features to make it into the final release of C# 7.
You've heard about DevOps and digital transformation. What do they have to do with you, the CIO? How can you make sure your organization is not just current, but staying truly competitive? Download this white paper to get answers to these and other questions. Download Now.
SPONSORED CONTENT

Top Articles

Jean-Jacques Dubray introduces a new pattern, State-Action-Model, that speeds up the development of modern applications and simplifies the interaction between the data model and the view.
Angular 2 & TypeScript have brought true object oriented development to the world's most popular web development framework. This article provides a high-level overview of Angular 2.
In this article, third installment of Apache Spark series, author discusses Apache Spark Streaming framework for processing real-time streaming data using a log analytics sample application.
Modern JavaScript development is in constant motion. In this article, Bonnie Eisenman shows JavaScript newcomers the lay of the land and where to begin.

Top Presentations

Philip Wadler on why category theory is relevant for developers, discussing the principle of Propositions as Types connecting propositions and proofs in logic, and types and programs in computing.
Cliff Click takes a look at Java vs C performance. He discusses both languages' strong and weak points and the programming context surrounding language choices.

Connect with InfoQ on Twitter
Connect with InfoQ on Facebook
Connect with InfoQ on LinkedIn
Connect with InfoQ on Google Plus
Connect with InfoQ on Youtube

Libro gratuito sobre Spring Transaction


Si alguna vez te toco configurar las transacciones de un proyecto con spring, ya sabes que no es nada fácil. Existen muchas complejidades, más de las que uno espera.

A la vez no se hace todos los días, por lo tanto siempre tenemos que ir a algún libro para refrescar conocimiento.

Por lo tanto quiero recomendarles el siguiente libro gratuito sobre Spring Transaction.

Dejo link: http://www.attuneww.com/publications/spring-transaction.html

miércoles, 4 de enero de 2017

5 cursos para aprender a programar


No importa que no seas un experto, con estos cinco cursos puedes aprender desde lo más básico hasta las últimas versiones del lenguaje de programación para desarrollo de páginas web y aplicaciones.

De esta manera comienza este interesante articulo que selecciona 5 cursos para dar los primeros pasos en programación.

Dejo link: http://www.elfinanciero.com.mx/tech/cursos-gratis-para-aprender-a-programar-1.html

50% de los ejecutivos no confían en sus herramientas de informes de gestión

Me llego este mail de oracle y me resulto bastante interesante, por lo tanto lo comparto:

Ver este mensaje en un navegador Web
Oracle Corporation
Reelabore sus Informes Descriptivos

Conozca el Contexto con Informes Descriptivos Integrales

Estimado/a Emanuel,

Los mejores informes cuentan historias, brindando conocimientos claros sobre la calidad y sostenibilidad del desempeño de su empresa. Este puede ser un verdadero impulso para sus negocios—no obstante, los procesos manuales poco eficientes hacen que el proceso para obtener esta información sea lento y los datos a menudo imprecisos. 

Lea el informe Reinventando los Informes Descriptivos y sepa cómo una solución basada en la Nube puede ayudarlo a combinar sin problemas datos y descripciones en un solo lugar: 
  • Compile informes completos, precisos y detallados en solo minutos
  • Mejore la eficiencia con flujos de trabajo flexibles y acceso en todo momento y desde cualquier lugar
  • Colabore con confianza dentro del mejor entorno de seguridad de nivel empresarial
Atentamente, 

El Equipo de Finanzas de Oracle
Shadow
Acceda Ahora
Shadow

Reinvent Narrative Reporting
Integrated Cloud Applications and Platform Services
Copyright © 2016, Oracle Corporation.
Todos los derechos reservados.
Contáctenos | Avisos legales y Condiciones de Uso | Declaración de Privacidad
SEV100483990_MCC100483986_S1

Oracle Corporation - Worldwide Headquarters, 500 Oracle Parkway, OPL - E-mail Services, Redwood Shores, CA 94065, United States

Su privacidad es importante para nosotros. Puede administrar las suscripciones de sus correos electrónicos o puede desuscribirse de todos los correos de Oracle Marketing en cualquier momento.

Sepa que desuscribirse de las comunicaciones de Marketing no afecta el envío de comunicaciones importantes de negocios en su relación actual de negocios con Oracle como Actualizaciones de seguridad, Avisos de registros para eventos, Administración de cuentas y Comunicaciones de Soporte/Servicios.

Open Suse Leap


Como venimos con las distros y con KDE ahora le llego el turno a Open Suse Leap.

Para los que no saben Leap nació como una distro hija de Open Suse pero más liviana, no orientada a servidores sino a notebooks o pcs de escritorio.

Lo instale y en mi opinión no me logra convencer, es open suse con otro menú y más colores, falta trabajo. Por ejemplo para instalar una aplicación es similar a Open Suse clásico con el yast, que no es complejo pero hoy en día existen más facilidades.

En conclusión me gusto pero no me convenció, existen otras distros mejores y por mucho. (mi humilde opinión)

Dejo Screnshots:







Dejo link: https://es.opensuse.org/Portal:Leap_42.1


martes, 3 de enero de 2017

KDE neon

Empezamos el año probando distros de linux, hoy voy a probar la punta de flecha de kde: KDE neon

La verdad es que me dejo boquiabierto. Muy buena distro, me encanto. Bien KDE y bien elegante. Un Lujo.

La unica critica constructiva es que el live cd viene con muy pocas aplicaciones. Por lo que sabia, KDE siempre fue muy criticado por lo contrario, corrigiendo esto se fueron de mambo.

Pero de igual forma es un detalle, muy buena distro, dejo screeshots:








sábado, 31 de diciembre de 2016

Feliz navidad y prospero año

 

Como todos los años quiero desearles feliz navidad y prospero año. Nos seguimos leyendo en le 2017.



viernes, 30 de diciembre de 2016

Un resumen de Scala for the Impatient, parte 5

Uso avanzado de loops y loops por comprensión 

Me costo mucho buscar la traducción de “for Comprehensions” por lo tanto decidí poner “por comprensión”. Si le parece mal me avisan y lo cambio.

Como vimos el operador for es mucho más rico en scala que en java o C.

Se puede tener múltiples generadores de la forma variable <- expresión separados por ;

 for (i <- 1 to 3; j <- 1 to 3) print((10 * i + j) + " ")
// Prints 11 12 13 21 22 23 31 32 33

cada generador puede tener su condición:

for (i <- 1 to 3; j <- 1 to 3 if i != j) print((10 * i + j) + " ")
// Prints 12 13 21 23 31 32

También se puede usar n cantidad de variables:

for (i <- 1 to 3; from = 4 - i; j <- from to 3) print((10 * i + j) + " ")
// Prints 13 22 23 31 32 33

Con la palabra yield se puede retornar una colección que este formada por el resultado de cada iteración:

for (i <- 1 to 10) yield i % 3
// Yields Vector(1, 2, 0, 1, 2, 0, 1, 2, 0, 1)

Este tipo de loops se denominan “por compresión”. De esta forma podemos generar diferentes colecciones:

for (c <- "Hello"; i <- 0 to 1) yield (c + i).toChar
// Yields "Hieflmlmop"

for (i <- 0 to 1; c <- "Hello") yield (c + i).toChar
// Yields Vector('H', 'e', 'l', 'l', 'o', 'I', 'f', 'm', 'm', 'p')

En el ejemplo podemos ver que la lista generada es compatible con la primer variable que se itera.

jueves, 29 de diciembre de 2016

martes, 27 de diciembre de 2016

TypeScript 2.1 fue liberado



Si bien la verdad no me gusta para nada el framework typescript, tengo que reconocer que es muy usado más que nada por los que usan Angular o React.

Que nos trae de nuevo la versión 2.1:

  • Funciones asíncronas: Esto significa que puede utilizar async / await en ES3/ES5 sin necesidad de utilizar otras herramientas.
  • Object Rest & Spread: facilita mucho la copia parcial, merge y la selección de objetos.
  • Tipos keyof and Lookup
  • Tipos Mapped
  • Y más!!
Por lo visto se viene con todo!!



Dejo link:
https://blogs.msdn.microsoft.com/typescript/2016/12/07/announcing-typescript-2-1/
https://www.infoq.com/news/2016/12/typescript-2-1-released

lunes, 26 de diciembre de 2016

Un resumen de Scala for the Impatient, parte 4

Bloques de código y asignaciones.

Un Bloque de código son un conjunto de expresiones. En scala los bloques de código, están delimitados por llaves {} y a diferencia de java o C los bloques de código retornan valor. Gracias a esto podemos inicializar un valor a partir de una expresiòn:

val distance = { val dx = x - x0; val dy = y - y0; sqrt(dx * dx + dy * dy) }

Como ya dijimos un bloque de código que no devuelva valor retornara Unit. La asignación no retorna valor por lo tanto si hacemos lo siguiente:

val x = y = 2

x no va a contener nada o Unit

Por lo tanto un bloque que termine en asignación sera de tipo Unit :

{ r = r * n; n -= 1 }

Input y Output.

Para imprimir algo podemos utilizar la función print o println :

print("Answer: ")
println(42)

Similar a :

println("Answer: " + 42)

También podemos utilizar print como C:

printf("Hello, %s! You are %d years old.\n", "Fred", 42)

Podemos leer una linea de tipo String con ReadLine, a la vez podemos leer teniendo en cuenta el tipo de lo que leemos con readInt, readDouble, readByte, readShort, readLong, readFloat, readBoolean, o readChar.

Loops.

Scala tiene el while similar a java o c:

while (n > 0) {
   r = r * n
   n -= 1
}

Scala no cuenta con el for con el formato (inicializar; condición; incrementar o actualizar) si necesitamos esta expresión tenemos 2 opciones o utilizar el while o podemos usar el for de esta forma:

for (i <- 1 to n)
r = r * i

Si recuerdan  “1 to n” retorna un rango de 1 hasta n inclusive, por lo tanto i va tomar un valor del rango por iteración. Por supuesto i no puede ser val debe ser var

Si necesitamos iterar hasta n-1 podemos utilizar “until” que retorna un rango de 1 hasta n excluyendo a n.

val s = "Hello"
var sum = 0
for (i <- 0 until s.length) // Last value for i is s.length - 1
sum += s(i)

En el siguiente ejemplo no es necesario un indice podemos iterar por los caracteres directamente.

var sum = 0
for (ch <- "Hello") sum += ch


miércoles, 21 de diciembre de 2016

Un resumen de Scala for the Impatient, parte 3

Estructura de Control y funciones

Expresión condicional

Scala tiene la expresión condicional if/else similar a java o c, sin embargo esta expresión retorna un valor. Por ejemplo:

if (x > 0) 1 else -1

Esta expresión retorna 1 o -1 con lo que podemos hacer

val s = if (x > 0) 1 else -1

y esto es similar a

if (x > 0) s = 1 else s = -1

En el segundo ejemplo s es un var, dado que cambia su valor.

El operador ternario de java y c funciona de forma similar que el if de scala.

Toda expresión en scala tiene un tipo, por lo que la expresión del ejemplo anterior es de tipo Int. Si tenemos una expresión que retorna diferentes tipos, scala lo tipara por el padre común.

if (x > 0) “positivo” else -1

En este caso scala va a tipar esta expresión a Any dado que es el ancestro común entre Int y String. (luego hablaremos de los tipos)

Si tenemos la expresión:

if (x > 0) 1

En el caso del “else” no retornamos nada, en scala todo retorna un valor y la nada es un valor que tiene un tipo similar a void de c o java. Este tipo es la clase Unit que tiene un valor y el mismo se escribe con dos paréntesis (), por lo tanto podemos afirmar que el siguiente ejemplo es igual al anterior:

if (x > 0) 1 else ()

Técnicamente hablando no es igual a void, void significa “sin valor” y Unit es un valor que significa “sin valor”, parece lo mismo pero no lo es, Unit es similar a tener cero pesos en la billetera y void a no tener billetera.

Terminación de sentencias

Como pudieron ver en scala no es necesario el punto y coma es opcional, similar a javascript. Sin embargo si deseamos escribir 2 expresiones en una linea, estamos obligados a usar el punto y coma.

if (x > 0) { a = 1; j= 6 }

El punto y coma es necesario para separar las 2 lineas pero no al finalizar, dado que se encuentra la llave que cierra }

Si deseamos escribir una expresión en 2 lineas esta debe terminar en un simbolo, como por ejemplo:

s = s0 + (v0 * 0,1) +
    t * 5 + s0

En la practica no es común tener expresiones tan largas o estas deberían ser una función.

Muchos programadores procedentes de Java o C ++ son inicialmente incómodos acerca de omitir puntos y comas. Si usted prefiere tenerlos, simplemente póngalos en - no hacen ningún daño.



martes, 20 de diciembre de 2016

Los cinco principios de la gestión moderna de proyectos

La gente de oracle sigue enviado buenos drafts para lectura en el verano, ahora sobre principios de la gestión moderna de proyectos:

Ver este mensaje en un navegador Web
Oracle Corporation
Cinco Características aplicadas a la Gestión Moderna de su Cartera de Proyectos

Soluciones Modernas para las Necesidades de sus Proyectos Corporativos.

Estimado/a Emanuel,

Una gestión exitosa de proyectos depende del trabajo en equipo y la colaboración. Pero, históricamente, las soluciones de gestión de proyectos no siempre facilitaron el trabajo en equipo. Afortunadamente esto está comenzando a cambiar. 

Conozca las "Cinco Características aplicadas a la Gestión Moderna de su Cartera de Proyectos", y sepa cómo las soluciones modernas se orientan hacia un enfoque colaborativo, centrado en las personas y orientado al conocimiento de la gestión de proyectos. 

Sepa cómo: 
  • Obtener nuevos conocimientos con información precisa en tiempo real
  • Fomentar el trabajo en equipo con tecnologías sociales y colaborativas
  • Aprovechar más su talento con un enfoque de proyectos orientado a las personas
Descargue Ahora


Gracias 

El Equipo de Finanzas de Oracle
Shadow
Descargue Ahora
Shadow

Five Tenets of Modern Project Portfolio Management
Integrated Cloud Applications and Platform Services
Copyright © 2016, Oracle Corporation.
Todos los derechos reservados.
Contáctenos | Avisos legales y Condiciones de Uso | Declaración de Privacidad
SEV100483926_MCC100483922_S3

Oracle Corporation - Worldwide Headquarters, 500 Oracle Parkway, OPL - E-mail Services, Redwood Shores, CA 94065, United States

Su privacidad es importante para nosotros. Puede administrar las suscripciones de sus correos electrónicos o puede desuscribirse de todos los correos de Oracle Marketing en cualquier momento.

Sepa que desuscribirse de las comunicaciones de Marketing no afecta el envío de comunicaciones importantes de negocios en su relación actual de negocios con Oracle como Actualizaciones de seguridad, Avisos de registros para eventos, Administración de cuentas y Comunicaciones de Soporte/Servicios.

lunes, 19 de diciembre de 2016

Un resumen de Scala for the Impatient, parte 2

Sobrecarga de operadores. 


La sobrecarga de operadores en scala es más simple, dado que un operador no es más que un método de un objeto. Es decir:

a + b

Es la forma simplificada de :

a.+(b)

Scala no tiene problema en que un método pueda llamase con símbolos tales como +, *, -, %, etc.

Por lo general podemos escribir

objeto método objeto

igual a smalltalk o

objeto.metodo(objeto)

igual a java o c

Otra diferencia importante es que no tenemos los operadores ++ o -- de java o c. Solo tenemos += o
-=

counter+=1

Otra diferencia es que podemos usar operadores para objetos BigInt o BigDecimal:

val x: BigInt = 1234567890
x * x * x // Yields 1881676371789154860897069000

Llamando funciones y métodos

Scala tiene funciones además de métodos. Es más sencillo utilizar funciones matemáticas como min o pow en Scala que en Java; no es necesario llamar a métodos estáticos de una clase.

sqrt(2) // Yields 1.4142135623730951
pow(2, 4) // Yields 16.0
min(3, Pi) // Yields 3.0

Las funciones matemáticas están definidas en el paquete Math que se puede importar:

import scala.math._

Scala no tiene métodos estáticos, pero tiene el concepto de objetos singletones, que son eso objetos que nacen con una sola instancia.

Los métodos que no necesitan parámetros, no necesitan los paréntesis que cierran y abren "()" por ejemplo:

"Hello".distinct

Aplicar un método. 

En Scala, es común usar una sintaxis que se parece a una llamada de función. Por ejemplo si a un string lo llamamos con un parámetro entero este retornara el char en  posición, similar a llamar a charAt de java o el operador [] en C. Por ejemplo:

"Hello"(4) // Yields 'o'

Esto funciona porque StringOps implemento el método apply :

def apply(n: Int): Char

Este método no es necesario llamarse, es decir se llama de forma implícita, pero podemos llamarlo y funciona:

"Hello".apply(4)

Usar método apply para construir objetos es común es scala, por ejemplo el array:

Array(1, 4, 9, 16) // retorna un array

Seguimos en la parte 3.


sábado, 17 de diciembre de 2016

Un resumen de Scala for the Impatient


Como ya conté, estoy leyendo Scala for the Impatient, y se me ocurrió hacer un resumen. No pienso ser muy correcto en el resumen.

Solamente voy a escribir los temas que me gustaron más y me sorprendieron. Cosa de no evitar que lean un buen libro.

Sin más empezamos:

Empecemos por el principio, el libro recomienda como instalar scala, pero yo por una cuestión de gusto dejo que los busquen ustedes por su cuenta.

Otra buena opción es bajar scala Ide, que es un entorno de desarrollo para scala y permite ejecutar código.

Declarando variables y valores

En scala podemos nombrar valores, es decir a un valor determinado ponerle un nombre:

 scala> val answer = 8 * 5 + 2
answer: Int = 42

Con val pusimos un nombre por lo que ese nombre no puede ser usado para otro valor. Es decir se comporta como una constante.

scala> answer = 0
<console>:6: error: reassignment to val

Si necesitamos declarar una variable debemos utilizar la palabra "var"

var counter = 0
counter = 1 // OK, can change a var

Como pudieron notar no le dijimos el tipo a la variable, pero tiene un tipo dado que scala es de tipado estático, lo que sucedio es que el compilador infirio el tipo. Pero si queremos le podemos indicar el tipo:

val greeting: String = null
val greeting: Any = "Hello"

Tipos comunes

Como Java, scala cuenta con tipos tales como Byte , Char , Short , Int , Long , Float y Double, además Boolean. Sin embargo no existe el concepto de valores primitivos, es decir todo es un objeto, en serio. Veamos un ejemplo:

1.toString() //"1"

O mejor aun:

1.to(10) // Yields Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Scala no necesita wrapper types. El compilador se encarga de estos problemas, como debería ser. A la vez el compilador castea tipos de forma automática, por ejemplo el tipo Int a RichInt.

Algo que me falto aclarar es que hay clases RichInt, RichDouble, RichChar, y así sucesivamente. Cada uno de ellos tiene un pequeño conjunto de métodos de conveniencia para actuar sobre sus primos pobres: Int, Double o Char. El método "to" que has visto anteriormente es en realidad un método de la clase RichInt.

Luego continuaremos en la parte 2.

Dejo link:
http://fileadmin.cs.lth.se/scala/scala-impatient.pdf