|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - diego.martinez
Páginas: 1 2 3 [4] 5 6 ... 12
76
« en: Lunes 14 de Diciembre de 2009, 18:07 »
tal y como te habran enseñado en clase, la conversion de base se hace simplemente dividiendo el numero en base diez entre el valor de base. Despues, coges todos los restos de las distintas divisiones y los colocas en orden inverso (osea, desde el ultimo al primero) y ese es el valor en la nueva base.
77
« en: Viernes 27 de Noviembre de 2009, 12:10 »
lo mejor que puedes hacer es poner un bucle en el cual recibas la entrada del boton, con un sleep muy pequeño (echale un 1) lo justo para evitar que el consumo se suba a 100%. Para poder continuar, lo que haces es esperar un evento de Timer (en windows).
Postee en este foro como usar un timer, dale a buscar.
Entonces, si recibes el boton, actuas y paras el timer, si no esperas y reaccionas al evento de timer para decidir actuar
suerte
78
« en: Viernes 27 de Noviembre de 2009, 10:27 »
Buenas: Bueno, asi a primera vista, lo que puedes hacer es que cuando leas EOF, guardas el ultimo token. Retrocedes el tamaño del token, y lees . Asi siempre estaras leyendo un token completo salvo cuando no toques el EOF con el. ejemplo: EJEMP[EOF] leemos EJEMP y vemos un EOF. Retrocedemos 5 BYTE. leemos de nuevo leemos EJEMPL[EOF] retrocedemos 6 byte leemos EJEMPLO DE[EOF] luego el token EJEMPLO es valido por que no hemos leido EOF justo despues. que te parece?
79
« en: Jueves 26 de Noviembre de 2009, 16:23 »
si es para win32 , solo tienes que capturar el mensaje WM_PAINT, y en el usar : SetStretchBltMode(hDC,COLORONCOLOR); old=SelectObject(memDC, bkg); //cogemos la imagen GetWindowRect(window,&rcOwner); StretchBlt(hDC, 0, 0,rcOwner.right, rcOwner.bottom, memDC, 0, 0,1280,1024,SRCCOPY)
en bkg deberias haber almacenado antes la imagen, por ejemplo un bmp: bkg =LoadImage(NULL,LocFile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_DEFAULTSIZE);
y haber creado un memory compatible device context: memdc=CreateCompatibleDC(GetDC(Window));
ya esta. Si quieres ya algo mas elegante, carga un jpg u otro formato y usa StretchDIBits para pintar. suerte
80
« en: Viernes 20 de Noviembre de 2009, 12:56 »
Buenas:
usando el explorer para acceso a un ftp todo va bien, salvo cuando quiero abrir un fichero. En xp, lo abre con el programa correspondiente, pero en Vista intenta abrirlo siempre con el Internet Explorer para descargarlo. Alguien sabe como evitar este comportamiento?
81
« en: Jueves 19 de Noviembre de 2009, 20:21 »
podeis usar la API de mysql
82
« en: Miércoles 18 de Noviembre de 2009, 13:26 »
Buenas:
tengo un tunel SSH para usar un ftp de manera segura.
El problema surge al ir a usar el ftp en modo pasivo, si le pongo un rango de 1 puerto (ejemplo 22-22) , luego en el putty configuro L22 intranet.servidor:22 y funciona correctamente. El problema es que necesito aumentar el rango de ftp pasivo para poder aguantar muchas conexiones a la vez, y no se como configurar el putty para que habra un rango de puertos y redirija a los mismos puertos en la maquina remota:
seria algo como
L26-100 intranet.servidor:26-100
pero no funciona con esta sintaxis y no encuentro como hacerlo, alguien sabe?
a ser posible sin tener que escribir los 80 puertos
83
« en: Lunes 16 de Noviembre de 2009, 20:24 »
pues lo que dice el compilador!
te has olvidado del WHILE del DO-WHILE!
y usa las etiquetas de codigo...
84
« en: Lunes 16 de Noviembre de 2009, 20:22 »
Respecto a la duda de la devolucion: El problema esta en el paso de parametros. Un poco de teoria, cuando localizas una matriz, realmente estas localizando un cacho de memoria lineal, de x*y elementos de z de tamaño. estos elementos se ponen en orden lineal desde el puntero inicial. asi, cuando haces: estas localizando un cacho de memoria de n*(n+1)*sizeof(double), que van todos segudos. Cuando usas un operador corchete, realmente dices: es lo mismo que: *(matrix+sizeof(double)*5*6);
o sea, buscame un elemento que esta a 5 veces el tamaño de una fila, + un offset de 6 elementos de tamaño double. Basandonos en esto, para pasar una matriz, solo tenemos que mandar el puntero inicial al primer elemento, que es igual a su propio nombre. o sea: matrix = matrix[0][0]; luego, si quieres mandar la matriz como parametro, puedes decir muestra_matriz(r,matriz,Vec_filas). y como devolucion, puedes hacer return matrix; Por que da error entonces? no estoy muy seguro. por que seguramente, tienes definido r como una operación, y no puede resolver correctamente el formato de la matriz en el momento que la usas. creo que esta expandiendo una macro en mitad del paso de parametros, asi que no le da correctamente el formato al usarla. Pon &(matrix[0]) y asi pasaras el puntero al primer elemento (que es un puntero).
85
« en: Lunes 16 de Noviembre de 2009, 20:03 »
buenas: lo primero, usa , las etiquetas de codigo para poner cachos de codigo en los post. Al postear veras justo encima un combobox que poner "Code". ahora, el fallo esta en el uso del operador de flujo "<<". despues de un operador de flujo DEBE ir un parametro. cout<<"bien"<<; aqui estas poniendo ";" despues del operador de flujo. No querras decir "endl;"? El compilador se espera un parametro para el operador de flujo, y se encuentra con un semi-colon (punto y coma) y por eso se queja. prueba con: o
86
« en: Lunes 16 de Noviembre de 2009, 19:55 »
Buenas: busco en buscadores de programación de C en Linux no encuentro nada y me han comentado que es igual que en Windows, no te vendria mejor usar fork()? , de esta encontraras miles de tutoriales entiendo esta función pero a la hora de la práctica no se utilizar bueno, _beginthread recibe como primer parametro un puntero a una funcion void (void*). O sea, primero preparas una funcion que devuelva void y que reciba un puntero void como parametro , en la que este el cuerpo del proceso paralelo que vayas a usar. Despues, le pasas el nombre de la funcion como primer parametro de _beginthread. Como segundo parametro pasale un 0. Como tercer parametro, pasale un puntero a void del dato que quieres que reciba el proceso como dato. Que es eso de un puntero a void? normalmente, los punteros son de un tipo de dato, sin embargo, cualquier direccion de memoria puede representarse como un puntero void* que indica una direccion de memoria sin saber que hay en ella. Mirate en google Casting. Si quieres pasarle multiples datos, o bien te los preparas en una estructura de datos y le pasas el puntero (vectores, arrays, mapas...) o bien te preparas una estructura y le calzas los datos, si son fijos. Al convertirla en un puntero void* no puedes usar de nuevo la estructura a no ser que la recastees en el tipo original. ejemplo, un temporizador para pobres: //una estructura para guardar los multiples datos typedef struct TIPO_DATO { int hora; int minutos; int segundos; }; //una funcion void(void*) que contiene el cuerpo del proceso y que termina con _endthread(); void hilo(void * datos) { TIPO_DATO * in=(TIPO_DATO*)datos; int tot=in.horas*3600 + in.minutos*60 + in.segundos; Sleep(tot*1000); MessageBox(0,"TIME UP!",0,0); _endthread(); } //bucle principal en el que se lanza el hilo y luego se paraliza en un bucle. void main(void) { TIPO_DATO dat; dat.horas=0; dat.minutos=1; dat.segundos=30; _beginthread(hilo,0,&dat); while(true) { Sleep(1); //fjate en esto! } }
en el bucle he colocado un Sleep, por que si no le dejas descansar al hilo para hacer los cambios de contexto, el programa subira al 99% de CPU. espero que te haya ayudado!
87
« en: Jueves 12 de Noviembre de 2009, 17:32 »
vale, justo despues de postear, y de llevar varias horas con esto, solo habia que darle a quitar el volumen en el disco objetivo.
-_-U perdonad!
88
« en: Jueves 12 de Noviembre de 2009, 17:28 »
Buenas:
Tengo 2 discos sata que quiero que formen un raid 1 (data mirroring). Siguiendo las instrucciones de la msdn, voy a administraciójn de discos, convierto mis discos en dinámicos, y le doy al boton derecho sobre el disco 0 y "agregar espejo".
Lo malo es que cuando despliego las opciones "agregar espejo" esta desactivado y no puedo aplicarlo. Alguien sabe a que se puede deber? en google lei que podia deberse a falta de espacio, pero ambos discos tienen el mismo tamaño.
gracias!
89
« en: Jueves 12 de Noviembre de 2009, 16:26 »
si es solo para eso, podrias usar un define #ifdef WINDOWS [codigo win] #else [codigo lin] #endif
pero solo haz esto si es UNA UNICA instruccion la que cambia, siempre es mejor hacerlo bien multiplataforma. Si no, mirate el patron FACTORY en google.
90
« en: Jueves 12 de Noviembre de 2009, 16:23 »
primero puedes usar sscanf para separar el texto del numero que representa la cantidad.
despues, iteras el array caracter por caracter, lo conviertes a digito (pista, todos los numeros estan ordenados en la tabla ascii a partir de un cierto valor), te haces una tabla con los valores verbales de cada valor y comparas cada valor digito con la tabla segun su posicion en el array.
91
« en: Jueves 12 de Noviembre de 2009, 16:19 »
si es en unix, mirate en google la función fork(); esta dividira la ejecución en 2 procesos, y seguiran desde el momento que lo ejecutastes, pero cuidado, el diseño de un algoritmo fork tiene sus cosillas...
si es en win32 , puede usar o bien _beginthread o createprocess , estas reciben una funcion y la ejecutan en paralelo.
una cosa, una vez se mete alguien en programación concurrente debe tener en cuenta todo el universo de dolor que puede representar con sus problemas de sincronización. deberias consultar google para comunicación interthread o interproceso y deadlocks, mutex, semaphores...
suerte!
92
« en: Jueves 12 de Noviembre de 2009, 16:02 »
gracias!
y perdonad por el error al postear...
93
« en: Martes 10 de Noviembre de 2009, 19:21 »
Buenas: Era para preguntar un par de conceptos que no se si tengo muy claros. He montado un ssh para acceder al ftp, con tuneles montados por el putty y el openssh server. si no me equivoco, la finalidad del tunelado de ssh hace que: las conexiones que se hacen en el equipo local (ftp:\localhost) son redirigidas a traves del puerto del SSH (port:22) hasta el puerto del servidor de SSH (port:22) luego, el servidor, redirige la comunicación al puerto adecuado (ftp 21,53,20) , es asi? por lo tanto, si en el firewall del servidor permito todas las comunicaciones localhost-localhost y bloqueo todas las comunicaciones entrantes que no tengan como puertos local y remote el puerto 22 deberia de bloquear el acceso no tunelado por ssh no? otra pregunta es, cuando se usa ftp pasivo, el ftp redirige al puerto 20, que tambien esta tunelado, por lo tanto, tambien pasa por el puerto de ssh? no se muy bien que configuración tendria que poner en el firewall para permitir SOLO conexiones SSH y ademas solo de ciertas MAC, alguna idea? por cierto: Equipo Servidor : Windows Server 2003 , OpenSSH , Sygate Firewall Pro y FileZilla Equipo Cliente: Windows XP sp2 , Putty y Explorador de Windows (explorer ftp:\localhost) gracias de antemano!
94
« en: Lunes 9 de Noviembre de 2009, 17:49 »
buenas: he resuelto el problema, o mas o menos. Simplemente, el gestor de dominio no estaba bien configurado en el equipo, asi que intentaba usar los usuarios de Active Directory. Lo he resuelto quitando el servidor de dominio y usando mkgroup -l . ya investigare lo del dominio, por ahora me vale con esto. gracias igualmente!
95
« en: Viernes 6 de Noviembre de 2009, 12:25 »
es posible que en las librerias de linux que estas compilando ya exista una funcion "pause" que reciba como argumento (por ejemplo) un numero de segundos/microsegundos a esperar y te este diciendo que no puede convertir de cadena a numero?
es por sugerir algo simplemente.
96
« en: Jueves 5 de Noviembre de 2009, 20:51 »
si es para windows, puedes usar los temporizadores de la api. UINT_PTR p=::SetTimer(NULL, 0, tiempo_a_esperar, TimerProcedureSuministrado); esto mandara un mensage al procedure suministrado cuando ocurra el tiempo independientemente de lo que este haciendo el codigo, esta gestionado por la multitarea del s.o. , para mas información msdn. http://msdn.microsoft.com/en-us/library/ms644906(VS.85).aspx
97
« en: Jueves 5 de Noviembre de 2009, 18:58 »
buenas:
tengo otro problema con los mismos tuneles ssh.
Cuando entro con mi cuenta de tipo administrador o con la de administrador del equipo, no tengo ningun problema. Todo fino.
ahora bien, cuando entro con una cuenta de usuario local del servidor me da access denied.
Los usuarios estan definidos en el active directory del windows server 2003. despues en el openssh para windows, hago:
mkgroup -l >> ..etcgroup mkgroup -d >> ..etcgroup
mkpasswd -l >> ..etcpasswd mkpasswd -d >> ..etcpasswd
y con esto deberia de tener disponibles a todos los usuarios del domino y de la cuenta local del sistema. El windows server no tiene el servidor de dominios activo. Puede ser esto? no deberia no?
alguien sabe a que se puede deber? mi teoria es que debe de crear algun archivo/directorio para cada usuario en alguna ruta y que se lo deniega por no tener acceso a ese directorio, pero no se a que directorio darle acceso. Le he dado al propio del OpenSSH acceso de control total a todos y tampoco lo resuelve.
ideas?
gracias por anticipado.
98
« en: Jueves 5 de Noviembre de 2009, 15:43 »
bueno, realmente puedes usar la funcion Pow(valor, indice) que te devuelve indice elevado a valor. ahora bien... en ningun momento se te ha ocurrido que el cuadrado de valor es valor*valor????? piensa un poco y te saldran soluciones simples.
99
« en: Miércoles 28 de Octubre de 2009, 19:02 »
char *cad1; <--------------- AQUI! lo inicializas apuntando a vaya a saber usted donde while(i<tam){ cout<<"col[i] "<<col[i]<<endl; if( EsMayuscula(col[i]) ){ cout<<"es mayus"<<endl; cad1[i]=col[i]+32; <-------------------- y aqui pones un bonito valor en un offset de cad1 que produce un error de acceso a memoria
Estas usando un puntero sin inicializar. Deberias, o bien poner (para inicializar con 100 bytes por ejemplo): char cad1[100]; //e inicializar con 100 bytes o char *cad1=(char*)malloc(sizeof(char)*100); o char * cad1=new char[100]; El error se produce al salir de la funcion por que es cuando se "limpia" todo lo que hayas usado en la función, y claro, es entonces cuando detecta que has puesto datos donde no debias.
100
« en: Jueves 22 de Octubre de 2009, 09:40 »
buenas: gracias, por responder. Lo conseguí resolver, resultaba que en una de las configuraciones estaba escrito que no se abriera una terminal (para evitar que el usuario afectase al server con la consola) y en el otro lado, si no detectaba una terminal, tenia orden de cerrar  asi que solo era un problema de configuración en AMBOS lados
Páginas: 1 2 3 [4] 5 6 ... 12
|
|
|