Translate

jueves, 19 de noviembre de 2015

The Shape of JavaScript to Come

La gente de codescholl hizo un curso gratuito sobre javascript, les más info:

COURSE OVERVIEW

  1. Level 1 ES2015: The Shape of JavaScript to Come Completion Badge

    LEVEL 1 FREE LEVELDeclarations 3 Videos | 10 Challenges

    Learn about the new types of variable declarations and how they can help with some well-known JavaScript gotchas.
  2. Level 2 ES2015: The Shape of JavaScript to Come Completion Badge

    LEVEL 2Functions 2 Videos | 9 Challenges

    Explore new features added to functions, like default parameters, rest parameters, spread operators, and arrow functions.
  3. Level 3 ES2015: The Shape of JavaScript to Come Completion Bad

    LEVEL 3Objects, Strings, and Object.assign 2 Videos | 10 Challenges

    Find new ways to work with JavaScript Objects and Strings.
  4. Level 4 ES2015: The Shape of JavaScript to Come Completion Badge

    LEVEL 4Arrays, Maps, and Sets 3 Videos | 20 Challenges

    Learn how to work with Arrays and more efficient alternatives to working with collections, like Maps and Sets.
  5. Level 5 ES2015: The Shape of JavaScript to Come Completion Badge

    LEVEL 5Classes and Modules 3 Videos | 14 Challenges

    Discover how to write object-oriented code using the new class syntax and how to leverage the new module system to keep things clean and organized.
  6. Level 6 ES2015: The Shape of JavaScript to Come Completion Badge

    LEVEL 6Promises, Iterators, and Generators 3 Videos | 10 Challenges

    Learn alternatives to writing async code, iterator objects for navigating sequences more efficiently, and special functions that return those objects.


Dejo link: https://www.codeschool.com/courses/es2015-the-shape-of-javascript-to-come

lunes, 16 de noviembre de 2015

Maven Central + Google Cloud Storage


Maven Central es el repositorio central donde muchas bibliotecas Java de código abierto publican sus artefactos. Muchas aplicaciones utilizan estos artefactos.

A la vez Google Cloud Storage permite a los usuarios almacenar datos ilimitados en la infraestructura de Google en recipientes llamados cubos, reclamando un mayor rendimiento, la fiabilidad y la disponibilidad de los casos de uso como alojamiento web, archivo y recuperación de desastres

Imagínense estos 2 juntos.

Google nos ofrece un mirror con la central de maven agregando el siguiente mirror a   ~/.m2/settings.xml.

<settings>
  <mirrors>
    <mirror>
      <id>google-maven-central</id>
      <name>Google Maven Central</name>
      <url>https://maven-central.storage.googleapis.com</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
</settings>

A disfrutar!!

Se viene C# 7


C# 7 viene con todo. Cada vez se parece más a Scala. Vamos porque:

Pattern Matching: Ahora vamos a poder hacer en C# 7 lo siguiente:

// Moving a shape using pattern matching
void move (Shape s) {
  match (s) {
    (Rectangle r) => // Move rectangle
    (Circle c) => // Move circle
    default => // Handle default or throw
  }
}

Tuple syntax: Continuando con la mejora con respecto a pattern matching, tambien con las tuplas.

