miércoles, febrero 10, 2010

Configurando Glassfish en Windows

Tomado de:
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=InstalacionConfiguracionGlassfish



Fecha de creación del tutorial: 2009-11-11
INSTALACIÓN DE GLASSFISH 2.1

Sitio donde descargar Glassfish:
https://glassfish.dev.java.net/downloads/v2.1-b60e.html

En este tutorial nos veremos cómo instalar el servidor de aplicaciones GlassFish. Además veremos los primeros pasos, como entrar en la consola de administración del servidor, y desplegar una aplicación EAR (Enterprise Application).

DESCARGA E INSTALACIÓN DE GLASSFISH
Para empezar sigamos los siguientes pasos para descargar e instalar el servidor.

1. Descargar el contenido de https://glassfish.dev.java.net/downloads/v2.1-b60e.html, elegir nuestra plataforma de manera adecuada.

2. Copiar dicho contenido el directorio donde lo queramos instalar, en este caso en el disco raíz.

3. Ejecutar el comando “java -Xmx256m -jar filename.jar” donde filename.jar es el nombre del archivo que hemos descargado.




4. En este momento se ejecuta la instalación de Glassfish 2.1. En la siguiente ventana leemos las condiciones de uso y pulsamos Accept



5. Comienza el proceso de instalación, al finalizar nos muestra el mensaje “Installataion Complete”



6. A continuación nos disponemos a configurar el servidor mediante la ejecución del archivo “setup.xml”. Para ello hacemos uso del compilador ANT, en caso de no tenerlo en nuestra máquina, el mismo Glassfish trae una distribución incluida. Ejecutamos el comando:

“lib\ant\bin\ant -f setup.xml”

Comienza el proceso y en la siguiente pantalla veremos que el build ha ido bien:




Si deseamos tener un Glassfish como cluster, en vez del anterior comando, ejecutamos “lib\ant\bin\ant -f setup-cluster.xml”

Si observamos el contenido del archivo setup.xml podemos ver que se trata de opciones de configuración de nuestro servidor (puerto de acceso, clave y usuario inicial...) y de ciertas tareas que se realizan en función del sistema operativo donde estemos instalando (linux, windows, solaris...)



PRIMEROS PASOS
Para iniciar nuestro servidor, desde la consola de comandos y desde el directorio de Glassfish\bin, ejecutamos el comando “asadmin start-domain domain1”. Cuando se inicia el servicio veremos la siguiente ventana:



Una vez iniciado el servidor, podemos acceder a la consola a través del navegador, concretamente a través del puerto por defecto 4848.





Como veíamos en el contenido de setup.xml, el user por defecto era “admin” y el password “adminadmin”.

Para detener nuestro servidor, desde la consola de comandos y desde el directorio de Glassfish\bin, ejecutamos el comando “asadmin stop-domain domain1”.

viernes, febrero 05, 2010

Como Arrancar el Servidor de Acceso en el ISERIES

Tomado de:


http://www-03.ibm.com/systems/i/software/access/linux/guide/cwbcoer.html#StartHostServer


To start all of the host socket servers on the AS/400 system, type the following command at the AS/400 command prompt:
STRHOSTSVR SERVER(*ALL)

To start just the signon server on the AS/400 system, type:
STRHOSTSVR SERVER(*SIGNON *SVRMAP)

To use the socket servers, the QUSER profile on the AS/400 system must be enabled and the password must not be expired. One way to make sure that the QUSER profile is always enabled is to set the password with no expiration time value. To do this, type the following command at the AS/400 prompt:
CHGUSRPRF USRPRF(QUSER) PASSWORD(*NONE) PWDEXP(*NO) STATUS(*ENABLED) PWDEXPITV(*NOMAX)

If you are having trouble starting the host socket servers, try the following:

1. Type STRHOSTSVR SERVER(*ALL) at the AS/400 command prompt.
2. If step 1 does not work, type ENDHOSTSVR SERVER(*ALL) to end the host socket servers, then try step 1 again.
3. If step 2 does not work, type NETSTAT at the AS/400 command prompt. Then select option 3. Work with TCP/IP connection status. Look for any jobs with TCP addresses beside them. End those jobs with option 4, then try step 1 again.

The various servers on the AS/400 system have different timeout values that come into play when the PC goes down before the connection is disconnected. For example, in the case where your PC goes into a hang condition before you can disconnect all of your host server connections and data queues, you will have server jobs active on the AS/400 system until they timeout. This timeout could be minutes, hours, or days, depending on the server.

Ending the host servers does not clean up the jobs running on the AS/400 when the ENDHOSTSVR command is run on the AS/400. The good thing about not cleaning up jobs is that your host server connections and data queues will continue to work after the ENDHOSTSVR command is run. The downside to not cleaning up server jobs on the AS/400 is that jobs that are still active prevent the server from starting when the STRHOSTSVR command is run on the AS/400.

When ending and restarting host servers on the AS/400, you should use the CWBPING command from a Client Access Express workstation to make sure the host servers actually start back up. If they do not start back up, use the NETSTAT command and end any active jobs with TCP/IP addresses next to them.

jueves, enero 28, 2010

Consumiendo desde .Net un Web Service publicado en Java (HttpWebRequest da time out)

Tomado de:

http://snoopdotnet.wordpress.com/2010/01/28/consumiendo-desde-net-un-web-service-publicado-en-java-httpwebrequest-da-time-out/

Consumiendo desde .Net un Web Service publicado en Java (HttpWebRequest da time out) January 28, 2010
Posted by Leandro Romero in .NET, Arquitectura, Diseño, Tips, coding.
Tags: GetRequestStream Time Out, java, troubleshooting, web service
trackback

Buenas gente! Tanto tiempo!

Desde hace un tiempo estoy trabajando en un aplicación que consume unos web services hechos en Java, la cual por momentos tiene bastante concurrencia y operaciones que demandan mucho trabajo para las dos “puntas” que están en juego.

Tengo que aclarar que esta aplicación no la desarrollé yo, la “heredé” digamos. Así que lo que estaba en producción andaba sin problemas. Los usuarios se conectaban, hacían sus operaciones sin mayores problemas, y como no necesitaba mayores mantenimientos esa parte yo no la había tenido demasiado en cuenta.

Hasta que llegó el día que el servicio que exponía el amigo (nótese: AMIGO) java tuvo que sufrir algunos cambios, con lo cual tuve que actualizar referencias del Wsdl en mi solución .Net. Hasta acá nada del otro mundo, agarro el proyecto donde está la referencia Web (sí, está hecho a la antigua porque la aplicación es del 2006) pego la nueva dirección del wsdl y actualizo referencias. Esto hace que la clase que hace de proxy se regenere (básicamente borra lo que estaba y vuelve a armar los archivos necesarios, entre ellos el Reference.cs). Compilo, genero el exe nuevo y le digo al analista: “Deployalo en preproducción para acelerar la salida a producción, total no toqué nada, debería andar como hasta ahora”

Y no, por algo existe Murphy. A los dos días el cliente que estaba haciendo las pruebas en prepro me dice: “Lean, esto que compilaste no anda”. “Cómo que no anda si no toqué nada??!?!” (La excusa del programador nº 1) “No anda, tira un error de conección cuando se conectan 3 usuarios y ejecutan una tarea los 3, fijate el log!”

Y como buen desarrollador profesional que soy, fuí a ver el log y decía:

The operation has timed out System.Net.WebException System.IO.Stream GetRequestStream() at System.Net.HttpWebRequest.GetRequestStream() at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)

“Elemental mi querido Watson” dije al ver el time out, “el server java no está respondiendo”, pero no, la excepción es bastante clara, está fallando al obtener el Request Stream; o sea, no mandó nada todavía, se está preparando para hacer la llamada y falla. Raro, no?

Investigando esa excepción (googleando) en los foros todos eran bastante claros “Flaco, a los stream que abras cerralos, eso te pasa por no cerrarlos: Stream.Close() papá!” (son foros argentinos, por eso) Pero no, yo no me encargo de streams ni nada de eso a mano, porque para eso está el código generado automáticamente por el Visual Studio y este código es el mejor, no tiene errores, es perfecto porque lo hace automático el Visual Studio no?

NO, claramente es la Lección aprendida 1. Según este blog (el único que vi que dió con este problema) que me pasó mi buen amigo Charly es un bug del proxy que se genera automáticamente, para solucionar esto hay que deshabilitar el parámetro KeepAlive del request, más específicamente hacer un override de un método de esa clase y deshabilitarlo y más técnicamente hablando:

protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest webRequest = (HttpWebRequest)base.GetWebRequest(uri);
webRequest.KeepAlive = false;
webRequest.ConnectionGroupName = Guid.NewGuid().ToString();
return webRequest;
}

Puse esto en la clase proxy (la que está en el archivo Reference.cs) y voilà! problema arreglado :)

Ahora, haciendo un poco de reflexión, por qué antes andaba y cuando yo regeneré el cliente tuve que hacer esto??? Para despejar esta duda que no me dejaba dormir, utilicé una herramienta amiga llamada Reflector para ver el código de la dll que se compiló en su momento, ya que dudaba de los fuentes que había heredado y sí, efectivamente estaba esa porción de código de alguien (sólo Dios sabe quien) que se topó con el mismo problema.

Leccion aprendida 2 (y consejo sano, además). Siempre documentar las soluciones “mágicas” que se incluyan en el código, porque uno nunca sabe quién va a ser el pobre santo (o gil) que lo herede y más si se escriben en archivos que se generan automáticamente.

Y ahora sí, el cliente lo probó en test, lo deployamos en preproducción donde fue sometido a estrés sin ningún problema y finalmente salió a producción. Siempre son lindos los finales felices!

Gracias Leandro.

martes, enero 12, 2010

Instalar el GxPLorer6 y GxQuery en w2003

Debido a la serie de problemas surgido por la instalación del GXQuery30 y GxPlorer60 en un servidor Windows 2003, veo la necesidad de documentar esta experiencia justamente para ayudar a quienes se enfrenten con el mismo problema.

