Visitors map generator

Mapa de visitas

This plug-in will grab your visitors IP address and generate a Google map with markers on those visits. You will need a valid Google API key in order for this to work. – Este plug-in guarda la dirección IP de tus visitantes y genera un mapa (Google) con marcadores para dichas visitas. Necesitas una clave válida de Google API para que esto funcione.

• Download the plug-in from WP plug-in page
Descarga el plug-in desde la página de plug-in de WP

• Upload the plug-in folder into your plugins directory
Sube la carpeta del plug-in a tu directorio de plugins

• Install te plug-in in the usual way and set your configuration through “Options/Visitor maps by IP”
Instala el plug-in de la manera usual y configuralo desde la página de opciones en “Opciones/Visitor maps by IP”

Insert the plug-in in your template pages using:
Inserta el plug-in en tu página (template) con este código:

<?php
    if(function_exists('ip_tracker_draw_map'))
        ip_tracker_draw_map();
?>
  • If you want to insert the plug-in in your template but don’t want to show the map use this:
    Si quieres insertar el mapa en tus plantillas pero no mostrar el mapa, utiliza esto:
<?php
    if(function_exists('ip_tracker_draw_map'))
        ip_tracker_draw_map('track_only');
?>
  • You can also insert maps into your posts. In your post simply use any of the identifiers provided to render the map at any given place. Valid identifiers are: [vm] [visits] [visitormap]
    Desde la versión 0.4.8 también se pueden insertar los mapas en las entradas. Para insertar un mapa en una entrada, simplemente utiliza uno de los identificadores en un lugar determinado.

If you have any problems or find a bug, please let me know.
Si tienes algún problema o descubres un fallo, por favor dímelo.

Please look at the plug-in page at WP and/or the plug-in options page for details.
Por favor mira la página del plug-in en WP y/o la página de opciones del plug-in para detalles.

Current release / Versión actual: 0.7.3
Version history / Histórico de versiones:
http://wordpress.org/extend/plugins/visitos-map-ip/other_notes/

This plug-in requires PHP 5 on your server
Este plug-in requiere PHP 5 en tu servidor


Please keep in mind that this plug-in uses geo-ip location information (GeoLite City) provided by MaxMind, which is limited to some extent, this means it will not track down your exact address (location of your IP number) but it will show the city your visitors are coming from which works just fine for me.
Por favor recuerda que este plug-in utiliza información para geo-localización (GeoLite City) gracias a MaxMind, la cual está limitada hasta cierto punto, esto significa que no es capaz de detectar tu dirección exacta en base a la IP, pero si es capaz de mostrar la ciudad de donde vienen las visitas, lo cual funciona muy bien para mi.

GeoLite City is similar to the GeoIP City database, but is less accurate. Should you require greater accuracy, GeoIP City is a drop-in replacement for GeoLite City. GeoLite City is an ideal cost-effective solution, since it is more accurate than many other commercial geolocation solutions.

The free version -which this plug-in uses- gets updated each month, so I will update the plug-in as well -at least each month- so you can have the latest IP information.
La versión gratuita -la cual utiliza este plug-in- es actualizada cada mes, de modo que actualizaré -al menos cada mes- el plug-in para que puedas tener la información más reciente.

Next releases:
Próxima versiones:

  • Be able to upload / define a custom icon for markers Done
    Posibilidad de cargar / definir un marcador propio Hecho
  • Set number of markers to display (limit query) Done
    Definir el número máximo de marcadores a mostrar (limitar la consulta)
    Hecho
  • Small JS fix in the options page (on marker select) Done
    Resolver un pequeño error de JS en la página de errores (al seleccionar un marcador)
    Hecho
  • Be able to insert maps into posts and pages (not through templates) Done
    Posibilidad de incluir un mapa en las entradas (no solo a través de la plantilla)
    Hecho

A comment would be much appreciated.
Un comentario sería apreciado.

Do you like what this plug in can do?
¿Te parece bueno lo que hace este plug-in?


;)

Got a cool plug-in idea? Let me know and if it’s cool enough I’ll write it.
¿Tienes una buena idea para un plug-in? Dímelo y si es buena yo lo escribo.

