bolivia linux  
| Quienes Somos? | Notícias | Artículos | Tutoriales Manuales | Trucos y Consejos | Investigación y desarrollo | Proyectos | Eventos | Libros Electrónicos | Mirrors | Grupos Linux en Bolivia | Contactos | Inicio |
Quienes Somos?
Notícias
Artículos
Tutoriales - Manuales
Trucos y Consejos
Investigación y Desarrollo
Proyectos
Eventos
Libros Electrónicos
Mirrors
Grupos Linux en Bolivia
Contactos
bolivia linux / proyectos / calificaciones por internet Pagina 1 Pagina 2

 Por Jackeline Aguilar y Lucio Torrico
Pagina Nº 1
INTRODUCCIÓN

Bajo el marco de la filosofía de software libre se ha implementado
una aplicación haciendo uso de diversas herramientas, conceptos y técnicas.

Se trata de ofrecer calificaciones a los estudiantes de ciertas
materias a través de la red Internet, agregando utilidades de
bases de datos y criptografía.

Además de utilizar -básicamente- herramientas bajo linux, se ha
combinado -en algunos casos- con herramientas de otra plataforma
con el propósito de mostrar la interacción e integración que posibilita linux.

DESARROLLO

Esquemáticamente ocurre lo siguiente:

Un usuario -estudiante para el caso- desde una terminal cliente con acceso
a Internet accesa a la página web http://www.servidor.edu/docente/materia
(No en servicio), dicha página incluye datos de la materia además
de la opción de recurrir a otra página para consultar sus notas.

Utilizando esta opción el estudiante se encuentra en una de dos
posibilidades, dependiendo si es de una u otra asignatura:

  • Digitar su carnet de identidad, o

  • Digitar su carnet de identidad y su clave.

En el primer caso -ya en el servidor- se obtiene el dato digitado y a través de
un script en perl se accesa a una clase (tabla) bajo postgres -mediante una
consulta embebida en el script- que accesa al registro correspondiente.
El script devuelve como salida una nueva página con los datos encontrados
o -si es el caso- indicando que dicho registro no existe.

En el segundo caso -también en el servidor- se obtiene el dato digitado y a
través de un script en perl se accesa a un archivo que contiene los
registros respectivos ya encriptados, con ayuda de otro archivo de apoyo
se desencripta el registro y -el script- devuelve los datos encontrados,
o bien se indica que tal registro no existe.

Se ha manejado archivos en un caso y bases de datos en el otro para
graficar la variedad de alternativas que ofrece linux.

Más técnicamente:

Las páginas web se han escrito en un editor de texto que bien podría ser el 'vi'.
El URL específico es http://www.umsanet.edu.bo/docentes/torrico (No en servicio)
La página de calificaciones se denomina notas.htm en un caso, y notaslf en el otro.
A continuación se muestra el contenido de dichas páginas en html.

Para notas.htm:

<html>

<head>

<title>CALIFICACIONES</title>

<SCRIPT Language="JavaScript">

<!--

//Esta función controla que se haya digitado sólo
números, al introducir el //carnet

//'cid' es la variable tipo 'input' de tamaño 9
y largo máxima 8 que recibe el //carnet digitado

function verifica(form)

{

   if (form.cid.value.length <  1)
//si la longitud es cero emite una alerta

   {

     alert("Digite su carnet!!");

     form.cid.focus();             
//reestablece el foco al campo cid

     return (false);

   }

 

   var simbolosOK = "0123456789";  
//son los símbolos validos

   var carnet = form.cid.value;

   var todoOK = true;

   for (i = 0; i <  carnet.length; i++)   
//se revisan uno a uno los símbolos
//de carnet

   {                            
//para ver si son símbolos válidos

     digito = carnet.charAt(i);

     for (j = 0; j <  simbolosOK.length; j++)

       if (digito == simbolosOK.charAt(j))

         break;

     if (j == simbolosOK.length)

     {

       todoOK = false;                         
//hay un símbolo que no es válido

       break;

     }

   }

   if (!todoOK)

   {
     alert("Escriba sólo dígitos!");  
//emite una alerta pues hay un
                                      
//símbolo no valido
     form.cid.value = "";             
//en el carnet digitado
     form.cid.focus();                
//devuelve el foco al campo cid
return (false);               
//y concluye

   }

   form.submit();         
//si el carnet contiene sólo dígitos se envía el dato

   return(true);

}

//-->

</SCRIPT>

</head>

<body background="imagenes/fondo.jpg" bgproperties="fixed">

<p align="center">

<font color="#FFFFFF" size="4">

<strong>CALIFICACIONES</strong></font></p>

</font>&nbsp;</p>

<p align="left">
<font color="#FFFFFF" size="1">DIGITE SU
CARNET DE IDENTIDAD</font></p>

<!-- El  formulario incluye un campo para digitar
el carnet y un botón para enviar el dato-->

<form method="POST" action="/cgi-bin/notaspg.pl">  

<p><font color="#FFFFFF"><input type="text" size="9" maxlength="8" name="cid">

<input type="button" name="B1" value="consultar" onClick="verifica(this.form)">

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<input type="password" size="0" maxlength="0" name="P1">

</font></p></form>

</body>

</html>

 

Para notaslf.htm. en este caso no se incluyen comentarios pues la página es muy semejante a la anterior excepto por la inclusión -además del campo 'ci' que recibe el carnet- de un campo adicional de tipo password denominado 'cl', para el cual también se controla que tenga únicamente símbolos válidos, letras mayúsculas y números en este caso.