1.- Instalar el FrameWork 2
2.- Instalar el IIS.
3.- En una ventana de Dos, ubiquese en C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ luego ejecute aspnet_regiis.exe -i
4.- Instalar el GxQuery30
5.- Instalar el GxPlorer60
6.- Hacemos Inicio,
MI PC
Boton Derecho
Administrar
Servicios y Aplicaciones ( Expandir)
Administrador de Internet Informatio Services(IIS) (Expandir)
Sitios Web
Sitio Web Predeterminado (Expandir)
Extensiones de Servicio Web.



Deben estar habilitados los permisos justamente como consta la gráfica

7.- Si hemos modificado el puerto de acceso del IIS, tenemos que editar los archivos config.ini del Query y GxPlorer, estos esta ubicados generalmente en las carpetas de instalación por omisión, en este caso:
C:\Archivos de programa\ARTech\GXquery\GXquery 3.0\Program\ para el caso de Query
C:\Archivos de programa\ARTech\GXplorer\GXplorer 6.0\Program\ para el caso de GxPlorer

8.- Editamos el archivo config.ini y modificamos la IP y Puerto asignado a IIS para que contemple su utilizacion el Query y GxPlorer, de la siguiente manera:

Para el caso de GxPlorer
C:\Archivos de programa\ARTech\GXplorer\GXplorer 6.0\Program\

[General]
UseKBWrapperCache =Y
UrlWebComponentProvider=http://192.168.202.25/ControlsAndReports60
[MetadataCatalog]
Path=C:\GxplCat

Para el caso de GxQuery
C:\Archivos de programa\ARTech\GXquery\GXquery 3.0\Program\

[General]
UseKBWrapperCache =Y
UrlWebComponentProvider=http://192.168.202.25/ControlsAndReports30
[MetadataCatalog]
Path=C:\GxplCat

9.- Hecho esto procedemos con la autorización de usuarios en los componentes DCOM, para ello procedemos de la siguiente manera:
Inicio
Herramientas administrativas
Servicios de Componentes.


Ahi nos deplega en el panel derecho Equipos
Doble Click y nos desplega Mi PC
Doble Click y nos desplega la siguiente Pantalla


Doble Click en el lugar que recomienda la imagen, para que nos desplegue la siguiente imagen.


Click Boton Derecho en KbWrapper.Wrapper, seleccione propiedades y luego click en la pestaña Seguridades, segun imagen adjunta.



Luego nos desplegara la siguiente imagen:


En Permisos de Inicio y Activación
Click en Personalizar.
Click en Modificar nos desplegara la siguiente pantalla.

Es importantisimo que se incluya todos los usuarios que constan en esta lista, ademas tengan autorizaciones totales, justo como lo demuestra la imagen.
Para seleccionar Cuenta de Invitado a Internet, realice los siguientes pasos.
Click en Agregar
Nos desplegara la siguiente imagen.

Click en el boton Avanzadas
Nos desplegara la siguiente imagen.

Click en Buscar Ahora.
Nos desplegara la siguiente imagen.


Buscar el Usuario IUSR_(Nombre de la PC) en este caso la PC tiene por nombre PRUEBAS-WEB, como consta la imagen señalada en un circulo ROJO.
Luego damos click en el Boton Aceptar.
Nos Desplegara la siguiente imagen.


Click en el boton Aceptar.
Nos desplegara los siguiente imagen.

Para que se ajuste a la imagen debemos dar permisos de:
Ejecución Local.
Ejecución Remota.
Activación Local.
Activación Remota.

A todos los usuarios que constan en la lista.

Luego seleccionamos PERMISOS DE ACCESO
Nos desplegará la siguiente pantalla, adicionar los usuarios que no consten en la lista sobre todo el Usuario ANONYMOUS LOGON con los permisos sugeridos segun la imagen.


Luego seleccionamos de Configuración
Nos desplegará la siguiente pantalla.

Nos desplegará la siguiente pantalla, adicionar los usuarios que no consten en la lista sobre todo el Usuario ANONYMOUS LOGON con los permisos sugeridos segun la imagen.

Es importante que con GXPlorer Settings se asigne o se cree un usuario administrador con todos los derechos sobre la Metadata, para luego asignar los respectivos permisos a los demas usuarios.

Seguidamente en una pantalla de DOS, ejecutamos el comando iisreset, para que el IIS se reinicie.
Y Procedemos hacer las pruebas respectivas de funcionamiento con las datos de pruebas.

Ejecutar GxPlorer Settings, modificar las preferencias, Idioma y crear un usuario como supervisor.

miércoles, enero 06, 2010

Creacion de Cuenta Gratis para AS400 (Gratis y en Español)

Tomado de:
http://www.taringa.net/posts/ebooks-tutoriales/2789733/Cuenta-as400-gratis-+-emuladores-ISeries-IBM--%28recomendado%29.html

Joomla o Drupal

Tomado de:
http://www.taringa.net/posts/info/3523933/Drupal-vs_-Joomla.html

Drupal vs. Joomla: una comparativa sincera de un consultor de IBM

Esto es una traducción de un artículo (más o menos literal pero no siempre) de TopNotchThemes



Fuimos muy afortunados recientemente porque un consultor de IBM compró uno de nuestros temas de Drupal para un proyecto personal. Antes de comprar el tema, discutimos un poco acerca de Drupal y Joomla, centrándonos en las diferencias entre las funcionalidades y el diseño.

Digo afortunadamente porque el consultor evaluó los dos CMS's. Recibí un email con una comparativa fascinante y detallada de sus primeras experiencias con Drupal y con Joomla. Me permitieron poner esta entrada (de forma anónima) aquí en nuestro blog para que la comunidad pudiese beneficiarse de esta gran escrito.

Sólo diré que a) estoy de acuerdo con todo lo dicho aquí, y b) las buenas noticias son que casi todo en lo que flojea Drupal será corregido (o por lo menos es la intención) en Drupal 7. Veo a la comunidad de Drupal poniendo mucho esfuerzo de muchas maneras trabajando en la preconfiguración/"population" de un sitio (Installation profiles, Patterns, Spaces, Drush, etc).

