VimM#2行ったら質問してみたい質問リスト

まだ行けるかどうか分からないけど、その場で質問を考えると、さっくり忘れそうなのでVimで疑問なことリストを作っとく。

  • インサートモードでの移動みんなどうしてるの?矢印?

Ctrl-hはBS代わりに使うよね?

  • vimでshellを表示するにはどうするの?
  • 3wとか、10jとか数字との組み合わせがうまく使いこなせないんだけど、コツとかあるの?

ただの鍛錬不足?

  • 折りたたみが使いこなせない!


質問というか、使いこなせないリストになってるけど気にしない(・3・)
(思いつき次第更新)

いまさらだけど自分用mixiグリモンをさらしてみる

ちょっと前にMixiのデザインが変わってから、自分には必要ない要素がやたら多くなってしまったので
試しにmixiの表示をすっきりさせるGreasemonkeyを書いてみた。


機能は

  • ヘッダのダイエット
  • 運営からのメッセージ非表示(自分宛のメッセージ・コメント等があるときは表示)
  • フッタのカット
  • 右脇の色々を全部カット
  • 最新情報欄ダイエット(最新日記、コメント履歴、コミュニティ最新書き込み以外カット)


マイミクシィ最新アルバムとか、マイミクシィ最新ムービーとか(自分は)使わないようなのは全部外したので
自分は見てるよ!という方は、対応している

 mixiupdate.removeChild(mixinewvideo)

コメントアウトしたりとかしてください。


// ==UserScript==
// @name           mixi_diet
// @namespace      http://d.hatena.ne.jp/Pnnc205j/
// @include        http://mixi.jp/*
// ==/UserScript==


(function() {
	//ヘッダのダイエット
	var mixihead = document.getElementById('headerArea');
	var mixilogo = document.getElementById('pagetop');
	var mixiadBanner = mixihead.getElementsByTagName('P')[0];
	mixihead.removeChild(mixilogo);
	mixihead.removeChild(mixiadBanner);

	var mixicontentsTop = document.getElementById('contentsTop');

	//サーチバーを消す
	var mixisearchform = mixicontentsTop.getElementsByTagName('DIV')[0];
	mixicontentsTop.removeChild(mixisearchform);
		
	//運営者からのおしらせ
	var mixiinform = mixicontentsTop.getElementsByTagName('DIV')[0];
	var miximessage = mixiinform.getElementsByTagName('DIV')[0].getElementsByTagName('UL')[0];
	if(miximessage.getElementsByTagName('LI').length == 3){//メッセージが3つならメッセージ欄ごと消す
		mixicontentsTop.removeChild(mixiinform);
	}else{//メッセージの4つ目以降だけ表示
		miximessage.removeChild(miximessage.getElementsByTagName('LI')[0])
		miximessage.removeChild(miximessage.getElementsByTagName('LI')[0])
		miximessage.removeChild(miximessage.getElementsByTagName('LI')[0])
	}

	//プレミアムの案内を消す
	var mixiprem = document.getElementById('myProfile').getElementsByTagName('P')[0]
	mixiprem.parentNode.removeChild(mixiprem)

	var mixibody = document.getElementById('bodyContents');
	var mixiupdate = document.getElementById('mymixiUpdate');

	//携帯から最新情報を〜 を消す
	var mixicheckmobile = mixiupdate.getElementsByTagName('P')[0]
	mixicheckmobile.parentNode.removeChild(mixicheckmobile);

	//ビデオ、アルバム、プレイリストを削除
	var mixinewvideo = document.getElementById('newVideo');
	var mixinewalubum = document.getElementById('newAlbum');
	var mixinewnewplay = document.getElementById('newPlaylist');
	mixiupdate.removeChild(mixinewvideo)
	mixiupdate.removeChild(mixinewalubum)
	mixiupdate.removeChild(mixinewnewplay)

	//サイドをまとめて削除
	var mixibodysub = document.getElementById('bodySub');
	mixibodysub.parentNode.removeChild(mixibodysub)

	//フッターを削除
	var mixifootter = document.getElementById('footerArea');
	mixifootter.parentNode.removeChild(mixifootter)

})();

javascriptは他のグリモンのスクリプトを見て覚えただけなので、
これはねーよwwwという方は是非添削お願いします。

