Hatena::Groupptech

ぷちてく RSSフィード

Archive
 
ProfileProfile

2012-03-27

URLの階層を上がる(芋掘り)ブックマークレットFork合戦の果てに待っていたすごい結末

02:00

どーもこんちわ。今まで見たブックマークレットの中で一番びっくりしたスゲーかっこいいスクリプト

マウスジェスチャ割り当てでいう ┐字↑← とか クランク ↑←↑ みたいなの。よく使う

on Hatena::Let

id:taizooo さんがはじめに上げたあと、id:saitamanodoruji さんが Fork。

その後お互いでフォーク合戦になってた時点でかなり面白かったんだけど・・

進化の過程

人力遺伝的アルゴリズムすごい!

はじめの一歩

taizooo さん1ターン目

/*
 * @title cd ..
 * @description up dir
 * @include http://*
 * @license MIT License
 */

a=location.pathname.substr(1).split('/');
a.pop();
location.pathname='/'+a.join('/');
http://let.hatelabo.jp/taizooo/let/gYC-ycnS_PX5RQ

a.pop() そうか!小気味よくてかっこいいなー

のFork

saitamanodoruji さん1ターン目

/*
 * @title cd ..
 * @description up dir
 * @include http://*
 * @license MIT License
 */

a=location.pathname.split('/');
a.pop();
location.pathname=a.join('/');
http://let.hatelabo.jp/saitamanodoruji/let/gYC-ycnvtMuLDg

短くなった おー

のFork

taizooo さん2ターン目

/*
 * @title cd ..
 * @description up dir
 * @include http://*
 * @license MIT License
 */

a=location.pathname.split('/');
(a.pop() == '') ? a.pop() : a;
location.pathname=a.join('/');
http://let.hatelabo.jp/taizooo/let/gYC-xcqeuNDrRQ

最上位対策かな、いや最初の*1/ で止まった対策か。このへんから脳内で追いつくのが大変になってきた。

なんせ二人のForkスピードが速いはやい*2

のFork

saitamanodoruji さん2ターン目

/*
 * @title cd ..
 * @description up dir
 * @include http://*
 * @license MIT License
 */

a=location.pathname.split('/');
if(a.pop()=='')a.pop();
location.pathname=a.join('/');
http://let.hatelabo.jp/saitamanodoruji/let/gYC-ycqi4YqwDw

if(a.pop()=='')a.pop(); で短くなったけどまだよくわかってない。

if(a.pop()=='') していくと location.origin で、 a.pop()するとさらに減る気がするんだけど、 [] になったらもう変わらないのかな?

のFork

taizooo さん3ターン目

/*
 * @title c..
 * @description up dir
 * @include http://*
 * @license MIT License
 */

if(location.search != '') {
  location.search = '';
} else if(location.hash !='') {
  location.hash = '';
} else {
  if(location.pathname != '/') {
    a=location.pathname.split('/');
    if(a[a.length-1]=='') a.pop();
    a.push('..');
    a.push('');
    location.pathname=a.join('/');
  } else {
    b = location.hostname.split('.');
    b.shift();
    location.hostname = b.join('.');
  }
}
http://let.hatelabo.jp/taizooo/let/gYC-ycqj_OyNKg

いっぱいキター クエリとかアンカーとか消すように。で a.push('..') ってのが出てきて 「えっ!?」 ってなった

のFork

id:Syoichi さん登場

/*
 * @title cd ..
 * @description up dir
 * @include http://*
 * @license MIT License
 */

// via https://twitter.com/#!/hinasssan/status/184281087986507776

location = '..';
http://let.hatelabo.jp/Syoichi/let/gYC-ycqn2pi5MA

eeeeeeeeeeeeeeeeee!!!!! え?え?え? うそ・・濡れた、っていうか漏らした。いやそこまではいかないけどすごい! 1lineになっちゃった・・

via

@ さんがひとこと

すごい・・すごいよこれ。こんなシェル../ みたいなことできちゃうなんて・・全然知らなかったあぁぁぁぁーーーー!

のFork

taizooo さん4ターン目

/*
 * @title cd ..
 * @description up dir
 * @include http://*
 * @license MIT License
 */

// via http://let.hatelabo.jp/taizooo/let/gYC-ycqj_OyNKg
// thx http://let.hatelabo.jp/Syoichi/let/gYC-ycqn2pi5MA

a=location.pathname.split('/');
if(a[a.length-1]=='') a.pop();
a.push('..');
a.push('');
location.pathname=a.join('/');
http://let.hatelabo.jp/taizooo/let/gYC-ycqrnt3zMg

で、こうなって落ち着いたみたい。ふわーすごかった・・

まとめ終わり

Togetterとか苦手だけど、アレみたいにHatena::Letまとめたらすごい面白いモノになった気がした。しあわせ。

taizooさんのエントリ

勝手にまとめてあらためて勝手に感動 & りすぺくと

Hatena::Let++!

*1:最後尾

*2:のろま的時間単位では光速に近い

taizoootaizooo2012/03/28 11:23全然わかっていなけど location.href=".." ってやると http server にそのままリクエストが飛んで、そっちの方で相対パスとして返事が返ってくるみたいです。<a href="..">hoge</a> をクリックするのと一緒みたいな

taizoootaizooo2012/03/28 11:33あと彼らと違ってオレは全然すごくなくてchromeのデベロッパーなんとかのconsoleにWebから拾ってきたコードを貼り付けてトライアンドエラーアンドエラーアンドエラーなかんじです。
それから彼ら、みんなreblogの世界の住人なので書き換えられたり書き換えたりは朝飯前なわけです。
reblog or die, fork or die みたいな :)

noromanbanoromanba2012/03/29 01:50id:taizooo さん、はじめまして。わーほんものだー

location.hrefに相対パス使えるの知らなかったのです・・わざわざありがとうございます。SOにまとめ的なのあったんで貼っておきます。
http://stackoverflow.com/questions/1655065/redirecting-to-a-relative-url-in-javascript

>reblog or die, fork or die
多分あのオサレなコップのことだと思いますが・・、!なるほど。あそこは単なるアートスフィアみたいに捉えてたんです。
でもrepo的に扱えばvia表示があるおかげで Fork of / Forks も追えるし、確かにコード片置くとシナジーがすごそうですね。
ちょっと目からウロコでした。ふぇー。

noromanbanoromanba2012/03/29 01:45あと、ちょっとしたモノでもいい気持ちになるのが大事だと思ってるので、taizoooさんの作ったものぼくは好きですよ。
「cssOnOff」とか愛用してます。あと「総務課の~」とか「誰かが~」とかクスっとするのも :)