martes, 9 de junio de 2009

Catalyst


Adobe ha sacado la versión beta de Flash Builder,  sucesora de Flex Builder. Aunque se va ha tardar en olvidarse la palabra "flex", adobe parece estar dispuesta a olvidarla, "unificando" con el nombre Flash las dos "corrientes" hasta de ahora.
Antes se "suponía" que Flash era para diseñadores y Flex para programadores. Pero ahora parece unificarse todo en la nueva herramienta, más parecida a Flex 3 que a Flash CS4. Sin embargo se ha sacado de la manga una nueva herramienta llamada catalyst que sirve para hacer algo muy interesante para los diseñadores.
Catalyst En una herramienta que sirve para crear graficamente un interface de usuario (Usando alguna cosilla  que recuerda un poco al viejo Flash CS4), de una forma muy sencilla, pudiendo "importar" al proyecto imágenes y otro tipo de recursos gráficos.
Sobre la escena o interface de usuario que se va generando, se pueden ir cambiando elementos graficos a componentes que se les da cierta  funcionalidad mínima, y se pueden probar interactivamente. 

A medida que se va generando ese interface de usuario, Catalyst genera código ActionScript necesario para "ejecutar" la aplicación que se está creando.
El resultado es tener el esqueleto de un proyecto, que se puede importar directamente desde Flash builder, para "rematar" la programación .

Instrucciones para descargar:

http://labs.adobe.com/





Puedes empezar descargando un proyecto ejemplo ( sample files ) y juguetear con  los ejemplos.

 

¿ Como hacer un sitio interactivo, partiendo de una imagen ?

Tomemos una imagen "fija". En nuestro caso es un fichero Gif. Lo editamos con el photoshop.

 



 

 


Lo que queremos hacer es varias capas de esta imagen. Aunque un especialista en photoshop lo haga más "limpio" y claro, se puede usar un método sencillo y efectivo aunque un poco "basto".

 




 

 

Se "Corta" los rectángulos de la imagen, y se pega en una capa nueva. ( se le podría dar el nombre orientativo ya a la capa)

De esta forma nuestra imagen original la tenemos igual, pero por capas.

 


 

Este archivo se puede importar a Catalyst directamente .

Primero combertimos las capas que nos interese a componentes.

 



 

 

A cada componente se le puede añadir una funcionalidad. En nuestro caso indicamos que actúa como un botón.

En la caja de dialogo "negra" aparece las propiedades y acciones que se puede realizar con el tipo de objeto.

 

 

 



 

 

Aquí indicamos que cuando se le hace click al "boton grafico" haya un cambio de transición a una nueva "pantalla".

Se puede seleccionar "duplicate State", y duplicara la pagina original como página nueva igual, a la que podemos personalizar y cambiar.

Así conseguimos que al hacer click se muestre otro contenido.

Se puede poner un "efecto" para hacer la transición. Luego lo vemos.



 

 

Al final tenemos un resultado parecido al siguiente.

 


1) Los estados o pantallas.

2) La pagina seleccionada.

3) El editor de un Botón.

4) La linea de tiempo que define una transición . A la parte izquierda abajo indica

page1-page2. Significa cuando está seleccionada la acción al hacer una transición entre el estado "page 1" y "page 2".

Por ejemplo Fade in, seria una transición que aparece o desaparece poco a poco. Se indica el tiempo "alargando" el rectángulo "fade in" de (4).

 

Este proyecto lo guardamos con el nombre archivo basekiosko1.fxp

fxp es también un proyecto flash4. Así que puedes entrar en Flash Builder e importar el proyecto a Flash builder

 



 

 

 Al importarlo a Flex, tenemos el típico proyecto Flex , dividido en módulos.

1)Nuestro programa sera el modulo main.mxml que esta en src.

2) Tenemos la posibilidad ahora de incluir nuevos componentes o controles de flex.

3) Al abrir main.mxml vemos el diseño creado si estamos en "design", y el código fuente si vamos a "source"


 
 

 

 

Esta aplicación está lista para ejecutarse sin nada más y se vera lo mismo que cuando la ejecutamos en catalyst.

Ahora se puede entrar a ver el código fuente, y cambiar o añadir el código necesario.

 



 
(c) Multi-Informática Teruel

domingo, 17 de mayo de 2009

Acceder Gdata desde Flex

Dada la dificultad de acceder a Gdata desde flex, accederemos desde Javascript .

Nuestro primer acercamiento sera el uso del api de Blogger y de Feeds .
Son parecidos aunque diferentes. Los dos Apis trabajan con formatos Atom , que es una especificación normalizada de intercambio de datos basados en Noticias, o Post's de blog.
La idea es llamar desde Flex a una función JavaScript que hace la recepción de la información, usando las funciones proporcionadas por el Api JavaScript de google.


La consulta a GData es asincrona, eso significa que se lanza la consulta, y se sigue ejecutando el código JavaScript. Cuando se obtiene la respuesta es cuando se procesa por la función que lo maneja.



