September 20 2008

Día del software libre

Saturday, September 20, 2008 10:21
Posted in category Uncategorized

El tercer sábado de cada mes de septiembre se celebra en todo el mundo el día del Software Libre. Este año por tanto
se celebra el 20 de septiembre. Esta fiesta, que lleva conmemorandose desde septiembre de 2004, pretende homenajear
a quienes desarrollan programas y sistemas abiertos así como fomentar su uso y conocimiento.

Existen multitud de software libre, hacer una lista sería casi imposible, pero os puedo destacar algunos sin los cuales muchos de nosotros ya
no sabríamos vivir:

Si te quedas con ganas de conocer más programas, siempre pudes acudir a esta lista de software libre que he encontrado por la red de redes.

September 19 2008

Generar Zips desde la consola

Friday, September 19, 2008 8:07
Posted in category Uncategorized

A veces he tenido que generar un zip al vuelo adjuntando varios ficheros que el usuario
ha seleccionado, bien desde una aplicación, en mi caso con la que trabajo todos los días la EBS de Oracle o bien
desde una página web. Una forma sencilla de hacer esto es con este pequeño script bash:

#!/bin/bash
######
# Recibe como primer parametro el nombre del fichero a crear (zip)
# y como segundo la ruta de donde estan los ficheros a comprimir.
# Recibe tantos parametros como documentos se quieran añadir al zip.
# Ejemplo de uso --> bash fichero.zip /home/deckerix/documentacion renault.txt mclaren.txt ferrari.txt
######

NOMBRE=$1
shift
RUTA=$1
shift
cd $RUTA

until [ -z "$1" ]   
do
  zip /tmp/$NOMBRE.zip $1
  shift
done

exit 0
September 18 2008

Cuantas palabras eres capaz de teclear 60 segundos?

Thursday, September 18, 2008 19:45
Posted in category Uncategorized

El juego es bastante sencillo, se trata de conocer cuantas palabras eres capaz de escribir en un minuto.

Engancha tela…

42 words

Speed test

September 17 2008

Subir ficheros ftp por linea de comandos

Wednesday, September 17, 2008 22:02

Os presento un script bastante sencillo para subir ficheros a un ftp desde línea de comandos.

#!/bin/bash

_host="192.168.230.192"
_user="usuario"
_pass="pass"

 
cd /tmp/directorio

for ff in *; do                                 

	echo "Uploading " $ff
	/usr/bin/ftp -in $_host <<EOF                            
	user $_user $_pass
	binary
	put $ff
	bye
	EOF
	
done

September 17 2008

Huevo pascua de notepad

Wednesday, September 17, 2008 20:09
Posted in category Uncategorized

Un huevo de pascua de nuestro “amigo” Windows, lo podemos encontrar en uno de sus programas más antiguos, el bloc de notas.

bush hid the facts

Si abrimos un bloc de notas (notepad) y en él escribimos bush hid the facts
que significa bush oculta los hechos y lo guardamos con cualquier nombre, cual será nuestra sorpresa al
volver a abrir el fichero con el bloc de notas.

¿Una broma de los desarrolladores? ¿o Microsoft no quiere que escribas “cosas malas” de George?
Nota: si es que tu computadora tiene instalada los caracteres chinos, aparecerán letras chinas.

September 16 2008

Selects dinamicos con Ajax

Tuesday, September 16, 2008 20:16
Posted in category Uncategorized

Muchas veces tenemos que hacer que varios campos select de una página web sean dinámicos, es decir dependan unos
de otros o que sus listas de valores se actualicen al realizar una determinada acción.

Una forma sencilla de realizar selects dinámicos es con Ajax. Os voy a presentar un sencillo ejemplo de esto.
Para ello en primer lugar necesitamos un formulario con 2 inputs de tipo select:


	<html>
	<body>
	<script type="text/javascript" language="javascript" src="ajax_script.js"></script>

	<form name="formulario">

			<!-- primer select de categorias -->
			<select name="categorias" onchange="obtenerSubCategorias();">
				<option value="1">deportes</option>
				<option value="2">comida</option>
				<option value="3">empresas</option>
			</select>
			<!-- capa que contiene al segundo select, el dependiente -->
			<div id="capaSubCategorias">
				<select name="subCategorias">	</select>
			</div>
	</form>

	</body>
	</html>


Podemos ver en el primer select el evento onchange. Cuando el valor seleccionado para una categoria varíe,
se ejecutará la función “obtenerSubCategorias”. Esta función está definida en el fichero javascritp ajax_script.js.
Este fichero es el siguiente:

function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Tu navegador no soporta la tecnología Ajax!Usa Firefox por ejemplo");
	}
}
var gestorPeticiones = getXmlHttpRequestObject();


function obtenerSubCategorias() {
	if (gestorPeticiones.readyState == 4 || gestorPeticiones.readyState == 0) {

		var idCategoria    = document.formulario.categorias.value;
		gestorPeticiones.open("POST", 'getSubCategorias.php', true);		
		gestorPeticiones.onreadystatechange = controlGetSubCategorias;
		gestorPeticiones.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		gestorPeticiones.send("idCategoria="+idCategoria);
	}		
}




