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

jueves, mayo 29, 2008

Configurar Tomcat 5.5.20 y MYSQL con Genexus

Tomado desde http://fabriciodls.blogspot.com

Tips: Instalación de Tomcat 5.5.20 en Windows para usar con GeneXus Java sin Deployment para MySql

MySQLInstalación de Tomcat 5.5.20 en Windows para usar con GeneXus Java sin Deployment para MySql en 16 pasos.

El presente instructivo, manual o tutorial de Instalación de Tomcat para GeneXus y MySql, no deja de ser algo que a mi me sirvió para instalar Tomcat y poder usarlo con GeneXus rápidamente.
Muchas veces instalamos una herramienta y luego tenemos que volver a hacerlo y nos cuesta tanto trabajo como la primera vez porque nos hemos olvidado.
Aquí un ayuda memoria de los pasos para instalar el Tomcat 5.5.20 para usarlo con GeneXus 9.0 y el generador java.

Espero que este instructivo siga vigente por mucho tiempo, así que como hago referencia a bajar algunos Archivos de Internet, y estos no siempre están disponibles después de un tiempo determinado, voy a subir los archivos que se necesitan a un ftp propio por si quieren bajarlos de ahí.

Espero les sea útil.


Paso 1
Primero que nada y para que vayas ganando tiempo mientras vas leyendo el instructivo te paso lo que tienes que bajarte y los links.

apache-tomcat-5.5.20.exe
jdk-1_5_0_09-windows-i586-p.exe
mysql-connector-java-5.0.4.zip
mysql-5.0.21-win32.zip
mysql-administrator-1.1.9-win.msi
nmake.zip


Paso 2
Recomiendo desinstalar la versión de Tomcat que tengan instalado, cuidado porque en la desinstalación pregunta si deseas eliminar las aplicaciones que tengas, y puede suceder que tengas una aplicación particular ya funcionando en tomcat con otra versión anterior y la borres.
Te recomiendo que la copies a otro lugar.
Si no entiendes que estoy diciendo fíjate en :

C:\tomcat\webapps

si tienes alguna aplicación que sea tuya, si la tienes respaldala en otro lugar del disco y luego dile al wizard de desinstalación de tomcat que borre todo.


Paso 3
Si tienes instalado el JDK desinstalalo y si quieres puedes desinstalar el runtime también para que no te de problema con las versiones.


Paso 4
Instalate el jdk-1_5_0_09-windows-i586-p.exe
Cuando te pida la ruta de instalación si quieres luego seguir el ejemplo al pie de la letra, te recomiendo instalarlo en:

C:Javajdk1.5.0_09


Paso 5
Instalate el apache-tomcat-5.5.20.exe
En cierto momento el wizard de instalación te pregunta donde está el JDK y te pone una ruta por defecto PREFERIBLE(c:\tomcat), tu debes buscar la que mencioné en el paso 4.


Paso 6
Luego de instalado el Tomcat te debería quedar en la barra de tareas el ícono del monitor de tomcat.
Si no aparece el monitor del tomcat puedes ejecutarlo y debes levantar el tomcat si no esta levantado.


Paso 7
Tomcat no ejecuta servlets que no estén detallados en el archivo web.xml de cada aplicación .
Como este instructivo no muestra como hacer deployment debemos descomentar las lineas para que se permita la ejecución de clases anonimas.
Para esto debemos ubicar el archivo web.xml en C:\tomcat\conf editarlo, y buscar el siguiente código.

Lo que haremos es cerrar y abrir el comentario para que luego cuando hagamos deployment sea más fácil ubicar que es lo que tenemos que comentar.
Quedando el código de la siguiente forma, eliminado lo que esta en circulo rojo


Paso 8
Para ver si está todo bien con el tomcat, lo bajamos y lo volvemos a subir con el monitor tomcat y abrimos el navegaro y colocamos la siguiente url:

http://localhost:8080/servlets-examples/servlet/HelloWorldExample

Donde nos debe aparecer "hola mundo" como texto en la página.


Paso 9
Podemos ver el administrador de tomcat si ponemos la siguiente url:

http://localhost:8080


Paso 10

Nos colocamos en el directorio C:\Tomcat\webapps y creamos un nuevo folder con el nombre de nuestra

aplicacion por ejemplo "mi_sistema"

Dentro de este folder "mi_sistema" creamos los folders "images", "temp" y "WEB-INF".
Dentro del folder "WEB-INF" creamos los folder "classes" y "lib".