Escrito del consultor de IBM:
Aquí están mis observaciones de Drupal después de 40-50 horas con la herramienta (tengo experiencia con Joomla, DotNetNuke, por supuesto con la solución de IBM: Websphere Portal, WCM y Portlet Factory. Planeo evaluar alguno otro en unos días antes de decidirme. Los costes de hosting y de desarrollo de Websphere Portal son demasiado altos o ya estaría usando la solución de IBM.

Drupal vs. Joomla

Construcción del Sitio:

Flexibilidad y Potencia: Drupal es significativamente más potente y mucho más flexible. Parece que Views, CCK, Panels, etc le dan a Drupal una enorme ventaja sobre Joomla. Simplemente no puedes tener esa flexibilidad con Joomla. Los desarrolladores de Joomla cuando lo diseñaron no tuvieron en cuenta la flexibilidad. Puedes construir algo muy rápido con Joomla pero toparán con un muro antes o temprano.

Rendimiento:

En mis tests iniciales Drupal superó ampliamente a Joomla. Con la nueva versión de Joomla, the good template makers junk them up with gee-whiz gadgets that are not suitable for the enterprise (esto no sé cómo traducirlo exactamente)

Curva de aprendizaje:

Joomla es de largo más fácil de configurar y poner en marcha. Incluso con los todos vídeos gratis, blogs, etc, Drupal todavía es un desafío. Veo grandes oportunidades para un negocio aquí.

Plantillas:

Joomla gana por un amplio margen. Por ejemplo, empresas como Joomlart, Joomlashack hacer un buen trabajo. Las empresas de temas para Drupal son muy malas. Lo que se necesita es una estrategia de plantillas que simule los requisitos para las webs más importantes del país y incluya módulos, bloques, etc que funcionen directamente para facilitar a las empresas un punto de partida. Por ejemplo, con nuestro producto Websphere Portal ofrecemos increíbles temas y skins que son muy sólidos y profesionales y sin ningún problema. Creo que vosotros (se refiero a los de Top Notch Themes) tenéis una buena estrategia de entrada pero estás perdiendo una gran oportunidad de ofrecer lo que las empresas realmente quieren.

Vuestras plantillas son las mejores que he visto, pero una empresa que está empezando con Drupal todavía tiene una enorme rampa que subir para conseguir que un web de noticias, una revista, etc se vea bonita. Joomlart ofrece su plantilla Tenilne II con una instalación especial que te da todos los datos de ejemplo y todos los componentes en su sitio. Todo está en su sitio.

Finalmente, el mayor problema con las plantillas en Drupal es que los desarrolladores olvidaron completamente una de las claves que cualquier evaluador mira: el sistema de menú. Si no tienes un sistema profesional de menú en tu web parecerá que tienes una web de baja calidad. Las otras cosas importantes son: Layout, gráficos, velocidad son cosas críticas y a los desarrolladores (supongo que de temas) de Drupal parece que no les importa.

Programadores:

Basado en mi limitada experiencia parece que los programadores de Drupal son mucho más profesionales, habilidosos y disciplinados. Los buenos programadores de Joomla son escasos. Debe ser algo relacionado con la cultura de Drupal. Estoy seguro que los desarrolladores de Joomla están muy capacitados pero simplemente no tienen el mismo rigor.

Admin:

El panel de control de la administración de Drupal es malo. La separación entre el "front-end" y el "backend" es débil y confusa. Joomla es mucho mejor.

Editor de contenido:

El sistema de taxonomías de Drupal es excelente. La aproximación de Joomla es pobre (los tipos de contenido están confinados a una sección/categoría). La consola de administración de Joomla es mucho más fácil para organizar y encontrar contenido. El WYSIWYG de Joomla es mucho mejor que las opciones que existen en Drupal.

Construcción de contenido:

Las herrameintas de Drupal son, muy, muy buenas, aunque no tanto cómo las herramientas de IBM, pero son increiblemente mejores que las de Joomla. Me gusta CCK, Views y me pregunto porque no forman parte del core. Parece raro. Con Joomla puedes conseguir componente que ofrezcan el 60-80% de lo que necesitas. Por ejemplo, iJoomla tiene un tremendo componente de noticias, pero nunca llegará a las capacidades de CCK, Views, etc.

Implementación multicapa:

Estoy sorprendido de que no haya buenos tutoriales y artículos sobre la correcta manera de implementar entornos de desarrollo, de test y etapas. Las comunidades de Drupal y Joomla sufren en este sentido. También, un backup y restore no están direccionadas adecuadamente. La comunidad de Drupal está despistada en esta asunto. Joomla tiene al menos dos buenas soluciones. Si decidiese recomendar Drupal para un sitio en producción, recomendaría usar Xcloner de Joomlaplug, este producto funcionaría con Drupal y hacer backups y restores de un sitio web y de la base de datos.

Resumen:

Usa Joomla si quieres tener un sitio bonito de forma rápida y puedes afrontar tener un sistema más lento, una categorización de contenido rígida y unas opciones de configuración y de diseño limitadas.
Usa Drupal si quieres alto rendimiento, escalabilidad, buen gestor de contenido y una flexibilidad de diseño significativa. Pero prepárate para gastar un montón de dinero/tiempo en conseguir un sitio profesional.

En Eternal Fight creé hace un tiempo un lucha entre Drupal vs Joomla.

martes, enero 05, 2010

DBRET no considera las PK de tablas del iSeries

Descripción : DBRET no considera las PK de tablas del iSeries

Se tiene una base de datos creada en el iSeries que se accede con el DBRET. En el reporte final se puede ver que el DBRET no creará ninguna TRN para las tablas, aparecen solo los Data View, todos ellos con el siguiente warning: "The table doesn't have primary key"

Descripción Detallada
Esto suele suceder cuando la tablas del iSeries fueron creadas como DDS compiladas (como lo hace el generador RPG/COBOL de Genexus) y se selecciona como DBMS en la conexión del DBRET el "DB2 for iSeries".

Para las tablas que fueron creadas de esa forma, se debe seleccionar como DBMS la opción "iSeries Native". La opcion "Db2 for iSeries" es para tablas credas como SQL Collection.

Una de las diferencias entre DDS y SQL Collection es jutamente la forma de definir los índices o lógicos en el iSeries, por lo tanto es importante seleccionar el DBMS correspondiente en cada caso.

Ajuste de la memoria usada por SQL Server 2005

Tema

Microsoft SQL Server 2005 or Express is using all of the available memory on your VPS. Microsoft SQL Server 2005 o Express utiliza toda la memoria disponible en su VPS. SQL Server memory usage may continue to steadily increase and not decrease, even when activity on the server is low. El uso de memoria de SQL Server puede seguir de manera constante aumento y no disminuye, incluso cuando la actividad en el servidor es baja.
Reason Exposición de motivos

By default, SQL Server dynamically grows and shrinks the size of its buffer pool (cache) depending on the physical memory load reported by the operating system. De forma predeterminada, SQL Server de forma dinámica crece y disminuye el tamaño de su pool de buffer (cache) en función de la carga de la memoria física reportado por el sistema operativo. When MSSQL is installed, the maximum server memory value is set by default to approximately 2,000 GB. Cuando se instala MSSQL, el máximo valor de la memoria del servidor está configurado por defecto a unos 2.000 GB. If your VPS is only running MSSQL, this value is fine. Si el VPS es sólo correr MSSQL, este valor está muy bien. If you are running additional applications such as IIS, SMTP and other services on your server, you will want to adjust this value so that MSSQL shares memory with other applications on the server. Si está ejecutando aplicaciones adicionales, tales como IIS, SMTP y otros servicios en su servidor, tendrá que ajustar este valor, de modo que las cuotas de MSSQL de memoria con otras aplicaciones en el servidor.
How to adjust the memory used by SQL Server 2005 ¿Cómo ajustar la memoria usada por SQL Server 2005

The steps below apply to both SQL Server 2005 and SQL Express. Los pasos siguientes se aplican a SQL Server 2005 y SQL Express.

1. Log into Microsoft SQL Server Management Studio Express or Workgroup either directly on your VPS or from your local machine Inicie sesión en Microsoft SQL Server Management Studio Express o grupo de trabajo, ya sea directamente en su VPS o de su máquina local
2. Right click the SQL server name and select Properties Haga clic en el nombre del servidor SQL y seleccione Propiedades en




3.- Seleccione la ficha Memoria




4.- Ajustar la memoria del servidor mínima y máxima de memoria del servidor, tambien es importante revisar la cantidad que posee el servidor y en este caso intentar reducir para que no llegue a consumir lo maximo que pueda.
5.- Click OK Haga clic en Aceptar

Modificar formato de Fecha y Punto Decimal en GX 9

0.- En Diseño Modificar el Lenguaje del Modelo a Spanish.
1.- Editar un objeto tipo Language llamado Spanish.
2.- Luego vamos a Propiedades y Modificamos la que deseamos
Date Format.
Decimal Separator.
3.- Aceptamos
4.- Volvemos a generar los objetos
5.- Ejecutamos la aplicacion

lunes, enero 04, 2010

Revisar Puertos

Como revisar los puertos TCP/IP abiertos por aplicaciones o servicios
September 14th, 2007
Goto comments Leave a comment

Esta es una pregunta que constantemente me hacen y es en verdad muy sencillo. Es una situación típica que al instalar una nueva aplicación, esta no suba porque un puerto que necesita abrir esta siendo usada por otra aplicación pero como hago para saber cual puerto y cual aplicación para cambiarlos.

La primero que se le ocurre a muchos es mirar el Task Manager, pero este solo muestra los procesos activos pero no da ninguna indicación de los puertos abiertos por dichos procesos. Una forma muy sencilla y sin requerir software adicional es usar el comando netstat y combinarlo con la información que muestra el Task Manager. Primero veamos el comando netstat, para mostrar las ayudas en una ventana de comando ejecutamos netstat /? y esto es lo que conseguimos:

Displays protocol statistics and current TCP/IP network connections.

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]

-a Displays all connections and listening ports.
-b Displays the executable involved in creating each connection or
listening port. In some cases well-known executables host
multiple independent components, and in these cases the
sequence of components involved in creating the connection
or listening port is displayed. In this case the executable
name is in [] at the bottom, on top is the component it called,
and so forth until TCP/IP was reached. Note that this option
can be time-consuming and will fail unless you have sufficient
permissions.
-e Displays Ethernet statistics. This may be combined with the -s
option.
-f Displays Fully Qualified Domain Names (FQDN) for foreign
addresses.
-n Displays addresses and port numbers in numerical form.
-o Displays the owning process ID associated with each connection.
-p proto Shows connections for the protocol specified by proto; proto
may be any of: TCP, UDP, TCPv6, or UDPv6. If used with the -s
option to display per-protocol statistics, proto may be any of:
IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP, or UDPv6.
-r Displays the routing table.
-s Displays per-protocol statistics. By default, statistics are
shown for IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP, and UDPv6;
the -p option may be used to specify a subset of the default.
-t Displays the current connection offload state.
interval Redisplays selected statistics, pausing interval seconds
between each display. Press CTRL+C to stop redisplaying
statistics. If omitted, netstat will print the current
configuration information once.

Algo curioso es que en las ayudas de microsoft la opción -b no se presenta, creo que fue agregada en un service pack. Antes de la opción -b lo que yo hacia era ejecutar el comando netstat con las opciones -noa así:

netstat -noa

Con estas tres banderas los datos que nos aparecen son estos:


Tomado de:
http://blog.cardila.com/2007/09/14/como-revisar-los-puertos-tcpip-abiertos-por-aplicaciones-o-servicios/

Protocolo (TCP o UDP), Dirección IP local, Dirección IP Remota, estado y PID (Process ID). Este último nos indica cual es el identificado del proceso que esta abriendo el puerto. Pero con el identificador del proceso todavia no sabemos el nombre del proceso y es aqui donde entra el Task Manager. Si abrimos el Task Manager (Control + Alt + Del), vemos la lista de los procesos y tambien podemos ver el PID. Por defecto esta columna (PID) no aparece en la lista así que debemos agregarla, para ello hacermos clic en el tab Processes y entramos a View | Select Columns en el menú. Seleccionamos la columna PID (Process Identifier) y hacemos clic en OK.





Ahora podemos asociar el PID de nuestro comando netstat con el PID de la ventana Task Manager y ya tenemos el nombre del proceso.

Podemos tambien usar la opción -b y no necesitamos al Task Manager pero requerimos ejecutar la ventana de comandos con usuario administrador, si es que estamos usando Windows Vista como nuestro sistema operativo, el comando netstat con la opción -b requiere elevación. Nuestro comando sería:

netstat -bnoa



Este comando nos muestra además de la información que ya habiamos mencionado, el nombre del proceso, bastante mas rápido y directo que con el Task Manager pero requiere elevación en Vista.

miércoles, diciembre 23, 2009

Redireccionar Paginas en Tomcat - Pagina de inicio

Para rediccionar una pagina web al ejecutar el tomcat, por ejemplo

http://localhost:8080 siempre carga la pagina que esta en la carpeta de webapps\ROOT\ en este casi index.html que es la pagina de inicio del tomcat.

Pero se puede modificar en el web.xml indicando que paginas cargar en su prioridad, como es el caso del siguiente ejemplo:

indice.html
index.html
index.htm
index.jsp

Cuando se invoke en el browse http://localhost:8080 cargara la pagina indice.html e invocara automaticamente el servlet indice.html.

La primera pagina que cargar es indice.html, esta parte esta al final del archivo web.xml
Cambiar la página inicial del tomcat para que cargue un contexto determinado

   La respuesta la tenemos en las FAQ de Tomcat aunque un poco escondida. Ahí nos indican que en $TOMCAT_HOME/conf/web.xml se encuentra una lista con los archivos que cargará el servidor en caso de que existan y el orden en que lo hará.