function controlGetSubCategorias() {
	if (gestorPeticiones.readyState == 4) {
		var ss = document.getElementById('capaSubCategorias');
		var str = gestorPeticiones.responseText;
		ss.innerHTML =str;
		
		
	}
}

ObtenerSubCategorias utiliza la variable gestorPeticiones que es un objeto XMLHttpRequest, el cual es
una interfaz empleada para realizar peticiones HTTP y HTTPS a servidores web.

El código es bastante sencillo y fácil de entender. Abrimos una conexión con el servidor pidiendo la página
getSubCategorias.php y le pasamos como parámetros el idCategoria.

Cuando la conexión se haya efectuado, el control de las operaciones lo llevará la función controlGetSubCategorias.
Esta función lo que hará es sustituir el contenido de la capa capaSubCategorias por el resultado obtenido en la página llamada,
consiguiendo generar un nuevo select con las subcategorias de la categoria seleccionada.

El código de getSubCategorias.php es:


<?php
$idCategoria = $_GET['idCategoria'];
echo "<select>";
getSubcategorias($idCategoria);
echo "</select>";


/*recuperará las subcategorias a partir del id de categoria.*/
function getSubcategorias($idCategoria){
echo <<< OPCIONES
	<option value="1">a</option>
	<option value="2">b</option>
	<option value="3">c</option>
OPCIONES;
}
?>

Será necesario modificar este fichero, para atacar a la base de datos y generar dinámicamente los options del select a partir
del id de la categoria.

Espero que os sea de ayuda.

September 15 2008

Me llega la carta de Adsense de Google

Monday, September 15, 2008 19:13
Posted in category Uncategorized

Una de las formas más utilizadas para ganar dinero a través de internet tiene que ver con los ingresos por concepto de
publicidad. Esta fuente de ingresos consiste en colocar anuncios en tu sitio web para que sean vistos por los visitantes.

Uno de los sistemas más importantes de publicidad en internet es el ofrecido por Google, “Adsense”.
Hace poco puse publicidad en mi sitio web. El objetivo era y sigue siendo intentar sacar dinero para pagarme
los hostings para varios proyectos que tengo en mente.

La forma de ganar dinero consiste más o menos en hacer clicks sobre los anuncios. El valor de cada click depende de
diversos conceptos que Google establece pero lo cierto es que para tener un cheque cada mes deberás disponer
de un sitio web muy visitado.

Se te paga mediante cheque cuando llegas a un mínimo de 100 dólares, pero previamente a esto Google te
pedirá que confirmes tu dirección postal a través de una carta que te enviará por correo con una contraseña a ser
introducida en tu cuenta de Adsense y una llamada a tu móvil. Tras dos semanas llegará a tu casa, siempre que hayas
conseguido un mínimo de 10 dolares, dicha carta para poder habilitar los pagos.

Y aquí podeis ver la carta de Google. Estoy por enseñarsela a todos los vecinos… porque parece que hasta da caché ;-). No todos los días
se recibe una carta de Google.


google3


google2


google1

September 14 2008

Subir y enviar ficheros por mail (Java).

Sunday, September 14, 2008 13:46
Posted in category Otros, Programación

Es un requerimiento bastante común realizar un formulario web para enviar mails con adjuntos a otras personas.
El api que proporciona Java para el envio de emails no es muy complicado pero aún así es un poco tedioso empezar con él.
He creado un wrapper del api de envio de mail de java para que este proceso nos resulte mucho más fácil.

El wrapper permite:

/*Indicar el host que nos hará de relay del correo*/
gestorMail.setHost("192.168.200.239");
 
/*Establecer el campo FROM*/
gestorMail.setFrom(valorCampo);
 
/*Mandar un correo a varias personas*/
String paras[] =  valorCampo.split(","); //puede mandarse el emal a varias direcciones
for (int k=0; k &lt; paras.length ; k++){
   	gestorMail.addToAddress(paras[k],paras[k]);    //añadimos la direccion
}
 
/*Establecer un asunto y un mensaje*/
gestorMail.setAsunto(valorCampo);
gestorMail.setMensaje(valorCampo);
 
/*Adjuntar ficheros*/
File fichero1 = new File("C:\\temp\\emails\\"+nombreFichero);
gestorMail.attach(fichero1);
gestorMail.attach(fichero2);
 
/*Controlar el envio*/
int control=gestorMail.enviarMail();