Veremos varias cosas.
Llamar a JavaScript desde Flex.
Llamar a Flex desde JavaScript. Pasar datos HTML en cadenas XML.


a) Llamar a JavaScript desde Flex.


Veamos la función en Flex (ActionScript) que hace una llamada "genérica " a una función JavaScript.

public static function Call2J(fun:String, o:Object=null):Object {
try
{
if (ExternalInterface.available) {
if (o==null){
o = {};
}
return ExternalInterface.call(fun, o);
}

}
catch (e:Error) {
Alert.show("No se pudo procesar la peticion JavaScript " + e.message);
}
return "";

}

Esta función realzaría una llamada a la función con en nombre pasado en la cadena fun pasándole como parámetro el objeto o. Devuelve el resultado de la función JavaScript.


A continuación, estos serian ejemplo que llaman a nuestra función genérica

public function GetFeed():void
{

var o:Object={}
o.URL='http://www.google.com/reader/public/atom/user%2F05929107252017748980%2Flabel%2FAjox';
Call2J('GetFlexFeed',o);

}



public function GetBlog():void
{

var o:Object={}
o.url='';
Call2J('GetFlexBlog',o);


}

b) Llamar a Flex desde JavaScript.

Publicar Función

Para llamar a una función ActionScript desde JavaScript, primero esta debe ser una función "publicada" explícitamente por nuestro programa Flex. Para Publicar una función usaremos lo siguiente:

import flash.external.*; //tenemos que importar el interface flash.external


private function onCreationComplete():void // este seria un ejemplo de método creationComplete del programa.
{
ExternalInterface.addCallback('resultado', resultaBlog); // esta es la forma de publicar una función.
// * La publicamos con nombre resultado, y lo asociamos a la función resultaBlog.
GetFeed(); // o GetBlog();

}

Ejemplo de Función

Esto es una forma de montarse el manejo de la respuesta obtenida .

public function resultaBlog(e:Object):void // esta es la función Flex que llamaremos desde Javascript con el resultado.
{
// este código puede ser optimizado pero esta paso por paso para mejor comprensión.
// la función debe recibir un objeto "e" que lleva el campo "a" con la información en Texto.
var ss:String=e.a;
var s:String=ss.toUpperCase() // esto pudiera ser no necesario, pero queremos trabajar con texto en mayúsculas, y lo cambiamos desde aquí.
var x:XML=XML(s);
datos=XMLList(x.ITEM);
fillrss(datos) // Una vez convertido en XMLList los datos, lo pasamos a la función que los va a manejar finalmente.

}



// funcion que maneja finalmente los datos. Convierte de XML a un ArrayCollection, que sera el DataProvider de la tabla que muestra los resultados.
public function fillrss (e:Object):void {


datas.removeAll();
var num:int=0;
var temp:Object = {};
for each(var row:XML in e)
{
var xxx:XMLList=row.elements("*");
var nunu:int=xxx.length();
  temp = {};
for (var k=0;k<nunu;k++) {
var na:String= xxx[k].name();
var da:String= xxx[k]
temp[na]=da;
}
datas.addItem(temp);
num++
}

}


Veamos la parte puesta en el JavaScript

// Esta es la funcion que llamamos directamente desde flex. El objeto ob, lleva el campo URL que es la direccion del Feed a leer.

function GetFlexFeed(ob) {

var feed = new google.feeds.Feed (ob.URL);

feed.includeHistoricalEntries(); // Decimos que queremos entradas antiguas también
feed.setNumEntries(250); // ponemos el tamaño máximo de número de entradas.

// Llama a la funcion que carga el feed, pasándole como parámetro la función que menejara la respuesta.
feed.load(feedLoaded);
}


Esta es la función que maneja la respuesta del Feed.
Aunque puede hacerse de muchas formas, esta vez lo que haremos es una cadena XML con el resultado completo de la consulta. Y luego invocaremos a la función en Flex.
Solo puntalizar que el contenido del campo feed.content, es un contenido que puede tener código HTML,
El código HTML lleva marcas de tipo <b> o <header>, en algunos casos no estan bien "Terminadas" y esto puede romper la lectura correcta como cadena XML.
Con lo que ese dato lo pasaremos entre cadenas '<![CDATA[' y ']]>' que permite tener cualquier contenido sin cortar la comunicación XML.

function feedLoaded(result) {

if (!result.error) {

var html = '<items>';

for (var i = 0; i < result.feed.entries.length; i++) {
var en = result.feed.entries[i];
)
var postTitle = en.title;
var postURL = en.link;
var con= en.content;

var pubDate = en.publishedDate;
html += '<item><url>' + postURL + '</url><title>'
+ postTitle + '</title><content>'+
'<![CDATA['+con+']]>'+
'</content>'+
'<fecha>'+pubDate+'</fecha>'+
'</item>';
}
html += '</items>';
var o={}
o.a=html;
var flashObject = thisApp ();
flashObject.resultado (o)
}
}


Resumen.

Este es el mapa general de las funciones :







Conclusiones.

No es tan dificil plantearse acceso a otro tipo de datos del API de Google usando este "metodo" sin tener que hacer uso de librerias especificas en ActionScript.