El primer paso por tanto es renombrar o eliminar los archivos index.html, index.htm e index.jpg. Y posteriormente crear un archivo estático index.html con el contenido que nos indican, en mi caso sería:
<html>
  <head>
    <meta http-equiv="refresh" content="0;URL=http://wwww.vendozhumir.com.ec/">
  </head>
  <body>
  </body>
</html>
   Con esto conseguimos que escribiendo en el navegador la url http://localhost:8080, el servidor Tomcat nos redireccione automáticamente a http://localhost:8080/vendozhumir/. Pero aún así no es suficiente.


Definir la página por defecto de un contexto
   Cuando se carga un contexto tenemos que indicar explícitamente la página que queremos cargar. En la mayoría de las ocasiones el usuario no la conoce, y tampoco tiene que hacerlo. La solución pasa por configurar en el archivo web.xml del contexto la página por defecto. En mi caso el archivo es $TOMCAT_HOME/webapps/vendozhumir/web.xml y simplemente he añadido lo siguiente:
 
<welcome-file-list>
<welcome-file>mipaginainicial.html</welcome-file>
</welcome-file-list>
 
Tomado de: configurar la pagina por defecto 
 
Aqui se detalla algunas alternativas sobre el tema
 
Tomado de: Tres Metodos para redireccionar una pagina 
Muchas veces tenemos la necesidad de realizar un redireccionamiento entre una y otra página. Si el servidor contaba con soporte para lenguajes como ASP, CGI o PHP esto era muy fácil, pero para aquellos que no lo tienen, pueden utilizar alguno de los siguientes métodos.
1- Inserta el siguiente script entre las etiquetas <head> y </head>:
<head>
       <script languaje="JavaScript">
              location.href='direccion.html';
       </script>
</head>

2 - Otro método puede ser agregando la acción OnLoad dentro del Body:
        <BODY onLoad = "parent.location = 'Direccion.html'">
3 - También se suele utilizar la etiqueta meta Refresh, para redireccionar a X cantidad de segundos:
      <META HTTP-EQUIV="Refresh" CONTENT="0;URL=direccion.html">
0 es la cantidad de segundos que va a esperar antes de realizar la redirección
Y direccion.html es la página a redireccionar, tambien puede ser otro sitio como http://www.misitio.com

martes, diciembre 22, 2009

Teoria de los Juegos - Parte Dos

Tomado de:
http://www.taringa.net/posts/info/790335/Adrian-Paenza-IV_-P-12-15_02_2006_-El-juego-de-los-Numeros-N.html

El juego de los números naturales

Por Adrián Paenza
Ahora que se ha puesto de moda hablar sobre La Teoría de Juegos*, vale la pena plantear alguno de los problemas más característicos y atractivos que hay. El que sigue, justamente, es un desafío precioso y sutil. Es, además, muy interesante para pensar.

Supongamos que hay dos personas que van a jugar al siguiente juego. A cada uno de ellos se le va a colocar en la frente un número natural (es decir, se llaman naturales los números 1, 2, 3, 4, 5... etcétera). Sin embargo, la particularidad es que los números van a ser consecutivos. Por ejemplo, el 14 y el 15, o el 173 y el 174, o el 399 y el 400.

Obviamente, no se les dice qué número tiene cada uno, pero cada uno, a su vez, puede ver el número del otro. Gana el juego aquel que es capaz de decir qué número tiene escrito en la frente, pero dando una explicación de por qué dice lo que dice.

Se supone que ambos jugadores razonan perfectamente y sin errores, y esto es un dato no menor: saber que los dos jugadores tienen la misma capacidad de razonamiento y que no cometen errores es crucial para el juego (aunque no lo parezca).

La pregunta es: ¿es posible que alguno de los dos competidores pueda ganar el juego? Es decir, ¿podrá en algún momento uno de ellos decir “yo sé que mi número es ‘n’”?

Por ejemplo: si usted jugara contra otra persona, y usted viera que en la frente de su rival hay pintado un número “1”, su reacción debería ser inmediata. Ya ganó, porque usted podría decir: “Tengo el ‘2’”. Usted puede afirmar con certeza que su número es el “2”, porque como no hay números más chicos que 1 y ése es justo el que tiene el otro competidor, usted, inexorablemente tiene el “2”.

Este sería el ejemplo más sencillo. Ahora, planteemos uno un poco más complicado. Supongamos que usted ve que la otra persona tiene pintado el “2”. Si usted se dejara llevar por las reglas que le fueron explicadas, en principio, lo escribo otra vez, en principio, usted no podría decir nada con certeza. Porque, en principio, usted podría tener o bien el “1”, o bien el “3”.

Sin embargo, aquí interviene otro argumento: si su rival, que es tan perfecto como usted, que razona tan rápido como usted, que puede elaborar ideas exactamente igual que usted, no dijo nada hasta ahí, es porque él no está viendo que usted tiene el “1”. Si no, él ya hubiera gritado que tiene el “2”. Pero como no dijo nada, esto significa que usted no tiene el “1”. Por lo tanto, aprovechando que él no dice nada, es usted el que habla y dice: “Yo tengo el ‘3’”.

Y cuando le pregunten, “¿y usted cómo sabe, si usted está viendo que él tiene el ‘2’?, ¿qué otros argumentos usó?”, usted contestará: “Vea, yo vi que él tenía el ‘2’, pero como él no dijo nada, esto significa que yo no tenía el ‘1’ porque, si no, él hubiera sabido inmediatamente qué número tenía”. Y punto.

Es decir, en la Teoría de Juegos, no importa solamente lo que hace usted, o lo que usted ve, sino también importa (y mucho) lo que hace el otro. Aprovechando lo que hace (o, en este caso, lo que no hizo el otro, que es también una manera de hacer), es que usted pudo concluir qué número tenía.

Ahora, podríamos seguir.

Hagamos un paso más. Si usted viera que el otro tiene un “3” en la frente, entonces eso significaría que usted tiene el “2” o el “4”. Pero si usted tuviera el “2”, y su contrincante está viendo que usted lo tiene (al “2”) pero usted no habla, no dice nada rápido, entonces esto le está indicando a él que él no tiene el “1”. Si así fuera, su rival diría, “Yo tengo el ‘3’”.Y aquí está el punto. Como él no dijo nada (su rival), eso significa que usted no tiene el “2” sino que tiene el “4”. Y usted se apura y grita: “Yo tengo el ‘4’”. Y gana.

Con esta misma idea, uno podría avanzar aún más y usar números cada vez más grandes. ¿Podrá ganar alguno entonces? La pregunta queda abierta.

Este tipo de argumentos (llamados inductivos) requieren –como se ve– de razonamientos hilvanados, finos y sutiles, pero todos comprensibles si uno no se pierde en la maraña de las letras. Le propongo, por lo tanto, que se entretenga un rato pensándolo solo.

Aunque no parezca, todo esto también es hacer matemática. La discusión queda centrada entonces en cuán rápido razonan los jugadores y cuánto tiempo debería esperar para gritar su número o hacer una declaración que se basa en lo que el otro no dijo o no declaró.

Uno podría suponer que lo que quedó aquí descripto es una paradoja, porque aparece como posible que sólo sabiendo el número del otro y con la regla de que ambos participantes tienen números consecutivos, uno pueda deducir el número propio. Lo interesante es que los datos con los que se cuenta son más de los que uno advierte en principio. Los silencios del otro, o el tiempo que tarda en no decir lo que debiera si él viera lo que usted podría tener, le están dando una información adicional a usted.

Y en algún sentido, es singular también cómo el conocimiento va cambiando con el paso del tiempo. En la vida real, uno debería aplicar también este tipo de razonamientos, que se basan no sólo en lo que uno percibe sino también en lo que hace (o no hace) el otro.

* Los ganadores del Premio Nobel de Economía 2005, el israelí Robert J. Aumann y el norteamericano Thomas C. Shelling, lo consiguieron gracias a sus aportes a la Teoría de Juegos. La propia Academia Sueca, encargada de decidir a quiénes condecora, subrayó: “¿Por qué algunos grupos de individuos, organizaciones o países tienen éxito en promover cooperaciones y otros sufren y entran en conflicto?”. Tanto Aumann como Schilling han usado en sus trabajos la Teoría de Juegos para explicar conflictos económicos como la batalla de precios y situaciones conflictivas que llevan –a algunos de ellos– a la guerra.

Schelling dijo que no conocía personalmente al coganador, pero que mientras “él se dedica a producir avances en la Teoría de Juegos, yo soy quien aprovecha lo que él hace para aplicarlo en mi trabajo. Es decir: él produce, yo uso lo que él hace”

Teoria de los Juegos

Tomado de:

http://www.taringa.net/posts/info/872598/La-Teoria-de-Juegos.html

Eh aqui una pequeña monografia de la llamada Teoria de Juegos, les recomiendo que le den una leia que es bastante interesante

La Teoría de Juegos se desarrollo con el simple hecho de que un individuo se relacionara con otro u otros. Hoy en día, es fácil enfrentarse cotidianamente a esta teoría, en cualquier momento, tenemos por ejemplo cuando nos inscribimos en un nuevo semestre en la universidad, cuando la directiva toma la decisión sobre el monto que se va a cobrar, la directiva está realizando un juego con sus clientes, en este caso los alumnos. Para el hombre la importancia que representa la Teoría de Juegos es evidente, pues a diario se enfrenta a múltiples situaciones que son juegos.

Actualmente la Teoría de Juegos se ocupa sobre todo de que ocurre cuando los hombres se relacionan de forma racional, es decir, cuando los individuos se interrelacionan utilizando el raciocinio.

INTRODUCCIÓN A LA TEORÍA DE JUEGOS

Los psicólogos destacan la importancia del juego en la infancia como medio de formar la personalidad y de aprender de forma experimental a relacionarse en sociedad, a resolver problemas y situaciones conflictivas. Todos los juegos, de niños y de adultos, juegos de mesa o juegos deportivos, son modelos de situaciones conflictivas y cooperativas en las que podemos reconocer situaciones y pautas que se repiten con frecuencia en el mundo real.

