martes, 27 de octubre de 2015

Entre música nos alegremos y en datos lo convertiremos... Spotify y Play Music

Hace poco tiempo, un amigo hacía una pregunta en su perfil de facebook sobre Spotify, que si convenía comprar el premium y sobre el uso de datos de la misma aplicación, en ese tiempo lo usaba y pensaba que era bueno, de hecho es cómodo no escuchar los anuncios entre una y otra canción, al terminar mis 3 meses de promoción, decidí probar Play Music (de google), no llevo ni un mes y realmente ya puedo decir los pros y contras de cada una.

Spotify es un buen servicio, tienen mucha música y es excelente la integración que tiene con Shazam y en las cards de google, por lástima, Spotify no genera playlists (radio) buenos, simplemente son playlists, pero no llena mis expectativas musicales al generarlos.

Lo que es bueno es el uso de datos, en los 3 meses de uso, nunca usó más de 2.5gb por mes.

Y lo que es excelente, es que tienen un reproductor nativo multiplataforma, es decir, puedes usar Spotify desde tu escritorio, sin tener que gastar los miles de gb en ram al abrirlo en chrome o firefox.

Por otra parte, Play Music es bueno, mucho muy bueno, es un servicio de google y creo que google nos conoce más de lo que nosotros podemos llegar a conocernos, por lo que la generación de playlists (radio), es excelente, simplemente toda la música que quieres escuchar basado en una sola canción, solo hay una cosa mala con este servicio: El uso de datos.

En un mes (menos de un mes en realidad) que llevo usándolo, se acabo 4.2 gb de datos en tan solo 18 días!!!

Esto es por la forma en que Play Music funciona, al generar radio de una canción, empieza a descargar miles y miles de canciones (bueno, como 10 para no exagerar tanto), para guardarlas en caché, así que si genero radio de 4 canciones, en realidad estará descargando 40! (no, no es factorial eh, -ñoños riéndose ahora-).

El otro punto malo (muy malo) que se lleva Play Music, es que no tienen un reproductor nativo, por lo que al usar la aplicación durante 8 godinezcas horas en chrome o firefox, el consumo de tu ram se vuelve exponencial, hasta el punto que algunas veces es mejor reiniciar el equipo (16gb en ram, y aún así pasa, se da un buen agarrón con firefox, pero esa es harina de otro costal).

A final de cuentas, Spotify es un buen servicio con excelentes herramientas, así nada más, y Play Music es un excelente servicio con horribles herramientas, si mejoran pronto las herramientas de éste último, seguro que tendrán clientes de por vida.

Saludos! :D

