miércoles, 15 de febrero de 2012

Addon Chrome

Read first http://seguridad-agile.blogspot.com/2012/02/addon-firefox.html

It is the Chrome version, it is almost the same but I could not find an easy way to copy the cleaned url to the clipboard, so there is an ugly alert where you can copy from.

The other difference is that the FF version understands a more fine grained context, where Chrome sees a "link", FF can see an "a" of class "l". So, FF only offers nogoogle to the links that may have an intercepted link, whereas Chrome offers nogoogle for every link.

Don't expect any improvement unless some feedback or hint is given, as I seldom use Chrome.

As I don't have yet access to the store, here [1] is a base64 encoded version.

Paste it to nogoogle.base64
cat nogoogle.base64 | base64 --decode > nogoogle.tgz
tar -xzf nogoogle.tgz

Open google chrome, go to Wrench ->Tools-> Extensions-> Enable Developer Mode -> Load Unpacked Extension


Versión en español:

Lee primero http://seguridad-agile.blogspot.com/2012/02/addon-firefox.html

Esta es la versión para Chrome, que es casi igual salvo que no he hallado la manera de utilizar el clipboard, asi que hay que copiar desde un horrible alert()

La otra diferencia es que en FF se puede tener un mejor control de selección de contexto; donde Chrome ve un "link", FF ve un "a" de la clase "l". Asi es que FF ofrece nogoogle para los links que pueden estar interceptados mientras Chrome lo ofrece para todos los links.

No esperes cambios a menos que haya alguna ayuda, ya que casi no uso Chrome.


Dado que no tengo aun acceso al store, aqui [1] hay un versión en base64.


Pegala en nogoogle.base64

cat nogoogle.base64 | base64 --decode > nogoogle.tgz
tar -xzf nogoogle.tgz


Abrí Chrome y Wrench ->Tools-> Extensions-> Enable Developer Mode -> Load Unpacked Extension


[1]

H4sIAJapO08AA+1X32/bNhD2s/+Kgx4WB3EV+TeQxgW2rBsCdO2ArNhDFgS0RElcGFIgqXhG4f+9
R9JqbNdpuixtEIzfQxIdj/d9JO/Ii5CFlAWnlzdJ77D1bZAgJqOR/d2bjJL13w1avd6kNx4NxsPJ
sJX0+pP+oAWjb6RnA7U2RAG0UqK41Hf73Tf+TCHWz7/5iP9+1IXaAx4Ph3ed/2CQjG/PfzTG8x8l
mAaQPKaIu/A/P//DQziR1UKxojTQSfehj9UHJ26x8DsRhnKWUR3Dj5yD89KgqKbqhmZxG2e/1xRk
DqZkGrSsVUohlRkF/CzkDVWCZjBbAIGfzn5+oc2CU+AspQKnmZIYSImAGbWRclmLDJhAO4U3pyev
3569hpxhOrbbK5mQckpsRM7EFRiJ36yaSaIyFKjhFKlrnoGQBidiMIKhjaEK5mTRBV3KOTADc2ZK
QFrCqTKQMcJl0c5rkRomBYaoFm8wfIeJXHYNme3DhzbADWaJY516EW74PLKm94pHF/sv0clF7ERn
Uinks+vb0245M6rNJ3mZ7DoW1JBBRbShkCt5DSVV9C8RwYEnwohLt/J3FRWbK8dNSmulqDCAAm+1
2whbutMSQ9MYv3VcVxkxtIN/xyzrwoeoRuVHu5ez/DI9AUHnm+Ro+IPMvkCfKmrp/zvtHM9WzjeY
/3Sm3eTe/d/yn9hxQFdYyw03B20+vkuKiiisian1jHXFGZ7/D5HLBjfss3oKOeGaOmsuFXTsEJsm
L4HBsQ8RcyoKU6Ll4GAVfhWfKZzvfM7ZRcMxXXEAy6Fjfc6TC5hOwS2umQ+f6I2qPTtihvtw5T+W
+HMJbR/F+TZTFTW1wvULqlNSUU/R82luZzXjirsNW+2Ezchps++pxOvjH/MbFfXa5htmOI2OIHor
4Vf33ERdiFa+OjrypxFdLB2VC5yWjGe9rw7sbgoXBAN7UacZDvg/d5KhUQq8TNIr9GtugCVsSeh/
tQSXvC5pbUnu1AG7hazpsFM/0zB4gAYmmmp94I740v5My/DhWnxNPlyOr3ebIxZP/Yo+X2z0f9dE
sBxfKuz/pHg8jnv6v2QwmWz3f8PBIPR/3wP2so8EuXZV2iRD1LVWbN40Pnp2IIl73oatYKpYZVb2
XyTn2FP5Wb6+sTmsOT6ItsmStcExJgrsgZSsixLW41dUXTNtKbDO4Txav0LsxWB7Bix86zoj6VWh
7PN0WZHCab01xaW55j6kCyHMpabYHjGzuKwkXhkL65/RnKCwF1qlsKcpz/cifLeeevufHBv1v7Wn
j8VxX/0nOLZV/5P+ONT/98Cxr2fAsphGa///R6+OD/3Qq1AkAQEBAQEBAQEBAQEBAQEBAQEBAQHP
EB8BzrrVBAAoAAA=

lunes, 13 de febrero de 2012

Addon Firefox

Tired of going through google every time I followed a result, I've made an add-on for firefox. It is very simple, adds some options to the contextual menu that allows you from getting the clean url in the clipboard to following the link in the same window, a new tab or a new window.

The usage of this add-on decreases a little bit the network usage as you access the url directly.

It avoids google knowing where you went.

This is the first link for a "hello world" search:

http://en.wikipedia.org/wiki/Hello_world_program

But if you ask the browser to "Copy Link Location" or click it, this is what you get:

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&sqi=2&ved=0CDcQFjAA&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHello_world_program&ei=cVQ5T5m5Oqfo0QHQub2hAg&usg=AFQjCNFFxBoE89z6dbsDCZwbcw9fSh-1TA

That is a trip to google where some statistics are gathered and then you are redirected to the correct link.


You can download from mozilla add-ons:

https://addons.mozilla.org/en-US/firefox/addon/nogoogle/


Chrome version: http://seguridad-agile.blogspot.com/2012/02/addon-chrome.html

Versión en español

Cansado de pasar por google cada vez que sigo un resultado, hice un addon para Firefox. Es muy simple, agrega unas opciones al menú contextual que permiten desde copiar el link limpio hasta seguirlo, tanto en el tab actual como en uno nuevo o en una nueva ventana.

Su uso disminuye un poquito el uso de la red al acceder directamente al sitio.


Tambien evita que google sepa a donde fuiste.

Este es el primer link de una búsqueda de "hello world"

http://en.wikipedia.org/wiki/Hello_world_program

Pero si copiás directamente la dirección o la seguís, esto es lo que obtenés:


http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&sqi=2&ved=0CDcQFjAA&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHello_world_program&ei=cVQ5T5m5Oqfo0QHQub2hAg&usg=AFQjCNFFxBoE89z6dbsDCZwbcw9fSh-1TA

Esto significa un viajecito a google, dejar algunas estadísticas y ser redirigido al link correcto.

Se puede bajar de  mozilla add-ons:

https://addons.mozilla.org/en-US/firefox/addon/nogoogle/


Versión Chrome: http://seguridad-agile.blogspot.com/2012/02/addon-chrome.html

viernes, 10 de febrero de 2012

TDSL continuacion

Habiamos quedado en una bonita implementación [1]. Bonita, veloz pero muy demandante.

leet(Word)->
  lists:foldl(
    fun (Elem, List) ->
    [ string:concat(X,E) || X <- List, E <-Elem ] end,
    hd(preleet(Word)), tl(preleet(Word) )). 



Con las siguientes palabras, comienza con un parpadeo, pasa a un segundo, cuatro segundos y continua con un thrashing  infernal que paraliza la máquina.

22> transform:leet("abcdefghijk").
ok
23> transform:leet("abcdefghijkl").
ok
24> transform:leet("abcdefghijklm").
ok
25> transform:printLeet("abcdefghijklmn").


Según comprendo, leet/1 está recorriendo por nivel [2], produciendo un crecimiento inaceptable del stack de llamadas. Lo correcto sería hacer preorder. Asi que tras un momento de fuerte concentración, gracias a haber dejado que el conocimiento decante y haber traducido la versión de php a ruby, olvidate de TDD, salió esto.

explode(Word) ->
  explode("","",preleet(Word)).

explode(Char,Buffer,[]) ->
  io:format("~s~n",[lists:reverse(Char ++Buffer)]);
explode(Char,Buffer,[H|T]) ->
  [explode(X,Char ++ Buffer, T) || X <- H].


Esto es bastante más lento con las palabras cortas, pero sigue funcionando con palabras largas. El problema es el siguiente:


transform:printExplode("abcdefghijklmn"). 45 segundos 105 MB

./generate.rb abcdefghijklmn: 2 segundos, poca memoria

./generate.php abcdefghijklmn: 2 segundos, poca memoria


Ya descarté lists:foldl y ahora sigue quitar la list comprehension y usar binary.

[1] http://seguridad-agile.blogspot.com/2012/01/tdsl-segunda-semana.html
[2] http://rosettacode.org/wiki/Tree_traversal