ブックマーク禁止のページをブックマークする方法(続き

というわけでネタばらし。

次に「じゃあ、302 redirectはどうだ?」と考えました。試してみると、見事に成功しました!ブックマークされるのはリダイレクトされる先のURLになりました。

ということで、実験ページをはてなでブクマしてみてください。 Webブラウザで閲覧できるけど、はてなからブックマークが出来ないページになっています。

http://www.geekpage.jp/blog/?id=2007/11/22

当然といえば当然だけど、実験ページのようにリダイレクトされてしまうページをブクマするためには、
実験ページからほかのページにリダイレクトしないようにする必要があります。


ここでちょっとリダイレクトについて考えてみると、
リダイレクトは「君の探してる○○はもうあっちに行ってしまったよ」というサーバーのメッセージなわけで、
信じてリダイレクトを辿ったからといって、必ずそこに期待するページがあるとは限りません。
いつまでたっても城にたどり着けないカフカの「城」のような状況もありえるわけです。

つまり、リダイレクトが延々と続いてしまったら、はてなはどうしても途中で処理を打ち切る必要があります。


それでは、はてながリダイレクトにリダイレクトを重ねたときの挙動を調べてみましょう。

http://**/test_1.phpの中身を

<?php
header("HTTP/1.0 302 redirect");
header("Location: http://**/test_2.php");
?>
test_1.phpを開くとtest_2.phpにリダイレクトされます


として、これがtest_1.phpからtest_10.phpまであるとします。
こうすると、アクセスが来たらtest_1.phpからtest_10.phpまで順番にたらい回しされるわけですね。

test_1 > test_2 > test_3 > test_4 > test_5 > test_6 > test_7 > test_8 > test_9 > test_10


さて、test_1.phpをブクマしてみたところ、実際にブクマされたのはtest_8.phpでした。
もちろん、test_8.phpもtest_9.phpへリダイレクトされるようにはなっています。


ということはつまり、6回のリダイレクトで疲れたはてなが7回目のリダイレクトではあきらめてそのページをブクマしてくれることがこれで分かります。


これを応用してtest_7.phpのリダイレクト先を元の実験ページに指定してあげると、リダイレクトでこれ以上飛ばされることなくブクマできます。

test_1 > test_2 > test_3 > test_4 > test_5 > test_6 > test_7 > 実験ページ > geekなぺーじtop


あと、一度誰かがブックマークしたページでは、そのまま普通にブックマークできるようです。
誰かにブックマークされるたびに、はてなが同じページの内容を何度も取りにいくというのは考えにくいので、
内容を見ない=リダイレクトを追うこともしないのではないかと。


それから、ほかに応用出来そうな所を探してみたけど、about:blankとかftp://~~とかは全部駄目でした。残念。

ブックマーク禁止のページをブックマークする方法

geekなぺーじさんのエントリに、はてブを禁止する方法がのってます。

次に「じゃあ、302 redirectはどうだ?」と考えました。試してみると、見事に成功しました!ブックマークされるのはリダイレクトされる先のURLになりました。

ということで、実験ページはてなでブクマしてみてください。 Webブラウザで閲覧できるけど、はてなからブックマークが出来ないページになっています。

はてなブックマークを禁止する方法:Geekなぺーじ

今は普通にブクマできてしまうので、代わりにこっちの
実験ページ
b.hatena.ne.jp/entry

はてなでブクマしてみてください。(同じページで最後に?を付けて表記上のアドレスをちょっと変えただけで、表示されるページは全く同じです)



実際、この実験ページはブックマークしようとすると、http://www.geekpage.jp/にリダイレクトされてしまってブクマできません。
ではどうやってブクマしたらいいのでしょうか。


ちょっと考えてみてください。
ヒントは、「もしブクマ先のリダイレクト先がループしていたら、はてなは無限ループするのか?」ってこと。*1










正解

不正にサーバーに侵入>リダイレクトしないようにページを改変>ブックマークできる!不思議!!>ページを元に戻す


ごめんなさい。嘘です。
続きはまた明日までひっぱります。


続き

*1:ブクマ先 > リダイレクト先1 > リダイレクト先2 > リダイレクト先1 >...