domingo, 26 de abril de 2009

Lluvia de nubes








Hay conceptos difíciles de explicar en pocas palabras, ya que son la suma de tendecias, tecnologia y necesidades.


Hay mucha discursión acerca de lo que es o no cloud computing,

Unos lo toman como la nueva tendencia que representa el próximo paso de Internet.
Otros dicen que es una moda pasajera o incluso  que "la definición de cloud computing corre el peligro de que acabe siendo un término más de la jerga del marketing, como ha sucedido con "Web 2.0", y que se abusa de ella.

 Razón no les falta, ni mucho menos, las palabras de moda a veces se utilizan "exageradamente" en perjuicio de otras más tradicionales y un poco olvidadas.





    "Dicen que se le llama hoy en día cloud a  todo aquello que delegue parte de su ejecución en un servidor en la red, y en realidad esto no es nada nuevo."
    Opinan que es un tema "antiguo" y ya muy establecido. Dicen que la nube existe desde que se "inventó" internet y ponen como ejemplo las páginas web de la mayoría de las empresas. Consisten en documentos o programas scripts que están en un servidor, por el que la empresa paga un "alquiler" más o menos alto en función de la capacidad y los servicios añadidos que tiene a ese proveedor de servicio de hospedaje.


    Recordemos que la informática ya existia antes de Internet. En los primeros tiempos de Internet, las empresas no veían claro aun el uso que podian hacer de ella.  Con el tiempo casi todas las empresas han tenido que adaptarse a los nuevos tiempos y formas de hacer negocio e Internet se ha vuelto imprescindible en muchas de estas empresas. Vemos que se ha producido el cambio a la Sociedad de la información.
    
    De la misma manera que el termino "Ajax", fué un termino nuevo en su momento, suma de cosas un poco más antiguas que se mezclaba técnicamente con otros  conceptos como "client/server", y usaban los mismos recursos que otros "palabros" como DHTML, Tubo razon de empezar a existir de forma estable cuando se acuñó como palabra o concepto y sirvió de aglutinador de muchas cosas antiguas, pero organizadas de una forma nueva . Ajax ha sido el desencadenante técnico de Web 2.0 y viceversa.

  







Porque se la llama "nube"?
Una manera de saber lo que es cloud computing, es ver de donde viene la palabra. Nos hace comprender etimologimante el sentido que le dieros los precursores de la palabrita


La palabra evoca y recuerda a los diagramas de red que suelen tener una "nube" representando algo indeterminado en el medio de una línea que une dos nodos o procesos.
 ¿ porque no se usaba un rectángulo o un circulo?, porque no sabíamos "exactamente" lo que había dentro de esa nube, y lo mejor aun, no encestábamos saberlo para hacer nuestro diagrama y desarrollar la idea. A la nube la pasábamos un "paquete", que "milagrosamente" llegaba a su destino. Esto era la abstracción, ya que en esa nube se dan procesos complejos para que el paquete llegue de verdad, pero nos sirve para definir "rápidamente" el modelo, sin entrar en todos los detalles.













Qué es la "nube"?

    Tomemos nuestro negocio, y hagamos un "diagrama" con los elementos tecnologicos usados, todos los elementos que sean programas usados tanto libres como de pago, sistemas operativos, middleware, etc, los ponemos en una nube,  y solo dejamos definido claramente todo  lo que sea intrinsecamente definitorio de nuestro modelo.
¿Cuanto nos quedaria ? es posible que muy poco o casi nada. (solo los datos en si).

   Ahora pongamos todo eso que esta en una nube en un servidor remoto al cual accedemos desde cualquier parte, y nos preocupamos solo de lo "importante". Esto sería "computación en nube".

 
    Desde la perspectiva de un usuario, es adquirir y desarrollar servicios sin necesidad de comprender toda la tecnología que hay detrás.
    Desde el punto de vista de una organización, la nube proporciona servicios para los consumidores de forma muy simplificada, proporcionando un crecimiento potencial ilimitado, y de una gran calidad de servicio, haciendo rápido el uso de herramientas muy innovadoras.
    Es la adquisición de un servicio que maneja los recursos de la empresa, proporcionando control completo a bajo coste.
    En un mundo que todo se puede conectar a Internet, el incremento exponencial de información y el aumento de dispositivos (tipo móvil o palm), se crea el dilema si se quiere llegar a todo. La complejidad incrementa, y se demanda simplicidad. Las organizaciones están acelerando un cambio de mercado, Global, pero centrándose en lo domestico y damandas sociales.
    Las empresas necesitan potenciar completamente sus negocios, implementando negocios innovadores, pero luchan con las barreras de sus propios recursos.
    Esto llama a un modelo  informático más dinámico que permita la rápida adquisición y puesta en marcha de aplicaciones y servicios.
    La nube puede ser uno de los elementos de este modelo. Las tecnológicas "entre lineas" asociadas a la nube pueden ser parte de ese aprovechamiento , enfocando a la creación de negocios más dinámicos, sin depender de los recursos que necesitan. Es posible que al final se le termine llamando  Web 4.0 , aunque la Web 3.0 que dicen que se esta desarrollando en paralelo, desde luego no ha tenido tanto interes ni espectativas.








