Y justo ahora que me iba u otro pal bote
Me pregunto donde ha ido a parar mi post sobre el blog del Sr. Garcia. Lo he escrito esta mañana pero no aparece. ¿Tendra tambien permiso para borrar los comentarios que le molesten? Bueno, en cualquier caso debo decir que el Sr. Garcia no es un guru. Solo se lo cree. Tambien demuestra una considerable falta de educación y da mustras de su ignorancia al tachar las exposiciones de otros como irrelevantes o fatochadas sin dar explciaciones de ello. Su trato a los anonimos es peor. Por ese simple pasa de rebatir las opiniones, simplemente las descalifica. Pena me da gente asi. Y mas asco aun que intentar realizar una aplicacion que requiera sincronismo cliente-servidor con Ajax o Colon o Dixan. Nadie que defienda un lenguaje de scripts frente a verdaderos y serios lenguajes merece mi mas minimo respeto. No es mas que un novato venido a mas, con ansias de grandeza y que si bien protesta de que los demas tengan la verdad absoluta no muestra el mas minimo rubor al indicar que el si la tiene. Gentuza .... Saludos cordiales a todos menos al Sr. A. Garcia, penoso ejemplo de pseudo guru que por haber seguido los fasciculos "Sea programador en 1 hora de IBM" se cree el rey del mambo. Ramon
He de reconocerlo todo. No queda mas remedio. Cuando alguien tiene la razon he de darsela aunque me joda. Esta mañana he cogido ese brillante comentario que habias realizado Ramon y debido al tremendo detrimento de mi credibilidad que hubiera tenido su publicacion, no he tenido otro remedio que borrarlo cuando nadie me veia con mis supercapacidades de superhackers que te cagas por las trancas. Como bien dices no soy un guru pero me lo creo. Y contesto siempre sin dar argumentaciones y ejemplos explicitos. De eso peco es verdad.
Por el simple Hech de que alguien no quiere identificarse ni le contesto. Que bochorno. Los lenguajes de script no son sino un juguetito para que gente como yo, de 19 años, en la universidad aun, novato venido a mas como bien dices, se entretenga en sus incontables ratos de ocio y lo utilice para proclamarse poseedor de la verdad sin ningun pudor.
Y sí, como no reconocerlo ahora que todo mi ardid Shakespeareano se hunde y me conduce cual Othello a los infiernos : YO COMPRE "Sea programador en 1 hora de IBM". Aiinnssss.
XD
Ajax del pino o lo que brilla no es mi culo... 2
Jano-r no acaba de ver muy claro el esfuerzo que requiere utilizar ajax asi que ahora que me he convertido por ignominia popular en el Darth Ajax Vader de esta guerra contra la Republica del diseño perfecto, la mantenibilidad perfecta, la documentacion perfecta, y las pajas perfectas he decido poner un ejemplo claro de lo que es Ajax y como se usa. Cogere el propio caso de Jano:
un conjunto de combos donde cada uno modifica el valor de los otros. Obtengo todos los datos en xml, y uso xsl para generar html y javascript. Cuando un combo cambia llama por xmlhttprequest al servidor para recuperar otro xml y reescribir la página. No se cambia de página durante toda la operación. Es eficiente y simple, pero hay mucho javascript especifico. Hay que documentarlo bien, y el javascript no se presta. ¿Puede hacerse una libreria OO de JS que lo simplifique? quiza, no lo tengo claro. XSL + JS creo que facilmente desemboca en programación especifica para cada página que resulta difícil de mantener. A mi me lo parecía en su momento. No sé si es buena opción para una aplicación entera.
Bien como hemos aprendido en la universidad de la vida empezaremos haciendo un pequeño test:
function getCombo(value){
var rs = new JSQuery();
rs.addParam(1,value);
// here we could add more param-related bindings
rs.execute();
while (rs.next()){
// add to the destination Combo as
// rs.getValue(idx) where idex =1,2,3....
}
}
Si lo incrustamos en un html y lo cargamos veremos que nos da un error porque JSQuery no esta definido. Solucionemos eso:
function JSQuery(query) {
this.query = query;
this.counter = 0;
this.params = new Array();
this.result = null;
this.currentRow = null;
this.endpoint = "/SomeEndPointServiceOfOurWebApp";
this.executed = false;
this.addParam = function(idx, param) {
this.params[idx] = param;
};
this.execute = function() {
var d = new Date();
// prevent caching generating some pseudo-random string
var src = this. endpoint + this.composeParams() + "&watermark=" + d.getTime();
var xmlHttp = XMLHttp.create();
// If you want sync/async you must adjust
// the 3rd parameter, and in case of async
// supply a callback method.
xmlHttp.open("GET", src, false);
xmlHttp.send(null);
this.initialize();
this.result = xmlHttp.responseXML;
this.executed = true;
};
this.getValue = function(idx) {
if (this.executed) {
return this.currentRow.getElementsByTagName("value" + idx).item(0).childNodes.item(0).nodeValue;
} else {
return null;
}
};
this.toString = function() {
if (this.executed)
return this.result.xml;
else
return null;
};
this.composeParams = function() {
var tex = "";
for (i = 1; i < this.params.length; i++) {
tex = tex + "¶m" + i + "=" + this.params[i];
}
return tex;
};
this.next = function () {
this.counter++;
this.currentRow = this.result.getElementsByTagName("row" + this.counter).item(0);
if (this.currentRow != null) {
return true;
} else {
return false;
}
};
}
Ahora si incrustamos estos dos elementos ya no tendremos errores de script pero nos falta lo principal, los datos a servir. Para esta caso de ejemplo supongamos unos datos como los siguientes:
<result>
<row1>
<value1>Valor 1 </value1>
<value2>Valor 2</value2>
</row1>
</result>
Ahorrarse cualquier comentario sobre el formato del xml - YA he dicho que es solo un ejemplo-. Como es de suponer en una herramienta de producción habria que definir un api ( mi preferida es del tipo REST como la de Flickr) en condiciones (incluyendo encodings y seccciones CDATA si fueran necesarias):
<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
<method>flickr.test.echo</method>
<api_key>6df04d92d4d4d0048f53fd6bc8db58a6</api_key>
</rsp>
Resumiendo : 1 clase (JSQuery) provee de la funcionalidad necesaria. ¿Mucho esfuerzo?. No lo creo. ¿Javascript especifico?. Umm lo justo para actualizar los widgets que como explicaba hace dos posts tambien se podria refactorizar y ser transparente. ¿XSL? . ¿Para qué?. ¿Documentarlo bien?. Aunque no recuerdo ahora nombres seguro que hay mas de un framework que permie escribir js-docs al estilo de las javadocs. Por supuesto esto no es mas que un boceto a bote pronto extractado de como estaba una libreria que mi empresa desarrollo en el 2001 y que ahora contiene algunas funcionalidades como paginacion en el cliente y en el servidor, cacheo de datos, etc... A posteriori se puede refactorizar aislando el trasporte del manejo de resultados (como aparece aqui en el XMLHttp.create()) , generando una clase base para las consultas y adaptandola para diferentes formatos, y desarrollando la idea de los widgets; pero creo que la idea se coge, y sinceramente jano no pienso que sea especialmente inmantenible (para ser exactos y como he defendido desde el principio no mas que las chapuzas que se pueden hacer en el lado del servidor).
Para finalizar creo que a la vista esta que es una buena solucion para *algunas* aplicaciones. Personalmente solo he encontrado algun problema de freezings del GUI en el IE debidas a mi estupidez al utilizar llamadas *sincronas* que son las que hay que evitar bajo todos los medios.
Por lo demas, la familia, bien, como siempre.
Sobre lo que puedo o debo decir 2
Respondo a un comentario anterior por la posibles implicaciones que se vierten sobre javaHispano.
Amigo jordihs: Me alegra que te encante escuchar mi opinion aunque .... ummm ... ahora que lo pienso .... si no te gustase me daria exactamente igual. El modelo de desarrollo web - ¿que es exactamente esto? - puede generar, *O NO*, mierdas en proyectos reales de la misma manera que lo puede hacer el modelo cliente-servidor clasico, el modelo Web services o el modelo de la burra Francis, por lo que las herramientas y las metodologias, aun habiendolas peores y mejores, requieren finalmente de una mano firme que las guie y las use. Quod erat demonstrandum.
Sobre el ego y la sapiencia de cada uno hay poco que decir ya que cualquiera que sea minimamente honesto sabra reconocer el porcentaje que a cada uno le toca. De cualquier manera yerras si estas afirmando que mis ¿insultos? provienen de un arrebato egocentrista. Realmente exhibo un talante fascista en muchos de mis posts, pero esto no es debido sino a la creencia firme en aquello que he visto, he realizado, he pensado y he recapacitado. *SI* con argumentos solidos alguien me rebate mis ideas tuerzo el brazo y rectifico, pero *NO* permito que nadie apostille con expresiones tan tecnicas como "enmierdar","¡¡Bluaargh!!", "montón de mierda", "arcadas" , "codificar usando trucos" una idea que considero incorrecta, ni asiento con la cabeza para regocijo y congratulación de los presentes.
Por ello, en ocasiones como estas, me permito en mi blog, en mi propia casa, hablar con franqueza, determinación y explicitación ... o espera, como lo llamabas ... me permito "ir de guay".
De hech para este caso en concreto tuve la delicadeza -innecesaria, ahora lo veo- de publicar mi opinion en mi propio blog, en el que COMO HE REPETIDO EN MUCHAS OCASIONES SE VIERTEN OPINIONES EXCLUSIVAMENTE MIAS, EN NADA RELACIONADAS CON JAVAHISPANO. Y más ahora que no soy miembro - socio activista - de javaHispano.
Asi que pedazo melón (Aitor Garcia (C)), cuando te he llamado atontado (Aitor Garcia (C)) lo he realizado en posesion de mi derech a emitir opiniones como usuario de *MI* weblog, derech que por otra parte seguire ejerciendo hasta que me apetezca o hasta que me censuren, lo que antes ocurra. He expuesto muchos mas argumentos explicitos y detallados en mi post de los que has vertido tu en tus comentarios asi que lo de la "dinámica del insulto o descalificación", como otras muletillas politicamente correctas, la verdad, me lo paso por donde puedes imaginarte, y sobre el pensamiento único te diria que tener multitud de pensamientos errones tampoco ayuda a nadie y que como has visto has podido responderme tanto aqui, en mi blog, como en javaHispano, sin que nadie te restringa.
Como cierre final solo dejar claro -de nuevo- una cosa. En mi blog escribo lo que quiero y *como* quiero. Si no estas de acuerdo me lo dices, si crees que no tengo razon me lo rebates, si te pica te rascas y si no te gusta NO LO LEAS.