El estudio de los juegos ha inspirado a científicos de todos los tiempos para el desarrollo de teorías y modelos matemáticos. La estadística es una rama de las matemáticas que surgió precisamente de los cálculos para diseñar estrategias vencedoras en juegos de azar. Conceptos tales como probabilidad, media ponderada y distribución o desviación estándar, son términos acuñados por la estadística matemática y que tienen aplicación en el análisis de juegos de azar o en las frecuentes situaciones sociales y económicas en las que hay que adoptar decisiones y asumir riesgos ante componentes aleatorios.

Pero la Teoría de Juegos tiene una relación muy lejana con la estadística. Su objetivo no es el análisis del azar o de los elementos aleatorios sino de los comportamientos estratégicos de los jugadores. En el mundo real, tanto en las relaciones económicas como en las políticas o sociales, son muy frecuentes las situaciones en las que, al igual que en los juegos, su resultado depende de la conjunción de decisiones de diferentes agentes o jugadores. Se dice de un comportamiento que es estratégico cuando se adopta teniendo en cuenta la influencia conjunta sobre el resultado propio y ajeno de las decisiones propias y ajenas.

La técnica para el análisis de estas situaciones fue puesta a punto por un matemático, John von Neumann. A comienzos de la década de 1940, este trabajó con el economista Oskar Morgenstern en las aplicaciones económicas de esa teoría. El libro que publicaron en 1944, "Theory of Games and Economic Behavior", abrió un insospechadamente amplio campo de estudio en el que actualmente trabajan miles de especialistas de todo el mundo.

La Teoría de Juegos ha alcanzado un alto grado de sofisticación matemática y ha mostrado una gran versatilidad en la resolución de problemas. Muchos campos de la Economía (Equilibrio General, Distribución de Costos, etc.), se han visto beneficiados por las aportaciones de este método de análisis. En el medio siglo transcurrido desde su primera formulación el número de científicos dedicados a su desarrollo no ha cesado de crecer. Y no son sólo economistas y matemáticos sino sociólogos, politólogos, biólogos o psicólogos. Existen también aplicaciones jurídicas: asignación de responsabilidades, adopción de decisiones de pleitear o conciliación, etc.

Hay dos clases de juegos que plantean una problemática muy diferente y requieren una forma de análisis distinta:

1. Si los jugadores pueden comunicarse entre ellos y negociar los resultados se tratará de juegos con transferencia de utilidad (también llamados juegos cooperativos), en los que la problemática se concentra en el análisis de las posibles coaliciones y su estabilidad.

2. En los juegos sin transferencia de utilidad, (también llamados juegos no cooperativos) los jugadores no pueden llegar a acuerdos previos; es el caso de los juegos conocidos como "la guerra de los sexos", el "dilema del prisionero" o el modelo "halcón-paloma".

Los modelos de juegos sin transferencia de utilidad suelen ser bipersonales, es decir, con sólo dos jugadores. Pueden ser simétricos o asimétricos según que los resultados sean idénticos desde el punto de vista de cada jugador. Pueden ser de suma cero, cuando el aumento en las ganancias de un jugador implica una disminución por igual cuantía en las del otro, o de suma no nula en caso contrario, es decir, cuando la suma de las ganancias de los jugadores puede aumentar o disminuir en función de sus decisiones. Cada jugador puede tener opción sólo a dos estrategias, en los juegos biestratégicos, o a muchas. Las estrategias pueden ser puras o mixtas; éstas consisten en asignar a cada estrategia pura una probabilidad dada. En el caso de los juegos con repetición, los que se juegan varias veces seguidas por los mismos jugadores, las estrategias pueden ser también simples o reactivas, si la decisión depende del comportamiento que haya manifestado el contrincante en jugadas anteriores.

ORIGEN

La Teoría de Juegos fue creada por Von Neumann y Morgenstern en su libro clásico "The Theory of Games Behavior", publicado en 1944. Otros habían anticipado algunas ideas. Los economistas Cournot y Edgeworth fueron particularmente innovadores en el siglo XIX. Otras contribuciones posteriores mencionadas fueron hechas por los matemáticos Borel y Zermelo. El mismo Von Neumann ya había puesto los fundamentos en el artículo publicado en 1928. Sin embargo, no fue hasta que apareció el libro de Von Neumann y Morgenstern que el mundo comprendió cuán potente era el instrumento descubierto para estudiar las relaciones humanas.

Durante las dos décadas que siguieron a la Segunda Guerra Mundial, uno de los progresos más interesantes de la Teoría Económica fue la Teoría de los Juegos y el comportamiento económico, publicada en un libro de este titulo bajo la autoridad conjunta de Jhon Von Neumann y Oskar Morgenstern. Actualmente, el consenso parece ser que la Teoría de los Juegos es más relevante al estudio de problemas comerciales específicos que a la teoría económica general, por que representa un enfoque único al análisis de las decisiones comerciales en condiciones de intereses competitivos y conflictivos.

En los últimos años, sus repercusiones en la teoría económica sólo se pueden calificar de explosivas. Todavía es necesario, sin embargo, saber algo de la corta historia de juegos, aunque sólo sea para entender por qué se usan algunos términos.

Von Neumann y Morgenstern investigaron dos planteamientos distintos de la Teoría de Juegos. El primero de ellos el planteamiento estratégico o no cooperativo. Este planteamiento requiere especificar detalladamente lo que los jugadores pueden y no pueden hacer durante el juego, y después buscar cada jugador una estrategia óptima. Lo que es mejor para un jugador depende de lo que los otros jugadores piensan hacer, y esto a su vez depende de lo que ellos piensan del primer jugador hará. Von Neumann y Morgenstern resolvieron este problema en el caso particular de juegos con dos jugadores cuyos intereses son diametralmente opuestos. A estos juegos se les llama estrictamente competitivos, o de suma cero, porque cualquier ganancia para un jugador siempre se equilibra exactamente por una pérdida correspondiente para el otro jugador. El Ajedrez, el Backgamón y el Póquer son juegos tratados habitualmente como juegos de suma cero.

La segunda parte del libro de Von Neumann y Morgenstern, se desarrolla el planteamiento coalicional o cooperativo, en el que buscaron describir la conducta óptima en juegos con muchos jugadores. Puesto que éste es un problema mucho más difícil, no es de sorprender que sus resultados fueran mucho menos precisos que los alcanzados para el caso de suma cero y dos jugadores. En particular, Von Neumann y Morgenstern abandonaron todo intento de especificar estrategias óptimas para jugadores individuales. En lugar de ello se propusieron clasificar los modelos de formación de coaliciones que son consistentes con conductas racionales. La negociación, en cuanto a tal, no jugaban papel alguno en esta teoría. De hecho, hicieron suyo el punto de vista, que había predominado entre los economistas al menos desde la época de Edgeworth, según el cual los problemas de negociación entre dos personas son inherentemente indeterminados.

A principio de los años cincuenta, en una serie de artículos muy famosos el matemático John Nash rompió dos de las barreras que Von Neumann y Morgenstern se había auto-impuesto. En el frente no cooperativo, estos parecen haber pensado que en estrategias la idea de equilibrio, introducida por Cournot en 1832, no era en sí misma una noción adecuada para construir sobre ella una teoría (de aquí que se restringieran a juegos de suma cero). Sin embargo, la formulación general de Nash de la idea de equilibrio hizo ver claramente que una restricción así es innecesaria. Hoy día, la noción de equilibrio de Nash, la cual no es otra cosa que cuando la elección estratégica de cada jugador es la respuesta óptima a las elecciones estratégicas de los otros jugadores. A Horace y Maurice les fueron aconsejados, por su consultor especialista en Teoría de Juegos, que usaran un equilibrio de Nash. Es tal vez, el más importante de los instrumentos que los especialistas en Teoría de Juegos tienen a disposición. Nash también hizo contribuciones al planteamiento cooperativo de Von Neumann y Morgenstern.

Nash no aceptó la idea de que la Teoría de Juegos debe considerar indeterminados problemas de negociación entre dos personas y procedió a ofrecer argumentos para determinarlos. Sus ideas sobre este tema fueron generalmente incomprendidas y, tal vez como consecuencia de ello, los años que la Teoría de Juegos paso en Babia se gastaron principalmente desarrollando el planteamiento cooperativa de Von Neumann y Morgenstern en direcciones que finalmente resultaron improductivas.

John Von Neumann, 1903-1957

John von Neumann es un matemático húngaro considerado por muchos como la mente más genial del siglo XX, comparable solo a la de Albert Einstein. A pesar de ser completamente desconocido para el "hombre de la calle", la trascendencia práctica de su actividad científica puede vislumbrarse al considerar que participó activamente en el Proyecto Manhattan, el grupo de científicos que creó la primera bomba atómica, que participó y dirigió la producción y puesta a punto de los primeros ordenadores o que, como científico asesor del Consejo de Seguridad de los Estados Unidos en los años cincuenta, tuvo un papel muy destacado (aunque secreto y no muy bien conocido) en el diseño de la estrategia de la guerra fría. Nicholas Kaldor dijo de él "Es sin duda alguna lo más parecido a un genio que me haya encontrado jamás".

Nació en Budapest, Hungría, hijo de un rico banquero judío. Tuvo una educación esmerada. Se doctoró en matemáticas por la Universidad de Budapest y en químicas por la Universidad de Zurich. En 1927 empezó a trabajar en la Universidad de Berlín. En 1932 se traslada a los Estados Unidos donde trabajará en el Instituto de Estudios Avanzados de Princeton.

Sus aportaciones a la ciencia económica se centran en dos campos:

* Es el creador del campo de la Teoría de Juegos. En 1928 publica el primer artículo sobre este tema. En 1944, en colaboración con Oskar Morgenstern, publica la Theory of Games and Economic Behavior. La Teoría de Juegos es un campo en el que trabajan actualmente miles de economistas y se publican a diario cientos de páginas. Pero además, las formulaciones matemáticas descritas en este libro han influido en muchos otros campos de la economía. Por ejemplo, Kenneth Arrow y Gerard Debreu se basaron en su axiomatización de la teoría de la utilidad para resolver problemas del Equilibrio General.
* En 1937 publica A Model of General Economic Equilibrium", del que E. Roy Weintraub dijo en 1983 ser "el más importante artículo sobre economía matemática que haya sido escrito jamás". En él relaciona el tipo de interés con el crecimiento económico dando base a los desarrollos sobre el "crecimiento óptimo" llevado a cabo por Maurice Allais, Tjalling C. Koopmans y otros.