<html>

<head>

<title>CALIFICACIONES</title>

<SCRIPT Language="JavaScript">

<!--

function verifica(form)

{

   if (form.ci.value.length <  1)

   {

     alert("Digite su carnet!");

     form.ci.focus();

     return (false);

   }

 

   if (form.cl.value.length <  1)

   {

     alert("Digite su clave!");

     form.cl.focus();

     return (false);

   }

 

   var simbolosOK = "0123456789";

   var carnet = form.ci.value;

   var todoOK = true;

   for (i = 0; i <  carnet.length; i++)

   {

     car = carnet.charAt(i);

     for (j = 0; j <  simbolosOK.length; j++)

         if (car == simbolosOK.charAt(j))

               break;

     if (j == simbolosOK.length)

     {

       todoOK = false;

       break;

     }

   }

   if (!todoOK)

   {

     alert("Escriba sólo dígitos en su carnet!");

     form.ci.value = "";

     form.ci.focus();    

     return (false);

   }

var simbolosOK = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZÑ";

   var clave = form.cl.value;

   var todoOK = true;

   for (i = 0; i <  clave.length; i++)

   {

     car = clave.charAt(i);

     for (j = 0; j <  simbolosOK.length; j++)

       if (car == simbolosOK.charAt(j))

         break;

     if (j == simbolosOK.length)

     {

       todoOK = false;

       break;

     }

   }

   if (!todoOK)

   {

     alert("Escriba bien su clave!");

     form.cl.value = "";

     form.cl.focus();    

     return (false);

   }

 

   form.submit();

   return(true);

}

//-->

 

</SCRIPT>

</head>

<body background="imagenes/fondo.jpg" bgproperties="fixed">

<p align="center">

<font color="#FFFFFF" size="4">

<strong>CALIFICACIONES</strong></font></p>

<p align="center"><font color="#FFFFFF"></font>&nbsp;</p>

<p align="left"><font color="#FFFFFF" size="1">DIGITE
SU CARNET DE IDENTIDAD Y SU CLAVE</font></p>

<form method="POST" action="/cgi-bin/Simetrico2">  

<p><font color="#FFFFFF">

<input type="text" size="9" maxlength="8" name="ci">

<input type="password" size="11" maxlength="10" name="cl">

<input type="button" name="B1" value="consultar" onClick="verifica(this.form)">

</font></p></form>

<p align="left"><font color="#FFFFFF"></font>&nbsp;</p>

<p align="left">&nbsp;</p>

</body>

</html>

 

Los compañeros que tienen a su cargo el servidor han utilizado para
su unidad también herramientas y plataforma linux. A saber, sistema
operativo de la distribución Red Hat 6.0 con el kernel 2.2.5-15, el
servidor Apache/1.3.12, perl 5.003, para mencionar lo principal.

También se ha instalado -con rpm- postgresql 6.5.3 que es donde se
ha creado la base de datos "notas" con la clase "inf154" cuya
estructura -simple- es como sigue:

Atributo 1: ci                //por carnet de identidad

Atributo 2: nombre            //incluye Nombre y Apellido

Atributo 3: npp            //por nota

Dicha clase se utiliza en la averiguación de notas a través de bases
de datos. Es claro que para la creación de esta base de datos ha sido
necesario crear usuarios postgres a partir del superusuario postgres:
en particular el usuario “www” a quien el propietario de la base de
datos “notas” le ha dado acceso de consultas a su tabla “inf154” con
la orden “grant select on inf154 to www” en el monitor interactivo que
despierta la orden “psql notas”.

El script en perl que toma el carnet digitado y devuelve una página es
el siguiente (notaspg.pl):

#!/usr/bin/perl -w

use Pg;  
#el módulo que conecta perl con postgres

require "cgi-lib.pl"; 
#el módulo que permite recuperar los datos

&ReadParse(*input);   
#enviados por el formulario de la página web

$carnet = $input{'cid'};
#recupera el carnet digitado

print "Content-type:text/html\n\n"; 
#aquí se empieza a desplegar

print "<HTML><HEAD>"; 
#la página de respuesta

print "</HEAD>";

print "<BODY bgcolor='#FAF7BD'>";

print "Carnet digitado: "."$carnet<BR>";
#incluyendo el carnet digitado

$conn = Pg::connectdb("dbname=notas");
#conexión a la base de datos

$query = "select * from inf154 where ci="."$carnet";      
#prepara el query

$result = $conn->exec($query);
#ejecuta el query

$nt = $result->ntuples;
#obtiene el número de tuples
#en la respuesta al query

 if ($nt == 1) {

                @row = $result->fetchrow; 
#el registro en el arreglo row

                $nombre = $row[1];         
#separar el Atributo 2, y el 3

                $notapp = $row[2];           
# e imprimir los datos

                print "<br>"."$nombre"." su nota del primer parcial es ";

                print "$notapp"." sobre 100";

               }

#en otro caso hay cero tuples
#no hay registros con tal ci

         else  {

                print "<br>Dicho carnet no
        está registrado en la asignatura.";

               };

 print "</BODY></HTML>";      
#fin del script

proyectos
Letrero digital

Calificaciones por internet

Algoritmos geneticos paralelos en linux

 
| Quienes Somos? | Notícias | Artículos | Tutoriales Manuales | Trucos y Consejos | Investigación y desarrollo | Proyectos | Eventos | Libros Electrónicos | Mirrors | Grupos Linux en Bolivia | Contactos | Inicio |

La Paz - Bolivia 2002