La prueba del canuto
Pasa mucho esto de la titulitis. Ocurre que mi actual empresa, Satec, me presiona para que acabe el proyecto de fin de carrera en un ataque de pus de una hinchazón por titulitis.
Pero es que pasa lo mismo que en el resto de sitios en los que he estado. Quizá no esté bien hecho el sistema educativo o la virgen, no lo se, no puedo saberlo. Pero pasa. Doctores habemos. Y con la Iglesia nos damos, amigo Sancho.
Más considerado está aquel que tiene título que aquel que sabe trabajarselo. Así uno que haya dedicado sus ratos, sus buenos ratos, sus muchos ratos, a interesarse por este oficio tan puto, que haya aprendido en su casa, que muestre interes, que, en fin, sea un profesional como muchos que conozco... Será en fin, como decía, menospreciado y postergado por aquellos que tienen, ojo, títulación. Mmmh...
También es raro. Según cómo sea el enchufe de gordo o cómo caigan de bien al baranda, suben o bajan las gentes como si fuese esto una carreta. Da igual con quién te rías de copas o de qué hables con el vecino, si una vez se te cruza alguno, hasta te echan por menos de un quíteme allá esas pajas.
Así va la vida, así va el país.
Me explico.
Acojonado me hallo a poco de cumplir con esto del periodo de prueba porque me vendieron a principios de curso, como quien dice, que iba a trabajar con profesionales. Vive Dios si es que he visto alguno...
Acojonado porque son los arrancatapinos de la informática. Tampoco puedo saber si todos los que salen de una universidad privada son así aunque, por lo que me cuentan, ahora los escolinos ni siquiera saben las cuatro reglas cuando llegan al instituto y poco saben leer cuando salen de la carrera.
Esto, lo corroboro con testimonios de profesores de secundaria colegas míos que tienen colegas a su vez, que son quizá licenciados y que confunden "preposición" con "conjunción" y alguna que otra anécdota sobre la que gastaré teclado algún próximo día.
Tengo entre mis haberes a esas gentes, frutos del papipaga. Enseñados por empresas que nunca necesitan buena mano de obra si no tener roces con la administración, que viven de un producto interno que nunca hay que cuidar lo suficiente... O, simplemente, que aprendieron con de otros tan inútiles como ahora son ellos. De ser por mi, ojalá lean esto y se enfaden porque quizá con el empeño ganemos algo, ya estarían de patitas en al calle hace un par de meses.
¿Cómo me puede venir un pavo, profesor, PROFESOR UNIVERSITARIO, y perderse al leer un correo de tres párrafos? ¡¡¡Tres párrafos de dos líneas cada uno!!!
¿Cómo puede venirme otro con, quizás, más experiencia que yo en programación Java y no saber iterar un Map?
¿Cómo puedo no enfadarme con esto delante?
Y aun viendo que son completamente inexpertos y no sólo inexpertos sino incapaces de aprender al ritmo que tengo visto en el resto de gente con la que he trabajado. Y es más, es que no ponen ni el menor interés y se gastan una puta chulería que parecen haber nacido aprendidos y cualquiera les dice algo. Dios de mi vida, qué hice yo para conocer a tamaña gente.
He llegado a conocerles el tono y decirles de más hasta el punto de reírme en su cara de su estupìda ignorancia, de su desdén y de su puta chulería. Reír con ganas a la menor pregunta, con risa de loco, forzada, y con cara de asco decir un perdón pero, es que tenía que soltarlo...
Ay mísero de mí y ay infelice...
Pero no, aun de vez en cuando te salen con una barrabasada de esas de cajón de "es que como dijo tal, tenías que". A la que no hay más remedio que contestar:
"Ya lo se, hombre, que yo se leer..."
y te insisten: "No, verás... Es que el otro día en un correo.."
"¡QUE YO SE LEER!"
Y aun es día de hoy que creo que la mosca que les vive dentro del cerebro les hace no coger la directa. Quizá algún día hagan a la gente algún tipo de test antes de entrar en un sitio de estos a cobrar, quizá más que muchos que lo merezcan más... Mmmh... Algo del tipo hacer la 'O' con un canuto.
¡Booooooooga!
- Se admiten gentes varias que ya no sepan lo que es un barco ni lo que cuesta moverlo.
- Conocimientos demostrables en haberse pasado tres años sin hacer nada y más de diez diciendo que lo haces mientras miras cómo se hace todo a tu alrededor.
- Imprescindible manejo demostrable "Anal Intruder 2.0", auf vaselinen, pulven y tabletten. Extensiones "Gross".
- No necesita saber remar.
Será que mañana trabajo y ya estoy de buen humor. ¡Qué depresión!
Y luego ves anuncios de otros países y pagan eso a un programador, acojona. Y aquí con cinco que no reman y tres que no pueden remar porque se jartan de achicar agua.
Voy a vender juguetes en toys'r'us o algo.
Se ve que me pillaron de mal humor ^g^
Vas pallá y te inscribes.
El formulario es, ni más ni menos, que un googleform. Puta mierda de informáticos estos. Pero bueno, pase porque se ahorran las costas de un hospedaje para una web dinámica, que ya es triste, y más pensanding que nueve de cada diez colegiados tendrán DSL o cable y les saldría por 0€ el espacio web en un par de días de inscripción.
Una vez inscrito te redirigen a una página en la que te sueltan que para tener plaza hay que pagar. Por estricto orden de pago se asignarán las plazas. En ese momento quizá sacas la tarjeta de claves de tu cuenta del banco pero al segundo te lo piensas y te dices a ti mismo: tate quieto, para, gilipollas.
Y es que va a ser que la mecánica no es esta, al menos, creo yo. Recordé que para comprar casa no te hacen eso, es más, hay que firmar todos un ciento de papeles y luego pagas y te dan las llaves. Para el coche lo mismo, pagas y te lo dan. Hoy fui a Alimerka a comprar chicles y, carajo, elegí los que me pareció, esto, le dije a la cajera, son dos lauros desos, me dijo, pagué y me fui con los chicles.
Los informáticos de las Asturias se han inventado una nueva forma de venta virtual, pero virtual patatero, virtual en todos los sentidos. Se asignarán las plazas por estricto orden de pago.
Tócate los cojones.
Osea que en el Alimerka la moza me tendría que haber dicho algo como son dos euros y medio y vete a dar un paseo que ya me pensaré si te doy los chicles o no. Para la casa, imagínese usté, oiga, dejas las cuentas a cero y te salen con el hale, vuelve pa casa que ya veremos en qué quedamos y en qué agujero vas a caerte muerto. Escoge coche, paga y cuando eso, si eso, te avisamos con algo.
No se acaba el cuento. El cuento termina cuando el último día de plazo para ese pago virtual me llaman al movilonte y me suelta una voz de mujer que es que me falta por pagar el curso y dije que no… pausa para efecto dramático… supongo que no sabría que contestar… Es usté Estuardo… Sí, pero no pagué el curso, no tengo obligación, ¿no? Hombre si no le interesa. Sí me interesa, mujer, pero es que por qué voy a pagar si no se si estoy matriculado, es el ultimo día ¿no? ¿Aun tengo posibilidades? Pues… Pues eso no lo se porque las plazas se asignan por orden de pago. ¿Dónde se vio eso?, vamos, cómo voy a pagar si no se si voy a ir, cuándo me van a devolver el dinero. Bueno, quizás haya estado un poco mal organizado por su parte. Sí, fatal, vamos, parece una mafia que sólo quiere reunir la pasta de las matrículas, y el tiempo que tarden en devolverlas la tendrán rindiendo capital, y además necesitados andarán para llamar a recolecta el último día a última hora.
Pues nada, me hacía algo de ilusión el curso, pero haré como la zorra o, más mejor todavía, haré raíces de mi experiencia y diré que vista la universidad, vista la vida, seguro que el curso era demasiado caro para la puta mierda que iban a dar. Sí, las uvas estaban verdes. Un tipo que conozco bien diría que hay mujeres más baratas que tú y con menos remilgos y putas más caras que tú pero bastante más decentes.
IE y Chrome sin anuncios
Tan facil como eso.
Ahora puedes tener Chromium furrulanding a toda hostia y, encima, ni ves el adsense porque en la lista de direcciones bloqueadas por omisión de Privoxy aparece adsense.google.com. Si tienes una cuenta adsense y quieres ver tus datos, al entrar la primera vez te aparece una página generada por el proxy diciendo que ese es uno de los sitios bloqueados, pero te dejan un enlace que dice a privoxy que quieres pasar de todas formas.
Tranquilidad
Ayer nos transmitieron tranquilidad desde la dirección en espera de próximas medidas similares que, aunque dilatadas en el tiempo, serán como el morirse que por más que nuo piense que queda lejos, inexorablemente, llegarán.
Álguno había en la lista de inmortales.
Bob Dylan API
Lifetime lifetime = LifetimeFactory.getCurrent();
[...]
lifetime = new LifetimeFactory.getInstance.getAnother();
lifetime.setParam(Lifetime.TOIL | Lifetime.BLOOD);
Collection virtues = Virtues.getInstance();
virtues.empty();
vistues.add(Virtues.BLACKNESS);
lifetime.setVirtues(virtues);
[...]
Road theRoad = RoadFactory.getInstance().getCurrent();
theRoad.fill(Road.MUD, 0, 100);
lifetime.setRoad(theRoad);
lifetime.remove(Lifetime.WILDERNESS);
Creature creature = new Creature() extends WomanCreature {
public Form getForm() {
return new Form() {
//TODO
};
}
};
lifetime.add(creature);
THELOGGER.info(creature);
Ese fragmento de código resulta en la siguiente traza:
467 [com.bobdylan.creatures.WomanCreature] INFO "Come in, I'll give you shelter from the storm."
Refranero Informático
"Bien está lo que bien acaba"
El equivalente informático es:
"Bien está lo que bien parece"
Sí... Yo creo que se debería decir junto con el
"Si funciona, no lo toques"que es un refrán informático ya de por sí pero que cada dia más habría que cambiar por
"Si parece que funciona, no lo toques"
Un documento para estúpidos y estúpidas
Da asco ver expresiones forzadas en cuanto del texto toca a "la cosa sindical". Entonces llegan las frasecitas de "trabajadores y trabajadoras" o "delegados y delegadas"...
Pero eso sí, la página está hecha por personas medianamente inteligentes que distinguen que estamos hablando en serio y escriben:
"Titulaciones afectadas por la huelga
* Ingenieros en Informática
* Licenciados en Informática
* Ingenieros técnicos en Informática
* Diplomados en Informática
* Grado en Informática (Futuro)
* Máster en Informática
* Ciclos Formativos Superiores
* Ciclos Formativos Medios"
Pero como, seguramente, les echarán la bronca, pues traduzco para que los gilipollas comprendan lo que dice el texto:
"Titulados afectados y tituladas afectadas por la huelga
* Ingenieros informáticos e ingenieras informáticas
* Licenciados y licenciadas en Informática
* Ingenieros técnicos e ingenieras técnicas en Informática
* Diplomados y diplomadas en Informática
* Futuros y futuras graduados y graduadas en informática
* Másteres y másteras en Informática
* Ciclas y ciclos Formativas y formativos Superiores y superioras (también llamados "priores")
* Ciclos y ciclas Formativos y formativas Medios y medias (aunque quizá los confundan con esos que llaman "pantys")"
A lomos de mediocres
Uno que es un cabrón no va a apellidar y poner nombre a las frases que tiene escuchadas en esas aulas pero, son cosas que dicen gentes que son de doctor p’arriba y que dan clase en las facultades de informática de la benemérita y nunca bien ponderada Universidad de Oviedo.
Quizá sean estos enunciados poco atrayentes sobre la dimensión del problema para los legos en la materia, pero quizá haya alguno que no sea tanto como aquella vez en que un profesor, no hará ni cinco años, nos dijo que “sería conveniente que consiguiéramos un procesador de textos ya que para las prácticas de… había que generar mucha documentación y eso de poder cortar y pegar es muy cómodo”…
Después de quedarnos cuadrados de la impresión se oyó por lo bajini un comentario: “cuando se entere de que grabo cedeses en casa le da el telele”. Quizá este sucedido no sea grave para un lego, insisto, pero el no saber que cada cual que estudia por allí tiene su ordenata con de todo y al gusto, parece como piensa alguna gente que para comer albóndigas de pescado hay que ir a una boda mientras que mi madre las prepara cada dos por tres…
Así dice mi compadre Labra a quien, como la otra vez dije, le tengo mucho respeto y admiración porque ha demostrado saber lo que hace desde que está en el gobierno de la escuela, como investigador y como persona ya que en el trato pocos profesores hay más planos y directos que él siendo esto muy de agradecer cuando los alumnos hablamos con un profesor (la mayoría parecen comandantes de la guardia civil de hace cincuenta años). Así, decía, comenta que los titulados están miles de veces más preparados para el currelo diario que el resto de machacas. Los machacas, como ustedes comprenderán, son los que trabajan en una empresa. Hasta el punto de que pueden salir del aula y pasar de machacas a jefes (que son los que trabajan generando currelo para los machacas) sin pasar por ningún cargo intermedio.
Ay madre…
Vamos a intercalar otra anécdota. Doctor, como el otro de antes… Aunque bien mirado, creo que el de antes no era doctor, simplemente era informático con muy poca experiencia moderna y mucha anticuada… Pero el que sigue es doctor y da clase en eso que llaman Master de Desarrollo de Aplicaciones Web y que el director José Emilio Labra Gayo considera uno de los mejores, sino el mejor, de España. Pues este señor que por aquel entonces ya era doctor y que tiene unos amplísimos conocimientos en desarrollo web (perdónenme los legos, no es por insultar, pero las consejas que narro son todas técnicas) a una de sus pupilos a quien le dirigía el PFC (Proyecto de fin de carrera) para la consecución del título de Ingeniero Técnico Informático le dijo que para generar un enlace web del que poder descargar un fichero del servidor debería empezar este por “file://...”. La hilaridad del chiste reside en que si el servidor no es el mismo equipo que el cliente, ese enlace no sirve para nada. Y además se ve lo movido que está este profesor por la informática que no ha tenido nunca la curiosidad de pensar cómo hacen los demás servidores web para permitir a los usuarios descargar ficheros sin que aparezca el estúpido file:// por ningún sitio… Madre… Madre…
Pues se equivoca don Emilio. He tenido en mi equipo de desarrollo (y conste que son ejemplos aislados y que hay de todo en este mundo) uno de esos “favoritos” a convertirse en profesor en esa escuela. Conozco a alguno más que en verdad quisiera como profesores míos y doy gracias a que trabajo con ellos porque, nunca tan cierta se hizo la frase de Isaac Newton cuando dijo que si llegamos tan lejos es que hemos ido a lomos de gigantes. Así este tan favorito y que tiene todos los visos, si no le ascienden antes por su propio desmérito y le coge más apetencia al desarrollo del que, al parecer, tiene ahora… Es un patán programando. Así el comentario de Labra para eso de que los que salen de la escuela valen más para puestos de responsabilidad que para la fiel infantería es cierto… Pero se trata de un licenciado en desarrollo web que confunde el modelo de capas, que no sabe cómo funciona un estándar del mercado en desarrollo web… Que se pierde en traducir valores propios de la maqueta cuando los valores están en un catálogo y que, en fin, no tiene mili, no sabe programar porque nunca tuvo interés ni nadie que le enseñase… Esto se lo dice uno que llegó a la facultad ya sabiendo programar, que aprendió las tecnologías que usa habitualmente por su cuenta.
Dios de dios, luz de luz…
Una vez, estando como estaba yo programando videojuegos y herramientas de escritorio, todo ello orientado a la programación de dispositivos móviles en Java, uno, mi compañero por aquel entonces, de esos con carrera, recibió la llamada de una de las profesoras que iban a ser, y son, de ese máster web de la EUITIO. Esta señora, doctora como los demás, estaba a dos semanas de comenzar como profesor titular de una asignatura que se llama Programación Móvil… Tócate los cojones… Esta señora había sido codirectora del PFC de aquel mi compañero y tenía ciertas confianzas. Así que, sin rubor, le preguntó dos puntos comillas: “Pero… ¿no ejecutan applets?”… lalalaaaa…
Y habla uno, yo, que no aprendió eso de “Java”, desarrollo web y “Struts” como gran innovación en la escuela universitaria sino que lo aprendió un agosto en su casa y otro año programando en otra empresa y otro en otra… Ya que, la mili esa, no se aprende en las aulas escuchando esas sandeces que hay que filtrar para quedarse con lo que en realidad es la miga de la carrera, sino peleando con el compilador, las librerías y los entornos hasta el punto de que sepas, de verdad, qué hay que plasmar en un documento para que otros lo programen… Aun así, hay que ver muchos documentos de esos, hacer y rehacer los tuyos propios para que quede alguno potable … Pero, en serio, nunca, nunca, nunca… NUNCA… Se podría trabajar como te enseñan en la escuela.
Otra anécdota es de aquel aparejador, o como cojones se llame, que trabando para el ayuntamiento vino a conminar a los obreros a no hinchar los valores de volumen de hormigón para hacer un muro porque, decía, la absorción del terreno “no puede ser superior a x%”… Por el libro, señores, hace la obra por el libro… Mientras que los obreros, entre los que estaba quien me contó la anécdota, sabían que sólo el primer camión era para echar la capa de la base y que en esa noche se bajaría a ras por la absorción, quedándose el encargo en dos camiones más mientras que “por el libro”, con dos camiones valía para todo… Y es lo malo de “que no me funciona el mapeo y está puesto como lo hay que poner“ o de que “antes funcionaba y ahora no”… Es que hay que verlo, hay que haberlo visto o hay que tener a alguien detrás que lo haya visto y te lo comente porque, si no, no lo has aprendido ni lo aprenderás y en vez de a hombros de gigantes irás en alzas de mediocre.
El que venga detrás
Es un restaurante caro como el que más en el que sólo se come a la carta y cada cual pide lo que le salga pero no se lo come sino que lo paga y se le hace la nota sin precio para colgarla en un tablón a la entrada. Los que vienen después elijen una de las notas ya pagadas y se comen lo que hayan pedido otros que ya pasaron quizá hace días... Así sigue la rueda desde hace, al parecer, muchos decenios cuando un caminante dejó invitado al siguiente que viniese a comer y este hizo lo propio a su vez.
Pues sí, cosas más raras se han visto. Cuando encuentre datos sobre el antro ese los pondré aquí y en Neatorama. pero así y todo no quería hablar de eso. Quería hablar de informática, por supuesto.
Vamos a tomar el ejemplo del restaurante ese de Malta y darle la vuelta. Imagínese usted que hacemos al revés y cogemos del tablón al entrar la nota más barata de las que hay colgadas y la pagamos... Entonces vamos a la carta y empezamos por pedir vino... reserva, por supuesto... Y después comida para doce cuando sólo somos dos y dejamos un tomo de la biblia en octosílabo por nota colgada en el tablón...
Pues así empezó el desarrollo del primer software: hace mucho tiempo un caminante dejó una cuenta enorme a deber en un restaurante y el que vino detrás se vengó del mundo en forma de factura... La bola in crescendo hasta los ahoras cuando no se puede parar y los mantenimientos se remojan con Château d’Yquem 1787...
A cup of my famous Java
He decidido reabrir viejas heridas, como a diario. Me he vuelto a poner con viejos proyectos y he estado buscanding incluso alojamiento web por si algún día se ponen en público uso. Por lo menos yo les veo utilidad.
En estos primeros pasos de adaptar a web lo que antes era un mero script en Java (sí, Java es un lenguaje de script), me ha dado quebraderos de cabeza. Puestos a hacerlo bien, ya que lo hago, he echado más tiempo en arrancar metiending librerías al proyecto y hacieding que funcionen a la vez que lo que programo en realidad.
He metido de todo lo que yo creo que son estándares del mercado web en Java y he pasado de Struts2 que sigue siendo experimental en su mayor parte, aunque era lo que tenía previsto, meterme en Struts2, por lo menos para aprender algo nuevo. Pero liándola con Spring e Hibernate también se aprende. Lo uno porque no lo había utilizado nunca y lo otro porque lo que hago en el curro con ello no tiene ni la remota paredicencia con esto.
Pero lo que iba a comentar era lo del Ajax. Ajax es la forma elegante de decir que cargas cachos de página sin recargarla toda usando Javascript por aquello de ahorrar ancho de banda y recursos en el servidor.
Me pasé un tiempo remirando el estado del arte por los ahises y no me acababa de convencer. He visto ajax-tags que generan javascript y que se integran con Struts, también eso de Ajax Anywhere... Y más cosas como implementaciones que dependen sólo de cliente...
Son cosas como cañones de grandes para matar mi mosca. La mosca es cambiar algún cachico de página, cosa que puedo conseguir haciendo el post con XMLHttpRequest a pelo con un código que amablemente plagié de Peter ^^.
Vale, lo que descarté de todos los otros era que no se podía manejar un redirect devuelto por el servidor. pero es que después de tirar un poco de la manta resulta que el XMLHttpRequest [wiki, w3c] no soporta redirections... Lo que hace es pedir lo que sea al navegador y puedes ir viendo cómo cambia de estado y cómo se pide otra dirección en debug pero, en tiempo de ejecución, no hay acceso ni a la URL de la petición por mucho que cambie...
Pos estamos chungos. Hombre, o invades las páginas con cienes de líneas de supérfluo javascript o usas un redirect... Es que con lo bien que nos iba cuando tras modificar un registro podíamos redireccionar para que se vuelva a pedir la lista actual y ver los cambios... Qué felices eramos entonces... Bueno, pues nada, que ha habido que hacer una solución "ad hoc" que no deja de ser cerda como sólo el Javascript en una página puede ser... No invasivo con las acciones... No invasivo en las páginas que lo incrustan... ¡Oh, Dios! ¡Cómo me gusta el resultado, carajo!
Si no es a lo cerdo, tendremos que esperar, porque al parecer en el w3c sugieren que en próximas implementaciones van a dejar que manejemos los redirect como nos salga... Verase cuando se vea.
Salú.
A cup of my famous java
@override
public void doTransfer(Cabin dest, Cabin src ) throws Exception {
Class [] src classes = src.getClasses();
StringBuffer buf = new StringBuffer(20);
int max = classes.length;
for (int i = 0; i <>
Class theClass = classes[i];
String name = theClass.getName();
buf.append(name.substring(name.lastIndexOf('.' + 1)));
}
buf.insert(0, Constants.USER_PACKAGE);
Class destClasse = Class.forName(buf.toString());
dest.addContent(destClass.newInstance());
dest.addContentProperties(src.getContentProperties());
}
De forma que si se llama así:
...
src.addContent(new com.eduyayo.living.humans.Brundle());
src.addContent(new com.eduyayo.living.insects.Fly());
...
ttrans.doTransfer(dest, src);
...
LOGGER.debug(dest.getClasses()[0].getName());
Se obtiene en consola
18-mar-2008 22:18:47 com.eduyayo.machine.TimeTransporter com.eduyayo.living.BrundleFly
Con lo que se ha creado una instancia de Brundle-Mosca
A cup of my famous Java
Vamos a hablar de Java:
Java es un lenguaje de script, no pasa de ahí. Es un script para un motor al que llaman máquina virtual.
Java es el lenguaje de programación que mejor conozco y con el único que he trabajado cobranding. Aunque también le he dado al javascript que es otro lenguaje de script para el que también muchísimos motores a los que no se llama máquinas virtuales sino intérpretes de javascript y ya, si te topas con uno pasao de informático, máquina javascript.
Así vivimos separados de trabajar con la máquina o con la API perrera del sistema operativo. Rumores cuentan que Java furrula igual en todos los sistemas... Aquello del CORE (compile once and run anywhere)... Ay madre... El que escribió eso no trabajó nunca con j2me que es Java también, pero, qué cojones y que viva la libertad, sólo basado en una especificación que dice cosas como: "el paratín tiene que tener una cpu y una memoria... ¡ah, sí! y ser portatil".
No le quito mérito. Pero podían haberse estirado un poco y fijar un estándar antes de dejar a los fabricantes hacer la Babel que han hecho... Madre del amor hermosos... Así uno quiere retomar su PFC y aquello del "porting" se está volviending una pesadilla. Tomando una configuración básica me estoy muriendo poco a poco buscando resquicios para ir adaptanding al resto.
Run anywhere... La verdad que es culpa de los fabricantes de teléfonos, pero... ¡Su puta vida!
Ya facturamos más que las minas
informática
2. La internez.
3. informática
A cup of my famous Java
Me lo han vuelto a decir, que por qué no escribo sobre informática... Será algo que quiero olvidar.
La cosa es que me han preguntado y además es algo que tenemos que solucionar en el proyecto en el que trabajo y en futuros proyectos basados en Struts1.x.
Struts es útil para lo que es y es que con tanto framework surgir de tanto framework limitado a un solo ámbito del desarrollo de software (¿sólo se hacen frameworks web en el mundo?) pues uno se encuentra con muros que saltar a cada paso.
A pesar de que, tengo que reconocer, en la empresa vamos a lomos de gigantes, he tirado para solucionar esto de archivo. Me he ido a una vieja aplicación que hice para otra empresa.
El problema es tener una selección múltiple en un formulario web, manejarla y guardarla en request siempre que haga falta… El número de elementos seleccionados varía dinámicamente entre petición y petición por javascript. Se puede cambiar de página y se debe conservar la selección de la anterior.
En aquel tiempo, aunque sí sabía que eran buenas prácticas, no hacía tags para esto. Hoy se que no hay nada mejor que MVC para el mantenimiento y separación de responsabilidades, quita muchísimos dolores de cabeza. Entonces usábamos Struts y ahora también. Pero ahora voy a hacer esto con tags, qué carajo. A ver si hay gente libre y aprendemos todos algo.
Pregunté a gentes (con experiencia) y me dijeron que pasando un array de objetos javascript iba muy bien porque “ya lo habían hecho” en su día. Yo también, pero no lo recordaba… Vale, me mintieron como bellacos. Lo he comprobado, un array de objetos al controlador se la suda. Hay que utilizar propiedades indexadas (o mapeadas) y no hay más remedio.
En mi aplicación utilizaba propiedades mapeadas para acceder a objetos anidados de un FormBean, era
En los formularios hay que acceder a las propiedades que son arrays (propiedades indexadas) con una nomenclatura especial que Commons Beanutils comprende ya per se y, por tanto, Struts también.
Así para enviar al servidor un array de dos elementos, hay que crear dos hidden y no uno sólo:
<input value=”uno” name=”lista[0]” type=”hidden”>
<input value=”otro” name=”lista[1]” type=”hidden”>
En el formbean tiene que haber un método que reciba como entrada un array del tipo que sea el valor, en este caso de String:
public void setList (String [] in) {…
Esto no es una propiedad indexada del todo. Del todo sería esta:
public void setElement (int i, String value) {…
public String getElement (int i) { …
Sin que haya un set para la lista.
Ambos tienen problemas, al primero no se le pueden pasar elementos salteados porque el controlador va a crear un array con el número de elementos que tiene la lista en el documento cliente, si tenemos algo del tipo:
<input value=”uno” name=”list” type=”hidden”>
<input value=”otro” name=”list" type=”hidden”>
Provocará un ArrayIndexOutOfBoundsException. Porque se crea un array de dos posiciones y se intenta acceder a la sexta…
El otro tiene el problema de que no puede ser “desatendido”, quiero decir, que se tienen que controlar los índices que llegan y hacer crecer el array que recibirá los elementos en consecuencia.
Mi vieja solución pasaba por usar mapas. Cuando llegaba un índice lo almacenaba en un TreeMap que es ordenado y devolverá siempre los elementos como si fuesen de un array al iterar. La clave era un Integer con lo que me pasasen.
Cojonudo… Ahora sólo queda programar en javascript la creación y borrado de elementos de un formulario o algo parecido para poder hacer el post con ese formato de corchetes para propiedades que son múltiples.
¿Qué son propiedades mapeadas? Pues son exactamente igual pero la clave para mapear es un String. En el FormBean los métodos quedan como:
public void setMap (Map in) {…
public void setElement (String key, String in) {…
public String getElement (Strin key) {…
En este no importa que los elementos sean salteados ni nada por el estilo. El formato del documento html cambia en que ahora las claves se dan entrecomilladas para denotar que son String:
<input value=”uno” name=”list" type=”hidden”>
<input value=”otro” name=”list" type=”hidden”>
Al final tenía un setElement parecido a esto:
public void setElement(String key, String in) {
Integer intKey = null;
Try{
Int n = Integer.parseInt(key);
intKey = new Integer(n);
} catch (Exception e) {
//nothing to do
}
If (intKey == null) {
map.put(key, in);
} else {
Map.put(intKey, in);
}
}
Así podia mapear con Strings numéricos y ordenar. Además, donde hacía falta, pasaba una clave del tipo “padre.hijo.nieto” y parseaba hasta el punto para llamar a setters de propiedades anidadas con Beanutils.
24 Programadores
No es lo mismo que decir doce monos...
Lo digo por los informáticos que salen en la serie 24. Es una serie entretenida, cuentan todo de ciertas maneras que te dejan con gana de más y mantienen el suspense siempre muy bien. No se cierra un fleco sin abrir tres o cuatro más que se irán cerrando en la siguiente media hora que ya cae en el próximo episodio... Pero es todo absurdo.
Siempre que en una ficción cinematográfica o televisiva se habla de ciencia o técnica se dice algo parecido a esto: "tweedle deedle deedle doo". No dice nada, símplemente llenan líneas de diálogo con muy manidos MacGuffin [wiki] que salen nuevos en cada episodio y son un "código" por el que hay que torturar a alguien, otro "código" por el que hay que hacer a un inocente dolerse hasta morir y, el tercero, un "código" que nos dará la irrefutable prueba de que la ex del presi es definitivamente una cuitosa conspiratriz...
¡Porque esasotra! La cuitosa conspiratriz, no, hombre, el "código". En 24 se habla de códigos de codificación, código máquina, código escrito por un programador, hay códigos que son ficheros y códigos que son partes de un fichero. Un programador abre un fichero binario y sabe si está desordenado o no y dice "el código es de tipo BC·$%()"... Y todos le corroboran o se lo creen, porque sólo el programador en cuestión conoce el "código" para decodificar el MacGuffin que dejará de serlo en el mismo momento en que ese "codigo" se ordene.
Vamos. Muy mal de vocabulario andamos. Usan la palabra en cualquier significado[wiki] en cualquier contexto. Los programadores no codifican ficheros, para eso hay programas y, además, últimamente viene llamándose a eso "cifrar". Pero vamos, imaginese usté a un tío cifrando un CD entero, se puede echar la vida a lo pintar códices miniados hace ocho siglos...
Así las cosas, las órdenes y tareas de un programador de los de 24 (comunicadme si me dejo alguna) son:
- analízame esto
- decodifica los ficheros
- recupera lo que puedas
- abreme una consola en mi Terminal
- monitoriza las llamadas
- pásame con X por la línea dos
- localiza la llamada
- rastréalo por satélite
- dile a
- reconstrúyeme ese chip
- si quieres que mi servidor haga algo sólo dímelo
- abre un fichero compartido con la división
El hábito no hace al monje, pero el hacer sí y creo que soy informático por eso, por hacer, y diré que escribo “código” pero del único tipo de código que escribe un informático, escribo programas. Esta tarea de programar la llamamos codificar porque llamamos código al texto que escribimos y que es interpretado por un programa (compilador) que genera ficheros que son ejecutables por el ordenador (más o menos, que no es el tema de hoy contar todo el proceso).