Translate

miércoles, 13 de agosto de 2014

martes, 12 de agosto de 2014

Oracle Service Bus: SOA Reference Architecture Design Patterns

Quiero compartir el siguiente curso de oracle:

To ensure delivery directly to your inbox, please add reply@oracle-mail.com to your address book today.
If you are having trouble viewing this newsletter, please click here.
Free Oracle Learning Streams Live Webinar!
Oracle Service Bus: SOA Reference Architecture Design Patterns

Free Live Web Seminar
Oracle Service Bus: SOA Reference Architecture Design Patterns
Wednesday, August 20
11:00am to 12:00pm PT
(2:00pm to 3:00pm ET)
 
Sign up Now!


About the Instructor

David Mills
David Mills is a Senior Principal Instructor for Oracle University. He has been an instructor for over 14 years, teaching Fusion Middleware and Service-Oriented Architecture (SOA) training classes. David has presented numerous times at workshops and conferences such as Oracle OpenWorld, and continues to be sought out among his peers as the “go to” expert for a large number of Oracle Middleware products, technologies, and best practices.

Free Oracle Learning Streams Live Webinar!
Oracle Service Bus: SOA Reference
Architecture Design Patterns
SOA Reference Architecture Design Patterns

Oracle University is pleased to invite you to experience part of the new Oracle Middleware Learning Stream when you attend this free one-hour webinar delivered by one of our senior instructors, David Mills. In this webinar, David will discuss the primary use cases and patterns that should be considered when leveraging an Enterprise Service Bus within an SOA Infrastructure. He will also provide an overview of some of the specific capabilities of the Oracle Service Bus 12c and 11g, primarily focusing on the proxy service and connectivity service design patterns.This Live Webinar Includes:
  • Oracle Service Bus Overview
  • SOA Reference Architecture Overview
  • Inbound & Outbound Proxy Use Cases
  • Connectivity Services Use Case Patterns
  • ESB V-E-T-O Pattern
  • Previewing the Oracle Middleware Learning Stream
Why You Should Attend:
By attending this live seminar, you will be able to explain the capabilities of Oracle Access Manager and identify business areas where the product can be useful.
Sign Up Now.

Discover Oracle Learning StreamsSubscribe to Oracle Learning Streams to receive one year of unlimited access to:
  • Hundreds of fresh videos and webinars by Oracle experts
  • Live connections with Oracle's top instructors
  • Robust video search capability to find exactly what you are looking for
  • Tools to build your own custom learning queue and request new content
For a limited time save 50% when you purchase an Oracle Learning Stream subscription together with any Oracle University Classroom, Live Virtual Class or Training On Demand training.*

Learn More
Hardware and Software, Engineered to Work TogetherOracle University
Copyright © 2014, Oracle and/or its affiliates.
All rights reserved.
Contact Us | Legal Notices | Privacy

lunes, 11 de agosto de 2014

The Haskell Platform

The Haskell Platform es un conjunto de librerías, herramientas y paquetes de software. Es una plataforma común para el desarrollo de aplicaciones en Hashkell.

La plataforma provee diferentes herramientas para el desarrollo, entre las que podemos nombrar:


  • GHC, el compilador de Haskell
  • GHC-Profiler, herramienta para perfilar las aplicaciones.
  • GHCi, GHCs interprete de bytecode
  • GHCi-Debugger 
  • Alex, un generador similas a lex
  • etc...

Dejo link:
http://en.wikipedia.org/wiki/Haskell_Platform
http://www.haskell.org/platform/

sábado, 9 de agosto de 2014

Scala es el nuevo Ruby?


Quiero compartir con ustedes el siguiente articulo : https://medium.com/@Jarlakxen/is-scala-the-new-ruby-a-deeper-view-2b724666e595 en el cual es una comparativa de Ruby y Scala.

La verdad que coincido con la idea que Scala es o va a ser el nuevo Ruby. Pero no a nivel sintáctico o semántico, sino en lo que paso con el lenguaje. En mi humilde opinión Ruby es y fue un lenguaje exitoso dado que influyo a muchos lenguajes y muchos lenguajes se crearon a partir de él por nombrar algunos Groovy o Scala. Es decir existían muchas necesidades y el supo satisfacerlas.