Paso 11
Descomprimimos el archivo mysql-connector-java-5.0.4.zip (anteriormente bajado) en una carpeta temporal y busacmos el archivo

mysql-connector-java-5.0.4-bin.jar que es el connector jdbc.

Copiamos este archivo al folder "lib" creado en el Paso 10.

En este mismo folder copiaremos otros archivos ".jar" que se encuentran en el directorio de la instalación de GeneXus

C:\Archivos de programa\ARTech\GeneXus\GeneXus90\gxjava

Estos son:

gxclassr.jar (este archivo no se encuentra con esta extensión sino que se encuentra como ".zip", debemos copiarlo y luego renombrarlo a ".jar")
GxUtils.jar
iText.jar


Paso 12

Instalamos mysql con mysql-5.0.21-win32.zip y luego creamos la base de datos en nuestro ejemplo "mi_sistema" con el administrador de base de datos de tu

preferencia. Puedes usar si quieres el mysql-administrator-1.1.9-win.msi que bajaste en el Paso 1


Paso 13
Copiaremos al folder C:\Java (creado en el Paso 4) los siguientes archivos necesarios que se harán referencia desde Genexus

El connector jdbc que usamos en el Paso 11 mysql-connector-java-5.0.4-bin.jar
Por que este lo vamos a tener 2 veces copiado? Porque en teoria podrías tener el tomcat instalado en otra maquina, y serían usandos en momento de ejecución por tomcat. Aquí estamos copiando los archivos que serán utilizados por genexus.

El nmake.exe y nmake.err (es un utilitario que permite construir proyectos a partir de archivo .mak. Lo provee el Visual Studio .Net ,también es provisto por

otros lenguajes que utilizan Makefiles, como Java) esta dentro del zip nmake.zip


Paso 14

Ahora en Genexus, configuraremos las propiedades del modelo se la siguiente forma.
Creamos el nuevo modelo de prototipo o produccion con el nombre correspondiente y las siguientes características

El Enviroment
Languaje: Java
User Interface: Web Form
DBMS: MySql
Target Path: modelojavaweb


Luego cuando quiera hacer el impacto de base de datos le damos cancelar, para nosotros definir las propiedades a mano sin el wizard


En el boton Properties

En el nodo Client Server Information

Blob local storage path:
/temp/

En el nodo Web Information

Servlet Directory :
C:\Tomcat\webapps\mi_sistema\WEB-INF\classes

Temp media directory:
/temp

Static Content Base URL:
/images

Static content directory seen from client:
C:\Tomcat\webapps\mi_sistema\images


En el boton DBMS Options

Algunos datos obligatorios a completar

Access technology to set: JDBC

Database name: mi_sistema

Server name: localhost

Server TCP/IP Port: 3306

Connect to server: At first request

Show connection dialog: Never

Userid:Usuario

User password: password

MySql Version: 4.x to 5.0.2


En el boton Execution

Plataform: Sun SDK

Classpath:
gxclassr.zip;GxUtils.jar;.;C:\javamysql-connector-java-5.0.4-bin.jar;C:\Tomcat\commonlib\servlet-api.jar

Compiler Path:
C:Javajdk1.5.0_09binjavac.exe
direct
Make Path:
C:Javanmake.exe

Interpreter Path:
C:Javajdk1.5.0_09binjava.exe

Web Aplication Base URL:
http://localhost:8080/mi_sistema/servlet/

Boton Advanced

Web Browser Settings: Use Default Browser

Luego al final boton Set as default

Para comprobar que la configuración de Genexus con respecto a Tomcat quedó en forma correcta, escribe la siguiente url en el browser:
http://localhost:8080/mi_sistema/servlet/com.genexus.webpanels.gxver

El mensaje que debe aparecer para indicar que está todo ok es el siguiente:
Running GeneXus Runtime Classes Version 9.0.2.079


Paso 15

Crear una trn en diseño e impactarla en el modelo recién configurado, o si ya teníamos transacciones creadas, solo hacer el impacto de base de datos.
Build / Impact Database

Reorganize


Paso 16

Armar los web panels main de prueba, especificar y compilar.
Ejecutar la aplicación en http://localhost:8080/mi_sistema/servlet/hmain


Felicitaciones!!!
Usted ya tiene andando su aplicación en java.

Espero le haya sido util este instructivo.
-------------------


miércoles, abril 02, 2008

Tabla fue modificada

El problema basicamente se da porque se utiliza SUBTIPOS BASADOS EN SUPERTIPOS DE LA MISMA TABLA...

Para corregir este error, se debe revisar los subtipos utilizados y su definicion.