sábado, febrero 20, 2010

Una recomendacion simplemente

Muy buen sitio para templates de paginas webs .... http://www.wix.com

Saludos

Facebook reinvento la rueda

Y si, leyendo un libro de 1999, "Cyber Rules" de Thomas M.Siebel (regalo de un barbado amigo), me entero que habia en el mundo un sitio que en cierta forma era el Facebook de hace 10 años. Increiblemente ese sitio hoy no existe ya que fue comprado hace tiempo tambien, por Amazon quien un buen dia decidio cerrarlo. Es otro ejemplo de ideas o casos que surgieron quizas en el momento equivocado, o simplemente hicieron la brecha para que mas tarde, otros la continuaran. El sitio se llamaba PlanetAll. (http://en.wikipedia.org/wiki/PlanetAll)

miércoles, febrero 17, 2010

A ver si le ganas con el cubo Rubik !!!!!

Sencillito el post de hoy. Aqui un robot hace estragos y arma un cubo en 11 segundos. Ver, creer o reventar !!! Saludos

Video aqui

miércoles, febrero 10, 2010

Buzz vs Wave

Esto cada vez se pone mas confuso y es increible como determinadas ideas van cambiando el modo de pensar de otros. Siempre ha sido asi, pero no de la forma que se da hoy.
Con la aparicion del Iphone, parece que ahora todos los telefonos tienen que tener pantalla tactil. Lo mismo con la aparicion de facebook, el niño mimado de estos tiempos, como lo fue google tiempo atras. Ahora todo es "social". De un dia para otro, todos nos queremos conectar con todos y reencontrar con todos. Hotmail se adapta para asimilar cosas de facebook integrando el Msn y redecorando la casa. Facebook a su vez hace lo mismo para mantenerse renovado. Ahora para no quedar fuera Google va por el mismo camino y "renueva" su gestor de correo Gmail agregando la funcionalidad de Google Buzz, dotandole a Gmail "sociabilizacion". Ahora me pregunto entonces donde quedo Google Wave. Es como que todos estan con la facebookmania y la twittermania. Un mundo que ya no diriamos que se hace cada vez mas pequeño sino que el adjetivo que mejor quedaria es que se hace directamente diminuto, generando y aportando aun mas al debate en que es privado y que no, y que comparto y que no. El ser humano siempre busco estar acompañado por sus pares y esa es la principal razon. Veremos como sigue esta historia.....

lunes, febrero 08, 2010

Cuidado cuando te bañes

Sigan el link para creer. Por lo visto Google estaria desarrollando un nuevo servicio para Google Maps que es ver los locales comerciales por dentro. Pero como diria el Cuarteto, "Tan solo un rumor"
Besos

viernes, febrero 05, 2010

Microsoft's Creative Destruction

Les copio este articulo que salio en la version web del New York Times. Esta muy buena la vision que hace el Sr. Dick Brass de Microsoft.

"AS they marvel at Apple’s new iPad tablet computer, the technorati seem to be focusing on where this leaves Amazon’s popular e-book business. But the much more important question is why Microsoft, America’s most famous and prosperous technology company, no longer brings us the future, whether it’s tablet computers like the iPad, e-books like Amazon’s Kindle, smartphones like the BlackBerry and iPhone, search engines like Google, digital music systems like iPod and iTunes or popular Web services like Facebook and Twitter.

Some people take joy in Microsoft’s struggles, as the popular view in recent years paints the company as an unrepentant intentional monopolist. Good riddance if it fails. But those of us who worked there know it differently. At worst, you can say it’s a highly repentant, largely accidental monopolist. It employs thousands of the smartest, most capable engineers in the world. More than any other firm, it made using computers both ubiquitous and affordable. Microsoft’s Windows operating system and Office applications suite still utterly rule their markets.

The company’s chief executive, Steve Ballmer, has continued to deliver huge profits. They totaled well over $100 billion in the past 10 years alone and help sustain the economies of Seattle, Washington State and the nation as a whole. Its founder, Bill Gates, is not only the most generous philanthropist in history, but has also inspired thousands of his employees to give generously themselves. No one in his right mind should wish Microsoft failure.

And yet it is failing, even as it reports record earnings. As the fellow who tried (and largely failed) to make tablet PCs and e-books happen at Microsoft a decade ago, I could say this is because the company placed too much faith in people like me. But the decline is so broad and so striking that it would be presumptuous of me to take responsibility for it.

Microsoft has become a clumsy, uncompetitive innovator. Its products are lampooned, often unfairly but sometimes with good reason. Its image has never recovered from the antitrust prosecution of the 1990s. Its marketing has been inept for years; remember the 2008 ad in which Bill Gates was somehow persuaded to literally wiggle his behind at the camera?

While Apple continues to gain market share in many products, Microsoft has lost share in Web browsers, high-end laptops and smartphones. Despite billions in investment, its Xbox line is still at best an equal contender in the game console business. It first ignored and then stumbled in personal music players until that business was locked up by Apple.

Microsoft’s huge profits — $6.7 billion for the past quarter — come almost entirely from Windows and Office programs first developed decades ago. Like G.M. with its trucks and S.U.V.’s, Microsoft can’t count on these venerable products to sustain it forever. Perhaps worst of all, Microsoft is no longer considered the cool or cutting-edge place to work. There has been a steady exit of its best and brightest.

What happened? Unlike other companies, Microsoft never developed a true system for innovation. Some of my former colleagues argue that it actually developed a system to thwart innovation. Despite having one of the largest and best corporate laboratories in the world, and the luxury of not one but three chief technology officers, the company routinely manages to frustrate the efforts of its visionary thinkers.

For example, early in my tenure, our group of very clever graphics experts invented a way to display text on screen called ClearType. It worked by using the color dots of liquid crystal displays to make type much more readable on the screen. Although we built it to help sell e-books, it gave Microsoft a huge potential advantage for every device with a screen. But it also annoyed other Microsoft groups that felt threatened by our success.

Engineers in the Windows group falsely claimed it made the display go haywire when certain colors were used. The head of Office products said it was fuzzy and gave him headaches. The vice president for pocket devices was blunter: he’d support ClearType and use it, but only if I transferred the program and the programmers to his control. As a result, even though it received much public praise, internal promotion and patents, a decade passed before a fully operational version of ClearType finally made it into Windows.

Another example: When we were building the tablet PC in 2001, the vice president in charge of Office at the time decided he didn’t like the concept. The tablet required a stylus, and he much preferred keyboards to pens and thought our efforts doomed. To guarantee they were, he refused to modify the popular Office applications to work properly with the tablet. So if you wanted to enter a number into a spreadsheet or correct a word in an e-mail message, you had to write it in a special pop-up box, which then transferred the information to Office. Annoying, clumsy and slow.

So once again, even though our tablet had the enthusiastic support of top management and had cost hundreds of millions to develop, it was essentially allowed to be sabotaged. To this day, you still can’t use Office directly on a Tablet PC. And despite the certainty that an Apple tablet was coming this year, the tablet group at Microsoft was eliminated.

Not everything that has gone wrong at Microsoft is due to internecine warfare. Part of the problem is a historic preference to develop (highly profitable) software without undertaking (highly risky) hardware. This made economic sense when the company was founded in 1975, but now makes it far more difficult to create tightly integrated, beautifully designed products like an iPhone or TiVo. And, yes, part of the problem has been an understandable caution in the wake of the antitrust settlement. Timing has also been poor — too soon on Web TV, too late on iPods.

Internal competition is common at great companies. It can be wisely encouraged to force ideas to compete. The problem comes when the competition becomes uncontrolled and destructive. At Microsoft, it has created a dysfunctional corporate culture in which the big established groups are allowed to prey upon emerging teams, belittle their efforts, compete unfairly against them for resources, and over time hector them out of existence. It’s not an accident that almost all the executives in charge of Microsoft’s music, e-books, phone, online, search and tablet efforts over the past decade have left.

As a result, while the company has had a truly amazing past and an enviably prosperous present, unless it regains its creative spark, it’s an open question whether it has much of a future."


Dick Brass was a vice president at Microsoft from 1997 to 2004.

domingo, enero 31, 2010

Queres hacerte algun peso extra?

Parece que Google paga de 500 a 1300 dolares si encontras algun defecto de seguridad en su navegador Chrome. Asi que a ponerse a buscarlos ....

martes, junio 02, 2009

Que esta pasando, che?

Alguien puede explicarme que esta pasando que se pusieron mas creativos que nunca los tipos del "valle de silicio".

Todo el mundo habla de google, de microsoft, de apple y lo que estan sacando al mercado: que google wave, que microsoft bing, que la nueva version del itunes, que el proyecto natal de microsoft con Spielbereg incluido que amenaza la experiencia wii, que el nokia n97, que el foro de innovadores en el radison, basta denme un respiro. Che, van al run09 en el latu?

sábado, mayo 30, 2009

El futuro del mail, se llama Google Wave ???

Si bien FaceBook esta muy bien instalado en el mundo, esta nueva apuesta de la empresa de los colores azul, rojo, amarillo y verde, promete bastante y amenaza con quitarle el trono o al menos hacer preocupar a la gigante red social de moda. Digamos que esto viene a complementar las otras dos herramientas de la empresa del buscador ... orkut y blogger en este sentido... habra que esperar un poco mas

Les dejo un enlace que no tiene desperdicio.....

http://wave.google.com/

sábado, marzo 21, 2009

Te gusta el Tetris?

Si te gusta el clasico Tetris, seguro que con esta version tenes para rato !!!!

http://sovietrussia.org/f/src/tetoris.swf

lunes, febrero 09, 2009

Julian Beever en Uruguay


Para los que lo siguen a este tipo que hace este arte callejero tan particular, aqui el link de cuando visito Uruguay :

http://www.youtube.com/watch?v=amxaAKCjedM

Y una fotito que registra mi momento

lunes, enero 26, 2009

Libros que llevo leidos en este 2009 y recomiendo

Mis queridos bloggers, les paso a contar los libros que llevo leidos y recomiendo su lectura. Las tematicas bien diferentes:

En penumbras - la masoneria uruguaya - fernando amado - editorial fin de siglo
Interesante investigacion sobre la masoneria en el uruguay, cuales son las organizaciones que existen, como se integran las logias, que personalidades las integran, etc.

La sociedad de la nieve - pablo vierci - editorial sudamericana
Una vez mas un raconto de esta tragedia aerea que llevo a que un grupo de uruguayos pasaran 72 dias en los andes pero ahora contado 30 y pico de años despues y desde la perspectiva de cada sobreviviente. Si bien se torna un tanto repetitiva en cada relato es de por si interesante conocer como cada uno paso por esa situacion y como la ven hoy luego de tantos años.

La bodega - Noah Gordon - editorial roca
Trata de una historia de un tipo que vuelve a su tierra natal, un pueblo en España luego de trabajar en un viñedo en Francia. Luego de llegar a su pueblo natal comienza una experiencia de vida donde pasara por sus recuerdos de la infancia, su pasaje por la guerra civil española y su empeño por transformar las cepas del viñedo de su padre muerto que producia para vinagre, en cepas que produjeran vino de primera calidad. Lento al principio pero luego va tomando forma.

La economia Long Tail - Chris Anderson - editorial tendencias
No se trata de un libro mas de economia con recetas trilladas sino de toda una teoria que realiza un planteo de la situacion economica actual y como la sociedad fue mutando de consumir los exitos que nos vendia el mercado a una preferencia por los productos olvidades generando una multitud de nuevos nichos de mercado olvidados...

domingo, enero 11, 2009

Hay que saber para usar el Photoshop

Les paso este enlace con los peores desastres hechos en PhotoShop durante el 2008, de no creer ....

http://www.capich.com.mx/los-20-peores-desastres-hechos-con-photoshop-en-el-2008.html

viernes, enero 09, 2009

Veranito 2009

Todavia intentando caer en la realidad de que tendre un mes entero de licencia, y disfrutando de unos dias que estan siendo espectaculares y disfrutando muy buena musica. Es sabido que en verano llegan todos los "hits" europeos por lo que les dejo una lista de algunos de los que mas me van gustando:
- lexter - freedom to love
- guru josh project - infinity
- amy whinehouse - rehab

Ire agregando, saludos

jueves, enero 08, 2009

No soy amigo de la mula

Queridos amigos: no creo estar descubriendo absolutamente nada puesto que quizas el sitio sea archiconocido, pero no lo es para mi, por lo que quizas algun otro no lo conozca y es por eso que se los recomiendo. No soy muy amigo de los programas P2P, porque me complican la vida para las descargas y el hecho de compartir archivos para escalar en la prioridad de bajada, etc. etc. etc. Este sitio es bien sencillito y efectivo, buscas el tema y listo: http://www.dilandau.com/descargar_musica/

domingo, noviembre 09, 2008

¿Qué es un Patrón de Diseño?

Contenido

¿Qué es un Patrón de Diseño?
Patrones Creacionales
Patrones Estructurales
Patrones de Comportamiento
Conclusión

¿Qué es un Patrón de Diseño?

Esta fue la primer pregunta que me hice cuando comencé a investigar sobre este tema. Al principio no tenía mucha idea de por dónde comenzar, por lo que mi primera reacción fue realizar una búsqueda en Internet y obtener de esta manera alguna base sobre la cual apoyarme. La definición que más me gustó fue la siguiente:

“Los patrones de diseño son el esqueleto de las soluciones a problemas comunes en el desarrollo de software.”

En otras palabras, brindan una solución ya probada y documentada a problemas de desarrollo de software que están sujetos a contextos similares. Debemos tener presente los siguientes elementos de un patrón: su nombre, el problema (cuando aplicar un patrón), la solución (descripción abstracta del problema) y las consecuencias (costos y beneficios).

Grande fue mi sorpresa al averiguar que existen varios patrones de diseño popularmente conocidos, los cuales se clasifican como se muestra a continuación:

  • Patrones Creacionales: Inicialización y configuración de objetos.
  • Patrones Estructurales: Separan la interfaz de la implementación. Se ocupan de cómo las clases y objetos se agrupan, para formar estructuras más grandes.
  • Patrones de Comportamiento: Más que describir objetos o clases, describen la comunicación entre ellos.

Veamos un poco en qué consisten los distintos tipos de patrones, cuáles son sus fines y qué beneficios nos aportan.

Patrones Creacionales

Fábrica Abstracta (Abstract Factory)
El problema a solucionar por este patrón es el de crear diferentes familias de objetos, como por ejemplo la creación de interfaces gráficas de distintos tipos (ventana, menú, botón, etc.).

Método de Fabricación (Factory Method)
Parte del principio de que las subclases determinan la clase a implementar.

public class ConcreteCreator extends Creator
  {
  protected Product FactoryMethod()
      {
            return new ConcreteProduct();
      }
}
public interface Product{}
public class ConcreteProduct implements Product{}
      public class Client
      {
            public static void main(String args[])
            {
                  Creator UnCreator;
                  UnCreator = new ConcreteCreator();
                  UnCreator.AnOperations();
            }
      }

Prototipado (Prototype)
Se basa en la clonación de ejemplares copiándolos de un prototipo.

Singleton
Restringe la instanciación de una clase o valor de un tipo a un solo objeto.

      public sealed class Singleton 
      
            private static volatile Singleton instance; 
            private static object syncRoot = new Object(); 
            private Singleton() 
            
                  System.Windows.Forms.MessageBox.Show("Nuevo Singleton"); 
            
            public static Singleton GetInstance 
            
                  get 
                  
                        if (instance == null
                        
                             lock(syncRoot) 
                             
                                   if (instance == null
                                         instance = new Singleton(); 
                             
                        
                        return instance; 
                  
            }
       }

MVC (Model View Controler)
Este patrón plantea la separación del problema en tres capas: la capa model, que representa la realidad; la capa controler, que conoce los métodos y atributos del modelo, recibe y realiza lo que el usuario quiere hacer; y la capa vista, que muestra un aspecto del modelo y es utilizada por la capa anterior para interaccionar con el usuario.

Patrones Estructurales

  • Adaptador (Adapter): Convierte una interfaz en otra.
  • Puente (Bridge): Desacopla una abstracción de su implementación permitiendo modificarlas independientemente.
  • Objeto Compuesto (Composite): Utilizado para construir objetos complejos a partir de otros más simples, utilizando para ello la composición recursiva y una estructura de árbol.
  • Envoltorio (Decorator): Permite añadir dinámicamente funcionalidad a una clase existente, evitando heredar sucesivas clases para incorporar la nueva funcionalidad.
  • Fachada (Facade): Permite simplificar la interfaz para un subsistema.
  • Peso Ligero (Flyweight): Elimina la redundancia o la reduce cuando tenemos gran cantidad de objetos con información idéntica.
  • Apoderado (Proxy): Un objeto se aproxima a otro.

Patrones de Comportamiento

  • Cadena de responsabilidad (Chain of responsibility): La base es permitir que más de un objeto tenga la posibilidad de atender una petición.
  • Orden (Command): Encapsula una petición como un objeto dando la posibilidad de “deshacer” la petición.
  • Intérprete (Interpreter): Intérprete de lenguaje para una gramática simple y sencilla.
  • Iterador (Iterator): Define una interfaz que declara los métodos necesarios para acceder secuencialmente a una colección de objetos sin exponer su estructura interna.
  • Mediador (Mediator): Coordina las relaciones entre sus asociados. Permite la interacción de varios objetos, sin generar acoples fuertes en esas relaciones.
  • Recuerdo (Memento): Almacena el estado de un objeto y lo restaura posteriormente.
  • Observador (Observer): Notificaciones de cambios de estado de un objeto.

Public Class Articulo 
   Delegate Sub DelegadoCambiaPrecio(ByVal unPrecio As Object
   Public Event CambiaPrecio As DelegadoCambiaPrecio 
   Dim _cambiaPrecio As Object 
   Public WriteOnly Property Precio() 
      Set(ByVal value As Object
         _cambiaPrecio = value 
         RaiseEvent CambiaPrecio(_cambiaPrecio) 
      End Set 
   End Property 
End Class 
Public Class ArticuloObservador 
   Public Sub Notify(ByVal unObjecto As Object
      Console.WriteLine("El nuevo precio es:" & unObjecto) 
   End Sub 

End Class

  • Estado (Server): Se utiliza cuando el comportamiento de un objeto cambia dependiendo del estado del mismo.
  • Estrategia (Strategy): Utilizado para manejar la selección de un algoritmo.
  • Método plantilla (Template Method): Algoritmo con varios pasos suministrados por una clase derivada.
  • Visitante (Visitor): Operaciones aplicadas a elementos de una estructura de objetos heterogénea.

Conclusión

Como verán, si es que este artículo logró ilustrar sobre las distintas categorías y tipos de patrones de diseño, no debemos “reinventar la rueda” en varias de nuestras aplicaciones. Hay mucho trabajo ya realizado, testeado y aceptado que en un entorno similar a mi problema ya aporta una solución satisfactoria. ¿Para qué voy a inventar un ladrillo si ya otro lo hizo y el mismo ya fue usado en la edificación de millones de estructuras con éxito?

Quienes deseen ampliar su conocimiento respecto a este tema pueden consultar la bibliografía adjunta. Además, les comento que Microsoft no es ajeno a todo este movimiento; más aún, es conciente de la importancia del mismo y tiene sus comentarios e ideas al respecto. El tema se reduce a una cuestión de enfoque; en el siguiente diagrama puede verse cómo presenta Microsoft su concepción de patrones de diseño (Ver Figura 1):





Figura 1: Marco de Patrones según Microsoft. Volver al texto.


En el diagrama de la Figura 1, Microsoft sostiene que las columnas de la tabla son enfoques o puntos de vista de la solución, mientras que las filas representan los niveles de abstracción. Un ejemplo muy conocido en el ambiente de desarrollo Web es el patrón de diseño de capas (layers), el cual plantea la separación de una aplicación en una capa de presentación, una de negocio y una de datos.

En un futuro artículo abordaremos un interesante concepto o paradigma, el de los ANTI- Patrones, acerca del cual tomé conocimiento durante mi investigación sobre Patrones de Diseño.

Bibliografía

Web Services, un ejemplo práctico


Antes que nada y a modo de introducción unas breves líneas donde explico la razón de el porqué de la escritura de este artículo. Para mi es un honor el poder participar de este sitio donde tantos “gurus” exponen temas tan interesantes. Mi humilde aporte además de intentar brindar y volcar conocimientos adquiridos en base a la experiencia personal, es poder avanzar en mi carrera del programa de Desarrollador Cinco Estrellas. Dicho esto y sin mas preámbulos he aquí mi aporte.

Características de los Web Services

¿Alguna vez pensó de que forma poder integrar aplicaciones creadas en lenguajes y plataformas diferentes a través de Internet o mismo en su propia Intranet basándose en estándares? Bien, si lo pensó o si no lo hizo, la respuesta más apropiada a este paradigma son los llamados Web Services.

Esto quiere decir que un desarrollador puede incluir en sus sitios o soluciones sentencias, instrucciones que consuman Web Services de terceros o propios como por ejemplo aquellos que proporcionan los datos meteorológicos para una localidad determinada, o las cotizaciones de determinadas monedas, o la cartelera de películas, o calendarios y agenda de algún especialista médico, etc. Esto ya comienza a gustarme.

Ahora pensando un poco mas en forma comercial, ¿que pasaría si por ejemplo yo estuviera trabajando en mi procesador de texto en un idioma para el cual no tengo un corrector ortográfico ni sintáctico instalado (quizás no exista para instalar), pero deseo realizar mi revisión del documento a toda costa? Bien, perfectamente podría haber una opción en el menú de dicho procesador que de alguna forma ubique un Web Service en Internet que brinde esta funcionalidad y lo mas interesante aún para quien lo haya desarrollado es que puede solicitar al usuario que se subscriba para su uso. Como ven, todos ganan en esta transacción.

El ejemplo anterior esta mostrando una realidad de la que no podemos estar ajenos. Es un replanteo de la estrategia utilizada por los desarrolladores que ahora al realizar una aplicación no deben pensar únicamente en el lugar físico donde la misma va a ejecutarse sino en que esa aplicación deberá estar interconectada con otras computadoras corriendo otras aplicaciones quizás en otras plataformas y lenguajes pero usando protocolos y estándares universales. El intercambio se intensificará muchísimo mas y quizás existan por ejemplo “proveedores de dominios de datos” como ser los países, de forma tal que la aplicación que yo realice en lugar de crear toda la lógica para manejar las tablas y el cargado de los datos para el concepto PAIS se limite a consumir un Web Service que me torne esta información de algún lado en Internet. Imagino una reutilización aun mayor de funcionalidades y una colaboración e intercambio de lógica a nivel mundial. Quizás sea muy ambicioso en este planteo.

Ahora pasando al terreno más técnico y práctico de este artículo hay algunas consideraciones y conceptos para comenzar a entender este tema son las siguientes:

  • Un Web Service se puede registrar para poder dejarlo a disposición para otros usuarios y para que los mismos puedan localizarlos. Un mecanismo para registrar estos servicios es por medio de UDDI sigla que obedece a Universal Description, Discovery and Integration, un “repositorio de Web Services” (http://www.UDDI.org). Para registrar un servicio tendrá que tener en cuenta suministrar la información de su empresa, en que categorías ubicaría su servicio y la interfaz a utilizar para consumir dicho servicio.
  • El mecanismo utilizado por un Web Service para especificar de qué forma hay que proporcionarle los datos, de forma tal que cualquiera pueda interaccionar con el mismo, es por medio de lenguaje XML. Esta información se almacena en un archivo llamado WSDL (Web Services Description Language). Este archivo contiene un documento XML junto con la descripción de ciertos mensajes SOAP y como deben intercambiarse, así como también donde esta el recurso del servicio y con que protocolo debe dialogar quien lo consume.
  • El protocolo de comunicación utilizado es el SOAP generalmente, el cual es relativamente sencillo de utilizar.
  • Los Web Services utilizan protocolos comúnmente conocidos y difundidos como el formato XML, TCP/IP como protocolo de transporte y HTTP como protocolo de transferencia de hipertexto.

¿Qué es el SOAP?

Es un protocolo que define el formato XML para los mensajes de intercambio en el uso de un Web Service. Para aquellos programadores que solían utilizar llamadas del tipo RPC, SOAP también las soporta. Adicionalmente es posible mediante SOAP definir un mensaje HTTP y este punto es de especial interés puesto que el protocolo imprescindible para Internet es HTTP.

Recomendación: Para comenzar a acercarse a entender este tema es recomendable el uso del Microsoft SOAP Toolkit Version 3.0 (pasaje de COM a SOAP).

Un ejemplo práctico

A partir de ahora describiré en unos pocos pasos un ejemplo práctico y sencillo de creación de un Web Service y una muestra de cómo consumirlo desde una aplicación cliente en este caso una simple planilla de Excel.

Paso 1: Lo primero será crear un proyecto Visual Basic del tipo “ASP.NET Web Service” al que llamaremos “DameCotizacion”.

Paso 2: Al archivo Service1.asmx que se crea una vez generado el proyecto lo renombramos aDameCotizacion.asmx y lo establecemos como “Pagina de Inicio del proyecto”.

Paso 3: Ingresando a la ventana de código del archivo DameCotizacion.asmx en la zona del agregamos el código siguiente:


Public Function GetCotizacion(ByVal strmoneda As String) As String
'Objetivo: Devolver cotizacion para una moneda en pesos uruguayos
' Obviamente esto es un ejemplo por lo que esta info que
' se presenta estatica se tomaria de una base de datos
'Acepta: strmoneda - un id para la moneda de dos caracteres.
'Devuelve: cotizacion de dicha moneda en pesos uruguayos

Select Case UCase(Trim(strmoneda))
Case "DO"
'dolar
Return "30"
Case "RE"
'real
Return "9.9"
Case "EU"
'Euro
Return "33"
End Select
End Function

Para verificar el correcto funcionamiento de esta aplicación, vamos a ejecutarlo. Para ello apretamos F5 y el resultado esperado se verá en el Internet Explorer. Como se puede ver se ofrece el métodoGetCotizacion() definido en el código anterior.

Si clickeamos sobre dicho método podremos ver la especificación del mismo y la definición del tipo de intercambio de mensajes.

Paso 4: Podemos comprobar el funcionamiento colocando el valor “EU” (código que establecimos para el euro) y clickeando en “Invoke”. El valor esperado por el método es del tipo string y deberá ser uno de los tipo de monedas (“DO”, “RE” o “EU”) definido en nuestro método.

El resultado debería ser un mensaje en XML como se muestra a continuación, mostrando el valor definido para la moneda de código “EU”

Pues bien pongamos a trabajar nuestro Web Service en una aplicación práctica. Supongamos que tenemos una planilla Excel donde tenemos artículos cuyos precios están en su moneda original y queremos que aparezca su valor en pesos uruguayos. Para esto consumiremos el Web Service creado en los pasos anteriores (DameCotizacion) que proporcionando el código de la moneda me devuelve la cotización correspondiente.

Nota: Para este ejemplo debemos tener instalado el paquete Microsoft Web Services Toolkit.

Paso 5: Crearemos una planilla Excel como se muestra en la figura siguiente, donde agregaremos un botón cuyo nombre y Caption será "Cotizar".

Paso 6: En la celda E2 la fórmula para calcular el valor del articulo en pesos uruguayos es =D2*C2. La columna Cotización será alimentada una vez que se oprima el botón Cotizar el cual disparará un evento que consumirá el Web Service DameCotizacion y retornará en cada celda Cotización el valor correspondiente.

Paso 7: Haciendo doble clic sobre el botón Cotizar ingresaremos a la ventana de código Visual Basic posicionados en el evento click de dicho botón.

Previo a esto relacionaremos nuestro Web Service a nuestra planilla mediante el uso de la herramientaMicrosoft Web Services Toolkit.

Paso 8: Para ello desde el menú Herramientas de la ventana de código Visual Basic seleccionamos la opción“Web Service References …”

En dicha ventana seleccionamos “Web Service URL” y colocamoshttp://localhost/DameCotizacion/DameCotizacion.asmx en el cuadro de texto “URL” y apretamos el botón“Search”. Esta acción deberá traer como resultado nuestro Web Service DameCotizacion en la sección“Search Results”, el cual seleccionaremos, donde podrá verse que esta disponible nuestro métodoGetCotizacion(). Clickearemos “Add”.

Paso 9: El código del evento Cotizar_Click()es el siguiente:

Private Sub Cotizar_Click()
Dim clsCotizacion As clsws_DameCotizacion
Dim monedas As Range
Dim moneda As Range
Dim cotizacion As String

Set clsCotizacion = New clsws_DameCotizacion
Set monedas = Range(Range("b2"), Range("b65536").End(xlUp))
Application.ActiveSheet.Range("b2").Activate

For Each moneda In monedas

cotizacion = clsCotizacion.wsm_GetCotizacion(moneda)

moneda.Offset(0, 1).Value = Val(cotizacion)

Next moneda
End Sub

Ok, si todo sale como es de esperar el resultado de oprimir el botón Cotizar debiera ser el que se muestra a continuación, Eureka!!!!

Como verán este es un simple ejemplo que muestra como consumir un Web Service desde una aplicación cliente en este caso Excel que ilustra dos puntos interesantes: la facilidad de implementación del mismo y la potencia que nos brinda. Basta conocer un proveedor de un servicio de cotizaciones de moneda para mantener nuestra planilla al día con las últimas cotizaciones del mercado bursátil.

Para aquellos desarrolladores que ya hacían uso de incluir referencia a objetos COM en sus herramientas quizás esto no sea muy novedoso pero en el caso de los objetos COM los mismos debían estar físicamente en la computadora cliente. En el caso de los Web Services estamos hablando de compartir recursos que habiten en la Intranet corporativa o mas aún, en Internet y en sitios bien dispersos en el mundo.

Para los que quieran hacer números y le quieran sacar un beneficio económico, ¿qué ocurriría si yo fuera un proveedor de Web Services y solicite la subscripción para el uso de los mismos a mis clientes a lo largo y ancho del planeta? ¿Interesante, no?

Mas aun, no necesariamente el escenario se limita a una aplicación cliente consumiendo un Web Service sino que a su vez un Web Service podría consumir otro Web Service para poder armar la información de respuesta a retornar al cliente. No hace falta Imaginar un escenario de este tipo pues esto ya es posible.

Hacia donde vamos

Si bien se ha avanzado mucho al respecto y hay infinidad de desarrolladores trabajando en este tema hay aspectos a mejorar para catapultar aun más esta funcionalidad. Algunas características a mejorar pasan por temas relacionados a la seguridad (autorización, autenticación y cifrado) en el intercambio de mensajes, manejar el modelo transaccional y poder confirmar la entrega efectiva de los mensajes que se intercambian a través de los Web Services. Adicionalmente se continúa trabajando en la estandarización de los principales actores como ser el WDSL y SOAP. Muchos fabricantes seguirán contribuyendo elaborando herramientas para facilitar el manejo y elaboración de Web Services como en el caso de Microsoft y su Web Services Toolkitpara el Office 2003 que actualmente esta en su versión 2.01.

Otros elementos claves que no entran en análisis en este articulo pero igual los menciono por si es de interés del lector ahondar en los mismos, son los relacionados a las especificaciones de WS-Security, WS-Routing y DIME para lo cual pueden encontrar mas información en la herramienta Microsoft WSDK Technology Previewo Internet.

Referencias

Aspectos básicos de XML Web Services

http://www.microsoft.com/spanish/msdn/articulos/archivo/280202/voices/webservbasics.asp

Desarrollo y consumo de un Web Services con Microsoft Visual Studio .Net

http://www.desarrolloweb.com/articulos/1718.php?manual=54

Explicación del lenguaje WSDL (Web Services Description Language)

http://www.microsoft.com/spanish/msdn/articulos/archivo/091101/voices/wsdlexplained.asp

jueves, octubre 23, 2008

Guarda con Bill

Atencion a esta noticia que anda en la vuelta. Parece que Bill Gates anda haciendo de las suyas. He aqui su ultimo emprendimiento: http://bgc3.com/

lunes, octubre 13, 2008

Quien me manda llamarme asi.....

Tiempo atrás me sentía muy feliz de tirar una búsqueda en Google colocando mi nombre y apellido en la cajita de texto respectiva, para que el buscador me arrojara una enorme cantidad de coincidencias donde muchas de ellas eran efectivamente relacionadas con mi persona. Esto a la vez de alegrarme y sorprenderme genera una especie de inquietud y nerviosismo al ver y comprobar que vamos dejando huella en esto de la Internet. Allí aparecen aquellos artículos que uno publico por algún lado hace ya varios años, información sobre mi tesis de facultad, etc.
Incluso si colocaba mi apellido "Tedeschi" solo, quedaba bien posicionado por los algoritmos de PageRank y mongoaurelio de Google. Pero esto era antes, ya no mas. Me he resignado a caer varias posiciones desde que al presidente de Francia se le ocurrió tener una aventurita amorosa que llego a casorio. Se le podía haber ocurrido salir con cualquier mujer del mundo, pero no, al señor Sarkosi se le canto salir con esta fulana (bastante linda) Carla Bruni. Y que tiene de especial esta singular combinacion que me hace descender en mi búsqueda googleana. Muy sencillo, el señor es tocayo mio, y la señora Bruni tiene como segundo apellido Tedeschi. Si probamos entonces el cocktail molotov de dicha combinacion, se genera mi nombre y apellido pero con enlaces a estos señores. En fin, tendré que esperar el divorcio y los meses que esto sea noticia para recuperar mi unicidad....

jueves, octubre 09, 2008

Retorno Tactil


Bueno, aca estamos nuevamente retomando este espacio y ver si puedo regularmente ir publicando ideas, cosas y afines. Compartir informacion obtenida por distintos medios. En esta ocasion quien motiva y me empuja a escribir unas lineas es la "revolucion tactil" donde el dedo es hoy el periferico de entrada por excelencia. Sobrevendran generaciones con dedos morfologicamente diferentes a los nuestros. Dedos que tendran que tener la particularidad de terminar en punta fina para poder entenderse con los teclados pequeños o con algun tipo de achatamiento para ser mas efectiva la interaccion con una pantalla tactil.

Como diria Nicolas Jodal en sus charlas de cisnes negros, donde aparece alguien que patea el tablero y revoluciona la industria siendo innovadores (él cita los ejemplos del iphone, la consola wii, las laptops del MIT, etc.). Son actores que aparecen de pronto en un area donde no se los esperaba y cambian dramaticamente la forma de hacer las cosas. Estos casos rapidamente son seguidos por la competencia quienes adoptan la innovacion para no quedar obsoletos.

Tal es el caso del Iphone, con lo que se ha innundado de informacion de lo que ahora haran los rivales para no desaparecer de la torta de distribucion del mercado. Alli entonces vemos a Blackberry que lanza su modelo Storm que viene con pantalla para los fingers http://www.xatakamovil.com/2008/10/08-blackberry-storm-el-terminal-tactil-de-rim).
Y Nokia? Tambien. Pareceria que su nuevo celular sera el Nokia Tube (http://www.blogdemoviles.com.ar/nokia-tube-lo-nuevo-de-nokia/) tambien con interface "dactilar".
Ahora un innovador puede matar a otro innovador .... y note mi querido lector que muchos de los grandes saltos tecnologicos a veces provienen de actores que no estan desempeñandose necesariamente en el sector donde los introducen, como podria ser el caso de Apple que no estaba en el negocio de la telefonia. Y el revolucionario Google tampoco lo esta y una vez mas es noticia en este caso con el lanzamiento de su sistema operativo para celulares, Android. Esto trae cambios a nivel tecnologico ya que la hegemonia no es mas de Symbian, el sistema operativo de Nokia. Ejemplos de aparatitos que adoptaran al software de la cia de doble "o" son el HTC Dream (http://www.xataka.com/2008/03/22-htc-dream-telefono-google), el T-Mobile G1 (http://www.gizmos.es/9809/moviles/t-mobile-g1-el-primer-movil-con-android-de-google/ o http://www.t-mobileg1.com/g1-announcement.aspx).
O sea que anda sacandole punta al lapiz o mejor dicho al dedo......
Saludos