Blog de David Rodriguez

Internet, tecnologia, programacion, SEO

Archive for the 'Programacion' Category

problema window.open no funciona en Internet Explorer 8 (ie8)

diciembre 1st, 2009 by David Rodriguez

Pues hemos encontrado que las ventanas emergente .. con internet explorer 8 no funcionaban, mientras que en el resto de los navegadores si que funcionaban (firefox, google chrome, incluso internet explorer 6 y 7).

El problema es el nombre que se le dá a la ventana .. que no permite ni espacios en blancos ni guiones bajos .. solo caracteres alfanumericos.

Es decir, si tenemos:

window.open(‘url’,'nombre de pagina’,'parametros’);

para que funcionara correctamente en ie8 deberia estar escrito:

window.open(‘url’,'nombredepagina’,'parametros’);

Cuidado con estas gilipolleces de nuestro gran amigo microsoft, que siempre está ayudando a los desarrolladores a facilitarnos el trabajo en los desarrollos web.

Category: Internet, Programacion | 2 Comments »

Como configurar un servidor de correo qmail para hacer un relay selectivo

noviembre 12th, 2009 by David Rodriguez

Despues de hacerlo en varias maquinas, me he dado cuenta que no hay ninguna referencia a como hacer esto en español. Con lo cual, os voy a comentar lo que he realizado y los posibles problemas que puedes encontrarte para permitir el envio de correos desde un servidor a otro (relay).

El problema es que tenemos 2 servidores, y desde uno queremos utilizar el otro como maquina que envia los correos, para ello, en el servidor que va a enviar los correos, necesitamos configurar el qmail para que nos deje enviar esos correos desde la otra maquina. Esta opción siempre viene cortada para evitar los ataques de SPAM a esa pagina.

Para ello, nos vamos a basar en esta url, donde explica los pasos que hay que seguir. Siempre tenemos la pagina de qmail oficinal y una no oficial con bastante información en ingles, aunque para mi .. no la suficiente.

Lo primero es bajarse una aplicación para el qmail, como las que aparecen en la pagina no funcionan del todo bien, os dejo la mía con mis propias instrucciones.

ucspi-tcp-0.88

para desempaquetar el fichero

$ tar xvf ucspi-tcp-0.88.tar

$ cd ucspi-tcp-0.88

$  make

En caso de no tener instalado el comando make hay que instalarlo

$ yum install make

tambien hay que tener instalado el gcc .. con lo cual si te da error por no tienes el gcc tambien hay que instalarlo

$yum install gcc

Si al compilar te sigue dando errores como a mi .. que es lo mas normal, hay que comentar una fila en el fichero error.h tal y como comentan en esta url , hay que eliminar la siguiente fila:

extern int errno;

y cambiarla por esta otra:

#include <errno.h>

De esta forma ya compila y se puede ejecutar

$ make setup check

Con esto ya tenemos configurado el programa, ahora tenemos que configurarlo con nuestras opciones.

creas el fichero /etc/tcp.smtp y se pone lo siguiente:

1.2.3.4:allow,RELAYCLIENT=""
 127.:allow,RELAYCLIENT=""

Rellenando los valores 1.2.3.4 por la IP del servidor desde el que vamos a lanzar los envios de correo. Es decir, al servidor al que le permitimos que nos mande emails para enviar.

Para no tener problemas en un futuro, creamos este fichero /etc/dnsrewrite

$ touch /etc/dnsrewrite
$ cat /etc/tcp.smtp | tcprules /etc/tcp.smtp.cdb ~/tcp.smtp.tmp

Paramos el servicio de xinetd

$/etc/rc.d/init.d/xinetd stop

y ejecutamos el programa donde 2020 hay que poner el usuario y el grupo del usuario de qmail.

$ tcpserver -x/etc/tcp.smtp.cdb -u2020 -g2020 0 smtp /var/qmail/bin/qmail-smtpd &

Una vez hecho esto, ya estariamos escuchando por el puerto 25 para ver recibir peticiones

 $ netstat -apn | egrep ^tcp | egrep LISTEN

tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      2574/tcpserver

Una vez hecho esto, ya podemos probar a enviar un email desde el otro servidor, os dejo un codigo en php para probarlo utilizando el paquete htmlMimeMail.php:

 <? set_time_limit(0);

error_reporting(E_ALL);
include('mail/htmlMimeMail.php');

    $email = "xxxx@xxxx.com";
    $emailshow = "nombre";

    $servidorcorreo = "1.2.3.4";
    $subject = "correo de prueba - $servidorcorreo";

$fecha=date("Y-m-d");
$mail = new htmlMimeMail();
    $htmlmail = "prueba de envio";
    $mail->setSMTPParams($servidorcorreo,25);
    $mail->setHtml($htmlmail);
    $mail->setReturnPath($email);
    $mail->setFrom('"'.$emailshow.'"<'.$email.'>');
    $mail->setSubject($subject);
    $mail->setHeader('X-Mailer', 'HTML Mime mail class ');
    $mail->buildMessage(array($email));
    $result2 = $mail->send(array($email), 'smtp');

    if (!$result2) {
            print_r($mail->errors);
    } else {
            echo 'Mail sent!';
    }
  ?>

Ya solo nos quedaría grabarlo en el arranque para que si se reinicia la maquina, no tengamos que rearrancar el servicio, con lo cual, en el fichero   /etc/rc.local añadimos lo siguiente:

$  vi /etc/rc.local

añadimos lo siguiente:

 /etc/rc.d/init.d/xinetd stop
/usr/local/bin/tcpserver -x/etc/tcp.smtp.cdb -u2020 -g2020 0 smtp /var/qmail/bin/qmail-smtpd &

De esta forma .. reiniciamos la maquina para comprobar que todo funciona correctamente

$ reboot

Espero que este rollo sirva a mucha gente que se está pegando con el qmail a resolver sus dudas en español.

Category: Internet, Programacion | 2 Comments »

Go, nuevo lenguaje de programación de Google

noviembre 12th, 2009 by David Rodriguez

Me entero esta mañana que google ha “abierto” un codigo de programación que ellos utilizan. En principio es un lenguaje muy parecido a C++ y compilado bajo linux. Este lenguaje se llama Go.

Imagino que es el utilizan para muchas de sus herramientas, y ya que lo tenian hecho para ellos, mejor abrirlo a toda la comunidad de desarrolladores para intentar ser un referente en el mercado.

Personalmente, no creo que tenga muchos seguidores .. aunque ya se sabe, que todo el mundo piensa que todo lo que toca google lo convierte en oro.

Veremos si dentro de unos años nos toca hacer unos cursos en algunas academias para aprendernos este nuevo lenguaje de programación.

Category: Internet, Programacion | No Comments »

Copiar archivos entre distintos servidores linux

noviembre 4th, 2009 by David Rodriguez

Si necesitas tener sincronizadas distintas carpetas en linux, puedes crearte una tarea en el crontab para copiar cada x tiempo los ficheros de un servidor a otro.

Para poder hacer esto, lo primero que tenemos que hacer es crear una clave publica en un servidor.

  $ ssh-keygen -t rsa

Con esto generamos un par de ficheros:

 id_rsa.pub e id_rsa

El fichero id_rsa.pub debes copiarlo en el otro servidor, para que no te pida contraseña cada vez que pidas entrar y poder crear la tarea en el crontab. Normalmente, estos fichero se generan en /root/.ssh/ y se deben copiar en la carpeta authorize_keys

$ scp /root/.ssh/id_rsa.pub 192.168.1.111:/root/.ssh/authorized_keys

Ahora ya podremos generar una tarea para poder copiar ficheros de un servidor a otro. Esto lo hemos realizado con el protocolo SCP

$ scp -r 192.168.1.111:/var/www/vhosts/xxx.com/httpdocs/images/ /var/www/vhosts/yyyyy.com/httpdocs/images/

Con lo que tendriamos un directorio de imagenes totalmente sincronizado en ambos servidores, según la sincronización que hayas configurado en el crontab.

Para realizar esto, me he basado en los siguientes links:

http://www.laweba.net/linux/como-sincronizar-dos-ordenadores-en-linux/

http://bootlog.org/blog/linux/tip-ssh-scp-y-un-as-bajo-la-manga

Category: Internet, Programacion, Seguridad | 2 Comments »

Validar toda una web la w3c

septiembre 30th, 2009 by David Rodriguez

Tal y como comentamos en otro post, se puede pasar la validación w3c a traves de la propia página de servicio de validación de w3c, donde tienes que ir pagina a pagina validando la w3c.

Tambien puedes validar las hojas de estilo css por separado desde la validacion css de w3c.

Pero si necesitas validar todo un sitio web, lo mejor es utilizar Multipage Validator, para validar todas las paginas de tu web.

Recordar, que tener una web que pase la w3c, mejora el posicionamiento google (SEO) de la pagina.

Category: Internet, Programacion, SEO | 2 Comments »

Los navegadores que usamos los usuarios en la web

septiembre 15th, 2009 by David Rodriguez

Siempre que los desarrolladores realizamos una web, el tema de los navegadores es un gran quebradero de cabeza. Desde la empresa de desarrollos web Piensa en Naranja, siempre realizamos los desarrollos adecuandonos a la W3C, que es el estandar. Pero vaya por dios!!!! Microsoft no lo sigue .. ni quiere seguirlo!!!!! con lo cual, no nos queda más remedio que desarrollar y probar en distintos navegadores.

Pero no queda ahí la cosa … ya que los navegadores cambian de versión .. y codigo que antes funcionaba .. deja de funcionar .. incluso en el mismo navegador. Esto suele ocurrir más en Internet Explorer que en Mozilla … pero el tema es este. Tenemos que desarrollar para distintos navegadores, y ademas, para distintas versiones de un mismo navegador.

Cualquier desarrollador web creo que ha pasado por esto ….

He decidido comprobar con algunas de nuestras webs de cursos y franquicias, los resultados que nos dá google analytics sobre navegadores web que utiliza la gente y sobre las versiones de estos. He visto otros comentarios sobre este tema, y según la temática de la web … los navegadores pueden variar.

Un blog de linux, es normal que tenga un alto número de usuarios con navegador mozilla, y un blog de desarrolladores web, pues puede que tenga un numero más alto de lo normal en navegador Google Chrome. Para ello, he tomado como referencia varias webs nuestras sobre cursos, franquicias y academias. Creo que el target de usuarios de estas webs es muy variado, y puede seguir un patron para considerarlo “normal”.

navegadores web

 El primer grafico nos muestra algo que no me ha extrañado .. y es la siguiente proporción:

  • Internet Explorer 75-80%
  • Mozilla Firefox 15-20%
  • Google Chrome 2%
  • Safari 2%

Como podemos ver .. Internet Explorer sigue siendo el gran dominador, por mucho que los usuarios de Mozilla lo alabamos e intentamos convencer al resto de usuarios, Microsoft sigue siendo el rey .. y con mucha diferencia!!!!!

Me ha extrañado la poca entrada de google chrome .. pero imagino que es lo mismo .. se reduce a un target de desarrolladores y expertos en informatica.

navegadores web

En cuanto al siguiente gráfico, las versiones del explorer me ha llamado mucho la atención.

  • Internet Explorer 8.0 30%
  • Internet Explorer 7.0 40%
  • Internet Explorer 6.0 30%

Esto realmente me ha sorprendido .. ya que las diferencias entre cada versión son enormes, tanto en funcionalidad como en los temas específicos de los desarrolladores. Entiendo que el % de usuarios de Explorer 8.0 debe ir aumentando .. y el de Explorer 6.0 debe ir disminuyendo.

Algunos piensan que muchas grandes empresas, mantienen navegadores antiguos de Explorer, ya que actualizar las versiones, supone la modificación de sus propias aplicaciones .. y como solemos decir mucho los españoles .. “si funciona ¡¡no lo toques!!”. Creo que es cierto, pero no creo que el número sea tan grande .. y con las actualizaciones automáticas de Windows, se suelen actualizar los navegadores sin que nos demos cuenta.

