Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - KandiZickZad

#1
Buenas, estoy haciendo un proxy cache en C, y estoy teniendo un problema con los buffers que estoy usando. Ya he logrado leer la solicitud una primera vez del navegador, así obtengo en el buffer una respuesta con el GET etc... luego le envío la solicitud al navegador, pero la respuesta que me da estoy segura de que está incompleta. Supongo que la razón es el tamaño del buffer. Acá está una parte del código:


int sockServidor, sockCliente, sockAceptado, codeLlamada;/*resul de syscall*/
struct sockaddr_in ipCliente, ipServidor;
char bufferSolicitud[256]; /*buffer para el stream de intercomunicación*/
char bufferRespuesta[1024]; /*buffer para el stream de respuesta*/
...
/*escuchando y aceptando solicitudes*/
read(sockAceptado,bufferSolicitud,255); /*lee solicitud del navegador*/
/*agrega host de solicitud a una cola*/
write(sockAceptado,bufferSolicitud,255); /*envia solicitud al navegador*/
read(sockAceptado,bufferRespuesta,1023); /*lee respuesta del navegador*/
printf("%s\n",bufferRespuesta); /*imprimir respuesta en stdout*/


Salida estándar:
cept-Encoding: gzip, deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Proxy-Connection: keep-alive

Cookie: datr=USRyT0N-TnXDmXY9heJPVm4n; lu=ggUW7DJdGaM8HnSG2r9TZzVg; c_user=1684241979; xs=7%3AiTD4F4fsffwmaw%3A0%3A1332897093


Por el contenido de bufferRespuesta, me parece que el problema debe ser que el tamaño del buffer no es suficiente. Pero me sigue pareciendo extraño, pues cuando bufferRespuesta era de tamaño 256, también imprimía la misma respuesta.

Les agradezco mucho la ayuda de antemano. Primeramente, necesito saber cuál es el problema. En caso de ser el tamaño del buffer, les agradecería mucho si me ayudan a encontrar una solución.
#2
Buenas, espero que me puedan ayudar.
Mi duda es muy basica, pero como no tengo mucha experiencia pues no logro resolverla.

Estoy haciendo un juego en C con gtk+, y necesito que el valor (tipo int) de un spin button se vea en un label que esta a la par y que cambie cada vez que se escoge un nuevo valor para el spin button.

El problema que tengo es que ocupo de alguna manera de tomar el valor int y pasarlo a char *

hice este codigo, pero me da error por usar tan directamente el sprintf


char * intAChar (char * str, int num)
{
return sprinf(str,"%d",num);
}


intento llamar ese codigo de esta manera


int spinValorInt;
spinValorInt = gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinTamano));
labelTamano = gtk_label_new(intAChar("",spinValorInt));