Algunas personas dirán que no fue o es exitoso porque no hay tantos proyectos nuevos en Ruby o no hay tantas lineas de código escritas en él. Pero esto no es así. Ruby fue y es una gran influencia para los lenguajes y la programación. Tal vez no triunfo porque no usa la sintaxis de C o no sé.

Scala en mi humilde opinión no crecerá tanto como tecnología sino que influirá a otros lenguajes y sera el padre de otros lenguajes. Scala introdujo el concepto de que la programación funcional y la orientada a objetos pueden convivir. Además que los mejores conceptos de programación pueden convivir.

Que opinan?

miércoles, 6 de agosto de 2014

OpenLibra, la Biblioteca Libre


Que buena idea! Era hora que exista una pagina para compartir libros. En esta pagina podemos encontrar muchos libros sobre programación.

Dejo link: http://www.etnassoft.com/biblioteca/

martes, 5 de agosto de 2014

Curso de Django


Quiero compartir estos vídeo tutoriales sobre django el framework más popular para desarrollo de aplicaciones web para python.

Dejo link: https://www.youtube.com/playlist?list=PLEtcGQaT56cg3A3r-TNoc-PyVeOuAMB4x

sábado, 2 de agosto de 2014

Comet fácil con Atmosphere Framework


Seguramente has sentido nombrar la técnica de comet o técnica de Push que permite que el servidor envié peticiones sin que el browser o cliente lo solicite. Voy a dar un ejemplo, si debemos implementar un chat, en el modelo tradicional el cliente debe preguntar cada cierto tiempo si hay un nuevo mensaje para él porque el servidor no puede notificar al cliente sin un pedido de éste.

El enfoque comet difiere del modelo original de la web, en el que un navegador solicita una página web completa o trozos de datos para actualizar una página web. En cambio, el servidor puede notificar al cliente sin que él haya hecho un pedido, pero esto es solo en teoría porque en la práctica hay diferentes formas de implementar comet, una muy extendida es que el cliente haga pedidos largos y el servidor solo conteste cuando tenga algo que notificar, otro modo es utilizar WebSocket si utilizamos HTML 5.

Atmosphere es un framework java/javascript para la construcción de aplicaciones Web asincrónicas usando Groovy, Scala y Java. El objetivo del framework es permitir a los desarrolladores escribir una aplicación y dejar que éste descubra el mejor canal de comunicación entre el cliente y el servidor, de forma transparente. Por ejemplo, con atmophere una aplicación puede utilizar webSockets cuando el servidor y el browser lo permitan pero éste framework usara otra técnica si esto no esta soportado.

Algo muy bueno de atmophere es que soporta todos los principales navegadores y servidores y además tiene integración con los más populares framework java y javascript. Y como si fuera poco soporta diferentes tecnologías para implementar comet, como WebSockets, Server Side Events (SSE), Long-Polling, HTTP Streaming y JSONP.

Del lado del servidor atmophere soporta Tomcat, Jboss, Jetty, Resin, GlassFish, Undertow, WebSphere, WebLogic etc. pero si no corres tu aplicación sobre un servlet container tienes soporte para Netty, Play! Framework o Vert.x. Además tiene extensiones para los frameworks más usados PrimeFaces, Wicket, Vaadin, Grails, richfaces, Spring, etc. Puedes buscar la extensión que necesites aquí.

Si utilizas maven puedes utilizarlo agregando la siguiente dependencia:

<dependency>
         <groupId>org.atmosphere</groupId>
         <artifactId>atmosphere-{atmosphere-module}</artifactId>
         <version>2.2.0</version>
</dependency>

Atmosphere es una excelente opción para implementar la técnica de comet en Java por su flexibilidad, integración y facilidad de uso.

Dejo links:
https://github.com/Atmosphere/atmosphere
http://async-io.org/



jueves, 31 de julio de 2014

Introduction to Linux

"Introduction to Linux" es un curso super recomendado para todos los que aman el sistema operativo Linux. Esta dictado por el mismísimo Linus Tolvar y se dicta por medio de la pagina Edx.

Dejo un vídeo:


Dejo link:
https://www.edx.org/course/linuxfoundationx/linuxfoundationx-lfs101x-introduction-1621#.U9rn_x8zzpq

Tutorial de Python en Español Por Python Argentina


La verdad es que estoy robando esta información a Chema Cortés, gracias a él encontré este excelente tutorial de Python hecho por la gente de Python Argentina.

Sin otro particular les dejo el link:
http://docs.python.org.ar/tutorial/index.html