Have we all failed?

How possible and how terrible can it be to live a life full of dreams but never see those dreams come true?
- Have we all failed?

The man continued to look upon the boy and then turned away his head, he gently picked up his hat, covered his -burned- head and smiled for him self.

- No, we have not failed. -the man said- We have just started and there’s still a long way. We must not stay here, for soon enough the night will fall and there are strange and fierce creatures among this very trees.

He got on his legs and helped the boy up who was carrying a dark green -military style- heavily loaded backpack. They felt the cold breeze for an instant and continued their journey.

Chapter I

The first thing was always breakfast, no matter what, breakfast had to had it’s time. They used to get up at around 6:00 AM everyday to get some wood to start the fire, a fire which usually lasted the entire day and was put out late at night when they were -again- ready for bed.

That morning the boy went to get the wood alone, the old man was not feeling very well and decided to stay in bed a few minutes more, at least as long as it took the boy to get back, start the fire and boil some water, that would give him some twenty minutes more -the old man figured. The night before it had rained like never before and part of the roof came down. They had to get up there and fix that hole or else they would have ended up having everything washed away. The old man got a ladder he had kept for some years and holded it against a tree which was close enough to the roof, so the boy could climb up and fix it. The boy pulled a hammer from his pocket along a few nails -which he held in his mouth- and started putting the roof togheter again. It took him about 40 minutes the get that hole almost sealed and decided to get down. The roof was in pretty good shape again and the could sleep in their own beds once more. The old man actually got the worst part, he was just standing there, holding the ladder, not moving and thus the cold night and the rain drops as big as eyeballs went straight down to his very bones and of course he was not as young as he should have been in order to take that easier.

Massive upgrade!

Finally, the time has come and so has my long awaited upgrade If you’ve been to the Galleries section of this site you might have noticed some great shots among -of course- some terrible ones. Well, I can certainly tell you that this has all come to an end -I got upgraded.

My previous experience was mostly limited to a Sony T9 (as pictured below) and sometimes to an older Nikon F65 35 mm SLR which, by the way, still rocks. Now I have a Nikon D90 SRL which is pretty much the top of the line and shall soon enough realize that from it’s pictures.

This is what I used before:

This is what I have now:

Along this beauty I also got several different types of lens, including a 18-105 mm Nikkor VR, a 70-300 mm Nikkor AF and a 50 mm Nikkor prime.

Well I’ll keep you all posted and let’s see how it goes…

Another JS countdown script

Here’s a simple one I came up with. It does a countdown until a certain date. Quite simple.

Hope you can find use for it:

var CDOWN = {
 init : function()
  {
   this.dformat = "[D]:[H]:[M]:[S]"; // Day:Hour:Minute:Second - Any can be removed
   this.tdate = "11/19/2008 6:00 PM"; // Until when to countdown (MM/DD/YYYY)
   this.count = true; // Update the counter each second or minute or whatever is defined above
   this.endstr = "Live now!"; // To display once the countdown is complete
   this.lzero = true; // Display leading zeros on numbers lower than 10
   this.counts = -1;

   this.counts = Math.ceil(this.counts);
   if(this.counts == 0)
     this.count = false;

   this.timeoutp = (Math.abs(this.counts)-1)*1000 + 990;

   dthen = new Date(this.tdate);
   dnow = new Date();

   ddiff = (this.counts > 0) ? new Date(dnow-dthen) : new Date(dthen-dnow);

   gsecs = Math.floor(ddiff.valueOf()/1000);
   CDOWN.startCounter(gsecs);
 },

calculate : function(secs, num1, num2)
 {
   s = ((Math.floor(secs/num1))%num2).toString();
   if(this.lzero && s.length < 2)
     s = "0" + s;
   return s;
 },

startCounter : function(secs)
 {
   if(secs < 0)
    {
     document.getElementById("timer").innerHTML = this.endstr;
     return;
    }

    this.dsp = this.dformat.replace(/\[D\]/g, CDOWN.calculate(secs,86400,100000));
    this.dsp = this.dsp.replace(/\[H\]/g, CDOWN.calculate(secs,3600,24));
    this.dsp = this.dsp.replace(/\[M\]/g, CDOWN.calculate(secs,60,60));
    this.dsp = this.dsp.replace(/\[S\]/g, CDOWN.calculate(secs,1,60));

    document.getElementById('timer').innerHTML = this.dsp;
    if(this.count)
      setTimeout("CDOWN.startCounter(" + (secs+this.counts) + ")", this.timeoutp);
 }
}

