Después de unas merecidas vacaciones, después de tener que aguantar las atrocidades del Sr. Botines, he encontrado un fragmento de código (en producción ... por supuesto) que quizás os pueda interesar....sobre todo si queréis aumentar el rendimiento de vuestras aplicaciones.
public int QueRapidoVaMiMetodoJIJIJI(string anyo, string mes)
{
return 0;
int respuesta = 0;
if (Session == null)
{
dataSession ....
// metodo sabana
......
Se me ponen los pelos como escarpias al ver esto.
Las Cagadas del Botines
miércoles, 21 de enero de 2009
viernes, 5 de diciembre de 2008
La carta del Sr. Botines a Santa Playmobil
Querido Santa Playmobil.
Como este año he sido muuuuuy bueno, y he generado infinidad de bugs, quiero que me traigas muuuuuchos regalos, te paso una lista porque se que tengo unas preferencias poco habituales.
Quiero.....
... un boli bic, para hasssser bosqueeeejos, y así reutiliso el tapón para una de mis afisssiones, rascarme los timpanos por dentro.
... un tupper ware graaaande, para guardar la sera que no me pueda comer.
... un sujetador, como el de Madonna, de esos de conos, para poder enrossscarme los pessones dentro.
... un tatuaje tuyo vestido de Dark Vader, para mis ingles.
... un coxe, pa poder xocaaaarlo.
... unos patines en línea, pero de esssos que no te puedes caer al suelo, que sino me lassstimo los huesos.
... una muñeca inxable, para no tener que bailar solo en los classses de bailes de saaaaalón, prometo que no la utilisaré para nada más............bueno, mejor no te lo prometo.
... un pórtatil, que haga un poco menos ruido que un Boing 747.
... unos botines nuevos, ....
... un quita sarro, ....
...y si te sobra algo de los demás niños, pues también me lo traes.

La metamorfosis. De Botines Kafka
Viendo la curiosidad que despierta el Sr. Botines, creo que ya va siendo hora de que empecemos a conocer un poco más de él, como persona (y es que hoy en día a todo se le llama persona).
Empezaremos describiendo una de sus mejores cualidades: La metamorfosis.
Esa capacidad que tiene de transfigurarse cuando se siente presionado, nervioso, o cuando desconoce algo (que son las 24 horas del día). Basicamente esta transformación tiene tres fases:
-Rota 180º los globos oculares dentro de sus cuencas. Suponemos que lo hace para confirmar que el cráneo sigue vacio.
-Desencaja las mandibulas, simulando a Rocky IV.
- Habla en una lengua extraña, en la que murmura: k..k..k.k..k..k...k..k..k
miércoles, 3 de diciembre de 2008
Las adivinanzas del Sr. Botines
Hemos descubierto una nueva faceta del Sr. Botines. Aunque parezca mentira es un as de los acertijos.
Esta misma tarde la Sra. Chechua le ha planteado uno, y el apenas sin ayuda lo ha resuelto en menos de lo que tarda en sacarse 100 gramos de cera de los oídos.
C: Antes tenía 4 errores y ahora ya no tengo ninguno....
El Sr. Botines, la interrumpe, saca sus mejores herramientas, y se pone a contar con los dedos (y es verídico).
B: Esssto, si antes habían 4 y ahora xa no tienes ninguno, esssto ....ummmm...esssto...ummm.... claaaro!!!!!, has arreglado todos los errores.
Esta misma tarde la Sra. Chechua le ha planteado uno, y el apenas sin ayuda lo ha resuelto en menos de lo que tarda en sacarse 100 gramos de cera de los oídos.
C: Antes tenía 4 errores y ahora ya no tengo ninguno....
El Sr. Botines, la interrumpe, saca sus mejores herramientas, y se pone a contar con los dedos (y es verídico).
B: Esssto, si antes habían 4 y ahora xa no tienes ninguno, esssto ....ummmm...esssto...ummm.... claaaro!!!!!, has arreglado todos los errores.
EXEC: "El comodín del Sr. Botines "
Después de una corta ausencia de inactividad del Sr. Botines (seguro que estaba incubando una camada de bugs), ha vuelto a aparecer en escena, con nuevas ideas y soluciones con las que deleitarnos.....pero no nos adelantemos a los hechos.
Estaba revisando una aplicación, cuando detecté un problema, que afectaba a todas las consultas, sp, funciones, etc. de dicha aplicación. Básicamente estabamos trabajando sobre dos BBDD ubicadas en dos servidores diferentes, e inicialmente se pensó para trabajar en el mismo servidor. Rápidamente se lo consulte al Sr. Botines, arriesgandome a interrumpir su habitual siesta, con los dedos índices clavados en las cuencas de los ojos (simulando que piensa):
W: Sr. Botines, tenemos un problema, puedes venir un momento?
B: Claaaro, claaaaro, xo puedo ir, aunque no creo que axude muxo.
W: ^^ No te preocupes, la intención es lo que cuenta. Tenemos que hacer algunos cambios en la base de datos.
B: Qué classse de cambios son, hasssme unos bosqueeeejos?
W: Tenemos que poner delante de los nombres de las BBDD el servidor al que pertenecen. Mas o menos así [Servidor].[BD].[dbo].[Tabla]...
B: Ahhhh xa veo, xa. Y essso que implica?
W: Pues un huevo de curro, porque hay sp hasta debajo de las piedras (el Sr. Botines utiliza sp hasta para escribir la lista de la compra)
B: Pero qué deciiiisss??, que me arranco los pesssones del disgusto!!!!. Bueno no te preocupes, xa tengo la solussssión!!!
W: ^^ (solución?....bueno vamos a escuchar y aprender del maestro)
B: Vamos a cambiar todos los sp y los crearemos con un ESSSEC, y que ejecute un cadena que contenga el sp original pero que incluya los nombres de los servidores.
W: ^^ (Respiro hondo)
W: Perdona Sr. Botines, pero no entiendo a que te refieres.
B: Xo te lo esplico, no padesssscas, mira esssste bosqueeeeejo
CREATE PROCEDURE [dbo].[MadeInBotines]
(
)
AS
DECLARE @cadena nvarchar(200)
// Esta consulta no devuelve ningún resultado
SET @cadena = "SELECT * FROM [Servidor].[BD].[dbo].[Tabla] WHERE Botines <> null)"
EXEC @cadena
B: Y asssí, para cada uno de los sp, consultas, funssssiones.
W: ^^
Estaba revisando una aplicación, cuando detecté un problema, que afectaba a todas las consultas, sp, funciones, etc. de dicha aplicación. Básicamente estabamos trabajando sobre dos BBDD ubicadas en dos servidores diferentes, e inicialmente se pensó para trabajar en el mismo servidor. Rápidamente se lo consulte al Sr. Botines, arriesgandome a interrumpir su habitual siesta, con los dedos índices clavados en las cuencas de los ojos (simulando que piensa):
W: Sr. Botines, tenemos un problema, puedes venir un momento?
B: Claaaro, claaaaro, xo puedo ir, aunque no creo que axude muxo.
W: ^^ No te preocupes, la intención es lo que cuenta. Tenemos que hacer algunos cambios en la base de datos.
B: Qué classse de cambios son, hasssme unos bosqueeeejos?
W: Tenemos que poner delante de los nombres de las BBDD el servidor al que pertenecen. Mas o menos así [Servidor].[BD].[dbo].[Tabla]...
B: Ahhhh xa veo, xa. Y essso que implica?
W: Pues un huevo de curro, porque hay sp hasta debajo de las piedras (el Sr. Botines utiliza sp hasta para escribir la lista de la compra)
B: Pero qué deciiiisss??, que me arranco los pesssones del disgusto!!!!. Bueno no te preocupes, xa tengo la solussssión!!!
W: ^^ (solución?....bueno vamos a escuchar y aprender del maestro)
B: Vamos a cambiar todos los sp y los crearemos con un ESSSEC, y que ejecute un cadena que contenga el sp original pero que incluya los nombres de los servidores.
W: ^^ (Respiro hondo)
W: Perdona Sr. Botines, pero no entiendo a que te refieres.
B: Xo te lo esplico, no padesssscas, mira esssste bosqueeeeejo
CREATE PROCEDURE [dbo].[MadeInBotines]
(
)
AS
DECLARE @cadena nvarchar(200)
// Esta consulta no devuelve ningún resultado
SET @cadena = "SELECT * FROM [Servidor].[BD].[dbo].[Tabla] WHERE Botines <> null)"
EXEC @cadena
B: Y asssí, para cada uno de los sp, consultas, funssssiones.
W: ^^
jueves, 27 de noviembre de 2008
SVN: Ese eterno desconocido
Precisaba el Sr. Botines unos ficheros ubicados en el repositorio de SVN.
Por lo que me solicitó, si le podía facilitar la dirección del "servidor de Tortoise" ^^.Yo, como no entendía la pregunta, y además la dirección no ha cambiado desde el día que se instaló, hace más de un año, quise indagar para que la necesitaba:
W: Y para que necesitas esa dirección??.Si es la misma que has estado utilizando desde que se instaló el SVN.
B: Claaaaro, claaaaro, es que xoo nesesssito subir unos casssitos de pruebas al Tortoise.
W:^^. A ver Sr. Botines, vamos a aclarar conceptos, a ver si conseguimos hacer que te parezcas a algo así como un "jeeefe de proxecto" o al menos un "pogramador xunior". Atiende, ... y deja de urgarte los oídos con la punta del boli bic (y además luego se lo come, el guarro), que ya has asistido a cuatro cursos de despliegue de aplicaciones, y aun no te enteras:
SVN == Repositorio que tenemos en el servidor A.
Tortoise == Un cliente para SVN.
NANT == Despliega las aplicaciones del servidor A al servidor B.
Bugs == Los genera el ente que está entre tu silla y tu monitor.
B: Ahhhh, grasssias, xa me queda todo claro.
W: Por lo menos ha valido la pena
B: Y entonssess, me puedes añadir un usuario en el Tortoise del servidor B??
W: ^^
Por lo que me solicitó, si le podía facilitar la dirección del "servidor de Tortoise" ^^.Yo, como no entendía la pregunta, y además la dirección no ha cambiado desde el día que se instaló, hace más de un año, quise indagar para que la necesitaba:
W: Y para que necesitas esa dirección??.Si es la misma que has estado utilizando desde que se instaló el SVN.
B: Claaaaro, claaaaro, es que xoo nesesssito subir unos casssitos de pruebas al Tortoise.

W:^^. A ver Sr. Botines, vamos a aclarar conceptos, a ver si conseguimos hacer que te parezcas a algo así como un "jeeefe de proxecto" o al menos un "pogramador xunior". Atiende, ... y deja de urgarte los oídos con la punta del boli bic (y además luego se lo come, el guarro), que ya has asistido a cuatro cursos de despliegue de aplicaciones, y aun no te enteras:
SVN == Repositorio que tenemos en el servidor A.
Tortoise == Un cliente para SVN.
NANT == Despliega las aplicaciones del servidor A al servidor B.
Bugs == Los genera el ente que está entre tu silla y tu monitor.
B: Ahhhh, grasssias, xa me queda todo claro.
W: Por lo menos ha valido la pena
B: Y entonssess, me puedes añadir un usuario en el Tortoise del servidor B??
W: ^^
Xob? ... o no Xob?

Ninguno de nosotros habíamos desconfiado nunca de la memoria y de la capacidad de raciocinio del Sr. Botines, por eso el Sr. Unknown fue en busca de su ayuda para resolver un problema técnico:
U: Sr. Botines, has quitado los otros jobs antes de probar el tuyo?
B: Esssto, siiii claaaro!!. Xoo personalmente quité todos los chooooovs acheeer por la tarde.
U: Pues se están ejecutando.
B: Ahhh. Entonses no los habré quitado.
U: ^^
miércoles, 26 de noviembre de 2008
Botines'Nipples
Viendo el nivel de seguimiento que está teniendo nuestro protagonista el Sr. Botines y su maestro The Dark Playmobil, y el gran número de peticiones, que habéis realizado (vamos que no habéis pedido ni la hora), para conocer más sobre la vida de este gran personaje. Estamos desarrollando un juego, donde podréis interactuar con el Sr.Botines y ayudarle en ese futuro incierto que le espera.
De momento el proyecto se encuentra en su fase inicial, aunque si que os podemos avanzar un "bosqueeejo" de la pantalla de inicio, aunque aun queda mucho por pulir.
Se valorará cualquier sugerencia, crítica y lo más importante, cualquier donativo :P ....(tranquilos que no hace falta, suficiente tenemos con los conocimiento que nos aporta el Sr. Botines diariamente).
De momento el proyecto se encuentra en su fase inicial, aunque si que os podemos avanzar un "bosqueeejo" de la pantalla de inicio, aunque aun queda mucho por pulir.
ParaQué?..parámetro Sr.Botines, pa-rá-me-tro!!
El Sr. Botines a vuelto a deleitarnos con una genialidad, sólo digna de los más grandes, como Leonardo Dantes o Paco Clavel.
Resulta que la Sra. Chechua tenía desarrollado un stored procedure que realizaba determinada funcionalidad. Dicho procedimiento recibía un parámetro de tipo fecha:
CREATE PROCEDURE [dbo].[Sr.BotinesNoTeEnterasDeNa]
@fecha DateTime
AS
BEGIN
....
Hasta el momento siempre se ejecutaba pasándole como parámetro la fecha del día anterior al actual. Por un modificación de los requerimientos se necesitaba que se ejecutará en una fecha dos días anterior a la actual.
Aquí se presentaba un gran problema, la Sra. Chechua no podía resolverlo. Así que decidió consultar con el resto del equipo, los cuales tampoco fuimos capaces de solucionarlo. Después de invertir múltiples horas buscando soluciones por foros, hablando con el Sr. Ayende, preguntándole a la bola de cristal, decidimos que lo mejor sería consultar al gurú de TODO:. Y como nó!!, el nunca decepciona. Resolvió nuestro problema en menos de lo que él mismo tarda en decir "Tres Tristes Tigres Tragaban Trigo en un Trigal, en un Trigal Tragaban Trigo Tres Tristes Tigres". Su solución fue:
-Bueeeeeno essstá claaaro, no?. Creas otro estoooré prosedure y le jarcodeas la fexa....es fásil no?
Resulta que la Sra. Chechua tenía desarrollado un stored procedure que realizaba determinada funcionalidad. Dicho procedimiento recibía un parámetro de tipo fecha:
CREATE PROCEDURE [dbo].[Sr.BotinesNoTeEnterasDeNa]
@fecha DateTime
AS
BEGIN
....
Hasta el momento siempre se ejecutaba pasándole como parámetro la fecha del día anterior al actual. Por un modificación de los requerimientos se necesitaba que se ejecutará en una fecha dos días anterior a la actual.
Aquí se presentaba un gran problema, la Sra. Chechua no podía resolverlo. Así que decidió consultar con el resto del equipo, los cuales tampoco fuimos capaces de solucionarlo. Después de invertir múltiples horas buscando soluciones por foros, hablando con el Sr. Ayende, preguntándole a la bola de cristal, decidimos que lo mejor sería consultar al gurú de TODO:. Y como nó!!, el nunca decepciona. Resolvió nuestro problema en menos de lo que él mismo tarda en decir "Tres Tristes Tigres Tragaban Trigo en un Trigal, en un Trigal Tragaban Trigo Tres Tristes Tigres". Su solución fue:
-Bueeeeeno essstá claaaro, no?. Creas otro estoooré prosedure y le jarcodeas la fexa....es fásil no?
Who is who??

Aventuras y desventuras del Sr. Botines digno sucesor de Paco Lobatón.
Nuestro protagonista quería resolver una de las múltiples dudas que le surgen cada vez que recupera la conciencia por las mañanas. Por lo que preguntó a un compañero, quién se la podía solucionar. Este compañero le remitió a otro compañero (de ahora en adelante Sr. Unknown), así que el Sr. Botines ni corto ni perezoso (uff...creo que no cumple los requisítos para esta frase hecha, más bien sería: corto y perezoso), se encamina hacia el puesto de trabajo del Sr. Unknown, una vez allí le dice:
-Esssto, xo tengo un problemichha, y me han dixo que hable con el Sr. Unknown. Y ese eres tú!!
El Sr. Unknown, no puede aguantar la emoción por haberle devuelto su identidad y aclararle que el Sr. Unknown es el Sr. Unknown y se deshace en abrazos con el Sr. Botines.
martes, 25 de noviembre de 2008
Curso de geografía by Sr. Botines. Lechón uan!!

Después de mucho insistir, conseguimos que el Sr. Botines accediera a compartir sus conocimientos con nosotros, los mortales. El curso empezó con unas lechhhhones de geografía.
Para ubicarnos, y ayudado con unas grandes dotes de talento artístico, nos hizo un dibujo, acampañado, como no!, de un poco de teoría:
-Essssto es Espannnnya, no seeé si lo entiendesss??
Vamos igualito a los de la guia Campsa.
El arte de la programación
En esta ocasión el Sr. Botines reunió al equipo para dar una clases magistrales de programación. Viendo que el equipo estaba "en oootroo niveeé", tuvo que intervenir con una frase lapidatoria:
-Esss que claaaaro, essto de la programasssión es un arte, sino programarian los robotsessss. Por essso a mi me xaman el Picassso de la informática.
-Esss que claaaaro, essto de la programasssión es un arte, sino programarian los robotsessss. Por essso a mi me xaman el Picassso de la informática.
lunes, 24 de noviembre de 2008
El grid que se actualizaba al cargar los datos, y cargaba los datos cuando se actualizaba y así suscesivamente
La última innovación botinezca, trata sobre la actualización de un grid, utlizando Extjs.
// Creo el Data Store del grid
var store = new Ext.data.Store({ ...{
success : function (result,request){
MostrarGrid();
// Actualizo resultados en grid
UpdateResult();
....
})
En esta declaración, se precisa el tratamiento del evento success que ocurre cuando se cargan satisfactoriamente los datos. Luego tenemos el método UpdateResult()
function UpdateResult()
{
...
store.Load(....);
...
}
Como se puede ver.. dentro del tratamiento del evento success del Store, se vuelve a invocar el método load, que generará otro evento success que generará otra llamada al Load que generará.. (ya me he perdido) .. y así sucesivamente...
Eeeessstoo está claro que es completamente intencional, de esta forma nos aseguramos que los datos del grid queden realmente bien bien cargados..
Seguiremos informando de las innovaciones botinezcas.
// Creo el Data Store del grid
var store = new Ext.data.Store({ ...{
success : function (result,request){
MostrarGrid();
// Actualizo resultados en grid
UpdateResult();
....
})
En esta declaración, se precisa el tratamiento del evento success que ocurre cuando se cargan satisfactoriamente los datos. Luego tenemos el método UpdateResult()
function UpdateResult()
{
...
store.Load(....);
...
}
Como se puede ver.. dentro del tratamiento del evento success del Store, se vuelve a invocar el método load, que generará otro evento success que generará otra llamada al Load que generará.. (ya me he perdido) .. y así sucesivamente...
Eeeessstoo está claro que es completamente intencional, de esta forma nos aseguramos que los datos del grid queden realmente bien bien cargados..
Seguiremos informando de las innovaciones botinezcas.
Y para qué queremos los [WebMethod]??

Estaba yo esperando a recibir un documento funcional, del Sr. Botines donde pudiera leer las especificaciones del código que tenía que implementar. Cuando se presenta con su portátil y un documento de Word, el cual prefiero no detallaros para ahorraros una depresión, donde se detallaban vagamente algunas tonterías. Entre ellas le había pedido que me describiera los 2 WebMethod que yo tenía que crear en el uebservisies, para poder acceder desde la Aplicación Web, pues su respuesta fue:
B: Xooo, no te he detachado los 2 métodos porque xa están creados en la librería.
W: Ya Sr. Botines, pero yo necesito acceder desde la aplicación web, a los WebMethods del WebService.
B: Xaaa, xa lo sé, pero es que los dos métodos de la librería son públicos.
W: ^^ ... y qué??
B: Bueno que desde la Aplicassión ueb los puedes xamar, porque el uebservisies tiene una referensia a la librería.
W: ^^
Como ya va siendo costumbre, me dejó sin palabras y casi sin aliento.
B: Xooo, no te he detachado los 2 métodos porque xa están creados en la librería.
W: Ya Sr. Botines, pero yo necesito acceder desde la aplicación web, a los WebMethods del WebService.
B: Xaaa, xa lo sé, pero es que los dos métodos de la librería son públicos.
W: ^^ ... y qué??
B: Bueno que desde la Aplicassión ueb los puedes xamar, porque el uebservisies tiene una referensia a la librería.
W: ^^
Como ya va siendo costumbre, me dejó sin palabras y casi sin aliento.
LinQ..ué???

Esta vez el Sr. Botines respaldado por su gran maestro The Dark Playmobil, y su eterna lucha en convertirnos en programadores de vb6, nos ha prohibido el uso de LinQ.
En mi infinita ingenuidad, le pregunté la razón de esa decisión, pensando que tendría alguna respuesta preparada, del tipo:
-Claaaro, ess que, es más optimo utilisar una lissssta, o utilisar un lápiss y un papel y que me pregunten a mí cual es el primero (o era el último??).
-o, xooo no sé como va.
-o, es perjudisial y contraprodussente para la salud.
-o, es que me cuesta pronunsiarlo, ... así que a partir de ahora, está prohibido hasta desir esa palabra.
-o, es que no me sale de los misssmisimos pessssones...
Pero lo único que conseguí sonsacarle, fue:
-Ha sido una dessisión de mi amo y Sr., xoo tuve una "disputa professsional" con él para hasserle entrar en rasssón .... pero cuando me pone essos ojitos, no puedo desssirle que no!!!
En mi infinita ingenuidad, le pregunté la razón de esa decisión, pensando que tendría alguna respuesta preparada, del tipo:
-Claaaro, ess que, es más optimo utilisar una lissssta, o utilisar un lápiss y un papel y que me pregunten a mí cual es el primero (o era el último??).
-o, xooo no sé como va.
-o, es perjudisial y contraprodussente para la salud.
-o, es que me cuesta pronunsiarlo, ... así que a partir de ahora, está prohibido hasta desir esa palabra.
-o, es que no me sale de los misssmisimos pessssones...
Pero lo único que conseguí sonsacarle, fue:
-Ha sido una dessisión de mi amo y Sr., xoo tuve una "disputa professsional" con él para hasserle entrar en rasssón .... pero cuando me pone essos ojitos, no puedo desssirle que no!!!
viernes, 21 de noviembre de 2008
Throwing Esseptions ... To God
/// El siguiente es un método de un controlador de MVC,
/// llamado desde el cliente, a través de un Request Ajax
/// por lo que siempre deberá retornar una expresión
/// JSON, que se interpretará del lado del cliente,
/// incluso si se ha generado una excepción, a menos que,
/// claro estás seas un desarrochador de otro nivel, como
/// Mr. Botines.
[AjaxMethod]
public void DoSomethingAjax(object input)
{
try
{
string jsonResponse = "";
// Dejando un poco de basura por aquí
DomainEntity entity = new DomainEntity();
// El valor anterior, bien gracias
entity = businessClass.getEntity();
// Este método ToJson, mágico, del framework CajaNegraMágica
jsonResponse = entity.ToJson();
return jsonResponse;
}
catch (Exception es) // es de Tipo Essessption,
// los errores de toda la vida
{
// TODO: Tiene toda la pinta que poniendo un
// "TODO" se generará el tratamiento de errores solito.
// Venga Dios, a ver si sabes que hacer con esto que te mando
throw es;
}
}
Súbelo que ya te petará, o aventuras animadas con SVN
En una lugar de la mancha, cuyo nombre no tengo ni idea, pero a varios kilómetros de allí, estaba el Jefe de Prochessto el señor Botines. Una de las integrantes del equipo a su cargo, le pregunta:
C : Boti, tengo que subir esto que he estado haciendo al Subversion, no ?
B : Eeesteee síii súbelooo...
C: Pero tú has hecho cambios.
B: No importa, esteee tú los subes y te dará conflicto arriba...
Contra molinos, interviene otro compañero:
OC: Pero Boti, qué dices tío, es mejor que se actualice el proyecto y resuelva los conflictos.. Si lo intenta subir, ni siquiera le dejará, le dirá que tiene que actualizarse primero...
B: Clarooo claroo por eso, lo subeee y esteee luego no le dejaaa.. claro claroo...
TODOS LOS PRESENTES: WTFFF ¿??????
C : Boti, tengo que subir esto que he estado haciendo al Subversion, no ?
B : Eeesteee síii súbelooo...
C: Pero tú has hecho cambios.
B: No importa, esteee tú los subes y te dará conflicto arriba...
Contra molinos, interviene otro compañero:
OC: Pero Boti, qué dices tío, es mejor que se actualice el proyecto y resuelva los conflictos.. Si lo intenta subir, ni siquiera le dejará, le dirá que tiene que actualizarse primero...
B: Clarooo claroo por eso, lo subeee y esteee luego no le dejaaa.. claro claroo...
TODOS LOS PRESENTES: WTFFF ¿??????
jueves, 20 de noviembre de 2008
Hablando distintos idiomas o Arquitectura cliente-servidor
Érase una vez un botines, que estaba desarrollando una página web, que tenía que procesar un fichero que se subía. Entonces, como estaba en otro ni·ver, le pregunta a uno de los colegas, como hacía para procesar el fichero. El colega le explica: "cuando lo subes (haces el upload) ..." y lo interrumpe:
B: ¿Pero no comprendo a qué te refieres cuando lo subes?
C: Vamos a ver boti, tienes que subir el fichero antes de procesarlo, no ?
B: No, yo lo abro y ya está
C: Vale, pero antes de abrirlo tienes que subirlo, o cómo lo abres?
B: Pues muy fácil, como se abren todos los ficheros en windows. Es que no entiendo parece que hablamos distintos idiomas...
C: WTFFF ¿?? Vamos a ver.. tú subes el fichero antes de abrirlo no? muestrame el código...
Esta es la parte donde el colega se percata, que en el control de Upload, pillaba la dirección local del fichero.
C: Pero tú te das cuenta que esto no irá en el servidor, verdad ?
B: No, no, no comprendo qué tiene de mal
C: Vamos a ver boti, tú sabes como funciona una aplicación web sobre un servidor?
B: Bueno, claro, claro
C: Entonces, sabrás que esto se ejecuta en el servidor, que no tiene tu fichero local..
B: Claro, claro, claro, por eso no me iba cuando lo subía. Entonces como lo hago?
C: Tienes que subir el fichero, y enviar una respuesta cuando lo proceses.
B: Una respuesta?
C: Claro, cuando haces un request, tienes que enviar una respuesta desde el servidor, en este caso subes el fichero en el request, y tienes que generar una respuesta en el servidor.
B: Pero como va lo de los request???
C: Sabes como va una arquitectura cliente-servidor ?
B: Cliente-Servidor.. claro claro... y eso qué es ???
C: NO COMMENTS ... WTFFFF¿¿???
Haciendo trampas al MVC
Había una vez un botines, que tenía que desarrollar unas paginillas tontas para subir un fichero. El proxecto en el que estaba trabjando era MVC (Monorail) así que era MUUUUYYY EXTREMADAMENTE dificil poner un tag input del tipo file. Un compañero le pregunta:
P: Botines, que he visto un aspx.cs en las vistas del MVC, ¿qué no sabes que esto no va con WebForms?
R: Es que claro, yo no sabía poner un control upload en monorail, así que le he hecho una trampilla al MVC, hasta que sepa como se hace. Así que en la vista, tengo un iFrame que llama a mi aspx de WebForms con el control upload de toda la vida. Ji Ji Ji..
P: WTTTFFFF ¿¿??????????
El Web.Config único III
....continuación.
Esta vez el sr. Botines solicitó mi colaboración para ayudarle en un "temicha" que le daba problemas.
Resulta que estaba haciendo pruebas unitarias, y el proyecto de test no leía el fichero de configuración. Después de un rato revisándo su código (si se le puede llamar así) y de probar las mil y una posibilidades, me doy cuenta que el nombre del fichero de configuración es WEB.CONFIG, mis ojos no daban crédito!, no podía ser!, supuse que fue un error involuntario, pero para confirmarlo decidí preguntarle:
W: Sr. Botines, el proyecto de Test de que tipo es?
B: esssto, es un prochesssto espesial.
W: ^^ que significa especial?
B: bueno que essss un prochesssto diferente.
W: ^^ pero de que tipo es?, consola (qué es consola?), librería, web...
B: ahhhhhh, librería......(pausa tensa).........no???
W: y qué tipo de fichero de configuración llevan las librerías?
B: essssto un Web.config.....(otra pausa, y esta aun más tensa)...... no???
W: ^^
....no me lo podía creer, pero tenía que asegurarme.
W: seguro?, (es tu última respuesta, no quieres utilizar el comodín del 50%)
B: si, no?
..después de la conversación, permanecí varios minutos aturdido hasta que me recuperé del shock.
Con el tiempo me he dado cuenta, de que nunca podré llegar a agradecerle el que me hiciera ver mas allá, para darme cuenta de que la unidad ya no es 1 .... ahora pueden ser más y todo gracias a sus "cassssitos unitarios".
continuará......
Esta vez el sr. Botines solicitó mi colaboración para ayudarle en un "temicha" que le daba problemas.
Resulta que estaba haciendo pruebas unitarias, y el proyecto de test no leía el fichero de configuración. Después de un rato revisándo su código (si se le puede llamar así) y de probar las mil y una posibilidades, me doy cuenta que el nombre del fichero de configuración es WEB.CONFIG, mis ojos no daban crédito!, no podía ser!, supuse que fue un error involuntario, pero para confirmarlo decidí preguntarle:
W: Sr. Botines, el proyecto de Test de que tipo es?
B: esssto, es un prochesssto espesial.
W: ^^ que significa especial?
B: bueno que essss un prochesssto diferente.
W: ^^ pero de que tipo es?, consola (qué es consola?), librería, web...
B: ahhhhhh, librería......(pausa tensa).........no???
W: y qué tipo de fichero de configuración llevan las librerías?
B: essssto un Web.config.....(otra pausa, y esta aun más tensa)...... no???
W: ^^
....no me lo podía creer, pero tenía que asegurarme.
W: seguro?, (es tu última respuesta, no quieres utilizar el comodín del 50%)
B: si, no?
..después de la conversación, permanecí varios minutos aturdido hasta que me recuperé del shock.
Con el tiempo me he dado cuenta, de que nunca podré llegar a agradecerle el que me hiciera ver mas allá, para darme cuenta de que la unidad ya no es 1 .... ahora pueden ser más y todo gracias a sus "cassssitos unitarios".
continuará......
Suscribirse a:
Entradas (Atom)
