<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://labloguera.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Los Senderos de .NET</title><link>http://labloguera.net/blogs/aclemente/default.aspx</link><description>Entresijos y vericuetos varios sobre .NET y programación.</description><dc:language /><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Un resarcimiento para Win Vista: Windows 7.</title><link>http://labloguera.net/blogs/aclemente/archive/2008/05/28/un-resarcimiento-para-win-vista-windows-7.aspx</link><pubDate>Wed, 28 May 2008 12:37:00 GMT</pubDate><guid isPermaLink="false">982ae711-7ac7-407a-b99e-5d5a6cc12179:14579</guid><dc:creator>A.Clemente</dc:creator><slash:comments>1</slash:comments><comments>http://labloguera.net/blogs/aclemente/comments/14579.aspx</comments><wfw:commentRss>http://labloguera.net/blogs/aclemente/commentrss.aspx?PostID=14579</wfw:commentRss><description>&lt;p&gt;En esta página podemos encontrar información en castellano sobre este sistema operativo:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.windows-7.es/index.php?option=com_frontpage&amp;amp;Itemid=1"&gt;http://www.windows-7.es/index.php?option=com_frontpage&amp;amp;Itemid=1&lt;/a&gt; &lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Windows 7&lt;/b&gt; (antes conocido como Blackcomb, y más tarde Vienna) se planea que sea la próxima versión de &lt;a title="Microsoft" href="http://es.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt; &lt;a class="mw-redirect" title="Windows" href="http://es.wikipedia.org/wiki/Windows"&gt;Windows&lt;/a&gt;, sucediendo a &lt;a title="Windows Vista" href="http://es.wikipedia.org/wiki/Windows_Vista"&gt;Windows Vista&lt;/a&gt;, según Microsoft, Windows "7" será creado bajo un nuevo &lt;a title="Núcleo (informática)" href="http://es.wikipedia.org/wiki/N%C3%BAcleo_%28inform%C3%A1tica%29"&gt;kernel&lt;/a&gt;,para así hacerlo más seguro y rápido. Algunas fuentes indican queWindows 7 se terminaría de desarrollar a principios de 2010, aunquesegún los comentarios del mismo &lt;a title="Bill Gates" href="http://es.wikipedia.org/wiki/Bill_Gates"&gt;Bill Gates&lt;/a&gt; microsoft pretende sacarlo para 2009.&lt;sup id="cite_ref-tgdailym1_0-0" class="reference"&gt;&lt;a title="" href="http://es.wikipedia.org/wiki/Windows_7#cite_note-tgdailym1-0"&gt;&lt;span class="corchete-llamada"&gt;[&lt;/span&gt;1&lt;span class="corchete-llamada"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; De acuerdo a la revista "Smart Computing in Plain English", el desarrollo de este &lt;a class="mw-redirect" title="Sistema Operativo" href="http://es.wikipedia.org/wiki/Sistema_Operativo"&gt;Sistema Operativo&lt;/a&gt; comenzó inmediatamente después del lanzamiento de Windows Vista. &lt;/p&gt;&lt;p&gt;Fuente anterior: wikipedia, definición de Windows 7.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://labloguera.net/aggbug.aspx?PostID=14579" width="1" height="1"&gt;</description><category domain="http://labloguera.net/blogs/aclemente/archive/tags/Windows/default.aspx">Windows</category></item><item><title>C&#243;mo NO migrar una aplicaci&#243;n de ASP cl&#225;sico a ASP.NET. Parte II.</title><link>http://labloguera.net/blogs/aclemente/archive/2008/05/22/c-mo-no-migrar-una-aplicaci-n-de-asp-cl-sico-a-asp-net-parte-ii.aspx</link><pubDate>Thu, 22 May 2008 13:20:00 GMT</pubDate><guid isPermaLink="false">982ae711-7ac7-407a-b99e-5d5a6cc12179:14464</guid><dc:creator>A.Clemente</dc:creator><slash:comments>4</slash:comments><comments>http://labloguera.net/blogs/aclemente/comments/14464.aspx</comments><wfw:commentRss>http://labloguera.net/blogs/aclemente/commentrss.aspx?PostID=14464</wfw:commentRss><description>&lt;p&gt;Hubo un tiempo -feliz aquel- en el que gracias al presupuesto de un departamento y a la amabilidad de los usuarios y responsables no técnicos de la aplicación de venta una línea de productos de la compañía (*), fue posible el intento de migración de ASP clásico a ASP.NET. Por aquel tiempo -loado sea-, contaba en la &lt;a title="Parte I." target="_blank" href="http://labloguera.net/blogs/aclemente/archive/2008/01/23/como-migrar-una-aplicaci-n-de-asp-3-0-a-asp-net-y-no-perder-tu-puesto-de-trabajo-relato-real.aspx"&gt;primera parte de esta trilogía&lt;/a&gt; los no pocos problemas que mi compañero de equipo de migración y yo tuvimos para desarrollar un plan y trasladar a mejor vida aquel caos informático. Que bonita es la ilusión por prosperar y parir un hijo binario, cuantas horas de dicha delante del ordenador pensando en la experiencia que adquiriríamos, hasta que nuestro gozo acabó en un pozo como quien dice, de ahí hasta hacer honor al título de esta segunda parte de la trilogía.&lt;/p&gt;&lt;p&gt;(*)Como en la primera parte, se omite el nombre de la compañía y el uso de la aplicación.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Cuando comenzamos nos dimos cuenta de que sería una tarea muy larga para dos personas, tan larga como Pau Gasol espaguetizándose&amp;nbsp; en la entrada a un agujero negro y como buenos analistas,&amp;nbsp; comenzamos por hacer&amp;nbsp; una estimación de tiempo que supusimos, basándonos en la documentación de la aplicación antigua y dado que nuestra forma de implementar la aplicación en tres capas sería sin ayuda de generadores de código, en unos seis o siete meses. Para nuestra jefa, pagana en tecnologías .NET, este era un tiempo razonable y todos éramos felices y comíamos perdices al ajillo pensando en nuestro trabajo. Ahora, un poco de arquitectura, algún rifi-rafe entre mi compañero y yo por no ponernos de acuerdo, que si es bueno poner muchos proyectos, que si no es bueno. Ojo con el rol del usuario. Esa cadena de conexión no me gusta nada. Te estás pasando con el ViewState, desactívalo anda. ¿Una MasterPage o dos?. ¿Cuántas clases de entidad y colección?. Cosas típicas de diseño y arquitectura del software, lo que siempre te puedes encontrar.&lt;/p&gt;&lt;p&gt;El usuario es caprichoso, el usuario a veces pide cosas que sólo pueden hacer los magos de la Tierra Media, el usuario a veces es objeto de la ira del analista y de las ganas de éste último por cogerle del cuello y apretar muy fuerte muy fuerte hasta notar en él la congestión del color morado de su tez indicando una asfixia casi inminente, esto es así, pero nunca se cumple por respeto y tal vez porque está feo. En vez de esto hay que tener un poco de sosiego, hay que oír, pensar, sugerir pensando que el cliente tiene razón, diseñar y desarrollar. El usuario quiere ver sus datos de la forma que más cómoda le resulta aunque a tu juicio sea como tumbarse en una cama de clavos al rojo, y es aquí donde viene lo que intentó ser el núcleo de nuestra aplicación.&lt;/p&gt;&lt;p&gt;Ahora, en el proceso de gestación de la criatura viene lo másinteresante, crear el cerebro y el corazón, cerebro por la parte quetoca al negocio, corazón por la parte en la que te muestras al mundo.Nunca lo imaginé, pero toda la aplicación giraba alrededor del control .ascx para GridViewmás completo programado hasta entonces -tal vez exagero- pero sin élsería imposible hacer hablar a nuestro pequeño bebé.&lt;/p&gt;&lt;p&gt;Todo el que haya hecho alguna vez una aplicación de tres capas, sabrá perfectamente que cuando tu fuente de datos .NET es adjuntada directamente al GridViewtodo funciona a la primera, es decir, cuando se utiliza el asistente y un DataSet puedes paginar, ordenar, insertar y actualizar sin apenas problemas, pero si tu aplicación es de tres capas y loque insertas en el GridView es una colección de entidades, tendrásmuchos problemas a la hora de hacer algo más que mostrar datos.&lt;/p&gt;&lt;p&gt;Todo un reto para nosotros. Miramos el problema desde muchos puntos de vistaantes de dar con el que nos pareció mejor: tendríamos un archivo deconfiguración -un milagroso archivo de configuración-, una clase normal y corriente con métodos estáticos quele diría al GridView qué&amp;nbsp; y cómo tenía que pintar los datos dados para cada tipo de entidad/colección/selección. El GridView internamente se encargaría de llamar a esosmétodos usando Reflection y de esta forma, no depender del tipo de lacolección o de la entidad para dibujar lo que queremos. Aunque no loparezca, esta idea es simple y funcionó bien, éramos capaces de dibujarcualquier tipo de colección con el mismo código dentro de nuestroGridView, en otras palabras, estábamos en el camino de conseguir unGridView Universal. Pese a que esto no deja de ser reinventar la rueda, noencontramos casi ninguna ayuda en internet y gran parte del trabajopartió de nosotros y algún cable que nos echó un amigo de uno de los departamentos de desarrollo de la compañía (Gracias &lt;a target="_blank" href="http://www.karakeando.es"&gt;Karako&lt;/a&gt;)&lt;br&gt;&lt;br&gt;La aplicación antigua era capaz de hacer cosas de mucho nivel para una programación espaguetti, podía pintar datos en tablas sacados de un origen de datos de SAP, a veces sus salidas se asemejaban al trabajo de un delineante con el Autocad intentando dibujar la planta del Escorial u otra forma de decirlo: cuantas horas de diversión y cuantas plegarias a Nuestra Santísima Señora de la Incorruptible Paciencia programando la salida por pantalla. Para muestra un botón:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img title="Una &amp;quot;cómoda&amp;quot; forma de ver datos." alt="Una &amp;quot;cómoda&amp;quot; forma de ver datos." align="middle" height="321" width="983" src="http://labloguera.net/photos/aclemente/images/14465/original.aspx"&gt;&lt;br&gt;Esto sí que es una forma "cómoda" de ver los datos. Sin más, el cliente manda. Por cierto, qué útil es Paint para ocultar datos, siempre será para mí ese amigo inseparable por siempre.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Como podéis ver, es muy normal encontrar cabeceras de dos filas con celdas divididas, al igual que las propias celdas de los datos que aparecen divididas internamente. Antiguamente, según me permitía ver el código, el algoritmo iba leyendo un flujo de texto en formato xml extraído como salida a la consulta de SAP y según lo encontrado, generaba en el html de cliente etiquetas &amp;lt;table&amp;gt;, &amp;lt;td&amp;gt; y &amp;lt;tr&amp;gt; con su respectivo texto dentro, huelga decir, que cada consulta era especial y única y requería su propio algoritmo. Sí compañeros, la santa paciencia estuvo muy contenta por aquellas fechas.&lt;/p&gt;&lt;p&gt;Para emular esto recurrimos a una idea que quedó como castillo aéreo por la razón que después daré. Pretendíamos leer de SAP los datos en bruto y después dejarlos en colecciones independientes, cada colección se insertaría al DataSource de un nuevo GridView y en cada celda que tenga que estar dividida internamente en el GridView general, se insertaría el GridView pequeño con la tabla interna, es decir, GridViews dentro de GridViews. Esto nos permitía tener una única forma de leer cualquier tipo de salida de SAP y poder pintarla de forma recursiva, el GridView leería del archivo de configuración la posición de las tablas y todo sería pintado, me gustó mientras fue posible.&lt;/p&gt;&lt;p&gt;Otro problema con el que nos encontraremos si queremos que nuestro GridView pueda ordenar por campo al hacer clic en un nombre de la cabecera tampoco se resuelve si programamos en tres capas, para ello, el archivo de configuración le decía al GridView cuáles eran los nombres de los campos y en qué posición debían ser mostrados, de esta forma, el GridView era capaz de construir las columnas totalmnete ordenables y paginables.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Además de esto, es muy normal que en una base de datos tengamos para un campo, por ejemplo ESTADO_CLIENTE, valores constantes, por ejemplo Honorario, Solvente y Deudor. Este aspecto también fue contemplado por nuestro GridView y así hacer las inserciones en él mismo sin recurrir a formularios. Para ello pintábamos en el GridView tantos DropDownList como fuesen necesarios. De nuevo, el archivo de configuración le decía al GridView que para ese tipo de entidad debía pintar un DropDownList&amp;nbsp; en ese campo y rellenarlo con esos valores constantes sacados automáticamente de la base de datos.&lt;/p&gt;&lt;p&gt;&lt;img title="GridView en proceso de inserción de una fila" alt="GridView en proceso de inserción de una fila" align="middle" height="282" width="1000" src="http://labloguera.net/photos/aclemente/images/14475/original.aspx"&gt; &lt;br&gt;&lt;/p&gt;&lt;p&gt;Aquí no acaba la cosa pues también era necesario para las inserciones validar los datos, para ello, en vez de crear dinámicamente validators dentro del GridView, hacíamos al archivo de configuración extraer de la base de datos los metadatos de la tabla (longitud máxima del campo, campos no nulos, tipo de dato, clave primaria...)&amp;nbsp; así conseguimos que al insertar, sólo se consiguiese escribir lo que los metadatos dejaban al usuario.&lt;br&gt;Por no hablar de la barra de scroll, notificación automática de errores, accesibilidad web con la posibilidad de que los comerciales utilicen la aplicación desde una PDA, la capacidad de extraer los datos de SAP o de Oracle/SqlServer indistintamente, así como de añadir dinámicamente botones de imagen para actualización, modificación, borrado y extracción de la fila a un formulario.&lt;/p&gt;&lt;p&gt;Incluso un día, el tiempo planificado para el proyecto se redujo drásticamente cuando nos dijeron que a partir de ese día el proyecto entraba dentro de las normas de calidad de la compañía. Esto quería decir que podríamos utilizar Enterprise Architect para generar el diagrama de clases y utilizar un generador de código propio de la compañía para tener operativa una primera aplicación apenas sin teclear ni una línea, además, la aplicación utilizaba un framework también desarrollado aquí dentro lo que la hacía compatible con otras muchas aplicaciones dentro de la empresa. &lt;/p&gt;&lt;p&gt;A este código generado le añadiríamos nuestras propias interfaces sustituyendo las construidas automáticamente y utilizaríamos el GridView mencionado con sus archivos de configuración, sólo quedaría la implementación del negocio pues la capa de datos, mappers de entidad, entidades y colecciones se dejaba como trabajo para el generador. Esto supondría poder dedicar más tiempo a documentar bien el proyecto, dejar claros requerimientos, diseño del sistema y análisis del sistema con Enterprise Architect, conjuntos de artefactos inexistentes con la artesanal aplicación antigua.&lt;br&gt;&lt;/p&gt;&lt;p&gt;En fin, las ventajas aún continúan con muchas más cosas de las que la antigua aplicación carecía, pero la vida, el dinero y los jefes sin nociones sobre tecnología son así, si algo viejo funciona, ¿para qué vas a renovarlo?. Es la tónica de esta profesión, el cliente/usuario siempre se siente engañado por el autor del software ya porque suele carece de los conocimientos necesarios y no es consciente muchas veces de qué quiere y qué le será útil, siempre pensará que le intentamos vender la moto con cosas que no necesita. Ya nos lo dirán ellos a nosotros cuando haya que migrar todo a Vista dentro de no mucho y los sistemas en ASP clásico dejen de funcionar para siempre. Cada vez que falle la aplicación antigua, cosa diaria por cierto y cada vez que seamos más reticentes para recuperar al sistema de un error.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Ella me dejó tecleando alguna línea perdida de código en la aplicación, me dejó con el dedo pulsando una letra cuando me dijo: "no sigas, nos han cancelado el proyecto y no ha habido forma de convencerles de lo contrario". Y es que mi jefa también tiene otros superiores. Nuestro bebé se quedó ahí, en un estado embrionario, ¿eterno?, no se, él espera de que algún día alguien continúe haciendo de vientre materno y le siga dando forma, los de arriba no quisieron entender las muchas mejoras que traería el no-nacido. &amp;nbsp;&lt;/p&gt;&lt;p&gt;Aún hay más, un tiempo para el respiro dentro de tanta frustración. Próximamente, algún día.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Alfonso Clemente.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://labloguera.net/aggbug.aspx?PostID=14464" width="1" height="1"&gt;</description><category domain="http://labloguera.net/blogs/aclemente/archive/tags/Web-Based+Applications/default.aspx">Web-Based Applications</category><category domain="http://labloguera.net/blogs/aclemente/archive/tags/.NET+es+_26002300_250_3B00_til/default.aspx">.NET es &amp;#250;til</category></item><item><title>Arreglando errores LOGICOS en tu Disco Duro</title><link>http://labloguera.net/blogs/aclemente/archive/2008/03/05/arreglando.aspx</link><pubDate>Wed, 05 Mar 2008 14:19:00 GMT</pubDate><guid isPermaLink="false">982ae711-7ac7-407a-b99e-5d5a6cc12179:12274</guid><dc:creator>A.Clemente</dc:creator><slash:comments>6</slash:comments><comments>http://labloguera.net/blogs/aclemente/comments/12274.aspx</comments><wfw:commentRss>http://labloguera.net/blogs/aclemente/commentrss.aspx?PostID=12274</wfw:commentRss><description>&lt;p&gt;Este problema ha ocasionado la pérdida de información muy importante a mucha gente por desconocimiento ya que, después de la desesperación del momento, opta por formatear su disco duro o bien por devolverlo a la casa donde lo compró para tener uno nuevo. Tal vez aún no sea tarde y no sea necesario darle formato perdiendo, por tanto, aquellos datos tan importantes. &lt;/p&gt;&lt;p&gt;&lt;b&gt;¿Cómo puedo volver al pasado, cuando todo iba como la seda?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Existe una herramienta para tales efectos llamada &lt;b&gt;Hiren's&lt;/b&gt;, que si no me equivoco ya va por su novena versión. Con Hiren's será relativamente fácil recuperar tu disco duro y dejarlo como nuevo, pero !ojo!, estoy hablando de errores LÓGICOS y no FÍSICOS, si tu problema es que le has pegado un golpetazo contra el suelo y has desencajado sus delicadas piezas por dentro, es evidente que esto no funcionará.&lt;/p&gt;&lt;p&gt;&lt;b&gt;¿Qué es Hiren's?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Es&amp;nbsp;un conjunto de herramientas&amp;nbsp;muy útil para recuperar información en Discos Duros cuando hemos borrado archivos por accidente o incluso cuando hemos perdido la tabla de asignación de archivos, Hiren's también permite escaneos de memoria para ordenar la tabla de asignación o para desfragmentarlos.&lt;/p&gt;&lt;p&gt;&lt;b&gt;¿En qué situaciones funciona Hiren's?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Debido al actual uso masivo de discos duros externos, no deberías utilizar Hiren's en discos duros externos conectados&amp;nbsp;con usb, para ello, deberás extraer el disco de la carcasa y conectarlo al cable IDE de tu ordenador portátil o sobremesa, de esta forma, Hiren's trabajará a la perfección.&amp;nbsp;Un problema&amp;nbsp;muy común para el cual&amp;nbsp;Hiren's es muy recomendable es el siguiente: por dejadez, al final terminamos por pegar el "tirón" al cable de usb en vez de desconectarlo correctamente utilizando el sistema operativo, en estas ocasiones, el disco duro es muy propenso a desactualizar su tabla de asignación por estar leyendo o escribiendo en ese momento, acto seguido, veremos como nuestro disco duro es incapaz de reaccionar o incluso de no aparecer como unidad. Esto sucede porque nuestros archivos ya no están indizados mediante la tabla y, aunque la información sigue estando ahí, no podemos acceder a ella.&lt;/p&gt;&lt;p&gt;&lt;b&gt;¿Cómo consigo Hiren's?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Las herramientas Hiren's las puedes descargar gratuitamente de megaupload (la herramienta también es gratuita, las chicas guapas que verás en el enlace creo que no xDD):&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;font color="#810081"&gt;&lt;a href="http://www.megaupload.com/es/?d=3U1DAIB0"&gt;http://www.megaupload.com/es/?d=3U1DAIB0&lt;/a&gt;&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;¿Cómo utilizo Hiren's?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;La descarga es una iso que deberás quemar acto seguido en un CD. Este CD será auto-bootable y, de este modo, al arrancar tu computadora, podrás acceder a la herramienta siempre y cuando tengas la BIOS configurada para arrancar desde el CD. Aparecerá un menú muy intuitivo con muchas herramientas para utilizar, para el problema expuesto anteriormente, recomiendo la herramienta HDD Regenerator por ejemplo aunque hay otras muchas, todo es cuestión de observar con atención el menú y saber un poquito de inglés para leer la descripción de cada una de ellas.&lt;/p&gt;&lt;p&gt;&lt;b&gt;¿Alguna otra recomendación?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Por supuesto, se trata de un famoso refrán: "más vale prevenir que curar", esto es, evita en la medida de lo posible, pegar el famoso "tirón" a tu HD :p.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Alfonso Clemente.&lt;/p&gt;&lt;img src="http://labloguera.net/aggbug.aspx?PostID=12274" width="1" height="1"&gt;</description></item><item><title>C, C++ y los punteros: &#191;perdemos las buenas costumbres?</title><link>http://labloguera.net/blogs/aclemente/archive/2008/01/24/c-c-y-los-punteros-perdemos-las-buenas-costumbres.aspx</link><pubDate>Thu, 24 Jan 2008 13:23:00 GMT</pubDate><guid isPermaLink="false">982ae711-7ac7-407a-b99e-5d5a6cc12179:10799</guid><dc:creator>A.Clemente</dc:creator><slash:comments>44</slash:comments><comments>http://labloguera.net/blogs/aclemente/comments/10799.aspx</comments><wfw:commentRss>http://labloguera.net/blogs/aclemente/commentrss.aspx?PostID=10799</wfw:commentRss><description>&lt;p&gt;Navegando por ahí encontré por casualidad un &lt;a class="" href="http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html"&gt;interesante artículo&lt;/a&gt; en inglés sobre lenguajes de programación titulado "&lt;span class="ctArticleTitle"&gt;Computer Science Education: Where Are the Software Engineers of Tomorrow?" "Educación en ciencias de la computación: ¿Dónde están los ingenieros del software del mañana?"&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Escrito por&lt;span class="ctAuthor"&gt; Robert B.K. Dewar y Edmond Schonberg,&lt;/span&gt; doctores en Ciencias de la Computación&amp;nbsp;de la universidad de Nueva York y Presidente y Vice-presidente de AdaCore Inc.,&amp;nbsp;tratan de presentar a la educación de hoy día como insuficiente a la hora de tomar conciencia de cómo la máquina&amp;nbsp;física va&amp;nbsp;inherentemente unida al código programado.&amp;nbsp;Estos señores han llegado a una conclusión a la que también llegué yo por mi cuenta el año pasado mientras me ganaba un dinerillo como profesor particular y que después comentaré. En este artículo, se defiende abiertamente la&amp;nbsp;nafasta influencia que&amp;nbsp;Java, como primer lenguaje de programación enseñado en las universidades, crea en el novato programador un estilo mecánico de programación que apenas requiere conocimientos fuera del lenguaje.&lt;/p&gt;&lt;p&gt;Muchos de vosotros que habéis estudiado una titulación de Informática o estáis en ello, recordaréis con nostalgia aquel primer año en que C era el lenguaje de referencia a aprender para estar curtido a prueba de bombas, seguro que tenéis grabado a fuego vuestros primeros pasos intentando comprender&amp;nbsp;como funcionaban los punteros y cómo se pasaban por referencia, además de las funciones&amp;nbsp;malloc, calloc, sizeof&amp;nbsp;y similares. Aquello era bueno, te hacía pensar, te obligaba a tomar conciencia de cómo el programador, al tirar el código, tenía que llevar una cuenta mental del mapa de memoria para no causar un desbordamiento, era imperante que para cargar un objeto en memoria&amp;nbsp;se debía&amp;nbsp;calcular su tamaño y hacer las referencias oportunas hacia él de modo que&amp;nbsp;se era&amp;nbsp;totalmente consciente en todo momento de la relación leguaje-máquina.&lt;/p&gt;&lt;p&gt;C y C++ lo tienen todo, programación a bajo nivel que nos permitía programar controladores para todo tipo de maquinitas, hasta lo más abstracto, el concepto de namespace, herencia, clase y objeto con el valor añadido de tener que ser el programador el encargado de reservar memoria (famosisimos new o malloc dependiendo del momento) y por supuesto de destruir el objeto una vez no hiciese falta (con&amp;nbsp;un destructor que ha pasado al olvido) y sobre todo, lo que más me gusta: son lenguajes fuertemente tipados.&lt;/p&gt;&lt;p&gt;No confundáis lo que quiero decir, no pretendo volver a lo viejo, solamente enseñarlo pues así crearemos buenos programadores con sólida cimentación, aquellos que saben dónde va a parar todo el código que han escrito.&amp;nbsp;Las nuevas tecnologías son buenas y muy útiles&amp;nbsp;para hacer las cosas, .NET, J2EE, SAP/Abap... permiten hacer virguerías impensables hace pocos años con sus lenguajes de alto nivel y sus librerías fáciles de comprender, también hacen un uso óptimo de la máquina sin llegar a colgarla&amp;nbsp;además de encargarse de borrar lo no utilizado una vez no es necesario. Son tecnologías que se deben usar para no caer en la chapuza, sin embargo, veo necesaria la enseñanza de C y C++ como medio de hacer ver al alumno que no todo el monte es orégano y de recordarle que, al fin y al cabo, está escribiendo instrucciones para ser ejecutadas por una máquina.&lt;/p&gt;&lt;p&gt;Recuerdo cuando hace tres años tuve que hacer un programa para tratamiento digital de imágenes en Visual C++ en el que, a base de punteros, tenías que declarar un bitmap y dejarlo en una zona de memoria de modo que cada vez que tuvieses que modificarlo, debías apuntar hacia él y tener plena conciencia en todo momento de qué estabas haciendo exactamente en la memoria. Recuerdo las veces que tuve que pulsar el botón de reset del ordenador por inactividad total del sistema&amp;nbsp;para poder continuar y pensar mejor qué era lo que esta haciendo. Es bonito saber que hay gente capaz de escribir un bucle for y extraer los datos de un determinado bloque de memoria a bajo nivel, incluso de escribir en C un programa que escribirá a su vez cosas en ensamblador (si amigos, se trata de un compilador o intérprete en su defecto)&lt;/p&gt;&lt;p&gt;Me alarmé profundamente cuando el año pasado, dando clases particulares de Fundamentos de la programación I a un amigo mío, vi que habían cancelado el tema de los punteros, con ello acabaron con la filosofía de C,&amp;nbsp;si cancelan los punteros, pensé, ¿que sentido tiene la asignatura?&amp;nbsp;podrían comenzar directamente con Java y esto que se ahorraban. De este&amp;nbsp;modo, los&amp;nbsp;alumnos no sabrán que un objeto o una variable no se crea en las nubes a no ser que&amp;nbsp;sean capaces&amp;nbsp;de llegar a esa conclusión por ellos mismos. Tal vez no caigan en la cuenta de que hay que reservar un espacio para ella y apuntarla cuando nos haga falta pasarla por referencia o crear una copia en una zona adjunta o donde queramos&amp;nbsp;cuando la pasemos por valor. Estos conceptos se han perdido con los nuevos lenguajes,&amp;nbsp;ahora asumimos que&amp;nbsp;todo es por referencia cuando se trata de un objeto o por valor cuando se trata de un tipo simple&amp;nbsp;y encima&amp;nbsp;se nos&amp;nbsp;destruye automáticamente.&lt;/p&gt;&lt;p&gt;Por supuesto, no podía pasar por alto los famosos lenguajes script&amp;nbsp;que, aunque son muy versátiles y funcionan en condiciones extremas por su condición de ser, normalmente,&amp;nbsp;interpretados, también crean muy malos hábitos a los aprendices de programador, se trata de&amp;nbsp;una depuración&amp;nbsp;de prueba y&amp;nbsp;error en&amp;nbsp;la que caer en fallos es fácil por&amp;nbsp;hacer asignaciones al tuntún&amp;nbsp;como que la variable jota ahora devuelve un string y en la siguiente línea devuelve un ornitorrinco.&amp;nbsp;Leí un artículo por ahí de alguien que aconsejaba aprender python como primer lenguaje y me echaba las manos a la cabeza. Aunque python es tipado, no me parece elegante para comenzar, el alumno se creará malos hábitos si las conversiones de un tipo a otro se hacen sin saber por qué. A mi parecer, un entero es un entero y debe morir como entero, pues es la filosofía informática es esta, formatear información y guardarla en celdas para que signifiquen algo. Recomiendo los lenguajes script a la gente ya curtida pues son realmente útiles para muchas cosas en las que los lenguajes con declaración se halla&amp;nbsp;realmente limitados, pero no para empezar en esto de la programación. &lt;/p&gt;&lt;p&gt;Hace un año tuve que programar un sencillo compilador en la carrera y tuvo que ser en Python y la verdad, era de locos pegarse con eso hasta coger la soltura necesaria, después me he pegado con otros como VBScript y javascript ahora como desarrollador web y he conseguido reafirmarme más aún en mis teorías de no enseñar estos lenguajes como primeras lenguas. Utilizando un lenguaje tipado incluso se tiene la ventaja de poder usar ayudas en tiempo real en el entorno de programación pues suelen traer herramientas para ver que contiene determinado objeto durante la depuración, ya que este se encuentra reservado y formateado con un tipo concreto que permite saber si hemos intentado meter el triangulito de plástico duro&amp;nbsp;en la hueco con forma de cuadrado ¿os acordáis de los juegos para los niños pequeños? sin embargo, dentro de los lenguajes tipados se debería enseñar primero los que declaran variables y reservan espacio a mano, huelga decir la potencia que los lenguajes donde no se declara el tipo es menor a los que en este artículo tratamos en cuando a eficiencia en la generación de código.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Todo esto no interesa a las empresas que como finalidad buscan picateclas que no se pregunten el funcionamiento de una máquina, carne vendida como el embutido a las software factories donde llegan licenciados en carreras que poco tienen que ver con la informática y son entrenados en cursos de un mes de java y ¡hala!, a trabajar como analistas. Esto no trae nada bueno, no ganaremos en buenos profesionales con buenas costumbres programáticas, que realicen código bonito y de calidad&amp;nbsp;y estén por tanto,&amp;nbsp;bautizados en fuego. Un buen programador no&amp;nbsp;debe entender&amp;nbsp;de Java, de C# o Visual Basic, ni siquiera&amp;nbsp;de C ni de C++ realmente, a un buen programador no&amp;nbsp;debe importarle el lenguaje pues finalmente todos sirven para lo mismo. Un buen programador es capaz de abstraerse del lenguaje y de implementar un algoritmo formal para resolver cierto problema de forma algorítmica en una máquina que guarda datos y puede operar con ellos. Todo esto amigos, se puede perder si la universidad no deja de producir&amp;nbsp;programadores&amp;nbsp;sin abstracción&amp;nbsp;y las empresas de contratar gente sin nociones. Todo esto, en definitiva, no me gusta.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;img src="http://labloguera.net/aggbug.aspx?PostID=10799" width="1" height="1"&gt;</description></item><item><title>C&#243;mo migrar una aplicaci&#243;n de ASP 3.0 a ASP.NET. Parte I.</title><link>http://labloguera.net/blogs/aclemente/archive/2008/01/23/como-migrar-una-aplicaci-n-de-asp-3-0-a-asp-net-y-no-perder-tu-puesto-de-trabajo-relato-real.aspx</link><pubDate>Wed, 23 Jan 2008 11:13:00 GMT</pubDate><guid isPermaLink="false">982ae711-7ac7-407a-b99e-5d5a6cc12179:10758</guid><dc:creator>A.Clemente</dc:creator><slash:comments>6</slash:comments><comments>http://labloguera.net/blogs/aclemente/comments/10758.aspx</comments><wfw:commentRss>http://labloguera.net/blogs/aclemente/commentrss.aspx?PostID=10758</wfw:commentRss><description>&lt;p&gt;Soy nuevo en la oficina, todo el mundo es nuevo alguna vez en algún sitio, yo lo&amp;nbsp;he sido en uno de los edificios de la compañía(*) en Tres Cantos (Madrid) y&amp;nbsp;como nuevo me tocan hacer las cosas que hace el nuevo. He tenido suerte, nadie me ha humillado aún, no he tenido que ir a por cafés para todos ni hacer fotocopias ni barrer el suelo, de hecho tengo&amp;nbsp;tarjeta de acceso,&amp;nbsp;silla y ordenador propio desde el primer día (cosa rara aquí) y un amigo que todos los días me puede ejecutar un iexplore.exe con su usuario para tener internet y un compañero de proyecto que ya estaba antes que yo y que también&amp;nbsp;parece apasionado por la tecnología.&lt;/p&gt;&lt;p&gt;(*)Nombre de la compañía omitido, en adelante se referirá a esta empresa como "la compañía"&amp;nbsp;&lt;/p&gt;&lt;p&gt;Realmente trabajo para una consultora tecnológica que presta servicios a la compañía y he llegado aquí como especialista en tecnologías web .NET&amp;nbsp;-wow!-recomendado por mi jefe que se encargó de pagarme las certificaciones &lt;b&gt;MCP, MCTS y MCPD&lt;/b&gt;. Vaya, resulta que soy toda&amp;nbsp;una autoridad en la materia. Si señor, con dos c.....s, salvo por un pequeño inconveniente que todo el mundo olvida a veces: &lt;b&gt;TENER CERTIFICACIONES NO TE GARANTIZA QUE SEPAS&lt;/b&gt;. Nunca he trabajado en un proyecto real, solo en personales, me he metido&amp;nbsp;bastante caña&amp;nbsp;y la verdad es que me desenvuelvo bien haciendo aplicaciones web y de escritorio para mí,&amp;nbsp;me apasiona programar cositas por mi cuenta,&amp;nbsp;de no ser por eso, estaría bastante asustado&amp;nbsp;con este puesto.&lt;/p&gt;&lt;p&gt;Retomo y al grano: soy nuevo,&amp;nbsp;eso es evidente a la par que verdad universal,&amp;nbsp;acabo de llegar y la&amp;nbsp;jefa del proyecto (buena consultora SAP pero que no tiene mucha idea de .NET)&amp;nbsp;me&amp;nbsp;pone en circunstancias: &lt;/p&gt;&lt;p&gt;-Hay una aplicación web en ASP 3.0&amp;nbsp;que necesita ser traducida a ASP.NET, esta aplicación es usada por los comerciales de la compañía para vender una de las líneas de productos al por mayor a otras grandes empresas. No tenemos ningún tipo de documentación.&lt;/p&gt;&lt;p&gt;&amp;nbsp;-Pues vaya -me dije respirando hondo,&amp;nbsp;pensando que uno de los productos vendidos me lo tendría que aplicar yo en cierta zona tan pronto como&amp;nbsp;fuera posible. Allá cada uno con su imaginación.&lt;br&gt; &lt;/p&gt;&lt;p&gt;-Te encargarás de hacer un estudio del tiempo que se tardaría en pasarla a .NET sin modificar lo que hay hecho -dijo ella, en ese momento la opción lubricante comenzó misteriosamente a tomar dimensiones desproporcionadas en mi cerebro. No quería migrar una aplicación, quería que en poco tiempo, la actual aplicación en ASP 3.0 aparentase estar hecha en ASP.NET.&lt;/p&gt;&lt;p&gt;-De acuerdo -dije con la chulería del que aún ha de comer la tierra.&lt;/p&gt;&lt;p&gt;En seguida me puse manos a la obra. Se me ocurrió comenzar por lo más obvio, desentrañar la aplicación, destriparla, mirar cada uno de sus recovecos hasta digerir hasta el último uso funcional posible y su última línea de programación como si de una amante caprichosa y exigente se tratase. En qué hora. Encontré lo que esperaba encontrar en una aplicación de este tipo: un caos organizado para el que la hizo, un caos sin remedio alguno para el nuevo que observa el código. Este tipo de aplicaciones como todos sabemos suelen llevar a formas poco elegantes de mantener un control y una consistencia en el código. La aplicación funciona, tres puntos colega, pero no hablemos del pobre iluso nuevo que tiene que comprender su funcionamiento interno. &lt;/p&gt;&lt;p&gt;Mi compañero se sabe de memoria cada módulo programado por él, me cuenta lo tediosa e insoportable que le resultan algunas tareas en ASP clásico, que está deseando que lo pasemos ya a .NET y le comprendo. Html obsoleto (según VS2005) con scripts de cliente y servidor&amp;nbsp;embebidos por todos los sitios, solo la madre que echó ese código al mundo sabe de dónde sale cada cosa, 578&amp;nbsp;archivos e inclusiones&amp;nbsp;llenas de odio y rencor hacia el desarrollador con despiadadas directivas &amp;nbsp;&amp;lt;--! INCLUDE ... que se regodean de tu desgracia y&amp;nbsp;consiguen que te pierdas incluso pensando en una sola dimensión y apuntándolo todo en una libreta o en el notepad. Por no hablar de miles y miles de funciones en javascript cliente con código para servidor incluídos dentro de ellos sembrando la muerte y la destrucción por doquier &lt;img src="http://labloguera.net/emoticons/emotion-7.gif" alt="Tongue Tied" /&gt;. &lt;/p&gt;&lt;p&gt;Aún así decido intentarlo pues para eso me pagan, de todas formas&amp;nbsp;no me acobardo con estas cosas y me gustan los retos: voy a hacer que funcione en .NET sin cambiar el código ya hecho. No sabría hasta que punto de altivez alcanzaban estas palabras hasta que los coscorrones contra las paredes se hicieron tan frecuentes que acabé con todas las reservas de betadine y vendas del servicio de enfermería. Gente que os gusta programar: ojo con vuestra salud mental.&lt;/p&gt;&lt;p&gt;Pienso un poquito y opto por&amp;nbsp;comenzar cambiando la extensión de los archivos de .asp a .aspx, en teoría esto funciona, ya lo había hecho antes y funcionaba en proyectos pequeñitos, y aquí... Aquí no, de ninguna manera, el servidor no tragaba, ASP.NET necesita en el código cosas distintas que no tenía esta aplicación .NET, recibo constantemente errores del tipo: Function Page_Load() está repetida..., hum, me temo que no, indago, investigo, enteleto, se trataba de los includes ya mencionados. Toda una mañana para hacer el árbol de includes, consigo quitar casi todas las redundancias y había menos errores pero comienzan otros: error en línea: Server.CreateObject("OLEDB.Connection") objeto no encontrado. Anda, perfecto, faltan librerías, otro rato para ver de donde las saco y las incluyo, todo parecía ahora ir como la seda. Iluso. Otra nueva: no encuentro la ruta a tal archivo y blablabla. Otra más: &lt;font color="#ff0000"&gt;var strOpcionPadre = "&amp;lt;%=Session("OpcionPadre")%&amp;gt;"; declaration expected. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;&lt;font color="#000000"&gt;Me empezaba a entrar la risa de la no cordura, pero nunca hay que desesperar, observo paciente,&amp;nbsp;sigo el hilo, una variable te lleva a la siguiente, pues no, no está declarada, pero está el error,&amp;nbsp;esto es&amp;nbsp;algo tan abstracto como el olor del color verde. Intento ir por otro lado y corregir otras cosas... Era algo que tarde o temprano esperaba encontrar, un compañero desarrollador de la guía Campsa ya me lo advirtió, que no llegaría a nada, que antes podríamos ver a Pocholo en el Proyecto Hombre. Al final conseguí perder bastantes días y horas dando por hecho que realizar la traducción de la aplicación tal y como estaba hecha es cuando menos la mayor chapuza (con permiso del &lt;a class="" title="puente Tacoma en Washington" href="http://urbanity.blogsome.com/2006/06/21/el-puente-de-tacoma-narrows/"&gt;puente Tacoma en Washington&lt;/a&gt;) del siglo XX y XXI. Caso perdido y a otra cosa. Así son los restos, a veces se gana, otras no.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Mi compañero y yo hemos convencido a la jefa para comenzar desde cero un proyecto en ASP.NET mientras él sigue programando los nuevos módulos que pidan a la antigua usanza hasta que podamos hacerlo todo en lo nuevo, aunque ya no se trataba de convencer, se trataba de&amp;nbsp;no haber más remedio&amp;nbsp;pues el estudio&amp;nbsp;no funcional&amp;nbsp;ya lo había hecho yo después de pegármela con esto. Dentro de un par de días comenzaremos con la tarea de ingeniería inversa que le haremos a la aplicación ASP 3.0 de donde sacaremos en poco tiempo el análisis funcional.&amp;nbsp;Seguiremos por&amp;nbsp;realizar todos los diagramitas pertinentes que antes no existían según la métrica usada en la compañía, pues debió ser así, limpieza y orden, salud mental, para nostros y para los que vengan detrás. &lt;/p&gt;&lt;p&gt;Utilizaremos además una guía para ASP.NET de forma que no olvidemos poner en la aplicación cualquier cosa que pudiera sernos útil y que nos ahorre trabajo a nosotros y al servidor, que dé seguridad, también usaremos&amp;nbsp;javascript o ajax si nos vemos fuertes, el justo y necesario para no&amp;nbsp;hacer mas postbacks&amp;nbsp;que los que hagan falta,&amp;nbsp;así como diseñar las tres capitas, un conector para extraer datos de SAP mediante XML y otro para Oracle 9, -y si puede ser, evitar el uso de DataSet- todo esto es muy bonito dicho así, esperamos tener suerte y que mi primer proyecto real en el mundo laboral se lleve a cabo con éxito. Tendréis pues, segunda parte.&lt;/p&gt;&lt;p&gt;Alfonso Clemente.&lt;/p&gt;&lt;p&gt;PD: puede que alguien se haya encontrado en una situación similar y haya salido airoso,&amp;nbsp;me gustaría conocer su experiencia migrando una aplicación y como escapó de todos los errores.&lt;/p&gt;&lt;img src="http://labloguera.net/aggbug.aspx?PostID=10758" width="1" height="1"&gt;</description><category domain="http://labloguera.net/blogs/aclemente/archive/tags/Web-Based+Applications/default.aspx">Web-Based Applications</category></item><item><title>No escribas c&amp;#243;digo para la capa de datos. Gen&amp;#233;ralo autom&amp;#225;ticamente.</title><link>http://labloguera.net/blogs/aclemente/archive/2007/11/07/no-escribas-c-digo-para-la-capa-de-datos-gen-ralo-autom-ticamente.aspx</link><pubDate>Wed, 07 Nov 2007 15:07:00 GMT</pubDate><guid isPermaLink="false">982ae711-7ac7-407a-b99e-5d5a6cc12179:8505</guid><dc:creator>A.Clemente</dc:creator><slash:comments>6</slash:comments><comments>http://labloguera.net/blogs/aclemente/comments/8505.aspx</comments><wfw:commentRss>http://labloguera.net/blogs/aclemente/commentrss.aspx?PostID=8505</wfw:commentRss><description>&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; Un Generador de Código para .NET&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;p&gt;Permitidme presentar&amp;nbsp;una herramienta que probablemente os ahorrará sangre, sudor y lágrimas a la hora de escribir vuestras capas de datos en&amp;nbsp;las aplicaciones .NET Framework 2.0 tanto Web como Escritorio que tantas horas de trabajo llevan. Olvidaos de horas de sufrimiento implementando las clases capaces de acceder y modificar vuestra base de datos.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Se trata de&amp;nbsp;&lt;a class="" target="_blank" href="http://www.sharppower.com/Default.aspx?path=products/download"&gt;RapTier&lt;/a&gt;, producto nada novedoso pues existe desde que en .NET se comenzó fraguar el paradigma de la programación a capas&amp;nbsp;y&amp;nbsp;actualmente en su versión 1.4.&amp;nbsp;&amp;nbsp;Podréis comprobar como las tablas de vuestra base de datos SQL Server, Oracle,&amp;nbsp;Access y otras tantas&amp;nbsp;son, de forma casi mágica, transformadas en una serie de clases escritas en C# o VB con apenas media docena de clics. &lt;/p&gt;&lt;p&gt;Me&amp;nbsp;impresionó gratamente&amp;nbsp;la claridad con la que se generan las clases que emulan de forma no persistente las tablas de la base de datos, las que realizan colecciones de objetos de las clases de las tablas así como&amp;nbsp;las que implementan y manejan las cadenas de conexión necesarias y las instrucciones SQL. También es impresionante la claridad y seguridad de un código optimizado y bien construido.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a target="_blank" href="http://labloguera.net/photos/aclemente/picture8520.aspx"&gt;&lt;img border="0" src="http://labloguera.net/photos/aclemente/images/8520/original.aspx"&gt;&lt;/a&gt;&lt;a target="_blank" href="http://labloguera.net/photos/aclemente/picture8508.aspx"&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a target="_blank" href="http://labloguera.net/photos/aclemente/picture8509.aspx"&gt;&lt;img border="0" src="http://labloguera.net/photos/aclemente/images/8509/thumb.aspx"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;RapTier&amp;nbsp;también es capaz de generar opcionalmente una sencilla interfaz de escritorio para que compruebes el funcionamiento del código y saques ideas para realizar la tuya, siendo ésta capaz de ejecutar las cuatro instrucciones SQL más generales sobre las tablas: SELECT, INSERT, UPDATE y DELETE.&lt;/p&gt;&lt;p&gt;Sin embargo, no todo el monte es orégano y RapTier no hará todo el trabajo por tí, en tu mano queda controlar cosas como la encriptación de las cadenas de conexión en el web.config y otros temas de seguridad que pudieras necesitar, como puede ser controlar el número de conexiones simultáneas a la base de datos y las encriptaciones de los passwords.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Para ello, es&amp;nbsp;recomendable&amp;nbsp;modificar a tu gusto el código generado y una vez hecho esto y estando seguro de que es correcto, generar las .dll correspondientes para, acto seguido, adjuntarlas a tu proyecto y poder utilizarlas como una API&amp;nbsp;cualquiera,&amp;nbsp;siendo ésta una práctica mucho más elegante que añadir todos los archivos generados a tu proyecto directamente. &lt;/p&gt;&lt;p&gt;Finalmente, sólo queda que utilices el namespace&amp;nbsp;de las dll&amp;nbsp;generadas y cuyo nombre has elegido tú, para adaptarlo a tu lógica de negocio o interfaz&lt;/p&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp;Un ejemplo de uso.&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;p&gt;Puesto que RapTier es tremendamente sencillo de manejar, me limitaré a explicar los artefactos que su uso sobre una base de datos genera, pues esto&amp;nbsp;puede ser lo más engorroso de comprender.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;1.- Construir la base de datos.&lt;/b&gt; &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;A modo de ejemplo, dispongo de esta base de datos:&lt;/p&gt;&lt;p&gt;&lt;img border="0" src="http://labloguera.net/photos/aclemente/images/8517/original.aspx"&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;2.- Abrirla y generar código con RapTier.&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Como se puede comprobar, RapTier permite elegir entre casi todos los tipos de bases de datos disponibles. Ahorrare comentarios pues su manejo es trivial.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a target="_blank" href="http://labloguera.net/photos/aclemente/picture8518.aspx"&gt;&lt;img border="0" src="http://labloguera.net/photos/aclemente/images/8518/original.aspx"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a target="_blank" href="http://labloguera.net/photos/aclemente/picture8517.aspx"&gt;&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp; 3.- Ver resultados.&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;RapTier ha creado una carpeta en Mis Documentos con un nombre un tanto extraño &lt;img src="http://labloguera.net/emoticons/emotion-40.gif" alt="Hmm" /&gt;, dentro de ella podremos encontrar una solución&amp;nbsp;de Visual Studio 2003 que podremos abrir sin problemas con VS 2005.&lt;/p&gt;&lt;p&gt;Navegando por el proyecto podremos ver &lt;b&gt;cuatro clases para cada tabla&lt;/b&gt;. &lt;/p&gt;&lt;p&gt;Por ejemplo, para la tabla Articulos, encontraremos las clases:&lt;/p&gt;&lt;p&gt;&lt;b&gt;1.- ArticulosCollection.cs&lt;/b&gt; ---&amp;gt; Donde pondremos la coleccion de articulos para añadir a la BD.&lt;/p&gt;&lt;p&gt;&lt;b&gt;2.-ArticulosCollectionBase.cs&lt;/b&gt; ---&amp;gt; Donde tenemos los métodos con las consultas e inserciones para las colecciones, si os fijáis en el código, no veréis por ningún lado las instrucciones SQL pues vienen implementadas por el código manejado.&lt;/p&gt;&lt;p&gt;&lt;b&gt;3.-ArticulosRow&lt;/b&gt; ---&amp;gt; Esta clase implementa los atributos que tiene la tabla y es un artículo propiamente dicho.&lt;/p&gt;&lt;p&gt;&lt;b&gt;4.-ArticulosCollectionBase.cs&lt;/b&gt; ---&amp;gt; Es análoga a la segunda clase, pero para manejar un sólo artículo.&lt;/p&gt;&lt;p&gt;También encontraremos otras dos clases cuyo nombre es el mismo que la carpeta del proyecto, en estas clases se almacena y se realiza la conexion.&lt;/p&gt;&lt;p&gt;Además, si opcionalmente hemos elegido crear la interfaz, tendremos para ésta&amp;nbsp;otro proyecto dentro de la solución que no explicaré. Para despedirme, dejo aquí una captura&amp;nbsp;de la solución&amp;nbsp;funcionando. Feliz prueba de RapTier a quien la haga!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a target="_blank" href="http://labloguera.net/photos/aclemente/picture8519.aspx"&gt;&lt;img border="0" src="http://labloguera.net/photos/aclemente/images/8519/original.aspx"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Alfonso Clemente.&lt;/p&gt;&lt;img src="http://labloguera.net/aggbug.aspx?PostID=8505" width="1" height="1"&gt;</description><category domain="http://labloguera.net/blogs/aclemente/archive/tags/.NET+es+_26002300_250_3B00_til/default.aspx">.NET es &amp;#250;til</category></item><item><title>MS Visual Studio 2005 Training Kits (Certificaciones de Microsot)</title><link>http://labloguera.net/blogs/aclemente/archive/2007/10/08/ms-visual-studio-2005-training-kits-certificaciones-de-microsot.aspx</link><pubDate>Mon, 08 Oct 2007 15:20:00 GMT</pubDate><guid isPermaLink="false">982ae711-7ac7-407a-b99e-5d5a6cc12179:7890</guid><dc:creator>A.Clemente</dc:creator><slash:comments>18</slash:comments><comments>http://labloguera.net/blogs/aclemente/comments/7890.aspx</comments><wfw:commentRss>http://labloguera.net/blogs/aclemente/commentrss.aspx?PostID=7890</wfw:commentRss><description>&lt;p&gt;Desde mi experiencia como profesional desarrollador .NET versaré el tema de este artículo sobre la utilidad de conseguir las certificaciones de desarrollador Microsoft que acreditan a su poseedor como profesional cualificado en el desarrollo sobre Framework 2.0. &lt;/p&gt;&lt;p&gt;Con el rápido avance dado en esta tecnología en estos últimos años, cada vez son más las empresas y consultoras que aprecian el valor añadido al currículum de un aspirante la posesión de alguna de estas certificaciones. Por el momento podemos encontrar al alcance de todos hasta &lt;b&gt;7 títulos de certificación&lt;/b&gt; que enumeraré a continuación:&lt;/p&gt;&lt;p&gt;1.- &lt;b&gt;MCTS: Microsoft Certified Technology Specilalist&lt;/b&gt;. Exámenes &lt;b&gt;70-536&lt;/b&gt; (básico),&lt;b&gt;70-528&lt;/b&gt; (web), &lt;b&gt;70-526&lt;/b&gt; (windows)&amp;nbsp;y &lt;b&gt;70-529&lt;/b&gt; (enterprise)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Este conjunto de examenes, lanzados en Septiembre de 2006, acreditan a su poseedor el conocimiento de la tecnología desde sus perspectivas más básicas y más generales. Así pues, el aspirante deberá comenzar por el 70-536 el cual le dará la acreditación suficiente para acceder a los subsiguientes.&lt;/p&gt;&lt;p&gt;2.- &lt;b&gt;MCPD: Microsoft Certified Professional Developer&lt;/b&gt;. Exámenes &lt;b&gt;70-547&lt;/b&gt; (web), &lt;b&gt;70-548&lt;/b&gt; (windows) y &lt;b&gt;70-549&lt;/b&gt; (enterprise)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Este segundo conjunto, disponibles desde Noviembre de 2006 y a los que sólo se accede mediante la posesión del 536 (básico)&amp;nbsp;más alguno del primer conjunto, acreditan a su poseedor como profesional en diseño y desarrollo de aplicaciones tanto web, windows y empresariales.&amp;nbsp;Es decir,&amp;nbsp;que para tener el 547 es necesario tener el 536 y el 528, para tener el 548 es necesario poseer el 536 y el 526 y para tener el 549 es necesario ser titular del 536 y el 529.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;¿Cómo certificarse? &lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Para ello hay que solicitar a alguna academia adherida a los planes de certificación la voluntad de hacer el examen y abonar los 140 € del coste por examen. En mi caso, la academia elegida por mi empresa (que me facilita las certificaciones sin hacerme cargo económico alguno) está en la calle Clara del Rey, 14 28002 Madrid, parada de metro Cartagena, teléfono 91 510 23 90. Lo siento, pero el nombre en estos momentos no lo recuerdo ni se dispone de dirección web donde obtener más información.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;¿En qué consiste el examen?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Para cada examen habrá que responder correctamente al 70% de las preguntas de un test de 45. Al comenzar se selecciona en qué lengua se quiere hacer el examen (inglés o español) y en qué lenguaje de programación (VB,C# o C++). El sistema permite la revisión de las preguntas una vez finalizado así como navegar hacia atrás y hacia adelante. Una respuesta mala no resta puntuación, luego es conveniente contestar a todo.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Se dispone de 2 horas para su terminación,&amp;nbsp;2 y media si la lengua en la que se hace el examen no es la natural del aspirante. Tras ello, la correción y la obtención del título en caso de estar aprobado es inmediata.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;¿Cómo&amp;nbsp;puedo obtener la formación necesaria?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Vía rápida&lt;/b&gt;: conseguir documentos con las preguntas del test (alrededor de unas 350 de las cuales escogen 45 para el test), de esta forma se puede llegar al examen con mucha seguridad pues las respuestas probablemente ya le suenen bastante al aspirante y las responderá sin apenas razonamiento. En mi caso, la empresa me dio los tests modelo con los que comenzar a estudiar las preguntas.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Vía lenta&lt;/b&gt; (más honrada pero con menos adeptos): El aspirante estudia por su cuenta o se matricula en alguna academia o trabaja para alguna empresa&amp;nbsp;donde le formarán sobre la tecnología. En mi caso, la formación la he recibido por cuenta de la empresa que además me ha dotado de completos manuales escritos por MVP's de todo el mundo.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;¿Es significativo el número de suspensos?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; No. Es muy importante no tener miedo a estos examenes e ir con seguridad, pues la tasa de suspensos es bastante baja.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Conclusiones:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Como habréis podido notar según lo que he comentado, estar certificado no acredita necesariamente ser un buen conocedor o desarrollador en&amp;nbsp;la tecnología ya que este sistema de examenes mediante test con preguntas seleccionadas permite al aspirante certificarse sin haber recibido una adecuada formación. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Por esto puede que alguien piense que certificarse es un timo (y tal vez no le falte razón en parte) pero hay que darse cuenta de que gracias a esto, tendremos más posibilidades de optar a un puesto de trabajo, y, que al estar certificados, nos veremos obligados a estar a la altura de las circunstancias y a adquirir el conocimiento necesario para demostrar que nos merecemos ese título.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; En cualquier caso, yo también soy partidario y siempre lo seré de la máxima "la experiencia es un grado" y que estos los títulos por sí mismos&amp;nbsp;no dan, pero que sin embargo sí ayudan.&lt;/p&gt;&lt;p&gt;Alfonso Clemente.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;font face="Comic Sans MS" color="#0070c0" size="2"&gt;&lt;span style="FONT-SIZE:11pt;COLOR:#0070c0;FONT-FAMILY:'Comic Sans MS';"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://labloguera.net/aggbug.aspx?PostID=7890" width="1" height="1"&gt;</description><category domain="http://labloguera.net/blogs/aclemente/archive/tags/Windows-Based+Applications/default.aspx">Windows-Based Applications</category><category domain="http://labloguera.net/blogs/aclemente/archive/tags/Web-Based+Applications/default.aspx">Web-Based Applications</category></item></channel></rss>