Oskar Morgenstern, 1902-1976

Nacido en Gorlitz, Silesia, estudia en las universidades de Viena, Harvard y New York. Miembro de la Escuela Austriaca y avezado matemático, participa en los famosos "Coloquios de Viena" organizados por Karl Menger (hijo de Carl Menger) que pusieron en contacto científicos de diversas disciplinas, de cuya sinergia se sabe que surgieron multitud de nuevas ideas e incluso nuevos campos científicos.

Emigra a Estados Unidos durante la Segunda Guerra Mundial ejerciendo la docencia en Princeton. Publica en 1944, conjuntamente con John von Neuman, la "Theory of Games and Economic Behavior".

APLICACIONES

La Teoría de Juegos actualmente tiene muchas aplicaciones, sin embargo, la economía es el principal cliente para las ideas producidas por los especialistas en Teoría de Juego. Entre las disciplinas donde hay aplicación de la Teoría de Juegos tenemos:

En la Economía:

No debería sorprender que la Teoría de Juegos haya encontrado aplicaciones directas en economía. Esta triste ciencia se supone que se ocupa de la distribución de recursos escasos. Si los recursos son escasos es porque hay más gente que los quiere de la que puede llegar a tenerlos. Este panorama proporciona todos los ingredientes necesarios para un juego. Además, los economistas neoclásicos adoptaron el supuesto de que la gente actuará racionalmente en este juego. En un sentido, por tanto, la economía neoclásica no es sino una rama de la Teoría de Juegos.

Sin embargo, aunque los economistas pueden haber sido desde siempre especialistas camuflados en Teoría de Juegos, no podían progresar por el hecho de no tener acceso a los instrumentos proporcionados por Von Neumann y Morgenstern.

En consecuencia sólo se podían analizar juegos particularmente simples. Esto explica por qué el monopolio y la competencia perfecta se entienden bien, mientras a todas las demás variedades de competencia imperfecta que se dan entre estos dos extremos sólo ahora se les está empezando a dar el tratamiento detallado que merecen.

La razón por la que el monopolio es simple desde el punto de vista de la Teoría de Juegos, es que puede ser tratado como un juego con un único jugador. La razón por que la competencia perfecta es simple es que el número de jugadores es de hecho infinito, de manera que cada agente individual no puede tener un efecto sobre agregados de mercado si el o ella actúa individualmente.

En la Ciencia Política:

La Teoría de Juegos no ha tenido el mismo impacto en la ciencia política que en economía. Tal vez esto se deba a que la gente se conduce menos racionalmente cuando lo que está en juego son ideas que cuando lo que está en juego es su dinero. Sin embargo, se ha convertido en un instrumento importante para clarificar la lógica subyacente de un cierto número de problemas más paradigmáticos.

En la Biología:

En Biología se ha utilizado ampliamente la teoría de juegos para comprender y predecir ciertos resultados de la evolución, como lo es el concepto de estrategia evolutiva estable introducido por John Maynard Smith en su ensayo "Teoría de Juegos y la Evolución de la Lucha", así como en su libro "Evolución y Teoría de Juegos".

En la Filosofía:

Los especialistas en Teoría de Juegos creen que pueden demostrar formalmente por qué incluso el individuo más egoísta puede descubrir que con frecuencia, cooperar con sus vecinos en una relación a largo plazo redundará en su propio interés ilustrado.

Con este fin estudian los equilibrios de juegos con repetición (juegos que los mismos jugadores juegan una y otra vez). Pocas cosas han descubierto en esta área hasta el presente que hubieran sorprendido a David Hume, quien hace ya unos doscientos años articuló los mecanismos esenciales. Estas ideas, sin embargo, están ahora firmemente basadas en modelos formales. Para avanzar más, habrá que esperar progresos en el problema de la selección de equilibrios en juegos con múltiples equilibrios. Cuando estos progresos se den, sospecho que la filosofía social sin Teoría de Juegos será algo inconcebible – y que David Hume será universalmente considerado como su verdadero fundador.

PROPIEDADES PARA EL CONOCIMIENTO COMÚN DEL JUEGO

El Filósofo Hobbes dijo que un hombre se caracteriza por su fortaleza física, sus pasiones, su experiencia y su razón.

Fortaleza Física: esta determina lo que alguien puede o no puede hacer. Un atleta puede planear correr una milla en cuatro minutos, pero sería imposible para la mayoría ejecutar este plan. La Teoría de Juegos incorpora estas consideraciones en las reglas del juego. Esta determinan lo que es factible para un jugador. Más exactamente, un jugador queda limitado a escoger en el conjunto de sus estrategias en el juego.

Pasión y Experiencia: estas corresponden a las preferencias y creencias de un jugador. En la mayoría de los casos, ambas deben ser conocimiento común para que sea posible realizar un análisis en términos de la Teoría de Juegos.

Razón: en problemas de decisión unipersonales, los economistas simplemente suponen que los jugadores maximizan sus pagos esperados dadas sus creencias. En un juego las cosas son más complicadas, porque la idea de equilibrio da por supuesto que los jugadores saben algo acerca de cómo razona todo el mundo.

Conocimiento común de las reglas:

Como en muchos resultados de la Teoría de Juegos, no es inmediatamente evidente que esta conclusión dependa de que el valor de "n" debe ser conocimiento común. Sin embargo, si el valor "n" no es de conocimiento común existe equilibrio de Nash.

La noción de equilibrio es fundamental para la Teoría de Juegos. Pero por qué anticipamos que los jugadores usarán estrategias de equilibrio.

Dos tipos de respuestas hay, en primer lugar del tipo educativo, estos suponen que los jugadores tengan al equilibrio como el resultado de razonar cuidadosamente.

Sin embargo, la respuesta educativa no es la única posible. También hay respuestas evolutivas. Según éstas, el equilibrio se consigue, no porque los jugadores piensan todo de antemano, sino como consecuencia de que los jugadores miopes ajustan su conducta por tanteo cuando juegan y se repiten durante largos períodos de tiempo.

En un juego finito de dos jugadores, ningún jugador sabe con seguridad que estrategia pura, incluso si el oponente mezcla, el resultado final será que se juega alguna estrategia pura, la cual terminará por utilizar el oponente. Un jugador racional, por tanto, asigna una probabilidad subjetiva a cada una de las alternativas posibles. Entonces el jugador escoge una estrategia que maximiza su pago esperado con respecto a estas probabilidades subjetivas. Por tanto, el o ella se comportan como si estuviera escogiendo una respuesta óptima a una de las estrategias mixtas del oponente, si la estrategia mixta para la que se elige una respuesta óptima.

La Teoría de Juegos sostiene, que las creencias de un jugador sobre lo que un oponente hará depende de lo que el jugador sabe acerca del oponente. Sin embargo, no está ni mucho menos claro lo que debemos suponer acerca de lo que los jugadores saben de su oponente. La idea de racionabilidad se construye sobre la hipótesis de que por lo menos debería ser de conocimiento común que ambos jugadores son racionales.

OBJETIVOS DE LA TEORÍA DE JUEGOS

El principal objetivo de la teoría de los juegos es determinar los papeles de conducta racional en situaciones de "juego" en las que los resultados son condicionales a las acciones de jugadores interdependientes.

Un juego es cualquier situación en la cual compiten dos o más jugadores. El Ajedrez y el Póker son buenos ejemplos, pero también lo son el duopolio y el oligopolio en los negocios. La extensión con que un jugador alcanza sus objetivos en un juego depende del azar, de sus recursos físicos y mentales y de los de sus rivales, de las reglas del juego y de los cursos de acciones que siguen los jugadores individuales, es decir, sus estrategias. Una estrategia es una especificación de la acción que ha de emprender un jugador en cada contingencia posible del juego.

Se supone que, en un juego, todos los jugadores son racionales, inteligentes y están bien informados. En particular, se supone que cada jugador conoce todo el conjunto de estrategias existentes, no solo para él, sino también para sus rivales, y que cada jugador conoce los resultados de todas las combinaciones posibles de las estrategias.

Igualmente, en una gran variedad de juegos, el resultado es una variable aleatoria cuya distribución de probabilidades debe ser establecida para que pueda ser posible una solución para el juego. A este respecto, debe observarse que las decisiones de los jugadores interdependientes no se toman en un vacío y que los pagos resultantes de estas decisiones dependen de las acciones emprendidas por todos los jugadores. Esta interdependencia implica que puede ser inapropiado suponer que los pagos están siendo generados por un proceso probabilista invariante que no es afectado por el curso de acción que uno escoja. En otras palabras, la acción que emprende un jugador puede dictar los actos de otros jugadores o influir en la probabilidad de que se comporten en una forma particular. Esta potencialidad de posibles efectos en los resultados es la que distingue la toma de decisiones en conflictos y la toma de decisiones en un medio incierto. La clase más sencilla de modelo de juego rigurosamente adversario, en el que los resultados posibles son calificados en orden opuesto por los jugadores.

Entre esta clase, él más común es el juego de suma constante, en el que la suma de las ganancias de los jugadores es igual, cualesquiera que sea su distribución entre ellos. Un caso especial, y el único que consideraremos, de juegos de suma constante se llama juego de suma cero de dos personas.

FUENTE:
http://www.monografias.com/trabajos18/teoria-de-juegos/teoria-de-juegos.shtml#biblio

