Autor Tema: Sugerencias de nuevos modulos  (Leído 8057 veces)

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5671
  • Karma: 127
    • GECA soft
Re: Sugerencias de nuevos modulos
« Respuesta #15 en: Septiembre 27, 2011, 01:54:29 pm »
Otra sujerencia mas adicionada a la lista

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5671
  • Karma: 127
    • GECA soft
Re: Sugerencias de nuevos modulos
« Respuesta #16 en: Septiembre 27, 2011, 02:06:34 pm »
Con la existente openCV parece que se podria
 
http://opencv.willowgarage.com/wiki/FaceDetection

osk

  • Hero Member
  • *****
  • Mensajes: 516
  • Karma: 52
Re: Sugerencias de nuevos modulos
« Respuesta #17 en: Septiembre 27, 2011, 09:53:06 pm »
Para lo de los botones y eso ¿no estaba la GUI_SO?

Prg

  • Hero Member
  • *****
  • Mensajes: 1569
  • Karma: 140
    • Mi pagina
Re: Sugerencias de nuevos modulos
« Respuesta #18 en: Septiembre 27, 2011, 10:49:26 pm »
Para lo de los botones y eso ¿no estaba la GUI_SO?

auch, ahorita que hablan de eso debo subir los nuevos cambios... Una vez que terminen los exámenes, y a ver cómo arreglo lo de los punteros a string.

Sobre lo del servidor en el bennupack (como dice l1nk3rn3l) viene el ejemplo que Splinter comenta. En la parte de fsock en el webserver... Nunca lo he estudiado pero por la descripción parece que es lo que comentan.

Citar
/* Ejemplo usando fsock dll
Mini Fenix WebServer by SplinterGU
*/
PROGRAM WebServer;


global
    clients=0;

    logfd;

    DocumentRoot = "webpages";
    AccessLog = "logs/access.log";

begin

    full_screen=false;

    set_title("Mini Fenix WebServer");

    fsock_init( 0 ); // Inicializamos la librería fsock

    write(0,5,5,0,"Clients:");
    write_var(0,5+text_width(0,"Clients:"),5,0,clients);

    server_thread();

end;

function log(string slog)
private
    strint str;
begin
    logfd = fopen(AccessLog, O_RDWR);
    if (!logfd)
        logfd = fopen(AccessLog, O_WRITE);
    end
    fseek(logfd, 0, SEEK_END);
    fputs(logfd,ftime("%d/%m/%Y-%H:%M:%S> ",time()) + slog);
    fclose(logfd);
end

process server_thread()
private
    int socket_listen; // socket_listen para recoger peticiones
    int connection=0;
    int ipaddr, portaddr;
    int i;
    int informacion; // enviaremos a los clientes números aleatorios entre 0 y 32768
begin

    log("Fenix Web Server, Started!");

    socket_listen=tcpsock_open(); // nuevo socket
    fsock_bind(socket_listen,80); // asociamos socket_listen con el puerto 80
    tcpsock_listen(socket_listen,64); // numero de conexiones a escuchar igual a clients

    fsock_fdzero(0);
    fsock_fdset(0,socket_listen);

    while(!key(_ESC))

        if (fsock_select(0,-1,-1,0)>0)
            connection=tcpsock_accept(socket_listen, &ipaddr, &portaddr);
            if(connection>0)
                process_client(connection, ipaddr, portaddr);
            end
        end
       
        fsock_fdset (0, socket_listen); //hay que reincluir tras uso de select
        frame;
    end;

onexit
    fsock_quit(); // Cerramos la librería fsock

end

process process_client(int sock, int ipaddr, int portaddr)
private
    char msg[2048];
    string hdrFields[128];
    string request[3];
    rlen, slen, n, pos, d1, d2, cnt;
    fp;
    string lang;
