• Aviso Legal
  • About

Bienvenidos al Blog de David Rodriguez

Category Archives: Programacion

optimizar tiempos de file-get-contents en php

abril 5, 2010 1:02 pm / 1 Comment / David Rodriguez

A veces tenemos que cargar xml o contenido externo a nuestra web.

En php, tenemos la función file-get-contents para leer un fichero y devolver un string. En ese caso, podemos tener diferencia de tiempos de carga entre ejecutar un xml en el navegador .. y cargar ese xml en un string.

Esto puede ser debido a las politicas de seguridad de los servidores donde cargamos la información.

Para reducir estos tiempos y que nuestra web no se ralentice, es mejor cambiar esa función por esta otra que nos definimos nosotros a través del método curl.

function get_url_contents($url){
$crl = curl_init();
$timeout = 25;
curl_setopt ($crl, CURLOPT_URL,$url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}

Tenemos mejoras en tiempos de un 75% menores en la carga.

Posted in: Internet, Programacion / Tagged: php, Programacion

Problemas con tildes y acentos en el Subject utilizando HtmlMimeMail

marzo 29, 2010 9:31 am / Leave a Comment / David Rodriguez

Encontramos un bug en la clase HtmlMimeMail, donde si utilizabas dos palabras seguidas con tildes en el asunto del mensaje a enviar, el programa juntaba ambas palabras.

Esto pasaba por la codificación de caracteres que se puede ver con este ejemplo:

Asunto: … Carné de Especialista en Instalación de Tuberías Plásticas …

La codificación de caracteres enviada era la siguiente:

Subject: =?ISO-8859-1?Q?Carn=E9?= de Especialista en =?ISO-8859-1?Q?Instalaci=F3n?= de =?ISO-8859-1?Q?Tuber=EDas?= =?ISO-8859-1?Q?Pl=E1sticas?=

Donde podemos observar que el espacio entre esas palabras no lo codificaba bien.

Para solucionar este problema, simplemente hay que hacer los siguientes cambios en la función _encodeHeader de la clase htmlMimeMail:

function _encodeHeader($input, $charset = ‘ISO-8859-1’) {
preg_match_all(‘/(\w*[\x80-\xFF]+\w*)/’, $input, $matches);
$codex = 0 ;
foreach ($matches[1] as $value) {
$codex = 1;
$replacement = preg_replace(‘/([\x80-\xFF])/e’, ‘»=» . strtoupper(dechex(ord(«\1»)))’, $value);
$input = str_replace($value, ‘=?’ . $charset . ‘?Q?’ . $replacement . ‘?=’, $input);
}
if ($codex==1)
$input = str_replace(‘ ‘,’=?’ . $charset .  ‘?Q?’ . ‘=20’ . ‘?=’, $input);
return $input;
}

De esta forma solucionamos el problema. Hemos encontrado la solución en esta pagina.

Posted in: Internet, Programacion / Tagged: htmlMimeMail, php, Programacion

Optimizacion de consultas sql con lower y trim

febrero 19, 2010 12:01 pm / Leave a Comment / David Rodriguez

Muchas veces utilizamos para buscar algún campo String en una base de datos MySql, confirmamos con lower y trim para poner todo el texto en minúsculas y eliminar espacios en blanco, tanto el principio como al final del registro.

SELECT * FROM tabla WHERE lower(trim(email))=lower(trim(‘[email protected]’));

Eliminar esas funciones sql en MySql reduce la consulta en un 70% con un número alto de registros.

La mejor solución para esto es:

  1. Introducir los datos con esas opciones ya realizadas. Facilmente en php o cualquier otro lenguaje de programación podemos realizar estas funciones, con un uso de máquina mucho menor.
    $email = strtolower(trim($email));
  2. actualizar todos los datos de la tabla para no tener estos problemas en un futuro
    UPDATE tabla SET email=lower(trim(email));
  3. Ya se puede eliminar estas funciones de la consulta(query).
    SELECT * FROM tabla WHERE email=’[email protected]’;

Es importante reducir el uso de CPU por parte de las consultas a base de datos, que es lo que nos puede retardar las respuestas al cliente. Como siempre hemos comentado, es muy importante optimizar las sentencias SQL para optimizar los tiempos de respuesta de la pagina web. Hay muchas cosas además de Indexar las tablas para optimizar una base de datos mysql.

Posted in: Base de datos, Internet, Programacion / Tagged: Base de datos, mysql, SQL

La importancia de una buena eleccion de un tema para wordpress

enero 14, 2010 8:53 am / Leave a Comment / David Rodriguez

Hace unos días hice una prueba con este blog .. cambie de tema (theme) de wordpress, el que tenía está optimizado para google y busque un tema que fuera bonito, y usable .. pero no optimizado para posicionamiento google – SEO.

Como os muestro en las estadisticas de este blog … esos días supuso un descenso brutal de los accesos al blog. La mayoría de accesos a este blog, son por busquedas en google y esto fue lo que pasó.

estadisticas blog david rodriguezCreo que queda demostrado, instalar un CMS como wordpress puede ser sencillo, y que tener un blog en internet es facil y barato (WordPress es gratuito), pero para quien quiera tener un blog que no sea personal, es decir, con un fin económico, tiene que dejarse asesorar por buenos consultores web.

Como me dijo un buen amigo cuando le insinue que ser administrador de servidores windows era sencillo ya que todo eran ventanas .. y el me dijo que lo importante es saber que ventanas tocar jejeje

Una vez más .. vemos que la usabilidad y el diseño web deben de ir muy unidas. Si eres diseñador .. empapaté en usabilidad que hará mejorar los resultados de tus clientes.

Posted in: Internet, marketing, Programacion, SEO / Tagged: blog, blogs, david rodriguez, desarrollo blog, marketing, marketing online, posicionamiento google, usabilidad, wordpress

Si se puede fumar sano. Electronic Smoke, nueva web de cigarrillos electronicos

diciembre 11, 2009 1:13 pm / 2 Comments / David Rodriguez

Parece una incongruencia .. pero si .. se puede fumar sano. Desde que me presentaron el proyecto, me pareció una idea muy interesante y que iba a ser un bombazo en ventas. Realmente impresionante cuando lo pruebas. Se puede fumar en el trabajo, en los restaurantes, en el cine …. y todo esto con o mg de nicotina!!!!!!

¿quieres dejar de fumar? Con Electronic Smoke es facil y sencillo. Os animo a todos a que sea un inmejorable regalo para estas navidades.

electronic smoke

Desde la empresa de marketing online Activolution, se ha desarrollado todo el software necesario para su venta online, con metodos de pago con tarjeta y a través de PayPal. Estamos seguros del exito del producto, y una parte de ese éxito, será del desarrollo web de esta página.

Posted in: Empresas, Internet, Programacion / Tagged: desarrollo web, paypal, Programacion, venta online

La importancia de un buen diseño web y una buena maquetacion web

diciembre 9, 2009 11:24 am / 7 Comments / David Rodriguez

Ultimamente, la mayoria de las pantallas que se venden en el mercado para ordenadores son unas pantallas enormes, con muchas pulgadas y apaisadas.

Esto hace que el diseño y maquetación de las paginas web no sea el mismo que hace unos meses. Las configuraciones de pantalla han variado muchisimo, y está cobrando una importancia máxima. El poder mostrar el mayor espacio de contenidos en horizontal es muy importante para aprovechar todo el espacio de pantalla visible al usuario.

En la nueva versión de la web de cursos topformacion.com, es un tema en el que hemos estado trabajando en el departamento de diseño y maquetación, para que la maquetación por capas sea automática según la configuración de pantalla del usuario. Es un trabajo muy arduo, y que requiere una gran comunicación entre ambos departamentos para poder realizar esto.

Tambien lo hemos realizado para otros desarrollos web como formaciontop.com,  cursos azafatas, etc

Podemos ver la diferencia de visualizar la web realizada por nosotros, y alguna otra web con grandes recursos.

Topformacion.com

topformacion

Emagister.com

emagister

Lo que más me extraña, es que grandes webs, como pueden ser la web de marca o elmundo, tampoco lo tiene. ¿cuanto espacio quieren desperdiciar? Todo este espacio se puede aprovechar para dar mas información al usuario, o para añadir alguna publicidad online, pero veo que prefieren seguir machacando al usuario con campañas de banners obsoletos, en vez de pensar en la usabilidad del usuario. Debe ser que todavia no conocen a la mejor empresa de desarrollos web de internet 😀

La usabilidad es el  rey de la web.

Posted in: Internet, marketing, Programacion, SEO / Tagged: cursos, desarrollo web, diseño, diseño web, maquetacion, SEO, usabilidad

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

diciembre 1, 2009 10:58 am / 4 Comments / 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.

Posted in: Internet, Programacion / Tagged: ie8, Internet, javascript, Programacion

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

noviembre 12, 2009 5:26 pm / 2 Comments / 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.

para saber el usuario y grupo de qmail

# id qmaild

uid=2020(qmaild) gid=2020(nofiles) groups=2020(nofiles)

 

$ 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 = "[email protected]";
    $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.

Posted in: Internet, Programacion / Tagged: qmail, relay, servidor de correo, ucspi-tcp

Go, nuevo lenguaje de programación de Google

noviembre 12, 2009 10:20 am / Leave a Comment / 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.

Posted in: Internet, Programacion / Tagged: go, google, Programacion

Copiar archivos entre distintos servidores linux

noviembre 4, 2009 11:03 am / 3 Comments / 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

Posted in: Internet, Programacion, Seguridad / Tagged: , linux, scp

Post Navigation

« Anterior 1 2 3 4 5 6 Siguiente »

Categorias

  • Base de datos
  • Empresas
  • Internet
  • Mac
  • marketing
  • Otros
  • Prensa
  • Programacion
  • Redes Sociales
  • Retos deportivos
  • Seguridad
  • SEO
  • servidores
  • SPAM
  • Uncategorized
© Copyright 2025 - Blog de David Rodriguez