La Teoría de Juegos es una rama de la matemática o, mejor dicho, es el lenguaje matemático que trata de describir y modelar cómo interactúa la gente.
Uno de los exponentes más importantes en este campo es el matemático John Nash (inmortalizado en la película Una mente brillante). Nash consiguió el Premio Nobel en Economía en 1994 justamente por sus aportes a la Teoría de Juegos.
Quiero mostrar aquí algo más relacionado con el tema.
Para empezar, sígame con el siguiente razonamiento: por un lado, existen los juegos llamados de suma cero. Por ejemplo, si usted juega al truco o al poker con otras personas y hay dinero involucrado, todo lo que ganó uno es el resultado de lo que otros perdieron. La suma del dinero involucrado da cero, si uno cuenta como positivo lo que alguien gana y negativo lo que alguien pierde. Es decir: nadie puede ganar un dinero que otro no perdió (y viceversa).
El aporte de Nash fue considerar lo que llamó los juegos que “no suman cero”. Cuando aún no había cumplido 30 años, desarrolló el concepto de lo que hoy se conoce con el nombre de “equilibrio de Nash”. Esta es una definición muy interesante sobre lo que significa alcanzar una situación en la que todos los participantes se van a sentir contentos.
Puede que alguno de ellos hubiera podido obtener algo “mejor” si actuaba en forma individual, pero colectivamente es la mejor situación posible (para el grupo). Es decir, todos los participantes advierten que es mejor establecer una “estrategia para todos” que una individual.
Esto aparece muchas veces en el “mundo real”. Cuando se trata de un juego uno contra uno, el “equilibrio de Nash” se alcanza cuando nadie tiene nada para reclamar, en el sentido de que uno no variaría lo que hizo o está por hacer aun sabiendo lo que va a hacer el otro.
En un juego de cartas, sería como decidir qué carta uno va a jugar, aunque pudiera ver las cartas del otro.
Por ejemplo: supongamos que veinte personas van a comprar durante un cierto mes del año un determinado modelo de auto. Quizás, cada uno de ellos pueda negociar un precio que le convenga personalmente. Pero si se pusieran de acuerdo en entrar a la concesionaria todos juntos y llevaran una oferta para comprar veinte autos, es esperable que obtengan un mejor precio.
Es casi una “teoría del compromiso”, algo muy sencillo, pero nadie lo había podido sistematizar hasta que lo hizo Nash. El no estaba tan interesado en cómo alcanzar un equilibrio en el sentido de que todo el mundo va a estar contento con su posición, pero sí sobre cómo deberían ser las propiedades que un equilibrio debería tener.
Una idea aproximada de lo que hizo Nash es la siguiente: si uno recorriera a todos los integrantes de una mesa (de negociaciones, por ejemplo) y les preguntara “si todos los otros jugadores se mantuvieran en la posición que están ahora, ¿usted cambiaría lo que está haciendo?”. Esto es como preguntar si cada uno mantendría su posición si supiera que todo el resto se mantendría quieto. Esta es la lógica que sirve para alcanzar el “equilibrio de Nash”.
Mucho tiempo después de que Nash escribiera su teoría del equilibrio, el mundo comenzó a usarla. De hecho, el mejor exponente fue cómo se empezó a tratar el tema de las “licitaciones” o “remates” y presentó un ejemplo maravilloso: las reglas que gobiernan un remate son las mismas que gobiernan un “juego”. Entonces, los “apostadores” son los competidores en un juego, las estrategias son “su plan de acción”, la forma en la que va a apostar y la ganancia es quién obtiene lo que se vendía y cuánto se paga por lo que está en juego.
Para los que trabajan en Teoría de Juegos, este tipo de “licitaciones” o “remates” les permiten predecir lo que los jugadores van a hacer, aprovechando lo que saben del equilibrio de Nash y transforman reglas, que podrían ser muy complicadas, en algo “analizable”. No sólo eso: en este tipo de operaciones, cuando hay “grandes licitaciones”, cuando se habla de miles de millones de dólares, los apostadores saben bien qué hacer. Ellos saben que hay mucho dinero en juego; se pasan mucho tiempo pensando y contratan expertos para que les permitan mejorar sus posiciones.
Es obvio que en este caso estoy hablando de licitaciones gubernamentales, en las que aparecen –por ejemplo– empresas de telefonía o de Internet o de telefonía celular involucradas.
En el pasado, este tipo de licitaciones se manejaba en forma arbitraria, algo así como un concurso de belleza. Las ganaba el que seducía mejor. Como consecuencia, el resultado era que los gobiernos no conseguían que nadie pagara el verdadero valor de lo que estaba en juego, y eso sin hablar de la corrupción endémica de quienes negocian este tipo de contratos.
De hecho, con el aporte de Nash, los gobiernos tienen ahora una herramienta muy poderosa, que es la de que los interesados “apuesten” para conseguir lo que quieren, de manera tal de obtener la mayor cantidad de dinero posible. En el año 2002, con la participación de matemáticos expertos en Teoría de Juegos, liderados por Ken Binmore, el gobierno inglés escribió sus reglas para otorgar la licencia para la tercera generación de telefonía móvil. Binmore y su equipo se pasaron dos años pensando en todas las posibles licitaciones (aunque esto suene exagerado). El resultado: el gobierno inglés consiguió 23 mil millones de libras esterlinas (algo así como 46 mil millones de dólares al cambio de fines de julio del 2007). Y eso, por haber usado la teoría de Nash, quien empezó hace 50 años analizando los juegos de ajedrez y de poker, y ahora sus ideas impactan en la economía global y son capaces de generar miles de millones de dólares para los gobiernos (si es que se deciden a usarlas).
Nash, en todo caso, hizo algo muy sencillo, que hasta parece increíble que nadie lo hubiera podido ver antes. Pero claro, los que merecen reconocimiento son aquellos que “miraron en el lugar hacia donde todos apuntaban, pero vieron lo que nadie vio antes”. Quizás, ver lo obvio es tener una gran idea. Siempre hay una primera persona que lo ve.
Quiero terminar con algo que escribí varias veces: es raro que de una ciencia (la matemática) que tiene una rama que se llama Teoría de Juegos, se pueda decir que es aburrida, árida o tenga tanta gente protestando (con razón): “Yo no nací para esto”. Si es así como yo lo pienso, los comunicadores/docentes debemos estar haciendo algo mal.
¿Quién no jugó mientras fue niño? ¿Por qué no seguir haciéndolo ahora que somos adultos?

El Dilema del Prisionero

La teoria del Prisionero se aplica básicamente a las probabilidades de ganar o perder en un juego, pero, trato en éste post de darle aplicabilidad a la vida cotidiana, basado en la bibliografia referidas en las fuentes de referencias.

Tu vecino pone todas las noches rock duro a un volumen considerable. Como venganza decides poner a Wagner con la misma intensidad. Al día siguiente el vecino nos castiga con más rock duro y yo le respondo con más Wagner. ¿No sería mejor para apaciguar al vecino dejar de poner música por la noche?
Estamos en una situación conocida en teoría de juegos como el Dilema del Prisionero.

El dilema del prisionero es un ejemplo claro, pero atípico, de un problema de suma no nula. En este problema de teoría de juegos, como en otros muchos, se supone que cada jugador, de modo independiente, trata de aumentar al máximo su propia ventaja sin importarle el resultado del otro jugador. Las técnicas de análisis de la teoría de juegos estándar, por ejemplo determinar el equilibrio de Nash, pueden llevar a cada jugador a escoger traicionar al otro, pero curiosamente ambos jugadores obtendrían un resultado mejor si colaborasen. Desafortunadamente (para los prisioneros), cada jugador está incentivado individualmente para defraudar al otro, incluso tras prometerle colaborar. Éste es el punto clave del dilema.

En el dilema del prisionero iterado, la cooperación puede obtenerse como un resultado de equilibrio. Aquí se juega repetidamente, por lo que, cuando se repite el juego, se ofrece a cada jugador la oportunidad de castigar al otro jugador por la no cooperación en juegos anteriores. Así, el incentivo para defraudar puede ser superado por la amenaza del castigo, lo que conduce a un resultado mejor, cooperativo.


Historia que dio origen a su nombre:

La policía arresta a dos sospechosos. No hay pruebas suficientes para condenarlos, y tras haberlos separado, los visita a cada uno y les ofrece el mismo trato. Si uno confiesa y su cómplice no, el cómplice será condenado a la pena total, diez años, y el primero será liberado. Si uno calla y el cómplice confiesa, el primero recibirá esa pena y será el cómplice quien salga libre. Si ambos permanecen callados, todo lo que podrán hacer será encerrarlos durante seis meses por un cargo menor. Si ambos confiesan, ambos serán condenados a seis años.
Lo que puede resumirse como:



Vamos a suponer que ambos prisioneros son completamente egoístas y su única meta es reducir su propia estancia en la cárcel. Como prisioneros tienen dos opciones: cooperar con su cómplice y permanecer callado, o traicionar a su cómplice y confesar. El resultado de cada elección depende de la elección del cómplice. Desafortunadamente, uno no conoce qué ha elegido hacer el otro. Incluso si pudiesen hablar entre sí, no podrían estar seguros de confiar mutuamente.

Si uno espera que el cómplice escoja cooperar con él y permanecer en silencio, la opción óptima para el primero sería confesar, lo que significaría que sería liberado inmediatamente, mientras el cómplice tendrá que cumplir una condena de 10 años. Si espera que su cómplice decida confesar, la mejor opción es confesar también, ya que al menos no recibirá la condena completa de 10 años, y sólo tendrá que esperar 6, al igual que el cómplice. Si, sin embargo, ambos decidiesen cooperar y permanecer en silencio, ambos serían liberados en sólo 6 meses.

Confesar es una estrategia dominante para ambos jugadores. Sea cual sea la elección del otro jugador, pueden reducir siempre su sentencia confesando. Por desgracia para los prisioneros, esto conduce a un resultado regular, en el que ambos confiesan y ambos reciben largas condenas. Aquí se encuentra el punto clave del dilema. El resultado de las interacciones individuales produce un resultado que no es óptimo -en el sentido de eficiencia de Pareto-; existe una situación tal que la utilidad de uno de los detenidos podría mejorar (incluso la de ambos) sin que esto implique un empeoramiento para el resto. En otras palabras, el resultado en el cual ambos detenidos no confiesan domina al resultado en el cual los dos eligen confesar.