Cloud computing, se asocia a varios términos, se le puede comparar o simplemente tomarla como  la mezcla de todos ellos.



Se puede decir: "El Cloud computing sería la la tendencia a basar las aplicaciones en servicios alojados de forma externa, en la propia web."
Sin embargo, la forma en que  interactúan las cosas en la nube va mas allá del navegador de Internet, con la nube tambien se puede interactuar con aplicaciones de escritorio, desde una pda o teléfono movil. También hay que decir que todo aquel que no quiera tener alojado todo el sistema en la nube, tambien puede hacerlo , sin necesidad de renunciar "dogmaticamente" a cualquier otra cosa que puede aprovechar de la nube.

La nube aglutina diferentes servicios en poderosos servidores que están mantenidos por grandes compañias que garantizan un servicio estable. Una posible forma de entender la nube es pensar en usar servicios que en vez de "comprados", están "alquilados". 

 

 
Beneficios potenciales de la nube

 

Bajos costes, y poderosos medios. Al adoptar servicios nube en tiempos de crisis puede ahorrar dinero y dar un salto cualitativo y en cantidad del tipo de servicios. Se considera la nube como un modelo para ofrecer una buena relación calidad precio de aplicaciones y servicios. En un análisis de costes, la correcta implementación de un modelo nube, conduce a tener menor coste que disponer sistemas en propiedad, y mejor calidad de servicio.
-No necesitas un centro de datos bien comunicado ni un potente servidor.

-Tampoco pagas licencias de sistemas operativos o software adicional de servidor.

La nube permite una rápida  adaptación del negocio a usar tecnología innovadora, y hacerlo "sobre la marcha" o en demanda, es decir ponerlo en marcha rápidamente cuando se necesita, ni antes, ni después.

Haciendo un correcto uso de los servicios nube, las soluciones se ajustan rápidamente a un incremento ( o decremento) en el numero de usuarios. Y se puede pagar según el uso del servicio.




Contrapartidas

Dependencia de un servidor externo.
Seguridad (acceso a mis datos).

Monopolio. La industria estará en manos de grandes empresas. Para luchar contra esto, es bueno buscar servicios de código abierto que utilicen estadares muy generales. Así si tenemos que cambiar de servicio, no habrá que cambiar "mucho" el código. Tambien servicios que admitan importar y exportar los datos facilmente. Lo más importante de nuestro sistema es la información. No es nuevo el problema de tener que importar o exportar datos de una base de datos a otra, podría considerarse un servicio cloud como a una base de datos, de la cual tenemos que poder "extraer" la información de una forma "comoda", para poder migrar a otro sitio cuando queramos.

 


Existe una corriente de pensamiento reticente, “Una de las razones por las que no debes usar aplicaciones web para tus tareas de TI, es que pierdes el control. Tú debes estar en condiciones de realizar tus propias tareas en tu propio PC, en un programa amante de la libertad. Si usas un programa propiedad de un proveedor, o el servidor Web de otra persona, entonces quedas indefenso…el cloud computing es una trampa”.


También el presidente de Oracle, Larry Ellison, calificaba la tendencia como fenómeno pasajero. Sin embargo ha adquido Sun recientemente para hacer su propia nube.

  



Globolización.


    

No, no se trata de un error tipográfico haber escrito Globolizacion en vez de Globalizacion.

La globolizacion es el efecto que produce "la nube" en la tecnologia , su repercusión social y economica.

 

 Esto hace que las grandes compañias se preparen para tener sitio en el mercado de la nube. Los que actuen como proveedores de estas tecnologías,  tendrán que tener poderosos servicios tanto de hardware y comunicaciones, como de software con una buena relación calidad precio. Al igual que ocurre con la telefonia o electricidad, tendremos productos similares en diferentes compañias proveedoras. Esto puede producir que las empresas grandes de tecnologia, acapararán el mercado de los servicios basicos. El efecto globalización que era tecnologia para todos, se demostró un fiasco ya que la tecnologia está de mano de unos pocos.




Al igual que otros, no termino de ver el peligro que identifica Stallman sobre el Cloud Computing como fin de nada. Tambien creo que el problema con el software propietario sigue siendo el de siempre, tanto en la nube, en  internet,  o en el escritorio de nuestro ordenador.


 En el mundo actual hay una "interdependencia" de muchisimos servicios que nos proporcionan un distribuidor o un escecialista, desde la alimentación hasta los gobiernos y leyes, pasando por la energía, economia, educación, seguridad y un largo etc.












Nubes publicas y privadas


Un servicio nube, puede ser publico, privado, o los combinación de los dos.

En términos simples, un servicio nube publico,  es el que esta disponible para el acceso desde otros proveedores. El termino publico, no significa siempre gratis, en cualquier caso puede tener un coste muy pequeño.

