Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   De los mismos creadores de pico llega ... (https://www.clubdelphi.com/foros/showthread.php?t=42308)

seoane 16-04-2007 13:32:35

Bueno, veo que pocos lo han bajado (unas 5 personas) y como nadie dice nada, supongo que nadie lo ha probado :( Ya se que este foro no es el mas adecuado para hablar de C y menos sobre linux, pero me gustaría saber si el programa compila bien en otras distribuciones de linux y si funciona bien.

Así que si alguien tiene linux y dispone de un poco de tiempo, me gustaría que lo bajase y lo probase. Y mejor si bajáis la ultima versión, porque como podéis ver en el primer mensaje de este hilo he hecho algunos cambios.

dec 16-04-2007 13:38:14

Hola,

Bueno. Ahora mismo estoy con Windows, empero, prometo probarlo la próxima vez que cambie a Linux... que está en otro disco duro, es cuestión de "cambiar uno por otro". Más que nada para poderte decir que sí, que todo va como se espera Seoane. :)

Casimiro Noteví 16-04-2007 14:28:14

En cuanto llegue a casa lo pruebo.

En cuanto llegue a casa y me 'zampe' la comida. :D

dec 16-04-2007 16:34:21

1 Archivos Adjunto(s)
Hola,

Bueno. Ya he tratado de probar Pico en Debian Etch. No puedo compilarlo... bien porque no sé, bien porque algo "falla" en mi sistema. Estos son los comandos que ejecuto y los mensajes de error que recibo, por cierto que los mismos si lo hago como "root" como si no:

Cita:

(ver más abajo)
Y la cosa es que tampoco puedo ejecutar Pico, o no sé hacerlo, ya digo. Si escribo "pico", sencillamente, se me inicia el editor "GNU Nano"... y si escribo "sh pico" esto es lo que hay:

Cita:

(ver más abajo)
Seguramente no será un problema de Pico, que funciona bien en Windows y a ti te funciona Seoane... más bien se diría, en cuanto al primer problema (no puede compilarse) que algo falta en mi sistema. En cuanto al segundo problema... ahí esto todavía más perdido: el archivo tiene permisos de ejecución... pero ya ves qué ocurre... :)

Nota: Tengo que adjuntar los "mensajes de error" en un archivo porque el sistema de seguridad de los Foros impide que lo copie en el propio mensaje. Por cierto, el archivo que adjunto es un archivo de texto: cámbiese la extensión de ZIP a TXT. :)

seoane 16-04-2007 16:43:42

Vamos por partes, para compilarlo solo tienes que situarte en el directorio donde esta el código y teclear:
Código:

make
El programa make se encargara de buscar el archivo Makefile y compilara el programa. En cuanto a ejecutar la aplicación, vuelve a situarte en el directorio y teclea:
Código:

./pico
El "./" es importante, si no linux no entenderá que es un ejecutable.

Y por ultimo siempre te queda hacer doble click sobre el :D

dec 16-04-2007 17:33:23

Hola,

Bueno. Lo del "make" no lo sabía. Me la apunto Seoane. En cuanto al doble clic no parece que funcione... por un lado. Ahora bien, resulta que no tengo el "gcc" instalado, de modo que lo estoy instalando...

Tengo algún problema, así que paso los resultados de ejecutar Pico, esta vez con el "./":

Cita:

dec@decone:~/Desktop/pico$ ./pico
./pico: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.4' not found (required by ./pico)
dec@decone:~/Desktop/pico$
Creo que se trata de que no tengo "GLIB", que resulta que al instalar el "gcc" se ha de incluir también... ahora estoy terminando de instalar el "GCC", junto con las dependencias que creo evitarán el anterior problema...

A ver. Recapitulemos. Una vez instalado el "gcc" he podido compilar Pico sin problemas. Antes de eso no podía ejecutar Pico (el ejecutable que tú incluyes Seoane), puesto que me aparecería el error susomentado.

Al compilar Pico en mi sistema (ya digo, luego de instalar el "gcc") sí que he podido ejecutar Pico perfectamente. Es decir, que he podido ejecutar el Pico que yo he compilado en mi sistema: ¡y funciona como se espera, ahí está escuchando! :)

Edito: Una cosilla Seoane, no sé si será útil o qué. Resulta que me he percatado de que si ejecuto varias veces Pico (lo he hecho al hacer las pruebas sin darme cuenta) cuando al cabo cierra la consola desde donde lo inicio al menos un proceso de Pico sigue funcionando.

