スペースモラトリアムノカミサマ

日記+コメント付きブックマーク+他人にも役に立つかもしれない情報など。
(更新情報: RSS(ツッコミ付き) / RSS(ツッコミ抜き) / LIRS)

最近の TrackBack:
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|06|07|08|09|10|
2011|01|02|03|07|10|11|
2012|02|03|04|07|08|09|
2013|01|06|07|
2014|02|08|09|11|
2015|09|
2016|01|05|

2011/03/21 編集

_ [Web制作][システム運用] wget で取得した QUERY_STRING 付きページをオリジナルと同じ URI で表示させるには

wget --mirror で Web サイトをまとめて取得すると、QUERY_STRING がついている URI は ? が @ に置き換えられた形で保存される。

これを無理矢理元のサイトと同様に表示させたかったらどうすれば良いか。

mod_rewrite 使って URL 中の ? を内部で @ に書き換えて実ファイルにつなげてやればいいんでないの、と単純に考えると、

RewriteEngine on
RewriteRule (.*)\?(.*) $1@$2

…となるわけだが、実際にはこれではうまくいかない。

原因は RewriteRule に QUERY_STRING は渡らないため。

ならば、こうすれば良い。

RewriteEngine on
RewriteCond %{QUERY_STRING} (.+)
RewriteRule (.*) $1@%1?

RewriteCond で QUERY_STRING を先行してマッチさせておき、RewriteRule で後方参照して付け足す。

また、最後の ? によって QUERY_STRING を削除する。(これをやらないと書き換えが無限ループしてしまう)

なお、拡張子が激しく壊れるために適切な Content-Type が返されなくなり、IE 以外のブラウザでは HTML として解釈されずソースを表示してしまう場合があるので、

DefaultType text/html

も加えておいた方がよい。

…ということで、3月中に引き上げなければならなくなった (けどサーバ側プログラムの移行先がない) 動的生成ページが多数ある某サイトを無理矢理待避するやっつけ仕事が終わった。


2011/03/25 編集

_ [ソフトウェア][Firefox] Firefox 4.0 で使ってるアドオン・ユーザ CSS メモ

そろそろ対応版が出揃いつつあるので、Firefox 4.0 で使ってるアドオンやユーザ CSS を改めてまとめ直しておきます。

まず about:config で設定

extensions.checkCompatibility.4.0 : false
拡張機能のバージョンチェックを無効化
browser.tabs.tabMinWidth : 16
タブの最小幅を Firefox 1.5 並に減らす (←4.0では効かない)
browser.tabs.loadDivertedInBackground : true
外部アプリケーションから URL を渡された時にウィンドウをアクティブにしない
dom.popup_maximum : 100
livedoor Reader でピンを一気に開けない問題対策

基礎 UI 向上系アドオン

FireGestures
マウスジェスチャ
AutoPagerize
複数ページに分割されてるコンテンツを無理矢理1ページ化
Tab Overflow Scrollbar (Firefox 4.0 未対応だが使える)
タブをいっぱい開いた時にスクロールバーを出す
ツリー型タブ
タブをツリー化して折りたためるように
Make Link
ページタイトルと URL、リンク HTML 等をクリップボードにコピー
BarTab (Firefox 4.0 未対応だが使える)
再起動時にタブの読み込みを遅延させて大量のタブが一気に再読込されることを防ぐ
Resurrect Pages
開けなかったページを Internet Archive や Google キャッシュ等から探す

ボタン追加系アドオン

Clear Cache
キャッシュを消す
Undo Closed Tabs Button (Firefox 4.0 未対応だが使える)
閉じてしまったタブを元に戻す
Hatena Bookmark
はてブ
Video DownloadHelper
ようつべの FLV ダウンロードに

広告・Flash ブロック系アドオン

Adblock Plus
広告ブロック
Flashblock
俺が動いていいと言うまで Flash は動いちゃダメ

開発・検証系アドオン

