• Aviso Legal
  • About

Bienvenidos al Blog de David Rodriguez

Author Archives: David Rodriguez

Habitual lector de blogs .. y nunca me decidia por crear uno .. espero que las charlas tecnicas entre amigos, tambien se hagan a traves de este blog.

redireccionar a un idioma segun el pais del usuario

abril 5, 2010 1:14 pm / 5 Comments / David Rodriguez

Para redireccionar a un usuario según sea su pais de procedencia (bueno .. ya sabemos que los servidores desde donde se conectan los usuarios no son 100% fiables .. pero es la unica forma que tenemos de saberlo), utilizamos el api de hostip.info y cargamos el xml que nos dan.

Actualización (2017-06-14): El url api.hostip.info no está devolviendo nada. Buscaré otro api para actualizar el post.

Para ello hemos definido la siguiente función:

function getPaisProcedencia(){
$salida = »;

$IPADDRESS = $_SERVER[«REMOTE_ADDR»];

$archivo_xml = «http://api.hostip.info/get_xml.php?ip=».$IPADDRESS .»»;
$procedencia_xml = get_url_contents ($archivo_xml);

if (empty($procedencia_xml)){
$salida = »;
}else{
preg_match_all(«|<Hostip>(.*)</Hostip>|sU», $procedencia_xml, $items);
$lista_nodos = array();
foreach ($items[1] as $key => $item)
{
//preg_match(«|<gml:name>(.*)</gml:name>|s», $item, $mi_lugar);
//preg_match(«|<countryName>(.*)</countryName>|s», $item, $mi_pais);
preg_match(«|<countryAbbrev>(.*)</countryAbbrev>|s», $item, $mi_sigla);
$salida = $mi_sigla[1];
}
$procedencia_xml = «»;
}

return  $salida;
}

En esta función hemos utilizado la función get_url_contents descrita en un post anterior sobre optimizacion de file_get_contents en php.

Podemos sacar mucha información del xml de este API http://api.hostip.info/get_xml.php?ip=200.147.3.156

<HostipLookupResultSet version=»1.0.1″ xsi:noNamespaceSchemaLocation=»http://www.hostip.info/api/hostip-1.0.1.xsd»>
<gml:description>This is the Hostip Lookup Service</gml:description>
<gml:name>hostip</gml:name>
−
<gml:boundedBy>
<gml:Null>inapplicable</gml:Null>
</gml:boundedBy>
−
<gml:featureMember>
−
<Hostip>
<ip>200.147.3.156</ip>
<gml:name>(Unknown city)</gml:name>
<countryName>BRAZIL</countryName>
<countryAbbrev>BR</countryAbbrev>
<!– Co-ordinates are unavailable –>
</Hostip>
</gml:featureMember>
</HostipLookupResultSet>

El nodo sobre el que hemos realizado las comprobaciones es countryAbbrev aunque se podría utilizar countryName, aunque siempre vamos a usar menos recursos si comparamos abreviaturas que cadenas de nombres más largas.

Ojo, esta función no es recomendable utilizarla cada vez que tenemos una hit .. ya que ralentizaría nuestra maquina de manera injustificada. Asi que lo que recomiendo es utilizarla unicamente en la primera visita a nuestra web. Esto lo podemos controlar con sesiones, cookies, referer, etc … nosotros hemos utilizado el referer del usurio aunque otras opciones serían igualmente válidas.

Posted in: Internet, Programacion / Tagged: geoip, php, 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

Cosas interesantes david rodriguez twitter 2010-05-01

abril 4, 2010 10:30 am / Leave a Comment / David Rodriguez
  • Fazendo meu primeira proposta en portugues #
  • @carrero ¿tambien te metiste con @edans como @carlosblanco o ha sido "aleatorio"? #
  • RT@carrero Digg mejora su rendimiento un 4000% al ordenar con PHP http://ini.es/bWZ0VG #
  • glupsss RT @DUQUEredes Acaparar resultados para 1 keyword en SERPs con dominios con el mismo Whois puede ser malo para el dominio principal #
  • que mal le sienta a los servidores los cambios horarios … #
Posted in: Uncategorized

Cosas interesantes david rodriguez twitter 2010-05-01

abril 4, 2010 10:30 am / Leave a Comment / David Rodriguez
  • Fazendo meu primeira proposta en portugues #
  • @carrero ¿tambien te metiste con @edans como @carlosblanco o ha sido "aleatorio"? #
  • RT@carrero Digg mejora su rendimiento un 4000% al ordenar con PHP http://ini.es/bWZ0VG #
  • glupsss RT @DUQUEredes Acaparar resultados para 1 keyword en SERPs con dominios con el mismo Whois puede ser malo para el dominio principal #
  • que mal le sienta a los servidores los cambios horarios … #