No sé. Lo primero que se me ocurre es que no se permitan más instancias de Pico... pero esto me parece que no es una solución... no sé... :)

seoane 16-04-2007 17:47:31

El problema era debido a que estaba compilado con una versión diferente de la que tu tienes instala en tu sistema. Al volverlo a compilar, ya se adapto. Esta es una de las razones por las que los programas en linux se distribuyen en código fuente, así se pueden adaptar a cada sistema al compilarlos.

Cita:

Empezado por dec
Lo del "make" no lo sabía. Me la apunto Seoane

Bueno niños, hoy hemos aprendido que "make" sirve para compilar y que para ejecutar un programa que no este en el PATH tenemos que indicar un directorio, ya sea la ruta completa o './' :p :D ;)

seoane 16-04-2007 17:52:32

Cita:

Empezado por dec
No sé. Lo primero que se me ocurre es que no se permitan más instancias de Pico... pero esto me parece que no es una solución... no sé... :)

Bueno, en principio solo se puede ejecutar una, ya que si usan el mismo puerto, al intentar ejecutar la segunda te dará una fallo mas o menos así:
Código:

[11618] bind(): Address already in use
Por otra parte no debería de quedar nada abierto al cerrarse, de hecho, si quedara el propio sistema operativo se encargaría de matarlo. Lo que me parece que paso es que hiciste doble click sobre el archivo y se quedo ejecutando en segundo plano, oculto, y ese es el que ves en la lista de tareas.

dec 16-04-2007 17:55:39

Hola,

Pues así es la verdad. Habría jurado que probé a navegar con Pico luego de haber hecho doble clic... y de ahí que dijese que no funcionaba (en mi sistema), pero, compruebo ahora que sí, que al hacer doble clic Pico se ejecuta como se espera. :)

Efectivamente, al hacer de nuevo doble clic Pico no se ejecuta (terminará con error, pero este no se muestra) y al intentar ejecutar Pico de nuevo (esta vez desde la consola) aparece el error que mencionas Seoane.

O sea. Que bien. :D

seoane 16-04-2007 17:57:50

Por cierto dec, muchas gracias por probarlo.

dec 16-04-2007 17:59:25

Hola,

Nah, hombre, no hay de qué, ha sido un placer y he aprendido algos (como lo de Make, por ejemplo). Ahora que me gustaría meterme un poco más, pero, me temo que hoy por hoy es pensar en lo excusado. Todavía con Pico (en Delphi) he hecho alguna cosilla... o por mejor decir he tratado de hacerla, pero, nada del otro mundo... nada publicable. :)

Casimiro Noteví 16-04-2007 20:04:02

Pues nada, ya he comido, un poco tarde :( y me he puesto a probar el ya famoso 'pico' :).
Veamos:
Cita:

descargar el zip
extraerlo
abrir la consola de líneas de comandos
cd /home/casimiro/pico
make
./pico
desde firefox: localhost:1978
navegar por los directorios
ver algún pdf
cerrar firefox
abrir una xubuntu virtualizada para simular una conexión por red local
abrir firefox
desde firefox: http://192.168.1.2:1978
navegar por los directorios
ver algún documento
cerrar firefox
ctrl-c para cerrar el 'pico'
Resultado: perfecto.


P.d: al conectar sale siempre al principio: favicon not found, no sé qué será:
Cita:

[7222] GET / HTTP/1.1
[7222] GET / favicon.ico HTTP/ 1.1
[7222] Not Found
[7222] GET / tmp/ HTTP/ 1.1

seoane 16-04-2007 20:17:30

El favicon segun la wikipedia:
Cita:

Empezado por Wikipedia
Favicon (Término reducido de la palabra inglesa Favorites icon), también conocido como icono de página, es un icono asociado a una página web concreta. Un diseñador web puede crear este icono y muchos navegadores gráficos pueden usarlos. Los navegadores que permiten esta función suelen mostrar el icono junto a la barra de direcciones, al lado del nombre de la página web en la lista de favoritos y en los títulos de las páginas. Estos iconos son de tamaño 16x16, y de extensión .ico los favicon pueden ser creados a partir de un archivo .png, y algunos pueden ser de 32 bit, 16 bit y algunos soportan transparencia alfa. Algunas aplicaciones pueden hacer los favicon automaticamente (Ejemplo: GoLive)

En ingles dan mas explicaciones: http://en.wikipedia.org/wiki/Favicon

El caso es que los navegadores que soportan el favicon, lo que hacen es intentar pedirlo cada vez que se conectan a un servidor, y si no lo encuentran, como en este caso, pues no muestran nada. Si alguno tiene un servidor web y revisa su archivo log vera como hay un montón de peticiones del famoso archivo favicon.ico

