Usar BennuGD como PHP

Started by KeoH, January 15, 2013, 07:21:11 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

KeoH

Que nadie se asuste!!! no sabia que titulo ponerle al topic!!


Bueno os cuento .. esta tarde cuando venia de la facultad, y despues de hacer un examen que me ha dejado medio loco .. se me ocurrió ... ¿se puede servir sites web con bennu al igual que hace php, python o ruby?. Hace tiempo que estoy coqueteando con el tema de paginas webs. Estoy con python y el framework Django, pero también he tonteado con Node.js, Ruby on Rails y un poco de PHP.


Hace tiempo leyendo sobre php me enteré que en sí es un triste ejecutable, al cual le pasas como parámetro un archivo *.php y te lo renderiza como texto plano una vez ejecutados los scripts y demás (he simplificado mucho la explicación xDDDD recordad que soy economista jajajaja). El tema es que se me ocurrió que se podría hacer algo así con bennu. Se podría montar muy simplemente unas cuantas funciones muy sencillas que lean un archivo parecido a php (un .bgd por ponerle extensión xDD) que tenga la estructura de pagina web (o una plantilla o algo así) y que bennu devuelva el html renderizado estupendamente para ser enviada al usuario para verlo en el navegador.


Antes de que me colguéis por mis blasfemias ... solo estoy teorizando!!! xDDD no digo que me vaya a poner a hacer un framework para bennu del estilo de Django. Pero me preguntaba si actualmente esto es posible hacerlo?. Bennu necesitaría librerías de red mas potentes supongo. Que soporten múltiple concurrencia de usuarios y sockets y toda esta parafernalia de la cual no tengo idea xD.


Weno .. aqui dejo la idea .. a ver que os parece el tema .. Si ejecuto el interprete bgdi .. y le paso un primer parámetro con el dcb del "framework" ... le puedo pasar un segundo parámetro que sea el nombre del archivo que quiero que renderice? ¿como gestiono con código bennu ese dato pasado como segundo parámetro?


Ya podeis ponerme a parir :P

SplinterGU

ya lo hice yo hace mucho tiempo... creo que lo hice en fenix y luego en bennugd... y lo puse por ahi...

podes hacer muchas cosas... primero necesitas un servidor que atienda los requerimientos... y multiples clientes... eso lo hice en fenix...

luego podes usar el bgdrtm o bgdi (como fastcgi) como scripting muy simplemente y generar una salida con say... e incluso puedes usar un servidor apache para esto... y tenes un monton de .dcb que podes ejecutar e incluso podrias compilarlos online.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

Y como se haría para escuchar puertos y demás ? de momento la idea es montar un servidor local .. una cosa sencilla .. ¿que funciones se usarían?

SplinterGU

creo que con la libsock o algo asi... no recuerdo como se llama...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

Splinter .. si en una aplicacion bennu .. no uso el mod_video ..ni hago set_mode ni nada de eso .. puedo usarla como si fuera una aplicación de consola no? aunque no tenemos funciones que lean datos que meta el usuario desde el teclado en plena ejecución no? las salidas si las hago a base de says.

Drumpi

Sí que las hay: la key() reconoce si está pulsado algún botón. Lo único que hay que hacer es un bucle usando la variable global predeterminada ASCII para ver qué letra se introduce, y añadirla a una string, hasta que se detecte el caracter 13 (intro) que rompe el bucle.
También tienes entradas de argumentos, mediante las variables globales predefinidas ARGC y ARGV, y con la libsock entrada de datos en red.

Y sí, se pueden hacer aplicaciones de consola sin problemas... hasta que uses una función que use gráficos, que entonces tendrás la ventanita en negro. Yo tengo varias: para unir mapas de tiles, para obtener el valor de una función que no sé, de testing de velocidad de cálculo...
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Drumpi

Mira, de hecho, aquí tengo el código, que he estado esta tarde trabajando con él
loop
        letra=ascii;
        if (letra!=letra_ant)
            switch (letra)
                //case 0: end
                case 8:  //borrar
                    if (editor_nombre_mapa!="")
                        editor_nombre_mapa=substr(editor_nombre_mapa,0,-1);
                    end
                end
                //teclas que no deben hacer nada
                case 9:  //tabulador
                end
                case 13: //intro
                    break;
                end
                //por defecto debe escribir
                default:
                    editor_nombre_mapa=editor_nombre_mapa+chr(letra);
                end
            end
        end
        letra_ant=letra;
        frame;
    end


letra y letra_ant son enteros. Editor_nombre_mapa es una string.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

KeoH

Voy a hacer unas pruebas a ver que me sale ...


PD: Primer problema .. la libreria esta fsock esta pa linux .. pero no esta compilada xDD a ver como mierda la uso jajajaj joer

SplinterGU

si, keoh como has dicho... lo que dice drumpi no funciona, no puedes usar la mod_key sin mod_video... (o libvideo)...

drumpi, la idea es hacerlo sin ventana.

pero igual no tiene sentido porque una aplicacion php desde un servidor no tiene input de teclado... es el servidor quien hace el input desde el html y lo envia como un request...

los fastcgi capturan la salida del stdout (lo que saca say en bennugd) y lo redireccionan por el canal de comunicacion y llega al browser...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

Si, php desde el servidor no usa la captura del teclado .. pero .. abramos un poco el campo xDDD no solo para eso .. sino para otro tipo de aplicación de consola ... como se haría para capturar el teclado? xD

SplinterGU

Quote from: KeoH on January 15, 2013, 10:19:30 PM
Si, php desde el servidor no usa la captura del teclado .. pero .. abramos un poco el campo xDDD no solo para eso .. sino para otro tipo de aplicación de consola ... como se haría para capturar el teclado? xD

si una ventana no se puede... y tampoco creo sea lindo una aplicacion bajo SDL... por eso era que yo cree la mod_ffi, que no tuvo exito... para poder usar widgets y demas librerias del operativo...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

Weno .. sigo haciendo pruebas xDD ... he conseguido compilar la fsock ... ya tengo mi maravilloso fsock.so ... estoy probando los prg que vienen con la libreria de ejemplo .... pero no encuentra la fsock ... he probado hasta a meterla en el directorio donde bennu tiene las otras librerias dentro de '/usr/local/share/bennugd/lib/' y nada .. no la encuentra :( Guíame Maestro ...

alex

#12
sudo ldconfig
Y vuelves a probar los ejemplos, si ko te funciona, es error de la compilacion. (antes de la orden por consola que te he dicho, mete la libreria con las demas de bennugd)
Jolin, que fallo al explicar, para quee te funcione lo anterior renombra la fsock.so con libfsock.so o creas un enlace hacia la fsock con el nombre quee ya he dicho antes.

Edit: no entiendo mucho, me suena a chino xD, pero la idea que dice keoh me parece buena la del principio. Lo del codigo que no funciona sin setmode, no os entiendo, usas el say??? Bueno, los novatos mejor que se retiren y que charlen los profesionales.