|
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 - m0skit0
Páginas: 1 ... 55 56 [57] 58 59 ... 100
1401
« en: Miércoles 18 de Marzo de 2009, 10:00 »
pero de manera recursiva ya si que no puedo matar los procesossssss.....que alguien me ayudeeeeeee No te preocupes, seguro que es más fácil de lo que ahora parece es necesario que ponga codigo? Creo que es evidente, ¿no te parece? P.D: ¿te funcionó de la otra forma?
1402
« en: Miércoles 18 de Marzo de 2009, 09:58 »
Utiliza las etiquetas de código, nombra el número de la/s línea/s que te da/n error y especifica qué error. Un poco de tu parte no haría daño a los que queremos ayudarte
1403
« en: Martes 17 de Marzo de 2009, 18:26 »
Hola a tod@s Creo que puede ser una buena idea que añadamos tutoriales como posts permanentes ("stickys") en los foros que cada uno consideremos, como ya los hay, para los problemas más comunes o lo que veamos más solicitado en Internet y otros foros. Pienso que puede llegar a ser una buena forma de aumentar drásticamente el número de visitas redirigidas por Google. ¿Qué os parece?
1404
« en: Martes 17 de Marzo de 2009, 18:15 »
Hola de nuevo ¿260 computadoras en un solo segmento de red? ¿Un solo dominio de colisión?  Eso tiene que ir lentísimo y me quedo corto. Te aconsejo que pienses en utilizar switches. En fin, para tu caso es posible que puedas cambiar la clase de red que usas, que por lo que me cuentas tiene que ser una clase C (máx. 254 direcciones IP). Podrías pasar a una de clase B, por ejemplo: 172.16.0.0 - 172.16.255.255 con máscara 255.255.0.0, para un máximo de 65.534 direcciones IP. No tengas miedo en usar estas direcciones puesto que son privadas, es decir, son para equipos que no tienen acceso a Internet o lo tienen a través de NAT u otro sistema parecido. Para este cambio sólo debes configurar el router para cambiar las direcciones IP que reparte a los equipos de la red como has comentado con DHCP. También puedes subdividir la red en 2 redes privadas de clase C poniendo un router entre ambas que dirija el tráfico, aunque esta opción es más cara y un poco más complicada de implementar. Espero te haya sido de ayuda, salud
1405
« en: Martes 17 de Marzo de 2009, 17:51 »
'Una conexión, un recordset y una sentencia SQL Private Sub Recoger_Datos(ByRef dbConn As ADODB.Connection, ByRef dbRS As ADODB.Recordset, ByVal strSQL As String) 'Creamos el recordset Set dbRS = New ADODB.Recordset 'Definimos el uso del cursor en local, es decir, se descarga todo el recordset desde el servidor y no se accede a él por cada consulta dbRS.CursorLocation = adUseClient 'Recuperamos la información según la sentencia SQL estándar que tengamos almacenada en strSQL dbRS.Open strSQL, dbConn, adOpenStatic, , adCmdText End Sub
Con dbRS.Fields(Indice).Value
obtenemos el valor de los diferentes campos del registro activo. Indice puede ser un entero positivo o también una cadena de caracteres que defina el nombre del campo de datos dentro del registro (la sensibilidad a la capitalización depende de la base de datos). Para movernos en los registros del recordset devuelto, tenemos: 'Primer registro dbRS.MoveFirst 'Último registro dbRS.MoveLast 'Siguiente registro dbRS.MoveNext 'Anterior registro dbRS.MovePrevious 'Moverse N registros hacia adelante dbRS.Move N
Para controlar el tamaño del conjunto de registros (recordset) y su final, tenemos: 'Número de registros del conjunto dbRS.RecordCount 'Posición absoluta del registro dbRS.AbsolutePosition 'Devuelve verdadero si la posición actual está justo antes del primer elemento dbRS.BOF 'Devuelve verdadero si la posición actual está justo después del último elemento dbRS.EOF
Bueno, creo que he cubierto lo básico, espero les haya sido de utilidad y ya saben:
1406
« en: Martes 17 de Marzo de 2009, 17:31 »
Vamos directamente con código comentado: 'Iniciamos la conexión con la base de datos usando un objeto ADODB.Connection Private Sub Iniciar_Base_Datos(ByRef dbConn As ADODB.Connection) 'Creamos el objeto conexión Set dbConn = New ADODB.Connection With dbConn 'Controlador de Oracle para Oracle, también podéis usar el de Microsoft, MSORADB.Oracle 'Microsoft.Jet.OLEDB.4.0 para Access 'SQLOLEDB o MSDASQL para SQL Server .Provider = "OraOLEDB.Oracle" 'El nombre del origen de datos que hemos especificado en el administrador de datos de ODBC .Properties("Data Source") = "Nombre_Origen_Datos" 'Usuario para el servidor de la base de datos .Properties("User Id") = "usuario" 'Contraseña para el servidor de la base de datos .Properties("Password") = "contraseña" 'Abrimos conexión .Open End With End Sub
Ahora con podemos saber si la conexión ha sido un éxito o un fracaso. Este atributo es un booleano que toma el valor verdadero si la conexión se ha realizado sin problemas y falso en caso de fallo. Para finalizar la conexión, nada más simple que Private Sub Finalizar_Base_Datos(ByRef dbConn As ADODB.Connection) 'Cerramos la conexión dbConn.Close 'Desreferenciamos el objeto Set dbConn = Nothing End Sub
Vamos ahora al acceso a los datos.
1407
« en: Martes 17 de Marzo de 2009, 17:16 »
Ejecutamos el IDE de Visual Basic 6 y creamos un proyecto de prueba para un EXE estándar. Una vez creado, pinchamos en el menú superior en "Proyecto" y luego en "Referencias...", con lo que nos saldrá un diálogo tal que así: [attachment=0:362a8yiw]refVB.jpg[/attachment:362a8yiw] Para activar ADO hay que seleccionar "Microsoft ActiveX Data Objects 2.0 Library" y "Microsoft ActiveX Data Objects Recordset 2.5 Library". Aceptamos y listo. Ahora ya tenemos nuestro entorno tanto de Windows como de VB6 listo para empezar a codificar
1408
« en: Martes 17 de Marzo de 2009, 17:08 »
Antes de cualquier cosa debemos instalar un cliente de la base de datos a la que vayamos a acceder de forma remota. Hecho esto, las conexiones las vamos a gestionar a través del proveedor de datos de Windows, el ODBC (Open Database Connectivity): Panel de control -> Herramientas administrativas -> Orígenes de datos ODBC. Una vez en el administrador de datos de ODBC, veremos una ventana parecida a la siguiente: [attachment=1:1s3624j8]adminODBC.jpg[/attachment:1s3624j8] Ahí ya decidimos dónde queremos añadir nuestro origen de datos, si en el DSN (Data Source Name) de usuario, sistema o archivo (fijaos en la explicación en la parte inferior de la ventana para decidir cuál os conviene más). Una vez os decidáis, le dais a "Agregar..." y seleccionais el controlador/driver de la/s base/s de datos que corresponda/n: [attachment=0:1s3624j8]adddriverODBC.jpg[/attachment:1s3624j8] Después de seleccionarlo también lo podéis volver a configurar con el botón de "Configurar..." (¿ah, sí?). Es importante recordar el nombre que le hemos puesto a nuestro origen de datos. También suele ser necesario configurar el propio cliente de la base de datos para definir la conexión y demás (IP y puerto del servidor, por ejemplo). Ahí consultad la documentación de vuestra base de datos. Una vez hecho esto, hay que preparar el entorno de Visual Basic 6 para poder definir los tipos que nos ofrece ADO.
1409
« en: Martes 17 de Marzo de 2009, 16:43 »
He aquí un pequeño tutorial sacado de mi experiencia estos últimos días con Visual Basic 6 y bases de datos (Oracle en concreto). En teoría usando ADO (ActiveX Data Objects) no debería importar la base de datos a la que se acceda, el procedimiento debería ser el mismo para todas. Lo único que habría que modificar es el proveedor y tener en cuenta las peculiaridades de cada base de datos con respecto al cumplimiento del estándar SQL y las sentencias SQL propietarias.
Precisamente por esto último decidí usar ADO y no DAO, por ejemplo, que puede dar mejor rendimiento si sólo vamos a trabajar con bases de datos Jet (Microsoft Access). Sin embargo, Access no es una base de datos adecuada para un proyecto de gran envergadura; por esto mismo Microsoft decidió desarrollar SQL Server.
Finalmente recalcaros que este mini-tutorial va enfocado hacia bases de datos remotas, en la que nuestro equipo tiene el cliente y en otro se encuentra el servidor de la base de datos.
1410
« en: Martes 17 de Marzo de 2009, 16:34 »
haora el sp3 me lo pide el sql 2000 no el sistema operativo.... server 2003 Perdona mi enésimo despiste. Ya me cuentas qué tal.
1411
« en: Martes 17 de Marzo de 2009, 16:19 »
(si decias por la "e" estaba probando nomas llamarlo de otra forma distinta a la definición Dim txtFreq As TextBox pero tampoco anda ) Aha, lo más lógico del mundo: si lo llamas de otra forma seguro que te hace caso  Y también que yo adivine que tú lo has hecho aposta. Tiene huevos la cosa. Option Explicit Dim WithEvents Texto As VB.TextBox Private Sub Form_Load() Set Texto = Controls.Add("VB.TextBox", "Texto", Form1) Texto.Visible = True End Sub
1412
« en: Martes 17 de Marzo de 2009, 16:03 »
(BORRAR)
1413
« en: Martes 17 de Marzo de 2009, 13:02 »
Con un software de edición de sonido. Mi favorito es Sony Acid Pro por su facilidad de uso, aunque también tienes Audacity (software libre), Cubase, Pro Tools (sólo funciona con hardware dedicado), Audition (ex-Cool Edit), etc... Que disfrutes y cualquier duda con el Acid ya sabes dónde encontrarme
1414
« en: Martes 17 de Marzo de 2009, 12:56 »
¿Por qué no quitas simplemente el JS y dejas que lo haga todo el PHP?
Salud
1415
« en: Martes 17 de Marzo de 2009, 10:08 »
Primero, creo que un cambio de gerente vendría muy bien, y si no es posible, por lo menos que sea otro el que indique los criterios de contratación. Los trajes no están hechos para las tecnologías de las información, básicamente porque se hacen los entendidos porque sabes 2 conceptos pero no tienen ni idea. En cuanto a lo que decía sobre PHP, yo que tú haría una prueba de ses software sobre un servidor Windows y vería qué tal. Tampoco me has especificado qué servidor web usas, así que supondré que es Apache, lo cual sería afortunado porque hay una versión para Windows también. Si es muy complicado/costoso, entonces creo que la primera solución es desde luego la más viable. Y como consejo personal te digo que mantengas Linux porque, aparte de que el rendimiento de los servicios no va a mejorar (es más, puede que empeore), el dolor de cabeza va a ser considerable, te lo puedo asegurar. Aquí tienes más información. Siguiendo con mi opinión, aquí puedes hacerte una idea de que Linux es mejor (y más para equipos potentes, de precisión y fiabilidad): http://news.softpedia.com/news/Market-S ... 9071.shtmlhttp://www.infoworld.com/article/09/02/ ... ver_1.htmlhttp://www.infoworld.com/article/08/06/ ... ource=fssrhttp://www.rinconsolidario.org/linux/wi ... n-Lin.htmlhttp://www.redcientifica.com/doc/doc199905100008.htmlhttp://www.michaelhorowitz.com/Linux.vs.Windows.htmlhttp://weblog.topopardo.com/?p=1279http://linuxadictos.com/2008/08/14/linu ... s-round-1/ http://www.abadiadigital.com/noticia1778.htmlhttp://www.devx.com/opensource/Article/16969Espero te ayude a aclararte. Salud.
1416
« en: Martes 17 de Marzo de 2009, 09:48 »
¡Bienvenid@ al foro! Creo que tu problema radica en que no referencias Form2 al llamar a sus métodos. Esto es, piensa en Form1 y Form2 como 2 objetos independientes, así que para llamar a un método de Form2 desde Form1 debes indicar Form2.nombre_metodo();. Esto siempre y cuando hayas declarado el método en cuestión como público/protegido (que tenga suficiente visibilidad para poder llamarlo desde Form1, vamos). Si no tienes claro esto último, te aconsejo que lo repases, pues es fundamental en programación orientada a objetos. no quiero que me resuelvan ningun ejercicio ni nada, solo quiero que me orienten donde esta el problema, si necesitan el codigo para ver lo que tengo se los dejo, pero como decia, no necesito hacer un ejercicio simplemente me gustaria saber la causa del problema y en lo posible alguna explicacion para poder resolverla... Esto está más que claro en tu explicación. Salud
1417
« en: Martes 17 de Marzo de 2009, 09:40 »
Primero debes aprender a manejar ficheros: GIYF. Después, debes definir cómo va a ser la estructura del fichero y las estructuras de datos que vas a usar. Cuando tengas claro esto, sólo te quedará codificarlo
1418
« en: Martes 17 de Marzo de 2009, 09:36 »
1419
« en: Martes 17 de Marzo de 2009, 09:34 »
1420
« en: Martes 17 de Marzo de 2009, 09:29 »
Utiliza las etiquetas de código para el código, por favor. Personalmente creo que te equivocas en el campo "Data Source". Ahí no va la IP, por lo menos que yo sepa, sino el origen de datos ODBC: Panel de Control -> Herramientas Administrativas -> Orígenes de datos (ODBC). Ahí ya agregas el que corresponda, en tu caso "SQL Server", y le das un nombre. Luego usa ese nombre como valor para la propiedad "Data Source" de la conexión. PD: ¿no será el SP3 de Windows XP? Es un poco absurdo que te pida instalar el SP3 del SQL Server 2000 cuando tú tienes la versión 2003 Salud
1421
« en: Martes 17 de Marzo de 2009, 09:23 »
al menos en Unix, nunca tendras un PID igual a 0, y menos si un usuario lo ejecuta... Tienes razón, pero no. Desde luego en POSIX no hay PID = 0 da igual si lo ejecuta el usuario o no. Pero este no es un PID real. Es el valor que devuelve fork() para el proceso hijo, de ahí hijo_main(). Con getpid() obtendrías el PID. Como veo que no estás familiarizado con fork(), haz un man 2 fork. Salud
1422
« en: Lunes 16 de Marzo de 2009, 17:10 »
waitpid() tiene varias formas de funcionar, pero la que te interesa a ti es simple: waitpid(pid_hijos,NULL,0);
Por ejemplo, en tu caso, yo haría (ten en cuenta que no he probado esto): //Para guardar los PIDs de los hijos pid_t hijos[3]; //Vamos a crear los 3 hijos for(i=0;i<3,i++){ //Fork pid = fork(); //Si es un hijo, pues que haga lo que tenga que hacer if (pid == 0) hijos_main(); //Si es el padre, guarda el PID del hijo en el vector else hijos[i] = pid; } //Esperamos a que termine cada uno de los hijos. for(i=0;i<3;i++) waitpid(hijos[i],NULL,0); //También vale esta, esperar a que termine cualquier hijo (esperamos a 3 hijos, en cualquier orden). //waitpid(-1,NULL,0);
Y para el segundo hijo y su propio hijo, pues de forma muy parecida a cómo lo hace el padre. Salud
1423
« en: Lunes 16 de Marzo de 2009, 16:37 »
el problema es que solo puedo utilizar fork , y para matar pues exit,wait,waitpid y todo eso... Yo en ningún momento en dicho que no uses fork(). No sé a qué viene tu afirmación. Lo que debes hacer es esperar con waitpid() (estas llamadas no matan, sino ponen en bloqueo a los procesos hasta que otros cambien de estado) a los 3 procesos hijos, y que el segundo espere a su hijo y punto, no tiene más complicación. No necesitas compartir las variables porque eso lo hace más complicado todavía. Sólo el segundo hijo necesita saber del nieto, al padre no le hace falta. Sobre lo de ponerlo bonito es lo último, primero tengo que ver los efectos de dicho programa y que salga lo que quiero,,porque por ahora me estoy haciendo un poco lio al no ser todo secuencial..... No se trata de ponerlo "bonito", como tú dices, sino entendible, que son dos cosas diferentes. Tú mismo. Yo creo que ya tienes suficiente información para dejar la teoría y empezar a hacer cambios en el código. Te repito: piensa en los procesos como independientes y que cada uno acceda a lo que tiene que acceder, nada más y nada menos, y evita compartir y acceder a información que no necesita el proceso. Es decir, evita cualquier complicación innecesaria. Salud
1424
« en: Lunes 16 de Marzo de 2009, 16:09 »
Ah OK. Pero si te fijas no sale en negrita Creo que es porque cuando llega el proceso principal a ese punto, es posible que aún no se haya inicializado v[0] por los otros procesos. Si te fijas, los otros procesos hijos tardan más que el padre porque tienen un sleep(15) mientras que el padre lo tiene a 10. Prueba a inicializarlo con -1 antes de hacer ningún fork() y comprueba el valor que ponga. Pero no te fíes con que reduciendo el sleep() vaya a funcionar. Es mejor sincronizar. Hay que tener cuidado con la programación concurrente porque no sabes en que orden se van a ejecutar los procesos, y da lugar a este tipo de problemas. Deberías usar más sincronizaciones entre los procesos (con semáforos, por ejemplo). También para evitar estos líos te aconsejo una vez más que llames a una función aparte para el código de los hijos, pero sobre todo que plantees bien el asunto intentando tener en cuenta todos los órdenes de ejecución posibles. Es complicado, pero ahí radica la "belleza" de la concurrencia. Salud
1425
« en: Lunes 16 de Marzo de 2009, 16:06 »
Era un problema de permisos.
Páginas: 1 ... 55 56 [57] 58 59 ... 100
|
|
|