martes, 29 de julio de 2014

OpenSUSE Factory se convierte en distro rolling release


Que buena distro OpenSUSE!!

OpenSUSE tiene una distro hermanita o hija OpenSUSE Factory que es la rama de desarrollo de OpenSUSE. Esta distro a optado por ser rolling release.

Sin más les presento esta distro:

"La distribución Factory es una distribución de desarrollo continuo (rolling) y la base para la próxima publicación estable de openSUSE.
Hay un flujo constante de paquetes entrando en Factory. No hay congelaciones y, por tanto, el repositorio Factory no ofrece garantías de ser completamente estable. Los paquetes fundamentales del sistema se testan usando openQA. Cuando se completa el test automatizado y el repositorio se encuentra en un estado estable, éste se sincroniza con los servidores réplica para la descarga. Esto sucede una o dos veces por semana.
Factory es mayormente útil para los desarrolladores principales de la distribución, testeadores con experiencia y desarrolladores que quieren estar al filo de la navaja.
Se avisa a los usuarios corrientes de que se mantengan en la versión estable. "

Dejo link:
http://es.opensuse.org/Portal:Factory

domingo, 27 de julio de 2014

Aprendiendo Node.js


Quiero compartir el siguiente libro que encontré sobre Node.js.

Dejo link: http://www.creativealys.com/2014/07/27/learning-node-js/

Desarrollo en Android y IOS con F#

Sin duda la programación funcional cada vez esta ganando más espacio, la noticia de hoy tiene que ver con esto.

F# ahora esta soportado para las plataformas Android y IOS gracias a la gente de Xamarin. A partir de la versión Xamarin 4.8 podemos utilizar F# para desarrollar aplicaciones Android y IOS. Les recuerdo que Xamarin es la empresa que llevo a C# a Android y la principal promotora de Mono.

Y para el que no sabe, F# (pronunciado F Sharp) es un lenguaje de programación multiparadigma de código abierto, para la plataforma .NET, que conjunta la programación funcional con las disciplinas imperativa y orientada a objetos. Es una variante del lenguaje de programación ML y es compatible con la implementación Objective Caml. F# fue inicialmente desarrollado por Don Syme de Microsoft Research, pero actualmente está siendo desarrollado por la División de Desarrolladores de Microsoft y es distribuido como un lenguaje totalmente soportado en la plataforma .NET y Visual Studio 2010, 2012 y 2013.

Dejo link:
http://www.infoq.com/news/2014/07/fsharp-native-moible-development

martes, 22 de julio de 2014

Programación con Qt4

Por motivos personales decidí aprender un poco más de qt plataforma que siempre me gusto pero nunca le pude dedicar tiempo. Estuve buscando algunos libros y me encontre con estos:
  • Advanced Qt Programming Creating Great Software with C++ and Qt 4 
  • An Introduction to Design Patterns in C++ with Qt 
  • C++ GUI Programming with Qt 4 
  • Foundations of Qt Development 
Les dejo el link:

Introduction to Multitenant Databases

Me llego un mail de la gente de oracle invitandome a un Webinar. Parece interesante por lo tanto quiero compartir la invitación:


Free Live Web Seminar
Introduction to Multitenant Databases
Wednesday, July 30
9:00am to 10:00am PT
(12:00pm to 1:00pm ET)
 
Sign up Now!


About the Instructor

Bill Millar
Bill Millar is a Senior Principal Instructor for Oracle University. Bill has been an instructor with Oracle for over 7 years with a focus on database administration courses. Bill teaches Oracle Database Installation and Administration, Backup and Recovery, Performance Tuning, Oracle Database 12cNew features and Managing Multitenant Architecture.

Free Oracle Learning Streams Live Webinar!
Introduction to Multitenant Databases
Introduction to Multitenant Databases

Oracle University is pleased to invite you to experience part of the new Oracle Database Learning Stream when you attend this free one-hour webinar delivered by one of our senior instructors, Bill Millar. In this webinar, Bill will provide an overall understanding of the multitenant architecture, including how to create and manage a multitenant container database and pluggable databases. Bill will also explore how to create and manage storage, apply security and best practices.This Live Webinar Includes:
  • Multitenant Architecture
  • Creating Multitenant and Pluggable Database
  • Managing Storage
  • Applying Security
  • Best Practices
  • Preview of Oracle Learning Streams
