|
Translate
miércoles, 24 de mayo de 2017
Try C#
Notaron que hace poco dije que .net core se viene con todo, bueno por lo tanto es buena idea estudiar C# y que mejor que tomar un curso de codescholl totalmente gratuito.
martes, 23 de mayo de 2017
Infografia de Kotlin
Hasta hace poco, si nombrabas Kotlin, pensaban que hablabas de la capital de Bielorrusia y ahora que Android le dio cobijo, esta en todas partes y bueno, tengo que hacerme eco de este entusiasmo:
sábado, 20 de mayo de 2017
Kotlin, es un lenguaje oficial para programación en la plataforma Android
Ya es noticia en todos lados, y una gran noticia. La plataforma Android tiene un nuevo lenguaje con soporte oficial y es Kotlin.
Siempre me pregunte cuando nacio Android porque no hicieron su plataforma multilenguaje. Si bien habia muchos desarrolladores Java, java venia bajando. Es más creo que Android lo levanto mucho.
Pero como sabemos la plataforma Java tiene mucho futuro, pero el lenguaje empieza su desenso, que es natural y bueno. Kotlin es un lenguaje moderno, en muchos puntos parecido a Scala y me gusta mucho.
Jetbrains, la empresa creadora dle lenguaje la viene pegando increiblemente, IntelliJ IDEA como ide oficial de android, Kotlin como lenguaje oficial y si son de .net la ide JetBrains Rider sugerida como una IDE para programar en .net core. Me saco el sombrero!!
Espero que google siga agregando lenguajes a su plataforma!!
Dejo link:
https://kotlinlang.org/
https://www.infoq.com/news/2017/05/android-kotlin
viernes, 19 de mayo de 2017
Y lo que viene es .net core
La verdad que llegue muy tarde a .net core y todavia esta bastante verde. Pero me sorprendio.
Si bien existe posibilidades de ejecutar codigo .net con mono o otros tantos frameworks. .net core brinda algo que en la ecuaci{on le da mucho peso y es que es totalmente open source y gratuito y esta apoyado por microsoft y apoyada por otras empresas.
Si bien hoy es un salto grande y todavia no esta listo, para producción vamos a tener que estudiarla porque tiene mucho futuro. A simple vista parece que solo es un intento de microsoft para ganar un mercado virgen para él, pero cuando vemos otras empresas interesadas en el proyecto ahi lo tomamos en serío.
Sin más solo anuncio que me voy a poner a estudiar, y les aconsejo que lo hagan tambian.
Dejo link:
https://dotnet.github.io/
Si bien existe posibilidades de ejecutar codigo .net con mono o otros tantos frameworks. .net core brinda algo que en la ecuaci{on le da mucho peso y es que es totalmente open source y gratuito y esta apoyado por microsoft y apoyada por otras empresas.
Si bien hoy es un salto grande y todavia no esta listo, para producción vamos a tener que estudiarla porque tiene mucho futuro. A simple vista parece que solo es un intento de microsoft para ganar un mercado virgen para él, pero cuando vemos otras empresas interesadas en el proyecto ahi lo tomamos en serío.
Sin más solo anuncio que me voy a poner a estudiar, y les aconsejo que lo hagan tambian.
Dejo link:
https://dotnet.github.io/
miércoles, 17 de mayo de 2017
Desde java a Dart
Encontre esta pagina para aprender Dart para los programadores Java. Esta muy bueno, con ejemplos concretos y es muy pedagojico. Muy recomendado!!
Dejo link:
https://codelabs.developers.google.com/codelabs/from-java-to-dart
Swift 3.1 se viene con todo
Swift 3.1 se viene con todo, mejoras en el lenguaje, mejoras al sistema de paquetes y mejoras en implementación en Linux!!
Como mejora al lenguaje 2 nuevas incorporaciones: prefix y drop (prefijo y postfijo) los cuales permiten recorrer una colección:
let subseq = s.prefix(while: {$0 < m}).drop(while: {$0 < n})
Como podemos ver devuelven la subsecuencia obtenida por la eliminación o inclusión de los elementos iniciales de una secuencia mientras que un predicado dado es verdadero.
Swift 3.1 también agrega una serie de inicializadores de conversión para todos los tipos numéricos, incluidos los tipos Int, Float y Double, que producen un resultado correcto o devuelven nil. Los inicializadores disponibles, tienen por objeto mejorar la conversión de datos. Todos los tipos numéricos tienen por lo tanto un nuevo inicializador que utiliza la palabra clave exacta, por ejemplo:
init?(exactly value: Int64)
Con licencia Apache License, Version 2.0. Swift se esta volviendo un lenguaje cada vez más poderoso.
Dejo link: http://swift-lang.org/main/
Como mejora al lenguaje 2 nuevas incorporaciones: prefix y drop (prefijo y postfijo) los cuales permiten recorrer una colección:
let subseq = s.prefix(while: {$0 < m}).drop(while: {$0 < n})
Como podemos ver devuelven la subsecuencia obtenida por la eliminación o inclusión de los elementos iniciales de una secuencia mientras que un predicado dado es verdadero.
Swift 3.1 también agrega una serie de inicializadores de conversión para todos los tipos numéricos, incluidos los tipos Int, Float y Double, que producen un resultado correcto o devuelven nil. Los inicializadores disponibles, tienen por objeto mejorar la conversión de datos. Todos los tipos numéricos tienen por lo tanto un nuevo inicializador que utiliza la palabra clave exacta, por ejemplo:
init?(exactly value: Int64)
Con licencia Apache License, Version 2.0. Swift se esta volviendo un lenguaje cada vez más poderoso.
Dejo link: http://swift-lang.org/main/
sábado, 13 de mayo de 2017
Mendeley
Tuve un curso en la maestría en el cual me mostraron Mendeley y quede maravillado.
Es un gestor de papers, pero se puede utilizar para lectura también. Básicamente Mendeley, organiza los libros o papers que has leído y cual no, permite buscar nuevos. Se sincroniza nuestra librería con la nube y nos permite seguir leyendo en cualquier lugar.
Solo uno tiene que hacerse una cuenta y luego se baja la aplicación que viene para muchas plataformas, se instala y listo.
Muy buen producto, es gratuito hasta 3 gigas y también podemos hacer comunidad y ver que leyeron nuestros amigos y compartir papers.
Esta bueno, muy recomendable.
Dejo link: https://www.mendeley.com/
miércoles, 10 de mayo de 2017
Primeros pasos en Sinatra
Donde nos lleva la vida, no? Nunca pensé que tenia que retomar mis estudios en ruby y mucho menos con Sinatra. Pero esta bueno, volver a leer un lenguaje que me gusta mucho.
Si quieren saber que es Sinatra, acá tenemos un post:
http://emanuelpeg.blogspot.com.ar/2012/11/sinatra-rapida-creacion-de-aplicaciones.html
Empecemos por el principio, instalar Ruby. Eso es muy fácil y si usan linux :
sudo apt-get install ruby-full
En distros Debian, Ubuntu, Mint o cualquier derivado de debian que use apt.
$ sudo yum install ruby
En distros rhel y para otras distros: https://www.ruby-lang.org/es/documentation/installation/
También tenemos que instalar el software de instalación de paquetes RubyGem.
$ sudo apt-get install rubygems
En distros Debian, Ubuntu, Mint o cualquier derivado de debian que use apt.
$ sudo yum install rubygems
En distros rhel.
Vamos a ver la versión que instalamos con el comando:
ruby -v
Si dice algo así hemos tenido éxito:
ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
$ gem install sinatra
Esto hará que nuestro sistema descargue todas las dependencias como Rack y otras utilidades, aparte de la documentación oficial para varios de estos componentes, de forma que tengamos ayuda cuando queramos ejecutar algún comando en particular.
Ya una vez que tenemos instalado Sinatra y sus dependencias, empezar a utilizarlo , simplemente debemos crear un nuevo proyecto, es decir, una carpeta donde almacenar nuestros archivos y crear un archivo que llamaremos ejemplo.rb (muy original)
~ $ mkdir ejemplo
~ $ cd ejemplo
~/ejemplo $ nano ejemplo.rb
Y ahora escribimos el siguiente código:
require 'sinatra'
get '/' do
"Hola, mundo!"
end
Y ya estamos, ahora a ejecutarlo:
$ ruby ejemplo.rb
Si todo salio bien tenemos la siguiente salida o parecida :
/var/lib/gems/2.3.0/gems/rack-2.0.2/lib/rack/show_exceptions.rb:16: warning: already initialized constant Rack::ShowExceptions::CONTEXT
/usr/lib/ruby/vendor_ruby/rack/showexceptions.rb:16: warning: previous definition of CONTEXT was here
/var/lib/gems/2.3.0/gems/rack-2.0.2/lib/rack/show_exceptions.rb:114: warning: already initialized constant Rack::ShowExceptions::TEMPLATE
/usr/lib/ruby/vendor_ruby/rack/showexceptions.rb:115: warning: previous definition of TEMPLATE was here
[2017-05-10 22:44:39] INFO WEBrick 1.3.1
[2017-05-10 22:44:39] INFO ruby 2.3.1 (2016-04-26) [x86_64-linux-gnu]
== Sinatra (v1.4.7) has taken the stage on 4567 for development with backup from WEBrick
[2017-05-10 22:44:39] INFO WEBrick::HTTPServer#start: pid=26437 port=4567
Lo importante es que levanto un servidor WEBrick en el puerto 4567 es decir que deberíamos ver un hermoso hola mundo en : http://localhost:4567/
martes, 9 de mayo de 2017
La guía para ejecutar MongoDB
Me llego este mail, y esta tan bueno que lo quiero compartir:
| ||||||||||||||||
MongoDB Inc., 2017. Todos los derechos reservados. Palacio de Miraflores, Suite 219 & 220, Carrera de San Jerónimo 15 - 2, Madrid 28014, Spain |
sábado, 6 de mayo de 2017
Linux Mint 18.1, "Serena"
Un un problema con la placa de video tuve que formatear la maquina, no todo esta tan mal en la vida. Tuve la gran oportunidad de encontrarme con Linux Mint 18.1, "Serena" y instale la versión xfce.
Que linda distro! Muy recomendable!
Dejo unos screenshot:
Dejo link: https://www.linuxmint.com
Que linda distro! Muy recomendable!
Dejo unos screenshot:
Dejo link: https://www.linuxmint.com
La programación como una forma de pensar
Leyendo un poco la web me encontré con un articulo de la scientific american, muy básicamente señala la importancia que tienen los lenguajes de programación modernos y su impacto positivo en el pensar humano.
La programación solía ser solo una traducción: expresar ideas en lenguaje natural, trabajar con ellas en la notación matemática, luego escribir diagramas de flujo y pseudocódigo, y finalmente escribir un programa. La traducción era necesaria porque cada lenguaje ofrece diferentes capacidades. El lenguaje natural es expresivo y legible, el pseudocódigo es más preciso, la notación matemática es concisa y el código es ejecutable.
Pero el precio de la traducción es que estamos limitados al subconjunto de ideas que podemos expresar efectivamente en cada lenguaje. Algunas ideas que son fáciles de expresar computacionalmente son difíciles de escribir en notación matemática, y las manipulaciones simbólicas que hacemos en matemáticas son imposibles en la mayoría de los lenguajes de programación.
El poder de los lenguajes de programación modernos es que son expresivos, legibles, concisos, precisos y ejecutables. Eso significa que podemos eliminar los lenguajes intermedios y usar un lenguaje para explorar, aprender, enseñar y pensar. Esto me hace pensar mucho en smalltalk.
Salvo que habla solo de python, por lo demás esta muy bueno.
Dejo link: https://blogs.scientificamerican.com/guest-blog/programming-as-a-way-of-thinking/
miércoles, 3 de mayo de 2017
Instalar Docker Community Edition en Ubuntu
No es un post muy revelador, la verdad que es bastante fácil pero una ayudita nunca viene mal.
Como prerequisitos, esto funciona para las siguientes versiones de Ubuntu:
- Yakkety 16.10
- Xenial 16.04
- Trusty 14.04
Primero instalar apt-transport-https, ca-certificates y curl :
sudo apt-get -y install \
apt-transport-https \
ca-certificates \
curl
Luego nos traemos el certificado.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
y luego agregamos el repositorio:
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
y luego refrescamos el repositorio:
sudo apt-get update
y por ultimo pero no menos importante instalamos docker:
sudo apt-get -y install docker-ce
Y probamos la instalación:
sudo docker run hello-world
Oracle Database 12c esta disponible en Docker
Al parecer la semana pasada en Dockercon, Oracle anuncio que la base de datos Oracle va estar disponible en el Docker Store.
La verdad es que no entiendo nada, si ven el precio dice 0 ?
Algo raro hay, alguien me explica?
Dejo link: https://store.docker.com/images/oracle-database-enterprise-edition?tab=description
https://blog.docker.com/2017/04/oracle-database-dev-tools-in-docker-store/
domingo, 30 de abril de 2017
Un resumen de Scala for the Impatient, parte 17
Objetos que extienden de clases o trait
Un objeto puede extender de una clase y/o una o más traits. El resultado es un objeto que tiene las características de la clase y/o traits y puede agregar características propias.
Esto puede ser muy útil, por ejemplo para implementar el patrón NullObject. En el cual modelamos el objeto nulo, dado que queremos aprovechar las ventajas de la programación orientada a objeto.
Por ejemplo una acción de un comando que no haga nada:
abstract class UndoableAction(val description: String) {
def undo(): Unit
def redo(): Unit
}
object DoNothingAction extends UndoableAction("Do nothing") {
override def undo() {}
override def redo() {}
}
Luego si tenemos un mapa de acciones:
val actions = Map("open" -> DoNothingAction, "save" -> DoNothingAction, …)
El método apply
Es común que los objetos tengan un método apply que se ejecuta cuando se llama el objeto con parámetros:
Object(arg1, ..., argN)
Típicamente estos métodos retornan una instancia de la clase que acompaña este objeto.
Por ejemplo el Array tiene un método apply que construye un Array con los objetos pasados por parámetros:
Array("Mary", "had", "a", "little", "lamb")
Porque no usar un constructor? Para no usar la palabra clave new, de esta manera podemos construir un arreglo de la siguiente manera:
Array(Array(1, 7), Array(2, 9))
Veamos un ejemplo de una definición de un método apply :
class Account private (val id: Int, initialBalance: Double) {
private var balance = initialBalance
...
}
object Account { // The companion object
def apply(initialBalance: Double) =
new Account(newUniqueNumber(), initialBalance)
…
}
Ahora podemos construir una cuenta de la siguiente manera:
val acct = Account(1000.0)
El Objeto aplicación
Un programa Scala al igual que c++ o java, ejecuta un método main el cual recibe por parámetros un vector de Strings y retorna el tipo Unit.
object Hello {
def main(args: Array[String]) {
println("Hello, World!")
}
Otra forma de ejecutar programas sin escribir el método main es extender el de App :
object Hello extends App {
println("Hello, World!")
}
Si necesita argumentos App tiene una propiedad args:
object Hello extends App {
if (args.length > 0)
println("Hello, " + args(0))
else
println("Hello, World!")
}
Ahora podemos correr nuestro programa:
$ scalac Hello.scala
$ scala Hello Fred
Hello, Fred
miércoles, 26 de abril de 2017
Scala exercises
Queres aprender scala? y divertirte??
Este sitio es para vos!!
Scala exercises permite ingresar con un usuario de github y podes realizar ejercicios que te permite aprender Scala, si! y de forma gratuita!!
Dejo link: https://www.scala-exercises.org
Suscribirse a:
Entradas (Atom)