Category: Internet, Programacion | No Comments »

Truco para poner trazas en producción

septiembre 14th, 2009 by David Rodriguez

Cuantas veces no nos ha pasado que nos funciona la aplicación en local .. y en producción falla!!!!.

Obviamente, el tema de tracear una aplicación en producción es complicado … se puede hacer pero siempre trae complicaciones.

Nos podemos tirar por un tema sencillo, y desarrollar un archivo log, en el qeu vayamos escribiendo las trazas que necesitemos. El problema que me ocurre a mi con los logs .. es que con una cantidad considerable de visitas, el log se vuelve dificilmente seguible.

Para aplicaciones webs, hay un método muy sencillo y que nos puede salvar de muchos quebraderos de cabeza. Consite en poner las trazas con un [code]<!--[/code] escribir las trazas que deseamos –>.

De esta simple forma, podemos ver la traza en el codigo fuente, sin necesidad que el usuario de la aplicación vea unas molestas trazas aunque sea unos segundos.

Eso si … acordaros de quitar las trazas!!!!!! no seria la primera aplicación que nos encontramos consultas de base de datos comentadas en su codigo fuente.

Category: Internet, Programacion, Seguridad | No Comments »

qmail ejecutar un php al recibir un email

mayo 22nd, 2009 by David Rodriguez

Si tienes qmail instalado como MTA, y quieres realizar alguna acción cuando recibas un correo, como por ejemplo ejecutar un php para filtrar spam, controlar devoluciones de correo, redirecciones, autorespuestas, etc puedes realizar lo que nos comenta Osus en su blog.

Si os digo la verdad, a mi no me funcionaba lo que el propone. Con lo cual, tuve que hacer unas modificaciones para encontrar mi solución, la cual os pongo aquí.

1.- Modificar el archivo .qmail que te genera en la carpeta del nombre del usuario. en mi caso se encuentra en /var/qmail/mailnames/dominio.com/nombredeusuario/.qmail

2.- Añadir la siguiente linea

| php -f paginaaejecutar.php > log.txt

con esto, ejecutamos ese fichero php cuando nos llega un correo y grabamos lo que nos devuelve ese php en un fichero para poder tracear el proceso.

3.- la pagina php debe tener algo parecido a esto:

CODIGO PHP:

$email = file_get_contents(“php://stdin”);

$email = str_replace(array(“\n”, “\r”), ” “, $email);

print $email;
FIN CODIGO PHP

De esta forma, al llegar el correo, lo tratamos que esté en una linea, y podemos tratar el texto de ese correo.

Es impresionante las muchas cosas que se pueden hacer con qmail .. y la poca ayuda o personas que ponen sus conocimientos sobre ejemplos para realizarlas.

Muchas gracias a mi compañero Jaime, que es un monstruo y me ayuda con todos estos cabezazos contra el ordenador.

Category: Internet, Programacion | 1 Comment »

ver todos los procesos ejecutados en una consola linux

mayo 18th, 2009 by David Rodriguez

Para ver todos los procesos que se están ejecutando en la consola linux:

ps -A -c -f

Si vemos que aparecen muchos .. podemos filtrarlos

ps -A -c -f | egrep -php

De esta forma sacamos unicamente los procesos que contengan php en su nombre.

Espero os sirva.

Category: Internet, Programacion | No Comments »

Lanzar una petición POST en java

marzo 27th, 2009 by David Rodriguez


Si necesitamos realizar una petición POST desde un módulo java, se puede hacer fácilmente con este código:URL urlnew = new URL (url);
con = (HttpURLConnection)urlnew.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestMethod(“POST”);
con.setUseCaches(false);
con.setRequestProperty(“Content-type”, “application/x-www-form-urlencoded”);
con.connect();

BufferedReader in = new BufferedReader(new           InputStreamReader(con.getInputStream()));
response=in.readLine();
in.close();

 

Espero os sirva de ayuda si necesitais hacer este tipo de llamadas.

Category: Internet, Programacion | No Comments »