Why You Should Attend:
By attending this live webinar, you will get overall understanding of the multitenant architecture. Sign Up Now.

Discover Oracle Learning StreamsSubscribe to Oracle Learning Streams to receive one year of unlimited access to:
  • Hundreds of fresh videos and webinars by Oracle experts
  • Live connections with Oracle's top instructors
  • Robust video search capability to find exactly what you are looking for
  • Tools to build your own custom learning queue and request new content
For a limited time save 50% when you purchase an Oracle Learning Stream subscription together with any Oracle University Classroom, Live Virtual Class or Training On Demand training.*

Learn More
Hardware and Software, Engineered to Work TogetherOracle University
Copyright © 2014, Oracle and/or its affiliates.
All rights reserved.
Contact Us | Legal Notices | Privacy

domingo, 20 de julio de 2014

Lista por comprensión


¿Recuerdan de las definiciones matemáticas de por ejemplo números pares o múltiplos que veíamos en la escuela? por ejemplo la definición de los números pares mayores a 10 sería así:

s = { 2 * x  | x  € N, 2 * x > 10 }

Esto se lee como los números pares (2*x) que pertenecen (€) a los números naturales (N) y que sean mayores que 10.  La parte anterior al separador se llama la función de salida, x es la variable, N es el conjunto de entrada y  2 * x > 10 es el predicado.




De esta forma se define la lista de forma compresiva. Es decir se puede conocer el valor de la lista dependiendo de la posición sin enumerar sus elementos. Esta definición se podría escribir en Haskell de la siguiente manera:

s = [ 2*x | x <- [0..], x*2 > 10 ]

Como vemos es muy similar a la definición matemática, solo que se define los números naturales como [0..] los dos puntos indican que esta lista es infinita. Cuando pensamos en una lista infinita, automáticamente relacionamos con un bucle que nunca termina o con un cuelgue de nuestro programa, esto es porque venimos del mundo imperativo pero cómo Haskell ejecuta las sentencias de forma perezosa, podemos modelar listas infinitas sin problema.

Podemos modelar diferentes listas sin ningún problema, por ejemplo  todos los números del 50 al 100 cuyo resto al dividir por 7 fuera 3 :

ghci> [ x | x <- [50..100], x `mod` 7 == 3]
[52,59,66,73,80,87,94]

La lista de dobles de los números naturales y que el cuadrado sea mayor a 3:

s = [ 2*x | x <- [0..], x^2 > 3 ]

Por suerte las listas por compresión, no son solo una característica de Haskell sino que se encuentra en diferentes lenguajes, voy a mostrar el ejemplo de la lista de dobles de los números naturales y que el cuadrado sea mayor a 3 en diferentes lenguajes:

Ceylon
{ for (x in 0..100) if ( x**2 > 3) x * 2 }

Clojure
 (take 20
   (for [x (range) :when (> (* x x) 3)]
     (* 2 x)))
 ;; ⇒ (4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42)

CoffeeScript
 (x * 2 for x in [0..20] when x*x > 3)

Elixir
for x <- 0..100, x*x > 3, do: x*2

Erlang
 S = [2*X || X <- lists:seq(0,100), X*X > 3].

F#
> seq { for x in 0..100 do
          if x*x > 3 then yield 2*x } ;;
val it : seq<int> = seq [4; 6; 8; 10; ...]

Groovy
s = (1..100).grep { it ** 2 > 3 }.collect { it * 2 }
s = (1..100).grep { x -> x ** 2 > 3 }.collect { x -> x * 2 }

JavaScript 1.7
 js> [2*x for each (x in [0,1,2,3,4,5,6,7]) if (x*x<5)]
 [0, 2, 4]

Julia
y = [x^2+1 for x in 1:100]

Perl 6
my @s = ($_ * 2 if $_ ** 2 > 3 for ^100);

Python
S = [2 * x for x in range(101) if x ** 2 > 3]

Scala
val s = for (x <- Stream.from(0) if x*x > 3) yield 2*x

Smalltalk
((1 to: 100) select: [:x|x*x>3]) collect: [:x|2*x]

Algunos lenguajes tienen diferentes formas de hacer lo mismo y para algunos lenguajes no uso todos los números naturales sino hasta el 100.

En resumen podemos decir que las listas por comprensión es una característica de algunos lenguajes con lo cual podemos definir listas de forma comprensiva.

Dejo link: http://en.wikipedia.org/wiki/List_comprehension