• Publicidad

Petición de ayuda. Colaboración para un proyecto

¿Estás desarrollando un proyecto, o piensas hacerlo? Pon aquí tu propuesta, lo más seguro es que alguien esté interesado en ayudarte.

Petición de ayuda. Colaboración para un proyecto

Notapor Salvador BCN » 2018-01-06 15:00 @666

Hola, buenas tardes.

Me llamo Salvador, tengo 60 años y soy médico. NO tengo ningún conocimiento de Perl ni de otros lenguajes de programación pero buscando cómo diseñar un estudio clínico (no remunerado) he caído en una aplicación en Perl que necesita una pequeña adaptación.

Lo que necesito es un sistema de randomización, y los sistemas de randomización on-line son, o muy costosos (mi proyecto no tiene financiación) o son programas en DOS que no cumplen un mínimo de criterios (no ocultan la secuencia, etc.).

No me alargo. En mi búsqueda he encontrado un artículo publicado por un investigador inglés que incluye un sistema maravilloso (son 3 páginas web de 20 líneas y dos CGI en Perl) que necesita unas pequeñas adaptaciones para introducir las direcciones de mi servidor web (he contratado uno sencillo en Hostalia: http://www.nemesi.org si queréis mirar aunque no funciona casi nada) y conseguir que envíe correos electrónicos respondiendo a la petición de randomización.

En total lo que hay que arreglar son unas 10 líneas de código que no logro entender. No tengo interés en traducir los textos del programa, ya me va bien tal como está, lo único que necesito es que funcione en mi servidor.

No sé si es abusar pero agradecería mucho cualquier ayuda.

Os adjunto el enlace al artículo que explica el sistema: http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0110761 y también la dirección desde donde he descargado los CGI: https://sourceforge.net/projects/oxmar/ que facilita el autor del artículo.

Si alguien tiene la paciencia de leer el sistema verá que parece muy simple y solo hay que editar unas pocas líneas de los CGIs para adaptarlo a cualquier tipo de estudio. Mi problema es que ya no me funciona ni el primer CGI que es muy cortito y lo único que genera es una respuesta en una mini página web, da error siempre.

De momento ya he enviado una consulta al proveedor (Hostalia) para mirar si es que el Perl no está activo o no lo sé hacer funcionar. De hecho he colgado un test de Perl en el servidor y no funciona (http://www.nemesi.org/cgi.bin/testperl.cgi).

Bueno. No me enrollo más. Cualquier ayuda será muy agradecida.

Un saludo a todos,
Salvador
Salvador BCN
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2018-01-06 14:31 @646

Publicidad

Re: Petición de ayuda. Colaboración para un proyecto

Notapor explorer » 2018-01-06 15:19 @680

Bienvenido a los foros de Perl en Español, Salvador BCN.

Efectivamente, el test no funciona.

Como regla más o menos general, la posición de los programas CGI suele estar dentro de una carpeta llamada cgi-bin/ (observe: un guión, en lugar de un punto), pero eso puede variar, dependiendo de nuestro proveedor de acceso. Debe consultar su documentación para saber exactamente el nombre de esa carpeta y también, cómo se debe invocar desde fuera (podría ser nemesi.org/cgi.bin/testperl.cgi pero también podría ser algo tan raro como nemesi.org/cgi/testperl.cgi).

Sale un error 404, indicando que no estamos usando la ruta correcta a ese CGI.

Es muy posible que Hostalia le haya creado una carpeta cgi.bin/ (o de nombre similar) dentro del directorio raíz de su alojamiento. Conéctese por FTP o acceda a los archivos vía web y observe el nombre de las carpetas.

Voy a mirar el resto de los CGI.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Petición de ayuda. Colaboración para un proyecto

Notapor Salvador BCN » 2018-01-06 15:26 @685

Muchísimas gracias por su respuesta.

Como llevo ya días peleando con esto algunas cosa he entendido. En principio los cgi están en el directorio cgi-bin con permisos para hacer de todo, el formulario html está en otro directorio con el nombre del estudio (en este caso estudio de prueba).

Estoy a la espera de la respuesta de Hostalia y también del profesor inglés que ha publicado el sistema y al que le he enviado un correo para ver si me responde.

Repito: muchísimas gracias y sigo en el hilo.
Salvador BCN
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2018-01-06 14:31 @646

Re: Petición de ayuda. Colaboración para un proyecto

Notapor explorer » 2018-01-06 21:46 @949

Ya he visto el código. Es... sencillo, pero muy primitivo. Bueno, es una forma de hacerlo para evitar tener que depender de bibliotecas externas.

Está todo en inglés, por supuesto. Pero todo un poco mezclado: la línea 20 es la dirección de correo, la 96 la dirección de la llamada al segundo cgi, el de la confirmación, y en la 180, una firma, que se puede quitar, para no despistar a los voluntarios.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Petición de ayuda. Colaboración para un proyecto

Notapor Salvador BCN » 2018-01-07 13:14 @593

Muchas gracias Explorer. Voy progresando en la comprensión de todo esto. Ya he conseguido hacer funcionar el testperl y el primer cgi pero solo si los pongo en el cgi-bin del directorio webspace (directorio inicial en el que los de Hostalia luego te cuelgan el dominio (lo del cgi.bin era un error de escritura en el post mio). http://d5593089-83281.srv-hostalia.com/cgi-bin/testperl.cgi No funciona si pongo los cgis en el cgi-bin del dominio. Puede ser que el perl este mal instalado en el dominio o siempre funciona así? De momento el servicio tecnico de Hostalia no dice ni palabra, esperare a ver si mañana que es laborable dicen algo. Esta parte bien, pienso que funcionará.
Otros aspectos.
A pesar de mi total desconocimiento de perl. tengo claro el tema de subtintuir en las lineas de código todas las direcciones de los cgis y las direcciones de correo electrónico pero tengo varias dudas
1. En las lineas 7,8 y 9 de la pagina web formulario (oxmarhtlmform.htlm) incluye tres veces la expresión value="[email protected]" que entiendo que debo sustituir por mi dominio aunque no entiendo para que sirve aqui esto y si la dirección de mi dominio es solo el nombre http://www.nemesi.org o la dirección completa.
2. donde pone $filepathforallocations ="allocationstemp1.txt";, la dirección debe ser absoluta o puede ser relativa
3. No entiendo como funciona el tema de los correos electrónicos. Solo poniendo las direcciones el perl los manda sin conectar-se a un servidor de correo mio? En ningúna parte pregunta nada al respecto.
4. Por ultimo la gran pregunta, que es la misma que le enviaré al autor inglés , si es un código tan simple, seria muy dificil eliminar una variable y añadir otra (elminar la varible "ethnicity" que en nuestro medio no aporta nada y añadir una variable numérica ( que seria el "Indice de masa corporal") con un funcionamiento igual que el de la variable edat con un #set the IMC threshold for deciding "obeso o no obeso"? No se si mover esto es muy complicado. Si es dificil tampoco es imprescindible.
Bueno, muchisimas gracias por tu interés y espero que puedas aclarame algunas de las dudas que ahora te expongo.
Salvador
Salvador BCN
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2018-01-06 14:31 @646

Re: Petición de ayuda. Colaboración para un proyecto

Notapor Salvador BCN » 2018-01-07 17:35 @774

Apreciado explorer y a todos.

Ya he modificado los CGI y el de confirmación ¡¡¡da ERROR 500!!! con el siguiente registro:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
[Sun    Jan     7       22:14:17        2018]   [error] Undefin ed subroutine &main::Erromessage called at /var/www/vhosts/39/215963/webspace/cgi-bin/oxmarconfirmallocationp.cgi line 120.
[Sun    Jan     7       22:14:17        2018]   [error] [client 88.8.174.81] Premature end of script headers: oxmarconfirmallocationp.cgi, referer: http://d5593089-83281.srv-hostalia.com/ ... ationp.cgi
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


He mirado la línea 120 y corresponde al final de la subrutina "convert line from text to array" donde pone algo que para mi es chino.

No tengo claro exactamente cuál es la línea 120. También podría ser el inicio de la subrutina siguiente:

#---determine time-----------

. No sé. En cualquier caso en estas líneas yo no he modificado nada :? :? :? :( :( :oops: :oops:

Siento abusar de vuestra paciencia. Estoy pendiente de la respuesta del autor inglés que en un primer mensaje ha sido muy amable y me ha dicho que le envíe los logs que se lo mirará. Por lo que veo los aficionados al perl sois todos muy amables. Os mantengo informados.
Gracias.
Salvador BCN
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2018-01-06 14:31 @646

Re: Petición de ayuda. Colaboración para un proyecto

Notapor explorer » 2018-01-09 07:35 @358

Debe editar las líneas 120 y 637 y cambiar

&Erromessage

por

&Errormessage

(sí, falta una 'r').

Para que Perl ayude a identificar errores, lo normal es colocar

use warnings;

al principio de los programas. Si colocamos esa sentencia en las líneas 2 de los dos cgi, salen estos avisos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
explorer@Arcanus:~/Documentos/Desarrollo/oxmar > perl -c oxmarconfirmallocation.cgi
Name "main::pagetitle" used only once: possible typo at oxmarconfirmallocation.cgi line 501.
Name "main::isdst" used only once: possible typo at oxmarconfirmallocation.cgi line 168.
Name "main::now" used only once: possible typo at oxmarconfirmallocation.cgi line 167.
Name "main::wday" used only once: possible typo at oxmarconfirmallocation.cgi line 168.
Name "main::contents" used only once: possible typo at oxmarconfirmallocation.cgi line 497.
Name "main::yeartime" used only once: possible typo at oxmarconfirmallocation.cgi line 168.
Name "main::textforadmin" used only once: possible typo at oxmarconfirmallocation.cgi line 451.
Name "main::sec" used only once: possible typo at oxmarconfirmallocation.cgi line 168.
Name "main::mday" used only once: possible typo at oxmarconfirmallocation.cgi line 168.
Name "main::mon" used only once: possible typo at oxmarconfirmallocation.cgi line 168.
Name "main::subjectlineforadmin" used only once: possible typo at oxmarconfirmallocation.cgi line 450.
Name "main::outcome" used only once: possible typo at oxmarconfirmallocation.cgi line 21.
Name "main::yday" used only once: possible typo at oxmarconfirmallocation.cgi line 168.

Name "main::sec" used only once: possible typo at oxmarallocation.cgi line 33.
Name "main::pagetitle" used only once: possible typo at oxmarallocation.cgi line 63.
Name "main::hour" used only once: possible typo at oxmarallocation.cgi line 33.
Name "main::min" used only once: possible typo at oxmarallocation.cgi line 33.
Name "main::month" used only once: possible typo at oxmarallocation.cgi line 8.
Name "main::now" used only once: possible typo at oxmarallocation.cgi line 32.
Name "main::filepathforallocationsarchive" used only once: possible typo at oxmarallocation.cgi line 24.
Name "main::yday" used only once: possible typo at oxmarallocation.cgi line 33.
Name "main::isdst" used only once: possible typo at oxmarallocation.cgi line 33.
Name "main::daydate" used only once: possible typo at oxmarallocation.cgi line 7.
Name "main::filepathforallocations" used only once: possible typo at oxmarallocation.cgi line 23.
Name "main::administratoremail" used only once: possible typo at oxmarallocation.cgi line 20.
Name "main::year" used only once: possible typo at oxmarallocation.cgi line 9.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

O sea, que hay varios puntos que hay que mirar.

Esto es lo que he averiguado:
En oxmarallocation.cgi:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Línea Problema                                                                                         Solución
-----+-------------------------------------------------------------------------------------------------+------------------------------
    7 La variable $daydate no se usa en todo el programa                                                Quitar o comentar la línea
    8 La variable $month no se usa en todo el programa                                                  Quitar o comentar la línea
    9 La variable $year no se usa en todo el programa                                                   Quitar o comentar la línea
   20 La variable $administratoremail no se usa en todo el programa                                     Quitar o comentar la línea
   23 La variable $filepathforallocations no se usa en todo el programa                                 Quitar o comentar la línea
   24 La variable $filepathforallocationsarchive no se usa en todo el programa                          Quitar o comentar la línea
   32 La variable $now no se usa en todo el programa                                                    Quitar o comentar la línea
   33 Las variables $sec, $min, $hour, $yday y $isdst no se usan en todo el programa                    Cambiarlas por la función undef
   63 La variable $pagetitle no se usa en todo el programa                                              Quitar o comentar la línea
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


En oxmarconfirmallocation.cgi:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Línea Problema                                                                                         Solución
-----+-------------------------------------------------------------------------------------------------+------------------------------
   21 La variable $outcome no se usa en todo el programa                                                Quitar o comentar la línea (?)
  167 La variable $now no se usa en todo el programa                                                    Quitar o comentar la línea
  168 Las variables $sec, $mon, $mday, $wday, $yday, $yeartime y $isdst no se usan en todo el programa  Cambiarlas por la función undef
  450 La variable $subjectlineforadmin no se usa en todo el programa                                    ¿Error del programa?
  451 La variable $textforadmin no se usa en todo el programa                                           ¿Error del programa?
  497 La variable $contents no se usa en todo el programa                                               ¿Error del programa?
  501 La variable $pagetitle no se usa en todo el programa                                              Quitar o comentar la línea
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Además, he visto que la subrutina mail() no está declarada por ningún lado, así que me temo que el programa nunca envía ningún correo. Si quiere recibir correos, debe preguntar a Hostalia, o debe mirar en su panel de control de servicios, en la parte de CGI o Perl, con qué módulos cuenta para poder enviar correos electrónicos desde un cgi.

Da la sensación de que este código está a medio terminar o que nunca se ha usado realmente.

Por favor, preste también atención al archivo oxmarhtmlform.html: Debe cambiar toda referencia a [email protected] por su propia dirección de correo o la dirección de correo donde se quiere recibir estos mensajes.

Yo podría encargarme de rehacer estos códigos, pero estamos limitados por los recursos de los que disponga Hostalia. Yo ahora mismo no tengo acceso a esa información, ninguna cuenta en Hostalia, así que no puedo decir más. Si desea comunicarse conmigo de forma más privada, mándeme un mensaje (privado).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Petición de ayuda. Colaboración para un proyecto

Notapor Salvador BCN » 2018-01-10 10:27 @477

Apreciado explorer.

Muchas gracias por tu interés y ayuda. La verdad es que es difícil de entender este tema. Los scripts en cuestión son documentos complementarios de una publicación científica de un profesor de la Universidad de Oxford. El artículo, del que tienes el enlace en mi primer mensaje, afirma que el sistema es totalmente operativo y exportable a cualquier entorno web hechas las modificaciones que las notas a lo largo del script proponen (fundamentalmente los enlaces y las direcciones de correo electrónico). El autor con el que llevo intercambiando correos desde hace unos días también me ha dicho a mi que los scripts son operativos y que el problema debe ser de mi servidor (?). En resumen, quiero pensar que el problema está en que este profesor es un poco despistado (es muy amable y ha respondido a todos mis correos de forma inmediata y supercorrecta). Pienso que puede haber colgado unos scripts equivocados y le he pedido que me envíe los correctos. A ver qué dice.

Lo cierto es que el sistema que yo quiero montar aquí funciona perfectamente en su servidor en Oxford. He hecho la trampa de poner el primer script en Hostalia y redirigirlo a la dirección de la Universidad de Oxford que figura en la versión original que el autor facilita. Realmente funciona perfecto. Puedes probarlo, es un entorno de pruebas. Pones tu correo, un nombre inventado, la edad del paciente y el sistema te sortea al paciente, te lo adjudica a un grupo de estudio y te envía un correo de confirmación. Este es el enlace al primer script en Hostalia que luego salta a Oxford al confirmar su primera respuesta.
[url]elimindo por queja desde Oxfordl[/url]

Por cierto, los datos del servidor de correo perl de Hostalia están en la web sin ningún problema.

Un saludo. Ya te explicaré.

Salvador.
Última edición por Salvador BCN el 2018-01-10 16:47 @741, editado 1 vez en total
Salvador BCN
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2018-01-06 14:31 @646

Re: Petición de ayuda. Colaboración para un proyecto

Notapor explorer » 2018-01-10 13:36 @609

No me refiero solo a los datos del correo Perl, sino también a saber qué módulos dispone Hostalia y que podemos usar en nuestro provecho.

Podemos saberlo instalando este cgi:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. #
  3. # Lista de módulos instalados, usando el comando cpan
  4. #
  5. use CGI       qw(:standard      );
  6. use CGI::Carp qw(fatalsToBrowser);
  7.  
  8. print
  9.     header,
  10.     start_html('Lista de modulos'),
  11.     h1('Lista de módulos'),
  12.     hr;
  13.  
  14. my $salida = qx(cpan -l);
  15.  
  16. print pre($salida);
  17.  
  18. print
  19.     hr,
  20.     p("Versión de Perl: $^V"),
  21.     ;
  22.  
  23. print end_html;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Si no sale nada, es que el comando cpan no está instalado en el sistema, así que hay que probar otra cosa.

Esta es otra versión que puede darnos esa información:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. #
  3. # Lista de módulos instalados, usando el módulo File::Find
  4. #
  5. use CGI       qw(:standard      );
  6. use CGI::Carp qw(fatalsToBrowser);
  7. use File::Find 'find';
  8. use File::Spec::Functions;
  9.  
  10. print
  11.     header,
  12.     start_html('Lista de modulos'),
  13.     h1('Lista de módulos'),
  14.     hr;
  15.  
  16.  
  17. my $salida;
  18.  
  19. find(
  20.         {
  21.                 wanted => sub {
  22.                         if (/\.pm\z/) {
  23.                                 $salida .= canonpath $_;
  24.                                 $salida .= "\n";
  25.                         }
  26.                 },
  27.                 no_chdir => 1,
  28.         },
  29.         @INC
  30. );
  31.  
  32.  
  33. print pre($salida);
  34.  
  35. print
  36.     hr,
  37.     p("Versión de Perl: $^V"),
  38.     ;
  39.  
  40. print end_html;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

La intención es saber si hay algún módulo que facilite el envío de correos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Petición de ayuda. Colaboración para un proyecto

Notapor Salvador BCN » 2018-01-10 14:10 @632

Ninguno de los dos cgi para preguntar por los módulos funciona. (El testperl y el test.cgi, sí).

Lo que sí he visto es que hay un menú para añadir controladores. Instalados solo salen el cgi-script y el server-parsed, ¡que no tengo ni idea de qué es! :oops: :oops: :oops:
Las características del alojamiento básico Hostalia las pongo aquí; más abajo está la ruta a sendmail.
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Opciones básicas:

Implementación de PHP Shared hosting PHP 7.1 (7.1.12)
Soporte de CGI Encendido
Soporte de SSL  Encendido
Documentos de error Encendido
Estadísticas web de Webalizer Encendido
Soporte de WAP Encendido
La finalidad del subdirectorio "webspace/cgi-bin" que encontrará en su directorio de inicio es para guardar sus archivos cgi.

Rutas y Versiones:

Versión de Perl        5.8.1.
Ruta a Perl     /usr/bin/perl
GID     48
Extensiones Soportadas          .pl, .cgi
Versión de Python      2.2.3
Ruta a Python           /usr/bin/python
Extensión Soportada    .py
Ruta a Sendmail         /usr/sbin/sendmail
Sistema Operativo       RedHat Linux
Directorio CGI          /cgi-bin/
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


La URL a sus CGI es la siguiente: http://domainname/cgi-bin/cgi-script

Reemplace “domainname” por el nombre real de su dominio y “cgi-script” por el nombre del script.

Quedo pendiente de ver si el profesor me envía los cgi correctos.

Gracias por tu ayuda.
Salvador.
Salvador BCN
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2018-01-06 14:31 @646

Siguiente

Volver a Proyectos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados