<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>zilog &#187; greasemonkey</title>
	<atom:link href="http://yusukezzz.net/blog/archives/tag/greasemonkey/feed" rel="self" type="application/rss+xml" />
	<link>http://yusukezzz.net/blog</link>
	<description>yusukezzzの日記</description>
	<lastBuildDate>Sun, 05 Sep 2010 11:07:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>TalkLineにPostするためのLDR用GreasemonkeyScript</title>
		<link>http://yusukezzz.net/blog/archives/1300</link>
		<comments>http://yusukezzz.net/blog/archives/1300#comments</comments>
		<pubDate>Mon, 20 Apr 2009 06:40:34 +0000</pubDate>
		<dc:creator>yusukezzz</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://yusukezzz.dyndns.org/blog/archives/1300</guid>
		<description><![CDATA[TalkLineという自作マイクロブログにLDRからPostするためのGreasemonkeyScript
[javascript]
// ==UserScript==
// @name           TalkLi &#8230; <a href="http://yusukezzz.net/blog/archives/1300">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://133.78.124.70/" target="_blank">TalkLine</a>という自作マイクロブログにLDRからPostするためのGreasemonkeyScript<br />
[javascript]<br />
// ==UserScript==<br />
// @name           TalkLineForm<br />
// @namespace      http://yusukezzz.dyndns.org/<br />
// @description    TalkLine post form for Livedoor Reader<br />
// @include        http://reader.livedoor.com/*<br />
// ==/UserScript==</p>
<p>(function(){<br />
	var w = (typeof unsafeWindow == &#8216;undefined&#8217;) ? window : unsafeWindow;<br />
	var description = &#8216;TalkLine post form for Livedoor Reader&#8217;;<br />
	$client = &#8216;TalkLineForm for LDR&#8217;;</p>
<p>	w.myfunc = function(url, title){<br />
		$status = document.getElementById(&#8216;status_&#8217; + url);<br />
		window.setTimeout(function(){<br />
			GM_xmlhttpRequest({<br />
				method: &#8216;POST&#8217;,<br />
				headers: {&#8216;Content-type&#8217;: &#8216;application/x-www-form-urlencoded&#8217;},<br />
				url: &#8216;http://133.78.124.70/post/&#8217;,<br />
				data: &#8216;status=&#8217; + encodeURIComponent($status.value) + &#8216;&#038;title=&#8217; + encodeURIComponent(title) + &#8216;&#038;url=&#8217; + encodeURIComponent(url) + &#8216;&#038;client=&#8217; + $client,<br />
				onload: function(responseDetails) {<br />
					if(responseDetails.responseText != &#8216;success&#8217;) alert(&#8216;Failed&#8217;);<br />
					else $status.value = &#8221;;<br />
				}<br />
			});<br />
		}, 0);<br />
	}</p>
<p>	w.entry_widgets.add(&#8216;talkline_form&#8217;, function(feed, item){<br />
		var url = item.link.replace(/#/g,&#8217;%23&#8242;);<br />
		var title = item.title<br />
		return [<br />
			'<img src="http://133.78.124.70/favicon.ico">',<br />
			'<br />
<input type="text" id="status_', url ,'" value=""/>',<br />
			'<br />
<input type="submit" id="btn_', url ,'" value="post" onclick="myfunc(\'', url,'\',\'', title ,'\')"/>',<br />
		].join(&#8221;);<br />
	}, description);<br />
})();<br />
[/javascript]</p>
<p>LDRで用意されてるくっつける用のメソッドでinputを用意し、GM_xmlhttpRequestでpostしています<br />
GM_xmlhttpRequestでPOSTメソッドを使うには<br />
headers: {&#8216;Content-type&#8217;: &#8216;application/x-www-form-urlencoded&#8217;}<br />
が必要です<br />
また、Railsならば受け取るアクションでXSS対策のトークンチェックを無効化、又は対応させる必要があります<br />
（この辺のセキュリティ対策は正直良く分かってません）</p>
<p>GM_xmlhttpRequestをwindow.setTimeoutでラップしてあるのはセキュリティ上の配慮のようです<br />
詳細は良く分かりません＞＜</p>
<p>キーボードショートカットや投稿されてるpostを表示させたり、まだまだ弄る余地はいくらでもありますが、<br />
とりあえずこれでLDRからPost出来るようになったので、後はLDRだけに留まらず、通常サイトからのpost＆twitterへのクロスポストに対応させたいと思います</p>
]]></content:encoded>
			<wfw:commentRss>http://yusukezzz.net/blog/archives/1300/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ActionController::InvalidAuthenticityToken</title>
		<link>http://yusukezzz.net/blog/archives/1292</link>
		<comments>http://yusukezzz.net/blog/archives/1292#comments</comments>
		<pubDate>Thu, 16 Apr 2009 14:03:48 +0000</pubDate>
		<dc:creator>yusukezzz</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://yusukezzz.dyndns.org/blog/archives/1292</guid>
		<description><![CDATA[Railsでformメソッドを使わずにPOSTなど、GET以外でデータを送信すると
ActionController::InvalidAuthenticityToken
というエラー（HTTPステータスコード422）が返 &#8230; <a href="http://yusukezzz.net/blog/archives/1292">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Railsでformメソッドを使わずにPOSTなど、GET以外でデータを送信すると</p>
<p>ActionController::InvalidAuthenticityToken</p>
<p>というエラー（HTTPステータスコード422）が返されることがあります</p>
<p>これはRails標準のCSRF対策で、GET以外のデータ受信時にサーバ側で生成されるトークンが要求されるために起こります<br />
formメソッドを使えば自動的にトークンを生成して埋め込んでくれますので普通は遭遇しないのですが…</p>
<p>今回自分はGreasemonkeyScriptからxmlhttpRequestでPOSTして嵌りました<br />
今回は外部から利用してもらうこと（APIのつもり）が前提なのでそのメソッドだけ</p>
<p>skip_before_filter :verify_authenticity_token ,:only=>[:action_name]</p>
<p>をコントローラに書いてトークンチェックを無効化しました<br />
セキュリティ的にはどうなんでしょうかね…？<br />
RailsでAPIがどのように作られているのか勉強したいです；</p>
<p>参考<br />
<a href="http://maskana.homedns.org/rails/pro/body/95" taget="blank">【 Ruby on Rails Pro 】 POST送信でInvalidAuthenticityTokenエラー</a></p>
]]></content:encoded>
			<wfw:commentRss>http://yusukezzz.net/blog/archives/1292/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GreasemonkeyScript作るのに参考にしたサイト</title>
		<link>http://yusukezzz.net/blog/archives/1288</link>
		<comments>http://yusukezzz.net/blog/archives/1288#comments</comments>
		<pubDate>Mon, 13 Apr 2009 14:02:42 +0000</pubDate>
		<dc:creator>yusukezzz</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://yusukezzz.dyndns.org/blog/?p=1288</guid>
		<description><![CDATA[LivedoorReaderに何かくっつけてXML HTTP Requestしたくなった
最速インターフェース研究会 :: livedoor Readerに何かくっつけるGreasemonkeyの書き方
いまさらだけどG &#8230; <a href="http://yusukezzz.net/blog/archives/1288">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>LivedoorReaderに何かくっつけてXML HTTP Requestしたくなった</p>
<p><a href="http://la.ma.la/blog/diary_200610182325.htm" target="_blank">最速インターフェース研究会 :: livedoor Readerに何かくっつけるGreasemonkeyの書き方</a></p>
<p><a href="http://d.hatena.ne.jp/Cherenkov/20081206/p1" target="_blank">いまさらだけどGM_logの使い方。console.logも使えるようになった！ &#8211; Cherenkovの暗中模索にっき</a></p>
<p><a href="http://diveintogreasemonkey.org/api/gm_xmlhttprequest.html" target="_blank">GM_xmlhttpRequest [Dive Into Greasemonkey]</a></p>
<p><a href="http://www.sukechan.net/archives/tag/greasemonkey/page/2/" target="_blank">Greasemonkey &#8211; sukechan.net</a></p>
<p><a href="http://d.hatena.ne.jp/edvakf/20090319/1237479596" target="_blank">LDR/Fastladderで各記事を表示時に動的にアレコレする方法 &#8211; by edvakf in hatena</a></p>
<p><a href="http://www.ohmiyapatriots.com/blog/category/greasemonkey/" target="_blank">Greasemonkey</a></p>
<p><a href="http://wiki.greasespot.net/0.7.20080121.0_compatibility" target="_blank">0.7.20080121.0 compatibility &#8211; GreaseSpot</a></p>
<p>この辺見てLivedoorReaderのページからGM_xmlhttpRequestするところまでは出来た<br />
後はサーバでそれを受け取って処理すれば初期の構想は実現出来そうだ<br />
今度しっかりまとめたい</p>
]]></content:encoded>
			<wfw:commentRss>http://yusukezzz.net/blog/archives/1288/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ChromeでGreaseMonkey</title>
		<link>http://yusukezzz.net/blog/archives/893</link>
		<comments>http://yusukezzz.net/blog/archives/893#comments</comments>
		<pubDate>Wed, 14 Jan 2009 17:16:02 +0000</pubDate>
		<dc:creator>yusukezzz</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[greasemonkey]]></category>

		<guid isPermaLink="false">http://yusukezzz.dyndns.org/blog/archives/893</guid>
		<description><![CDATA[開発版のver2.0系からGMスクリプトの一部が（比較的簡単に）動かせるとのことなので試してみました
参考：公式Google Chromeがグリモン対応したので試してみた
結果、
autopagerize.user.js &#8230; <a href="http://yusukezzz.net/blog/archives/893">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>開発版のver2.0系からGMスクリプトの一部が（比較的簡単に）動かせるとのことなので試してみました</p>
<p>参考：<a href="http://d.hatena.ne.jp/y-kawaz/20090111/1231645743">公式Google Chromeがグリモン対応したので試してみた</a></p>
<p>結果、<br />
autopagerize.user.js<br />
ldr_ad-entry_blocker.user.js<br />
ldr_full_feed.user.js<br />
ldrize.user.js<br />
minibuffer.user.js<br />
utilities_for_livedoor_r.user.js<br />
を普段使っているのですが、ldr_ad-entry_blocker.user.js以外は全部駄目でした＼(^o^)／</p>
<p>駄目もとでOpera向けのoAutoPagerize(.user).jsを入れてみたら動きました<br />
ちゃんとuser.jsとしないといけないようです<br />
それにしてもLDR系の奴が一切動かないというのは厳しいですねー<br />
動いたらFirefoxでニコ動垂れ流してChromeでLDRとか考えてたんですが；<br />
残念</p>
]]></content:encoded>
			<wfw:commentRss>http://yusukezzz.net/blog/archives/893/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
