• Publicidad

Aclaración http::server::simple

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Aclaración http::server::simple

Notapor decodito » 2013-07-20 04:12 @216

Buenos días.

Quiero realizar una aplicación de escritorio basada en web, como si de una página web se tratara, pero en local.

No quiero instalar ningún servidor web en mi máquina.

He leído algo sobre http::server::simple pero los ejemplos que he visto no me aclaran la duda de si con este módulo se podría crear un mini servidor en localhost que aceptara cgi y ejecutarlos, o si habría otro módulo que cubriera mis necesidades, que son:

* Crear un mini servidor web en donde ejecutar código html desde el navegador e interprete mis programas en cgi.

He visto cosas como perl-web-server pero no me convencen, me gustaría que quedara todo más integrado en mi programa y poder hacerlo yo mismo con los módulos de CPAN.

¿Podrían indicarme si esto se puede hacer con el módulo arriba indicado, para seguir investigando o ver otros caminos?

Muchas gracias.
decodito
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2013-07-14 05:04 @253

Publicidad

Re: Aclaración http::server::simple

Notapor explorer » 2013-07-20 10:19 @472

Bueno, el hacer una aplicación web aislada, se puede resolver con XUL. Ejemplo:
Imagen

En Perl existen algunos módulos para interactuar con XUL, o incluso hacer una aplicación entera con Perl: XUL::Gui (Manual, Tutorial).

Otra opción es la de que la aplicación levante un servidor web local, y el usuario use el navegador web como interfaz con la aplicación, como comentas en la pregunta. En CPAN hay unos cuántos módulos para crear un servidor local, siendo HTTP::Server::Simple uno de los más famosos. Realmente, se usará HTTP::Server::Simple::Static para servir archivos estáticos (desde páginas HTML, códigos JavaScript, estilos CSS, imágenes, etc.), y HTTP::Server::Simple::CGI para el contenido dinámico. Al principio de la documentación de HTTP::Server::Simple hay un ejemplo. Ejemplo sencillo.

Otros módulos Perl: HTTP::AppServer y HTTP::Server::Singlethreaded (este último, parece que está sin terminar la parte de CGI).

Soluciones más modernas: hypnotoad, para aplicaciones hechas con Mojolicious (ejemplo); y Starlet y Starman, para el caso de hacer aplicaciones con el protocolo PSGI.

Ten en cuenta algo importante: los clientes web suelen hacer más de una petición simultánea a la hora de pedir contenido estático (bajar varias imágenes o código css o JavaScript, para aumentar la velocidad de bajada total de la página), y eso implica que el servidor web debe ser capaz de servir varias peticiones a la vez. Al hacer pruebas con H:S:S, es posible que algunos contenidos se pierdan. En ese caso, se puede usar HTTP::Server::Simple::CGI::PreFork.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Aclaración http::server::simple

Notapor decodito » 2013-07-21 05:27 @268

Lo primero, gracias por toda la documentación que has mandado, me ha ayudado muchísimo.

He estado leyendo todo lo que me has ofrecido y:

Me he empapado bastante del proyecto de XUL, el cual desconocía, y la verdad, lo veo genial para lo que me gustaría hacer.

Por un lado XUL se sale de mi propósito, que al ser con fines de aprendizaje, me aparta un poco del tema de aprender Perl bien, haciendo cosillas, que es mi intención, aunque me ha gustado lo que he leído sobre XUL::Gui y creo que voy a decantarme por ello.

Por otro lado, levantar un servidor HTTP en mi máquina a través de Perl, me parece un poco ofuscado por las limitaciones del lenguaje (aquí me has abierto los ojos volviendo al tema de XUL), instalaría un servidor HTTP como dios manda en el caso de no usar XUL ni HTTP::Server:Simple o los otros módulos mencionados.

Gracias de nuevo por la respuesta.
decodito
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2013-07-14 05:04 @253

Re: Aclaración http::server::simple

Notapor explorer » 2013-07-21 10:18 @471

Me alegro que le quieras dedicar un tiempo a XUL. Las centenares de extensiones que existen para Firefox es buen ejemplo de una tecnología perfectamente válida, independiente del sistema operativo, multiplataforma, fácil de instalar, y sin licencias propietarias. Tu aplicación estará ligado a la tecnología de la Fundación Mozilla, lo cual también es una buena garantía de continuidad en el tiempo.

En cuanto a lo de ofuscación por limitación del lenguaje, creo que estás muy equivocado. En Perl, se puede crear un servidor HTTP local con solo UNA línea de programa:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ perl -MIO::All -e 'io(":8080")->fork->accept->(sub { $_[0] < io(-x $1 ? "./$1 |" : $1) if /^GET \/(.*) / })'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
(permite sacar contenido estático y dinámico. Explicación) Claro, la potencia del lenguaje hace aparecer ofuscado un código, si no conocemos el lenguaje. Cuanto más simples sean tus necesidades, Perl te permite resolverlas de forma fácil. Si aumentan las necesidades, Perl va respondiendo a la par (aumentando la complejidad), como cualquier otro lenguaje.

Con Mojolicious, incluso es más fácil. Con Mojolicious::Lite puedes crear una aplicación web entera, incluyendo su propio servicio web local. Pero también se dispone de servidor de desarrollo (morbo, que recarga la aplicación de forma automática), o Hypnotoad (un servidor web completo). Todo depende de las necesidades de la aplicación (ver Despliegue en la documentación de Mojolicious. También hay un apartado para aplicaciones incrustadas).

Bueno, digo que es fácil, siempre y cuando te aprendas su nomenclatura, pero esto es lo que pasa con los entornos de trabajo: cada uno tiene la suya.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 10 invitados