El proceso de upload de ficheros no es muy intuitivo si no se ha visto nunca. Os presento aquí el código necesario
para realizar un upload de ficheros en jsp.

    boolean isMultipart = FileUpload.isMultipartContent(request);
    List parametrosMultiPart = null;
    DiskFileUpload upload = new DiskFileUpload();
    parametrosMultiPart = upload.parseRequest(request);
 
    Iterator itr = parametrosMultiPart.iterator();
    Hashtable tablaParametros = new Hashtable();
    File ficheroAdjunto =null;
 
     while (itr.hasNext()) {
           FileItem item = (DefaultFileItem) itr.next();
 
            if (item.isFormField()) {  // Buscamos campos de formulario tipo textarea, input.
 
                        String nombreCampo = item.getFieldName(); // obtenemos el nombre del campo y su valor
                        String valorCampo  = item.getString();
 
                         if (nombreCampo!= null &amp;&amp; nombreCampo.equals("de")){
 
                        		gestorMail.setFrom(valorCampo);
 
                         }else
                         if (nombreCampo!= null &amp;&amp; nombreCampo.equals("para")){
 
                             String paras[] =  valorCampo.split(","); //puede mandarse el emal a varias direcciones
                             					  //separadas por comas
    			 for (int k=0; k &lt; paras.length ; k++){
                              	gestorMail.addToAddress(paras[k],paras[k]);    //añadimos la direccion
                             }
                         }else
                         if (nombreCampo!= null &amp;&amp; nombreCampo.equals("asunto")){
                           gestorMail.setAsunto(valorCampo);
                         }else
                         if (nombreCampo!= null &amp;&amp; nombreCampo.equals("mensaje")){
                            gestorMail.setMensaje(valorCampo);
                         }
            } else {//case file
                  //Objeto que guardara el fichero para ser utilizado más adelante
 
                    cajonNombres.add(item.getName());
    	        if( item.getName()!=null &amp;&amp; !item.getName().equals("") ) {
    		    String nombreFichero = item.getName().substring(item.getName().lastIndexOf("\\")+1);
                        File fichero = new File("C:\\temp\\emails\\"+nombreFichero);
    	            item.write(fichero);
                	    gestorMail.attach(fichero);
            	}
           }
    }//fin while

El código entero (tanto el upload de ficheros como el wrapper de la api de java) os lo podéis descargar de aquí.

September 11 2008

Crear una TPV Virtual (pasarela de pago)

Thursday, September 11, 2008 21:51
Posted in category Otros

Hoy os voy a comentar como crear una pequeña aplicación para integrarla con una TPV.
La integración está hecha con la tpv de 4B, pero os podrá servir de ejemplo para otras tantas.

Este programa genera un XML y lo envía a un servidor tpv del cual esperamos respuesta. En primer lugar recibe los parámetros
de nuestra aplicación, genera con ellos dicho XML y posteriormente lo envía. La parte más dificil puede ser la
implementación de la función hash. Una función hash es un método para generar claves o llaves que representen de manera
casi unívoca a un documento, registro, archivo, etc..

Recibimos los parámetros

/*
  @author deckerix
  @jsp java class implementar tpv virtual
*/
package tpv;
public class GestionConexion {
 
public static  void main(String args[] ){
 
    String URL            = "https://entrada.4b.es/PPI/PPIXMLServer";
 
    String PAN            = "xxxxxxxxxx"; //numero de tarjeta
    String IMPORTE        = "1";
    String MONEDA         = "978";
    String USUARIO        = "PIxxxxxxx";
    String COMERCIO_PUC   = "xxxxxx";
    String IP             = "xxx.xxx.xxx.xxx";  //nuestra ip de salida
    String IdComercioPPI  = "PIxxxxxxxx"; //nuestro codigo de comercio
    String referencia     = "1";
    String fechaHora      = "20080820114251";
    String fechaCaducidad = "1009";
    String formaDePago    = "999";
 
/*Generacion del hash*/
    String concatenacion = PAN + IMPORTE + MONEDA + USUARIO + COMERCIO_PUC + IP;
    String hashGenerado =  Hash.generarHash4B(concatenacion);

Generamos el XML

    String xml =      "<!--?xml version='1.0' encoding='ISO-8859-1'?-->"
                      +""
                      +   ""
                      +     ""+IdComercioPPI+""
                      +     ""+referencia+""
                      +     ""+fechaHora+""
                      +     ""+PAN+""
                      +     ""+fechaCaducidad+""
                      +     ""+IMPORTE+""
                      +     ""+MONEDA+""
                      +     ""+formaDePago+""
                      +     ""+USUARIO+""
                      +     ""+hashGenerado+""
                      +   ""
                      +  "";

Mandamos el XML

     /*Imprimimos el XML que mandamos*/
        System.out.println(xml);
 
        try {
            byte[] res = Conexion.OpenHttpRequest(URL, "POST", "application/xml", xml.getBytes());
            /*Imprimimos la respuesta*/
            System.out.println(new String(res));
 
        } catch (Exception ex) {
            ex.printStackTrace();
        }
 
} //fin main

El código entero os lo podeis descargar de aquí

September 10 2008

Plantillas utiles para desarrolladores web.

Wednesday, September 10, 2008 22:33
Posted in category Uncategorized

Aquí teneis una recopilación de 28 plantillas con comandos y atajos para las principales aplicaciones y aspectos relacionados con el diseño web.

http://sixrevisions.com/resources/cheat_sheets_for_web_designers/


Página 61 de 64« Inicio...5960616263...Fin »