Re: Kernel Linux y renice/ionice
El Mon, 31 Jan 2011 23:28:42 -0300 Aldrin Martoq amar...@dcc.uchile.cl escribió: Mejor cuéntanos qué pretendes hacer... Respecto de renice y nice; lo único que hacen es otorgar o quitar tiempo de CPU, dándole mas o menos tiempo a los procesos según su prioridad. Precisamente eso reasignar más tiempo de CPU a algunos procesos críticos para evitar la perdida de datos en capturas de hasta 50KBPS a través de una USB, hay un buffer que se llena y hay datos que se pierden. La recoleción de datos llega a varios millones imagina esa taza en 5 a 10 minutos. Ahora, la convención es que esto NO lo maneje el propio programa, sino que lo hace el administrador del sistema. Por ejemplo, está corriendo un proceso de cálculos diarios (PID 1044) y se come toda la CPU, lo que baja el rendimiento de los procesos que están atendiendo peticiones en línea. Entonces, el administrador tiene 2 opciones : - al iniciar el proceso de cálculos diarios, indicarle al sistema que no ocupe mucha cpu: $ nice 20 /ruta/al/proceso/calculos_diarios - bajar la prioridad mientras se ejecuta $ renice 20 1044 El caso mío es distinto al que planteas, ya que uso un sistema de captura de datos de alto rendimiento y una opción es ir a un sistema operativo de tiempo real, pero antes es agotar todos los recursos antes de llegar a ese extremo, el problema lo resuelvo con máquinas más potentes pero no es la idea, el tema es con máquinas por ejemplo como las Atom. Por convención, estas son decisiones en el momento de operación del sistema, NO son decisiones que toma el mismo programa. Misma historia para el ionice (el cual desconocía). Si vas a mover esta lógica dentro de tu programa, tendrá que ser algo varias veces MEJOR y tal vez muy INTELIGENTE a lo que se estila. Bueno, si no nos cuentas en qué andas, no lo sabremos. Lo que indique... Si miras el man, en SEE_ALSO está la referencia a getpriority(2) y setpriority(2). Si lees esos man, veras que basta con añadir la capability CAP_SYS_NICE a tu programa (lo cual hasta donde sé también se estila dejarlo fuera de tu código, al momento de operación). Bueno, gracias veré esos detalles. Aldrin Martoq http://aldrin.martoq.cl/ -- Atentamente. +---+-+ | Ricardo Albarracin B. | email: ral...@gmail.com | +---+-+
Re: Kernel Linux y renice/ionice
El 1 de febrero de 2011 09:15, Ricardo Albarracin B. ral...@gmail.comescribió: El Mon, 31 Jan 2011 23:28:42 -0300 Aldrin Martoq amar...@dcc.uchile.cl escribió: Mejor cuéntanos qué pretendes hacer... Respecto de renice y nice; lo único que hacen es otorgar o quitar tiempo de CPU, dándole mas o menos tiempo a los procesos según su prioridad. Precisamente eso reasignar más tiempo de CPU a algunos procesos críticos para evitar la perdida de datos en capturas de hasta 50KBPS a través de una USB, hay un buffer que se llena y hay datos que se pierden. La recoleción de datos llega a varios millones imagina esa taza en 5 a 10 minutos. Ahora, la convención es que esto NO lo maneje el propio programa, sino que lo hace el administrador del sistema. Por ejemplo, está corriendo un proceso de cálculos diarios (PID 1044) y se come toda la CPU, lo que baja el rendimiento de los procesos que están atendiendo peticiones en línea. Entonces, el administrador tiene 2 opciones : - al iniciar el proceso de cálculos diarios, indicarle al sistema que no ocupe mucha cpu: $ nice 20 /ruta/al/proceso/calculos_diarios - bajar la prioridad mientras se ejecuta $ renice 20 1044 El caso mío es distinto al que planteas, ya que uso un sistema de captura de datos de alto rendimiento y una opción es ir a un sistema operativo de tiempo real, pero antes es agotar todos los recursos antes de llegar a ese extremo, el problema lo resuelvo con máquinas más potentes pero no es la idea, el tema es con máquinas por ejemplo como las Atom. Hola Tocayo, pq es un extremo usar un sistema operativo de tiempo real? -- Ricardo Mun~oz A. http://www.tux.clhttp://www.tux.cl http://twitter.com/ricardo406
Re: Kernel Linux y renice/ionice
On Tue, 2011-02-01 at 09:21 -0300, Ricardo Munoz wrote: El 1 de febrero de 2011 09:15, Ricardo Albarracin B. ral...@gmail.comescribió: El Mon, 31 Jan 2011 23:28:42 -0300 Aldrin Martoq amar...@dcc.uchile.cl escribió: Mejor cuéntanos qué pretendes hacer... Respecto de renice y nice; lo único que hacen es otorgar o quitar tiempo de CPU, dándole mas o menos tiempo a los procesos según su prioridad. Precisamente eso reasignar más tiempo de CPU a algunos procesos críticos para evitar la perdida de datos en capturas de hasta 50KBPS a través de una USB, hay un buffer que se llena y hay datos que se pierden. La recoleción de datos llega a varios millones imagina esa taza en 5 a 10 minutos. Ahora, la convención es que esto NO lo maneje el propio programa, sino que lo hace el administrador del sistema. Por ejemplo, está corriendo un proceso de cálculos diarios (PID 1044) y se come toda la CPU, lo que baja el rendimiento de los procesos que están atendiendo peticiones en línea. Entonces, el administrador tiene 2 opciones : - al iniciar el proceso de cálculos diarios, indicarle al sistema que no ocupe mucha cpu: $ nice 20 /ruta/al/proceso/calculos_diarios - bajar la prioridad mientras se ejecuta $ renice 20 1044 El caso mío es distinto al que planteas, ya que uso un sistema de captura de datos de alto rendimiento y una opción es ir a un sistema operativo de tiempo real, pero antes es agotar todos los recursos antes de llegar a ese extremo, el problema lo resuelvo con máquinas más potentes pero no es la idea, el tema es con máquinas por ejemplo como las Atom. Hola Tocayo, pq es un extremo usar un sistema operativo de tiempo real? Este problema no se soluciona necesariamente con linux-rt (o cualquier SO rt). Deberias asegurarte que tengas un preemptive kernel (CONFIG_PREEMPT).
Re: Kernel Linux y renice/ionice
El Tue, 1 Feb 2011 09:21:26 -0300 Ricardo Munoz rmu...@tux.cl escribió: Hola Tocayo, pq es un extremo usar un sistema operativo de tiempo real? Hola tocayo básicamente los que hay para la arquitectura que pretendo usar (ARM), son de pago... eso para mi es extremo :-) -- Atentamente. +---+-+ | Ricardo Albarracin B. | email: ral...@gmail.com | +---+-+
Re: Kernel Linux y renice/ionice
El Tue, 01 Feb 2011 09:30:16 -0300 Davidlohr Bueso d...@gnu.org escribió: Este problema no se soluciona necesariamente con linux-rt (o cualquier SO rt). Deberias asegurarte que tengas un preemptive kernel (CONFIG_PREEMPT). Tienes un link a este tema para leer lo que se podría lograr con esta característica? Buscaré en todo caso... gracias -- Atentamente. +---+-+ | Ricardo Albarracin B. | email: ral...@gmail.com | +---+-+
Re: Kernel Linux y renice/ionice
On 01/02/11 09:51, Ricardo Albarracin B. wrote: kernel (CONFIG_PREEMPT). veamos si te sirve esto http://kerneltrap.org/node/2702 http://kerneltrap.org/node/3440 http://kernel.xc.net/html/linux-2.6.4/arm/PREEMPT P-) -- Mis Certificaciones: Red Hat Certified System Administrato RHCSA Nº100223072 Red Hat Certified Technician (RHCT) Nº605010753835478 Novell Certified Linux Professional CLP 10
fedora 13 , mi acer one , selinux y yo
Tengo la siguiente situación: Se me ocurrió instalar skype problemas de configuración de la cuenta no tuve fue al intentar usar skype 1.- El microfono en la pantalla no me lo toma debo conectar un microfono en el conector lateral 2.- el vídeo a veces me funciona y otras no, pense problemas de permisos, mire propietario y grupo de /dev/video0 y agregue usuario al grupo video funciono una ves después no 3.- Pensé en contexto selinux(lo tengo activo) , lo cambie, tampoco funciona 4.- luego reinicio el sistema operativo y cueck , funciona, y todos los programas que antes no me mostraban imagen de la camara, ahora me muestran imagen. condiciones de la solución que quiero aplicar, no deshabilitar selinux. he mirado los log pero no me dan mucha info. sugerencias? -- Mis Certificaciones: Red Hat Certified System Administrato RHCSA Nº100223072 Red Hat Certified Technician (RHCT) Nº605010753835478 Novell Certified Linux Professional CLP 10
Re: fedora 13 , mi acer one , selinux y yo
2011/2/1 Enrique Herrera Noya enrique.herreran...@gmail.com: Tengo la siguiente situación: Se me ocurrió instalar skype problemas de configuración de la cuenta no tuve fue al intentar usar skype 1.- El microfono en la pantalla no me lo toma debo conectar un microfono en el conector lateral 2.- el vídeo a veces me funciona y otras no, pense problemas de permisos, mire propietario y grupo de /dev/video0 y agregue usuario al grupo video funciono una ves después no 3.- Pensé en contexto selinux(lo tengo activo) , lo cambie, tampoco funciona 4.- luego reinicio el sistema operativo y cueck , funciona, y todos los programas que antes no me mostraban imagen de la camara, ahora me muestran imagen. condiciones de la solución que quiero aplicar, no deshabilitar selinux. he mirado los log pero no me dan mucha info. Holas: Más parece problemas con pulseaudio que con selinux. Qué haces con Fedora 13? Prueba lo mismo con Fedora 14. En el Samsung N130 de mi madre Skype anda sin problemas. Saludos -- My name is Ozymandias, king of kings: Look on my works, ye Mighty, and despair! Percy Bysshe Shelley http://sites.google.com/site/carlossepulveda
Re: Kernel Linux y renice/ionice
On Feb 1, 2011, at 9:15 AM, Ricardo Albarracin B. wrote: [...] El caso mío es distinto al que planteas, ya que uso un sistema de captura de datos de alto rendimiento y una opción es ir a un sistema operativo de tiempo real, pero antes es agotar todos los recursos antes de llegar a ese extremo, el problema lo resuelvo con máquinas más potentes pero no es la idea, el tema es con máquinas por ejemplo como las Atom. ¿ Has visto sched_setscheduler(2) ? Puedes programar en un sistema real soft en linux, es lo que hace pulseaudio por ejemplo (en top, cuando dice RT). Nunca lo he usado, y no sé si está para ARM, pero lo mas probable es que sí. Nos cuentas cómo te va ;) Aldrin Martoq http://aldrin.martoq.cl/
Re: fedora 13 , mi acer one , selinux y yo
On 01/02/11 12:06, Carlos (casep) Sepulveda wrote: 2011/2/1 Enrique Herrera Noya enrique.herreran...@gmail.com: Tengo la siguiente situación: Se me ocurrió instalar skype problemas de configuración de la cuenta no tuve fue al intentar usar skype 1.- El microfono en la pantalla no me lo toma debo conectar un microfono en el conector lateral 2.- el vídeo a veces me funciona y otras no, pense problemas de permisos, mire propietario y grupo de /dev/video0 y agregue usuario al grupo video funciono una ves después no 3.- Pensé en contexto selinux(lo tengo activo) , lo cambie, tampoco funciona 4.- luego reinicio el sistema operativo y cueck , funciona, y todos los programas que antes no me mostraban imagen de la camara, ahora me muestran imagen. condiciones de la solución que quiero aplicar, no deshabilitar selinux. he mirado los log pero no me dan mucha info. Holas: Más parece problemas con pulseaudio que con selinux. Qué haces con Fedora 13? Prueba lo mismo con Fedora 14. En el Samsung N130 de mi madre Skype anda sin problemas. veré de upgradear pulseaudio sino pregunta ociosa , reinstalo o upgrade? Saludos -- Mis Certificaciones: Red Hat Certified System Administrato RHCSA Nº100223072 Red Hat Certified Technician (RHCT) Nº605010753835478 Novell Certified Linux Professional CLP 10
Re: fedora 13 , mi acer one , selinux y yo
2011/2/1 Enrique Herrera Noya enrique.herreran...@gmail.com: veré de upgradear pulseaudio sino pregunta ociosa , reinstalo o upgrade? Lo que sea su cariño. De mañoso no más que soy siempre he reinstalado para pasar de N a N+1. Dicen que funciona el upgrade, podrías probarlo y reportar :) -- My name is Ozymandias, king of kings: Look on my works, ye Mighty, and despair! Percy Bysshe Shelley http://sites.google.com/site/carlossepulveda
Re: fedora 13 , mi acer one , selinux y yo
On 01/02/11 13:10, Carlos (casep) Sepulveda wrote: 2011/2/1 Enrique Herrera Noya enrique.herreran...@gmail.com: veré de upgradear pulseaudio sino pregunta ociosa , reinstalo o upgrade? Lo que sea su cariño. De mañoso no más que soy siempre he reinstalado para pasar de N a N+1. Dicen que funciona el upgrade, podrías probarlo y reportar :) buscando how to para upgrade , mientras respaldo /etc pues /home esta en otra partición -- Mis Certificaciones: Red Hat Certified System Administrato RHCSA Nº100223072 Red Hat Certified Technician (RHCT) Nº605010753835478 Novell Certified Linux Professional CLP 10
Re: Kernel Linux y renice/ionice
¡Hola! El Tue, Feb 01, 2011 at 09:15:22AM -0300, Ricardo Albarracin B. escribio: El Mon, 31 Jan 2011 23:28:42 -0300 Aldrin Martoq amar...@dcc.uchile.cl escribió: Mejor cuéntanos qué pretendes hacer... Precisamente eso reasignar más tiempo de CPU a algunos procesos críticos para evitar la perdida de datos en capturas de hasta 50KBPS a través de una USB, hay un buffer que se llena y hay datos que se pierden. La recoleción de datos llega a varios millones imagina esa taza en 5 a 10 minutos. [...] El caso mío es distinto al que planteas, ya que uso un sistema de captura de datos de alto rendimiento y una opción es ir a un sistema operativo de tiempo real, pero antes es agotar todos los recursos antes de llegar a ese extremo, el problema lo resuelvo con máquinas más potentes pero no es la idea, el tema es con máquinas por ejemplo como las Atom. Lo que más te conviene aquí es cambiar la clase de schedulling del programa, pasar de la clase estándar a la clase round-robin. Esto garantiza que tu aplicación va a recibir CPU cada cierto tiempo por lo menos. Para hacerlo, basta con utilizar la llamada sched_setscheduler(), ve en su página de manual. En nuestro caso, agregamos esto: void set_priority() { struct sched_param sp; sp.sched_priority = 10; sched_setscheduler(0, SCHED_RR, sp); } Todas las tareas en round-robin tienen más prioridad que las tareas estándares, esto significa que si usas el 100% de CPU, nada más se ejecutará en tu computador. Esto no es un problema si la aplicación sólo recibe datos, ya que debería realizar la recepción y luego volver a esperar más datos. El problema ahora es que no quieres que la aplicación tenga permisos de super-usuario. Si usas Linux mayor a 2.6.12, la solución es cambiar el límite de prioridad permitida de los procesos por medio de la capacidad RLIMIT_RTPRIO usando setrlimit. Esto se hace con el siguiente pseudocódigo: // Programa ejecutado con UID=0, cambia los límites setrlimit(...); if(!fork()) { // Cambia a usuario 1000 (por ejemplo) setuid(1000); // Ejecuta el programa execve(); } // Termina. exit(0); Obviamente, con manejo de errores, etc. Lamentablemente el programa padre debe todavía ser root, esto es difícil de evitar, ya que de alguna manera se tiene que dar el permiso. Nota que en versiones de Linux mayores a 2.6.25 puedes también fijar el límite RLIMIT_RTTIME, el cual limita el total de tiempo que un proceso de prioridad RT puede utilizar de una sola vez. Esto sirve para impedir que un proceso RT use el 100% de CPU y haga que el resto del sistema no responda. Ve en el manual de setrlimit. Por último, si insistes en que el proceso inicial (que fija los límites) no sea ejecutado como root, puedes utilizar el sistema de capacidades de Linux, ve capabilities(7), con énfasis en la sección llamada File Capabilities. La gracia es que, si usas un sistema de archivos que lo soporte, puedes asignar a un ejecutable la capacidad CAP_SYS_NICE, usando setcap cap_sys_nice+p programa. Lee bien, eso si, lo que esto permite al proceso. Lamentablemente, en UBIFS que usamos aquí no hay soporte para capabilities. Daniel.
Re: Kernel Linux y renice/ionice
El Tue, 1 Feb 2011 17:16:19 -0300 Daniel Serpell dserp...@gmail.com escribió: ¡Hola! Estimado amigo... un gusto como siempre.. Lo que más te conviene aquí es cambiar la clase de schedulling del programa, pasar de la clase estándar a la clase round-robin. Esto garantiza que tu aplicación va a recibir CPU cada cierto tiempo por lo menos. Perfecto... es la idea. Para hacerlo, basta con utilizar la llamada sched_setscheduler(), ve en su página de manual. En nuestro caso, agregamos esto: void set_priority() { struct sched_param sp; sp.sched_priority = 10; sched_setscheduler(0, SCHED_RR, sp); } bien... Todas las tareas en round-robin tienen más prioridad que las tareas estándares, esto significa que si usas el 100% de CPU, nada más se ejecutará en tu computador. Esto no es un problema si la aplicación sólo recibe datos, ya que debería realizar la recepción y luego volver a esperar más datos. Perfecto, esto me resolvería el overflow de los buffers. El problema ahora es que no quieres que la aplicación tenga permisos de super-usuario. Es la idea final... pero para probar no me complica que lo haga momentáneamente. Si usas Linux mayor a 2.6.12, la solución es cambiar el límite de prioridad permitida de los procesos por medio de la capacidad RLIMIT_RTPRIO usando setrlimit. Esto se hace con el siguiente pseudocódigo: // Programa ejecutado con UID=0, cambia los límites setrlimit(...); if(!fork()) { // Cambia a usuario 1000 (por ejemplo) setuid(1000); // Ejecuta el programa execve(); } // Termina. exit(0); Ok... se ve simple el cambio. Obviamente, con manejo de errores, etc. Lamentablemente el programa padre debe todavía ser root, esto es difícil de evitar, ya que de alguna manera se tiene que dar el permiso. cierto... Nota que en versiones de Linux mayores a 2.6.25 puedes también fijar el límite RLIMIT_RTTIME, el cual limita el total de tiempo que un proceso de prioridad RT puede utilizar de una sola vez. Esto sirve para impedir que un proceso RT use el 100% de CPU y haga que el resto del sistema no responda. Ve en el manual de setrlimit. Ok... Por último, si insistes en que el proceso inicial (que fija los límites) no sea ejecutado como root, puedes utilizar el sistema de capacidades de Linux, ve capabilities(7), con énfasis en la sección llamada File Capabilities. La gracia es que, si usas un sistema de archivos que lo soporte, puedes asignar a un ejecutable la capacidad CAP_SYS_NICE, usando setcap cap_sys_nice+p programa. Lee bien, eso si, lo que esto permite al proceso. ok... quedé con bastante pega por delante :-) Lamentablemente, en UBIFS que usamos aquí no hay soporte para capabilities. Ok... pero en definitiva no es tan grave por el momento, el primero objetivo a lograr es evitar el problema de perdida de datos en máquinas pequeñas luego veremos los temas de seguridad y escalamiento de privilegios. Daniel. Gracias estimado amigo por tus comentarios, han sido de mucha utilidad, siempre un gusto compartir experiencias. -- Atentamente. +---+-+ | Ricardo Albarracin B. | email: ral...@gmail.com | +---+-+
Re: Kernel Linux y renice/ionice
El Tue, 1 Feb 2011 12:43:57 -0300 Aldrin Martoq amar...@dcc.uchile.cl escribió: ¿ Has visto sched_setscheduler(2) ? Puedes programar en un sistema real soft en linux, es lo que hace pulseaudio por ejemplo (en top, cuando dice RT). Nunca lo he usado, y no sé si está para ARM, pero lo mas probable es que sí. Gracias Aldrin por tus comentarios, vere este tema. Nos cuentas cómo te va ;) Si... cuando tenga el tema funcionando... gracias de nuevo. Aldrin Martoq http://aldrin.martoq.cl/ -- Atentamente. +---+-+ | Ricardo Albarracin B. | email: ral...@gmail.com | +---+-+
Re: Kernel Linux y renice/ionice
El Tue, 01 Feb 2011 10:02:54 -0300 Davidlohr Bueso d...@gnu.org escribió: On Tue, 2011-02-01 at 09:51 -0300, Ricardo Albarracin B. wrote: El Tue, 01 Feb 2011 09:30:16 -0300 Davidlohr Bueso d...@gnu.org escribió: Este problema no se soluciona necesariamente con linux-rt (o cualquier SO rt). Deberias asegurarte que tengas un preemptive kernel (CONFIG_PREEMPT). Tienes un link a este tema para leer lo que se podría lograr con esta característica? En realidad no :) Basicamente antes (hasta hace solo unos 5/6 anos) el kernel solo cambiaba de contexto cuando el proceso estaba corriendo en espacio usuario. Con kernel preemptive puede cambiar en cualquier situacion, y para tu caso esto es conveniente pues puedes darle a tu programa una prioridad mas alta lo que hara que corra mas y los otros procesos tengan menos tiempo... esto es a muy grandes rasgos, quiza quieras ver: http://en.wikipedia.org/wiki/Preemption_%28computing%29 El tema es que las prioridades deben ser manejadas con ciertos criterios definidos, es por ello que no se trata de sólo cambiar una prioridad.. Suponiendo que sabes compiar el vanilla kernel (no se como cambiar la configuracion especificamente para cada distro), anda al menuconfig Processor type and features Preemption Model Preemptive kernel Esto habilitara el CONFIG_PREEMPT (lo puedes ver en el .config generado), luego compila normalmente. Supones bien... Hay varias aristas en este tema y mucho donde aplicar los esfuerzos, es un tema delicado que hay que entender bien ya que debes comprobar que los cambios realizados al kernel hacen lo que esperas y no es trivial comprobar que así sea. Gracias por los comentarios en todo caso. Suerte. -- Atentamente. +---+-+ | Ricardo Albarracin B. | email: ral...@gmail.com | +---+-+
Lista de programacion
hola a todos disculpen por off-topic pero queria preguntar si alguien conoce alguna lista como esta que te lleguen los mensajes al correo pero que tengan relacion con programacion idealmente JAVA y por desgracias por pega VisualBasic y ASP gracias y disculpen nuevamente
Re: fedora 13 , mi acer one , selinux y yo
Saludos! 2011/2/1 Enrique Herrera Noya enrique.herreran...@gmail.com Tengo la siguiente situación: Se me ocurrió instalar skype problemas de configuración de la cuenta no tuve fue al intentar usar skype 1.- El microfono en la pantalla no me lo toma debo conectar un microfono en el conector lateral En las preferencias de Pulseaudio verifica que microfono tienes seleccionado (la entrada de linea o el microfono frontal). Ademas, cuidado con subirle mucho el volumen! esas cosas de repente generan bastante retorno...\ 2.- el vídeo a veces me funciona y otras no, pense problemas de permisos, mire propietario y grupo de /dev/video0 y agregue usuario al grupo video funciono una ves después no Es un laptop que tienes que habilitar el video? Habilitalo y revisa los permisos. Echale una mirada tambien a udev para ver con que permisos agrega el dispositivo. 3.- Pensé en contexto selinux(lo tengo activo) , lo cambie, tampoco funciona Trata de hacer una regla medio ligera cuando eches a correr skype. 4.- luego reinicio el sistema operativo y cueck , funciona, y todos los programas que antes no me mostraban imagen de la camara, ahora me muestran imagen. Mis sospechas van a udev. Saludos! -- Juan C. Inostroza j...@codemonkey.cl
Re: Lista de programacion
yo tambien pregunto por java con ide eclipse El 1 de febrero de 2011 19:03, zerobatu caa.zerob...@gmail.com escribió: hola a todos disculpen por off-topic pero queria preguntar si alguien conoce alguna lista como esta que te lleguen los mensajes al correo pero que tengan relacion con programacion idealmente JAVA y por desgracias por pega VisualBasic y ASP gracias y disculpen nuevamente
Re: Lista de programacion
El 01/02/2011 19:35, Carlos Francisco Miranda escribió: yo tambien pregunto por java con ide eclipse El 1 de febrero de 2011 19:03, zerobatucaa.zerob...@gmail.com escribió: hola a todos disculpen por off-topic pero queria preguntar si alguien conoce alguna lista como esta que te lleguen los mensajes al correo pero que tengan relacion con programacion idealmente JAVA y por desgracias por pega VisualBasic y ASP gracias y disculpen nuevamente Hola Podrían suscribirse a la lista del JUG Chile http://groups.google.com/group/jugcl?hl=es Saludos