<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6435253965357282270</id><updated>2012-02-09T02:25:05.664-08:00</updated><category term='Principal'/><category term='Experiencia'/><category term='Anecdotas'/><category term='PowerBuilder'/><category term='Firebird'/><category term='UNS'/><category term='Java'/><category term='Matlab'/><category term='Reflexiones'/><category term='Linux'/><category term='C/C++'/><category term='Delphi'/><title type='text'>Diario de un Desarrollador</title><subtitle type='html'>Blog sobre Experiencias Profesionales y Temas Técnicos de Sistemas e informática.
Ing. Oscar Zelada Pozo</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-1437377023658255870</id><published>2010-07-07T16:41:00.000-07:00</published><updated>2010-07-07T17:13:41.271-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><title type='text'>Cliente FTP  - Full Lazarus</title><content type='html'>En la empresa donde laboro se me presento la necesidad de desarrollar un cliente FTP para apoyar a los clientes subir archivos y descargarlos para realizar migraciones de información de un sistema a Otro.&lt;br /&gt;&lt;br /&gt;Decidí desarrollar el aplicativo en Lazarus el clon de delphi en el mundo de software Libre. Para esto utilice los componentes lnet (Lightweight Networking Library) utilizando, específicamente el la clase TLFTPClient y el desarrollo fe muy sencillo. Lo único que hay que instalar los componentes en lazarus pero hoy por hoy es algo bastante sencillo.&lt;br /&gt;Aqui unas capturas de pantalla en Lazarus.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_74kp4h888ZA/TDUWe9M3o9I/AAAAAAAAAjQ/B4jgUHRw0TY/s1600/lazarus1.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://2.bp.blogspot.com/_74kp4h888ZA/TDUWe9M3o9I/AAAAAAAAAjQ/B4jgUHRw0TY/s320/lazarus1.jpg" alt="" id="BLOGGER_PHOTO_ID_5491320041728615378" border="0" /&gt;&lt;/a&gt;Aqui unas capturas del Aplicativo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_74kp4h888ZA/TDUXCsOlQSI/AAAAAAAAAjY/LJKdQAAe3L4/s1600/clienteftp1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 295px; height: 320px;" src="http://3.bp.blogspot.com/_74kp4h888ZA/TDUXCsOlQSI/AAAAAAAAAjY/LJKdQAAe3L4/s320/clienteftp1.JPG" alt="" id="BLOGGER_PHOTO_ID_5491320655647686946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El programa utiliza tambien el componente trayicon para mostrarce en la barra de estado y efectuar su trabajo segun los tiempos programados que se les especifique en el archivo ini.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_74kp4h888ZA/TDUXw31-BPI/AAAAAAAAAjo/RcLl5bxBQdM/s1600/clienteftp2.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 112px;" src="http://1.bp.blogspot.com/_74kp4h888ZA/TDUXw31-BPI/AAAAAAAAAjo/RcLl5bxBQdM/s320/clienteftp2.JPG" alt="" id="BLOGGER_PHOTO_ID_5491321449039660274" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-1437377023658255870?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/1437377023658255870/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=1437377023658255870' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/1437377023658255870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/1437377023658255870'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2010/07/cliente-ftp-full-lazarus.html' title='Cliente FTP  - Full Lazarus'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_74kp4h888ZA/TDUWe9M3o9I/AAAAAAAAAjQ/B4jgUHRw0TY/s72-c/lazarus1.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-770641750405872647</id><published>2010-03-04T11:25:00.000-08:00</published><updated>2010-03-04T13:16:15.281-08:00</updated><title type='text'>FreePascal y Lazarus el Renacer</title><content type='html'>Finales del año 2009 empecé a desarrollar un proyecto interesante el cual consistía en desarrollar un reproductor multimedia  que tenga la lista de reproducción en una base de datos y se realicen actualizaciones periódicas desde un servidor remoto. Una de las condiciones del proyecto es que se desarrolle íntegramente utilizando software libre.&lt;br /&gt;Mi experiencia como desarrollador me indico que la plataforma de desarrollo podría ser la siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Motor de base de datos Firebird&lt;/li&gt;&lt;li&gt; Entorno de desarrollo del reproductor multimedia Qt basado en libvlc&lt;/li&gt;&lt;li&gt; Actualización de la base de datos QT&lt;/li&gt;&lt;li&gt; Descarga de videos , se desarrollará en QT&lt;/li&gt;&lt;li style="font-weight: bold;"&gt; Interfaz de creación de la programación Freepascal  y  Lazarus.&lt;/li&gt;&lt;/ul&gt;En este articulo me centraré principalmente en el desarrollo de la interfaz del módulo de creación y mantenimiento de la base de datos desarrollado en Freepascal y Lazarus.&lt;br /&gt;Estuve tentado a utilizar Java para el desarrollo de esta interfaz pero lo que necesitaba era optimización de recursos y velocidad en el desarrollo, no era necesario levantar  todo el jdk para cargar todo el aplicativo, además valgan verdades una aplicación desktop Java siempre es más lenta que una aplicación nativa.&lt;br /&gt;He seguido de cerca el proyecto Lazarus desde que apareció y la verdad que las versiones antes de las 0.9 eran versiones muy inestables y casi no se podía trabajar con ellas, gratamente me sorprendí al testear la versión 0.98 la cual es una versión estable y se puede trabajar con las ventajas del compilador  freepascal  de ser multiplataforma  ejecutándose en Windows, Linux, freeBSD, etc. La productividad de freepascal es bastante buena pudiendo desarrollar interfaces para mantenimiento de base de datos sin mucho esfuerzo y en poco tiempo.&lt;br /&gt;Los componentes para conexión de base de datos son bastante buenos y permiten el desarrollo compatible con Delphi.&lt;br /&gt;Todo esto me decidio que el desarrollo de esta parte del proyecto se desarrollaría con Lazarus y Firebird como base de datos, hablar de las bondades de Firebird estaría de más hay varios artículos al respecto en este Blog.&lt;br /&gt;Una de las cosas que me llamó la atención fue el tamaño del ejecutable un poco grande lo cual se  justifica  pues tiene enlazado de manera estática las librerías , dando independencia al ejecutable, este al inicio no se valora pero cuando el ejecutable se tiene que  correr en diferentes distribuciones vale la pena esos MB de mas, antes de distribuir finalmente el aplicativo este se puede reducir de tamaño quitando la información de depuración y reduciendo este con programas como UPX, finalmente el resultado lo vale.&lt;br /&gt;Otra cosa que me sorprendió fue el soporte de drag and drop y la implementación de controles shelllistview y shelltreeview de manera muy sencilla.&lt;br /&gt;&lt;br /&gt;Una tremenda alegría al comunicar   esta noticia a todos los desarrolladores amantes de pascal !ya contamos con un entorno estable, productivo y multiplataforma! &lt;span style="font-weight: bold;"&gt;LAZARUS&lt;/span&gt;.&lt;br /&gt;Mucha gente en el mundo del desarrollo creia que el lenguaje pascal había muerto  el nombre Lazarus lo dice todo&lt;span style="font-weight: bold;"&gt; "FreePascal y Lazarus el Renacer&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Bueno, a continuación unas capturas de pantallas, ya que las imágenes hablan más que mil palabras:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_74kp4h888ZA/S5AfbBOXenI/AAAAAAAAAig/tILfZOCLhto/s1600-h/sistema1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://2.bp.blogspot.com/_74kp4h888ZA/S5AfbBOXenI/AAAAAAAAAig/tILfZOCLhto/s320/sistema1.png" alt="" id="BLOGGER_PHOTO_ID_5444886498536553074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_74kp4h888ZA/S5Af2k_lQbI/AAAAAAAAAio/LX0AHUUVwOg/s1600-h/sistema3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://2.bp.blogspot.com/_74kp4h888ZA/S5Af2k_lQbI/AAAAAAAAAio/LX0AHUUVwOg/s320/sistema3.png" alt="" id="BLOGGER_PHOTO_ID_5444886971994685874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_74kp4h888ZA/S5AgBKKu3oI/AAAAAAAAAiw/hEe4x20pNz4/s1600-h/sistema5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://1.bp.blogspot.com/_74kp4h888ZA/S5AgBKKu3oI/AAAAAAAAAiw/hEe4x20pNz4/s320/sistema5.png" alt="" id="BLOGGER_PHOTO_ID_5444887153772256898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_74kp4h888ZA/S5AgVa5z8rI/AAAAAAAAAi4/XBIGUV3ursg/s1600-h/sistema7.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://3.bp.blogspot.com/_74kp4h888ZA/S5AgVa5z8rI/AAAAAAAAAi4/XBIGUV3ursg/s320/sistema7.png" alt="" id="BLOGGER_PHOTO_ID_5444887501862073010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_74kp4h888ZA/S5AgePJS4OI/AAAAAAAAAjA/ROwY1KQEF7I/s1600-h/sistema8.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://1.bp.blogspot.com/_74kp4h888ZA/S5AgePJS4OI/AAAAAAAAAjA/ROwY1KQEF7I/s320/sistema8.png" alt="" id="BLOGGER_PHOTO_ID_5444887653324611810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pequeño detalle me olvidaba todo esta corriendo sobre fedora 12 Constantine aca una captura.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_74kp4h888ZA/S5AjCKVDtRI/AAAAAAAAAjI/hEIhopRA8Zs/s1600-h/sistema9.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://2.bp.blogspot.com/_74kp4h888ZA/S5AjCKVDtRI/AAAAAAAAAjI/hEIhopRA8Zs/s320/sistema9.png" alt="" id="BLOGGER_PHOTO_ID_5444890469530318098" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-770641750405872647?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/770641750405872647/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=770641750405872647' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/770641750405872647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/770641750405872647'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2010/03/freepascal-y-lazarus-el-renacer.html' title='FreePascal y Lazarus el Renacer'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_74kp4h888ZA/S5AfbBOXenI/AAAAAAAAAig/tILfZOCLhto/s72-c/sistema1.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-3293324019089511755</id><published>2009-04-15T17:56:00.001-07:00</published><updated>2009-05-16T09:24:19.800-07:00</updated><title type='text'>¿Qué les pasa a los profesionales de sistemas?</title><content type='html'>Después de haber laborado en diferentes empresas peruanas en los últimos 10 años, en las cuales tuve la  oportunidad de conocer a muchos profesionales de sistemas, de universidades nacionales y particulares del país.&lt;br /&gt;En la mayoría de los puestos de trabajo que desempeñe muy a menudo fui responsable de  realizar las entrevistas de selección del personal de la empresa.&lt;br /&gt;Haber ejercido la docencia universitaria, me dio la oportunidad de compartir experiencias con los futuros profesionales de sistemas, obteniendo de esta manera una visión más amplia para analizar este problema.&lt;br /&gt;&lt;br /&gt;Lo primero que pude observar es que la gran mayoría de ellos tienen una actitud facilista y no tienen la cualidad de ser autodidactas.  Las soluciones mediocres son las que suelen implementar en la mayoría de los casos, la falta de ambición por el aprendizaje y la dejadez demuestran hoy por hoy, el bajo nivel del profesional de sistemas en el Perú.&lt;br /&gt;Me pregunto &lt;span style="font-weight: bold;"&gt;¿Esto se deberá a cuestiones de formación?, ¿Al medio donde se desenvuelve el profesional ? o ¿Son cuestiones innatas de cada persona?.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Creo que los factores preponderantes son: la formación académica y el ámbito social del individuo, el grupo con el que se socializara juega un papel importante ya que los hábitos del grupo tienden a formar parte del individuo, así como la formación académica repercutirá sobre el futuro profesional de sistemas.&lt;br /&gt;&lt;br /&gt;En el Perú la proliferación de universidades nacionales y particulares sin un control adecuado han contribuido a una formación deficiente de los profesionales de sistemas, existen en el medio Universidades en las cuales no existe competencia para el ingreso, sólo basta con presentarse y el ingreso está asegurado esto hace que los exámenes de admisión no filtren a los postulantes, recibiendo a postulantes sin una base adecuada.&lt;br /&gt;&lt;br /&gt;Es curioso, en una oportunidad escuché a un director de escuela de una universidad particular decir que &lt;span style="font-weight: bold;"&gt;no podían exigir a los estudiantes, porque sino los estudiantes se quejan y luego se retiran, es decir que los alumnos deben pasar los cursos sin aprender, sin el nivel y rigurosidad requerido.&lt;/span&gt;&lt;br /&gt;La educación se ha convertido en un tráfico donde lo único que interesa es captar alumnado, sin brindar el nivel y exigencia requerido que garantizaría una educación de calidad y por lo tanto profesionales competentes que enfrenten los retos de hoy y que puedan contribuir con el desarrollo del País.&lt;br /&gt;A las actuales generaciones de estudiantes no les gusta leer ni esforzarse, pertenecen a una generación que cuenta con muchas facilidades con respecto a la información.  Antes no se contaba con ello, pero sin embargo hoy no se hace un buen uso de ello como debiera, la Internet es utilizada como un medio social de distracción en vez de un medio de aprendizaje genuino.&lt;br /&gt;La formación de objetivos y personalidad de los estudiantes de Sistemas no se forma debido al facilismo habituado en ellos por aprobar los cursos, un profesor es bueno si no exige, es allí donde están contentos los estudiantes, salvo honrosas excepciones.&lt;br /&gt;&lt;br /&gt;La verdad me he sorprendido como existen alumnos en VII y VIII ciclo de sistemas que no conocen un lenguaje de programación como por ejemplo:  C o Pascal, y cuando les preguntaba que les han enseñado, ellos me contestaban que Visual Basic.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;¿Porque es perjudicial aprender a programar con Visual Basic?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esto me refiero a los profesionales de sistemas en particular, Analicemos el origen de Visual Basic, se remonta al Basic el que fue creado para aficionados y no desarrolladores, pues hay muchas cosas que te limita el lenguaje. Aprender a diseñar formularios con colorcitos y animaciones distorsiona el objetivo fundamental del aprendizaje de la programación. Hoy se cree que programar es poner formularios coloridos y animaciones, descuidando la esencia que es lo que está dentro de ese formulario.&lt;br /&gt;Analicemos en que están desarrollados la mayoría de &lt;span style="font-weight: bold;"&gt;aplicativos en el mundo, nos centraremos que la gran mayoría de aplicaciones que utilizamos en el día a día esta desarrollado en C/C++, nuestros procesadores de texto, editores gráficos, sistemas operativos, servidores de base de datos, lenguajes de programación, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Desde mi punto de vista el alumno de sistemas debería iniciarse con un lenguaje base como C o Pascal los cuales le darán los sólidos cimientos que le ayudarán en el futuro a aprender cualquier otro lenguaje de programación, es mucho más fácil para un programador de &lt;span style="font-weight: bold;"&gt;C o Pascal aprender Visual Basic, Java o PowerBuilder que lo contrario. &lt;/span&gt;En la Universidad se deberían enseñar las bases y fundamentos que permitirán guiar al futuro profesional de sistemas, el alumno deberá comprender el fundamento de como funcionan las cosas para que con cualquier problema que se le presente, él lo pueda solucionar con las bases aprendidas.&lt;br /&gt;&lt;br /&gt;Tener metas lo más ambiciosas posibles, es algo que la mayoría de estudiantes de estas generaciones están perdiendo, solo se contentan con hacer lo que le pida y hasta menos, el resultado ya se conoce, proyectos y trabajos mediocres.&lt;br /&gt;Todo está en  lo que quieran hacer, a dónde se quiera llegar, no es lo mismo hacer una vasija de barro grotesca que una hermosa vasija terminada, enlucida y pintada, lo primero se podrá hacer rápido, lo segundo requerirá de más esfuerzo y dedicación obteniendo mejores resultados. ¿Existe una diferencia? Claro que la existe.&lt;br /&gt;&lt;br /&gt;Frase conformistas de muchos profesionales, como por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Para qué  esforzarme más, si igual me van a pagar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Mejor mañana lo hacemos con más calma (y el mañana nunca llega o llega                                    después de meses)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Yo ya no estoy para esforzarme&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Pon eso así, haz el programa como sea ya mañana se verá&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• De a pocos, de a pocos (jajaja y nunca se termina)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Para qué aprender C o Linux si nunca los voy a Utilizar.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Otro de los grandes errores que escucho es: “terminaré y seré Jefe de Proyectos o Arquitecto de software”, si tienes tu padrino de seguro lo serás. Pero la gran mayoría no tiene padrinos y ¿Cómo dirigir la construcción de un edificio si no se sabe como poner un ladrillo?, ¿Querer crear un edificio y no saber como se ponen las columnas?&lt;br /&gt;&lt;br /&gt;En otros países se comienza de la siguiente manera:&lt;br /&gt;&lt;br /&gt;• &lt;span style="font-weight: bold;"&gt;Primero: serás programador Junior (por lo menos 2 años)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Segundo: serás Programador Senior (por Lo menos 2 años)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Tercero: serás Analista Junior (por lo menos 2 años)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Cuarto: serás Analista Senior (por lo menos 2 años)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Serás Jefe de Proyecto (10 grandes proyectos de software)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Serás Arquitecto de Software &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora ya sabemos el porqué muchos proyectos fracasan, se escuchan casos en los cuales se asume la jefatura de un área de sistemas y no se sabe que hacer, los jefes son paseados por los analistas y programadores.  No existe respeto hacia la jefatura.  Un proyecto sin rumbo, sin cabeza, va camino al fracaso.  En realidad la experiencia en diferentes empresas da el conocimiento de cómo se manejan los procesos de las empresas, uno puede saber programar pero sin el conocimiento de los procesos no se sabrá que hacer. Un jefe de proyectos tendrá que ser también un Ingeniero de procesos, ya que se debe tener la capacidad de conocer los procesos y mejorarlos, eso sólo se consigue con la experiencia.&lt;br /&gt;&lt;br /&gt;He escuchado a muchos profesionales decir esto: &lt;span style="font-weight: bold;"&gt;"no se puede hacer mi versión de Visual Basic, no trae el control tal, así que es imposible desarrollarlo". &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Analizando esta actitud de los estudiantes, me percate que se debía en gran medida al entorno donde se estaban desarrollando.&lt;br /&gt;Muchos alumnos me contestaron que la mayoría de docentes no les exigían y les habían creado malos hábitos inconscientemente, como no investigar, no esforzarse en aprender nuevas herramientas o tecnologías, recuerdo que muchos estudiantes me confesaron cosas que me hacían tener vergüenza ajena como por ejemplo:&lt;br /&gt;&lt;br /&gt;• &lt;span style="font-weight: bold;"&gt;No hay problema este trabajo lo hemos copiado muchas veces y solo cambiamos los colores de los formularios el profesor como no sabe nada no nos revisará el trabajo, sólo mirará que es diferente y pondrá buena nota.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Me contaban también, que algún docente solo bajaba el primer link de google y lo imprimía y la clase se transformaba en una clase de redacción, si al docente se le olvidaba su impreso pues cancelaba la clase con cualquier excusa.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Los alumnos realizaban apuestas en las cuales decían: “mira, este trabajo está lleno de sandeces pero se lo presentaré a tal profesor y apuesto que me pondrá buena nota”.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La lista de historias es interminable y existen muchas que son muy jocosas,&lt;br /&gt;&lt;br /&gt;La gran verdad es que al docente universitario Peruano sobre todo en Sistemas &lt;span style="font-weight: bold;"&gt;le falta experiencia, hablan de cosas que nunca han realizado, enseñan sobre sistemas que nunca han desarrollado, enseñan materias que nunca en la práctica las han trabajado,&lt;/span&gt; es algo curioso pero muy cierto, hoy por hoy la gran mayoría de maestrías son un gran engaño, antes un Magister era un profesional más preparado que realizaba verdadera investigación, aportaba con al desarrollo social y tecnológico del país, existen maestrías “combo”, las cuales te brindan dos menciones en lo que más desees y no olvidarnos de las Maestrias-Doctorado en fin de todo se ha dado en la educación Peruana.&lt;br /&gt;&lt;br /&gt;Es lamentable el nivel de muchos &lt;span style="font-weight: bold;"&gt;Pseudo Magisters, que no saben ni lo mínimo de informática, como existe una frase célebre:  “uno puede engañar a los demás pero el mayor pecado es engañarse a uno mismo”,&lt;/span&gt; creer que saben algo y perjudicar a la educación de los estudiantes es una estafa, deberían hacer una mea culpa y esforzarse por mejorar y de esta manera dar lo mejor de ellos a los futuros profesionales de sistemas.&lt;br /&gt;&lt;br /&gt;Uno de los grandes vacíos que existe en la educación universitaria particularmente en ingeniería, es la falta de actitud de muchos estudiantes, entonces los docentes universitario aparte de desarrollar las materias de la curricula deberían preocuparse por enseñar a tener actitudes positivas en la vida, por más falencias que tenga el docente, este debería ser sincero y reconocerlo.&lt;br /&gt;&lt;br /&gt;Luego, deberíamos:&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;Fomentar la cultura del éxito con ejemplos e insistir con actitudes positivas y de mejora continua en el educando.&lt;/li&gt;&lt;li&gt;Fomentar también los hábitos de lectura y aprendizaje constante, incrementando la aplicación de la teoría en la práctica.&lt;/li&gt;&lt;li&gt;Atreverse a soñar y que todo es posible.&lt;/li&gt;&lt;li&gt;Inculcar el habito del auto aprendizaje.&lt;/li&gt;&lt;li&gt;Demostrar actitudes positivas frente a cualquier problema.&lt;/li&gt;&lt;li&gt;Enseñarles a ser pro activos y siempre dar más de lo que a uno le piden.&lt;/li&gt;&lt;li&gt;Ser conscientes de la responsabilidad social y el aporte tecnológico del Profesional con el País. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Recordemos que las personas que cambian el mundo &lt;span style="font-weight: bold;"&gt;son los idealistas, los soñadores, pues si ellos el mundo no hubiera llegado a donde está.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-3293324019089511755?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/3293324019089511755/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=3293324019089511755' title='27 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3293324019089511755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3293324019089511755'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2009/04/que-les-pasa-los-profesionales-de.html' title='¿Qué les pasa a los profesionales de sistemas?'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-1066980971446450552</id><published>2008-11-22T08:56:00.000-08:00</published><updated>2008-11-22T09:05:21.877-08:00</updated><title type='text'>Regresando a Publicar</title><content type='html'>&lt;style type="text/css"&gt; &lt;!--   @page { margin: 2cm }   P { margin-bottom: 0.21cm }  --&gt;  &lt;/style&gt; &lt;p style="margin-bottom: 0cm;"&gt;Hola a todos les agradezco por los buenos comentarios sobre los diferentes artículos, después de ciertos cambios en mi vida profesional regreso con muchas ganas de escribir mas artículos y comentarles mis experiencias.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; Gracias a Todos&lt;br /&gt;&lt;br /&gt;Atte. Ing. Oscar Zelada Pozo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-1066980971446450552?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/1066980971446450552/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=1066980971446450552' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/1066980971446450552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/1066980971446450552'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/11/regresando-publicar.html' title='Regresando a Publicar'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-3854845163184186299</id><published>2008-03-12T16:14:00.001-07:00</published><updated>2008-03-12T16:14:33.482-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflexiones'/><title type='text'>Quien Mato al Ingeniero de Software ?</title><content type='html'>&lt;p&gt;&lt;strong&gt;Este articulo es muy interesante y muestra la problemática real del desarrollo de software, la pregunta es todos deberían estudiar informática?&lt;/strong&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Robert Dewar&lt;/strong&gt;, autor junto &lt;strong&gt;Edmond Schoenberg&lt;/strong&gt; del artículo “&lt;strong&gt;&lt;a href="http://picandocodigo.net/index.php/2008/01/09/estudiando-programacion-%c2%bfdonde-estan-los-ingenieros-de-software-del-manana/"&gt;¿Dónde están los Ingenieros de Software del mañana?&lt;/a&gt;&lt;/strong&gt;” continuó la discusión al respecto en otra entrevista para &lt;a href="http://itmanagement.earthweb.com/career/article.php/11067_3722876_1" target="_blank"&gt;Datamation&lt;/a&gt;. A continuación una traducción general con algunas opiniones de dicha entrevista:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Su argumento se resume así: los programas universitarios de ciencia de la computación no son lo suficientemente rigurosos, y no promueven la resolución de problemas y pensamiento en profundidad. En vez de eso, en un esfuerzo por aumentar el matriculado, los programas se enfocan en un currículo fácilmente accesible, y fallan en preparar a los estudiantes a competir con sus colegas internacionales.&lt;br /&gt;Describe que su artículo fue malinterpretado en el punto en que comenta que la adopción de Java como primer lenguaje en los cursos ha llevado a ésta decadencia. Si bien Dewar entiende que las bibliotecas gráficas de Java permiten a los estudiantes crear software sin entender el código fuente por debajo, éste no es el problema principal.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;“Mucho se trata de ‘hagamos ésto más divertido’. Sabes, ‘la matemática no es divertida, reduzcamos los requerimientos de matemáticas. Los algoritmos no son divertidos, deshagámonos de ellos. Ewww - bibliotecas gráficas son divertidas. Hagamos que la gente juegue con las bibliotecas. Y [olvidarse] todo éste asunto con ‘línea de comando’ - haremos que la gente use interfaces visuales lindas donde puedan apuntar y hacer clic y crear cosas gráficas llamativas y divertirse.”&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Dewar menciona que su casilla de correo se llenó de respuestas positivas a su artículo, de estudiantes así como empleadores. Mucho lectores le han agradecido por hablar de una situación que creen necesario debe ser atendida, cuenta. Un email era de un IR que trabaja con un programador junior. El trabajador más viejo sugirió que el joven ingeniero chequeara el stack del núcleo para ver sobre un problema, pero desafortunadamente, “nunca había oído sobre un stack de núcleo”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Desde el punto de vista de Dewar, la culpa es de las universidades que están deseperadas por compensar las bajas matriculaciones en programas de ciencia de la computación, aunque signifique destrozar los programas. Es conocido ampliamente que las matriculaciones han decrecido. Las causas principales: la caída de las punto com, y los encabezados constantes sobre outsourcing.&lt;br /&gt;Responden a ésta baja en estudiantes del sector “atontando” los programas, esperando hacerlos más accesibles y populares. Lo que sea muy demandante o percibido como tedioso, se reemplaza con material simplificado que atraiga más enrolamientos. Obviamente como dice Dewar, ésto es contraproducente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;“Para mí, los números no son necesariamente la primera preocupación. La primer preocupación es que la gente obtenga una buena educación.”&lt;br /&gt;Éstos estudiantes que fueron alimentados con material fácil no están preparados para competir globalmente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Dice, uno de los pasos más contraproducentes que dieron las universidades fue adoptar Java como el lenguaje más usando en los cursos introductorios de programación, en un deseo de hacer la carrera más popular. Recuerda una discusión en &lt;st1:personname productid="la NYU" st="on"&gt;la NYU&lt;/st1:PersonName&gt; hace varios años cuando decidieron cambiar el lenguaje introductorio de Pascal a Java. Pascal nunca había sido tan popular en la industria, cosa que no importaba; aprender Pascal tendía a promover prácticas de programación sólidas.&lt;br /&gt;“Enseñaban Pascal porque parecía pedagógicamente la mejor opción”, dice Dewar.&lt;br /&gt;El cambio a Java se hizo “puramente sobre la base de la demanda percibida de los estudiantes”. Para estar seguro, es un código popular para aplicaciones web y es relativamente fácil para los principiantes. Sin embargo, es exactamente ésta facilidad que lleva al núcleo de lo que está mal con los currículos de hoy en día.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;“Si vas a una tienda y compras un libro de Java, son 1.200 páginas; 300 páginas son el lenguaje y 900 son bibliotecas misceláneas. Y es verdad que puedes sortear muchas cosas juntas en java muy fácilmente… así que puedes sortear cosas juntas sin un conocimiento mínimo,” dice. “Pero para mí, eso no es ingeniería del software, eso es algún tipo de programación consume-nivel.”&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;“El problema con Java es que esconde muchas cosas… esconde los temas de compilación - ¿qué está haciendo un compilador? Creo que si fuera a hablarle a un estudiante de Java, ni conocerían la palabra ‘compilador’. Si la conocieran, estoy seguro que no voy a obtener una idea si preguntara ‘¿qué hace un compilador?’”&lt;br /&gt;El problema, a nivel de mercado en Norte América sería “Si la gente sale de las escuelas y saben Java y programación Web, y saben cómo armar cosas usando bibliotecas, ese es el tipo de habilidades que no se demandan”, Los trabajos que requieren no más que éstas habilidades de bajo nivel puede perfectamente hacerse desde países con sueldos bajos.&lt;br /&gt;Como resúmen, el constructor a partir de bibliotecas de Java de hoy, es el repartidor de pizzas de mañana.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;¿Quién debería estudiar (y quién no) Ciencias de &lt;st1:personname productid="la Computación" st="on"&gt;la Computación&lt;/st1:PersonName&gt;?&lt;/strong&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Se necesita una persona con un set bien específico de inclinaciones y talentos para ser un programador de computadoras, comenta Dewar. Son éstas personas específicas para quienes deberían apuntar sus programas las escuelas - no la masa de personas semi-interesadas que usan bibliotecas pre-hechas para crear aplicaciones sin inspiración. Reflexión final de Dewar:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;“La mayoría de los que entramos en programación realmente lo hacíamos porque lo encontrábamos divertido. Encontramos el desafío intelectual divertido. Encontramos que enfrentarnos a un problema complicado, luego pensar soluciones algorítmicas interesantes, es divertido. Encontramos estructuras de datos listas que resuelven problemas interesantes, divertidas.”&lt;br /&gt;“Tal vez no sea divertido para una audiencia más grande, pero la educación de ciencias de la computación debería ser más sobre encontrar a esas personas que disfrutan ese tipo de diversión y enfocarse a ellos en vez de hacerlo todo fácil.”&lt;br /&gt;“Si la gente encuentra aburrido computar algún valor interesante, entonces corre ese programa y obtiene un valor de 42 cuando debería ser 83, y encuentre porqué obtuvieron 42 en vez de 83, si encuentran eso tedioso y aburrido, entonces no son la clase de gente que necesitamos.”&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Para los que se sientan identificados con la gente que describe en su reflexión final, creo que vamos por buen camino.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-3854845163184186299?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/3854845163184186299/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=3854845163184186299' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3854845163184186299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3854845163184186299'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/03/quien-mato-al-ingeniero-de-software.html' title='Quien Mato al Ingeniero de Software ?'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-5035812119364592299</id><published>2008-03-12T16:12:00.000-07:00</published><updated>2008-03-12T16:14:49.157-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflexiones'/><title type='text'>¿Los dos tipos de Programadores ?</title><content type='html'>&lt;p style="text-align: justify;"&gt;En &lt;strong&gt;Coding Horror&lt;/strong&gt;, un blog bien interesante para programadores, Jeff Atwood escribe un post titulado “&lt;a href="http://www.codinghorror.com/blog/archives/001002.html"&gt;The Two Types of Programmers”&lt;/a&gt;, donde plantea una agrupación más general de los tipos de programadores.&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;“Contrario al mito, no hay &lt;a href="http://undefined.com/ia/2006/10/05/the-fourteen-types-of-programmers/"&gt;catorce tipos de programadores.&lt;/a&gt;. Hay &lt;a href="http://blog.red-bean.com/sussman/?p=79"&gt;realmente solo dos&lt;/a&gt;, como nos recuerda &lt;strong&gt;Ben Collins-Sussman&lt;/strong&gt;.&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;Hay dos “clases” de programadores en el mundo del desarrollo del software: voy a llamarlos el 20% y el 80%. Los tipos del 20% son lo que se llamarían programadores “alfa” - los líderes, el tipo que lugares como Google y Fog Creek software buscan contratar desesperadamente. Éstos tipos fueron los primeros en instalar Linux en su casa en los 90´s; la gente que escribe compiladores en Lisp y aprende Haskell los fines de semana “por diversión”; participan activamente en proyectos open source; siempre están al tanto de las últimas, y más frescas tendencias en la programación y herramientas.&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;Los tipos del 80% hacen el bulto de la industria del desarrollo de software. No son estúpidos; son meramente vocacionales. Fueron a la escuela, aprendieron suficiente Java/C#/C++, luego obtuvieron un trabajo escribiendo aplicaciones internas para bancos, gobiernos, firmas de viajes, firmas legales, etc. El mundo usualmente ni ve su software. Usan cualquier herramienta que les provee Microsoft — usualmente VS.NET si están en C++, o capaz un GUI IDE como Eclipse o IntelliJ para desarrollar en Java. Nunca han usado Linux, y no están muy interesados en él de todas formas. Muchos nunca han usado siquiera control de versiones. Si lo han hecho, es con cualquier herramienta entregada con la caja Microsoft (como SourceSafe), o alguna cosa antigua que le hayan entregado. Saben exactamente lo suficiente para hacer su trabajo, luego se van los fines de semana a casa y se olvidan de las computadoras.”Personalmente, convivo con esta teoría a diario en clase. Una frase típica, a tono de burla, en mi salón de clase es: “&lt;em&gt;Eso el Visual Studio te lo hace solo&lt;/em&gt;” ó “¿&lt;em&gt;Para qué vas a aprender eso si ya está hecho&lt;/em&gt;?” ó “&lt;em&gt;Ésto nunca lo vas a usar, es al pedo aprenderlo&lt;/em&gt;“. Con esa mentalidad se maneja este 80%.&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;El problema, el primer año aprendimos a usar &lt;strong&gt;Visual Basic&lt;/strong&gt;, un IDE que te autocompleta, te tabula, y el framework .NET que incluye todo. Y resulta muy difícil para la mayoría salir de eso. Trabajar en &lt;strong&gt;C&lt;/strong&gt; a bajo nivel es como darse contra un muro de piedra en un automóvil a &lt;st1:metricconverter productid="90 km/h" st="on"&gt;90 km/h&lt;/st1:metricconverter&gt; y sin cinturón de seguridad…&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;Lo peor no es ésto, sino la cabeza de no salir de lo que ya se aprendió, de aprender una cosa que resulta “cómoda”, y no salir de eso. Muchos dijeron cuando empezamos con la materia: “¿&lt;em&gt;Para qué quiero aprender C si nunca lo voy a usar&lt;/em&gt;?” ó “&lt;em&gt;Yo nunca voy a programar un sistema operativo, ¿para qué quiero aprender C?&lt;/em&gt;” Conociendo esa mentalidad, ¿quién contrataría a ésta gente para un puesto de programador?&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;Me imagino la situación (&lt;strong&gt;situación Dilbert&lt;/strong&gt;):&lt;br /&gt;&lt;strong&gt;Jefe&lt;/strong&gt; - “&lt;em&gt;Mirá, tenés que hacer una librería en C que interactúe con nuestro framework de persistencia para controlar el puerto serie del servidor&lt;/em&gt;“&lt;br /&gt;&lt;strong&gt;Empleado&lt;/strong&gt; - “&lt;em&gt;¡Ah no!, yo eso no lo sé hacer, aparte el Visual no trae cómo hacerlo…&lt;/em&gt;“&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;Son el tipo de gente que cumple con las &lt;a href="http://mundogeek.net/archivos/2007/11/24/12-senales-de-que-eres-un-mal-programador/" target="_blank"&gt;12 señales de que eres un mal programador&lt;/a&gt;. Son una nueva generación de 80% que se está gestando…&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;Para reafirmar más ésta teoría, se aplica la teoría general del &lt;strong&gt;&lt;a href="http://es.wikipedia.org/wiki/Greg_Graffin" target="_blank" title="Greg Graffin"&gt;Dr. Gregory Walter Graffin III&lt;/a&gt;&lt;/strong&gt;, quien &lt;a href="http://www.thebrpage.net/index.htm?http&amp;amp;&amp;amp;&amp;amp;www.thebrpage.net/answer.asp?heading=80%20percent&amp;amp;letter=1" target="_blank" title="80 percent"&gt;declaró&lt;/a&gt; que&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;“&lt;em&gt;&lt;b&gt;En cualquier muestra al azar de la población general, se encontraría que el 80% de la gente son completos idiotas.&lt;/b&gt;&lt;/em&gt;“&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;Es totalmente compatible, aislamos una muestra de la población, con la característica en común de ser programadores. El 80%, por ende, no son muy inteligentes…&lt;br /&gt;El artículo de &lt;strong&gt;Coding Horror&lt;/strong&gt; continúa diciendo:&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;“Cuando trabajo con equipos de programadores en el campo, consistentemente me asombro con el abismo entre ese 20% y el resto del mundo. Hace que &lt;a href="http://www.codinghorror.com/blog/archives/000845.html"&gt;la división entre el campo open-source y el campo Microsoft&lt;/a&gt; parezca un charco llano.&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;&lt;strong&gt;Declaración shockeante #1&lt;/strong&gt;: &lt;em&gt;La mayor parte de la industria está hecho del 80% de los programadores.&lt;/em&gt;. Sí, la mayoría del mundo son tiendas pequeñas de desarrollo para Windows, o firmas pequeñas que contratan programadores internos. La mayoría de las compañías tienen unos pocos tipos del 20%, y son generalmente los que presionan a sus jefes de pelo parado para cambiar políticas, actualizar herramientas, o usar un sistema de control de versiones sano.&lt;br /&gt;&lt;strong&gt;Declaración shockeante #2:&lt;/strong&gt; &lt;em&gt;La mayoría de los alpha-geeks se olvidan de la declaración shockeante #1&lt;/em&gt;. La gente que trabaja con software open source, participan en argumentos apasionantes de criptografía en Slashdot, y bajan los últimos lanzamientos GIT son extremadamente propensos a perder de vista el hecho de que “el 80%” existe. Se emocionan con la última distro de Linux o herramientas de AJAX o sistema SCM distribuido, pasan todo el fin de semana en eso, bloguean al respecto… y luego están confundidos sobre porqué no pueden lograr que su oficina empieza a usarlo.&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;Tal vez no es algo impresionante para mí, pero un excelente e importante recordatorio para todos, sin embargo.&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;A menudo pienso que perdemos el tiempo escribiendo blogs los cuales son mayormente leído por el mismo 20%. En mi experiencia existe un pequeño efecto de goteo de los programadores alfa hacia todos los demás. Y si lo hay, &lt;a href="http://www.codinghorror.com/blog/archives/000686.html"&gt;lleva décadas&lt;/a&gt;.”&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;Jeff continúa su artículo incitando al 20% a cambiar, a construir un puente entre el 20% y el 80%:&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;“Si &lt;em&gt;realmente&lt;/em&gt; quieres cambiar el status quo del desarrollo de software, si realmente quieres marcar una diferencia &lt;em&gt;este año&lt;/em&gt;, tienes que ayudar fuera del pequeño grupo insular de programadores alfa y &lt;strong&gt;crear el cambio en el otro 80% del mundo&lt;/strong&gt;. Y eso es mucho, &lt;em&gt;mucho&lt;/em&gt; mas difícil que predicarle al convertido 20%. Es por eso que admiro a gente como Scott Mitchell, porque &lt;a href="http://scottonwriting.net/sowblog/posts/5595.aspx"&gt;entiende la importancia de llegarle al otro 80%&lt;/a&gt;.”&lt;br /&gt;(…)&lt;br /&gt;“Desearía que fuera más sencillo para mí, porque estoy de acuerdo con Scott” (…) “Creo que la verdadera medida de éxito no es cuántos alpha geeks podés hacer que te presten atención. Es cuántos típicos, poogramadores promedio has alcanzado, aunque sea de una forma pequeña. Si realmente te importa el arte del desarrollo de software, nos ayudarás a construir ese puente entre el 80% y el 20% también.&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;Es difícil lidiar con éste 80%, pero a lo largo de la carrera, van a estar siempre presentes. ¿Qué piensas al respecto? ¿Te consideras ofendido por el post? Estás en el 80…&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-5035812119364592299?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/5035812119364592299/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=5035812119364592299' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5035812119364592299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5035812119364592299'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/03/los-dos-tipos-de-programadores.html' title='¿Los dos tipos de Programadores ?'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-6324138946773978476</id><published>2008-03-09T20:05:00.000-07:00</published><updated>2008-03-12T16:15:03.770-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Nace el Proyecto JDataObject</title><content type='html'>Un grupo de Alumnos de la Universidad Nacional del Santa y mi persona estamos desarrollando un proyecto con las siguientes características&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;I.-&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;DESCRIPCION DEL PROYECTO&lt;/span&gt;&lt;br /&gt;Desarrollo de  herramientas  y componentes para la generación de consultas de Base de datos  y diseño de objetos (Texto,Campos, Imágenes, Campos calculados, lines, etc.) asi como de sus propiedades para la edición y mantenimiento de los datos.&lt;br /&gt;Añadir una nueva funcionalidad a NetBeans que permita la creación de Objeto de datos (JDataObjetc) para el manejo y edición de datos a través del control JDataControl.&lt;br /&gt;El proyecto esto formado de 2 elementos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.-Plugin para NetBeans&lt;/span&gt; que permite el diseño dinámico de consultas así como el diseño de Objetos de Datos (JDataObjetc). El objeto JDataObject es un objeto que encapsula una consulta SQL así como las propiedades de cada uno de los objetos definidos en esta. Estos objetos pueden ser Texto, campos de tablas y campos calculados. El objeto también pose propiedades en si mismo para las funciones inherentes al trabajo con Datos y la presentación de estos. El diseñador de objetos JDataObjet utiliza archivos en formato XML para almacenar las diferentes propiedades de cada objeto.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2.-JDataEditControl.-&lt;/span&gt;&lt;br /&gt;Es un Bean que encapsula la funcionalidad del trabajo con una consulta de base de datos haciendo uso de cursores desplazables con cualquier base de datos cuyo controlador JDBC soporte estas funcionalidades. La mayoría de las operaciones cotidianas de trabajo con una consulta actualizable de datos se pueden realizar de una manera muy sencilla con una mínima programación. Este control aumenta tremendamente la productividad en la creación de aplicaciones que trabajan con una base de datos.&lt;br /&gt;Módulos que conforman el Proyecto&lt;br /&gt;• Diseñador dinámico de consultas&lt;br /&gt;• Diseñador de Objetos JdataObjetc&lt;br /&gt;• Componente JdataeditControl&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;II- BENEFICIOS PARA LA COMUNIDAD DE NETBEANS&lt;/span&gt;&lt;br /&gt;• Permitir a NetBeans poder competir con otros entornos  de desarrollo como PowerBuilder, Delphi y Visual Basic los  cuales cuentan con herramientas productivas para el acceso y manejo de datos.&lt;br /&gt;• Incrementar el desarrollo de aplicaciones Desktop con NetBeans&lt;br /&gt;• Incremento de la productividad en el desarrollo de aplicaciones con Base de datos.&lt;br /&gt;• Facilidad de adopción de Netbeans para desarrolladores de otros lenguajes y entornos de desarrollo.&lt;br /&gt;• Introducción al mundo de las Base de datos de una manera fácil y práctica para los programadores  de Java noveles.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;III.- PLAN DE IMPLEMENTACION&lt;/span&gt;&lt;br /&gt;El proyecto se implementara utilizando solo componentes proporcionados por la plataforma de Netbeans y el proyecto Ireport de JasperSoft. Se desarrollara un modulo que extienda las capacidades de Trabajo con base de datos, para lo cual se desarrollara un generador dinámico de consultas, este generador enviara la consulta SQL al diseñador de Objetos JDataObject, en el cual se podrá ajustar las propiedades de visualización y otras de cada  objeto pudiendo ser este Texto, Imágenes, Dibujos y campos calculados. Los objetos JDataObjet podrán ser llamados por el componente JDataEditControl que es un Beans que encapsulará la  mayoría de operaciones con el tratamiento de datos, se utilizara como repositorio de información archivos en formato XML. El Proyecto esta dividido en 3 Módulos&lt;br /&gt;• Diseñador dinámico de consultas .- Esta se desarrollara de manera visual permitiendo al usuario seleccionar el origen de base de datos y realizar la selección de Tablas y campos de estas , así como establecer las relaciones existentes entre las diferentes tablas, pudiendo alternativamente ingresar parámetros de recuperación de la base de datos.&lt;br /&gt;• Diseñador de Objetos JDataObjetc.- La consulta generada con la herramienta anterior es utilizada por esta herramienta la cual permitirá el diseño y ubicación de los diferentes campos así como de sus propiedades, los formatos de presentación de los registros serán 2 de manera Tabular y otra un Grid. Todos los parámetros de la consulta se grabaran en un archivo XML el cual será interpretado mas adelante por el Control JDataEditControl&lt;br /&gt;• Componente JdataeditControl (Grid y Tabular).- Es un componente que permite trabajar con el Objeto JDataObjetc, y provee las funciones y propiedades para el manejo de las operaciones con los registros de la base de datos.&lt;br /&gt;Se utilizara la plataforma NetBeans para la creación del plugin para la generación de consultas dinámicas así como el diseño del JDataObjetc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-6324138946773978476?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/6324138946773978476/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=6324138946773978476' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/6324138946773978476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/6324138946773978476'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/03/nace-el-proyecto-jdataobject.html' title='Nace el Proyecto JDataObject'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-3720067650267959057</id><published>2008-01-27T16:04:00.000-08:00</published><updated>2008-01-27T16:07:01.652-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><title type='text'>Optimizando Firebird</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Estas son las consideraciones que tomo en cuenta para una adecuada configuración para el servidor Firebird.&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;El funcionamiento de un Servidor de base de datos es en realidad una mezcla de&lt;span style=""&gt;  &lt;/span&gt;tres cosas: una computadora que hace de "servidor", el programa FireBird instalado en el, y un fichero de datos (normalmente con extensión .FDB o .GDB) que está almacenado en un disco duro del servidor. Todos estos aspectos del servidor de la base de datos pueden &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;ser causa de algunos problemas. &lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;b style=""&gt;La computadora el Servidor&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Para la computador que ara de servidor se tiene que seleccionar una con características hardware apropiadas ya que del adecuado rendimiento de esta PC tendrá mucho que ver el comportamiento del servidor de Base de datos. La recomendación es utilizar ese computador de manera exclusiva como servidor de base de datos. Las consideraciones de seguridad tanto a nivel físico como a nivel&lt;span style=""&gt;  &lt;/span&gt;de software(Sistema Operativo, Cortafuegos, etc.) deben tenerse en consideración ya que de ello dependerá el buen funcionamiento y la seguridad de la base de datos.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Una computadora con unidades de disco antiguas, sin los controladores adecuados, con poca memoria, con el sistema operativo mal configurado, o que se use para otros procesos, afectará a todos los usuarios del servidor de base de datos, así que la selección de una computadora adecuada es una muy buena decisión para incrementar el rendimiento. &lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;b style=""&gt;Configurar FireBird &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Uno de los puntos mas críticos dentro de la configuración del servidor es la asignación de la memoria que se da al servidor (parámetro DefaultDbCachePages) este parámetro en el servidor Superserver esta configurado a 2048 paginas, es necesario incrementar este parámetro para tener un mejor rendimiento. El efecto que tendrá será grande, sobre todo cuando existen muchos usuarios accediendo a la base de datos o para el procesamiento de Consultas SQL complejas.&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;Sanear sus datos&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Este punto debería ser obligatorio, ya que las bases de datos, al igual que los discos duros, se "fragmentan" con su uso diario, e incluso pueden ser más propensas a corromperse tras unos años de uso, y solo un ciclo de BackUp / Restore nos "sanea" estos datos. Con esto se obtendrá una reducción en el tamaño de la base de datos&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tamaño de cache&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt; &lt;/span&gt;Simplificando es cuanta memoria RAM reservamos para cada base de datos que abre FireBird, y cuanta más, mejor, claro. Esta memoria se mide en "paginas", y una pagina puede variar de tamaño, siendo el tamaño por defecto&lt;span style=""&gt;   &lt;/span&gt;de 4KB. Para la mayoría de base de datos.&lt;span style=""&gt;  &lt;/span&gt;Por defecto el modo "Superserver" de FireBird -la instalación por defecto- usa DefaultDbCachePages = 2048, es decir, unas 8 MB, así que realmente aquí tenemos mucho que ganar poniendo, por ejemplo, 10 veces más (80 MB) o incluso bastante mas. Conviene jugar con ciertos valores y ver como queda el S.O. (Windows o Linux) de memoria libre. Si decidimos usar un GB para FireBird, usaríamos unas &lt;b&gt;cien veces&lt;/b&gt; más que lo que viene por defecto, unas 2 millones de páginas, así que DefaultDbCachePages = 204800 podría ser un valor bueno a probar.&lt;/p&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;b&gt;Ficheros temporales&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt; &lt;/span&gt;Se usan al ordenar datos, es decir, muy a menudo. Estos fichero no deben estar en el mismo disco donde esta la propia base de datos, ya que en ese caso, el manipular ambos ficheros a la vez penalizará la velocidad bastante. Busque en el fichero de configuración “firebird.conf” la clausula TempDirectories y haga que apunte al disco del sistema operativo, o si lo tiene, a un disco extra que use solo para estos ficheros temporales.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;Disco RAM&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt; &lt;/span&gt;Si tiene RAM de sobra, digamos que mas de 2 GB en sistemas de 32 bits o más de 4 GB en sistemas de 64 bits, &lt;st1:personname productid="la RAM" st="on"&gt;la RAM&lt;/st1:personname&gt; extra puede usarse para dar más velocidad a los temporales creando un "disco RAM". Estos discos, son programas que se instalan y hacen creer al sistema que la memoria es un disco nuevo, pero muy rápido. Si instalamos uno de estos programas y usamos esa unidad como directorio temporal de FireBird, el cambio puede ser espectacular.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-3720067650267959057?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/3720067650267959057/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=3720067650267959057' title='12 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3720067650267959057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3720067650267959057'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/optimizando-firebird.html' title='Optimizando Firebird'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-8379790881606204157</id><published>2008-01-26T22:36:00.000-08:00</published><updated>2008-07-03T06:33:52.113-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><title type='text'>Migración de Datos a Firebird  (II)</title><content type='html'>Desarrollada la aplicación de migración de datos (Tablas Dbfs) a Firebird, se pudo realizar grandes migraciones de cientos de tablas con millones de registros, demostrando de esta manera que el software funciona de manera correcta.&lt;br /&gt;&lt;br /&gt;El paso siguiente seria desarrollar una herramienta que pudiese hacer los mismo con diferentes orígenes de datos (Principalmente servidores SQL).&lt;br /&gt;Me propuse desarrollar un software que incluyera la siguiente Funcionalidad:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Explorar los objetos de un servidor Firebird&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Exportar Datos y Objetos entre 2 servidores Firebird&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Exportar las estructuras de Objetos de un servidor Firebird a un Archivo SQL&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Incluir la Migración de Archivos DBFs&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Migrar de Datos y Estructuras de un Servidor SQL&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Migrar datos de origen ODBC o Acces&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Aqui pongo unas capturas de pantalla del software desarrollado:&lt;br /&gt;&lt;br /&gt;Esta ventana muestra la opción para la migración de estructura y data entre 2 servidores Firebird.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_74kp4h888ZA/R5wuInLQSeI/AAAAAAAAAW0/IRMBYv1331I/s1600-h/xdatatofib1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_74kp4h888ZA/R5wuInLQSeI/AAAAAAAAAW0/IRMBYv1331I/s320/xdatatofib1.JPG" alt="" id="BLOGGER_PHOTO_ID_5160049998549764578" border="0" /&gt;&lt;/a&gt;Esta ventana muestra como se puede extraer la estructura de datos y objetos de un servidor Firebird para visualizar o grabarlo en un archivo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R5wuI3LQSfI/AAAAAAAAAW8/dYNW4mH7WOE/s1600-h/xdatatofib2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R5wuI3LQSfI/AAAAAAAAAW8/dYNW4mH7WOE/s320/xdatatofib2.JPG" alt="" id="BLOGGER_PHOTO_ID_5160050002844731890" border="0" /&gt;&lt;/a&gt;En esta ventana se muestra la opción que permite exportar datos de un un servidor SQL a un servidor Firebird.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R5wuI3LQSgI/AAAAAAAAAXE/y9tCAzUk3YA/s1600-h/xdatatofib3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R5wuI3LQSgI/AAAAAAAAAXE/y9tCAzUk3YA/s320/xdatatofib3.JPG" alt="" id="BLOGGER_PHOTO_ID_5160050002844731906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;El Software puede ser descargado desd&lt;span style="text-decoration: underline;"&gt;e &lt;a href="http://groups.google.com/group/diario_desarrollador/web/xdatatofib.rar"&gt; Aqui&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-8379790881606204157?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/8379790881606204157/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=8379790881606204157' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/8379790881606204157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/8379790881606204157'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/migracin-de-datos-firebird-ii.html' title='Migración de Datos a Firebird  (II)'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_74kp4h888ZA/R5wuInLQSeI/AAAAAAAAAW0/IRMBYv1331I/s72-c/xdatatofib1.JPG' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-3815316474011777162</id><published>2008-01-26T21:55:00.000-08:00</published><updated>2008-01-26T22:58:40.005-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><title type='text'>Migración de Datos a Firebird  (I)</title><content type='html'>Fue inicios del 2004 que decidí desarrollar una herramienta para realizar la migración de data en formato DBF al servidor Firebird.&lt;br /&gt;Este software lo desarrolle con Borland Delphi, una de las partes fundamentales de este software es el objeto que permite acceder a los datos DBFs realizando una adecuada interpretación de estos para su posterior migración a Firebird para un funcionamiento adecuado este software hace uso de Hilos para gestionar la exportación de datos.&lt;br /&gt;Aqui unas capturas de pantallas del software desarrollado:&lt;br /&gt;&lt;br /&gt;Esta ventana muestra los diferentes objetos de un servidor Firebird pudiendo analizar las estructuras de las tablas, su data y metadata.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R5wkBHLQSbI/AAAAAAAAAWc/7l_yKF_CSVI/s1600-h/dbftofib.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R5wkBHLQSbI/AAAAAAAAAWc/7l_yKF_CSVI/s320/dbftofib.bmp" alt="" id="BLOGGER_PHOTO_ID_5160038874584467890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Esta ventana muestra como se puede explorar un directorio para analizar archivos Dbfs, pudiendo visualizar su estructura así como su data&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R5wkBXLQScI/AAAAAAAAAWk/g74gli1NwTg/s1600-h/dbftofib1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R5wkBXLQScI/AAAAAAAAAWk/g74gli1NwTg/s320/dbftofib1.jpg" alt="" id="BLOGGER_PHOTO_ID_5160038878879435202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Esta ventana muestra la selección de los diferentes archivos Dbfs a migrar para realizar la exportación de datos al servidor Firebird.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R5wkBXLQSdI/AAAAAAAAAWs/432aYpEE_WM/s1600-h/dbftofib2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R5wkBXLQSdI/AAAAAAAAAWs/432aYpEE_WM/s320/dbftofib2.jpg" alt="" id="BLOGGER_PHOTO_ID_5160038878879435218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;El software puede ser descargado &lt;a href="http://groups.google.com/group/diario_desarrollador/web/dbftofib.rar"&gt;aquí&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-3815316474011777162?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/3815316474011777162/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=3815316474011777162' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3815316474011777162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3815316474011777162'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/migracin-de-data-firebird.html' title='Migración de Datos a Firebird  (I)'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_74kp4h888ZA/R5wkBHLQSbI/AAAAAAAAAWc/7l_yKF_CSVI/s72-c/dbftofib.bmp' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-2997305392200867197</id><published>2008-01-26T21:43:00.000-08:00</published><updated>2008-01-26T21:55:53.919-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><title type='text'>Conociendo Firebird</title><content type='html'>Fue a Finales del 2003 que analizando las diferentes bases de datos de código abierto me encontré con este proyecto, el cual me sorprendió ya que se trataba de una rama de desarrollo libre basado en el código fuente de interbase 6.0. Empece a analizar su funcionalidad probandolo en windows empece a utilizarlo con PowerBuilder para lo cual utilizaba una conexión ODC realice las pruebas y quede satisfecho.&lt;br /&gt;Al trabajar con sistemas que utilizaban campos Blob Firebird no presentaba problema alguno y el controlador ODB tenia un buen desempeño, la administración de la base de datos era mínima, con estas características probadas decidí utilizarlo en los proyectos que desarrollaría de ahora en adelante, plantea al SIMA Chimbote la utilización de esta base de datos lo cual se acepto sin problemas.&lt;br /&gt;Firebird al heredar el código de Interbase tiene un estrecho nexo con las herramientas de desarrollo de Borland principalmente con Delphi para el cual existen una gran cantidad de componentes que nos permiten trabajar con una conexión nativa sacando todo el potencial de esta base de datos.&lt;br /&gt;Al empezar a trabajar con Firebird uno de los grandes problemas con los que me enfrente fue el proceso de migración de base de datos desde otros servidores SQL y de data de archivos DBF; para superar este problemas desarrolle 2 herramientas muy útiles que me permiten hacer este trabajo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;dbftofib (Permite migrar datos DBF a Firebird)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;xdatatofib (Herramienta para migrar data de otros servidores a Firebird)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Estas herramientas las desarrolle utilizando Borland Delphi 7.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-2997305392200867197?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/2997305392200867197/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=2997305392200867197' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/2997305392200867197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/2997305392200867197'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/conociendo-firebird.html' title='Conociendo Firebird'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-5431799481462310017</id><published>2008-01-23T16:59:00.000-08:00</published><updated>2008-01-23T22:19:37.883-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Desarrollando una Ventana Mantenimiento</title><content type='html'>Terminada, el desarrollo de los objetos base y del generador de ventana de datos paso a mostrar un ejemplo de los pasos a seguir. Para el ejemplo se realizara el mantenimiento de una tabla que utiliza en una de sus columnas un estilo de edición en particular, también se debe comentar que la herencia visual de formularios en NetBeans 6.0 no esta implementada como lo conocemos en PowerBuilder, se puede hacer herencia de componentes (Beans)  para ello, si deseamos crear un nuevo objeto visual basado en varios componentes se tendría que utilizar un panel y colocar los objetos que se deseen en el.&lt;br /&gt;La técnica que e utilizado es la combinación de  plantillas (esto no es herencia) con objetos visuales y a partir de ellos crear las entradas de datos.&lt;br /&gt;En el siguiente vídeo muestro como se crea una ventana de datos(datawindows) utilizando el diseñador que he creado para este fin, hay que percatarnos que el diseñador nos permite establecer un estilo de edición, estos estilos de edición se obtienen de un Paquete el cual muestra los objetos que pueden servir como objetos de edición.&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt; &lt;param name="movie" value="http://www.youtube.com/v/eGulSS2S2ok"&gt;  &lt;embed src="http://www.youtube.com/v/eGulSS2S2ok" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-5431799481462310017?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/5431799481462310017/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=5431799481462310017' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5431799481462310017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5431799481462310017'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/java-desarrollando-una-ventana.html' title='Java Desarrollando una Ventana Mantenimiento'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-4444424421513246389</id><published>2008-01-22T21:14:00.000-08:00</published><updated>2008-01-23T16:59:21.971-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Video de la Aplicación</title><content type='html'>Aqui les pongo un video de como quedo la presentación del primer avance del sistema.&lt;br /&gt;&lt;object height="350" width="425"&gt; &lt;param name="movie" value="http://www.youtube.com/v/G3ooXqfqv6Q"&gt;  &lt;embed src="http://www.youtube.com/v/G3ooXqfqv6Q" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-4444424421513246389?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/4444424421513246389/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=4444424421513246389' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/4444424421513246389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/4444424421513246389'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/video-de-la-aplicacin.html' title='Video de la Aplicación'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-7551478961824402748</id><published>2008-01-15T14:27:00.000-08:00</published><updated>2008-01-15T15:57:25.215-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Anecdotas'/><title type='text'>Jaybird Problemas ?</title><content type='html'>&lt;div style="text-align: justify;"&gt;5 de Diciembre 2007&lt;br /&gt;&lt;br /&gt;He desarrollado ya varias entradas de datos y la verdad con los objetos de acceso a datos que desarrolle las cosas ya son mas aceptables y puedo desarrollar bastante rápido esto me esta gustando.&lt;br /&gt;Toda estaba bien hasta que me percato de algo extraño  cuando procedía a grabar datos en una tabla con llave primaria compuesta se modificaban todos los registros para los cuales coincidía el ultimo campo de la llave compuesta me explico mejor con un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;TABLA=DEMO1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;sistema    codigo      campo     valor &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;002          1             UNO          100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;002          2             DOS          200&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;002          3            TRES         5000 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;002          5            UNO         300&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;002         10            DOS          100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;002         20           UNO           200&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;PRIMARY KEY = CAMPO+CODIGO+SISTEMA&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Si yo actualizo  el campo valor de 200 a 10 para los registros con el campo sistema='002' y ademas con el campo codigo='20'  esto deberia afectar solo a un  registro.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Después de realizar la actualización el resultado debería ser este:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;sistema    codigo      campo     valor &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;002         20           UNO           200&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-style: italic; font-weight: bold; text-align: justify;" dir="ltr"&gt;Pero los resultados fueron diferentes obteniendo los siguientes datos:&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;sistema    codigo      campo     valor  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; 002          1             UNO          10 (*)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; 002          2             DOS          200&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; 002          3            TRES         5000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; 002          5            UNO           10 (*)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; 002         10            DOS          100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; 002         20           UNO           10 (*)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esto para mi es un Horror, bueno pensé algo estoy haciendo mal así que a revisar todo el código que he avanzado para detectar el posible error ese día me amanecí para variar (jajaa casi siempre lo ago) . Analizando todo llegue a la conclusión siguiente el controlador Jaybird tiene un problema muy pero muy grande como antes no se percataron de eso realmente es algo terrible.&lt;br /&gt;&lt;br /&gt;Decidí escribirle a Roman Rowinsky el creador de Jaybir para que me oriente que cosa estava haciendo mal. Roman Rowinsky me contesto lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: ltr; text-align: justify;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Please post this email into our bug tracker at&lt;/span&gt;&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" onclick="return top.js.OpenExtLink(window,event,this)" href="http://tracker.firebirdsql.org/" target="_blank"&gt;http://tracker.firebirdsql.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;It looks like a bug in JDBC driver when handling the compound primary keys.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;script&gt;&lt;!-- D(["mb","\u003cdiv style\u003d\"direction:ltr\"\u003e\u003cspan class\u003dsg\u003e\u003cbr /\u003eRoman\u003cbr /\u003e\u003c/span\u003e\u003c/div\u003e",0] ); D(["ce"]);  //--&gt;&lt;/script&gt;&lt;br /&gt;Aqui me esta confirmando que efectivamente existe un problema con el controlador JDBC de Jaybird en la actualización de registro con tablas que tienen Llaves primarias compuestas.&lt;br /&gt;Bueno esto me puso muy preocupado, publique el bug en la dirección que Roman me indico y en esa dirección me percate que existen Bugs desde el 2006 que no se solucionan hasta la fecha o si se solucionaron no se menciona nada de ello.&lt;br /&gt;&lt;br /&gt;Al percatarme de ello estaba al borde de a locura y que hago me dije lo primero tranquilizarme y pensar friamente que seria los mas adecuado hacer, entonces se me ocurrieron las siguientes alternativas:&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-weight: bold; text-align: justify;"&gt;&lt;li&gt;Cambiarme de Motor de Base de datos&lt;/li&gt;&lt;li&gt;Pedirle Porfavor a Roman que me Ayudase con el problema&lt;/li&gt;&lt;li&gt;Yo mismo corregir el controlador&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Asi que empece a analizar las diferentes alternativas que tenia, la primera cambiarme de base de datos bien a Postgress o Mysql me decidí por Mysql así que estuve explorando las posibilidades con esta base de datos, como se sabe Mysql apartir de la versión 5.0 comienza a dar soporte a Procedimientos almacenados,disparadores , funciones definidas por el usuario, etc. estuve revisando el lenguaje de programación que utiliza Mysql y toda la información que encontré me llevo a pensar que Mysql todavía no esta muy maduro en estos temas como RBDMS, mi conocimiento con Firebird data desde el 2004 y con el cual he desarrollado muchos sistemas, esto me garantizaría tiempo y funcionalidad para la generación de cualquier tipo de reporte por mas complejo que este fuese, con IBSQL (Lenguaje de Firebird) todo lo podría resolver. Así que me propuse Corregir el Controlador yo mismo si en 24 horas no lo podía corregir el cambio de motor de base de datos era inevitable.&lt;br /&gt;&lt;br /&gt;Le pedí a Roman que me diga donde podía conseguir el código fuente de Jaybird 2.1.1 (Es la versión que estoy usando) pq' en la pagina de descarga solo se encuentra los fuentes de Jaybird 2.1  Roman me contesto lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;You have to check out the sources from the CVS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;cvs -d :pserver:anonymous@firebird.cvs.sourceforge.net:/cvsroot/firebird&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-weight: bold; font-style: italic; text-align: justify;"&gt;co -R Jaybird_2_1_1 client-java&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Aca entra el excelente soporte que tiene Netbeans 6.0 para el trabajo con CVS es de lo mejor que yo he visto.&lt;br /&gt;Una ves trabajando con los fuentes de Jaybird detecte el problema en la clase &lt;span style="font-weight: bold;" class="q"&gt;FBRowUpdater &lt;/span&gt;&lt;span class="q"&gt;realice la corrección de manera exitosa compilando nuevamente Jaybird con la versión parchada dando resultados satisfactorios, sinceramente que al ver que la nueva versión compilada de Jaybird funcionaba correctamente, la tranquilidad regreso a mi. Corregir el controlador no fue tarea fácil lo primero, hay que aceptar el reto y tener la seguridad &lt;span style="font-weight: bold;"&gt;de que todo se puede&lt;/span&gt; solo el factor tiempo era mi enemigo.  Con este problema superado y habiendo ganado mucho mas experiencia en Java con 1 mes de estar desarrollando en este lenguaje, en ese momento me sentí muy contento y con la confianza de que ningún problema me detendría para desarrollar este sistema.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="q"&gt;Le escribí a Roman un correo con el código corregido:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-style: italic; text-align: justify;" id="mb_0"&gt;&lt;span&gt;Te agradesco por el apoyo y los fuentes de Jaybird. te envio la correccion que he realizado.&lt;br /&gt;saludosy y Nuevamente Gracias.&lt;br /&gt;&lt;br /&gt;Atte.&lt;br /&gt;Oscar Zelada Pozo&lt;br /&gt;&lt;br /&gt;//****************************&lt;wbr&gt;******************************&lt;wbr&gt;******************************&lt;wbr&gt;*******&lt;br /&gt;private int[] getParameterMask() throws SQLException {&lt;br /&gt;&lt;br /&gt;// loop through the "best row identifiers" and set appropriate falgs.&lt;br /&gt;FBDatabaseMetaData metaData = new FBDatabaseMetaData(gdsHelper);&lt;br /&gt;&lt;br /&gt;ResultSet bestRowIdentifier = metaData.getBestRowIdentifier(&lt;br /&gt;   "", "", tableName, DatabaseMetaData.bestRowSession , true);&lt;br /&gt;try {&lt;br /&gt;   int[] result = new int[xsqlvars.length];&lt;br /&gt;   boolean hasParams = false;&lt;br /&gt;   while(bestRowIdentifier.next()) {&lt;br /&gt;       String columnName = bestRowIdentifier.getString (2);&lt;br /&gt;       if (columnName == null)&lt;br /&gt;           continue;&lt;br /&gt;&lt;br /&gt;       boolean found = false;&lt;br /&gt;       for (int i = 0; i &lt;&gt;) &amp;amp;&amp;amp; "DB_KEY".equals(xsqlvars[i]&lt;wbr&gt;.sqlname)) {&lt;br /&gt;               result[i] = PARAMETER_DBKEY;&lt;br /&gt;               found = true;&lt;br /&gt;               break;&lt;br /&gt;           } else&lt;br /&gt;           if (columnName.equals(xsqlvars[i].sqlname)) {&lt;br /&gt;               result[i] = PARAMETER_USED;&lt;br /&gt;               found = true;&lt;br /&gt;               break;&lt;br /&gt;           }&lt;br /&gt;//---------Este Else--No es necesario Pq' los elementos del Array  se inicializan en  cero-----           &lt;br /&gt;//---------Como el for siempre recorre todos los parametros de Xsqlvars siempre setea todos los anteriores a cero-----&lt;br /&gt;//----------y si ya se asigno un valor diferente a cero sera chancado por eso esas lineas estan de mas---------&lt;br /&gt;//---------el error era que siempre queda el ultimo campo de la llave primaria y sera el unico------          &lt;br /&gt;//--------Que se tomara en consideracion para el where del Update------------------------&lt;wbr&gt;------------&lt;br /&gt;//--------------Gracias por Todo Roman Saludos desde Peru Atte. Oscar Zelada--------------------    &lt;wbr&gt;      &lt;br /&gt;           // else&lt;br /&gt;            //   result[i] = PARAMETER_UNUSED;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       // if we did not found a column from the best row identifier&lt;br /&gt;       // in our result set, throw an exception, since we cannot&lt;br /&gt;       // reliably identify the row.&lt;br /&gt;       if (!found)&lt;br /&gt;           throw new FBResultSetNotUpdatableExceptio&lt;wbr&gt;n(&lt;br /&gt;               "Underlying result set does not contain all columns " +&lt;br /&gt;               "that form 'best row identifier'.");&lt;br /&gt;       else&lt;br /&gt;           hasParams = true;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   if (!hasParams)&lt;br /&gt;       throw new FBResultSetNotUpdatableExceptio&lt;wbr&gt;n(&lt;br /&gt;           "No columns that can be used in WHERE clause could be " +&lt;br /&gt;           "found.");&lt;br /&gt;&lt;br /&gt;   return result;&lt;br /&gt;} finally {&lt;br /&gt;   bestRowIdentifier.close();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: normal;" href="http://groups.google.com/group/diario_desarrollador/web/jaybird-full-2.1.1.jar"&gt;Aqui&lt;/a&gt;&lt;span style="font-weight: normal;"&gt; pongo los binarios de Jaybird 2.1.1 que corrige el problema de llave primaria compuesta por si alguien los necesita. &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-7551478961824402748?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/7551478961824402748/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=7551478961824402748' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/7551478961824402748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/7551478961824402748'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/jaybird-problemas.html' title='Jaybird Problemas ?'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-1258485831781812557</id><published>2008-01-15T14:06:00.000-08:00</published><updated>2008-01-15T14:21:06.710-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Presentación del Sistema (Postergado)</title><content type='html'>30 Noviembre 2007&lt;br /&gt;&lt;br /&gt;Llego la fecha de presentación del primer modulo y la verdad que como hemos visto recién estoy empezando con el desarrollo del mismo, así que no me quedo otra cosa que conversar con el gerente y pedirle me amplia la fecha de presentación del avance. Al conversar con el le conté a groso modo los problemas que se me habían presentado sin ahondar en los temas técnicos ni demás, bueno el me dijo que has avanzado, sinceramente sentí vergüenza es la primera vez que me encuentro en una situación así, bueno me comprendió y me dio el plazo que le solicite de 10 días para acabar con la primera parte del sistema.&lt;br /&gt;había trabajado muy duro durante este mes de noviembre, desde hace mucho tiempo que no se me presento un reto de esa magnitud, me confié demasiado pensé en aprender Java solo en 15 días y realizar todo la implementación en otros 15 días mas, pero no fue así, también estuvo el reto de desarrollar todo el marco de trabajo que tenia en PowerBuilder era muy corto el tiempo de 15 días por mas experiencia que aya tenido.&lt;br /&gt;De la forma como lo he desarrollado creo que valió la pena estoy satisfecho ya que estoy empezando ha  ver los frutos de mi trabajo así que me tomare un par de días para despejarme.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-1258485831781812557?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/1258485831781812557/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=1258485831781812557' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/1258485831781812557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/1258485831781812557'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/presentacin-del-sistema-postergado.html' title='Presentación del Sistema (Postergado)'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-781453761695883329</id><published>2008-01-15T12:51:00.000-08:00</published><updated>2008-01-15T14:05:49.365-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Empezando el desarrollo del Sistema</title><content type='html'>28 de Noviembre 2007&lt;br /&gt;&lt;br /&gt;Todo sistema desde mi punto de vista debe tener un conjunto de objetos reutilizables así como también funciones para las operaciones repetitivas que se dan, así como un interfaz establecida y que todas las ventanas deben seguir.&lt;br /&gt;Empece a desarrollar la interfaz para todo el sistema así como las diferentes funciones que darán soporte ha esta, no olvidemos la seguridad y los accesos a los usuarios, las concepciones de esto yo las tengo bien claro ya que sera las misma de todos los sistemas que he desarrollado.&lt;br /&gt;&lt;br /&gt;Existe un sistema principal, apartir del cual se pueden crear perfiles de sistemas que pueden ser asignados a los usuarios, cada perfil de sistema tiene sus permisos establecidos CLAEP C=creación, L=Lectura, A=Actualización, E=Eliminación y P=impresión, espero escribir otra entrada explicando los detalles de la concepción de seguridad que manejo, regresando al desarrollo del sistema, cree un  objeto aplicación con diferentes propiedades que serán utilizadas en el sistema, ademas de la sincronización del menú principal y el árbol de la aplicación.&lt;br /&gt;He utilizado funciones hash(SHA) para la encriptación de las claves de los usuarios, aqui les muestro el código de la función:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R40nNOPHt9I/AAAAAAAAAWM/qDo-IJHv-Kg/s1600-h/funciones1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R40nNOPHt9I/AAAAAAAAAWM/qDo-IJHv-Kg/s320/funciones1.JPG" alt="" id="BLOGGER_PHOTO_ID_5155820256522385362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Aca una captura de pantalla de la ventana principal, tuve que quitar la imagen real del sistema asi como borrar el nombre del sistema  y de la empresa de la barra de titulo por razones obvias.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R40q4OPHt-I/AAAAAAAAAWU/hcaV58OSyP8/s1600-h/sistema0.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R40q4OPHt-I/AAAAAAAAAWU/hcaV58OSyP8/s320/sistema0.JPG" alt="" id="BLOGGER_PHOTO_ID_5155824293791643618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Internamente existen muchas funciones que realizan diferentes procesos para que toda la aplicación funcione de manera adecuada podríamos mencionar algunas&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;Sincronización de elementos del menú en una base de datos.&lt;/li&gt;&lt;li&gt;Generación del árbol apartir de la tabla de elementos de menú&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ejecución de eventos del menú atraves de los items del árbol&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Funciones de seguimiento y registro de sucesos del sistema&lt;/li&gt;&lt;/ul&gt;Sin darme cuenta en la creación de los objetos de acceso a datos y los demás objetos que forman parte de mi marco de trabajo estoy programando varios miles de lineas en Java ya estoy en condiciones de desarrollar los ingresos mas pesados y empezar a introducirme al mundo de los reportes con Jasper Report e Ireport.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-781453761695883329?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/781453761695883329/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=781453761695883329' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/781453761695883329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/781453761695883329'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/empezando-el-desarrollo-del-sistema.html' title='Empezando el desarrollo del Sistema'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_74kp4h888ZA/R40nNOPHt9I/AAAAAAAAAWM/qDo-IJHv-Kg/s72-c/funciones1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-5097777357886351697</id><published>2008-01-14T12:52:00.000-08:00</published><updated>2008-01-15T12:49:19.253-08:00</updated><title type='text'>Java Datawindow Manipulación Datos en Grid (IV)</title><content type='html'>25 Noviembre 2007&lt;br /&gt;Java es muy amplio, las posibilidades son muchas en este maravilloso mundo en el cual recién me estoy introduciendo, realmente me esta costando trabajo desarrollar estos componentes y superar los diferentes problemas que se me van presentando. pensé solicitar ayuda en el medio a algún desarrallador con experiencia en Java y me doy con la ingrata sorpresa que la mayoría de desarrolladores solo han trabajado con consultas simples en Web y el tema de Swing no lo conocen solo han desarrollado pequeñas aplicaciones y nada mas, bueno no me queda otra que seguir avanzando solo, se que podre cometer muchos errores pero tengo &lt;span style="font-weight: bold;"&gt;la idea de que es lo que quiero y eso es una fortaleza para mi.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Continuando con el desarrollo del objeto datawindow, el problema siguiente que se me presento fue como manejar argumentos de recuperación (Parámetros que se pasaran a una consulta y serán interpretados por esta en tiempo de ejecución) por ejemplo si yo desearía recuperar los datos de un cliente en particular la sentencia SQL se vería mas o menos así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SELECT * FROM CLIENTES WHERE CODIGO='100000'&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Pero que sucede si en tiempo de ejecución yo desearía seleccionar cualquier otro código diferente a '100000', la respuesta esta en los argumentos de recuperación que me permitirían a mi recuperar datos en función a un conjunto de parámetros, también debemos tener en cuenta que no siempre sera un parámetro sino que el numero de parámetros seria variable. &lt;span style="font-weight: bold;"&gt;Como podria implementear esto en Java ? &lt;/span&gt;la respuesta lo encontré en los argumentos variables Java incorpora esta funcionalidad apartir de la maquina virtual 1.5 y el único requerimiento que necesita es que los parámetros variables sean los últimos en ser declarados en el método por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public ejemplo(int opc, String... datos)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;En este ejemplo nos percatamos que se esta declarando al final de este método  el parámetro datos que seria un parámetro variable, los parámetros variables pueden ser de cualquier tipo, aquí unos ejemplos de como se podría llamar a este método:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ejemplo(1,"Hola1")&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;ejemplo(1,"Hola1","Hola2)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;ejemplo(1,"Hola1","Hola2","Hola3","Hola4")&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Todas esta maneras de llamar al método son validas el método tendrá la responsabilidad de analizar el numero de parámetros y procesarlos, para determinar el numero de parámetros solo tenemos que preguntar por su longitud en el ejemplo seria de esta manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;l=datos.length;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt; El diseñador de consultas que desarrolle también contempla la creación de argumentos de recuperación lo cual me da flexibilidad para el trabajo con datos.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-5097777357886351697?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/5097777357886351697/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=5097777357886351697' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5097777357886351697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5097777357886351697'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/java-datawindow-manipulacin-datos-en_14.html' title='Java Datawindow Manipulación Datos en Grid (IV)'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-148362638557265295</id><published>2008-01-13T22:41:00.000-08:00</published><updated>2008-01-14T12:51:46.110-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Datawindow Manipulación Datos en Grid (III)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;22 de Noviembre 2007&lt;br /&gt;Estoy con el tiempo muy recortado y creo que no terminare el primer modulo ya que en realidad no he tocado nada del sistema que tenia que desarrollar y fundamentalmente me he dedicado a crear las clases de objetos que serán el soporte para el desarrollo del sistema en si.&lt;br /&gt;Mis conocimientos en Java se han ampliado y veo las cosas con mas claridad, pero aun no estoy contento con los resultado obtenidos sobre todo con respecto al factor tiempo.&lt;br /&gt;Ya tengo una versión del objeto datawindow para realizar las pruebas veamoslo en acción.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R4sIGePHtyI/AAAAAAAAAUY/454e2dgJZLs/s1600-h/datawindow_accion1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R4sIGePHtyI/AAAAAAAAAUY/454e2dgJZLs/s320/datawindow_accion1.JPG" alt="" id="BLOGGER_PHOTO_ID_5155223105744385826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Aquí podemos ver en el código que el objeto datawindow me esta ayudando bastante pero, no considero adecuado que un sistema tenga muchas sentencias SQL embebidas esto a la largo podría restarle versatilidad al sistema e incrementar el esfuerzo del mantenimiento, ademas de tener muchas lineas de código para inicializar los arrays de visualización , edición, etc.  es algo muy operativo y tedioso, sinceramente no me gusta ver mi código de esa manera me pregunto si debería existir alguna manera de tener todos estos parámetros aparte, tener una especie de diseñador de datawindows y simplemente en mi código especificar el nombre de la consulta y de manera automática inicializar todos los arrasy seria muy bueno, esto seria lo ideal.&lt;br /&gt;Esta idea no es mala pero se retrasaría mi proyecto mas días, pero pensando que el sistema que desarrollare es grande creo que valdría la pena desarrollar algo así.&lt;br /&gt;&lt;br /&gt;Asi que empece a desarrollar el que para mi seria el generador de mis consultas, los datos de inicialización , colores texto, color de fondo, visible , editable todos estos valores deverias estar almacenados en algún sitio, así que para mi habían 2 alternativas almacenarlos en formato XML o almacenarlos en la base de datos, decidí almacenarlos en la base de datos no me pareció  la idea de tener muchos archivos XML por alli sueltos, así que cree las estructuras de tablas necesarias para almacenar los valores de los datawindows en una base de datos.&lt;br /&gt;Decidi  hacer la interfaz lo mas sencilla posible por cuestiones de tiempo pero debía ser funcional para permitirme seleccionar los valores de manera practica.&lt;br /&gt;Aqui unas capturas de pantallas del pequeño utilitario para crear los objetos datawindows.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R4sNYePHtzI/AAAAAAAAAUg/_P0TPFgFPsw/s1600-h/adatawindow1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R4sNYePHtzI/AAAAAAAAAUg/_P0TPFgFPsw/s320/adatawindow1.JPG" alt="" id="BLOGGER_PHOTO_ID_5155228912540170034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4sNYuPHt0I/AAAAAAAAAUo/NRbLnvrcOEY/s1600-h/adatawindow2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4sNYuPHt0I/AAAAAAAAAUo/NRbLnvrcOEY/s320/adatawindow2.JPG" alt="" id="BLOGGER_PHOTO_ID_5155228916835137346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R4sNY-PHt1I/AAAAAAAAAUw/M5RLfFGAmC4/s1600-h/adatawindow3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R4sNY-PHt1I/AAAAAAAAAUw/M5RLfFGAmC4/s320/adatawindow3.JPG" alt="" id="BLOGGER_PHOTO_ID_5155228921130104658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R4sNY-PHt2I/AAAAAAAAAU4/kYscA2oYNuU/s1600-h/adatawindow4.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R4sNY-PHt2I/AAAAAAAAAU4/kYscA2oYNuU/s320/adatawindow4.JPG" alt="" id="BLOGGER_PHOTO_ID_5155228921130104674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_74kp4h888ZA/R4sNZOPHt3I/AAAAAAAAAVA/9wLUhTEZXmI/s1600-h/adatawindow5.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_74kp4h888ZA/R4sNZOPHt3I/AAAAAAAAAVA/9wLUhTEZXmI/s320/adatawindow5.JPG" alt="" id="BLOGGER_PHOTO_ID_5155228925425071986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4sN2uPHt4I/AAAAAAAAAVI/9HDwlm_wRUw/s1600-h/adatawindow6.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4sN2uPHt4I/AAAAAAAAAVI/9HDwlm_wRUw/s320/adatawindow6.JPG" alt="" id="BLOGGER_PHOTO_ID_5155229432231212930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R4sN2-PHt5I/AAAAAAAAAVQ/1V5YVsew1mM/s1600-h/adatawindow7.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R4sN2-PHt5I/AAAAAAAAAVQ/1V5YVsew1mM/s320/adatawindow7.JPG" alt="" id="BLOGGER_PHOTO_ID_5155229436526180242" border="0" /&gt;&lt;/a&gt;Al desarrollar este programa, empece a probar los objetos que había desarrollado, detectando problemas y posibles errores de programación en estos objetos.  Ya estaba conociendo Java, este programa no es muy complejo de desarrollar &lt;span style="font-weight: bold;"&gt;lo mas importante en todo sistema es la idea la concepción de como se deben realizar las cosas, &lt;/span&gt;al finalizar este aplicativo aprendí muchas cosas&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;sobre el manejo de Swing esto me serviría mas adelante para el desarrollo en si del sistema.&lt;br /&gt;Este pequeño aplicativo me permite definir la sentencia SQL apartir de la cual se creara el datawindow. El aplicativo tiene tres pestañas:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li style="font-weight: bold;"&gt;Primer Pestaña de Ingreso de sentencia SQL y prueba de la consulta.&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;Segunda Pestaña grabar datos de la cabecera y detalle así como modificar los atributos de cada columna del datawindow, en esta pestaña también se puede recuperar datawindows creados para realizar algún ajuste de sus atributos.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Tercera pestaña nos permite visualizar el datawindows en modo de ejecución, aqui se nos permite seleccionar cualquier datawindows existente y visualizarlo en modo de ejecución.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; Uno de los problemas que se me presentaron es como poder seleccionar d&lt;span style="font-weight: bold;"&gt;iferentes estilos de edición&lt;/span&gt;  por cada celda del JTable , lo que se me ocurrió fue crear objetos en un Paquete el cual podría ser recorrido en tiempo de ejecución y determinar los objetos existentes en este y mostrarle a los usuarios los diferentes estilos de edición que podrían seleccionar. una vez realizado esto en tiempo de ejecución podría crear una clase dinamicamente así como de ejecutar ciertos métodos de la misma manera, esto lo pude realizar gracias a la reflexión que Java posee.&lt;br /&gt;Aqui una captura de pantalla con los diferentes estilos de edición:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R4uvaePHt6I/AAAAAAAAAVY/aJQNUWpPf6c/s1600-h/adatawindow8.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R4uvaePHt6I/AAAAAAAAAVY/aJQNUWpPf6c/s320/adatawindow8.JPG" alt="" id="BLOGGER_PHOTO_ID_5155407067783608226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Aqui el código que me permite mostrar los objetos existentes en un paquete:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R4uw8-PHt7I/AAAAAAAAAVg/UKtN3_srnnQ/s1600-h/aplicacion1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R4uw8-PHt7I/AAAAAAAAAVg/UKtN3_srnnQ/s320/aplicacion1.jpg" alt="" id="BLOGGER_PHOTO_ID_5155408760000722866" border="0" /&gt;&lt;/a&gt;Aca he realizado algunos filtros en función de los diferentes tipos de objeto, al final retorno el arraylist classes el cual contendrá los nombres de los diferentes objetos que se podrán utilizar como estilos de edición.&lt;br /&gt;El código que permite agregar y crear de manera dinámica un objeto como estilo de edición para una celda del JTable se muestra a continuación:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R4u-eePHt8I/AAAAAAAAAVo/ikKo-gvhI3A/s1600-h/datawindow9.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R4u-eePHt8I/AAAAAAAAAVo/ikKo-gvhI3A/s320/datawindow9.JPG" alt="" id="BLOGGER_PHOTO_ID_5155423629177501634" border="0" /&gt;&lt;/a&gt;Utilizando la función forName de la clase class podemos crear una clase apartir de su nombre, con la clase ya creada podemos instanciar un objeto de esta clase haciendo uso de la función newInstance, esta función nos retorna el objeto instanciado del tipo de clase creado anteriormente, la función getMethod me permitirá crear u método apartir de su nombre y los parámetros que se les proporcionen. Solamente nos queda llamar al método con la función invoke de la clase Method. De esta manera haciendo uso de la reflexión se ha podido crear dinamicamente el estilo de edición para la celda del JTable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Editcell1=new DefaultCellEditor((JComboBox)obj);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Cualquier duda sobre la implementación y sus detalles puedes preguntármelo y gustoso tratare de absolver tus dudas.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-148362638557265295?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/148362638557265295/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=148362638557265295' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/148362638557265295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/148362638557265295'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/java-datawindow-manipulacin-datos-en_1140.html' title='Java Datawindow Manipulación Datos en Grid (III)'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_74kp4h888ZA/R4sIGePHtyI/AAAAAAAAAUY/454e2dgJZLs/s72-c/datawindow_accion1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-3852790858025813998</id><published>2008-01-13T21:08:00.000-08:00</published><updated>2008-01-14T12:51:27.502-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Datawindow Manipulación Datos en Grid (II)</title><content type='html'>&lt;div style="text-align: justify;"&gt;20 Noviembre 2007&lt;br /&gt;&lt;br /&gt;Recordemos que la fecha de presentación del primer modulo del proyecto es el 30 de Noviembre del 2007 y la verdad que el tiempo me quedara corto, desconocía la magnitud del trabajo que me tomaría realizar las implemetaciones de estos Objetos, hasta donde estoy conociendo Java es un lenguaje muy potente y me obliga a pensar todo en objetos pero lo bueno es que todo se puede hacer esto me motiva y se que después de acabar con los objetos que me he propuesto mi desarrollo sera muy rápido.&lt;br /&gt;&lt;br /&gt;Ya descrita la implementación de la clase encargada del modelo de datos ahora mostrare la implementación del objeto que extenderá el JTable. Antes de esto describire que funcionalidades debería tener el Objeto datawindow:&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-weight: bold; text-align: justify;"&gt;&lt;li&gt;Deberá permitirme realizar la validación de campos&lt;/li&gt;&lt;li&gt;Me permitira personalizar el mensajes de error de validación&lt;/li&gt;&lt;li&gt;Los objetos encargados de la edición en cada celda estaran en función del tipo de datos&lt;/li&gt;&lt;li&gt;Los objetos de edicición que se utilizaran seran los implementados con anterioridad&lt;/li&gt;&lt;li&gt;Se podra especificar que columnas seran visibles&lt;/li&gt;&lt;li&gt;Se podrá especificar que columnas serán editables&lt;/li&gt;&lt;li&gt;Se podrán especificar los colores de texto y fondo de cada celda&lt;/li&gt;&lt;li&gt;Se podrá especificar los títulos de cada columna&lt;/li&gt;&lt;li&gt;Se podrá especificar el ancho de cada columna&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Decidí implementar estas propiedades como array según los diferentes tipos de datos, aqui muestro la declaración de la clase:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4r3k-PHtsI/AAAAAAAAATo/hGvAVVW3fTc/s1600-h/datawindow6.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4r3k-PHtsI/AAAAAAAAATo/hGvAVVW3fTc/s320/datawindow6.JPG" alt="" id="BLOGGER_PHOTO_ID_5155204938032723650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4r38-PHttI/AAAAAAAAATw/fvrAsadgN0Y/s1600-h/datawindow7.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4r38-PHttI/AAAAAAAAATw/fvrAsadgN0Y/s320/datawindow7.JPG" alt="" id="BLOGGER_PHOTO_ID_5155205350349584082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Posiblemente podría aver declarado las propiedades utilizando otros tipos de datos mucho mas eficientes, pero en fin estoy contra el tiempo y espero poder afinar esto de los tipos de datos mas adelante.&lt;br /&gt;Este objeto deberá inicializar los arrays así como inicializar la propiedad del modelo de datos PModelo_data, etc.&lt;br /&gt;Dentro de las propiedades mas importantes de este objeto podemos ver el modelo de datos (PModelo_data) la conexión a la base de datos (PSqlca) el modelo de Columnas (PModelo_columnas del tipo TableColumnModel) y los eventos de las columnas del tipo TableColumnModelListener.&lt;br /&gt;Este objeto implemetara los metodos siguientes:&lt;br /&gt;&lt;ul style="font-weight: bold; text-align: justify;"&gt;&lt;li&gt;Insertrow&lt;/li&gt;&lt;li&gt;Deleterow&lt;/li&gt;&lt;li&gt;Retrieve&lt;/li&gt;&lt;li&gt;Getvalue&lt;/li&gt;&lt;li&gt;Setvalue&lt;/li&gt;&lt;li&gt;Close&lt;/li&gt;&lt;li&gt;Update&lt;/li&gt;&lt;li&gt;Getcolumnname&lt;/li&gt;&lt;li&gt;Rowcount&lt;/li&gt;&lt;li&gt;Commit&lt;/li&gt;&lt;li&gt;Updaterow&lt;/li&gt;&lt;/ul&gt;Básicamente estos métodos  llaman a los métodos con el mismo nombre de la clase datastore y teniendo en cuenta la actualización del JTable atraves de los métodos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;fireTableRowsInserted&lt;/li&gt;&lt;li&gt;fireTableRowsDeleted&lt;/li&gt;&lt;li&gt;fireTableRowsUpdated&lt;/li&gt;&lt;/ul&gt;También se han creado métodos Setvalue1 y Getvalue1 los cuales actúan sobre la fila actual y solamente se debe especificar la columna y el valor según sea el caso, estos métodos así como los anteriores están sobrecargados para aceptar su llamada ya sea po0r el numero de la columna o por el nombre  de esta.&lt;br /&gt;&lt;br /&gt;El JTable deja el manejo de os datos a su modelo y tiene una presentación de los datos en función a la clase de estos, esta clase se devuelve en el método getColumnClass del modelo de datos, por ejemplo lo datos tipo  texto en un JTextfiel y los datos lógicos en un JCheckbox y así de igual manera con los otros datos. Esto es para la edición la cual es la por defecto pero esto queda a la libertad del programador cambiarlos. La presentación de los datos se realiza con una etiqueta (Jlabel) por defecto, una cosa es la edición de los datos y otra la visualización de estos. Para realizar la personalización de la visualización para el JTable se debe utiliza una  clase basada en DefaultTableCellRenderer la cual nos permitirá controlar la presentación de los datos.&lt;br /&gt;Aqui la implementación de una clase que tendrá la función de mostrarnos los datos según los colores que se hayan configurado así como de otras condiciones mas:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4sBPuPHtuI/AAAAAAAAAT4/br07t9BCcRk/s1600-h/cellrender1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4sBPuPHtuI/AAAAAAAAAT4/br07t9BCcRk/s320/cellrender1.JPG" alt="" id="BLOGGER_PHOTO_ID_5155215568076781282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4sBPuPHtvI/AAAAAAAAAUA/kp61Gg1r8_s/s1600-h/cellrender2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4sBPuPHtvI/AAAAAAAAAUA/kp61Gg1r8_s/s320/cellrender2.JPG" alt="" id="BLOGGER_PHOTO_ID_5155215568076781298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4sBPuPHtwI/AAAAAAAAAUI/RIOwO9JJmOQ/s1600-h/cellrender3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4sBPuPHtwI/AAAAAAAAAUI/RIOwO9JJmOQ/s320/cellrender3.JPG" alt="" id="BLOGGER_PHOTO_ID_5155215568076781314" border="0" /&gt;&lt;/a&gt;&lt;span&gt;Cualquier duda sobre la implementación y sus detalles puedes preguntármelo y gustoso tratare de absolver tus dudas.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-3852790858025813998?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/3852790858025813998/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=3852790858025813998' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3852790858025813998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3852790858025813998'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/java-datawindow-manipulacin-datos-en_13.html' title='Java Datawindow Manipulación Datos en Grid (II)'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_74kp4h888ZA/R4r3k-PHtsI/AAAAAAAAATo/hGvAVVW3fTc/s72-c/datawindow6.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-8816816623882472939</id><published>2008-01-10T19:47:00.000-08:00</published><updated>2009-10-28T21:06:12.902-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerBuilder'/><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>El año 2000, Mucho Desarrollo y el Inicio en el mundo de las comunicaciones</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Software de Ventas, Compras y Almacén&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En el 2000 empecé un proyecto en una empresa de computo, el sistema lo desarrolle en aprox. 2 meses en los cuales entro en producción satisfaciendo los requerimientos y objetivos de la empresa. Los usuarios se sentían contentos con la forma del trabajo del sistema por la facilidad y la interfaz amigable con el que contaba el sistema utilizaba Drag and Drop para facilitar la creación de los documentos de ventas. Las herramientas que utilice fueron PowerBuilder y MS Sql Server, este sistema se convertiría con el tiempo en la base de uno de mis sistemas más solicitados en estos últimos 10 años, este sistema tuvo mucho éxito adaptándose para diferentes giros de negocio como:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Tiendas de Computo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Ferreterías&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Grifos&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Farmacias&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Madereras&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El año 2000 este software se instalo en una empresa de cómputo, un grifo y una ferretería.&lt;br /&gt;Actualmente este sistema que ya cumplió sus 10 años me lo siguen solicitando para los diferentes rubros de negocios en los cuales los procesos de ventas, compras y facturación son los puntos fuertes del negocio.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;DELPHI &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Delphi 5, estaba en el mercado y yo me había quedado en Turbo pascal 7, el lenguaje pascal  me trae muchísimos recuerdos de mi vida universitaria pues con el aprendí a programar y desarrolle muchos aplicativos con este lenguaje, así que me dije veamos cuanto a evolucionado y probemos esta herramienta.&lt;br /&gt;Normalmente lo que suelo hacer para aprender un nuevo lenguaje de programación u un conjunto de clases y entender su filosofía desarrollo mi aplicativo del tiempo universitario el famoso grafico de funciones matemáticas y los proceso de solución de sistemas de ecuaciones y determinantes, cuando termino el desarrollo de esto recién empiezo con el desarrollo del proyecto en sí. Los aplicativos que desarrolle con Delphi son los siguientes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Método Simplex (programación Lineal)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Calculadora Científica, Gráficos de Funciones operaciones matemáticas (sistemas de ecuaciones, derivadas, integrales y determinantes).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Generación de impresión de códigos de barras&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Software de comunicación serial y transferencia de archivos&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Muchas DLL que serian llamadas principalmente de PowerBuilder&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Control OCX para graficar funciones matemáticas de cualquier tipo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;C/C++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En ese mismo año empecé a desarrollar un proyecto de comunicaciones que implementaba un navegador Web el cual se comunicaba a un proceso servidor para el control de cibercafés.&lt;br /&gt;La base de programación para el desarrollo del Navegador Web fue el ActiveX de Internet Explorer el cual lo trabaje con visual C++ 6.0 y todo el proceso de comunicaciones a nivel de Socket utilizando la MFC.&lt;br /&gt;Normalmente lo que suelo hacer para aprender un nuevo lenguaje de programación u un conjunto de clases y entender su filosofía desarrollo mi aplicativo del tiempo universitario el famoso grafico de funciones matemáticas y los proceso de sistemas de ecuaciones y determinantes cuando termino el desarrollo de esto recién empiezo con el desarrollo del proyecto en sí.&lt;br /&gt;De esta manera me motivo y logro grandes cosas en poco tiempo.&lt;br /&gt;Cuando empiezo a desarrollar el proyecto ya tengo una buena base y el desarrollo se hace mucho más sencillo.&lt;br /&gt;El proyecto se termino y se entrego funcionando Ok, este proyecto lo tengo muy en mente pues gracias a él me introduje en el mundo de las comunicaciones y  los Sockets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-8816816623882472939?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/8816816623882472939/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=8816816623882472939' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/8816816623882472939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/8816816623882472939'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2009/10/el-ano-2000-mucho-desarrollo-y-el.html' title='El año 2000, Mucho Desarrollo y el Inicio en el mundo de las comunicaciones'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-2524885720669758819</id><published>2008-01-09T10:04:00.000-08:00</published><updated>2009-10-30T09:37:33.109-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerBuilder'/><category scheme='http://www.blogger.com/atom/ns#' term='Anecdotas'/><title type='text'>UNS Sistema de Planillas/ Control de personal</title><content type='html'>&lt;div style="text-align: justify;"&gt;Después de renunciar a la Agroindustria San Jacinto, estuve desarrollando todo el año 1999 y 2000 principalmente en la Universidad Nacional de la Santa y el SIMA Chimbote.&lt;br /&gt;&lt;br /&gt;El primer sistema que desarrolle en la UNS fue el &lt;span style="font-weight: bold;"&gt;sistema de planillas&lt;/span&gt; el cual tiene una historia.&lt;br /&gt;La UNS por ser una universidad del estado está sujeta a la burocracia y los temas administrativos propio de instituciones de este tipo. Pero también me enfrentaba a otro problema la confianza que tenía la administración de poner este proyecto en las manos de unos de sus egresados, aunque suene contradictorio la parte administrativa no confiaba en el potencial y la capacidad de sus egresados es escuchaba comentarios como los siguientes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Como va desarrollar UNS sistema tan complejo como el de planillas donde ni gente de Lima ni Huaraz han tenido éxito.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• No creo que lo desarrolle si mira la clase de docentes que ha tenido&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;• Esperemos es cuestión de meses para ver como el sistema nunca funcionara.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yo ya tenia la experiencia del desarrollo en San Jacinto con los 4 sistemas que desarrolle esto me daba la seguridad de desarrollar el proyecto.&lt;br /&gt;Tuve un gran apoyo de un amigo entrañable (Víctor P.) que me daba confianza y apoyo, el tema de este sistema se transformo en un reto personal de demostrar a la gente de los que se era capaz, el desarrollo empezó inicios de Abril de 1999; la primera planilla se probo finales de mayo y entro en funcionamiento para el mes de Junio de ese mismo año.&lt;br /&gt;En ese lapso de tiempo me enfrente a muchos problemas de diferente índole, pero finalmente el proyecto se termino satisfactoriamente.&lt;br /&gt;Como desarrollador de Software uno se siente contento cuando un sistema tiene una vida no menor de 5 años, fue el tiempo que estime que mi sistema funcionaria y para mi sorpresa el sistema funciono hasta inicios del 2007. Según el comentario de los usuarios que trabajaron con el sistema este pudo realizar los procesos y cálculos de manera correcta, he escuchado muchas críticas positivas tal es así que hasta la fecha se comenta que fue el mejor sistema con el cual los usuarios de planillas han trabajado.&lt;br /&gt;Finalizado el sistema de planillas empezamos con el sistema de registro de personal el cual se desarrollo utilizando las siguientes herramientas:&lt;br /&gt;&lt;br /&gt;• PowerBuilder&lt;br /&gt;• Ms Sql Server&lt;br /&gt;• Sybase Adaptive Server&lt;br /&gt;&lt;br /&gt;El sistema leía a través de un lector de código de barras el código del trabajador registrando los datos de este en el sistema, también se contemplaban la cuantificación de los descuentos por tardanzas e inasistencias que tenían que reflejar en el sistema de planillas. El sistema funcionaba en línea cuando el trabajador se registraba se podía visualizar la información en el dpto. de personal, el sistema utilizaba la tecnología &lt;span style="font-weight: bold;"&gt;text to speech&lt;/span&gt; para pronunciar el nombre del trabajador registrado así como mostrar su fotografía en el sistema.&lt;br /&gt;&lt;br /&gt;Anteriormente en la versión de PowerBuilder 6.5 se podía crear servidores de aplicaciones que utilizándolos con objetos proxy se realizaba un desarrollo de N capas. Utilizábamos esta tecnología para los objetos de la lógica del negocio.&lt;br /&gt;&lt;br /&gt;En aquel entonces las redes inalámbricas no eran tan usadas y conocidas como hoy debido al alto costo que esto involucraba. Teníamos 2 Locales que comunicar El campus Universitario y Las oficinas administrativas, por ese entonces la UNS no contaba con internet para lo cual solo contábamos con  una línea telefónica.&lt;br /&gt;Se desarrollo un aplicativo para establecer una comunicación entre estos 2 locales, se realizaron 2 versiones del programa de comunicaciones realizando las pruebas con un cable modem null, en este punto 2 amigos me estuvieron apoyando para realizar las comunicaciones David P.  Miguel B. después de superar algunos problemas el programa de comunicaciones quedo OK, de esta manera se demostró de manera fehaciente la capacidad y calidad de las soluciones informáticas que se estaban brindando.&lt;br /&gt;recuerdo que le realizamos una demostración a las autoridades y en ese entonces el Decano de ingeniería había regresado de México de una maestría y su comentario &lt;span&gt;fue:&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;"no he visto cosas así por allá con el uso tan avanzado de tecnología"&lt;/span&gt;&lt;br /&gt;En este proyecto aprendí cosas muy interesantes con respecto a las comunicaciones seriales y en general y se me abría otro mundo muy interesante para el cual en su momento estaría preparado.&lt;br /&gt;Las tecnologías en este proyecto fueron &lt;span style="font-weight: bold;"&gt;Sistemas de N capas, Codigos de Barra, text To Speech y comunicaciones seriales.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-2524885720669758819?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/2524885720669758819/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=2524885720669758819' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/2524885720669758819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/2524885720669758819'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2009/10/uns-sistema-de-planillas-control-de.html' title='UNS Sistema de Planillas/ Control de personal'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-2122726392784304677</id><published>2008-01-07T23:43:00.000-08:00</published><updated>2008-01-14T12:51:11.319-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Datawindow Manipulación Datos en Grid (I)</title><content type='html'>&lt;div style="text-align: justify;"&gt;16 de Noviembre del 2007&lt;br /&gt;Desarrollado y probado el objeto datastore, el siguiente paso seria crear un objeto basado en el JTable para manipular y presentar datos. Este objeto seria para mi el Java datawindow.&lt;br /&gt;&lt;br /&gt;Conforme pasaban los días mis conocimientos en java se iban incrementado pero no eran los suficiente para poder desarrollar con mas rapidez el proyecto, habían momentos en los cuales la desesperación me embargaba.&lt;br /&gt;&lt;br /&gt;El JTable es un objeto muy potente y complejo a la vez, la mayoría de objetos Swing manejan el paradigma vista/controlador. Este paradigma básicamente consiste en que debe haber un objeto encargado de manipular y operar los datos y otro objeto es el encargado de presentarlos.&lt;br /&gt;&lt;br /&gt;El objeto JTable al utilizar  el modelo vista controlador necesita de un objeto derivado de &lt;span style="font-weight: bold;"&gt;AbstractTableModel &lt;/span&gt;para poder realizar la gestión de los datos.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AbstractTableModel &lt;/span&gt;es una clase abstracta por lo cual se deberán  implementar los siguientes métodos:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;public Class getColumnClass(int i)&lt;/li&gt;&lt;li&gt;public String getColumnName(int c)&lt;/li&gt;&lt;li&gt;public int getColumnCount()&lt;/li&gt;&lt;li&gt;public Object getValueAt(int r, int c)&lt;/li&gt;&lt;li&gt;public int getRowCount()&lt;/li&gt;&lt;li&gt;public void setValueAt( Object valor, int fila, int col )&lt;/li&gt;&lt;li&gt;public boolean isCellEditable( int fila, int col )&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;La mayoría de estos métodos segun su nombre nos hacen suponer cual es su función, asi que me centrare en los métodos que pudieran haber confusión:&lt;br /&gt;El método getValueAt nos permite leer el valor de la celda especificada por la fila y columna (Recordar que la fila y columna empiezan por 0) esto objeto nos devolverá un tipo de datos Object el cual deberá ser interpretado de manera adecuada por nuestro programa.&lt;br /&gt;El método setvalueAt nos permite modificar un valor especificando la fila y columna del JTable.&lt;br /&gt;El método isCellEditable es el encargado de especificar cuando una celda se puede editar tomando como parámetros la fila y la columna.&lt;br /&gt;&lt;br /&gt;Aqui podemos ver la declaración así como su constructor  de la clase que implementara el modelo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R4reDOPHtnI/AAAAAAAAATA/qOQJ4K6dnNY/s1600-h/datawindow1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R4reDOPHtnI/AAAAAAAAATA/qOQJ4K6dnNY/s320/datawindow1.JPG" alt="" id="BLOGGER_PHOTO_ID_5155176870421444210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En la declaración de la clase &lt;span style="font-weight: bold;"&gt;public class Datawindowmodelozp extends AbstractTableModel implements TableModelListener &lt;/span&gt;nos percatamos que aparte de extender la clase AbstractTableModel también estamos implementando la interfaz TableModelListener esto sera necesario si deseamos controlar las modificaciones que se puedan realizar en la tabla, esto se hace con el siguiente metodo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public void tableChanged(TableModelEvent e)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Este método pertenece a la interfaz &lt;span style="font-weight: bold;"&gt;TableModelListener &lt;/span&gt;&lt;span&gt;el cual debe ser implementado en nuestra clase.&lt;br /&gt;Fijándonos en la declaración de las propiedades de nuestra clase observamos la variable &lt;span style="font-weight: bold;"&gt;PData &lt;/span&gt;&lt;/span&gt;&lt;span&gt;que viene hacer un objeto datastore, esta propiedad sera la encargada de realizar la recuperación de los datos.  En los métodos de la clase &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;AbstractTableModel &lt;/span&gt;que se implemetaran la propiedad PData sera la encargada de realizar la entrega de los datos así como las modificaciones de estos.&lt;br /&gt;&lt;/div&gt;&lt;span&gt;Aqui la implementación de estos métodos:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4rnY-PHtoI/AAAAAAAAATI/nbq4NP-dk8k/s1600-h/datawindow2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4rnY-PHtoI/AAAAAAAAATI/nbq4NP-dk8k/s320/datawindow2.JPG" alt="" id="BLOGGER_PHOTO_ID_5155187139688248962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4rnY-PHtpI/AAAAAAAAATQ/AXbbMmN9XYo/s1600-h/datawindow3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4rnY-PHtpI/AAAAAAAAATQ/AXbbMmN9XYo/s320/datawindow3.JPG" alt="" id="BLOGGER_PHOTO_ID_5155187139688248978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R4rnZOPHtqI/AAAAAAAAATY/COlypwrEw4o/s1600-h/datawindow4.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R4rnZOPHtqI/AAAAAAAAATY/COlypwrEw4o/s320/datawindow4.JPG" alt="" id="BLOGGER_PHOTO_ID_5155187143983216290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En el código anterior nos percatamos la transformación que se realiza con las filas y columnas ya que para el JTable las filas y columnas empezaran desde 0 y para el datastore &lt;span style="font-weight: bold;"&gt;(PData)&lt;/span&gt; empezaran desde 1, aparte de ello podemos observar que siempre se verifica la propiedad POpen del datastore, esto se hace con el fin de verificar si el datastore se encuentra abierto o no.&lt;br /&gt;La propiedad PCheckbox es una array de booleanos el cual nos indica cuando un campo es logico o no, aqui es necesario aclarar que como para este proyecto trabajo con Firebird el cual no dispone de campos de tipo lógicos los cuales los implemento como char(1) y realizo la conversión necesaria en los métodos anteriores.&lt;br /&gt;Esta clase implementa  otros métodos dentro de los cuales mencionare el método Conectardb() y el método Retrieve() por la importancia que tienen para este objeto la implemtación de estos métodos lo podemos visualizar en la siguiente pantalla:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R4rrBuPHtrI/AAAAAAAAATg/NA1cyZ6fEts/s1600-h/datawindow5.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R4rrBuPHtrI/AAAAAAAAATg/NA1cyZ6fEts/s320/datawindow5.JPG" alt="" id="BLOGGER_PHOTO_ID_5155191138302801586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hasta este punto solo me he dedicado a describir el modelo de datos que sera el encargado de interactivo con el JTable en las entradas siguientes continuaremos con la explicación de los metodos que tuve que implemntar e el JTable.&lt;br /&gt;&lt;br /&gt;Cabe hacer una aclaración que este enfoque y la manera de implementar los métodos están en constante cambio ya que el proyecto esta en evolución y mis habilidades con Java se van incrementando. Recordemos Tambien que estoy contra el Tiempo y lógicamente mas adelante iré puliendo estos métodos pero la idea principal seguirá.&lt;br /&gt;Cualquier duda sobre la implementación y sus detalles puedes preguntármelo y gustoso tratare de absolver tus dudas.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-2122726392784304677?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/2122726392784304677/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=2122726392784304677' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/2122726392784304677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/2122726392784304677'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/java-datawindow-manipulacin-datos-en.html' title='Java Datawindow Manipulación Datos en Grid (I)'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_74kp4h888ZA/R4reDOPHtnI/AAAAAAAAATA/qOQJ4K6dnNY/s72-c/datawindow1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-8986326340500847804</id><published>2008-01-07T22:30:00.000-08:00</published><updated>2008-01-14T12:50:01.196-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Datastore el Pilar de acceso a los datos</title><content type='html'>&lt;div style="text-align: justify;"&gt;12 Noviembre 2007&lt;br /&gt;&lt;br /&gt;Con las disculpas a todos los programadores de Java, la nomenclatura que utilizare para las objetos provienen de la costumbre de programar en PowerBuilder.&lt;br /&gt;Creando el Objeto Java Datastore, este objeto seria un objeto no visual, a continuación la declaración y el constructor:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R4Mas-PHtdI/AAAAAAAAARw/bMLOO4TPwTk/s1600-h/datastore1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 420px; height: 290px;" src="http://bp3.blogger.com/_74kp4h888ZA/R4Mas-PHtdI/AAAAAAAAARw/bMLOO4TPwTk/s320/datastore1.JPG" alt="" id="BLOGGER_PHOTO_ID_5152991758564963794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Como podemos ver, las propiedades principales son :&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-weight: bold; text-align: justify;"&gt;&lt;li&gt;PSqlca Objeto Conexión&lt;br /&gt;&lt;/li&gt;&lt;li&gt;rs Objeto Resultset&lt;/li&gt;&lt;li&gt;rsm Objeto Resultsetmetadata&lt;/li&gt;&lt;li&gt;stm  Objeto Statatement&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;El objeto &lt;span style="font-weight: bold;"&gt;PSqlca&lt;/span&gt; me permitirá tener una sola conexión ya que esta sera un parámetro del constructor del objeto, generalmente en las ventanas podre manejar varios objetos datastore con una única conexión permitiéndome de esta manera cierto nivel de control de las transacciones sobre el conjunto de datos en una ventana.&lt;br /&gt;&lt;br /&gt;El Objeto &lt;span style="font-weight: bold;"&gt;rs &lt;/span&gt;es el encargado de realizar todas las operaciones de recuperación y manipulación de datos.&lt;br /&gt;&lt;br /&gt;El Objeto &lt;span style="font-weight: bold;"&gt;rsm &lt;/span&gt;me permitirá recuperar la metadata de los campos ayudándome a determinar los tipos de datos, nombres de las columnas, tamaño, etc.&lt;br /&gt;&lt;br /&gt;Este Objeto implementara principalmente los siguientes métodos:&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-weight: bold; text-align: justify;"&gt;&lt;li&gt;Insertrow&lt;/li&gt;&lt;li&gt;Deleterow&lt;/li&gt;&lt;li&gt;Retrieve&lt;/li&gt;&lt;li&gt;Getvalue&lt;/li&gt;&lt;li&gt;Setvalue&lt;/li&gt;&lt;li&gt;Close&lt;/li&gt;&lt;li&gt;Update&lt;/li&gt;&lt;li&gt;Getcolumnname&lt;/li&gt;&lt;li&gt;Rowcount&lt;/li&gt;&lt;li&gt;Commit&lt;/li&gt;&lt;li&gt;Updaterow&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Lógicamente que el total de métodos que implementa este Objeto son mucho mas. Internamente se realizan las validaciones de los diferentes tipos de datos realizando las transformaciones cuando sean pertinentes. De todos los métodos que menciono en la lista de repente vale la pena aclarar sobre el método Updaterow(), este método tiene la función de actualizar el registro actual del resultset pero sin realizar un commit para aceptar la transacción, la función Update() es la encargada de procesar la transacción.&lt;br /&gt;&lt;br /&gt;Las conexiones que utilizare en el sistemas tendrán desactivada la propiedad autocommit permitiéndome aceptar o rechazar la transacción según sea el caso.&lt;br /&gt;&lt;br /&gt;Los Objetos Resultset tienen una forma particular de realizar las inserciones de un registro, esto se realiza en 2 pasos, primero se tiene que llamar a la función moveToInsertRow() la cual nos lleva a un buffer donde se realizara la inicializacion de los campos y de la llave primaria( Es responsabilidad de este objeto inicializarla) , en este momento se utilizaran las funciones updateXXX (xxx dependiendo del tipo de datos), hasta este momento los datos de inserción solo existen en un buffer, para volcar estos datos en el resultset se llama a la función insertRow(), es aquí donde los datos serán volcados a la base de datos.&lt;br /&gt;Aqui se nos presenta un problema como el Objeto datastore sabrá que campos son la llave primaria ? para solucionar este problema el objeto implementa un método cuya función es almacenar en un array de String(Cadenas) los nombres de las columnas que son llaves primarias. Aquí el código del método:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4MgnuPHteI/AAAAAAAAAR4/4-kwsKysNxk/s1600-h/datastore2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 382px; height: 259px;" src="http://bp2.blogger.com/_74kp4h888ZA/R4MgnuPHteI/AAAAAAAAAR4/4-kwsKysNxk/s320/datastore2.JPG" alt="" id="BLOGGER_PHOTO_ID_5152998265440417250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Aqui vemos el uso de diferentes funciones las cuales no describiré ya que seria demasiado extenso el tema, sugiero a los lectores buscar en la ayuda para mas detalles de cada una de ellas.&lt;br /&gt;Una vez conocido que campos son la llave primaria el objeto podrá inicializar sus valor teniendo en cuenta el tipo de datos, si no se inicializaran los valores antes de llamar  a la función insertRow() en el momento de la inserción, el controlador Jdbc nos arrojaría un error de que la llave primaria no debe ser nula, el objeto implementa un método para tal caso.&lt;br /&gt;&lt;br /&gt;Otro problema interesante con el cual me encontré es como el controlador Jdbc en mi caso Jaybird determinaría cuando un campo es autoincremental en la base de datos. Esto dependerá mucho del motor de base de datos  con el cual se este trabajando, en mi caso Firebird implementa  los campos autoincrementales haciendo uso de Generadores y disparadores . Jaybird  no me detecta correctamente los campos que son incrementales, en este caso tuve que implementar un método en el objeto para que me determine este dato, aquí el código del método:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R4MjnePHtfI/AAAAAAAAASA/uA_FDk1jXVI/s1600-h/datastore3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R4MjnePHtfI/AAAAAAAAASA/uA_FDk1jXVI/s320/datastore3.JPG" alt="" id="BLOGGER_PHOTO_ID_5153001559680333298" border="0" /&gt;&lt;/a&gt;Nuevamente cabe recalcar que este método solo funcionara con Firebird ademas de tener en cuenta una nomenclatura especifica para los generadores, el cual estará en función de la tabla y columna como se muestra en el código, posiblemente otros controladores  Jdbc ya tengan este método implementado. Como se puede apreciar la solución que planteo se basa en el uso del repositorio de Firebird.&lt;br /&gt;El problema subsiguiente por cuestión lógica es recuperar el valor del campo autoincremental para lo cual implemente otro método que realiza esta función, como el manejo del repositorio de Firebird no esta muy difundido también pongo el código aquí:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R4Mm2ePHthI/AAAAAAAAASQ/L5bcOQO0gj8/s1600-h/datastore4.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R4Mm2ePHthI/AAAAAAAAASQ/L5bcOQO0gj8/s320/datastore4.JPG" alt="" id="BLOGGER_PHOTO_ID_5153005115913254418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Como es de pensar este objeto tiene muchos métodos y describirlos todos me demandaría muchas hojas y perdería el sentido genérico que pretendo dar sobre los problemas presentados en el desarrollo de este proyecto.&lt;br /&gt;Con mucho gusto aclarare cualquier duda al respecto sobre este objeto solo tienes que preguntar.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-8986326340500847804?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/8986326340500847804/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=8986326340500847804' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/8986326340500847804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/8986326340500847804'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/java-datastore-el-pilar-de-acceso-los.html' title='Java Datastore el Pilar de acceso a los datos'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_74kp4h888ZA/R4Mas-PHtdI/AAAAAAAAARw/bMLOO4TPwTk/s72-c/datastore1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-7756158885586162412</id><published>2008-01-06T22:06:00.000-08:00</published><updated>2008-01-07T23:41:25.429-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java y los problemas</title><content type='html'>&lt;div style="text-align: justify;"&gt;10 Noviembre 2007&lt;br /&gt;&lt;br /&gt;Lo que relatare es lo que le sucede a la mayoría de desarrolladores de sistemas para empresas cuando desean incursionar en el mundo de Java, en mi caso la mayoría de sistema que realice para empresas lo he desarrollado en PowerBuilder, que realmente es una herramienta excelente para el trabajo con base de datos y esto lo digo sin el animo de menospreciar a otros lenguajes de programación.&lt;br /&gt;Una de las características mas impresionantes de PowerBuilder es su control DataWindows el cual ayuda en el mantenimiento y reportes de datos, asi que muchos desarrolladores sabrán a lo que me refiero, este control incrementa tremendamente la productividad en el desarrollo de aplicaciones con esta Herramienta.&lt;br /&gt;&lt;br /&gt;Entonces cuando empece ha desarrollar este proyecto me pregunte y Java que control similar a un datawindow o datastore (Datawindow no visual) la respuesta fue no existe un componente similar que nos ayude en el la interacción de datos.&lt;br /&gt;Aqui les muestro una captura de pantalla donde se compara las lineas de código para realizar un mantenimiento sencillo de datos en Java y en PowerBuilder&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4HKzOPHtbI/AAAAAAAAARg/-1YKQGTa5WU/s1600-h/java_powerBuilder.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4HKzOPHtbI/AAAAAAAAARg/-1YKQGTa5WU/s320/java_powerBuilder.JPG" alt="" id="BLOGGER_PHOTO_ID_5152622430032213426" border="0" /&gt;&lt;/a&gt;Esto de repente para algunas consultas Web donde se interactua con pocas tablas es permisible pero en sistemas donde se trabaja con varias tablas simultáneamente y las operaciones de mantenimiento son intensas, esto es impensable &lt;span style="font-weight: bold;"&gt;y recordemos que estaba contra el tiempo &lt;/span&gt;ya había pasado la primera semana y lo único que había hecho es seleccionar las herramientas para desarrollar el proyecto ademas de darme cuenta que estaba en un aprieto.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Jaybird &lt;/span&gt; me permite el uso de cursores actualizables y desplazables con esto aceleraria un poco el desarrollo, asi que pense si voy a desarrollar un sistema que finalizado tendra mas de 100 ventanas donde se interactuara en muchos casos con mas 7 tablas por ventana, tengo que tener objetos que me ayuden a desarrollar rápidamente el sistema abstrayendo la complejidad del código.&lt;br /&gt;Así que me propuse  desarrollar los objetos que me apoyarían en el desarrollo de aplicaciones con base de datos. La lista de los componentes ha desarrollar serian:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Componente similar a un datastore(Datawindow no visual)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Componente Similar a un datawindow  Basado en JTable (Grid)&lt;/li&gt;&lt;li&gt;Componente Similar a un datawindow  Tabular&lt;/li&gt;&lt;li&gt;Componentes para la edición de datos texto&lt;/li&gt;&lt;li&gt;Componentes para la edición de datos Numéricos&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Componentes para la edición de datos tipo Fecha&lt;/li&gt;&lt;li&gt;Componente Combobox data (Vinculado a una Consulta)&lt;/li&gt;&lt;/ul&gt;Logicamente que estos no son los unicos componentes que he creado pero son los mas importantes. Estos componentes se deberían crear a partir de los componentes Swing base, descarte el uso de  OpenSwing pq' la verdad no me gusta su apariencia. Hasta el momento de escribir estas lineas (Enero del 2008)  desconozco  la existencia  de componentes que sean libres y permitan las funcionalidades que  he necesitado.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-7756158885586162412?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/7756158885586162412/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=7756158885586162412' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/7756158885586162412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/7756158885586162412'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/java-y-los-problemas.html' title='Java y los problemas'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_74kp4h888ZA/R4HKzOPHtbI/AAAAAAAAARg/-1YKQGTa5WU/s72-c/java_powerBuilder.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-5789034691671369767</id><published>2008-01-06T21:46:00.000-08:00</published><updated>2008-01-07T23:41:52.209-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Mi primer Proyecto en Java</title><content type='html'>&lt;div style="text-align: justify;"&gt;1 Noviembre 2007&lt;br /&gt;&lt;br /&gt;En Noviembre del 2007 empece a introducirme al mundo de Java a tiempo completo, una empresa me solicito que desarrollo un sistema netamente utilizando software libre, este sistema debería presentar una interfaz rica permitiendo a los usuarios una interacción adecuada con el sistema, a lo cual yo propuse utilizar Java como Lenguaje de programación Firebird como gestor de base de datos, para modelador Dbdesigner.&lt;br /&gt;Lo primero que hice fue buscar el IDE mas adecuado para el desarrollo de este sistema, realizando una comparación entre Eclipse  Europa y Netbeans 6.0 , me incline por Netbeans por lo siguiente:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Matisse Para crear GUIs ya que el proyecto debería ser Desktop.&lt;/li&gt;&lt;li&gt;Un Excelente editor con autocompletación en código&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Historia Local&lt;/li&gt;&lt;li&gt;Excelente para realizar depuración&lt;/li&gt;&lt;li&gt;soporte integrado para Subversión&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Como controlador Jdbc utilizaria Jaybird 2.1 para la conexión a la base de datos.&lt;br /&gt;&lt;br /&gt;Yo me había trazado un cronograma de trabajo en el cual el sistema estaba dividido en tres subsistemas los cuales se deberían presentar a fines de cada mes, es decir mi primer avance debería presentarse el 30 de Noviembre del 2007, lo cual no llegue a cumplir y de  aqui en las siguientes entradas les relatare  los problemas que se me presentaron.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-5789034691671369767?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/5789034691671369767/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=5789034691671369767' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5789034691671369767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5789034691671369767'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/mi-primer-proyecto-en-java.html' title='Mi primer Proyecto en Java'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-5928091590962657084</id><published>2008-01-06T21:28:00.000-08:00</published><updated>2008-01-07T08:19:19.959-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Conociendo Java</title><content type='html'>&lt;div style="text-align: justify;"&gt;A inicios del 2006, decidí realizar unas pruebas con java, siempre había escuchado hablar mucho de este lenguaje, sintaxis prácticamente igual C++ , netamente orientado a Objetos , multiplataforma, ademas de poder desarrollar aplicaciones en Web, con servidores de aplicaciones, etc. en fin muchas grandes cosas.&lt;br /&gt;Decidí instalar Eclipse sobre Linux para realizar mis primeros pininos en este lenguaje, la verdad que me pareció algo interesante. Eclipse es muy pesado, y la velocidad de ejecución lenta comparado con otros entornos de desarrollo.&lt;br /&gt;Realice una pruebas para mostrar unos registros de una base de datos utilizando un JTable, sinceramente demasiado código para obtener un resultado tan simple. Lo que me sorprendió fue su orientación ha objetos en Java hay que pensar en Objetos ya que el lenguaje te obliga a enfocar los problemas de esa manera.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-5928091590962657084?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/5928091590962657084/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=5928091590962657084' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5928091590962657084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5928091590962657084'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/conociendo-java.html' title='Conociendo Java'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-5375146214048020368</id><published>2008-01-06T20:00:00.000-08:00</published><updated>2009-10-28T21:09:27.822-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Experiencia'/><title type='text'>Sistemas Desarrollados</title><content type='html'>Actualmente me Encuentro desarrollando Un proyecto en Java del cual he publicado algunos artículos, también dicto clases a la Escuela de Ingeniería de Sistemas e Informática en la Universidad Nacional del Santa.&lt;br /&gt;&lt;br /&gt;Les muestro un resumen de los sistemas que he desarrollado los últimos años:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_74kp4h888ZA/R50RSXLQShI/AAAAAAAAAXM/CgbV_SvcaT4/s1600-h/experiencia1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_74kp4h888ZA/R50RSXLQShI/AAAAAAAAAXM/CgbV_SvcaT4/s320/experiencia1.JPG" alt="" id="BLOGGER_PHOTO_ID_5160299755192994322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Estas son las empresas en las que he laborado&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;InterAmerican Service CO S.A.C. (Jefe de Sistemas Actualmente)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Agroindustrias Pomalca (Jefe de Desarrollo de Sistemas)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Universidad Nacional del Santa (Docente Universitario Sistemas)&lt;/li&gt;&lt;li&gt;Universidad Nacional del Santa (Desarrollador Externo)&lt;/li&gt;&lt;li&gt;Universidad Privada San Pedro (Jefe de Sistemas)&lt;/li&gt;&lt;li&gt;Universidad Privada San Pedro (Jefe de Registro Tecnico)&lt;/li&gt;&lt;li&gt;Universidad Privada San Pedro (Jefe de Desarrollo de Sistemas)&lt;/li&gt;&lt;li&gt;Sima Chimbote (Analista de Sistemas)&lt;/li&gt;&lt;li&gt;Sima Chimbote (Administrador de Red)&lt;/li&gt;&lt;li&gt;Agroindustrias  San Jacinto (Jefe de Desarrollo de Sistemas)&lt;/li&gt;&lt;li&gt;Desarrollador y consultor Independiente en varias empresas&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-5375146214048020368?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/5375146214048020368/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=5375146214048020368' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5375146214048020368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5375146214048020368'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/sistemas-desarrollados.html' title='Sistemas Desarrollados'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_74kp4h888ZA/R50RSXLQShI/AAAAAAAAAXM/CgbV_SvcaT4/s72-c/experiencia1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-2403834914205426291</id><published>2008-01-06T17:00:00.000-08:00</published><updated>2008-01-08T00:26:42.246-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><title type='text'>Conociendo el Mundo de Delphi</title><content type='html'>Fue en 1999 cuando al nostalgia me embargo y decidí desempolvar mis antiguos aplicativos desarrollados en Turbo Pascal 7.0 para migrarlos a Delphi.  Yo había seguido la evolución de Delphi desde la versión 1.0 de manera teórica pero nunca había manejado el entorno ni desarrollado algún aplicativo.&lt;br /&gt;Asi que decidí migrar mi aplicativo matemático de gráficas y cálculos, ademas de un programa de investigación  de operaciones que había desarrollado en mi vida universitaria.&lt;br /&gt;La verdad que me impresiono yo en ese tiempo ya había estado trabajando con PowerBuilder y Visual Foxpro, pero Delphi me maravillo ya que podía hacer cualquier cosa con el el limite estaba en la imaginación es mas con delphi podría ampliar las capacidades de PowerBuilder a trabes de controles OCX.&lt;br /&gt;La migración de mi aplicativo fue rápido creo que me tarde una semana en aprender el lenguaje y realizar la migración, pues yo ya conocía pascal y eso me ayudo mucho.&lt;br /&gt;Aqui unas capturas de pantallas del programita:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4MyIuPHtiI/AAAAAAAAASY/4LzmLM2n6T0/s1600-h/delphi1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4MyIuPHtiI/AAAAAAAAASY/4LzmLM2n6T0/s320/delphi1.JPG" alt="" id="BLOGGER_PHOTO_ID_5153017524073772578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R4MziePHtjI/AAAAAAAAASg/sINT6eibINA/s1600-h/delphi2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R4MziePHtjI/AAAAAAAAASg/sINT6eibINA/s320/delphi2.JPG" alt="" id="BLOGGER_PHOTO_ID_5153019065967031858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4MziuPHtkI/AAAAAAAAASo/fEad5x7ml2A/s1600-h/delphi3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4MziuPHtkI/AAAAAAAAASo/fEad5x7ml2A/s320/delphi3.JPG" alt="" id="BLOGGER_PHOTO_ID_5153019070261999170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4MziuPHtlI/AAAAAAAAASw/BVkB0QsiKv4/s1600-h/delphi4.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4MziuPHtlI/AAAAAAAAASw/BVkB0QsiKv4/s320/delphi4.JPG" alt="" id="BLOGGER_PHOTO_ID_5153019070261999186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R4MziuPHtmI/AAAAAAAAAS4/yZlhAiEYfkA/s1600-h/delphi5.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R4MziuPHtmI/AAAAAAAAAS4/yZlhAiEYfkA/s320/delphi5.JPG" alt="" id="BLOGGER_PHOTO_ID_5153019070261999202" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-2403834914205426291?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/2403834914205426291/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=2403834914205426291' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/2403834914205426291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/2403834914205426291'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/conociendo-del-mundo-de-delphi.html' title='Conociendo el Mundo de Delphi'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_74kp4h888ZA/R4MyIuPHtiI/AAAAAAAAASY/4LzmLM2n6T0/s72-c/delphi1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-3994435666315577754</id><published>2008-01-06T16:00:00.000-08:00</published><updated>2008-01-08T00:36:05.165-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><title type='text'>Que es Firebird ?</title><content type='html'>Actualmente me encuentro escribiendo un Libro sobre este excelente gestor de Base de datos ya que no existe  bibliografia en nuestro idioma sobre este tema.&lt;br /&gt;Aqui una parte del capitulo de Introducción a Firebird.&lt;br /&gt; &lt;p class="MsoNormal" style="text-align: justify;"&gt;Firebird es un Servidor de Base de Datos multiplataforma basada en el código &lt;span style=""&gt; &lt;/span&gt;de Interbase 6.0 (Borland Internacional) una base de datos madura con mas de 25 años de experiencia. Interbase 6.0 &lt;span style=""&gt; &lt;/span&gt;fue liberado a mediados del 2000 bajo licencia IPL derivada de MPL (Mozilla Public Licencia) es mas permisiva que GPL y similar a BSD.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;a href="http://es.wikipedia.org/w/index.php?title=Jim_Starkey&amp;amp;action=edit" title="Jim Starkey"&gt;Jim Starkey&lt;/a&gt; trabajaba en DEC en su producto “Datatrive network database” cuando tuvo la idea de un sistema que manejara cambios hechos concurrentemente por varios usuarios. La idea simplificaba dramáticamente los problemas existentes del control de concurrencia utilizando trancas (locking), los cuales representaban un serio problema para los nuevos sistemas de base de datos relacionales que se estaban desarrollando en ese momento. Entonces comenzó a trabajar en el sistema en DEC, pero en ese momento DEC comenzaba el desarrollo de una base de datos relacional que resultó en el producto &lt;a href="http://es.wikipedia.org/w/index.php?title=Oracle_Rdb&amp;amp;action=edit" title="Oracle Rdb"&gt;Rdb/VMS&lt;/a&gt;. Cuando se enteraron de su proyecto se desató un gran problema, y Starkey eventualmente decidió desistir.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Starkey se enteró que el proveedor de plataformas locales Apollo Computer buscaba una base de datos para sus máquinas &lt;a href="http://es.wikipedia.org/wiki/Unix" title="Unix"&gt;Unix&lt;/a&gt;, y accedían a solventar su desarrollo. Con su apoyo, Starkey formó Groton Database Systems (&lt;a href="http://es.wikipedia.org/w/index.php?title=Groton%2C_Massachusetts&amp;amp;action=edit" title="Groton, Massachusetts"&gt;Groton, Massachusetts&lt;/a&gt; era el lugar donde se encontraban) en 1984 y comenzó a trabajar en lo que eventualmente sería lanzado como Interbase en 1986. Apollo sufrió un inconveniente corporativo y decidió dejar el negocio del software, pero en ese tiempo el producto ya estaba generando dinero.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;a name="El_camino_hacia_Borland"&gt;&lt;/a&gt;Entre 1986 y 1991 el producto fue gradualmente vendido a Ashton-Tate, creadores del famosos dBASE, quienes en ese entonces se encontraban comprando varias compañías de base de datos con el fin de ampliar su catálogo. La compañía cayó rápidamente y Borland la compró en 1991, adquiriendo Interbase como parte del trato.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;a name="C.C3.B3digo_libre"&gt;&lt;/a&gt;A principios del año 2000, la compañía Borland anunció que el código de Interbase sería liberado en la versión 6.0 y comenzó las negociaciones para que una empresa separada se encargara del nuevo producto. Cuando los responsables de esta nueva empresa y Borland no llegaron a un acuerdo de separación, Interbase permaneció como un producto de Borland y el código fuente de Interbase 6 se liberó bajo una variante de la “&lt;a href="http://es.wikipedia.org/wiki/Mozilla_Public_License" title="Mozilla Public License"&gt;Mozilla Public License&lt;/a&gt;” a mediados del 2000.&lt;/p&gt;    &lt;p class="MsoNormal" style=""&gt;Con la división de Interbase en Borland, la compañía liberó una versión propietaria de Interbase 6 y luego 6.5. Borland liberó varias actualizaciones para la versión libre antes de anunciar que ya no participaría activamente en el desarrollo de este proyecto. De aquí nació una nueva rama de desarrollo libre basada en el código abierto de Interbase 6 que daría vida&lt;span style=""&gt;  &lt;/span&gt;a &lt;span style=""&gt; &lt;/span&gt;&lt;a href="http://es.wikipedia.org/wiki/Firebird" title="Firebird"&gt;Firebird&lt;/a&gt;.&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;El motor de bases de datos Firebird ha sido desarrollado por un equipo independiente de desarrolladores voluntarios a partir del código fuente de Interbase 6.0. El desarrollo del código Firebird 2 arranca inicialmente en el desarrollo de Firebird 1, con el traspaso del código C de Firebird &lt;st1:metricconverter productid="1 a" st="on"&gt;1  a&lt;/st1:metricconverter&gt; C++ y la primera gran limpieza en el código. Firebird 1.5 es la primera versión del código Firebird 2. Ello supone haber cubierto una etapa muy importante para los desarrolladores y el propio proyecto Firebird, pero no es un fin en sí mismo. Cubierta la etapa de la liberación de Firebird 1.5, el viaje hacia Firebird 2 prosigue con importantes modificaciones.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;La versión &lt;st1:metricconverter productid="1.5 ha" st="on"&gt;1.5 ha&lt;/st1:metricconverter&gt; sido construida a partir del código portado del original en C a C++, un proceso iniciado por Mike Nordell en el año 2000. La limpieza total del código y la corrección de errores ha continuado, completada por un nuevo gestor de memoria y mejoras en el lenguaje. No menos importantes han sido los cambios experimentados por el optimizador de consultas SQL durante el proceso de desarrollo de la v. 1.5, con mejoras y correcciones de la mano de Arno Brinkman y otros, cuyo resultado ha sido una mejora en la velocidad de entre un 30 y un 60 por ciento como mínimo.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Firebird 2.0 trae una gran colección de muy esperadas mejoras que aumentan significativamente la performance, seguridad y el soporte de idiomas internacionales, y además brinda algunas deseables nuevas características en el lenguaje SQL. Entre las novedades se incluyen:&lt;/p&gt;  &lt;ul style="margin-top: 0cm;" type="disc"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Nuevo backup incremental.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;El tamaño de las tablas ya no es limitado a 30 Gb.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Soporte para arquitecturas de 64 bits (Intel EM64T      y AMD64).&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Interface tipo plugin para juegos de caracteres      internacionales.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Soporte de tablas derivadas, como se define en      SQL200x, incluyendo anidado multi-nivel y joining de      "subqueries".&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;A la fecha de publicación de este libro la última versión de producción es la 2.0.1 que incluye muchas mejoras sobre su versión predecesora. Firebird tiene una implementación de SQL muy cercana al estándar ISO/IEC 9075. Cuenta con la mayoría de las instrucciones DDL y DML estándar de SQL además tiene un muy Buen Trabajo de Transacciones así como soporte de procedimientos almacenados, Triggers, Vistas, Funciones Definidas por el Usuario, Generadores, etc. Todo esto lo convierte en una de las mejores alternativas en la actualidad a los motores de base de datos comerciales.&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;Firebird es muy práctico en todo sentido. Sencillo de instalar, fácil de usar, requiere poca administración y es gratuito.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt; &lt;/span&gt;Firebird se ejecuta en la mayoría de sistemas operativos mas difundidos como Windows, Linux, Solaris, MacOS y FreeBsd soportando las arquitecturas de 32 bits y 64 bits. Firebird ha sido probado en entornos financieros y en la actualidad es utilizado por diferentes empresas a nivel mundial. Firebird esta orientado a todo tipo de empresas pequeñas, medianas y grandes; se destaca un buen ejemplo:&lt;/p&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;Avarda (russian ERP) trabaja con Firebird 2.0 Classic server y con una media de &lt;strong&gt;100 conexiones simultaneas&lt;/strong&gt; accediendo a una base de datos Firebird de &lt;strong&gt;120Gb&lt;/strong&gt; con &lt;strong&gt;700 millones de registros&lt;/strong&gt;! El Servidor es una maquina SMP (2 CPUs - Dell PowerEdge 2950) con 6GB RAM.&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;En América Latina podemos encontrar un gran desarrollo en Brasil, dado que Brasil Esta apostando por el Software Libre. La iniciativa incluye planes para exportar 2 Billones de Dólares en valor de software por año; reemplazar MS-Windows con Linux en 300,000 computadoras del gobierno federal; canalizar 1 Billon de Dolares en recursos desde telecomunicaciones (Telecommunications Fund - Fust) hasta el sistema basado en software libre llamado Digital Communications System (SCD); e integrar las 200,000 escuelas publicas del país en tecnologías libres. &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;En Brasil existen una gran cantidad de empresas que utilizan Firebird como base de datos, el tamaño de base de datos varían desde los Megabytes hasta 50 Giga Bytes. Existe Gran cantidad de Información y recursos de Firebird en Internet gran parte Open Source y Otras comerciales gran parte de ellas asociadas a los productos de Borland como son Delphi y C++ Builder, que son la base del desarrollo de muchas utilidades y herramientas de administración, migración, recuperación, etc.&lt;/p&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;Versiones&lt;span style=""&gt;  &lt;/span&gt;Actuales&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;A fecha de publicación de este libro La ultima versión de firebird es la 2.0.1 y es la que se recomienda para producción en entornos empresariales ya sea en la plataforma Windows o Linux. También se encuentra en producción&lt;span style=""&gt;  &lt;/span&gt;la versión 1.5.4 que es utilizada en la actualidad por muchas empresas.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;La recomendación es realizar una migración a la versión 2 por tener un mejor rendimiento asi como muchas mas funciones. Esto se debe hacer con sumo cuidado realizando los backups previos ya que la estructura interna ODS en Firebird 2.0 es diferente que en las versiones anteriores.&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;&lt;b style=""&gt;CARACTERÍSTICAS DE FIREBIRD&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;Soporte completo de &lt;b&gt;Procedimientos Almacenados y      Triggers&lt;/b&gt;&lt;/p&gt;  &lt;ul style="margin-top: 0cm;" type="disc"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Las &lt;b&gt;Transacciones&lt;/b&gt; son totalmente &lt;b&gt;ACID&lt;/b&gt;      compliant&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;I&lt;b&gt;ntegridad referencial&lt;/b&gt; &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;strong&gt;Arquitectura Multi Generacional&lt;/strong&gt; &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Muy &lt;strong&gt;bajo consumo de recursos&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Completo lenguaje para Procedimientos Almacenados y      Triggers (&lt;strong&gt;PSQL&lt;/strong&gt;) &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Soporte para &lt;strong&gt;Functiones externas&lt;/strong&gt;      (UDFs) &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Poca &lt;strong&gt;o ninguna necesidad&lt;/strong&gt; de &lt;strong&gt;DBAs&lt;/strong&gt;      especializados&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Prácticamente &lt;strong&gt;no necesita configuración&lt;/strong&gt;      - ¡sólo instalar y empezar a usarla!&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;strong&gt;Una gran comunidad&lt;/strong&gt; y muchas      páginas donde consegir buen soporte gratuito &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Docenas de &lt;strong&gt;herramientas de terceros&lt;/strong&gt;,      incluyendo herramientas visuales de administración, replicación, etc.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;Escritura segura&lt;/b&gt; - recuperación rápida sin      necesidad de logs de transacciones&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;strong&gt;Muchas formas de acceder a tus bases de      datos&lt;/strong&gt;: nativo/API, driver dbExpress, ODBC, OLEDB, .Net provider,      driver JDBC nativo de tipo 4, módulo para Python, PHP, Perl, etc.&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;strong&gt;Soporte nativo para los principales      sistemas operativos &lt;/strong&gt;, incluyendo Windows, Linux, Solaris, MacOS. &lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;strong&gt;Backups incrementales&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Disponible para arquitecturas de &lt;strong&gt;64bits&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;Completa implementación de &lt;strong&gt;cursores&lt;/strong&gt;      en PSQL &lt;/li&gt;&lt;/ul&gt;  &lt;p class="text" style="text-align: justify;"&gt;El servidor Firebird viene en tres versiones: &lt;strong&gt;SuperServer&lt;/strong&gt;, &lt;strong&gt;Classic&lt;/strong&gt; y &lt;strong&gt;Embedded&lt;/strong&gt;. Puedes empezar con SuperServer. Actualmente, Classic es el&lt;span style=""&gt;  &lt;/span&gt;recomendado para máquinas con SMP y algunas otras situaciones específicas. SuperServer comparte su caché para todas las conexiones y usa un hilo de ejecución para cada conexión. Classic inicia un proceso de servidor independiente para cada conexión que se haga.&lt;/p&gt;  &lt;p class="text" style="text-align: justify;"&gt;La versión &lt;strong&gt;embedded&lt;/strong&gt; es una &lt;strong&gt;interesante&lt;/strong&gt; variación del servidor. Es un &lt;strong&gt;servidor Firebird con todas sus características, empaquetado en unos pocos ficheros&lt;/strong&gt;. Es muy fácil de usar, El servidor &lt;strong&gt;no necesita instalación&lt;/strong&gt;. Ideal para CDROM de catálogos, demos o aplicaciones de escritorio monousuario.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Firebird viene con un completo paquete de utilidades de línea de comando que te permiten crear bases de datos, generar estadísticas, ejecutar comandos y scripts SQL, hacer y recuperar copias de seguridad, etc. Si prefieres usar herramientas visuales, hay una gran cantidad de alternativas donde elegir, incluyendo gratuitas. Se da un listado de estas Herramientas en el Anexo (¿?) &lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt; &lt;/span&gt;En Windows, puedes ejecutar Firebird como servicio o como aplicación. El instalador puede crear un icono en el panel de control que te permitirá controlar el servidor (iniciarlo, pararlo, etc). &lt;/p&gt;  &lt;p class="text" style="text-align: justify;"&gt;&lt;b style=""&gt;FACILIDAD DE INSTALACIÓN Y MANTENIMIENTO&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Firebird es una base de datos que presenta una fácil instalación&lt;span style=""&gt;  &lt;/span&gt;ya sea en las versiones para Windows o Linux.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;En la plataforma Windows Firebird utiliza el típico instalador siguiente y siguiente&lt;span style=""&gt;  &lt;/span&gt;y listo ya se tiene firebird instalado en el sistema.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;En la plataforma Linux la instalación también es muy sencilla solo basta utilizar el comando &lt;b style=""&gt;rpm&lt;/b&gt; para proceder con la instalación, finalizado este proceso ya tenemos instalado el servidor firebird listo para activarlo como servicio que se inicie al arrancar el sistema.&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;Con respecto al mantenimiento se dice que firebird no necesita casi de este, otras bases de datos necesitan de la presencia de un DBA experimentado para su correcto funcionamiento. Con firebird se puede trabajar sin problemas&lt;span style=""&gt;  &lt;/span&gt;sin tener&lt;span style=""&gt;  &lt;/span&gt;la presencia de un DBA experimentado debido a la simplicidad de su forma de trabajo lo cual se convierte en una gran ventaja. Esto no quiere decir que firebird se da mantenimiento solo, sino siempre abran algunas tareas que realizar por el DBA. &lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;&lt;b style=""&gt;PROTOCOLOS DE RED SOPORTADOS&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;Los protocolos soportados por Firebird son los siguientes:&lt;/p&gt;  &lt;ul style="margin-top: 0cm;" type="disc"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;TCP/IP&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Named Pipes&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;TCP/IP      Loopback&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Acceso Local      para Windows&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;&lt;b style=""&gt;TCP/IP.-&lt;/b&gt; &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Firebird soporta el protocolo TCP/IP para los diferentes tipos de servidores y clientes.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Este protocolo es el recomendado a utilizarse en las diferentes plataformas soportadas, ya que nos permite utilizar todas las capacidades de comunicación entre clientes y servidores.&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;&lt;b style=""&gt;Named Pipes.- &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Firebird Soporta &lt;span style=""&gt; &lt;/span&gt;el protocolo Microsoft&lt;span style=""&gt;  &lt;/span&gt;Wnet Named Pipes&lt;span style=""&gt;  &lt;/span&gt;para Windows NT/2000/XP servidores y clientes, el nombre del pipe por defecto es &lt;b style=""&gt;interbas. &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Las versiones de Windows 95/98/ME &lt;span style=""&gt; &lt;/span&gt;no soportan este protocolo.&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;TCP/IP Loopback.-&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;El acceso local al servidor puede realizarse de manera local con la interfaz Loopback que tiene la dirección 127.0.0.1. El servidor embebido de Firebird no soporta este tipo de conexión.&lt;/p&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;Acceso Local para Windows.-&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Para clientes instalados en el mismo servidor de Windows Firebird simula una conexión de red con la tarjeta de red utilizando para ello un mecanismo de comunicación entre procesos. Este protocolo de comunicación es el utilizado por el servidor embebido de Firebird.&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;TIPOS DE SERVIDORES&lt;/b&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Firebird Se distribuye en tres tipos de servidores el Clasic Server, el Superserver y el &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;Embedded&lt;/span&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;CLASIC SERVER&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Crea un proceso y reserva un número de MB por cada usuario que se conecta. &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Como Firebird no soporta aun el trabajo con SMP, en servidores con varios &lt;span style=""&gt; &lt;/span&gt;microprocesadores es recomendable dejar que el sistema operativo realice el balanceo &lt;span style=""&gt; &lt;/span&gt;de carga en los diferentes microprocesadores, esto es posible debido a que el servidor Clasic lanza un proceso por cada conexión. Se debe tener en consideración que a mayor &lt;span style=""&gt; &lt;/span&gt;cantidad de conexiones el uso de la memoria RAM se incrementa notablemente, por canda conexión de usuario se utiliza aproximadamente 2MB de Memoria.&lt;br /&gt;Si instalamos esta versión, debemos tener en cuenta al elegir el tamaño del cache que&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt; &lt;/span&gt;asignamos a cada conexión en esta versión el cache es de 75 paginas por usuario (300KB).&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;SUPERSERVER&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Se crea un hilo por cada usuario que se conecta al servidor, se reserva un número de MB por cada base de datos a la que se accede en cada momento, por tanto no se necesita más RAM en el servidor conforme se da servicio a más usuarios, pero a cambio de eso, un único proceso (fbserver) es el encargado de dar ese servicio a todos los hilos que atienden a los usuarios, esto hace que en servidores que cuentan con mas de un microprocesador solo se utilice uno.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Resumiendo, esto quiere decir que podemos tener muchos usuarios pero la velocidad de proceso se la dividen entre ellos usando solo un procesador del servidor.&lt;br /&gt;La versión 3 de FireBird, eliminará esta limitación en el número de procesadores.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;EMBEBIDO&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Un servidor embebido es un cliente con un servidor totalmente funcional enlazado como una librería dinámica (fbembed.dll). Tiene la misma capacidad que un Superserver Común y exporta los puntos de entrada del API estándar de Firebird.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Es muy fácil de usar, El servidor &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;no necesita instalación&lt;/span&gt;&lt;/strong&gt;. Ideal para CDROM de catálogos, demos o aplicaciones de escritorio monousuario.&lt;/p&gt;  &lt;p class="title"&gt;&lt;b&gt;COMPARACION ENTRE CLASIC SERVER Y SUPERSERVER&lt;/b&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="" border="1" cellpadding="0"&gt;  &lt;thead&gt;   &lt;tr style=""&gt;    &lt;td style="padding: 0.75pt;"&gt;    &lt;p style="text-align: center;" align="center"&gt;&lt;b&gt;CLASSIC SERVER&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td style="padding: 0.75pt;"&gt;    &lt;p style="text-align: center;" align="center"&gt;&lt;b&gt;SUPERSERVER&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;  &lt;/thead&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;p&gt;Completamente maduro en Linux; todavía 'experimental' en cierta forma, en   Windows. &lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;p&gt;Completamente maduro tanto en Windows como en Linux. &lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;p&gt;Crea un proceso por cada conexión cliente, cada uno con su propio caché.   Utiliza menos recursos si la cantidad de conexiones es baja. &lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;p&gt;Proceso único con un hilo de ejecución (thread) separado para cada   conexión. Se comparte el espacio de caché. Más eficiente si crece el número   de conexiones simultáneas. &lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;p&gt;Permite E/S directa, rápida, a archivos de bases de datos para conexiones   locales (sólo Linux). &lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;p&gt;Las conexiones locales deben hacerse con la forma de acceso remoto,   conectando a &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;localhost&lt;/span&gt;&lt;/tt&gt;. En   Windows se pueden hacer conexiones locales, pero no son tan veloces como las   de la versión “&lt;span class="quote"&gt;Classic&lt;/span&gt;” en Linux, y también son   menos seguras. &lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;p&gt;Windows: implementados parcialmente &lt;i&gt;Services Manager (Administrador de   Servicios)&lt;/i&gt;, tareas de soporte como backup/restore, database shutdown   (sacar de línea la base de datos) etc. a través de la red. Otras tareas de   servicio tienen que ser realizadas localmente usando las herramientas cliente   (pequeños ejecutables independientes) que vienen con Firebird. Linux:   Administrador de Servicios completo. &lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;p&gt;&lt;i&gt;Administrador de Servicios&lt;/i&gt; completo (en Windows y Linux) que le   permite realizar tareas de administración (backup/restore, database shutdown,   manejo de usuarios, estadísticas, etc.) programáticamente. Se puede conectar   al Administrador de Servicios a través de la red y por lo tanto realizar   estas tareas en forma remota. &lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;p&gt;Soporte para SMP (multi-procesador). Mejor rendimiento en caso de un   pequeño número de conexiones simultáneas que no se influencian entre sí. &lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;p&gt;No hay soporte para SMP. En máquinas multiprocesador con Windows, el   rendimiento puede incluso caer dramáticamente cuando el SO cambia el proceso   entre las CPUs. Para prevenir esto, fije el parámetro &lt;tt&gt;&lt;i&gt;&lt;span style="font-size: 10pt;"&gt;CpuAffinityMask&lt;/span&gt;&lt;/i&gt;&lt;/tt&gt; en el archivo de   configuración &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;firebird.conf&lt;/span&gt;&lt;/tt&gt;. &lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-3994435666315577754?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/3994435666315577754/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=3994435666315577754' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3994435666315577754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3994435666315577754'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/que-es-firebird.html' title='Que es Firebird ?'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-5768185898250887429</id><published>2008-01-06T12:11:00.000-08:00</published><updated>2008-01-23T21:10:32.651-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anecdotas'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Remplazar Novell Netware por Linux</title><content type='html'>En el Sima Chimbote se contaba con Novell Netware 4.11 como servidor de archivos hasta finales del 2002 fecha en la cual se decide remplazar este servidor por uno Linux. Yo particularmente me había concentrado el el sistema de Gestión de Calidad para apoyo a la cerificación ISO 9000 versión 2000.&lt;br /&gt;La licencia de Novell Netware para la cantidad de PCs que teníamos le costaría a la empresa entre 15000 y 20000 $ , frente a ello se planteo la migración asia Linux. Recuerdo que se adquirió un servidor HP con 2 Microprocesadores 2.8 MGZ, 2GB de Ram, 3 discos SCSI  configurados en RAID 5, 2 tarjetas de Red una de Fibra óptica, y otra UTP 10/100/1000. La versión que decidí instalar fue Red Hat 9.0, recuerdo mucho cuando el Jefe de la oficina se acerco y me converso preguntándome de si podría realizar la configuración del nuevo servidor y si se obtendrían resultados similares al funcionamiento  de novell (colas de impresión, mensajería de usuarios y como servidor de archivos) y repuesta fue firme &lt;span style="font-weight: bold;"&gt;! Le ahorraremos 20000 $ a la empresa ! si se puede hacer.&lt;br /&gt;&lt;/span&gt;Mi experiencia con Linux principalmente se había centrado en la configuración desktop  y había configurado servidores SMB. servidores de correo, etc. Pero una cosa es realizar configuraciones a nivel Desktop y configurar servidores con el afán de aprendizaje y la otra es configurar un servidor de producción con mas de 100 usuarios y poder brindar los diferentes servicios que tenia Novell.&lt;br /&gt;Empece un día por la mañana realizando la primera instalación de Red Hat 9.0,  el sistema se instalo sin problemas, realice las configuraciones  de &lt;span style="font-weight: bold;"&gt;Samba&lt;/span&gt; para poder compartir los recursos en la red  y realizar las pruebas en las estaciones, aparentemente sin ningún problema, cuando de repente el servidor se planta bueno algo extraño realmente me pareció así que analice mas detalladamente si los componentes Hardware estaban todos correctamente reconocidos &lt;span style="font-weight: bold;"&gt;ho sorpresa Red Hat 9.0 solo reconocía 1 microprocesador pese a que había instalado el kernel SMTP, solo se reconocía 1GB de Ram. &lt;/span&gt;Lo primero que pensé fue algo en la instalación he  hecho mal asi que nuevamente formatee el servidor y a reinstalar todo. La verdad que no recuerdo cuantas veces realice la instalación en el servidor y siempre el mismo problema ya el día se acababa y sinceramente no había nada concreto, me imagino que el Jefe de la oficina se percato de ello cuando me pregunto si existía algún problema le respondí que no había ningún problema y todo caminaba según lo planeado.&lt;br /&gt;Finalizando el dia me puse muy tenso porque ya había dado mi palabra de que todo iba a funcionar y sobre todo el area de Sistemas y la oficina de planificación se habían comprometido con la jefatura y que la migración seria un éxito. Cabe recalcar que la gerencia del SIMA Chimbote la manejan militares (específicamente oficiales de la marina) y la formación de un militar y el trato que tienen es duro y no se andan con juegos. Todo eso me tenia muy tenso y preocupado siendo casi las 10:00 p.m. y sin resultado concretos pensé que es lo peor que puede pasar, &lt;span style="font-weight: bold;"&gt;ya me tire a la piscina aprendo a nadar o me ahogo &lt;/span&gt;evaluando las diferentes alternativas que tenia pensé Linux es libre el problema esta en el kernel precompilado de Red Hat 9.0 para este hardware en particular así que &lt;span style="font-weight: bold;"&gt;porque no descargar los códigos fuentes y compilarlo, &lt;/span&gt;dentro de mi era consiente que nunca lo había hecho pero mi formación profesional y mi inquietud por solucionar el problema me daban la fortaleza de enfrentar este reto asi que manos ha la obra, descargue la ultima versión del kernel recuerdo la 2.4.x y prosedi  a leer sobre el proceso de compilación y la creación de imágenes el gestor de arranque, los drives ,etc. recuerdo que sin darme cuenta ya había amanecido y recién pude obtener un kernel funcional que arrancara y reconociera todo el Hardware del servidor...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-5768185898250887429?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/5768185898250887429/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=5768185898250887429' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5768185898250887429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5768185898250887429'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/remplazar-novell-netware-por-linux.html' title='Remplazar Novell Netware por Linux'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-6718810671508988506</id><published>2008-01-06T12:10:00.000-08:00</published><updated>2008-01-07T21:22:45.854-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux y Foxpro</title><content type='html'>El primer problema que se tenia que resolver era que los sistemas desarrollados en Foxpro 2.6 puedan ejecutarse en Linux, logeandose al servidor Novell Netware para su funcionamiento. Esto se tenia que hacer de esa manera, Novell Netware  tenia un rendimiento bastante bueno como servidor de archivos, un buen manejo de colas de impresión y poco requerimiento de Hardware.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Con el mismo Hardware Frente a Windows NT o Windows 2000 no hay comparación Novell Netware se desempeña mucho mejor.&lt;br /&gt;Las configuraciones que realice en esa época han cambiado a las configuraciones que se deben realizar para problemas similares en la actualidad, así que los ejemplos y configuraciones las realizare con el software mas actualizado del momento (Inicios del 2008 al escribir estas lineas).&lt;br /&gt;&lt;br /&gt;Antes que nada explicare algo que yo considero un principio para solucionar problemas,&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;l&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;as soluciones deben estar orientadas  a lo que técnicamente es lo mas adecuado no a lo que nosotros conozcamos, &lt;/span&gt;esto es muy cierto ya que en muchas oportunidades optamos por soluciones solo en función de lo conocemos no en función de lo que técnicamente es lo correcto me explicare mejor con un ejemplo:&lt;br /&gt;Si yo conozco en la practica solo Windows  y el problema seria instalar un cortafuegos tendría las siguientes alternativas:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Buscar un software  Cortafuegos (El mejor para esta Plataforma)  para Windows y realizar la instalación.&lt;/li&gt;&lt;li&gt;Analizar diferentes plataformas y realizar una comparación Objetiva.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Si solo me encasillo en la primera alternativa dejo un enorme abanico de posibilidades para la solución de mi problema, si analizo la segunda se que es el mejor camino para la solución de mi problema. Si al analizar las diferentes plataformas todo me llevaría a trabajar con el Sistema Operativo mas seguro del Mundo el &lt;span style="font-weight: bold;"&gt;cual es OpenBsd, &lt;/span&gt;y la pregunta es pero yo solo conozco Windows , llegue a la conclusión que OpenBsd es el camino adecuado pero nunca lo he trabajado a que cosa me estaré metiendo? son preguntas que nos plantearemos al tratar de dar una solución, he allí en asumir el reto y del capital humano con el que contemos para ello. Asumiendo que todos estamos  metidos en el mundo informático y tomando como ejemplo a los grandes Gurus de informática tenemos una característica común a todos que es ser autodidactas.&lt;br /&gt;&lt;br /&gt;Si tomamos esta formar de pensar para la solución de problemas siempre estaremos aprendiendo y mejoraremos nuestro conocimientos mientras mas problemas resolvamos.&lt;br /&gt;&lt;br /&gt;Alternativas de Solución para ejecutar aplicaciones Foxpro Bajo Linux:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Buscar una Versión de Foxpro Para Linux&lt;/li&gt;&lt;li&gt;Emular DOS&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;La primera alternativa me llevo a conocer que efectivamente existía una versión de Foxpro para el mundo Unix el SCO Foxpro 2.6,  procedí a realizar la instalación primero de los emuladores que me permitan ejecutar aplicaciones para SCO en Linux &lt;a href="http://www.sofhouse.net/foxlinux/"&gt;Aqui&lt;/a&gt; una dirección que se explica de manera detallada la instalación de SCO Foxpro.&lt;br /&gt;Empece a ejecutar los aplicativos en SCO Foxpro y funcionaban salvo unos cambios que se tenia que efectuar en los sistemas con respecto a las rutas de los archivos y otras cosas no tan relevantes. Bueno eso no era problema se hubiera cambiado era sencillo realizar eso, el gran problema fue que en sistemas Foxpro complejos SCO Foxpro se colgaba y me arrojaba resultados inesperados, busque toda la información que encontré pero ninguna me dio luces de como corregir el problema, así que esta primera alternativa para ejecutar aplicativos Foxpro en Linux la descarte.&lt;br /&gt;&lt;br /&gt;Me quedaba la segunda alternativa utilizar Dosemu para ejecutar los aplicativos  de Foxpro así que  aquí detallo  el procedimiento:&lt;br /&gt;&lt;br /&gt;Las capturas de pantalla y los procesos de compilación se han realizado sobre un Linux Fedora 8.0 64 bits.&lt;br /&gt;Primero descargamos los fuentes de &lt;a href="http://dosemu.sourceforge.net/stable/"&gt;dosemu&lt;/a&gt; y también descargamos el binario de &lt;a href="http://prdownloads.sourceforge.net/dosemu/dosemu-freedos-1.0-bin.tgz?download"&gt;Freedos&lt;/a&gt; (&lt;a href="http://prdownloads.sourceforge.net/dosemu/dosemu-freedos-1.0-bin.tgz?download"&gt;dosemu-freedos-1.0-bin.tgz&lt;/a&gt;&lt;a href="http://prdownloads.sourceforge.net/dosemu/dosemu-freedos-1.0-bin.tgz?download"&gt;) &lt;/a&gt; para dosemu. Descomprimimos los fuentes de dosemu en una carpeta y copiamos el binario comprimido de Freeedos(dosemu-freedos-1.0-bin.tgz) al directorio donde están descomprimidos los fuentes de dosemu, renombramos el binario a dosemu-freedos-bin.tgz tal como nos muestra la siguiente pantalla:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R4GsxePHtZI/AAAAAAAAARQ/WQk0GGzssfo/s1600-h/dosemu1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R4GsxePHtZI/AAAAAAAAARQ/WQk0GGzssfo/s320/dosemu1.png" alt="" id="BLOGGER_PHOTO_ID_5152589414618609042" border="0" /&gt;&lt;/a&gt;En esta captura vemos el listado de archivos fuentes descomprimidos, y también vemos el binario de Freeedos ya renombrado. Luego ejecutamos las siguientes instrucciones:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[root@oscar dosemu-1.4.0]# ./configure &lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;[root@oscar dosemu-1.4.0]# make&lt;br /&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;[root@oscar dosemu-1.4.0]# make install&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;El comando &lt;span style="font-weight: bold;"&gt;./configure&lt;/span&gt; nos permite crear el archivo Makefile en función de la configuración de nuestro sistema.&lt;br /&gt;El comando &lt;span style="font-weight: bold;"&gt;make &lt;/span&gt;realiza la compilación de los fuentes para obtener el ejecutable final.&lt;br /&gt;El comando &lt;span style="font-weight: bold;"&gt;make install &lt;/span&gt;instala los ejecutables en el sistema.&lt;br /&gt;El archivo de configuración de dosemu se encuentra localizado en /etc/dosemu/dosemu.conf, aquí se pueden realizar ciertas configuraciones como especificar el tipo de microprocesador a utilizar, la cantidad de Ram memoria extendida y memoria base, así como el directorio de las imágenes de disco para el arranque de dosemu, por defecto dosemu utiliza el directorio del usuario por ejemplo /home/oscar/.dosemu en caso contrario busca los archivos de arranque en /var/lib/dosemu/drives.&lt;br /&gt;Cabe hacer una aclaración en el año 2001 dosemu estaba probando el soporte para  ejecutables que hacían uso de memoria extendida y solo podíamos ejecutar foxpro.exe y no fox.exe lo cual suponía una limitación ya que solo estábamos utilizando la memoria base (640kb), este nos obligo a modificar los programas para realizar una optimización en el uso de la memoria y puedan ejecutarse con esta limitación.&lt;br /&gt;En la siguiente captura vemos a dosemu en ejecución:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R4GyIePHtaI/AAAAAAAAARY/h-THSkxWRno/s1600-h/dosemu3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R4GyIePHtaI/AAAAAAAAARY/h-THSkxWRno/s320/dosemu3.png" alt="" id="BLOGGER_PHOTO_ID_5152595307313739170" border="0" /&gt;&lt;/a&gt;en la siguiente captura podemos visualizar foxpro ejecutándose:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R4MIa-PHtcI/AAAAAAAAARo/kye0gRKk3_4/s1600-h/fox1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R4MIa-PHtcI/AAAAAAAAARo/kye0gRKk3_4/s320/fox1.png" alt="" id="BLOGGER_PHOTO_ID_5152971658118018498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-6718810671508988506?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/6718810671508988506/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=6718810671508988506' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/6718810671508988506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/6718810671508988506'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/linux-y-foxpro.html' title='Linux y Foxpro'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_74kp4h888ZA/R4GsxePHtZI/AAAAAAAAARQ/WQk0GGzssfo/s72-c/dosemu1.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-5877180992394920843</id><published>2008-01-06T10:00:00.000-08:00</published><updated>2008-01-06T12:09:26.457-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux</title><content type='html'>&lt;div style="text-align: justify;"&gt;A finales de los 90s Linux se estaba haciendo popular e nivel mundial, se hablaba mucho de Linux en diferentes revistas y artículos, así que decidí probarlo el año 1998 fue la versión 5x de RedHat la que probé, lo instale le di un vistazo por 4 horas aproximadamente aprendí 2 comandos "ls" y "clear" como no entendí mucho lo deje allí y lo desinstale por lo momento no lo necesitaba así solo curiosee y listo. No fue hasta el 2001 en el Sima Chimbote cuando empece ha utilizarlo de verdad.&lt;br /&gt;Recuerdo cuando me preguntaron si sabia Linux bueno ya saben yo y mi mala costumbre, les dije que si sabia Linux que había trabajado con RedHat, muy bien  me dijeron entonces contigo aremos la migracion de todas las estaciones Windows a Linux. Dentro de mi dije que he hecho en lo que me he metido en esta empresa existían mas de 100 estaciones y habían sistemas que corrían en DOS como en Windows realizar la migracion de todas ellas, la verdad que me puse pálido pero calle.&lt;br /&gt;Recuerdo que el Sima Chimbote compro Conectiva Linux 6.0, se adquirió esta distribución por ser Sudamericana y derivar de RedHat.&lt;br /&gt;Me encargaron que realice la primera instalación de Linux así que ese día me quede hasta tarde probando la instalación y efectuando las pruebas, como la mayoría sabemos instalar Linux no  es problema, lo que si es realizar las configuraciones para que este funcione según las configuraciones y requerimientos de la empresa.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-5877180992394920843?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/5877180992394920843/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=5877180992394920843' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5877180992394920843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5877180992394920843'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/linux.html' title='Linux'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-944697908980734996</id><published>2008-01-06T09:33:00.000-08:00</published><updated>2008-01-06T14:40:04.338-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Experiencia'/><title type='text'>De Regreso por el Sima Chimbote</title><content type='html'>Inicios del 2001 el Sima Chimbote me llama para integrarme al Dpto. de informática para apoyarlos con el Sistema de gestión de calidad. El Sima Chimbote se había certificado en la norma ISO 9000  y pretendía actualizar su certificación a la versión 2000 de la norma y para lo cual necesitaba automatizar sus diferentes procesos. En  los casi 4 años que estuve en el Sima Chimbote aprendí muchas cosas, dentro de las cuales destaco dos temas muy importantes :&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;Redes y Comunicaciones&lt;/li&gt;&lt;li&gt;Gestión de procesos, Calidad y Norma ISO&lt;/li&gt;&lt;/ul&gt;En redes y comunicaciones me introduje en el mundo Unix, iniciándome con Linux probando después FreeBsd, OpenBsd y NetBsd.  Una de las cosas mas interesantes que recuerdo sobre este tema fue el trabajo que tuve que realizar al hacer funcionar de manera integrada las diferentes plataformas con las cuales trabajaba el Sima Chimbote estas plataformas eran:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Windows (9x, Millenium, 2000, Xp)&lt;/li&gt;&lt;li&gt;Novell Netware&lt;/li&gt;&lt;li&gt;Linux&lt;/li&gt;&lt;li&gt;Dos&lt;/li&gt;&lt;/ul&gt;Se logro que todas estas plataformas se puedan comunicar y trabajar con los sistemas de manera transparente.  Se ejecutaban en linux los sistemas que se habían desarrollado en Foxpro gracias al DosEmu y también desde el Dosemu se hacia logear al servidor Novell.&lt;br /&gt;&lt;br /&gt;En Gestión de calidad y procesos tuve la suerte de Trabajar con Cap. de Navio Diaz Ismodes (Guru)  el cual era el asesor corporativo del SIMA Perú sobre estos temas  y de quien aprendí muchas cosas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-944697908980734996?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/944697908980734996/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=944697908980734996' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/944697908980734996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/944697908980734996'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/de-regreso-por-el-sima-chimbote.html' title='De Regreso por el Sima Chimbote'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-753298526341565321</id><published>2008-01-06T09:28:00.000-08:00</published><updated>2008-01-06T14:43:56.432-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Principal'/><title type='text'>Empezando con los detalles</title><content type='html'>Bueno hasta el momento he publicado algunas experiencias y no he detallado la manera en la cual di solución a los diferentes problemas por el motivo que la tecnología y algunas cosas de esos años ya no se utilizan, pero en adelante empezare ha detallar la manera como pude solucionar los diferentes problemas que se me presentaron.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-753298526341565321?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/753298526341565321/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=753298526341565321' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/753298526341565321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/753298526341565321'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/empezando-con-los-detalles.html' title='Empezando con los detalles'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-5314521759862787214</id><published>2008-01-03T20:52:00.001-08:00</published><updated>2008-01-06T14:40:30.315-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Experiencia'/><title type='text'>Trabajando por Todos Lados</title><content type='html'>&lt;div style="text-align: justify;"&gt;Terminando los sistemas de la Azucarera, La  Universidad nacional del Santa me propone desarrollarles su sistema de planilla así como su sistema de control de personal. Así que regrese ha Chimbote y me puse ha terminar las cosas pendientes en la universidad y empece ha desarrollar sistemas para el área de planillas. En ese entonces el SIMA Perú específicamente el astillero Sima Chimbote necesitaba programadores así que fui gracias a la recomendación de Flor V. empece a trabajar en el Sima Chimbote Programando en Foxpro y Visual Foxpro, me toco recuerdo realizar la contabilización de letras y contabilidad definitivamente no era mi fuerte. La gente de contabilidad me apoyo para entender el proceso y finalmente implemente la solución de manera correcta. Recuerdo de esa primera experiencia en el Sima Chimbote muy buena una empresa bien ordenada, lo bueno es que la &lt;span style="font-weight: bold;"&gt;Norma ISO&lt;/span&gt; obliga a las empresas a tener un orden en toda la organización esto es bueno ya que es mucho mas fácil implementar sistemas cuando una empresa esta ordenada y es madura a nivel de procesos y funciones.&lt;br /&gt;Los sistemas que ayude ha implementar en el Sima Chimbote son:&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-weight: bold; text-align: justify;"&gt;&lt;li&gt;Sistema de Facturación &lt;/li&gt;&lt;li&gt;Sistema de Caja&lt;/li&gt;&lt;li&gt;Parte de Asientos Contables&lt;/li&gt;&lt;li&gt;Sistema de Información gerencia&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Y La modificación de sistemas para enfrentar el problema del PYA2000.&lt;br /&gt;&lt;br /&gt;Paralelamente desarrollaba el sistema de planillas de la UNS el cual me tomo 2 meses, ha este sistema le puse mucho interés ya que había mucha expectativa en la Universidad querían ver si un egresado podría desarrollar sistemas que funcionen y garanticen las operaciones de manera correcta. Sinceramente el sistema era complejo pero yo ya tenia experiencia en el desarrollo de sistemas así como para efectuar un análisis adecuado y poder abstraer los procesos. Al tercer mes el sistema se puso en funcionamiento dando resultados positivos realice unos ajustes finales y el sistema empezó a funcionar como se esperaba. En ese momento pensé ojala que mi sistema pueda durar hasta 5 años funcionando  para mi como desarrollador eso era la garantía de que era un buen trabajo y que satisfacía las necesidades de la universidad. El sistema se desarrollo el Año 1999 fue cambiado por otro el año 2007 (El actual sistema ofrece las mismas funcionalidades que el que yo desarrolle) esto para mi es muy gratificante ya que supero mis propias expectativas.&lt;br /&gt;&lt;br /&gt;Ese año (1999) la nostalgia me embargo y desempolve mis viejos programas hechos en Turbo pascal y pensé que sera de pascal, la respuesta era &lt;span style="font-weight: bold;"&gt;el maravilloso Delphi esta acá. &lt;/span&gt;&lt;span&gt;Entonces pq' no despertar los viejos programas y de esa manera aprender delphi, efectivamente parte de ese año lo dedique a programar en Delphi migrando mis aplicativos de mi vida universitaria, fue muy gratificante Delphi es un entorno muy interesante netamente orientado a la solución de problemas en general, son muy pocas las cosas que no se pueden hacer con Delphi frente a C o C++ . Personalmente Migre mis aplicativos a Visual C++ y Delphi obteniendo resultados similares, como siempre he dicho la &lt;span style="font-weight: bold;"&gt;mejor manera de aprender un lenguaje de programación es meterte a un proyecto y desarrollarlo en ese lenguaje.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El año siguiente desarrolle sistemas Para la UNS para Grifos, Ferreterias Tiendas comerciales Etc. El sistema de control de personal lo quise implantar con huella digital pero el problema de presupuesto y otras cosas me hicieron que optar por lectora de código de barras combinado con el Control OCX Text to Speech  fue una gran novedad en ese entonces. Se desarrollo utilizando PowerBuilder 6.5 (Para mi una de las mejores Versiones en el sentido de la estabilidad) .&lt;br /&gt;&lt;br /&gt;Se me presento un problema en el sistema de control de personal, Físicamente las oficinas administrativas y el campus universitario estaban en diferentes sitios separados aproximadamente por 1 a 2 Kilometros la pregunta era &lt;span style="font-weight: bold;"&gt;Como enviar y traer los datos del campus para ser procesados en las oficinas administrativas ?  &lt;/span&gt;&lt;span&gt;bueno pensé que tengo a la mano era una linea telefónica, entonces empece a programar un software de comunicación que utilizaba el puerto serial en este caso el del Módem, prepare mis cables para hacer las pruebas con el Módem null (Netamente las pruebas se realizaban por el puerto serial de 9 y 25 pines)  y cuando la solución estaba lista recién lo probábamos en el Módem y las lineas telefónicas. La solución fue un éxito eso me abrió otra puerta &lt;span style="font-weight: bold;"&gt;el maravilloso mundo de  las comunicaciones.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;El sistema funcionaba muy bien registrando y controlando a los trabajadores, el trabajador registraba su fotocheck en el lector de códigos de barra y el sistema le mostraba su foto pronunciando su nombre en el momento del registro. La comunicación  entre el campus y las oficinas se realizaba en lotes en función a las necesidades del área de planillas ellos jalaban la información del campus las veces que deseaban.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Finales del año 1999 e inicios del 2000  Desarrolle un sistemas de Compras, Ventas y almacén que se convertiría en el núcleo de muchos otros sistemas para Ferreterías, Grifos y Tiendas comerciales.  Mi plataforma de desarrollo era &lt;span style="font-weight: bold;"&gt;Powerbuilder y Microsoft Sql Server&lt;/span&gt;, algunas cosas que no podía hacer con Powerbuilder lo implementaba en dlls ya sea en Visual C++ o Delphi.&lt;br /&gt;&lt;br /&gt;Finales del año 2000 me contactaron para desarrollar un navegador de Internet Lógicamente esto no lo iba a hacer de cero, solo utilice el control Activex de Internet explorer y le cambie la mascara, la idea de la empresa que me contrato era tener su propio navegador entre comillas esto y atraves de tener su propia publicidad, este navegador debería sincronizarse con un programa para medir tiempos de navegación y otros datos.&lt;br /&gt;Con la experiencia que había tenido programando el puerto serial la pregunta que se me planteo y como es la comunicación en  las redes, la respuesta fueron los Sockets, y para trabajar con esto Visual C++ y Delphi son los indicados, como yo ya conocía Delphi y en Visual C++ solo había hecho algunas cosas como la migración de  algunos aplicativos de mi vida universitaria, decidí hacerlo en Visual c++, los resultados son muy interesantes y e&lt;span style="font-weight: bold;"&gt;l mundo de los sockets me tenia cautivado. &lt;/span&gt;Empece ha estudiar mas a fondo los protocolos de Red especialmente el dominante TCP/IP.&lt;br /&gt;&lt;br /&gt;Así pues los años 1999 y 2000 pasaron muy rápido, Dios me dio la oportunidad de desarrollar varios sistemas por diferentes empresas lo cual me serviría en un futuro cercano&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-5314521759862787214?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/5314521759862787214/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=5314521759862787214' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5314521759862787214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5314521759862787214'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/trabajando-por-todos-lados.html' title='Trabajando por Todos Lados'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-4336490568131199451</id><published>2008-01-03T17:21:00.000-08:00</published><updated>2008-01-13T19:06:12.752-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerBuilder'/><category scheme='http://www.blogger.com/atom/ns#' term='Anecdotas'/><title type='text'>PowerBuilder en Escena</title><content type='html'>&lt;div style="text-align: justify;"&gt;La aparición de Windows 95 con fuerza en el mercado supuso también un cambio en las herramientas de desarrollo, empezaron ha reinar los lenguajes visuales.&lt;br /&gt;Si bien es cierto que windows 95 apareció el año 95, pero su reinado en el medio se acentuó los años 96 y 97, los lenguajes visuales también existían hace buen tiempo pero con windows 95 empezaron a reinar con fuerza.&lt;br /&gt;Clipper intento hacer algo con visual Object pero fracaso, Foxpro saco Visual Foxpro  el cual tuvo relativo éxito.&lt;br /&gt;Así que yo me incline por Visual Foxpro empece ha desarrollar algunos programas no muy complejos, con la intención de conocer el lenguaje.  Pero también en ese entonces apareció Powerbuilder en mi vida.&lt;br /&gt;Empece a programar en PowerBuilder 4.0, tuve la suerte que en la universidad empezaron a dictarlo en un curso de Base de datos (Gracias Hugo C.) , uno de los primero trabajos que me trace fue la migración de un sistema de conciliación bancaria que había desarrollado en Foxpro,  esto lo hice para aprender el lenguaje, como siempre pienso si quieres aprender un &lt;span style="font-weight: bold;"&gt;lenguaje de programación pues desarrolla un proyecto con el&lt;/span&gt;, es la manera mas adecuada de lograr esto. En la universidad desarrolle algunas cosas, pero nada complejo.&lt;br /&gt;La migración del sistema de conciliación bancaria me ayudo mucho, con ese proyecto me introduje en el mundo de PowerBuilder y la verdad que no me arrepiento &lt;span style="font-weight: bold;"&gt;esta es una herramienta creada para desarrollar sistemas de base de datos y tiene una elevada productividad, un manejo excelente de objetos y herencia,  su parte medular  es el control Datawindow definitivamente una maravilla&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Recuerdo que estaba cursando el ultimo ciclo de la Universidad cuando se me presento un trabajo en una azucarera de la región y necesitaban desarrolladores a tiempo completo,  un amigo me paso la voz y pude entrar a trabajar en esa empresa.&lt;br /&gt;En esta azucarera como en otras empresas de  la región la mayoría de sistemas estaban desarrollados en Foxpro y las redes que existían eran Novell Netware, algo que por suerte ya conocía de mis anteriores experiencias.&lt;br /&gt;&lt;br /&gt;Me encargaron la automatización de los procesos de la Fabrica, esto comprendia los siguientes sistemas:&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-weight: bold; text-align: justify;"&gt;&lt;li&gt;Sistema de balanza&lt;/li&gt;&lt;li&gt;Sistema de Laboratorio&lt;/li&gt;&lt;li&gt;Sistema  de Liquidaciones&lt;/li&gt;&lt;li&gt;Sistema de Producción &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Todos estos sistemas eran complejos, ya que habían muchos cálculos que realizar y también tenían que coexistir con otros sistemas y diferentes bases de datos.&lt;br /&gt;Me paso una experiencia cuanto recién tenia 3 semanas en la empresa, ellos tenían un servidor Novell netware 3.x y querían migrar a Novell  Netware 4.11 y me preguntaron si antes había instalado un servidor Novell  y obviamente mi respuesta fue si la mala costumbre me persigue , en realidad nunca había instalado un servidor  Novell Netware 4.11, así que manos a la obra recuerdo que me quede dos fines de semanas a probar y reprobar con los manuales y ahora si ya contaba con Internet, finalmente despues de esos 2 fines de semanas pude instalar Novell Netware 4.11 en un servidor alternativo, y estaba finalizando las pruebas para poner a producción el servidor. Cuando de repente el servidor Novell Netware 3.11 deja de funcionar en apariencia el disco duro estaba fallando y el servidor no arrancaba, parando toda la parte administrativa que trabaja con sistemas (Contabilidad, personal, caja, facturación ,etc.) el jefe del área no sabia que hacer recuerdo que llamaba a todas partes para que lo puedan ayudar, pero a nosotros los desarrolladores nuevos no nos decía nada, tal era su desesperación del jefe de sistemas que empezó a darse de cabezazos contra una mesa y esta rojo rojo parecía que iba explotar. Después de haber parado el servidor toda la mañana y las parte administrativa sin funcionar, me acerque al Jefe de Sistemas (Nick R.), le pregunte si lo podía ayudar bueno me explico el problema, y por mis conocimientos en ensamblador supuse que había que realizar una copia de todo el disco pero lo realizaría sector a sector, desarrollaría un programa para esto desde ensamblador, el requerimiento que tenia era que necesitaba un disco físicamente igual, para que mi programa funcione, me proporcionaron el otro disco y manos a la obra desarrolle el programa y en  4 horas ya tenia un disco clonado en el cual la falla física se había transformado en lógica, pudiendo levantar el servidor y empezar a funcionar los sistemas, se que de repente existirían herramientas alternativas pero en ese momento no las conocía así que tuve que desarrollar el trabajo.&lt;br /&gt;Al solucionar este problema me gane toda la confianza de mi jefe dándome mas responsabilidad y mejores condiciones.&lt;br /&gt;Luego actualice el servidor Novell Netware a la version 4.11 y configure todos los clientes esto fue una experiencia muy interesante, esa red si bien es cierto era desordenada pero existían todo tipo de cableados, UTP, Coaxial y fibra óptica, era una red regular casi un Kilometro desde los puntos mas distantes, teníamos que utilizar repetidoras en algunos casos para que la señal llegue, Fueron 2 semanas de arduo trabajo pero al finalizar la satisfacción de ver todo funcionando y  haber aprendido muchas cosas. Me convertí en el administrador de la red y desarrollador de aplicaciones, empece ha desarrollar los sistemas en PowerBuilder y como motor de base de datos utilice Microsoft Sql Server. Todo esto sobre una red de Windows Nt 4.1 y también accediendo ha archivos dbf (via ODBC) de Novell Netware.&lt;br /&gt;Esta empresa me dio muchas oportunidades, como ninguna otra la plana de funcionarios era A1 tuve el honor de trabajar con muchos de ellos, la mayoría eran extranjeros hasta el día de hoy no he conocido en la región ninguna empresa con esa calidad de funcionarios.  Todo esto me nutrió como profesional recuerdo mucho la frase del contralor general cuando me pregunto sobre la evolución de un sistema me dijo "Como van las cosas" yo le respondí técnicamente (jajaja de repente quería marearlo) el me contesto &lt;span style="font-weight: bold;"&gt;" Mira yo desconozco la complejidad técnica sobre lo que me hablas, lo único se es que esto entra y esto es lo que yo quiero que salga ahora dime la puedes hacer o no" &lt;/span&gt;el me enseño que los problemas son una caja negra y uno tiene que abstraerse y pensar a nivel macro la caja negra es el problema del técnico ahora lo puede hacer o no esa es la pregunta, muy sencillo pero muy cierto pq' aveces cuando converso con desarrolladores te empiezan a marear y te hacen un espagueti y las finales no te dicen nada, &lt;span style="font-weight: bold;"&gt;simplemente se que esto es lo que entra yo quiero que esto salga lo puedes hacer o no&lt;/span&gt;.&lt;br /&gt;Estuve un año en la azucarera atraves del cual aprendí mucho ya que el entorno era muy enriquecedor el nivel profesional de los funcionarios y la manera como se tomaba las decisiones era muy interesante, todo esto a nivel de procesos, en informática me dieron amplias libertades para probar las tecnologías que yo  sugería. Lo malo de esta empresa es que te absorbía demasiado francamente que trabajaba duro un  promedio de 12 a 14 Horas diarias yo ya estaba acabando la universidad  y tenia que hacer mis papeles para poder sacar el titulo de Bachiller y luego el titulo de Ingeniero así que renuncie.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-4336490568131199451?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/4336490568131199451/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=4336490568131199451' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/4336490568131199451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/4336490568131199451'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/powerbuilder-en-escena.html' title='PowerBuilder en Escena'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-9066998368968787354</id><published>2008-01-03T15:52:00.000-08:00</published><updated>2008-01-06T14:41:09.414-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anecdotas'/><title type='text'>Foxpro 2.6 y los Sistemas</title><content type='html'>&lt;div style="text-align: justify;"&gt;Con las experiencias que había tenido, ya tenia una visión de como se debería desarrollar los sistemas para una empresa. Fue cuando se me presento la oportunidad de trabajar en una empresa que brindaba el servicio de desarrollo de sistemas  en diferentes empresas de la región.&lt;br /&gt;Me presente me hicieron la entrevista y en esta oportunidad me pidieron que desarrollara en Foxpro 2.6. Yo ya tenia la mala costumbre de decir si a todo  y esta vez no iba ser la excepción obviamente dije que si sabia Foxpro (Bueno ya conocía Clipper 5.3 y como Clipper y Foxpro son primos)  . Me probaron dejando un programa para hacerlo en 2 días, bueno felizmente pude hacerlo en ese lapso de tiempo y me puse las pilas para dominar Foxpro y empezar a desarrollar sistemas. En esta empresa conocí a una persona que me ayudaría mucho en el desarrollo de sistemas, Gracias Flor V.&lt;br /&gt;Mi primer Trabajo en esta empresa fue desarrollar un sistema de Facturación  para la Empresa de Servicios de fluido eléctrico (Hidrandina).&lt;br /&gt;&lt;br /&gt;El problema que encontré fue que el sistema ya se encontraba avanzado y yo tenia que terminarlo, aquí aprendí que es mucho mas difícil entender las Lógicas ajenas que desarrollarla uno mismo. No existía documentación alguna y había que bucear en el código y parchar y cambiar, etc.&lt;br /&gt;Recién estaban madurando mis conocimientos en Foxpro así que no me atreví a cambiar todo el sistema esto fue al inicio pero al las final todo el sistema tuvo que ser reescrito. El sistema se termino, al inicio presentaba algunos problemas pero los cuales se superaron en el camino y empezó a funcionar en Chimbote, un tiempo después ese sistema se instalo en las diferentes ciudades del departamento.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;En el mundo de las redes reinaba Novell Netware&lt;/span&gt; que era un estándar en la mayoría de las empresas, Windows NT recién estaba ingresando al mercado con fuerza.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Las redes que mundo maravilloso sera ese&lt;/span&gt;, algo que me dejaba intrigado, como sera veo que existe una persona exclusivamente dedicada a la administración de la red en Hidrandina existen como 50 estaciones de trabajo y veo que el administrador realiza unas configuraciones especiales para dar acceso y permitir que los usuarios puedan trabajar sin problemas.&lt;br /&gt;Mi curiosidad me hizo aprender Novell Netware 4.11  recuerdo esa versión pq' era la que reinaba en la mayoría de las empresas. aprendí Novell Netware en teoría y lo poco que podía hacer era curiosear en la red de Hidrandina pq' no tenia mas privilegios y mis conocimientos eran básicos.&lt;br /&gt;&lt;br /&gt;Terminado el sistema de Hidrandina, la empresa en la cual estaba trabajando me envió ha desarrollar un sistema en una Pesquera "Consorcio pesquero Carolina"  allí tuve que desarrollar un sistema de conciliación bancaria, el proceso de las cuantas corrientes y las conciliaciones con los movimientos que hace la empresa. Ya había ganado experiencia en Foxpro que era el lenguaje en el que se iba a desarrollar así que no tuve mucho problema en temas de programación.&lt;br /&gt;Lo que no conocía era contabilidad y como funcionaban el plan de cuentas en una empresa el famoso Debe y haber o Cargo y Abono , etc. así que esto de contabilidad era nuevo para mi, en la universidad no me habían enseñado nada de ello, esto que era algo desconocido para mi.&lt;br /&gt;En esta empresa aprendí mucho mas sobre la organización en si misma, algo de contabilidad y un poco de redes Novell Netware.&lt;br /&gt;Recuerdo mucho a la encargada de sistemas una Ingeniera que tenia sus puntos de vista de como deberían desarrollarse los sistemas, yo en aquel entonces estaba cursando los últimos ciclos de la universidad, recuerdo mucho las discusiones sobre el modelo relacional y la lógica de negocio de la empresa y el modelo de data de la empresa. Yo le daba mi punto de vista en aquel entonces, de como ya veía los sistemas y como deberían ser desarrollados.&lt;br /&gt;&lt;br /&gt;Aquí aprendí a conocer los diferentes &lt;span style="font-weight: bold;"&gt;tipos de usuarios&lt;/span&gt; que uno puede tener en el proceso de desarrollo de sistemas, para mi mala suerte me toco un usuario con pocos conocimientos y criterio lo cual ocasionaba discusiones y ciertos problemas en el desarrollo del sistema.&lt;br /&gt;Definitivamente para evitarme problemas, tenia que introducir un mecanismo de seguimiento de las diferentes actividades que se hacían en el sistema para determinar que cosas hacia el usuario.&lt;br /&gt;Esto me sirvió mucho ya que en en sucesos posteriores podía determinar el día y la hora de ciertas operaciones que los usuarios habían realizado en el sistema.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-9066998368968787354?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/9066998368968787354/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=9066998368968787354' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/9066998368968787354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/9066998368968787354'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/foxpro-26-y-los-sistemas.html' title='Foxpro 2.6 y los Sistemas'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-8923857553585921364</id><published>2008-01-03T08:34:00.000-08:00</published><updated>2008-01-06T14:41:32.635-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Experiencia'/><title type='text'>A Trabajar en Serio</title><content type='html'>&lt;div style="text-align: justify;"&gt;Después de la experiencia del colegio, me llamaron para desarrollar un sistema de planillas en una Empresa pesquera , lógicamente que el lenguaje que deseaban que se desarrolle era Clipper ya que en ese entonces en el medio era uno de los lenguajes dominantes.&lt;br /&gt;Clipper no conocía, acepte el proyecto y que piensan que paso? lo hice en pascal no no, ya me deje de cosas y me compre un par de libros de clipper de la versión 5.3  me dieron 2 meses para el proyecto así que dije en tres semanas estaré dominando Clipper y el resto del tiempo desarrollo el sistema. Pues en el fondo se que un lenguaje de programación es solo una herramienta del profesional de sistemas, así que manos a la obra.&lt;br /&gt;Esta es la primera experiencia de manera real que yo tuve profesionalmente ya que una empresa pesquera es compleja en el sentido de sus procesos y la forma particular en la que maneja sus pagos.&lt;br /&gt;Visite la planta realice las entrevistas pertinentes abstrayendo los procesos, en aquel entonces el análisis orientado a Objetos estaba empezando en el medio y lo que reinaba era el análisis estructurado. así que empece realizar el análisis, &lt;span style="font-weight: bold;"&gt;una cosa que he aprendido con los años es que los sistemas, los programas los análisis los hacen las personas&lt;/span&gt; no una metodología en particular; &lt;span style="font-weight: bold;"&gt;el sentido común, la habilidad y la experiencia &lt;/span&gt;son los factores predominantes para que un proyecto tenga éxito, lógicamente se necesita una formación para ello.&lt;br /&gt;Veo actualmente a muchos&lt;span style="font-weight: bold;"&gt; "Analistas" &lt;/span&gt;que se pasan todo el tiempo peleándose que si la metodología tal la han seguido al pie de la letra y si tal o cual diagrama se olvidaron en fin etc. y como resultado del proyecto veo que se obtienen  desastres que realmente no son funcionales ni dan al cliente lo que el desea.&lt;br /&gt;Hoy por hoy un programado es aquel que siguió un cursillo de 2 o 3 meses y ya es programador&lt;span style="font-weight: bold;"&gt; como se han degenerado las cosas&lt;/span&gt;, ahora cuando converso con un egresado de la especialidad de sistemas y le pregunto que es lo ara  en su vida profesional entonces me responden que el es un jefe de proyectos y un arquitecto de software. Para nuestro medio esto no es acertado tenemos un enorme forado en la vida universitaria ya que al docente universitario le falta blue jean (Experiencia en el campo)  y solo le habla de teorías que en su vida ni siquiera ha intentado plasmar ni comprobar.&lt;br /&gt;Cuando lo mas natural en el mundo es Ser primero programador Junior (mínimo 2 años) y luego programador senior (mínimo 2 años) luego analista Junior (mínimo 2 años), después analista Senior(mínimo 2 años) y finalmente jefe de proyectos y después de haber desarrollado exitosamente por lo menos 10 proyectos como jefe recién ser un Arquitecto de software.&lt;br /&gt;&lt;br /&gt;El sistema que me habían pedido desarrollar era de planillas (Nominas)  para pago a empleados, Obreros y jornaleros, efectivamente con mucho esfuerzo amanecidas y muchos problemas termine el proyecto con 1 mes de retraso.&lt;br /&gt;Recuerdo con mucha alegría las primeras planillas que se imprimieron con ese sistema y las primeras boletas que se entregaban a los trabajadores. &lt;span style="font-weight: bold;"&gt;"Funciona hay que hacer algunos ajustes pero nos has ahorrado varios días de trabajo pq' con Qpro nos tardábamos una semana en procesar las planillas y boletas" &lt;/span&gt;es lo que me dijo el encargado de planillas fue mi primera satisfacción que me lleno de mucha alegría, aunque la paga no era muy buena, pero no es lo único en la vida Gracias por esa oportunidad Alfredo. Este sistema significo mucho para mi ya que me introdujo al desarrollo de sistemas para las empresas y me dio seguridad para seguir adelante.&lt;br /&gt;&lt;br /&gt;Les debo las capturas de las pantallas Ojala que pueda encontrar los programas y mostrarles algunas capturas de ello.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-8923857553585921364?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/8923857553585921364/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=8923857553585921364' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/8923857553585921364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/8923857553585921364'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/trabajar-en-serio.html' title='A Trabajar en Serio'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-7071154678123752601</id><published>2008-01-03T07:33:00.000-08:00</published><updated>2008-01-06T14:41:58.574-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anecdotas'/><title type='text'>Clipper, Foxpro y Pascal</title><content type='html'>&lt;div style="text-align: justify;"&gt;En esa época el lenguaje dominante  para la creación de soluciones para la empresa eran los lenguajes XBase principalmente Clipper 5.3 y Foxpro 2.6,  los software que había desarrollado eran netamente con el objetivo de aprender pues no había tenido la oportunidad de desarrollar algún software para una empresa. Fue un colegio recuerdo que me contrato para desarrollarles su sistema de matriculas y notas con la condición que se utilice Foxpro 2.6.&lt;br /&gt;La verdad mi programación era mas académica y solo había desarrollado pequeños programas en Clipper como el famoso "Hola Mundo" y nada mas, Bueno acepte el proyecto del colegio y les dige que desarrollaría el software en Foxpro 2.6, bueno la verdad no sabia nada de Foxpro y decidí hacerlo en Pascal pq' era el lenguaje que conocía. Al inicio no les dije que el proyecto lo estaba desarrollando en pascal no fue hasta ya haber entregado los primeros resultados que converse con el director del colegio y me sincere, explicándole el porque había procedido de esa manera. Los resultados fueron buenos y como en la vida la gente trabaja en función a hechos y resultados el proyecto continuo.&lt;br /&gt;La verdad que fue uno de los trabajos mas duros que me toco hacer (Quien me mando hacerlo en Pascal ?) pues tuve que desarrollar todas las estructuras de archivos similar a los Dbfs que utilizaba clipper, los indices para los ordenamientos las impresiones, los browses, etc la verdad un trabajo bastante tedioso, pero gratificante.&lt;br /&gt;Al finalizar el proyecto me dio la seguridad de que se podrían hacer muchas cosas pero también aprendí que no tengo que &lt;span style="font-weight: bold;"&gt;volver a inventar la rueda si ya esta creada.&lt;/span&gt;&lt;br /&gt;Tuve  la satisfacción de haber creado muchas cosas y que estas funcionen pese  ha la complejidad interna que tuve que desarrollar. El software estuvo funcionando en el colegio por unos años mas es lo ultimo que supe.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Clipper y Foxpro&lt;/span&gt; están orientados al trabajo especifico de manipulación de data con archivos Dbfs y la verdad que son muy buenos en lo que hacen estos lenguajes, lógicamente que en la actualidad las cosas han cambiado tenemos mejores herramientas para hacer mejores sistemas. Pero acá tengo una reflexión muy grande A&lt;span style="font-weight: bold;"&gt;ntes los desarrolladores en su mayoría tenían un mejor nivel de preparación&lt;/span&gt; pues los sistemas funcionaban mejor en muchos casos sin gozar de las ventajas de hoy en día.&lt;br /&gt;&lt;br /&gt;Actualmente estoy buscando entre mis viejos Cds y Disquetes haber si encuentro el programa para mostrarles algunas capturas de pantallas de ese software.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-7071154678123752601?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/7071154678123752601/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=7071154678123752601' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/7071154678123752601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/7071154678123752601'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/clipper-foxpro-y-pascal.html' title='Clipper, Foxpro y Pascal'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-5536572738844322173</id><published>2008-01-02T23:18:00.002-08:00</published><updated>2008-01-06T14:42:24.625-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anecdotas'/><title type='text'>Mi primera  Broma en la UNS</title><content type='html'>&lt;div style="text-align: justify;"&gt;Después de haber aprendido lenguaje ensamblador y haber realizado algunos programitas interesantes, decidí adentrarme dentro del mundo de los programas residentes en memoria, simule un interprete de comandos como el DOS residente en memoria el cual interceptaba la interrupción del teclado para saber que cosa estaba tecleando el usuario y llamar al verdadero interprete de comandos, pudiendo el programa auto replicarse reproduciéndose en los diferentes ejecutables que habían en el sistema, este programa lo desarrolle en pascal y ensamblador, esto lo realice con fines netamente de investigación jugandole algunas bromas a compañeros y profesores que lógicamente no sabían que es lo que sucedía, después de comprobar el funcionamiento del programa y  el éxito que tuvo al reproducirse rápidamente, pare la broma eliminado al programa que estava contaminando varios Pcs. Para esto desarrolle un software que me permitía anular las funciones del programa nocivo. Este utilitario que desarrolle le agrege una funcionalidad muy interesante, que era la de verificar si un sector del disco realmente se encontraba dañado ya sea disco duro o Floppy. Algunos virus en ese tiempo marcaban algunos sectores en la fat como dañados los cuales no lo estava estos sectores dañados aparentemente no hacian mas que ser utilizados por virus para ocultar parte de su código maligno en el disco. Aqui algunas capturas del software     que desarrolle:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R3yQDePHtWI/AAAAAAAAAQw/JFpgHDAoTX0/s1600-h/antivir1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R3yQDePHtWI/AAAAAAAAAQw/JFpgHDAoTX0/s320/antivir1.png" alt="" id="BLOGGER_PHOTO_ID_5151150463135495522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_74kp4h888ZA/R3yQD-PHtXI/AAAAAAAAAQ4/088iiGkBprY/s1600-h/antivir2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_74kp4h888ZA/R3yQD-PHtXI/AAAAAAAAAQ4/088iiGkBprY/s320/antivir2.png" alt="" id="BLOGGER_PHOTO_ID_5151150471725430130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_74kp4h888ZA/R3yQD-PHtYI/AAAAAAAAARA/AF1f9yhQLsI/s1600-h/antivir3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_74kp4h888ZA/R3yQD-PHtYI/AAAAAAAAARA/AF1f9yhQLsI/s320/antivir3.png" alt="" id="BLOGGER_PHOTO_ID_5151150471725430146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En estas capturas se puede apreciar los caracteres assci modificados como los diferentes bordes de los cuadros en el programa, este programa funcionaba en una resolución de 80*25 en modo texto, actualmente tuve que ejecutarlo desde linux con Dosemu y Freedos  ya que en Widnows Xp se ejecuta con problemas.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-5536572738844322173?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/5536572738844322173/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=5536572738844322173' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5536572738844322173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/5536572738844322173'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/mi-primera-gran-broma.html' title='Mi primera  Broma en la UNS'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_74kp4h888ZA/R3yQDePHtWI/AAAAAAAAAQw/JFpgHDAoTX0/s72-c/antivir1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-4262568757158031248</id><published>2008-01-02T22:21:00.001-08:00</published><updated>2008-01-06T14:42:46.599-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anecdotas'/><title type='text'>Programando a bajo Nivel</title><content type='html'>Después de ganar un poco de experiencia en Turbo Pascal y C empece a llevar lenguaje ensamblador en la Universidad en la que he estudiado Universidad Nacional del Santa (UNS) es allí en el cual me empiezo ha interesar por el diseño del sistema operativo en ese entonces DOS y Windwos 3.11 mis preguntas eran como se podría realizar un software que no se pudiera copiar? como se administra la memoria en la PC ? como funcionan los programas residentes en memoria? y como funcionan los Virus?. Todo esto me apasiono muchísimo con la poca información que podía conseguir y sin acceso a Internet era muy poco lo que se podría aprender. No tuve la suerte de contar con docentes que podrían haber ayudado a despejar muchas dudas e inquietudes que se me presentaron.&lt;br /&gt;&lt;br /&gt;El lenguaje ensamblador era un mundo nuevo las interrupciones Bios y DOS un manjar en el que deleitarse, junte un dinero y logre comprar un excelente libro que me serviría de mucho "Programación en DOS manual de Referencia de Kris Jamsa" también pude adquirir el PC a Fondo de Peter Norton y el manual del programador del IBM PC de Peter Norton así como libros de Macroassebler programación avanzada, eran libros que para un estudiante de provincias era muy difícil conseguir.&lt;br /&gt;&lt;br /&gt;Allí me embulli en el mundo de las interrupciones Bios y DOS las interrupción de video 10H y la la de disco 13H son las que mas recuerdo. Recuerdo con mucha nostalgia el uso del antiquísimo debug y del exe2bin para convertir exes a formato com  uff tiempos aquellos.&lt;br /&gt;&lt;br /&gt;Lo primero que puse a prueba era la manipulación de la Fat de 16 bits en los disquetes, recuerdo que les jugaba bromas a mis compañeros de estudios marcandoles sus Fats con sectores defectuosos( Lógicamente defectuosos pero físicamente buenos) , a las finales me dejaban sus disquetes pensando que estaban inservibles, desarrolle algunos programitas para tal caso.&lt;br /&gt;Luego el mundo de las particiones, la mejor seguridad que yo concebía en aquel entonces era mover mi tabla de particiones a un disquete y escribiendo basura en mi tabla de particiones de mi disco duro, solo se podía arrancar con un disquete con clave el cual volvía a mover la tabla de particiones al disco duro a través de un programa en ensamblador que había desarrollado.&lt;br /&gt;&lt;br /&gt;Recuerdo que la interrupción 10H tenia una función que me permitía redefinir la tabla de caracteres assci para mostrar caracteres que el programador podría crear, recuerdo que ese fue uno de mis objetivos a lograr.&lt;br /&gt;De esos programas queda el recuerdo y el conocimiento que tuve, todo eso me prepararía para poder solucionar los problemas que se me presentarían en el futuro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-4262568757158031248?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/4262568757158031248/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=4262568757158031248' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/4262568757158031248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/4262568757158031248'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/programando-bajo-nivel.html' title='Programando a bajo Nivel'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-1772393063091566870</id><published>2008-01-02T15:32:00.001-08:00</published><updated>2008-02-07T12:29:05.185-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anecdotas'/><title type='text'>Mi primer Problema a resolver</title><content type='html'>No fue hasta el 4to Ciclo de la vida universitaria que me empezó ha apasionar la  programación   fue un curso de métodos numéricos en el cual se calculaban las raíces de funciones matemáticas así como derivadas he integrales.   Fue allí que le pregunte al profesor si podríamos tener un programa interactivo donde se podrían ingresar diferentes funciones matemáticas y calcularles las raíces sin necesidad de estar modificando el código fuente a cada momento. El profesor un matemático de mucha calidad y un buen profesional en su rama no conocía mucho sobre programación y me contesto &lt;span style="font-weight: bold;"&gt;que eso no se podía hacer&lt;/span&gt;. Fue entonces que encontré mi primer problema ha resolver recuerdo que me propuse aprender Turbo pascal a Fondo, pero ya había realizado algunos programas en C (Turbo C) en el semestre anterior que lo aprendí y desarrolle algunos programitas algo sencillos en gráficos y modo texto.&lt;br /&gt;&lt;br /&gt;Identificar el problema.- Tenia que crear un interprete para poder entender las diferentes funciones que se podían ingresar tomando en cuenta que estas podrían ser recursivas es decir solucionar esto:&lt;br /&gt;&lt;br /&gt;Fx=Sin(cos(x)+abs(34+2*x) )+ sqrt(abs(x*x+23*sqrt(x))) o formulas de ese tipo.&lt;br /&gt;&lt;br /&gt;Identificado el problema empece a darle solución al problema  en mi universidad no contábamos con Profesionales que habían desarrollado software ni eran desarrolladores,  así que estaba solo en mi entorno, quería preguntar a alguien y no me daban respuesta la bibliografia era muy escasa y no como ahora que tenemos información en abundancia y solo hay que buscarla.&lt;br /&gt;El programa debería permitir ingresar cualquier formula matemática Graficarla, determinar su deriva en un punto especifico así como su integral en un intervalo.&lt;br /&gt;Bueno me metí al problema y aprendí Turbo pascal dando solución ha este problema aquí unas capturas de Pantalla de ese programa:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_74kp4h888ZA/R3xyyePHtJI/AAAAAAAAAPI/Ow4IXgeNMrw/s1600-h/funciones3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_74kp4h888ZA/R3xyyePHtJI/AAAAAAAAAPI/Ow4IXgeNMrw/s320/funciones3.jpg" alt="" id="BLOGGER_PHOTO_ID_5151118285240513682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R3xyyuPHtKI/AAAAAAAAAPQ/QjVQQExQuoQ/s1600-h/funciones4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R3xyyuPHtKI/AAAAAAAAAPQ/QjVQQExQuoQ/s320/funciones4.jpg" alt="" id="BLOGGER_PHOTO_ID_5151118289535480994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_74kp4h888ZA/R3xyy-PHtNI/AAAAAAAAAPo/O5rGpZBullc/s1600-h/funciones7.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_74kp4h888ZA/R3xyy-PHtNI/AAAAAAAAAPo/O5rGpZBullc/s320/funciones7.jpg" alt="" id="BLOGGER_PHOTO_ID_5151118293830448338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R3x5BOPHtQI/AAAAAAAAAQA/yy3BEynCSrc/s1600-h/funciones8.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R3x5BOPHtQI/AAAAAAAAAQA/yy3BEynCSrc/s320/funciones8.jpg" alt="" id="BLOGGER_PHOTO_ID_5151125135713350914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_74kp4h888ZA/R3x5BOPHtRI/AAAAAAAAAQI/ez6JW64HI1k/s1600-h/funciones11.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_74kp4h888ZA/R3x5BOPHtRI/AAAAAAAAAQI/ez6JW64HI1k/s320/funciones11.jpg" alt="" id="BLOGGER_PHOTO_ID_5151125135713350930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Tuve algunos problemas para realizar las capturas en windows xp sobre todo con aplicaciones DOS que cambian el modo de vídeo no encontré un utilidad al respecto, en esta &lt;a href="http://support.microsoft.com/kb/924961"&gt;direccion&lt;/a&gt;&lt;br /&gt;me dice que es un problema de windows Xp, en todo caso lo solucione ejecutándolo en Linux con &lt;a href="http://www.dosemu.org/"&gt;dosemu&lt;/a&gt;  y &lt;a href="http://www.freedos.org/"&gt;freedos&lt;/a&gt; (un problemita mas tuve que compilarlo para 64 bits en Fedora Core 8 64bits) .&lt;br /&gt;En esa época en las PCs de la universidad donde estudiaba no teníamos windows y por lo tanto no tenia a la mano un editor gráfico así que decidí desarrollar uno, también lo desarrolle en turbo pascal 7.0 aqui 3 capturas del software:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R3x7MuPHtSI/AAAAAAAAAQQ/OOXVDfrRKf8/s1600-h/graficos3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R3x7MuPHtSI/AAAAAAAAAQQ/OOXVDfrRKf8/s320/graficos3.jpg" alt="" id="BLOGGER_PHOTO_ID_5151127532305102114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_74kp4h888ZA/R3x7M-PHtTI/AAAAAAAAAQY/qHqgRU3i-3Q/s1600-h/graficos7.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_74kp4h888ZA/R3x7M-PHtTI/AAAAAAAAAQY/qHqgRU3i-3Q/s320/graficos7.jpg" alt="" id="BLOGGER_PHOTO_ID_5151127536600069426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R3x8buPHtVI/AAAAAAAAAQo/VXm_v_yzVSY/s1600-h/graficos6.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R3x8buPHtVI/AAAAAAAAAQo/VXm_v_yzVSY/s320/graficos6.jpg" alt="" id="BLOGGER_PHOTO_ID_5151128889514767698" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-1772393063091566870?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/1772393063091566870/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=1772393063091566870' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/1772393063091566870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/1772393063091566870'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/mi-primer-problema-ha-resolver.html' title='Mi primer Problema a resolver'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_74kp4h888ZA/R3xyyePHtJI/AAAAAAAAAPI/Ow4IXgeNMrw/s72-c/funciones3.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-3232415178642654578</id><published>2008-01-02T14:57:00.000-08:00</published><updated>2008-01-06T14:43:18.664-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anecdotas'/><title type='text'>Primer Contacto con la Computadora</title><content type='html'>Junio 1992&lt;br /&gt;&lt;br /&gt;Fue en los primer ciclo de la vida universitaria cuando escuche el termino programación que sera programar ? que es Turbo pascal? términos totalmente extraños para mi. Después de unas semanas  Al fin pude conocer al señor Turbo pascal y no entiendo nada recién conozco una computadora es una 286  tiene un sistema operativo se llama D.O.S. y la verdad no  parece gran cosa he aprendido dos ordenes  el comando "Dir" y el comando "cls" esque en mi universidad como en muchas universidades del Perú  no hay muchas Pcs tenemos que hacer las clases de 2 Alumnos por PC yo y mi compañero  (Milton R.)  nos turnamos para escribir estos extraños comandos en la PC.&lt;br /&gt;Tengo entendido que llevaremos el D.O.S. asi como una hoja de calculo llamada Lotus 123 bueno ya las iremos conociendo. La verdad que no me esta gustando mucho esto de tipear unos comandos y que me salgan unos listados de archivos y otras cosas.&lt;br /&gt;&lt;br /&gt;Estamos por finalizar el 1er ciclo de la universidad y ya que se que es el D.O.S. es un sistema operativo que permite que las cosas funcionen en el computador tb. nos permite ejecutar programas de diferente naturaleza. Lotus 123 es una Hoja de calculo y se utiliza como su nombre lo indica para realizar cálculos matemáticos y también nos permite realizar gráficos a partir de datos. He escuchado de Turbo pascal es  un lenguaje de programación y se utiliza para hacert programas de todo tipo, solo lo he visto pq' todavía no se que es programar en los ciclos siguientes llevaremos un curso que se llama LPI (Lenguaje de programación I ) pues alli sabre con mas certeza para que sirve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-3232415178642654578?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/3232415178642654578/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=3232415178642654578' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3232415178642654578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/3232415178642654578'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/primer-contacto-con-la-computadora.html' title='Primer Contacto con la Computadora'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-2001798640575596248</id><published>2008-01-02T14:19:00.000-08:00</published><updated>2008-01-06T14:43:39.365-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Principal'/><title type='text'>Empezando a escribir el diario</title><content type='html'>Decidí crear este blog para comentar mis experiencia que he tenido en el desarrollo de software los últimos años. Mi idea principal es contribuir con los demás en situaciones similares a las que ami se me presentaron y como les di solución. también pretendo relatar mis experiencias como profesional de sistemas y lo apasionado que es nuestra carrera. Aquí pretendo relatar los diferentes proyectos que me toco desarrollar en el transcurso de estos años, también sera la bitácora de los actuales proyectos.&lt;br /&gt;Me considero un profesional promedio Dios no me ha dato  una sabiduría e inteligencia mas aya de lo normal, así que no vayan a creer que acá se contara la historia de como se escribirá un sistema operativo o como se desarrollara un software maravilloso, acá solo se contara las anécdotas y problemas comunes y cotidianos que se le presentan a la mayoría de desarrolladores.&lt;br /&gt;&lt;br /&gt;Gracias a todos aspiro contribuir en algo con este proyecto.&lt;br /&gt;&lt;br /&gt;Atte.&lt;br /&gt;&lt;br /&gt;Oscar Zelada Pozo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-2001798640575596248?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/2001798640575596248/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=2001798640575596248' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/2001798640575596248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/2001798640575596248'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/01/empezando-escribir-el-diario.html' title='Empezando a escribir el diario'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-6135401841587741461</id><published>2008-01-01T07:46:00.000-08:00</published><updated>2008-03-25T08:58:23.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Matlab'/><title type='text'>Metodo de Gauss-Jordan</title><content type='html'>&lt;p style="text-align: left;" align="left"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;&lt;span style=""&gt;           &lt;/span&gt;Este método utiliza las mismas técnicas de eliminación Gaussiana (incluyendo el pivoteo), pero con el objetivo de finalizar con una matriz de la siguiente forma:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/3f1.gif" border="0" height="89" width="39" /&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;donde&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt; &lt;v:stroke joinstyle="miter"&gt; &lt;v:formulas&gt;  &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;  &lt;v:f eqn="sum @0 1 0"&gt;  &lt;v:f eqn="sum 0 0 @1"&gt;  &lt;v:f eqn="prod @2 1 2"&gt;  &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;  &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;  &lt;v:f eqn="sum @0 0 1"&gt;  &lt;v:f eqn="prod @6 1 2"&gt;  &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;  &lt;v:f eqn="sum @8 21600 0"&gt;  &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;  &lt;v:f eqn="sum @10 21600 0"&gt; &lt;/v:formulas&gt; &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt; &lt;o:lock ext="edit" aspectratio="t"&gt;&lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1078" type="#_x0000_t75" style="'width:12.75pt;" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image001.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image002.gif" shapes="_x0000_i1078" height="24" width="17" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1078" drawaspect="Content" objectid="_1032872744"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt;  &lt;/span&gt;es la &lt;i style=""&gt;matriz identidad&lt;/i&gt; de&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1079" type="#_x0000_t75" style="'width:21pt;height:11.25pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image003.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image004.gif" shapes="_x0000_i1079" height="15" width="28" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1079" drawaspect="Content" objectid="_1032872745"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;.&lt;!--[if !supportEmptyParas]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="30%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="70%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image006.gif" shapes="_x0000_i1029" height="96" width="101" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;&lt;span style=""&gt;           &lt;/span&gt;Para lograr esto, se usa la técnica del pivoteo con la única diferencia que el pivote se usa para hacer ceros hacia abajo y&lt;span style=""&gt;  &lt;/span&gt;hacia arriba.&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=""&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;b&gt;&lt;u&gt;&lt;span style=""&gt;Ejemplo 1&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=""&gt;&lt;b&gt;:&lt;/b&gt;&lt;span style="font-size:14;"&gt;     &lt;/span&gt;Usar el método de Gauss-Jordan para resolver el siguiente sistema:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="30%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="70%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image008.gif" shapes="_x0000_i1030" height="72" width="240" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;&lt;b&gt;So&lt;/b&gt;&lt;i style=""&gt;&lt;b&gt;lución.&lt;/b&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/i&gt;Comenzamos con la matriz aumentada:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="30%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="70%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image010.gif" shapes="_x0000_i1031" height="75" width="172" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Procedemos a hacer el primer pivoteo, y para ello, intercambiamos los renglones&lt;span style=""&gt;  &lt;/span&gt;1&lt;span style=""&gt;  &lt;/span&gt;y&lt;span style=""&gt;  &lt;/span&gt;2:&lt;span style=""&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="30%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="70%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image012.gif" shapes="_x0000_i1032" height="75" width="172" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;y&lt;span style=""&gt;  &lt;/span&gt;haciendo ceros debajo del pivote, obtenemos:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="7%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="93%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;&lt;sub&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image014.gif" shapes="_x0000_i1033" height="75" width="255" /&gt;&lt;/sub&gt;~        &lt;sub&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image016.gif" shapes="_x0000_i1034" height="75" width="169" /&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Ahora, para colocar adecuadamente el segundo pivote intercambiamos los renglones&lt;span style=""&gt;  &lt;/span&gt;2&lt;span style=""&gt;  &lt;/span&gt;y&lt;span style=""&gt;  &lt;/span&gt;3:&lt;span style=""&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="30%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="70%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image018.gif" shapes="_x0000_i1035" height="75" width="169" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;Para hacer ceros arriba del pivote&lt;span style=""&gt;   &lt;/span&gt;1.25,&lt;span style=""&gt;  &lt;/span&gt;multiplicamos el renglón&lt;span style=""&gt;  &lt;/span&gt;2&lt;span style=""&gt;  &lt;/span&gt;por &lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1036" type="#_x0000_t75" style="'width:17.25pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image019.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image020.gif" shapes="_x0000_i1036" height="24" width="23" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1036" drawaspect="Content" objectid="_1032872755"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt; &lt;/span&gt;y se lo sumamos al renglón&lt;span style=""&gt;  &lt;/span&gt;1; para hacer ceros debajo del mismo pivote, multiplicamos al mismo renglón 2 por &lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1037" type="#_x0000_t75" style="'width:18.75pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image021.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image022.gif" shapes="_x0000_i1037" height="24" width="25" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1037" drawaspect="Content" objectid="_1032872756"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt; &lt;/span&gt;y se lo sumamos al renglón 3 . Todo esto nos da:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="30%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="70%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image024.gif" shapes="_x0000_i1038" height="75" width="179" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;Ahora procedemos a hacer ceros arriba del pivote 0.09 .&lt;span style=""&gt;   &lt;/span&gt;Para ello, multiplicamos el renglón&lt;span style=""&gt;  &lt;/span&gt;3&lt;span style=""&gt;   &lt;/span&gt;por&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1039" type="#_x0000_t75" style="'width:18pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image025.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image026.gif" shapes="_x0000_i1039" height="24" width="24" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1039" drawaspect="Content" objectid="_1032872758"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt; &lt;/span&gt;y se lo sumamos al renglón 2; igualmente multiplicamos el renglón 3 por&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1040" type="#_x0000_t75" style="'width:18.75pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image027.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image028.gif" shapes="_x0000_i1040" height="24" width="25" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1040" drawaspect="Content" objectid="_1032872759"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt; &lt;/span&gt;y se lo sumamos al renglón 1.&lt;span style=""&gt;   &lt;/span&gt;Todo esto nos da:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="30%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="70%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image030.gif" shapes="_x0000_i1041" height="75" width="167" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;Finalmente para hacer los&lt;span style=""&gt;  &lt;/span&gt;1’s&lt;span style=""&gt;  &lt;/span&gt;( unos ) en la diagonal principal, multiplicamos los renglones&lt;span style=""&gt;  &lt;/span&gt;1 , 2,&lt;span style=""&gt;  &lt;/span&gt;y 3 por&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1042" type="#_x0000_t75" style="'width:45pt;height:30.75pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image031.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image032.gif" shapes="_x0000_i1042" height="41" width="60" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1042" drawaspect="Content" objectid="_1032872761"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt; &lt;/span&gt;y&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1043" type="#_x0000_t75" style="'width:27pt;height:30.75pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image033.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image034.gif" shapes="_x0000_i1043" height="41" width="36" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1043" drawaspect="Content" objectid="_1032872762"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt; &lt;/span&gt;, respectivamente.&lt;span style=""&gt;  &lt;/span&gt;Obtenemos entonces la matriz final:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="30%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="70%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image036.gif" shapes="_x0000_i1044" height="75" width="123" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;La cual nos da la solución del sistema de ecuaciones:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="30%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="70%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image038.gif" shapes="_x0000_i1045" height="48" width="63" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;span style=""&gt;&lt;sub&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image040.gif" shapes="_x0000_i1046" height="24" width="69" /&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style=""&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;b&gt;&lt;u&gt;&lt;span style=""&gt;Ejemplo 2&lt;/span&gt;&lt;/u&gt;&lt;span style=""&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style=""&gt;&lt;span style="font-size:14;"&gt;     &lt;/span&gt;Usar el método de Gauss-Jordan para resolver el siguiente sistema:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="30%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="70%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image042.gif" shapes="_x0000_i1047" height="72" width="204" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;b&gt;Solución&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size:14;"&gt;.&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-size:14;"&gt;     &lt;/span&gt;Escribimos la matriz aumentada del sistema:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="29%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="71%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image044.gif" shapes="_x0000_i1048" height="75" width="147" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;Observamos que el primer elemento pivote está bien colocado y por lo tanto no hay necesidad de intercambiar renglones. Por lo tanto hacemos ceros debajo del pivote&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1049" type="#_x0000_t75" style="'width:33.75pt;height:17.25pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image045.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image046.gif" shapes="_x0000_i1049" height="23" width="45" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1049" drawaspect="Content" objectid="_1032872769"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;; para ello, multiplicamos el renglón 1 por&lt;span style=""&gt;  &lt;/span&gt;0.4 y se lo sumamos al renglón 2, y&lt;span style=""&gt;   &lt;/span&gt;también multiplicamos el mismo renglón 1 por –0.5 y se lo sumamos al renglón 3. Esto nos&lt;span style=""&gt;  &lt;/span&gt;da la siguiente matriz:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="29%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="71%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image048.gif" shapes="_x0000_i1050" height="75" width="151" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;Para elegir el segundo elemento pivote, debemos escoger el elemento mayor (con valor absoluto) entre&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1051" type="#_x0000_t75" style="'width:47.25pt;height:17.25pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image049.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image050.gif" shapes="_x0000_i1051" height="23" width="63" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1051" drawaspect="Content" objectid="_1032872771"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt; &lt;/span&gt;y&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1052" type="#_x0000_t75" style="'width:44.25pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image051.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image052.gif" shapes="_x0000_i1052" height="24" width="59" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1052" drawaspect="Content" objectid="_1032872772"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;, el cual obviamente es éste último. Por lo tanto, debemos intercambiar el renglón 2 y el renglón 3. Tenemos entonces:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="29%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="71%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image054.gif" shapes="_x0000_i1053" height="75" width="151" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;Procedemos a hacer ceros arriba y abajo de nuestro segundo elemento pivote; para ello, multiplicamos el renglón 2 por&lt;span style=""&gt;  &lt;/span&gt;0.5 y lo sumamos al renglón 1, y también multiplicamos el mismo renglón 2 por&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1054" type="#_x0000_t75" style="'width:15pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image055.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image056.gif" shapes="_x0000_i1054" height="24" width="20" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1054" drawaspect="Content" objectid="_1032872774"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt; &lt;/span&gt;y lo sumamos al renglón 3.&lt;span style=""&gt;  &lt;/span&gt;Esto nos da:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="29%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="71%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image058.gif" shapes="_x0000_i1055" height="75" width="168" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;Nuestro tercer elemento pivote es &lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1056" type="#_x0000_t75" style="'width:59.25pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image059.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image060.gif" shapes="_x0000_i1056" height="24" width="79" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1056" drawaspect="Content" objectid="_1032872776"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;. Para hacer ceros arriba de este elemento, multiplicamos el renglón 3 por&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1057" type="#_x0000_t75" style="'width:27pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image061.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image062.gif" shapes="_x0000_i1057" height="24" width="36" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1057" drawaspect="Content" objectid="_1032872777"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt;  &lt;/span&gt;y lo sumamos al renglón 2, y también multiplicamos el mismo renglón 3 por&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1058" type="#_x0000_t75" style="'width:18pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image063.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image064.gif" shapes="_x0000_i1058" height="24" width="24" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1058" drawaspect="Content" objectid="_1032872778"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt; &lt;/span&gt;y lo sumamos al renglón 1. Esto nos da:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="29%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="71%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image066.gif" shapes="_x0000_i1059" height="75" width="168" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;Finalmente, hacemos los 1’s&lt;span style=""&gt;  &lt;/span&gt;(unos) en la diagonal, multiplicando el renglón 2 por&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1060" type="#_x0000_t75" style="'width:18.75pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image067.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image068.gif" shapes="_x0000_i1060" height="24" width="25" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1060" drawaspect="Content" objectid="_1032872781"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style=""&gt; &lt;/span&gt;y el renglón 3 por&lt;span style=""&gt;  &lt;/span&gt;&lt;sub&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1061" type="#_x0000_t75" style="'width:27pt;height:18pt'" ole="" fillcolor="window"&gt; &lt;v:imagedata src="./JORDAN_files/image069.wmz" title=""&gt;&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image070.gif" shapes="_x0000_i1061" height="24" width="36" /&gt;&lt;!--[endif]--&gt;&lt;/sub&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1061" drawaspect="Content" objectid="_1032872782"&gt; &lt;/o:OLEObject&gt;&lt;/xml&gt;&lt;![endif]--&gt;. Esto nos da la matriz final:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td width="29%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="71%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image072.gif" shapes="_x0000_i1062" height="75" width="123" /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=""&gt;Por lo tanto, la solución del sistema de ecuaciones es:&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;          &lt;table border="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="29%"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;td width="71%"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;sub&gt;&lt;span style=""&gt;&lt;img src="http://docentes.uacj.mx/gtapia/AN/Unidad3/Jordan/JORDAN_files/image074.gif" shapes="_x0000_i1063" height="72" width="93" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/sub&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Codificacion en Matlab&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;El programa se desarrollara en Matlab implementando el algoritmo en una funcion.&lt;br /&gt;El codigo fuente a continuación:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;function respuesta=gauss(a,b)&lt;br /&gt;%%---obtener la solcuion de un sistema de ecuaciones por el metod de gauss&lt;br /&gt;%%------------------------------------------------------------------------&lt;br /&gt;% a= matriz cuadrada con los coefcientes del sistema&lt;br /&gt;% b= los coeficientes de las  igualdades de las ecuaciones del sistema&lt;br /&gt;%***************************************************************************&lt;br /&gt;variables=length(a);&lt;br /&gt;for i=1:variables&lt;br /&gt;aux=1/a(i,i);&lt;br /&gt;%*******Convirtiendo en 1 el elemnto de la matriz identidad******&lt;br /&gt;b(i)=b(i)*aux;&lt;br /&gt;for j=1:variables&lt;br /&gt; a(i,j)=a(i,j)*aux;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;%//*******eliminando las filas precedentes******************&lt;br /&gt;for j=1:i-1&lt;br /&gt;  aux=-1*a(j,i);&lt;br /&gt;  b(j)=b(j)+b(i)*aux;&lt;br /&gt;  for k=1:variables&lt;br /&gt;    a(j,k)=a(j,k)+aux*a(i,k);&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;%//*******eliminando las filas posteriores******************&lt;br /&gt;for j=i+1:variables&lt;br /&gt;  aux=-1*a(j,i);&lt;br /&gt;  b(j)=b(j)+b(i)*aux;&lt;br /&gt;  for k=1:variables&lt;br /&gt;    a(j,k)=a(j,k)+aux*a(i,k);&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;disp(a);&lt;br /&gt;respuesta=b;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;DIAGRAMA DE FLUJO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_74kp4h888ZA/R-kgtwtF0bI/AAAAAAAAAXg/g9PQUIRaGjw/s1600-h/gauss.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_74kp4h888ZA/R-kgtwtF0bI/AAAAAAAAAXg/g9PQUIRaGjw/s320/gauss.jpeg" alt="" id="BLOGGER_PHOTO_ID_5181708816806695346" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-6135401841587741461?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/6135401841587741461/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=6135401841587741461' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/6135401841587741461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/6135401841587741461'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/03/metodo-de-gauss-jordan.html' title='Metodo de Gauss-Jordan'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_74kp4h888ZA/R-kgtwtF0bI/AAAAAAAAAXg/g9PQUIRaGjw/s72-c/gauss.jpeg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6435253965357282270.post-8619107985448932021</id><published>2007-02-24T16:16:00.000-08:00</published><updated>2008-03-25T07:56:39.732-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNS'/><title type='text'>Notas Teoria de Compiladores</title><content type='html'>&lt;a href="http://groups.google.com/group/diario_desarrollador/web/compiladores_iunidad.pdf"&gt;Aquí&lt;/a&gt; están las notas de la primera Unidad&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6435253965357282270-8619107985448932021?l=oscarzeladapd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oscarzeladapd.blogspot.com/feeds/8619107985448932021/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6435253965357282270&amp;postID=8619107985448932021' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/8619107985448932021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6435253965357282270/posts/default/8619107985448932021'/><link rel='alternate' type='text/html' href='http://oscarzeladapd.blogspot.com/2008/02/notas-teoria-de-compiladores.html' title='Notas Teoria de Compiladores'/><author><name>Oscar Zelada Pozo</name><uri>http://www.blogger.com/profile/09347471089520574807</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://lh3.google.es/image/oszeladap/Rk0hgUsMTxI/AAAAAAAAABI/FBMUk7dj0NE/oscarg.jpg'/></author><thr:total>4</thr:total></entry></feed>
