pfc-prolog-cvs Mailing List for pfc-prolix (Page 6)
Status: Beta
Brought to you by:
ivanfrade
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(77) |
Jun
(37) |
Jul
(152) |
Aug
(180) |
Sep
(45) |
Oct
|
Nov
|
Dec
|
---|
From: <iva...@us...> - 2003-08-19 13:14:21
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/aux In directory sc8-pr-cvs1:/tmp/cvs-serv27267 Added Files: requisitos.tex Log Message: Added auxiliar file to write requirements --- NEW FILE: requisitos.tex --- % % Entornos y comandos para los requisitos % \newenvironment{requisitos}{ % \begingroup % \setlength{\leftmarginii}{1.2cm} % \setlength{\leftmarginiii}{1.3cm} % \begin{enumerate} % %\newcounter{CRequisitosI} %\renewcommand{\makelabel}[1]{\stepcounter{CRequisitosI}\mbox{R\arabic{CRequisitosI}.}} %\renewcommand{\labelenumii}{R\arabic{CRequisitosI}.\arabic{enumii}} \renewcommand{\labelenumi}{R\theenumi.} % \renewcommand{\labelenumii}{\labelenumi\arabic{enumii}.} % \renewcommand{\labelenumiii}{\labelenumii\arabic{enumiii}.} % }{ % \end{enumerate} % \endgroup % } |
From: <iva...@us...> - 2003-08-19 13:14:00
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion In directory sc8-pr-cvs1:/tmp/cvs-serv26127 Modified Files: motivacion.tex objetivos.tex Log Message: Minor changes. Index: motivacion.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/motivacion.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** motivacion.tex 18 Aug 2003 18:44:55 -0000 1.2 --- motivacion.tex 19 Aug 2003 13:10:17 -0000 1.3 *************** *** 6,10 **** \section{Motivación} ! El proyecto Prolix nace bajo el amparo del proyecto Idefix, con el objetivo de proveer una herramienta de enseñanza a traves de la Web. Entre los objetivos de Idefix esta el facilitar la enseñanza a traves de internet. El auge de este medio que ya es de uso cotidiano, pone al alcanze del profesor y alumno una serie de herramientas de comunicación y consulta que sin duda pueden aprovecharse para replantear el concepto de enseñanza a distancia tradicional. Sin embargo las herramientas educativas no estan a la altura de la anteriores, teniendo que recurrir al material tradicional para realizar la labor de las asignaturas, reduciendose así el importante papel que Internet puede jugar en un canal de comunicación para el correo y la web, que si bien es un gran avance, no aprovecha ni un mínimo porcentaje de su potencial. \newline --- 6,10 ---- \section{Motivación} ! El proyecto \Texttt{Prolix} nace bajo el amparo del proyecto Idefix, con el objetivo de proveer una herramienta de enseñanza a traves de la Web. Entre los objetivos de Idefix esta el facilitar la enseñanza a traves de internet. El auge de este medio que ya es de uso cotidiano, pone al alcanze del profesor y alumno una serie de herramientas de comunicación y consulta que sin duda pueden aprovecharse para replantear el concepto de enseñanza a distancia tradicional. Sin embargo las herramientas educativas no estan a la altura de la anteriores, teniendo que recurrir al material tradicional para realizar la labor de las asignaturas, reduciendose así el importante papel que Internet puede jugar en un canal de comunicación para el correo y la web, que si bien es un gran avance, no aprovecha ni un mínimo porcentaje de su potencial. \newline *************** *** 12,16 **** \newline ! Prolix es una de estas herramientas: un intérprete de Prolog que funciona a traves de la Web. Enmarcandolo en el contexto anterior, los alumnos de la asignatura de Lógica o Programación Funcional, por usar un ejemplo de la facultad en la que se desarrolla este proyecto, pueden realizar sus prácticas online, en cualquier ordenador, sin requerir software adicional, mejorando así la facilidad de uso respecto a un intérprete tradicional. Pero no es esta la única ventaja que vamos a obtener de un intérprete online, pues a su alrededor pueden crearse una serie de servicios extra como una biblioteca de programas, en la que los usuarios (alumnos) pudiesen compartir programas, observando el código de ejemplos que el profesor pueda incluir o de aportaciones de otros alumnos. Desde el punto de vista de quien empieza a trabajar con Prolog (y podemos hacerlo extensible a cualquier lenguaje de programación), la observación de otro código es una ayuda considerable para su aprendizaje. Es sugerencia común entre programadores el leer código como forma de adquirir habilidad en el arte de la programación. Para el profesor, este sistema le aporta una imagen más próxima a la realidad de la evolución de sus alumnos: de un trabajo semanal (como suele ser habitual) se pasa a valorar el trabajo dia a dia, pudiendo plantear un ejercicio y resolverse en el tiempo que el alumno decida dedicarle (podria ser instantaneamente en un caso ideal). La aportación de los usuarios a la biblioteca también permite conocer el nivel de conocimiento y la evolución de los mismos. \newline --- 12,16 ---- \newline ! \Texttt{Prolix} es una de estas herramientas: un intérprete de Prolog que funciona a traves de la Web. Enmarcandolo en el contexto anterior, los alumnos de la asignatura de Lógica o Programación Funcional, por usar un ejemplo de la facultad en la que se desarrolla este proyecto, pueden realizar sus prácticas online, en cualquier ordenador, sin requerir software adicional, mejorando así la facilidad de uso respecto a un intérprete tradicional. Pero no es esta la única ventaja que vamos a obtener de un intérprete online, pues a su alrededor pueden crearse una serie de servicios extra como una biblioteca de programas, en la que los usuarios (alumnos) pudiesen compartir programas, observando el código de ejemplos que el profesor pueda incluir o de aportaciones de otros alumnos. Desde el punto de vista de quien empieza a trabajar con Prolog (y podemos hacerlo extensible a cualquier lenguaje de programación), la observación de otro código es una ayuda considerable para su aprendizaje. Es sugerencia común entre programadores el leer código como forma de adquirir habilidad en el arte de la programación. Para el profesor, este sistema le aporta una imagen más próxima a la realidad de la evolución de sus alumnos: de un trabajo semanal (como suele ser habitual) se pasa a valorar el trabajo dia a dia, pudiendo plantear un ejercicio y resolverse en el tiempo que el alumno decida dedicarle (podria ser instantaneamente en un caso ideal). La aportación de los usuarios a la biblioteca también permite conocer el nivel de conocimiento y la evolución de los mismos. \newline Index: objetivos.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/objetivos.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** objetivos.tex 18 Aug 2003 18:44:55 -0000 1.2 --- objetivos.tex 19 Aug 2003 13:10:17 -0000 1.3 *************** *** 10,14 **** Hablando del aspecto mas concreto del proyecto, se trata de desarrollar la interfaz Web que permita interactuar con un intérprete de Prolog existente de un Proyecto Fin de Carrera anterior. Deberia presentar el arbol de resolución del programa según avanza su ejecución, disponer de un sistema de usuarios, y una biblioteca de ejemplos donde los alumnos y profesores puedan poner sus programas a disposición de los demás. \newline ! El proyecto, consecuente con sus intenciones educativas, se liberará como software libre. Aunque inicialmente, por ser Proyecto Fin de Carrera y por tanto trabajo individual, no resulta demasiado util esta característica, en el momento en que el programa quede liberado, cualquier programador puede modificarlo, mejorarlo y redistribuirlo. Esto permitira que con el paso del tiempo Prolix se actualice por programadores que lo hayan utilizado, o lo esten utilizando y por lo tanto perciban sus carencias, evitando que el proyecto se quede obsoleto en un plazo relativamente breve de tiempo (hecho común en la informática). \newline El objetivo de mantener vivo el proyecto, con la colaboración de los usuarios, conduce a la idea de lograr el mayor numero de usuarios posibles. Y una de las mayores trabas en la difusión de un trabajo suele ser el idioma. Por eso otro de los objetivos propuestos es lograr un sistema internacionalizable. El código fuente y la documentación de la página web estan en ingles, y todos los mensajes mostrados al usuario recogidos de tal manera que la internacionalización de la aplicación es rápida, sencilla, y asequible incluso para usuarios no programadores. --- 10,14 ---- Hablando del aspecto mas concreto del proyecto, se trata de desarrollar la interfaz Web que permita interactuar con un intérprete de Prolog existente de un Proyecto Fin de Carrera anterior. Deberia presentar el arbol de resolución del programa según avanza su ejecución, disponer de un sistema de usuarios, y una biblioteca de ejemplos donde los alumnos y profesores puedan poner sus programas a disposición de los demás. \newline ! El proyecto, consecuente con sus intenciones educativas, se liberará como software libre. Aunque inicialmente, por ser Proyecto Fin de Carrera y por tanto trabajo individual, no resulta demasiado util esta característica, en el momento en que el programa quede liberado, cualquier programador puede modificarlo, mejorarlo y redistribuirlo. Esto permitira que con el paso del tiempo \Texttt{Prolix} se actualice por programadores que lo hayan utilizado, o lo esten utilizando y por lo tanto perciban sus carencias, evitando que el proyecto se quede obsoleto en un plazo relativamente breve de tiempo (hecho común en la informática). \newline El objetivo de mantener vivo el proyecto, con la colaboración de los usuarios, conduce a la idea de lograr el mayor numero de usuarios posibles. Y una de las mayores trabas en la difusión de un trabajo suele ser el idioma. Por eso otro de los objetivos propuestos es lograr un sistema internacionalizable. El código fuente y la documentación de la página web estan en ingles, y todos los mensajes mostrados al usuario recogidos de tal manera que la internacionalización de la aplicación es rápida, sencilla, y asequible incluso para usuarios no programadores. |
From: <iva...@us...> - 2003-08-19 01:16:36
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/requisitos In directory sc8-pr-cvs1:/tmp/cvs-serv26082/requisitos Modified Files: formales.tex Log Message: Incluida referencias web en la introduccion - mejorada seccion objetivos Index: formales.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/requisitos/formales.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** formales.tex 18 Aug 2003 18:49:01 -0000 1.1 --- formales.tex 19 Aug 2003 01:16:34 -0000 1.2 *************** *** 7,18 **** \section{Especificación formal de requisitos funcionales} ! \input{aux/requisitos.tex} \begin{requisitos} ! \item La aplicación debe manejar programas en Prolog ! \begin{enumerate} ! \item La aplicación debe admitir la carga de programas y la resolución de consultas en lenguaje Prolog. ! \item En cada paso detectará los errores correspondientes e informará al ususario para su corrección. ! \end{enumerate} \item El uso de la aplicación será para usuarios registrados --- 7,19 ---- \section{Especificación formal de requisitos funcionales} ! \input{../aux/requisitos.tex} \begin{requisitos} ! ! \item El entorno de la aplicación debe ser totalmente web ! \begin{enumerate} ! \item La utilización de la aplicación no deberia requerir la instalación de software por parte del cliente ! \item Se debera ajustar el máximo posible a estándares que garanticen su funcionamiento en todo tipo de clientes ! \end{enumerate} \item El uso de la aplicación será para usuarios registrados *************** *** 23,34 **** \end{enumerate} \item La resolución de las consultas podra obtenerse de forma gráfica. \begin{enumerate} \end{enumerate} \item Los usuarios dispondrán de una biblioteca de programas \begin{enumerate} \end{enumerate} - \end{requisitos} --- 24,53 ---- \end{enumerate} + \item La aplicación debe manejar programas en Prolog + \begin{enumerate} + \item La aplicación debe admitir la carga de programas y la resolución de consultas en lenguaje Prolog. + \item En cada paso detectará los errores correspondientes e informará al ususario para su corrección. + \item Durante la sesión de usuario se pueden almacenar las ultimas consultas realizadas, pudiendo repetirse sin ser necesario teclearlas de nuevo. + \end{enumerate} + \item La resolución de las consultas podra obtenerse de forma gráfica. \begin{enumerate} + \item Debe poder observarse una representación gráfica del arbol de resolución + \item Esta representación se hará si es posible en SVG u otro estandar libre. En su defecto en un formato gráfico visualizable en cualquier sistema cliente. \end{enumerate} \item Los usuarios dispondrán de una biblioteca de programas \begin{enumerate} + \item Cualquier usuario puede guardar sus programas en una biblioteca, poniendolos a disposición de los demás usuarios + \item Cada usuario tiene acceso a todos los programas de la biblioteca, pudiendo ejecutarlos, modificarlos, y guardarlos con otro nombre. + \item El usuario puede borrar solo sus propios programas. + \item El administrador debe poder borrar cualquier programa + \end{enumerate} + + \item La aplicación será internacionalizable + \begin{enumerate} + \item Se debe facilitar al máximo la internacionalización de la parte cliente del programa + \item El código fuente estará escrito en ingles. \end{enumerate} \end{requisitos} |
From: <iva...@us...> - 2003-08-19 01:16:36
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion In directory sc8-pr-cvs1:/tmp/cvs-serv26082/introduccion Modified Files: herramientas.tex solo_intro.tex Added Files: bibliografia.tex Log Message: Incluida referencias web en la introduccion - mejorada seccion objetivos --- NEW FILE: bibliografia.tex --- \newcommand{\url}[1]{\texttt{#1}} \renewcommand{\bibname}{Referencias} \begin{thebibliography}{11} \bibitem{debian-web}Proyecto Debian GNU/Linux: \url{http://debian.org} \bibitem{blackdown-web}Proyecto Blackdown: \url{http://www.blackdown.org} \bibitem{gnu-fsf}Free Software Foundation: \url{http://www.gnu.org} \bibitem{gnu-emacs-web}GNU Emacs: \url{http://www.gnu.org/software/emacs/emacs.html} \bibitem{xemacs-web}XEmacs: \url{http://www.xemacs.org} \bibitem{jdee-web}JDEE: \url{http://jdee.sunsite.dk/rootpage.html} \bibitem{licencia-gpl}Licencia GPL: \url{http://www.gnu.org/licenses/licenses.html} \bibitem{ant-web}Ant: \url{http://ant.apache.org/} \bibitem{xdoclet-web}XDoclet: \url{http://xdoclet.sourceforge.net/index.html} \bibitem{j2ee-web}Plataforma J2EE: \url{http://java.sun.com/j2ee/} \bibitem{jboss-web}jBoss: \url{http://www.jboss.org/index.html} \bibitem{phpmyadmin-web}phpMyAdmin: \url{http://www.phpmyadmin.net/} \bibitem{struts-web}Struts: \url{http://jakarta.apache.org/struts/} \bibitem{jakarta-web}Proyecto Jakarta: \url{http://jakarta.apache.org/} \bibitem{wafer-web}Wafer: \url{http://www.waferproject.org/index.html} \bibitem{cvs-web}CVS: \url{http://www.cvshome.org/} \bibitem{sourceforge-web}Sourceforge: \url{http://www.sourceforge.net} \end{thebibliography} Index: herramientas.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/herramientas.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** herramientas.tex 18 Aug 2003 18:44:55 -0000 1.1 --- herramientas.tex 19 Aug 2003 01:16:34 -0000 1.2 *************** *** 16,20 **** \item Herramienta de compilación Ant \item Generador de código XDoclet 1.2b3 ! \item Implementación del entorno J2EE jBOSS \item Servidor de Base de Datos mySQL \item Gestión de la base de datos phpMyAdmin --- 16,20 ---- \item Herramienta de compilación Ant \item Generador de código XDoclet 1.2b3 ! \item Implementación de la plataforma J2EE jBoss \item Servidor de Base de Datos mySQL \item Gestión de la base de datos phpMyAdmin *************** *** 24,50 **** \item Sistema de control de bugs (proporcionado por sourceforge.net) \item Sistema de composición de textos \LaTeX \end{itemize} \subsubsection {Sistema Operativo Debian GNU/Linux} ! El proyecto comenzó a desarrollarse en la versión <<woody>> de Debian GNU/Linux, hasta este momento la versión estable, pero muchas de las herramientas utilizadas no estaban <<empaquetadas>> (precompiladas) para este sistema. El problema no es solo tener que buscar, bajar, y compilar los programas, sino la molestia de mantener al dia las versiones. La actualización a Sid corrigió este problema. Más software, más moderno y actualizado mucho mas a menudo esta a disposición del usuario con esta distribución, al coste de ser considerada <<inestable>>. Es interesante mencionar que durante el desarrollo del proyecto esta presunta <<inestabilidad>> brilló por su ausencia. \subsubsection {Entorno de desarrollo Java Blackdown 1.4} ! Blackdown se encarga de portar a linux el JDK Java de Sun. Empezó siendo el unico entorno disponible en linux, pero hoy en dia hay disponible incluso el famoso JBuilder. %FIXME poner mas \subsubsection {Editor XEmacs con JDE} ! El editor XEmacs es uno de los emblemas del software libre. Se trata de un editor de texto escrito en lisp, desarrollado originalmente por Richard Stallman (uno de los padres del software libre y de la Free Software Foundation). Como editor de texto simple incluye combinaciones de teclas para todos los eventos habituales (ir al principio, final del fichero, o linea o parrafo, borrar una linea, insertar una linea en blanco, avanzar o retroceder u palabra o linea,\dots), pero también dispone de decenas de opciones, algunas muy utiles y otras mas bien curiosas. En el aspecto util de editor, permite comparar ficheros, aplicar parches, y reconoce numerosos formatos a los que puede colorear la sintaxis (Tex, java, c, c++, haskell, \dots). En el aspecto mas lúdico-curioso, dispone de agenda, lector de correo, lector de news, juegos como el buscaminas o el tetris, \dots !incluso de un psicoanalista!. ! JDE (Java Desktop Environment) es un paquete de extras para xemacs que integra el editor con el JDK de java. El resultado es el de un Entorno de Desarrollo Integrado (IDE) en nuestro editor habitual. Con unos pequeños retoques a la configuración, podemos compilar nuestro proyecto con una combinación de teclas (Ctrl + (c v b)), obteniendo los errores en una de las ventanas del xemacs, en la que, seleccionando el error nos lleva a la linea de codigo que causa el problema. Otra de las utilidades, es la de automatizar los imports en java. Cuando se utiliza una clase, basta con ponerse encima del nombre de esa clase, usar la combinación ctrl + (c v z)) y ya coloca la linea con el import correspondiente en el lugar apropiado del fichero (la clase debe estar accesible en el CLASSPATH). Y una característica especialmente util, es la de autocompletar nombres de funciones, de nuevo con otra combinación de teclas (ctrl + (c v) .). ! Estan son las carácterísticas mas usadas para el desarrollo del proyecto, pero hay muchas más que es posible utilizar como la <<speedbar>> para navegar por el código, o los asistentes para generar código (get-set de atributos, o el esqueleto de una clase). ! Con un cierto aprendizaje es posible añadir mas plantillas para automatizar ciertas tareas, como incluir la licencia GPL en cada fichero de código fuente. \subsubsection{Herramienta de compilación Ant} ! A los programadores habituados a C o C++, o usuarios de software libre que hayan compilado algun programa, les sonará la herramienta <<make>>. Esta herramienta procesa un fichero con las instrucciones necesarias para compilar el programa, instalarlo, y otras operaciones habituales, facilitando el proceso de compilacion (no es necesario escribir a mano un comando de compilación muy engorroso o activa todo lo necesario para no recompilar ficheros que no han cambiado\dots). ! Ant cumple la misma función que <<make>> pero desarrollado en java y orientado a proyectos en java. <<make>> resulta muy dependiente de la plataforma, pues al fin y al cabo se parece mucho a un archivo de comandos para ejecutar por el shell del sistema operativo, y la sintaxis de sus ficheros además de complicada es muy quisquillosa con espaciados, lineas en blanco\dots Ant es multiplataforma, y utiliza un fichero XML con todas las ventajas de este en cuanto a facilidad de manejo y comprensión. ! El fichero XML utilizado por Ant se conoce como <<buildfile>> (al igual que en <<make>> se habla de <<makefile>>) y por defecto se utiliza el build.xml que debe estar en la raiz del proyecto. En él se definen objetivos (targets), que pueden depender de otros objetivos (el objetivo-desplegar-aplicación depende del objetivo-compilar) e incluyen tareas a ejecutar. Ant tiene definidas casi todas las tareas habituales de un proyecto: compilar, establecer los <<paths>> con las librerias, generar la JavaDoc, construir ficheros .jar o .war, copiar, mover o borrar ficheros, etc\dots Pero además se pueden añadir tareas a medida implementando algunos interfaces en Java. Por ejemplo no incluye tarea para compilar documentos en \LaTeX como esta documentación y fue necesario utilizar una tarea externa. --- 24,55 ---- \item Sistema de control de bugs (proporcionado por sourceforge.net) \item Sistema de composición de textos \LaTeX + % XSLT + % SVG + % Batik \end{itemize} \subsubsection {Sistema Operativo Debian GNU/Linux} ! El proyecto comenzó a desarrollarse en la versión <<woody>> de Debian GNU/Linux\cite{debian-web}, hasta este momento la versión estable, pero muchas de las herramientas utilizadas no estaban <<empaquetadas>> (precompiladas) para este sistema. El problema no es solo tener que buscar, bajar, y compilar los programas, sino la molestia de mantener al dia las versiones. La actualización a <<sid>> corrigió este problema. Más software, más moderno y actualizado mucho mas a menudo esta a disposición del usuario con esta distribución, al coste de ser considerada <<inestable>>. Es interesante mencionar que durante el desarrollo del proyecto esta presunta <<inestabilidad>> brilló por su ausencia. \subsubsection {Entorno de desarrollo Java Blackdown 1.4} ! El proyecto Blackdown\cite{blackdown-web} se encarga de portar a linux el JDK Java de Sun. Empezó siendo el unico entorno disponible en linux, pero hoy en dia hay disponible incluso el famoso JBuilder. %FIXME poner mas \subsubsection {Editor XEmacs con JDE} ! El editor GNU Emacs es uno de los emblemas del software libre. Se trata de un editor de texto escrito en Lisp, desarrollado originalmente por Richard Stallman (uno de los padres del software libre y de la Free Software Foundation\cite{gnu-fsf}). Debido a diferencias entre los desarrolladores, se produjo una división del proyecto, diferenciandose así la versión GNU Emacs\cite{gnu-emacs-web} de XEmacs\cite{xemacs-web}. Es esta última la utilizada para el desarrollo de \texttt{Prolix} ! Como editor de texto simple incluye combinaciones de teclas para todos los eventos habituales (ir al principio, final del fichero, o linea o parrafo, borrar una linea, insertar una linea en blanco, avanzar o retroceder u palabra o linea,\dots), pero también dispone de decenas de opciones, algunas muy utiles y otras mas bien curiosas. En el aspecto util de editor, permite comparar ficheros, aplicar parches, y reconoce numerosos formatos a los que puede colorear la sintaxis (Tex, java, c, c++, haskell, \dots). En el aspecto mas lúdico-curioso, dispone de agenda, lector de correo, lector de news, juegos como el buscaminas o el tetris, \dots !incluso de un psicoanalista!. ! JDE\cite{jdee-web} (Java Development Environment) es un paquete de extras para XEmacs (y GNU Emacs) que integra el editor con el JDK de java. El resultado es el de un Entorno de Desarrollo Integrado (IDE) en nuestro editor habitual. Con unos pequeños retoques a la configuración, podemos compilar nuestro proyecto con una combinación de teclas (\textsf{Ctrl + (c v b)}), obteniendo los errores en una de las ventanas del XEmacs, en la que, seleccionando el error nos lleva a la linea de codigo que causa el problema. Otra de las utilidades, es la de automatizar los imports en java. Cuando se utiliza una clase, basta con ponerse encima del nombre de esa clase, usar la combinación \textsf{ctrl + (c v z)} y ya coloca la linea con el import correspondiente en el lugar apropiado del fichero (la clase debe estar accesible en el CLASSPATH). Y una característica especialmente util, es la de autocompletar nombres de funciones, de nuevo con otra combinación de teclas (\textsf{ctrl + (c v) .}). ! Estan son las características mas usadas para el desarrollo del proyecto, pero hay muchas más que es posible utilizar como la <<speedbar>> para navegar por el código, o los asistentes para generar código (get-set de atributos, o el esqueleto de una clase). ! ! Con un cierto aprendizaje es posible añadir mas plantillas para automatizar ciertas tareas, como incluir la licencia GPL\cite{licencia-gpl} en cada fichero de código fuente. \subsubsection{Herramienta de compilación Ant} ! A los programadores habituados a C o C++, o usuarios de software libre que hayan compilado algun programa, les sonará la herramienta \texttt{make}. Esta herramienta procesa un fichero con las instrucciones necesarias para compilar el programa, instalarlo, y otras operaciones habituales, facilitando el proceso de compilacion (no es necesario escribir a mano un comando de compilación muy engorroso o activa todo lo necesario para no recompilar ficheros que no han cambiado\dots). ! Ant\cite{ant-web} cumple la misma función que \texttt{make} pero desarrollado en java y orientado a proyectos en este lenguaje. \texttt{make} resulta muy dependiente de la plataforma, pues al fin y al cabo se parece mucho a un archivo de comandos para ejecutar por el shell del sistema operativo, y la sintaxis de sus ficheros además de complicada es muy quisquillosa con espaciados, lineas en blanco\dots Ant es multiplataforma, y utiliza un fichero XML con todas las ventajas de este en cuanto a facilidad de manejo y comprensión. ! El fichero XML utilizado por Ant se conoce como \texttt{buildfile} (al igual que en \texttt{make} se habla de \texttt{makefile}) y por defecto se utiliza el \texttt{build.xml} que debe estar en la raiz del proyecto. En él se definen objetivos (targets), que pueden depender de otros objetivos (el objetivo-desplegar-aplicación depende del objetivo-compilar) e incluyen tareas a ejecutar. Ant tiene definidas casi todas las tareas habituales de un proyecto: compilar, establecer los <<paths>> con las librerias, generar la JavaDoc, construir ficheros .jar o .war, copiar, mover o borrar ficheros, etc\dots Pero además se pueden añadir tareas a medida implementando algunos interfaces en Java. Por ejemplo no incluye tarea para compilar documentos en \LaTeX como esta documentación y fue necesario utilizar una tarea externa. *************** *** 76,84 **** \subsubsection{Generador de código XDoclet} ! En el desarrollo de aplicaciones J2EE es necesario escribir varios ficheros por cada clase <<util>> que desarrollamos (codigo de negocio, interfaz local, interfaz remoto, objeto Value, \dots), que deben ser coherentes entre si, y con muchas dependencias sencillas pero propensas a error (definir un atributo, escribir sus métodos get y set, con el nombre del atributo pero la primera letra en mayúscula, los constructores con las iniciales ejb, \dots). En realidad se trata de normas facilmente automatizables, y esa es la función de xdoclet: escribiendo un único fichero con la información necesaria, él genera todas las clases auxiliares. Esto supone 2 ventajas principalmente: se elimina el factor error humano en la generación de código repetido, y el desarrollador puede centrarse en escribir una única clase con el código util. Y el resultado de estas 2 es que los cambios en la clase util se propagan a todos los ficheros generados: si se cambia el nombre de un método podemos estar seguros de que se cambia en todos los lugares donde aparece. ! XDoclet obtiene la información necesaria del mismo código de la clase, y luego puede darsele información adicional en etiquetas, especificando que necesitamos que genere y algunos datos que no puede deducir. Esta desarrollado como tareas para Ant. En Prolix se utilizan 2: EJBDoclet para generar el código relacionado con EJB's (Enterprise Java Beans) y WEBDoclet, para generar los ficheros de despliege de la aplicación web en el contenedor de trabajo, que para Prolix fue jBoss). ! Ejemplo de etiquetas incluidas al principio del fichero java de un EntityBean: Solo con la primera el Xdoclet sabria generar la información para el contenedor. Con la \texttt{@ejb.value-object} definimos objetos Value, y con la \texttt{@ejb.finder} metodos que nos permiten obtener todos los EntityBean que cumplen unas determinadas condiciones. \begin{verbatim} --- 81,89 ---- \subsubsection{Generador de código XDoclet} ! En el desarrollo de aplicaciones J2EE es necesario escribir varios ficheros por cada clase <<util>> que desarrollamos (codigo de negocio, interfaz local, interfaz remoto, objeto Value, \dots), que deben ser coherentes entre si, y con muchas dependencias sencillas pero propensas a error (definir un atributo, escribir sus métodos get y set, con el nombre del atributo pero la primera letra en mayúscula, los constructores con las iniciales ejb, \dots). En realidad se trata de normas facilmente automatizables, y esa es la función de XDoclet\cite{xdoclet-web}: escribiendo un único fichero con la información necesaria, él genera todas las clases auxiliares. Esto supone 2 ventajas principalmente: se elimina el factor error humano en la escritura de código repetido, y el desarrollador puede centrarse en escribir una única clase con el código util. Y el resultado de estas 2 es que los cambios en la clase util se propagan a todos los ficheros generados: si se cambia el nombre de un método podemos estar seguros de que se cambia en todos los lugares donde aparece y en todos los descriptores de despliegue y ficheros auxiliares utilizados en la aplicación. ! XDoclet obtiene la información necesaria del mismo código de la clase, y luego puede darsele información adicional en etiquetas, especificando qué necesitamos que genere y algunos datos que no puede deducir. Esta desarrollado como tareas para Ant. En \texttt{Prolix} se utilizan 2: EJBDoclet para generar el código relacionado con EJB's (Enterprise Java Beans) y WEBDoclet, para generar los ficheros de despliege de la aplicación web en el contenedor de trabajo, que para \texttt{Prolix} fue jBoss). ! Ejemplo de etiquetas incluidas al principio del fichero java de un EntityBean: Solo con la primera el XDoclet sabria generar la información para el contenedor. Con la \texttt{@ejb.value-object} definimos objetos Value, y con la \texttt{@ejb.finder} metodos que nos permiten obtener todos los EntityBean que cumplen unas determinadas condiciones. \begin{verbatim} *************** *** 120,131 **** * @ejb.value-object match="short" */ ! public abstract java.lang.String getTitle(); } \end{verbatim} ! \subsubsection{jBOSS} ! El entorno de desarrollo J2EE define unos interfaces y unos requisitos que espera encontrar en un <<contenedor>> de aplicaciones. Hay diferentes implementaciones de estos requerimientos, y para Prolix se utilizó el contenedor jBOSS. ! Es un proyecto distribuido como software libre, esta albergado en Sourceforge y es uno de los proyectos estrella en cuanto al índice de actividad. \subsubsection{Servidor de Base de Datos mySQL} --- 125,138 ---- * @ejb.value-object match="short" */ ! public abstractstract java.lang.String getTitle(); } \end{verbatim} ! \subsubsection{jBoss} ! La plataforma J2EE\cite{j2ee-web} define un amplio conjunto de estándares con todo lo necesario para el desarrollo y despliege de aplicaciones web (conectividad a bases de datos, transacciones, presentación, <<middleware>>,\dots). Fue definido por Sun e IBM en 1999. Para el desarrollo y puesta en marcha de aplicaciones web que cumplan estas recomendaciones es necesaria una implementación de esos estándares, en lo que se conoce como <<contenedor>> de aplicaciones. Hay varios en el mercado, la mayoria de ellos de pago. Para el desarrollo de \texttt{Prolix} se utilizó la implementación jBoss\cite{jboss-web}. ! Es un proyecto distribuido como software libre, esta albergado en Sourceforge y es uno de los proyectos estrella en cuanto al índice de actividad (cuenta con 10 desarrolladores fijos y mas de 50 colaboradores). ! ! %FIXME Hablar de alternativas y precios. \subsubsection{Servidor de Base de Datos mySQL} *************** *** 133,168 **** \subsubsection{Gestión de la base de datos phpMyAdmin} ! phpMyAdmin es un interfaz web escrito en PHP para trabajar con las bases de datos de MySQL. Es un proyecto software libre, que al igual que jBOSS esta albergado en Sourceforge y tiene un indice de actividad muy alto. Así, a traves de páginas web podemos manejar tanto el servidor completo de MySQL como una sola base de datos (ajustando convenientemente los permisos). Además de todas las tareas habituales (crear y borrar bases de datos, crear, copiar, modificar tablas, añadir y borrar datos, etc\dots) tambien exporta datos en XML y Latex. ! La versión utilizada es la 2.5.2 y permite escoger más de 40 idiomas, incluido catalán o gallego. Necesita para funcionar PHP3.0.8 o superior, y MySQL al menos la versión 3.21.x). \subsubsection{Entorno de desarrollo de aplicaciones web Struts} ! %FIXME Use the Web luke \subsubsection{Sistema de control de versiones CVS} ! Cuando varios desarrolladores trabajan en un proyecto, la tarea de coordinar el trabajo y mantener el codigo fuente al dia se complica. Además, si se modifica la misma parte de código y surgen problemas, resulta interesante saber quién y cuando la cambió, que habia antes, \dots Para resolver todos estos problema disponemos del CVS. En pocas palabras es una especie de <<copia virtual>> del proyecto, que se actualiza por transacciones cuando el programador decide: hace una copia local, trabaja sobre ella, realizando los cambios que considere oportunos y despues manda esos cambios a la copia virtual. Si durante el tiempo intermedio de trabajo otra persona subió cambios a esa copia virtual, el CVS se da cuenta e informa al segundo programador de ello (!si los cambios colisionan!, es decir, se modificó la misma parte de código). Así, varias personas pueden trabajar concurrentemente en el proyecto. ! En el caso de Prolix, donde solo hay un desarrollador, el CVS sigue resultando util para mantener una única versión del proyecto, a pesar de que el desarrollador trabaje desde distintos lugares y ordenadores. ! Sobre las modificaciones del código y su control, el CVS guarda las diferencias entre las sucesivas versiones, pudiendo volver de forma sencilla a cualquiera de ellas, o simplemente observar los cambios para entender la evolución del proyecto, y con el uso de <<tags>> (etiquetas) podemos <<marcar>> un momento determinado del proyecto (en Prolix esto se hizo con los releases), permitiendo así poder volver a ese estado del proyecto si es necesario. Es decir: podria obtenerse el codigo tal cual estaba cuando se hizo el lanzamiento de la version 0.1, por ejemplo. % FIXME: ejemplo de un diff ! La copia virtual del trabajo debe guardarse en alguna máquina que haga de servidor del CVS (puede ser local o remota), y se debe utilizar un cliente de CVS para obtener la copia de trabajo. Hay programas cliente para casi todas las plataformas y sistemas operativos. En el caso de Prolix se utilizó el servidor de CVS de sourceforge, y el cliente de consola incluido en Debian GNU/Linux. \subsubsection {Sourceforge.net} ! El proyecto Prolix esta albergado en el sitio web sourceforge.net. Sourceforge alberga proyectos de software libre y pone a disposición del programador/es una serie de herramientas muy utiles en el desarrollo de proyectos (indispensables si hay implicados varios desarrolladores). Las utilizadas por este proyecto son: \begin{itemize} ! \item Sistema de control de versiones CVS. Prolix alberga 4 modulos: \begin{itemize} \item prolix. Codigo fuente del proyecto, y ficheros necesarios para su compilación, excepto las librerias auxiliares. Estas están disponibles en la página web del proyecto. \item prolix-devel-doc. Documentación sobre el diseño de la aplicación. Diagramas UML, planificación temporal, estructura de directorios utilizada y en general información interesante solo para desarrolladores. \item prolix-doc. Documentación del proyecto. Aqui esta albergado el código fuente de este tomo. ! \item prolix-web. Para el desarrollo de la página web del proyecto. Nos referimos a la página web <<informátiva>> de prolix, y no a la web que el usuario se va a encontrar al utilizar Prolix. \end{itemize} ! \item Listas de correo para uso del proyecto. Prolix utiliza 4: \begin{itemize} \item pfc-prolog-users: para mensajes de usuarios en general. --- 140,184 ---- \subsubsection{Gestión de la base de datos phpMyAdmin} ! phpMyAdmin\cite{phpmyadmin-web} es un interfaz web escrito en PHP para trabajar con las bases de datos de MySQL. Es un proyecto software libre, que al igual que jBoss esta albergado en Sourceforge y tiene un indice de actividad muy alto. Así, a traves de páginas web podemos manejar tanto el servidor completo de MySQL como una sola base de datos (ajustando convenientemente los permisos). Además de todas las tareas habituales (crear y borrar bases de datos, crear, copiar, modificar tablas, añadir y borrar datos, etc\dots) tambien exporta datos en XML y Latex. ! La versión utilizada es la 2.5.2 y permite escoger más de 40 idiomas, incluido catalán o gallego. Necesita para funcionar PHP3.0.8 o superior, y MySQL al menos la versión 3.21.x. \subsubsection{Entorno de desarrollo de aplicaciones web Struts} ! Struts\cite{struts-web} es uno de los proyectos del grupo Jakarta, que desarrolla el servidor Web Apache. Implementa una biblioteca de clases en java que facilitan la construcción de aplicaciones web, de acuerdo con el paradigma de diseño Modelo-Vista-Controlador. ! ! Esta construido con elementos estandar (JavaServlets, JavaBeans, XML,\dots) y proporciona un conjunto de clases cuya utilidad extendemos para nuestra aplicación obteniendo una separación muy clara entre el control de la navegación, el codigo que actua sobre los datos, y la representación de estos, quedando así un esquema de aplicación donde la parte Web solo representa datos, lo que da lugar a un diseño mas robusto a la par que flexible a cambios. ! ! De esta forma el diseño de la aplicación web se resume en unas páginas en JSP que representan datos o los recogen en formularios que con Struts se tratan en una clase donde ser verifica su validez, para, si son correctos, pasarlos a una clase Accion. Esta realiza las tareas necesarias, habla con la aplicacion, actualiza los datos y en función de lo que haya ocurrido decide a que página mandar al usuario. ! ! Podemos encontrar varios entornos de desarrollo (más de 20) que ofrecen facilidades como estas (con distintas aproximaciones), muchos de ellos software libre, sin embargo Struts en este momento es el más utilizado, hay publicados al menos 6 libros sobre este entorno, y parece que IBM va a adaptar su WebSphere para poder utilizarlo. Teniendo también en cuenta que se trata de un proyecto de Jakarta, el grupo que desarrolla Apache, Tomcat y otras aplicaciones vitales en el entorno Web, esta implementación se coloca como una de las más sólidas y con más perspectivas de futuro. ! ! En su contra se pueden leer comentarios que hablan de su excesiva abstracción, lo cual complica en cierta manera su manejo. Hay incluso un proyecto en Sourceforge (Wafer\cite{wafer-web}) dedicado a la comparación de estos entornos de desarrollo. ! \subsubsection{Sistema de control de versiones CVS} ! Cuando varios desarrolladores trabajan en un proyecto, la tarea de coordinar el trabajo y mantener el codigo fuente al dia se complica. Además, si se modifica la misma parte de código y surgen problemas, resulta interesante saber quién y cuando la cambió, que habia antes, \dots Para resolver todos estos problema disponemos del CVS\cite{cvs-web}. En pocas palabras es una especie de <<copia virtual>> del proyecto, que se actualiza por transacciones cuando el programador decide: hace una copia local, trabaja sobre ella, realizando los cambios que considere oportunos y despues manda esos cambios a la copia virtual. Si durante el tiempo intermedio de trabajo otra persona subió cambios a esa copia virtual, el CVS se da cuenta e informa al segundo programador de ello (!si los cambios colisionan!, es decir, se modificó la misma parte de código). Así, varias personas pueden trabajar concurrentemente en el proyecto. ! En el caso de \texttt{Prolix}, donde solo hay un desarrollador, el CVS sigue resultando util para mantener una única versión del proyecto, a pesar de que el desarrollador trabaje desde distintos lugares y ordenadores. ! Sobre las modificaciones del código y su control, el CVS guarda las diferencias entre las sucesivas versiones, pudiendo volver de forma sencilla a cualquiera de ellas, o simplemente observar los cambios para entender la evolución del proyecto, y con el uso de <<tags>> (etiquetas) podemos <<marcar>> un momento determinado del proyecto (en \texttt{Prolix} esto se hizo con los releases), permitiendo así poder volver a ese estado del proyecto si es necesario. Es decir: podria obtenerse el codigo tal cual estaba cuando se hizo el lanzamiento de la version 0.1, por ejemplo. % FIXME: ejemplo de un diff ! La copia virtual del trabajo debe guardarse en alguna máquina que haga de servidor del CVS (puede ser local o remota), y se debe utilizar un cliente de CVS para obtener la copia de trabajo. Hay programas cliente para casi todas las plataformas y sistemas operativos. En el caso de \texttt{Prolix} se utilizó el servidor de CVS de sourceforge, y el cliente de consola incluido en Debian GNU/Linux. \subsubsection {Sourceforge.net} ! El proyecto \texttt{Prolix} esta albergado en el sitio web sourceforge.net\cite{sourceforge-web}. Sourceforge alberga proyectos de software libre y pone a disposición del programador/es una serie de herramientas muy utiles en el desarrollo de proyectos (indispensables si hay implicados varios desarrolladores). Las utilizadas por este proyecto son: \begin{itemize} ! \item Sistema de control de versiones CVS. \texttt{Prolix} alberga 4 modulos: \begin{itemize} \item prolix. Codigo fuente del proyecto, y ficheros necesarios para su compilación, excepto las librerias auxiliares. Estas están disponibles en la página web del proyecto. \item prolix-devel-doc. Documentación sobre el diseño de la aplicación. Diagramas UML, planificación temporal, estructura de directorios utilizada y en general información interesante solo para desarrolladores. \item prolix-doc. Documentación del proyecto. Aqui esta albergado el código fuente de este tomo. ! \item prolix-web. Para el desarrollo de la página web del proyecto. Nos referimos a la página web <<informátiva>> de \texttt{Prolix} como proyecto, y no a la web que el usuario se va a encontrar al utilizar \texttt{Prolix}. \end{itemize} ! \item Listas de correo para uso del proyecto. \texttt{Prolix} utiliza 4: \begin{itemize} \item pfc-prolog-users: para mensajes de usuarios en general. *************** *** 176,181 **** \item Compilación: problemas relativos a la compilación o puesta en marcha del proyecto. \item Documentación: errores o sugerencias sobre la documentación, desde los ficheros README de cada directorio hasta este documento. ! \item Interfaz: donde informar a los desarrolladores de errores o posibles mejoras en el aspecto gráfico de Prolix. ! \item Usabilidad: Este aspecto es importante en Prolix, por su caracter educativo. Aqui se recogen sugerencias respecto a este tema. \item Pagina Web: Mensajes sobre ficheros que deberian estar o no en la web informativa del proyecto y/o mejoras a la misma. \item Proyecto: Errores que no tiene cabida en las categorias anteriores o se refieren al proyecto en general. --- 192,197 ---- \item Compilación: problemas relativos a la compilación o puesta en marcha del proyecto. \item Documentación: errores o sugerencias sobre la documentación, desde los ficheros README de cada directorio hasta este documento. ! \item Interfaz: donde informar a los desarrolladores de errores o posibles mejoras en el aspecto gráfico de \texttt{Prolix}. ! \item Usabilidad: Este aspecto es importante en \texttt{Prolix}, por su caracter educativo. Aqui se recogen sugerencias respecto a este tema. \item Pagina Web: Mensajes sobre ficheros que deberian estar o no en la web informativa del proyecto y/o mejoras a la misma. \item Proyecto: Errores que no tiene cabida en las categorias anteriores o se refieren al proyecto en general. *************** *** 201,207 **** \end{itemize} ! Aunque el nombre del proyecto es Prolix, el nombre Unix asignado por sourceforge al proyecto (el nombre que utiliza en todos los aspectos técnicos) es <<pfc-prolog>>. Así, la pagina web del proyecto en SourceForge es http://www.sourceforge.net/projects/pfc-prolog. ! Además, Sourceforge cede al proyecto un espacio en sus servidores para la página web del mismo, con la única condición de colocar un logo de sourceforge en esas páginas. Prolix dispone de ese espacio en http://pfc-prolog.sourceforge.net, donde estan disponibles algunos ficheros que aunque son propios del proyecto no se incluyen en el CVS, como son los intérpretes o los DTD del XML utilizado en el proyecto. \subsubsection{Sistema de composición de textos \LaTeX} --- 217,223 ---- \end{itemize} ! Aunque el nombre del proyecto es \texttt{Prolix}, el nombre Unix asignado por sourceforge al proyecto (el nombre que utiliza en todos los aspectos técnicos) es <<pfc-prolog>>. Así, la pagina web del proyecto en SourceForge es \texttt{http://www.sourceforge.net/projects/pfc-prolog}. ! Además, Sourceforge cede al proyecto un espacio en sus servidores para la página web del mismo, con la única condición de colocar un logo de sourceforge en esas páginas. \texttt{Prolix} dispone de ese espacio en \texttt{http://pfc-prolog.sourceforge.net}, donde estan disponibles algunos ficheros que aunque son propios del proyecto no se incluyen en el CVS, como son los intérpretes o los DTD del XML utilizado en el proyecto. \subsubsection{Sistema de composición de textos \LaTeX} Index: solo_intro.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/solo_intro.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** solo_intro.tex 18 Aug 2003 18:44:55 -0000 1.2 --- solo_intro.tex 19 Aug 2003 01:16:34 -0000 1.3 *************** *** 5,9 **** \usepackage{enumerate} %\usepackage[T1]{fontenc} ! \usepackage{pst-uml} \begin{document} --- 5,9 ---- \usepackage{enumerate} %\usepackage[T1]{fontenc} ! %\usepackage{pst-uml} \begin{document} *************** *** 13,15 **** --- 13,16 ---- %\input{introduccion/softexistente.tex} \input{herramientas.tex} + \input{bibliografia.tex} \end{document} |
From: <iva...@us...> - 2003-08-19 01:16:36
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es In directory sc8-pr-cvs1:/tmp/cvs-serv26082 Modified Files: README Log Message: Incluida referencias web en la introduccion - mejorada seccion objetivos Index: README =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/README,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** README 8 May 2003 19:26:08 -0000 1.4 --- README 19 Aug 2003 01:16:34 -0000 1.5 *************** *** 16,19 **** --- 16,23 ---- another related programas used to obtain the documentation as dvips & dvipdf + I suggest to copy pst-uml.sty file in + /usr/share/texmf/tex/generic/pstricks/ + (path in debian standard tex instalation) to do the file visible to all + latex compilations. Don't forget to set the right permissions. 2. COMPILE DOCUMENTATION |
From: <iva...@us...> - 2003-08-18 23:05:18
|
Update of /cvsroot/pfc-prolog/prolix In directory sc8-pr-cvs1:/tmp/cvs-serv7632 Modified Files: build.xml Log Message: Update message error when batik home var is not set Index: build.xml =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/build.xml,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** build.xml 18 Aug 2003 18:30:57 -0000 1.51 --- build.xml 18 Aug 2003 23:05:15 -0000 1.52 *************** *** 172,178 **** <target name="check-batik" unless="batik.home"> <fail> ! Property "batik.home" is not set. Please use the file ! ".ant.properties" in this directory ${basedir} to ! set this property. It must point to the directory that contains the main jar. </fail> --- 172,177 ---- <target name="check-batik" unless="batik.home"> <fail> ! Property "batik.home" is not set. Please define it in your ! environment. It must point to the directory that contains the main jar. </fail> |
From: <iva...@us...> - 2003-08-18 18:49:04
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/requisitos In directory sc8-pr-cvs1:/tmp/cvs-serv21764 Added Files: formales.tex solo_requisitos.tex Log Message: nuevos ficheros en el apartado de requisitos --- NEW FILE: formales.tex --- (This appears to be a binary file; contents omitted.) --- NEW FILE: solo_requisitos.tex --- \documentclass [a4paper,10pt] {book} \usepackage[spanish]{babel} \usepackage[latin1]{inputenc} \usepackage{enumerate} %\usepackage[T1]{fontenc} %\usepackage{pst-uml} \begin{document} \chapter{Requisitos} \input{formales.tex} \end{document} |
From: <iva...@us...> - 2003-08-18 18:46:59
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/requisitos In directory sc8-pr-cvs1:/tmp/cvs-serv21376/requisitos Log Message: Directory /cvsroot/pfc-prolog/prolix-doc/pfc-es/requisitos added to the repository |
From: <iva...@us...> - 2003-08-18 18:44:58
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion In directory sc8-pr-cvs1:/tmp/cvs-serv20922 Modified Files: motivacion.tex objetivos.tex softexistente.tex solo_intro.tex Added Files: herramientas.tex Log Message: Nuevo apartado de momento en la introduccion: herramientas --- NEW FILE: herramientas.tex --- % % % Introduccion::herramientas % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Herramientas} \subsection{Herramientas software} Para el desarrollo de este proyecto se han utilizado durante todo el proceso herramientas licenciadas como software libre: \begin{itemize} \item Sistema Operativo Debian GNU/Linux (<<woody>> y <<sid>>) \item Entorno de desarrollo Java Blackdown 1.4 \item Editor XEmacs con JDE. \item Herramienta de compilación Ant \item Generador de código XDoclet 1.2b3 \item Implementación del entorno J2EE jBOSS \item Servidor de Base de Datos mySQL \item Gestión de la base de datos phpMyAdmin % \item Herramientas de depuración como jndi.browser \item Entorno de desarrollo de aplicaciones web Struts \item Sistema de control de versiones CVS (proporcionado por sourceforge.net) \item Sistema de control de bugs (proporcionado por sourceforge.net) \item Sistema de composición de textos \LaTeX \end{itemize} \subsubsection {Sistema Operativo Debian GNU/Linux} El proyecto comenzó a desarrollarse en la versión <<woody>> de Debian GNU/Linux, hasta este momento la versión estable, pero muchas de las herramientas utilizadas no estaban <<empaquetadas>> (precompiladas) para este sistema. El problema no es solo tener que buscar, bajar, y compilar los programas, sino la molestia de mantener al dia las versiones. La actualización a Sid corrigió este problema. Más software, más moderno y actualizado mucho mas a menudo esta a disposición del usuario con esta distribución, al coste de ser considerada <<inestable>>. Es interesante mencionar que durante el desarrollo del proyecto esta presunta <<inestabilidad>> brilló por su ausencia. \subsubsection {Entorno de desarrollo Java Blackdown 1.4} Blackdown se encarga de portar a linux el JDK Java de Sun. Empezó siendo el unico entorno disponible en linux, pero hoy en dia hay disponible incluso el famoso JBuilder. %FIXME poner mas \subsubsection {Editor XEmacs con JDE} El editor XEmacs es uno de los emblemas del software libre. Se trata de un editor de texto escrito en lisp, desarrollado originalmente por Richard Stallman (uno de los padres del software libre y de la Free Software Foundation). Como editor de texto simple incluye combinaciones de teclas para todos los eventos habituales (ir al principio, final del fichero, o linea o parrafo, borrar una linea, insertar una linea en blanco, avanzar o retroceder u palabra o linea,\dots), pero también dispone de decenas de opciones, algunas muy utiles y otras mas bien curiosas. En el aspecto util de editor, permite comparar ficheros, aplicar parches, y reconoce numerosos formatos a los que puede colorear la sintaxis (Tex, java, c, c++, haskell, \dots). En el aspecto mas lúdico-curioso, dispone de agenda, lector de correo, lector de news, juegos como el buscaminas o el tetris, \dots !incluso de un psicoanalista!. JDE (Java Desktop Environment) es un paquete de extras para xemacs que integra el editor con el JDK de java. El resultado es el de un Entorno de Desarrollo Integrado (IDE) en nuestro editor habitual. Con unos pequeños retoques a la configuración, podemos compilar nuestro proyecto con una combinación de teclas (Ctrl + (c v b)), obteniendo los errores en una de las ventanas del xemacs, en la que, seleccionando el error nos lleva a la linea de codigo que causa el problema. Otra de las utilidades, es la de automatizar los imports en java. Cuando se utiliza una clase, basta con ponerse encima del nombre de esa clase, usar la combinación ctrl + (c v z)) y ya coloca la linea con el import correspondiente en el lugar apropiado del fichero (la clase debe estar accesible en el CLASSPATH). Y una característica especialmente util, es la de autocompletar nombres de funciones, de nuevo con otra combinación de teclas (ctrl + (c v) .). Estan son las carácterísticas mas usadas para el desarrollo del proyecto, pero hay muchas más que es posible utilizar como la <<speedbar>> para navegar por el código, o los asistentes para generar código (get-set de atributos, o el esqueleto de una clase). Con un cierto aprendizaje es posible añadir mas plantillas para automatizar ciertas tareas, como incluir la licencia GPL en cada fichero de código fuente. \subsubsection{Herramienta de compilación Ant} A los programadores habituados a C o C++, o usuarios de software libre que hayan compilado algun programa, les sonará la herramienta <<make>>. Esta herramienta procesa un fichero con las instrucciones necesarias para compilar el programa, instalarlo, y otras operaciones habituales, facilitando el proceso de compilacion (no es necesario escribir a mano un comando de compilación muy engorroso o activa todo lo necesario para no recompilar ficheros que no han cambiado\dots). Ant cumple la misma función que <<make>> pero desarrollado en java y orientado a proyectos en java. <<make>> resulta muy dependiente de la plataforma, pues al fin y al cabo se parece mucho a un archivo de comandos para ejecutar por el shell del sistema operativo, y la sintaxis de sus ficheros además de complicada es muy quisquillosa con espaciados, lineas en blanco\dots Ant es multiplataforma, y utiliza un fichero XML con todas las ventajas de este en cuanto a facilidad de manejo y comprensión. El fichero XML utilizado por Ant se conoce como <<buildfile>> (al igual que en <<make>> se habla de <<makefile>>) y por defecto se utiliza el build.xml que debe estar en la raiz del proyecto. En él se definen objetivos (targets), que pueden depender de otros objetivos (el objetivo-desplegar-aplicación depende del objetivo-compilar) e incluyen tareas a ejecutar. Ant tiene definidas casi todas las tareas habituales de un proyecto: compilar, establecer los <<paths>> con las librerias, generar la JavaDoc, construir ficheros .jar o .war, copiar, mover o borrar ficheros, etc\dots Pero además se pueden añadir tareas a medida implementando algunos interfaces en Java. Por ejemplo no incluye tarea para compilar documentos en \LaTeX como esta documentación y fue necesario utilizar una tarea externa. A continuación incluimos un fragmento del \texttt{build.xml} con el que se compila esta documentación, donde se declaran 4 tareas, se observan las dependencias entre si (atributo \texttt{depends} del \texttt{target}), y como usamos la clase de java que implementa una tarea con \texttt{taskdef} (el fichero compilado de la clase \textsf{LaTeX.class} esta en el directorio \textsf{build} del proyecto). \begin{verbatim} <target name="prepare"> <tstamp /> <mkdir dir="build" /> </target> <target name="build" depends="prepare" > <javac srcdir="src" destdir="build"/> </target> <target name="declare" depends="build"> <taskdef name="latex" classname="LaTeX" classpath="build"/> </target> <target name="main" depends="declare"> <latex latexfile="${latexfile}.tex" verbose="false" pdf="${pdf}"/> </target> \end{verbatim} \subsubsection{Generador de código XDoclet} En el desarrollo de aplicaciones J2EE es necesario escribir varios ficheros por cada clase <<util>> que desarrollamos (codigo de negocio, interfaz local, interfaz remoto, objeto Value, \dots), que deben ser coherentes entre si, y con muchas dependencias sencillas pero propensas a error (definir un atributo, escribir sus métodos get y set, con el nombre del atributo pero la primera letra en mayúscula, los constructores con las iniciales ejb, \dots). En realidad se trata de normas facilmente automatizables, y esa es la función de xdoclet: escribiendo un único fichero con la información necesaria, él genera todas las clases auxiliares. Esto supone 2 ventajas principalmente: se elimina el factor error humano en la generación de código repetido, y el desarrollador puede centrarse en escribir una única clase con el código util. Y el resultado de estas 2 es que los cambios en la clase util se propagan a todos los ficheros generados: si se cambia el nombre de un método podemos estar seguros de que se cambia en todos los lugares donde aparece. XDoclet obtiene la información necesaria del mismo código de la clase, y luego puede darsele información adicional en etiquetas, especificando que necesitamos que genere y algunos datos que no puede deducir. Esta desarrollado como tareas para Ant. En Prolix se utilizan 2: EJBDoclet para generar el código relacionado con EJB's (Enterprise Java Beans) y WEBDoclet, para generar los ficheros de despliege de la aplicación web en el contenedor de trabajo, que para Prolix fue jBoss). Ejemplo de etiquetas incluidas al principio del fichero java de un EntityBean: Solo con la primera el Xdoclet sabria generar la información para el contenedor. Con la \texttt{@ejb.value-object} definimos objetos Value, y con la \texttt{@ejb.finder} metodos que nos permiten obtener todos los EntityBean que cumplen unas determinadas condiciones. \begin{verbatim} /* * @ejb.bean name="Program" * type="CMP" * local-jndi-name="org/asturlinux/frade/prolix/ejb/entityjb/ProgramLocal" * view-type="local" * * @ejb.value-object name="Program" * match="*" * * @ejb.value-object name="ProgramShort" * match="short" * ... * * @ejb.finder signature="java.util.ProgramLocal findByPK(java.lang.String p)" * unchecked="true" * query="SELECT OBJECT(p) FROM Program p WHERE p.title = ?1" * */ \end{verbatim} Ejemplo de las etiquetas añadidas para que el Entity tengo un atributo \texttt{title}, definir su tipo SQL y JDBC, que sea accesible desde el exterior (metodo de interfaz), y que sea la clave principal para estos EntityBeans. \begin{verbatim} public abstract class ProgramBean implements EntityBean { ... /** * @ejb.pk-field * @ejb.persistent-field * @ejb.interface-method * * @jboss.jdbc-type VARCHAR * @jboss.sql-type VARCHAR(50) * * @ejb.value-object match="short" */ public abstract java.lang.String getTitle(); } \end{verbatim} \subsubsection{jBOSS} El entorno de desarrollo J2EE define unos interfaces y unos requisitos que espera encontrar en un <<contenedor>> de aplicaciones. Hay diferentes implementaciones de estos requerimientos, y para Prolix se utilizó el contenedor jBOSS. Es un proyecto distribuido como software libre, esta albergado en Sourceforge y es uno de los proyectos estrella en cuanto al índice de actividad. \subsubsection{Servidor de Base de Datos mySQL} Este es uno de los servidores de bases de datos mas populares. Se distribuye bajo dos tipos de licencia, libre bajo la GNU GPL (General Public License) o con licencia comercial estandard, que se adquiere a la compañia que lo desarrolla (MySQL AB). Funciona en más de 20 sistemas operativos. \subsubsection{Gestión de la base de datos phpMyAdmin} phpMyAdmin es un interfaz web escrito en PHP para trabajar con las bases de datos de MySQL. Es un proyecto software libre, que al igual que jBOSS esta albergado en Sourceforge y tiene un indice de actividad muy alto. Así, a traves de páginas web podemos manejar tanto el servidor completo de MySQL como una sola base de datos (ajustando convenientemente los permisos). Además de todas las tareas habituales (crear y borrar bases de datos, crear, copiar, modificar tablas, añadir y borrar datos, etc\dots) tambien exporta datos en XML y Latex. La versión utilizada es la 2.5.2 y permite escoger más de 40 idiomas, incluido catalán o gallego. Necesita para funcionar PHP3.0.8 o superior, y MySQL al menos la versión 3.21.x). \subsubsection{Entorno de desarrollo de aplicaciones web Struts} %FIXME Use the Web luke \subsubsection{Sistema de control de versiones CVS} Cuando varios desarrolladores trabajan en un proyecto, la tarea de coordinar el trabajo y mantener el codigo fuente al dia se complica. Además, si se modifica la misma parte de código y surgen problemas, resulta interesante saber quién y cuando la cambió, que habia antes, \dots Para resolver todos estos problema disponemos del CVS. En pocas palabras es una especie de <<copia virtual>> del proyecto, que se actualiza por transacciones cuando el programador decide: hace una copia local, trabaja sobre ella, realizando los cambios que considere oportunos y despues manda esos cambios a la copia virtual. Si durante el tiempo intermedio de trabajo otra persona subió cambios a esa copia virtual, el CVS se da cuenta e informa al segundo programador de ello (!si los cambios colisionan!, es decir, se modificó la misma parte de código). Así, varias personas pueden trabajar concurrentemente en el proyecto. En el caso de Prolix, donde solo hay un desarrollador, el CVS sigue resultando util para mantener una única versión del proyecto, a pesar de que el desarrollador trabaje desde distintos lugares y ordenadores. Sobre las modificaciones del código y su control, el CVS guarda las diferencias entre las sucesivas versiones, pudiendo volver de forma sencilla a cualquiera de ellas, o simplemente observar los cambios para entender la evolución del proyecto, y con el uso de <<tags>> (etiquetas) podemos <<marcar>> un momento determinado del proyecto (en Prolix esto se hizo con los releases), permitiendo así poder volver a ese estado del proyecto si es necesario. Es decir: podria obtenerse el codigo tal cual estaba cuando se hizo el lanzamiento de la version 0.1, por ejemplo. % FIXME: ejemplo de un diff La copia virtual del trabajo debe guardarse en alguna máquina que haga de servidor del CVS (puede ser local o remota), y se debe utilizar un cliente de CVS para obtener la copia de trabajo. Hay programas cliente para casi todas las plataformas y sistemas operativos. En el caso de Prolix se utilizó el servidor de CVS de sourceforge, y el cliente de consola incluido en Debian GNU/Linux. \subsubsection {Sourceforge.net} El proyecto Prolix esta albergado en el sitio web sourceforge.net. Sourceforge alberga proyectos de software libre y pone a disposición del programador/es una serie de herramientas muy utiles en el desarrollo de proyectos (indispensables si hay implicados varios desarrolladores). Las utilizadas por este proyecto son: \begin{itemize} \item Sistema de control de versiones CVS. Prolix alberga 4 modulos: \begin{itemize} \item prolix. Codigo fuente del proyecto, y ficheros necesarios para su compilación, excepto las librerias auxiliares. Estas están disponibles en la página web del proyecto. \item prolix-devel-doc. Documentación sobre el diseño de la aplicación. Diagramas UML, planificación temporal, estructura de directorios utilizada y en general información interesante solo para desarrolladores. \item prolix-doc. Documentación del proyecto. Aqui esta albergado el código fuente de este tomo. \item prolix-web. Para el desarrollo de la página web del proyecto. Nos referimos a la página web <<informátiva>> de prolix, y no a la web que el usuario se va a encontrar al utilizar Prolix. \end{itemize} \item Listas de correo para uso del proyecto. Prolix utiliza 4: \begin{itemize} \item pfc-prolog-users: para mensajes de usuarios en general. \item pfc-prolog-devel: mensajes entre desarrolladores. \item prolix-devel-es: la lista anterior esta en inglés, esta es la versión española. \item pfc-prolog-cvs: Cada vez que se actualiza el CVS, este se encarga de manera automática de mandar un mensaje a esta lista de correo con los ficheros añadidos, borrados, o las modificaciones introducidas, además de la descripción que el desarrollador haya escrito de la actualización. Así es posible seguir el desarrollo del proyecto sin consultar el CVS. \end{itemize} \item Sistema de control de errores (Bugs): Cualquier usuario puede anunciar un error con este sistema rellenando un formulario muy sencillo. Se crearon 5 categorias de errores: \begin{itemize} \item Compilación: problemas relativos a la compilación o puesta en marcha del proyecto. \item Documentación: errores o sugerencias sobre la documentación, desde los ficheros README de cada directorio hasta este documento. \item Interfaz: donde informar a los desarrolladores de errores o posibles mejoras en el aspecto gráfico de Prolix. \item Usabilidad: Este aspecto es importante en Prolix, por su caracter educativo. Aqui se recogen sugerencias respecto a este tema. \item Pagina Web: Mensajes sobre ficheros que deberian estar o no en la web informativa del proyecto y/o mejoras a la misma. \item Proyecto: Errores que no tiene cabida en las categorias anteriores o se refieren al proyecto en general. \end{itemize} %FIXME Captura de pantalla de un bug \item Sistema de lanzamiento de ficheros (File Release System - FRS): La filosofia de software libre promueve la idea de <<release soon, release often>> (lanzar una versión del programa con cada mejora, y hacerlo a menudo). Para facilitar la labor de subir los ficheros de codigo a la web, actualizar las páginas con la información adecuada, replicar los ficheros, Sourceforge dispone de un sistema FRS con el cual, siguiendo una serie de pasos en varias páginas web, se automatiza todo el proceso, poniendo a disposicion del publico los ficheros a distribuir del programa de una forma rapida, facil y relativamente sencilla. \item Sistema de noticias (news). Se pueden hacer anuncios sobre el proyecto a traves de un sistema de noticias, que coloca el titular en la página del proyecto.De las noticias publicadas cada dia, Sourceforge escoge las que le parecen mas interesantes y las coloca en su página web principal (este es un medio muy importante de promoción para proyectos). %Fin prestaciones sourceforge usadar en prolix \end{itemize} Sourceforge también ofrece otras características que no fueron utilizadas para este proyecto pero resulta interesante mencionar, por su futura utilidad o como referencia para otros desarrollos: \begin{itemize} \item Sistema de solicitud de prestaciones (Feature request): Los usuarios pueden proponer características que no estan disponibles en la versión actual. Es una fuente de realimentación muy importante para mantener vivo un proyecto. \item Sistema de gestión de documentación: Para mantener documentos y tutoriales online. \item Exportación de información en RSS. Es posible obtener en este formato las noticias, las estadísticas del proyecto o los lanzamientos de ficheros. Esto permite seguir la evolución de un proyecto desde nuestro programa de correo, automatizar la inclusión de su información en otra pagina web, \dots \item Granja de compilación (Compilation farm). En el desarrollo de proyectos dependientes de la plataforma, puede ser interesante compilarlo en máquinas a las que no se tiene acceso. Sourceforge pone a disposición de los desarrolladores máquinas en diferentes arquitecturas, donde, previa solicitud, se les da un acceso shell para compilar el proyecto. %Fin prestaciones de sourceforge NO usadas en prolix \end{itemize} Aunque el nombre del proyecto es Prolix, el nombre Unix asignado por sourceforge al proyecto (el nombre que utiliza en todos los aspectos técnicos) es <<pfc-prolog>>. Así, la pagina web del proyecto en SourceForge es http://www.sourceforge.net/projects/pfc-prolog. Además, Sourceforge cede al proyecto un espacio en sus servidores para la página web del mismo, con la única condición de colocar un logo de sourceforge en esas páginas. Prolix dispone de ese espacio en http://pfc-prolog.sourceforge.net, donde estan disponibles algunos ficheros que aunque son propios del proyecto no se incluyen en el CVS, como son los intérpretes o los DTD del XML utilizado en el proyecto. \subsubsection{Sistema de composición de textos \LaTeX} \LaTeX es un sistema de composición de textos totalmente diferente al habitual. En lugar de la fisolofia WYSIWYG (What you see is what you get: lo que ves es lo que obtienes), esta basado en una forma de trabajo anterior pero que demuestra ser más precisa: el texto plano incluyendo las etiquetas de formato. Esto produce una curva de aprendizaje mas pronunciada, pues es necesario conocer algunas etiquetas, y lo aleja del uso generalizado pues precisa respetar una estructura y compilar el documento, pero el resultado (esta documentación esta escrita con este sistema) merece la pena, pues su aspecto es mucho más cuidado, y la comodidad a la hora de escribir documentos una vez dominados unos pocos conceptos fundamentales resulta mucho mayor que con el método tradicional. Aspectos engorrosos de los editores al uso, como numerar las secciones, paginar el documento (empezar los capítulos en una hoja), resultan triviales en \LaTeX pudiendo además ajustarlos hasta el más mínimo detalle, si el autor lo considera oportuno. \LaTeX se basa en \TeX, escrito por Donald E. Knuth (más conocido por los informáticos por sus estudios de Estructuras de Datos). Cuando quiso publicar su obra <<El arte de programar computadores>> recibió una prueba de imprenta de su libro y le pareció tan mala, que decidió solucionar el problema por si mismo: desarrollar un sistema de tipografia que le permitiese garantizar el aspecto de los documentos, independientemente del medio en que se mostrasen. En solo 4 meses escribió un borrador de \TeX. \TeX es un conjunto de etiquetas que se inserta en el texto, se compilan y producen una salida en un formato especial (dvi, DeVice Indenpendient, Independiente del dispositivo). Este fichero solo proporciona la maquetación, quedando como tarea al dispositivo mostrarlo como pueda. Es decir, el documento será el mismo en una impresora de agujas que una impresora laser, pero con la resolución que cada una pueda desarrollar. Actualmente hay programas para convertir el formato dvi a otros como Postcript o PDF. Otra ventaja de este sistema esta en el que el documento <<fuente>> antes de compilar es texto simple: ocupa poco espacio, los compresores lo reducen aún mas de tamaño, facilita su difusión por la red (a finales de los 70 y principios de los 80 este era un punto muy importante) y es un formato realmente multiplataforma. El problema de \TeX es su complejidad, que lo hace dificil de manejar sin un aprendizaje intenso. En 1982, Leslie Lamport desarrolló \LaTeX, un conjunto de comandos mas reducido, que enmascara la complejidad de \TeX, permitiendo al autor concentrarse en el contenido y estructura del documento, mas que en detalles tecnicos de tipografia. Esta <<simplificación>> popularizó esta forma de escribir textos, convocó mas usuarios, y como consecuencia empezaron a desarrollarse paquetes de comandos que extendian la funcionalidad de \LaTeX. Por ejemplo para la escritura de esta documentación se utiliza el paquete <<pst-uml>> \emph{pst-uml} es un paquete para \LaTeX escrito por Maurice Diamantini, que permite introducir diagramas UML. Consiste en un conjunto de etiquetas que enmascaran la escritura de esos diagramas de una forma un tanto más sencilla. Aunque su manejo es algo complicado, permiten escribir una documentación como esta en \LaTeX sin necesidad de recurrir a programas externos. La versión utilizada en el desarrollo de este proyecto incluye las mejoras realizadas por Diego Berrueta, ex-alumno de esta misma facultad, para incluir el simbolo UML de <<paquete>> y de <<instancias múltiples>>. \subsection{Herramientas hardware} Por motivos laborales y personales, el desarrollo del proyecto se realizó en 3 máquinas distintas: \begin{itemize} \item Algeol01 \begin{itemize} \item Pentium III 800Mhz \item 256Mb RAM \end{itemize} \item Folsom \begin{itemize} \item AMD K6-II 450Mhz \item 256Mb RAM \end{itemize} \item Walrus \begin{itemize} \item Pentium IV 1.8 GHz \item 256Mb RAM \end{itemize} \end{itemize} Index: motivacion.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/motivacion.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** motivacion.tex 8 Jul 2003 11:02:41 -0000 1.1 --- motivacion.tex 18 Aug 2003 18:44:55 -0000 1.2 *************** *** 6,7 **** --- 6,17 ---- \section{Motivación} + El proyecto Prolix nace bajo el amparo del proyecto Idefix, con el objetivo de proveer una herramienta de enseñanza a traves de la Web. Entre los objetivos de Idefix esta el facilitar la enseñanza a traves de internet. El auge de este medio que ya es de uso cotidiano, pone al alcanze del profesor y alumno una serie de herramientas de comunicación y consulta que sin duda pueden aprovecharse para replantear el concepto de enseñanza a distancia tradicional. Sin embargo las herramientas educativas no estan a la altura de la anteriores, teniendo que recurrir al material tradicional para realizar la labor de las asignaturas, reduciendose así el importante papel que Internet puede jugar en un canal de comunicación para el correo y la web, que si bien es un gran avance, no aprovecha ni un mínimo porcentaje de su potencial. + \newline + + El siguiente paso en la evolución de la enseñanza a distancia en este nuevo medio deberia ser el desarrollo de esas herramientas educativas, con el objetivo ideal de que el trabajo integro de la asignatura pudiese realizarse por la Web. La interactividad entonces seria total, y próxima a la de una asignatura presencial, pero con todas las ventajas de movilidad y disponibilidad que provee la informática. + \newline + + Prolix es una de estas herramientas: un intérprete de Prolog que funciona a traves de la Web. Enmarcandolo en el contexto anterior, los alumnos de la asignatura de Lógica o Programación Funcional, por usar un ejemplo de la facultad en la que se desarrolla este proyecto, pueden realizar sus prácticas online, en cualquier ordenador, sin requerir software adicional, mejorando así la facilidad de uso respecto a un intérprete tradicional. Pero no es esta la única ventaja que vamos a obtener de un intérprete online, pues a su alrededor pueden crearse una serie de servicios extra como una biblioteca de programas, en la que los usuarios (alumnos) pudiesen compartir programas, observando el código de ejemplos que el profesor pueda incluir o de aportaciones de otros alumnos. Desde el punto de vista de quien empieza a trabajar con Prolog (y podemos hacerlo extensible a cualquier lenguaje de programación), la observación de otro código es una ayuda considerable para su aprendizaje. Es sugerencia común entre programadores el leer código como forma de adquirir habilidad en el arte de la programación. Para el profesor, este sistema le aporta una imagen más próxima a la realidad de la evolución de sus alumnos: de un trabajo semanal (como suele ser habitual) se pasa a valorar el trabajo dia a dia, pudiendo plantear un ejercicio y resolverse en el tiempo que el alumno decida dedicarle (podria ser instantaneamente en un caso ideal). La aportación de los usuarios a la biblioteca también permite conocer el nivel de conocimiento y la evolución de los mismos. + \newline + + Para el alumno, con caracter individual, se pretende facilitar su introduccion en el mundo de la programación lógica, y el manejo de Prolog. Una de las funcionalidades mas importantes de este proyecto es la resolución gráfica del programa en Prolog. Resultara de gran ayuda para la compresión del proceso de resolución el poder observarlo generado por el interprete, en lugar del dibujo a mano, propenso a errores y mucho mas confuso cuando el programa crece. Index: objetivos.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/objetivos.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** objetivos.tex 8 Jul 2003 11:02:41 -0000 1.1 --- objetivos.tex 18 Aug 2003 18:44:55 -0000 1.2 *************** *** 4,10 **** %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! \section{objetivos} ! ! Prolix se desarrolla con la intención de facilitar el aprendizaje de Prolog. La idea básica del proyecto consiste en desarrollar una herramienta con la que observar el proceso de resolución de un lenguaje de estas características. ! Aunque la primera aplicación práctica sera para los alumnos de informática. \ No newline at end of file --- 4,18 ---- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! \section{Objetivos} ! El desarrollo de este proyecto se marca como objetivo el obtener una herramienta informática que pueda utilizarse en un entorno educativo real para facilitar el aprendizaje de Prolog a traves de la Web. ! \newline ! Hablando del aspecto mas concreto del proyecto, se trata de desarrollar la interfaz Web que permita interactuar con un intérprete de Prolog existente de un Proyecto Fin de Carrera anterior. Deberia presentar el arbol de resolución del programa según avanza su ejecución, disponer de un sistema de usuarios, y una biblioteca de ejemplos donde los alumnos y profesores puedan poner sus programas a disposición de los demás. ! \newline ! El proyecto, consecuente con sus intenciones educativas, se liberará como software libre. Aunque inicialmente, por ser Proyecto Fin de Carrera y por tanto trabajo individual, no resulta demasiado util esta característica, en el momento en que el programa quede liberado, cualquier programador puede modificarlo, mejorarlo y redistribuirlo. Esto permitira que con el paso del tiempo Prolix se actualice por programadores que lo hayan utilizado, o lo esten utilizando y por lo tanto perciban sus carencias, evitando que el proyecto se quede obsoleto en un plazo relativamente breve de tiempo (hecho común en la informática). ! \newline ! El objetivo de mantener vivo el proyecto, con la colaboración de los usuarios, conduce a la idea de lograr el mayor numero de usuarios posibles. Y una de las mayores trabas en la difusión de un trabajo suele ser el idioma. Por eso otro de los objetivos propuestos es lograr un sistema internacionalizable. El código fuente y la documentación de la página web estan en ingles, y todos los mensajes mostrados al usuario recogidos de tal manera que la internacionalización de la aplicación es rápida, sencilla, y asequible incluso para usuarios no programadores. ! \newline ! No resultaria utópico pensar, que estando el proyecto disponible en la web, licenciado como software libre, personas vinculadas a la programación lógica tradujesen el programa a otros idiomas como aportación altruista al mismo. Este ejemplo puede extenderse así al propio código fuente del programa, que a pesar de todo el cuidado puesto en su escritura y todas las pruebas realizadas, no podemos garantizar al 100% ni que este libre de bugs (errores) ni que sea el mejor código posible. ! \newline ! Otra de las trabas mas habituales para las aplicaciones es la diferencia de plataformas y sistemas operativos. Manteniendo la idea anterior de llegar al mayor numero de usuarios posibles, sea cual sea su entorno de trabajo, se hace necesario desarrollar el proyecto en un entorno multiplataforma, y si fuese posible utilizando estándares abiertos. Ambos objetivos se alcanzan con el uso del entorno Java, y de estándares del consorcio w3c como SVG y XML. \ No newline at end of file Index: softexistente.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/softexistente.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** softexistente.tex 8 Jul 2003 11:02:41 -0000 1.1 --- softexistente.tex 18 Aug 2003 18:44:55 -0000 1.2 *************** *** 2,4 **** % Introduccion::software existente % ! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ No newline at end of file --- 2,8 ---- % Introduccion::software existente % ! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! ! \section{Software existente} ! ! Actualmente el compilador/intérprete de Prolog con más repercusión es <<swi-prorlog>>. Originalmente no era software libre pero desde el 4 de Febrero del 2002 se distribuye bajo la licencia LGPL (una variante muy parecia a la GPL), en un intento de dinamizar su desarrollo. A dia de hoy siguen saliendo nuevas versiones, incluye interfaces para C y C++, y funciona en múltiples plataformas incluyendo las más populares (MS-Windows, Unix/linux, MacOS). \ No newline at end of file Index: solo_intro.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/solo_intro.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** solo_intro.tex 8 Jul 2003 11:02:41 -0000 1.1 --- solo_intro.tex 18 Aug 2003 18:44:55 -0000 1.2 *************** *** 9,14 **** \begin{document} \chapter{Introduccion} ! %\input{introduccion/motivacion.tex} ! %\input{introduccion/objetivos.tex} %\input{introduccion/softexistente.tex} \end{document} --- 9,15 ---- \begin{document} \chapter{Introduccion} ! \input{motivacion.tex} ! \input{objetivos.tex} %\input{introduccion/softexistente.tex} + \input{herramientas.tex} \end{document} |
From: <iva...@us...> - 2003-08-18 18:36:37
|
Update of /cvsroot/pfc-prolog/prolix In directory sc8-pr-cvs1:/tmp/cvs-serv19539 Modified Files: .ant.properties Log Message: Removed batik.home. Ant look for it in environment Index: .ant.properties =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/.ant.properties,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** .ant.properties 18 Aug 2003 18:28:12 -0000 1.3 --- .ant.properties 18 Aug 2003 18:36:34 -0000 1.4 *************** *** 30,33 **** # Attention: By uncommenting this line you start the creation of a WAR file #servlet-lib.path=C:/jboss-all/build/output/jboss-3.1.0alpha/lib/javax.servlet.jar - # Set the path to Batik root directory - batik.home=/usr/local/batik-1.5 \ No newline at end of file --- 30,31 ---- |
From: <iva...@us...> - 2003-08-18 18:31:00
|
Update of /cvsroot/pfc-prolog/prolix/web In directory sc8-pr-cvs1:/tmp/cvs-serv17322/web Modified Files: tree.jsp Log Message: Added batik to project. Modified servlet to transform SVG in JPEG and return image - and web page to this change Index: tree.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/tree.jsp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** tree.jsp 17 Aug 2003 15:30:11 -0000 1.6 --- tree.jsp 18 Aug 2003 18:30:57 -0000 1.7 *************** *** 75,81 **** <!-- FIXME Here the tree --> <jsp:getProperty name="prologData" property="currentResult" /> ! <object data="/prolixjsp/view.tree" type="image/svg+xml" width="400" height="400" alt="Loading..."> ! Su navegador no traga SVG </object> <a href="/prolixjsp/view.tree">Ultimo recurso</a> --- 75,81 ---- <!-- FIXME Here the tree --> <jsp:getProperty name="prologData" property="currentResult" /> ! <object data="/prolixjsp/view.tree" type="image/jpeg" width="400" height="400" alt="Loading..."> ! Su navegador no admite SVG </object> <a href="/prolixjsp/view.tree">Ultimo recurso</a> |
From: <iva...@us...> - 2003-08-18 18:31:00
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/servlets In directory sc8-pr-cvs1:/tmp/cvs-serv17322/src/org/asturlinux/frade/prolix/web/servlets Modified Files: TreeServlet.java Log Message: Added batik to project. Modified servlet to transform SVG in JPEG and return image - and web page to this change Index: TreeServlet.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/servlets/TreeServlet.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TreeServlet.java 14 Aug 2003 22:15:36 -0000 1.4 --- TreeServlet.java 18 Aug 2003 18:30:57 -0000 1.5 *************** *** 1,2 **** --- 1,23 ---- + /** + * + * Copyright 2003 Ivan Frade + * + * This file is part of Prolix. + * + * Prolix is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Prolix is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Prolix; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + **/ package org.asturlinux.frade.prolix.web.servlets; *************** *** 8,13 **** import java.io.IOException; import javax.servlet.http.HttpSession; ! import java.io.PrintWriter; import javax.servlet.http.HttpServlet; /** --- 29,40 ---- import java.io.IOException; import javax.servlet.http.HttpSession; ! //import java.io.PrintWriter; import javax.servlet.http.HttpServlet; + import java.io.OutputStream; + import org.apache.batik.transcoder.image.JPEGTranscoder; + import org.apache.batik.transcoder.TranscoderInput; + import org.apache.batik.transcoder.TranscoderOutput; + import org.apache.batik.transcoder.TranscoderException; + import java.io.StringReader; /** *************** *** 26,37 **** HttpSession session = request.getSession(true); CurrentStateBean bean = (CurrentStateBean)session.getAttribute("prologData"); ! ! response.setContentType("image/svg+xml"); ! PrintWriter out = response.getWriter(); SvgGenerator comeOn = new SvgGenerator(); ! if (bean.getCurrentResult() == null) ! out.println("You have only a query loaded. Try to do an step"); ! else ! out.println(comeOn.transform(bean.getCurrentResult())); } --- 53,85 ---- HttpSession session = request.getSession(true); CurrentStateBean bean = (CurrentStateBean)session.getAttribute("prologData"); ! ! //response.setContentType("image/svg+xml"); ! //PrintWriter out = response.getWriter(); ! OutputStream out = response.getOutputStream(); ! response.setContentType("image/jpeg"); SvgGenerator comeOn = new SvgGenerator(); ! if (bean.getCurrentResult() == null) { ! //FIXME send basic image ! //out.println("You have only a query loaded. Try to do an step"); ! } ! else { ! String svg = comeOn.transform(bean.getCurrentResult()); ! JPEGTranscoder transcoder = new JPEGTranscoder(); ! transcoder.addTranscodingHint(transcoder.KEY_QUALITY, ! new Float(1)); ! transcoder.addTranscodingHint(transcoder.KEY_XML_PARSER_CLASSNAME,"org.apache.xerces.parsers.SAXParser"); ! transcoder.addTranscodingHint(transcoder.KEY_WIDTH, ! new Float(400)); ! transcoder.addTranscodingHint(transcoder.KEY_HEIGHT, ! new Float(400)); ! TranscoderInput input = new TranscoderInput(new StringReader(svg)); ! TranscoderOutput output = new TranscoderOutput(out); ! try { ! transcoder.transcode(input,output); ! }catch (TranscoderException te) { ! //FIXME ! throw new IOException("Error in svg to jpeg transformation"); ! } ! } } |
From: <iva...@us...> - 2003-08-18 18:30:59
|
Update of /cvsroot/pfc-prolog/prolix In directory sc8-pr-cvs1:/tmp/cvs-serv17322 Modified Files: build.xml Log Message: Added batik to project. Modified servlet to transform SVG in JPEG and return image - and web page to this change Index: build.xml =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/build.xml,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** build.xml 17 Aug 2003 10:38:06 -0000 1.50 --- build.xml 18 Aug 2003 18:30:57 -0000 1.51 *************** *** 24,31 **** ============================================================= --> - <!-- =================================================================== --> - <!-- Template build file modified to prolix --> - <!-- =================================================================== --> - <project name="prolix" default="main" basedir="."> --- 24,27 ---- *************** *** 46,49 **** --- 42,46 ---- <property name="src.release.file" value="prolix-src-snapshot.jar"/> <property name="src.release.file.with.libs" value="prolix-src-snapshot-with-libs.jar"/> + <property name="batik.home" value="${env.BATIK_HOME}" /> <property name="jboss.lib" value="${jboss.home}/lib" /> *************** *** 119,125 **** --- 116,128 ---- <path refid="struts.path"/> <path refid="jboss.path"/> + <path refid="batik.path" /> <pathelement location="${build.classes.dir}" /> <pathelement location="lib/${interpreter}"/> </path> + + <path id="batik.path"> + <pathelement location="${batik.home}/batik.jar"/> + <pathelement location="${batik.home}/lib/batik-transcoder.jar"/> + </path> <path id="dummy.path"> *************** *** 166,169 **** --- 169,189 ---- </fail> </target> + + <target name="check-batik" unless="batik.home"> + <fail> + Property "batik.home" is not set. Please use the file + ".ant.properties" in this directory ${basedir} to + set this property. It must point to the directory that + contains the main jar. + </fail> + </target> + + <target name="wrong-batik" unless="batik.present"> + <fail> + Property "batik.home" is set but it does not seem + to point to the right directory. The file "run.jar" + must be available at ${batik.home}. + </fail> + </target> <target name="check-environment"> *************** *** 174,177 **** --- 194,200 ---- <available property="xdoclet.present" file="${xdoclet.home}/lib"/> <antcall target="wrong-xdoclet"/> + <antcall target="check-batik"/> + <available property="batik.present" file="${batik.home}/batik.jar"/> + <antcall target="wrong-batik"/> </target> *************** *** 360,363 **** --- 383,388 ---- dir="${lib.web.client.dir}/WEB-INF/lib" includes="*.jar"/> + <lib dir="${batik.home}" includes="batik.jar"/> + <lib dir="${batik.home}/lib" includes="batik-*.jar"/> <classes dir="${build.classes.dir}" |
From: <iva...@us...> - 2003-08-18 18:28:15
|
Update of /cvsroot/pfc-prolog/prolix In directory sc8-pr-cvs1:/tmp/cvs-serv16868 Modified Files: .ant.properties Log Message: Added batik.home variable Index: .ant.properties =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/.ant.properties,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** .ant.properties 16 Jun 2003 11:26:47 -0000 1.2 --- .ant.properties 18 Aug 2003 18:28:12 -0000 1.3 *************** *** 30,31 **** --- 30,33 ---- # Attention: By uncommenting this line you start the creation of a WAR file #servlet-lib.path=C:/jboss-all/build/output/jboss-3.1.0alpha/lib/javax.servlet.jar + # Set the path to Batik root directory + batik.home=/usr/local/batik-1.5 \ No newline at end of file |
From: <iva...@us...> - 2003-08-17 19:36:12
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/beans In directory sc8-pr-cvs1:/tmp/cvs-serv19147/src/org/asturlinux/frade/prolix/web/beans Modified Files: CurrentStateBean.java LastConsultsBean.java Log Message: Reset javabeans when user do a new login Index: CurrentStateBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/beans/CurrentStateBean.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** CurrentStateBean.java 17 Aug 2003 10:38:07 -0000 1.7 --- CurrentStateBean.java 17 Aug 2003 19:34:40 -0000 1.8 *************** *** 121,123 **** --- 121,135 ---- this.result = argResult; } + + public void reset() + { + program = ""; + programHTML = ""; + consult = ""; + result = "";; + noMoreSolutions = false; + + } + + } Index: LastConsultsBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/beans/LastConsultsBean.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** LastConsultsBean.java 14 Aug 2003 22:27:25 -0000 1.3 --- LastConsultsBean.java 17 Aug 2003 19:34:40 -0000 1.4 *************** *** 45,47 **** --- 45,52 ---- this.lastConsults = newLastConsults; } + + public void reset() + { + lastConsults = null; + } } |
From: <iva...@us...> - 2003-08-17 19:36:12
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/actions In directory sc8-pr-cvs1:/tmp/cvs-serv19147/src/org/asturlinux/frade/prolix/web/actions Modified Files: LoginAction.java Log Message: Reset javabeans when user do a new login Index: LoginAction.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/actions/LoginAction.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** LoginAction.java 15 Aug 2003 12:35:16 -0000 1.4 --- LoginAction.java 17 Aug 2003 19:34:39 -0000 1.5 *************** *** 39,42 **** --- 39,44 ---- import org.asturlinux.frade.prolix.ejb.interfaces.AccessControl; import org.asturlinux.frade.prolix.web.beans.LoginBean; + import org.asturlinux.frade.prolix.web.beans.CurrentStateBean; + import org.asturlinux.frade.prolix.web.beans.LastConsultsBean; import org.asturlinux.frade.prolix.exceptions.NoLoggedUserException; import org.asturlinux.frade.prolix.exceptions.NotEnoughtPermissionsException; *************** *** 99,102 **** --- 101,121 ---- } session.setAttribute("login",lb); + + // Reset data in current state bean if exist + CurrentStateBean state; + state = (CurrentStateBean)session.getAttribute("prologData"); + if (state == null) + state = new CurrentStateBean(); + state.reset(); + session.setAttribute("prologData",state); + + //Reset data in last consult bean if exist + LastConsultsBean last; + last = (LastConsultsBean)session.getAttribute("oldConsults"); + + if (last == null) + last = new LastConsultsBean(); + last.reset(); + session.setAttribute("oldConsults",last); } else |
From: <iva...@us...> - 2003-08-17 15:42:07
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb In directory sc8-pr-cvs1:/tmp/cvs-serv5684 Modified Files: AccessControlBean.java Log Message: FIXED 784883 - now do login causes logout of previous user Index: AccessControlBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb/AccessControlBean.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** AccessControlBean.java 15 Aug 2003 16:58:17 -0000 1.2 --- AccessControlBean.java 17 Aug 2003 15:42:04 -0000 1.3 *************** *** 95,100 **** ensureAdminUserCreated(); ! if (loggedUser != null) ! throw new FailedLoginException(); loggedUser = obtainUserHome().findByUserAndPass(name,pass); } --- 95,104 ---- ensureAdminUserCreated(); ! try { ! logout(); ! } ! catch (NoLoggedUserException nlue) { ! } ! //throw new FailedLoginException(); loggedUser = obtainUserHome().findByUserAndPass(name,pass); } |
From: <iva...@us...> - 2003-08-17 15:30:16
|
Update of /cvsroot/pfc-prolog/prolix/web In directory sc8-pr-cvs1:/tmp/cvs-serv4188 Modified Files: tree.jsp Log Message: Insert SVG in object tag. At moment with hardcoded size Index: tree.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/tree.jsp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** tree.jsp 15 Aug 2003 12:35:16 -0000 1.5 --- tree.jsp 17 Aug 2003 15:30:11 -0000 1.6 *************** *** 75,80 **** <!-- FIXME Here the tree --> <jsp:getProperty name="prologData" property="currentResult" /> ! ! <img src="/prolixjsp/dibujo-sodipodi.xml" alt="Loading..."> <a href="/prolixjsp/view.tree">Ultimo recurso</a> --- 75,82 ---- <!-- FIXME Here the tree --> <jsp:getProperty name="prologData" property="currentResult" /> ! <object data="/prolixjsp/view.tree" type="image/svg+xml" ! width="400" height="400" alt="Loading..."> ! Su navegador no traga SVG ! </object> <a href="/prolixjsp/view.tree">Ultimo recurso</a> |
From: <iva...@us...> - 2003-08-17 10:38:11
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/actions In directory sc8-pr-cvs1:/tmp/cvs-serv29600/src/org/asturlinux/frade/prolix/web/actions Modified Files: LoadConsultAction.java Log Message: FIXED 789769. Bean that saves current loaded program have new method to retrieve it in HTML Index: LoadConsultAction.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/actions/LoadConsultAction.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** LoadConsultAction.java 14 Aug 2003 22:32:49 -0000 1.14 --- LoadConsultAction.java 17 Aug 2003 10:38:07 -0000 1.15 *************** *** 91,94 **** --- 91,95 ---- state.setCurrentConsult(consult); state.setCurrentResult(null); + state.setNoMoreSolutions(false); } |
From: <iva...@us...> - 2003-08-17 10:38:11
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/beans In directory sc8-pr-cvs1:/tmp/cvs-serv29600/src/org/asturlinux/frade/prolix/web/beans Modified Files: CurrentStateBean.java Log Message: FIXED 789769. Bean that saves current loaded program have new method to retrieve it in HTML Index: CurrentStateBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/beans/CurrentStateBean.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** CurrentStateBean.java 14 Aug 2003 22:27:25 -0000 1.6 --- CurrentStateBean.java 17 Aug 2003 10:38:07 -0000 1.7 *************** *** 21,29 **** **/ package org.asturlinux.frade.prolix.web.beans; ! public class CurrentStateBean implements java.io.Serializable { private String program; private String consult; private String result; --- 21,30 ---- **/ package org.asturlinux.frade.prolix.web.beans; ! import java.lang.StringBuffer; public class CurrentStateBean implements java.io.Serializable { private String program; + private String programHTML; private String consult; private String result; *************** *** 59,62 **** --- 60,69 ---- } + public String getCurrentProgramHTML() { + if (programHTML == null) + return new String(""); + return this.programHTML; + } + /** * Sets the value of program *************** *** 66,69 **** --- 73,86 ---- public void setCurrentProgram(String argProgram) { this.program = argProgram; + + StringBuffer result = new StringBuffer(argProgram); + int ret = result.indexOf("\n"); + while (ret != -1) + { + result = result.replace(ret,ret+1,"<br>"); + ret = result.indexOf("\n"); + } + + this.programHTML = result.toString(); } *************** *** 94,97 **** --- 111,115 ---- return this.result; } + /** |
From: <iva...@us...> - 2003-08-17 10:38:10
|
Update of /cvsroot/pfc-prolog/prolix/web In directory sc8-pr-cvs1:/tmp/cvs-serv29600/web Modified Files: consult.jsp Log Message: FIXED 789769. Bean that saves current loaded program have new method to retrieve it in HTML Index: consult.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/consult.jsp,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** consult.jsp 14 Aug 2003 22:04:03 -0000 1.22 --- consult.jsp 17 Aug 2003 10:38:07 -0000 1.23 *************** *** 68,72 **** </head> ! <% String loadedProgram = prologData.getCurrentProgram(); %> <!-- False consults to debug --> <body bgcolor="#768FDD"> --- 68,72 ---- </head> ! <% String loadedProgram = prologData.getCurrentProgramHTML(); %> <!-- False consults to debug --> <body bgcolor="#768FDD"> |
From: <iva...@us...> - 2003-08-17 10:38:10
|
Update of /cvsroot/pfc-prolog/prolix In directory sc8-pr-cvs1:/tmp/cvs-serv29600 Modified Files: build.xml Log Message: FIXED 789769. Bean that saves current loaded program have new method to retrieve it in HTML Index: build.xml =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/build.xml,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** build.xml 14 Aug 2003 22:53:47 -0000 1.49 --- build.xml 17 Aug 2003 10:38:06 -0000 1.50 *************** *** 40,44 **** <property name="Name" value="Prolix"/> <property name="version" value="0.1"/> ! <property name="interpreter" value="prolix-dummy-interpreter.jar"/> <property name="war.file" value="prolixjsp.war"/> <property name="web.client.jar.file" value="web-client-classes.jar"/> --- 40,45 ---- <property name="Name" value="Prolix"/> <property name="version" value="0.1"/> ! <!-- <property name="interpreter" value="prolix-dummy-interpreter.jar"/> --> ! <property name="interpreter" value="lupi.jar"/> <property name="war.file" value="prolixjsp.war"/> <property name="web.client.jar.file" value="web-client-classes.jar"/> *************** *** 313,316 **** --- 314,321 ---- dir="${lib.dir}" includes="${interpreter}"/> + <!-- antlr needed to user LUpi interpreter --> + <fileset + dir="${lib.dir}" + includes="antlr.jar"/> <fileset dir="${build.classes.dir}" |
From: <iva...@us...> - 2003-08-17 10:38:10
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb In directory sc8-pr-cvs1:/tmp/cvs-serv29600/src/org/asturlinux/frade/prolix/ejb/sessionjb Modified Files: StudentRoleBean.java Log Message: FIXED 789769. Bean that saves current loaded program have new method to retrieve it in HTML Index: StudentRoleBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb/StudentRoleBean.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** StudentRoleBean.java 16 Aug 2003 15:08:56 -0000 1.4 --- StudentRoleBean.java 17 Aug 2003 10:38:06 -0000 1.5 *************** *** 23,27 **** package org.asturlinux.frade.prolix.ejb.sessionjb; - import java.io.StringWriter; import java.io.Writer; import org.asturlinux.frade.prolix.ejb.entityjb.Permissions; --- 23,26 ---- *************** *** 68,72 **** public static final String prologInterpreterClassname = ! "org.asturlinux.frade.dummy.PrologInterpreterDummy"; private String _program; --- 67,71 ---- public static final String prologInterpreterClassname = ! "org.asturlinux.berrueta.lupi.LupiPrologInterpreter"; private String _program; |
From: <iva...@us...> - 2003-08-16 15:22:13
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb In directory sc8-pr-cvs1:/tmp/cvs-serv10373 Modified Files: StudentRoleBean.java Log Message: FIXED 789764 - LastSolution to false when load new consult Index: StudentRoleBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb/StudentRoleBean.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** StudentRoleBean.java 14 Aug 2003 22:42:46 -0000 1.3 --- StudentRoleBean.java 16 Aug 2003 15:08:56 -0000 1.4 *************** *** 27,32 **** import org.asturlinux.frade.prolix.ejb.entityjb.Permissions; import javax.ejb.SessionBean; - import org.asturlinux.frade.dummy.PrologContextDummy; - import org.asturlinux.frade.dummy.PrologInterpreterDummy; import java.rmi.RemoteException; import javax.ejb.EJBException; --- 27,30 ---- *************** *** 40,43 **** --- 38,44 ---- import org.asturlinux.frade.prolix.interpreter.exceptions.ProgramAlreadyLoadedException; import org.asturlinux.frade.prolix.exceptions.NoLoggedUserException; + import org.asturlinux.frade.prolix.interpreter.interfaces.PrologContext; + import org.asturlinux.frade.prolix.interpreter.interfaces.PrologInterpreter; + /** * *************** *** 66,72 **** { private String _program; private String _consult; ! private PrologContextDummy prologCtx; private AccessControl login = null; --- 67,76 ---- { + public static final String prologInterpreterClassname = + "org.asturlinux.frade.dummy.PrologInterpreterDummy"; + private String _program; private String _consult; ! private PrologContext _prologCtx; private AccessControl login = null; *************** *** 93,97 **** try { ! prologCtx.load(program); } catch (ProgramAlreadyLoadedException pale) --- 97,101 ---- try { ! _prologCtx.load(program); } catch (ProgramAlreadyLoadedException pale) *************** *** 100,104 **** try { ! prologCtx.load(program); } catch (ProgramAlreadyLoadedException fatal) --- 104,108 ---- try { ! _prologCtx.load(program); } catch (ProgramAlreadyLoadedException fatal) *************** *** 147,151 **** //FIXME Could be prologCtx == null? ! prologCtx.consult(consult); } --- 151,156 ---- //FIXME Could be prologCtx == null? ! _prologCtx.consult(consult); ! lastSolution = false; } *************** *** 185,189 **** do { ! treeResult = prologCtx.step(); tt.visitLastNode(treeResult,visitor); } --- 190,194 ---- do { ! treeResult = _prologCtx.step(); tt.visitLastNode(treeResult,visitor); } *************** *** 212,216 **** } ! TreeElement treeResult = prologCtx.step(); if (treeResult == null) //FIXME Can be possible? --- 217,221 ---- } ! TreeElement treeResult = _prologCtx.step(); if (treeResult == null) //FIXME Can be possible? *************** *** 266,274 **** private void obtainPrologContext() { - PrologInterpreterDummy pi = new PrologInterpreterDummy(); try { ! prologCtx = (PrologContextDummy)pi.createContext(); } catch (org.asturlinux.frade.prolix.interpreter.exceptions.CreateException ce) { --- 271,293 ---- private void obtainPrologContext() { try { ! Class prologInterpreterClass = ! Class.forName(prologInterpreterClassname); ! PrologInterpreter pi = ! (PrologInterpreter)prologInterpreterClass.newInstance(); ! _prologCtx = pi.createContext(); } + catch (ClassNotFoundException cnfe) { + throw new EJBException(); + } // end of catch + catch (InstantiationException ie) { + throw new EJBException(); + } // end of catch + catch (IllegalAccessException iae) { + throw new EJBException(); + } // end of catch + + catch (org.asturlinux.frade.prolix.interpreter.exceptions.CreateException ce) { *************** *** 287,291 **** //FIXME: Loose state System.out.println("Pasivome"); ! prologCtx = null; } --- 306,310 ---- //FIXME: Loose state System.out.println("Pasivome"); ! _prologCtx = null; } |
From: <iva...@us...> - 2003-08-16 01:13:12
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/formbeans In directory sc8-pr-cvs1:/tmp/cvs-serv24607/src/org/asturlinux/frade/prolix/web/formbeans Modified Files: LoginFormBean.java Added Files: ManageUsersFormBean.java VisitUsersFormBean.java Log Message: Added new funcionality - Now administrator can remove users --- NEW FILE: ManageUsersFormBean.java --- /** * * Copyright 2003 Ivan Frade * * This file is part of Prolix. * * Prolix is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Prolix is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Prolix; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * **/ package org.asturlinux.frade.prolix.web.formbeans; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionError; /** * @struts.form name="manageUsersForm" */ public class ManageUsersFormBean extends ActionForm { private String username; /** * Get the Username value. * @return the Username value. */ public String getUsername() { return username; } /** * Set the Username value. * @param newUsername The new Username value. */ public void setUsername(String newUsername) { this.username = newUsername; } /** * Redefined methods */ public void reset(ActionMapping mapping, HttpServletRequest request) { username = null; } public ActionErrors validate (ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if ((username == null) || (username.length() < 1)) errors.add("manageUsers", new ActionError("error.void.user")); return errors; } } --- NEW FILE: VisitUsersFormBean.java --- /** * * Copyright 2003 Ivan Frade * * This file is part of Prolix. * * Prolix is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Prolix is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Prolix; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * **/ package org.asturlinux.frade.prolix.web.formbeans; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionErrors; /** * @struts:form name="visitUsersForm" */ public class VisitUsersFormBean extends ActionForm { /** * Redefined methods */ public void reset(ActionMapping mapping, HttpServletRequest request) { } public ActionErrors validate (ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); return errors; } } Index: LoginFormBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/formbeans/LoginFormBean.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** LoginFormBean.java 6 Aug 2003 21:40:19 -0000 1.2 --- LoginFormBean.java 15 Aug 2003 16:58:18 -0000 1.3 *************** *** 72,75 **** --- 72,80 ---- } + public void reset(ActionMapping mapping, HttpServletRequest request) + { + username = null; + password = null; + } public ActionErrors validate (ActionMapping mapping, |