begin
    clients++;
   
    //log("Connect from ip "+((ipaddr)&0ffh)+"."+((ipaddr>> 8) &0ffh)+"."+((ipaddr>>16)&0ffh)+"."+((ipaddr>>24)&0ffh));
    log("Connect from ip "+ fsock_get_ipstr(&ipaddr) + ":" + portaddr);

    fsock_fdzero(1);
    fsock_fdset(1,sock);

    while(!key(_esc))
        // Esto se podria hacer todo un fdset general, pero como cada frame se ejecuta por separado no hay problemas aca

        if (fsock_select(1,-1,-1,0)>0 && fsock_fdisset(1,sock))
            // En una aplicacion real, aca se debe poner un loop hasta recibir el paquete completo
            rlen=tcpsock_recv(sock,&msg,sizeof(msg));
            if(rlen<=0)
                break;
            end

            // Suponemos que aca tenemos el paquete completo
            cnt=split("["+chr(13)+chr(10)+"]+", msg, &hdrFields, sizeof(hdrFields));

            for(n=1;n<cnt;n++)
                if(strcasecmp(substr(hdrFields[n],0,17),"Accept-Language: ")==0)
                    lang=substr(hdrFields[n],17);
                end
            end

            cnt=split("[ ]+", hdrFields[0], &request, sizeof(request));

            log("Request ["+hdrFields[0]+"]");

            if(request[0]!="GET")
                msg=request[2]+" 405 Method Not Allowed";
                tcpsock_send(sock,&msg,len(request[2])+23);
                break;
            end

            /* Expand */

            while((pos=find(request[1],"%")) != -1)
                d1=asc(ucase(substr(request[1], pos+1, 1)));
                d2=asc(ucase(substr(request[1], pos+2, 1)));

                if(d1>=asc("A"))
                    d1-=asc("A")-10;
                else
                    d1-=asc("0");
                end

                if(d2>=asc("A"))
                    d2-=asc("A")-10;
                else
                    d2-=asc("0");
                end

                request[1]=substr(request[1], 0, pos)+chr(d1*16+d2)+substr(request[1], pos+3);
            end

            /* Comprueba si se quiere acceder a otro directorio anterior al DocumentRoot */
            if(find(request[1], "..") != -1)
                msg=request[2]+" 403 Forbidden";
                tcpsock_send(sock,&msg,len(request[2])+14);
                break;
            end

            // Aca usando los modo de manejo de archivos GZ, podemos dar soporte a archivos paginas gzip
            if(substr(request[1],-1,1)=="/")
                fp = fopen(DocumentRoot+request[1]+"index.html."+lang, O_READ);
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.htm."+lang, O_READ);
                end
                fp = fopen(DocumentRoot+request[1]+"index."+lang+".html", O_READ);
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index."+lang+".htm", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.html", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.htm", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.html.html", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.htm.html", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.html.htm", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.htm.htm", O_READ);
                end
            else
                fp = fopen(DocumentRoot+request[1]+"."+lang, O_READ);
                if (!fp)
                    fp = fopen(DocumentRoot+request[1], O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+".html", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+".htm", O_READ);
                end
            end

            if (!fp)
                msg=request[2]+" 404 Not Found";
                tcpsock_send(sock,&msg,14+len(request[2]));
                break;
            end

            while(!feof(fp))
                slen=fread(fp, msg);
                tcpsock_send(sock,&msg,slen);
                frame;
            end
            fclose(fp);
            break;
        end
       
        fsock_fdset(1,sock); //hay que reincluir socket tras select

        frame;
    end

onexit
    fsock_close(sock);// Cierra el socket
    clients--;

end
« última modificación: Septiembre 27, 2011, 10:52:27 pm por Prg »
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5671
  • Karma: 127
    • GECA soft
Re: Sugerencias de nuevos modulos
« Respuesta #19 en: Septiembre 28, 2011, 09:22:51 am »
Para lo de los botones y eso ¿no estaba la GUI_SO?

Le pido disculpas a prg, se me habia olvidao su excelente GUI_SO xD
Culpa por no probarla antes...
 
Tambien esta la DYKO dialogs for bennugd de handsource-dyko, la cual voy a probar, prometen mucho sus imagenes sobretodo porque estas clavadas a las de Winsows.

Prg

  • Hero Member
  • *****
  • Mensajes: 1569
  • Karma: 140
    • Mi pagina
Re: Sugerencias de nuevos modulos
« Respuesta #20 en: Septiembre 29, 2011, 10:13:32 pm »
Gracias, pero también estoy de acuerdo en un módulo oficial de gui, sobre todo ahorita que estoy teniendo tantos problemas en quitar todos los punteros a string XD  :-\

 :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)