Si se razona desde la perspectiva del interés óptimo del grupo (de los dos prisioneros), el resultado correcto sería que ambos cooperasen, ya que esto reduciría el tiempo total de condena del grupo a un total de un año. Cualquier otra decisión sería peor para ambos si se consideran conjuntamente. A pesar de ello, si siguen sus propios intereses egoístas, cada uno de los dos prisioneros recibirá una sentencia dura.

Si has tenido una oportunidad para castigar al otro jugador por confesar, entonces un resultado cooperativo puede mantenerse. La forma iterada de este juego (mencionada más abajo) ofrece una oportunidad para este tipo de castigo. En ese juego, si el cómplice traiciona y confiesa una vez, se le puede castigar traicionándolo a la próxima. Así, el juego iterado ofrece una opción de castigo que está ausente en el modo clásico del juego.

Volviendo al problema de la música y el vecino, cooperar sería quitar la música y desertar sería ponerla.


Ejemplos en la vida real

Estos ejemplos en concreto en los que intervienen prisioneros, intercambio de bolsas y cosas parecidas pueden parecer rebuscados, pero existen, de hecho, muchos ejemplos de interacciones humanas y de interacciones naturales en las que se obtiene la misma matriz de pagos. El dilema del prisionero es por ello de interés para ciencias sociales como economía, ciencia política y sociología, además de ciencias biológicas como etología y biología evolutiva.

En ciencia política, por ejemplo, el escenario del dilema del prisionero se usa a menudo para ilustrar el problema de dos estados involucrados en una carrera armamentística. Ambos razonarán que tienen dos opciones: o incrementar el gasto militar, o llegar a un acuerdo para reducir su armamento. Ninguno de los dos estados puede estar seguro de que el otro acatará el acuerdo; de este modo, ambos se inclinarán hacia la expansión militar. La ironía está en que ambos estados parecen actuar racionalmente, pero el resultado es completamente irracional.

Otro interesante ejemplo tiene que ver con un concepto conocido de las carreras en ciclismo, por ejemplo el Tour de Francia. Considérense dos ciclistas a mitad de carrera, con el pelotón a gran distancia. Los dos ciclistas trabajan a menudo conjuntamente (cooperación mutua) compartiendo la pesada carga de la posición delantera, donde no se pueden refugiar del viento. Si ninguno de los ciclistas hace un esfuerzo para permanecer delante, el pelotón les alcanzará rápidamente (deserción mutua). Un ejemplo visto a menudo es que un sólo ciclista haga todo el trabajo (coopere), manteniendo a ambos lejos del pelotón. Al final, esto llevará probablemente a una victoria del segundo ciclista (desertor) que ha tenido una carrera fácil en la estela del primer corredor.

Los pájaros que se limpian mutuamente el plumaje para liberarse de los ácaros, están jugando repetidamente el dilema del prisionero. Para un pájaro es importante eliminar sus ácaros, pero no puede alcanzar la parte superior de su propia cabeza y necesita un compañero que lo haga por él. Pero este servicio le cuesta tiempo y energía. Si uno consigue lo mismo con engaños, deshacer de loa ácaros pero negándose a la reciprocidad, obtendrá todos los beneficios sin pagar ningún coste.
Está bien cooperar (quitarse mutuamente los ácaros), pero existe la tentación de negarse a la reciprocidad. La deserción mutua (la negativa a desparasitarse entre los dos) está mal, pero peor es quitarle los ácaros al otro y quedarse con los suyos.

Por último, la conclusión teórica del dilema del prisionero es una razón por la cual, en muchos países, se prohíben los acuerdos judiciales. A menudo, se aplica precisamente el escenario del dilema del prisionero: está en el interés de ambos sospechosos el confesar y testificar contra el otro prisionero/sospechoso, incluso si ambos son inocentes del supuesto crimen. Se puede decir que, el peor caso se da cuando sólo uno de ellos es culpable: no es probable que el inocente confiese, mientras que el culpable tenderá a confesar y testificar contra el inocente.

lunes, diciembre 21, 2009

Crear Stored Procedure en AS400

1.- Ejecutar el Iseries Navigator.
2.- Ubicarse en Base de Datos
3.- Selecciona el Servidor.
4.- Selecciona Esquemas
5.- Selecciona la Base de datos.
6.- En la parte de abajo selecciona EJECUTAR UN SCRIPT DE SQL, se abre una ventana donde se escribe todas las instrucciones para crear un STORED PROCEDURE.
7.- Del Menubar seleccionar Ejecutar y click en la opcion Todo, presionar CTRL+R.


Un Ejemplo, donde se crea un SP PWS0001 con parametros para ejecutar internamente a un PWS0001 hecho en RPG

-- Generar SQL
-- Versión: V5R3M0 040528
-- Generado en: 04/07/07 09:54:55
-- Base de datos relacional: S10BF6DB
-- Opción de estándares: DB2 UDB iSeries
-- fecha ultima modificación 20/07/2007

-- **Procedimiento para la consultar el saldo del cliente **************

--DROP PROCEDURE SICOD.PWS0001;

CREATE PROCEDURE SICOD.PWS0001(
INout OFICOD CHAR(2) ,
INout MDCCOD CHAR(3) ,
INout MDCCED CHAR(10) ,
INout MDCCLAACC CHAR(5) ,
INout CLICOD CHAR(7) )
LANGUAGE RPG
SPECIFIC SICOD.PWS0001
NOT DETERMINISTIC
NO SQL
CALLED ON NULL INPUT
EXTERNAL NAME 'SICOP/PWS001'
PARAMETER STYLE GENERAL ;


Aqui tenemos otro ejemplo, creando un STORED PROCEDURE PWS008 en la libreria SICOP.

-- Generar SQL
-- Versión: V5R3M0 040528
-- Generado en: 04/07/07 09:54:55
-- Base de datos relacional: S10BF6DB
-- Opción de estándares: DB2 UDB iSeries
-- fecha ultima modificación 20/07/2007
-- Para Recaudar por Cliente **************
--DROP PROCEDURE SICOD.PWS008;

CREATE PROCEDURE SICOP.PWS008(
INout CLICOD NUMERIC(7),
INout OFICOD NUMERIC(2),
INout CAJCOD NUMERIC(3),
INOut QVALTOT NUMERIC(10,2),
INOUT IP CHAR(40))
LANGUAGE RPG
SPECIFIC SICOP.PWS008
NOT DETERMINISTIC
NO SQL
CALLED ON NULL INPUT
EXTERNAL NAME 'SICOP/PWS008'
PARAMETER STYLE GENERAL ;


> CREATE PROCEDURE SICOP.PWS008( INout CLICOD NUMERIC(7), INout OFICOD NUMERIC(2), INout CAJCOD NUMERIC(3), INOut QVALTOT NUMERIC(10,2), INOUT IP CHAR(40)) LANGUAGE RPG SPECIFIC SICOP.PWS008 NOT DETERMINISTIC NO SQL CALLED ON NULL INPUT EXTERNAL NAME 'SICOP/PWS008' PARAMETER STYLE GENERAL

Nos debe devolver el siguiente mensaje:

Estado de SQL: 01660
Código de proveedor: 7909
Mensaje: [SQL7909] Se ha creado la rutina PWS008, pero no puede salvarse y restaurarse. Causa . . . . . : La rutina PWS008 se ha creado satisfactoriamente en SICOP con un nombre específico de PWS008, pero los atributos de la rutina no se han podido salvar en el objeto de programa o programa de servicio asociado. Si el objeto *PGM o *SRVPGM se salva y luego se restaura, los catálogos SQL no se actualizarán con los atributos de esta rutina. El código de razón es 3.Los códigos de razón y sus significados son los siguientes: 1 -- El programa externo no existía cuando se emitió la sentencia CREATE. 2 -- El esquema del programa externo es QSYS. 3 -- El programa externo no era un ILE *PGM o *SRVPGM. 4 -- Otro trabajo estaba utilizando el programa externo. 5 -- Otro trabajo estaba utilizando el espacio asociado SQL del programa externo. 6 -- El espacio asociado SQL del programa externo no se ha podido expandir. 7 -- El programa externo se ha compilado en un release anterior a V4R4M0. 8 -- El espacio asociado SQL del programa externo ya contiene el número máximo de definiciones de rutina. Recuperación . : Efectúe una de las siguientes acciones en función del cód de razón: 1 -- Asegúrese de que el programa externo existe cuando se emita la sentencia CREATE. 2 -- Asegúrese de que el esquema del programa externo no es QSYS. 3 -- Asegúrese de que el programa externo es un ILE *PGM o *SRVPGM. 4 -- Utilice WRKOBJLCK para asegurar que el programa externo está disponible cuando se crea la rutina. 5 -- Compruebe que el programa externo está disponible cuando se crea la rutina. 6 -- Intente volver a compilar el programa externo para reconstruir el espacio asociado del programa. 7 -- Vuelva a compilar el programa externo en un release más reciente. 8 -- Elimine una de las rutinas actualmente definidas para el programa externo.

La sentencia se ha ejecutado satisfactoriamente, sin avisos (204 ms)

sábado, noviembre 28, 2009

Problemas con los datos Corridos en Aplicaciones GX con As400

Principalmente se debe aque se realizaron cambios en la dimension de los atributos de una o mas tablas, se impacto, especifico y genero tanto en aplicciones C/S VFP y RPG, pero el problema persistia, ello se debe a que existen STORED PROCEDURES QUE SON INVOCADOS POR APLICACIONES CLIENTE SERVIDOR... para ello se debe eliminar todos los sqlpkg creados anteriormente e invocar a las aplicaciones nuevamente para que se vuelvan a generar los mismos correctamente.

Gracias a Carlos Cuenca por reporta el error y poder solucionarlo.

HERRAMIENTAS DE SOFTWARE LIBRE PARA MIPYMES

http://www.sofofa.cl/sofofa/index.aspx?channel=4319&appintanceid=12189&pubid=5585