Hatena::ブログ(Diary)

Higé au lait Twitter

 | 

2010年10月16日

文字列から曜日を返す

function getDay(s) {
    return ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][new Date(Date.UTC.apply(this,s.match(/(\d{4})?[^\d]*(\d{1,2})[^\d]*(\d{1,2})/).slice(1).map(function(e,i){switch(i){case 0:return e?e:(new Date()).getFullYear();case 1:return e-1;default:return e}}))).getDay()];
}

/*
getDay("2010/10/15") // Fri
getDay("2010年/10/16") // Sat 
getDay("10/17") //Sun **2010年に実行した場合
getDay("2010/9/1") // Wed
getDay("121") // 12月1日と解釈されてWedを返す.こういう場合1201 や 0121のように4桁で書くよね?
*/

1行で見にくい.

最後の例のように少し穴があるように思われる.

Firefox 3.6 + Firefbug 1.5.4 で動作確認


以下コードの解説

続きを読む

2010年10月15日

delicious netowrok の既読リンクは表示しない

// ==UserScript==
// @include http://www.delicious.com/network/*
// ==/UserScript==

(function() {
	var style = document.createElement("style");
	document.getElementsByTagName("head")[0].appendChild(style);
	var sheet = style.sheet;
	sheet.insertRule("a:visited { font-weight: 800 }", sheet.cssRules.length);

	var posts = document.querySelectorAll("li.post");
	for(var i = posts.length; i;) {
		var post = posts[--i]
		var postlink = post.querySelector("a.taggedlink")
		if(window.getComputedStyle(postlink, "").fontWeight == 800) {
			post.style.display = "none";
		}
	}
})();

Opera 10.63 動作確認.

参考

できあがるまで

Network に並ぶページはすべて目新いものではない.さっき見たページもたくさん並んでいる.そんなページへのリンクは消してしまおう.

a:visited を JavaScript でいじれるのをどっかで見た気がする.

ふむ,スタイルをつけてそれをよみとればいいわけだな.

どういうスタイルにするかはどうせ消える要素なんだからどうでもいいわけで,参考サイトの font-weight を採用.

はじめは ユーザCSS を適応させてそれを ユーザJS で操作するという方法をとった.

ここで最初のつまづき

"element.style.fontWeight" だとユーザCSSで変更した値を取得できない.というわけで初めてgetComputedStyle を使ってみる.これで一応完成.

さらに思う.どうせなら ユーザJSだけで完結させたい.

で stylesheet.insertRule.これも初めて使う.

で,完成.

と思いきや @include が聞いていないのかいかなるページでも動いてしまう.なぜ?未解決.

Greasemonkey でも動かしてみたが問題なし.ほかのスクリプトはまともに動いているのに???

2010年10月06日

delicious から twitter に

設定にあったんだね.

no title

friendfeed や twitterfeed を間にかませるというめんどくさいことをやってた.

twitterfeed はアクセス数を測れるという利点はある.


本題.

delicios から twitter に投げると


のように,メッセージとurl のみが投稿される.これでは何がなんだかわからんので delicious でブックマークしたものであるとわかりやすくしてみた.


// ==UserScript==
// @include http://www.delicious.com/save*
// ==/UserScript==

// delicious から twitter にポストはメッセージと url(icio.us/foobar) しか投稿されない
// 自動でページのタイトルをメッセージに追加するように
// さらに notes に何か書くとそれもメッセージに追加するようにした

(function() {
	if(document.getElementById("send").value.indexOf("@twitter") >= 0) {
		var title = document.getElementById("title").value,
			prefix = "[d] ",
			note = document.getElementById("notes"),
			message = document.getElementById("messageField"),
			t = prefix + title;
			message.value = t;
		note.addEventListener("blur", function() {
			var v;
			message.setAttribute(
				"value",
				(v = this.value) != "" ?  
					v + " " + t:
					t
			);
		}, false);
	}
})();

ソース上のコメントにある通り, title と notes をメッセージに追加するようにしてある.

動くページが /save のみとなっているところをどうにかしたい.


動作確認: Opera 10.62

 |