Espero que alguien me pueda ayudar, gracias!
#3
Programación C/C++ / Re: Duda de c++
4 Abril 2011, 20:48 PM
umm puedes buscar mas info en google, al buscar ascii /r encontre que significa carriage return, osea, basicamente es el caracter ascii para return (enter o como newline). el carriage return existe desde las maquinas de escribir, describe el proceso en el cual se sostiene el papel y se devuelve (en caso de una computadora) el cursor al principio de la linea para luego aplicar el newline (osea baja a la siguiente linea.

en wikipedia ( ¬¬ puedes buscar ahi mas) dice que su uso es distinto, que a veces se usa como espaceador, otras  veces como /r/n como fin de linea etc, intenta buscar mas o buscar (?), ademas busca en tutos o manuales de c++, en algun lugar encontraras algun ejemplo que lo use y que describa el uso que se le esta dando

peace
#4
Yo comencé con Scheme. Pero me parece que se debería aprender a programar (de acuerdo con mis preferencias personales) en varios paradigmas de programación, para al menos tener una idea de qué va cada uno...de cualquier manera, recomendaría:

C
C++
Prolog (seeh! programación lógica rlz)
Python
Common Lisp
#5
ASM / portabilidad de GNU assembler Gas
18 Febrero 2011, 19:47 PM
Tenía una duda...

Hasta donde mi conocimiento llega, gas puede usar la sintáxis AT&T y la sintáxis Intel.

Mi duda es la siguiente:

Si hice un programa con la sintáxis Intel, en el sistema operativo Linux, y lo compilé, etc
Puedo correr el programa en Windows? Sino, bastaría con volverlo a compilar pero en Win?

La otra duda es que estuve viendo un poco de qué trataba MingW, que lo que intenta es integrar gas a windows. Eso significa que puedo programar con gas utilizando ambas sintáxis o solo la de intel?

Muchas gracas de antemano por su ayuda!
#6
ASM / ensamblador dlx
27 Noviembre 2010, 01:11 AM
Disculpen que escriba mi duda en esta área, es la única de ensamblador que he encontrado, asi que no me parece que haya otro mejor lugar.

tengo una duda en cuanto a transferencia de datos y operandos de memoria.

por el momento comprendo lo que significa en realidad este tipo de operandos de memoria
*Registro                    R3    
*Inmediato            #3    Rango de Valores Inmediatos afecta a la long de la Inst
*Desplazamiento    100(R1)    [100+R1] Rango Desp. afecta a la long de la Inst
*Indirecto              (R1)    M[R1]
*Indexado            (R1+R2)    M[R1+R2]
*Indice                    100(R2)[R3] =>    M[100+R2+R3·d]


Mi problema es que encontré una instrucción que utiliza otro método...
movl 4(ebx,edx),%ecx


entiendo que el 4 es el desplazamiento, pero no comprendo que quiere decir (ebx,edx)

Les agradezco de antemano por resolver mi pequeña duda XD

#7
Wajajaja nopi, estaba estudiando para un exámen de Arquitectura de Computadores que tuve hoy =.=

Por dicha al final sí comprendí claramente la respuesta XD

Muchas gracias por haberme respondido  ;)
#8
umm tu respuesta tiene bastante lógica o.o

he estado estudiando el ejemplo, y logré llegar a ese resultado de la siguiente manera:

a. el tamaño de cada bloque es de #lineasDeCache * tamañoLinea (tamañoBloque=1024 bytes)
b. #DireccionesTotal = ramEnBytes / tamañoBloque (1073741824 bytes / 1024 bytes = 1048576)
c. Si se supone que el número de direcciones por bloque es 64 (en esta árte ya estoy medio insegura), y tengo  1048576 direcciones en total... #DireccionesTotal /#DireccionesBloque= #Bloques (1048576 / 64 = 16384)

De esta forma, también obtengo el resultado que debería obtener...y tiene un poco de lógica para mí, pero me cuesta estar segura de que sea la correcta y de que siempre funcione...

Entonces, sigo esperando otra respuesta. Al menos para saber si la de Sauruxum es la correcta.

Graciaaaaaaaaas XD
#9
tengo una pregunta, estoy estudiando para un examen pero no se si el ejemplo que nos dio el profesor esta correcto.

si tenemos esto:

RAM = 1GB
Cache = 1KB
Tamaño de linea de cache = 64B

entonces, uno hace el calculo de lineas de caché, lo cual nos dice que serían 16 líneas de caché. mi duda es cómo se puede calcular la cantidad de bloques de ram.

yo pensé que tenía que primero calcular el tamaño de cada bloque, que tiene 16 lineas de 64B, osea tiene 1024B y luego dividir la cantidad de bytes de la RAM (1073741824 bytes) entre el tamaño en bytes de cada bloque (1024B), y que eso nos retorna la cantidad de bloques en ram....pero a mi eso me dá 1048576 bloques, y el ejemplo que el profe nos dió retorna 16,384 bloques de ram...

me gustaría saber si mi cálculo es correcto, o si estoy cometiendo un error en alguna parte.

gracias por su tiempo XD
#10
jaja, ya logré resolver el problema u.uU no habia puesto ni el 0 para el valor de la columna autoincrease, ni habia puesto el endif. así quedó el código

Código (mysql) [Seleccionar]

CREATE DEFINER=`root`@`localhost` PROCEDURE `insertaSupervisor`
(in idempleado integer)
BEGIN
        if exists
                (select *
                from empleados
                where empleados.idEmpleado=idempleado
                )
        then
                if not exists
                        (select *
                        from supervisores
                        where supervisores.idEmpleado=idempleado
                        )
                then
                        insert into supervisores values (0,idempleado);
                end if;
        end if;
END