Miniposts

Coming soon :)

Showing posts with label Herramientas. Show all posts
Showing posts with label Herramientas. Show all posts

Saturday, May 16, 2009

Blogger Hacking: Comments Incrustrados + Popup

Hoy me comentó mi novia de un mini debate que se armó en lo de Halle respecto de qué es mas útil/cómodo, si tener los comentarios en una ventana emergente (popup), o incrustrados debajo del post en la página del mismo, al estilo Wordpress (también conocido en la jerga de la calle como "con el formulario").

Esto me parecía haberlo visto en otro lado, y efectivamente..., sólo que en esa ocasión el resultado no fue muy bueno. Con buen criterio e intentando hacer la gran Salomón, Halle encontró la forma de darle a sus lectores ambas opciones de manera tal de dejar contentos a todos.

Al poner los comentarios por defecto con el método de formulario, el secreto para al mismo tiempo permitir los comments en popup lo encontró simplemente usando esta URL:

https://www.blogger.com/comment.g?blogID=2751746494143071665&postID=7706357119646989421&isPopup=true

Con un poco de sentido común deducimos:

  • https://www.blogger.com/comment.g: la URL de la página que se carga en el popup con los comentarios del post.

  • ?blogID=2751746494143071665: comienza la lista de argumentos que Blogger le pasa a esa página. El primero de ellos es el BlogID, que identifica el blog del cual se quieren ver los comentarios.

  • &postID=7706357119646989421: el segundo de los argumentos es el postID, que como el nombre indica, identifica el post en particular perteneciente al BlogID anterior, del que quiero ver los comentarios.

  • &isPopup=true: y finalmente, un último argumento que simplemente hace que la página de los comentarios se abra en una nueva ventana.


Halle tuvo dos problemas:
  1. El Javascript que usa para abrir esta página en una nueva ventana, abría varias ventanas consecutivas si el lector hacía click en varios enlaces de comentarios de posts diferentes. Lo deseado es que si hay una ventana de comentarios ya abierta, se use esa misma en lugar de una nueva, para no llenar de ventanas el escritorio del sufrido usuario.

  2. Amén del punto anterior, cada ventana nueva de comentarios que se abría, no "refrescaba" la lista de comentarios, y simplemente traía los mismos una y otra vez, independientemente del post seleccionado.

Los que me conocen saben que está en mi naturaleza no dejar pasar un reto, sobre todo si a tecnología se refiere; y cuando mi novia me explicó la situación, una fuerza extraña me impulsó a resolver el (los) problema(s).

Habiendo peleado unas dos horas contra lo que parecía ser algo muy simple, finalmente encontré la solución; y aquí la comparto con ustedes:
  1. Configurar los comentarios de nuestro blog para que "por defecto" vayan incrustrados. Y digo por defecto porque en realidad el usuario medio no necesita saber cuál es el método original y cual es el hack.

  2. Vamos a editar el HTML de nuestro template. No se asusten que es fácil. Nos dirigimos a Diseño->Edición de HTML y seleccionamos "Expandir plantillas de artilugios". Hcemos click en cualquier parte del código en la caja de texto, y usando la opción Buscar de nuestro navegador (Ctrl+F), escribimos lo siguiente:

    data:post.allowComments

  3. El código debería verse como el que sigue. El suyo puede variar dependiendo de la configuración del blog y los cambios que le hayan hecho al template, pero lo al menos debería darles una idea de dónde comienza y termina el bloque de código que vamos a modificar:

    <b:if cond="data:post.allowComments">

    <a class="comment-link" href="data:post.addCommentUrl" onclick="data:post.addCommentOnclick"><b:if cond="data:post.numComments == 1">1 <data:top.commentlabel><b:else><data:post.numcomments> <data:top.commentlabelplural></data:top.commentlabelplural></data:post.numcomments></b:else></data:top.commentlabel></b:if></a>

    <a class="comment-link">Comentar (estilo Wordpress)</a>
    </b:if>

  4. Inmediatamente debajo de <b:if cond="data:post.allowComments"> agregamos el siguiente script en javascript:

    <script language='javascript'>
    function popupComment(poid)
    {
    var comuri = &quot;https://www.blogger.com/comment.g?blogID=HERE_GOES_THE_BLOG_ID_NUMBER&amp;postID=&quot; + poid + &quot;&amp;isPopup=true&quot;;

    window.open(comuri,&#39;commentpopup&#39;,&#39;titlebars=0, toolbar=0,scrollbars=1,location=0,statusbar=0, menubar=0,resizable=1,width=400,height=450&#39;);
    }
    </script>

    Tenemos que reemplazar el obvio HERE_GOES_THE_BLOG_ID_NUMBER del código de arriba con el BlogID del blog respectivo. ¿Cómo lo encontramos?, pues bien, cargamos el blog del que deseamos conocer el ID, y con un click derecho en la página elegimos "Ver código fuente" (el nombre y la ubicación de la opción puede variar según el navegador. Chicos, no intenten esto en IE).
    Nuevamente Ctrl+F y buscamos "blogID=". El número que sigue al igual es el BlogID.

    En el script usamos el método "window.open", el que crea una nueva ventana (duh). El primer argumento que recibe (comuri) contiene la URL que armamos en la línea inmediatamente superior. El segundo argumento resuelve el problema 2); ya que le da un nombre propio a la ventana para que podamos volver a llamarla nuevamente y cambiar su contenido.

  5. Un enter mas abajo, tenemos que agregar el link que abrirá el popup llamando al script que acabamos de crear:

    <a class='comment-link' expr:href='&quot;javascript:popupComment(&quot; + &quot;\&quot;&quot; + data:post.id + &quot;\&quot;&quot; + &quot;)&quot;'>

    Noten como al llamar a la función popupComment, estamos pasando como argumento el postID actual correspondiente. De esta manera el link cambiará automáticamente para cada post del blog. Esto resuelve el problema 1).

    Ahora bien, este elemento es un link común y corriente -de acuerdo, un poco más complicado de leer-, pero como todo tag HTML, necesita una apertura y un cierre. El tag <a> tiene tres partes:

    1. <a href="" ... : La apertura del tag, y el destino del enlace en el href.

    2. >Texto del Link: El cierre de la primer parte del elemento y el texto (o imagen u objeto) que convertiremos en Link.

    3. </a>: El cierre del tag.

    Hasta ahora sólo hicimos la primer parte.

    Para la segunda parte, es decir el texto descriptivo del link, tendrán que ustedes tomar una decisión. Pueden o bien dejar los comentarios "por defecto" como popups, o como formulario. En mi ejemplo el texto por default de Blogger dirigirá al popup, y el de formulario será un texto fijo escrito diréctamente en el código de la plantilla (no podremos cambiarlo desde las opciones de "Elementos de la página").
    Agregamos luego el tag de cierre. Veamos:

    <b:if cond='data:post.numComments == 1'>1 <data:top.commentLabel/><b:else/><data:post.numComments/> <data:top.commentLabelPlural/></b:if></a>

    <a class='comment-link' expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'>Comentar sin popup</a>

    En caso de que quieran hacer al reves, simplemente invertimos el contenido del enlace:

    Comentar con popup</a>

    <a class='comment-link' expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'><b:if cond='data:post.numComments == 1'>1 <data:top.commentLabel/><b:else/><data:post.numComments/> <data:top.commentLabelPlural/></b:if></a>

  6. Finalmente, todo el bloque de código nos quedaría parecido a esto:

    <b:if cond="data:post.allowComments">

    <script language='javascript'>
    function popupComment(poid)
    {
    var comuri = &quot;https://www.blogger.com/comment.g?blogID=HERE_GOES_THE_BLOG_ID_NUMBER&amp;postID=&quot; + poid + &quot;&amp;isPopup=true&quot;;

    window.open(comuri,&#39;commentpopup&#39;,&#39;titlebars=0, toolbar=0,scrollbars=1,location=0,statusbar=0, menubar=0,resizable=1,width=400,height=450&#39;);
    }
    </script>

    <a class='comment-link' expr:href='&quot;javascript:popupComment(&quot; + &quot;\&quot;&quot; + data:post.id + &quot;\&quot;&quot; + &quot;)&quot;'>

    <b:if cond='data:post.numComments == 1'>1 <data:top.commentLabel/><b:else/><data:post.numComments/> <data:top.commentLabelPlural/></b:if></a>

    <a class='comment-link' expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'>Comentar sin popup</a>
Guardamos la plantilla, y refrescamos la página del blog para ver los cambios.

Tuesday, September 16, 2008

Derecho Internacional Público

Los lectores usuales de mi blog no entenderán nada de lo que voy a postear a continuación, pero como siempre digo "este es mi blog y hago con él lo que me venga en gana". Simplemente ignórenlo y esperen a mi próximo update.

A AQUELLOS SUFRIDOS ESTUDIANTES DE ABOGACÍA QUE VIENEN A BUSCAR EL MATERIAL DEL CASO PRÁCTICO DE DERECHO INTERNACIONAL PÚBLICO
(Cátedra de Pagliari, Australia y Nueva Zelanda c/ Francia)

Bienvenidos a mi blog. Si no saben lo que es un blog y tampoco les interesa saber, más abajo están los links a los archivos.

Si se están preguntando ¿qué es un blog?, ahí va:

"Un blog es un formato de publicación de contenido en internet caracterizado por su similitud con un 'diario personal' con el condimento de que ser (generalmente) de público acceso y libre (de nuevo, generalmente) participación de sus visitantes. Su(s) dueño(s) 'postean' lo que quieren decir con o sin cierta regularidad, y los lectores pueden 'comentar' lo posteado, dejando registro de ello en la misma página."


En este sitio suelo contar al mundo cosas que me interesan, cosas que me pasan, cosas que describen como soy, ocurrencias y alguna que otra cosa rara que descubro y/o encuentro. Aparentemente ahora también lo uso de machete de apuntes para la facu.

En definitiva, acá están los links al material del caso práctico que expusimos Laura y Yo:
  • El texto completo del análisis del caso. Por la Ab. Fanny Peralta
    (NOTA: este material fue digitalizado y posteriormente resaltado por mí. No se asusten si hay un par de errores de puntuación)
    Archivo "Fallo CIJ Pruebas Nucleares.doc"
  • La presentación mostrada en clase, con imágenes incluidas
    (sin el video del planeta girando porque es muy pesado)
    Archivo "DIP - CIJ.pps"
  • BONUS: El resumen de las primeras bolillas
    (hasta el tema de los "Modos de adquirir el dominio territorial")
    Archivo "DIP Resumen 1er parcial.doc"

Que lo disfruten.

Monday, September 15, 2008

Como saber el Nombre y la Dirección de un Cliente de Claro

Tal como dice el título del post. Ahora tienen en sus manos la posibilidad de saber el nombre completo y la dirección de facturación de cualquier cliente de Claro (que no sea prepago, obviamente) con tan solo saber su número de teléfono.

Los pasos son los siguientes:

  1. Ir a la página de Autogestión de Claro
  2. Hacer click en el botón de "Impresión de Cupón"
  3. Ingresar el número del celular, sin el 0 y sin el 15. Ejemplo: para 0351-155123456 ponemos "3515123456"
  4. Apretar Enter o hacer click en "Imprimir Cupón"
  5. Listo!, abajo de todo de la página aparecerán los datos deseados
Evidentemente esta es una oferta de tiempo limitado. Si bien dudo que Claro lo haya puesto a propósito, de seguro no tardarán en corregir este error que atenta contra la privacidad de sus usuarios. Mientras tanto... ¡APROVECHEN!

UPDATE: Leo en Segu-Info que el problema fué reportado y arreglado. Bien por Claro.
Por cierto, increíble la repercusión en la blogósfera que tuvo este post. Nunca había visto tantos trackbacks juntos ahí abajo... A todos, gracias por el link.

Monday, September 08, 2008

Invitation code para Demonoid.com

Veo en Unblogged que si bien alguien tenía Invitation Codes para Demonoid, se quedó rápidamente sin.

Para los que no sepan, Demonoid es una página en donde se pueden conseguir torrents de prácticamente lo que sea. Lamentablemente, hay que registrarse, y las registraciones se abren al público tan solo uno o dos días cada tanto, y en forma aleatoria. Los invitation codes son justamente códigos que los miembros registrados pueden generar para invitar a alguien a formar parte de la comunidad, sin tener que estar pendiente de cuando las registraciones se abren o no; y como tales, son bastante codiciados por los entendidos en descargas P2P.

La buena noticia es que yo soy miembro desde hace tiempo, pero como mi participación es casi nula, la mala noticia es que pude generar tan solo un código; así que se va al mejor postor (léase: al primero que me mande un mail pidiéndomelo).

UPDATE: aparentemente puedo generar más de un código. Así que pidan que mientras haya, yo reparto.

UPDATE 2: a todos los que me escribieron, lamento informar que me he quedado sin. Pero manténganse al tanto que apenas pueda generar de nuevo aviso.

Sunday, August 24, 2008

Leeme el post

Desde el día de la fecha, Maldita Entropía es declarado oficialmente un blog friendly para personas con capacidad visual reducida.

Y es que encontré VozMe, un servicio de Texto-a-Voz (Text-To-Speach) online que incluye la posibilidad de ser integrado en una página web de diversas maneras. El sistema funciona mejor de lo que uno espera, pudiendo elegir entre una voz masculina y una femenina, aunque esta ultima suena un tanto.... como decirlo... machota. Otra cosa que me llamó la atención es que soporta varios idiomas, siendo Inglés y Español los más importantes. Por ahora, los otros son Italiano, Hindi, Portugués y Catalán.

Para los que quieran ver como funciona, para aquellos que tengan vagancia en leer, o simplemente para los que les haga falta; abajo de cada post junto a los botones normales de comentarios y autoría, encontrarán el enlace "((•)) Escucha este post", el que en unos momentos les generará el MP3 con el texto del mismo; audio el cual incluso es posible descargar.

Sin duda, un servicio recomendable en todo sentido.

Tuesday, August 05, 2008

La Mañana Está Perdida - Widget

Para los despistados de siempre, que nunca notan los cambios de diseño en el blog, les comento que he agregado un nuevo widget a mi sidebar (Dayana, agarrate porque el spanglish acá abunda). Desde el mismo podrán escuchar diariamente los nuevos podcasts del nuevo programa de Marbot y José; La Mañana Está Perdida, por Radio Animal. Los días anteriores se supone que también aparecen.

Para los que quieran el código, se los dejo acá:

<embed pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" type="application/x-shockwave-flash" width="270" height="251" src="http://res1.esnips.com/escentral/images/widgets/flash/white_player_list.swf" flashvars="autoPlay=no&thePlayerURL=http://res1.esnips.com/escentral/images/widgets/flash/mp3WidgetPlayer.swf&fileIds=6b260bb7-79d7-4e29-9dc8-41d45df24a76;7b9c3109-0bb8-42c4-b620-b5c5f664917a;14e22502-5787-44fc-81f8-17ee3a279744;&plURL=http://www.esnips.com//plxml/eec57baf-0ea1-4322-8af9-b3fb6c8280cf/?cachePL=true"></embed>

Thursday, July 17, 2008

Generador de Constancia de CUIT/CUIL

Bueno, resulta ser que la ANSES, ha decidido hacer la vida de los ciudadanos imposible; ya ni una estúpida Constancia de CUIL podes sacar por internet que tenes que lidiar con la burocracia del Estado Argentino y sus horriblemente implementados sistemas.




Es por ello que haciendo uso de un poco de magia, he decidido crear mi propia Constancia, usando para ello una útil búsqueda en Google, que me llevó a los imbécilmente descuidadamente desprotegidos archivos de la página que se genera (o se generaba, al menos) anteriormente, cuando todo mas o menos funcionaba.

A partir de esta plantilla, me puse a trabajar para crear una muy simple página en PHP para generar tu propia Constancia sin tener que estar dependiendo de si los servidores estatales andan o no.
Desde luego que para que sirva, uno tiene que saber su CUIL (pueden verlo en su Recibo de Sueldo, sus Tickets Canasta y tantos otros lugares). De todas formas, en el mismo formulario hay un link a una planilla de Excel que les puede facilitar la generación del número. Hay que tener en cuenta que si bien de esta forma se puede generar un CUIL/T válido, no significa que realmente sea el nuestro pues puede que exista algún duplicado. De todas formas intuyo que esto se daría mas que nada en los casos en que el Documento de Identidad sea Libreta Cívica o de Enrolamiento, ya que el DNI sí es único para tanto varones como mujeres.

Sin más, el Generador de Constancia de CUIL/T.