El otro modelo llamado privado, ofrece muchos de los beneficios de los publicos. La diferencia es que en los servicios privados, los datos y procesos, se manejan dentro de la organizacion. Sin problemas de ancho de banda, exposiciones de seguridad y requerimientos legales. En adición, los servicios nube privados, pueden ofrecer al proveedor y cliente, mayor control, y seguridad en el acceso de un usuario.

Se anticipa el desarrollo de varios modelos de negocio que incluyan la integracion de servios de diferentes proveedores (publicos o privados), para optimizar los recursos de la empresa.
 

Conclusiones









     ¿ Alguien podría definir el concepto  de "energía" en pocas palabras?. Se puede ver como un hecho físico, cuántico, químico o simplemente algo abstractamente potencial. Puede considerarse desde un punto de vista "vital" de los seres vivos,  social en cuanto a la industria y vida cotidiana occidental, "estrategico" en cuanto a los planes de las multinacionales que venden "energía", o de otros millones de formas que pueda verse.  El mundo se mueve por la energía, y esa energía nos llega adquiriendola de alguien o de algo , ya sea comprando o fabricando y la utilizamos para transformar materia, sociedades y civilizaciones .

     El concepto "cloud" o en la nube, es una forma de aceptar y utilizar la "energía" exterior para que nos alimente y podamos desempeñar nuestro cometido.
  
    Las grandes compañias compiten por tener sus nubes bien cargadas de tecnología para todos los gustos y niveles.

    Al igual que ha ocurrido con otros medios de consumo, se ha creado un gran mercado de productos algunos muy simplones, otros demasiado sofisticados,

pero la gran parte son verdaderos "articulos" de uso masivo. La "crisis" obliga a renovarse a todas las grandes empresas que quieren tener su "espacio" en Internet.

    Y ahora sí, "todas" quieren tener sus  proyectos libres, ofrecidos de forma generalmente gratuita a la comunidad de desarrolladores sociales. Cualquier idea innovadora se abre paso rápidamente a través de nuevas formulas 2.0.

 

    La información ya no es algo "estático" que reside en una página web, es una combinacion de información compuesta de diferentes formas a través del uso de herramientas Cloud.


    El fenómeno "nube" no ha hecho sino empezar. Y todos muestran sus mejores galas y formas para seducir a usuarios y desarrolladores. Se ve claramente que las compañias nos están "cebando" al igual que al gorrino que hay que engordar para luego comer.

 
     Como prosumidores, hay que tener alternativas que nos ofrezcan el mayor grado de seguridad, libertad, interoperabilidad y autocontrol posible.


    Lo cloud y lo abierto, no es sinónimo de gratuito. De momento solo están "investigando" nuevas formas de negocio.

    Es posible que en el futuro nos hagan "pagar caro" esta dependencia, pero de momento es "barato". Así que mejor es mejor pensar, si no puedes con tu enemigo, uneté a el.

 

 

Artículos recomendados:




  • Saasmanía traduce un artículo que intenta explicar qué hay detrás del mundo del “Cloud Computing”.
  • Simpable comparativa de sistemas cloud.
  • Criando Cuervos habla del "embuste del cloud computing".
  • Nubeblog
  • Enrique Dans ha escrito muy frecuentemente sobre la tendencia del cloud computing.
  • El blog de Carr es otro imperdible a la hora de entender el gran cambio que supone el cloud computing.
  • Dreig ofrece una visión con la que no estoy en nada de acuerdo, pero que sirve para conocer otra forma de verlo.

 




miércoles, 15 de abril de 2009

Motor de búsqueda personalizado + Re-Busca

¿ Como crear un motor de búsqueda personalizado con Re-Busca ?

Utilizaremos el "Motor de búsqueda personalizado" de Google: http://www.google.com/coop/cse/

No es intención explicar todas opciones, pero haremos un repaso. 

 



Le hemos puesto de titulo Teruel centros educativos, y descripción la misma.

El problema es ahora decirle los sitios donde buscar.

Vamos a ver como Re-busca puede ayudarnos en esto. Acceso a la Web oficial Re-Busca

 


 
Probamos primero a buscar direcciones referentes a "Teruel centros educativos", y obtenemos el siguiente resultado




Los tres primeros resultados los "quitamos de la lista", los 2 siguientes los "pasamos al final" para luego repasarlos, los 2 siguientes también los quitamos, etc...
Voy "refinando" que sitios descarto, si ahora vuelvo a realizar una búsqueda con "teruel centros educativos" me saldría alguna referencia nueva, ya que al descartar algunas, toma en cuenta nuevas entradas. Como solo estoy interesado en buscar en webs de los centros educativos, busco también por otras palabras. "colegios teruel" pruebo con "colegios ESO teruel", también con "universidad teruel",
La verdad que he tenido que quitar bastante paja a mi parecer, pero aún así se ha creado una lista grande de elementos "potenciales".

Ahora paso a "configuración". La primera lista son direcciones a descartar. Si pulsamos "exporta URL"  en el texto de abajo aparecen las direcciones "propicias". Si Pulsamos "exportar excepciones" exporta las direcciones "descartadas".




