martes, noviembre 25, 2008

Instalar Java, Tomcat y Apache en Fedora/Centos

Instalación del JDK
Evidentemente lo primero que necesitamos para desarrollar en Java es instalar el kit
de desarrollo (JDK) que podemos descargar desde la web de Sun. A la hora de
escribir este tutorial la última versión es la 5.0 Update 6. Utilizaremos la versión
autoextraible (Linux self-extracting file) en lugar del paquete RPM.
Introducir contraseña de root
cp -p jdk-1_5_0_06-linux-i586.bin /usr/local
cd /usr/local
chmod +x jdk-1_5_0_06-linux-i586.bin
./jdk-1_5_0_06-linux-i586.bin
rm jdk-1_5_0_06-linux-i586.bin
Esto extraerá el contenido del archivo en una nueva carpeta jdk1.5.0_06 en
/usr/local. Ahora basta crear la variable de entorno para indicar dónde está instalado
el JDK y añadir a la variable PATH el directorio en el que se encuentran los binarios
para poder ejecutarlos desde cualquier sitio. Para ello abrimos el archivo /etc/profile
con nuestro editor favorito (como root) y añadimos las siguientes líneas al final:
JAVA_HOME=/usr/local/jdk1.5.0_06
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME
Actualizamos las variables de entorno:
source /etc/profile
Si todo ha salido bien al escribir javac -version deberíamos obtener el número de
versión del compilador de Java. En el caso de que algo halla salido mal el sistema nos
informará de que no encontró ningún ejecutable con ese nombre.
Instalar Tomcat
Descargar la distribución en /usr/local/tomcat
$ ls
apache_tomcat-5.5.12.tar.gz
a continuación, es necesario extraer los archivos
$ tar zxf apache-tomcat-5.5.12.tar.gz
$ ls
apache-tomcat-5.5.12.tar.gz apache-tomcat-5.5.12
particularmente, acostumbro definir una liga simbólica en caso de que sea necesario
instalar y correr una versión diferente del tomcat
$ ln -s apache-tomcat-5.5.12 apache-tomcat
$ ls -l
drwxrwxr-x 11 tomcat tomcat 4096 nov 7 18:45 apache-tomcat-5.5.12
lrwxrwxrwx 1 tomcat tomcat 20 nov 7 19:12 apache-tomcat -> apache-tomcat-5.5.12
-rwxr-xr-x 12 tomcat tomcat 4096 nov 7 18:21 apache-tomcat-5.5.12.tar.gz
En /usr/local/tomcat/bin hay varios scripts con los que se puede correr tomcat. Solo
define JAVA_HOME y ejecuta el script que corresponda a la instalación
$ export JAVA_HOME=/opt/jdk1.5.0_03
$ /home/tomcat/jakarta-tomcat/bin/startup.sh
Using CATALINA_BASE: /home/tomcat/jakarta-tomcat
Using CATALINA_HOME: /home/tomcat/jakarta-tomcat
Using CATALINA_TMPDIR: /home/tomcat/jakarta-tomcat/temp
Using JRE_HOME: /opt/jdk1.5.0_03
Compilar e instalar el conector JK
Existen dos versiones del conector, JK y JK2. Aunque parezca raro la versión que nos
interesa instalar es la primera, ya que la segunda está descontinuada. El código
fuente se puede descargar desde la web de Tomcat.
Vamos a compilar el módulo mod_jk.so (debería colocarlo en la carpeta de módulos del
servidor Apache):
cp -p jakarta-tomcat-connectors-1.2.15-src.tar.gz
/usr/local/src/
cd /usr/local/src
tar xvzf jakarta-tomcat-connectors-1.2.15-src.tar.gz
rm jakarta-tomcat-connectors-1.2.15-src.tar.gz
cd jakarta-tomcat-connectors-1.2.15-src/jk/native/
./buildconf.sh
./configure --with-apxs=/usr/local/apache/bin/apxs
make
make install
Y ahora sólo falta configurarlo. Creamos un nuevo archivo workers.properties en
/usr/local/apache/conf con el siguiente contenido:
workers.tomcat_home=/usr/local/apache-tomcat-5.5.16/
workers.java_home=$JAVA_HOME
ps=/
worker.list=default
worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1
Editamos el archivo de configuración de Apache (/usr/local/apache/conf/httpd.conf)
para cargar el módulo. En la sección LoadModules añadimos:
LoadModule jk_module modules/mod_jk.so
Y al final del archivo:
JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel warn
JkMount /jsp-examples default
JkMount /jsp-examples/* default
JkMount es la línea que indica a Apache que solicitudes reenviar a Tomcat. En este
caso llamaremos a Tomcat siempre que se intente acceder a cualquier archivo del
directorio jsp-examples, donde se guardan algunos ejemplos para demostrar el uso de
JSP, utilizando el protocolo definido por “default”. También podríamos haber utilizado
algo del estilo *.jsp para ejecutar Tomcat sólo en el caso de que los archivos
terminaran con esta extensión.
Por último iniciamos Apache y Tomcat:
/usr/local/apache-tomcat-5.5.16/bin/startup.sh
/usr/local/apache/bin/apachectl start
Al introducir la URL http://localhost deberíamos ver la web de bienvenida de Apache,
al introducir
http://localhost:8080 la de Tomcat,
y con http://localhost/jsp-examples Apache enviará la petición a

Instalar WebMin en Fedora /Centos

webmin-xxx.tar.gz
Ejecutamos en un shell lo siguiente como root gzip -d webmin-xxx.tar.gz -
Despues vemos como estan nuestros archivos con
ls -l
Luego
tar -xvf webmin-xxx.tar
Se ha creado una carpeta llamada webmin-xxx ingresamos a ella y ejecutamos: .
/setup.sh
Nos preguntara por la carpeta de [/etc/webmin]:presionamos enter
Luego
[/var/webmin]:
Enter tambien luego enter para la ubicacion del perl
Indicamos el puerto por lo general se usa el puerto 10000 seleccionamos el usuario y
el pasword.
Por ultimo contestamos y para q webmin se reinicie con el sistema.

Configurar Samba en Centos/Fedora

1. Creamos un usuario Samba
1. useradd -s /sbin/nologin usuario-windows
2. smbpasswd -a usuario-windows
No hace falta se asigne una clave de acceso en el sistema con el mandato
passwd puesto que la cuenta no tendrá acceso al interprete de mandatos. Si se
necesita que las cuentas se puedan utilizar para acceder hacia otros servicios
como serían Telnet, SSH, etc, es decir, que se permita acceso al interprete de
mandatos, será necesario especificar /bin/bash como interprete de mandatos y
además se deberá asignar una clave de acceso en el sistema con el mandato
passwd:
3. useradd -s /bin/bash usuario-windows
4. passwd usuario-windows
5. smbpasswd -a usuario-windows
2. El fichero lmhosts, Es necesario empezar resolviendo localmente los nombres
NetBIOS asociándolos con direcciones IP correspondientes. Para fines
prácticos el nombre NetBIOS debe tener un máximo de 11 caracteres.
Normalmente tomaremos como referencia el nombre corto del servidor o el
nombre corto que se asigno como alias a la interfaz de red. Este lo
estableceremos en el fichero /etc/samba/lmhosts, en donde encontraremos lo
siguiente:
127.0.0.1 localhost
3. Debemos añadir entonces el nombre que hayamos elegido asociado a la dirección IP que se tenga.
4. Dentro de la red local. Opcionalmente podrá añadir también los nombres y
dirección IP del resto de Maquinas que conformen la red local. La separación de espacios se hace con un tabulador.
Ejemplo:
127.0.0.1 localhost
192.168.1.5 maquinalinux
192.168.1.6 isaac
192.168.1.7 finanzas
192.168.1.8 direccion
Parámetros principales del fichero smb.conf.
Modifique el fichero /etc/samba/smb.conf con cualquier editor de texto. Dentro de
este notará que la información que le será de utilidad viene comentada con un símbolo
# y los ejemplos con ; (punto y coma), siendo estos últimos los que tomaremos como
referencia. Empezaremos por establecer el grupo de trabajo editando el valor del
parámetro workgroup asignando un grupo de trabajo deseado:
workgroup = MIGRUPO
Opcionalmente puede establecer con el parámetro netbios name otro nombre distinto
para el servidor si acaso fuese necesario, pero siempre tomando en cuenta que dicho
nombre deberá corresponder con el establecido en el fichero /etc/samba/lmhosts:
netbios name = maquinalinux
El parámetro server string es de carácter descriptivo. Puede utilizarse un comentario
breve que de una descripción del servidor.
server string = Servidor Samba %v en %L
Parámetros útiles para la seguridad.
La seguridad es importante y esta se puede establecer primeramente estableciendo la
lista de control de acceso que definirá que máquinas o redes podrán acceder hacia el
servidor. El pará hosts allow sirve para determinar esto. Si la red consiste en la
máquinas con dirección IP des 192.168.1.1 hasta 192.168.1.254, el rango de direcciones
IP que se definirá en hosts allow ser 192.168.1. de modo tal que solo se permitirá el
acceso dichas máquinas. Note por favor el punto final de cada rango. Modifique ésta
de manera que quede del siguiente modo:
hosts allow = 192.168.1. 127.
Compartiendo directorios a través de Samba.
Para los directorios o volúmenes que se irán a compartir, en el mismo fichero de
configuración encontrará distintos ejemplos para distintas situaciones particulares.
En general, puede utilizar el siguiente ejemplo que funcionará para la mayoría:
[Lo_que_sea]
comment = Comentario que se le ocurra
path = /cualquier/ruta/que/desee/compartir
guest ok = yes
public = yes
browseable = yes
writeable = yes
Inciar el servicio y añadirlo al arranque del sistema.
Si iniciará Samba por primera vez realice lo siguiente:
/sbin/service smb start
Si va a reiniciar el servicio, realice lo siguiente:
/sbin/service smb restart
Para que Samba inicie automáticamente cada vez que inicie el servidor solo ejecute el
siguiente mandato:
/sbin/chkconfig smb on

Configurar Mysql en Linux - Centos/Fedora

Activar mysql en linux.
1. Activar Mysql.
1. service mysqld restart
2. chkconfig mysqld on
3. mysqladmin -u root password 'clave'
2. Ingresar a mysql
1. mysql -u root – p
2. Digitar password
3. En Mysql creamos el usuario root
1. CREATE USER 'root'@'%' IDENTIFIED BY 'clave';
4. Proporcionamos todos los privilegios a este usuario.
1. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'clave' WITH GRANT OPTION;
2.FLUSH PRIVILEGES;
5. Desactivar Firewall
1. service iptables stop
6. Podemos ya ingresar con el MYSQLAdministrator en Windows.

viernes, noviembre 14, 2008

Impresion en Web con PDF

Tomado de:
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Impresion+en+WEB,

Impresión en WEB

English version: Prints in Web environment

Impresión en el cliente en WEB

En interfaz WEB, hasta ahora había constituido un desafío el hecho de imprimir reportes en la impresora del cliente, sin intervención del usuario. Ahora es posible hacerlo de una forma más inmediata e intuitiva.

Las posibilidades de impresión dentro de lo que es modo gráfico, son en general, formato PDF o reportes gráficos usando la herramienta ReportViewer. El uso de cualquiera de estas variantes depende de la plataforma y la interfaz usada. En interfaz GUI Windows, es válido el uso del ReportViewer. En interfaz GUI linux no lo es, debido a que la implementación del Report.Viewer está basada en dlls para su funcionamiento. En interfaz WEB tampoco es válido el uso de dicha herramienta, porque no es posible ejecutar el ReportViewer dentro del browser (es una aplicación GUI).

En plataforma WEB, los reportes mayoritariamente usados, son los reportes gráficos en formato PDF, que se despliegan en el browser del cliente, dentro del cual ejecuta el Acrobat Reader.

Si bien el reporte PDF se visualiza en el browser, hasta la versión 9.0 no había una manera inmediata de enviar ese reporte a imprimir, en la impresora del cliente (sin intervención del usuario). Esto es porque en dicho ambiente el cliente es un browser (Internet Explorer, FireFox, etc), y la dificultad está vinculada al hecho de acceder al driver de impresión dentro del PC cliente donde ejecuta dicho browser.

Sin embargo, a partir del upgrade 1 de los generadores Java y NET existe la posibilidad de que el usuario, presionando un botón pueda mandar a imprimir un reporte PDF a su impresora, sin tener que pasar por el diálogo de impresión.
A nivel del desarrollador GeneXus, no hay programación adicional, cualquier reporte GeneXus que cumpla con las condiciones de ser un reporte PDF, y que además posea salida a impresora (lo cual se hace en GeneXus a través de una propiedad llamada "Report Output"), se imprimirá en la impresora conectada al PC donde ejecuta el navegador web.
La aparición del diálogo de impresión es configurable, al igual que en cualquier modelo GeneXus que trabaje con reportes. Igualmente, si la aplicación corre en una Intranet, donde las impresoras son conocidas, se puede manejar desde el servidor la selección de la impresora.
Se tendrá todo el dinamismo que ya existe en el manejo de reportes, logrando que los mismos accedan a los drivers de impresión del PC cliente, sin intervención del usuario final (diálogo de impresión), si asi se desea.
A continuación, siguen algunos ejemplos y un xpz para ejecutar.

Sample I :Como mandar a imprimir el PDF directo a la impresora del PC

Para mandar a imprimir el reporte en web desde la máquina que ejecuta el browser (cliente), el reporte debe cumplir con lo siguiente:


* Debe ser main
* La propiedad Call protocol debe ser http
* La propiedad "Report Output" debe ser "Only to Printer"
* Se debe configurar la regla output_file("x.pdf","PDF")

Solo con esos pasos se logra que el reporte PDF se visualice en pantalla, a la vez que se envía a imprimir a la impresora del PC cliente, indicada en la regla printer (1).

Descargar el ejemplo de aqui:
Basic Sample Silent Printing

Sample II : Evitar que el reporte se visualice en pantalla

Si se desea evitar que se despliegue el reporte en pantalla, antes de enviarlo a la impresora, se puede direccionar el reporte a una Embedded Page de tamaño 1 x 1.
Descargar el ejemplo de aquí:
Silent Print Sample Without showing page

Sample III: Evitar que el usuario interrumpa la impresión

Para evitar que el usuario presione un botón del form durante la impresión del reporte (lo cual la interrumpiría), es posible agregar javascripts para deshabilitar los controles (botones y links) hasta que la impresión finalice.
Se usa una cookie en la solución. El tema es que cuando se hace la invocación al reporte vuelve un response sin el archivo, por lo cual en ese momento no es adecuado habilitar los botones. Por eso, recien cuando vuelve el segundo response con el archivo, se habilitan los botones.
La implementación está hecha de tal manera de que antes de mandar la impresión se graba la cookie.
Luego, se setean intervalos de tiempo con un javascript, para que cada X tiempo se consulte esa cookie.
El reporte al finalizar graba la cookie, con lo cual, detectado esto, se habilitan los botones.

El hecho de deshabilitar el form en el POST se hará en forma automática en un próximo upgrade.

Bajar el ejemplo:
Silent Print Sample with Javascripts

ANEXO Donde mandar a imprimir?

Regla printer y gxprn.ini
En cualquiera de los casos, las configuraciones de impresión, como siempre, se toman del archivo gxprn.ini (1), y mediante la regla printer se especifica la entrada dentro de ese archivo que contiene la configuración que se desea tomar.
Cuando un reporte con regla printer se ejecute, irá a buscar al archivo una entrada con el mismo nombre que se le puso en la regla. De no existir ninguna entrada con ese nombre, o de no existir el archivo gxprn.ini, el reporte se tratará de imprimir a la impresora por default.
Por ejemplo si la regla es :
printer('Facturas');
Se buscará una entrada "Facturas" dentro del gxprn.ini.
En el caso del generador Java, el gxprn.ini se debe ubicar en el mismo lugar que el pdfreport.ini o sea en el WEB-INF de la webapp.
En el caso del generador NET se debe ubicar en el directorio virtual, o en el directorio virtual\bin.
Si no se encuentra el gxprn.ini toma correctamente la impresora default.

Programa GXsetfrm

El archivo gxprn.ini se crea en el momento de la ejecución del programa "gxsetfrm". Este programa permite crear y modificar los diferentes "forms" (un "form" es una entrada en el gxprn.ini, con una determinada configuración).
El programa "gxsetfrm" es un programa win, se usa unicamente para configurar el gxprn.ini, y se lo debe llamar por ejemplo desde un evento de usuario de la siguiente forma: call("gxsetfrm").

Propied Show Printer Dialog on reports

Si no se encuentra el gxprn.ini, se considera la propiedad "Show Printer Dialog on reports", para mostrar o no el diálgo de impresión.
De lo contrario, si se encuentra el gxprn.ini, se toma en cuenta lo configurado alli. Para evitar que se muestre el diálogo de impresión, se especifica MODE = 0 en el gxprn.ini, en la entrada correspondiente de la impresora a usar.

Links relacionados
(1) Regla Printer:
http://www.gxtechnical.com/gxdlsp/pub/genexus_8.0_help_system/rules/printer_rule.htm

Generación de Reportes PDF:
http://www.gxtechnical.com/gxdlsp/pub/iehelp.htmGeneXus/DevEnv/Docum/ReleaseNotes/7.5/ReportesPDF.htm

[RSS feed with last changes in this category (copy shortcut to subcribe it in an RSS reader)]

4042
Created: 12/04/06 12:51 PM by sjuarez Last update: 06/11/09 12:30 PM by sjuarez

jueves, octubre 30, 2008

jueves, octubre 02, 2008

Configurar TOMCAT 6 , JDK 1.6 con W2003

Tomado de:

http://darkscripter.spaces.live.com/blog/cns!48D32CF0C80F6A31!2026.entry

Bug con JRE 1.6.0_03 y Apache Tomcat 6.0.14 Server

Intentando utilizar apache tomcat 6.0.14 Server con el jdk jdk1.6.0_03, me topaba con que cada vez que intentaba iniciar el servicio de tomcat, este se detenia. El registro de error (%Tomcat%/logs) era el siguiente

[2007-12-03 22:36:44] [info] Running Service…
[2007-12-03 22:36:44][info] Starting service…
[2007-12-03 22:36:44] [174 javajni.c] [error] No se puede encontrar el módulo especificado.
[2007-12-03 22:36:44] [986 prunsrv.c] [error] Failed creating java C:\Archivos de programa\Java\jre1.6.0_03\bin\client\jvm.dll
[2007-12-03 22:36:44] [1260 prunsrv.c] [error] ServiceStart returned 1
[2007-12-03 22:36:44] [info] Run service finished.
[2007-12-03 22:36:44] [info] Procrun finished.

Resulta que despues de investigar, he encontrado que se trata de un bug de esta versión del jdk.

La solucion es copiar el archivo msvcr71.dll de %java_home%/bin a window/system32

fuente: http://issues.apache.org/bugzilla/show_bug.cgi?id=41538

miércoles, septiembre 24, 2008

Jboss Con Tomcat 6

Tomado de:
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Deployment+en+JBoss+con+Tomcat+6

A continuación se detallan algunas consideraciones y pasos a tener en cuenta a la hora de hacer un deployment en JBoss con Tomcat 6:

1. Generar el WAR con type descriptor = 'Generic Servlet 2.4'

2. Para evitar los cambios de seguridad intorducidos en Tomcat 6, puede optarse por dos opciones:

a. Modificar el archivo context.xml del JBoss agregándole la entrada privileged="true" al tag Context, es decir que este tag debería quedar de una forma similar a:

b. Agregar en el folder WEB-INF de la web app el archivo context.xml, con la entrada anterior en el tag Context. Es decir que este context.xml podría ser el siguiente:

Nota: En particular la ventaja de la opción b) es que no requiere ninguna modificación al servidor donde va a correr la aplicación, sino que el seteo es para la web app únicamente.

3. Copiar el WAR al directorio \server\default\deploy que está por debajo del directorio de instalación del JBoss. Esto creará el directorio de la web app en un directorio "tmp" por debajo del directorio anterior.

Para mas Informacion remitirse a:

http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Deployment+en+JBoss+con+Tomcat+6



martes, julio 15, 2008

Para Graficar con Flash y PHP

Para Graficar Con PHP y Flash, existen muchos ejemplos que ayudan a crear graficas bastante interesantes.


http://www.maani.us/charts/index.php?menu=Introduction

Crear Graficos en Excel desde VFP

Tomado de
http://www.emagister.com/frame.cfm?id_centro=61174090033066666748506549694552&id_curso=46881010051955526869536853524567&url_frame=http://www.portalfox.com/modules.php?op=modload&name=News&file=article&sid=1256&mode=thread&order=0&thold=0

Hola, en muchas ocaciones nos encontramos con el problema de hacer gráficos tipo pastel en VFP. Despues de varias pruebas, logré terminar este pequeño código, para resolver este tipo de problemas, el cual lo quiero compartir con todos ustedes. Espero les sea de utilidad.

*************************************************************
*** Grafica de Pastel en MS Excel con formateo de datos ***
*** Proceso de Envio a MS EXCEL ***
*************************************************************

oExcel = CREATEOBJECT("Excel.Application")
WITH oExcel
.Visible = .T.
.Workbooks.Add
.Worksheets(1).Activate
.Worksheets(1).Name = "GRAFICA"
.Columns("A:A").ColumnWidth = 45
.Columns("B:B").Select
.Selection.NumberFormat = "#,##0.00"
.Columns("E:E").ColumnWidth = 14.31
.Columns("E:E").Select
.Selection.NumberFormat = "#,##0.00"
.Selection.Font.Bold = .T.

.Range("A1:E1").Select
WITH .Selection.Font
.Bold=.T.
.Size = 14
.Name = "TAHOMA"
ENDWITH
WITH .Worksheets(1)
.Cells(1,1).Value = "MI EMPRESA"
.Cells(3,1).Value = "Fecha de Impresión: " + ALLTRIM(DTOC(DATE()))
ENDWITH
.Range("A3:E3").Select
WITH .Selection
.Merge
.MergeCells = .T.
.HorizontalAlignment = 1
.VerticalAlignment = 1
.Font.Bold = .T.
ENDWITH
.Worksheets(1).Cells(4,1).Value = "Fecha de Anásilis: " + ALLTRIM(DTOC(DATE())) && loFecha
.Range("A4:E4").Select
WITH .Selection
.Merge
.MergeCells = .T.
.HorizontalAlignment = 1
.VerticalAlignment = 1
.Font.Bold = .T.
ENDWITH
.Range("A3:E4").Select

** Borders(1) = Linea vertical interior
** Borders(2) = Linea vertical exterior
** LineStyle = 1,7 && Línea delgada continua
** LineStyle = 2 && Línea delgada discontinua
** LineStyle = 3,8 && Línea delgada discontinua de puntos
** LineStyle = 4 && Línea delgada discontinua linea-punto
** LineStyle = 5 && Línea delgada discontinua de puntos dobles
** LineStyle = 6 && Línea gruesa continua
** LineStyle = 9,12 && Línea doble fija delgada
** LineStyle = 10,11 && Línea punto_line delgada
WITH .Selection
.Borders(2).LineStyle = 1
.Borders(2).Weight = 3
.Borders(3).LineStyle = 1
.Borders(3).Weight = 3
.Borders(4).LineStyle = 1
.Borders(4).Weight = 3 && propiedad del de ancho de linea 1-4; 3 Optimo
ENDWITH
.Range("A4:E4").Select
WITH .Selection
.Borders(3).LineStyle = 1
.Borders(4).LineStyle = 1
ENDWITH
&& Titulo de ESQUEMACIÖN
.Range("A6:E6").Select
.Worksheets(1).Cells(6,1).Value = "PUBLICIDAD ESQUEMADA"
WITH .Selection.Font
.Bold=.T.
.Size = 12
.Name = "TAHOMA"
ENDWITH
WITH .Selection
.Merge
.MergeCells = .T.
.HorizontalAlignment = 1
.VerticalAlignment = 1
.Font.Bold = .T.
ENDWITH
WITH .Selection
.Borders(2).LineStyle = 1
.Borders(2).Weight = 3
.Borders(3).LineStyle = 1
.Borders(3).Weight = 3
.Borders(4).LineStyle = 1
.Borders(4).Weight = 3 && propiedad del de ancho de linea 1-4; 3 Optimo
ENDWITH
DIMENSION titulo(6)
DIMENSION valor(6)
titulo(1) = " TOTAL DE PAGINAS "
titulo(2) = " TOTAL DE CMS COLUMNARIO POR PAGINA "
titulo(3) = " TOTAL DE CMS COLUMNARIO POR EJEMPLAR "
titulo(4) = " TOTAL PUBLICIDAD PAGADA "
titulo(5) = " TOTAL PUBLICIDAD CORTESIA "
titulo(6) = " TOTAL NOTICIAS "

valor(1) = 32
valor(2) = 234
valor(3) = 7488
valor(4) = 3256
valor(5) = 1256
** valor(6) = crGraph.TTCCSINUSAR - (Thisform.Cant_norm+Thisform.Cant_cort)
valor(6) = valor(3) - (valor(4)+valor(5))
FOR I = 1 TO 6
&& Titulo de " TOTAL DE PAGINAS "
lc = 7+I
loK = "A"+ALLTRIM(STR(lc))+":A"+ALLTRIM(STR(lc))
.Range(loK).Select
.Worksheets(1).Cells(lc,1).Value = titulo(i)
.Worksheets(1).Cells(lc,2).Value = valor(i)
WITH .Selection.Font
.Bold=.T.
.Size = 10
.Name = "TAHOMA"
ENDWITH
WITH .Selection
.Merge
.MergeCells = .T.
.HorizontalAlignment = 1
.VerticalAlignment = 1
.Font.Bold = .T.
ENDWITH
NEXT

&& Realizamos la GRAFICA

.Charts.Add
.ActiveChart.ChartType = 70 && Tipo Pastel
.ActiveChart.SetSourceData(.Sheets("GRAFICA").Range("A11:B13"),2) && Rango de Datos
.ActiveChart.Location(2,"GRAFICA")
.ActiveChart.HasTitle = .T.
.ActiveChart.ChartTitle.Characters.Text = "MI EMPRESA"
.ActiveChart.SeriesCollection(1).ApplyDataLabels(3) && Tipo de Aplicación de Leyendas A LA IZQUIERDA
.ActiveSheet.Shapes("Gráfico 1").IncrementLeft(-173.25) && Posicionamiento de la Grafica a la Izquierda
.ActiveSheet.Shapes("Gráfico 1").IncrementTop(68.75) && Posicionamiento de la Grafica hacia Arriba
.ActiveSheet.Shapes("Gráfico 1").ScaleWidth(1.28,.F.,0) && Escala de Ancho de la Gráfica
.ActiveSheet.Shapes("Gráfico 1").ScaleHeight(1.15,.F.,0)&& Escala de Largo de la Gráfica

&& Escribimos las leyendas col letras mas chicas
.ActiveSheet.ChartObjects("Gráfico 1").Activate && "Grafico 1" = Título del Gráfico
.ActiveChart.ChartArea.Select
.ActiveChart.Legend.Select
loCont = .ActiveChart.Legend.LegendEntries.Count && Cantidades de Leyendas a Formatear, en este caso 3
FOR I = 1 TO loCont
.ActiveChart.Legend.LegendEntries(I).AutoScaleFont = .T.
With .ActiveChart.Legend.LegendEntries(I).Font
.Name = "Tahoma"
.Size = 8
.Strikethrough = .F.
.Superscript = .F.
.Subscript = .F.
.OutlineFont = .F.
.Shadow = .F.
.Underline = .F.
.ColorIndex = 0
ENDWITH
NEXT

&& Personalizamos Las leyedendas de Porcentajes

.ActiveSheet.ChartObjects("Gráfico 1").Activate
.ActiveChart.ChartArea.Select
loCont = .ActiveChart.SeriesCollection.Count
FOR I = 1 TO loCont
.ActiveChart.SeriesCollection(I).DataLabels.AutoScaleFont = .T.
With .ActiveChart.SeriesCollection(I).DataLabels.Font
.Name = "Verdana"
.Size = 8
.Bold = .T.
.Strikethrough = .F.
.Superscript = .F.
.Subscript = .F.
.OutlineFont = .F.
.Shadow = .F.
.Underline = .F.
.ColorIndex = 0
EndWith
NEXT

&& Guardamos la grafica

.ActiveWorkbook.SaveAs((CURDIR()+"Graph_Esquemacion.xls"), -4143, "", "", .F., .F.)
.WorkBooks.Close
ENDWITH

oExcel = .NULL.
RELEASE oExcel

************************************
*** FIN ***
************************************

lunes, julio 14, 2008

Instalar Tomcat 6 y JDK 6

Descargar JDK 6 desde aqui, para Windows.
http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u7-windows-i586-p.exe?BundledLineItemUUID=DnxIBe.ptQ8AAAEbptYELyHM&OrderID=1fVIBe.pR7UAAAEbmNYELyHM&ProductID=LxJIBe.ovSEAAAEaVZcGcbZW&FileName=/jdk-6u7-windows-i586-p.exe


Tomado y traducido desde :
http://www.coreservlets.com/Apache-Tomcat-Tutorial/detailed-configuration.html

En resumen..

jueves, julio 03, 2008

Instalar Apache y Tomcat en Centos

Tomado de http://cjaraba.blogspot.com/2008/03/instalar-apache-y-tomcat-en-centos.html
A menudo no nos podemos encontrar con un entorno en el que necesitamos implementar Apache HTTP server con PHP para programacion web, pero del mismo modo, podemos tener otro desarrollador que necesita TOMCAT para poder publicar programas tipo JSP en el mismo server. esta guia se basa en la distro CentOS linux, en si version 5 para 64 bits. esta guia tambien esta probada en una distribucion 32 bits espero les sea de utilidad.
Cabe resaltar que CentOS es basado eb redhat, y es totalmente compatible con los paquetes RHEL o RedHat Enterprise Linux en cada una de sus versiones.

1. debemos tener los paquetes base instalados en nuestro sistema, estos son: httpd, httpd-devel, php, php-common, php-devel. y sus respectivas dependencias, para esto utilizaremos la herramienta "yum" que viene con CentOS (RedHat Enterprise)
yum install httpd httpd-devel php php-common php-devel
Luego de tener instalados los anteriores paquetes, procedemos a actualizar todo nuestro centos, haciendo uso nuevamente del comando yum, de la siguiente
yum -y update
Ahora bien, ya tenemos instalado nuestro centos con soporte PHP para el Apache, que esta escuchando por el puerto 80(puerto por defecto). CentOS tiene un directorio /var/www/html que es el ROOT del HTTP server (Apache) ahi es donde debemos colocar los archivos que queremos ver en nuestro servidor via http://ip_del_server/ o http://midominio.com si tenemos un domino.

Lo siguiente que vamos a hacer es instalar las librerias de desarrollo de Java tambien conocidas como JDK (Java Developer Kit). para ello descargamos el paquete JDK en la version 1.6 extension .bin "jdk-6u5-linux-x64.bin" para este ejemplo.
una vez obtengamos este archivo, creamos un directorio llamado java dentro de /usr, luego copiamos el archivo .bin dentro de /usr/java/ le damos permisos de ejecucion y lo ejecutamos asi:
cd /usr
mkdir java
cd java
cp /root/jdk-6u5-linux-x64.bin .
chmod +x jdk-6u5-linux-x64.bin
./jdk-6u5-linux-x64.bin


Con esto ya tenemos descomprimido todo el JDK dentro de /usr/java lo que debemos hacer es renombrar el directorio resultado para mejor organizacion asi:
mv jdk1.6.0_05 jdk1.6.0

Ahora debemos incluir en el PATH de nuestro entorno, las librerias JAVA, para esto editamos el archivo /etc/profile e incluimos las sigueintes lineas justo antes de finalizar el archivo, puede ser antes de la linea "unset i"
JAVA_HOME=/usr/java/jdk1.6.0
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH


Ahora bien, una vez terminemos con la edicion, guardamos el archivo, y actualizamos las varables de entorno asi:
source /etc/profile

Listo, podemos probar si estan funcionando las librerias, ejecutando el comando "javac -version" de esta manera nos debe mostar la version 1.6 que acabamos de instalar.
Ahora procedemos a descargar el Tomcat 5, luego de tener el archivo, vamos al directorio /usr/java/ lo copiamos ahi, lo descomprimimos, y renombramos el directorio resultado a tomcat5 para mayor orden asi:
cd /usr/java
tar xzf apache-tomcat-5.5.26.tar.gz
mv apache-tomcat-5.5.26 tomcat5

Con esto ya tenemos el tomcat en nuestro linux, ahora debemos agregar la ruta del tomcat, a nuestro entorno de trabajo, nuevamente editando el archivo /etc/profile al final deberia quedarnos algo como esto:
JAVA_HOME=/usr/java/jdk1.6.0
PATH=$PATH:$JAVA_HOME/bin
CATALINA_HOME=/usr/java/tomcat5
export JAVA_HOME CATALINA_HOME PATH


Ahora podemos correr el tomcat y testearlo en nuestro browser http://ip_del_server:8080/
/usr/java/tomcat5/bin/startup.sh

El siguiente paso es compilar el modulo jk para incluirlo en el HTTP server para esto descargamos el source descargar aqui y seguimos los siguientes pasos (suponiendo que hemos descargado el archivo en /root).
cd /root
tar xzf jakarta-tomcat-connectors-1.2.15-src.tar.gz
cd jakarta-tomcat-connectors-1.2.15-src
cd jk/native
./buildconf.sh
./configure --with-apxs=/usr/sbin/apxs
make
make install


Ahora creamos un archivo dentro de /etc/httpd/conf llamado workers.properties
workers.tomcat_home=/usr/local/apache-tomcat-5.5.16/
workers.java_home=$JAVA_HOME
ps=/
worker.list=default
worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1


Editamos el archivo de configuración del Apache (/etc/httpd/conf/httpd.conf) para cargar el módulo. En la sección LoadModules añadimos:
LoadModule jk_module modules/mod_jk.so

Y al final del archivo:
JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel warn

JkMount /jsp-examples default
JkMount /jsp-examples/* default


Ahora reiniciamos Tomcat y luego Apache:
/etc/init.d/httpd restart
/usr/java/tomcat5/bin/shutdown.sh
/usr/java/tomcat5/bin/startup.sh

lunes, junio 23, 2008

Error 380 en el Setup Wizard

Este error da generalmente porque se quedo grabado entradas corruptas en el archivo gxswinfo.ini, el mismo que esta ubicado en la carpeta raiz de la KB, lo mas recomendable es recordar cual fue la ultima KB que se utilizo para crear un instalador y en la misma eliminar ese archivo.

Con esto se soluciona el asunto.

viernes, junio 20, 2008

Error en compilador RPG - GX9 con WorkPanel TRABAJAR CON

Generalmente suele no compilar el objeto que invoca a otro objeto de la forma siguiente:

Call(TCLIENTES ,'INS','')

Lo correcto seria lo siguiente:

&Parametro = ''
TCLIENTES.CALL('INS', &Parametro)


El parametro puede ser Caracter o Numerico, asignarle siempre un valor vacio.

Cuando se hace un WorkPanel tipo Trabajar Con se detalla el siguiente ejemplo de los eventos

Event 'ADICIONAR REGISTRO' 6
............&Clave = 0
............TCLIENTE.CALL('INS', &Clave)
............Refresh
EndEvent

Event Enter
............For Each Linea
...................Do Case
.........................Case &Op = '2' // modificar
..................................TCLIENTE.CALL('UPD', Clave)
.........................Case &Op = '4' // Eliminar
..................................TCLIENTE.CALL('DLT', Clave)
.........................Case &Op = '5' // Revisar
..................................TCLIENTE.CALL('DSP', Clave)
..................EndCase
............EndFor
............Refresh
EndEvent

Esta seria la forma correcta de como trabajar un WorkPanel de mantenimiento.

Endif

miércoles, junio 18, 2008

Ruta No especificada Compilador JAVA GX9

Es tipo que cuando utilizamos el generador Java de la Version GX9, por cualquier circunstancia al momento de compilar nos desplega el siguiente error:

NAMKE ruta no existe


Eso sucede comunmente cuando hemos cambiado las rutas del tomcat

Para el caso de la ubicacion de las clases /tomcat/webapps/aplicacion/WEB-INF/classes
Para la ubicacion de las imagenes o scripts /tomcat/webapps/aplicacion/images

Debemos tener presente esta opcion cuando hacemos una modificacion al modelo o creamos un modelo nuevo, tambien cuando reinstalamos un servidor donde esta el tomcat o cuando cambiamos de servidor donde esta el tomcat.

lunes, junio 09, 2008

Para Conexion Dinamica a la Base de Datos Con GX

msg('Conectando a base de datos... '+rtrim(&Base_datos) + ' En el servidor '+rtrim(&Servidor), nowait)
&Conexion = GetDatastore("Default")
&Conexion.Disconnect()
&Conexion.ConnectionData = "SERVER=" + rtrim(&Servidor) + ";DATABASE=" + rtrim(&Base_datos)
&Conexion.UserName = 'sa'
&Conexio.UserPassword = 'sa'
&Conexio.ShowPrompt = 3
&ConexionEstado=&Conextion.Connect()
If &ConexionEstado <> 0
msg('->'+str(&ConexionEstado)+' '+&Conexion.ErrDescription)
Else
msg('Se conecto a '+&Conexion.ODBCDatasourceName)
Endif