application/javascript (NS_ERROR_DOM_BAD_URI)

Si estas utilizando llamadas Ajax desde tu página web a dominios externos y te aparece el error NS_ERROR_DOM_BAD_URI en la extensión HttpFox de Firefox la solución es solicitar la página mediante JSON, si usas JQuery seria en teoría algo así:

$.getJSON(“http://dominioExterno.com/pagina”,function(result){

});

Pero nooooo! el error sigue apareciendo, entonces la solución correcta sería agregar un parametro X con valor = ?., en este caso le llamamos jsoncallback=? en español quedaría algo así:

$.getJSON(“http://dominioExterno.com/pagina?jsoncallback=?”,function(result){

});

Ahora ocupas moverle al servidor algunos parametrillos para que te regrese correctamente el JSON, si usas PHP puedes poner este código:

function generate_jsonp($data) {
if (preg_match(‘/\W/’, $_GET[‘jsoncallback’])) {
// if $_GET[‘jsoncallback’] contains a non-word character,
// this could be an XSS attack.
header(‘HTTP/1.1 400 Bad Request’);
exit();
}
header(‘Content-type: application/json; charset=utf-8’);
print sprintf(‘%s(%s);’, $_GET[‘jsoncallback’], json_encode($data));
}

Con esto evitas ataques XSS y te regresa tu JSON en una función tal y como te la mande getJSON, solo es cosa de enviar un arreglo a la función generate_jsonp

Y listo!.., ya debe de jalar la solicitud externa.

Aca algo de documentación para usar JSONP de forma segura: http://www.metaltoad.com/blog/using-jsonp-safely

SQLite: Como acelerar firefox en Mac

Firefox utiliza como base de datos para guardar los favoritos, configuraciones, etc, etc…., SQLite y pues como toda base de datos cada cierto tiempo necesita ser optimizada, en Mac OSx al igual que otros sistemas operativos (Linux, Windows) tenemos un comando llamado sqlite3, y en el caso de la mac solo es cosa de ejecutar las siguientes instrucciones.

cd ~/Library/Application Support/Firefox/Profiles/*.default/
ls -lh places.*
sqlite3 places.sqlite “vacuum;”
ls -lh places.*

Y listo, a navegar agusto en nuestro flamante Firefox ya optimizado.

Humor: Como piensa un Geek

Si eres de esas personas que se la viven en la computadora, o le saben muy bien a todo lo de la tecnología e informatica entonces te puedes considerar un “Geek” (bueno eso dice la wikipedia),

El chiste es que a veces uno esta frente a una persona “No tan geek” y en la mente del “Geek” estan pasando cosas que nunca se dicen.., como este ejemplo!…,


No se a ustedes pero a mi si me ha pasado, sobre todo cuando le dan click en lugar de enter, o cuando escriben Google.com dentro de la busqueda de google!.. fataaaal!.., y ni hablar del scroll del mouse, plop!!

Visto en Koalasoft y copy paste la imagen.

Protovis: Agregar la grafica dentro de un DIV-id

Estos ultimos meses he estado trabajando con varias librerias para graficar desde Javascript, y existe una llamada Protovis desarrollada en la Universidad de Stanford, si se siguen los ejemplos todo funciona de maravilla, pero la cosa esta en que donde pongas el codigo javascript, ahi mismo se renderea la grafica, y el problema es que yo lo tengo en una libreria externa y pues no jala la grafica.

La solución es imprimir la grafica en un DIV mediante su ID., buscando una solución me encontre que se debe de crear un panel y despues un canvas y como parametro va el ID de nuestro div., ejemplo sencillo:

/* The root panel. */
var vis = new pv.Panel().canvas(‘chart_div‘)
.width(w)
.height(h)
.top(9.5)
.left(39.5)
.right(20)
.bottom(30);

Y en nuestro HTML tenemos algo así:

< div id="chart_div" style="border:1px solid;">

Si se fijan en el canvas tengo el nombre de nuestro div “chart_div” y listo!…, todo lo demas se deja igual!.

Public NTP Secondary (stratum 2) Time Servers

