Los blogs privados que no son tan privados |
Un blog de Blogger puede ser privado o público. Esa es una opción que podemos definir en Configuración | Permisos
Lectores del blog
¿Quién puede ver este blog?
Cualquiera Sólo a los usuarios que yo elija Únicamente autores del blog
¿Quién puede ver este blog?
Cualquiera Sólo a los usuarios que yo elija Únicamente autores del blog
Se nos advierte que si es privado o de aceso limitado, otros usuarios no podrán leer ninguna entrada y recibirán un mensaje indicándoles que no puede ser mostrado.

Esto es cierto pero no del todo. Depende de cómo interpretemos el mensaje.
Si un blog es público y posteriormente se lo hace privado, todo aquello que se haya publicado con aneterioridad, será visible para cualquiera ya que esas páginas han sido indexadas y por lo tanto, permanecerán en la caché de los buscadores por un largo tiempo; sólo las nuevas entradas no serán indexadas. En ese sentido, es lo mismo que ocurre si eliminamos un blog, su contenido permanecerá dando vueltas en la web durante un tiempo indefinido..
Aún más. En The Real Blogger Status y en algunas consultas de los Grupos de Ayuda de Blogger se dice que en ciertos casos, aún siendo privados, ciertas páginas (sobre todo el home) son accesibles; no es común pero puede ocurrir.
Por eso, es importante que el Perfil de Blogger sea claro y verificar la opción:
Si un blog es público y posteriormente se lo hace privado, todo aquello que se haya publicado con aneterioridad, será visible para cualquiera ya que esas páginas han sido indexadas y por lo tanto, permanecerán en la caché de los buscadores por un largo tiempo; sólo las nuevas entradas no serán indexadas. En ese sentido, es lo mismo que ocurre si eliminamos un blog, su contenido permanecerá dando vueltas en la web durante un tiempo indefinido..
Aún más. En The Real Blogger Status y en algunas consultas de los Grupos de Ayuda de Blogger se dice que en ciertos casos, aún siendo privados, ciertas páginas (sobre todo el home) son accesibles; no es común pero puede ocurrir.
Por eso, es importante que el Perfil de Blogger sea claro y verificar la opción:
Mostrar mis blogs Selecciona los blogs que deseas mostrar
Allí, podremos marcar o desmarcar los blogs que aparecerán en nuestro perfil de usuario.
Esto es algo que, de alguna manera, es similar a las opciones que nos muestra Configuración | Básico:
Esto es algo que, de alguna manera, es similar a las opciones que nos muestra Configuración | Básico:
¿Deseas añadir tu blog a nuestras listas?
Es posible que se haya vinculado un blog de la lista desde Blogger.com como, por ejemplo, la página principal de Blogger, Blogger Play y Siguiente blog. Si seleccionas "No", tu blog no aparecerá en estas ubicaciones, aunque seguirá estando disponible en Internet. Este blog seguirá apareciendo en tu perfil a menos que lo ocultes.
¿Deseas permitir que los motores de búsqueda encuentren tu blog?
Si seleccionas "Sí", incluiremos tu blog en la Búsqueda de blogs de Google y haremos ping a Weblogs.com. Si seleccionas "No", todo el mundo podrá ver tu blog, pero se indicará a los motores de búsqueda que no lo rastreen.
Es posible que se haya vinculado un blog de la lista desde Blogger.com como, por ejemplo, la página principal de Blogger, Blogger Play y Siguiente blog. Si seleccionas "No", tu blog no aparecerá en estas ubicaciones, aunque seguirá estando disponible en Internet. Este blog seguirá apareciendo en tu perfil a menos que lo ocultes.
¿Deseas permitir que los motores de búsqueda encuentren tu blog?
Si seleccionas "Sí", incluiremos tu blog en la Búsqueda de blogs de Google y haremos ping a Weblogs.com. Si seleccionas "No", todo el mundo podrá ver tu blog, pero se indicará a los motores de búsqueda que no lo rastreen.
Ya que la primera, determina si su blog aparecerá en blogger.com y en la lista de blogs que se muestra en el perfil y la segunda si el blog será indexado o no.
YouTube y JavaScript (1) |
Así como en Google Code hay una referencia bastante completa de los parámetros del reproductor de YouTube, también hay otras para quienes quieran crear los suyos propios utilizando Flash y otra para utilizar las API de YouTube. Si bien, algunas de esas funciones requieren que nos registremos para obtener una clave, hay otras que son accesibles de forma pública y que podemos usar en cualquier proyecto.
Estas últimas se manejan con JavaScript y, a simple vista, no parecen gran cosa ya que sólo hacen más o menos lo mismo que el reproductor en si mismo pero no es así, el poder manejar el reproductor con códigos, abre una serie de posibilidades que serán parte de otra entrada.
La forma más sencilla de probar estas funciones es usar la librería SWFObject que podemos cargar directamente desde Google:
Estas últimas se manejan con JavaScript y, a simple vista, no parecen gran cosa ya que sólo hacen más o menos lo mismo que el reproductor en si mismo pero no es así, el poder manejar el reproductor con códigos, abre una serie de posibilidades que serán parte de otra entrada.
La forma más sencilla de probar estas funciones es usar la librería SWFObject que podemos cargar directamente desde Google:
<script src='http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js' type='text/javascript'></script>
Y un video lo cargamos de este modo:
<div id="contenedorPlayer"> Cargando ... </div> <script type="text/javascript"> var params = { allowScriptAccess: "always", bgcolor: "#cccccc" }; var atts = { id: "objetoPlayer" };swfobject.embedSWF("http://www.youtube.com/v/XXXXXXXXXXX?border=0&enablejsapi=1&playerapiid=YTplayerDemo","contenedorPlayer", "425", "344", "8", null, null, params, atts); </script>
Un conjunto de funciones permiten controlar su reproducción, leer los datos que envia y modificar algunos de ellos.


