Author Archive

  • Como Usar FTP en Shell Script

    2

    A diario hago backup en mis servers pero los archivos quedan residentes en las mismas máquinas. Obviamente mientras el backup esté mas lejos de los datos originales menores son las probabilidades de no recuperarse de un desastre computacional.

    Lo ideal seria hacer una transmisión FTPS o SFTP si estás preocupado por algun sniffer o similar, pero bueno, aquí vamos a ver la solución fácil y rápida con un shell script muy sencillo.

    #!/bin/sh
    HOST='www.myserver.com'
    USER='myuser'
    PASS='mypassword'
    #voy a hacer backup del folder creado ayer
    YESTERDAY=$(date --date='1 day ago' +%Y%m%d)
    
    # pensemos que dejamos los backups diariamente en este path
    # los cuales estan en folders con formato fecha cual
    # 20100227 (YYYYMMDD)
    cd /home/myuser/backups/
    # creo localmente un folder con el mismo nombre
    mkdir $YESTERDAY
    cd $YESTERDAY
    
    ftp -n $HOST <<END_SCRIPT
    quote USER $USER
    quote PASS $PASS
    # aca vamos a la misma locacion pero en el server
    cd /home/myuser/backups/$YESTERDAY
    # aca es donde bajamos el archivo que queremos backupear
    get backup.tar
    quit
    END_SCRIPT
    exit 0
    

    Y listo, solo nos falta una entrada en el cron para correr esto a diario. Para ello:

    crontab -e

    Entonces agregamos el script para ser llamado diariamente

    0 1 * * * /usr/share/scripts/mybackupscript.sh

    Esto soluciona grandes dolores de cabeza con mínimo esfuerzo. Que lo disfruten!

  • ZPL 2 Para Impresoras Zebra en Java

    8

    Hace unos dias me topé con una aplicación la cual requería impresión de unos labels y códigos de barra. La impresora era la famosa Zebra la cual es super versátil y el cual ha desarrollado la versión 2 de su propio lenguage para impresión. ZPL 2.

    Básicamente la impresora acepta comandos, no un stream de datos como estamos acostumbrados a enviar en Java. Veamos un ejemplo sencillo de código ZPL.

    ^XA
    ^FO10,0^ARN,11,7^FD SOME TEXT ^FS
    ^FO300,0^ARN,11,7^FD SOME VALUE ^FS
    ^FO10,35^ARN,11,7^FD SOME TEXT ^FS
    ^FO300,35^ARN,11,7^FD SOME VALUE ^FS
    ^FO10,70^ARN,11,7^FD SOME CODE ^FS
    ^FO10,115^ARN,11,7^BCN,60,Y,Y,N^FD 23749237439827 ^FS
    ^XZ

    Una vez que tenemos nuestro código ZPL definido (aca pueden ver como escribir ZPL) vamos a mandar un comando de impresión directamente a través de Java. Vale recordar que las impresoras Zebra se instalan como cualquier otra impresora (LPT1 o USB). Aquí el código Java.

    // aca obtenemos la printer default
    PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
    
    String zplCommand = "^XA\n" +
    "^FO10,0^ARN,11,7^FD SOME TEXT ^FS\n" +
    "^FO300,0^ARN,11,7^FD SOME VALUE ^FS\n" +
    "^FO10,35^ARN,11,7^FD SOME TEXT ^FS\n" +
    "^FO300,35^ARN,11,7^FD SOME VALUE ^FS\n" +
    "^FO10,70^ARN,11,7^FD SOME CODE ^FS\n" +
    "^FO10,115^ARN,11,7^BCN,60,Y,Y,N^FD 23749237439827 ^FS\n" +
    "^XZ";
    
    // convertimos el comando a bytes
    byte[] by = zplCommand.getBytes();
    DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
    Doc doc = new SimpleDoc(by, flavor, null);
    
    // creamos el printjob
    DocPrintJob job = printService.createPrintJob();
    
    // imprimimos
    job.print(doc, null);

    Así de simple podemos mandar cualquier comando a las impresoras Zebra que soporten ZPL 1 y ZPL 2. Si buscan en internet ZPL busquen ZPL Zebra porque ZPL tambien es un lenguage de programación para aplicaciones científcas.

  • Federated Login Para Tu Aplicacion

    2

    Introducción

    Hacer un login para usuarios en una aplicación requiere cumplir con una serie de items de seguridad que no siempre tenemos en cuenta tales como:

    • Definición de políticas para contraseñas
    • Guardar contraseñas encriptadas
    • Transmitir las credenciales por HTTPS
    • Considerar Hand Shaking
    • Algoritmos de recuperación de contraseñas

    y así varios más.

    Por todos estos motivos yo trato de aplicar el concepto de resuabilidad. Para qué esforzarnos de tal manera si podemos reutilizar herramientas y APIs que hicieron empresas que dedican cientos de developers a eso ? Acá es donde introducimos el concepto de Federated Login.

    Podemos decir que el concepto de Federated Login se refiere a la conjunción de información de una persona o su propia identidad virtual, almacenado en múltiples sistemas distribuidos el cual permite acceso a diferentes aplicaciones que hayan solicitado la identidad y obviamente que se le haya otorgado.

    Si por ejemplo yo me identifico con mi Federated Login en un sitio web A y ese sitio web utiliza servicios del sitio B, éste puede confiar en la autenticidad de mis credenciales ya previamente otorgadas a sitio A.

    Estadísticas en Argentina

    Al día de hoy calculamos casi 20 millones de usuarios de Internet en nuestro país ( parece ser que en el 2008 eramos 11 millones ). Ahora, de esos casi 20 millones un 50% parece tener cuenta de Facebook, eso es MUCHO. Entonces por qué no tomar ventaja de ésta base de usuarios ? y más aun, del federated login provisto por este monopolio social ?

    Acá la URL de facebook que explica como implementar su Federated Login

    Login con Facebook

    Alternativas

    Si no queres utilizar Facebook para un login podes utilizar otros servicios tales como twitter y google entre otros.

    Login con Google

    Login con Twitter

    Login con Yahoo

  • Pampatec.com en venta

    0

    Dominio en venta pamapatec.com. Contactarse con a través de http://www.rodrigoasensio.com/contacto/ o al email rasensio [at] gmail com

  • Mejores Practicas Para JDBC

    0

    En el día de hoy vamos a ver algunos tips o mejroes prácticas para JDBC.

    1. Usar drivers tipo 4

    Siempre que se pueda es mejor utilizar drivers tipo 4 ya que ésta arquitectura encapsula enteramente la implementacion de la API de JDBC incluyendo la lógica de comunicación directa con la base de datos utilizando solo 1 driver. Permite que el driver sea pequeño y conciso además de ser 100% java.

    2. Utilizar un pool de conexiones

    Hoy en día cualquier aplicación seria debe utilizar un pool de conexiones a base de datos. Esta reduce el tiempo de creación y la utilización de recursos de la máquina. Apache DBCP es una utilidad muy popular para poder hacer pooling.

    3. Utilizar un pool de statements

    Si es por optimizar también podemos optimizar la creación de PreparedStatement en java alojandolos en un pool de statements el cual está diponible recien en JDBC 3.0

    4. Quitar el autocommit

    connection.setAutoCommit(false);
    

    Por default Java deja autocommit encendido, lo cual genera una transacción por cada SQL o DDL que viaja a la base de datos. En cada transacción hay una utilización de recursos del sistema en la base de datos mucho mayor a que si no la hubiese. Evaluando tu aplicación podrías hacer delay de el commit de una transacción lo más posible para optimizar recursos.

    5. Utilizar addBatch()

    La utilización de addBatch() ayuda a ejecutar varias operaciones similares reduciendo el tráfico por la red enviando solo 1 paquete en vez de tantos como inserts quieras hacer.

    6. Select Column1

    Siempre pero siempre utilizar SELECT column1, column2, etc, nunca Select * porque esto va a hacer 2 lecturas en la base de datos, 1 para ver que columnas tiene la tabla X y otro el mismo SELECT. Además tambien evitaríamos traer datos innecesarios que lo único que van a hacer es generar más tráfico de red.

Page 3 of 49«12345»102030...Last »