TransFreeBSDの日記 このページをアンテナに追加 RSSフィード

2008-05-03

はてなブックマークの常連サイト はてなブックマークの常連サイト - TransFreeBSDの日記 を含むブックマーク

はてブでよく見かけるサイトをまとめてみた。ふとした思い付きなので、デザインはパクリの手抜き。

http://typer.sakura.ne.jp/famous.html

やっぱりスクリーンショットが付くと見栄えが良いね。

ベースは http://www.dan.co.jp/~dankogai/ldr-hbc/ で、はてブからタグなどを取ってきた。

データ的には穴があると思うので、日々の注目エントリなどから情報を追加しようと思ったけれど、サイトトップの判断が意外にめんどい。ページに <link rel="top" ...> とかあれば良いけれど、そういうサイトは少ない。次の策はatomとかrssから拾う方法なのだが、こっちは複数あったりする。最終的には例外処理で誤魔化した部分も。

トラックバック - http://freebsd.g.hatena.ne.jp/TransFreeBSD/20080503

2008-02-21

[][] はてなハイクで選択したキーワードやユーザだけ表示する  はてなハイクで選択したキーワードやユーザだけ表示する - TransFreeBSDの日記 を含むブックマーク

この前の改良版。コードを整理して次ページ読み込み時に絞り込みを反映するようにした。

  • キーワードやユーザアイコンをクリックするとページ遷移せずに、そのキーワードやユーザのエントリだけの表示に絞り込みます。
  • 同じキーワードやユーザアイコンをもう一度クリックすると、実際にそのキーワードやユーザのページに行きます。
  • リンクじゃないところをクリックで絞り込みを解除します。
