sábado, 2 de mayo de 2009

Genexus,enviar mail con pdf adjunto

Esto lo he tenido que hacer 2 veces y como la primera fue hace algunos años y la otra fue hace unos días, en la segunda oportunidad estuve un rato largo acordándome de cada una de las cosas que hice en la primera.




La idea es que un proceso genera un pdf y automáticamente sin interacción del usuario se envía un mail (o muchos mail's).




Bueno en genexus para que se genere un reporte en formato pdf, lo que hay que hacer son 3 cosas.


1 - marcar que el reporte sea main


2 - call protocol como HTML


3 - una regla Output_file(&nombre, "pdf"); siendo nombre el nombre del pdf, con el .pdf




con esto genexus sabe que el reporte lo genera en formato pdf.




Ahora lo que queremos es que ese archivos se genere pero quede guardado en el servidor en alguna ruta que se pueda ,entonces cambiamos &nombre por el nombre completo de la ruta, por ejemplo /home/arch.pdf, y esa variable debe de llegar al reporte y debe de ser in, ejemplo


param(in:&nombre);


Y además en el call protocol hay que cambiar de HTML a Internal.




Con estos cambios tenemos el pdf en una ruta conocida del servidor, ahora lo único que hay que hacer es hacer algún proceso que envié el mail, para esto se pueden utilizar varias formas, pero lo que hay que hacer es una variable del tipo MailMessage, adjuntarle el pdf, MailMessage.attach(&nombre), y luego seguir con el resto de las cosas para enviar el mail.


Volver al inicio

Bat para respaldar archivos usando rar

El problema que tengo es el siguiente, tengo varias maquinas virtuales con ambientes de clientes, en las que en ellas le instalo la menor cantidad de programas para que ande lo mas rápido.


Como la mayoría de las maquinas son Windows, no puedo utilizar en tar y gzip de Linux.




Como tengo documentos muy importantes quiero que periódicamente se haga un respaldo de estos.




En Internet hay muchos programas que hacen esto, pero como dije no quiero instalar nada, así que esa no es una opción.




Me pongo a buscar en Internet y por consola DOS se puede hacer rar o zip utilizando winrar, pero repito no quiero instalar nada, entonces encontré la siguiente solución.




Solamente con copiar el programa de winrar, rar.exe, a una de estas maquinas virtuales, y hacer un bat que mas abajo detallare, se pueden generar respaldos muy fácilmente.




si por consola ejecutaremos rar.exe, nos da todos los parámetros que podemos utilizar, pero yo pongo un pequeño ejemplo abajo para que sea un punto de partida.






"C:\ruta\Rar.exe" a -ad -m3 -agYY-MM-DD-hh-mm Z:\nombrerar "C:\rutaarespaldar\"




C:\ruta\Rar.exe es donde copiamos el rar.exe


Z:\nombrerar es el nombre del archivo a generar


C:\rutaarespaldar es la carpeta que respaldaremos


a quiere decir que si existe el archivo entonces agrega


-ad añade el nombre de archivos la carpeta del archivo


-m3 es la compresión puede ir hasta 5


-ag le agrega al nombre del rar la fecha y hora, ejemplo z:\nombrerar-09-08-30-12-10.rar




Esto ahora lo que tenemos que hacer es o lo ejecutamos manualmente (muy tedioso), o lo ponemos en inicio, para que se ejecute cada vez que inicies la sesión, o lo agregas al programador de tareas (estas son las 3 opciones que se me ocurrieron).


Volver al inicio

domingo, 11 de enero de 2009

Comprimir determinados archivos

Tengo una carpeta la cual tiene cientos de archivos, de los cuales quiero hacer un tar.gz de solo alguno de ellos.


Utilizaremos una combinacion de find y tar para poder lograrlo.




find /ruta_de_carpeta -name "*.txt" | xargs tar -zcvf misarchios.tar.gz




con esto buscamos dentro de la carpeta ruta_de_carpeta los archivos con extension txt (aca se pude buscar lo que quieran) y los comprimimos en el archivo misarchivos.tar.gz



Volver al inicio

domingo, 7 de diciembre de 2008

Agrandar particion en maquina virtual

La situación es la siguiente, tengo un windows xp en una maquina virtual con VMWare, la cual me esta quedando chica para las cosas que tengo en esta. Entonces las solución que se me ocurrieron son 3


1 - agregarle un disco y seguir trabajando en el segundo disco, esta solución es fácilmente aplicable, pero para mi caso no me servía


2 - crear una nueva maquina virtual y respaldar todo lo de la anterior, el tiempo que llevaba realizarlo no me caía en gracia.


3 - y la tercera y ultima es agrandar el disco primario (Disco C).




Investigando un poco en Internet encontre la aplicación de vmware




vmware-vdiskmanager




Con esta aplicación podemos hacer muchas cosas con los discos duros de la VMWares's, ejemplo desfragmentarlo, y obviamente agrandarlo.


Para agrandar el disco duro es muy fácil, vamos por dos y ejecutamos esta aplicación, podemos ver el help para mas datos, pero el tema no queda ahí.


Si leen el warning que da al finalizar el proceso para agrandar el disco, dice algo como que la aplicación te agranda el disco, pero no te agranda la partición.






Entonces seguí un poco mas en Internet (se pude usar partition Magic, pero yo quise investigar un poco mas) y encontre gparted-livecd-0.3.4-11.iso, es un iso que es liveCD, es decir bootea solo con este iso, y te da unas cuantas aplicaciones (free en su mayoría, por no jugarmela y decir todas) para manejo de disco, y la que yo utilice es la que me deja agrandar la partición.


Al se un iso y liveCD solo hay que mapearla en la maquina virtual para que levante esto, iniciamos la maquina y nos arranca y nos hace algunas preguntas estilo tipo de teclado, idioma, etc, y luego nos ofrece las aplicaciones a podes ejecutar.




Así que con estas 2 aplicaciones solucione el dilema de tener el discoC de un windows xp lleno.



Volver al inicio

domingo, 16 de noviembre de 2008

Obtener texto de un archivo que concuerde con una expresión

Bueno lo que necesito es de un archivo muy pero muy grande, quiero obtener el renglón en donde aparece una determinada expresión, y los n renglones que están después.




Esto lo logramos con grep en Linux, y el comando es el siguiente.




grep -A 10 -e expresión archivo.txt > resultado.txt




con este comando vamos a analizar el archivo llamado archivo.txt y la expresión que queremos encontrar es expresión y todo esto lo guardamos en el archivo resultado.txt. Lo que guardamos es el renglón donde aparece expresión y los próximos 10 renglones.




Esto lo he sacado de http://man.cx/grep(1)/es que van a encontrar los que les mencione y muchas cosas mas.



Volver al inicio

domingo, 9 de noviembre de 2008

Respaldo de mysql solamente inserts

Tengo una base mysql y quiero hacer un respaldo, es decir un .sql solo con los inserts de la base de dato, también quiero que no me haba ni el create ni los drop de las tablas, y otra cosa extra que quiero hacer es que no haba lock de las tablas.




El comando seria el siguiente




mysqldump -u root -ppass --lock-tables=false --skip-add-locks -c -e -t -n base > archrespaldo.sql



Volver al inicio

Contar archivos linux

Necesito contar cuantos archivos hay en una carpeta Linux.




ls /home/* | wc -l




esto me dice los archivos de la carpeta /home.



Volver al inicio