<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CU8CQns7eCp7ImA9WhdUFk0.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029</id><updated>2011-10-02T18:04:23.500-07:00</updated><title>Integracion Google</title><subtitle type="html">Hello amigos del Blog...
Aqui encontraran de todo sobre desarrollo Web...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://mlaynessanchez.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/IntegracionGoogle" /><feedburner:info uri="integraciongoogle" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D0AAQng6cSp7ImA9WhdUFUo.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-1436324826199625398</id><published>2011-10-10T23:55:00.000-07:00</published><updated>2011-10-02T10:15:43.619-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-02T10:15:43.619-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="inicio" /><title>Integración Google</title><content type="html">&lt;a href="http://mlaynessanchez.blogspot.com/2010/04/adonde-queremos-llegar.html"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5463830772812311090" src="http://1.bp.blogspot.com/-XATzxcSSkDY/TXRmaRRxqUI/AAAAAAAAAy4/WpP5q5H_0Ko/s1600/barra_lhorizontal.JPG" style="cursor: pointer; float: left; height: 50px; margin: 0px 10px 10px 0px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div id="text1"&gt;&lt;span class="Apple-style-span" style="color: #bc9a00; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;
Bienvenido a Integración Google&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="translation1"&gt;&lt;/div&gt;&lt;div id="text2"&gt;&lt;span class="Apple-style-span" style="color: #c0c5d3;"&gt;Ultimo avance: empezar a adecuarnos a utilizar ExtJs-4.0, actualizado al 01/07/2011...&lt;/span&gt;&lt;/div&gt;&lt;div id="translation2"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div id="text3"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="notranslate"&gt;&lt;b&gt;Integracion Google &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
nuestra propuesta de ingreso al mundo del desarrollo web y de la tecnología Google...&lt;/div&gt;&lt;div id="translation3"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div id="text4"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Nuestro Objetivo:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="translation4"&gt;&lt;/div&gt;&lt;div id="text5"&gt;Lograr formar una comunidad de desarrolladores que compartan códigos cortos y sencillos, que funcionen, y que estén lo suficientemente explicados para que los podamos probar, y así aprender las diversas técnicas de desarrollo web vigentes.. y aunque tenemos una especial predisposición respecto al mundo Google y al mundo opensource en general...no haremos exclusiones, todo aporte es bienvenido, por cuanto el mundo del desarrollo Web es realmente muy amplio.&lt;/div&gt;&lt;div id="translation5"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div id="text6"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;Avances a la fecha:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div id="translation6"&gt;&lt;/div&gt;&lt;div id="text7"&gt;&lt;b&gt;Importante: &lt;/b&gt; Por favor Seleccione en el recuadro superior derecho, correspondiente al Traductor de Google, el Idioma más adecuado para Usted..!&lt;/div&gt;&lt;div id="translation7"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/por-donde-empezar.html"&gt;Empezando sin conocimientos previos.&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;(actualizado al 15/09/2011&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/herramientas-para-desarrollo.html"&gt;Herramientas para desarrollo Web.&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;(actualizado al 01/03/2011)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/el-potencial-de-extjs.html"&gt;ExtJs, un framework bastante potente&lt;/a&gt;.&lt;br /&gt;
&lt;b&gt;(actualizado al 15/09/2011)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/un-avance-de-integracion-google.html"&gt;Un avance de Integracion a Google&lt;/a&gt;, revisando algo de la documentación de Google.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html"&gt;Integracion a Google (1ra. parte)&lt;/a&gt;, Adaptando &lt;span class="notranslate"&gt;&lt;b&gt;"stores"&lt;/b&gt;&lt;/span&gt; a Visualizaciones Google y de Google Maps, sobre un modelo de Menu TreePanel que utiliza la API de Autenticacion de &lt;span class="notranslate"&gt;Google Contacts&lt;/span&gt; para acceder a nuestras aplicaciones,desarrollado utilizando el framework ExtJs.&lt;br /&gt;
&lt;b&gt;(actualizado al 15/09/2011)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html"&gt;Integracion a Google (2da. parte)&lt;/a&gt;, Utilizando &lt;span class="notranslate"&gt;&lt;b&gt;Google SpreadSheets&lt;/b&gt;&lt;/span&gt; (hojas de calculo de &lt;span class="notranslate"&gt;&lt;b&gt;Google Docs&lt;/b&gt;&lt;/span&gt;) como fuente de datos sobre el modelo anterior descrito, que utiliza la API de Autenticacion de &lt;span class="notranslate"&gt;&lt;b&gt;Google Contacts&lt;/b&gt;&lt;/span&gt; para acceder a nuestras aplicaciones,desarrollado utilizando ExtJs.&lt;br /&gt;
&lt;b&gt;(actualizado al 20/09/2011)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-appengine.html"&gt;Integracion a Google App Engine&lt;/a&gt;, Una primera Integracion a Google App Engine utilizando la libreria estandard Webapp de Phyton y el SDK de Appengine&amp;nbsp;versión&amp;nbsp;1.5.2 vigente a la fecha (que ahora requiere la&amp;nbsp;identificación&amp;nbsp;de la&amp;nbsp;codificación&amp;nbsp;utf-8, o la que utilicemos), y que nos permite "lanzar" las aplicaciones integradas a Google que hemos venido desarrollando con el framework ExtJS en los codelabs anteriores...&lt;br /&gt;
&lt;b&gt;(actualizado al 12/07/2011)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/04/localizacion-e-internacionalizacion-de.html"&gt;Localizacion e Internacionalización de nuestro Blog&lt;/a&gt;, una manera sencilla y rápida de Internacionalizar nuestros blogs, paginas web u otros desarrollos recurriendo a la Tecnología Google.&lt;br /&gt;
&lt;b&gt;(actualizado al 01/03/2011)&lt;/b&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/05/hablemos-sobre-facebook.html"&gt;Hablemos sobre Facebook&lt;/a&gt;, comentarios respecto a Facebook, y desarrollo de algunas técnicas aplicados por nosotros para mejorar la participación de nuestros seguidores y empezar a programar algo en ese formato, que podríamos utilizar en nuestros desarrollos y proyectos (incluye referencia técnica).&lt;br /&gt;
&lt;b&gt;(actualizado al 01/03/2011)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/05/hablemos-de-twitter.html"&gt;Hablemos sobre Twitter&lt;/a&gt;, comentarios respecto a twitter, el mas importante servicio de microblogging de la actualidad. Incluimos referencia técnica, y un código ejemplo referido a Twitter Anywhere, una técnica implementada por Twitter que sigue los estandares HTML y javascript que permite utilizar a Twitter en nuestras aplicaciones y desarrollos para mantener un mejor contacto con nuestros seguidores.&lt;br /&gt;
&lt;b&gt;(actualizado al 01/03/2011)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/05/web-20-los-negocios-y-las-redes.html"&gt;Web2.0: Los negocios y las redes sociales&lt;/a&gt;, un poco de teoría que debemos considerar para utilizar las redes sociales en los desarrollos y aplicativos de nuestros negocios y/o instituciones..&lt;br /&gt;
&lt;b&gt;(actualizado al 01/02/2011)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/07/google-gadgets.html"&gt;Los Gadgets de Google&lt;/a&gt;, que son y como ir aprendiendo a desarrollar nuestros propios gadgets utilizando el GGE (Google Gadget Editor) y sus herramientas... (Se adjunta ejemplo de 02 gadgets que muestran visualizaciones de una hoja de calculo de Google Docs, que podríamos pegar en nuestro escritorio usando &lt;span class="notranslate"&gt;Google Desktop&lt;/span&gt;, en nuestra pagina iGoogle, o en cualquier pagina web).&lt;br /&gt;
&lt;b&gt;(actualizado al 23/07/2010)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2011/03/using-back-end-phpmysql-introduccion.html"&gt;Usando el Back-End PHP-MySQL (iniciándonos)&lt;/a&gt;&lt;/b&gt;, codelab desarrollado tomando como referencia un tutorial de la &lt;b&gt;pagina Oficial ExtJs&lt;/b&gt;, desarrollado con ExtJs-3.x y cuyo código hemos mejorado, y que  nos presenta un CRUD -opciones básicas de Crear, Modificar, Borrar, Buscar e Imprimir-, sobre una tabla de una base de datos MySQL y considerando componentes dinámicos (la que migraremos a ExtJs-4.x)..&lt;br /&gt;
&lt;b&gt;(actualizado al 01/03/2011)&lt;/b&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2011/03/using-back-end-phpmysql-wizard-safety.html"&gt;Usando el Back-End PHP-MySQL (Temas de Acceso y Seguridad)&lt;/a&gt;&lt;/b&gt;, empezando a diseñar nuestros sistemas tomando en consideración pantallas de acceso (Wizards) y opciones de seguridad, sobre tablas de una base de datos MySQL.(tomando como referencia el modelo CRUD del codelab anterior)&lt;br /&gt;
&lt;b&gt;(actualizado al 10/03/2011)&lt;/b&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2011/04/integracion-google-3ra-parte.html"&gt;Integracion Google (3ra Parte))&lt;/a&gt;&lt;/b&gt;, nuestro modelo de pantalla de acceso y Menu TreePanel desarrollado con el framework ExtJS, que nos permite seleccionar visualizaciones Google,de Google Maps y del mismo ExtJS que hemos venido desarrollando en nuestros codelabs anteriores (referentes a Integracion Google 1ra y 2da parte), pero ahora utilizando el Back-End PHP+MySQL, y comparando cada caso con las visualizaciones que desarrollamos utilizando &lt;span class="notranslate"&gt;&lt;b&gt;spreadsheets&lt;/b&gt;&lt;/span&gt; de &lt;span class="notranslate"&gt;Google Docs&lt;/span&gt; como datasource; codelab inprescindible para completar nuestros conocimientos y empezar nuestros desarrollos bajo dicho entorno.&lt;br /&gt;
&lt;b&gt;(actualizado al 25/04/2011)&lt;/b&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2011/09/using-back-end-javamysql-el-proyecto.html"&gt;Usando el Back-End Java+MySQL: El proyecto sdsimple&lt;/a&gt;&lt;/b&gt;, nuestros apuntes para empezar a iniciarnos con el Back-End Java+MySQL y poder empezar a experimentar con el proyecto sdsimple de Pedro Peña García (España).&lt;br /&gt;
&lt;b&gt;(actualizado al 20/09/2011)&lt;/b&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div id="text"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Importante..!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Estimado lector.. si lee esta nota es porque ha revisado esta pagina...&amp;nbsp;y lo primero, es indicarles que este Blog estado desarrollado en idioma español... por lo que para poder entendernos es necesario que seleccione su lengua nativa, o el idioma de su preferencia, en nuestro&amp;nbsp;&lt;b&gt;&lt;span class="notranslate"&gt;Google Traductor&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;
Entendemos que puede haber limitaciones en la traducción automatica, pero para nosotros, programadores y desarrolladores web, lo más importante son los códigos: ..un buen ejemplo es mejor que mil palabras...&lt;br /&gt;
&lt;br /&gt;
Bienvenidos y buen dia..!&lt;/div&gt;&lt;div id="translation"&gt;&lt;/div&gt;&lt;script&gt;
var wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");

  //alert('hello all..!' + wlang );

  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage.lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget; 
  };
  document.write('Navegador: '+wlanguage );

  function initialize() {
    var text = document.getElementById("text").innerHTML;
    google.language.translate(text, 'es', wlanguage, function(result) {
      var translated = document.getElementById("translation");
      if (result.translation) {
        translated.innerHTML = result.translation;
      } 
    });
    var text1 = document.getElementById("text1").innerHTML;
    google.language.translate(text1, 'es', wlanguage, function(result) {
      var translated1 = document.getElementById("translation1");
      if (result.translation) {
        translated1.innerHTML = '&lt;span class="Apple-style-span" style="color: #bc9a00; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;'+result.translation +'&lt;/span&gt;&lt;/span&gt;';
      } 
    });
    var text2 = document.getElementById("text2").innerHTML;
    google.language.translate(text2, 'es', wlanguage, function(result) {
      var translated2 = document.getElementById("translation2");
      if (result.translation) {
        translated2.innerHTML = '&lt;span class="Apple-style-span" style="color: #C0C5D3;"&gt;' + result.translation +'&lt;/span&gt;';
      } 
    });
    var text3 = document.getElementById("text3").innerHTML;
    google.language.translate(text3, 'es', wlanguage, function(result) {
      var translated3 = document.getElementById("translation3");
      if (result.translation) {
        translated3.innerHTML = result.translation;
      } 
    });
    var text4 = document.getElementById("text4").innerHTML;
    google.language.translate(text4, 'es', wlanguage, function(result) {
      var translated4 = document.getElementById("translation4");
      if (result.translation) {
        translated4.innerHTML = '&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;' + result.translation+'&lt;/b&gt;&lt;/span&gt;';
      } 
    });
    var text5 = document.getElementById("text5").innerHTML;
    google.language.translate(text5, 'es', wlanguage, function(result) {
      var translated5 = document.getElementById("translation5");
      if (result.translation) {
        translated5.innerHTML = result.translation;
      } 
    });
    var text6 = document.getElementById("text6").innerHTML;
    google.language.translate(text6, 'es', wlanguage, function(result) {
      var translated6 = document.getElementById("translation6");
      if (result.translation) {
        translated6.innerHTML = '&lt;p&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size:large;"&gt;&lt;span class="Apple-style-span" style="color:red;"&gt;'+result.translation+'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;';
      } 
    });
    var text7 = document.getElementById("text7").innerHTML;
    google.language.translate(text7, 'es', wlanguage, function(result) {
      var translated7 = document.getElementById("translation7");
      if (result.translation) {
        translated7.innerHTML = result.translation;
      } 
    }); 
    $("#text").hide(); 
    $("#text1").hide(); 
    $("#text2").hide(); 
    $("#text3").hide(); 
    $("#text4").hide(); 
    $("#text5").hide(); 
    $("#text6").hide(); 
    $("#text7").hide(); 
  };
  function enespanol() {
    $("#text").hide();
    $("#text7").hide();
  };
  if (wlanguage != 'es') {
    google.setOnLoadCallback(initialize);
  } else {
    google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;&lt;br /&gt;
&lt;script src="http://www.google.com/friendconnect/script/friendconnect.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div id="div-958977303830538382" style="border: 1px solid #cccccc; width: 430px;"&gt;&lt;/div&gt;&lt;script type="text/javascript"&gt;
var skin = {};
skin['BORDER_COLOR'] = '#cccccc';
skin['ENDCAP_BG_COLOR'] = '#e0ecff';
skin['ENDCAP_TEXT_COLOR'] = '#333333';
skin['ENDCAP_LINK_COLOR'] = '#0000cc';
skin['ALTERNATE_BG_COLOR'] = '#ffffff';
skin['CONTENT_BG_COLOR'] = '#ffffff';
skin['CONTENT_LINK_COLOR'] = '#0000cc';
skin['CONTENT_TEXT_COLOR'] = '#333333';
skin['CONTENT_SECONDARY_LINK_COLOR'] = '#7777cc';
skin['CONTENT_SECONDARY_TEXT_COLOR'] = '#666666';
skin['CONTENT_HEADLINE_COLOR'] = '#333333';
skin['DEFAULT_COMMENT_TEXT'] = '- Type your comment here  -';
skin['HEADER_TEXT'] = 'Comment in your language...!!   .';
skin['POSTS_PER_PAGE'] = '5';
google.friendconnect.container.setParentUrl('/' /* location of rpc_relay.html and canvas.html */);
google.friendconnect.container.renderWallGadget(
 { id: 'div-958977303830538382',
   site: '12546844763003200469',
   'view-params':{"disableMinMax":"true","scope":"PAGE","features":"video,comment","startMaximized":"true"}
 },
  skin);
&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-1436324826199625398?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SLOSK9tvf_v3a05fiVYh7kPhNMQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SLOSK9tvf_v3a05fiVYh7kPhNMQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SLOSK9tvf_v3a05fiVYh7kPhNMQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SLOSK9tvf_v3a05fiVYh7kPhNMQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/HPqsbq2jJS4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/1436324826199625398?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/1436324826199625398?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/HPqsbq2jJS4/integracion-google.html" title="Integración Google" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-XATzxcSSkDY/TXRmaRRxqUI/AAAAAAAAAy4/WpP5q5H_0Ko/s72-c/barra_lhorizontal.JPG" height="72" width="72" /><feedburner:origLink>http://mlaynessanchez.blogspot.com/2009/12/integracion-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YBQXk_fSp7ImA9WhdUFUo.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-6942517275075374479</id><published>2011-10-02T10:51:00.000-07:00</published><updated>2011-10-02T11:12:30.745-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-02T11:12:30.745-07:00</app:edited><title>Using the Back-End Java+MySQL: Instalando sdsimple..</title><content type="html">&lt;div id="talerta"&gt;
&lt;/div&gt;
&lt;div id="talerta1"&gt;
&lt;/div&gt;
&lt;div id="alerta"&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id="alerta1"&gt;
Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;
&lt;a href="http://sdsimple.es/index.php/news" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://sdsimple.es/images/stories/img_8484.jpg" style="cursor: hand; cursor: pointer; float: left; height: 120px; margin: 22px 15px 0px 0px; width: 140px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
...y ahora veremos como instalar el &lt;b&gt;sistema sdsimple&lt;/b&gt; en nuestro servidor local Tomcat utilizando Netbeans para facilitarnos el trabajo, y finalmente tener al proyecto en un entorno "profesional" de desarrollo ,listo para que lo empecemos a revisar ..y empezar a planificar y realizar nuestras propias modificaciones.... .por supuesto, que si han revisado nuestra entrada anterior ya deben tener una idea de como realizar todo el proceso, pero en esa oportunidad "cargamos" un proyecto que no estaba ligado al mundo Java (nuestros codelabs &lt;span class="Apple-style-span" style="color: blue;"&gt;Integración Google 1ra y 2da parte&lt;/span&gt;), pero en esta oportunidad si vamos a utilizar códigos java y la base de datos MySQL que debemos haber instalado en los inicios de este proyecto &lt;b&gt;Integración Google&lt;/b&gt; junto con &lt;b&gt;Appserv&lt;/b&gt; (ó el entorno HTTP Apache, PHP y MySQL que hayamos elegido, como WAMP, XAMP, etc), así que ahora solo quedan algunas cosas propias de dicho entorno que debemos considerar antes de proceder con la instalación.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;el caso es que el entorno de desarrollo&lt;b&gt; Tomcat-Java-Netbeans&lt;/b&gt; no viene anexado a una base de datos en particular, así que podemos conectar a cualquier base de datos ya sea "local" o "remota" , es decir, disponible en nuestro equipo, en nuestra intranet  o en la "nube" (además que desde el comienzo se menciono que el entorno de desarrollo AppServ no era  sino la unión de tres grandes "sistemas" que nos facilitaba el proceso de configuración y enlace entre ellos, el servidor HTTP Apache, la base de datos mySQL y el lenguaje de programación PHP; pues ahora vamos a comunicarnos y mostrar a la base de datos MySQL sin utilizar HTTP Apache ni PHP &amp;nbsp;...usando ahora Apache Tomcat y Java a través del entorno de desarrollo de Netbeans.&lt;br /&gt;
&lt;br /&gt;
Sino no tenemos instalado Appserv podemos proceder a instalar unicamente MySQL (si es posible), pero si no queremos trabajar directamente en el editor de comandos de MySQL, y trabajar con un entorno "grafico" para el manejo de la base de datos como PHPmyAdmin, pues necesitaremos tambien instalarlo por separado (tambien es posible), pero si queremos facilitarnos las cosas ..y probar todos nuestros codelabs anteriores, mejor procédase a la instalación de Appserv (u otro similar), cuyos conceptos describimos en nuestro post &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/por-donde-empezar.html" target="_blank"&gt;empezando desde cero&lt;/a&gt;....&lt;br /&gt;
&lt;br /&gt;
/. Continua..
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Saludos&lt;br /&gt;
@Mlaynes&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href="https://www.facebook.com/topic.php?topic=442&amp;amp;uid=111876182184074"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 5px 0px 0px; text-align: left; width: 40px;" /&gt;Opina en nuestro foro §FB..!&lt;/a&gt;&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;
&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2011/10/using-back-end-javamysql-instalando.html" num_posts="20" width="475"&gt;&lt;/fb:comments&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-6942517275075374479?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gpq6FJiNj2oAqyYXgAAtVihfn10/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gpq6FJiNj2oAqyYXgAAtVihfn10/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gpq6FJiNj2oAqyYXgAAtVihfn10/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gpq6FJiNj2oAqyYXgAAtVihfn10/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/J4dsOJCT4so" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/6942517275075374479?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/6942517275075374479?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/J4dsOJCT4so/using-back-end-javamysql-instalando.html" title="Using the Back-End Java+MySQL: Instalando sdsimple.." /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s72-c/lgFacebook.jpg" height="72" width="72" /><georss:featurename>Lima, Perú</georss:featurename><georss:point>-12.134755 -76.9970124</georss:point><georss:box>-12.1366955 -76.9994799 -12.1328145 -76.99454490000001</georss:box><feedburner:origLink>http://mlaynessanchez.blogspot.com/2011/10/using-back-end-javamysql-instalando.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMNRX47eSp7ImA9WhdUFUo.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-1762309203303289577</id><published>2011-09-22T12:29:00.000-07:00</published><updated>2011-10-02T09:54:54.001-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-02T09:54:54.001-07:00</app:edited><title>Using the Back-End Java+MySQL: El proyecto sdsimple</title><content type="html">&lt;div id="talerta"&gt;
&lt;/div&gt;
&lt;div id="talerta1"&gt;
&lt;/div&gt;
&lt;div id="alerta"&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id="alerta1"&gt;
Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;
&lt;a href="http://es.wikipedia.org/wiki/Tomcat" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://3.bp.blogspot.com/-cwVvwtBnWyk/TnqibMXkyMI/AAAAAAAABD4/lgmB_tcON0k/s1600/tomcat-power.gif" style="cursor: hand; cursor: pointer; float: left; height: 120px; margin: 22px 15px 0px 0px; width: 140px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
...y bueno amigos, llego el turno de hablar del Back-End Java(JSP)+MySQL, pero continuando con nuestra modalidad de presentación de Codelabs, vamos ahora a poner la valla bien alta presentando en esta oportunidad al &lt;b&gt;proyecto sdsimple.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Que es el proyecto sdsimple? &lt;/b&gt;es una aplicación administrativa desarrollado bajo la modalidad "Todo a la Web" bastante compacta y completa para facilitar la administración y gestión de PYMES que se distribuye bajo los términos de la &lt;a href="http://es.wikipedia.org/wiki/GNU_General_Public_License" target="_blank"&gt;Licencia Pública General GNU&lt;/a&gt; (tal como está publicada por la Free Software Foundation; ya sea la versión 3 de la licencia, o (según su elección) cualquier otra versión posterior). Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; incluso sin las garantías de COMERCIALIZACIÓN o USABILIDAD O UTILIDAD PARA USOS PARTICULARES... las anotaciones son las textuales indicadas por Pedro Peña García (desarrollador del proyecto), a quien de esta humilde comunidad presentamos nuestros respetos... Sdsimple se presenta como un sistema de facturación on-line y como la "gestión eficaz de tu negocio", y en este caso vamos a precisar los alcances del proyecto sdsimple para que sepamos que tenemos entre manos:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;No solo es facturación, abarca compras, ventas, cobranzas, pagos y gestión de caja y bancos; que considero un modelo muy interesante y apropiado para empresas de servicios, o empresas que "legalmente" conforme a la legislación de cada país, por el monto de sus ventas y/o activos, no son obligadas a mantener control de Stocks ni activos (basicamente lo que conocemos como PYMES). Sdsimple no hace control de stocks -el costo de los stocks y de ventas se tendría que calcular por diferencia de inventario, como es usual y legalmente establecido para este tipo de negocios-&amp;nbsp; pero si registra los impuestos basicos involucrados en el proceso (IVA y retenciones), por supuesto todo esto depende de cada país y &amp;nbsp;puede ser suficiente, pero por poner un ejemplo, en Argentina parece existen mas impuestos y/o retenciones que considerar respecto al caso peruano, de acuerdo a solicitudes de amigos de esta comunidad que han llegado a instalar el proyecto y ponerlo en funcionamiento de acuerdo a sus necesidades.&lt;/li&gt;
&lt;li&gt;El proyecto en sí tiene soporte multiempresa, pero nos da opción a un único código de acceso a cada una de ellas, asimismo solo considera un único correlativo para la facturación y otro para las compras, vale decir, tal como esta diseñado solo soporta un&amp;nbsp;único&amp;nbsp;punto de venta y de registro; es decir, esta realmente diseñado para ser usado directamente por los administradores del negocio.&lt;/li&gt;
&lt;li&gt;No presenta un modulo de contabilidad pero por supuesto que conociendo al detalle el modo de funcionamiento del sistema, y las bases de datos que la componen (las que son intuitivamente identificables), pues podría&amp;nbsp;fácilmente&amp;nbsp;enlazar a una aplicación contable..&lt;/li&gt;
&lt;li&gt;Esta desarrollado utilizando como Back-End Java(JSP) + MySQL, y por el front utiliza ExtJs-2.2, una versión bastante estable y totalmente compatible con la ultima version ExtJs-3.4 de su tipo distribuido por sencha.com&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Nota:&lt;/b&gt;&lt;/span&gt; Pueden revisar mas detalles del proyecto sdsimple en los enlaces indicados al final de esta pagina (Anuncios IGCodelab, lado izquierdo)&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Consideradas y planteadas las "limitaciones", pasaremos a hablar de sus "virtudes" por cuando sdsimple es un verdadero proyecto cloud-computing que "facilmente" podriamos adaptar para una gestión completa de un negocio o empresa PYME, por supuesto que haciendo las correcciones y/o adiciones que se requieran, pero principalmente considera que sdsimple nos facilita considerablemente todas las cosas que hay que tener presentes en un proyecto "completo" usando el Back-End Java + MySQL, y eso es importante para nosotros...&lt;br /&gt;
&lt;br /&gt;
Anótese con lo anterior que trabajar con Java no es lo mismo que trabajar con PHP que es un lenguaje de programación interpretado, diseñado originalmente y principalmente para la creación de páginas web dinámicas. PHP se usa principalmente para la interpretación del lado del servidor (server-side scripting) y por supuesto, para las conexiones con una diversidad bases de datos.. pero PHP se adapta muy bien con el servidor HTTP Apache -de uso casi generalizado- y viene ahora completamente integrado con él, como podrá&amp;nbsp;fácilmente&amp;nbsp;comprobar al revisar los miles de servicios hosting website y webservers que se promocionan por la red (y actualmente a costos bastante acequibles que incluso pueden ser menores US$5.00 mensuales, y en muchos casos &lt;b&gt;Unlimited storage, unmetered transfer, and of course.. Unlimited domains.&lt;/b&gt;) ..pero el mundo Java no solo va asociado al mundo Web, con él pueden hacerse desde simples hasta complejos sistemas de escritorio, y con una perfomance comparable a la del lenguaje C, y por supuesto que con ella podemos desarrollar de todo: aplicaciones de escritorio, proyectos WEB, para moviles, y realmente para todo lo que se pueda conectar y/o asociar a una computadora... es un lenguaje muy potente, y su curva de aprendizaje no es tan sencilla, pero si usted estimado amigo lector ya ha llegado hasta etapa de nuestros codelabs (y se ha tomado la molestia de instalarlos, ejecutarlos y llegado a comprender), pues ya habra notado y convencido que mucho de lo que es desarrollo Web es como manejar una serie de multiples "paquetes" en diversos lenguajes y bajo determinados formatos y convenciones, que ya varios de ellos ya están desarrollados y listos para su uso... un ejemplo básico para nuestro caso es el manejo del formato JSON, que como han podido comprobar, las librerías que utilizamos para PHP ya estan hechas y solo las utilizamos -o cuando utilizamos widgets, iframes, etc.-... pues lo mismo sucede con el mundo Java... y lo mismo tambien con el mundo Python asociado a Google AppEngine.. conociendo y manejando los "paquetes" o modelos &amp;nbsp;importantes que manejan cada de los entornos de desarrollo &amp;nbsp;indicados, pues ya podemos por ejemplo conectarnos a cualquier base de datos.. y mostrarlos, como es nuestro caso, en cualquier pagina Web, y utilizando el framework ExtJs con que hemos venido trabajando en nuestros codelabs.y proyectos personales. claro que con otros framework tambien se puede llegar a lo mismo, pero la facilidad que pueda uilizar un mismo framework para todos los ambientes que menciono (back-end PHP+MySQL, Java+MySQL, Python+GAE (Google AppEngine), e incluso el "modernísimo" node-js/V8, que es Javascript pero para manejo por el lado del servidor, pues eso aún solo lo he comprobado con ExtJs.. aunando a lo anterior la posibilidad de integrarnos&amp;nbsp;también&amp;nbsp;a desarrollos para móviles vía el SDK de Sencha Touch...&lt;br /&gt;
&lt;br /&gt;
Pero mejor no nos desviemos del tema... estamos ahora frente al Back-End Java+MySQL, y su manejo no es por supuesto igual al de los servidores HTTP Apache que hemos venido utilizando.. para utilizar Java para aplicaciones Web tenemos que instalar un servidor de aplicaciones, y como todo en el mundo de desarrollo Web existen varias opciones para ello, pero la más difundida y utilizada es el servidor Tomcat que es un servidor Web con soporte a objetos servlets y JSP, y que ha sido desarrollado por supuesto en Java e incluye el compilador Jasper, que compila JSPs convirtiéndolas en servlets... vale decir, hablar de Tomcat es hablar de un contenedor de servlets denominado&amp;nbsp;&lt;b&gt;catalina&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;&lt;b&gt;1er paso:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;Instalar Nuestro Servidor Tomcat&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
(Nota : recomendamos lea primero completamente los dos primeros pasos y luego recien proceda a realizar las instalaciones que correspondan)&lt;br /&gt;
&lt;br /&gt;
lo primero que debemos de tener en cuenta es que un servidor Apache Tomcat o jakarta Tomcat (como tambien suelen llamarlo), no es lo mismo que nuestro servidor HTTP Apache que hemos venido trabajando.. Tomcat es tambien un servidor Web y al instalarlo al igual que tenemos una carpeta "www", con Tomcat tendremos una carpeta "ROOT" contenido dentro de otra denominada "webapps" donde podremos poner nuestros archivos con extensión "jsp", los que serán interpretados y lanzados a nuestro navegador de preferencia (o por defecto).. pero para nosotros desarrolladores como ya debemos tener instalado un servidor HTTP Apache en el puerto 80, pues la instalación de Apache Tomcat la tendremos que hacer sobre otro puerto para evitar conflictos (uno recomendable puede ser 8080, 8090, etc. o realmente el que queramos pero que no sea utilizada por alguna otra opción o servicio web, proxy, etc; incluyendo por supuesto los puertos que utilizaremos con nuestro launcher de Google AppEngine (GAE).&lt;br /&gt;
&lt;br /&gt;
Instalar Tomcat es realmente como instalar Apache con Appserv u otro similar (Wamp, Xamp, etc); pero es imprescindible indicar que primero debe haberse instalado el JDK de Java, para ello puede resultar conveniente revisar primero esta tabla requerimientos de JDK dependiendo de nuestra version Tomcat: &lt;a href="http://tomcat.apache.org/whichversion.html" target="_blank"&gt;http://tomcat.apache.org/whichversion.html&lt;/a&gt;, como siempre podemos trabajar con las ultimas versiones las que como podeis ver ya son bastante estables: Otra cosa que debemos de tener en cuenta es que al instalar, Tomcat a diferencia de HTTP Apache, el servicio no se carga en automático, excepto lo hayamos configurado expresamente para ello, por eso, concluída la instalación del servidor el primer paso imprescindible seleccionar en "Todos los programas", la opción Apache Tomcat, configurar Tomcat, y arrancar el servidor; y configurarlo en "automatico" si deseamos que siempre se cargue al inciar nuestro sistema operativo...&lt;br /&gt;
&lt;br /&gt;
y bueno, el proyecto sdsimple me funciona sin mayores problemas utilizando la version 6.x de Tomcat, y el JDK version 1.5 de Java, pero pueden probar versiones superiores y no debería haber problemas... ahora para instalar Tomcat sobre window puede tener algunas cosas (como tambien las tiene sobre Linux y Unix, pues varias cosas se tienen que ingresar comandos de consola, especialmente para dar atrbutos a nuestras carpetas y desempaquetar los archivos tar requeridos),..pero realmente trabajar sobre Linux tiene sus ventajas respecto a la perfomance de nuestro servidor Web, realmente es más rapido, lo que es conveniente si lo vamos&amp;nbsp;a utilizar en un ambiente de producción por supuesto; pero si vamos a hacer nuestras pruebas, y siendo a este nivel indiferente que trabajemos sobre Linux o Windows, entonces les paso un enlace de como hacer la instalación sobre Window7, que como es característico Microsoft siempre pone algunas restricciones de "seguridad" que debemos de tomar en cuenta.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://profesor.antonio.com.mx/?p=129" target="_blank"&gt;http://profesor.antonio.com.mx/?p=129&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Solo basta reiterar que no utilicemos para la instalación el puerto 80 que probablemente la estemos utilizando para nuestro servidor HTTP Apache, ni tampoco del 20 al 25 /FTP y otros), ni 1433 no 3306 (de SqlServer y MySQL respectivamente); podemos utilizar&amp;nbsp; puertos mayores a 8000 por poner un ejemplo, ó de 5 digitos que tambien puede hacerse, tamién pueden utilizar un &lt;a href="http://www.internautas.org/w-scanonline.php" target="_blank"&gt;scaner de puertos&lt;/a&gt; on-line si tienen dudas que algunos puertos puedan estan siendo utilizados, es decir, si tienen varias cosas instaladas en su equipo que requieran conexiones a puertos... asimismo, es conveniente tener presente que tanto el JDK como nuestro Tomcat esten instalados sobre una carpeta raiz de alguna de nuestras unidades de disco, pues hay varias cosas del mundo Java que pueden configurarse directamente sobre archivos especificos (server.xml, context.xml, user.xml, etc por ejemplo), y es necesario que estos se encuentren fácilmente identificables y accesibles...&lt;br /&gt;
&lt;br /&gt;
Cabe tambien indicarles que un servidor Tomcat es en varios aspectos mucho mas flexible que un servidor HTTP Apache, en el sentido por ejemplo que no necesariamente un "proyecto" deba estar grabado en la carpeta ROOT (equivalente a nuestra carpeta "www" que hemos venido trabajando); e inclusive es factible configurar a Tomcat para que directamente llamando a http://localhost/myproject por ejemplo (y este sea un proyecto JSP-Java, este corra automáticamente sin indicar el puerto de escucha al que ha sido direccionado nuestro servidor Tomcat... esto por supuesto es muy util y necesario si nuestro servidor Web es un servidor de producción, pero como no es nuestro caso no ahondaremos sobre las diferentes opciones de configuración que puede brindarnos un servidor Tomcat, que realmente son interesantes pero basta por el momento que sepamos que aún trabajando con un servidor HTTP Apache y un servidor Tomcat en forma simultanea, es posible que dentro de un ambiente intranet tengan acceso a nuestra aplicación ingresando directamente la IP de nuestro servidor y el nombre de nuestra aplicación: por ejemplo 192.1681.100/myproject;  (o tambien el nombre de nuestro dominio interno configurado); y en el caso de un ambiente internet, indicando nuestro dominio y la aplicación, como por ejemplo: www.mydominio.com/myproject; no importando en ningun caso las indicaciones respecto al puerto que utilicemos y donde se encuentre grabada la carpeta que contiene a nuestro proyecto.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;&lt;b&gt;2do. paso:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;Instalar Netbeans y trabajar con Apache Tomcat.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Cabe mencionar tambien que cuando instale por primera vez Netbeans (que es un IDE bastante eficiente para realizar nuestros desarrollos sean estos Java, PHP, Phyton, C++ o Groovy, etc.), este solo incluía un servidor de aplicaciones llamado Glassfish (similar al Tomcat), y que luego había que indicarle que trabajase también con Tomcat; pero observo como una agradable sorpresa que ahora Netbeans 7 incluye como servidores tanto a Glassfish 3.x como Tomcat 7.0.x; y que incluso es posible instalar todo el paquete (Netbeans, los servidores Glassfish y Tomcat y el JDK de Java en un unico paquete, como cuando instalamos Appserv o Xamp -pero con el adicional de tener un IDE completamente integrado y listo para su uso en nuestros proyectos... estas son ventajas del desarrollo opensource y de la vigencia y actividad de esta plataforma que podemos disfrutar ahora.. como siempre, mi única recomendación al respecto es que hagamos toda la instalación en una carpeta directamente en la raíz de una de las unidades de disco de nuestro ordenador (para facilitar la identificación y ubicación de los componentes del servidor).&lt;br /&gt;
&lt;br /&gt;
Download Netbeans :&amp;nbsp;&lt;a href="http://netbeans.org/downloads/"&gt;http://netbeans.org/downloads/&lt;/a&gt;&lt;br /&gt;
(elegir la opcion JavaEE ó All, o sigamos este enlace para descargar el&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Verdana, 'Verdana CE', Arial, 'Arial CE', 'Lucida Grande CE', lucida, 'Helvetica CE', sans-serif; font-size: 11px;"&gt;&lt;a href="http://java.sun.com/javase/downloads/netbeans.html" style="background-color: #cae8ed; color: #1e2a60; text-decoration: underline;" target="_blank"&gt;JDK de Java junto con el IDE NetBeans en un solo paquete&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Verdana, 'Verdana CE', Arial, 'Arial CE', 'Lucida Grande CE', lucida, 'Helvetica CE', sans-serif; font-size: 11px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
pero antes la aclaración a una pregunta importate... &lt;b&gt;Porque utilizar un IDE como Netbeans, Eclipse u otro asociado al mundo Java? ..y porque Netbeans en particular?&lt;/b&gt; ...no pretendo dar una explicación de las ventajas de trabajar con un IDE en paticular porque eso creo que depende bastante de la pericia y experiencia del programador con uno u otro entorno de desarrollo... pero trabajar en Java con un IDE especializado es particularmente util porque nos facilita herramientas para la manipulación, modificación, mejora y/o adición de nuevas opciones a nuestros proyectos (especialmente si son proyectos "grandes")... y la idea con el proyecto sdsimple es que dispongamos de él para que lo adaptemos y mejoremos de acuerdo a nuestras necesidades... pues planteado así, Netbeans nos permite "cargar" directamente las "fuentes" liberadas de sdsimple a un "proyecto Netbeans", y luego utilizando las pantallas de edición de sus componentes nos facilitará su revisión, depuración y adecuación; pero sobre todo, para ejecutar el proyecto (y lanzarlo a nuestro navegador de preferencia), sencillamente debemos seleccionar nuestro proyecto e indicar la opción Run y listo.. si todo esta correcto el proyecto se lanzara a nuestro navegador... y si nuestro servidor fuera de producción internamente el IDE hace las configuraciones necesarias y nuestro proyecto podrá ser accesible directamente desde el navegador de preferencia de los "usuarios" que accesen a nuestro proyecto , ya sea a nivel intranet o internet... y eso si es para tomar en cuenta..&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;&lt;b&gt;3er. paso:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;Hablemos sobre Java y como trabaja...&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Como ya les indique anteriormente, el mundo Java tiene una curva de aprendizaje algo mas compleja que HTML, Javascript, PHP, etc. (y bastante similar a Phyton, esto por supuesto si queremos llegar a dominar todas sus posibilidades), pero no perdamos animos por ello, solo miremos a este entorno de desarrollo como uno de los "paquete" asociados al mundo de Desarrollo Web que podemos incluso integrar a nuestros proyectos, y poco a poco, y con la experiencia que ya debemos haber desarrollado al haber investigado y hacer uso de HTML, CSS, Javascript, PHP, las API de Google, de Facebook, de Twitter, etc.. pues mas pronto que tarde se despejarán todas nuestras dudas e incomprensiones.. debiendo tener presente primordialmente que, como en el caso de PHP, para tener acceso a los comandos e instrucciones de dicho lenguaje utilizabamos las etiquetas del tipo : &lt;b&gt;"&amp;lt;?php -my-codePHP- ?&amp;gt;"&lt;/b&gt;, pues ahora con Java, en nuestros archivos JSP, para hacer referencia a nuestros codigos y variables utilizamos la etiqueta &lt;b&gt;&amp;lt;% --my-codeJava-- %&amp;gt;&lt;/b&gt; ..y con eso creo ya estamos listos para empezar nuestras investigaciones respecto a este entorno "profesional" de desarrollo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;Nuestro Hello World en Java?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;% out.println("Hola mundo"); %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This is my first test&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
..observan mucha diferencia a nuestro Hello World de nuestro servidor HTTP Apache? ..pues realmente no (excepto que hemos colocado nuestra "Hola Mundo" dentro de las etiquetas &amp;lt;% %&amp;gt; que indica que lo contenido es un código Java, y el servidor así lo interpreta, ejecuta y mostrará en nuestro navegador) .. solo basta grabar este código en un archivo tipo texto con el nombre &lt;b&gt;prueba.jsp&lt;/b&gt;, y ejecutarlo en nuestro servidor Tomcat, una vez lo tengamos instalado y puesto en servicio por supuesto, digitando en la barra de direcciones de nuestro navegador de preferencia : &lt;b&gt;http://localhost:8090/prueba.jsp, &lt;/b&gt;(nótese que indicamos el puerto con que hemos configurado a nuestro Tomcat al realizar nuestra instalación; y tambien por supuesto, debe resultarnos claro que ya todo lo que manejamos con HTML, CSS, e incluso con Javascript, también lo podremos usar en el mundo Java.. algo similar es con el "mundo Phyton",..y también con el mundo "Microsoft" (que plantea el uso de otro tipo de servidores -el IIS- y otro lenguaje por el back-end -ASP.Net en este caso- y que detallo por cuanto hemos tomado conocimiento del lanzamiento de WebMatrix 2.0 beta, un entorno de desarrollo que junta diversas herramientas opensource y de Microsoft para hacer desarrollos Web que involucra las herramientas mencionadas, y otras todas integradas con HTML, CSS, Javascript e incluso PHP, lo que le permite el manejo e instalación de varios proyectos sociales tambien opensource muy conocidos como Wordpress, Drupal, Joomla, etc.. incluye su propio editor y "lanzador" de aplicaciones (de una manera similar al "launcher" de Appengine), así que tenemos otro entorno de desarrollo por revisar...&lt;br /&gt;
&lt;br /&gt;
Volviendo a nuestro tema, vale destacar que por supuesto esto es solo el principio, pero con este sencillo ejercicio "Hola Mundo" creo que podemos llegar a tener una idea real de como funciona Java en nuestros desarrollos Web, el resto es hacer nuestras pruebas e investigaciones personales, y para ello les presento este link de un curso bastante completo e interesante de Java EE hecho por Abraham Otero, del portal&amp;nbsp; Javahispano.org; el cual además de mostrarnos todo lo básico de desarrollo Web (como es el manejo de HTML y CSS), pues nos detalla todos los secretos de Java de manera bastante práctica, y no dudo que comprensible para todos los interesados... de hecho, no solo detalla los "secretos" de Java sino que nos explica y muestra porque resulta recomendable trabajar con el IDE Netbeans para facilitar nuestros desarrollos en esta plataforma -y las que soporte Netbeans-, utiliza videos bastante apropiados, y esta en español... tal vez el único "inconveniente" es que los videos estan colgados en Parleys.com (que es una plataforma e-learning free asociada a Adobe), pero para optimizar el uso de esta plataforma basta con que instalemos "Parleys Desktop" (que instala un SDK y baja los videos a nuestro ordenador, y agiliza la presentación y calidad de ejecución de los mismos), para ello revise el &lt;b&gt;"Home"&lt;/b&gt; de la pantalla de Parleys cuando accedamos a los enlaces de video indicados; lo que le permitirá también revisar con mas detalle&amp;nbsp; y dar una mirada a otros videos y cursos de Javahispano.org,&amp;nbsp; y tambien de otros expositores disponibles en esta plataforma&lt;br /&gt;
&lt;br /&gt;
Curso Basico de JavaEE :&amp;nbsp;&lt;a href="http://www.javahispano.org/articulos/JavaEE.pdf" target="_blank"&gt;http://www.javahispano.org/articulos/JavaEE.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;&lt;b&gt;4to. paso&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;Instalar el proyecto sdsimple en nuestro servidor local...&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
A este punto creo que el post ha resultado mas grande de lo que imaginaba para detallar como empezar a Instalar el proyecto sdsimple en nuestro propio servidor local, por ello creo que mejor vale indicar los puntos de Java y Netbeans que debemos tener presente para facilitar la comprensión del modelo planteado por el proyecto sdsimple.. y por supuesto, el detalle de la instalación la propocionaremos en nuestro siguiente post...&lt;br /&gt;
&lt;br /&gt;
...empecemos con armar nuestro primer proyecto Web con Netbeans... es realmente sencillo...&lt;br /&gt;
&lt;br /&gt;
si ya hemos instalado nuestro servidor Tomcat y Netbeans con cualquiera de las formas antes indicadas, solo basta que elijamos la opción &lt;b&gt;File&lt;/b&gt;, &lt;b&gt;New Project&lt;/b&gt; y en la pantalla de indicación de proyectos nuevos verifiquemos que esten seleccionados &lt;b&gt;Java Web&lt;/b&gt; y &lt;b&gt;Web Application&lt;/b&gt;, y luego elijamos &lt;b&gt;Next&lt;/b&gt; (hay unos ejemplos alli que podremos revisar también); luego la pantalla nos solicitará el nombre y la ubicación de nuestro proyecto (por defecto una carpeta de Mis Documentos en Windows), podemos indicarle un nombre apropiado como "myHello" así como cualquier carpeta, lo más adecuado a nuestros intereses... el resto de opciones de esta pantalla las podemos dejar como están...&lt;br /&gt;
&lt;br /&gt;
Luego pasamos a la configuración de nuestro servidor, y allí indicamos que utilizaremos Tomcat (si hubiésemos instalado Glassfish aparecerá esa opción por defecto); la versión de JavaEE indicada la dejamos por defecto, y podemos cambiar el &lt;b&gt;Context Path&lt;/b&gt; a uno adecuado ("myHello" en este caso para referirnos al nombre de nuestro proyecto), teniendo presente que ese nombre es que corresponde al que utilizaremos como dirección en nuestros navegadores.. y con toda esta información nuestro proyecto "vacío" será creado..&amp;nbsp; Netbeans creará nuestro proyecto con todas las carpetas MVC requeridas para un proyecto Java Web, y asimismo observaremos al archivo &lt;b&gt;index.jsp&lt;/b&gt; creado por defecto que solo tiene en HTML el mensaje "Hello World"...&lt;br /&gt;
&lt;br /&gt;
Revisemos con detalle alguna de las carpetas creadas por el Netbeans, especalmente los archivos contenidos en WEB-INF (web.xml), y META-INF (context.xml); que han sido creadas con lo indicado al "armar" nuestro proyecto y que vamos a tener que utilizar y manipular cuando carguemos al proyecto sdsimple... y listo.. seleccionemos nuestro proyecto, botón derecho del mouse e indiquemos &lt;b&gt;Run&lt;/b&gt;.. Netbeans procederá a construir y lanzar nuestro proyecto a nuestro navegador de preferencia y allí debe aparecer nuestro Hello World... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;Instalando nuestros proyectos Integracion Google 1ra y 2da parte en Netbeans:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Aun cuando nuestros proyectos Integración Google &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" target="_blank"&gt;1ra.&lt;/a&gt; y &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="_blank"&gt;2da.&lt;/a&gt; parte son desarrollados exclusivamente con HTML y Javascript (recuerde que ExtJs es un framework de Javascript), puede cargarse estos trabajos como proyectos del Netbeans pero acondicionando su presentación para que respete la distribución de archivos convencional de un proyecto &lt;b&gt;"Java Web"&lt;/b&gt;... y las condiciones son faciles de implementar, y se resumen en este caso en crear una carpeta "web" que contenga todo nuestro proyecto ( no se estamos utilizando ningún código Java que efectúe alguna operación por el lado del servidor), y asimismo que dentro de esta carpeta pondremos nuestra versión "liviana" del framework (carpeta Ext-3.4.0 en este caso); y además 02 carpetas denominadas META-INF y WEB-INF, quienes alojarán a los archivos "context.xml" y "web.xml" respectivamente (y en donde se indicará el nombre de nuestro "context-path" y archivo de arranque del proyecto, que en este caso es &lt;b&gt;index.html&lt;/b&gt;)...&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;&lt;b&gt;Material de Apoyo :&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d; font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9R0zfbQHqoEZDEzYzNhMmMtZDhjMS00NzI1LWI5MjMtMTI5ZDgwYjAwNDQy&amp;amp;hl=es" imageanchor="1" style="clear: left; margin-bottom: 1em;" target="_blank"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Myy7SL10ikw/TEpPyRXUXSI/AAAAAAAAAPY/VU3kj0U7bdg/s200/disk.png" style="cursor: hand; cursor: pointer; float: left; height: 12px; margin: 05px 15px 0px 0px; width: 12;" /&gt;&lt;/a&gt;&lt;b&gt;IntGoogle-01.rar,&lt;/b&gt; que nos muestra Visualizaciones Google sobre ExtJs (la versión Ext-3.4.0 en este caso) correpondiente a dicho codelab, ahora adecuados a un formato "Java Web" para poder cargarlos como un proyecto de Netbeans. Puede revisar nuestra entrada&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html"&gt; Integracion Google 1ra parte&lt;/a&gt; para mayores detalles.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9R0zfbQHqoEZDNiZjI3NjEtMDFmZi00MjU1LWFmZGItOTA3MWMwNjhmYmVk&amp;amp;hl=es" imageanchor="1" style="clear: left; margin-bottom: 1em;" target="_blank"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Myy7SL10ikw/TEpPyRXUXSI/AAAAAAAAAPY/VU3kj0U7bdg/s200/disk.png" style="cursor: hand; cursor: pointer; float: left; height: 12px; margin: 05px 15px 0px 0px; width: 12;" /&gt;&lt;/a&gt;&lt;b&gt;IntGoogle-02.rar,&lt;/b&gt; que nos muestra Visualizaciones Google y ExtJs de nuestro documento "Spreadsheet Productos":&amp;nbsp;correspondiente a dicho codelab&amp;nbsp;(adjuntamos&amp;nbsp;también&amp;nbsp;nuestro modelo de hoja de calculo en formato xls para que puedan realizar pruebas con un documento propio, cargando este archivo a Google Docs)... Puede revisar nuestro codelab &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html"&gt;Integracion Google 2da. parte&lt;/a&gt; para mayores detalles.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 10px; line-height: 16px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Pasos para realizar el Codelab..&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Descargados estos proyectos en la carpeta de proyectos de Netbeans (en Mis Documentos en caso de Windows, u en otra crapeta que creamos conveniente), hay que cargar estos proyectos a Netbeans; para ello, debemos seleccionar la opción &lt;b&gt;File&lt;/b&gt;, &lt;b&gt;New Project&lt;/b&gt;; y en ella debemos seleccionar &lt;b&gt;Java Web&lt;/b&gt; y &lt;b&gt;Web Application with Existing Sources&lt;/b&gt;; luego al seleccionar &lt;b&gt;Next&lt;/b&gt;, se nos indicará que ingresemos la carpeta que contiene nuestro proyecto (&lt;span class="Apple-style-span" style="color: blue;"&gt;Int-Google01&lt;/span&gt; por ejemplo), y al seleccionarla, Netbeans nos pondrá como nombre de nuestro proyecto y su ubicación las de nuestra fuente que estemos cargando, pero que podemos cambiar si estimamos necesario (no en este caso); luego indicando &lt;b&gt;Next&lt;/b&gt; nuevamente, Netbeans nos pedirá los datos de configuración del proyecto, el servidor a utilizar (Tomcat en este caso), la versión de JavaEE (que dejaremos la indicaba pues no estamos utilizando Java en este caso); y nuestro "Context-Path", que tendrá el nombre del proyecto que estemos cargando...y al indicar &lt;b&gt;Next&lt;/b&gt; nuevamente, ahora Netbeans nos solicitará la configuración de nuestro "codigo fuente", vale decir, la ubicación de nuestra carpeta web que debe aparecer ya predeterminada  (sino debemos ubicarla y seleccionarla), la ruta de nuestra carpeta WEB-INF, que tambien debería aparecer ya predeterminada, sino habra que realizar el mismo proceso indicado.. y listo; en este caso, al ser nuestro proyecto exclusivamente un proyecto "web" (y que no contiene nada de código Java), no es necesario indicar librerías complementarias ni otros datos, luego entonces al indicar &lt;b&gt;"finish"&lt;/b&gt;, Netbeans creará nuestro proyecto con una estructura similar al de nuestro primer proyecto... luego solo basta seleccionar al proyecto, hacer click derecho con el mouse y seleccionar &lt;b&gt;Run&lt;/b&gt;, y Netbeans construirá y lanzará nuestro proyecto a nuestro navegador de preferencia...

Debemos hacer lo mismo con nuestro proyecto &lt;span class="Apple-style-span" style="color: blue;"&gt;Int-Google02&lt;/span&gt;, y con esto veremos corriendo nuestros ejercicios&amp;nbsp;&amp;nbsp;(si han seguido todos los pasos de nuestro proyecto),&amp;nbsp;&amp;nbsp;hasta en 03 plataformas distintas: sobre un servidor HTTP Apache, sobre AppEngine, y ahora sobre un servidor Apache Tomcat; y con lo que podemos sacar como una clara conclusión que dentro del mundo Web no hay problemas de compatibilidad si trabajamos con sus elementos básicos:&amp;nbsp;refiriéndonos&amp;nbsp;a HTML, CSS y Javascript, y de manera simultanea, ahora ya tenemos mas claro como cargar proyectos a Netbeans con "códigos existentes".. que es el caso del proyecto sdsimple...&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;Nota Importante:&lt;/span&gt;&lt;/b&gt; No realizamos lo mismo con nuestro proyecto &lt;a href="http://mlaynessanchez.blogspot.com/2011/04/integracion-google-3ra-parte.html" target="_blank"&gt;Integración Google 3ra. parte&lt;/a&gt;, que describe un modelo CRUD de una tabla utilizando como Back-End PHP y la base de datos MySQL. En este caso no existe ningún problema respecto a trabajar y manejar la base de datos MySQL - y cualquier otra, como PostgresSQL, SQL Server, Oracle, Acces, etc.- el problema esta por el lado del lenguaje que utilizamos para "comunicarnos" con ella, que en este caso es PHP; pues Tomcat no viene configurado para trabajar con PHP por defecto, es un servidor de servlets y compilador JSP, pero vale mencionar que si es posible hacer que Tomcat reconozca PHP, pero hay que configurar al servidor para que lo haga ( y eso escapa los alcances de este codelab ), pero es bueno tenerlo en cuenta si se nos presenta el caso de proyectos que involucren códigos java, y soluciones y códigos PHP... pues ya debimos habernos dado cuenta que en el mundo Web todo se puede configurar, interconectar y utilizar de alguna u otra manera..&lt;br /&gt;
&lt;br /&gt;
Asimismo cabe destacar que, usualmente los proyectos Java Web se inician con un archivo &lt;b&gt;"index.jsp"&lt;/b&gt; (y que por supuesto, probablemente debe y puede contener códigos y variables java; pero en este caso, como hemos indicado, no estamos tocando nada de ese entorno por el lado del back-end, y en el caso de nuestro codelab &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="_blank"&gt;Integracion Google 2da. parte&lt;/a&gt;, pues nuestro "back-end" es una hoja de cálculo de Google Docs que es externa a nuestro entorno de Desarrollo, y nos estamos conectando a ella de manera independiente utilizando únicamente código javascript (el API Ajax Javascript de Google para ser mas exactos, cuya biblioteca resumen de aplicaciones podemos consultar en el llamado &lt;a href="http://code.google.com/apis/ajax/playground/" target="_blank"&gt;Google Palyground&lt;/a&gt;); y es así como también podemos trabajar en nuestros proyectos personales... conectando nuestros aplicativos a bases de datos externas grabadas en la nube (internet), sean propias o de terceros que nos proporcionen un API de conexión y enlace, o también conectandonos a otros equipos en forma remota, para lo que debemos tener nuestro correspondiente usuario y password de acceso con los derechos necesarios, &amp;nbsp;utilizando internet por supuesto...&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Saludos&lt;br /&gt;
@Mlaynes&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href="https://www.facebook.com/topic.php?topic=442&amp;amp;uid=111876182184074"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 5px 0px 0px; text-align: left; width: 40px;" /&gt;Opina en nuestro foro §FB..!&lt;/a&gt;&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;
&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2011/09/using-back-end-javamysql-el-proyecto.html" num_posts="20" width="475"&gt;&lt;/fb:comments&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-1762309203303289577?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vAmsGq6-7sO9Wb9nBg85rcIg05M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vAmsGq6-7sO9Wb9nBg85rcIg05M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vAmsGq6-7sO9Wb9nBg85rcIg05M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vAmsGq6-7sO9Wb9nBg85rcIg05M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/OwzBfhBhY4Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/1762309203303289577/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2011/09/using-back-end-javamysql-el-proyecto.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/1762309203303289577?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/1762309203303289577?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/OwzBfhBhY4Q/using-back-end-javamysql-el-proyecto.html" title="Using the Back-End Java+MySQL: El proyecto sdsimple" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-cwVvwtBnWyk/TnqibMXkyMI/AAAAAAAABD4/lgmB_tcON0k/s72-c/tomcat-power.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2011/09/using-back-end-javamysql-el-proyecto.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8NRnw5cSp7ImA9WhdUFU0.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-8263314742378102621</id><published>2011-04-24T11:21:00.000-07:00</published><updated>2011-10-01T15:41:37.229-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T15:41:37.229-07:00</app:edited><title>Integracion a Google (3ra parte)</title><content type="html">&lt;div id="talerta"&gt;
&lt;/div&gt;
&lt;div id="talerta1"&gt;
&lt;/div&gt;
&lt;div id="alerta"&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id="alerta1"&gt;
Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;
&lt;a href="http://www.appservnetwork.com/modules.php?name=Content&amp;amp;pa=showpage&amp;amp;pid=7" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://1.bp.blogspot.com/-re88-tApkyc/TXae1WEXz7I/AAAAAAAAA6E/lItb0N8EAPI/s1600/Back-End%2BPHP-MySQL.JPG" style="cursor: hand; cursor: pointer; float: left; height: 120px; margin: 22px 15px 0px 0px; width: 140px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
...y continuando con el entorno del Back-End PHP+MySQL pasamos a mostrar nuestro modelo de visualizaciones Google y ExtJs mostrado en nuestros codelabs Integracion Google 1ra y 2da parte, pero utilizando una base de datos llamada IGCodelab creada sobre MySQL (cuyo archivo IGCodelab.sql si proporcionamos en esta oportunidad para facilitar el desarrollo del ejercicio), y en la que la&amp;nbsp;respectiva Tabla de Usuarios tiene registrados nuestro &lt;span class="notranslate"&gt;&lt;b&gt;username&lt;/b&gt;&lt;/span&gt;&amp;nbsp;y &lt;span class="notranslate"&gt;&lt;b&gt;password&lt;/b&gt;&lt;/span&gt; de acceso al Modulo (puede probar con &lt;span class="notranslate"&gt;&lt;b&gt;prueba&lt;/b&gt;&lt;/span&gt; y &lt;span class="notranslate"&gt;&lt;b&gt;prueba&lt;/b&gt;&lt;/span&gt;, o &lt;span class="notranslate"&gt;&lt;b&gt;passer&lt;/b&gt;&lt;/span&gt; y &lt;span class="notranslate"&gt;&lt;b&gt;passer&lt;/b&gt;&lt;/span&gt;), entonces, y solo así, podremos acceder a las opciones de nuestro &lt;span class="notranslate"&gt;&lt;b&gt;TreePanel&lt;/b&gt;&lt;/span&gt; que muestra ls diversas opciones de visualizacion utilizando las API de Google y de ExtJS que henos preparado, y creo suficientes para observar el potencial de ExtJS integrado a Google para el desarrollo de aplicaciones reales, y que incluye el manejo de Wizard cuyo modelo básico fue desarrollado en un &lt;a href="http://www.quizzpot.com/2010/10/creando-un-wizard/" target="_blank"&gt;tutorial del Quizzpot&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Con que contamos en estos momentos?&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
Si siguieron el desarrollo de nuestros codelabs desde el inicio, y por supuesto los anteriores respecto al Back-End PHP-MySQL, ya deben tener instalado en sus ordenadores un servidor de pruebas Apache con PHP+MySQL, y PHPMyAdmin (para administrar nuestras bases de datos), por lo que solo basta que verifiquen que tengan completo acceso a MySQL a través de PHPMyAdmin, accediendo a la misma y poder observar las tablas de la base de datos Tutorial creada en el ejercicio anterioir... y bueno, ahora nuevamente ya estamos listos para empezar nuestro codelab.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d; font-size: large;"&gt;Audiencia&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Se recomienda que, para entender este codelab, tengamos los suficientes conocimientos de ExtJs y desarrollo Web (HTML, Javascript ...y algo de &lt;b&gt;PHP&lt;/b&gt; (que si no dominamos o desconocemos, pues no debería preocuparnos tanto puesto que en este modelo solo se utilizan instrucciones fáciles de comprender y su sintaxis es bastante sencilla, además que si nuestro interes va por el empleo de este Back-End, debe ser un buen motivo para empezar a explorar este lenguaje).&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
Asimismo se recomienda haber leído y probado: &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" target="_blank"&gt;Integracion a Google (1ra parte)&lt;/a&gt; e &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="_blank"&gt;Integración a Google (2da parte)&lt;/a&gt;, especialmente para comprender las herramientas utilizadas para integrar de las API de Google a ExtJs (y viceversa), que en este caso no se emplean pero se hacen referencia.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;a href="https://docs.google.com/leaf?id=0B9R0zfbQHqoEMmE4ZGIzY2UtZjRlMC00MDI0LWEyNmMtNDgyNzE2NDMwODU4&amp;amp;hl=es" target="_blank"&gt;Material de Apoyo&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Descomprimir el material de apoyo en una carpeta de &lt;b&gt;www&lt;/b&gt; de nuestro servidor local AppServ u otro compatible Apache-PHP-MySQL, y se creara la carpeta &lt;b&gt;"Int-Google03"&lt;/b&gt; que contiene los archivos correspondientes al presente codelab (si no entiende este paso favor consulte &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/por-donde-empezar.html" target="_blank"&gt;"empezando desde cero'&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Pasos para ejecutar el Codelab...&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Para ejecutar el tutorial debemos primero debe realizar lo siguiente:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Crear la base de datos &lt;span class="notranslate"&gt;&lt;b&gt;IGCodelab&lt;/b&gt;&lt;/span&gt;. Esta base de datos contiene las tablas &lt;span class="notranslate"&gt;drivers, productos y usuarios&lt;/span&gt; que son las necesarias para ejecutar el codelab (utilice el archivo &lt;b&gt;igcodelab.sql&lt;/b&gt; que incluimos en el material de apoyo).&lt;/li&gt;
&lt;li&gt;Creada nuestra base de datos, puede observar que la tabla usuarios tiene registrado los usuarios &lt;span class="notranslate"&gt;&lt;b&gt;prueba&lt;/b&gt;&lt;/span&gt; y &lt;span class="notranslate"&gt;&lt;b&gt;passer&lt;/b&gt;&lt;/span&gt; con la que podremos acceder al Modulo.&lt;/li&gt;
&lt;li&gt;Con nuestro &lt;b&gt;explorador&lt;/b&gt; debemos ingresar a la carpeta &lt;b&gt;"Int-Google03"&lt;/b&gt; creada en la carpeta &lt;b&gt;www&lt;/b&gt; del Appserv, y alli "editar" el archivo &lt;b&gt;"drivers.php"&lt;/b&gt;. Este archivo en sus primeras lineas tiene en su inicio las intrucciones de conexion a nuestra base de datos:&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
// Database connection information&lt;br /&gt;
$host = "localhost";          // Host name&lt;br /&gt;
$user = "root";          // User default for MySQL access&lt;br /&gt;
$pwd  = "..yourPassword..";  // put your PHPMyAdmin Password&lt;br /&gt;
$db   = "igcodelab";          // Our Database of exercise&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;En ella debemos modificar los parametros &lt;b&gt;$user&lt;/b&gt; (si nuestro usuario de ingreso no es root sino otro personalizado); y &lt;b&gt;$pwd&lt;/b&gt;, donde debemos poner nuestro Password de conexion a MySQL (el que utilizamos para nuestro PHPMyAdmin); en &lt;b&gt;$db&lt;/b&gt; va el nombre nuestra base de datos (si no corresponde a &lt;span class="notranslate"&gt;&lt;b&gt;"igcodelab"&lt;/b&gt;&lt;/span&gt; como se indica debemos cambiarlo a como corresponda); y finalmente debemos tener en cuenta que si nuestra prueba la realizamos directamente en un servicio hosting externo con dominio propio, entonces en &lt;b&gt;$host&lt;/b&gt;, en lugar de &lt;b&gt;localhost&lt;/b&gt; debemos colocar nuestra direccion web correspondiente: &lt;b&gt;www.mydominio.com&lt;/b&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;..y ahora nuevamente ya estamos listo para ejecutar nuestro ejercicio...!&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
Ahora, si con nuestro navegador ingresamos a &lt;b&gt;"localhost"&lt;/b&gt;, y luego al ingresar a la carpeta a carpeta&amp;nbsp;&lt;b&gt;"Int-Google03"&lt;/b&gt;&amp;nbsp; siguiendo la ruta donde hayamos descargado el material de apoyo (pero que debe dentro de la carpeta www de AppServ); pues al ingresar esta carpeta que contiene a nuestro archivo index.html, deberá aparecer una pantalla como la que se muestra a continuación:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-RrIlpeVbPmE/TbRwCdNKRaI/AAAAAAAAA7k/a-Ojr109av0/s1600/Int-Google03a.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-RrIlpeVbPmE/TbRwCdNKRaI/AAAAAAAAA7k/a-Ojr109av0/s1600/Int-Google03a.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Esto nos indica que nuestra descarga y copia ha sido correcta, y ya estamos listos para revisar el material de apoyo descargado y descubrir como hemos desarrollado nuestro codelab de Integracion Google empleando Wizards y Visualizaciones desarrollados con la API de Google y ExtJs.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-31ywBUl6Exo/TbRwVc8CimI/AAAAAAAAA7s/0u4BcFctvHk/s1600/Int-Google03b.JPG" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-31ywBUl6Exo/TbRwVc8CimI/AAAAAAAAA7s/0u4BcFctvHk/s1600/Int-Google03b.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;Nota.-&lt;/b&gt; si no aparece la primera pagina mostrada es probable que no hayamos descargado nuestra version completa o "liviana"de ExtJs en la carpeta "www", como mostramos en "&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/el-potencial-de-extjs.html" target="_blank"&gt;el potencial de ExtJs&lt;/a&gt;"; o tal vez, estemos usando una versión de ExtJs diferente de la indicada en nuestro archivo HTML (..ahora estamos usando la versión ext-3.3.1 vigente al 01/03/2011). Observe la ruta rerlativa a &lt;b&gt;www&lt;/b&gt; que utilizamos para acceder dichos archivos "../../extjs/extjs-3.1.1" en este caso (que indica 2 carpetas sobre nuestra descarga del tutorial). Efectúe los cambios de la ruta necesarios en el archivo &lt;b&gt;index.html&lt;/b&gt; del tutorial y pruebe nuevamente hasta que aparezca la pantalla indicada.&lt;br /&gt;
&lt;br /&gt;
La segunda imagen nos muestra nuestro modelo de Pantalla de Acceso o &lt;span class="notranslate"&gt;Login&lt;/span&gt;, la cual en su parte inicial, al seleccionar el drivers de nuestra conexion, al mismo tiempo verifica la conexion a nuestra base de datos (si no aparece la opcion MySQL es porque aún cuando nuestra configuración de ExtJs es correcta, nuestra conexion a nuestra base de datos MySQL no lo es, y debemos revisar los parametros indicados de nuestro archivo &lt;span class="notranslate"&gt;&lt;b&gt;drivers.php&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Asimismo, si no nos aparece nada, o al ingresar nuestros datos de acceso no se activa nuestro treePanel, o si la consola de nuestro browser nos muestra mensajes de problemas de conexion a la base de datos o conexion a MySQL, pues debemos revisar con mas detalle nuestra configuración y observar si los datos indicados han sido correctamente ingresados...&lt;/div&gt;
&lt;br /&gt;
../ Continua&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Saludos&lt;br /&gt;
@Mlaynes&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href="javascript:void(rut_facebook_20());"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 5px 0px 0px; text-align: left; width: 40px;" /&gt;Opina en nuestro foro §FB..!&lt;/a&gt;&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2011/04/integracion-google-3ra-parte.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-8263314742378102621?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/s2DJ788_uUp8_nyHRwgol_2wIQY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s2DJ788_uUp8_nyHRwgol_2wIQY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/s2DJ788_uUp8_nyHRwgol_2wIQY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s2DJ788_uUp8_nyHRwgol_2wIQY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/65CWXPOh4Vw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/8263314742378102621/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2011/04/integracion-google-3ra-parte.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/8263314742378102621?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/8263314742378102621?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/65CWXPOh4Vw/integracion-google-3ra-parte.html" title="Integracion a Google (3ra parte)" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-re88-tApkyc/TXae1WEXz7I/AAAAAAAAA6E/lItb0N8EAPI/s72-c/Back-End%2BPHP-MySQL.JPG" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Ayacucho, Lima, Perú</georss:featurename><georss:point>-12.131390006248221 -76.99435472488403</georss:point><georss:box>-12.133330506248221 -76.99682222488403 -12.129449506248221 -76.99188722488404</georss:box><feedburner:origLink>http://mlaynessanchez.blogspot.com/2011/04/integracion-google-3ra-parte.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8MQXs4eSp7ImA9WhdUFU0.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-6913892482410064261</id><published>2011-03-10T11:52:00.000-08:00</published><updated>2011-10-01T15:41:20.531-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T15:41:20.531-07:00</app:edited><title>Using the Back-End PHP+MySQL ( Wizard &amp; Safety themes )</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;&lt;a href="http://www.appservnetwork.com/" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://1.bp.blogspot.com/-re88-tApkyc/TXae1WEXz7I/AAAAAAAAA6E/lItb0N8EAPI/s1600/Back-End%2BPHP-MySQL.JPG" style="cursor: hand; cursor: pointer; float: left; height: 120px; margin: 22px 15px 0px 0px; width: 140px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;...y continuando con el entorno del Back-End PHP+MySQL pasamos a mostrar el mismo modelo de la &lt;a href="http://mlaynessanchez.blogspot.com/2011/03/using-back-end-phpmysql-introduccion.html" target="_blank"&gt;entrada anterior&lt;/a&gt; que nos muestra un mantenimiento basico de Tablas (Altas, Bajas,&amp;nbsp;Modificación, Consulta e Impresion); pero en este caso mostrando previamente una pantalla de acceso o Wizard, mediante el cual, de habernos registrado previamente en una respectiva Tabla de Usuarios (en donde debe estar registrados nuestro &lt;span class="notranslate"&gt;&lt;b&gt;username&lt;/b&gt;&lt;/span&gt;&amp;nbsp;y su respactivo &lt;span class="notranslate"&gt;&lt;b&gt;password&lt;/b&gt;&lt;/span&gt; de acceso al Modulo), entonces, y solo así, podremos acceder a nuestro GridEditor que nos muestra una lista de Presidentes de U.S.A y los partidos a los que pertenecen...&lt;br /&gt;
&lt;br /&gt;
El hecho de utilizar &lt;span class="notranslate"&gt;&lt;b&gt;Wizards&lt;/b&gt;&lt;/span&gt; o Pantallas de Acceso a nuestros modulos o sistemas, va asociado de manera ineludible a temas de seguridad por lo que debemos empezar a tomar en cuenta las siguientes consideraciones:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;u&gt;&lt;b&gt;No debe permitirse el "acceso directo" a nuestras paginas&lt;/b&gt;&lt;/u&gt;, en este caso a nuestro modelo "grideditor" de presidentes, vale decir que si alguien obtuviese la direccion URL de nuestro&amp;nbsp;GridEditor (como debe ser con cualquier otra pagina de nuestros sistemas), estos no deben poder acceder a ellas, sino que deberán ser redirigidos a la Pantalla de Acceso de nuestro modulo o sistema, y acceder a nuestras opciones solo si hubiesen sido debidamente registrados.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Debe asimismo tomarse en cuenta acciones de&amp;nbsp;&lt;u&gt;&lt;b&gt;Auditoria de Datos&lt;/b&gt;&lt;/u&gt;, es decir, que&amp;nbsp;deberíamos&amp;nbsp;a empezar a registrar en una Tabla de diseño adecuado, todas las operaciones que estan efectuando nuestros usuarios (Alta, Baja, Modificacion, Consulta, y su fecha y hora de operación), y así poder hacer un seguimiento de ellas (este tema no forma parte del presente "codelab" pero lo mencionamos para su consideración)&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Debe tambien tomarse en cuenta una &lt;b&gt;&lt;u&gt;Validacion de Datos&lt;/u&gt;&lt;/b&gt; pensando en el &amp;nbsp;funcionamiento del sistema (no solo en las condiciones estáticas de las mismas); es decir por ejemplo, si en nuestro ejercicio se quisiera eliminar un partido poltico (que trabaja en este caso como una Tabla de Datos), primero se debe verificar si no esta siendo utilizada en la tabla de Presidentes (que para los efectos expuestos trabaja en este caso como si se tratase de una Tabla de Transacciones); de no hacerlo así y se procediera a borrar un partido que esta siendo utilizado.. sencillamente los presidentes que pertenecen a dicho partido "desaparecerían" de nuestra Vista (por la condicion Where del Query), y eso seria&amp;nbsp;erróneo. pues la data&amp;nbsp;seguiría&amp;nbsp;grabada en nuestra base de datos pero no se mostraría (la &amp;nbsp;codificación&amp;nbsp;del presente codelab tampoco contempla lo indicado,&amp;nbsp;pero&amp;nbsp;también&amp;nbsp;reiteramos que debe tenerse en cuenta.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;y finalmente, debe tomarse en cuenta&amp;nbsp;&lt;u&gt;&lt;b&gt;temas de seguridad de la WEB&lt;/b&gt;&lt;/u&gt; y evitar la acción de virus y hackers... PHP nos presenta varias opciones y temas de seguridad que debemos empezar a revisar y considerar para nuestros proyectos, y para lo cual detallaremos algunas referencias tecnicas que esperamos que con su aporte se puedan mejorar aún mas, por cuanto, en lo que respecta a estos temas en particular, los diversos software de desarrollo &amp;nbsp;permanentemente presentan mejoras en sus formas y opciones... y en lo que respecta a este "codelab", hemos considerado un Modelo Básico pero bastante practico, el cual esperamos &amp;nbsp;mejorar aun mas para cuando presentemos nuestro modelo de Integracion a Google utilizando el manejo de las API de visualizaciones.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Con que contamos en estos momentos?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Si siguieron el desarrollo de nuestros codelabs desde el inicio, y por supuesto el anterior respecto al Back-End PHP-MySQL, ya deben tener instalado en sus ordenadores un servidor de pruebas Apache con PHP+MySQL, y PHPMyAdmin (para administrar nuestras bases de datos), por lo que solo basta que verifiquen que tengan completo acceso a MySQL a través de PHPMyAdmin, accediendo a la misma y poder observar las tablas de la base de datos Tutorial creada en el ejercicio anterioir... y bueno, ahora nuevamente ya estamos listos para empezar nuestro codelab.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d; font-size: large;"&gt;Audiencia&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Se recomienda que, para entender este codelab, tengamos los suficientes conocimientos de ExtJs y desarrollo Web (HTML, Javascript ...y algo de &lt;b&gt;PHP&lt;/b&gt; (que si no dominamos o desconocemos, pues no debería preocuparnos tanto puesto que en este modelo solo se utilizan instrucciones fáciles de comprender y su sintaxis es bastante sencilla, además que si nuestro interes va por el empleo de este Back-End, debe ser un buen motivo para empezar a explorar este lenguaje).&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
Asimismo se recomienda haber leído y probado: &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" target="_blank"&gt;Integracion a Google (1ra parte)&lt;/a&gt; e &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="_blank"&gt;Integración a Google (2da parte)&lt;/a&gt;, especialmente para comprender las herramientas utilizadas para integrar de las API de Google a ExtJs (y viceversa), que en este caso no se emplean pero se hacen referencia.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;a href="https://docs.google.com/leaf?id=0B9R0zfbQHqoEOWYyOGE3MTMtMTlkMy00ZTZjLWE3MDMtNzMyNGY1MTRmN2I3&amp;amp;hl=es" target="_blank"&gt;Material de Apoyo&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Descomprimir el material de apoyo en una carpeta de &lt;b&gt;www&lt;/b&gt; de nuestro servidor local AppServ u otro compatible Apache-PHP-MySQL, y se creara la carpeta &lt;b&gt;"Wizard-sample"&lt;/b&gt; que contiene los archivos correspondientes al presente codelab (si no entiende este paso favor consulte &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/por-donde-empezar.html" target="_blank"&gt;"empezando desde cero'&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Pasos para ejecutar el Codelab...&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Para ejecutar el tutorial debemos primero debe realizar lo siguiente:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Crear en nuestra base de datos TUTORIAL la tabla &lt;span class="notranslate"&gt;&lt;b&gt;usuarios&lt;/b&gt;&lt;/span&gt;. Esta base de datos fue creada en el ejercicio anterior (importada de pdts_usa.sql), y en esta oportunidad no les proporcionamos un archivo para su creación con el objeto que sean creadas directamente utilizando nuestro PHPMyAdmin o DBManager. Los requisitos de nuestra tabla de usuarios es que tenga definido como mínimo los siguientes campos: &lt;b&gt;ID&lt;/b&gt; : Int(10), primary_key, auto_increment y unique; el campo&amp;nbsp;&lt;span class="notranslate"&gt;&lt;b&gt;usuario&lt;/b&gt;&lt;/span&gt;: varchar(15), y el campo&amp;nbsp;&lt;span class="notranslate"&gt;&lt;b&gt;password:&lt;/b&gt;&lt;/span&gt; varchar(15); adicionalmente podemos crear otros campos de diferentes tipo como Apellidos completos -o separado Paterno, Materno- Nombre completo, e-mail, telefono fijo, móvil, id_skype, direccion, o cualquier forma de contactar con nuestros usuarios, etc.. siempre dependiendo de los requerimientos de diseño de nuestro modulo o sistema ( &lt;u&gt;los tres primeros campos deben tener exactamente ese nombre&lt;/u&gt; -respetando minusculas y mayusculas para mejor identificacion- caso contrario, debemos cambiar la respectiva codificación en nuestro archivo &lt;b&gt;index.php&lt;/b&gt; que controla el acceso a nuestro ejercicio).&lt;/li&gt;
&lt;li&gt;Creada nuestra tabla usuarios, pues ahora debemos registrar 2 o mas usuarios para hacer nuestras pruebas; puede ser uno llamado &lt;b&gt;prueba&lt;/b&gt; con nombre &lt;b&gt;prueba&lt;/b&gt; y password &lt;b&gt;prueba&lt;/b&gt; (para hacer mas facil nuestro ingreso de datos), o como sea de nuestro agrado.&lt;/li&gt;
&lt;li&gt;Con nuestro &lt;b&gt;explorador&lt;/b&gt; debemos ingresar a la carpeta &lt;b&gt;"Wizard-sample"&lt;/b&gt; creada en la carpeta &lt;b&gt;www&lt;/b&gt; del Appserv, y alli "editar" el archivo &lt;b&gt;"index.php"&lt;/b&gt;. Este archivo en sus primeras lineas tiene en su inicio las intrucciones de conexion a nuestra base de datos:&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
// Database connection information&lt;br /&gt;
$host = "localhost";          // Host name&lt;br /&gt;
$user = "root";          // User default for MySQL access&lt;br /&gt;
$pwd  = "..yourPassword..";  // put your PHPMyAdmin Password&lt;br /&gt;
$db   = "tutorial";          // Our Database of exercise&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;En ella debemos modificar los parametros &lt;b&gt;$user&lt;/b&gt; (si nuestro usuario de ingreso no es root sino otro personalizado); y &lt;b&gt;$pwd&lt;/b&gt;, donde debemos poner nuestro Password de conexion a MySQL (el que utilizamos para nuestro PHPMyAdmin); en &lt;b&gt;$db&lt;/b&gt; va el nombre nuestra base de datos (si no corresponde a &lt;span class="notranslate"&gt;&lt;b&gt;"tutorial"&lt;/b&gt;&lt;/span&gt; como se indica debemos cambiarlo); y finalmente debemos tener en cuenta que si nuestra prueba la realizamos directamente en un servicio hosting externo con dominio propio, entonces en &lt;b&gt;$host&lt;/b&gt;, en lugar de &lt;b&gt;localhost&lt;/b&gt; debemos colocar nuestra direccion web correspondiente: &lt;b&gt;www.mydominio.com&lt;/b&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;..y ahora nuevamente ya estamos listo para ejecutar nuestro ejercicio...!&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;Ahora, si con nuestro navegador ingresamos a &lt;b&gt;"localhost"&lt;/b&gt;, y luego al ingresar a la carpeta a carpeta&amp;nbsp;&lt;b&gt;"Wizard-sample"&lt;/b&gt;&amp;nbsp; siguiendo la ruta donde hayamos descargado el material de apoyo (pero que debe dentro de la carpeta www de AppServ); pues al ingresar esta carpeta que contiene a nuestro archivo index.html, deberá aparecer una pantalla como la que se muestra a continuación:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-WN7-rm9Cl0Q/TXqu84bt4gI/AAAAAAAAA6k/KivdQe9Rn7o/s1600/Wizard-sample.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-WN7-rm9Cl0Q/TXqu84bt4gI/AAAAAAAAA6k/KivdQe9Rn7o/s1600/Wizard-sample.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Esto nos indica que nuestra descarga y copia ha sido correcta, y ya estamos listos para revisar el material de apoyo descargado y descubrir como hemos desarrollado nuestro Wizards de conexion a nuestra aplicacion descrita en el post anterior, correspondiente a un Modelo Basico de mantenimiento de Tablas con opciones de Alta, Baja, Modificacion, Consulta, Impresion, Busquedas, etc, bajo un formato clasico.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://nicolas.bize.free.fr/ext/tutorial/Tutorial%20Part%2012/index.html" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-KBCJWefiM7w/TXjVeCp_1bI/AAAAAAAAA6c/gmjI4tVivIA/s1600/Back-End%2BPHP%2BMySQL.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;Nota.-&lt;/b&gt; si no aparece la primera pagina mostrada es probable que no hayamos descargado nuestra version completa o "liviana"de ExtJs en la carpeta "www", como mostramos en "&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/el-potencial-de-extjs.html" target="_blank"&gt;el potencial de ExtJs&lt;/a&gt;"; o tal vez, estemos usando una versión de ExtJs diferente de la indicada en nuestro archivo HTML (..ahora estamos usando la versión ext-3.3.1 vigente al 01/03/2011). Observe la ruta rerlativa a &lt;b&gt;www&lt;/b&gt; que utilizamos para acceder dichos archivos "../../extjs/extjs-3.1.1" en este caso (que indica 2 carpetas sobre nuestra descarga del tutorial). Efectúe los cambios de la ruta necesarios en el archivo &lt;b&gt;index.html&lt;/b&gt; del tutorial y pruebe nuevamente hasta que aparezca nuestra pantalla de acceso.&lt;br /&gt;
&lt;br /&gt;
La segunda imagen nos muestra nuestro modelo de mantenimiento de una tabla desarrollado en el post anterior, si hacemos click sobre dicha imagen nos remitirá a la pagina indicada en la web oficial de ExtJs para la demostracion, pero en nuestro aplicativo, en el toolbar le hemos agregado un boton adicional para salir del Modulo (y que nos redirigirá a nuestra pantalla inicial de acceso); asimismo vale indicar que nuestras pruebas las debemos realizar sobre nuestro servidor local ( &lt;a href="htpp://localhost" target="_blank"&gt;htpp://localhost&lt;/a&gt; ), pues en este caso se&amp;nbsp;trata&amp;nbsp;de&amp;nbsp;una version mejorada como indicamos.&lt;br /&gt;
&lt;br /&gt;
Asimismo, si al ingresar nuestros datos definidos en la tabla usuarios no aparece nuestra pantalla de mantenimiento del ejercicio anterior, y nuestro browser nos muestra mensajes de problemas de conexion a la base de datos o conexion a MySQL, pues debemos revisar con mas detalle si nuestra tabla usuarios ha sido correctamente creada y definida, y si los datos de acceso registrados en ella son a su vez tambien correctamente ingresados...&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Detalle del Modulo.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Al revisar los archivos desempaquetados de nuestro Material de Apoyo encontraremos los siguientes archivos:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Readme.txt&lt;/b&gt;, donde encontraremos informacion respecto a este tutorial y los foros que nos sirvieron de apoyo y referencia para desarrollar este ejercicio.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;pdts_usa.sql&lt;/b&gt;, archivo tipo texto en formato de lenguaje SQL con que se crearon &amp;nbsp;las tablas &lt;span class="notranslate"&gt;&lt;b&gt;presidents&lt;/b&gt;&lt;/span&gt; y &lt;span class="notranslate"&gt;&lt;b&gt;parties &lt;/b&gt;&lt;/span&gt;&amp;nbsp;de nuestra base de datos&lt;b&gt; tutorial&lt;/b&gt; (la ponemos de referencia, pues como indicamos antes, nuetra tabla de usuarios requerida para este ejercicio deberá ser creada directamente con PHPMyAdmin o DBManager de nuestro servidor MySQL).&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;database.php&lt;/b&gt;, archivo de tipo texto en formato de lenguaje PHP con el cual actua del lado del servidor para interactuar con nuestra base de datos, en ella hemos comentado las partes que corresponden a la carga de datos de acceso a nuestra base de datos, así como las funciones&amp;nbsp;correspondiente&amp;nbsp;a cada caso como es la actualizacion, creación, borrado, busqueda e impresion de nuestra &lt;span class="notranslate"&gt;data&lt;/span&gt;; las formas de este codigo puede ser facilmente comprendido y ajustado anuestros desarrollos propios.&lt;br /&gt;
Se presenta asimismo las funciones getlist() y getparties() que son las ejecutan nuestras consultas de las tablas MySQL, habiendose comentado las adiciones efectuadas por el caso de efectuar "Conteo de Paginas" y "Busquedas rapidas".&lt;br /&gt;
Se presenta asimismo a las funciones JEncode y codeDate, la primera para llamar a las funciones standard de codificacion del formato Json, y la segunda para el tratamiento de los campos tipo fecha al formato mm/dd/yyyy empleado en el GridEditor de presidentes de nuestro ejercicio..&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JSON.php&lt;/b&gt;, archivo de tipo texto en formato PHP que es una libreria clasica de PHP para el manejo del formato JSON con el que se trabaja las base de datos y tablas de MySQL (y que  siempre debemos utilizar en nuestros proyectos que trabajemos con MySQL)&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Index.php&lt;/b&gt;, archivo de tipo texto en formato PHP, HTML y Javascript debidamente etiquetados por cada grupo de codificación. Este archivo es de&amp;nbsp;ejecución&amp;nbsp;automatica y en ella se define nuestra pantalla de acceso al Modulo, y la correspondiente consulta a nuestra tabla de usuarios respecto a que si los datos ingresados (nombre y password), son correctos y corresponden a los registrados en nuestra tabla &lt;span class="notranslate"&gt;&lt;b&gt;usuarios&lt;/b&gt;&lt;/span&gt;, lo que permitira el acceso a nuestro GridEditor de presidentes.&lt;br /&gt;
&lt;br /&gt;
Las instrucciones de contacto vía mail y redireccionamiento a nuestra &lt;span class="notranslate"&gt;Fan Page Facebook&lt;/span&gt; son detallados en nuestro post referido a&amp;nbsp;técnicas&amp;nbsp;de &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/localizacion-e-internacionalizacion-de.html" target="_blank"&gt;Localización e Internacionalizacion&lt;/a&gt;. (y  próximamente a este &lt;b&gt;codelab&lt;/b&gt; le agregaremos también la técnica de traduccion automatiza del &lt;span class="notranslate"&gt;API Language&lt;/span&gt; de Google, conforme al lenguaje de nuestro navegador, para completar el manejo del referido tema).&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Grid-PHP-MySQL.php,&lt;/b&gt; en formato PHP y HTML en donde la parte PHP del mismo realiza el control de acceso a nuestra aplicación (para evitar los "accesos" directos sin haber utilizado el Wizard), y asimismo, la parte HTML indica las directivas de inicio de nuestro ejercicio para la importacion de las librerias de ExtJS y las de nuestro ejercicio.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;presidentslist.html&lt;/b&gt;, archivo en formato HTML que nos muestra una Tabla, la cual se genera al ejecutar la opcion impresion de nuestro ejercicio: luego en las instrucciones de nuestro archivo database.php podrá observar la&amp;nbsp;técnica&amp;nbsp;de como se manda a imprimir dicho documento.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;mainscript.js&lt;/b&gt;, archivo en formato ExtJs debidamente empaquetado utilizando namespace, que nos muestra las funciones e instrucciones ExtJs que permiten el funcionamiento de las opciones de Actualizacion, Creacion, Modificacion, Consulta, Impresion y Busqueda, entre otras opciones, de nuestra aplicacion de mantenimiento (no varia del codelab anterior).&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;searchfield.js&lt;/b&gt;, archivo en formato ExtJs que exclusivamente contiene las funciones que nos muestran el recuadro de Busqueda Rapida de nuestro codelab anterioir (no varía).&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;style.css&lt;/b&gt;, archivo en formato CSS que permite la llamada a las imagenes que utilizaremos en los botones de acceso a las opciones de nuestro ejercicio mostradas en la barra superior de nuestra ventana (toolbar) de nuestra aplicacion de mantenimiento (no varía del codelab anterior).&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;carpetas &lt;span class="notranslate"&gt;icons&lt;/span&gt; e &lt;span class="notranslate"&gt;images&lt;/span&gt;&lt;/b&gt;, la primera contiene el icons mostrado en la pestaña de nuestro navegador; y el segundo, las imagenes jpg personales utilizadas en el ejercicio y los dos estilos de celdas que hemos presentado en este caso para mejorar la presentación de las celdas del Grid. No varía del codelab anterior.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;APUNTES TECNICOS&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Si ya han probado con exito nuestro pantalla de acceso a nuestro modelo básico de mantenimiento de Tablas, al revisar los archivos del ejercicio debe tenerse presente lo siguiente :&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Si revisan el codigo de &lt;b&gt;Index.php&lt;/b&gt;&amp;nbsp;observarán que como herramienta de "control" de nuestros accesos utilizamos las "cookies", en la cual grabamos la informacion necesaria para verificar que &amp;nbsp;nuestro usuario ha utilizado el Wizard de acceso de nuestro ejercicio; reiteramos que este se trata de un modelo basico y que en este caso solo pregunta si nuestra cookie del nombre esta vacia, y por supuesto que nuestra logica de verificacion puede y debe ser mejorado (como adicionando la verificacion de nuestro usuario y password de acceso, o verificando y poniendo un limite al tiempo trascurrido desde nuestra &amp;nbsp;ultima operacion para evitar que las cookies grabadas en nuestros ordenadores y no borradas al salir cerrando nuestro navegador pues sean mal utilizadas, entre otros posibles casos).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Si hemos salido correctamente de nuestro modelo de mantenimiento, y digitasemos en la barra de direcciones nuestro navegador la direccion exacta de nuestro modelo http://localhost/tutorial/Wizard-samples/Grid-PHP-MySQL.php para nuestro caso, nos remitirá a nuestra pantalla de acceso (porque las cookies estan vacias), de ingresar al modulo es porque las cookies no han sido borradas al salir directamente al cerrar el browser.&lt;/li&gt;
&lt;li&gt;Nuestro modelo nos muestra que podemos utilzar todas las cookies que querramos y asimismo, que nuestros passwords, como cualquier otro dato, pueden ser encriptados y desencriptados con el objeto que terceros no "vean" y utilicen indebidamente nuestros datos utilizando para ello las instrucciones:&lt;br /&gt;
&lt;b&gt;&amp;nbsp;$pwd = base64_encode($pwd);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;en index.php&lt;br /&gt;
$my_pwd = base64_decode($pwd);&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;en database.php&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Resulta interesante asimismo, observar con la opcion "Inspeccionar Elemento" del navegador Google Chrome (opcion del boton derecho del mouse sobre nuestra pantalla del browser), y con el Firebug de Mozila Firefox (que debe ser instalado como un plug-in de dicho navegador, y es el utilizado en los videos tutoriales del Quizzpot), pues que los recursos de nuestras paginas web (la pantalla de acceso y la de nuestra pantalla de mantenimiento para este codelab) no nuestran los codigos PHP en la parte "cliente" de nuestros navegadores (revise opcion recursos de nuestra pagina web al Inspeccionar elemento con Google Chrome o Firebug de Firefox, cuando esten cargadas), y con esto nos estamos asegurando que los datos de informacion de acceso a nuestro servidor HTTP no se muestran a los usuarios (refiriendonos a los que hemos escritos al inicio de index.php), pero sería mas interesante que efectuesemos nuevas pruebas con capturadores de paginas web (con herramientas como&amp;nbsp;HTTrack,&amp;nbsp;WebRipper o el mismo Dreamweaver, entre otros), para que observemos que archivos y que informacion &amp;nbsp;pueden bajar y utilizar terceros no autorizados por nosotros.&lt;/li&gt;
&lt;li&gt;Con la misma herramienta podemos revisar las &lt;span class="notranslate"&gt;&lt;b&gt;cookies&lt;/b&gt;&lt;/span&gt; de nuestro modelo y verificar que nuestras contraseñas se encuentran encriptadas y no disponibles para terceros, quedando pendiente revisar diversas tecnicas de encriptacion disponibles para dicha función, así como otras opciones del propio PHP.(como el uso de sesiones, que son como las &lt;span class="notranslate"&gt;&lt;b&gt;cookies&lt;/b&gt;&lt;/span&gt; pero por el lado del servidor y totalmente invisibles a los usuarios o clientes).&lt;/li&gt;
&lt;li&gt;Cabe resaltar asimismo que este modelo de codificacion no es muy recomendada por no mantener el criterio de separar nuestras validaciones (archivos PHP) de nuestros form (HTML y Javascript), o  seguir un modelo de desarrollo MVC (Models, Views, Controlers), que en desarrollos grandes nos facilitarían bastante el desarrollo por componentes trabajando en equipo, mejorando así la comprensión y mantenimiento de los mismos; &amp;nbsp;pero este modelo que presentamos es muy practico y nos permite comprender espero facilmente toda la logica planteada con muy pocos archivos, y por eso nuestra elección para utilizarlo en este codelab.&lt;/li&gt;
&lt;li&gt;Ponemos a su consideración las siguientes direcciones:&lt;br /&gt;
&lt;br /&gt;
1.&amp;nbsp;Pagina del &lt;a href="http://foros.cristalab.com/script-de-login-php-con-mysql-t2025/" target="_blank"&gt;foro de www.cristalab.com&lt;/a&gt; que sirvió de base para este modelo, entrada antigua pero que aun mantiene vigencia y que en sus comentarios muestra enlaces a temas de seguridad muy importantes (agradecimiento a &lt;span class="Apple-style-span" style="color: blue;"&gt;azelito&lt;/span&gt;, usuario de dicho foro).&lt;br /&gt;
2.&amp;nbsp;Pagina de &lt;a href="http://blogdephp.com/php-login/" target="_blank"&gt;Blogdephp.com&lt;/a&gt; que nos muestra un login a MySQL empleando empleando el modelo MVC, y que utiliza el &lt;span class="notranslate"&gt;framework&lt;/span&gt; codeigniter para PHP (que es bastante utilizado comercialmente), y cuya presentacion en el &lt;a href="http://www.cristalab.com/tutoriales/como-hacer-un-login-de-usuarios-en-php-c95129l/" target="_blank"&gt;foro&lt;/a&gt; de Cristalab.fue motivo de comentarios apasionados pero interesantes que finalmente nos pueden ayudar a mejorar nuestros codigos.&lt;br /&gt;
3.&amp;nbsp;..y no olvidemos revisar las opciones de manejo de las &lt;span class="notranslate"&gt;&lt;b&gt;cookies&lt;/b&gt;&lt;/span&gt; y de las &lt;b&gt;&lt;b&gt;sesiones &lt;/b&gt;&lt;/b&gt;en PHP, que sin dudar son interesantes para mejorar la seguridad de nuestras desarrollos y proyectos.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Espero que estos dos últimos &lt;b&gt;codelab&lt;/b&gt; de introduccion al manejo del entorno del Back-End PHP-MySQL sea suficiente para completar y entender su forma básica de funcionamiento, y nos animemos a hacer nuestras propias investigaciones y pruebas sobre este entorno de uso tan difundido.. especialmente ahora que los servicios de Hosting PHP+MySQL externos se muestran tan accesibles a nivel de costos (..desde US$20.00 anuales), e ilimitados respecto a los tamaños, velocidad y nivel de transferencia de datos que nos proporcionan, vale decir, que nos permitirían llevar todos nuestros requerimientos de base de datos y aplicativos a la web (&lt;span class="notranslate"&gt;cloud computing&lt;/span&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Saludos&lt;br /&gt;
@Mlaynes&lt;/div&gt;&lt;br /&gt;
&lt;a href="javascript:void(rut_facebook_20());" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 5px 0px 0px; text-align: left; width: 40px;" /&gt;Opina en nuestro foro §FB..!&lt;/a&gt;&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2011/03/using-back-end-phpmysql-wizard-safety.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-6913892482410064261?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tDUx54inp1rbRCTi_5xtSYQXpP4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tDUx54inp1rbRCTi_5xtSYQXpP4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tDUx54inp1rbRCTi_5xtSYQXpP4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tDUx54inp1rbRCTi_5xtSYQXpP4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/GY4BO1ir1NY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/6913892482410064261/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2011/03/using-back-end-phpmysql-wizard-safety.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/6913892482410064261?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/6913892482410064261?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/GY4BO1ir1NY/using-back-end-phpmysql-wizard-safety.html" title="Using the Back-End PHP+MySQL ( Wizard &amp; Safety themes )" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-re88-tApkyc/TXae1WEXz7I/AAAAAAAAA6E/lItb0N8EAPI/s72-c/Back-End%2BPHP-MySQL.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2011/03/using-back-end-phpmysql-wizard-safety.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8AQ3czfyp7ImA9WhdUFU0.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-1425355286680514633</id><published>2011-03-08T21:55:00.000-08:00</published><updated>2011-10-01T15:40:42.987-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T15:40:42.987-07:00</app:edited><title>Using the Back-End PHP+MySQL ( Getting Started )</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;&lt;a href="http://www.appservnetwork.com/" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://1.bp.blogspot.com/-re88-tApkyc/TXae1WEXz7I/AAAAAAAAA6E/lItb0N8EAPI/s1600/Back-End%2BPHP-MySQL.JPG" style="cursor: hand; cursor: pointer; float: left; height: 120px; margin: 22px 15px 0px 0px; width: 140px;" /&gt;&lt;/a&gt;&lt;br /&gt;
y bueno amigos, ya estamos en el momento en que debemos empezar a experimentar con el Back-End PHP-MySQL (que viene integrado y listo para utilizar con AppServ u otras herramientas similares que tenga integrado un servidor Apache con PHP y la Base de Datos MySQL).&lt;br /&gt;
&lt;br /&gt;
Recordemos que al instalar AppServ, e ingresar con nuestro navegador a &lt;a href="http://localhost/" target="_blank"&gt;&lt;b&gt;http://localhost&lt;/b&gt;&lt;/a&gt;, nuestro navegador nos muestra una &lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S5qAcbuXu6I/AAAAAAAAAEo/RIP3ZbCjSo4/s1600-h/ServidorHTTP.PNG" target="_blank"&gt;pantalla de Bienvenida&lt;/a&gt; que entre otros enlaces, nos permite ingresar a &lt;b&gt;PHPMyAdmin&lt;/b&gt;, y al enlace de Configuracion de nuestro servicio PHP instalado en nuestro servidor de pruebas (todo ya viene integrado al servidor Apache), ..y ahora es el momento de empezar a comprenderlos y utilizarlos.. para lo cual debemos tener en cuenta lo indicado a continuacion:&lt;br /&gt;
&lt;div&gt;&lt;ul&gt;&lt;li&gt;Para ingresar a &lt;b&gt;PHPMyAdmin&lt;/b&gt; usualmente el usuario de ingreso es &lt;b&gt;"root"&lt;/b&gt;, y la clave de acceso corresponde a la clave que utilizamos al instalar &lt;b&gt;AppServ&lt;/b&gt; (si no pusimos clave alguna, nuestra clave de acceso sera una cadena vacia). Alli debemos a experimentar para crear nuestras propias bases de datos y tablas, y a practicar nuestro lenguaje SQL.&lt;br /&gt;
Si no recuerda su clave de phpMyAdmin (que realmente es de MySQL), puede utilizar las opciones &lt;span class="notranslate"&gt;Reset MySQL Root Password&lt;/span&gt; y &lt;span class="notranslate"&gt;MySQL Command Line Client&lt;/span&gt;, ambas en la opcion Appserv de Menu Inicio (Windows); la primera es para registrar un nuevo password para MySQL, y la segunda para verificar rápidamente si la clave es correcta (realmente me resulta mas conveniente trabajar MySQL con phpMyAdmin o DBManager, y no directamente desde la linea de comandos, esto especialmente si trabajamos con otros servidores de aplicaciones como Tomcat o GlassFish)&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;La configuracion por defecto de PHP de los servidores locales AppServ y otros, es que los archivos &lt;b&gt;"index"&lt;/b&gt; con extension &lt;b&gt;"php"&lt;/b&gt; y &lt;b&gt;"html"&lt;/b&gt; sean de ejecucion automatica; pero esto a veces no es así, y cuando trabajamos con servidores o hosting externos (como con &amp;nbsp;www.x10hosting.com por ejemplo), donde a veces solo los archivos &lt;b&gt;index.php&lt;/b&gt; son de ejecucion automatica, pero esto no debe incomodarnos, por cuanto esa opcion es configurable (a traves del enlace de configuracion de PHP, que es bastante complejo pero con ayuda de algunos tutoriales puestos en la web -y que algunos indicamos en nuestro post &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/por-donde-empezar.html" target="_blank"&gt;empezando desde cero&lt;/a&gt;- pues, ya podemos ir cambiando algunas cosas, pero si no podemos asi, pues tampoco nos preocupemos, puesto que PHP esta integrado a los lenguajes scripting instalados en nuestro servidor, y a HTML por supuesto; entonces, basta que renombremos nuestro archivo &lt;b&gt;index.html&lt;/b&gt; por &lt;b&gt;index.php&lt;/b&gt; ..y listo.. esto ocurre por cuanto el &lt;b&gt;compilador PHP&lt;/b&gt; reconocerá las etiquetas html y aun siendo un archivo &lt;b&gt;"php"&lt;/b&gt;, sencillamente ejecutara &lt;b&gt;html&amp;nbsp;&lt;/b&gt;...interesante no?&lt;/li&gt;
&lt;li&gt;...y ahora empezaremos a manejar hasta 03 lenguajes en forma simultanea y interrelacionada: HTML, PHP y Javascript (ExtJs es una libreria Javascript). PHP nos permitira trabajar del lado del servidor (principalmente a conectarnos y trabajar con nuestras bases de datos, aunque todo lo podriamos hacer con PHP si quisieramos); y luego con HTML y Javascript -y con la importante ayuda de ExtJs- nos manejaremos nuestras pantallas y presentaciones de nuestro navegador, en la que interactuaran nuestros usuarios..&lt;/li&gt;
&lt;li&gt;Este manejo de lenguajes que ahora se ha convertido en lo basico en lo que corresponde al mundo de desarrollo Web, esta siendo revolucionado con el &lt;u&gt;ingreso de Javascript al lado del servidor&lt;/u&gt; (con n&lt;b&gt;ode.js&lt;/b&gt; y el &lt;b&gt;motor de desarrollo V8&lt;/b&gt;, cuyo perfomance y versatibilidad son realmente sorprendentes.. asi que anímense y continuen con la investigacion y desarrollo de estos lenguajes que serán muy importantes en el futuro.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Con que contamos en estos momentos?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Si siguieron el desarrollo de los codelabs desde el inicio, ya deben tener instalado su servidor de pruebas Apache+PHP+MySQL, y PHPMyAdmin (para administrar nuestras bases de datos), por lo que solo basta que verifiquen que tengan completo acceso a MySQL a través de PHPMyAdmin -pruebe con crear alguna base de datos de prueba y algunas tablas para que verifiquen su funcionamiento, asi como hacer algunas consultas SQL de prueba.. si ese es el caso, ya estamos listos para empezar nuestro codelab.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d; font-size: large;"&gt;Audiencia&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Se recomienda que, para entender este&lt;b&gt;&lt;span class="notranslate"&gt; codelab&lt;/span&gt;&lt;/b&gt;, tengamos los suficientes conocimientos de ExtJs y desarrollo Web (HTML, Javascript; o en su defecto, haber seguido el &lt;a href="http://www.quizzpot.com/2009/01/ext-js-framework/" target="_blank"&gt;curso de ExtJs&lt;/a&gt; que nos ofrece Crysfel Villa de México en su pagina del Quizzpot.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Asimismo se recomienda haber leído y probado: &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" target="_blank"&gt;Integracion a Google (1ra parte)&lt;/a&gt; e &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="_blank"&gt;Integración a Google (2da parte)&lt;/a&gt;,  especialmente para comprender las herramientas utilizadas para integrar de las API de Google a ExtJs (y viceversa), que en este caso no se emplean pero si se hacen referencia en este tutorial.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;a href="https://docs.google.com/leaf?id=0B9R0zfbQHqoEMzMwZThkNTQtMTFlYy00NmI2LWJiZGEtMTI0ZTEzNzhjNTdh&amp;amp;hl=es" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Material de Apoyo&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Descomprimir este material de apoyo en la carpeta www de nuestro servidor local AppServ u otro compatible Apache-PHP-MySQL, y se creara la carpeta "Grid-PHP-MySQL" (si no entiende este paso favor consulte "&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/por-donde-empezar.html" target="_blank"&gt;empezando desde cero&lt;/a&gt;').&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Pasos para ejecutar el Codelab...&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Para ejecutar el tutorial debemos primero realizar lo siguiente:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Crear nuestra base de Datos:&lt;/b&gt; utilizando PHPMyAdmin debemos crear la base de datos &lt;b&gt;"tutorial"&lt;/b&gt; (asi es el nombre que le hemos dado en nuestro ejercicio, si utiliza otro nombre debera recordarlo y registrarlo en nuestro archivo php que nos comunica a nuestra base de datos.&lt;br /&gt;
Para crear la base de datos se debe ingresar a MySQL con PHPMyAdmin, y en su primera pantalla seleccionar la opcion correspondiente, &amp;nbsp;digitar el nombre de nuestra base de datos, &amp;nbsp;y elegir el boton "&lt;b&gt;Crear"&lt;/b&gt;..y listo, ..nuestra base de datos será creada y su nombre aparecerá en la lista situada al lado izquierdo. ...luego debemos ingresar a nuestra base de datos creada y seleccionar la lengueta &lt;b&gt;"Importar"&lt;/b&gt;, alli hay una opcion para seleccionar nuestro archivo bajo &lt;b&gt;formato sql&lt;/b&gt;, la cual debemos buscar en la carpeta &lt;b&gt;"Grid-PHP-MySQL"&lt;/b&gt; desempaquetada de &lt;b&gt;www&lt;/b&gt;, el nombre de nuestro archivo es &lt;b&gt;"pdts_usa.sql"&lt;/b&gt; y corresponde a una tabla con la relacion de presidentes de los Estados Unidos de Norteamerica (tabla &lt;span class="notranslate"&gt;&lt;b&gt;presidents&lt;/b&gt;&lt;/span&gt;), y de partidos politicos (tabla &lt;span class="notranslate"&gt;&lt;b&gt;parties&lt;/b&gt;&lt;/span&gt;), con la realizaremos opciones alta, baja, modificacion, consulta e impresion...&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Con nuestro &lt;b&gt;explorador&lt;/b&gt; debemos ingresar a la carpeta &lt;b&gt;"Grid-PHP-MySQL"&lt;/b&gt; creada en la carpeta www del Appserv, y alli "editar" el archivo &lt;b&gt;"database.php"&lt;/b&gt;. Este archivo en sus primeras lineas tiene en su inicio las intrucciones de conexion a nuestra base de datos:&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
// This will connect us to our database...&lt;br /&gt;
mysql_connect("localhost", "root", "myPassword") or&lt;br /&gt;
&amp;nbsp; die("Could not connect: " . mysql_error());&lt;br /&gt;
mysql_select_db("tutorial");&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;En ella debemos modificar los parametros root (si nuestro usuario de ingreso no es root sino otro personalizado, y poner nuestro Password de conexion a MySQL (el que utilizamos en PHPMyAdmin), asimismo poner en la clausula &lt;b&gt;mysql_select_db&lt;/b&gt; el nombre nuestra base de datos, si no corresponde a "tutorial" como se indica. Si nuestra prueba la realizamos directamente en un servidor externo como www.x10hosting.com con dominio propio, entonces en lugar de &lt;b&gt;localhost&lt;/b&gt; debemos colocar nuestra direccion web correspondiente: &lt;b&gt;www.mydominio.com&lt;/b&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;..y ya estamos listo para ejecuatr nuestro ejercicio...!&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;Ahora, si con nuestro navegador ingresamos a &lt;b&gt;"localhost"&lt;/b&gt;, y luego al ingresar a la carpeta a carpeta&amp;nbsp;&lt;b&gt;"Grid-PHP-MySQL"&lt;/b&gt;&amp;nbsp;( o donde quiera hayamos descargado el material de apoyo, pero que debe dentro de la carpeta www de AppServ); pues al ingresar esta carpeta que contiene a nuestro archivo index.html, deberá aparecer una pantalla como la que se muestra a continuación:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://nicolas.bize.free.fr/ext/tutorial/Tutorial%20Part%2012/index.html" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-KBCJWefiM7w/TXjVeCp_1bI/AAAAAAAAA6c/gmjI4tVivIA/s1600/Back-End%2BPHP%2BMySQL.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Esto nos indica que nuestra descarga y copia ha sido correcta, y ya estamos listos para revisar el material de apoyo descargado y descubrir como hemos efectuado nuestro conexion a MySQL utilizando PHP, HTML y Javascript para trabajar con ella funciones basicas de mantenimiento de Tablas como Ingreso, Modificacion, Eliminación, Consulta, Impresion, Busquedas, etc, bajo un formato clasico.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Nota.-&lt;/b&gt; si no aparece la pagina mostrada es probable que no hayamos descargado nuestra version completa o "liviana"de ExtJs en la carpeta "www", como mostramos en "&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/el-potencial-de-extjs.html" target="_blank"&gt;el potencial de ExtJs&lt;/a&gt;"; o tal vez, estemos usando una versión de ExtJs diferente de la indicada en nuestro archivo HTML (..ahora estamos usando la versión ext-3.3.1 vigente al 01/03/2011). Observe la ruta rerlativa a &lt;b&gt;www&lt;/b&gt; que utilizamos para acceder dichos archivos "../../extjs/extjs-3.1.1" en este caso (que indica 2 carpetas sobre nuestra descarga del tutorial). Efectúe los cambios de la ruta necesarios en el archivo &lt;b&gt;index.html&lt;/b&gt; del tutorial y pruebe nuevamente hasta que aparezca la ventana con nuestro Grid como indica la figura (haga click y lo dirigirá a la pantalla de prueba del tutorial de ExtJs), aunque le reiteramos que debemos hacer nuestras pruebas sobre nuestro servidor local ( &lt;a href="htpp://localhost" target="_blank"&gt;htpp://localhost&lt;/a&gt; ), pues en este caso se&amp;nbsp;trata&amp;nbsp;de&amp;nbsp;una version mejorada...&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Detalle del Modulo.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;1. Al revisar los archivos desempaquetados de nuestro Material de Apoyo encontraremos los siguientes archivos:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Readme.txt&lt;/b&gt;, donde encontraremos informacion respecto a este tutorial en la &lt;a href="http://extjs.com/learn/w/index.php?title=Tutorial:Grid_PHP_SQL_Part1" target="_blank"&gt;pagina web oficial de ExtJs&lt;/a&gt;, por cuanto este ejercicio ha sido bajado y adaptado de allí; teniendo como principal mejora que ahora estamos trabajando con "stores" tanto para la base de datos de presidentes, como con la de partidos (vale decir que si corregimos en la Base de Datos el nombre de un partido esto debe verse reflejado en los "combobox" utilizados, no ocurria asi en el tutorial original donde el store de partidos es un dataarray "local" y estatico; asimismo se ha corregido algunos errores para que el ejercicio trabaje bien en todas sus opciones (en especial en el grabado del nombre del partido de cada presidente, donde el combobox del Grideditor no trabajaba bien por un error simple: &amp;nbsp;en el tutorial original: se indicaba como PartyValue del combobox a PartryID en vez de PartyName, pero si revisa la logica de la funcion &lt;b&gt;updatePresident()&lt;/b&gt; de &lt;b&gt;database.php&lt;/b&gt;, observará que para encontrar un registro se utiliza el nombre del partidoy &amp;nbsp;no su codigo o ID..).. pero en general este tutorial ExtJs esta muy bien explicado, por lo que para consultas detalladas de todo el desarrollo del mismo paso a paso, pues puede tambien seguir y revisar el enlace indicado.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;pdts_usa.sql&lt;/b&gt;, archivo tipo texto en formato de lenguaje SQL con el, una vez creada nuestra base de datos &lt;span class="notranslate"&gt;&lt;b&gt;tutorial&lt;/b&gt;&lt;/span&gt;, se crearan las tablas &lt;span class="notranslate"&gt;&lt;b&gt;presidents&lt;/b&gt;&lt;/span&gt; y &lt;span class="notranslate"&gt;&lt;b&gt;parties&lt;/b&gt;&lt;/span&gt;, y la &lt;span class="notranslata"&gt;data&lt;/span&gt; correspondiente para iniciar el ejercicio.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;database.php&lt;/b&gt;, archivo de tipo texto en formato de lenguaje PHP con el cual actua del lado del servidor para interactuar con nuestra base de datos, en ella hemos comentado las partes que corresponden a cada caso: modo de Conexion inicial y funciones de actualizacion, creación, borrado, busqueda e impresion de nuestra &lt;span class="notranslate"&gt;data&lt;/span&gt;; las formas de este codigo pueden ser facilmente comprendido y ajustado anuestros desarrollos propios.&lt;br /&gt;
Se presenta asimismo las funciones getlist() y getparties() que son las ejecutan nuestras consultas de las tablas MySQL, habiendose comentado las adiciones efectuadas por el caso de efectuar "Conteo de Paginas" y "Busquedas rapidas".&lt;br /&gt;
Se presenta asimismo a las funciones JEncode y codeDate, la primera para llamar a las funciones standard de codificacion del formato Json, y la segunda para el tratamiento de los campos tipo fecha.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JSON.php&lt;/b&gt;, archivo de tipo texto en formato PHP que es una libreria clasica de PHP para el manejo del formato JSON con el que se trabaja las base de datos y tablas de MySQL (y que  siempre debemos utilizar en nuestros proyectos que trabajemos con MySQL)&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Index.htm&lt;/b&gt;l, archivo de tipo texto en formato HTML de ejecucion automatica donde se encuentran las directivas de inicio de nuestro ejercicio para la importacion de las librerias de ExtJS y las de nuestro ejercicio.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;presidentslist.html&lt;/b&gt;, archivo en formato HTML que nos muestra una Tabla, la cual se genera al ejecutar la opcion impresion de nuestro ejercicio: luego en las instrucciones PHP correspondientes podrá observar como se manda a imprimir dicho documento.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;mainscript.js&lt;/b&gt;, archivo en formato ExtJs debidamente empaquetado utilizando namespace, que nos muestra las funciones e instrucciones ExtJs que permiten el funcionamiento de las opciones de Actualizacion, Creacion, Modificacion, Consulta, Impresion y Busqueda, entre otras opciones, de nuestro tutorial.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;searchfield.js&lt;/b&gt;, archivo en formato ExtJs que exclusivamente contiene las funciones que nos muestran el recuadro de Busqueda Rapida del ejercicio.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;style.css&lt;/b&gt;, archivo en formato CSS que permite la llamada a las imagenes que utilizaremos en los botones de acceso a las opciones de nuestro ejercicio mostradas en la barra superior de nuestra ventana (toolbar).&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;carpetas &lt;span class="notranslate"&gt;icons&lt;/span&gt; e &lt;span class="notranslate"&gt;images&lt;/span&gt;&lt;/b&gt;, la primera contiene el icons mostrado en la pestaña de nuestro navegador; y el segundo, las imagenes jpg personales utilizadas en el ejercicio y los dos estilos de celdas que hemos presentado en este caso para mejorar la presentación de las celdas del Grid...&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;APUNTES TECNICOS&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Si ya han probado todas las opciones de nuestro modelo de mantenimiento de Tablas, al revisar el Codigo debe tenerse presente los siguientes puntos:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Si revisan el codigo de &lt;b&gt;mainscript.js&lt;/b&gt; notarán que, la codificación del form de busqueda, en el combobox de partidos, mantiene una estructura estatica y de carga "local" a partir de un simplestore que carga un array con los ID y nombre de los partidos. Vale como ejercicio que recodifiquen dicho combobox con el store de partidos ya creado (al modo de como se ha efectuado en el combobox del grideditor de presidentes), para que el ejemplo sea mas real, es decir, que si efectua una modificacion de algun dato de la Tabla de Partidos (como cambiar el nombre), entonces "dinamicamente" los cambios se vean reflejados al cargar los combobox.&lt;/li&gt;
&lt;li&gt;En el grideditor de presidentes podrán observar que algunas columnas pueden estar definidas pero no mostrarse mediante las clausulas &amp;nbsp;&lt;b&gt;hidden:false&lt;/b&gt; o &lt;b&gt;hidden:true&lt;/b&gt;, como es el caso del IDparty. Y Este es un apunte que debemos tener muy en cuenta especialmente al trabajar tablas cuya ID a veces no queremos mostrar en nuestra pantalla, como si quisieramos que no se muestre el ID de los presidentes en nuestro ejemplo; en estos casos, casi como norma, resulta imprescindible definir como primera columna de nuestros Grids el ID de nuestras tablas, por cuanto si observan con detalle la codificacion de Actualizacion de Datos en &lt;b&gt;database.php&lt;/b&gt;, la logica de ubicación de nuestros registros se basa en un &lt;span class="notranslate"&gt;&lt;b&gt;"Where"&lt;/b&gt;&lt;/span&gt; que utiliza al ID para especificar el registro...&lt;/li&gt;
&lt;li&gt;Cabe resaltar asimismo, que los ID de nuestras tablas en nuestra base de datos (MySQL en este caso), son por defecto definidas con tipo de datos &lt;b&gt;INT&lt;/b&gt;, modalidad &lt;b&gt;"auto_increment"&lt;/b&gt; y del tipo &lt;b&gt;"primaryKey"&lt;/b&gt;; es decir, que corresponden a los campos con los usualmente efectuaremos "relaciones" con otras tablas (como es nuestro caso de la Tabla Partidos con la de Presidentes).&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Espero que este Codelab de introduccion al entorno del Back-End Apache, PHP, MySQL sea suficiente para entender el esquema de su funcionamiento, y nos animemos a efectuar nuestras propias pruebas, y en el como siempre, les entregamos modelos de codificación, librerias y herramientas muy utiles para el desarrollo de casos reales; en lo que corresponde a nosotros, nos comprometemos a la brevedad a desarrollar otro ejercicio que contenga un &lt;span class="notranslate"&gt;&lt;b&gt;Wizard&lt;/b&gt;&lt;/span&gt; para el control de acceso a nuestras aplicaciones, y siguiendo la línea de los ejercicios anteriores nos Integremo a Google, empleando por el momento visualizaciones (pero que bien podriamos utilizar otras API como &lt;span class="notranslate"&gt;Google Language&lt;/span&gt; que utilizamos en todas las paginas de este Blog); pero al respecto cabe indicar que el proceso indicado de utilizar visualizaciones Google esta practicamente solucionado, por cuantro al ya tener nuestra &lt;span class="notranslate"&gt;&lt;b&gt;"data"&lt;/b&gt;&lt;/span&gt; cargadas en &lt;span class="notranslate"&gt;&lt;b&gt;"stores"&lt;/b&gt;&lt;/span&gt; entonces, ya es posible utilizar nuestras extensiones ya desarrolladas en nuestros post &lt;b&gt;Integracion a Google &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" target="_blank"&gt;1ra&lt;/a&gt; y &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="notranslate"&gt;2da&lt;/a&gt; parte"&lt;/b&gt;.&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Saludos&lt;br /&gt;
@Mlaynes&lt;/div&gt;&lt;br /&gt;
&lt;a href="javascript:void(rut_facebook_20());" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 5px 0px 0px; text-align: left; width: 40px;" /&gt;Opina en nuestro foro §FB..!&lt;/a&gt;&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2011/03/using-back-end-phpmysql-introduccion.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-1425355286680514633?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2Ok9S2q6oVSoHH_-0gbiuld4vWc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2Ok9S2q6oVSoHH_-0gbiuld4vWc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2Ok9S2q6oVSoHH_-0gbiuld4vWc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2Ok9S2q6oVSoHH_-0gbiuld4vWc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/dkC11CSM42c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/1425355286680514633/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2011/03/using-back-end-phpmysql-introduccion.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/1425355286680514633?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/1425355286680514633?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/dkC11CSM42c/using-back-end-phpmysql-introduccion.html" title="Using the Back-End PHP+MySQL ( Getting Started )" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-re88-tApkyc/TXae1WEXz7I/AAAAAAAAA6E/lItb0N8EAPI/s72-c/Back-End%2BPHP-MySQL.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2011/03/using-back-end-phpmysql-introduccion.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cEQXY_eSp7ImA9WhdUFU0.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-7345922807258155696</id><published>2010-05-31T23:06:00.000-07:00</published><updated>2011-10-01T15:43:20.841-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T15:43:20.841-07:00</app:edited><title>Google Gadgets</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;&lt;script type="text/javascript"&gt;
// seleccion de wikigadget
function rut_wikigadget() {
  var wurl_wikipedia = '';
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  switch(wlanguage) {
  case 'es':
    wurl_wikipedia = "http://es.wikipedia.org/wiki/Gadget"; break;
  case 'pt':
    wurl_wikipedia = "http://pt.wikipedia.org/wiki/Gadget"; break;
  default:
    wurl_wikipedia = "http://en.wikipedia.org/wiki/Gadget"; break;
  };
  window.open(wurl_wikipedia,"_blank");
  return wurl_wikipedia;
};
&lt;/script&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/intl/es/apis/gadgets/index.html" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s200/google_logo.jpg" style="cursor: hand; cursor: pointer; float: left; height: 35px; margin: 22px 15px 0px 0px; width: 100px;" /&gt;&lt;/a&gt;&lt;br /&gt;
En términos generales, Los gadgets de Google son objetos o aplicaciones en miniatura desarrollados para ofrecer contenidos dinámicos que pueden ser ubicados en cualquier lugar de&amp;nbsp;cualquier página web. Los Gadgets pueden ser muy útiles para su uso en el trabajo (como lista de tareas, conversor de monedas, calendario), en la escuela (calculadora, Wikipedia, herramientas de traducción), o simplemente pasar el tiempo (noticias, blogs, juegos).&lt;br /&gt;
&lt;br /&gt;
El término gadget (o widget), también se ha dado a una nueva categoría de mini aplicaciones, diseñadas para proveer de información o mejorar una aplicación o servicios de un ordenador o computadora, o bien cualquier tipo de interacción a través de Internet, por ejemplo una extensión de alguna aplicación de negocios, que nos provea información en tiempo real del estatus del negocio u organización.&lt;br /&gt;
&lt;br /&gt;
Un ejemplo de gadgets en una computadora serían los gadgets del Dashboard de Apple sobre Mac OS X Leopard, o los de la barra lateral de Windows, que viene incluida en el nuevo sistema operativo de Microsoft: Windows 7 y Microsoft: Windows Vista; y por supuesto, los Gadgets de Google, que pueden ser instalados en iGoogle, Google Desktop o en cualquier pagina Web que desarrollemos.&lt;br /&gt;
(fuente: &lt;a href="javascript:void(rut_wikigadget());"&gt;Wikipedia&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Los Gadgets de Google son en especifico aplicaciones desarrolladas en XML, HTML y JavaScript, en donde un archivo XML es el contenedor de la aplicación (y en el se describe datos estructurados que tanto los programadores y las computadoras podrán leer y ejecutar), y que soporta instrucciones HTML para dar formato al espacio de la pagina web utilizado por el gadget, y como ya conocemos en el estandard opensource, también permite que nuestro código HTML soporte Javascript, que es un lenguaje de comandos que utilizamos para añadir comportamientos dinámicos a nuestras paginas y desarrollos web.&lt;br /&gt;
&lt;br /&gt;
En resumen entonces, desarrollar Gadgets es muy similar a desarrollar paginas web, y de hecho debe resultar mas sencillo, pues en este caso se trata de objetos o aplicaciones especificas que luego ubicaremos adecuadamente en nuestras paginas web... pero en el cual debemos poner especial cuidado en las sintaxis y opciones que nos proporciona el contenedor XML, el cual también podrá interactuar con nuestros códigos HTML y Javascript.&lt;br /&gt;
&lt;br /&gt;
Como una practica de aprender a utilizar y desarrollar los gadgets de Google, recomedamos seguir paso por paso los avances del &lt;a href="http://www.seoish.com/how-to-make-google-gadgets/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Tutorial de Seoish&lt;/span&gt;&lt;/a&gt;, el cual presenta las siguientes ventajas:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Nos alecciona para trabajar con iGoogle, y nos explica paso por paso como ir preparando la pagina inclusive para desarrollar y probar en ella misma nuestros Gadgets utilizando nuestra cuenta Google (y ya hemos reiterado que, con dicha cuenta podemos utilizar los múltiples servicios que Google nos brinda, como GMail, YouTube, Google Docs, App Engine, Albumnes de Picasa, Blogger, Google Maps, Google Earth, etc. entre los que podemos haber usado siguiendo los casos propuestos por nuestros códigos hasta la fecha).&lt;/li&gt;
&lt;li&gt;Tambien nos explica al detalle como usar el &lt;span class="notranslate"&gt;Google Gadget Editor (GGE)&lt;/span&gt;, e inclusive nos indica algunas peculiaridades del editor que debemos superar (lean con detalle los comentarios, asi como el manejo del caché de Google).&lt;/li&gt;
&lt;li&gt;Asimismo, nos explica las partes del código Gadget (XML), y como se utilizan con un caso practico (Hello World e il Tiger).&lt;/li&gt;
&lt;li&gt;Detalla como utilizar los tipos de contenidos actuales de XML para Gadgets: HTML y URL (ejemplo Big Brother 9 - Live Cams), y a ver a los Gadgets como mini-webs, así como a ver a todas las aplicaciones web como Gadgets.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.seoish.com/how-to-make-google-gadgets/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/_Myy7SL10ikw/TEo12Zvw8qI/AAAAAAAAAPQ/UEOgVdrcKZY/s320/PageSeoish.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Y continuando con nuestra secuencia de casos para utilizar Google Spreadsheets como fuente de datos, les alcanzo el&amp;nbsp;código&amp;nbsp;de un Gadgets para "consultar" utilizando visualizaciones Google, en un formato mas adecuado para los tamaño de algunos Gadgets (pero que debemos ajustar para casos específicos dependiendo como los presentemos en iGoogle o en nuestras webs)&lt;br /&gt;
):&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://docs.google.com/leaf?id=0B9R0zfbQHqoENTQ0NTMzMGMtYmQxMy00NmZmLTk5NzgtMjk3NTRiMDllYzY4&amp;amp;hl=es" imageanchor="1" style="clear: left; margin-bottom: 1em;" target="_blank"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Myy7SL10ikw/TEpPyRXUXSI/AAAAAAAAAPY/VU3kj0U7bdg/s200/disk.png" style="cursor: hand; cursor: pointer; float: left; height: 12px; margin: 05px 15px 0px 0px; width: 12;" /&gt;&lt;/a&gt;&lt;b&gt;IG_Productos.xml,&lt;/b&gt; que nos muestra una Visualización tipo Tabla de nuestro documento "Spreadsheet Productos": los productos y su fecha de venta.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://docs.google.com/leaf?id=0B9R0zfbQHqoENTBkODRjNzctNjIxNy00NTA5LTkwZjgtMjE1YmUyOTlkNTYw&amp;amp;hl=es" imageanchor="1" style="clear: left; margin-bottom: 1em;" target="_blank"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Myy7SL10ikw/TEpPyRXUXSI/AAAAAAAAAPY/VU3kj0U7bdg/s200/disk.png" style="cursor: hand; cursor: pointer; float: left; height: 12px; margin: 05px 15px 0px 0px; width: 12;" /&gt;&lt;/a&gt;&lt;b&gt;IG_Clientes.xml,&lt;/b&gt; que nos muestra Visualizaciones tipo Tabla y PieChart de nuestro documento "Spreadsheet Productos": nuestros clientes, monto de venta, cantidad de productos vendidos y monto cobrado...&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.google.com/support/websearch/bin/answer.py?answer=25551" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/_Myy7SL10ikw/TEr1G8nxTVI/AAAAAAAAAPg/nZm0a0KmgtE/s320/PageIGoogle.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/07/google-gadgets.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-7345922807258155696?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Lfa63Fsj-zYEhaSJUWsknNSwj9k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Lfa63Fsj-zYEhaSJUWsknNSwj9k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Lfa63Fsj-zYEhaSJUWsknNSwj9k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Lfa63Fsj-zYEhaSJUWsknNSwj9k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/VHhXZG43zNk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/7345922807258155696/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/07/google-gadgets.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/7345922807258155696?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/7345922807258155696?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/VHhXZG43zNk/google-gadgets.html" title="Google Gadgets" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s72-c/google_logo.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Ayacucho, Lima, Perú</georss:featurename><georss:point>-12.131390006248221 -76.9943118095398</georss:point><georss:box>-12.133330506248221 -76.99677930953979 -12.129449506248221 -76.9918443095398</georss:box><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/07/google-gadgets.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UDR3wzfCp7ImA9WhdUFU0.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-2632283486071130910</id><published>2010-05-15T16:08:00.000-07:00</published><updated>2011-10-01T15:47:56.284-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T15:47:56.284-07:00</app:edited><title>Web 2.0: Los negocios y las redes sociales.</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;&lt;a href="http://es.wikipedia.org/wiki/Web2.0" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5463830772812311090" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S-8f1BLlOUI/AAAAAAAAALo/cQn5aED7C1U/s1600/Web20_logo.png" style="cursor: hand; cursor: pointer; float: left; height: 100px; margin: 23px 10px 1px 0; width: 150px;" /&gt;&lt;/a&gt;&lt;br /&gt;
En este post vamos a comentar un poco sobre el concepto de Web2.0, y que representa el uso de las redes sociales para los negocios... &lt;br /&gt;
&lt;br /&gt;
El termino Web 2.0 (vigente desde el año 2003) está comúnmente asociado con un fenómeno social, basado en la interacción que se logra a partir de diferentes aplicaciones web, que facilitan el compartir información, la interoperatividad, el diseño centrado en el usuario y la colaboración a través de Internet. Ejemplos de la Web 2.0 son las comunidades web, los servicios web, las aplicaciones Web, los servicios de red social, los servicios de alojamiento de videos, las wikis, blogs, mashups y folcsonomías. Un sitio Web 2.0 permite a sus usuarios interactuar con otros usuarios o cambiar contenido del sitio web, en contraste a sitios web no-interactivos donde los usuarios se limitan a la visualización pasiva de información que se les proporciona.&lt;br /&gt;
(fuente: wikipedia)&lt;br /&gt;
&lt;br /&gt;
Bajo estos conceptos, una aplicación nativa del concepto de Web2.0 aplicada a los negocios serían las campañas de mercadeo y publicidad, pero se debe considerar que también se le puede utilizar con bastante acierto dentro del campo motivacional, de instrucción y capacitación, y de seguimiento de "casos", tanto en forma "pública" (toda la red), como a nivel "intranet" dentro de los empleados y colaboradores de una organización o  empresa, entre otras aplicaciones.&lt;br /&gt;
&lt;br /&gt;
Ya centrándonos en lo que respecta los negocios, el principal empleo del concepto Web2.0 se orienta principalmente, como ya hemos indicado, en el campo de la publicidad y mercadeo, pero resulta conveniente considerar los siguientes aspectos:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;primero&lt;/b&gt;, debe tenerse en cuenta el uso combinado en forma armoniosa de elementos tipo Blog (como Blogger, WordExpress o Ning por ejemplo), con Facebook y Twitter, así como de otras redes sociales que puedan estar vigentes en nuestro medio local como Yahoo, Sonico, Netlog, etc.; pues juntos van a constituir nuestra forma de penetración social de nuestro mercado, el cual ha de transformarse en nuestro "mercado social". Cada uno de estos elementos que utilizemos tiene un objeto distinto: así podemos utilizar Blogger para contactar directamente y profundizar una idea de negocio con nuestros clientes, Facebook para difundir nuestras ideas de una manera sumamente atractiva y sugestiva, y Twitter para "perifonearlas" y causar el efecto "virulencia"; y prácticamente creo que con esas herramientas, todas gratuitas en lo que concierne a su uso estandard, pues existen servicios de pago como son los Avisos de &lt;a href="http://www.facebook.com/ads/create/" target="_blank"&gt;Facebook&lt;/a&gt; o &lt;a href="https://www.google.com/accounts/ServiceLogin?service=adwords&amp;amp;hl=es_ES&amp;amp;ltmpl=adwords&amp;amp;passive=false&amp;amp;ifr=false&amp;amp;alwf=true&amp;amp;continue=https://adwords.google.es/um/gaiaauth%3Fapt%3DNone%26ugl%3Dtrue&amp;amp;error=noacct&amp;amp;ed=mlaynessanchez@gmail.com" target="_blank"&gt;Google Adwords&lt;/a&gt;;&amp;nbsp;y éstas son más que suficientes para iniciar verdaderas campañas de mercadeo tanto para pequeñas y medianos negocios, pues considérese que las grandes compañías ya las están empleando... y revisando algunas experiencias al respecto, podemos observar que el "elegante" y muy vigente formato de Facebook, la facilidad de difusión de mensajes a través de Twitter y los contactos personales que podamos desarrollar a través de nuestros Blogs, bien podría hacer prácticamente innecesario el desarrollo de paginas web propias (excepto que por temas de seguridad se llegue al e-commerce o manejo de información que requiera discreción como manejo de pagos, claves de acceso, información técnica de productos y servicios, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;segundo&lt;/b&gt;, debe tenerse presente que si consideramos utilizar un mercadeo social, pues este debe ser monitoreado de forma permanente manteniendo un adecuado nivel de comunicación y respuesta con nuestros usuarios, seguidores y clientes, pues si lo dejamos para "cuando tengamos tiempo", los usuarios y seguidores de nuestro servicio web van a notarlo y dejar de seguirlos. Interesante la idea del empleado de mostrador que muchas veces dispone de mucho tiempo no productivo para nuestros negocios.. a quienes podríamos recurrir previa capacitación de los objetivos de nuestro negocio, y de "modales sociales", pues debe mantenerse un estilo de comunicación y respuesta que pueda identificarnos; asimismo, debe tenerse presente los conceptos de Asistencia Virtual y tele-trabajo, mediante el cual podemos recurrir a servicios de terceros que podrían asesorarnos y ayudarnos a definir el perfil social de nuestro negocio, diseñar las formas de interconexión de las redes sociales que utilizaremos, y además, dedicarse a revisar y responder las múltiples entradas y comentarios de nuestros usuarios, clientes y seguidores, e informar directamente a los encargados de la dirección del negocio respecto a los resultados tangibles de nuestra red de mercadeo social.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;tercero&lt;/b&gt;, reiterar que si nuestra empresa o negocio va a utilizar bondades de los servicios Web2.0 resulta necesario definir y establecer un formato conveniente para cada caso, pensando inclusive hasta en la posibilidad de empleo de&amp;nbsp;múltiples&amp;nbsp;idiomas, pagos "on line", y entregas directas a domicilio... dependiendo de nuestros productos y/o servicios ofertados, aunque estos signifique cambiar nuestros canales vigentes de comercialización&lt;br /&gt;
&lt;br /&gt;
Otro plano es el control y manejo administrativo, Internet ya prácticamente nos ha demostrado que es bastante estable y que soporta sin mayor problema millones y millones de datos y de usuarios, y con niveles bastante aceptables de seguridad (dependiendo de los navegadores, herramientas y modo de desarrollo que utilicemos), pero su empleo a nivel administrativo contable, prácticamente es bastante escaso ,y su empleo es aún mayoritariamente a nivel de mercadeo, y por eso termino esta entrada indicando que necesariamente va a existir Web3.0, y es cuando no solo las aplicaciones sociales de las organizaciones, empresas y personas estén en la red.. sino cuando inclusive los aplicativos de organización, gestión y control administrativo también lo estén, aunque esto ya tiene un nombre: &lt;span class="notranslate"&gt;&lt;b&gt;&lt;a href="http://googleamericalatinablog.blogspot.com/2010/12/todo-web.html" target="_blank"&gt;"Cloud Computing"&lt;/a&gt;&lt;/b&gt;&lt;/span&gt; (el enlace indicado está escrito en español pero tiene enlaces y conceptos interesantes, por lo que recomendamos su lectura usando su traductor para otros idiomas)&lt;br /&gt;
&lt;br /&gt;
Pueden revisar tambien nuestros post:&lt;br /&gt;
&lt;p&gt;&lt;b&gt;*&lt;/b&gt; &lt;a href="http://mlaynessanchez.blogspot.com/2010/05/hablemos-sobre-facebook.html" target="_blank"&gt;Hablemos de Facebook&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;*&lt;/b&gt; &lt;a href="http://mlaynessanchez.blogspot.com/2010/05/hablemos-de-twitter.html" target="_blank"&gt;Hablemos de Twitter&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;En las proximas entradas vamos a comentar mas respecto a estos conceptos que estan muy asociados al mundo Google en general por cuanto, hacia ese concepto de desarrollo web de manejo total es hacia donde estamos apuntamdo...&lt;br /&gt;
&lt;br /&gt;
Saludos&lt;br /&gt;
@Mlaynes&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/05/web-20-los-negocios-y-las-redes.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-2632283486071130910?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JhAaa5OST0i9Ps-Pa8x1_95obrs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JhAaa5OST0i9Ps-Pa8x1_95obrs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JhAaa5OST0i9Ps-Pa8x1_95obrs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JhAaa5OST0i9Ps-Pa8x1_95obrs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/eOhlHSQuk2w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/2632283486071130910/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/05/web-20-los-negocios-y-las-redes.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/2632283486071130910?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/2632283486071130910?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/eOhlHSQuk2w/web-20-los-negocios-y-las-redes.html" title="Web 2.0: Los negocios y las redes sociales." /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_Myy7SL10ikw/S-8f1BLlOUI/AAAAAAAAALo/cQn5aED7C1U/s72-c/Web20_logo.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/05/web-20-los-negocios-y-las-redes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ICQ3Y8fSp7ImA9WhdUFU0.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-5268760729042167555</id><published>2010-05-15T11:25:00.000-07:00</published><updated>2011-10-01T15:52:42.875-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T15:52:42.875-07:00</app:edited><title>Let's talk about Twitter</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="javascript:rut_twitter();" imageanchor="1" style="clear: left; float: left; margin: 20px 15px 0px 0px;" target="_blank"&gt;&lt;img border="0" height="100" src="http://twitter-badges.s3.amazonaws.com/t_logo-b.png" width="100" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;MUY BUENAS NOTICIAS... (nuestra experiencia con Twitter - 29/05/2010)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
El equipo de Twitter, despues de meditar nuestros descargos remitidos durante casi 02 semanas, decidió levantar la suspensión de nuestra cuenta Twitter en Inglés que nos había impuesto, lo que habla muy bien de dicha red social, por cuanto, atendió nuestros argumentos, (el cual principalmente se centró en indicarles que nuestro proyecto trata de integrar a la comunidad GTUG mundial para formar una biblioteca de codigos, y que por tanto, resulta imprescindible tratar de comunicarnos con toda dicha comunidad, y por supuesto no somos spam..!); y bueno, Twitter trata de mantener un manejable rango de relación y control de los seguidores de su red que debemos destacar... y esto, unido a su pronunciamiento &lt;a href="http://twitter.com/about/opensource" target="blank_"&gt;&lt;span class="notranslate"&gt;Twitter loves open source&lt;/span&gt;&lt;/a&gt;, (el cual compartimos en esta humilde comunidad), y el lanzamiento de &lt;a href="http://dev.twitter.com/" target="_blank"&gt;@anywhere&lt;/a&gt;, y con el reconocimiento que Twitter es la principal red de microblogging vigente en el momento, pues en verdad nos alegra contar ahora con todas nuestras cuentas Twitter completamente operativas, en &lt;a href="http://twitter.com/IGCodelab_es" target="_blank"&gt;español&lt;/a&gt;,&lt;a href="http://twitter.com/IGCodelab_en" target="_blank"&gt; inglés &lt;/a&gt;y &lt;a href="http://twitter.com/IGCodelab_pt" target="_Blank"&gt;portugués&lt;/a&gt;... por lo que les detallamos a continuación nuestros tips respecto a nuestros avances al jugar con el API que Twitter nos proporciona...&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;REFERENCIA TECNICA (18/07/2010)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Como siempre, les indicamos las paginas oficiales de Twitter para que las revisemos continuamente y estemos atentos a los cambios y mejoras que nos brindan los servicios de esta red social (y que realmente nos conviene revisar para mantener al día y sin problemas nuestras aplicaciones).&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://twitter.com/widgets" target="_blank"&gt;Extras de Twitter&lt;/a&gt;, que nos proporciona diversos widgets y botones para emplear en nuestras paginas web, y en la que resaltamos el widget de perfil, que nos muestra en cualquier un listado de los tweets de la cuenta Twitter que indiquemos; pero debemos destacar que dependiendo de cada caso, bien podriamos utilizar los otros widgets tanto para nuestros sitios web como para Facebook, que Twitter nos proporciona... (solo basta ingresar los datos que nos indican y luego probar y observar el resultado, y al terminar y guardar el código, se nos proporciona el mismo para pegarlo en nuestros documentos HTML)&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;TWITTER ANYWHERE&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
A diferencias de los Extras, con Anywhere, Twitter busca que interactuemos directamente con nuestra cuenta Twitter en nuestras paginas web, sin ingresar directamente a Twitter, logrando así facilitar el uso de nuestras cuentas, incrementar el trafico de las mismas y su difusión.&lt;br /&gt;
&lt;br /&gt;
Para ello, el &lt;a href="http://dev.twitter.com/" target="_blank"&gt;APIde Twitter&lt;/a&gt; requiere como primer paso que registremos nuestra aplicación (debemos tener presente que si tenemos varias cuentas twitter siempre estemos conectados con la misma para que nuestros desarrollos se muestren agrupados, o que las asignemos a la cuenta Twitter de su respectiva aplicación, el caso es que para poder acceder a los datos de nuestra aplicación luego de creadas -especialmente a nuestro &lt;span class="notranslate"&gt;API Key, Consumer Key, Consumer Secret&lt;/span&gt; u otros datos que necesitemos-, basta con que ingresemos a la cuenta Twitter con la que accedimos al registrar nuestra aplicación e ingresar a nuestra &lt;a href="http://dev.twitter.com/" target="_blank"&gt;cuenta de desarrollor&lt;/a&gt; utilizando la opción &lt;span class="notranslate"&gt;"Siqn"&lt;/span&gt;, y luego ingresemos a los datos de nuestra aplicación usando la pestaña &lt;span class="notranslate"&gt;"Your Apps"&lt;/span&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green;"&gt;&lt;b&gt;NOTA : &lt;/b&gt;&lt;/span&gt;Al registrar nuestra aplicación es importante que indiquemos en &lt;span class="notranslate"&gt;"Registered Callback URL"&lt;/span&gt; la dirección exacta de nuestra pagina web a partir de la cual se va a tener acceso a Anywhere, y asimismo, que indiquemos el &lt;span class="notranslate"&gt;"Default Acces Type"&lt;/span&gt; (&lt;span class="notranslate"&gt;read only&lt;/span&gt; o &lt;span class="notranslate"&gt;write &amp;amp; read&lt;/span&gt;, dependiendo si deseamos que solo se tenga acceso de lectura o se pueda escribir en la cuenta twitter que acceda a la aplicación... nosotros elegimos write&amp;amp;read)&lt;br /&gt;
&lt;br /&gt;
Registrada nuestra aplicación, podemos utilizar en la pagina web que desarrollemos las diversas &lt;a href="http://dev.twitter.com/anywhere/begin" target="_blank"&gt;aplicaciones Anywhere&lt;/a&gt; que nos presenta la API, y entre las que destacamos las "Hovercards" (que a diferencia de las linkifyUsers, no solo nos direccionan a nuestras paginas Twitter, sino que nos permite mostrar el logo e&amp;nbsp;información&amp;nbsp;básica, y opción a seguirlas, y en un formato bastante apropiado, con solo pasar sobre el &lt;span class="notranslate"&gt;link&lt;/span&gt; el mouse), las &lt;span class="notranslate"&gt;"Twitter Box"&lt;/span&gt;, que nos permiten escribir en el muro de la cuenta Twitter de nuestros usuarios, y &lt;span class="notranslate"&gt;"User login &amp;amp; SignUp"&lt;/span&gt;, para controlar el acceso y salida de la cuenta Twitter de nuestro usuario.&lt;br /&gt;
&lt;br /&gt;
Detallamos a continuación el codigo de nuestra aplicación Anywhere que hemos detallado en nuestra pagina &lt;a href="http://mlaynessanchez.blogspot.com/2009/12/ayudanos-difundir-nuestra-comunidad.html" target="_blank"&gt;"Ayudenos a difundir nuestra comunidad"&lt;/a&gt;, la cual considera en forma conjunta la aplicación de las figuras de Anywhere que les hemos recomendado, y en la que debemos destacar los siguientes aspectos:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Utilizamos Anywhere sobre una misma pagina HTML, por lo que las instrucciones de conexion las colocamos en el mismo documento (a diferencia de utilizar el &lt;span class="notranslate"&gt;HEAD&lt;/span&gt; recomendado en la documentación de Twitter Anywhere), lo que es muy util cuando consideremos el desarrollo de widgets, gadgets o paginas independientes que utilizen Anywhere.&lt;/li&gt;
&lt;li&gt;Utilizamos la conexion a la librería "jsapi" de Google para tener acceso al framework JQuery que ésta nos proporciona (necesario para hacer uso de los comandos JQuery que utilizamos)&lt;/li&gt;
&lt;li&gt;y bueno, se requiere tener conocimientos basicos de JavaScript y JQuery, por lo que aprovecho la oportunidad para indicarles la direccion de un &lt;a href="http://www.w3schools.com/js/default.asp" target="_blank"&gt;tutorial javascript&lt;/a&gt; para consultas rapidas; y en lo que respecta a JQuery, les indico una &lt;a href="http://www.maestrosdelweb.com/editorial/javascript-facil-y-rapido-con-jquery/" target="_blank"&gt;pagina de introducción&lt;/a&gt; bastante util.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Detalle de nuestro codigo :&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="notranslate"&gt; &amp;lt;!-- loading ID de Aplicacion Twitter --&amp;gt;&lt;br /&gt;
&amp;lt;script charset='utf-8' src='http://platform.twitter.com/anywhere.js? id=nQjC8OfVtcUWjVjKW1ATlw&amp;amp;v=1' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;
twttr.anywhere(function (T) {&lt;br /&gt;
//T("##main-content").linkifyUsers();&lt;br /&gt;
T("#main-content").hovercards();&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;!-- Twitter Hovercards div --&amp;gt;&lt;br /&gt;
&amp;lt;div id="main-content"&amp;gt;&lt;br /&gt;
..and now, with Twitter @Anywhere you can connect directly with us: @IGCodelab_en&lt;br /&gt;
&amp;lt;span class="Apple-style-span" style="font-size: x-small;"&amp;gt;&amp;lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&amp;gt;(Put the mouse on the links)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- Twitter Anywhere --&amp;gt;&lt;br /&gt;
&amp;lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;
google.load("jquery", "1");&lt;br /&gt;
twttr.anywhere(function (T) {&lt;br /&gt;
var currentUser,&lt;br /&gt;
screenName,&lt;br /&gt;
profileImage,&lt;br /&gt;
profileImageTag;&lt;br /&gt;
&lt;br /&gt;
T("#tbox").tweetBox({&lt;br /&gt;
height: 100,&lt;br /&gt;
width: 400,&lt;br /&gt;
label: 'Post on your Twitter Wall...',&lt;br /&gt;
defaultContent: "I like Integracion Google. Check out our fan page into http://tinyurl.com/35ac3on\nhelp us to disseminate our project..!"&lt;br /&gt;
});&lt;br /&gt;
T("#withus").tweetBox({&lt;br /&gt;
height: 100,&lt;br /&gt;
width: 400,&lt;br /&gt;
label: 'Tell us your thoughts ....',&lt;br /&gt;
defaultContent: "@IGCodelab_en ..."&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function isConectado() {&lt;br /&gt;
$("#twitter-connect-placeholder").show();&lt;br /&gt;
$("#tbox").show();&lt;br /&gt;
$("#withus").show();&lt;br /&gt;
};&lt;br /&gt;
function noConectado() {&lt;br /&gt;
$("#twitter-connect-placeholder").hide();&lt;br /&gt;
$("#tbox").hide();&lt;br /&gt;
$("#withus").hide();&lt;br /&gt;
};&lt;br /&gt;
function myAvatar() {&lt;br /&gt;
document.getElementById('twitter-connect-placeholder').innerHTML="";&lt;br /&gt;
if (T.isConnected()) {&lt;br /&gt;
currentUser = T.currentUser;&lt;br /&gt;
screenName = currentUser.data('screen_name');&lt;br /&gt;
profileImage = currentUser.data('profile_image_url');&lt;br /&gt;
profileImageTag = "&amp;lt;img src='" + profileImage + "' style='cursor: hand; cursor: pointer; display: block; float: left; margin: 0px 10px 5px 0px; text-align: left;'/&amp;gt;";&lt;br /&gt;
$('#twitter-connect-placeholder').append('&amp;lt;p&amp;gt;' + profileImageTag + '&amp;lt;b&amp;gt;' + screenName + '&amp;lt;/b&amp;gt; esta conectado..!&amp;lt;/p&amp;gt;');&lt;br /&gt;
$("#twitter-connect-placeholder").append('&amp;lt;p&amp;gt;&amp;lt;button id="signout" type="button"&amp;gt;Sign out&amp;lt;/button&amp;gt;&amp;lt;p&amp;gt;');&lt;br /&gt;
$("#twitter-connect-placeholder").bind("click", function () {&lt;br /&gt;
twttr.anywhere.signOut();&lt;br /&gt;
});&lt;br /&gt;
};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
if (T.isConnected()) {&lt;br /&gt;
myAvatar();&lt;br /&gt;
isConectado();&lt;br /&gt;
} else {&lt;br /&gt;
noConectado();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
T("#connect").connectButton( {&lt;br /&gt;
authComplete: function(user) {&lt;br /&gt;
// alert("It's Connected");&lt;br /&gt;
myAvatar();&lt;br /&gt;
isConectado();&lt;br /&gt;
},&lt;br /&gt;
signOut: function() {&lt;br /&gt;
// alert("It's not Connected");&lt;br /&gt;
noConectado();&lt;br /&gt;
}&lt;br /&gt;
});&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;span id="connect"&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span id="twitter-connect-placeholder"&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div id="tbox"&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id="withus"&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
(Tenga cuidado con las instrucciones de inicio y fin de parrafo en &lt;b&gt;html&lt;/b&gt; (&lt;b&gt; &amp;lt;p&amp;gt; y &amp;lt;/p&amp;gt; )&lt;/b&gt;, pues el editor de Blogger usualmente corta la linea despues del primer &lt;b&gt;&amp;lt;p&amp;gt;&lt;/b&gt; cuando editamos nuestras paginas, y eso debe corregirse antes de grabarlas, sino nuestras pruebas y desarrollos no funcionaran).&lt;br /&gt;
&lt;br /&gt;
Con dicho código, y si accedemos a nuestra cuenta Twitter, se mostraría los &lt;span class="notranslate"&gt;Tweet Box &lt;/span&gt;en nuestra pagina como lo indicamos a continuación (si utiliza su propia pagina web, recuerde que debe ingresar el ID de su propia &lt;span class="notranslate"&gt;API KEY&lt;/span&gt; en el inicio del código):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2009/12/ayudanos-difundir-nuestra-comunidad.html" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_Myy7SL10ikw/TENij7kJORI/AAAAAAAAAPI/v7ZEnZhheW0/s400/TAnywhere.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Les indicamos asimismo, la pagina de la&lt;a href="http://dev.twitter.com/doc" target="_blank"&gt; documentación general de la API &lt;/a&gt;(disponible en la pagina del desarrollador), en la cual, además de Twitter Anywhere, podremos revisar todas las opciones de desarrollo que nos presenta Twitter; así como la documentación de &lt;a href="http://business.twitter.com/twitter101" target="_blank"&gt;Twitter para Negocios&lt;/a&gt;, cuya lectura tambien nos debe interesar y debemos tener presente.&lt;br /&gt;
&lt;br /&gt;
@Mlaynes&lt;br /&gt;
&lt;br /&gt;
&lt;a href="javascript:rut_facebook_110();" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 05px 09px 0px; text-align: left; width: 40px;" /&gt; Hablemos sobre Twitter..&lt;/a&gt;&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/05/hablemos-de-twitter.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-5268760729042167555?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/b0375jSpWSHwA1QuEQFktKlBKu4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b0375jSpWSHwA1QuEQFktKlBKu4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/b0375jSpWSHwA1QuEQFktKlBKu4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b0375jSpWSHwA1QuEQFktKlBKu4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/PUb4nkT773s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/5268760729042167555/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/05/hablemos-de-twitter.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/5268760729042167555?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/5268760729042167555?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/PUb4nkT773s/hablemos-de-twitter.html" title="Let's talk about Twitter" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_Myy7SL10ikw/TENij7kJORI/AAAAAAAAAPI/v7ZEnZhheW0/s72-c/TAnywhere.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/05/hablemos-de-twitter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UHR3czfCp7ImA9WhdUFU0.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-2392162792707327327</id><published>2010-05-07T20:31:00.000-07:00</published><updated>2011-10-01T15:47:16.984-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T15:47:16.984-07:00</app:edited><title>Let's talk about Facebook...</title><content type="html">&lt;div id="talerta"&gt;
&lt;/div&gt;
&lt;div id="talerta1"&gt;
&lt;/div&gt;
&lt;div id="alerta"&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id="alerta1"&gt;
Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;
&lt;script&gt;
var wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;script type="text/javascript"&gt;
// seleccion de facebook wall
function rut_invitar() {
  var wurl_facebook = '';
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  switch(wlanguage) {
  case 'es':
     wurl_facebook = "http://mlaynessanchez.blogspot.com/2009/12/ayudanos-difundir-nuestra-comunidad.html";
     break;
  case 'pt':
     wurl_facebook = "http://mlaynessanchez.blogspot.com/2009/12/ajude-nos-nossa-comunidade-muito-maior.html";
     break;
  default:
     wurl_facebook = "http://mlaynessanchez.blogspot.com/2010/05/help-us-make-our-community-much-larger.html";
  };
  window.open(wurl_facebook," ");
  return wurl_facebook;
};
&lt;/script&gt;&lt;br /&gt;
Al estar haciendo las modificaciones a nuestro Blog, para adicionarles servicios sociales y propiciar la difusión de nuestra comunidad utilizando Facebook, twitter, Google Buzz, etc.; y leyendo diversos comentarios al respecto, realmente nos resultan muy impresionantes las cifras asociadas a Facebook: a inicios del 2010, mas de 400 millones de usuarios y mas de US$300 millones anuales de ingresos, y las cifras siguen en aumento... al mes de Julio 2010 reportan mas de 500 millones de usuarios...en Marzo del 2011 ya son 600 millones, y a Julio del 2011 se habla ya de 750 millones de usuarios y alrededor de US$ 2,000 millones de dolares de ingresos &amp;nbsp;..y por supuesto, nuestras felicitaciones a Facebook, es innegable que brilla con luz propia y lo convierte en un servicio con vigencia para bastante tiempo.. pero no todo lo referido a Facebook brilla... y también encontré por ahí este post, y se los presento para su consideración:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://techtastico.com/post/10-razones-para-no-estar-en-facebook/" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5468753294112858658" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S-TqJXPYIiI/AAAAAAAAAKY/vSBCDXcVrpE/s200/No-usar-Facebook.jpg" style="cursor: hand; cursor: pointer; float: left; height: 28px; margin: 5px 10px 10px 0; width: 28px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;10 razones para no estar en Facebook&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Los términos del servicio de Facebook solamente benefician a Facebook.&lt;/li&gt;
&lt;li&gt;El CEO de Facebook (Mark Zuckerberg) tiene un historial documentado de comportamiento no ético.&lt;/li&gt;
&lt;li&gt;Facebook ha declarado la guerra contra la privacidad.&lt;/li&gt;
&lt;li&gt;Facebook constantemente está cambiando cual información se comparte y cual no sin tu consentimiento.&lt;/li&gt;
&lt;li&gt;Facebook no tiene buenas intenciones (..uy!)&lt;/li&gt;
&lt;li&gt;Toda tu información se comparte a través de las aplicaciones&lt;/li&gt;
&lt;li&gt;Facebook tiene muchos problemas técnicos (..uuy!)&lt;/li&gt;
&lt;li&gt;Es muy difícil eliminar tu cuenta de Facebook&lt;/li&gt;
&lt;li&gt;Facebook no soporta una Web abierta de verdad&lt;/li&gt;
&lt;li&gt;Facebook apesta (...que fuerte esto, no??)&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
y bueno, ...aunque no son necesarias las exageraciones, de todo esto algo hay de cierto, (pueden revisar informacion general, y sobre las políticas, criticas e impactos referidos a Facebook en &lt;a href="http://en.wikipedia.org/wiki/Facebook" target="_blank"&gt;wikipedia&lt;/a&gt;, la cual es un poco mas escueta pero también incisiva en su versión en &lt;a href="http://es.wikipedia.org/wiki/Facebook" target="_blank"&gt;español&lt;/a&gt;, siendo igual en las paginas para otros idiomas)&lt;br /&gt;
&lt;br /&gt;
Facebook es una herramienta muy poderosa e importante, pero los últimos cambios efectuados durante el 2010 y 2011, solo confirman la continuación del estándar "Facebook" (y aun cuando ahora recurren a conceptos mas "opensource", como el uso de SDK y manejo de iframes), sus entornos de programación se basan principalmente en codigos propios FBML,&amp;nbsp; FBJS, XFBML y una API -el SDK de Javascript- que a veces hace conflictos con nuestras propias funciones y aplicaciones (por lo que debemos probarlas bien al utilizarlas en nuestras websites); y el estandar de Facebook. realmente solo son aplicaciones símiles pero diferenciadas de HTML y Javascript; y por supuesto, ahora con la desactivacion de la aplicación &lt;b&gt;Static FBML&lt;/b&gt; ahora se requiere que todas nuestras paginas web en donde las utilicemos el SDK de Javascript de Facebook deban ser previamente "registradas" en &lt;span class="notranslate"&gt;&lt;b&gt;Facebook Developers&lt;/b&gt;&lt;/span&gt;... y bueno, estas maneras no son propios de desarrollos abiertos sino 'propietarios' (tipo Microsoft para ser mas exactos), y aunque las principales criticas a Facebook van referidas a sus políticas de Privacidad y manejo de su ahora apetecible y gigantesca base de datos de "gustos" de sus usuarios, a nivel técnico, Facebook se muestra bastante errático y cambiante respecto a sus estándares de desarrollo, los que como ahora, puede continuar cambiando cuando así lo estimen.. aunque en estos ultimos 02 años realmente han habido ya muchos cambios.. así que debemos empezar a ponernos al día....&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
En resumen, como se indica, parece que Facebook solo piensa en Facebook, pero como consecuencia de su innegable éxito, y por los parámetros propios del negocio publicitario, es muy difícil que se convierta en un servicio por el que los usuarios tengamos que pagar..(así lo anuncian.!); aparte que su entorno para instituciones y empresas (las llamadas &lt;span class="notranslate"&gt;&lt;b&gt;"fan pages"&lt;/b&gt;&lt;/span&gt;), es ahora realmente bastante sólido y eficiente, y deben ser considerados muy seriamente para su empleo en toda campaña publicitaria y de difusión a nivel local y/o global (por supuesto, siempre tomando nuestras respectivas precauciones respecto a temas de seguridad empresarial, institucional o personal principalmente en lo que respecta al manejo de información sensible o confidencial).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Considérese entonces que los comentarios presentados no deben significar que mantengamos una&amp;nbsp;posición&amp;nbsp;anti-Facebook, y reiteramos que e trata de una opción social muy eficiente y un innegable medio de mercadeo y difusión en plena vigencia y expansión... así que no dudemos en utilizar ese potencial para comunicar nuestros propios conceptos personales, empresariales o institucionales.. y así pensamos que debe hacerse... y por ello ahora también tenemos nuestra propia &lt;a href="javascript:rut_facebook();" target="_blank"&gt;pagina Facebook&lt;/a&gt;, bajo el formato &lt;span class="notranslate"&gt;&lt;b&gt;"fan page"&lt;/b&gt;&lt;/span&gt;, que como hemos indicado, Facebook ha mejorado notablemente (y que creo, es uno de las grandes "olvidos" del recién lanzado Google+), y que ahora nos permite una captación ilimitada de seguidores, y hace que la interacción entre las entidades y sus seguidores sea mas fácil para opinar, sugerir, hacer difusión y seguimiento de enlaces, publicación y etiquetado de fotos con comentarios personales o institucionales, etc.), y que por supuesto, también incluye modificaciones en su entorno de programación para desarrolladores, temas que tocaremos a continuación...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: red; font-size: large;"&gt;REFERENCIAS TECNICAS&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Para averiguar como agregar botones, enlaces y otros servicios sociales Facebook a nuestras paginas Web, existen múltiples foros y blogs dedicados al tema, pero manteniendo nuestro estilo de contribuir al estudio y la investigación, le pasamos los links "oficiales" de Facebook al respecto, y que en este caso toman particular relevancia, por cuanto, como indicamos en el principio de este post, FaceBook ha modificado bastante los parametros para desarrolladores desde mediados del año 2010 (..este 2011 ha continuado y en el futuro se espera mas modificaciones). Así que nos conviene revisar periódicamente los siguientes enlaces:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://developers.facebook.com/" target="_blank"&gt;Facebook Developers&lt;/a&gt;, imprescindible revisar el segmento "Add Facebook to my site".&lt;/li&gt;
&lt;li&gt;&lt;a href="http://es-es.facebook.com/pages/create.php" target="blank"&gt;Crear una Pagina&lt;/a&gt;, para crear paginas FaceBook (&lt;span class="notranslate"&gt;&lt;b&gt;"fan page"&lt;/b&gt;&lt;/span&gt;), para negocios, instituciones, de la comunidad, etc., &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.facebook.com/twitter/index.php" target="_blank"&gt;de FaceBook a Twitter&lt;/a&gt;, para vincular nuestras paginas Facebook a Twitter, haciendo que lo publicado por los administradores de nuestra pagina en el Muro se repliquen en Twitter...&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.facebook.com/facebook-widgets/index.php" target="_blank"&gt;Insignias de Facebooks&lt;/a&gt;, una colección completa de widgets de insignias, botones y otros servicios sociales de Facebook, que podemos pegar en nuestras paginas Web personales e institucionales, siendo esta una manera directa y fácil para empezar a utilizarlos.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.facebook.com/apps" target="_blank"&gt;Pagina de Desarrollador Facebook&lt;/a&gt;, la cual en el nuevo concepto de desarrollo de aplicaciones cobra bastante importancia por cuanto en ella podremos registrar nuestras paginas Web en donde querramos correr las insignias y servicios "enriquecidos" de Facebooks utilizando iframes y el SDK&amp;lt; de Javascript, entre otros entornos los que podemos empezar a revisar en el siguiente &lt;a href="https://developers.facebook.com/docs/" target="_blank"&gt;link&lt;/a&gt;, y probar su funcionamiento en su sección &lt;span class="notranslate"&gt;&lt;b&gt;"Tools"&lt;/b&gt;&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://developers.facebook.com/tools/console/" target="_blank"&gt;&lt;span class="notranslate"&gt;Javascript Test Console&lt;/span&gt;&lt;/a&gt;, que en su link &lt;span class="notranslate"&gt;&lt;b&gt;"examples"&lt;/b&gt;&lt;/span&gt; podemos seleccionar diversos ejercicios y ejemplos sencillos de aplicaciones del SDK Javascript de Facebook que podemos poner en nuestras websites o aplicaciones iFrames de nuestras &lt;span class="notranslate"&gt;&lt;b&gt;fan pages&lt;/b&gt;&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ya no existe Directorio de Aplicaciones&lt;/b&gt;, para acceder a las aplicaciones existentes basta con utilizar la opción &lt;b&gt;Buscar&lt;/b&gt; digitando su nombre, o acceder a ellas a través de las invitaciones de nuestras amistades directamente desde las entradas de nuestro Muro.&lt;/li&gt;
&lt;/ul&gt;
Todas estos links, y otros que conviene revisar, están disponibles desde nuestra propia cuenta personal Facebook, allí observe y revise las opciones del pie de página. opción &lt;a href="http://developers.facebook.com/?ref=pf" target="_blank"&gt;&lt;b&gt;Desarrolladores&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red; font-size: large;"&gt;&lt;b&gt;Prepárate para tu página "optimizada" Facebook.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
A partir del 23 de agosto del 2010, y continuando los cambios durante el presente año, Facebook simplificará sus páginas "para que sea más fácil navegar por ellas", confirmándose los siguientes cambios:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;El menú de usuarios en la parte superior de nuestras entradas es ahora de manejo exclusivo para aplicaciones de Facebook, ya no se puede poner aplicaciones propias o de terceros en las pestañas o "tabs" de la parte superior del Perfil de usuarios (ahora las "pestañas" de nuestras aplicaciones o terceros se ubican en la lista de aplicaciones de la pantalla de Inicio, en la barra izquierda, y en algunos casos, si tenemos varias aplicaciones instaladas, hay que expandir la vista para que aparezcan.. es decir..nuestras pestañas pueden estar ahora bastante escondidas ..y no muy accesibles para nuestros seguidores sino tenemos en cuenta la capacidad de espacio otorgado, es por ello que ahora el desarrollo de aplicaciones bajo Facebook utiliza mas el concepto de Aplicaciones por invitación sobre publicaciones en nuestro Muro como ocurre con los Juegos u otros...&lt;/li&gt;
&lt;li&gt;El espacio otorgado para la presentación de nuestros desarrollos se reducen ahora a 520 píxeles. Lo que debemos tener en cuenta al realizar nuestros desarrollos y realizar los ajustes necesarios en caso de anexar iframes, imagenes o cajas (las que debemos dimensionar al espacio disponible) ...&lt;/li&gt;
&lt;li&gt;Se ha efectuado mejoras para el formato personal y &lt;span class="notranslate"&gt;&lt;b&gt;"fan pages"&lt;/b&gt;&lt;/span&gt;. Ahora es bastante mas atractiva la interacción como el etiquetado de fotos pues estas se mostrarán en una barra en la parte superior de nuestra pagina personal o institucional; y para el caso de paginas personales, se ha mejorado bastante los datos de perfil profesional y de trabajo (los que también se muestran en la parte superior de nuestra pagina; y en el caso de las &lt;span class="notranslate"&gt;&lt;b&gt;"fan pages"&lt;/b&gt;&lt;/span&gt;, ahora podemos mostrarnos como indica nuestro nick, e incluso hacer comentarios como "representantes" de nuestra pagina (y con la imagen de perfil que registremos), como si se tratase de un usuario "normal", aunque esto aun no se habilita completamente para los foros, donde las publicaciones de los "administradores" son etiquetados como de la "pagina", y no se pueda hacer comentarios en foros de terceros como "representantes".&lt;/li&gt;
&lt;li&gt;Pero uno de los cambios principales para los desarrolladores es que a partir de&lt;b&gt; Marzo 2011&lt;/b&gt; Facebook ha desactivado las pestañas y aplicaciones FBML estático (que es una de las formas principales en que se adicionaban "pestañas" a nuestras paginas), por lo que ahora para crear "tabs" y aplicaciones para nuestras &lt;span class="no translate"&gt;&lt;b&gt;fans page&lt;/b&gt;&lt;/span&gt; de Facebook, debemos recurrir a los iFrames y al SDK de Javascript... (a la fecha sigue habiendo soporte a las aplicaciones FBML existentes pero con una funcionalidad reducida... pueda que algunos desarrollos FBML no funcionen correctamente..).&lt;/li&gt;
&lt;li&gt;Pueden revisar en nuestro foro mas información al respecto:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt; &lt;a href="http://tinyurl.com/3vyqwvp" target="_blank"&gt;http://tinyurl.com/3vyqwvp&lt;/a&gt; (en español)&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt; &lt;a href="http://tinyurl.com/3nrafbs" target="_blank"&gt;http://tinyurl.com/3nrafbs&lt;/a&gt; (in English)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
Algo imortante que debemos tomar a consideración respecto a este último punto descrito es al trabajar con iframes "propias" o de "terceros" en nuestras paginas facebook significa que ahora para "programar" las presentaciones de dichas páginas debemos utilizar lo convencional en desarrollo Web, vale decir, basicamente HTML, CSS y Javascript; pero dependiendo de la fuente de nuestra iframes, de ser propia por ejemplo, podremos utilizar herramientas propias de nuestro entorno de desarrollo como el empleo de back-end tipo PHP+MySQL u otros JSP, Java y MySQL, etc, con lo que nuestras "paginas" podrian convertirse en aplicaciones full dinámicas... vale decir, al fin Facebook se apertura a todas las opciones de desarrollo Web, aunque debemos de tomar muy en cuenta las "politicas de desarrollo" que nos plantea:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Actually, there is one exception: Facebook policy is that you ARE NOT ALLOWED have autoplaying media in a tab. So no autoplaying videos, songs, etc. in the tab.&lt;/b&gt; &lt;/li&gt;
&lt;/ul&gt;
Asi podremos observar que algunas funciones "autoplay" son incluso bloqueadas, por lo que debemos probar con detalle todos los desarrollos que realicemos para paginas Facebook.&lt;br /&gt;
&lt;br /&gt;
En resumen... Facebook ha mejorado bastante su presentación y perfil de "usuario" personal y de negocios con herramientas que son muy utiles para la gestión y mercadeo de nuestros proyectos personales, empresariales o institucionales .. todo es muy interesante.. pero el diseño general de la pagina es como siempre inamovible.. al estilo de Facebook..&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red; font-size: large;"&gt;&lt;b&gt;Agregando Facebooks a nuestras paginas Web&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href="javascript:rut_invitar();" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5448928392447543314" src="http://2.bp.blogspot.com/-MEPMcx4ojyI/TXRXQOqTaNI/AAAAAAAAAyg/-JuFskU930A/s200/Facebook%2Bin%2Bmy%2Bpage.bmp" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;..&lt;/a&gt;&lt;/div&gt;
Este es una forma de agregar plug-ins de Facebook a nuestras paginas, y las hemos utilizado para mantener una mejor interaccion con nuestros usuarios, y para que tambien nos puedan ayudar a &lt;a href="javascript:rut_invitar();" target="_blank"&gt;difundir nuestra comunidad&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Como lo hicimos?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
La imagen nos muestra como hemos efectuamos un enlace para que nuestros seguidores puedan efectuar comentarios en sus propios Muros personales, así como tambien muestra una caja con las entradas de nuestra &lt;span class="notranslate"&gt;&lt;b&gt;Fan page, &lt;/b&gt;la que aparece en nuestro Blog. D&lt;/span&gt;etallamos a continuación el&amp;nbsp;código&amp;nbsp;utilizado para que sirva de referencia:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt; &amp;lt;script&amp;gt;&lt;br /&gt;
function fbs_click() {&lt;br /&gt;
u=location.href;&lt;br /&gt;
t=document.title;&lt;br /&gt;
window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&amp;amp;t='+encodeURIComponent(t),' sharer', 'toolbar=0, status=0, width=626, height=436');&lt;br /&gt;
return false;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmlaynessanchez.blogspot.com" onclick="return fbs_click()" target="_blank" title="Coment about us on Facebook..!"&amp;gt; &lt;br /&gt;
&amp;lt;img src="http://4.bp.blogspot.com/_Myy7SL10ikw/S_X14ZtzaVI/AAAAAAAAAMY/Pu-Pwb6dHis/s1600/FbSobreNosotros.JPG" style="cursor: hand; cursor: pointer; display: block; float: left; height: 150px; margin: 0px 10px 5px 0px; text-align: left; width: 120px;" /&amp;gt;&amp;lt;span class="Apple-style-span" style="font-size: large;"&amp;gt;Comments about us..!&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Your support is very important to disseminate our project and bring together our users, fans GTUG, web developers and freelancers who are already using, or would like to use, the technology than Google puts at our disposal ...&lt;br /&gt;
&amp;lt;span class="Apple-style-span" style="font-size: x-small;"&amp;gt;&amp;lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&amp;gt;(click on the link or in the left image)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
..&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://www.facebook.com/plugins/likebox.php?id=120321264650448&amp;amp;amp;width=430&amp;amp;amp;height=650&amp;amp;amp;connections=10&amp;amp;amp;stream=true&amp;amp;amp;header=true" style="border: none; height: 650px; overflow: hidden; width: 430px;"&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Asimismo, al final de esta entrada podran observar un Plug-in para comentarios que ha sido desarrollado utilizando la&amp;nbsp;técnica&amp;nbsp;SDK de Javascript que ahora proporciona Facebook...&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Este plug-in de Comentarios de Facebook permite al usuario hacer incluso "comentarios de los comentarios" en cualquier página web. Los comentarios pueden ser referidos a una página, artículo, foto o cualquier contenido que indiquemos; y los comentarios que se hagan en páginas externas ahora también pueden aparecer en tu perfil de Facebook (si así lo desea el "comentarista", pues tiene la opción de activar o desactivar el posteo a su Muro)&lt;/div&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Como lo hicimos?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
Detallamos también a continuación nuestro codigo para que les sirva de referencia:&lt;/div&gt;
&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt; &amp;lt;script&amp;gt;&lt;br /&gt;
window.fbAsyncInit = function() {&lt;br /&gt;
FB.init({appId: ‘138465519521758”, status: true, cookie: true,&lt;br /&gt;
xfbml: true});&lt;br /&gt;
};&lt;br /&gt;
(function() {&lt;br /&gt;
var e = document.createElement(‘script’); e.async = true;&lt;br /&gt;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;&lt;br /&gt;
document.getElementById(‘fb-root’).appendChild(e);&lt;br /&gt;
}());&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id="fb-root"&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/05/hablemos-sobre-facebook.html" num_posts="5" width="450"&amp;gt;&amp;lt;/fb:comments&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
La primera parte, correspondiente a la definición FB.init, inicializa el SDK de Javascript vinculado a nuestra pagina Web, debiendo utilizar como &lt;b&gt;appId&lt;/b&gt; el numero obtenido al registrar la URL y la pagina específica donde se va a mostrar nuestra caja de comentarios; operación que debemos realizar la &lt;a href="https://developers.facebook.com/apps" target="_blank"&gt;Pagina del Desarrollador Facebook&lt;/a&gt; indicada.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Pueden tener mayor explicación del proceso revisando el siguiente link:&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href="http://www.faceblog.es/desarrollo-aplicaciones-para-facebook/fbjs/fbjs-como-instanciar-el-sdk/" target="_blank"&gt;http://www.faceblog.es/desarrollo-aplicaciones-para-facebook/fbjs/fbjs-como-instanciar-el-sdk/&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
La segunda parte corresponde al codigo XFBML que crea el plug-in de comentarios, el cual podemos generar de:  &lt;a href="http://developers.facebook.com/docs/reference/plugins/comments/" target="_blank"&gt;http://developers.facebook.com/docs/reference/plugins/comments/&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Realmente el código es bastante corto, y hay mas cosas que pueden ser consideradas, como "localizar" los mensajes a nuestro idioma ( por defecto la indicación &lt;b&gt;en_US&lt;/b&gt; muestra el formato &amp;nbsp;"&lt;span class="notranslate"&gt;&lt;b&gt;Like"&amp;nbsp;&lt;/b&gt;&lt;/span&gt;en vez de &lt;span class="notranslate"&gt;&lt;b&gt;"Me gusta"&lt;/b&gt;&lt;/span&gt;, para lo que tenemos que utilizar &lt;b&gt;es_LA&lt;/b&gt;), pero una opción que voy a empezar a revisar con detenimiento es respecto a las traducciones que por ejemplo se encuentra disponible en el widgets de comentarios del servicio Open Social de Google, con esto esta herramienta sería aún mas interesante... lo indicado son solo algunas de las opciones que ahora son posibles de considerar utilizando los enriquecidos "plug-ins" de Facebook.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Para los que por urgencia requieran continuar trabajando con FBML, conviene revisen el siguiente link:&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href="http://www.cuentamelared.com/alternativas-static-fbml/" target="_blank"&gt;http://www.cuentamelared.com/alternativas-static-fbml/&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
..y para empezar a revisar em manejo de iFrames conviene revisar este enlace:&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href="http://www.cuentamelared.com/como-crear-pestana-con-iframe/" target="_blank"&gt;http://www.cuentamelared.com/como-crear-pestana-con-iframe/&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Hablar de Facebook es hablar de difusión y mercadeo, por eso los invito a continuar con mayor detenimiento las nuevas herramientas y funcionalidades proporcionadas por Facebook, y también  revisar nuestra entrada referente a conceptos de &lt;a href="http://mlaynessanchez.blogspot.com/2010/05/web-20-los-negocios-y-las-redes.html" target="_blank"&gt;Web2.0: los negocios y las redes sociales&lt;/a&gt;.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Saludos.&lt;br /&gt;
@Mlaynes&lt;/div&gt;
&lt;br /&gt;
&lt;script&gt;
  var wlang;
  var wlanguage;
  var wValor;
  wlang=navigator.language;
  //document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  //wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  wValor = 'en_US';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
    switch( wlanguage ) {
      case 'en':
        wValor = 'en_US';
        break;
      case 'pt':
        wValor = 'pt_BR';
        break;
      case 'it':
        wValor = 'it_IT';
        break;
      case 'fr':
        wValor = 'fr_FR';
        break;
      case 'de':
        wValor = 'de_DE';
        break;
      case 'nl':
        wValor = 'nl_NL';
        break;
      case 'sv':
        wValor = 'sv_SE';
        break;
      case 'ja':
        wValor = 'ja_JP';
        break;
      case 'ru':
        wValor = 'ru_RU';
        break;
      case 'ko':
        wValor = 'ko_KR';
        break;
      case 'th':
        wValor = 'th_TH';
        break;
      case 'es':
        wValor = 'es_LA';
        break;
      default:
        wValor = 'en_US';
    }
  } else {
    wlanguage = ltarget;  
    wValor = 'en_US';
  };
  document.write('wlang : '+wlang+' - Browser : '+ wlanguage + ' - ');
  document.write('Locale : ' + wValor );

  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };

  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
  FB.init({appId: ‘138465519521758”, status: true, cookie: true,
  xfbml: true});
};
(function() {
  var e = document.createElement(‘script’); e.async = true;
  e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
  document.getElementById(‘fb-root-01’).appendChild(e);
}());
&lt;/script&gt;&lt;br /&gt;
&lt;div id="fb-root-01"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/05/hablemos-sobre-facebook.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="javascript:rut_facebook_100();" target="_blank"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 0px 0px 0px; text-align: left; width: 40px;" /&gt;Hablemos sobre Facebook..&lt;/a&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-2392162792707327327?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SAVQSVeSuR1zqSjmj8DztL7GXfA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SAVQSVeSuR1zqSjmj8DztL7GXfA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SAVQSVeSuR1zqSjmj8DztL7GXfA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SAVQSVeSuR1zqSjmj8DztL7GXfA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/l4uIRPtsqQM" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/2392162792707327327?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/2392162792707327327?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/l4uIRPtsqQM/hablemos-sobre-facebook.html" title="Let's talk about Facebook..." /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Myy7SL10ikw/S-TqJXPYIiI/AAAAAAAAAKY/vSBCDXcVrpE/s72-c/No-usar-Facebook.jpg" height="72" width="72" /><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/05/hablemos-sobre-facebook.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AFR3g8cSp7ImA9WhdUFU0.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-2488387715531149096</id><published>2010-04-22T06:32:00.000-07:00</published><updated>2011-10-01T15:55:16.679-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T15:55:16.679-07:00</app:edited><title>Adonde queremos llegar...</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;&lt;a href="https://sites.google.com/site/gdevelopercodelabs/" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s200/google_logo.jpg" style="cursor: hand; cursor: pointer; float: left; height: 35px; margin: 22px 15px 20px 0px; width: 100px;" /&gt;&lt;/a&gt;&lt;br /&gt;
Para las personas que han revisado nuestro Blog y les interese los temas propuestos, debe saber tambien cuales son nuestras inquietudes y expectativas respecto al desarrollo web y el mundo Google...&lt;br /&gt;
&lt;br /&gt;
Queremos llegar a ser un Developer &lt;span class="notranslate"&gt;Codelab Group, &lt;/span&gt; por cuanto, aunque pertenezco a GTUG-Peru (Grupo de Usuarios de la Tecnología Google), y &amp;nbsp;allí nos dedicamos a la investigación y aprendizaje de las herramientas y API de Google, muchas veces no contamos con una biblioteca de casos prácticos que "funcionen", que sean lo suficientemente explicados y que no sean excesivamente extensos, para que nos sirvan como modelos o tips de desarrollos propios.. aparte que el mundo Google y del desarrollo Web es realmente demasiado grande, y las agendas de los GTUG pues  están basicamente  orientadas a lo que es el mundo Google en general, que por cierto es sumamente importante, pero que tal vez no coincida con nuestras agendas e intereses, ..o a veces se pierde algo del entusiasmo en el grupo y no se avanza como se quisiera, o se nos presentan tantas cosas que avanzamos por todos lados pero no profundizamos mucho.. &lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;por ello nace este Blog, para que aparte del grupo que pertenezcamos o de nuestro interés personal, profesional o de trabajo, pues se forme una biblioteca de casos prácticos que podamos probar, y a los que se tenga acceso el código y que se nos explique algo del mismo.. para que aprendamos y los utilicemos en nuestros propios desarrollos web..&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;IMPORTANTE:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #2a8c00;"&gt;La idea es que revisen de vez en cuando los temas planteados pues ingresaremos comentarios o información en cada tema cuando sea necesario, mejoras del código, en fin... formar nuestra biblioteca de códigos.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Si hacen click en la imagen de Google, o en la pestaña Codelab del menu de nuestro blog, serán dirigidos a la pagina &lt;span class="notranslate"&gt;&lt;b&gt;Google Developer Codelab&lt;/b&gt;&lt;/span&gt;, que como verán, tiene unos ejemplos prácticos de introducción (y esos casos son los que a veces se llevan en los GTUG), pero considero que tomando en cuenta el enorme aporte de Google al desarrollo Web, esto aún esta iniciándose... (hay otros Tutoriales diseminados en las diversas paginas de &lt;span class="notranslate"&gt;Google Code&lt;/span&gt; que son muy importantes: como es el caso de &lt;a href="http://code.google.com/intl/es/appengine/docs/python/gettingstarted/" target="_blank"&gt;&lt;b&gt;Google AppEngine&lt;/b&gt;&lt;/a&gt; y &lt;a atrget="_target" href="http://code.google.com/intl/es/webtoolkit/doc/1.6/tutorial/index.html"&gt;&lt;b&gt;Google GWT&lt;/b&gt;&lt;/a&gt;, entre otros)&lt;br /&gt;
&lt;br /&gt;
Mucho me gustaría que se difunda el interés por participar en este tipo de proyectos.. por lo que si tienen algún código que deseen compartirlo será bienvenido, indiquemos un link de donde bajarlo (a través de Google Docs, de sus blogs o paginas personales por ejemplo), o envíelos a nuestros mails (imagen &lt;span class="notranslate"&gt;&lt;b&gt;Contact Us&lt;/b&gt;&lt;/span&gt; de nuestro blog), ..y nosotros nos comprometemos a revisarlos, probarlos, mejorarlos si es posible, ..y por supuesto... publicarlos en este Blog, ahora si la comunicación y afinidad con nosotros se hace mas fluída, no duden que podrán participar en la administración y publicación de temas y entradas.. y tambien por supuesto que el dominio de este Blog será cambiado a otro más alusivo a este anhelo: Integracón Google Developer Codelab, IGCodelab, &amp;nbsp;...ya veremos...&lt;br /&gt;
&lt;br /&gt;
Mucho nos gustaría hacer crecer rapidamente este proyecto pero las cosas siempre tienen su tiempo y su costo para organizarse, y formar una organización "sin fines de lucro" no debe significar que se trabaje a pérdida.. ..y bueno, como era de esperar, ya formamos parte del mundo de la publicidad que propicia Google a través de Adsense e Infolinks para ver si logramos financiarnos algo, vamos a ver como va así (y esperamos que tomen en especial consideración los anuncios y links que les presentamos en nuestro blog, para contribuir de alguna manera en su mantenimiento...)&lt;br /&gt;
&lt;br /&gt;
un "Developer Codelab Group" requiere un espacio, una infraestructura, uso de tiempo y servicios para la preparación de los eventos, contactar y ayudar en la preparacion de los expositores, etc., ya se nos ocurrirá algo pero comparto la idea de hacer un Developer Codelab presencial (para los que sean de la localidad) y otro on line con su respectiva biblioteca de Codigos (para los interesados), ..y &amp;nbsp;esos&amp;nbsp;códigos&amp;nbsp;tambien &amp;nbsp;deben ser publicados en el Blog... ya veremos.. descontando nuestro interés y entusiasmo ... no depende solo de nosotros ...también depende de todos ustedes...&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
Mientras tanto, los temas que propongamos van a seguir procurar el siguiente camino:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Ingresar al mundo Google y Web por el tema de las visualizaciones (mostrar datos en la mayor cantidad de opciones web que sean posible).&lt;/li&gt;
&lt;li&gt;Interactuando con bases de datos (que comprende las clásicas opciones de mantenimiento de ingreso, modificación, consulta (visualizaciones), e impresión en la mayor cantidad de opciones web posibles)&lt;/li&gt;
&lt;li&gt;Ingresar al mundo de los dispositivos móviles y su integración al mundo Web y Google en particular...&lt;/li&gt;
&lt;li&gt;Desarrollo en el MundoWeb en general.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;Nota Agregada: &lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #2a8c00;"&gt;Considerando el interes del uso de las redes sociales en el mundo de los negocios, también tocaremos respecto a ese punto, como programar para esos entornos, ...y como integrarlos a nuestros proyectos, aparte que Google nos proporciona varias herramientas Opensocial que incluso ya estamos empleando en el desarrollo de nuestro Blog..&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;...Bienvenidos a &lt;span class="notranslate"&gt;Integracion Google..!&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Y no olviden el comentario que les puse en el post anterior respecto a que por lo menos debemos revisar y contar con las siguientes herramientas Google:&lt;br /&gt;
&lt;br /&gt;
* Nuestra &lt;a href="http://www.google.com/accounts" rel="nofollow" style="color: #448888;" target="_blank"&gt;cuenta&lt;/a&gt; Google (imprescindible)&lt;br /&gt;
* Nuestra página personal&amp;nbsp;&lt;a href="http://www.google.com/ig" rel="nofollow" style="color: #448888;" target="_blank"&gt;iGoogle&lt;/a&gt; (para probar nuestros gadgets)&lt;br /&gt;
* Nuestro servicio Google &lt;a href="http://docs.google.com/" rel="nofollow" style="color: #448888;" target="_blank"&gt;Docs&lt;/a&gt;, para subir lo que queramos (imágenes, spreadsheets, documentos, presentaciones, archivos zip, etc.), para trabajarlos o compartirlos con quien queramos...&lt;br /&gt;
* Nuestro &lt;a href="http://www.blogger.com/" rel="nofollow" style="color: #448888;" target="_blank"&gt;Blog&lt;/a&gt; (..porque no?), allí también podemos probar nuestros gadgets, y al desarrollarlos nos permite actualizar nuestros conocimientos de HTML/Javascript/CSS y todos los &lt;span class="notranslate"&gt;frameworks&lt;/span&gt; complementarios que querramos (jQuery, Prototype, etc)&lt;br /&gt;
* También sería interesante descargar Google &lt;a href="http://desktop.google.com/" rel="nofollow" style="color: #448888;" target="_blank"&gt;Desktop&lt;/a&gt;, que también nos permite utilizar gadgets y probar los nuestros...&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Asimismo, los animo nuevamente a revisar y releer cada cierto tiempo nuestras entradas por cuanto serán actualizadas segun haya novedades para cada caso propuesto.&lt;/div&gt;&lt;div&gt;Saludos&lt;/div&gt;&lt;div&gt;@Mlaynes&lt;/div&gt;&lt;/div&gt;&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
  FB.init({appId: ‘138465519521758”, status: true, cookie: true,
  xfbml: true});
};
(function() {
  var e = document.createElement(‘script’); e.async = true;
  e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
  document.getElementById(‘fb-root-01’).appendChild(e);
}());
&lt;/script&gt;&lt;br /&gt;
&lt;div id="fb-root-01"&gt;&lt;/div&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/04/adonde-queremos-llegar.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-2488387715531149096?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ngKJS6W-rpavxsDP6HDA2cRqulc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ngKJS6W-rpavxsDP6HDA2cRqulc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ngKJS6W-rpavxsDP6HDA2cRqulc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ngKJS6W-rpavxsDP6HDA2cRqulc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/jYhT0Yi3G3U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/2488387715531149096/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/04/adonde-queremos-llegar.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/2488387715531149096?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/2488387715531149096?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/jYhT0Yi3G3U/adonde-queremos-llegar.html" title="Adonde queremos llegar..." /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s72-c/google_logo.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/04/adonde-queremos-llegar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUNRnY8fip7ImA9WhdUFUw.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-6672930636064056603</id><published>2010-04-19T20:26:00.001-07:00</published><updated>2011-10-01T16:04:57.876-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T16:04:57.876-07:00</app:edited><title>Localización e Internacionalización de nuestro Blog y Paginas Web</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;&lt;a href="http://www.google.com/webelements/" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s200/google_logo.jpg" style="cursor: hand; cursor: pointer; float: left; height: 35px; margin: 22px 15px 0px 0px; width: 100px;" /&gt;&lt;/a&gt;&lt;br /&gt;
Preparándonos para poder atender consultas de amigos extranjeros, especialmente de algunos de habla inglesa que conocemos, y con quienes compartimos la idea de preparar estas practicas tipo &lt;span class="notranslate"&gt;"Developer Codelabs",&lt;/span&gt; hemos recurrido nuevamente a la Tecnología Google para tratar de internacionalizar nuestro Blog...&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;h1&gt;Google Traductor&lt;/h1&gt;&lt;/span&gt;&lt;br /&gt;
Google Traductor es una herramienta interesante para evitarnos una traducción pagina por pagina de nuestros desarrollos, aún no lo hemos probado integrado a ExtJs, pero consideramos que no debe haber ningún inconveniente, por cuanto, si han revisado el &lt;span class="notranslate"&gt;Code Playground&lt;/span&gt; de Google, ya deben haber identificado, y tal vez probado, algunas opciones de Traducción utilizando el &lt;a href="http://code.google.com/apis/ajax/playground/#translate" target="_blank"&gt;API language&lt;/a&gt; que nos ofrece Google.&lt;br /&gt;
&lt;br /&gt;
Aunque en esta oportunidad henos utilizado el elemento &lt;span class="notranslate"&gt;&lt;span style="font-weight: bold;"&gt;"translate"&lt;/span&gt;&lt;/span&gt;  de &lt;a href="http://www.google.com/webelements/translate/" target="_blank"&gt;Google Web Elements&lt;/a&gt;, mediante el cual, insertado un código HTML, Google nos permite que nuestros usuarios seleccionen el idioma que les sea más familiar para leer nuestras paginas web.. más aún, dependiendo del idioma predeterminado de nuestro navegador y del idioma en que esté hecha las páginas web, Google podría hacer una traducción automática (solo se cambia un parámetro &lt;span class="notranslate"&gt;&lt;b&gt;"style"&lt;/b&gt;&lt;/span&gt;; pero como no me convenció su desempeño, he preferido mantener la web en su fuente original (el español), y que Uds. amigos, seleccionen el idioma que más les convenga... además es importante que se conozca que nuestra lengua materna es el español.&lt;br /&gt;
&lt;br /&gt;
Nos conviene utilizar esta herramienta por cuanto, &lt;b&gt;en primer lugar&lt;/b&gt;, mejoraremos nuestra redacción, por cuanto mientras mejor escribamos mejor será la traducción; &lt;b&gt;en segundo lugar&lt;/b&gt;, porque si no nos convence la traducción podremos remitir nuestras propias trducciones las que son utilizadas por Google para que vaya mejorando su herramienta de traducción automatica, &lt;b&gt;y en tercer lugar&lt;/b&gt;, porque en nuestro proceso de aprendizaje de diversos idiomas, Google nos ofrece la opción de&amp;nbsp;&lt;a href="http://translate.google.es/#auto|en|Nuestro%20blog%20esta%20escrito%20en%20espa%C3%B1ol%2C%20pero%20ahora%20puedes%20seleccionar%20el%20idioma%20que%20sea%20m%C3%A1s%20f%C3%A1cil%20de%20emplear%20para%20ti" target="_blank"&gt;escuchar&amp;nbsp;su pronunciación&lt;/a&gt; (disponible para inglés, español, portugues, frances, coreano, chino, entre otras y Google va adicionando poco a poco más idiomas, y aunque los parrafos&amp;nbsp;aún&amp;nbsp;deben ser cortos, son lo suficiente para que esta herramienta nos sea sumamente útil... interesante no?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Como lo hicimos?&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;Este Blog es Blogger (que es de Google también), y al seleccionar la opción acceder/personalizar/diseño añadimos un Gadget HTML/Javascript (que nos permite ingresar directamente nuestros propios codigos para lo que queramos...). &lt;/div&gt;&lt;div&gt;Y alli ingresamos el siguiente código:&lt;/div&gt;&lt;div&gt;&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
&amp;lt;!-- Google Translate Element --&amp;gt;&lt;br /&gt;
&amp;lt;id="google_translate_element" style="display:block"&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
function googleTranslateElementInit() {&lt;br /&gt;
new google.translate.TranslateElement({pageLanguage: "es"}, "google_translate_element");&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Source: Español (Spanish)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
El código es tan corto que realmente hay poco por explicar...&lt;br /&gt;
tal vez indicar que es indispensable indicar el idioma original de nuestra pagina &lt;span class="notranslate"&gt;("pageLanguage")&lt;/span&gt;; y que si indicamos &lt;span class="notranslate"&gt;style="display:none"&lt;/span&gt;, el manual indica que la traducción sería automática respecto al idioma predeterminado de nuestro navegador.. pero he encontrado foros con dudas y mejoras del código porque esa opción no parece funcionar muy bien... bueno, pero tambien podemos hacer que aparezcan solo algunos idiomas.. como siempre, hay para investigar y probar..&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Que es esto ? &lt;/h1&gt;&lt;br /&gt;
&lt;iframe frameborder="0" height="350" marginheight="0" marginwidth="0" scrolling="no" src="http://www.openstreetmap.org/export/embed.html?bbox=-77.00349,-12.13622,-76.99227,-12.12705&amp;amp;layer=mapnik&amp;amp;mlat=-12.131460578575&amp;amp;mlon=-76.994376179481" style="border: 1px solid black;" width="425"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;small&gt;&lt;a href="http://www.openstreetmap.org/?mlat=-12.131460578575&amp;amp;mlon=-76.994376179481&amp;amp;zoom=5&amp;amp;layers=M" target="_blank"&gt;Go to OpenstreetMaps&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="350" marginheight="0" marginwidth="0" scrolling="yes" src="http://www.openstreetmap.org/?minlon=22.3418234&amp;amp;minlat=57.5129102&amp;amp;maxlon=22.5739625&amp;amp;maxlat=57.6287332&amp;amp;box=yes&amp;amp;mlat=57.5529102&amp;amp;mlon=22.5148625" style="border: 1px solid black;" width="425"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;small&gt;&lt;a href="http://www.openstreetmap.org/?mlat=-12.131460578575&amp;amp;mlon=-76.994376179481&amp;amp;zoom=5&amp;amp;layers=M" target="_blank"&gt;Go to OpenstreetMaps&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;
&lt;br /&gt;
Es una aplicacion opensource para poder usar mapas y trabajar geolocalizacion sin interferencias ni restricciones de ningun tipo (incluidas las de &lt;span class="notranslate"&gt;Google Adsense&lt;/span&gt;).&lt;br /&gt;
Para utilizar esta herramienta solo basta ir a la pagina web del proyecto, seleccionar el area a mostrar y elegir la opcion "exportar" (a HTML), el cual nos genera un codigo HTML de un iframe que podemos pegar en nuestra web, y lo que es bastante importante, hasta en nuestras &lt;span class="notranslate"&gt;&lt;b&gt;"fan pages"&lt;/b&gt;&lt;/span&gt; de Facebook (y por eso le hacemos referencia)&lt;br /&gt;
&lt;br /&gt;
Puedes revisar el siguiente link;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.facebook.com/pages/Integration-ourselves-to-Google/120321264650448?sk=app_249347133607" target="_blank"&gt;http://www.facebook.com/pages/Integration-ourselves-to-Google/120321264650448?sk=app_249347133607&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;direccionando nuestros &lt;span class="notranslate"&gt;"links"&lt;/span&gt;..&lt;/h1&gt;&lt;br /&gt;
y para concluir el proceso, hemos abierto varias &lt;span class="notranslate"&gt;&lt;b&gt;fans page&lt;/b&gt;&lt;/span&gt; en facebook, como el caso de nuestra pagina en ingles, así que los seguidores con idioma de navegador diferente del español, sus accesos a facebook serán dirigidos a dicha página (incluido su foro); los seguidores en español son dirigidos a la pagina facebook en español por supuesto..&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Como hicimos esto?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Pues similar al caso anterior, agregamos otro gadget HTML/Javascript a nuestro Blog e insertamos el siguiente código:&lt;/div&gt;&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
wlang=navigator.language;&lt;br /&gt;
//document.write(\'Navegador: \'+wlang);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Choosing facebook wall..&lt;br /&gt;
function rut_facebook() {&lt;br /&gt;
var wurl_facebook = \'\';&lt;br /&gt;
var wlanguage = wlang;&lt;br /&gt;
wlanguage = wlang.substr(0,2);&lt;br /&gt;
if(wlanguage==\'es\'){&lt;br /&gt;
wurl_facebook = "http://www.facebook.com/group.php? gid=118999028117456&amp;amp;amp;v=wall";&lt;br /&gt;
} else {&lt;br /&gt;
wurl_facebook =   "http://www.facebook.com/group.php?gid=106728576035212&amp;amp;v=wall";&lt;br /&gt;
};&lt;br /&gt;
/*&lt;br /&gt;
alert(\'wlang: \'+wlang+\'\n\'+\'wlanguage: \'+ wlanguage+\'\n\'+wurl_facebook);&lt;br /&gt;
*/&lt;br /&gt;
window.open(wurl_facebook,"_blank");&lt;br /&gt;
return wurl_facebook;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Choosing facebook forum&lt;br /&gt;
function rut_facebook_00() {&lt;br /&gt;
var wurl_facebook = \'\';&lt;br /&gt;
var wlanguage = wlang;&lt;br /&gt;
wlanguage = wlang.substr(0,2);&lt;br /&gt;
if(wlanguage==\'es\'){&lt;br /&gt;
wurl_facebook = "http://www.facebook.com/group.php?gid=118999028117456&amp;amp;v=app_2373072738";&lt;br /&gt;
} else {&lt;br /&gt;
wurl_facebook =   "http://www.facebook.com/group.php?gid=106728576035212&amp;amp;v=app_2373072738";&lt;br /&gt;
};&lt;br /&gt;
window.open(wurl_facebook,"_blank");&lt;br /&gt;
return wurl_facebook;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//our image code..&lt;br /&gt;
&amp;lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="javascript:rut_facebook();" target="_blank"&amp;gt;&amp;lt;img style="display:block; margin:0px auto 0px; text-align:center;cursor:pointer; cursor:hand;width: 145px; height: 25px;" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S8qIVq2WcEI/AAAAAAAAAJQ/QUeL7SLvnGI/s200/inFacebook.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5461327404001030210" /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Las direcciones indicadas apuntan por supuesto a las paginas de facebook en español e ingles según el caso.. y asimismo modifico el parametro &lt;span class="notranslate"&gt;&lt;span style="font-weight: bold;"&gt;"href"&lt;/span&gt;&lt;/span&gt; del codigo que carga la imagen de facebook insertada en el gadget, pasando como vinculo a la función javascript que nos dirigirá a las rutas que les hemos indicado...&lt;br /&gt;
&lt;br /&gt;
E.n realidad, en ese mismo gadget yo he cargado cerca de 15 funciones, que son las que me dirigen a cada foro al hacer click en los logos de facebook que aparecen en algunos temas (solo basta modificar el vinculo &lt;span class="notranslate"&gt;&lt;span style="font-weight: bold;"&gt;"href"&lt;/span&gt;&lt;/span&gt; de la imagen que carguemos para que llame a nuestra función), eso nos facilita el mantenimiento de la pagina sin recurrir al &lt;span class="notranslate"&gt;&lt;b&gt;head&lt;/b&gt;&lt;/span&gt; de nuestra pagina html.. y el asunto funciona bien... (lo que podremos aplicar al llegar desarrollo de Gadgets y Widgets), así que así lo dejamos por el momento, hasta ver posibilidades de nuevas mejoras..&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;..el Boton &lt;span class="notranslate"&gt;"Translatethis"&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Considerando una mejora utilizar una traducción empleando medios visuales, tambien hemos probado la herramienta &lt;a href="http://translateth.is/"&gt;TranslateThis Button&lt;/a&gt;, desarrollada empleando Ajax y el API language de Google, es free, permite varias opciones de configuración (lea la documentación al respecto), y funciona bien para muchos casos; con el siguiente código:&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
&amp;lt;!-- Begin TranslateThis Button --&amp;gt;&lt;br /&gt;
&amp;lt;span class="notranslate"&amp;gt;&lt;br /&gt;
&amp;lt;div id="translate-this"&amp;gt;&amp;lt;a href="http://translateth.is/" class="translate-this-button"&amp;gt;Translate&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;script type="text/javascript" src="http://www.google.com/jsapi"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type="text/javascript" src="http://x.translateth.is/translate-this.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;
TranslateThis({&lt;br /&gt;
&amp;nbsp;&amp;nbsp;fromLang : 'es', // Native language of your site&lt;br /&gt;
&amp;nbsp;&amp;nbsp;busyText: 'Preparing the translation...',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;GA : true, // Google Analytics tracking&lt;br /&gt;
//cookie: 'tt-lang', // Name of the cookie, 0 = disable&lt;br /&gt;
&amp;nbsp;&amp;nbsp;ddLangs : [ // Languages in the dropdown&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'es',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'en',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'pt-PT',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'fr',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'it',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'ru',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'ar',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'zh-CN',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'ja',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'ko'&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;noBtn: false, //whether to disable the button styling&lt;br /&gt;
&amp;nbsp;&amp;nbsp;btnImg : 'http://x.translateth.is/tt-btn1.png',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;btnWidth : 148,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;btnHeight : 18,&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;..el idioma de nuestro navegador&lt;/h1&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;En nuestros enlaces a Facebook, ahora en 3 idiomas: español, inglés y portugues; hemos hecho variaciones para absolver unas incompatibilidades del Internet Explorer que no reconoce el idioma del navegador empleando la propiedad language del objeto navigator.(sino navigator.browserLanguage), y asimismo que no reconoce directamente a las funciones javascript en las referencias (para lo que hemos utilizado el&amp;nbsp;método&amp;nbsp;"void"), y el código indicado tiene las siguientes variaciones:&lt;/li&gt;
&lt;/ul&gt;--&amp;gt; Para indicar el idioma del navegador hemos utilizado los condiciones de IE y las propiedades navigator.language y navigator.browserLanguage indicadas:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
wlang=navigator.language;&lt;br /&gt;
//document.write('Navegador: '+wlang);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;!--[if IE]&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
wlang=navigator.browserLanguage;&lt;br /&gt;
//document.write('Navegador: '+wlang);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; ...y para las referencias de las imagenes que nos dirigen a cada pagina Facebook, utilizamos el metodo void, como se indica:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
&amp;lt;a href="javascript:void(rut_facebook());"&amp;gt;myPicture&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;..nuestra opcion &lt;span class="notranslate"&gt;"Contact us"&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Para contartarse con nosotros vía correo GMail, utilizamos el siguiente codigo:&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;
function emailForm(){&lt;br /&gt;
var daReferrer = document.referrer; &lt;br /&gt;
var email = ""; &lt;br /&gt;
var wlanguage = wlang;&lt;br /&gt;
var body_message = "";&lt;br /&gt;
wlanguage = wlang.substr(0,2);&lt;br /&gt;
switch(wlanguage) {&lt;br /&gt;
case 'es':&lt;br /&gt;
email= "gicodelab.es@gmail.com"; &lt;br /&gt;
body_message = "Gracias por contactarse con Integracion Google..%0DFavor considere las normas normales de moderacion, trato cordial y buena redacción";&lt;br /&gt;
break;&lt;br /&gt;
case 'pt':&lt;br /&gt;
email= "igcodelab.pt@gmail.com";&lt;br /&gt;
bodu_message = "Obrigado por contactar a Integração Google ..%0DPor favor, considere as regras normais de moderacao, simpatia e boa redacao";&lt;br /&gt;
break;&lt;br /&gt;
default:&lt;br /&gt;
email= "igcodelab.en@gmail.com";&lt;br /&gt;
body_message = "Thank you for contacting Google Integration ..%0DPlease consider the normal rules of moderation, friendliness and good drafting";&lt;br /&gt;
break;&lt;br /&gt;
};&lt;br /&gt;
var errorMsg = "error message"; &lt;br /&gt;
var subject = "Exception Error"; &lt;br /&gt;
var body_message = "%0D%0D%0D%0D:%0D-----------------------------------------------------------------------%0D"+body_message+"%0D@IG-Codelab Group";&lt;br /&gt;
var mailto_link = 'mailto:'+email+'? subject='+subject+'&amp;amp;body='+body_message;&lt;br /&gt;
win = window.open(mailto_link,'emailWin'); &lt;br /&gt;
//window.open('mailto:gicodelab.es@gmail.com')&lt;br /&gt;
/* Abre ventana flotante */&lt;br /&gt;
if (win &amp;amp;&amp;amp; win.open &amp;amp;&amp;amp;!win.closed) win.close(); &lt;br /&gt;
return mailto_link;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Form directo OnClick&lt;br /&gt;
&amp;lt;div style="border:1px solid black;padding:2px;"&amp;gt; &lt;br /&gt;
&amp;lt;a href="#" onclick="emailForm();"&amp;gt;Contact us&amp;lt;/a&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="javascript:void(emailForm());"&amp;gt;&amp;lt;img style="float:left; display:block; margin:0px auto 0px; text-align:left;cursor:pointer; cursor:hand;width: 148px; height: 37px;" src="http://2.bp.blogspot.com/_Myy7SL10ikw/S-tt6pvmxcI/AAAAAAAAALY/nZ4KfpIwR5E/s1600/IgContactUs.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5469673187419347922" /&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Nota:&lt;/b&gt; En el cuerpo del mail evite en lo posible el uso de caracteres acentuados: áéíóú u otros especiales como dierises, acentos inversos, simbolos u otros, por cuanto "cuelgan" la aplicacion (aún no he encontrado como evitar este efecto y poder utilizar cualquier codigo ascii, habiendo probado incluso utilizando directamente codigos hexadecimales).&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;..el &lt;span class="notranslate"&gt;API language&lt;/span&gt; de Google&lt;/h1&gt;&lt;br /&gt;
En lo que respecta a las traducciones de la "alerta" de uso del recuadro de Google Traductor (para seguidores de distintos idiomas), hemos utilizado la API de Google Language y la libreria JQuery (con lo podriamos dar diversos efectos a dicha alerta), utilizando el siguiendo codigo:&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
&amp;lt;div id="talerta"&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id="talerta1"&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id="alerta"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class="Apple-style-span" style="color: green; font-size: large;"&amp;gt;&amp;lt;b&amp;gt;Recuerde que..&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id="alerta1"&amp;gt;&lt;br /&gt;
Este blog esta desarrollado en idioma español pero utilizando &amp;lt;b&amp;gt;&amp;lt;span class="notranslate"&amp;gt; Google Traductor &amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &amp;lt;span class="notranslate"&amp;gt;Integracion Google.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
y en cualquier otra parte de nuestra pagina html:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;span class="Apple-style-span" style="color: #6600cc;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
&amp;lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
wlang=navigator.language;&lt;br /&gt;
//document.write('Navegador: '+wlang);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;
google.load("jquery", "1");&lt;br /&gt;
google.load("language", "1");&lt;br /&gt;
var wlanguage = wlang;&lt;br /&gt;
wlanguage = wlang.substr(0,2);&lt;br /&gt;
document.write('Navegador: '+wlanguage );&lt;br /&gt;
var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';&lt;br /&gt;
var ltarget = 'en';&lt;br /&gt;
var npos = cadlanguage. lastIndexOf(wlanguage);&lt;br /&gt;
if (npos&amp;gt;0) {&lt;br /&gt;
wlanguage = cadlanguage.substr(npos,2); &lt;br /&gt;
} else {&lt;br /&gt;
wlanguage = ltarget;  &lt;br /&gt;
};&lt;br /&gt;
function enespanol() {&lt;br /&gt;
jQuery("#alerta").hide();&lt;br /&gt;
$("#alerta1").hide();&lt;br /&gt;
};&lt;br /&gt;
function initialize() {&lt;br /&gt;
var texto = document.getElementById("alerta").innerHTML;&lt;br /&gt;
google.language.translate(texto, 'es', wlanguage, function(result) {&lt;br /&gt;
var translated = document.getElementById("talerta");&lt;br /&gt;
if (result.translation) {&lt;br /&gt;
translated.innerHTML = result.translation;&lt;br /&gt;
}&lt;br /&gt;
});&lt;br /&gt;
var texto1 = document.getElementById("alerta1").innerHTML;&lt;br /&gt;
google.language.translate(texto1, 'es', wlanguage, function(result) {&lt;br /&gt;
var translated = document.getElementById("talerta1");&lt;br /&gt;
if (result.translation) {&lt;br /&gt;
translated.innerHTML = result.translation;&lt;br /&gt;
}&lt;br /&gt;
});&lt;br /&gt;
enespanol();&lt;br /&gt;
};&lt;br /&gt;
if (wlanguage != 'es') {  &lt;br /&gt;
google.setOnLoadCallback(initialize);&lt;br /&gt;
} else {&lt;br /&gt;
google.setOnLoadCallback(enespanol);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;ranslate"&amp;gt;Integracion Google.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Nota:&lt;/b&gt; Este codigo utiliza una API Key de Google, la cual debemos personalizar para nuestras propias paginas web, al igual como hicimos con la API de Google de Maps en nuestros post de Integraciuon Google &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" target="_blank"&gt;1ra&lt;/a&gt; y &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="_blank"&gt;2da&lt;/a&gt; parte (en este caso nos referimos a la &lt;a href="http://code.google.com/intl/es/apis/loader/signup.html" target="_blank"&gt;&lt;span class="notranslate"&gt;API Key&lt;/span&gt; de Google&lt;/a&gt;, la cual nos permite emplear las diversas API de Google, entre ellas Google Language y de Librerias (&lt;span class="notranslate"&gt;frameworks&lt;/span&gt;), esta ultima que nos permite tener acceso a JQuery, Dojo, Prototype, entre otros frameworks)&lt;br /&gt;
&lt;br /&gt;
Saludos&lt;br /&gt;
@Mlaynes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="javascript:void(rut_facebook_60());"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 5px 0px 0px; text-align: left; width: 40px;" /&gt;Opina sobre las herramientas y API de Google..!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/04/localizacion-e-internacionalizacion-de.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-6672930636064056603?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ryMjrSUPDioZCBQr-zmXa677WuA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ryMjrSUPDioZCBQr-zmXa677WuA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ryMjrSUPDioZCBQr-zmXa677WuA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ryMjrSUPDioZCBQr-zmXa677WuA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/9eMSCAu2GV0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/6672930636064056603/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/04/localizacion-e-internacionalizacion-de.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/6672930636064056603?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/6672930636064056603?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/9eMSCAu2GV0/localizacion-e-internacionalizacion-de.html" title="Localización e Internacionalización de nuestro Blog y Paginas Web" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s72-c/google_logo.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/04/localizacion-e-internacionalizacion-de.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIHRHkzfip7ImA9WhdUFUw.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-1500257789849146377</id><published>2010-04-15T09:47:00.000-07:00</published><updated>2011-10-01T16:08:55.786-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T16:08:55.786-07:00</app:edited><title>Integracion a Google AppEngine</title><content type="html">&lt;div id="talerta"&gt;
&lt;/div&gt;
&lt;div id="talerta1"&gt;
&lt;/div&gt;
&lt;div id="alerta"&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id="alerta1"&gt;
Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;
&lt;a href="http://code.google.com/intl/es-ES/" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s200/google_logo.jpg" style="cursor: hand; cursor: pointer; float: left; height: 35px; margin: 22px 15px 0px 0px; width: 100px;" /&gt;&lt;/a&gt;&lt;br /&gt;
Y bueno amigos, a lo que finalmente queríamos llegar.. y que fue motivo de una consulta en el foro de Quizzpot que ha tenido muchas visitas pero pocas ayudas técnicas: la integración de nuestras aplicaciones&amp;nbsp;a Google App Engine, utilizando ExtJs o cualquier otro framework,..&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Los que han revisado este Blog desde el principio han de recordar que les propuse la vista de un vídeo de Google sobre App Engine en la que se nos presenta las atractivas ventajas de utilizar &lt;span class="notranslate"&gt;Google App Engine&lt;/span&gt; para nuestros desarrollos web:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://www.youtube.com/watch?v=9Ocjqxhh3RQ" target="_blank"&gt;www.youtube.com/watch?v=9Ocjqxhh3RQ&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
En su parte inicial, este vídeo nos explica claramente la importancia y ventajas de utilizar Google App Engine en nuestros proyectos.. pero siguiendo el desarrollo del video, vemos después que el ejemplo que nos presentan no nos resultó suficiente para entusiasmarnos (no se plantea claramente los resultados buscados con el ejercicio que desarrollan y se pierde algo de la visión de las ventajas innegables de AppEngine); por lo que aprovechando en efectuar nuestras propias pruebas, les presentamos en esta entrada algunos tips para poder iniciarnos en &lt;span class="notranslate"&gt;Google App Engine&lt;/span&gt;, y que por supuesto, que incluya todo lo que hemos avanzado en nuestro proceso de Integración a Google utilizando el &lt;span class="notranslate"&gt;framework&lt;/span&gt; ExtJs mostrados en las entradas anteriores.&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;Nota agregada: &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="color: #2a8c00;"&gt;Conviene también que después revisen con mayor detenimiento nuestro enlace a&lt;span class="notranslate"&gt;&amp;nbsp;"Google Codelabs"&amp;nbsp;&lt;/span&gt;(último botón derecho del menú superior de esta página), allí se detalla con mayor detalle el ejemplo que presentan en el vídeo y lo profundizan más mostrándonos la utilización de algunas de las principales librerías de Phyton (incluida su almacenamiento de datos); asimismo, también pueden probar AppEngine sobre Java, para los que desarrollen en dicha plataforma)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
A este respecto resulta conveniente revisar la siguiente documentación:&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/intl/es/appengine/docs/whatisgoogleappengine.html" target="_blank"&gt;code.google.com/intl/es/appengine/docs/whatisgoogleappengine.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/intl/es/appengine/docs/python/overview.html" target="_blank"&gt;code.google.com/intl/es/appengine/docs/python/overview.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/intl/es/appengine/docs/python/runtime.html" target="_blank"&gt;code.google.com/intl/es/appengine/docs/python/runtime.html"&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;Instalando Google App Engine&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Instalar Google App Engine nos permite instalar una infraestructura de pruebas similar a instalar nuestro servidor HTPP local, pero sin utilizar la combinación Apache+PHP+ MySQL que hemos venido utilizando con &lt;b&gt;Appserv&lt;/b&gt;, y que por supuesto representa una nueva alternativa a considerar así como tambien tenemos la combinación Apache Tomcat (servidor de aplicaciones)+Java+MySQL -puede ser con cualquier otra base de datos como MS-SQL Server, PostGreSQL, Oracle, Access, etc.- Todas estas combinaciones entre otras, nos permiten crear, probar, publicar y mantener nuestros proyectos Web.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
En este caso, vamos a utilizar el Kit de Desarrollo de software (SDK) de Google App Engine para Python: GoogleAppEngine_1.5.2.msi para plataforma Windows (de 16.5Mb, vigente al 20/Julio/2011; pero&amp;nbsp;también&amp;nbsp;puede utilizar la versiones correspondiente para equipos con Mac o Linux instalado), la que podemos descargar de la siguiente&amp;nbsp;dirección:&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/intl/es/appengine/downloads.html" target="_blank"&gt;code.google.com/intl/es/appengine/downloads.html&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Antes de iniciar la instalacion del SDK de Google AppEngine, debemos asegurarnos que tengamos Phyton 2.5.x instalado en nuestro ordenador, para lo cual el mismo instalador nos indicara de donde bajar primero e instalar dicha version de Phyton (version 2.5.5.7 de 24Mb, vigente al 01/03/2011). Finalmente toda version completa de AppEngine ocupara unos 150Mb, incluido los instaladores del SDK y Phyton...&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
La ventaja del Kit SDK para Python es que simultáneamente instala un&lt;b&gt;&lt;span class="notranslate"&gt; "launcher" &lt;/span&gt;&lt;/b&gt;(lanzador de aplicaciones de GoogleAppEngine), el cual nos facilita las pruebas de nuestros desarrollos:&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_Myy7SL10ikw/S8dOVoUL1YI/AAAAAAAAAH4/rJQUKoPwB9Y/s1600/launcher+GoogleAppEngine.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5460419206716315010" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8dOVoUL1YI/AAAAAAAAAH4/rJQUKoPwB9Y/s200/launcher+GoogleAppEngine.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Audiencia&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Se recomienda que, para entender este&lt;b&gt;&lt;span class="notranslate"&gt; codelab&lt;/span&gt;&lt;/b&gt;, tengamos suficientes conocimientos de ExtJs y herramientas básicas desarrollo Web (HTML, CSS, Javascript; o en su defecto, haber seguido el &lt;a href="http://www.quizzpot.com/2009/01/ext-js-framework/" target="_blank"&gt;curso de ExtJs&lt;/a&gt; que nos ofrece Crysfel Villa de México en su pagina del Quizzpot.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Asimismo se recomienda haber leído y probado nuestras entradas: &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" target="_blank"&gt;Integracion a Google (1ra parte)&lt;/a&gt; e &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="_blank"&gt;Integración a Google (2da parte)&lt;/a&gt;,  especialmente para comprender las herramientas utilizadas para integrar de las API de Google a ExtJs (y viceversa), que se emplean en este tutorial.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9R0zfbQHqoEMTU1NGYxZTEtMzViNC00OWIyLTg5NjItMGNjYzAwMGU3ZWNl&amp;amp;hl=es" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;&lt;b&gt;Material de Apoyo&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Descargar el material de apoyo desde &lt;span class="notranslate"&gt;&lt;b&gt;Google Docs&lt;/b&gt;&lt;/span&gt;, que es donde tenemos cargado el archivo appengine.rar (elegir pestaña &lt;b&gt;"File"&lt;/b&gt;), y en la raíz de nuestro disco de trabajo o donde estimemos conveniente se creara la carpeta &lt;b&gt;"appengine"&lt;/b&gt;, dentro de la cual tendremos las siguientes carpetas:&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_Myy7SL10ikw/S8dO3M4pVsI/AAAAAAAAAIA/K2gURmgQULw/s1600/Carpeta+AppEngine.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5460419783468603074" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8dO3M4pVsI/AAAAAAAAAIA/K2gURmgQULw/s200/Carpeta+AppEngine.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;carpeta prueba&lt;/b&gt;, contiene un ejemplo sencillo que nos muestra una visualizacion de una Hoja de Calculo de Google Docs (un grafico líneal en este caso), y que su codigo lo hemos tomado del &lt;a href="http://code.google.com/apis/ajax/playground/#using_the_query_language" target="_blank"&gt;Code Playground&lt;/a&gt; de Google, pero bajo App Engine.&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_Myy7SL10ikw/S8dQdFVY5fI/AAAAAAAAAII/XQHcZP2dDCo/s1600/AppEng_01.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5460421533788333554" src="http://2.bp.blogspot.com/_Myy7SL10ikw/S8dQdFVY5fI/AAAAAAAAAII/XQHcZP2dDCo/s200/AppEng_01.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;carpeta prueba01&lt;/b&gt;, que nos muestra un ejemplo de visualizacion de nuestra "tabla de productos" de Google Docs utilizada en nuestra entrada &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="_blank"&gt;Integración a Google (2da.parte)&lt;/a&gt;, y a los que he agregado un manejo básico de eventos que nos proporciona el API de Visualizaciones Google entre la Tabla y el PieChart mostrados, que son interesantes para poderlas revisar con mas detalle.&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S8dRvk9VaPI/AAAAAAAAAIQ/dxyLkxvaS1E/s1600/AppEng_02.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5460422951026649330" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S8dRvk9VaPI/AAAAAAAAAIQ/dxyLkxvaS1E/s200/AppEng_02.PNG" style="display: block; height: 225px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;Nota agregada: &lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #2a8c00;"&gt;Después de algunas pruebas realizadas por miembros de nuestro grupo, parece que para que funcionen estos ejercicios debe previamente haber accedido a cualquier servicio con nuestra cuenta personal de Google:. La tabla &lt;span class="notranslate"&gt;&lt;b&gt;Spreadsheet Productos &lt;/b&gt;&lt;/span&gt;que utilizamos en este ejercicio está compartida en &lt;span class="notranslate"&gt;Google Docs&lt;/span&gt; para que &lt;b&gt;"todos la vean sin acceder"&lt;/b&gt;, pero parece que para Google, "sin acceder" significa que la tabla no aparezca en nuestra lista personal de documentos de &lt;span class="notranslate"&gt;Google Docs&lt;/span&gt;, pero que necesariamente se tiene que haber ingresado primero con nuestra cuenta a algún servicio de Google como GMail por ejemplo, o con la opción "acceder" de la barra del menú de www.google.com), sino el ejercicio propuesto posiblemente no trabaja bien y arroje un mensaje de error de acceso al Query.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #2a8c00;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #2a8c00;"&gt;Estos ejercicios deben funcionar aún cuando con nuestra cuenta Google nunca hayamos utilizado Google Docs, por cuanto, las cuentas de Google, no son solo nuestra puerta de ingreso a GMail sino a una larga lista de servicios de Google que nos debe resultar interesante considerar para nuestro uso cotidiano: &lt;span class="notranslate"&gt;Google Calendar&lt;/span&gt;, Blogger, Picassa, &lt;span class="notranslate"&gt;Google Sites&lt;/span&gt;, &lt;span class="notranslate"&gt;CheckOut&lt;/span&gt; (tipo &lt;span class="notranslate"&gt;pay-pal&lt;/span&gt;), &lt;span class="notranslate"&gt;Google Maps&lt;/span&gt;, &lt;span class="notranslate"&gt;Google Talk&lt;/span&gt;, y por supuesto &lt;span class="notranslate"&gt;Google App Engine&lt;/span&gt;, entre otros)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;carpeta intGoogle1&lt;/b&gt;, que nos muestra lo mismo que nuestro post &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" target="_blank"&gt;Integración a Google (1ra.parte)&lt;/a&gt;, pero corriendo sobre AppEngine (nuestro archivo 01.GVisualizaton-sample.html se encuentra "insertado" dentro de IntGoogle1.py (de Phyton), y el resto de archivos js y de Extjs se encuentran grabados en la carpeta&amp;nbsp;&lt;span class="notranslate"&gt;&lt;b&gt;"static"&amp;nbsp;&lt;/b&gt;&lt;/span&gt; de IntGoogle1.&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_Myy7SL10ikw/S8dTqUgPADI/AAAAAAAAAIY/kzssmhXfG3I/s1600/AppEng_03.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5460425059733536818" src="http://2.bp.blogspot.com/_Myy7SL10ikw/S8dTqUgPADI/AAAAAAAAAIY/kzssmhXfG3I/s200/AppEng_03.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;carpeta intGoogle2&lt;/b&gt;, que nos muestra lo mismo que nuestro post &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="_blank"&gt;Integración a Google (2da.parte)&lt;/a&gt;, pero corriendo sobre AppEngine (nuestro archivo 02.GVisualizaton-sample.html se encuentra "insertado" dentro de IntGoogle2.py (de Phyton), y el resto de archivos js y de Extjs se encuentran grabados en la carpeta&amp;nbsp;&lt;span class="notranslate"&gt;&lt;b&gt;"static"&lt;/b&gt;&lt;/span&gt;&amp;nbsp;de IntGoogle2.&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_Myy7SL10ikw/S8dU8EBtEVI/AAAAAAAAAIg/AZ4UQllISQY/s1600/AppEng_04.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5460426464059789650" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8dU8EBtEVI/AAAAAAAAAIg/AZ4UQllISQY/s200/AppEng_04.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Pasos para ejecutar el codelab&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Para ejecutar los ejemplos mostrados solo basta ejecutar el launcher de Google App Engine (hay un icono en el desktop luego de instalación), y seleccionar la opción&lt;span class="notranslate"&gt;&amp;nbsp;"File/Add Existing Aplication.."&lt;/span&gt; del menú, dicha opción nos muestra una ventana en la cual el boton&amp;nbsp;&lt;span class="notranslate"&gt;&lt;b&gt;"Browse"&lt;/b&gt;&lt;/span&gt;&amp;nbsp;nos permite seleccionar la carpeta appengine que contiene nuestro proyecto (&lt;span class="notranslate"&gt;prueba, prueba01, IntGoogle1 y IntGoogle2 en este caso&lt;/span&gt;), elijamos cada una de nuestras carpetas y seleccionar el botón &lt;span class="notranslate"&gt;&lt;b&gt;"Add"&lt;/b&gt;&lt;/span&gt;, se cargaran nuestras aplicaciones al "launcher"; luego seleccionemos nuestro proyecto y elijamos el botón "&lt;b&gt;Run&lt;/b&gt;", que direccionará nuestra aplicación a un puerto específico, y activará al botón "&lt;b&gt;Browse&lt;/b&gt;", el cual al ser seleccionado ejecutará nuestro navegador web predeterminado, y ejecutará nuestra aplicación (este proceso es sencillísimo y no creo que tengan inconvenientes para hacerlos).&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_Myy7SL10ikw/S8dY4PjS_WI/AAAAAAAAAIo/J2-YvyNn8Co/s1600/AppEng_05.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5460430796480511330" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S8dY4PjS_WI/AAAAAAAAAIo/J2-YvyNn8Co/s200/AppEng_05.PNG" style="cursor: hand; cursor: pointer; display: block; height: 215px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: large;"&gt;APUNTES TECNICOS:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Al revisar con más detalle los archivos de cada carpeta notarán lo siguiente:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;nuestras&amp;nbsp;imágenes, iconos y otros archivos "externos" utilizados en cada ejercicio, están grabadas en la carpeta&lt;span class="notranslate"&gt;&lt;b&gt;&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/span&gt;(hay que revisar un poco de la documentación al respecto, pero vale indicar que la razon principal de este procedimiento es que a diferencia de nuestras aplicaciones probadas en un servidor Apache, con Google AppEngine no todos los archivos de nuestra carpeta del proyecto se cargan en la web, y de nuestra estructura de directorios, solo algunas carpetas se ejecutan exclusivamente por el lado del servidor.&lt;/li&gt;
&lt;li&gt;por el motivo indicado, grabamos también los archivos de ExtJs en la carpeta &lt;span class="notranslate"&gt;&lt;b&gt;"static"&lt;/b&gt;&lt;/span&gt;, y que en este caso corresponden a la version ext-3.1.0; realmente tuvimos algunos problemas al utilizar versiones a partir de etx-3.2.x, e inclusive con la versión vigente de ExtJs-3.3.1 a la fecha (no cargaba la&amp;nbsp;&lt;span class="notranslate"&gt;"datatable"&lt;/span&gt; requeridas para las visualizaciones Google desde los&amp;nbsp;&lt;span class="notranslate"&gt;"stores"&lt;/span&gt;) ..pero este &lt;span class="notranslate"&gt;&lt;b&gt;"bug"&lt;/b&gt;&lt;/span&gt;&amp;nbsp;producto a una revisión de una de las clases de ExtJs ya ha sido corregido, por lo que pueden revisar el post respectivo a &lt;span class="notranslate"&gt;Integracion Google&lt;/span&gt;&amp;nbsp;&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" target="_blank"&gt;1ra&lt;/a&gt; y &lt;a href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" target="_blank"&gt;2da&lt;/a&gt;&amp;nbsp;que corresponden a estos mismos ejercicios que estamos probando sobre &lt;span class="notranslate"&gt;AppEngine&lt;/span&gt;, pero funcionando sobre un servidor &lt;span class="notranalate"&gt;Apache&lt;/span&gt;&amp;nbsp;estándar, en dicho caso, ambos ejercicios &lt;b&gt;IntGoogle1 &lt;/b&gt;e &lt;b&gt;IntGoogle2&lt;/b&gt;, ya han sido modificados a la versión extjs-3.1.1. vigente al 01/03/2011, así que esperamos que como haciendo sus pruebas personales deberían poder actualizar estos ejercicios para utilizar una versión actualizada de Extjs (la disponible en estos momentos), y verificar su funcionamiento.&lt;/li&gt;
&lt;li&gt;al cargar nuestras aplicaciones con el boton&amp;nbsp;&lt;span class="notranslate"&gt;&lt;b&gt;"Run"&lt;/b&gt;&lt;/span&gt;, a la vez que se activa el botón &lt;b&gt;"Browse"&lt;/b&gt; (que lanzará automáticamente nuestro browser preferido y nos permitirá observar los resultados de nuestra aplicación). Vale también revisar los botones &lt;span class="notranslate"&gt;&lt;b&gt;"Logs"&lt;/b&gt;&lt;/span&gt; y &lt;span class="notranslate"&gt;&lt;b&gt;"SDK Console"&lt;/b&gt;&lt;/span&gt;, el primero nos indica si todo esta correcto (y nos indica incluso los errores de compilación phyton de haberlos); &amp;nbsp;el &lt;span class="notranslate"&gt;&lt;b&gt;SDK Console&lt;/b&gt;&lt;/span&gt; nos servirá luego, especialmente cuando utilizemos la biblioteca de almacenamiento de datos de Google AppEngine y otras librerías incorporadas de la biblioteca estandard de Phyton.&lt;/li&gt;
&lt;li&gt;Para lanzar a la web nuestra aplicación, solo basta utilizar el botón &lt;b&gt;"Deploy"&lt;/b&gt;, y si no tenemos un dominio propio, Google nos proporcionará un dominio provisional, pero nuestra aplicación bien podría ahí mismo subirse a la web (solo se necesita haber registrado nuestra cuenta Google en &lt;span class="notranslate"&gt;App Engine&lt;/span&gt;, para lo que se necesita registrar nuestro código de confirmación recepcionado via sms utilizando un telefono celular de la empresa Claro, para el caso de Perú (para otros países debemos consultar la lista de compañías de comunicaciones correspondiente); pero actuemos con mesura, pues Google nos permite hasta 10 subidas "gratuitas", y tal vez no nos convenga desaprovecharlas por el momento.&lt;/li&gt;
&lt;li&gt;Al igual como hemos cargado la versión&amp;nbsp;3.1.1&amp;nbsp;"liviana" de ExtJs, podríamos hacer lo mismo si se desea utilizar cualquier cualquier otro &lt;span class="notranslate"&gt;framework&lt;/span&gt;&amp;nbsp;JavaScript, pero téngase presente que Google tiene ya &lt;a href="http://code.google.com/intl/es/apis/libraries/" target="_blank"&gt;disponibles&lt;/a&gt; versiones de &lt;span class="notranslate"&gt;frameworks&lt;/span&gt; como JQuery, Prototype, Dojo, entre otros. Aunque también debemos resaltar que ahora tambien resulta importante practicar y utilizar Javascript puro.. opción que debemos tener en cuenta, ahora que poco a poco se va a imponer el manejo de este lenguaje por el lado del servidor, debido a la versatibilidad y perfomance mostradas de&amp;nbsp;&lt;span class="notranslate"&gt;&lt;b&gt;Node.js&amp;nbsp;&lt;/b&gt;&lt;/span&gt;y el &lt;a href="http://code.google.com/intl/es/apis/v8/" target="_blank"&gt;motor de desarrollo &lt;b&gt;V8&lt;/b&gt;&lt;/a&gt;, los que inclusive han sido utilizados en el desarrollo del navegador Google Chrome.&lt;/li&gt;
&lt;li&gt;Cabe resaltar asimismo que para efectuar el &lt;b&gt;&lt;span class="notranslate"&gt;"Deploy"&lt;/span&gt;&lt;/b&gt; con el &lt;span class="notranslate"&gt;&lt;b&gt;launcher&lt;/b&gt;&lt;/span&gt; AppEngine, de ser el caso, nuestro &lt;b&gt;&lt;span class="notranslate"&gt;Logs&lt;/span&gt;&lt;/b&gt; nos indicará que debemos tener instalado y operativo&amp;nbsp;&lt;b&gt;"openssl"&lt;/b&gt;, &amp;nbsp;correspondiente a las herramientas que permiten a nuestros proyectos AppEngine &amp;nbsp;implementar &lt;b&gt;SSL&lt;/b&gt; (&lt;span class="notranslate"&gt;Secure Socket Layer&lt;/span&gt;), &lt;b&gt;TLS&lt;/b&gt; (&lt;span class="notranslate"&gt;Transport &amp;nbsp;Layer Security&lt;/span&gt;) así como otros protocolos relacionados con la seguridad. Para ello puede seguir los pasos indicados &lt;a href="http://forums.tutorialized.com/windows-122/openssl-installation-on-windows-tutorial-by-herong-5467.html" target="_blank"&gt;aqui&lt;/a&gt;, o a mejor parecer, nos conviene instalar completamente &lt;a href="http://gnuwin32.sourceforge.net/" target="_blank"&gt;GnuWin32&lt;/a&gt;,  que además de darnos acceso a comandos Linux, y entre otros paquetes, nos implementa &lt;span class="notranslate"&gt;openssl 0.9.8r&lt;/span&gt; vigente a la fecha (esto sobre windows; en otras plataformas como Linux o Mac debe verificarse si openssl ya se encuentra instalado, caso contrario debe implementarse el paquete &lt;a href="http://www.openssl.org/" target="_blank"&gt;openssl&lt;/a&gt; correspondiente).&lt;/li&gt;
&lt;li&gt;Para nuestras pruebas personales debemos indicar también que, el nombre de nuestras aplicaciones que pongamos en el archivo&amp;nbsp;&lt;span class="notranslate"&gt;&lt;b&gt;app.yaml&lt;/b&gt;&lt;/span&gt; debe seguir el estandar &lt;span class="notranslate"&gt;&lt;a href="http://es.wikipedia.org/wiki/Camel_casing" target="_blank"&gt;"camel casing"&lt;/a&gt;&lt;/span&gt;, por lo que dicho nombre debe empezar en minusculas...&lt;/li&gt;
&lt;li&gt;y bueno, estas son opciones de Google AppEngine que corresponden únicamente al manejo del&lt;span class="notranslate"&gt;&lt;b&gt;&amp;nbsp;framework webapp&lt;/b&gt;&lt;/span&gt;&amp;nbsp;proporcionado por la biblioteca estandard de Phyton, pero debemos tener en cuenta que uno de los recursos mas interesantes de Google AppEngine es su almacenamiento de datos (y que corresponden al concepto Big Table descrito en el video indicado al comienzo del post), punto muy importante que esperamos desarrollar pronto..&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Saludos...&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
@Mlaynes&lt;/div&gt;
&lt;br /&gt;
&lt;a href="javascript:void(rut_facebook_90());"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 5px 0px 0px; text-align: left; width: 40px;" /&gt;Opina sobre Google AppEngine en nuestro foro..!&lt;/a&gt;&lt;/div&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-appengine.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-1500257789849146377?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G6Ok6l_jaKak97Eyn6vFh2CySX8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G6Ok6l_jaKak97Eyn6vFh2CySX8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G6Ok6l_jaKak97Eyn6vFh2CySX8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G6Ok6l_jaKak97Eyn6vFh2CySX8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/j6-0d0DeFyA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/1500257789849146377/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-appengine.html#comment-form" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/1500257789849146377?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/1500257789849146377?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/j6-0d0DeFyA/integracion-google-appengine.html" title="Integracion a Google AppEngine" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s72-c/google_logo.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/04/integracion-google-appengine.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAARH05fyp7ImA9WhdUFUw.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-48211062027091563</id><published>2010-04-04T14:10:00.000-07:00</published><updated>2011-10-01T16:12:25.327-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T16:12:25.327-07:00</app:edited><title>Integracion a Google (2da parte)</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;&lt;a href="http://code.google.com/intl/es-ES/" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s200/google_logo.jpg" style="cursor: hand; cursor: pointer; float: left; height: 35px; margin: 22px 15px 0px 0px; width: 100px;" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta es la segunda parte de nuestro proyecto de Integración de Google al entorno de desarrollo del framework ExtJs, tal como habíamos prometido realizar, y cuyo objetivo es unir las ventajas que nos ofrece ExtJs, y el innegable aporte de Google al desarrollo del mundo Web, y en esta oportunidad vamos a centrar nuestra atención en el uso de Google Spreadsheets como fuente de datos &lt;span class="notranslate"&gt;(datasource)&lt;/span&gt;, y ello, porque es una forma bastante rápida para familiarizarnos con el empleo de las herramientas de desarrollo que nos brindan tanto ExtJs como Google para el desarrollo de aplicaciones "sencillas" que fácilmente bien podríamos hacer para pequeños negocios y otras aplicaciones varias... &lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;En este caso, he considerado para este codelab el uso de una Hoja de Calculo con una única tabla, y que se diseñó para que personas ligadas al negocio de la Cosmética pueda controlar su negocio de Venta de productos de belleza, con la "ventaja" que todo el "ingreso y actualización de datos" los pudiera realizar directamente sobre la Hoja de Calculo usando Google Docs, pero que le permite consultar sus stocks de productos para venta, y los recordar los saldos por cobrar de sus clientes desde cualquier lugar con acceso a Internet (incluido su teléfono celular), y bueno, creo que ya pueden imaginar que esta simple herramienta les resultó bastante importante..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Audiencia&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Se recomienda que, para entender este tutorial, tengamos los suficientes conocimientos de ExtJs y desarrollo Web (HTML, Javascript, y manejo básico del &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/por-donde-empezar.html" target="_blank"&gt;back-end PHP-MySQL, instalado sobre un servidor HTTP Apache&lt;/a&gt;, o haber seguido los capitulos iniciales del &lt;a href="http://www.quizzpot.com/2009/01/ext-js-framework/" target="_blank"&gt;curso de ExtJs&lt;/a&gt; que nos ofrece Crysfel Villa de México en su pagina del Quizzpot.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Asimismo se recomienda haber leido y probado: &lt;a href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" target="_blank"&gt;Integracion a Google (1ra parte)&lt;/a&gt;, especialmente para comprender todo el proceso de integracion de las herramientas Google a ExtJs (y viceversa), que se emplean en este tutorial.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9R0zfbQHqoEYzMxYzRiOWItYzU4Mi00MDViLTlhNDAtYjg5OGFiNGZmZWMx&amp;amp;hl=es" target="_blank"&gt;Material de Apoyo&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;Descomprimir este material de apoyo sobra la carpeta www de nuestro Servidor Web Local (seguir los pasos de la 1ra. parte de este tutorial de Integración a Google), sobre-escriba todos los archivos que así lo indiquen (ha habido algunas adiciones, modificaciones y mejoras que he tenido que realizar sobre algunas funciones y extensiones para adaptarlos a version 3.1.1 de ExtJs, la cyal es completamente compatible con la version ExtJs-3.4, ultima de su tipo antes del lanzamiento de ExtJs4), o si desea, descomprimalos en una nueva carpeta con un nombre apropiado.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;(si no entiende este paso favor consulte "&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/por-donde-empezar.html" target="_blank"&gt;empezando desde cero&lt;/a&gt;').&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Si con nuestro navegador ingresamos a &lt;b&gt;"http://localhost"&lt;/b&gt;, y luego a la carpeta "Int-Google02" ( o donde hayamos descargado el material de apoyo), y ejecutamos el archivo "02.GVisualization-sample.html", debe aparecer una pantalla como la que se muestra a continuación:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S7kTPmtHrDI/AAAAAAAAAGg/bEsvRAIlvoI/s1600/Int-Google02.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5456413582344825906" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S7kTPmtHrDI/AAAAAAAAAGg/bEsvRAIlvoI/s200/Int-Google02.PNG" style="cursor: hand; cursor: pointer; display: block; height: 150px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;&lt;div&gt;Esto nos indica que nuestra descarga y copia ha sido correcta así tambien es correcta el ruteo para la importación de las librerías de ExtJs, y ya estamos listos para revisar el material de apoyo instalado.. y descubrir como hemos Integrado ExtJs con las SpreadSheets de Google (hojas de calculo).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Nota.- si no aparece la pagina es probable que no hayamos descargado a ExtJs en la carpeta &lt;b&gt;"www"&lt;/b&gt;, como mostramos en "&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/el-potencial-de-extjs.html" target="_blank"&gt;el potencial de ExtJs&lt;/a&gt;"; o tal vez, estemos usando una versión de ExtJs diferente de la indicada en nuestro archivo HTML (..ahora estamos usando la versión ext-3.3.1, pero si estamos trabajando con otra versión debemos cambiar los nombres y la ruta de la carpeta que lo contiene si fuera necesario). Asimismo, observe que ahora tambien utilizamos la libreria &lt;b&gt;"Groupsummary.js"&lt;/b&gt; de ExtJs (en la ruta ../extjs/extjs-3.x.x/examples/ux, que asi corresponde en los archivos de la versión completa ExtJs que hayamos bajado.. si esta utilizando una version "liviana" como se indica en el Curso ExtJs de Quizzpot, cerciorese de copiar este archivo en la ruta indicada.. u otra cualquiera conveniente que nos rutee adonde este se encuentre dicho archivo).&lt;br /&gt;
&lt;br /&gt;
Observe asimismo que, como se indica en el Curso ExtJs, resulta conveniente &lt;u&gt;copiar solo los archivos de ExtJs que necesitemos&lt;/u&gt; y evitar, cuando carguemos nuestros ejercicios, pruebas o desarrollos en un servidor web real (como x10hosting.com u otros de los muchos que se ofertan en internet, como indicamos en el post anterior), pues así lograremos que nuestros proyectos solo "pesen" lo justo.. quitando los "&lt;b&gt;&lt;span class="notranslate"&gt;examples"&lt;/span&gt;&lt;/b&gt; propios del&lt;span class="notranslate"&gt; framework &lt;/span&gt;así como los&amp;nbsp;&lt;span class="notranslate"&gt;&lt;b&gt;"themes"&lt;/b&gt; &lt;/span&gt;o lenguajes &lt;b&gt;"locale"&lt;/b&gt; que no emplearemos.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Detalle del Modulo.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;1. Para poder utilizar el modulo,como ya se indicó en la primera parte, debe tenerse una cuenta activa en Google,.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;2. Al revisar los archivos desempaquetados de nuestro material de ayuda encontraremos los siguientes archivos:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;02.GVisualization-sample.html, que contiene las instrucciones HTML para llamar a la biblioteca ExtJs y las API de Google, entre otras llamadas y configuraciones.&lt;/li&gt;
&lt;li&gt;MenuGVisualization_02.js, que contiene las instrucciones Javascript en ExtJs que visualizan el Menú y Árbol de opciones de nuestro ejemplo, así como el código que nos permite el acceso a las opciones del Modulo, por medio de la API Contacts de Google.&lt;/li&gt;
&lt;li&gt;SpreadSheet-ExtJs.js , que contiene las instrucciones Javascript en ExtJs, que nos permiten visualizar , en esta oportunidad, una tabla u hoja de Calculo de Google (creada a través de Google Docs), pero utilizando Visualizaciones Google y de ExtJs, que representan para nosotros, nuestro segundo nivel de Integración al mundo Google.&lt;/li&gt;
&lt;li&gt;GVisualizationPanel.js, que contiene las instrucciones Javascript en ExtJs que construyen las "extensiones" que nos permiten utilizar Visualizaciones Google sobre ExtJs, y en este caso, funciones ExtJs que nos permiten "migrar" la data de la tabla Google a objetos "store" que puedan ser manipulados desde ExtJs.&lt;/li&gt;
&lt;li&gt;GroupSummary.js, que como hemos indicado debe estar contenida en las carpetas de "extjs-3.31" y la necesitamos para importar la libreria ExtJs GroupSummary en el archivo "02.GVisualization-sample.htm", (podemos revisar su contenido en cualquier editor de textos como Notepad++)&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;3. En el archivo "02.GVisualization-sample.html", se encuentra comentadas casi todas las líneas explicando paso por paso que realizan.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;4. ( &lt;b&gt;&lt;span style="color: red;"&gt;New!&lt;/span&gt;&lt;/b&gt; ) Hemos añadido en esta oportunidad el archivo &lt;b&gt;Spreadsheet productos.xls&lt;/b&gt; en formato Excel estandard, para los que deseen efectuar sus pruebas sobre una hoja de calculo propia, pues simplemente ingresen a Google Docs y carguen este archivo, por supuesto que adaptado al formato de Google Docs; luego solo basta copiar en la variable &lt;b&gt;"dataSourceUrl&lt;/b&gt;" que corresponda la dirección web de nuestra hoja de claculo de Google Docs (la que se indica en la barra de direcciones de nuestro navegador cuando ingresemos a nuestro documento cargado a Google Docs)&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;
Este archivo no forma parte del "proyecto" así que solo debe ser considerado como referencia.. asimismo debemos tener en cuenta que a Google Docs se puede cargar diversos formatos de hojas de calculo los que automáticamente traducirá al formato de Google Docs, como CSV, Openoffice, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;5. En el archivo "SpreadSheet-ExtJs.js", se encuentran  detalladas cada una de las funciones llamadas desde  "MenuGVisualization_02.js", que muestran el código de cada Visualización  mostrada, y entre las que tenemos:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Integracion.Google.SpreadSheetExtJs&lt;/b&gt;, que muestra un "grid" completo de nuestra Tabla Google, y para lo cual utilizamos la extensión "Ext.ux.EVisualizationPanel", detallada en nuestro archivo GVisualizationPanel.js,  y que a diferencia de la extensión "Ext.ux.GVisualizationPanel" que empleamos para adaptar nuestro "store" creado a partir de un "data array",  y crear nuestra visualización Google; pues, como en este caso vamos a mostrar data Google sobre una visualización Google, no es necesario adaptar la data, y nuestra extensión nos permite mostrar la visualizacion sobre el panel ExtJs, y si indicamos un dataQuery,  realizar la operación SQL que querramos...&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_Myy7SL10ikw/S7kXHcOK6oI/AAAAAAAAAGw/5HdaFwH7ccg/s1600/Int-Google02_MiSpreadSheet.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5456417840138218114" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S7kXHcOK6oI/AAAAAAAAAGw/5HdaFwH7ccg/s200/Int-Google02_MiSpreadSheet.PNG" style="cursor: hand; cursor: pointer; display: block; height: 150px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
En este caso, hemos utilizado como Query: 'select * where A is not null', esto porque, muchas veces, al final de nuestras hojas de calculo podemos poner resúmenes, cálculos especiales, anotaciones, etc... y para que estos no aparezcan en nuestra visualización, pues sencillamente ignoramos dichas lineas (por supuesto que en este caso, implica que no pongamos nada en la columna A de nuestra tabla si se trata de comentarios o resúmenes)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Integracion.Google.SpreadSheet_01&lt;/b&gt;, que muestra un Query un poco mas complejo tal como: 'select G ,sum(J), sum(L)+sum(N)+sum(P), count(A) where A is not null and K &amp;lt;&amp;gt; 0 group by G ', al que le hemos agregado otras propiedades como "order by", "label" y "format", siendo interesante notar que posteriormente nosotros vamos a utilizar esos "labels" o etiquetas de nuestro Query, como nombre o "id" de nuestras "Grids ExtJs".&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S7kaFYUQ_1I/AAAAAAAAAG4/fuYEMq0fYo0/s1600/Int-Google02_MiQuerySpreadSheet.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5456421103265185618" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S7kaFYUQ_1I/AAAAAAAAAG4/fuYEMq0fYo0/s200/Int-Google02_MiQuerySpreadSheet.PNG" style="cursor: hand; cursor: pointer; display: block; height: 150px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;Integracion.Google.SpreadSheet_02&lt;/b&gt;, que muestra el mismo Query anterior pero en un formato PieChart de los campos "comprador" y "monto" (que corresponde al monto que nuestro cliente ha comprado a la fecha).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_Myy7SL10ikw/S7kcsdNzUCI/AAAAAAAAAHA/ekaPSl7y16M/s1600/Int-Google02_MiPieQuerySpreadSheet.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5456423973618405410" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S7kcsdNzUCI/AAAAAAAAAHA/ekaPSl7y16M/s200/Int-Google02_MiPieQuerySpreadSheet.PNG" style="cursor: hand; cursor: pointer; display: block; height: 150px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Integracion.Google.SpreadSheet_03&lt;/b&gt;, que muestra el mismo Query anterior pero en un formato panel que contiene un Table y un PieChart de los campos "comprador",  "monto", "cobrado" y "cantidad" (que corresponde a lo que nuestros clientes han comprado a la fecha).&lt;/div&gt;&lt;div&gt;Nótese asimismo que he implementado eventos sobre el PieChart y el Table, y al hacer click sobre algún componente del Pie o de la Table se ve reflejada la operación en ambas gráficas.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S7keKPZx1JI/AAAAAAAAAHI/-pfWXcZYgDY/s1600/Int-Google02_MiPanelSpreadSheet.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5456425584818246802" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S7keKPZx1JI/AAAAAAAAAHI/-pfWXcZYgDY/s200/Int-Google02_MiPanelSpreadSheet.PNG" style="cursor: hand; cursor: pointer; display: block; height: 150px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
Hasta aqui, estamos utilizando la extensión "Ext.ux.EVisualizationPanel" de forma similar a como utilizamos "Ext.ux.GVisualizationPanel" en la 1ra parte de este tutorial para mostrar Visualizaciones Google sobre ExtJs (pero con data de un "store array"), y por supuesto, que podemos utilizar esta extensión para utilizar cualquiera de las visualizaciones Google que mostramos en la &lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery.html" target="_blank"&gt;Galeria de Visualizaciones Google&lt;/a&gt;, pero utilizando como datasource a las hojas de Calculo de Google.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Resulta también conveniente a este respecto, revisar los siguientes enlaces:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/reference.html"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/reference.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/querylanguage.html"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/querylanguage.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/examples.html"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/examples.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Integracion.Google.SpreadSheet_04&lt;/b&gt;, que utiliza el mismo Query anterior pero en este caso nuestro formato panel contiene graficas ExtJs de los campos "comprador", "monto" y "cobrado", y para ello empleamos una nueva extension que hemos llamado "Integracion.Google.GoogleStorePanel", y cuya principal función va a ser adaptar los datos de la tabla Google al formato "store" de ExtJs, y colocarlas en los paneles correspondientes.&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_Myy7SL10ikw/S7kjRiW9cNI/AAAAAAAAAHQ/xvecgnTCgg4/s1600/Int-Google02_MiExtJsPanel.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5456431207723921618" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S7kjRiW9cNI/AAAAAAAAAHQ/xvecgnTCgg4/s200/Int-Google02_MiExtJsPanel.PNG" style="cursor: hand; cursor: pointer; display: block; height: 150px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
Como mostramos, ExtJs tambien tiene opciones interesantes en sus gráficas o visualizaciones que podriamos utilizar, y una de ellas es la capacidad de poder agrupar filas y columnas en sus "grids", por ello vamos a mostrar "paso a paso" como poder utilizar una agrupacion de filas en las visualizaciones que siguen a continuación.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Integracion.Google.SpreadSheet_05&lt;/b&gt;, en esta visualizacion vamos a mostrar como deberíamos "crear" nuestros querys para poder agruparlos, por ello, si en este caso, quisieramos agrupar los productos comprados por cada uno de nuestros clientes, y mostrar el detalle de lo vendido, lo pagado, y el saldo correspondiente (por cada producto y del total del cliente), pues nuestro campo de agrupamiento seria el "comprador", y nuestro Query seria el siguiente:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;select B, G, I, J, L+N+P where A is not null and K &amp;lt;&amp;gt; 0 &lt;/div&gt;&lt;div&gt;order by G &lt;/div&gt;&lt;div&gt;label B "Producto", G "Comprador", I "FVenta", J "Monto", L+N+P "Cobrado"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;En este caso detallo las etiquetas, por cuanto esos nombres los vamos a utilizar como campos (fields), de nuestro "store" a crear.&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_Myy7SL10ikw/S7kmDOBigrI/AAAAAAAAAHY/WKcURzKhKrM/s1600/Int-Google02_MiExtJsGrid_1.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5456434260282081970" src="http://2.bp.blogspot.com/_Myy7SL10ikw/S7kmDOBigrI/AAAAAAAAAHY/WKcURzKhKrM/s200/Int-Google02_MiExtJsGrid_1.PNG" style="cursor: hand; cursor: pointer; display: block; height: 150px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;Estoy mostrando nuestro dataquery en una visualización Google tipo Table utilizando la extensión "Ext.ux.EVisualizationPanel".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Integracion.Google.SpreadSheet_06&lt;/b&gt;, ahora mostramos el mismo dataquery pero sobre un Grid ExtJs, utilizando la extensión "Integracion.Google.GoogleStoreGrid", que va a realizar la adaptación de la data Google al formato "store" mediante la función "Ext.ux.GoogleStoreAdapter", que utiliza la función "EditorGridPanel" de ExtJs (utilizo esa función aunque en este caso no editamos los valores, pero he dejado algunas lineas comentadas para que puedan probar que es posible editar los grids ExtJs)&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_Myy7SL10ikw/S7kom7DMvWI/AAAAAAAAAHg/JFifYjYaQLY/s1600/Int-Google02_MiExtJsGrid_2.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5456437072687316322" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S7kom7DMvWI/AAAAAAAAAHg/JFifYjYaQLY/s200/Int-Google02_MiExtJsGrid_2.PNG" style="cursor: hand; cursor: pointer; display: block; height: 150px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;Nótese que nuestro adaptador "Ext.ux.GoogleStoreAdapter", crea un campo "id", al estilo del formato Json, y que utilizamos como numero o identificador de registro; y asimismo que, nuestro adaptador devuelve el "store" completo de nuestra data requerida (campos y datos incluidos); esto no es lo único requerido para realizar "data grouping", pero si en la gran mayoría de sus visualizaciones y gráficas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Integracion.Google.SpreadSheet_07&lt;/b&gt;, ahora si preparamos nuestro Query para poder realizar nuestro agrupamiento, y modificamos nuestro adaptador, al que hemos llamado "Ext.ux.GoogleStoreAdapterComplete", por cuanto, no solo crea el "store", sino el "reader" y la "data" (que son componentes que crean al store), y los muestra disponibles para poder utilizarlos en la función "Ext.data.GroupingStore" de nuestra extensión"Integracion.Google.GoogleStoreGrouping" que crea nuestra StoreGrouping Visualization&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_Myy7SL10ikw/S7ksnMVolAI/AAAAAAAAAHo/auvYF0Uo5nQ/s1600/Int-Google02_MiExtJsGrid_3.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5456441475374552066" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S7ksnMVolAI/AAAAAAAAAHo/auvYF0Uo5nQ/s200/Int-Google02_MiExtJsGrid_3.PNG" style="cursor: hand; cursor: pointer; display: block; height: 150px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
Cabe anotar como un adicional que nuestro adaptador aparte del campo "id" que representa nuestro numero de registro, tambien ha adicionado un campo "resumen" (igual para todos los registros), esto es para poder tener la capacidad de "agrupar" toda la data en un solo bloque y poder mostrar un campo de sumarizacion resumen total tal como indicamos a continuación:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Integracion.Google.SpreadSheet_08&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S7kuE73OI0I/AAAAAAAAAHw/o3e7-HZSSPg/s1600/Int-Google02_MiExtJsGrid_4.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5456443085859726146" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S7kuE73OI0I/AAAAAAAAAHw/o3e7-HZSSPg/s200/Int-Google02_MiExtJsGrid_4.PNG" style="cursor: hand; cursor: pointer; display: block; height: 150px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
Bueno amigos, hasta aquí nuestra 2da parte de Integración a Google, y hay bastante para probar hasta lo avanzado, pero creo imprescindible que realicen sus pruebas empleando sus propias tablas, por lo que resulta importante que empiecen a revisar Google Docs y inicien sus propias aplicaciones, ejemplos hay demasiados...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Por mencionar solo una, todos los negocios pequeños o personales &amp;nbsp;(micro-empresas), la mayoría están afiliados a sistemas simplificados de declaración y recaudación fiscal, (régimen RUS de la SUNAT aquí en Lima-Peru), y solo requieren para sus declaraciones contables contar con un registro de ventas, que fácilmente se podría desarrollar en hojas de calculo de Google Docs, y que complementado con un registro de Compras y Gastos fácilmente podrían llevar el manejo administrativo contable de un pequeño negocio, "on line" colgado sobre Internet y literalmente "indestructible", y con posibilidades de consulta remota desde cualquier lugar de la ciudad, del país y del mundo... con lo que se tendría una poderosa herramienta de control para los miles de "emprendedores" que han hecho negocios pero que actualmente tienen bastantes problemas de administración y control..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Personalmente, en mi experiencia con PYMES realmente he observado muchos negocios que emplean hojas de calculo para sus procesos de administración y control, y asimismo tambien en varios casos les he planteado solución a varios tipos de negocios de &amp;nbsp;este tipo (boutiques, salones spa, tiendas o bodegas, etc.), utilizando exclusivamente &lt;b&gt;&lt;u&gt;spreadsheets de Google Docs&lt;/u&gt;&lt;/b&gt;&amp;nbsp;en donde solo se requiere una computadora con acceso a Internet (y que&amp;nbsp;fácilmente&amp;nbsp;tambien se pueden complementar a &lt;a href="http://mlaynessanchez.blogspot.com/2010/05/web-20-los-negocios-y-las-redes.html" target="_blank"&gt;soluciones Web2.0&lt;/a&gt; para mercadeo y publicidad de nuestros productos/servicios, y para la fidelización de clientes), ..claro que para nosotros desarrolladores tal vez estas sean soluciones simples, pero realmente pueden llegar a ser bastante económicas y efectivas.&lt;br /&gt;
&lt;br /&gt;
En lo que respecta a nuestro proyecto Integracion Google, en próximos codelabs vamos a plantear el mismo ejercicio pero sobre otras plataformas...y entre las que me parecen muy interesantes para utilizar tenemos el Back-End PHP+MySQL (muy popular para utilizar con servicios de Hosting externos y se utilizan para instalar "paquetes" como Wordpress, Elgg, phpBB, Drupal &amp;nbsp;y otros servicios sociales bastante difundidos, y que bien podriamos integrar a nuestros desarrollos); tambien tenemos a la combinación JSP(Java)+MySQL, que es bastante empleado para desarrollos "complejos" y profesionales; y el datastore de Google AppEngine, que involucra el manejo del concepto Big Table. Para todos los casos planteados, tenemos como principal requisito que, primero debe desarrollarse un modelo básico de mantenimiento o gestión de base de datos (altas, bajas, modificación, consulta, impresión, etc), por cuanto, a diferencia de partir de una tabla de Google Docs, en dichas plataformas debe "programarse" el registro y manejo de nuestra data, el cual debe realizarse a través de &lt;u&gt;base de datos&lt;/u&gt;, y nuestra información no debe ser ingresada directamente a las tablas, sino a través de formularios y/o grids editables o la combinación de ambos, los que bien pueden ser diseñados con ExtJs.&lt;br /&gt;
&lt;br /&gt;
Saludos&lt;/div&gt;&lt;br /&gt;
&lt;a href="javascript:void(rut_facebook_80());"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 5px 0px 0px; text-align: left; width: 40px;" /&gt;Opina en nuestro foro §FB..!&lt;/a&gt;&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-48211062027091563?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GqUfjHr0i_giwsglggqtA7Iqj2A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GqUfjHr0i_giwsglggqtA7Iqj2A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GqUfjHr0i_giwsglggqtA7Iqj2A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GqUfjHr0i_giwsglggqtA7Iqj2A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/nTxeupjzVbo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/48211062027091563/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html#comment-form" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/48211062027091563?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/48211062027091563?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/nTxeupjzVbo/integracion-google-2da-parte.html" title="Integracion a Google (2da parte)" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s72-c/google_logo.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/04/integracion-google-2da-parte.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4FRH4-eCp7ImA9WhdUFUw.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-276225209075787324</id><published>2010-03-16T05:00:00.000-07:00</published><updated>2011-10-01T16:15:15.050-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T16:15:15.050-07:00</app:edited><title>Integracion a Google (1ra parte)</title><content type="html">&lt;div id="talerta"&gt;
&lt;/div&gt;
&lt;div id="talerta1"&gt;
&lt;/div&gt;
&lt;div id="alerta"&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id="alerta1"&gt;
Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;
&lt;a href="http://code.google.com/intl/es-ES/" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461157504050576802" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s200/google_logo.jpg" style="cursor: hand; cursor: pointer; float: left; height: 35px; margin: 22px 15px 0px 0px; width: 100px;" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta es la primera parte de nuestro proyecto de Integración de Google al entorno de desarrollo del framework ExtJs, tal como habíamos prometido realizar, y cuyo objetivo es unir las ventajas  que nos ofrece ExtJs, y el innegable aporte de Google al desarrollo del  mundo Web, y así poco a poco, llegar a proponer proyectos de alcance profesional.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: large;"&gt;Audiencia&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Se recomienda que, para entender este 'codelab', tengamos los suficientes conocimientos de ExtJs y desarrollo Web (HTML, Javascript, y manejo básico del back-end PHP-MySQL, instalado sobre un servidor HTTP Apache; o en su defecto, haber seguido los capitulos inicales del &lt;a href="http://www.quizzpot.com/2009/01/ext-js-framework/" target="_blank"&gt;curso de ExtJs&lt;/a&gt; que nos ofrece Crysfel Villa de México en su pagina del Quizzpot, o al menos haber revisado nuestra entrada "empezando desde cero".&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: large;"&gt;&lt;a href="https://docs.google.com/leaf?id=0B9R0zfbQHqoEZjYyOGRiYmEtNThmMS00YmRjLWIxYzYtMTU0OGRjNmM5Zjdi&amp;amp;hl=es" target="_blank"&gt;&lt;b&gt;Material de apoyo&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Descomprimir este material de apoyo en la carpeta &lt;b&gt;"www"&lt;/b&gt; de nuestro servidor local AppServ u otro compatible Apache-PHP-MySQL, y se creara la carpeta "Ynt-Google01" (si no entiende este paso favor consulte "&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/por-donde-empezar.html" target="_blank"&gt;empezando desde cero&lt;/a&gt;').&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ahora, si con nuestro navegador ingresamos a &lt;b&gt;"http://localhost"&lt;/b&gt;, y luego a la carpeta "Int-Google01" ( o donde hayamos descargado el material de apoyo), y ejecutamos el archivo "01.GVisualization-sample.html", debe aparecer una pantalla como la que se muestra a continuación:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S557gNZgSBI/AAAAAAAAAFM/sS1y7qSeRYQ/s1600-h/Integ-Google01.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5448928392447543314" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S557gNZgSBI/AAAAAAAAAFM/sS1y7qSeRYQ/s200/Integ-Google01.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Esto nos indica que nuestra descarga y copia ha sido correcta (y que las rutas de indicadas para la importación de las librerías de ExtJs tambien lo son), y ya estamos listos para revisar el material de apoyo instalado en nuestro codelab.. y descubrir como hemos empezado a Integrar ExtJs con Google.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Nota1.-&lt;/b&gt; si no aparece la pagina es probable que no hayamos descargado a ExtJs en la carpeta "www", como mostramos en "&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/el-potencial-de-extjs.html" target="_blank"&gt;el potencial de ExtJs&lt;/a&gt;"; o tal vez, estemos usando una versión de ExtJs diferente de la indicada en nuestro archivo HTML (...ahora como podrá observar estamos usando la versión  extjs-3.3.1, pero esta version en completamente compatible con la última versión ExtJs-3.4 que es la recomendamos debe utilizar). No olvide verificar las rutas relativas a "www" de nuestra carpeta AppServ sean correctas a las indicadas en las directivas de nuestro&lt;b&gt;&lt;span class="notranslate"&gt; script &lt;/span&gt;&lt;/b&gt;&lt;span class="notranslate"&gt;&amp;nbsp;01.GVisualization-sample.html&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;Nota2.-&lt;/b&gt; si va a realizar directamente sus pruebas sobre un servicio de Hosting Apache-PHP-MySQL externo -como www.x10hosting.com u otro-&amp;nbsp;Cerciórese&amp;nbsp;primero de registrar correctamente su dominio; y asimismo de Registrar su propia &lt;a href="http://code.google.com/intl/es/apis/maps/signup.html" target="_blank"&gt;API Key de Google Maps&lt;/a&gt;&amp;nbsp;(si sigue el enlace indicado observará que para acceder a una API Key de Google Maps deberá indicar la dirección web de la website donde será empleada, por supuesto que Ud. podrá registrar varias website o dominios si es necesario);&amp;nbsp;caso contrario Google al acceder a su pagina le mostrará respectivos mensajes de error y no le permitira el acceso a su aplicación; pero en caso de servidores locales Google permite el uso de cualquier API Key registrado con su cuenta Google o cualquiera de las API "públicas" que se utilizan en el Google Playground, como es el caso que se envía en el material de apoyo)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Nota3.-&lt;/b&gt; Obsérvese que la API de Google Contacs se encuentran definidas en&amp;nbsp;&lt;b&gt;http://www.google.com/jsapi&lt;/b&gt;, y no requiere de un registro personalizado como en el caso de Google Maps (lo mismo ocurre con la&amp;nbsp;&lt;a href="http://code.google.com/intl/es/apis/loader/signup.html" target="_blank"&gt;API Ajax de Google &lt;/a&gt;-para usar Javascript y sus framework como JQuery, Dojo, Prototype, etc- , así como Google language, Google Search, Blogger, entre otros (herramientas que utilizamos para el desarrollo de este Blog), y para lo cual se necesita registrar un API Key personalizado asociado al dominio donde se colgara nuestra aplicación, y para obtener estas &lt;b&gt;&lt;span class="notranslate"&gt; API Keys &lt;/span&gt;&lt;/b&gt;solo es necesario como requisito tener una cuenta Google (refiriéndonos básicamente a una cuenta gmail)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: large;"&gt;Detalle del Modulo.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
1. Para poder revisar el funcionamiento del modulo, necesitamos en primer lugar, tener una cuenta activa en Google, si no tenemos una, pues sigamos las indicaciones de la pantalla de acceso de Google Accounts, luego de haber seleccionado la opción "login", y así poder tener acceso a las opciones del módulo, y observar su funcionamiento.&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S6JjxA688_I/AAAAAAAAAGU/puNpGVbWvts/s1600-h/Int-Google01_Login.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5450028192783725554" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S6JjxA688_I/AAAAAAAAAGU/puNpGVbWvts/s200/Int-Google01_Login.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
Si desea revisar algo de teoría respecto a Autenticación de Cuentas Google ya les había sugerido revisar el siguiente link que emplea Javascript para dicho propósito:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/intl/es-ES/apis/gdata/docs/js-authsub.html" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/gdata/docs/js-authsub.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
2. Al revisar con mayor detalle los archivos desempaquetados de nuestro material de apoyo encontraremos los siguientes archivos:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;  01.GVisualization-sample.html, que contiene las instrucciones HTML para llamar a la biblioteca ExtJs y las API de Google, entre otras llamadas y configuraciones.&lt;/li&gt;
&lt;li&gt;  MenuGVisualization_01.js, que contiene las instrucciones Javascript en ExtJs que visualizan el Menú y Árbol de opciones de nuestro ejemplo, así como el código que nos permite el acceso a las opciones del Modulo, por medio de la API Contacts de Google.&lt;/li&gt;
&lt;li&gt;  GoogleCharts.js , que contiene las instrucciones Javascript en ExtJs, que nos permiten visualizar, en esta primera parte del proyecto, data asignada en simples "array", pero utilizando las Visualizaciones Google, que representará para nosotros, nuestro primer nivel de Integración al mundo Google.&lt;/li&gt;
&lt;li&gt;  GVisualizationPanel.js, que contiene las instrucciones Javascript en ExtJs que construyen las "extensiones" que nos permiten utilizar Visualizaciones Google sobre ExtJs&lt;/li&gt;
&lt;li&gt;  GVisualizationMaps.js, que contiene las instrucciones Javascript en ExtJs que construyen la "extensión" que nos permiten utilizar Google Maps sobre ExtJs&lt;/li&gt;
&lt;li&gt;  carpeta icons, que contiene archivos gráficos GIF, PNG que utilizamos en este ejemplo.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
En nuestro archivo HTML resulta curiosa la instrucción mediante el cual, cargamos sin mayor propósito un archivo gráfico (en este caso "icons/mypic.gif", aunque pudo ser cualquier otro), y esto es porque uno de los requisitos para la autenticación de una cuenta, es brindar a Google un objeto que pertenezca al entorno del servidor que esta solicitando el servicio de acceso, para identificar su ubicación &amp;nbsp;y detectar si la ruta del mismo se encuentre registrada, caso contrario emitirá un mensaje de seguridad al respecto, pero nos permitirá continuar; pero de eliminarse esta línea, Google sencillamente emitirá un mensaje de error y abortará el proceso.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
3. Cabe resaltar que en este proyecto estamos utilizando métodos de desarrollo que emplearíamos en proyectos reales como es el uso de "&lt;a href="http://www.quizzpot.com/2009/03/paquetes-y-namespace/" target="_blank"&gt;namespace&lt;/a&gt;", compartiendo las aplicaciones en diferentes archivos js (imagínense si todos nuestro código lo escribamos en un único archivo js. sería inmanejable), así como mostramos el uso de extensiones, funciones "&lt;a href="http://www.quizzpot.com/2009/11/que-es-el-xtype/" target="_blank"&gt;xtype&lt;/a&gt;", manejo de "&lt;a href="http://www.quizzpot.com/2010/01/border-layout/" target="_blank"&gt;regiones&lt;/a&gt;" y viewports, entre otros puntos cuyo detalle podemos revisar en diversos capitulos del Curso ExtJs de Quizzpot..&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
4. En el archivo "01.GVisualization-sample.html", se encuentra comentadas casi todas las líneas explicando paso por paso que realizan, especialmente las empleadas para la importación de las librerías del framework ExtJs, y las correspondientes a las API de Google.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
5. En el archivo "GoogleCharts.js", se encuentran detalladas cada una de las funciones llamadas desde "MenuGVisualization_01.js", que muestran el código de cada Visualización Google empleada, y entre ellas tenemos:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;    Integracion.Google.GoogleTable&lt;/b&gt;, que muestra un simple "grid" elaborado sobre el store propuesto por un array de datos, debiendo indicar que todas las opciones vigentes para la Visualización Table de Google, se encuentran detalladas en :&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery/table.html" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery/table.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_Myy7SL10ikw/S6FzX36UVyI/AAAAAAAAAFc/HzHX6Pw14Ww/s1600-h/Int-Google01_Table.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5449763878077749026" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S6FzX36UVyI/AAAAAAAAAFc/HzHX6Pw14Ww/s200/Int-Google01_Table.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;    Integracion.Google.lineChartLink&lt;/b&gt;, que muestra un simple "LineChart" elaborado  sobre otro store, y cuyas opciones vigentes de configuración, metodos, eventos, etc. se encuentran detallados en:&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery/linechart.html" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery/linechart.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_Myy7SL10ikw/S6F0APByd8I/AAAAAAAAAFk/6CAOpRRDy7E/s1600-h/Int-Google01_LineChart.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5449764571477866434" src="http://2.bp.blogspot.com/_Myy7SL10ikw/S6F0APByd8I/AAAAAAAAAFk/6CAOpRRDy7E/s200/Int-Google01_LineChart.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;    Integracion.Google.pieChartLink&lt;/b&gt;, que muestra un "PieChart", y cuyas opciones vigentes se encuentran detalladas en:&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/apis/visualization/documentation/gallery/piechart.html" target="_blank"&gt;http://code.google.com/apis/visualization/documentation/gallery/piechart.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_Myy7SL10ikw/S6FxINDDJyI/AAAAAAAAAFU/Y_35wA3l8jg/s1600-h/Int-Google01.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5449761409850353442" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S6FxINDDJyI/AAAAAAAAAFU/Y_35wA3l8jg/s200/Int-Google01.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;    Integracion.Google.gaugesLink&lt;/b&gt;, que muestra ejemplo de uso de Gauges, y cuyas opciones vigentes se encuentran detalladas en:&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery/gauge.html" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery/gauge.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_Myy7SL10ikw/S6JP09vUUdI/AAAAAAAAAF0/w6s9FXP-OTs/s1600-h/Int-Google01_Gauges.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5450006270416540114" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S6JP09vUUdI/AAAAAAAAAF0/w6s9FXP-OTs/s200/Int-Google01_Gauges.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;    Integracion.Google.intensityMapLink&lt;/b&gt;, que muestra un ejemplo de uso de Mapas mundiales con "carga de data"... y cuyas opciones de configuración y detalle vigentes, se encuentran detalladas en:&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/apis/visualization/documentation/gallery/intensitymap.html" target="_blank"&gt;http://code.google.com/apis/visualization/documentation/gallery/intensitymap.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_Myy7SL10ikw/S6JQYQUhkBI/AAAAAAAAAF8/hldOffUP_so/s1600-h/Int-Google01_IntensityMap.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5450006876699856914" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S6JQYQUhkBI/AAAAAAAAAF8/hldOffUP_so/s200/Int-Google01_IntensityMap.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;    Integracion.Google.orgChartLink&lt;/b&gt;, que muestra un ejemplo de "Organizational Chart" cargado sobre la misma data que se uso en la primera visualización Table, y dividiendo el sector en 02 regiones, y con el adicional de mostrarnos una introducción del manejo de eventos (nótese que al seleccionar un nombre de organigrama se selecciona también su correspondiente en la Tabla, y viceversa). Todas las opciones de configuración y detalle de esta visualización se encuentran detalladas en:&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery/orgchart.html" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery/orgchart.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S6JQ1sKW73I/AAAAAAAAAGE/xAz8TaA7vQE/s1600-h/Int-Google01_OrgChart.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5450007382389616498" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S6JQ1sKW73I/AAAAAAAAAGE/xAz8TaA7vQE/s200/Int-Google01_OrgChart.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;    Integracion.Google.myGoogleMaps&lt;/b&gt;, que nos muestra un ejemplo de uso del API de Google Maps, y que al ser tratada como una visualización, nos muestra una manera práctica de su implementación, en comparación de la documentación del API de Google Maps, la que podemos revisar en:&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery/map.html" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery/map.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_Myy7SL10ikw/S6JRXZyY0BI/AAAAAAAAAGM/r6_WAcVixBo/s1600-h/Int-Google01_GMaps.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5450007961572790290" src="http://2.bp.blogspot.com/_Myy7SL10ikw/S6JRXZyY0BI/AAAAAAAAAGM/r6_WAcVixBo/s200/Int-Google01_GMaps.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Cabe reiterar asimismo, que para poder utilizar Google Maps hay que utilizar una API Maps Key, y que preferentemente deba ser propia (para que Google nos registre, mida la cantidad de uso de nuestras aplicaciones y "nos vaya reconociendo")... la API key que estamos utilizando en este codelab corresponde a una API Key "pública" tomada de los ejercicios del Code Playground la que debe funcionar sin ningun problema en nuestros servidores locales.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Estas son solo alguna de las opciones de Visualización Google que les estamos presentando, pero en realidad Google tiene varias opciones que vale la pena revisar en:&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery.html" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/gallery.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
6. Por supuesto que ExtJs tiene sus &lt;a href="http://www.quizzpot.com/2009/05/graficas-en-ext-js-3/" target="_blank"&gt;propias visualizaciones&lt;/a&gt;, y algunas son muy interesantes y potentes, como es el caso de las  opciones de Grouping y Filter de Tablas (que mostraremos posteriormente), pero es interesante mostrar que podemos Integrar opciones Google dentro de ExtJs sin mayores contratiempos, y ello lo efectuamos a través de las "extensiones" detalladas en:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;GVisualizationPanel.js&lt;/b&gt;, para las Visualizaciones Google en general (compatible para utilizar con cualquier visualizacion detallada en la galería indicada), y cuyas generalidades de implementación, sin considerar ExtJs, podemos empezar a revisar en: &lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/index.html" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/index.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;GVisualizationMaps.js&lt;/b&gt;, para la Visualizacion de Google Maps en particular, por cuanto esta es una implementación del API de Google Maps, cuyas generalidades podemos empezar a revisar en: &lt;a href="http://code.google.com/intl/es-ES/apis/maps/" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/maps/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Esta es la primera parte del proceso de Integración Google al entorno de ExtJs, y su objetivo es mostrar que dentro del entorno Google es posible utilizar nuestras cuentas (direcciones de gmail en este caso), como nombre de usuario - con su respectivo password - para poder tener acceso a nuestro Modulo desarrollado, tal como lo hacemos con nuestros programas y sistemas de escritorio (y que es algo que debemos tomar muy en cuenta cuando se trabaja por ejemplo con &lt;b&gt;Google Apps&lt;/b&gt;, que es actualmente una opción que esta empezando a ser muy utilizada por empresas y organizaciones de todo tipo); asimismo, este ejercicio permite mostrarnos un modelo simplificado de un Menu Tree-panel bastante utilizado en desarrollos web.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;En el próximo post detallaremos como Integrarnos con Google utilizando hojas de calculo o Spreadsheets de Google Docs como fuentes de datos, con un caso practico que nos permita empezar con el manejo de &lt;span class="notranslate"&gt;&lt;b&gt;"datasources"&lt;/b&gt;&lt;/span&gt; y bases de datos mas comerciales como MySQL principalmente, teniendo presente que como hemos indicado, los servicios de correo y de &lt;span class="notranslate"&gt;Google Docs&lt;/span&gt; son elementos muy integrados a &lt;span class="notranslate"&gt;&lt;b&gt;Google Apps&lt;/b&gt;&lt;/span&gt;, así como también lo son &lt;span class="notranslate"&gt;Google Calendar, Google Maps&lt;/span&gt; y otros cuyas API de acceso y conexión podemos revisar en el &lt;span class="notranslate"&gt;&lt;b&gt;Code Playground)&lt;/b&gt;&lt;/span&gt;; y por ello, nuestro interés de empezar nuestro proceso de Integracion con Google siguiendo esta senda... Como siempre, no duden postear cualquier novedad, duda o consulta en nuestros foros de Facebook.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="javascript:void(rut_facebook_70());"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 5px 0px 0px; text-align: left; width: 40px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="javascript:void(rut_facebook_70());"&gt;Opina en nuestro foro §FB..!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
  
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-276225209075787324?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gkPCnWw40H2k8ie8BfzZ2YVfgkI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gkPCnWw40H2k8ie8BfzZ2YVfgkI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gkPCnWw40H2k8ie8BfzZ2YVfgkI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gkPCnWw40H2k8ie8BfzZ2YVfgkI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/wDzN6x2tUcQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/276225209075787324/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/276225209075787324?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/276225209075787324?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/wDzN6x2tUcQ/integracion-google-1ra-parte.html" title="Integracion a Google (1ra parte)" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s72-c/google_logo.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/03/integracion-google-1ra-parte.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QGRng9fCp7ImA9WhdUFUw.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-3413330919038569455</id><published>2010-03-13T11:27:00.000-08:00</published><updated>2011-10-01T16:22:07.664-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T16:22:07.664-07:00</app:edited><title>Google busca bronca</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Un comentario respecto al articulo "Google busca bronca" de Sergio LLerena publicado en la revista Somos de hoy (ElComercio, Lima PE)...&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Aunque el articulo hace más referencia respecto a lo que son los navegadores (los que son nuestra puerta de entrada a Internet), pues tanto Google como Microsoft no solo desarrollan navegadores, pues como algo se menciona, también estamos hablando de sistemas operativos (Windows 7 vs Chrome OS), suites (MS-Office vs Google Docs), redes sociales (Windows Live vs Google Buzz), lenguajes de programación (VB, .Net, ASP vs Go, Phylon, Android, y todo el mundo de desarrollo opensource: como HTML, Java, PHP, Javascript, etc. de los que Google es un verdadero promotor), y muchos otros productos .. pues es importantísimo resaltar que mientras Microsoft es software "propietario", por lo que hay que pagar para poder utilizarla; pues Google Inc. es una marca registrada cuyos productos informáticos en su mayoría operan bajo licenciamiento opensource o de código abierto, es decir, por lo que "no tenemos que pagar para poder utilizarla", y como ya es una realidad, resulta estupendo ver como dicho software, es tanto o mejor que por los que teníamos que pagar.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Y bueno, bajo estos conceptos, esto no solo es una pelea.. sino una verdadera guerra por la supervivencia; Google, como indica el articulo, no solo es un producto post-Internet, sino que, como Facebook, Twitter, Netlog, etc. y miles de proyectos  (en la destaca por brillo propio el proyecto GNU/Linux y sus múltiples distribuciones), todos ellos son hijos de la "era opensource" (que poco o nada utilizan de la tecnología microsoft), y no les interesa y no les resulta necesario cobrar a sus "usuarios",  por el contrario, los invita a participar en sus desarrollos y pruebas, y por supuesto que tienen ingresos. Google es también un gigante multimillonario, pero su negocio no es vender software, sino publicidad, aunque ahora le entra a todo lo que es tecnología, incluido las comunicaciones (telefonía celular), la energía, y un largo etc..&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;El mundo de la informática ha cambiado y va a seguir cambiando nuestras formas de ver el mundo y "hacer negocios", pero creo que ya es hora que se empiece a tomar en serio al mundo del software libre, que se mueve muy bien dentro del ambiente universitario (ya se merece su artículo!!), en donde quienes participamos de este enfoque, nos preocupa más investigar, desarrollar, promover y mejorar aplicativos que sean "útiles" para su uso comercial, social, gubernamental ó lúdico, sin pensar si nos alcanza la billetera para adquirir las herramientas para poder crearlas.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/03/google-busca-bronca.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-3413330919038569455?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Pqt_pzI5JYEWm1SwCVor49eDR3E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pqt_pzI5JYEWm1SwCVor49eDR3E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Pqt_pzI5JYEWm1SwCVor49eDR3E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pqt_pzI5JYEWm1SwCVor49eDR3E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/lIx95WO85ek" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/3413330919038569455/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/03/google-busca-bronca.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/3413330919038569455?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/3413330919038569455?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/lIx95WO85ek/google-busca-bronca.html" title="Google busca bronca" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/03/google-busca-bronca.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MCQX8zeSp7ImA9WhdUFUw.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-4477545377313347796</id><published>2010-03-13T01:00:00.000-08:00</published><updated>2011-10-01T16:24:20.181-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T16:24:20.181-07:00</app:edited><title>Un avance de Integración a Google</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://code.google.com/intl/es-ES/" target="_blank"&gt;&lt;img style="float:left; margin:22px 15px 0px 0px;cursor:pointer; cursor:hand;width: 100px; height: 35px;" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s200/google_logo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5461157504050576802" /&gt;&lt;/a&gt;&lt;br /&gt;
Habiendo revisado con mas detalle lo correspondiente al mundo Google, observo que para facilitar su aprendizaje e integración al mundo Web, podría ser conveniente seguir los siguientes pasos:&lt;br /&gt;
&lt;br /&gt;
1.- Aprender ahora si a utilizar las API Ajax de Google&lt;br /&gt;
Las API AJAX de Google nos permiten crear sitios web completos y dinámicos utilizando únicamente Javascript y HTML. Pudiéndose insertar mapas, graficos o un cuadro de búsqueda dinámico en tu sitio web, o descargar feeds con tan solo unas líneas de JavaScript:&lt;br /&gt;
&lt;br /&gt;
para revisar la parte teórica:&lt;br /&gt;
&lt;a href="http://code.google.com/intl/es-ES/apis/ajax/" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/ajax/&lt;/a&gt;&lt;br /&gt;
para revisar la parte práctica&lt;br /&gt;
&lt;a href="http://code.google.com/apis/ajax/playground/" target="_blank"&gt;http://code.google.com/apis/ajax/playground/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para que hagamos nuestras pruebas, solo basta con copiar los archivos html que nos presenta el Code Playground de Google, y grabarlos con nombres apropiados en una carpeta que podríamos llamar "Apicode" dentro de "www" de nuestro servidor local ("htpp://localhost"), y ejecutarlos con nuestro navegador, como hacemos con los ejemplos del &lt;a href="http://www.quizzpot.com/2009/01/ext-js-framework/" target="_blank"&gt;curso ExtJs de Quizzpot&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
El Code Playground de Google es también bastante interesante por cuanto, tiene entre sus opciones la posibilidad de cambiar el código y hacer nuestras pruebas desde el mismo entorno del Playground, y no presenta mayores dificultades en su comprensión y manejo; no ocurre lo mismo con el entorno de desarrollo de Gadgets de Google GGE (de Google Gadget Editor), el cual si es un poco problemático para usar, y que espero que cuando veamos las API de Gadgets de Google, pues ojala haya mejorado algo, bueno.. sino hay tambien algunos tips para tratar de no tener mayores problemas.&lt;br /&gt;
&lt;br /&gt;
2.- De las API de Visualizacion de Google en particular resulta interesante observar que se puede integrar estas visualizaciones (Herramientas de Google Charts) a diferentes fuentes de datos, lo que podemos revisar con mas detalle en:&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/intl/es-ES/apis/visualization/documentation/toolsgallery.html" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/visualization/documentation/toolsgallery.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;como tal vez nos resulte un poco complicado entender todas las opciones de fuente de datos disponibles para investigar, les sugiero seleccionar como &lt;b&gt;Filter Tool Type&lt;/b&gt;: "Datasouce"; y se nos presentara como opciones a &lt;b&gt;Google Spreadsheet&lt;/b&gt;, a &lt;b&gt;vis-table&lt;/b&gt; (que es una implementación de PHP sobre MySQL, y la implementación sobre &lt;b&gt;Oracle PL/SQL&lt;/b&gt;). Esas tres son suficientes para empezar a investigar... si aún son algo complicadas, mejor siga con el paso siguiente, ya retomaremos estos casos cuando desarrollemos ejemplos avanzados... mientras tanto, vale saber que Google presenta opciones de conexión a cualquier base de datos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
3.- Despues de revisar toda lo indicado en el punto anterior, resulta necesario probar algunos ejemplos para ver como implementar una fuente de datos,  por lo que considero conveniente empezar con &lt;b&gt;Google Spreadsheet&lt;/b&gt; como fuente de datos, asi que revisemos con detalle los siguientes ejemplos del Code Playground:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/apis/ajax/playground/?type=visualization#data_source_request" target="_blank"&gt;http://code.google.com/apis/ajax/playground/?type=visualization#data_source_request&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/apis/ajax/playground/?type=visualization#using_the_query_language" target="_blank"&gt;http://code.google.com/apis/ajax/playground/?type=visualization#using_the_query_language&lt;/a&gt;,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/apis/ajax/playground/?type=visualization#more_query_options" target="_blank"&gt;http://code.google.com/apis/ajax/playground/?type=visualization#more_query_options&lt;/a&gt;, aunque esta ultima opción utiliza formatos predeterminados de Google.&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/apis/ajax/playground/?type=visualization#data_source_request" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;
El empleo de las Hojas de Calculo Google resulta bastante interesante por cuanto, &lt;b&gt;en primer lugar&lt;/b&gt;, son ejemplos sencillos y fáciles de probar, y también fácilmente podemos crear nuestras propias tablas, empleando Google Docs, y utilizarlas  en nuestras pruebas (y así podremos realmente observar la funcionalidad de utilizar Google Spreadsheet como fuente de datos); &lt;b&gt;y en segundo lugar&lt;/b&gt;, porque para un pequeño negocio, facilmente se puede llevar su manejo administrativo empleándolas en lugar de base de datos como MySQL, SQLite, PostgreSQL, Oracle o SQLServer; cuya integración para su uso son algo más complejos, y facilmente ya podríamos iniciarnos en el manejo de aplicaciones  prácticas y comerciales sencillas, que bien ya podríamos implementar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
4.- Ya en este punto resulta necesario empezar con una revisión de las API de Cuentas de Google por lo es bueno ir leyendo:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/intl/es-ES/apis/accounts/" target="_blank"&gt; http://code.google.com/intl/es-ES/apis/accounts/ &lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Esto con el objeto de aprender a utilizar hojas de calculo "privadas" que solo deben ser revisadas por las personas a quienes se les quiera dar acceso (compartir tablas con atributos de modificación o solo lectura dentro de los entorno de Google Docs ó Google Apps), resultando con ello nuestras aplicaciones mas interesantes. Téngase presente que a este nivel, ya nos es necesario crear una Cuenta Google propia (utilizando nuestra cuenta hotmail u otra que utilicemos), pero les recomiendo crear mejor una cuenta nueva GMail, diferente a las que tengamos, y anexar nuestras otras cuentas a esta cuenta GMail.&lt;br /&gt;
&lt;br /&gt;
En particular, debemos prestar bastante atención en revisar lo correspondiente al Protocolo de Uso de AuthSub en la Biblioteca de datos de Google de JavaScript de cliente, en el siguiente link:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/intl/es-ES/apis/gdata/docs/js-authsub.html" target="_blank"&gt;http://code.google.com/intl/es-ES/apis/gdata/docs/js-authsub.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Bueno, a estas alturas ya nos debe resultar mas sencillo comprender todo el manejo del entorno de Google en lo que respecta a sus herramientas e integracion a aplicaciones Web... las que iremos profundizando poco a poco en los siguientes posts, donde les voy a presentar un ejemplo, completo y sencillo que ya tengo casi terminado, de como integrar todas estas herramientas de Google dentro de una aplicación desarrollada con ExtJS, que incluya autenticacion de cuenta Google (para acceder al modulo), empleo de visualizaciones Google dentro de paneles ExtJS, empleo de Spreadsheets, uso indistinto de Grids Google y Grids ExtJS, utilizando por el momento a Google Spreadsheet como fuente de datos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Pero no se preocupen si por ahora solo estamos utilizando las hojas de calculo de Google para empezar a integrarnos a Google; también vamos a presentar más adelante, un ejemplo detallado y sencillo de conexión utilizando como back-end PHP-MySQL, y para lo cual utilizaremos la base de datos que hemos instalado en nuestro Servidor Local de Pruebas, con Appserv (vea el post "&lt;a href="http://mlaynessanchez.blogspot.com/2010/03/por-donde-empezar.html" target="_blank"&gt;empezando desde cero&lt;/a&gt;")&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Como siempre no duden en postear cualquier inconveniente o interés que tengan...&lt;/div&gt;&lt;br /&gt;
&lt;!-- Sexto Foro --&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="javascript:void(rut_facebook_60());"&gt;&lt;img style="float:left; display:block; margin:0px 0px 0px 0px; text-align:left;cursor:pointer; cursor:hand;width: 40px; height: 40px;" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" border="0 solid blue" alt="" id="BLOGGER_PHOTO_ID_5461483657647786530" /&gt;Opina sobre las herramientas y API de Google&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/03/un-avance-de-integracion-google.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-4477545377313347796?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u1o1rudJGtrtBUPk9MoNp1wQWC0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u1o1rudJGtrtBUPk9MoNp1wQWC0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u1o1rudJGtrtBUPk9MoNp1wQWC0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u1o1rudJGtrtBUPk9MoNp1wQWC0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/l1Rxyz4saBk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/4477545377313347796/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/03/un-avance-de-integracion-google.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/4477545377313347796?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/4477545377313347796?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/l1Rxyz4saBk/un-avance-de-integracion-google.html" title="Un avance de Integración a Google" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Myy7SL10ikw/S8nt0MNkvaI/AAAAAAAAAI4/zNMXLah5aA4/s72-c/google_logo.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/03/un-avance-de-integracion-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EDSX8yfCp7ImA9WhdUFUw.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-3083278609394233790</id><published>2010-03-12T09:45:00.001-08:00</published><updated>2011-10-01T16:27:58.194-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T16:27:58.194-07:00</app:edited><title>El potencial de ExtJS</title><content type="html">&lt;div id="talerta"&gt;
&lt;/div&gt;
&lt;div id="talerta1"&gt;
&lt;/div&gt;
&lt;div id="alerta"&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id="alerta1"&gt;
Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;
&lt;a href="http://www.extjs.com/" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461164658996765522" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S8n0UqdrY1I/AAAAAAAAAJA/34_W7NSKd-0/s200/ExtJs.jpg" style="cursor: hand; cursor: pointer; float: left; height: 25px; margin: 35px 10px 1px 0; width: 100px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Si Ud. amigo lector ha revisado los post anteriores y han empezado con el &lt;a href="http://www.quizzpot.com/2009/01/ext-js-framework/" target="_blank"&gt;Curso de EXtJS&lt;/a&gt; que nos brinda Crysfel Villa en su web del Quizzpot, pues entonces creo que resulta necesario que puedan observar porque realmente me interesó ExtJS y me parece importante...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;A estas alturas, ya deben haber instalado su servidor Apache+MySQL +PHP+PHPMyAdmin y debe estar en funcionamiento, por lo que al ingresar &lt;b&gt;"http://localhost"&lt;/b&gt; en la barra de direcciones de su navegador les debe aparecer lo siguiente:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S5qAcbuXu6I/AAAAAAAAAEo/RIP3ZbCjSo4/s1600-h/ServidorHTTP.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5447807925224979362" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S5qAcbuXu6I/AAAAAAAAAEo/RIP3ZbCjSo4/s200/ServidorHTTP.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Dicha imagen nos indica que nuestro servidor local esta funcionando sin mayores contratiempos.. y aparece porque en la carpeta "www" de c:/Appserv (o la carpeta que hayamos elegido para la instalación de nuestro servidor), están los archivos &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;index.php&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; y &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;phpinfo.php&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;; resulta necesario aclarar, si aún no es de su conocimiento, que los archivos "index" (sean php, html,  entre otros), son de ejecución automática cuando se ingrese a las carpetas que los contienen, porque así puede ser configurado por defecto (el standard es index.php), lo que podemos comprobar empezando a examinar la información que nos presenta el link "PHP Information" de la pagina mostrada en la figura...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;Si no desea que aparezca esta pagina al ingresar a nuestro servidor local ("localhost"), pues sencillamente ingrese con su explorador a la carpeta en "www" y renombre &lt;b&gt;index.php&lt;/b&gt; por &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Server.php&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; por ejemplo... con ello lograra que cuando ingrese a localhost aparezca directamente el directorio del servidor (como aparecen en el Curso ExtJS de Quizzpot). &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;No le recomiendo eliminar esos archivos, por cuanto nos van a ser útiles cuando queramos trabajar con la base de datos MySQL  mediante PHPMyAdmin, y cuando queramos ver  o revisar la configuración de nuestro servidor Apache, la base de datos o de PHP ( mediante PHPInfo.php), ...pero ténganse en cuenta, que para ingresar a los servicios del servidor, debe ahora hacer click en el ahora archivo &lt;b&gt;Server.php &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;(o abrirlo en otra pestaña).&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Si ya han seguido y probado los primeros capítulos del Curso de ExtJS ( que si funciona..!! ), y siguiendo las recomendaciones de Crysfel, deben haber bajado la &lt;a href="http://www.sencha.com/products/extjs/download/" target="_blank"&gt;ultima versión de ExtJS&lt;/a&gt; de su pagina oficial, aun que debe reiterarles que la ultima versión compatible 100% con la&amp;nbsp;versión&amp;nbsp;ExtJs utilizada en el curso de Crysfel es la &lt;a href="http://www.sencha.com/products/extjs3/download/" target="_blank"&gt;versión ExtJs-3.4&lt;/a&gt;, y es en la que debemos copiar, en la carpeta "Ext-3.4" de "Curso", los archivos básicos de ExtJs indicados en el curso (si queremos que los ejemplos funcionen tal como están, especialmente para los puntos de manejo de &lt;span class="notranslate"&gt;forms&lt;/span&gt; y &lt;span class="notranslate"&gt;grids&lt;/span&gt;... los capítulos iniciales y de manejo básico del framework funcionan tal como están en ExtJs3 y ExtJs4, aunque esta ultima versión sugiere una Implementacion MVC más apropiada para desarrollos complejos, y una forma de llamada de componentes orientada a agilizar la carga de los mismos, y bueno.. mi recomendación al respecto es que hayan renombrado esa carpeta con la versión de ExtJs que hayan bajado... que debe ser la &lt;a href="http://www.sencha.com/products/extjs3/download/" target="_blank"&gt;versión Extjs-3.4&lt;/a&gt; si deseamos trabajar, como hemos indicado, con esta ultima version de ExtJs 3.x, y sencillamente a la hora de importar la biblioteca de ExtJs en nuestras aplicaciones o ejemplos, reemplacemos la ruta de ExtJs-2.2 que indican en el tutorial de Crysfel, y pongamos el nombre de la carpeta que corresponda a la versión de ExtJs-3.x que estemos utilizando...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Asimismo, también les recomiendo crear en la carpeta &lt;b&gt;"www"&lt;/b&gt; de nuestro servidor Appserv, una carpeta que podriamos llamar &lt;b&gt;GoogleCode&lt;/b&gt;, y en donde podriamos guardar nuestros propios archivos HTML que podamos copiar del &lt;a href="http://code.google.com/apis/ajax/playground/" target="_blank"&gt;&lt;span class="notranslate"&gt;Code Playground&lt;/span&gt;&lt;/a&gt; de Google y probar en nuestro propio servidor las varias herramientas y API de Google que cebemos procurar integrar a nuestros productos Web, y a nuestros desarrollos ExtJs en particular..&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;Pero hoy les propongo hacer algo más interesante... cuando hayamos bajado nuestra versión de ExtJs (la versión ExtJs-4.0.2a vigente al 01/07/2011), probablemente la hemos hecho en una carpeta cualquiera.. y de allí hayamos copiado los archivos como nos indicó Crysfel en la carpeta "Curso"... pues, mejor copiemos toda la carpeta que contiene todo nuestro ExtJs que hemos bajado también en "www", siempre revisando la web oficial de ExtJS para asegurarnos que estemos trabajando con la &lt;a href="http://www.sencha.com/products/extjs/download/" target="_blank"&gt;ultima versión vigente de ExtJs-4.x &lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href="http://3.bp.blogspot.com/_Myy7SL10ikw/S6GKYOlzydI/AAAAAAAAAFs/4cyu43wOsgo/s1600-h/CarpetaWWW.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5449789172933183954" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S6GKYOlzydI/AAAAAAAAAFs/4cyu43wOsgo/s200/CarpetaWWW.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;Ingresemos ahora a nuestro navegador y en la barra de direcciones  coloquemos los links:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;  localhost/Ext-4.0.2a&lt;/b&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(o la versión que hayamos bajado), y revisemos allí su opción &lt;span class="notranslate"&gt;&lt;b&gt;"View the Examples"&lt;/b&gt;&lt;/span&gt;, equivalente a la ruta: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;localhost/Ext-4.0.2a/examples&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;Si no tenemos algun contratiempo debemos observar la web de ejemplos de ExtJS correspondiente a la versión que estemos utilizando... si es la última versión debe coincidir con la que muestra ExtJS en su pagina oficial:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://www.extjs.com/deploy/dev/examples/" target="_blank"&gt;http://www.extjs.com/deploy/dev/examples/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;Si observamos la barra de direcciones de nuestro navegador de nuestra primera carga, nos daremos cuenta que hacemos referencia a archivos grabados en nuestro disco (si amigo lector, toda la web oficial de ExtJs ha sido programada íntegramente en ExtJs, y la parte correspondiente a los ejemplos, la tenemos ahora grabada en nuestro disco); y sabiendo cuales son esos archivos, sencillamente los podremos copiar, modificar y utilizar durante nuestro proceso de aprendizaje... y de paso, observar las equivalencias y diferencias entre el código ExtJs-3.x del tutorial del Quizzpot, con el código de la versión ExtJs-4.x, y así poder actualizarnos y realmente observar todo el potencial de éste &lt;span class="notranslate"&gt;framework&lt;/span&gt;, y que lo hace sumamente útil para desarrollar aplicaciones administrativas de "apariencia" similar a los que nos presentan cualquiera de los lenguajes de desarrollo convencionales, con el uso de ventanas, menús, grillas, formularios, etc... pero integrado completamente a la web.. y a bases de datos... asimismo, ExtJs abarca y hace posible el desarrollo de opciones que observamos en las mejores paginas web.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
Algo similar ocurre si en lugar de utilizar ExtJs-4.0 empleamos la ultima &lt;a href="http://www.quizzpot.com/2009/01/ext-js-framework/" target="_blank"&gt;versión de ExtJs-3.4&lt;/a&gt; disponible, y cuya link hemos indicado, y observar la documentación y los ejemplos que nos muestran bajo el codigo de la version ExtJs-3.x, y que son equivalentes a los utilizados en el Tutorial de Crysfel, pero cabe dar una revision a las caracteristricas y mejoras de ExtJs-4.0, y empezar tambien nuestras pruebas bajo esta versión.. que nos presenta varias ventajas que para nosotros desarrolladores Web debemos empezar a revisar, pues nos permite un mejor manejo interno de los componentes del framework, y por supuesto, una increible mejora de nuestro potencial de programación.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="color: red; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;NOTA IMPORTANTE:&lt;/b&gt;&lt;/span&gt; Si deseamos empezar a trabajar con ExtJs4 y empezar a utilizar esta versión con los ejercicios propuestos por el Curso ExtJs de Quizzpot, debemos tener presente que para crear nuestra versión "liviana" de ExtJs4 debemos copiar dentro de una carpeta ExtJs-4 el archivo &lt;b&gt;ext-all.js&lt;/b&gt; y la carpeta &lt;b&gt;resources&lt;/b&gt; de nuestra fuente descargada de ExtJs4. Asimismo, para la importación de las librerías de ExtJs4 solo es necesario importar a ext-all.js mediante en siguiente script que va dentro del Head de nuestra aplicación:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="html" name="code" style="background-color: white; line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="color: #4c1130; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 18px; white-space: normal;"&gt;&lt;pre name="code" style="white-space: pre-wrap;"&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&amp;gt;
    &amp;lt;title&amp;gt;Ext.Panel&amp;lt;/title&amp;gt;
    &amp;lt;!-- Importar los estilos --&amp;gt;
    &amp;lt;link rel="stylesheet" type="text/css" href="../js/Ext/resources/css/&lt;wbr&gt;&lt;/wbr&gt;ext-all.css" /&amp;gt;

    &amp;lt;!-- Importar el ext-all-dev.js --&amp;gt;
    &amp;lt;script type="text/javascript" src="../js/Ext/ext-all-dev.js"&lt;wbr&gt;&lt;/wbr&gt;&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;script type="text/javascript" &amp;gt;
        Ext.onReady(function(){
            alert("ExtJs4 esta instalado correctamente!");
        });
    &amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
	&amp;lt;div id="center"&amp;gt;&lt;/pre&gt;
&lt;pre name="code" style="white-space: pre-wrap;"&gt;        &amp;lt;h1&amp;gt;Bienvenido ExtJs4...&amp;lt;/h1&amp;gt;&lt;/pre&gt;
&lt;pre name="code" style="white-space: pre-wrap;"&gt;        &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="html" name="code" style="background-color: white; line-height: 20px;"&gt;&lt;b&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;
&lt;pre class="html" name="code" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;(en la&amp;nbsp;versión&amp;nbsp;ExtJs4 ya no existe ni es necesario importar el "adapter")&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class="html" name="code" style="background-color: white; line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="html" name="code" style="background-color: white; line-height: 20px;"&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;ExtJs es un framework de Javascript realmente potente.. y por eso mi interés de integrarlo con el mundo Google, el cual también es bastante importante... además, si han revisado los primeros links que les presente respecto a Google, deben notar que ExtCore esta completamente integrado a Google a través de sus &lt;/span&gt;&lt;a href="http://code.google.com/intl/es-ES/apis/ajaxlibs/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;API de Biblioteca AJAX&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;; por ello los invito a bajar ExtCore y grabarlo también en "www", y observe los ejemplos que nos presenta... ExtCore no ocupa mucho espacio de disco y presenta algunos ejemplos interesantes que podemos probar y unir a nuestros proyectos...&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial; font-size: large;"&gt;&lt;b&gt;El Potencial de ExtJS&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Google como hemos indicado utiliza tambien una version liviana de ExtJS como ExtCore, pero el potencial de este framework radica en que partiendo de las formas de esta librería  Javascript se ha desarrollado Sencha Touch, que es una variación de ExtJs especializada para desarrollos web en entornos &lt;b&gt;Apple, iOS y Android&lt;/b&gt;, (para móviles: telefonos celulares, Tablets, Pockets, etc.); y lo que es una principal novedad, ExtJs4 integra el manejo de ExtJs con Sencha Touch. Asimismo en este framework tenemos Ext-GWT, como un framework especializado hacia el entorno Java y desarrollos web usando Google Web Toolkit (&lt;/span&gt;&lt;/span&gt;&lt;span class="st"&gt;Java software development framework&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;); y cabe resaltar que con&amp;nbsp;&lt;b&gt;Node.js y el motor V8&lt;/b&gt; es el inicio para emplear Javascript desde el lado de Servidor (como un back-end con capacidades asincronas de alto rendimiento), así que como podrá observarse, aún se espera mucho en el desarrollo de este framework.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;En los siguientes post, les mostraré como empezar a integrar ExtJs a Google, por lo que si están siguiendo el Curso de Crysfel, lo animo a continuar... pues como indique, creo que ese curso es uno de los más completos que hemos encontrado (y bastante practico en lo que respecta a la teoría de manejo de clases asociados a la programación orientada a objetos POO), esto por la forma que esta planteado, y aunque no siempre  hay ayudas visuales, pues no se preocupen, si tienen dudas o no funciona algo... posteen en el mismo curso, el foro de Quizzpot, o por nuestros enlaces facebook si lo desean...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="javascript:void(rut_facebook_50());"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 0px 0px 0px; text-align: left; width: 40px;" /&gt;Opina sobre el framework ExtJs&lt;/a&gt;&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/03/el-potencial-de-extjs.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-3083278609394233790?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xmWn8J05-l0cVyjlgBJ-qEv7jYg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xmWn8J05-l0cVyjlgBJ-qEv7jYg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xmWn8J05-l0cVyjlgBJ-qEv7jYg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xmWn8J05-l0cVyjlgBJ-qEv7jYg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/p9Jo4S1Wx3Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/3083278609394233790/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/03/el-potencial-de-extjs.html#comment-form" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/3083278609394233790?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/3083278609394233790?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/p9Jo4S1Wx3Y/el-potencial-de-extjs.html" title="El potencial de ExtJS" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_Myy7SL10ikw/S8n0UqdrY1I/AAAAAAAAAJA/34_W7NSKd-0/s72-c/ExtJs.jpg" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/03/el-potencial-de-extjs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcMSXkzeip7ImA9WhdUFUw.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-4855068516835670047</id><published>2010-03-11T07:56:00.000-08:00</published><updated>2011-10-01T16:34:48.782-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T16:34:48.782-07:00</app:edited><title>Herramientas para desarrollo Web</title><content type="html">&lt;div id="talerta"&gt;&lt;/div&gt;&lt;div id="talerta1"&gt;&lt;/div&gt;&lt;div id="alerta"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="alerta1"&gt;Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;br /&gt;
&lt;span class="notranslate"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;a href="http://foro.quizzpot.com/viewtopic.php?f=6&amp;amp;t=118" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5461023831297363666" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S8l0PaZsDtI/AAAAAAAAAIw/-4PanWnz2Rw/s200/herramientas.jpg" style="cursor: pointer; float: left; height: 25px; margin: 5px 15px 1px 5px; width: 45px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Paso a detallar algunas herramientas necesarias para empezar con nuestros desarrollos Web...&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;a este nivel básicamente solo requerimos de un buen editor de textos para escribir nuestro código, y navegadores Web que nos permitan "explorar" o ver el contenido de una pagina web...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Como editor podemos utilizar Notepad++, el cual además de ser bastante ligero, se encuentra habilitado para reconocer la sintaxis de HTML, JavaScript, PHP, etc..., además de permitirnos controlar el formato de texto de nuestros códigos, pues debe tenerse bien en claro que el formato de texto estandard empleados en todos los elementos de una aplicación Web ya sean archivos HTML, JS (Javascript), PHP, datos de nuestras bases de datos, etc.. es el &lt;b&gt;formato UTF-8&lt;/b&gt; (como lo es el formato ANSI para las aplicaciones Windows), por ello, siempre es bueno cerciorarnos que nuestros códigos siempre sean escritos en ese formato.. y para lo que solo basta revisar la opción "formato" del menú de opciones de Notepad++&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Puede revisar: &lt;a href="http://notepad-plus.sourceforge.net/es/site.htm" target="_blank"&gt;&lt;span class="Apple-style-span" style="color: #993399;"&gt;http://notepad-plus.sourceforge.net/es/site.htm&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Como navegadores, y siempre optando por opciones opensource, recomendamos Mozila Firefox y Google Chrome: en lo que respecta a Firefox resulta imprescindible instalar el plug-in de Firebug, &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Firebug&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; es una extensión de &lt;/span&gt;&lt;/span&gt;&lt;a class="mw-redirect" href="http://es.wikipedia.org/wiki/Firefox" target="_blank" title="Firefox"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Firefox&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; creada y diseñada especialmente para  desarrolladores y programadores web. Es un paquete de utilidades con el  que se puede analizar (revisar velocidad de carga, estructura &lt;/span&gt;&lt;/span&gt;&lt;a class="mw-redirect" href="http://es.wikipedia.org/wiki/DOM" target="_blank" title="DOM"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;DOM&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;),  editar, monitorizar y depurar el código fuente, &lt;/span&gt;&lt;/span&gt;&lt;a class="mw-redirect" href="http://es.wikipedia.org/wiki/CSS" target="_blank" title="CSS"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;CSS&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;,  &lt;/span&gt;&lt;/span&gt;&lt;a href="http://es.wikipedia.org/wiki/HTML" target="_blank" title="HTML"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;HTML&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; y &lt;/span&gt;&lt;/span&gt;&lt;a href="http://es.wikipedia.org/wiki/JavaScript" target="_blank" title="JavaScript"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;JavaScript&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  de una página web de manera instantánea y o&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;nline&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;En lo que respecta a Google Chrome, solo basta presionar sobre la pagina web que queramos el botón derecho del mouse y elegir la opción "inspeccionar objeto", y de allí seleccionar las opciones "console" y "resources" (para revisar mensajes de error o los remitidos por nuestra codificación, así como para ver todos los recursos empleados en una pagina Web).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Para seleccionar estos navegadores, y otros que nos pudieran resultar necesarios, los invito a revisar la pagina de Google Pack, la que nos muestra software utilitarios que deben ser imprescindibles en nuestro computador bajo Windows... son free y Opensource, como casi todo lo promocionado o auspiciado por Google... así que les conviene dar un vistazo en :&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://pack.google.com/intl/es/pack_installer.html?hl=es" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://pack.google.com/intl/es/pack_installer.html?hl=es&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Asimismo, les envío el link de una discusión del foro del Quizzpot, respecto a las herramientas empleadas por desarrolladores de ExtJS, para que veamos que herramientas estan empleando otras personas que tienen el mismo interes que nosotros por el desarrollo Web:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;a href="http://foro.quizzpot.com/discussion/comment/1423/#Comment_1423" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://foro.quizzpot.com/discussion/comment/1423/#Comment_1423&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;Nota agregada (23/05/2010): &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="color: #2a8c00;"&gt;Resulta conveniente que al hacer las pruebas de nuestros desarrollos observemos su funcionamiento utilizando varios navegadores, nosotros realizamos nuestras pruebas utilizando Google Chrome y Mozila Firefox, pero nos han reportado de varios inconvenientes al visualizar nuestro Blog con Internet Explorer; por lo que hemos realizado algunos cambios y esperemos haber superado cualquier inconveniente; ...y resulta que el mundo Web es así, por lo que resulta conveniente considerar sus diversas opciones.&lt;br /&gt;
(comentaremos estos puntos en nuestro post "Localización e Internacionalización de nuestro proyecto", pero de reportarse inconvenientes no olviden de indicarlos en nuestros foros..!)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href="javascript:void(rut_facebook_40());" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 0px 0px 0px; text-align: left; width: 40px;" /&gt;Opina en nuestros foros..!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script&gt;
wlang=navigator.language;
//document.write('Navegador: '+wlang);
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
  google.load("jquery", "1");
  google.load("language", "1");
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  document.write('Navegador: '+wlanguage );
  var cadlanguage = ',en,pt,it,fr,de,nl,sv,ja,ru,ko,th,es';
  var ltarget = 'en';
  var npos = cadlanguage. lastIndexOf(wlanguage);
  if (npos&gt;0) {
    wlanguage = cadlanguage.substr(npos,2); 
  } else {
    wlanguage = ltarget;  
  };
  function enespanol() {
    jQuery("#alerta").hide();
    $("#alerta1").hide();
  };
  function initialize() {
    var texto = document.getElementById("alerta").innerHTML;
    google.language.translate(texto, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    var texto1 = document.getElementById("alerta1").innerHTML;
    google.language.translate(texto1, 'es', wlanguage, function(result) {
      var translated = document.getElementById("talerta1");
      if (result.translation) {
          translated.innerHTML = result.translation;
      }
    });
    enespanol();
  };
  if (wlanguage != 'es') {  
      google.setOnLoadCallback(initialize);
  } else {
      google.setOnLoadCallback(enespanol);
  }
&lt;/script&gt;
&lt;script&gt;
window.fbAsyncInit = function() {
FB.init({appId: ‘138465519521758”, status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement(‘script’); e.async = true;
e.src = document.location.protocol + ‘//connect.facebook.net/en_US/all.js’;
document.getElementById(‘fb-root’).appendChild(e);
}());
&lt;/script&gt;

&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:comments href="http://mlaynessanchez.blogspot.com/2010/03/herramientas-para-desarrollo.html" num_posts="15" width="475"&gt;&lt;/fb:comments&gt;
&lt;!--
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- Include the Google Friend Connect javascript library. --&gt;&lt;br /&gt;
&lt;script type="text/javascript" src="http://www.google.com/friendconnect/script/friendconnect.js"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- Define the div tag where the gadget will be inserted. --&gt;&lt;br /&gt;
&lt;div id="div-1052019870228143374" style="width:430px;border:1px solid #cccccc;"&gt;&lt;/div&gt;&lt;!-- Render the gadget into a div. --&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
var skin = {};
skin['BORDER_COLOR'] = '#cccccc';
skin['ENDCAP_BG_COLOR'] = '#e0ecff';
skin['ENDCAP_TEXT_COLOR'] = '#333333';
skin['ENDCAP_LINK_COLOR'] = '#0000cc';
skin['ALTERNATE_BG_COLOR'] = '#ffffff';
skin['CONTENT_BG_COLOR'] = '#ffffff';
skin['CONTENT_LINK_COLOR'] = '#0000cc';
skin['CONTENT_TEXT_COLOR'] = '#333333';
skin['CONTENT_SECONDARY_LINK_COLOR'] = '#7777cc';
skin['CONTENT_SECONDARY_TEXT_COLOR'] = '#666666';
skin['CONTENT_HEADLINE_COLOR'] = '#333333';
skin['DEFAULT_COMMENT_TEXT'] = '- a\xf1ade tu comentario aqu\xed -';
skin['HEADER_TEXT'] = 'Comenta y Evalua Herramientas de Desarrollo Web   .';
skin['POSTS_PER_PAGE'] = '10';
google.friendconnect.container.setParentUrl('/' /* location of rpc_relay.html and canvas.html */);
google.friendconnect.container.renderReviewGadget(
 { id: 'div-1052019870228143374',
   site: '12546844763003200469',
   'view-params':{"disableMinMax":"true","scope":"PAGE","allowAnonymousPost":"true","startMaximized":"true"}
 },
  skin);
&lt;/script&gt;
--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7521149585630145029-4855068516835670047?l=mlaynessanchez.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FigS4Jn3-lpaDUfYceT7SIjBo08/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FigS4Jn3-lpaDUfYceT7SIjBo08/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FigS4Jn3-lpaDUfYceT7SIjBo08/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FigS4Jn3-lpaDUfYceT7SIjBo08/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/IntegracionGoogle/~4/O9i0FFIdelI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://mlaynessanchez.blogspot.com/feeds/4855068516835670047/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://mlaynessanchez.blogspot.com/2010/03/herramientas-para-desarrollo.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/4855068516835670047?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7521149585630145029/posts/default/4855068516835670047?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IntegracionGoogle/~3/O9i0FFIdelI/herramientas-para-desarrollo.html" title="Herramientas para desarrollo Web" /><author><name>@Mlaynes</name><uri>http://www.blogger.com/profile/05138365926545966434</uri><email>mlaynessanchez@gmail.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_Myy7SL10ikw/S8l0PaZsDtI/AAAAAAAAAIw/-4PanWnz2Rw/s72-c/herramientas.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://mlaynessanchez.blogspot.com/2010/03/herramientas-para-desarrollo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QNRX46fip7ImA9WhdUFUs.&quot;"><id>tag:blogger.com,1999:blog-7521149585630145029.post-9216494674249729103</id><published>2010-03-10T13:39:00.000-08:00</published><updated>2011-10-02T08:29:54.016-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-02T08:29:54.016-07:00</app:edited><title>Empezando desde cero...</title><content type="html">&lt;div id="talerta"&gt;
&lt;/div&gt;
&lt;div id="talerta1"&gt;
&lt;/div&gt;
&lt;div id="alerta"&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: green; font-size: large;"&gt;&lt;b&gt;Recuerde que..&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id="alerta1"&gt;
Este blog esta desarrollado en idioma español pero utilizando &lt;b&gt;&lt;span class="notranslate"&gt; Google Traductor &lt;/span&gt;&lt;/b&gt;puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a &lt;span class="notranslate"&gt;Integracion Google.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;script type="text/javascript"&gt;
// construye envio a Wikipedia segun idioma
function rut_wiipedia_001() {
  var wurl_wikipedia = '';
  var wlanguage = wlang;
  wlanguage = wlang.substr(0,2);
  switch(wlanguage) {
  case 'es':
    wurl_wikipedia = "http://tinyurl.com/d2radl"; break;
  case 'pt':
    wurl_wikipedia = "http://tinyurl.com/c7xaq7"; break;
  default:
    wurl_wikipedia = "http://tinyurl.com/2qjapp"; break;
  };
  window.open(wurl_wikipedia,"_blank");
  return wurl_wikipedia;
};
&lt;/script&gt;&lt;a href="http://mlaynessanchez.blogspot.com/2010/04/adonde-queremos-llegar.html"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5463830772812311090" src="http://4.bp.blogspot.com/_Myy7SL10ikw/S9NtI6ZTajI/AAAAAAAAAKI/i0zAG0HejOI/s200/barra_lhorizontal.JPG" style="cursor: hand; cursor: pointer; float: left; height: 56px; margin: 0 10px 10px 0; width: 450px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Si leyeron el &lt;a href="http://mlaynessanchez.blogspot.com/2009/11/primer-articulo.html" target="_blank"&gt;post anterior&lt;/a&gt; y tienen algun tipo de conocimiento basico de desarrollo Web pues supongo que ya deben haber hecho algunas pruebas y observado como funcionan alguno de los ejemplos que muestra el &lt;a href="http://code.google.com/apis/ajax/playground/" target="_blank"&gt;Playground de Google&lt;/a&gt;.. pero si este no es el caso, por lo menos ya debe haber visto y leído las cosas que son posibles hacer con las herramientas y Apis de Google...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Si aun no tenemos los suficientes conocimientos para entender la inmensa literatura que nos presenta Google, pues no nos desanimemos y sigamos adelante, hay muchas formas de empezar y varias sumamente practicas.. cabe entonces preguntarse &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;por donde empezar&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, por cuanto el mundo Web es de por si bastante amplio y presenta innumerables alternativas...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;A estas alturas ya nos debe resultar familiar que hablar de desarrollo Web es referirnos a aplicaciones Cliente Servidor pero de ámbito WAN (Wide Area Network o Red de Area Amplia), desarrollado bajo la plataforma Internet. &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Si vamos a hacer Desarrollo Web, pues entonces nos resulta imprescindible tener acceso ininterrumpido y de ancha banda a Internet, y ahora eso es fácil y económico a través de los servicios ADSL proporcionados por PSI locales (proveedores de servicios Internet), como lo son las empresas de telefonía o cable.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Luego nos resulta necesario tener nuestro "servidor Web", y como todo en Informática, existen varias alternativas, o más propiamente dicho, varios servidores HTTP (de &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;HyperText Transfer Protocol), pero siguiendo nuestra convicción de mantenernos en el mundo Opensource o de Codigo Abierto, utilizaremos el Servidor HTTP Apache, al cual podemos acceder través de un servicio de "Hosting" o instalándolo como un &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Servidor Web Local,&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; en el cual podamos realizar todas nuestras pruebas; o si contasemos con una capacidad de equipos de cómputo apropiada, pues podríamos de alli mismo conectarnos a la Nube (Internet), y "publicar" al mundo nuestros desarrollos, pero esto, luego de haber visto el video respecto a Google App Engine del post anterior, pues tal vez no nos sea tan interesante, por cuanto representa costos que pueden llegar a ser bastantes altos, salvo se trate de aplicaciones "estáticas" o cuasi estáticas, pero, si como debe ser, nuestro objetivo es "interactuar con clientes, usuarios o seguidores", que lean y escriban por intermedio de nuestras aplicaciones, y que no solo podrían ser miles sino millones, pues nuestro enfoque puede variar, y apostar por otro tipo de servidores, como los servicios Big Table de Google o C3 de Amazon, pero obvio que eso implica emplear herramientas que aun vamos a descubrir, pero vale indicar que llegado su momento nos resulten importantes o difíciles de dejar de tomar en cuenta.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Como hemos indicado los Servidores Web o servidores HTTP se basan en "&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;HyperText Transfer Protocol&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;" o Protocolo de Transferencia de Hipertexto, y eso significa para nosotros que nuestra atención debe concentrarse en el lenguaje&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;a href="http://es.wikipedia.org/wiki/HTML" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" target="_blank" title="HTML"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;HTML&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (HyperText Markup Language), pero para cualquier persona que haya tenido conocimientos básicos de programación, este "lenguaje" resulta ser bastante intuitivo y prácticamente va a poder ser aprendido a la par que se vaya avanzando en nuestros conocimientos de desarrollo Web.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;Resumiendo... nos debe quedar claro que para iniciarnos en el desarrollo Web debemos empezar con saber &lt;/span&gt;&lt;b style="line-height: 19px;"&gt;como implementar nuestro Servidor Web Local&lt;/b&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;, y que es necesario aprender HTML, pero aun requerimos de algunos conceptos adicionales: El Front-End y el Back-End.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Debe resultarnos claro también que una vez instalado nuestro Servidor Web Local de pruebas, de alguna manera lo que programemos debe considerar de alguna manera el uso de HTML en nuestros desarrollos, &amp;nbsp;refiriéndonos a los menús, ventanas, grillas, formularios y otros componentes que interactuarán con nuestros clientes, usuarios o seguidores; y que "internamente" también debemos programar para procesar la información que solicitemos y las podamos "grabar" en una correspondiente base de datos (MySQL, SQLite, &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PostgreSQL, Sybase, etc).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: arial; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Dentro del concepto del &lt;b&gt;Front End&lt;/b&gt; (lo que ve o se encuentra del lado del "cliente"), el HTML viene a ser nuestro lenguaje de primer nivel (como el lenguaje C o Pascal), pero como dichos lenguajes son la base de la implementacion recurrimos a lenguajes de un segundo nivel, como VFP, PowerBuilder u otros en las aplicaciones de escritorio ; y en el mundo Web tenemos al &lt;b&gt;Javascript&lt;/b&gt;, que &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: arial; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;es un &lt;/span&gt;&lt;/span&gt;&lt;a href="http://es.wikipedia.org/wiki/Script_%28inform%C3%A1tica%29" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; color: #002bb8; line-height: 19px; text-decoration: none;" target="_blank" title="Script (informática)"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;lenguaje de scripting&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: arial; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; basado en objetos y nos permite acceder y manejar los objetos del HTML en nuestras aplicaciones, y que principalmente, se utiliza integrado a nuestro &lt;/span&gt;&lt;/span&gt;&lt;a href="http://es.wikipedia.org/wiki/Navegador_web" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; color: #002bb8; line-height: 19px; text-decoration: none;" target="_blank" title="Navegador web"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;navegador web&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: arial; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (browser), permitiendo el desarrollo de &lt;/span&gt;&lt;/span&gt;&lt;a href="http://es.wikipedia.org/wiki/Interfaz_de_usuario" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; color: #002bb8; line-height: 19px; text-decoration: none;" target="_blank" title="Interfaz de usuario"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;interfaces de usuario&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: arial; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; mejoradas y &lt;/span&gt;&lt;/span&gt;&lt;a href="http://es.wikipedia.org/wiki/P%C3%A1gina_web" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; color: #002bb8; line-height: 19px; text-decoration: none;" target="_blank" title="Página web"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;páginas web&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: arial; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; dinámicas (entendiendo con ello, páginas cuyos datos dependan de lo disponemos y manejemos con nuestras base de datos, y no solo lo que podamos digitar en un editor)&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="color: #444444; font-size: small; line-height: 16px;"&gt;; ...pero resulta que junto al desarrollo y evolución del Javascript, se efectuaron diversos cambios en los estándares del mundo Web y en los Navegadores, por lo que se desarrollaron diversas bibliotecas o librerías para facilitar su uso, esos programas "mejorados" derivados de un lenguaje "principal" son conocidos como "Frameworks", y en el caso del Javascript &amp;nbsp;podemos mencionar:a Prototype, JQuery, MooTools, Dojo, YUI de Yahoo, etc., y de todas las mencionadas, una de ellas nos resulta bastante completa e interesante para nuestros propósitos&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: arial; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, nos referimos a &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://es.wikipedia.org/wiki/ExtJS" target="_blank"&gt;ExtJS&lt;/a&gt; (Javascript extendido)&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;..y porque?, pues como acabamos de indicar durante el proceso de adecuación e implementación de estándares y protocolos, que a mi parecer tuvieron como principal objetivo desmonopolizar el mercado informático de Microsoft (y en lo que mucho hay que agradecer a Netscape);, pues aún existen protocolos que recién están siendo "aceptados e implementados" por todos los desarrolladores de navegadores Web, y que ahora principalmente son Opensource, como Mozilla Firefox, Google Chrome, Opera, etc. , pero inclusive ahora tenemos algo de resistencia de parte Microsoft, y esto &amp;nbsp;ocasionado que incluso hasta hoy día puedan haber algunas incompatibilidades al utilizar nuestras aplicaciones web en un navegador u otro; mas aún, entre sus diversas versiones; y ello supone incluir en nuestro código casos u opciones a nivel de lenguaje HTML y Javascript; por ello,  &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://www.extjs.com/" target="_blank"&gt;ExtJs&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;que es una biblioteca de Javascript&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; pero que puede ejecutarse independientemente, en su codificación nos elimina esas incompatibilidades, y al ser un "lenguaje" orientado al desarrollo de aplicaciones web "enriquecidas" usando tecnologías ya estandarizadas como &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Georgia,serif; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Georgia,serif; line-height: 19px;"&gt;&lt;a href="http://es.wikipedia.org/wiki/AJAX" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #5a3696; text-decoration: none;" target="_blank" title="AJAX"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;AJAX&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Georgia,serif; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Georgia,serif; line-height: 19px;"&gt;&lt;a class="mw-redirect" href="http://es.wikipedia.org/wiki/DHTML" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" target="_blank" title="DHTML"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;DHTML&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Georgia,serif; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; y &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Georgia,serif; line-height: 19px;"&gt;&lt;a class="mw-redirect" href="http://es.wikipedia.org/wiki/DOM" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" target="_blank" title="DOM"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;DOM&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;, pues, eso nos facilita enormemente el desarrollo de nuestras aplicaciones, y nos permite olvidarnos de toda esa problemática de roces e incompatibilidades que ha existido durante el nada lejano desarrollo de los estándares web vigentes, y que principalmente han sido propiciados y auspiciados por los diferentes proyectos Opensource ligados al mundo Web, lográndose por fin, un marco adecuado para que nuestros aplicativos puedan funcionar bajo cualquier entorno Web... y al que también va&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;incorporándose&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&amp;nbsp;poco a poco lo que corresponde al desarrollo para equipos moviles (celulares, tablets, palms, etc)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Dentro del concepto del &lt;b&gt;Back-End&lt;/b&gt; (lo que no ve el "cliente" o se encuentra del lado del servidor), necesitamos dos componentes: la Base de Datos y el lenguaje de programación que nos permita interactuar con ellas; dentro de este contexto, como siempre, en el mundo informático existen varias alternativas. Como base de datos tenemos MS-SQL Server&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;MySQL, SQLite, &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PostgreSQL, Sybase, etc. asi como cualquier fuente de datos que pudiera "conectarse" a nuestra aplicación, y entre ellas tenemos a Big Table de Google, C3 de Amazon, Access de Microsoft, o inclusive las Hojas de Calculo de Openoffice, Google Docs o Office de Microsoft; ...y como lenguajes de interpretación del lado del servidor tenemos a PHP, Microsoft .Net, Java, Phyton, etc.  Y bueno, apuntando como siempre a lo que es Opensource, proponemos iniciarnos utilizando como back-end a la combinación PHP+MySQL que ahora usualmente se instala todo junto con nuestro servidor HTTP Apache, y que forma parte de lo que denomino Desarrollo Web convencional: Servidor HTTP Apache (HTML, CSS, Javascript), trabajando con el back-end PHP+MySQL.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Como acabamos de indicar, existen varios proyectos opensources que nos permiten instalar al mismo tiempo al servidor HTPP Apache, el servidor de base de datos MySQL y PHP (e inclusive al framework Zend de PHP, y que nos facilitará en un futuro "probar" algunas aplicaciones desarrolladas específicamente para este framework). Entre estos proyectos tenemos: Appserv, Xampp, Wamp, etc (dependiendo si lo instalemos sobre Windows, Mac,Linux o Unix). Les proponemos usar &lt;b&gt;Appserv,&lt;/b&gt; que es una herrramienta OpenSource para Windows, Linux y Unix que nos facilita instalar&amp;nbsp;&lt;a href="http://es.wikipedia.org/wiki/Servidor_HTTP_Apache" target="_blank" title="Apache"&gt;Apache&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/MySQL" target="_blank" title="MySQL"&gt;MySQL&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/PHP" target="_blank" title="PHP"&gt;PHP&lt;/a&gt; en una única instalación y automatiza las configuraciones de los servicios con los datos que nos solicite, como indicando la carpeta donde se instalarán los componentes (preferible una carpeta independiente y alojada directamente en la raiz de alguna de las unidades de disco de nuestro ordenador), nuestro password, mail de contacto &amp;nbsp;y dominio (si lo tuviéramos, sino basta indicar el nombre localhost predeterminado). Una vez instalado AppServ, dispondremos de un servidor web y una base de datos propios, configurados de manera local, y ello nos permitirá realizar todas las pruebas necesarias en nuestra web antes de ser lanzarla dentro de una intranet ó a la "nube" a través de internet.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Aunque Ud. amigo lector, sea una persona con conocimientos avanzados o intermedios del mundo de Desarrollo Web, el framework ExtJs (del cual tal vez ya haya escuchado hablar), le resultara bastante interesante, y por ello nuestra recomendación que siga los pasos que vamos a indicar a continuación:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: black; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: #444444; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;1.- Revise y empieze a seguir los pasos indicados en el siguiente link:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://www.quizzpot.com/2009/01/ext-js-framework/" target="_blank"&gt;http://www.quizzpot.com/2009/01/ext-js-framework/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    Este es un tutorial desarrollado por Crysfel Villa desde México, y es quizá uno de los tutoriales mas importantes y completos que he visto sobre Programación y Desarrollo Web, es bastante detallado, esta en español y muestra ayudas visuales, y aunque se encuentra orientado a lo que es ExtJs, como iremos descubriendo, todo en el mundo Web se entremezcla y esta conectado... y utilizando este framework podremos fácilmente integrarnos &amp;nbsp;al mundo Google, o a cualquier otro (incluido el de otros frameworks y otros entornos back-end de desarrollo), y así realmente estar seguros de empezar a iniciar nuestro ciclo de aprendizaje utilizando estandares vigentes &amp;nbsp;del mundo Web.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;2.- En el Capitulo "Instalacion basica del Framework"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, Crysfel nos indica lo fácil que resulta instalar nuestro servidor Web utilizando Appserv, pero como este paso es bastante importante para comprender todo lo que es Desarrollo Web, pues paso a explicarlo con mayor detalle... así que pongamos a un lado por el momento al framework ExtJs y prestemos atención a lo siguiente:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;El servidor HTTP Apache+MySQL+PHP se descarga de &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.appservnetwork.com/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://www.appservnetwork.com/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; y alli se podra revisar las diferentes versiones que podemos descargar, y no dudemos en elegir la ultima version (claro que se nos presentan diversas versiones porque dependiendo de desarrollos que hayamos efectuado o que se nos presenten en el camino, y las herramientas de desarrollo involucradas, tal vez alguno de ellas no sea compatible con alguna&amp;nbsp;versión&amp;nbsp;de Apache, PHP o MySQL, pero para nosotros que vamos a desarrollar inicialmente con ExtJS todas estas probables incompatibilidades no existen)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;   La ultima versión publicada a la fecha es:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;AppServ 2.6.0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;que incluye:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  Apache 2.2.8&amp;nbsp;&amp;nbsp;&amp;nbsp;que corresponde a nuestro servidor Web HTTP, y que por defecto permite interpretar codigos HTML y Javascript.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PHP 6.0.0-dev&amp;nbsp;&amp;nbsp;&amp;nbsp;que corresponde al lenguaje de programación del lado del servidor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  MySQL 6.0.4-alpha&amp;nbsp;&amp;nbsp;&amp;nbsp;que corresponde a la base de datos por defecto configurada para interactuar con nuestro servidor HTTP y lenguaje PHP instalado&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; &lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;phpMyAdmin-2.10.3&amp;nbsp;&amp;nbsp;&amp;nbsp;que corresponde a la interfaz grafica de administracion de nuestra base de datos MySQL,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;..pero puede utilizar sin ningun problema la versión AppServ 2.5.10 que utiliza PHP 5.2.6, y MySQL 5.0.51b que son opciones bastantes robustas...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;NOTA: &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;el nombre de usuario predeterminado en phpMyAdmin para acceder al servidor MySQL suele ser "root ", y debe emplear como password el que hayan colocado durante la instalación del servidor AppServ.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Como hemos indicado AppServ es una herramienta para la instalación completa del servidor (Webserver y Database Server), pero como puede intuirse los componentes del servidor pueden instalarse o reinstalarse por separado (por ejemplo si queremos actualizar nuestra versión, aunque Appserv también comprende esa opción), pero por si desea indagar mas al respecto les entrego el siguiente link que les dará mayores aclaraciones al respecto, y aún cuando se trate de versiones tal vez no actuales, les pueda resulltar útil, por cuanto como ya hemos indicado, quizá más de una vez nos topemos con aplicaciones que no corran con las últimas versiones y necesitemos hacer nuestras pruebas al respecto:&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;a href="http://www.maestrosdelweb.com/editorial/phpmysqlap/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://www.maestrosdelweb.com/editorial/phpmysqlap/&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Asimismo, en lo que respecta a PHP, tal vez necesario tener presente el siguiente link, por cuanto, no ahora por supuesto sino a futuro, se entenderá que al utilizar PHP a nivel avanzado así como varios de los "paquetes" que lo utilizan (como los populares servicios sociales de Wordpress, phpBB, Elgg, Drupal,etc); pues estos requieren para poder funcionar de una manera optima, y actualmente ya es también muy exigida la "certificación" de las llamadas pruebas unitarias incluidas en el framework Zend de PHP, y para ello este link nos puede resultar importante... más incluso si vamos a trabajar a nivel intranet o mixto (acceso simultáneo a través de red local e internet)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;a href="http://usingzendframework.blogspot.com/2007/12/setting-up-phpunit.html" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://usingzendframework.blogspot.com/2007/12/setting-up-phpunit.html&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;A este nivel amigo lector, ya debe tener en claro que el servidor HTTP Apache, la base de datos MySQL y nuestro lenguaje del lado del servidor PHP (así como &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;phpMyAdmin, PERL, PHPUnit, y muchos otros que poco a poco iremos integrando a nuestras aplicaciones), son servicios y que estos son puestos en funcionamiento automáticamente al inicializar Windows o el sistema operativo que empleemos (OS Mac, Linux, Unix, etc); y como cualquier servicio pueden deshabilitarse o habilitarse cuando queramos como por ejemplo al querer actualizar a una nueva version  nuestro servidor web,de &amp;nbsp;nuestra base de datos o al instalar PERL, PHPUnit, etc.. por lo que una vez instalado Appserv resulta conveniente revisar las opciones Appserv instalada en "Todos los Programas" de windows (si es el caso), y revisar las opciones: &lt;b&gt;Add-remove Windows service&lt;/b&gt;, para cuando queramos desinstalar o volver instalar nuestro servidor y/o la base de datos MySQL(refiriéndonos al servicio, no a la aplicación, es decir no borra de nuestro disco al servidor, sino que habilita o deshabilita el servicio); asi como tambien conviene revisar con detalle los archivos bath de las rutas c:\Appserv\Apache2.2\*.bat; c:\Appserv\PHP6\*.bat y c:\Appserv\MySQL\*.bat, las cuales nos mostraran sus opciones directas de habilitación y deshabilitacion de cada servicio. &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Resulta asimismo interesante que se revise el funcionamiento de &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;phpMyAdmin, y observar las base de datos y tablas existentes, asi como crear una de base de datos de prueba: podemos llamarla "tutorial" por ejemplo, y ver algunas de sus opciones, pues de hecho, las vamos a utilizar en el futuro.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Hello World&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Y entonces ahora, si ya hemos instalado nuestro servidor HTTP con appserv (y al ingresar la direccion &lt;b&gt;http://localhost&lt;/b&gt; en su navegador de preferencia : Google Chrome, Mozila Firebug, Opera, IE, etc, observan una pantalla como la indicada), entonces ya estamos listos para iniciarnos con la programación Web..&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_Myy7SL10ikw/S5qAcbuXu6I/AAAAAAAAAEo/RIP3ZbCjSo4/s1600-h/ServidorHTTP.PNG" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5447807925224979362" src="http://1.bp.blogspot.com/_Myy7SL10ikw/S5qAcbuXu6I/AAAAAAAAAEo/RIP3ZbCjSo4/s200/ServidorHTTP.PNG" style="cursor: hand; cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Para ello con su explorador ingrese a la carpeta &lt;b&gt;"www"&lt;/b&gt; que se encuentra dentro de la carpeta &lt;b&gt;"c:\AppServ"&lt;/b&gt; u otra donde hayamos instalado la aplicación, y dentro de esta carpeta renombre el archivo &lt;b&gt;index.php&lt;/b&gt; por &lt;b&gt;"myserver.php"&lt;/b&gt;&amp;nbsp;por ejemplo (no elimine ningún archivo que despues nos serán muy utiles); y en esta misma carpeta cree con el &lt;b&gt;notepad&lt;/b&gt;&amp;nbsp;u otro editor de textos, un archivo que pondremos como nombre "index.html", digite en ella &lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;b&gt;Hello World!&lt;/b&gt;&lt;/span&gt; y grabe el archivo...&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Una vez efectuado esto, sencillamente abra el navegador de su preferencia (Chrome, Firefox , IE, u otro), y digite en la barra de direcciones &lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;b&gt;http://localhost&lt;/b&gt;&lt;/span&gt;. y debe aparecer el mensaje dentro de su navegador... y listo!. Pueden buscar cualquier tutorial HTML y copiar los codigos que les sugieran en su archivo y continuar con sus pruebas... ahora si no quieren que la carga sea automatica al ingresar localhost... renombren el archivo &lt;b&gt;index.html&lt;/b&gt; creado por cualquier otro nombre pero usando la misma extension html (testing.html `por ejemplo)... y ahora el navegador al refrescar nuestro navegador le mostrara el directorio de los archivos de la carpeta "www" y para ejecutarlos debe hacer click sobre ellos... es decir amigos, ya estan dentro del mundo Web... bienvenidos...&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Otro codigo que puedan probar?&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp; &amp;lt;h1&amp;gt;Hello World...&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp; Hello guys, my name is &amp;lt;b&amp;gt;Miguel&amp;lt;/b&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp; &amp;lt;p style ="color:red;"&amp;gt;Bienvenido&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp; ...y digite lo que desee.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Algo mas elaborado?&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Siga esta direccion: &lt;a href="http://ckeditor.com/demo" target="_blank"&gt;http://ckeditor.com/demo&lt;/a&gt;, y llegara a un Editor Web on-line, es decir como si trabajasemos con Word de Microsoft u OpenOffice, y sencillamente para pasar lo que tenemos en el editor, seleccionemos la opcion "fuente HTML", y a continuación "Seleccionar todo" (Ctrl+A); luego peguemos lo que tengamos en memoria en un archivo utilizando notepad u otro editor e textos, que también grabaremos en la carpeta "www" de nuestro Appserv, y la llamamos &lt;b&gt;mytest.html &lt;/b&gt;por ejemplo... luego, al refrescar nuestro navegador o ingresar a http://localhost nuevamente, deberia aparecer nuestro archivo mytest.html; y al hacer click sobre él, debe aparecer en nuestro navegador lo que nos muestra el editor como ejemplo.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Algo ligado a Google?&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;pues volvamos al &lt;a href="http://code.google.com/apis/ajax/playground/" target="_blank"&gt;Playground de Google&lt;/a&gt;, y seleccionemos de alli alguna opcion de nuestro agrado...elijamos la API de Earth (Hello Earth! por ejemplo), de Maps (empecemos con Map simple ), o cualquiera de las API Visualization, las que sea de nuestro agrado ... en cualquier caso, vayamos a la opcion &lt;b&gt;"Edit HTML"&lt;/b&gt;&amp;nbsp;del ejercicio que estemos revisando y seleccionemos todo el código mostrado (boton derecho del mouse, opción "seleccionar todo"); peguemoslo luego en sendos archivos de nombre apropiado: earth01.html, map01.html o visual01.html, etc. como corresponda.. y ejecutelos en su navegador luego de refrescar http://localhost por supuesto, y observemos los resultados...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;y esto es solo el comienzo...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;pueden ahora ingresar a http://youtube.com o www.slideshare.net, y observará que al ejecutarlos al final o al comienzo respectivamente, se puede tener acceso a opciones como URL (léase enlace) y EMBED (léase embebido), y la opción que nos interesa es la EMBED, que se encuentra contenido dentro de etiquetas del tipo &amp;lt;div&amp;gt; u &amp;lt;object&amp;gt;; en ambos casos, se puede pegar todo este contenido en nuestras paginas web.. hagamos tambien pruebas al respecto... y finalmente revisemos con mas detalle como pegar imagenes utilizando nuestro mismo editor on-line (donde podemos primero poner todo lo que deseemos antes de pasarlo finalmente al archivo html que probaremos... y por supuesto, revisemos cualquier tutorial respecto a HTML, luego CSS y finalmente Javascript, y de manera bastante simple ya tendremos una primera visión completa de lo que es Desarrollo Web en una de sus principales opciones: &lt;b&gt;la convencional&lt;/b&gt;, pues como veremos mas adelante, este mundo presenta varias variantes y opciones interesantes que podemos y debemos considerar...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Volviendo con ExtJs y el Curso del Quizzpot&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;3.- Cabe asimismo, también mencionar que el Tutorial de Crysfel inicia desde la versión 2.2 del framework &amp;nbsp;ExtJs, y a la fecha ya se efectuó el lanzamiento de ExtJs4, siendo la ultima versión compatible 100% a la versión ExtJs utilizada en el Curso de Crysfel la version ExtJs-3.4 la que podemos descargar de :&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.sencha.com/products/extjs3/download/" target="_blank"&gt;http://www.sencha.com/products/extjs3/download/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
..y bueno,  por supuesto que las versiones de ExtJs van seguir lanzándose al mercado y mejorando cada vez (mas aun que nos referimos a un &lt;span class="notranslate"&gt;framework&lt;/span&gt; bastante vigente y activo); pues no nos preocupemos, y sencillamente modifiquemos el nombre de la carpeta a la versión que empleemos (la última por supuesto), y adecuemos el tutorial a la ultima versión de ExtJS y estaremos mucho más actualizados...&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; Pero tengamos en cuenta que si utilizamos ExtJs4, las instrucciones de manejo de forms,&amp;nbsp; grids y modelamiento de base de datos&amp;nbsp; principalmente han tenido bastante modificaciones para optimizar su manejo (entre otros cambios internos o de "core" bastante importantes), es por ello que les indicamos donde bajar la versión ExtJs 3.4 la cual es totalmente compatible con lo desarrollado en el tutorial, entre otras modificaciones y mejoras; por supuesto que tal vez seria conveniente empezar a reestructurar e incluso reescribir todo el Tutorial de Crysfel bajo ExtJs4 como parte de nuestro proceso de aprendizaje personal.&lt;br /&gt;
&lt;br /&gt;
A este ultimo apunte, debo tambien resaltar que ExtJs-3.x esta aún completamente vigente y hay importantes desarrollos en esta plataforma, e incluso varios de ellos &lt;span class="notranslate"&gt;&lt;b&gt;opensource&lt;/b&gt;&lt;/span&gt; (pueden revisar el &lt;a href="http://www.sdsimple.es/" target="_blank"&gt;proyecto Sdsimple&lt;/a&gt;, cuyas fuentes podemos incluso bajar a nuestros propios ordenadores personales y acondicionar a nuestras necesidades, y en este caso, el desarrollo por el Front-End ha sido efectuado con ExtJs-2.0, vale decir compatible con ExtJs-3.4).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;La curva de aprendizaje de ExtJs no es rápida, pero su lógica de programación es totalmente comprensible e intuitiva para personas con conocimientos previos de programación, y contempla el uso de estándares POO modernos y en pleno vigencia y desarrollo dentro del mundo del desarrollo WEB que los hacen muy atractivo para desarrolladores nuevos.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;div&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;y bueno amigos, espero que con toda esta introducción puedan empezar sin mayores contratiempos el Curso de ExtJS que nos presenta Crysfel y empecemos a sumergirnos poco a poco dentro del mundo de Desarrollo Web desde cero y sin mayores contratiempos.. ...y por supuesto, pueden postear cualquier duda que tengan directamente aqui o en el &lt;/span&gt;&lt;a href="http://foro.quizzpot.com/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Foro de &lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #3366ff;"&gt;&lt;a href="http://foro.quizzpot.com/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;www.quizzpot.com&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://foro.quizzpot.com/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;,&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;en la Web de Crysfel.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Cloud Computing&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Cual debe ser nuestra meta? Hasta donde podemos desarrollar? &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="javascript:void(rut_wiipedia_001());" target="_blank"&gt;&lt;span class="notranslate"&gt;Cloud computing&lt;/span&gt;&lt;/a&gt; o Nube computacional, se refiere al concepto de lo que significa utilizar Internet actualmente a través de servicios "integrados" y corriendo todo en Internet, como las redes sociales (Window Live, Google Apps, Facebook, Hi-5, Twitter, Google+, etc), e-commerce; e incluyendo la implementación, administración y seguimiento remoto de todo tipo de negocios, o realmente todo lo que se nos pueda ocurrir; accediendo a ellos a través de nuestros navegadores -sin importar que trabajemos sobre Windows, Linux, Unix, Apple, etc.; ó si utilicemos Google Chrome, Firefox, Internet Explorer, etc. ...al indicarles el link del proyecto sdsimple lo que intentamos es mostrarles de una manera concreta que el mundo del Desarrollo Web no solo son paginas Web y redes sociales, también son aplicaciones administrativas y de gestión y todas ellas pueden interactuar entre sí &amp;nbsp;(y muchas de ellas también opensource y bajo licenciamiento GPL)... y esa es la realidad actual del mundo Web, y es adonde debemos apuntar cada vez que nos conectemos desde nuestras casas, oficinas o de donde tengamos acceso a Internet con nuestros ordenadores personales, de oficina, telefonos celulares, servicio de TV-cable, etc. ..y eso es lo que siempre debemos tener presente cuando empecemos a bosquejar nuestros proyectos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,Arial,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;i&gt;&lt;br /&gt;
&lt;a href="javascript:void(rut_facebook_30());"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 0px 0px 0px; text-align: left; width: 40px;" /&gt;Opina respecto al &lt;span class="notranslate"&gt;framework&lt;/span&gt; ExtJs&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="javascript:void(rut_facebook_20());"&gt;&lt;img alt="" border="0 solid blue" id="BLOGGER_PHOTO_ID_5461483657647786530" src="http://3.bp.blogspot.com/_Myy7SL10ikw/S8sWc1CyiiI/AAAAAAAAAJY/WEQefsqRBi4/s200/lgFacebook.jpg" style="cursor: hand; cursor: pointer; display: block; float: left; height: 40px; margin: 0px 0px 0px 0