Posted in: Uncategorized

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

Cosas interesantes david rodriguez twitter 2010-03-28

marzo 28, 2010 10:30 am / Leave a Comment / David Rodriguez
  • youtube caido …. Todos los servidores tienen problemas … #
  • Nos comen las franquicias por publicar las criticas a su franquicia http://www.diariodeunfranquiciado.com ¿merece la pena que nos denuncien? #
  • ¿pq el buscador de plugins de wordpress no tiene busqueda avanzada? #
  • @fderbaix enhorabuena por esa rapidez .. la verdad que hace unas semanas era insufrible. ya nos contaras si ha penalizado el seo. #
Posted in: Uncategorized

Activolution, ya tenemos oficinas en Sao Paulo

marzo 22, 2010 10:33 am / Leave a Comment / David Rodriguez

Tal y como se comenta en el blog de activolution ya tenemos oficinas en Brasil. El modelo de negocio que exportamos allí es bastante poco conocido en brasil, y estamos seguros que va a ser un exito seguro. Si eres un centro de formación, una franquicia o quieres expandirte en brasil con campañas de marketing online .. no dudes en ponerte en contacto con nosotros.

Posted in: Empresas, Internet, marketing / Tagged: activolution, franquicias, marketing, marketing formacion, marketing online

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

actualizacion Pagerank PR de google en febrero de 2010

febrero 11, 2010 9:28 am / 2 Comments / David Rodriguez

De nuevo google, ha hecho actualizaciones en su PageRank y nos ha tratado bien en las paginas que gestionamos.

↑ PR 3 www.academiasenacoruna.com
↑ PR 3 www.academiasenalicante.com
↑ PR 3 www.academiasenbarcelona.com
↑ PR 3 www.academiasenbilbao.com
↑ PR 3 www.academiasenmadrid.com
↑ PR 3 www.academiasenmalaga.com
↑ PR 3 www.academiasensevilla.com
↑ PR 3 www.academiasenzaragoza.com
↑ PR 3 www.academias-valencia.com
↑ PR 4 www.akademias.com
↑ PR 4 www.blogdellibro.com
↑ PR 3 www.diariodeunfranquiciado.com
↑ PR 3 www.formacionsubvencionada.com
↑ PR 4 www.franquiciando.com
↑ PR 2 www.franquiciasalimentacion.com
↑ PR 2 www.franquiciasautomoviles.com
↑ PR 2 www.franquiciasbebes.com
↑ PR 2 www.franquiciasbelleza.com
↑ PR 2 www.franquiciascafeterias.com
↑ PR 2 www.franquiciascervecerias.com
↑ PR 2 www.franquiciasclimatizacion.com
↑ PR 2 www.franquiciasdecoracion.com
↑ PR 2 www.franquiciasdeportes.com
↑ PR 2 www.franquiciasfastfood.com
↑ PR 2 www.franquiciasfinanzas.com
↑ PR 2 www.franquiciasformacion.com
↑ PR 2 www.franquiciasgimnasios.com
↑ PR 2 www.franquiciasguarderias.com
↑ PR 2 www.franquiciasheladerias.com
↑ PR 2 www.franquicias-informatica.com
↑ PR 2 www.franquicias-inmobiliaria.com
↑ PR 2 www.franquiciasitalianos.com

ahora esperamos pegar el salto de calidad y conseguir los pagerank 5 y 6 que son los que se nos atragantan.

Posted in: Internet, marketing, SEO / Tagged: google, pagerank, posicionamiento google

No aparece grupo de contactos en windows vista

febrero 4, 2010 3:04 pm / Leave a Comment / David Rodriguez

Puede que muchos tengais el problema que no encontrais como formar un grupo de contactos en windows vista con windows mail.

Pues el problema es que el directorio Contactos, no está definido como Contacto .. sino como Carpeta. Por ello no aparecen las opciones de contactos

Simplemente ponerse botón derecho en la carpeta Contactos, Pulsar en propiedades, e irse a la pestaña personalizar.

En esa pestaña te pregunta ¿que clase de carpeta desea?

Pues se debe seleccionar contactos.

Se da al botón Aplicar y Aceptar .. y ya tienes la posibilidad de hacer todas las opciones de contactos como crear grupos de contactos de correo.

Tambien se puede ver como se realiza esto en este blog.

Posted in: Otros / Tagged: windows, windows mail

Post Navigation

« Anterior 1 … 16 17 18 19 20 … 32 Siguiente »

Categorias

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