Caramba, la de cosas que estamos aprendiendo hoy :p :D

Muchas gracias Casimiro por probarloo :)

Casimiro Noteví 16-04-2007 20:23:48

Cita:

Empezado por seoane
Caramba, la de cosas que estamos aprendiendo hoy :p :D
Muchas gracias Casimiro por probarloo :)

De nada, por cierto, también lo he probado desde un windows 'real' y no virtualizado de mi red local y también funciona perfecto.
Además me ha servido para averiguar que tengo el puerto 1978 abierto en el ubuntu, bueno, realmente, todos los puertos, no me había fijado que no tengo firewall activado ni nada de nada :eek:

seoane 16-04-2007 20:30:20

Cita:

Empezado por Casimiro Notevi
Además me ha servido para averiguar que tengo el puerto 1978 abierto en el ubuntu, bueno, realmente, todos los puertos, no me había fijado que no tengo firewall activado ni nada de nada :eek:

Creo que eso es "habitual", la gente se confía con eso de que linux es seguro y no se preocupa de andar cerrando puertos. Yo estoy igual que tu y la verdad me da pereza andar configurando nada, de todas formas estoy detrás de un router así que nadie puede acceder a esos puertos desde internet. Eso si en cuento me anime un poco, me van a prestar documentación sobre iptables y me pongo con eso.

DarkMan 17-04-2007 20:11:38

Me acabo de descargar pico y lo he probado en mi distribución Mandrake, he de decir que funciona perfecto. Como bien dicen por ahi es muy facil de usar(y tanto...) y seguramente me sea útil porque estoy continuamente desplazandome.

Enhorabuena por el buen "juguetito" que has hecho seoane:)

seoane 22-04-2007 01:03:28

Bueno, yo sigo jugando. Ahora buscando un poco de seguridad me he fijado en xinetd. Xinetd es un demonio presente en muchos sistemas tipo Unix que gestiona las conexiones de varios demonios. La ejecución de una única instancia de Xinetd reduce la carga del sistema, en comparación con lo que significaría ejecutar cada uno de los demonios que gestiona, de forma individual. Cuando una petición llega a nuestro equipo, a uno de los puertos controlados por el, ejecuta una instancia del programa encargado de manejar esa conexión. Por ejemplo, en el caso de pico, cuando alguien se conecte al puerto 1978 xinetd ejecutara una instancia de nuestro programa para que se encargue de esa conexión, una vez cerrada la conexión nuestro programa también se cierra.

Además de la ventaja de no tener el programa siempre funcionando, xinetd nos ofrece un montón de ventajas mas, como pueden ser:
  • Limitar el acceso desde determinados hosts.
  • Limitar el numero de conexiones simultaneas.
  • Limitar el acceso según la hora.
  • Prevenir los ataques de denegación de servicio.
  • Crear archivos log
  • etc ...

He modificado levemente el programa para que funcione con xinet, puedes bajarte el zip con el programa del primer mensaje de este hilo. Ahora para ejecutar pico de forma compatible con xinet utiliza el parametro "--inetd", algo asi:
Código:

/usr/bin/pico --inetd
Ahora ya solo nos falta configurara xinetd. Para eso vamos a crear un fichero de texto en el directorio "/ etc/xinetd.d". Algo así:

"/ etc/xinetd.d/pico"
Código:

service pico
{
    disable        = no
    port            = 1978
    socket_type    = stream
    protocol        = tcp
    wait            = no
    user            = seoane
    server          = /usr/bin/pico
    server_args    = --inetd
    instances      = 15
    nice            = 10
    type            = unlisted
}

Estamos suponiendo que el usuario que queremos usar es seoane, y que pico esta en el directorio "/usr/bin". Otras cosas interesantes son que hemos limitado el numero de instancias que se pueden ejecutar de forma simultanea, y hemos bajado su prioridad para que no consuma muchos recursos.

Para que esta nueva configuracion tenga efecto tenemos que reiniciar el servicio xinetd. Asi que ejecutamos el siguiente comando:
Código:

/ etc/init.d/xinetd restart
Una vez reiniciado el demonio, ya podemos acceder a nuestro servidor web como lo hacíamos antes http://127.0.0.1:1978 o http://tuip.com:1978

En la pagina de xinetd o en esta otra , puedes encontrar mas información sobre como limitar el acceso y demás opciones de configuración.


La franja horaria es GMT +2. Ahora son las 08:09:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi