<?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>ゆーすけぶろぐ &#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&#039;s weblog... ぷろぐらむとか ruby, android, java, thinkpad, milestone2</description>
	<lastBuildDate>Sat, 10 Mar 2012 17:22:54 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.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 LDRで用意されてるくっつける用のメソッドでinputを用意し、GM_xmlhttpRequestでpostして [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://133.78.124.70/" target="_blank">TalkLine</a>という自作マイクロブログにLDRからPostするためのGreasemonkeyScript</p>
<pre class="brush: jscript; title: ; notranslate">
// ==UserScript==
// @name           TalkLineForm
// @namespace      http://yusukezzz.dyndns.org/
// @description    TalkLine post form for Livedoor Reader
// @include        http://reader.livedoor.com/*
// ==/UserScript==

(function(){
	var w = (typeof unsafeWindow == 'undefined') ? window : unsafeWindow;
	var description = 'TalkLine post form for Livedoor Reader';
	$client = 'TalkLineForm for LDR';

	w.myfunc = function(url, title){
		$status = document.getElementById('status_' + url);
		window.setTimeout(function(){
			GM_xmlhttpRequest({
				method: 'POST',
				headers: {'Content-type': 'application/x-www-form-urlencoded'},
				url: 'http://133.78.124.70/post/',
				data: 'status=' + encodeURIComponent($status.value) + '&amp;title=' + encodeURIComponent(title) + '&amp;url=' + encodeURIComponent(url) + '&amp;client=' + $client,
				onload: function(responseDetails) {
					if(responseDetails.responseText != 'success') alert('Failed');
					else $status.value = '';
				}
			});
		}, 0);
	}

	w.entry_widgets.add('talkline_form', function(feed, item){
		var url = item.link.replace(/#/g,'%23');
		var title = item.title
		return [
			'&lt;img src=&quot;http://133.78.124.70/favicon.ico&quot;&gt;',
			'&lt;input type=&quot;text&quot; id=&quot;status_', url ,'&quot; value=&quot;&quot;/&gt;',
			'&lt;input type=&quot;submit&quot; id=&quot;btn_', url ,'&quot; value=&quot;post&quot; onclick=&quot;myfunc(\'', url,'\',\'', title ,'\')&quot;/&gt;',
		].join('');
	}, description);
})();
</pre>
<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）が返 [...]]]></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 [...]]]></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 [...]]]></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>