Pulsamos "exporta URL" : Si seleccionamos todo el texto y "copiamos" en el porta papeles las direcciones favorables y lo pegamos en el cuadro de dialogo de las direcciones a buscar en nuestra "búsqueda personalizada", Dando al botón continuar, tendremos ya un buscador que buscará solo en las direcciones que nos han gustado.

Aún queda algo que mejora la búsqueda.  El menú de configuración de un buscador personalizado, ofrece muchas otras opciones:


Desde Sitios Web, añadimos o quitamos URL incluidas.

Como ya tenemos una lista de direcciones que no nos interesa en Re-Busca, pulsamos "exportar excepciones" .
Y en Sitios excluidos, incluimos la lista de direcciones excluidas.  Esto Refina más la búsqueda.

En Indexación , podemos hacer diferentes formas de "indexar" el motor, (También podemos copiar el resultado de "exporta URL" para pegarlos aquí)

Si necesitas más ayuda con la búsqueda personalizada, visita la página oficial  http://www.google.com/coop/cse/


En fin, la intención es hacer eso de forma automatizada. Para ello utilizaremos el API del motor de búsqueda personalizado de Google pero eso será en un siguiente capitulo.

lunes, 13 de abril de 2009

Re-Busca

Re-Busca es una herramienta  que realiza funciones de búsqueda Web en Google y Yahoo a la vez de una manera muy sencilla y aportando características propias que hacen la búsqueda más efectiva y reutilizable. Web oficial
Version Simple:
http://sites.google.com/a/miteruel.com/labs/proyectos

Version Extensa: http://sites.google.com/a/miteruel.com/google


1) Dual. Como he comentado , la primera característica que tiene es que la búsqueda la realiza en Google y Yahoo a la vez, desde una única pantalla consola muy sencilla y rápida.
Solo toma en cuenta los primeros 64 resultados de cada motor de búsqueda, y no visualiza las direcciones duplicadas. Si una dirección ya esta encontrada en Google no visualiza la encontrada en Yahoo. No se descarta añadir nuevos motores de búsqueda, pero creo que la simplicidad de hacerlo en solo 2, proporciona una ventaja de uso al usuario.

    Quizás si se añaden nuevos motores, puede hacer que se seleccione por el usuario  cuantos y cuales se usan de ellos.    


    Los resultados los muestra juntos y/o por separado,  como una lista de elementos que muestra titulo y descripción del sitio.

2) Filtros. Usando la opción quitar, se elimina el elemento de la lista mostrada, y se recuerda en la siguiente búsqueda. Cuando se busca algo, se prueba con distintas palabras similares o combinadas de diferente manera. Los elementos descartados, no se tienen en cuenta si se repite la búsqueda ,aunque sea con diferentes palabras, (¿Si ya se descarto la dirección en la primera búsqueda, para que sacarla de nuevo en una nueva búsqueda más refinada?)

3) Acumula resultados. Al quitar de la vista los elementos descartados se tiene un resultado más claro de sitios a tener en cuenta. Si se realiza una nueva búsqueda, los elementos nuevos se "suman" a los que se tienen, (pero no añade a la lista los elementos que ya existan o los ya descartados en el filtro). De manera que después de hacer varias búsquedas con diferentes combinaciones de palabras, tendremos una lista final de direcciones únicas relacionadas con lo buscado , cotejada en 2 buscadores diferentes y realizada con diferentes combinaciones de palabras. Esto da un resultado más amplio y claro que lo obtenido desde los buscadores.

4) Uso reutilizable. Como buscador, proporciona por supuesto la típica función de hacer click e ir a la página referenciada. Además puede crear un texto XML con estos resultados, de forma que se puede utilizar por una tercera aplicación o lector RSS. Es posible que como experiencia futura incluya la posibilidad de enviar estos datos a diferentes servicios cloud, empezando por Google docs,  Lector Rss de Google , Bloc de Notas... etc..
Una posible función sería también crear un motor personalizado de búsqueda, tomando los datos obtenidos o descartados.
Vista rápida. Puede incorporarse varias acciones de visualización de los elementos buscados. a) Mostrando, una detrás de otra, las páginas encontradas estableciendo un intervalo entre ellas. Por ejemplo cada 10 segundos muestra la siguiente, eso hace que al final de la búsqueda podamos ver un primer vistazo de las páginas encontradas, pasando de una a otra (como si fueran diapositivas a mostrar). Podría usarse la opción de "abrir todas" para mostrar todas ellas.( Cuando hay muchos elementos habrá que poner un límite de ventanas a abrir)

Sutilidades

Puede pensarse a primera vista que los dos motores sacarán resultados similares, pero nada más lejos de la realidad. En pruebas (no demasiado exhaustivas hasta el momento), en estos primeros 64 resultados solo hay un índice de coincidencias del 10% al 30%. Creo que esta gran diferencia de resultados entre uno y otro está relacionada con la forma de tomar la preferencia de idioma de la búsqueda.
[Especulando un poco, puede ser que  Google interpreta (si puede) el texto y devuelve páginas preferiblemente del idioma del texto y Yahoo no. También pudiera ser (aunque menos probable) que recuerde o reconozca las Ip de búsqueda y su idioma por defecto. No tiene que ver con hacerlo a través cookies, ya que la búsqueda es a través de funciones Flex, y sin ayuda de Javascript ]