DOM Inspector
DOM ツリーとか見せてくれる、Firefox 2.0 まで標準装備だったやつ
HttpFox
サーバとの HTTP の通信内容を見せてくれる
Firefox Throttle (Firefox 4.0 未対応)
帯域を絞って低帯域シミュレーション。IE 版もある。通信不安定気味で Vista 非対応な NEGiES より使える。 (1.1.6 は Firefox 4.0 で正常動作しない)
RefControl
Referer の送信をブロックしたり解除したり
Web Developer
いろいろ無効化してみたり、フォームの GET と POST を入れ替えてみたり。
Webアクセシビリティ・ツールボックス (Firefox 4.0 未対応)
ページがアクセシブルかどうかを検証するのに役立ついろいろな機能 (新しい Firefox に対応しなくなって久しい)
Firebug
デバッガ
YSlow
ボトルネック調査
Wappalyzer
そのページで使われてるフレームワーク表示

ユーザ JS

Greasemonkey
本体
Bright Focus (for buttons, links, and textboxes)
フォーカスしてるテキストエリアやボタンをハイライト
AutoPagerize
複数ページに分割されてるコンテンツを無理矢理1ページ化 (拡張版に移行)

MakeLink の設定

タイトルとURL
%text%
%url%
ハイパーリンク
<a href="%url%">%text%</a>
(HTMLエンティティを使用するにチェック)
引用
<blockquote cite="%url%" title="%title%">
%text%
</blockquote>
<p class="source">[<cite><a href="%url%" title="%title%より引用">%title%</a></cite>より引用]</p>
(HTMLエンティティを使用するにチェック)

userContent.css

/* 印刷時は明朝ベースで見出しだけゴシック */
@media print {
	* { font-family: "ヒラギノ明朝 Pro W3", "MS P明朝", serif; }
	h1, h2, h3, h4, h5, h6, th, dt {
		font-family: "ヒラギノ角ゴ Pro W6", "メイリオ", "MS Pゴシック", sans-serif;
	}
}
/* 別窓指定のリンクを見分けられるようにする */
[target="_blank"]:after {
	content: "[\5225\7a93]"; /* 別窓 */
	color: #FF0000;
	background-color: #FFFFFF;
	font-size: 90%;
}
/* PDF へのリンクを見分けられるようにする */
a[href$=".pdf"]:after {
	content: "[PDF]";
	color: #FF0000;
	background-color: #FFFFFF;
	font-size: 90%;
}
/* mailto スキームのリンクを見分けられるようにする */
a[href^="mailto:"]:after {
	content: "[Mail]";
	color: #FF0000;
	background-color: #FFFFFF;
	font-size: 90%;
}
/* javascript スキームのリンクを見分けられるようにする */
a[href^="javascript:"]:after {
	content: "[JS]";
	color: #FF0000;
	background-color: #FFFFFF;
	font-size: 90%;
}

2011/03/27 編集

_ [Twitter][Perl] Togetter にまとめられた内容を TSV 化する Perl スクリプト

Togetter にまとめられたツイートを Excel で加工したくなったが、Togetter 自身には CSV 等でエクスポートする機能はないようだったので、スクリプト書いた。

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
use LWP::UserAgent;
use HTML::TreeBuilder;
 
my $url = shift or die;
 
my $ua = new LWP::UserAgent;
$ua->env_proxy;
my $res = $ua->get($url) or die;
my $content = $res->decoded_content or die;
 
my $tree = new HTML::TreeBuilder;
$tree->parse($content) or die;
 
print join("\t", 'Date', 'User', 'Tweet'), "\n";
foreach my $item_tree ($tree->look_down('class' => 'list_item')) {
	my $tweet = $item_tree->look_down('class', 'tweet')->as_text;
	my $user = $item_tree->look_down('class', 'status')->look_down('_tag', 'a')->as_text;
	my $date = $item_tree->look_down('class', 'status')->look_down('_tag', 'span')->as_text;
	print join("\t", $date, $user, $tweet), "\n";
}

以上を togetter2tsv.pl として保存したうえ、

perl togetter2tsv.pl http://togetter.com/li/xxxxxx > result.txt

という感じで使う。