// los controles
function play() {
if (YTplayerDemo) { YTplayerDemo.playVideo(); }
}
function pause() {
if (YTplayerDemo) { YTplayerDemo.pauseVideo(); }
}
function stop() {
if (YTplayerDemo) { YTplayerDemo.stopVideo(); }
}
function mute() {
if (YTplayerDemo) { YTplayerDemo.mute(); }
}
function unMute() {
if (YTplayerDemo) { YTplayerDemo.unMute(); }
}
// cargar y ejecutar el video
function loadNewVideo(id, inicio) {
if (YTplayerDemo) { YTplayerDemo.loadVideoById(id, parseInt(inicio)); }
}
// cargar el video y no ejecutarlo
function cueNewVideo(id, inicio) {
if (YTplayerDemo) { YTplayerDemo.cueVideoById(id, inicio); }
}
// eliminar el video
function clearVideo() {
if (YTplayerDemo) { YTplayerDemo.clearVideo(); }
}
// extraer información del video
function getBytesLoaded() {
if (YTplayerDemo) { return YTplayerDemo.getVideoBytesLoaded(); }
}
function getBytesTotal() {
if (YTplayerDemo) { return YTplayerDemo.getVideoBytesTotal(); }
}
function getCurrentTime() {
if (YTplayerDemo) { return YTplayerDemo.getCurrentTime(); }
}
function getDuration() {
if (YTplayerDemo) { return YTplayerDemo.getDuration(); }
}
function getStartBytes() {
if (YTplayerDemo) { return YTplayerDemo.getVideoStartBytes(); }
}
function getVolume() {
if (YTplayerDemo) { return YTplayerDemo.getVolume(); }
}
function getPlayerState() {
if (YTplayerDemo) {r eturn YTplayerDemo.getPlayerState(); }
}
// mostrar información del video
function getEmbedCode() {
alert(YTplayerDemo.getVideoEmbedCode());
}
function getVideoUrl() {
alert(YTplayerDemo.getVideoUrl());
}
function setYTplayerDemoState(newState) {
mostrarINFO("salidaStatus", newState);
}
function mostrarINFO(donde, valor) {
document.getElementById(donde).innerHTML = valor;
}
function actualizarINFO() {
mostrarINFO("salidaCargado", getBytesLoaded());
mostrarINFO("salidaBytes", getBytesTotal());
mostrarINFO("salidaDuracion", getDuration());
mostrarINFO("salidaTiempo", getCurrentTime());
mostrarINFO("salidaInicial", getStartBytes());
mostrarINFO("salidaVolumen", getVolume());
}
// establecer funciones varias
function seekTo(seconds) {
if (YTplayerDemo) { YTplayerDemo.seekTo(seconds, true); }
}
function setVolume(newVolume) {
if (YTplayerDemo) { YTplayerDemo.setVolume(newVolume); }
}
// manejo del API
function onYouTubePlayerReady(playerId) {
YTplayerDemo = document.getElementById("objetoPlayer");
setInterval(actualizarINFO, 250);actualizarINFO();
YTplayerDemo.addEventListener("onStateChange", "onYTplayerDemoStateChange");
YTplayerDemo.addEventListener("onError", "onPlayerError");
}
function onPlayerError(errorCode) {
alert("ERROR al cargar el video " + errorCode);
}
function onYTplayerDemoStateChange(newState) {
setYTplayerDemoState(newState);
}
Monitter: Mostrar resultados dinámicos de Twitter |
SodaFans me preguntaba acerca de un widget que utiliza JQuery para mostrar tweets de manera dinámica. Ni idea del tema pero, por suerte, apareció todoTwitter al rescate así que veamos como funciona.
Se trata de Monitter y lo que permite es "monitorear" Twitter y mostrar cualquier tipo de conversación, basándose en la búsqueda de ciertas palabras clave.
Lo primero, por supuesto, es tener incluido JQuery en nuestra plantilla, así que lo agregamos utilizando las AJAX Libraries API de Google. Antes de </head> colocamos esto:
Se trata de Monitter y lo que permite es "monitorear" Twitter y mostrar cualquier tipo de conversación, basándose en la búsqueda de ciertas palabras clave.
Lo primero, por supuesto, es tener incluido JQuery en nuestra plantilla, así que lo agregamos utilizando las AJAX Libraries API de Google. Antes de </head> colocamos esto:
<script src="http://www.google.com/jsapi"></script>
<script>
google.load("jquery", "1.3.2");
</script>Inmediatamente después de eso, habría que colocar el script de Monitter. Para eso, descargamos el ZIP donde nos encontarremos con el archivo monitter.min.js. Copiaremos su contenido e inmediatamente después, lo pegamos entre estas etiquetas:
<script type='text/javascript'> //<![CDATA[ ....... aquí colocamos el contenido del archivo ....... //]]> </script>
El último detalle antes de usarlo es el CSS, lo colocamos debajo y es lo que nos permitirá personalizar la salida; los valores elementales son estos:
<style type="text/css">
.monitter { /* este es el rectángulo general */
background-color: #000;
border: 4px solid #666;
color: #AAA;
font-size: 12px;
height: 300px; /* es la altura del rectángulo */
margin: 0 auto; /* centrado */
overflow-y: scroll; // para no cortar el contenido */
width: 500px; /* es el ancho del rectángulo */
}
.tweet { /* cada uno de los tweets mostrados */
display: block;
background-color: #333;
clear: both;
overflow: hidden;
padding: 5px;
margin: 5px;
}
.tweet img { /*la imagen con el avatar */
border: 2px solid #222;
float: left;
}
.tweet p.text { /* el texto de cada tweet */
line-height: normal;
margin: 0;
padding: 0 0 0 60px;
}
.tweet p.text a { /* los enlaces entro de los tweets */ }
.tweet p.text b { /* la fecha */ }
.tweet p.text b a { /* el nombre del usuario */ }
}
</style>Para mostrar el widget, sólo es necesario escribir un enlace con esta sintaxis:
<div class="monitter" id="tweets" title="CLAVES" lang="es"></div>
donde lang="es" mostrará resultados en español pero puede usarse cualquier otro idioma.
El punto importante es definir las claves que se colocan en el parámetro title; son esas las que definirán que cosas mostrar y la lista completa de operadores la podemos encontrar en la Ayuda de Twitter. Algunos ejemplos:
title="hogar" mostrará aquellos que incluyan la palabra "hogar"
title="blog scripts" mostrará aquellos que incluyan las palabras "blog" y "scripts"
title="blog OR scripts" mostrará aquellos que incluyan las palabras "blog" o bien "scripts", cualquiera de ellas
title="blog -scripts" mostrará aquellos que incluyan las palabras "blog" pero no la palabra "scripts"
title="#blogger" mostrará aquellos que contengan el hashtag #blogger
title="from:nombreUsuario" mostrará los enviados por el usuario definido
title="to:nombreUsuario" mostrará los enviados al usuario definido
title="@nombreUsuario" mostrará las referencias al usuario definido
El punto importante es definir las claves que se colocan en el parámetro title; son esas las que definirán que cosas mostrar y la lista completa de operadores la podemos encontrar en la Ayuda de Twitter. Algunos ejemplos:
title="hogar" mostrará aquellos que incluyan la palabra "hogar"
title="blog scripts" mostrará aquellos que incluyan las palabras "blog" y "scripts"
title="blog OR scripts" mostrará aquellos que incluyan las palabras "blog" o bien "scripts", cualquiera de ellas
title="blog -scripts" mostrará aquellos que incluyan las palabras "blog" pero no la palabra "scripts"
title="#blogger" mostrará aquellos que contengan el hashtag #blogger
title="from:nombreUsuario" mostrará los enviados por el usuario definido
title="to:nombreUsuario" mostrará los enviados al usuario definido
title="@nombreUsuario" mostrará las referencias al usuario definido
Lo más interesante del widget es lo que define su nombre, "monitorea" ciertas búsquedas y por lo tanto, los resultados cambian de manera dinámica.
No te metas a mi Facebook |
Pedro Villa y Josefina están prontos a ligar,
pero Laura la vecina los ha visto desertar,
Juan Ruja renuncia y lo hace publicar
Leonora su esposa pronto lo va a borrar.
Amanda y Miranda acaban de rastrear
a Lina su amiga que les dejó de hablar
tantean, husmean, no hay nada que indagar
es fácil, muy fácil, sólo opriman pokear
No no te metas a mi Facebook, no te metas por favor
cada vez que tengo un inbox me provoca poner close.
No te metas a mi Facebook, no te metas por favor
cuando escribas melodramas no me lo hagas por el wall.
De 620 amigos te relacionas con 10
90 desconocidos más 60 friend requests
te buscan, rebuscan, pronto te van a ver
juntitos, toditos, apuéstenle a la red.
200 eventos, a los que debes ir
aceptas a todos aunque no quieras ir
tu vida es difícil, tienes que decidir
aplica la regla, ponle a todos maybe.
No no te metas a mi Facebook, no te metas por favor
cada vez que tengo un inbox me provoca poner close.
No te metas a mi Facebook, no te metas por favor
cuando escribas melodramas no me lo hagas por el wall.
No me digas que no tienes que ir al baño
cuando, te miro te la pasas Facebookeando
y luego suspiro, te vas a quedar un rato
y mucho más.
No me digas que tienes otro cumpleaños,
del que hace un año ni te hubieras enterado
será que ahora es moda festejar con los extraños
y brindar por brindar
pero Laura la vecina los ha visto desertar,
Juan Ruja renuncia y lo hace publicar
Leonora su esposa pronto lo va a borrar.
Amanda y Miranda acaban de rastrear
a Lina su amiga que les dejó de hablar
tantean, husmean, no hay nada que indagar
es fácil, muy fácil, sólo opriman pokear
No no te metas a mi Facebook, no te metas por favor
cada vez que tengo un inbox me provoca poner close.
No te metas a mi Facebook, no te metas por favor
cuando escribas melodramas no me lo hagas por el wall.
De 620 amigos te relacionas con 10
90 desconocidos más 60 friend requests
te buscan, rebuscan, pronto te van a ver
juntitos, toditos, apuéstenle a la red.
200 eventos, a los que debes ir
aceptas a todos aunque no quieras ir
tu vida es difícil, tienes que decidir
aplica la regla, ponle a todos maybe.
No no te metas a mi Facebook, no te metas por favor
cada vez que tengo un inbox me provoca poner close.
No te metas a mi Facebook, no te metas por favor
cuando escribas melodramas no me lo hagas por el wall.
No me digas que no tienes que ir al baño
cuando, te miro te la pasas Facebookeando
y luego suspiro, te vas a quedar un rato
y mucho más.
No me digas que tienes otro cumpleaños,
del que hace un año ni te hubieras enterado
será que ahora es moda festejar con los extraños
y brindar por brindar
REFERENCIAS:Esteman Music
El destino de las princesas |
Nuevo script de Google Analytics |
Una vez más, Google Analytics propone un cambio en su código. Todavía hay muchos que utilzan el original y no lo han cambiado al modelo más reciente pero, ya se anuncia otra modificación que, por ahora, no es obligatoria sino opcional.
El cambio se anuncia como una mejora en algo que es bastante molesto y evidente, los scripts de Google Analytics son lentos en si mismos y eso afecta la carga de las páginas y es por eso que se sugiere que sea colocado al final de la página, antes de </body>.
El nuevo código se supone que será mucho más rápido, mejorará la performance y evitará los errores en caso de no poder ser cargada totalmente.
Este nuevo código llamado Asynchronous Tracking no debe ser utilizado junto con el anterior, quien quiera probarlo, debe eliminar el código "viejo" y copiar y pegar lo siguiente, justo antes de </head> y no al final de la página:
El cambio se anuncia como una mejora en algo que es bastante molesto y evidente, los scripts de Google Analytics son lentos en si mismos y eso afecta la carga de las páginas y es por eso que se sugiere que sea colocado al final de la página, antes de </body>.
El nuevo código se supone que será mucho más rápido, mejorará la performance y evitará los errores en caso de no poder ser cargada totalmente.
Este nuevo código llamado Asynchronous Tracking no debe ser utilizado junto con el anterior, quien quiera probarlo, debe eliminar el código "viejo" y copiar y pegar lo siguiente, justo antes de </head> y no al final de la página:
<script type="text/javascript">
<!--
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
-->
</script>
donde debemos reemplazar UA-XXXXX-X por el ID de nuestra cuenta.
Advierte que, pese a las mejoras, es posible que algún otro script interfiera así que insisten reiteramente que debe ser colocado entre <head> y </head> y debería ser el último en ser cargado (más información).
Advierte que, pese a las mejoras, es posible que algún otro script interfiera así que insisten reiteramente que debe ser colocado entre <head> y </head> y debería ser el último en ser cargado (más información).