¿ Como se hizo ?

Realizada en Flex (ActionScript). Me inspire en los ejemplos de búsqueda de google y Yahoo.

miércoles, 25 de marzo de 2009

cocomeme





Cómo me como el coco con cocomo.



 

Cocomo es un servicio Cloud de Adobe que permite añadir "capacidades sociales" en tiempo real dentro de cualquier sitio Web y crear aplicaciones Flex para Flash y Air.

Esta "Infraestructura de red" ,  permite integrar vídeo WebCam, chat de texto ( a través de una robusta API de mensajería de datos), audio (VoIP), pizarra colaborativa, escritorio remoto, compartición o intercambio de ficheros, presencia contextual etc..


 


La idea básica es que el desarrollador crea "habitaciones" donde  entran usuarios (al estilo de un chat típico) en donde se "comparten" estas herramientas.




Un uso muy apropiado es para crear "aulas virtuales"  donde el profesor (Host) "controla" lo que pasa en el aula, puede hablar o chatear con alumnos (visitantes), de forma que puede impartir "clases" mostrando el contenido de la pantalla de su ordenador a los asistentes, o incluso tomar el control del escritorio de los alumnos para ver si esta haciendo "bien" los deberes o ayudarles  directamente.




Sirve para hacer "presentaciones" publicas de productos , como centro de asistencia técnica, para crear juegos interactivos o simplemente para crear lugares de ocio en general donde se comparte el uso de un vídeo, mapa, documento y mucho más.




Cocomo está basado en componentes de cliente Adobe Flex, una infraestructura de servicios hospedados y un modelo de desarrollo simple pero poderoso. Esto significa que ellos te dan todo el soporte de servidor, con lo que el desarrollador solo se tiene que preocupar de crear el programa cliente, partiendo de componentes muy terminados.




Fue diseñado pensando en la seguridad, ya que los desarrolladores podrán construir aplicaciones multi-usuario que el usuario usará con más facilidad y confianza.



Se integra facilmente en aplicaciones existentes, y es fácil crear aplicaciones sociales nuevas que lleven alguna o varias de esas características.


Es un innovador servicio que está en el eje de lo que será el paradigma tecnologico del futuro: La computación en Nube ( o cloud computing) Una mezcla de servicios programables hospedados en "super-servidores", que proporcionan herramientas para que los desarrolladores "personalicen" los servicios prestados o programen nuevos servicios combinando alguno o varios existentes. El concepto "servicio cloud" es un termino que se "funde" con otras palabras como SAS (software como servicio) o PaaS (plataforma como servicio), etc...






Los enlaces siguientes le ayudarán a aprender y entender Cocomo:



  • Inscripción en Cocomo: http://www.adobe.com/go/cocomo
  • Cocomo Guía - Este documento ofrece una visión general de Cocomo.
  • Cocomo Referencia de la API - Este documento proporciona una lista de todas las clases, las funciones, propiedades, etc. Cocomo SDK.
  • Ejemplos Cocomo - Visite el portal del desarrollador de una cuenta de usuario y acceder a las aplicaciones de ejemplo. Una vez que el SDK descargado y descomprimido, vaya al directorio "ejemplo" en el paquete SDK.

     • Ejemplo Cocomo de mezcla de Yahoo! Maps:
http://blogs.adobe.com/collabmethods/2008/03/cocomo_yahoo_maps_editors_pick.html
     • Ejemplo Cocomo de mezcla de YouTube Livingroom:
http://blogs.adobe.com/collabmethods/2008/05/_another_cocomo_experiment_the.html
 



De acuerdo a Erik Larson, director de mercadotecnia y gerencia de producto en la Unidad de Productividad de Negocios en Adobe, “el lanzamiento de Cocomo, es otro paso al frente en habilitar a los desarrolladores para crear aplicaciones sociales ricas de tiempo real que cambiarán la manera en que la gente se comunica y colabora con los demás”. Adobe usa Cocomo en el software Adobe Acrobat® 9, así como en Acrobat.com para ofrecer a los usuarios finales acceso a colaboración en tiempo real de documentos PDF. Esta capacidad puede permitir a los usuarios conducir la navegación de un grupo sobre un documento PDF en tiempo real, lo que ayuda a que cada uno esté, literal y figurativamente, en la misma página.



Otras Cosas


Objetivos de desarrollo.

Objetivo 1) Personalizar la plantilla proporcionada en el portal del desarrollador. Traducir todos los elementos posibles, y crear una nueva plantilla personal.
Objetivo 2) Probar los ejemplos Flex proporcionados en el SDK. Compilar y alojarlos en diferentes páginas para realizar las pruebas.
Objetivo 3) Crear un "portal" de enseñanza virtual, dentro de la infraestructura de Google appengine y usando cocomo. La intención es relacionar e integrar las dos plataformas.

