Buenas.
Gracias a mi nuevo curro, en el cual he cambiado drasticamente de tecnologias, y ahora me toca a programar en C puro y duro (no me lo esperaba la verdad), pues espero aguantarme mucho tiempo en el, y hacerme todo un expert en este maldito y engorroso lenguaje xD (es broma, si es que te puede tocar codigo super sencillo como super dificil, y me ha tocao esto ultimo xD)
Pues he descubierto algunas libs opensource, que creo que estarian muy bien en BennuGD.
De momento queria saber vuestras opiniones sobre estos 2 posibles modulos:
1 - Tener un modulo que te permita crear un servidor con Bennu, imaginate tu Caanoo como servidor de paginas web por ejemplo :)
Es un modulo no muy complicado de implementar.
2 - Esto especialmente me entusiasma: Tener un modulo que te permita tener controles al estilo windows en tus juegos, poder tener botones, dialogos, tablas, cajas de texto, etc. Los lenguajes div-like no estan orientados a esto, pero tener un modulo que te los permita poner seria cojonudo :)
Es algo que llevaria tiempo.
3 - Modulo 'Face_Detection': Imagina las posibilidades para juegos de PC con webcam, una licencia por usuario xD, solo ciertas personas lo pueden jugar xD, guardar o enseñar estados de juego segun tu cara, como logros, puntuaciones, etc.
con la libreria de socket, podes tener un servidor web en bennugd, de hecho yo hice el ejemplo para fenix.
Pues refrescanos el tema, así podriamos pasarla a las portatiles y hacer algo curioso y novedoso con ellas
a mi la opcion segunda me parece de puta madre xDDD una especie de modulo q permita cajas de texto, botones y demas cosas standart estaría mu bien xD
Quote from: FreeYourMind on September 16, 2011, 09:06:00 PM
Pues refrescanos el tema, así podriamos pasarla a las portatiles y hacer algo curioso y novedoso con ellas
creo que se llama libsock o tcpsock... bomberlink la tenia compilada para wiz o caanoo, no recuerdo... y si tenes el driver de red instalado o el wifi y demas, la podes usar...
Pero es la que tienes en ejemplos ? Y viene con el prg ejemplo ? Bomberlink a ver si nos la pasas que alfinal no la usaste en el SORR...
Con vuestro permiso he renombrado el tema de "sujerencias" a "sugerencias", que me dolían un poco los ojos :P
en el bennupack seccion
ejemplos DLLS/multiplayer
hay un servidor WEB echo en bennu...
lo de cajas de texto existia una libreria llamada mod_gui (ventanas , botones y demas)
sino estoy mal.. pero con las nuevas versiones de bennu
creo que se hizo incompatible el codigo .. y se evaporo...
donde esta esa mod_gui ?
A mi lo que me gustaría sería poder usar OpenGL. Son unas librerías que actualmente están hasta para javascript. Creo que podría venirnos muy bien tenerlas.
Deberias mirar mas el foro :P
Ya lo hemos intentao varias veces, pero las ganas son pocas :-\
http://forum.bennugd.org/index.php?topic=1026.30 (http://forum.bennugd.org/index.php?topic=1026.30)
Lo había leído, por eso. Era un intento de dejarlo caer. Como quien no quiere la cosa xDD
Tienes el bennu3D con soporte OpenGL
las ganas de que son pocas?
De hacer deporte ;D
Otra sujerencia mas adicionada a la lista
Con la existente openCV parece que se podria
http://opencv.willowgarage.com/wiki/FaceDetection (http://opencv.willowgarage.com/wiki/FaceDetection)
Para lo de los botones y eso ¿no estaba la GUI_SO?
Quote from: osk on September 27, 2011, 09:53:06 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.
Quote/* 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
Quote from: osk on September 27, 2011, 09:53:06 PM
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.
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 :-\
:)