A continuación se mostrará la lista de servidores NTP (Network Time Protocol) públicos de stratum 2

Estan clasificados en dos tipos basicamente (Por nivel de precision):

  • Stratum 1: sincronizan con fuentes de tiempo externas (relojes atómicos o radio-antenas).
  • Stratum 2: sincronizan con los Stratum 1.
  • Stratum n: Sincronizan con Stratum n-1 (siendo “n” 3 en el caso de sincronizar con un Stratum 2).

Continue reading

Public NTP Primary (stratum 1) Time Servers

A continuación se mostrará la lista de servidores NTP (Network Time Protocol) públicos de stratum 1

Estan clasificados en dos tipos basicamente (Por nivel de precision):

  • Stratum 1: sincronizan con fuentes de tiempo externas (relojes atómicos o radio-antenas).
  • Stratum 2: sincronizan con los Stratum 1.
  • Stratum n: Sincronizan con Stratum n-1 (siendo “n” 3 en el caso de sincronizar con un Stratum 2).

Continue reading

Servidores NTP públicos

A continuación se mostrará una lista de servidores NTP (Network Time Protocol) públicos.

Estan clasificados en dos tipos basicamente (Por nivel de precision):

  • Stratum 1: sincronizan con fuentes de tiempo externas (relojes atómicos o radio-antenas).
  • Stratum 2: sincronizan con los Stratum 1.
  • Stratum n: Sincronizan con Stratum n-1 (siendo “n” 3 en el caso de sincronizar con un Stratum 2).

Esta estructura gerárquica existe para no sobrecargar a los Stratum 1. Posiblemente sea mas preciso, un Stratum 2 cercano que un Stratum 1 lejano. Desde aqui yo te recomiendo un Stratum 2, si vas a trabajar con ellos solo de cliente. (deja los Stratum 1 para los que monten un Stratum 2.)

La lista fue extraida de http://kopernix.com/?q=ntp la cual fue extraida de http://www.eecis.udel.edu/~mills/ntp/clock2a.html jeje, otro respaldo más para internet.

Aquí las ligas para ver los Stratum 1 y los Stratum 2

Linux: Actualizar el horario automaticamente

Como ya sabrán el día de hoy se tiene que adelantar el reloj 1 hora por el “horario de verano”, pero que pasa si lo queremos hacer automaticamente y ademas siempre tener la hora exacta, la solución es NTP (Network Time Protocol), lo bueno que linux (y todos los sistemas operativos, lease Windows y Mac) tienen este protocolo.

Primero debemos de ver que hora es la actual, ejecutando el comando:

#date
Sun Apr 3 14:14:04 UTC 2011

Si se fijan me dice que la hora es del tipo UTC, pero nosotros la ocupamos especificamente de nuestro lugar, México.

para hacer ejecutamos el comando tzdata, en este caso lo vamos a reconfigurar:

# dpkg-reconfigure tzdata

1.- Nos pregunta el área geografica: America
2.- Buscamos Mexico_City

y listooo!.., al final nos aparece el cambio:

Current default time zone: ‘America/Mexico_City’
Local time is now: Sun Apr 3 09:14:53 CDT 2011.
Universal Time is now: Sun Apr 3 14:14:53 UTC 2011.

Si se fijan ahora dice CDT y no el horario universal, si vuelven a ejecutar date les aparecerá correcta la hora.

Ahora bien sigue la automatización de la hora, como les decia esta el protocolo NTP, y en linux existe un comando llamando ntp, para instalarlo sencillo:

#apt-get install ntp

y en el archivo /etc/ntp.conf buscamos la linea donde dice server, por default dice: server ntp.ubuntu.com (o depende de su distribución)

Podemos agregar algun servidor NTP que este cerca fisicamente de nuestra computadora.

# You do need to talk to an NTP server or two (or three).
server cronos.cenam.mx
server ntp.ubuntu.com

En este caso estamos utilizando el del Centro de Meteorología Nacional en México., en esta página podemos ver un listado de varios servidores, se recomienda utilizar el stratum 2 o stratum 1 http://kopernix.com/?q=ntp

Y listo! todo debe de funcionar al 100