Cuando creia que cocomo era la herramienta definitiva para el control remoto, veo que precisamente el componente de compartir pantalla no viene incluido en el SDK.  

Aluden a restricciones por seguridad y que es un servicio prestado solo en acrobat.com.

 

Soluciones:

   1) Crear una plantilla simple para la conexion por pantalla dentro de directshow. No es exactamente lo que "buscamos", pero da solución a medias.

   2) Crear una aplicación que haga esto. Tengo que tirar mano de Gp y cocomo. Es un tema a estudiar

domingo, 5 de octubre de 2008




La nueva versión de Delphi incorpora una nueva actualización de IntraWeb. En un primer vistazo, el gran cambio en la nueva versión es el soporte de librerías Ajax externas.


 Empezando por  jQuery  que es una librería de código abierto JavaScript muy ligera que lleva poderosas herramientas para manipular elementos Dom, y realizar llamadas Ajax. Tiene cierta similitud con Prototype, que algo más veterana inicio la escuela de librerías JavaScript orientadas a objeto con potentes elementos de manipulación de listas DOM y llamadas asincronas controladas y bien encapsuladas. Pero con el tiempo, jQuery se ha ganado un espacio propio. Si bien tiene desarrollado algunos componentes de interface de usuario UI, aun  parece faltarle más componentes para crear una "aplicación" completa. jQuery gana adeptos, por cierto, Microsoft también ha tomado jQuery como elemento a incluir en su Visual Studio.



La nueva IW también añade soporte para Silverligth. Se ha discutido acerca de que si lo incorpora en realidad o no, ya que Silverligth esta expresamente diseñado para .Net, pero parece ser que pueden usarse algunos controles "compilados" dentro de la pagina IntraWeb.


También prometen integrarse con Dojo y quizás otras librerías.  De momento han incluido nuevas formas de "incluir" código o ficheros JavaScript a través de nuevas propiedades y eventos de los formularios. Ya se habla de una nueva "familia" de componentes TIWJQueryWidget ,TIWDojoWidget que su propio nombre ilustra la función que realizan.



Hadi hariri, habla de algunos de estos temas en  http://www.hadihariri.com/Blogs/Delphi/20080117.aspx En el articulo,  Hadi  pone un ejemplo de combinar un control IntraWeb, con un elemento UI de jQuery, pero salta a la vista que esta relación está un poco "tomada por los pelos", y desde luego seria difícil aplicarlo a otros controles más especializados o a otros más complejos como los Grid. 

Que nadie se ofenda si digo que falta un poco madurar a estas nuevas conexiones. Sigo creyendo que a IntraWeb le hace falta algo más de "flexibilidad" en cuanto a procesar comandos realizados por controles "externos" . La librería proporciona componentes perfectamente "encapsulados" que realizan muchas funciones de forma autónoma, pero tiene relativa dificultad en procesar otros comandos que puedan ser realizados por las librerías Ajax externas.



En este sentido siempre  he echado en falta una forma de responder un comando html, de forma sencilla, desde nuestro form. La alternativa es crear un componente explicito que responda a estas llamadas. Esto no es demasiado complicado haciéndolo bajo las "reglas" de Intraweb.
Pero las herramientas Ajax llevan normalmente su propia "filosofía" a la hora de gestionar y generar preguntas y respuestas al servidor: Esto suele chocar con la rígida forma de "interrogar" a nuestra aplicación IntraWeb. Como comentamos en el articulo
Ajax en IntraWeb no es fácil, pero desde luego no es imposible comunicar con nuestra Aplicación IntraWeb.
También ocurre, que las librerías Ajax, suelen crear su propia "Capa" de acceso a elementos Dom, que en nada coincide con la  forma de entenderlos por IntraWeb, eso hace difícil comunicar componentes "tradicionales" de IW con widgets externos.


    Un componente muy normal y usado en cualquier programa es la tabla o grid de datos. Todas las librerías Ajax que he revisado tienen algún componente para visualizar tablas de datos, y generalmente, ofrecen buen aspecto y opciones automáticas para ordenar columnas , moverlas o cambiar el tamaño. También ofrecen la posibilidad de editar los campos o configurar el editor del campo de cada columna. Este tipo de componentes aun son dificiles de integrar con IntraWeb, y algo me hace pensar que le va a resultar difícil durante algún tiempo aún.






    Este asunto de las tablas es un buen paradigma  para entender lo que necesitamos. La forma preferida de intercambiar datos de una librería Ajax, es a través de XML, con lo que un componente que maneje "Grids" debe sobre todo responder a diferentes comandos que le envía el widget del navegador, con cadenas de carácteres en formato XML, y esto aún no es cómodo de hacer.

    
    En fin, sirva esta pequeña introducción para justificar la existencia del componente "InterAjax", que es una alternativa para integrar diferentes librerías Ajax en la aplicación IntraWeb.
De momento tiene soporte para YUI, ExtJs, Dojo y Zapatec.