match (state, input) {
    (State.Init, Event.Go) => { // Process the input }
    (State.Init, Event.Stop) => { // Process the input}
    (_, _) => { // handle invalid state }
}

Nullable reference type: C# viene tratando a de tener una opción correcta para estos tipos, por ahora no hay un diseño claro.

Dejo link: https://github.com/dotnet/roslyn/issues/2136


viernes, 13 de noviembre de 2015

TensorFlow, El motor de inteligencia artificial de Google



Leí un poco de TensorFlow, el sistema de aprendizaje automático TensorFlow está especializado para el reconocimiento de voz, reconocimiento de textos y reconocimiento de imágenes, pero su inteligencia artificial todavía está en su infancia.

Google ha visto que TensorFlow tendrá un impacto aún más grande fuera de sus instalaciones y productos. Por ello, para que su sistema de aprendizaje automático evolucione con mayor rapidez y hayan más aplicaciones inteligentes, han liberado el código fuente del proyecto TensorFlow para que investigadores y desarrolladores colaboren junto a Google para mejorar este gran sistema de inteligencia artificial.

Les dejo un video:


Dejo link:
https://github.com/tensorflow/tensorflow
http://www.tensorflow.org/



lunes, 9 de noviembre de 2015

LISP (LISt Processing)

En el post anterior vimos programación funcional, ahora vamos a hacer un repaso de lisp, el lenguaje funcional más famoso.

Es el lenguaje más conocido de Programación Funcional. Aún así, no es un lenguaje funcional puro ya que posee asignación (SETF) e iteración (DO).

Se utiliza la notación prefijo para cualquier función, inclusive para las expresiones aritméticas

Funciones y constantes más importantes:

  • (FIRST lista)    o      (CAR lista)    //devuelve el primer elemento de lista
  • (REST lista)     o      (CDR lista)    //devuelve la lista resultante de quitar el primer elemento a lista
  • (NULL lista)     //determina si una lista está vacía
  • (CONS elemento lista)   //construye una nueva lista con elemento como primero y lista como resto
  • (DEFUN  nombreFuncion (parámetros)  resultado)   //define una función
  • (COND  (condición1  resultado1)  (condición2  resultado2) ... )   
  • //devuelve el i-ésimo resultado si la i-ésima condición es verdadera, partiendo por i=1
  • NIL // constante Lista Vacía y constante False
  • T          // constante True
  • ’()        // constante Lista Vacía
  • (FUNCALL  variableFuncion  Parámetro1 Parámetro2 ... ParámetroN)   //ejecuta la función asociada a la variableFuncion, normalmente pasada como parámetro, con los    parámetros indicados
  • (LISTP  objeto)     //verdadero si objeto es una lista
  • (NUMBERP objeto)     //verdadero si objeto es un número
  • (AND  condicion1 condicion2 ...)   //verdadero si todas las condiciones son verdaderas
  • (OR condicion1 condicion2 ...)   //verdadero si al menos una condición es verdadera
  • (+ num1 num2 … numN) // suma
  • (- num1 num2) // resta
  • (<  expr1  expr2) // verdadero si expr1 es menor que expr2
  • (=  expr1  expr2) // verdadero si expr1 es igual a expr2
Veamos una función en Lisp: 

(defun cuadrado(n) ( 
        (* n n)

Dejo link: 



domingo, 8 de noviembre de 2015

Fundamentos de la Programación Funcional


Si no tenes mucha idea que es la programación funcional, y te interesa. Aprovecha y lee este post:

Modelos genéricos de programación:

- Imperativa: explican paso a paso COMO resolver un problema, es decir que proveen un
                                    algoritmo para su resolución.

- Declarativa: definen reglas QUE DESCRIBEN o DEFINEN la solución del problema.


La programación Funcional es DECLARATIVA, aunque en la práctica existen muchos lenguajes “funcionales” impuros, tales como LISP, que permiten especificar algoritmos. De todos modos, la mayor parte de la programación en estos lenguajes se hace de manera declarativa.


Ejemplo que muestra la diferencia entre Programación Imperativa, y Programación Funcional (cálculo del factorial de un número)

Forma Imperativa: (Especificación de los pasos del cálculo)

Dado el número N:
1 - Asignar a una variable I el valor de N
2 - Poner en 1 una variable FAC
3 - Mientras  I>0
2.1 - Asignar a FAC el resultado de FAC * I.
2.2 - Disminuir I en 1.
4 - Devolver el valor de FAC.

Forma Declarativa: (Definición de lo que ES el factorial)
     Factorial(N)
- Si N=0, Factorial de N es 1.
- Si N>0, Factorial de N es N * Factorial (N-1).


La programaciEstá basada en la evaluación de expresiones construidas mediante llamadas a FUNCIONES.

Se aplica el concepto matemático de Función:

FUNCIÓN: Transformación de un elemento (que puede ser una n-upla) tomado de un conjunto llamado Dominio, en un y sólo un, valor tomado de otro conjunto (que puede ser el mismo); el Codominio.

TRANSPARENCIA REFERENCIAL: Es la propiedad más importante de la Programación Funcional. Se define de la siguiente manera: “una función siempre devuelve el mismo resultado si se le pasan los  mismos argumentos” En otras palabras, el valor de una expresión depende solo de los valores de sus subexpresiones, y no del momento ni la forma en la cuál es llamada.

Debido a esto, por ejemplo,  f(x) + f(x)  es lo mismo que 2 * f(x)

EFECTOS LATERALES: si una rutina, además de cumplir con su objetivo, realiza alguna otra tarea, se dice que posee Efectos Laterales. En la práctica, esto se produce cuando se modifican los parámetros de la rutina, o alguna variable global. La Programación Funcional NO posee efectos laterales, es decir que una Función calcula su resultado y no hace nada más.

La programación funcional pura NO posee asignaciones, ya que van en contra los postulados anteriores.

Tampoco existe la iteración. Ésta se reemplaza por la recursividad.

Las funciones son Valores de Primera Clase. Esto significa que se pueden utilizar en cualquier lugar en el cuál esté permitido poner un valor, ya que tienen su misma jerarquía.

En consecuencia, se permite definir Funciones de Orden Superior, que son funciones que tienen otras funciones como argumentos o como resultado, aumentando la flexibilidad y generalidad del lenguaje.

Normalmente los lenguajes funcionales poseen manejo implícito de memoria, por lo tanto no se tiene necesidad de crear y destruir variables en forma explícita.

La estructura de datos principal de un lenguaje funcional es la Lista, ya que por ser lenguaje de 4ta generación, con un nivel de abstracción mayor, se orienta hacia la resolución de problemas de la realidad, donde dicha estructura es mucho más común que otras, tales como el arreglo.

Funciones Anónimas: en programación funcional se permite definir y utilizar una función sin asignarle un nombre. Estas funciones se denominan Funciones Anónimas, y se expresan siguiendo la sintaxis del Cálculo Lambda:  (lambda (parámetros) resultado) [ Lx.M].

Ejemplo en LISP:
(LAMBDA (X) (* X X))

Uso de una Función Anónima como parámetro de una Función de Orden Superior
  (CONTARSI   (LAMBDA (E) (>= E 0))   ‘(2 -4 3 0 56 -34 2 8))

Funciones que se ejecutan sobre una lista completa: (map funcion lista)  {devuelve la lista resultante de aplicar la función a cada uno de los elementos de lista}

Normalmente los lenguajes funcionales tienen Tipado Dinámico.

La programación funcional soporta Polimorfismo paramétrico y sobrecarga

Evaluación Tardía: es una característica de algunos lenguajes funcionales por la cuál cuando se ejecuta una función, las expresiones que se le pasan como parámetros son evaluadas en el momento en el que se las necesita, y no antes. Esto hace que no sea necesario perder tiempo de ejecución para calcular valores que no se utilizan

Las desventajas de los lenguajes funcionales son:
Expresión de la Entrada/Salida
Dificultad para obtener una implementación eficiente
Actualización de estructuras de datos.


Ejemplos de lenguajes Funcionales:

  • Lisp
  • FP
  • Haskell
  • Hope
  • ISWIM
  • Miranda
  • Scheme
  • Standard ML

Con ustedes NetBeans IDE 8.1


NetBeans IDE 8.1 esta con nosotros, la mayor mejora es con respecto a node, se pueden crear, ejecutar y depurar  proyectos node.

Además de esta mejoras podemos enumerar otras como:

  • Mejoras HTML 5
  • Mejoras para framework javascript como AngularJS y KnockoutJS
  • Mejoras en soporte para Java 8, PHP, C++
Dejo link: 

https://netbeans.org/downloads/

jueves, 5 de noviembre de 2015

Visual Studio en Linux y Mac: Visual Studio Code



La verdad me soprendio este informe de genbeta sobre visual studio code, el visual studio para Linux o Mac.

Antes de las criticas, visual studio code, no es ni la sombre de visual studio, pero empezamos con algo, yo como siempre soy totalmente positivo. Espero no arrepentirme...



Dejo link:
http://www.genbetadev.com/visualstudio/visual-studio-en-linux-y-mac-visual-studio-code

The Magical Marvels of MongoDB

Como les decía en el post anterior, codescholl se viene con todo y mongodb tambien. Sin más los dejo el programa:

COURSE OVERVIEW

  1. Level 1 The Magical Marvels of MongoDB Completion Badge

    LEVEL 1 FREE LEVELConjuring MongoDB 2 Videos | 8 Challenges

    Capture the mystical basics of MongoDB and try your hand at inserting and finding documents.
  2. Level 2 The Magical Marvels of MongoDB Completion Badge

    LEVEL 2Mystical Modifications 2 Videos | 12 Challenges

    ​Learn the lore behind performing updates and transform your data.
  3. Level 3 The Magical Marvels of MongoDB Completion Badge

    LEVEL 3Materializing Potions 2 Videos | 11 Challenges

    Dig deep into the spell book to learn how to conjure and customize queries.
  4. Level 4 The Magical Marvels of MongoDB Completion Badge

    LEVEL 4Morphing Models 2 Videos | 11 Challenges

    Summon the wisdom to guide you in your journey of modeling data.
  5. Level 5 The Magical Marvels of MongoDB Completion Badge

    LEVEL 5Aggregation Apparitions 2 Videos | 8 Challenges

    ​Explore the realm of aggregations to see how data can be combined in miraculous ways.



Dejo link:
https://www.codeschool.com/courses/the-magical-marvels-of-mongodb


The Sequel to SQL



La gente de codeschool publicaron varios cursos sobre base de datos, para la gente que quiere perfeccionar su conocimiento en sql.

Les dejo el programa:

COURSE OVERVIEW

  1. The Sequel to SQL Level 1 Badge

    LEVEL 1 FREE LEVELAggregate Functions 2 Videos | 10 Challenges

    Learn how to use SQL aggregate functions, including COUNT, SUM, and AVG, to do calculations on groups of data.
  2. The Sequel to SQL Level 2 Badge

    LEVEL 2Table Constraints 2 Videos | 11 Challenges

    Add constraints — like NOT NULL, UNIQUE, FOREIGN KEY, and PRIMARY KEY — to your tables to increase data integrity.
  3. The Sequel to SQL Level 3 Badge

    LEVEL 3Normalization and Relationships 2 Videos | 7 Challenges

    Apply normalization rules to create tables without duplicate data and build the appropriate relationships.
  4. The Sequel to SQL Level 4 Badge

    LEVEL 4Inner Joins, Aliases, and Outer Joins 3 Videos | 7 Challenges

    Explore writing a single query to pull data from multiple tables and using aliases to create succinct queries.
  5. The Sequel to SQL Level 5 Badge

    LEVEL 5Subqueries 1 Video | 3 Challenges

    Dive deeper as you learn how to write queries within queries.



Dejo link:
https://www.codeschool.com/courses/the-sequel-to-sql/

sábado, 31 de octubre de 2015

Siguiendo el abecedario, luego de C, D...

D es un lenguaje de programación inspirado en C, básicamente la idea es que D sea la continuación de C.

Cuales son las diferencias con C? Muchas! Entre ellas:

  • No permite herencia múltiple
  • Usa interfaces parecidas a las de Java, que son comparables a las clases abstractas de C++.
  • Soporta Metaprogramación
  • Utiliza un recolector de basura.
  • La biblioteca estándar en D es llamada Phobos

A la vez hays plugins para Eclipse y tambien hay IDEs escritas en el propio D como Poseidon, que incluye completado de código, resaltado de sintaxis y depurador.

D ha mantenido algunas características de C++ y también está influido por otros conceptos de otros lenguajes como Java, C# y Eiffel.

Dejo link:
http://dlang.org/

miércoles, 28 de octubre de 2015

domingo, 25 de octubre de 2015

Elixir 1.1, trae nuevas APIs y mejora en performace


A un año de Elixir 1.0 tenemos la versión 1.1, esta trae nuevas APIs y mejora en performace.

Elixir 1.1 nos trae como 40 nuevas funcionalidades, incluyendo nueva APIs para Enum, Task, y String modules. Además, un nuevo tipo de datos fueron agregados, MapSet.

También se ha mejorado de herramientas. Marco de pruebas unitarias de Elixir, ExUnit, tiene nuevas opciones que le permiten saltar las pruebas a través de las etiquetas e imprimir capturado mensajes de registro, incluso en caso de fallos. Mix, herramienta de construcción de Elixir, ofrece ahora un mejor rendimiento mediante la separación en tiempo de compilación dependencias y dependencias en tiempo de ejecución y volver a compilar un archivo sólo si alguna de sus dependencias en tiempo de compilación se han cambiado.

Dejo link:
https://github.com/elixir-lang/elixir/tree/v1.1.0
http://elixir-lang.org/blog/2015/09/28/elixir-v1-1-0-released/


ECMAScript 6 Metaprogramming Unleashed

Una buena explicación sobre Metaprogramming en ECMAScript 6 :