/* LOAD */
function addLoadEvent(fn)
 {
   var old = window.onload;
   if(typeof window.onload != 'function')
     window.onload = fn;
   else
     window.onload = function()
      {
        old();
        fn();
      }
 }

addLoadEvent(function() { CDOWN.init(); });

In order to display this inside some container, you will need to define one and set it’s ID to be the same as in the script. For example:

document.getElementById('timer').innerHTML = this.dsp;

In this case my container’s id is “timer” and the actual countdown will be displayed there.

The six mistakes of man

  • The delusion that personal gain is made by crushing others.
  • The tendency to worry about things that cannot be changed or corrected.
  • Insisting that a thing is impossible because we cannot accomplish it.
  • Refusing to set aside trivial preferences.
  • Neglecting development and refinement of the mind, and not aquiring the habit of reading and studying.
  • Attempting to compel others to believe and live as we do.

- Marcus Tullius Cicero

How to know if a girl is spanish?

It’s actually quite an easy procedure and the original idea came from my friend David -who had figured this out long time ago as it seems-

It’s basically all about observation, look around, wherever you go, and if you see a girl wearing glasses (like reading glasses) that have more of a square-like design you can bet 98% of the times she is spanish. When I was in Amsterdam, with my wife, a few weeks ago, David said it was amazing how much spanish chicks you could find and he explained his theory. I went on a did some “research”, actually trying to hear some of those chicks -with square-like designed glasses- talk and yes, they were all spanish.

Now, the question is: why?

Why do all spanish chicks wear those kind of glasses, the same glasses?, do they think it’s trendy?, to they think is hot?, do they think it’s in?. NO! Season after season, year after year those kind of glasses are still being mass-used in Spain and it’s simply because the spanish have no taste nor imagination, it’s as simple as that.

Recently I went to get some glasses for myself, and after going through about a 100 stores the only thing I found was the same: square-like glasses. Actually if you go into any kind of shop (in Spain) you might even be surprised by the models you’ll find, there’s at most 5 different models -with variating colours, at least- and you’ll find those exact same 5 models in every other store.

Don’t believe me?, try for yourself: watch the TV (Spanish, of course), ride the Metro, look at people walking around, you’ll soon agree with what you’ve just read.

;)

¿What to do about spaniards?

Spaniards are strange people, we all know that. I’ve come to realize it quite well. A lot of them frequently talk a lot of non-sense and some others usually don’t have a clue about what they’re talking about.

Here’s what you can do about it:

Oh well, oh well...

;)

Mappeo.com has been dropped

The mappeo.com project has been dropped due to lack of time and I’ve decided to release the code under GNU/GPL licence and it’s free for download.

The code is not complete but it’s at a very advanced stage and you shall quickly grasp the go-along of it.

Requires:

  • PHP 5 (With GD enabled)
  • MySQL 5+
  • A browser with JS enabled and AJAX support
  • Apache webserver (With mod_rewrite enabled)
  • A Google API key

More: http://mappeo.com

Quote

Never argue with an idiot; He will drag you down to his level and beat you with experience.

I wonder…

Look up! Have you noticed the beta badge on top of this site?, well just as you’re probably doing, so am I. I’m wondering what in the world does that mean. Some time ago somebody came up with the idea of describing the current web with the 2.0 “thing” and shortly after that somebody else decided to use the beta “thing” -I guess those were the Google folks-. However, now-a-days almost any site uses a beta or alpha or anything like it and we all wonder. Why?

Most of this sites never get improved or never really change from beta to final, some say it’s not a stable version, but if that was the case the site wouldn’t be working at all. If the site has a current version and later they ad some more functionality, that can’t be called a “beta” either, the site has only improved since those very first days.

Well, I could go on and on with this forever and never get to a straight line. I just wonder…