グリモンをエディタで開く最短の方法を知った

ステータスバーにいるグリモンの猿を右クリック→ユーザースクリプト名を右クリックでエディタが開くのを今知った。

uj ano a itam on Twitter: "ステータスバーにいるグリモンの猿を右クリック→ユーザースクリプト名を右クリックでエディタが開くのを今知った。"

いっつも普通に

  1. お猿のアイコン右クリック
  2. ユーザースクリプトの管理をクリック
  3. 対象のグリモンスクリプトを選択
  4. 編集ボタンクリック

ってやってた。すごく簡単に開ける様になった。id:saitamanodoruji(@saitamanodoruji)さん、RTしてくれたid:taizooo(@taizooo)さんありがとう!!

@hatenaquestionのtweetを人力検索・アンケート・いわしに分類するGreasemonkey

ニッチなGreasemonkeyを作っては一人悦に浸っているso_blueです、こんにちは!
今日もまた下らないグリモン作ったので、性懲りも無くupしてみます!


先日、はてな人力検索の新着質問をつぶやいてくれるtwitterbotの存在を知り、早速フォローしてみました。
人力検索はてな (@hatenaquestion) | Twitter
このbotをフォローすると、人力検索で質問がされるごとに

  • 質問内容
  • 質問ページへのリンク

をつぶやいてくれます。
PCさわってる時は、結構な頻度でtwitterのTLをチェックしてるので、人力検索で質問がされる度に知らせてもらえるのは非常に助かるんですが、その質問が人力検索なのかアンケートなのか、はたまたいわしなのかは、つぶやきだけではわからない、実際の質問ページにとばないと分からない*1のが難点です。あと、結構な頻度で質問が削除されてたりもするんですよね。質問ページにとんだはいいが、既に質問は削除されてた…なんて事が構あったりします。ちょっとウザいです。

話は変わって、自分は、はてなアクセス解析を利用してます。はてなアクセス解析有料オプションですので、このサービスを利用するにはお金、というかはてなポイントが必要なんですが、自分はこのポイントを人力検索でもらえるポイントで賄ってるんですね。とりわけお手軽にポイントがもらえる「アンケート」が自分の主戦場です。(;^ω^)

これ以上説明すると

ちょっと下衆くなりそう(;^ω^)なので、説明はこれくらいにしておいて、グリモンの効果について。
効果は↓のキャプチャ画像をご覧ください。

Before

After


人力検索なら「人」、アンケートなら「ア」、いわしなら「い」のマークが質問urlの後ろに付きます。また、補足情報として、割り振られるポイントや回答状況がマークの後ろにプラスされます。削除された質問にはマークが付きません。あと、上のキャプチャ画像だけではわからないのですが、字の色が質問の状態を表してて、白抜き→回答受付中、黒字→回答受付終了となります。

ソース

// ==UserScript==
// @name           hatenaquestionCategorizer
// @namespace      http://d.hatena.ne.jp/so_blue/
// @description    人力検索はてなのtwitter-bot【hartenaquestion】のtweetを「人力検索」「アンケート」「いわし」に分類します。
// @author         so_blue
// @version        0.1
// @include        http://twitter.com/*
// @include        https://twitter.com/*
// ==/UserScript==
(function() {

	GM_addStyle(<><![CDATA[
		span.question_status {
			display: inline-block;
			-moz-border-radius: 3px;
			padding: 2px;
			color: #fff;
		}
	]]></>);

	var xpath = '//li[contains(@class, "u-hatenaquestion")]//span[@class="entry-content"]/a[starts-with(@href, "http://q.hatena.ne.jp") and not(@lang="ja")]';

	var span = document.createElement('span');
	//span.style.fontWeight = 'bold';

	function getAnchors(doc) {
		var tweets = document.evaluate(xpath, doc, null, 7, null);
		if (!tweets) return;
		for (var i = 0, len = tweets.snapshotLength; i < len; i++) {
			var q = tweets.snapshotItem(i);
			q.lang = 'ja';
			GM_xmlhttpRequest({
				method: 'GET',
				url: q.href,
				onload: categorize(q)
			});
		}
	}

	function categorize(node) {
		return function(res) {
			var div = document.createElement('div');
			div.innerHTML = res.responseText;
			var img = document.evaluate('.//h1//img[@class="by"]', div, null, 9, null).singleNodeValue;
			if (!img) return;
			var s = img.src.split('-')[1].substring(0, 1);
			var wrapper = span.cloneNode(true);
			var elm = span.cloneNode(true);
			elm.className = 'question_status';
			wrapper.appendChild(elm);
			var q_stat = document.evaluate('.//div[@class="question-information"]//li[2]', div, null, 9, null).singleNodeValue
			if (/終了/.test(q_stat.textContent)) {
				elm.style.color = '#000';
			}
			switch (s) {
			case 'j':
				elm.style.backgroundColor = '#32CD32';
				elm.textContent = '人';
				var s = document.evaluate('.//div[@class="question-information"]//li[4]', div, null, 9, null).singleNodeValue.textContent;
				s = s.replace('回答ポイント:', '').replace('ポイント', 'pt');
				break;
			case 'e':
				elm.style.backgroundColor = '#ffa500';
				elm.textContent = 'ア';
				var s = document.evaluate('.//div[@class="question-information"]//li[3]', div, null, 9, null).singleNodeValue.textContent;
				s = s.replace('回答数:', '');
				break;
			default:
				elm.style.backgroundColor = '#4682B4';
				elm.textContent = 'い';
				var s = document.evaluate('.//div[@class="iwashi-header-top"]//span[@class="iwashi-status"]', div, null, 9, null).singleNodeValue.textContent;
				s = s.replace(' pt', 'pt');
				break;
			}
			var pt = span.cloneNode(true);
			pt.textContent = ' ' + s;
			wrapper.appendChild(pt);
			node.parentNode.insertBefore(wrapper, node.nextSibling);
			elm = pt = null;
		}
	}

	/*
	AutoPagerize対応
	via http://d.hatena.ne.jp/blooo/20091012/1255323254
	*/
	document.body.addEventListener('AutoPagerize_DOMNodeInserted', function(evt) {
		var doc = evt.target;
		getAnchors(doc);
	}, false);

	getAnchors(document);

})();

ソースが汚いですね...

宿題

  • listのページだと、他のscriptがエラーになってグリモンが動いてくれない。*2
  • AutoPagerize対応はしてるけど、twitter側の「新しいツイートがxx件あります」には対応出来てない。

という訳で

こんなのでよければどうぞ。
http://userscripts.org/scripts/show/69674

最後に

下衆くてどうもすみません(;^ω^)

*1:といっても、文面である程度は判断出来ると思いますが。

*2:うちだけ?

内視鏡検査の流れ

内視鏡、俗に言う胃カメラですね。自分が診てもらった病院は鼻から内視鏡を入れるタイプでした。

内視鏡検査の流れ

  1. ベッドに仰向けの体制で寝る。
  2. 両方の鼻の穴に麻酔のスプレーを2〜3回吹きかけられる。
  3. ジェリー状の何か*1を鼻に流し込まれる。結構むせる。
  4. 鼻の穴にシリコンチューブを挿入される。管が突っ込まれる感じに慣れるため?このままの状態で2〜3分待つ。
  5. さっきのより太いシリコンチューブを鼻の穴に挿入される。このままの状態で2〜3分待つ。
  6. 口に麻酔スプレーをかける。
  7. 横向きになる。いよいろ内視鏡が入れられる><
  8. 内視鏡がゆっくりと進んでいく。鼻腔の辺りは穴が狭いからか、壁面にあたって少し痛い。あと、えづいたりむせたりする。
  9. 唾がすごく出てくる。飲むとむせて苦しいので、飲み込まずに口から出してと言われる。言われた通り、唾やら鼻水やらの入り雑じった液体を口から垂れ流す。
  10. 内視鏡が食堂辺りまですすんでくると、えづいたりはだいぶ落ち着く。
  11. モニターを見ながら胃壁や十二指腸の状態を確認したり、写真を撮ったりする。この時胃を膨らませる必要がある様で、胃に空気を送り込まれる。ゲップが出そうになるけど堪えないといけない。
  12. 組織片を採取する道具*2内視鏡のチューブに通し、胃の組織片を採取する。ちなみに胃の内部には神経が通ってないので何も痛くない、というか採取時に胃壁が引っ張られてたけど、全く感覚がない。
  13. ゆっくり内視鏡を取り出して終わり。

もちろん病院によって多少違うだろうし、記憶違いで間違ってるとこもあるかもしれません。そん時はごめんなさい。

感想

案外大した事ないってのが一番の感想ですね。まぁ、鼻から入れるタイプだったからかもしれませんが、びびって内視鏡検査受けるのを思い留まってる方は、鼻からタイプなら、恐れずに受ける事をオススメします。口からのは結構辛そうなので、内視鏡検査を受けなければいけなくなった時には、事前に確認してもいいかもです。
あと、胃に空気を送り込まれたからか、検査後しばらくは屁が出まくりでした(;^ω^)
費用は¥10,000ほどかかった*3ので、お金は少し多めにもってきましょう。

ちなみに

自分が内視鏡検査を受ける羽目になったのは、十二指腸潰瘍の疑いがあったからなんですが、今日の検査でばっちり潰瘍が見つかりましたYO!!自分も案外デリケートなのやもしれませんNE!!
あと、胃潰瘍や十二指腸潰瘍の原因の一つのピロリ菌ですが、コイツもどうやらいらっしゃる様なので、除菌治療をする事になりそうです。


という訳で、内視鏡検査ってどんな感じなんだろう?痛いの?辛いの?ってな方へお届けしてみました。参考になれば幸いです。

*1:鼻腔部の内視鏡の滑りをよくする為と、壁面や粘膜を保護したりする成分が含まれているのではと想像。

*2:ちゃんとした名前があるんだろうけどわからない

*3:薬代も含めてですが、ちょっと高いですねー><

refererを送らないとbit.lyに sign in 出来ない


原因判明 もう寝るかと思ってた時、ふと、そういえばFirefoxreferer送らない様にしてたな…という事に気付き、referer送る様にしてから sign in してみたところ、コレがビンゴ!! 初回だけreferer送って sign in 、以降は送らなくても sign in 出来る様です。 うーん、よかったよかった( ^ω^)

エントリ名を修正しました。
Firefoxだとbit.lyに sign in 出来ない



twitterのTLにbit.lyのトラッキングページへのリンクを追加するGreasemonkey - SO NOTE そうのて (;^ω^)のエントリについでに載せようと思ってたんですが、忘れちゃったので別エントリで。

タイトルの通りで、Firefoxだと

な感じでbit.lyにログイン出来ません。当然、Username、Passwordは間違ってません。
cookie消したりもしたけど駄目。ググっても参考になりそうなページは見つからない。
chromeでは sign in 出来るので、urlの短縮はchromeでやってんですが、やっぱり不便。


原因わかる方いませんか?(;^ω^)

twitterのTLにbit.lyのトラッキングページへのリンクを追加するGreasemonkey

♪このグリースモンキーが〜
ないとき〜

20100213013803

ヒユーーーーー(寒々しい風の音)
あるとき〜

20100213013759
ワッハッハッハ(一家団欒の笑い声)


551の蓬莱調でお届けしてみた訳ですが、このグリモンをインストールすると、bit.lyやj.mpの短縮urlのすぐ後ろに、その短縮urlのトラッキングページへのリンクをプラスします。

  • 短縮されてるurlがどんなページなのかを事前に確認できる*1
  • ラッキングページに簡単にジャンプ出来る

といった効果が臨めます。


bit.lyのトラッキングページの楽しみ方は、
短縮URLサービスbit.ly、j.mpのアカウントを取って自分の影響力を測る - Cherenkovの暗中模索にっき
をご覧下さい。


という訳で、よければどうぞ。
http://userscripts.org/scripts/show/68773

ちょっと更新したので、現在は↓のソースと異なってます。
新しいツイートがxx件あります にも対応させました。

ソース

// ==UserScript==
// @name           addLink_bitlyInfo
// @namespace      http://d.hatena.ne.jp/so_blue/
// @author         so_blue
// @version        0.1
// @description    bit.ly,j.mpのトラッキングページへのリンクをプラスします。
// @include        http://twitter.com/*
// @include        https://twitter.com/*
// ==/UserScript==
(function(){

	function addLink(doc) {

		var a = document.createElement('A')
		a.textContent = '+';
		a.target = '_blank';

		var xpath = './/span[@class="entry-content"]/a[contains(@href, "bit.ly") or contains(@href, "j.mp")]';
		var bits = document.evaluate(xpath, doc, null, 7, null);
		
		for (var i = 0, len = bits.snapshotLength; i < len; i++) {
			var elm = a.cloneNode(true);
			elm.href = bits.snapshotItem(i).href + '+';
			bits.snapshotItem(i).parentNode.insertBefore(elm, bits.snapshotItem(i).nextSibling);
		}

		//後始末?
		a = null;

	}

	/*
	AutoPagerize対応
	via http://d.hatena.ne.jp/blooo/20091012/1255323254
	*/
	document.body.addEventListener('AutoPagerize_DOMNodeInserted', function(evt) {
		var doc = evt.target;
		addLink(doc);
	}, false);

	addLink(document);

})();

所感

  • 「新しいツイートがxx件あります」で追加されたつぶやきには適用されないので、適用される様にしないといけない。
  • 必要ないのかもしれないけど、とりあえずcloneNode用の雛形を最後にnullでクリア*2しておいた。
  • ラッキングページ楽しいです。

*1:ちょっと野暮かも…(;^ω^)

*2:でないと宙ぶらりんのまま残りますよね?

javascriptのテーブルソートライブラリ「Table Sorter」の設置方法メモ

導入が超簡単なテーブルソートライブラリ
Neil Fraser: Software: Table Sorter
を使ってみた。とっくに色んなサイトで紹介されてる様に便利で設置方法も超簡単。ただ、微妙に説明が足りてない*1気がしなくもないので、自分用メモも兼ねつつ設置方法をupしてみる。

手順

1.ライブラリをDL

ここからゲット。

2.読み込ませる

本家サイトでは

Download tablesort.js (8KB), then add this line anywhere in the body (not the head) of your page:

Neil Fraser: Software: Table Sorter

とあって、おそらく、「head要素内ではなくbody要素内にscript要素を置け」って書いてるんだと思うが、head要素に置いても問題無く動いた。あと、今更language属性もどうかと思ったので、普通に

<script type="text/javascript" src="tablesort.js"></script>

としたけどもちろん問題無し。

3.列見出しにclass属性を設定する

thead要素内のth要素もしくはtd要素に対して、

  • class="case"
    • アルファベット順でかつ大文字小文字もみる(大文字が優先される)。日本語でもひらがなやカタカナなら問題無く並べ替えられる(多分)。
  • class="nocase"
    • 単なるアルファベット順、大文字小文字はみない。日本語でもひらがなやカタカナなら問題無く並べ替えられる(多分)。
  • class="num"
    • 数値として並べ替える。

のいずれかのclass属性を、データの内容に応じて設定してやる。漢字等で並び替えようがない列には設定しなければok。

4.並べ替え状態を表す画像について

並べ替えの状態(昇順、降順)を表す画像(一番下はブランク画像)が提供されてるけど、

  • ↑
  • ↓

この程度なら、画像無しでも自動的に特殊文字

  • &uarr;(↑)(降順)
  • &darr;(↓)(昇順)

が見出し横に表示されるので、別に使わなくてもいいかなと。むしろ、自分は、ライブラリ中の

// Default text values for the arrows.  Override these with custom image tags.
TableSort.arrowNone = ' &nbsp;';
TableSort.arrowUp   = ' &uarr;';
TableSort.arrowDown = ' &darr;';

の部分を

// Default text values for the arrows.  Override these with custom image tags.
TableSort.arrowNone = ' &nbsp;';
TableSort.arrowUp   = ' ▲';
TableSort.arrowDown = ' ▼';

に変えた。別の画像を使いたければ

// Default text values for the arrows.  Override these with custom image tags.
TableSort.arrowNone = ' &nbsp;';
TableSort.arrowUp   = ' <img src="別の上向き矢印画像のurl" alt="&uarr;">';
TableSort.arrowDown = ' <img src="別の下向き矢印画像のurl" alt="&darr;">';

みたく、適宜、imgタグの文字列に修正すればok。
これだけでtable要素がソート出来る様になる。うーん、ありがたい。

5.サンプル

な訳でサンプル
生年月日の列が/で区切られてて数値として認識されないからか、正しく並べ替えられないのはご愛嬌。
気が向けば、この辺もちゃんと並び替えられる様にしてみよう…かな…(;^ω^)

*1:紹介後に導入方法に変更が入ったとかかもしんないけど

ブラマヨ小杉とミサイルマン西代

久々の更新。前回のエントリーが2009/08/28なので、実に4ヶ月半も放置してたんですね…
放置してた理由ですが、一旦書かない様になると、なんでか書くのが恥ずかしく*1なり、ズルズルと今に至る…って感じで、特に深い理由などありません。
あー、今更ではありますが、明けましておめでとうございます。今年もよろしくお願いします。

という訳でタイトルの件


それぞれのデビュー当初の頃。二人して今では激太り。あとは西代の頭髪がもう少し寂しくなれば完璧じゃないでしょうか。

via

[共通点] - Cherenkovの暗中模索日記
http://d.hatena.ne.jp/Cherenkov/searchdiary?word=%2a%5b%b6%a6%c4%cc%c5%c0%5d


久々のエントリーなもんで、リハビリがてらゆるい感じでお届け。はてな記法もすっかり忘れてんじゃないかって思ってましたが、案外憶えてました。
こんな調子なんで次のエントリーもいつになるやら怪しいですが、生温かい目で見守ってやって下さいまし。

*1:なんだそれ