Alfonso Cuevas aka Komtec1  ( :P


miércoles, 14 de octubre de 2015

Mantras mentales, programacion, fractales y Marths

En la busqueda para el desarrollo de fractales, generé este código para poder hacer imágenes de forma aleatoria, se toman dos circulos y se van uniendo los puntos a partir de diferentes grados. 

Si quieren jugar con el código, las variables que tendrán que modificar para ver diferentes resultados son las siguientes: 

$tamanioX - Define el tamaño completo de X en la imagen
$tamanioY - Define el tamaño completo de Y en la imagen

$radioG - Define el radio para obtener los puntos en la circunferencia
$radioPG - Define el radio para obtener los puntos en la circunferencia

En el segundo for: 

for ($b=0; $b<=360; $b=$b+10)

Podemos cambiar el +10 por algún otro ángulo, en esa parte indica que cada 10° genere un punto. 

En el tercer for: 

        for ($a=0; $a<=360; $a=$a+$b1)

Podemos cambiar el valor de $b1 por algún otro, para que se vaya determinando un ángulo diferente al generarse el segundo punto. 

Se calculan los puntos determinados de la elipse grande y de la pequeña, y se traza una línea entre los dos, como se detalla en la siguiente imagen: 





El primer ciclo, genera un aumento de la imagen que se está dibujando, con un mayor tamaño que se define en el aumento de $radioG y $radioPG. 

Les dejo el código con valores predefinidos que generan una grandiosa imagen, como siempre aquí y en pastebin y al final adjunto varias imágenes generadas con diferentes valores. 



///////Alfonso Cuevas/////////////////////////
///////komtec1 [ at ] gmail [ dot ] com///////
///////komtec1.blogspot.com///////////////////

$tamanioX = 3600;
$tamanioY = 3600;

$img = imagecreatetruecolor($tamanioX, $tamanioY);

$x = $tamanioX/2;
$y = $tamanioY/2;

$radioG = 120;
$radioP = 5;
$radioPG = 250;

$blanco = imagecolorallocate($img, 255, 255, 255);
$rojo   = imagecolorallocate($img, 255,   0,   0);
$verde = imagecolorallocate($img,   0, 255,   0);
$azul  = imagecolorallocate($img,   255,   0, 255);

// dibujar el circulo grande
#imagearc($img, $x, $y, $x+$radioG, $y+$radioG,  0, 360, $rojo);
// dibujar el circulo pequenio
#imagearc($img, $x, $y, $x+$radioP, $y+$radioP,  0, 360, $rojo);

$b1 = 20;
$b2 = 10;

for ($c=0; $c<=11; $c++)
{
for ($b=0; $b<=360; $b=$b+10)
{
$color = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
for ($a=0; $a<=360; $a=$a+$b1)
{
$puntoxG1 = $x +$radioG* cos(deg2rad($a)+(pi()/180));
//Para que sea una elipse, comentar arriba y quitar el comentario abajo
//$puntoxG1 = $x +$radioG* 2*(cos(deg2rad($a)+(pi()/180)));
$puntoyG1 = $y +$radioG* sin(deg2rad($a)+(pi()/180));
#imagesetpixel($img, round($puntoxG1),round($puntoyG1), $verde);

$puntoxP1 = $x +$radioPG* cos(deg2rad($b)+(pi()/180));
//Para que sea una elipse, comentar arriba y quitar el comentario abajo
//$puntoxP1 = $x +$radioPG* 2*(cos(deg2rad($b)+(pi()/180)));
$puntoyP1 = $y +$radioPG* sin(deg2rad($b)+(pi()/180));
#imagesetpixel($img, round($puntoxP1),round($puntoyP1), $blanco);Mantras mentales, programacion y Marths

imageline($img, $puntoxG1, $puntoyG1, $puntoxP1, $puntoyP1, $blanco);

}
#imagestring($img, 5, $puntoxP1, $puntoyP1, " $puntoxG1 $puntoyG1", $rojo);
}
$b1=$b1+15;
$b2++;
$radioG = $radioG+100;
$radioPG = $radioPG+100;
}

// imprimir la imagen en el navegador
header("Content-type: image/png");
imagepng($img);

// liberar memoria
imagedestroy($img);

?>

Link en pastebin: 

http://pastebin.com/09QDjpQh






















Por cierto, el término Marths lo pensé cuando Alejandro Hernandez (nitr0us) me dijo: maths+arts! 

Pasé el mismo código a Javascript, corre genial en navegador también, aunque ese lo quiero hacer interactivo con interrupciones. 

De vez en cuando es necesaria la distracción mental del mundo actual. 

PD. Si generan imágenes con este código, muéstrenla en los comentarios o por twitter @Komtec1 

PD2. Si modifican o mejoran el code, les agradecería me enseñaran para ver que genera con las modificaciones! :D 

PD3. En el código dejé comentado para que lo puedan hacer con elipses, en vez de que sean con círculos, aunque a mi me gustó mucho más el como se genera con círculos, por eso lo dejo así. 

Saludos

Alfonso Cuevas aka Komtec1 

domingo, 9 de agosto de 2015

Arris TG862 default secondary password

El día de ayer, probando algunas cosas en varios routers arris, encontré una contraseña secundaria por default, como se sabe, la contraseña predeterminada para estos routers es usuario: admin contraseña: password, pero buscando un poco dentro de sus tripas de telnet, di con la contraseña secundaria que es la siguiente: 

user: technician
pass: technician


Fue probado en varios routers, y se pudo ingresar sin problema alguno con el principal y el secundario, los detalles son estos: 

Bootcode Version
Hardware Version
Firmware Version
 ______________________________________________________

Bootcode Version
Hardware Version
Firmware Version

Product Type: 00000000 0AAC4D52
Hardware ModelTG862G
Hardware InfoARRIS DOCSIS 3.0 / PacketCable 1.5 Touchstone Telephony Gateway


Hay mucha información interesante dentro de su telnet, y toda en texto plano, después veré que más se puede sacar de provecho y publicar aquí en el blog.


martes, 4 de agosto de 2015

Generar gráfico a partir de fibonacci con PHP

Hola,

De ves en cuando me pongo a programar cosas que no sirvan para nada, o que solo sirvan para mi distracción (sí, trabajo programando y me distraigo del trabajo programando :P),  y hace tiempo pensé en hacer un código que generara fractales.

Se que hay varias formulas ya hechas para los fractales, pero yo pensaba idear algo más, entonces me pareció oportuno empezar con la generación y graficación de la serie fibonacci.

Les dejo el código y la imagen de ejemplo que se genera, ustedes pueden modificar en el código las iteraciones que quieran, para que sea más grande o más pequeño, eso directamente en el for.

Pueden también seleccionar que los rectangulos sean rellenados o solo el contorno.

Pueden ajustar el tamaño del lienzo, en este caso lo dejé muy grande (12000x6150), pero eso lo ajustan directo en las primeras opciones.

Les dejo el código pegado aquí y también en pastebin, por que Blogger no tiene gestión para code (creo yo).

 Clic derecho, abrir en nueva pestaña la imagen para ver a tamaño completo :D
http://kaguamedia.com/fibonacci.jpg -> enlace a tamaño completo (blogger la redimensiona)

Enlace Pastebin: http://pastebin.com/ZTaeYk2a

//Tamaño del lienzo
$a=12000;
$b=6150;

//Tamaño del cuadro inicial
$cuadroInicial = 10;

//definimos el lienzo
$lienzo = imagecreatetruecolor($a, $b);

//se definen los valores iniciales de la posición, se toma el centro
$x1Inicial = $a/2-($cuadroInicial/2);
$y1Inicial = $b/2-($cuadroInicial/2);
$x2Inicial = $a/2+($cuadroInicial/2);
$y2Inicial = $b/2+($cuadroInicial/2);

//para inicializar la secuencia de fibonacci
$n1=1;
$n2=0;

$espaciado = 10;


//Asignamos el sentido inicial
$sentido = 'inicial';

for($i=0;$i<=13;$i++)
{
$suma = $n1+$n2;
$n1=$n2;
$n2=$suma;
#echo $suma . " ";

$ti = $cuadroInicial*$suma; //Esta variable lleva de forma correcta el tamaño del cuadrado que se genera
$tiValores[$i] = $cuadroInicial*$suma;
$color = imagecolorallocate($lienzo, rand(10,210), rand(10,210), rand(10,210));


$x1anterior = $x1Inicial;
$x2anterior = $x2Inicial;
$y1anterior = $y1Inicial;
$y2anterior = $y2Inicial;

///*
// para definir en que sentido aumenta el cuadrado
if ($sentido == 'derecha' && $i<2 p="">
{
$x1Inicial = $x1Inicial+$ti; //caso derecha primer iteración
$x2Inicial = $x1Inicial+$ti; //caso derecha primer iteración
}
else
{
if ($sentido == 'derecha')
{
$x1Inicial = $x2anterior;
$x2Inicial = $x1Inicial+$ti;
$y1Inicial = $y2anterior;
$y2Inicial = $y1Inicial-$ti;
}
elseif ($sentido == 'arriba')
{
//reacomodando una variable para que vuelva a ser el eje guía
if ($i>3)
$y1anterior=$y2anterior;

$x1Inicial = $x2anterior;
$x2Inicial = $x1Inicial-$ti;
$y1Inicial = $y1anterior;
$y2Inicial = $y1Inicial-$ti;
}
elseif ($sentido == 'izquierda')
{
$x1Inicial = $x2anterior;
$x2Inicial = $x1Inicial-$ti;
$y1Inicial = $y2anterior;
$y2Inicial = $y1Inicial+$ti;
}
elseif ($sentido == 'abajo')
{
$x1Inicial = $x2anterior;
$x2Inicial = $x1Inicial+$ti;
$y1Inicial = $y2anterior;
$y2Inicial = $y1Inicial+$ti;
}
}

imagefilledrectangle($lienzo, $x1Inicial, $y1Inicial, $x2Inicial, $y2Inicial, $color);
#imagerectangle($lienzo, $x1Inicial, $y1Inicial, $x2Inicial, $y2Inicial, $color);

imagestring($lienzo, 5, 5, $espaciado,  "Iteracion $i - x1: $x1Inicial, x2: $x2Inicial, y1: $y1Inicial, y2: $y2Inicial $sentido suma: $suma cuadroinicial: $ti", $color);
$espaciado = $espaciado+20;
//Para definir el sentido de la imagen
if ($sentido=='inicial')
$sentido = 'derecha';
elseif ($sentido=='derecha')
$sentido = 'arriba';
elseif ($sentido=='arriba')
$sentido = 'izquierda';
elseif ($sentido == 'izquierda')
$sentido = 'abajo';
else
$sentido = 'derecha';


// Imprimir y liberar memoria

}
header('Content-Type: image/jpeg');

imagejpeg($lienzo);
imagedestroy($lienzo);

?>

PD. Si, hay programas que hacen esto y facilitan la vida con un solo clic, pero yo quería programarlo :P

PD2, Espero pronto pueda hacer el código para la generación de fractales, serán "personalizados", la idea que tengo está buena! :D

miércoles, 25 de marzo de 2015

Solución [fix] a hamachi Logging in .. failed, busy

Hola!

Aquí con una pequeña entrada, pero que a más de uno le será útil.

Tengo hamachi instalado en varias máquinas, pero en una precisamente al reiniciar, algunas veces me da este problema:

usuarioserver@server:~$ sudo hamachi login
[sudo] password for usuarioserver:
Logging in .. failed, busy

Lo busqué en internet y la "solución" que dan, es reinstalar hamachi, y para los que han instalado hamachi en ubuntu, saben que no es una opción, pues se tendrían que hacer estos pasos: 

sudo apt-get remove logmein-hamachi
sudo dpkg -i logmein-hamachixxx.deb
sudo apt-get install -f

Para lo cual (siempre) es molesto hacer esos pasos, y algunas veces la configuración se llega a perder. 

Para solucionar ese problema, basta con hacer un: 

sudo /etc/init.d/logmein-hamachi force-reload

Esto forzará el reinicio de hamachi, y así después hacen: 

sudo hamachi login

Y listo, el problema de failed busy desaparece y los deja loguear bien en la red de hamachi. 

Espero les sirva! :D 

Saludos 

Komtec1

sábado, 24 de enero de 2015

¿Que hay detrás de los Hololens de Microsoft?

Si no han visto que son los hololens de microsoft, primero dejo un vídeo para que lo puedan visualizar: 


Es una excelente tecnología, realmente maravillosa, y aclaro, el contenido de este post, no es para demeritar el trabajo que se está haciendo, pues es realmente bueno y lo han hecho personas asombrosas con un gran ingenio!

¿Cómo podemos decir que funciona la nueva tecnología de Hololens?

Antes que nada, yo creo que el nombre es principalmente comercial para que se pueda vender el producto y tenga un gran marketing, un holograma es creado a través de la holografía, que consiste en crear imágenes tridimensionales basadas en el empleo de la luz (lo saqué de wikipedia, si quieren leer más al respecto, éste es el link), en este caso se proyectan imágenes tridimensionales, pero pre-programadas, la parte de la adaptación espacial la comento un poco más adelante.

Al momento de que la imagen se proyecta a través de un "monitor" (en este caso los lentes), se puede decir que es una realidad aumentada, muchos han visto ya la realidad aumentada y las capacidades que puede tener, es maravilloso todo lo que se puede hacer con esto.

Ahora vamos con la tecnología que ocupa (o al menos yo creo que ocupa y no creo fallar tanto en esto).

Todo está basado en el maravilloso invento de Microsoft llamado Kinect, que lanzó al mercado en el año 2010.

La cámara de profundidad que usa esta tecnología puede detectar mediante proyectores infrarrojos y un sensor CMOS monocromo, la distancia y movimientos que realiza una persona, en esta nueva versión de Kinect que integra Hololens, puede que se hayan ocupado más de un sensor para poder detectar las instrucciones a mayor detalle.


Parte del funcionamiento de la cámara de Kinect:

¿Cómo sabe Hololens que le estoy dando una instrucción?

En esta parte creo que no la tendré que explicar mucho, simplemente son gatillos que se ocupan dentro de las aplicaciones programadas, y por lo tanto todas las aplicaciones que se desarrollen para Hololens será de la forma: mueve indice arriba y abajo, saludo, "hola app", etc, etc, es como si programaramos una espera de instrucción en C para poder decir que se presionó la tecla "arriba->72",  "abajo->80", etc, etc.

Ahora, ¿Cómo sabe hololens que la instrucción la está dando "mi mano"?

De la misma forma que en nuestro teléfono podemos poner el dedo "desde arriba" de la pantalla y se desplegará algo más.

¿Que quiero decir con esto?

Tendremos siempre un punto 0,0,0, las cámaras de los lentes tendrán un angulo de visión, en este caso perimetral, pero siempre habrá ese punto, por lo que el gatillo para poder recibir una instrucción  viene cuando el punto 0 es invadido hasta el punto "N", y de esta forma queda a la espera del gatilo mencionado algunos parrafos arriba.


Campo de visión humano, en este caso, los hololens emulan este tipo de visión.

De la profundidad de la imagen, se encarga el soft de kinect (claro, junto con el hardware).

En la imagen de arriba se muestra el como se calcula la distancia entre el punto final y Kinect, pero en un término sencillo (aunque demasiado complejo de realizar :P), se puede decir que Kinect emite luces infrarrojas, y después toma la distancia con un algoritmo de medición del tamaño de los puntos y recrea la imagen.

Para acabar el post doy mis conclusiones:

1.- Microsoft creó una herramienta genial
2.- Innovo y mejoró nuevamente un producto
3.- Nos acerca mucho más al futuro.
4.- No son hologramas, son desarrollos prefabricados adaptados a una realidad aumentada.
5.- Pues dificil hasta escribirlo, pero malo sería no reconocerlo: "Felicidades Microsoft" :O

Sin más, me despido diciendo que el futuro actualmente, es el pasado.

Saludos! :D

Komtec1

jueves, 22 de enero de 2015

Whatsapp web, la seguridad que manejan y el adiós de tu batería.

¿Por que se tiene que dejar el móvil con conexión a internet para poder usar whatsapp web?

Armé este pequeño documento para explicar el como funciona este sistema, que realmente se me hace ingenioso, no funcional, pero ingenioso.

La actualización en móvil de whatsapp incluye una nueva tabla, la cual se llama sesiones, en esta hay campos como:

browser_id (23 caracteres aprox)
secret (88 caracteres aprox)
token (44 caractere saprox)

Solo por mencionar algunos.

Estos datos son los que se mostrarán al entrar al apartado whatsapp web de nuestros móviles, al principio se piensa que solo es para tener un "control" propio de los dispositivos conectados, pero mas adelante explicare el funcionamiento un poco mas extenso de esto.

Al abrir el menú de whatsapp web, nos da para escanear un código qr, si analizamos este código, tenemos algo como esto:

bjqPtTTbnhUvq1FWyLZmMh1RhesUcGU8eJMG2aUnrps4z2Z80XBiUVguqJ2Cb9YUyQY2t32apwXpP2qn4QAWbHXsNQV7ik7CT2PZbsfNEU+2ThPFhjRTVS7act+7irrQIbPSCHon8GCFXzM/ADHeA==,pbKOZCwnvdlYLFF8bmQePMKtNL7IoiJf7PQdH9XawD8=,/abc7sigtAjidMiWNCUOTw==

El código se genera cada 10 segundos aproximadamente, y es una mezcla del timestamp actual con el id del navegador, y alguna otra cosa más (que debe ser code generado en aleatorio por WA), lo que nunca cambia al generar el código desde un mismo navegador es la última parte (,pbKOZCwnvdlYLFF8bmQePMKtNL7IoiJf7PQdH9XawD8=,/abc7sigtAjidMiWNCUOTw==), esa parte siempre se mantendrá igual, por lo que se puede deducir que es el id del navegador, o en la DB el browser_id.

Ahora vamos con una parte de como trabaja la aplicación (al menos en android).

Al escanear el código con la aplicación de WA, está programada para que mande una petición a los servidores de WA, es decir y como ejemplo, podría ser un WS como el siguiente:

https://whatsapp.com/?añadirdispositivo=si&id_dispositivo=52155XXXXXXXX&token=YYYYY&browser_id=ZZZZZZZ&secret=AAAAAAA&imei_dispositivo=BBBBB

Al momento de que se manda esa petición al servidor de WA, este busca el browser_id asociado y refresca el contenido en el navegador web, algo así como funciona youtube remote y algunas aplicaciones por el estilo.

Listo, ya tenemos asociado nuestro WAWeb con WAMovil, ya todo funciona de manera perfecta y buena, ahora vamos con la parte como se gestionan los mensajes desde la aplicación web.

Al mandar un mensaje en el servidor web, lo que se hace es que se manda a una DB de WA en donde se almacena temporalmente, en ese momento aún NO es entregado a su destinatario, después de que se mandó correctamente, el servidor de WA procesa el mensaje y lo envía a nuestro dispositivo móvil, para que después nuestro dispositivo móvil mande el mensaje nuevamente al servidor de WA y el servidor de WA se encargue de entregarlo a su destinatario.

¿Raro no?

Si, la verdad es raro, pero funcional, no digo que la mejor solución, pero a ellos les funciona.

¿Por que se hace ese embrollo en la comunicación del sistema?

Al plantear un navegador WEB, whatsapp tenía el inconveniente de la DB en los móviles, es decir, como se podrían mostrar los historiales de conversación que se tuvieran en web para después mostrarlos en móvil, WA no fue diseñada para ser una aplicación como FBMessenger (que hubieran podido tomar el ejemplo y la funcionalidad de ahí para hacer WAWeb), a lo que me refiero, es que fue una aplicación completamente nativa en los dispositivos, no es una aplicación que primero haya sido web y después sea facil portarla a móvil de forma hibrida.

Uno de las cosas buenas de esto es lo siguiente:

La seguridad.


WAWeb está en comunicación constante con nuestro dispositivo móvil, es decir, si nuestro dispositivo llega a borrar o limpiar la tabla de sesiones, WAWeb se cierra yq dice que no está asociado ya con nuestro dispositivo.

Está bien, así estamos seguros de que si dejan la sesión abierta en la casa de Juan Perez, podríamos "cerrarla" de forma remota.

Esto nos garantiza que aunque obtengan nuestro secret y token, la comunicación no pueda ser tan fácilmente suplantada por alguna otra entidad maliciosa :P, ya que faltaría el id del móvil, más el IMEI que se hace constante revisión, y puede que algunas otras cosas más (eso, por el momento, sólo lo saben los desarrolladores de WAWeb).

Una de las cosas malas, muy malas en este mismo punto mencionado arriba:

Tu batería.


Si estás usando WAWeb durante tus 8 horas godinescas en la oficina, olvídate de que puedas subsistir con lo que tienes de batería, ya que el navegador estará en constante comunicación con el dispositivo, y por lo tanto el dispositivo en ningún momento estará en modo de espera o "standby", aunque la pantalla esté apagada, el wifi seguirá funcionando o en su caso, los datos móviles.

Otra de las cosas que te "podría" afectar.

Tus datos.


Si usas WAWeb de la misma forma menciono arriba, y por alguna casualidad se te olvida activar el WiFi, entonces despidete de tus datos de una forma rápida.

Si, se que hay algunos planes con WA ilimitado y demás, pero hasta ahorita no estamos seguros de que el webservice del que se hace llamada para verificar todos los datos del dispositivo sea desde un dominio llamado whatsapp.com, puede ser por amazon, o algún otro servicio en la nube que sea capaz de soportar tantas, pero tantas conexiones activas por tanto tiempo, por lo que si la petición se hace desde otro servidor, tu operador no sabrá que es de whatsapp y hará el cobro de la debida factura.

Bueno, creo que ya me extendí mucho, hay algunas otras cosas que se pueden colocar aquí, pero quiero investigar un poco más sobre la aplicación, para que pueda poner algunos datos muy concretos, al principio me emocioné por la forma que hacia la conexión y por eso investigué esto, pero veo que si es un poco difícil suplantar la identidad con esta forma fea, pero funcional de hacer la comunicación.




Saludos!

Komtec1

miércoles, 19 de noviembre de 2014

Google it's Watching you and the whole network too... aún?

Hace algún tiempo escribí sobre un problema de seguridad/privacidad en la plataforma de google, en específico adsense. 

Ahí lo especifiqué con una página pública, que cualquier usuario podría registrarse, pero agregué al final el siguiente texto: 

"En este caso es una pagina en la cual pueden registrarse de manera gratuita, pero pensemos en la forma de que no lo sea, seria una perdida de $$$ para las paginas de contenido protegido que manejen adsense y que se pague algo para registrarse."

El día de hoy leí algo en el periódico Reforma, y lo busqué en internet, claro está que el primer enlace es del mismo periódico: 

https://www.google.com.mx/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=acomoda%20diputado%20plazas%20con%20serrano

Entrando al enlace, se puede ver un extracto de la nota y al final dice: "Para seguir leyendo, regístrate o suscríbete."

Pero si entran al caché del contenido, pueden ver la nota completa: 

http://webcache.googleusercontent.com/search?q=cache:ZF9qWr3Nd6MJ:www.reforma.com/aplicaciones/articulo/default.aspx%3FId%3D397001%26v%3D3+&cd=1&hl=es-419&ct=clnk&gl=mx

Al ser un problema que hice el reporte en el año 2008, debería estar arreglado por google, lo raro es que ninguno de sus anunciantes haya denunciado esto, o tenido efectos legales en contra de google por la perdida que esto pueda generar, o tal vez, es que no se han dado cuenta del problema (lo más seguro). 

Saludos! :3