// ==UserScript==
// @name           Entry selector
// @namespace      http://h.hatena.ne.jp/TransFreeBSD/
// @include        http://h.hatena.ne.jp/*
// ==/UserScript==
(function(){
function entry_selector(e) {
	var context = "";
	var word = document.evaluate("//div[@class='input']//input[@name='word']", document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;
	var className = e.target.parentNode.parentNode.className;
	if (className == "list-image") {
		context = "//img[@class='profile-image']/..[not(@href='"+e.target.parentNode.pathname+"')]/../..[@class='entry'][not(div[@class='list-body']/div[@class='input'])]";
		word.value = "id:"+e.target.title;
	} else if (className == "list-keyword" || className == "list-body") {
		context = "//a[not(@href='"+e.target.pathname+"')]/..[@class='title']/../..[@class='entry']";
		word.value = e.target.textContent;
	}
	if (entry_selector.context != context) {
		if (context) {
			if (e.cancelable) e.preventDefault();
		} else {
			if (document.defaultView.getComputedStyle(e.target, null).getPropertyValue("cursor") == "pointer") return;
			if (e.target.form) return;
		}
		if (entry_selector.context) {
			var entry = document.evaluate("//div[@class='entry']", document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
			for (var i=0; i<entry.snapshotLength; i++) {
				entry.snapshotItem(i).style.display = "block";
			}
		}
		entry_selector.context = context;
	}
	if (!entry_selector.context) return;
	var entry = document.evaluate(entry_selector.context, document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
	for (var i=0; i<entry.snapshotLength; i++) {
		entry.snapshotItem(i).style.display = "none";
	}
}
unsafeWindow.Hatena.Haiku.Pager.addEventListener("loadedEntries", function(){
	if (!entry_selector.context) return;
	var entry = document.evaluate(entry_selector.context, document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
	for (var i=0; i<entry.snapshotLength; i++) {
		entry.snapshotItem(i).style.display ="none";
	}
}, false);
entry_selector.context = "";
document.getElementById("container").addEventListener("click", entry_selector, false);
})();
トラックバック - http://freebsd.g.hatena.ne.jp/TransFreeBSD/20080221

2008-01-05

[]Compiz Fusion Compiz Fusion - TransFreeBSDの日記 を含むブックマーク

グラフィックボードを買ったのはこれを試したかった、といのが本当の所だったりする。しかし、ノーマルのvesaドライバでも結構早くなってる気がする。HDD換えてからほとんど使っていないので、気のせいかも知れないが。

さて、Compiz Fusionを使う手順は至って簡単でスムーズに出来た。portsが揃ってるのと、普段の環境がGNOMEなのが大きい様だ。GNOME環境で良いグラフィクスボードをお持ちの方は是非お試しあれ。

手順

  1. ボードを取り付ける
  2. x11/nvidia-driverをインストールする
    • お好みでx11/nvidia-settingsをインストールする
  3. kldload nvidiaする
    • loader.confに「nvidia_load="YES"」と書いて再起動時にも有効にしておく
  4. /etc/X11/xorg.confを編集する
    • 下記Deviceエントリを加える
    • ScreenセクションのDevidceを先ほどのIdentifierである「Videocard2」に変える
    • Load "dri"かLoad "GLCore"があればそれぞれ消す
    • Load "glx"がなければそれを加える
  5. ログアウトする
    • gdmがXを再起動してnvidiaドライバが有効になる
  6. x11-wm/compiz-fusionをインストールする
  7. システム→設定→CompizConfig Settings Manager (CCSM)を起動し、Preferences(左下)をクリックしてProfileのReset to defaultsボタンをクリック
  8. Effectsカテゴリのウィンドウ装飾をクリック→コマンドに「emerald」を入力
  9. ターミナル等で「compiz --replace gconf &」として起動

私の環境ではCCSMに若干不具合がるようで、何故かちょっといじるとDbusのチェックが外れており、その状態でcompizを動かすとウィンドウ装飾が動かない。なので、毎回チェックをしてからCCSM終了している。


xorg.confに加えるエントリ

Section "Device"
    Identifier  "Videocard2"
    Driver      "nvidia"
    VendorName  "ASUSTek Compute"
    BoardName   "EN8400GS"
EndSection

参考

[]ルートファイルシステムを壊すまで ルートファイルシステムを壊すまで - TransFreeBSDの日記 を含むブックマーク

去年末からのお話。完全に壊したわけじゃないけど、いくつか重要なファイルを失った。でも、ルートだけで良かった。

手順

  1. 新しいHDD(SATA)を装着し、ddでコピーする
  2. 中身を確認せずにfstabを書き換える
  3. しかも何故か元のディスクのfstabを書き換える
  4. コピーに失敗していたのでブートできない
  5. しかたないのでFreeBSDのディスクを探すと5.1しかなかった
  6. fixedを選択するがmountがなくてマウントする方法がわからない
  7. customからdisklabelでnewfsなしで「/」を設定し、インストール物をどれもチェックせずに実行する
  8. どうやらuserかminimumが選択されているとみなされ次々と上書きされ「/」が溢れる
  9. もちろんカーネルも/etc以下もorz
  10. やる気をなくす。ふてる。バタバタする。大晦日を迎える。
  11. でもfstabが書き替わってちょっと前進
  12. loader.confに上書きされなかった6のカーネルモジュールがあってpanicする
    1. 5.1のディスクで起動
    2. /をnewfsなしで設定
    3. mediaで既存のファイルシステムを選択し適当に入力
    4. /がマウントされるがインストールは失敗
      • ただし、passwd、group、fstabなどいくつかは上書きされる
    5. mvが使えるようになる
    6. とりあえずloader.confをmv
  13. シングルユーザモードでは動くようになる
  14. /usr/objに前回makeworldしたバイナリがあったはず
    1. /usrをマウントしてなくて良かった
    2. /usrをマウントすると5.1のカーネルなので/usr/bin/makeは動かず
    3. /usrを/mntにマウントし、/mnt/obj/usrを/mnt/obj/mntにmvしてinstallkernelする
    4. 再起動する
  15. 6.1のカーネルが動く
    1. /usr/objを元に戻す
    2. installworldする
    3. mergemasterする
  16. 書き替わっているファイルがまだある
    1. loader.rcは手動で更新しないと/boot/modulesを読まくなる
    2. 退避していたloader.confを元に戻す
    3. /var/log/mount.todayを参考にfstabを修正する
    4. /var/backupsからaliases、group、master.passwdを戻す
      1. 本当に/だけで助かった
      2. vipwしてspwd.db、pwd.db、passwdの更新、/etc/makeでmake aliasesしてaliases.dbの更新を忘れない
    5. rc.confは無事
    6. その他*.confは記憶で直す
    7. もしくはあきらめる
  17. 正月を迎える :-)

反省点

  • 不用意にddを使わない、使ったら中身くらい確認する、せめてfsckくらいはかける
  • 不用意にfstabの/のエントリをいじらない、編集はよく確認して、落ち着いて
  • バックアップは大事、特にディスク操作や大きな作業の前には取っておく
  • 1CDブートのディスクやせめてメジャーバージョンの合ったインストールディスクは持っておく
  • 失敗しても焦らない、なれない事はしない、危ない橋は渡らない、落ち着いてプランを立てる

結局、ディスクコピーを失敗した原因だけれど、チップセット*1SATAコントローラ*2のドライバが怪しいのか、オーバークロックのためなのか、エラー等は何もでないけれど、アクセスなのか負荷なのか、うまく読み書き出来なくなる事があり、挙げ句にはfsck中にリセットがかかったりする。

しかし、運よくというか、こっちの方が性能がよいのだけれど、<JMicron JMB363 SATA300 controller>というSATA RAIDコントローラなる物がオンボードであったりして、こっちにつけると何事もなく滞りなく移行が済んだ。

でもって快適に。ディスクもやはり重要だ。あとバックアップも。

年末年始散財 年末年始散財 - TransFreeBSDの日記 を含むブックマーク

日立GST Deskstar P7K500(250GB/SATA3G/7200rpm/8MB) HDP725025GLA380

日立GST Deskstar P7K500(250GB/SATA3G/7200rpm/8MB) HDP725025GLA380

ASUSTek グラフィックボード PCI-E EN8400GS/HTP/256M EN8400GS/HTP/256M

ASUSTek グラフィックボード PCI-E EN8400GS/HTP/256M EN8400GS/HTP/256M

ディスクは年末、ボードは年始に買った。これで弱かったHDDとグラフィクスを強化して快適に。

しかし、HDDにはとんだ罠があったわけで……

*1VIA P4M890とVIA VT8237A

*2VIA 8237S SATA150 controllerと認識

ktkt2008/02/23 16:02私もCCSMで設定変更するとemeraldが動かなくなることに悩まされていて、Dbusのチェックで解決しました。ありがとうございました。

通りすがり通りすがり2008/05/09 10:59同様のトラブルに悩まされていた者ですが、VT8237Aは内蔵SATAポートに負荷を与え続けると熱暴走しやすいようです。
ヒートシンクを買ってきて貼り付けたところ、ピタリとおさまりました。

トラックバック - http://freebsd.g.hatena.ne.jp/TransFreeBSD/20080105

2007-12-24

[][] はてなハイクで話題になっているかチェックする  はてなハイクで話題になっているかチェックする - TransFreeBSDの日記 を含むブックマーク

はてなハイクではタイトルにURLを入れるとそれについて語れるんだけれど、検索とかにも現れないからほとんど使われていない気がする*1 *2

なので、実用性は低いかも知れないが、現在のページがはてなハイクで言及されているかチェックします。

何かエントリがある場合は左下の「HH」のリンクが反転します。リンクはハイクのページになってます。

// ==UserScript==
// @name           Hatena Haiku checker
// @namespace      http://h.hatena.ne.jp/TransFreeBSD/
// @include        http://*
// ==/UserScript==
(function(){GM_xmlhttpRequest({
	method: "GET",
	url: "http://h.hatena.ne.jp/http/"+location.href.replace(/http:/,""),
	onload: function(result) {
		exists = result.responseText.match(/class="entry"/g).length > 1;
		// copy from SBM Comments Viewer http://white.s151.xrea.com/wiki/index.php?script/SBMCommentsViewer
		var css = [
			"left:0px;",
			"bottom:0px;",
			"text-align:left;",
			"position:fixed;",
			"overflow:auto;",
			"z-index:100;",
			"background-image:none;",
			"background-color:"+(exists?"black":"white")+";",
			"opacity:"+(exists?"0.90":"0.50")+";",
			"font-size:100%;",
			"font-weight:"+(exists?"bold":"normal")+";",
			"color:"+(exists?"white":"#999999")+";",
			"padding-left:2px;",
			"padding-right:2px;",
			"border-top:1px solid #666666;",
			"border-right:1px solid #666666;",
			"display:block;"
			].join("");
		var box = document.createElement("div");
		box.setAttribute('style', css);
		box.innerHTML = '<a href="http://h.hatena.ne.jp/http/'+location.href.replace(/http:/,"")+'" target="_blank">HH</a>';
		document.body.appendChild(box);
	}
});})();
トラックバック - http://freebsd.g.hatena.ne.jp/TransFreeBSD/20071224

2007-12-23

[][] はてなハイクで選択したキーワードやユーザだけ表示する  はてなハイクで選択したキーワードやユーザだけ表示する - TransFreeBSDの日記 を含むブックマーク

さらなる改良版があります。


この前の改良版。やっつけぽいのは気のせい、かもしれない。

キーワードやユーザアイコンをクリックすると、そのキーワードやユーザのエントリだけの表示に絞り込みます。解除はリンクじゃないところをクリック。おなじキーワードやユーザアイコンをもう一度クリックするとリンクにジャンプします。

// ==UserScript==
// @name           Entry selector
// @namespace      http://h.hatena.ne.jp/TransFreeBSD/
// @include        http://h.hatena.ne.jp/*
// ==/UserScript==
(function(){
function entry_selector(e) {
	var context = "";
	var word = document.evaluate("//div[@class='input']//input[@name='word']", document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;
	if (entry_selector.selecting) {
		if (e.target.form) return;
		context = "//div[@class='entry']";
	} else if (e.target.parentNode.parentNode.parentNode.className == "list-image") {
		context = "//img[@class='profile-image']/..[not(@href='"+e.target.parentNode.pathname+"')]/../..[@class='entry'][not(div[@class='list-body']/div[@class='input'])]";
		word.value = "id:"+e.target.title;
	} else if (e.target.parentNode.parentNode.className == "list-image") {
		context = "//img[@class='profile-image']/..[not(@href='"+e.target.parentNode.pathname+"')]/../..[@class='entry'][not(div[@class='list-body']/div[@class='input'])]";
		word.value = "id:"+e.target.title;
	} else if (e.target.parentNode.className == "list-image") {
		context = "//img[@class='profile-image']/..[not(@href='"+e.target.pathname+"')]/../..[@class='entry'][not(div[@class='list-body']/div[@class='input'])]";
		word.value = "id:"+e.target.firstChild.title;
	} else if (e.target.parentNode.parentNode.className == "list-keyword") {
		context = "//a[not(@href='"+e.target.pathname+"')]/..[@class='title']/../..[@class='entry']";
		word.value = e.target.textContent;
	} else if (e.target.parentNode.className == "title") {
		context = "//a[not(@href='"+e.target.pathname+"')]/..[@class='title']/../..[@class='entry']";
		word.value = e.target.textContent;
	} else {
		entry_selector.context = "";
		return;
	}
	var entry = document.evaluate(context, document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
	for (var i=0; i<entry.snapshotLength; i++) {
		entry.snapshotItem(i).style.display = entry_selector.selecting ? "block" : "none";
	}
	entry_selector.selecting = !entry_selector.selecting;
	if (!entry_selector.selecting)
		entry_selector(e);
	else if (entry_selector.context != context) {
		entry_selector.context = context;
		if (e.cancelable) e.preventDefault();
	}
}
entry_selector.selecting = false;
entry_selector.context = "";
document.getElementById("container").addEventListener("click", entry_selector, false);
})();
トラックバック - http://freebsd.g.hatena.ne.jp/TransFreeBSD/20071223