<?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>SharpLab. &#187; Scripting</title>
	<atom:link href="http://blog.sharplab.net/category/computer/scripting/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sharplab.net</link>
	<description>Shiroicaが学び、経験したことを綴る個人サイト。</description>
	<lastBuildDate>Thu, 12 Jan 2012 00:57:03 +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>IronPython触れてみた。</title>
		<link>http://blog.sharplab.net/blog/2009/04/23/ironpython%e8%a7%a6%e3%82%8c%e3%81%a6%e3%81%bf%e3%81%9f%e3%80%82/</link>
		<comments>http://blog.sharplab.net/blog/2009/04/23/ironpython%e8%a7%a6%e3%82%8c%e3%81%a6%e3%81%bf%e3%81%9f%e3%80%82/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 16:43:57 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[Scripting]]></category>
		<category><![CDATA[DLR]]></category>
		<category><![CDATA[IronPython]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/3043/</guid>
		<description><![CDATA[IronPythonの世界 (Windows Script Programming): 荒井 省三は読んだことがあるものの、IronPython自体は一行も書いたことが無かったので試しに書いてみた。 ‘Hello World’メッセージをWordPressのBlogに投稿するコード。 # coding=utf8 import System import clr import sys clr.AddReferenceToFile('SharpLab.XML-RPCLib2.dll') clr.AddReferenceToFile('SharpLab.WP-XML-RPCLib2.dll') from SharpLab.XMLRPCLib2 import * from SharpLab.WPXMLRPCLib2 import * endPointUri = raw_input(u'WordPressのエンドポイントURL：'); username = raw_input(u'WordPressのユーザー名：'); passoword = raw_input(u'WordPressのパスワード：'); client = WordPressClient(endPointUri,'IpyPostMessage'); authInfo = AuthenticationInfo(username, passoword) postContent = PostContent() postContent.Title = 'Hello World, from IronPython. [EOM]' postContent.Description = '' [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.co.jp/IronPython%E3%81%AE%E4%B8%96%E7%95%8C-Windows-Script-Programming-%E8%8D%92%E4%BA%95/dp/479733939X">IronPythonの世界 (Windows Script Programming): 荒井 省三</a>は読んだことがあるものの、IronPython自体は一行も書いたことが無かったので試しに書いてみた。</p>
<p>‘Hello World’メッセージをWordPressのBlogに投稿するコード。</p>
<div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:cc2890f7-9e3d-4194-84aa-9adc24b05db0" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="py"># coding=utf8
import System
import clr
import sys

clr.AddReferenceToFile('SharpLab.XML-RPCLib2.dll')
clr.AddReferenceToFile('SharpLab.WP-XML-RPCLib2.dll')

from SharpLab.XMLRPCLib2 import *
from SharpLab.WPXMLRPCLib2 import *

endPointUri = raw_input(u'WordPressのエンドポイントURL：');
username = raw_input(u'WordPressのユーザー名：');
passoword = raw_input(u'WordPressのパスワード：');
client = WordPressClient(endPointUri,'IpyPostMessage');
authInfo = AuthenticationInfo(username, passoword)

postContent = PostContent()
postContent.Title = 'Hello World, from IronPython. [EOM]'
postContent.Description = ''
postContent.TextMore = ''
postContent.Excerpt = ''

client.NewPost(authInfo, 0, postContent, True)

print 'Published!'
</pre>
</div>
<p>最新の記事100件のタイトルとタグを一覧表示するコード。 </p>
<p></p>
<div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9f277b08-c504-45f9-a495-2b7ef1a8a474" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="py"># coding=utf8
import System
import clr
import sys

clr.AddReferenceToFile('SharpLab.XML-RPCLib2.dll')
clr.AddReferenceToFile('SharpLab.WP-XML-RPCLib2.dll')

from SharpLab.XMLRPCLib2 import *
from SharpLab.WPXMLRPCLib2 import *

endPointUri = raw_input(u'WordPressのエンドポイントURL：');
username = raw_input(u'WordPressのユーザー名：');
passoword = raw_input(u'WordPressのパスワード：');
client = WordPressClient(endPointUri, 'IpyPostMessage');
authInfo = AuthenticationInfo(username, passoword)

result = client.GetRecentPosts(authInfo, 0, 100)

for item in result.Response :
	print item['title'].Value + '(' +item['mt_keywords'].Value + ')'</pre>
</div>
<p>DLR楽しい。.Netのアセンブリが簡単に扱えるのは嬉しいですね。TabのないコードなんてPythonを書いているとは言えない！というツッコミは無しで。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2009/04/23/ironpython%e8%a7%a6%e3%82%8c%e3%81%a6%e3%81%bf%e3%81%9f%e3%80%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>P2で自分のtwitterのログを保存開始</title>
		<link>http://blog.sharplab.net/blog/2009/04/15/p2%e3%81%a7%e8%87%aa%e5%88%86%e3%81%aetwitter%e3%81%ae%e3%83%ad%e3%82%b0%e3%82%92%e4%bf%9d%e5%ad%98%e9%96%8b%e5%a7%8b/</link>
		<comments>http://blog.sharplab.net/blog/2009/04/15/p2%e3%81%a7%e8%87%aa%e5%88%86%e3%81%aetwitter%e3%81%ae%e3%83%ad%e3%82%b0%e3%82%92%e4%bf%9d%e5%ad%98%e9%96%8b%e5%a7%8b/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 15:55:16 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[WebScripting]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/webscripting/3023/</guid>
		<description><![CDATA[一昨日のWordCampでもMatt直々に紹介があったP2、自分も早速設置してみました。 P2 &#8211; SharpLab. おお～。素敵素敵。でも、Twitterの魅力である、TLを通じた他人とのインタラクションは一人でP2を使っているのでは得られないので（多分。P2にはFollowとかいう仕組みはないですよね？）、自分はこのP2を適用したBlogをTwitterの自分のTweetのログを収集するために使うことにしました。 利用したのはTwitter Toolsというプラグイン。自分のTwitterでのTweetを収集してサイドバーとかに表示したり、一日のTweetのサマリ記事をBlogに自動で投稿したりする機能を持った、TwitterとWordPressをつなぐ働きを持った多機能プラグインです。で、今回はこのプラグインの「Tweet毎にエントリを自動投稿する」機能を利用しています。 但し、Twitter ToolsとP2をあわせて使う上で注意点が一つ。Twitter ToolsもP2も、Services_JSONというPEARのクラスを利用するのですが、それぞれがServices_JSONを定義しようとするために衝突が起こってしまうという問題があります。そこでP2のテーマの中にある、inc/JSON.phpファイルを少し修正してやる必要があります。Services_JSONの定義を丸ごと、以下のif文で括ってやればOKです。（いかにもPHPな話ですね…。） if (!class_exists('Services_JSON')) { //Services_JSONの定義 } あとはTwitter Toolsの設定で&#34;Create a blog post from each of your tweets?&#34;という項目をYesに設定したり必要な設定を済ませるだけです！素敵ですね。]]></description>
			<content:encoded><![CDATA[<p>一昨日のWordCampでもMatt直々に紹介があったP2、自分も早速設置してみました。</p>
<p><a href="http://p2.sharplab.net/">P2 &#8211; SharpLab.</a></p>
<p><a rel="lightbox" href="http://blog.sharplab.net/wp-content/uploads/2009/04/image3.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="323" alt="image" src="http://blog.sharplab.net/wp-content/uploads/2009/04/image-thumb3.png" width="614" border="0" /></a> </p>
<p>おお～。素敵素敵。でも、Twitterの魅力である、TLを通じた他人とのインタラクションは一人でP2を使っているのでは得られないので（多分。P2にはFollowとかいう仕組みはないですよね？）、自分はこのP2を適用したBlogをTwitterの自分のTweetのログを収集するために使うことにしました。</p>
<p>利用したのは<a href="http://wordpress.org/extend/plugins/twitter-tools/">Twitter Tools</a>というプラグイン。自分のTwitterでのTweetを収集してサイドバーとかに表示したり、一日のTweetのサマリ記事をBlogに自動で投稿したりする機能を持った、TwitterとWordPressをつなぐ働きを持った多機能プラグインです。で、今回はこのプラグインの「Tweet毎にエントリを自動投稿する」機能を利用しています。</p>
<p>但し、Twitter ToolsとP2をあわせて使う上で注意点が一つ。Twitter ToolsもP2も、Services_JSONというPEARのクラスを利用するのですが、それぞれがServices_JSONを定義しようとするために衝突が起こってしまうという問題があります。そこでP2のテーマの中にある、inc/JSON.phpファイルを少し修正してやる必要があります。Services_JSONの定義を丸ごと、以下のif文で括ってやればOKです。（いかにもPHPな話ですね…。）</p>
<div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:84611e3a-f415-4614-bb7e-98e114a6eaa1" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="php">if (!class_exists('Services_JSON')) {

//Services_JSONの定義

}</pre>
</div>
<p>あとはTwitter Toolsの設定で&quot;Create a blog post from each of your tweets?&quot;という項目をYesに設定したり必要な設定を済ませるだけです！素敵ですね。 </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2009/04/15/p2%e3%81%a7%e8%87%aa%e5%88%86%e3%81%aetwitter%e3%81%ae%e3%83%ad%e3%82%b0%e3%82%92%e4%bf%9d%e5%ad%98%e9%96%8b%e5%a7%8b/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>今年のニコ動のエイプリールフールネタ</title>
		<link>http://blog.sharplab.net/blog/2009/04/01/1892/</link>
		<comments>http://blog.sharplab.net/blog/2009/04/01/1892/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 16:16:25 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[WebScripting]]></category>
		<category><![CDATA[April Fools' Day]]></category>
		<category><![CDATA[Char]]></category>
		<category><![CDATA[NicoVideo]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/webscripting/1892/</guid>
		<description><![CDATA[去年はコメント逆流だった。今年は何かなと思いふと見てみると…。 これは…… ニコ動はこういったflvplayerの挙動の切り替えにいつもプレイヤーのembedタグのflashvars属性を使っているのでソースを見てみた。 &#60;embed id="flvplayer" height="540" width="952" flashvars="v=sm6595043&#38;videoId=sm6595043&#38;deleted=0&#38;mylist_counter=5941&#38;movie_type=flv&#38;thumbImage=http://tn-skr4.smilevideo.jp/smile?i=6595043&#38;us=0&#38;ad=web_pc_player_marquee&#38;iee=1&#38;wv_id=sm6595043&#38;wv_title=%E3%80%90%E8%A8%9B%E3%82%8A%E5%AE%9F%E6%B3%81%E3%80%91%20%E3%83%AF%E3%83%B3%E3%83%80%E3%81%A8%E5%B7%A8%E5%83%8F%E3%80%80Vol%EF%BC%9A01&#38;wv_code=d806da3d&#38;wv_time=1238515393&#38;button_threshold=0&#38;thumbTitle=%E3%80%90%E8%A8%9B%E3%82%8A%E5%AE%9F%E6%B3%81%E3%80%91%20%E3%83%AF%E3%83%B3%E3%83%80%E3%81%A8%E5%B7%A8%E5%83%8F%E3%80%80Vol%EF%BC%9A01&#38;thumbDescription=%E2%94%80%E2%94%80%E6%9C%80%E5%BE%8C%E3%81%AE%E4%B8%80%E6%92%83%E3%81%AF%E3%80%81%E3%81%9B%E3%81%A4%E3%81%AA%E3%81%84%E3%80%82%E3%82%82%E3%81%86%E4%B8%80%E5%BA%A6%E3%81%8D%E3%81%BF%E3%81%A8%E4%BC%9A%E3%81%86%E7%82%BA%E3%81%AB%E3%80%81%E5%83%95%E3%82%89%E3%81%AF...&#38;weather1=%E3%81%8F%E3%82%82%E3%82%8A&#38;conjunction=%E6%99%82%E3%80%85&#38;weather2=%E9%9B%A8&#38;highest_temperature=13.0&#38;lowest_temperature=8.0&#38;chance_of_rain=40&#38;player_version_xml=1233560503&#38;marqueeVersion=1238147635&#38;theRevengeOfChar=1" allowfullscreen="true" allowscriptaccess="always" quality="high" bgcolor="#FFFFFF" name="flvplayer" style="" src="http://www.nicovideo.jp/swf/nicoplayer.swf?ts=1238491869" type="application/x-shockwave-flash"/&#62; flashvars属性の最後の部分に注目。 theRevengeOfChar=1 逆シャアですね、わかります。 ふとWikipedia引いてみた。 『機動戦士ガンダム 逆襲のシャア』（きどうせんし- ぎゃくしゅう-、MOBILE SUIT GUNDAM Char&#8217;s Counter Attack）は、1988年3月に松竹系で劇場公開されたガンダムシリーズのアニメ映画。宇宙世紀（UC）の2人の主人公、アムロ・レイとシャア・アズナブルの最後の対決を描いている。ファンの間では「逆シャア」や英題の頭文字を取り「CCA」などと略されることもある。 機動戦士ガンダム 逆襲のシャア 出典: フリー百科事典『ウィキペディア（Wikipedia）』 英語表記違うやん…。]]></description>
			<content:encoded><![CDATA[<p>去年はコメント逆流だった。今年は何かなと思いふと見てみると…。</p>
<p><a rel="lightbox" href="http://blog.sharplab.net/wp-content/uploads/2009/04/image.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="232" alt="image" src="http://blog.sharplab.net/wp-content/uploads/2009/04/image-thumb.png" width="404" border="0" /></a> </p>
<p><strong style="font-size: 2em; color: #ff0000">これは……</strong></p>
<p>ニコ動はこういったflvplayerの挙動の切り替えにいつもプレイヤーのembedタグのflashvars属性を使っているのでソースを見てみた。</p>
</p>
<div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a31afd99-7d25-4701-8db4-c947cfd2ac7d" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="xml">&lt;embed id="flvplayer" height="540" width="952" flashvars="v=sm6595043&amp;videoId=sm6595043&amp;deleted=0&amp;mylist_counter=5941&amp;movie_type=flv&amp;thumbImage=http://tn-skr4.smilevideo.jp/smile?i=6595043&amp;us=0&amp;ad=web_pc_player_marquee&amp;iee=1&amp;wv_id=sm6595043&amp;wv_title=%E3%80%90%E8%A8%9B%E3%82%8A%E5%AE%9F%E6%B3%81%E3%80%91%20%E3%83%AF%E3%83%B3%E3%83%80%E3%81%A8%E5%B7%A8%E5%83%8F%E3%80%80Vol%EF%BC%9A01&amp;wv_code=d806da3d&amp;wv_time=1238515393&amp;button_threshold=0&amp;thumbTitle=%E3%80%90%E8%A8%9B%E3%82%8A%E5%AE%9F%E6%B3%81%E3%80%91%20%E3%83%AF%E3%83%B3%E3%83%80%E3%81%A8%E5%B7%A8%E5%83%8F%E3%80%80Vol%EF%BC%9A01&amp;thumbDescription=%E2%94%80%E2%94%80%E6%9C%80%E5%BE%8C%E3%81%AE%E4%B8%80%E6%92%83%E3%81%AF%E3%80%81%E3%81%9B%E3%81%A4%E3%81%AA%E3%81%84%E3%80%82%E3%82%82%E3%81%86%E4%B8%80%E5%BA%A6%E3%81%8D%E3%81%BF%E3%81%A8%E4%BC%9A%E3%81%86%E7%82%BA%E3%81%AB%E3%80%81%E5%83%95%E3%82%89%E3%81%AF...&amp;weather1=%E3%81%8F%E3%82%82%E3%82%8A&amp;conjunction=%E6%99%82%E3%80%85&amp;weather2=%E9%9B%A8&amp;highest_temperature=13.0&amp;lowest_temperature=8.0&amp;chance_of_rain=40&amp;player_version_xml=1233560503&amp;marqueeVersion=1238147635&amp;theRevengeOfChar=1" allowfullscreen="true" allowscriptaccess="always" quality="high" bgcolor="#FFFFFF" name="flvplayer" style="" src="http://www.nicovideo.jp/swf/nicoplayer.swf?ts=1238491869" type="application/x-shockwave-flash"/&gt;</pre>
</div>
<p>flashvars属性の最後の部分に注目。</p>
<div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:129d597d-6334-49af-b66d-6d7203bb817d" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="xml">theRevengeOfChar=1</pre>
</div>
<p><strong style="font-size: 2em; color: #ff0000">逆シャアですね、わかります。</strong></p>
<p>ふとWikipedia引いてみた。</p>
<blockquote>
<p>『<b>機動戦士ガンダム 逆襲のシャア</b>』（きどうせんし- ぎゃくしゅう-、<b>MOBILE SUIT GUNDAM Char&#8217;s Counter Attack</b>）は、<a href="http://ja.wikipedia.org/wiki/1988%E5%B9%B4">1988年</a>3月に<a href="http://ja.wikipedia.org/wiki/%E6%9D%BE%E7%AB%B9">松竹</a>系で劇場公開された<a href="http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%B3%E3%83%80%E3%83%A0%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA">ガンダムシリーズ</a>の<a href="http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E6%98%A0%E7%94%BB">アニメ映画</a>。<a href="http://ja.wikipedia.org/wiki/%E5%AE%87%E5%AE%99%E4%B8%96%E7%B4%80">宇宙世紀</a>（UC）の2人の主人公、<a href="http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%A0%E3%83%AD%E3%83%BB%E3%83%AC%E3%82%A4">アムロ・レイ</a>と<a href="http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%A3%E3%82%A2%E3%83%BB%E3%82%A2%E3%82%BA%E3%83%8A%E3%83%96%E3%83%AB">シャア・アズナブル</a>の最後の対決を描いている。ファンの間では「<b>逆シャア</b>」や英題の頭文字を取り「<b>CCA</b>」などと略されることもある。</p>
<p><cite><a href="http://ja.wikipedia.org/wiki/%E6%A9%9F%E5%8B%95%E6%88%A6%E5%A3%AB%E3%82%AC%E3%83%B3%E3%83%80%E3%83%A0_%E9%80%86%E8%A5%B2%E3%81%AE%E3%82%B7%E3%83%A3%E3%82%A2">機動戦士ガンダム 逆襲のシャア<br />
        <br />出典: フリー百科事典『ウィキペディア（Wikipedia）』</a></cite></p>
</blockquote>
<p><a href="http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%B3%E3%83%80%E3%83%A0%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA"></a></p>
<p>英語表記違うやん…。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2009/04/01/1892/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Related Post for Japanese 1.50 導入してみた</title>
		<link>http://blog.sharplab.net/blog/2009/03/15/1869/</link>
		<comments>http://blog.sharplab.net/blog/2009/03/15/1869/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 12:50:11 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[WebScripting]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[SharpLab]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/webscripting/1869/</guid>
		<description><![CDATA[hiromasaさんが開発されたWordPress Related Post for Japanese 1.50、このサイトでも導入してみました。WordPress Related Post for Japaneseは、Yahoo! Japanの形態素解析APIを利用して関連エントリを取得・表示するプラグインです。実はver1.1のころから導入はしていて、裏で走らせてはいたのですが、そのころはBlogのエントリ数自体がまだ少なく、関連エントリを表示しようにも表示するエントリがないため精度が微妙だったので、表示するためのタグは張らずに遊んでいる状態でした。 でも今なら大丈夫！しっかり関連エントリが表示されています！ 原理上短いエントリの場合、どうしても精度が出ない場合もありますが、それは努めて長文エントリ書くようにする、という運用でカバーしていければと思いますｗ]]></description>
			<content:encoded><![CDATA[<p>hiromasaさんが開発された<a href="http://another.maple4ever.net/archives/705/">WordPress Related Post for Japanese 1.50</a>、このサイトでも導入してみました。<a href="http://another.maple4ever.net/archives/705/">WordPress Related Post for Japanese</a>は、Yahoo! Japanの形態素解析APIを利用して関連エントリを取得・表示するプラグインです。実はver1.1のころから導入はしていて、裏で走らせてはいたのですが、そのころはBlogのエントリ数自体がまだ少なく、関連エントリを表示しようにも表示するエントリがないため精度が微妙だったので、表示するためのタグは張らずに遊んでいる状態でした。</p>
<p>でも今なら大丈夫！しっかり関連エントリが表示されています！</p>
<p><a rel="lightbox" href="http://blog.sharplab.net/wp-content/uploads/2009/03/image1.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="316" alt="image" src="http://blog.sharplab.net/wp-content/uploads/2009/03/image-thumb1.png" width="614" border="0" /></a> </p>
<p>原理上短いエントリの場合、どうしても精度が出ない場合もありますが、それは努めて長文エントリ書くようにする、という運用でカバーしていければと思いますｗ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2009/03/15/1869/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vistaのlocalhost</title>
		<link>http://blog.sharplab.net/blog/2009/03/10/1848/</link>
		<comments>http://blog.sharplab.net/blog/2009/03/10/1848/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 13:59:56 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[WebScripting]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[localhost]]></category>
		<category><![CDATA[Vista]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/webscripting/1848/</guid>
		<description><![CDATA[久しぶりにWindowsでXAMPPを立ち上げてみると、Apacheは起動しているのに画面が表示されないという不可解な現象に直面。Apacheは確かに起動しているのに、http://localhost/にアクセスしてみてもページ読み込みエラーが出るという…。散々悩んだ挙句、ふとhttp://127.0.0.1/ と打ち込んでみると見事にXAMPPのスプラッシュ画面が。どうやら、localhostを解決するためのhostsファイルが書き変わっていたためのようだ（近頃の、とあるR。 » localhostが動かなくなった より）。 前は動いていたのに、何のタイミングでこんなことになったのかなぁ…？ 2009-03-16追記：Windows Defenderのせいらしい。 Expression Blend and Design : &#34;Page Cannot Be Found&#34; Issue when Previewing via Expression Blend]]></description>
			<content:encoded><![CDATA[<p>久しぶりにWindowsでXAMPPを立ち上げてみると、Apacheは起動しているのに画面が表示されないという不可解な現象に直面。Apacheは確かに起動しているのに、<a href="http://localhost/">http://localhost/</a>にアクセスしてみてもページ読み込みエラーが出るという…。散々悩んだ挙句、ふと<a href="http://127.0.0.1/">http://127.0.0.1/</a> と打ち込んでみると見事にXAMPPのスプラッシュ画面が。どうやら、localhostを解決するためのhostsファイルが書き変わっていたためのようだ（<a href="http://www.denkasi.com/blog/2008/10/246">近頃の、とあるR。 » localhostが動かなくなった</a> より）。</p>
<p>前は動いていたのに、何のタイミングでこんなことになったのかなぁ…？</p>
<p>2009-03-16追記：Windows Defenderのせいらしい。   <br /><a href="http://blogs.msdn.com/expression/archive/2009/03/16/page-cannot-be-found-issue-when-previewing-via-expression-blend.aspx">Expression Blend and Design : &quot;Page Cannot Be Found&quot; Issue when Previewing via Expression Blend</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2009/03/10/1848/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse PDT+Aptana+Subclipse</title>
		<link>http://blog.sharplab.net/blog/2008/12/14/1456/</link>
		<comments>http://blog.sharplab.net/blog/2008/12/14/1456/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 06:25:01 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[WebScripting]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/webscripting/1456/</guid>
		<description><![CDATA[WordPress2.7が出たのをきっかけに、いい加減PHPの開発環境を整えようということで、hiromasaさん御用達のEclipse PDTの導入と、WebオーサリングツールであるAptana、SubversionクライアントであるSubclipseの導入を行ってみました。 参考にしたサイトはこちら Eclipse+pdtインストール 日本語化してPHP開発環境を作る(Xampp) – delab Subclipseのインストール方法 基本的にこの二つのサイトの指示に従ってインストールを進められたのですが、途中、PDTの「PHPサーバーの設定」のところでつまづきました。あるはずの「このサーバーへプロジェクトを公開」の項が…ない！という問題。実行時にXAMPPのフォルダにプロジェクトをコピーしてくれるオプションだったので、これがないと書いたものを走らせることができないので困ります。 ググるとBug 216086 – Run command borked, can&#8217;t get ALL files to copyというページに行き当たりまして（via ひとり２ちゃん: Eclipse で PHP PDT）、どうやら「このサーバーへプロジェクトを公開」というオプションは、削除されてしまったみたいです。 理由は、 デカいプロジェクトだとコピーの作業って時間食うよね コード書き換えたらいちいちPublishしないといけないのはめんどうだよね、ブラウザでF5キー押すだけのほうがいいよね プロジェクトから削除したファイルがPublish先にゴミとして残ることがあるのはマズいよね とのこと。なるほど。そして代替策としてhttpd.confを使ってエイリアスの定義をするやり方が紹介されていました。 で、それら設定をすべて済ませて、レポジトリからチェックアウトしてきたWordPress2.7をステップ実行してみたの図。 おおー！これは凄い。そしてこれまでテキストエディタでWordPressのThemeを書いて、var_dump()を使ってデバッグをしていた自分の努力はなんだったんだ…。]]></description>
			<content:encoded><![CDATA[<p>WordPress2.7が出たのをきっかけに、いい加減PHPの開発環境を整えようということで、<a href="http://another.maple4ever.net/">hiromasa</a>さん御用達のEclipse PDTの導入と、WebオーサリングツールであるAptana、SubversionクライアントであるSubclipseの導入を行ってみました。</p>
<p>参考にしたサイトはこちら</p>
<p><a href="http://de-lab.com/article/eclipse/">Eclipse+pdtインストール 日本語化してPHP開発環境を作る(Xampp) – delab</a></p>
<p><a href="http://server.seasar.org/manual/install_subclipse.html">Subclipseのインストール方法</a></p>
<p>基本的にこの二つのサイトの指示に従ってインストールを進められたのですが、途中、PDTの<a href="http://de-lab.com/article/eclipse_setting/">「PHPサーバーの設定」のところ</a>でつまづきました。あるはずの「このサーバーへプロジェクトを公開」の項が…ない！という問題。実行時にXAMPPのフォルダにプロジェクトをコピーしてくれるオプションだったので、これがないと書いたものを走らせることができないので困ります。</p>
<p>ググると<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=216086#c3">Bug 216086 – Run command borked, can&#8217;t get ALL files to copy</a>というページに行き当たりまして（via <a href="http://quattrooooo.cocolog-nifty.com/blog/2008/05/eclipse_php_pdt_0cce.html">ひとり２ちゃん: Eclipse で PHP PDT</a>）、どうやら「このサーバーへプロジェクトを公開」というオプションは、削除されてしまったみたいです。</p>
<p>理由は、</p>
<ul>
<li>デカいプロジェクトだとコピーの作業って時間食うよね </li>
<li>コード書き換えたらいちいちPublishしないといけないのはめんどうだよね、ブラウザでF5キー押すだけのほうがいいよね </li>
<li>プロジェクトから削除したファイルがPublish先にゴミとして残ることがあるのはマズいよね </li>
</ul>
<p>とのこと。なるほど。そして代替策としてhttpd.confを使ってエイリアスの定義をするやり方が紹介されていました。    </p>
<p>で、それら設定をすべて済ませて、レポジトリからチェックアウトしてきたWordPress2.7をステップ実行してみたの図。</p>
<p><a href="http://blog.sharplab.net/wp-content/uploads/2008/12/image13.png" rel="lightbox"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="370" alt="image" src="http://blog.sharplab.net/wp-content/uploads/2008/12/image-thumb13.png" width="614" border="0" /></a></p>
<p>おおー！これは凄い。そしてこれまでテキストエディタでWordPressのThemeを書いて、var_dump()を使ってデバッグをしていた自分の努力はなんだったんだ…。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/12/14/1456/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NicoComeAccelerator.user.js</title>
		<link>http://blog.sharplab.net/blog/2008/08/31/993/</link>
		<comments>http://blog.sharplab.net/blog/2008/08/31/993/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 18:04:59 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[FirefoxExtention]]></category>
		<category><![CDATA[GreaseMonkey]]></category>
		<category><![CDATA[NicoVideo]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/firefoxextention/993/</guid>
		<description><![CDATA[VOCALOIDでニコニコ動画流星群【完成版】‐ニコニコ動画(夏)の勢いの速さを目の当たりにして、昔作ったグリモンスクリプトをもう一度作りなおしてみた。 内容はコメントのリロード間隔を3秒に縮めるというもの。どんどん流れてゆくコメ、ガンガン上がる再生数・マイリス数を眺めるのは結構面白いものがある。 // ==UserScript== // @name NicoComeAccelerator // @namespace http://www.sharplab.net/ // @include http://www.nicovideo.jp/watch/* // @require http://svn.coderepos.org/share/lang/javascript/userscripts/GM_Libs/noriaki/NicoNicoPlayerWrapper/NNPW-20080824.1.js // ==/UserScript== var player = new NicoNicoPlayer(); player.onReady(function(video_info) { this.val("HTTP_INTERVAL","3000"); this.val("HTTP_INTERVAL_SHORT","3000"); this.val("HTTP_INTERVAL_ECONOMY","3000"); this.val("HTTP_INTERVAL_SHORT_ECONOMY","3000"); }); やっぱりこれもSharpLab.:ニコ動の動画プレーヤー操作用ライブラリを使ってみた。のエントリのときと同じく、時折「Security Manager vetoed action」というエラーに悩まされるわけだけど、何が再現条件なんだろう…。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nicovideo.jp/watch/sm4468648">VOCALOIDでニコニコ動画流星群【完成版】‐ニコニコ動画(夏)</a>の勢いの速さを目の当たりにして、昔作ったグリモンスクリプトをもう一度作りなおしてみた。</p>
<p>内容はコメントのリロード間隔を3秒に縮めるというもの。どんどん流れてゆくコメ、ガンガン上がる再生数・マイリス数を眺めるのは結構面白いものがある。</p>
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ffc59172-b835-4733-9929-e484a7619d29" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="js">// ==UserScript==
// @name           NicoComeAccelerator
// @namespace      http://www.sharplab.net/
// @include        http://www.nicovideo.jp/watch/*
// @require        http://svn.coderepos.org/share/lang/javascript/userscripts/GM_Libs/noriaki/NicoNicoPlayerWrapper/NNPW-20080824.1.js
// ==/UserScript==
var player = new NicoNicoPlayer();
player.onReady(function(video_info) {
	this.val("HTTP_INTERVAL","3000");
	this.val("HTTP_INTERVAL_SHORT","3000");
	this.val("HTTP_INTERVAL_ECONOMY","3000");
	this.val("HTTP_INTERVAL_SHORT_ECONOMY","3000");
});
</pre>
</div>
</p>
<p>やっぱりこれも<a href="http://blog.sharplab.net/computer/scripting/firefoxextention/915/">SharpLab.:ニコ動の動画プレーヤー操作用ライブラリを使ってみた。</a>のエントリのときと同じく、時折「Security Manager vetoed action」というエラーに悩まされるわけだけど、何が再現条件なんだろう…。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/08/31/993/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ニコ動の動画プレーヤー操作用ライブラリを使ってみた。</title>
		<link>http://blog.sharplab.net/blog/2008/08/27/915/</link>
		<comments>http://blog.sharplab.net/blog/2008/08/27/915/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 08:10:19 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[FirefoxExtention]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[NicoVideo]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/firefoxextention/915/</guid>
		<description><![CDATA[面白いGreasemonkeyスクリプト用ライブラリを見つけたので紹介。 Greasemonkeyスクリプトからニコニコ動画のFlashプレーヤーを操作するライブラリ（バージョンアップ） &#8211; We Ain&#8217;t Seen Nothin&#8217; Yet. Flash内部のActionScriptの変数は、SetVariable、GetVariableメソッドを使用することで、そのFlashを含むWebページのJavaScriptから読み書きできるのだけれど、その機能を使ってニコニコ動画のFlashで出来た動画プレーヤーを操作しようというもの。 ニコ動のプレーヤーを外部から操作するというのはニコニコ動画をHackするときに使えそうな変数まとめというエントリの頃から注目していたのだけれど、このようにライブラリの形に纏めた形で提供してもらえるというのは非常に有り難いことだ。 さて、早速このライブラリを使用して、今年のエイプリルフールに運営が悪ふざけでやった「コメント逆流事件」を再現してみる。このスクリプトをインストールすると、ニコ動のコメントが逆流するようになる。 // ==UserScript== // @name ReturnToAprilFoolsDay // @namespace http://www.sharplab.net/ // @include http://www.nicovideo.jp/watch/* // @require http://svn.coderepos.org/share/lang/javascript/userscripts/GM_Libs/noriaki/NicoNicoPlayerWrapper/NNPW-20080824.1.js // ==/UserScript== var player = new NicoNicoPlayer(); player.onReady(function(video_info) { this.val("isReverse","true"); }); ニコ動の動画プレーヤーはisReverseという変数を内部に持っているのだが、それにtrueをセットすることで流れるコメの向きを反対に出来ることを利用したスクリプト。エイプリルフールを過ぎたらこの変数もなくなるのかな、と思っていたのだけれども、「＠逆」とかいうニコスクリプトのために残されたようだ。 ところでこれらニコ動の動画プレーヤーを操作するGreasemonkeyスクリプトだが、時折「Security Manager vetoed action」というエラーで実行に失敗することがある。どうもSetVariableメソッドによる内部の変数の操作がFirefoxのセキュリティ・ポリシーに反していて拒否される、ということのようなのだが、実行できる場合もあり、再現条件がはっきりしない。Firefox2の頃は全く問題がなかったので、Firefox3での変更だと思うのだが…。謎。]]></description>
			<content:encoded><![CDATA[<p>面白いGreasemonkeyスクリプト用ライブラリを見つけたので紹介。</p>
<p><a href="http://blog.fulltext-search.biz/archives/2008/08/nico-nico-player-wrapper-4-greasemonkey.html">Greasemonkeyスクリプトからニコニコ動画のFlashプレーヤーを操作するライブラリ（バージョンアップ） &#8211; We Ain&#8217;t Seen Nothin&#8217; Yet.</a></p>
</p>
<p>Flash内部のActionScriptの変数は、SetVariable、GetVariableメソッドを使用することで、そのFlashを含むWebページのJavaScriptから読み書きできるのだけれど、その機能を使ってニコニコ動画のFlashで出来た動画プレーヤーを操作しようというもの。</p>
<p>ニコ動のプレーヤーを外部から操作するというのは<a href="http://blog.fulltext-search.biz/articles/2007/10/15/nicovideo-hacks">ニコニコ動画をHackするときに使えそうな変数まとめ</a>というエントリの頃から注目していたのだけれど、このようにライブラリの形に纏めた形で提供してもらえるというのは非常に有り難いことだ。</p>
<p>さて、早速このライブラリを使用して、今年のエイプリルフールに運営が悪ふざけでやった「コメント逆流事件」を再現してみる。このスクリプトをインストールすると、ニコ動のコメントが逆流するようになる。</p>
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e8520260-2762-4316-bcff-9cb3402a7ec9" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="js">// ==UserScript==
// @name           ReturnToAprilFoolsDay
// @namespace      http://www.sharplab.net/
// @include        http://www.nicovideo.jp/watch/*
// @require        http://svn.coderepos.org/share/lang/javascript/userscripts/GM_Libs/noriaki/NicoNicoPlayerWrapper/NNPW-20080824.1.js
// ==/UserScript==
var player = new NicoNicoPlayer();
player.onReady(function(video_info) {
	this.val("isReverse","true");
});
</pre>
</div>
</p>
</p>
<p>ニコ動の動画プレーヤーはisReverseという変数を内部に持っているのだが、それにtrueをセットすることで流れるコメの向きを反対に出来ることを利用したスクリプト。エイプリルフールを過ぎたらこの変数もなくなるのかな、と思っていたのだけれども、「＠逆」とかいうニコスクリプトのために残されたようだ。</p>
<p>ところでこれらニコ動の動画プレーヤーを操作するGreasemonkeyスクリプトだが、時折「Security Manager vetoed action」というエラーで実行に失敗することがある。どうもSetVariableメソッドによる内部の変数の操作がFirefoxのセキュリティ・ポリシーに反していて拒否される、ということのようなのだが、実行できる場合もあり、再現条件がはっきりしない。Firefox2の頃は全く問題がなかったので、Firefox3での変更だと思うのだが…。謎。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/08/27/915/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>この春はゆるふわ愛されiKnowアイテムバンクでキメちゃおう☆</title>
		<link>http://blog.sharplab.net/blog/2008/07/26/316/</link>
		<comments>http://blog.sharplab.net/blog/2008/07/26/316/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 17:04:32 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[FirefoxExtention]]></category>
		<category><![CDATA[IEExtention]]></category>
		<category><![CDATA[iKnow]]></category>
		<category><![CDATA[OpenSearch]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/firefoxextention/316/</guid>
		<description><![CDATA[追記：cerego公式のブックマークレットがリリースされています。こっちの方が便利かも。 タイトルはホッテントリメーカーで生成したｗ 無駄に愛愛うるさい気もするが、まぁ気にしない。春じゃないのも気にしちゃいけない。 それはともかく。 iKnowは英語学習用SNSサービスで、英語を学ぶためのe-learningコンテンツと、SNSが融合したサービス。Ruby on RailsとFlashで作成された素晴らしい学習アプリが特徴で、TOEIC向け、TOEFL向けなど様々なコースを、目標日から自動で逆算されたペース配分に従って学習を進めることができる。 さて、そんなiKnowには、「iKnowアイテムバンク」という名前で、登録されている10万語超の英単語を調べることができる辞書機能が存在する。そして、その単語を集めて自分の英単語帳を作ることができる「マイリスト」という機能も存在している。作成したマイリストは、運営元のceregoによって提供されているコースと同じように、iKnowの学習アプリを使ってペース配分しながら勉強することが出来、iKnowを非常に効率的な英語学習プラットフォームとして活用することが出来る。 で、今回はそのマイリスト機能を活用するための基盤となる、iKnowアイテムバンクを検索するための検索プラグインを作成してみた。なお、iKnowアイテムバンクはAjaxを活用しているので、SearchQueryGeneratorは使えないので注意。 OpenSearchプラグイン Firefox向けOpenSearchプラグイン。以下のリンクからインストールできます。 iKnow ItemBank Searchをインストール（Firefox） これを使えば、 英語ページをブラウズ 分からない単語に出会う その単語を検索バーにD&#38;D 検索結果のページからマイリストに登録 分からなかった単語リストが出来て、しかもiKnowで復習できるので(゜Д゜)ウマー となれる。 検索エンジンの切り替えが面倒だ、という場合は、コンテキストメニューから検索できるようにするContext Searchという拡張を入れれば幸せになれるかも知れない。 なおこのOpenSearchプラグインはIEでは使用不能。iKnowが対応していないのか検索結果ページを上手く表示できない。残念…。よってIEコンポーネントブラウザであるSleipnir、Lunascape等も同様。]]></description>
			<content:encoded><![CDATA[<p>追記：<a href="http://www.iknow.co.jp/bookmarklet">cerego公式のブックマークレットがリリースされています。</a>こっちの方が便利かも。</p>
<p><a href="http://blog.sharplab.net/wp-content/uploads/2008/07/image8.png" rel="lightbox"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="266" alt="image" src="http://blog.sharplab.net/wp-content/uploads/2008/07/image-thumb8.png" width="484" border="0" /></a></p>
<p>タイトルは<a href="http://pha22.net/hotentry/">ホッテントリメーカー</a>で生成したｗ 無駄に愛愛うるさい気もするが、まぁ気にしない。春じゃないのも気にしちゃいけない。</p>
<p>それはともかく。    <br />iKnowは英語学習用SNSサービスで、英語を学ぶためのe-learningコンテンツと、SNSが融合したサービス。Ruby on RailsとFlashで作成された素晴らしい学習アプリが特徴で、TOEIC向け、TOEFL向けなど様々なコースを、目標日から自動で逆算されたペース配分に従って学習を進めることができる。</p>
<p>さて、そんなiKnowには、「iKnowアイテムバンク」という名前で、登録されている10万語超の英単語を調べることができる辞書機能が存在する。そして、その単語を集めて自分の英単語帳を作ることができる「マイリスト」という機能も存在している。作成したマイリストは、運営元のceregoによって提供されているコースと同じように、iKnowの学習アプリを使ってペース配分しながら勉強することが出来、iKnowを非常に効率的な英語学習プラットフォームとして活用することが出来る。</p>
<p>で、今回はそのマイリスト機能を活用するための基盤となる、iKnowアイテムバンクを検索するための検索プラグインを作成してみた。なお、iKnowアイテムバンクはAjaxを活用しているので、SearchQueryGeneratorは使えないので注意。</p>
<h3>OpenSearchプラグイン</h3>
<p>Firefox向けOpenSearchプラグイン。以下のリンクからインストールできます。    <br /><a href="javascript:window.external.AddSearchProvider('http://depot.sharplab.net/OpenSearchPlugin/iKnowItemBankSearch.xml');">iKnow ItemBank Searchをインストール（Firefox）</a></p>
<p><a href="http://blog.sharplab.net/wp-content/uploads/2008/07/image9.png" rel="lightbox"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="196" alt="image" src="http://blog.sharplab.net/wp-content/uploads/2008/07/image-thumb9.png" width="324" align="right" border="0" /></a> これを使えば、</p>
<ol>
<li>英語ページをブラウズ </li>
<li>分からない単語に出会う </li>
<li>その単語を検索バーにD&amp;D </li>
<li>検索結果のページからマイリストに登録 </li>
<li>分からなかった単語リストが出来て、しかもiKnowで復習できるので(゜Д゜)ウマー </li>
</ol>
<p>となれる。</p>
<p>検索エンジンの切り替えが面倒だ、という場合は、コンテキストメニューから検索できるようにする<a href="https://addons.mozilla.org/ja/firefox/addon/240">Context Search</a>という拡張を入れれば幸せになれるかも知れない。</p>
<p>なおこのOpenSearchプラグインはIEでは使用不能。iKnowが対応していないのか検索結果ページを上手く表示できない。残念…。よってIEコンポーネントブラウザであるSleipnir、Lunascape等も同様。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/07/26/316/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SearchQueryGenerator for Lunascape</title>
		<link>http://blog.sharplab.net/blog/2008/07/10/275/</link>
		<comments>http://blog.sharplab.net/blog/2008/07/10/275/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 16:11:02 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[IEExtention]]></category>
		<category><![CDATA[Lunascape]]></category>
		<category><![CDATA[SearchQueryGenerator]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/ieextention/275/</guid>
		<description><![CDATA[※SearchQueryGenerator for MarineToolbarはこちら。 これは何？ ウェブページ上の検索フォームからLunascape用の検索クエリ文字列を生成するユーティリティです。検索エンジンリストを編集する助けとなればと思い作成しました。Lunascapeプラグインコンテストへ応募するために制作した作品の一つです。但しこの作品については、応募用件を満たさなかったために審査の対象となりませんでしたが…。 ダウンロード SearchQueryGeneratorforLunascapeInstaller.zip 動作環境 win版IE6.0以上,LunascapeがインストールされているPC。 インストール方法 ダウンロードしたファイルを展開して、 SearchQueryGeneratorInstaller.msiを実行してください。 実行後、Lunascapeを再起動してください。 アンインストール方法 コントロールパネルのプログラムの追加と削除から削除してください。 使用方法 1.Lunascapeに追加したい検索エンジンの検索語入力欄上で右クリック。 2.「検索クエリを生成」をクリック。 3.検索ボタン毎に検索クエリ文字列のリンクが生成されるので、それをLunascapeの設定バーの検索エンジンツリーにドラッグ＆ドロップ。 4.必要に応じて検索エンジン名をリネーム。 注意点 検索が行われる前にJavascriptで前処理を行っているFormの場合、正常に検索クエリが生成できない場合があります。その際はJavaScriptの実行を一旦OFFにしてから検索クエリの生成を行うと正常に生成できる場合があります。お試しください。 更新履歴 2008/07/10 SharpLab.に公開場所を移転。 2008/03/09 はてなダイアリーに公開場所を移転。 2007/12/23 公開開始。 ※Lunascapeでは、右下のアイコンからス・クリプトの実行を切り替えることが出来ます。]]></description>
			<content:encoded><![CDATA[</p>
<p>※SearchQueryGenerator for MarineToolbarは<a href="http://blog.sharplab.net/computer/scripting/ieextention/268/">こちら</a>。</p>
<h3>これは何？</h3>
<p>ウェブページ上の検索フォームからLunascape用の検索クエリ文字列を生成するユーティリティです。検索エンジンリストを編集する助けとなればと思い作成しました。Lunascapeプラグインコンテストへ応募するために制作した作品の一つです。但しこの作品については、応募用件を満たさなかったために審査の対象となりませんでしたが…。</p>
<h3>ダウンロード</h3>
<p><a href="http://depot.sharplab.net/IEExtention/SearchQueryGeneratorforLunascapeInstaller.zip">SearchQueryGeneratorforLunascapeInstaller.zip</a></p>
<h3>動作環境</h3>
<p>win版IE6.0以上,LunascapeがインストールされているPC。</p>
<h3>インストール方法</h3>
<p>ダウンロードしたファイルを展開して、    <br />SearchQueryGeneratorInstaller.msiを実行してください。     <br />実行後、Lunascapeを再起動してください。</p>
<h3>アンインストール方法</h3>
<p>コントロールパネルのプログラムの追加と削除から削除してください。</p>
<h3>使用方法</h3>
</p>
<p>1.Lunascapeに追加したい検索エンジンの検索語入力欄上で右クリック。    <br />2.「検索クエリを生成」をクリック。     <br /><a href="http://blog.sharplab.net/wp-content/uploads/2008/07/image.png" rel="lightbox"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="139" alt="image" src="http://blog.sharplab.net/wp-content/uploads/2008/07/image-thumb.png" width="244" border="0" /></a>     <br />3.検索ボタン毎に検索クエリ文字列のリンクが生成されるので、それをLunascapeの設定バーの検索エンジンツリーにドラッグ＆ドロップ。     <br /><a href="http://blog.sharplab.net/wp-content/uploads/2008/07/image1.png" rel="lightbox"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="149" alt="image" src="http://blog.sharplab.net/wp-content/uploads/2008/07/image-thumb1.png" width="244" border="0" /></a>     <br />4.必要に応じて検索エンジン名をリネーム。</p>
<h3>注意点</h3>
<p>検索が行われる前にJavascriptで前処理を行っているFormの場合、正常に検索クエリが生成できない場合があります。その際はJavaScriptの実行を一旦OFFにしてから検索クエリの生成を行うと正常に生成できる場合があります。お試しください。</p>
<p><a href="http://blog.sharplab.net/wp-content/uploads/2008/07/image2.png" rel="lightbox"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="122" alt="image" src="http://blog.sharplab.net/wp-content/uploads/2008/07/image-thumb2.png" width="244" border="0" /></a> </p>
<h3>更新履歴</h3>
<ul>
<li>2008/07/10 SharpLab.に公開場所を移転。 </li>
<li>2008/03/09 はてなダイアリーに公開場所を移転。 </li>
<li>2007/12/23 公開開始。 </li>
</ul>
<p>※Lunascapeでは、右下のアイコンからス・クリプトの実行を切り替えることが出来ます。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/07/10/275/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SearchQueryGenerator for MarineToolbar</title>
		<link>http://blog.sharplab.net/blog/2008/07/09/268/</link>
		<comments>http://blog.sharplab.net/blog/2008/07/09/268/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 09:02:42 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[IEExtention]]></category>
		<category><![CDATA[MarineToolbar]]></category>
		<category><![CDATA[SearchQueryGenerator]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/ieextention/268/</guid>
		<description><![CDATA[※SearchQueryGenerator for Lunascapeはこちら。 これは何？ ウェブページ上の検索フォームからMarineToolbar用の検索クエリ文字列を生成し、MarineToolbarの検索エンジンリストに追加する機能を提供するユーティリティです。 ダウンロード SearchQueryGeneratorforMarineToolbarSetup.zip 動作環境 win版IE6.0以上,MarineToolbarがインストールされているPC。 インストール方法 ダウンロードしたファイルを展開して、 SearchQueryGeneratorSetup.msiを実行してください。 アンインストール方法 コントロールパネルのプログラムの追加と削除から削除してください。 使用方法 1 任意の検索フォーム上で右クリックして、[Marine Toolbarに追加]を選択。 2 必要に応じてパラメータの変更を行う。 ※プロパティの説明参照 3 登録された検索エンジンは、Rootフォルダ直下に保存されます。 プロパティの説明 項目 説明 タイトル MarineToolbarの名前欄に対応する項目です。 文字コード 文字コードです。値を変更する必要はありません。 メソッド 送信時のメソッドを指定します。値を変更する必要はありません。 送信先 MarineToolbarのURL欄に対応する項目です。なお、get形式の場合でも&#34;?&#34;以降の文字列は表示されません。 referer 送信時のrefererを指定します。デフォルトでは無効になっており、使用する場合はcheckboxから有効にしてください。 検索語代入先 検索語が代入されるテキストBoxを選択します。初期値はFormの中で先頭のTextタイプのElementになります。 検索ボタン 検索時に使用されるボタンを選択します。 例えば、Googleの場合、[Google検索][I`m feeling Lucky]と二つのボタンが定義されていますが、このように送信ボタンが複数ある場合に使用するオプションです。 エレメントの確認 エレメントの確認ボタンを押すと、選択されているコントロールの色が反転しますので、それで対応しているコントロールを判断すると良いでしょう。 &#160; 注意点 検索が行われる前にJavascriptで前処理を行っているFormの場合、正常に検索クエリが生成できない場合があります。その際はJavaScriptの実行を一旦OFFにしてから検索クエリの生成を行うと正常に生成できる場合があります。お試しください。 更新履歴 2008/07/09 SharpLab.に公開場所を移転。 2007/04/01 SearchQueryGenerator for MarineToobar公開。 [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>※SearchQueryGenerator for Lunascapeは<a href="http://blog.sharplab.net/computer/scripting/ieextention/275/">こちら</a>。</p>
<h3>これは何？</h3>
<p>ウェブページ上の検索フォームからMarineToolbar用の検索クエリ文字列を生成し、MarineToolbarの検索エンジンリストに追加する機能を提供するユーティリティです。</p>
<h3>ダウンロード</h3>
<p> <a href="http://depot.sharplab.net/IEExtention/SearchQueryGeneratorforMarineToolbarSetup.zip">SearchQueryGeneratorforMarineToolbarSetup.zip</a><br />
<h3>動作環境</h3>
<p> win版IE6.0以上,MarineToolbarがインストールされているPC。<br />
<h3>インストール方法</h3>
<p> ダウンロードしたファイルを展開して、   <br />SearchQueryGeneratorSetup.msiを実行してください。<br />
<h3>アンインストール方法</h3>
<p> コントロールパネルのプログラムの追加と削除から削除してください。<br />
<h3>使用方法</h3>
<p>1    <br />任意の検索フォーム上で右クリックして、[Marine Toolbarに追加]を選択。</p>
<p><a href="http://blog.sharplab.net/wp-content/uploads/2008/07/formmakerformarinetoolbar-contextmenu.png" rel="lightbox"><img title="FormMakerforMarineToolbar_contextmenu" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="289" alt="FormMakerforMarineToolbar_contextmenu" src="http://blog.sharplab.net/wp-content/uploads/2008/07/formmakerformarinetoolbar-contextmenu-thumb.png" width="266" /></a></p>
<p>2    <br />必要に応じてパラメータの変更を行う。     <br /><img title="FormMakerforMarineToolbar" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="262" alt="FormMakerforMarineToolbar" src="http://blog.sharplab.net/wp-content/uploads/2008/07/formmakerformarinetoolbar.png" width="304" /><a href="#propertyDiscription">※プロパティの説明参照</a></p>
<p>3    <br />登録された検索エンジンは、Rootフォルダ直下に保存されます。</p>
<p><a href="http://blog.sharplab.net/wp-content/uploads/2008/07/marinetoolbar-menu.png" rel="lightbox"><img title="MarineToolbar_menu" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="261" alt="MarineToolbar_menu" src="http://blog.sharplab.net/wp-content/uploads/2008/07/marinetoolbar-menu-thumb.png" width="264" /></a> </p>
<h3><a name="property">プロパティの説明</a></h3>
</p>
</p>
</p>
<p> <a name="propertyDiscription"><br />
<table style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" cellspacing="0" cellpadding="2" width="567">
<tbody>
<tr>
<th valign="top" width="125">項目</th>
<th valign="top" width="440">説明</th>
</tr>
<tr>
<td valign="top" width="125">タイトル</td>
<td valign="top" width="440">MarineToolbarの名前欄に対応する項目です。</td>
</tr>
<tr>
<td valign="top" width="125">文字コード            </td>
<td valign="top" width="440">文字コードです。値を変更する必要はありません。</td>
</tr>
<tr>
<td valign="top" width="125">メソッド</td>
<td valign="top" width="440">送信時のメソッドを指定します。値を変更する必要はありません。</td>
</tr>
<tr>
<td valign="top" width="125">送信先</td>
<td valign="top" width="440">MarineToolbarのURL欄に対応する項目です。なお、get形式の場合でも&quot;?&quot;以降の文字列は表示されません。</td>
</tr>
<tr>
<td valign="top" width="125">referer</td>
<td valign="top" width="440">送信時のrefererを指定します。デフォルトでは無効になっており、使用する場合はcheckboxから有効にしてください。</td>
</tr>
<tr>
<td valign="top" width="125">検索語代入先            </td>
<td valign="top" width="440">検索語が代入されるテキストBoxを選択します。初期値はFormの中で先頭のTextタイプのElementになります。</td>
</tr>
<tr>
<td valign="top" width="125">検索ボタン</td>
<td valign="top" width="440">検索時に使用されるボタンを選択します。            <br />例えば、Googleの場合、[Google検索][I`m feeling Lucky]と二つのボタンが定義されていますが、このように送信ボタンが複数ある場合に使用するオプションです。</td>
</tr>
<tr>
<td valign="top" width="125">エレメントの確認</td>
<td valign="top" width="440">エレメントの確認ボタンを押すと、選択されているコントロールの色が反転しますので、それで対応しているコントロールを判断すると良いでしょう。 </td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h3>注意点</h3>
<p>検索が行われる前にJavascriptで前処理を行っているFormの場合、正常に検索クエリが生成できない場合があります。その際はJavaScriptの実行を一旦OFFにしてから検索クエリの生成を行うと正常に生成できる場合があります。お試しください。      </p>
<h3>更新履歴</h3>
<ul>
<li>2008/07/09 SharpLab.に公開場所を移転。 </li>
<li>2007/04/01 SearchQueryGenerator for MarineToobar公開。 </li>
<li>2005/03/17 FormMaker for MarineToolbar ver2.31公開。 </li>
<li>2004/11/21 FormMaker for MarineToolbar ver2.3公開。 </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/07/09/268/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>本気でやるならMozillaアプリは避けてSilverlightアプリを作るべき</title>
		<link>http://blog.sharplab.net/blog/2008/05/18/154/</link>
		<comments>http://blog.sharplab.net/blog/2008/05/18/154/#comments</comments>
		<pubDate>Sat, 17 May 2008 18:14:01 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[FirefoxExtention]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://blog.sharplab.net/computer/scripting/firefoxextention/%e6%9c%ac%e6%b0%97%e3%81%a7%e3%82%84%e3%82%8b%e3%81%aa%e3%82%89mozilla%e3%82%a2%e3%83%97%e3%83%aa%e3%81%af%e9%81%bf%e3%81%91%e3%81%a6silverlight%e3%82%a2%e3%83%97%e3%83%aa%e3%82%92%e4%bd%9c%e3%8</guid>
		<description><![CDATA[本気でやるならクロスプラットフォームは避けてMozillaアプリを作るべき-hogehoge うーん、そうかな。自分もクロスブラウザスクリプティングの労に嫌気が差して、Firefoxの拡張制作に逃げ込んだ経験がある。でも逃げ込んだ先のMDCのドキュメント漁ってたら仕様変更・方針転換の痕跡がゴロゴロあって、サンプルコードとか読んでも、バージョン毎に処理分けしてたりと、クロスブラウザスクリプティングと大差ない面倒を抱え込まなきゃいけないことに気づいて萎えてしまった。 何で後方互換性という基本的なことさえ担保されないのか。 色々事情は有るのかもしれないけど、ブラウザがバージョンアップするたびに動作しなくなった拡張が死屍累々・・・、という状況を許容しているMozillaとは、とてもじゃないが付き合いきれないと自分は思った。やたらと乱発される仕様変更によって、非生産的な対応作業を、ユーザーと、拡張作者に強いるMozillaのやり方は賢いとは思えない 対照的なエピソードがMSにはある。Windowsリリース時の話だ。 スポルスキー氏は2004年にマイクロソフトの基本的な戦略について興味深いことを書いている。DOSからWindowsへ移行する時期に、バギーなアプリケーションをWindows上で走らせるためにアドホックな機能追加を行っていたと証言しているのだ（参考リンク） その具体例に驚かされる。往年のヒットゲーム「SimCity」はメモリの扱いで致命的なバグがあった。開放したメモリを、開放した直後に再び使ってしまうというバグだ。これは1度に1つのアプリケーションしか動かないシングルタスクのDOSでは問題がないが、マルチタスク環境のWindowsでは重大な問題を引き起こす。開放したメモリは、すぐに別のアプリケーションによって利用されるからだ。このためSimCityはWindows上でクラッシュを繰り返したという。SimCityのバグの原因をディスアセンブルして突き止めたマイクロソフトは、SimCityの稼働を検知したらメモリアロケータを特殊なモードで走らせるという機能追加を行った。 これは特殊な話ではなく、Windowsを新バージョンにアップデートしたときに、あらゆるアプリーションが稼働するよう同社のテストチームは非常に多くの&#8220;回避策&#8221;をWindows上に仕込んでいったという。たとえアプリーション側に問題があったとしても、それはWindowsユーザーには関係ない。ユーザーは、Windowsをアップデートしたら自分のアプリケーションが動かなくなったと考える。問題のあるアプリケーション開発者全員に修正させることができない以上、Windows側で回避策を打つ、というアプローチだ。 Webブラウザ戦争でAcidレースの局地戦が白熱 － ＠IT どうだろう？今でもこのカルチャーがMSに受け継がれているかは知らない。IE8では原則に反してドラスティックな変更が入るかもしれないことがこの記事でも言われている。だから、IEを勧めたいのではない。だが、自分の知る限り、.netの世界ではライブラリの後方互換性が大きく破壊されることはこれまで起きていない。設計が良いのだろう。というわけで、Silverlightはどうだろう？Silverlightなら、プレーヤーのバージョンアップが入っても、まず間違いなく後方互換性は担保される。レンタリングするのはMS製のエンジンでしか有り得ないのでクロスエンジン互換性を気にすることもない。Silverlightなら、色々な人を悩ませてきた、色々な問題を解決してくれる&#8230;筈。 何アホ言ってたんだ自分・・・。猛省。]]></description>
			<content:encoded><![CDATA[<p><a href="http://d.hatena.ne.jp/teramako/20080516/p1" name="p1">本気でやるならクロスプラットフォームは避けてMozillaアプリを作るべき-hogehoge</a></p>
<p>うーん、そうかな。自分もクロスブラウザスクリプティングの労に嫌気が差して、Firefoxの拡張制作に逃げ込んだ経験がある。でも逃げ込んだ先のMDCのドキュメント漁ってたら仕様変更・方針転換の痕跡がゴロゴロあって、サンプルコードとか読んでも、バージョン毎に処理分けしてたりと、クロスブラウザスクリプティングと大差ない面倒を抱え込まなきゃいけないことに気づいて萎えてしまった。</p>
<p>何で後方互換性という基本的なことさえ担保されないのか。</p>
<p>色々事情は有るのかもしれないけど、ブラウザがバージョンアップするたびに動作しなくなった拡張が死屍累々・・・、という状況を許容しているMozillaとは、とてもじゃないが付き合いきれないと自分は思った。やたらと乱発される仕様変更によって、非生産的な対応作業を、ユーザーと、拡張作者に強いるMozillaのやり方は賢いとは思えない</p>
<p><strike>対照的なエピソードがMSにはある。Windowsリリース時の話だ。</strike></p>
<blockquote><p><strike>スポルスキー氏は2004年にマイクロソフトの基本的な戦略について興味深いことを書いている。DOSからWindowsへ移行する時期に、バギーなアプリケーションをWindows上で走らせるためにアドホックな機能追加を行っていたと証言しているのだ（</strike><a href="http://www.joelonsoftware.com/articles/APIWar.html"><strike>参考リンク</strike></a><strike>）</strike></p>
<p><strike>その具体例に驚かされる。往年のヒットゲーム「SimCity」はメモリの扱いで致命的なバグがあった。開放したメモリを、開放した直後に再び使ってしまうというバグだ。これは1度に1つのアプリケーションしか動かないシングルタスクのDOSでは問題がないが、マルチタスク環境のWindowsでは重大な問題を引き起こす。開放したメモリは、すぐに別のアプリケーションによって利用されるからだ。このためSimCityはWindows上でクラッシュを繰り返したという。SimCityのバグの原因をディスアセンブルして突き止めたマイクロソフトは、SimCityの稼働を検知したらメモリアロケータを特殊なモードで走らせるという機能追加を行った。</strike></p>
<p><strike>これは特殊な話ではなく、Windowsを新バージョンにアップデートしたときに、あらゆるアプリーションが稼働するよう同社のテストチームは非常に多くの&#8220;回避策&#8221;をWindows上に仕込んでいったという。たとえアプリーション側に問題があったとしても、それはWindowsユーザーには関係ない。ユーザーは、Windowsをアップデートしたら自分のアプリケーションが動かなくなったと考える。問題のあるアプリケーション開発者全員に修正させることができない以上、Windows側で回避策を打つ、というアプローチだ。</strike></p>
<p><a href="http://www.atmarkit.co.jp/news/200803/27/acid.html" target="_blank"><strike>Webブラウザ戦争でAcidレースの局地戦が白熱 － ＠IT</strike></a><strike> </strike></p>
</blockquote>
<p><strike>どうだろう？今でもこのカルチャーがMSに受け継がれているかは知らない。IE8では原則に反してドラスティックな変更が入るかもしれないことがこの記事でも言われている。だから、IEを勧めたいのではない。だが、自分の知る限り、.netの世界ではライブラリの後方互換性が大きく破壊されることはこれまで起きていない。設計が良いのだろう。というわけで、Silverlightはどうだろう？Silverlightなら、プレーヤーのバージョンアップが入っても、まず間違いなく後方互換性は担保される。レンタリングするのはMS製のエンジンでしか有り得ないのでクロスエンジン互換性を気にすることもない。Silverlightなら、色々な人を悩ませてきた、色々な問題を解決してくれる&#8230;筈。</strike></p>
<p>何アホ言ってたんだ自分・・・。猛省。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/05/18/154/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XPathGraphでiKnowの進捗状況を描く</title>
		<link>http://blog.sharplab.net/blog/2008/05/17/112/</link>
		<comments>http://blog.sharplab.net/blog/2008/05/17/112/#comments</comments>
		<pubDate>Fri, 16 May 2008 15:44:58 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[iKnow]]></category>
		<category><![CDATA[WebScripting]]></category>

		<guid isPermaLink="false">http://www.sharplab.net/?p=112</guid>
		<description><![CDATA[id:amachangさんによる紹介記事を読んで知ったXPathGraphを使って、自分のiKnowの学習中アイテム数と学習完了アイテム数を表示するグラフを描いてみた。木曜の1限が休講になって、ボケっとしているうちに思いついたので勢いで書いたのだが、グラフが描かれるまで待ってたのでエントリが遅くなってしまった。 さて、XPathGraphはURLで指定したデータソースに対して、1日1回XPath式を実行し、得られる数字をグラフにしてくれるというサービス。 iKnowの学習中アイテム数は、Flashで作成されたブログパーツが使用しているXMLファイルから取得できることはiKnowLastAccessTimeCheckerを書いた時に確認済。これを使えばすぐ終わるかなと考えていたのだが…、XPathGraphは困ったことに、XMLファイルを解さないらしい。XPathなのに。…XPathなのに。その訳を調べてみると、どうやらXPathGraphはXPathの処理系にHTML::TreeBuilder::XPathとかいうHTML処理用？の奴を使っているらしく、XMLでもHTMLとして処理しようとする為らしい。仕方ないのでYahoo pipesという米Yahoo!のサービスと組み合わせてみようとしたところ、今度はiKnowのXMLファイルにXML宣言が無いせいでパースエラー。／(^o^)＼ナンテコッタイ という訳で最終的にはpipeにあたるものをphpで自作。要はXMLからデータを取ってきて、HTML化すれば良いわけだから、iKnowLastAccessTimeCheckerの時と同じ要領。 &#60;?php function getScores($id){ $req = 'http://www.iknow.co.jp/assets/user/' . $id . '/iknow_badge.xml'; $iknow = @simplexml_load_file($req); if($iknow===false){ echo('パースエラー'); exit(); } $studying = $iknow-&#62;history-&#62;fragment-&#62;score[0]; $finished = $iknow-&#62;history-&#62;fragment-&#62;score[1]; return array("studying"=&#62;$studying, "finished"=&#62;$finished); } ?&#62; &#60;?php $id = htmlspecialchars($_GET['id']); ?&#62; &#60;!DOCTYPE html PUBLIC '-/W3C/DTD XHTML 1.0 Strict/EN' 'http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'&#62; &#60;html xmlns='http:/www.w3.org/1999/xhtml' xml:lang='ja' lang='ja'&#62; &#60;head&#62; &#60;meta http-equiv='Content-Type' content='text/html; charset=utf-8'&#62; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://d.hatena.ne.jp/amachang/">id:amachang</a>さんによる<a href="http://d.hatena.ne.jp/amachang/20080411/1207903422">紹介記事</a>を読んで知った<a href="http://xpath.kayac.com/">XPathGraph</a>を使って、自分のiKnowの学習中アイテム数と学習完了アイテム数を表示するグラフを描いてみた。木曜の1限が休講になって、ボケっとしているうちに思いついたので勢いで書いたのだが、グラフが描かれるまで待ってたのでエントリが遅くなってしまった。</p>
<p>さて、XPathGraphはURLで指定したデータソースに対して、1日1回XPath式を実行し、得られる数字をグラフにしてくれるというサービス。    <br />iKnowの学習中アイテム数は、Flashで作成されたブログパーツが使用しているXMLファイルから取得できることは<a href="http://blog.sharplab.net/star/83/">iKnowLastAccessTimeChecker</a>を書いた時に確認済。これを使えばすぐ終わるかなと考えていたのだが…、XPathGraphは困ったことに、XMLファイルを解さないらしい。XPathなのに。…XPathなのに。その訳を調べてみると、どうやらXPathGraphはXPathの処理系にHTML::TreeBuilder::XPathとかいうHTML処理用？の奴を使っているらしく、XMLでもHTMLとして処理しようとする為らしい。仕方ないのでYahoo pipesという米Yahoo!のサービスと組み合わせてみようとしたところ、今度はiKnowのXMLファイルにXML宣言が無いせいでパースエラー。／(^o^)＼ナンテコッタイ</p>
<p>という訳で最終的にはpipeにあたるものをphpで自作。要はXMLからデータを取ってきて、HTML化すれば良いわけだから、<a href="http://blog.sharplab.net/star/83/">iKnowLastAccessTimeChecker</a>の時と同じ要領。</p>
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6fba91d7-23a8-4078-b22f-a163bf91337e" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="php">&lt;?php
function getScores($id){

    $req = 'http://www.iknow.co.jp/assets/user/' . $id . '/iknow_badge.xml';

    $iknow = @simplexml_load_file($req);
    if($iknow===false){
        echo('パースエラー');
        exit();
    }

    $studying = $iknow-&gt;history-&gt;fragment-&gt;score[0];
    $finished = $iknow-&gt;history-&gt;fragment-&gt;score[1];

    return array("studying"=&gt;$studying, "finished"=&gt;$finished);
}

?&gt;

&lt;?php
    $id = htmlspecialchars($_GET['id']);
?&gt;

&lt;!DOCTYPE html PUBLIC '-/W3C/DTD XHTML 1.0 Strict/EN'
    'http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'&gt;
&lt;html xmlns='http:/www.w3.org/1999/xhtml' xml:lang='ja' lang='ja'&gt;
    &lt;head&gt;
        &lt;meta http-equiv='Content-Type' content='text/html; charset=utf-8'&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;p&gt;

&lt;?php
    if(!empty($id) &amp;&amp; (strpos($id,'/')===false)){
        $scores= getScores($id);
        echo('&lt;ul&gt;');
            echo('&lt;li class="studying"&gt;');
                echo($scores["studying"]);
            echo('&lt;/li&gt;');
            echo('&lt;li class="finished"&gt;');
                echo($scores["finished"]);
            echo('&lt;/li&gt;');
        echo('&lt;/ul&gt;');
    }
?&gt;

        &lt;/p&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>これをデポに設置したうえで、XPathGraphから以下のようにidをパラメータとして渡して呼び出し。 </p>
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a27a4e45-0da5-412f-b974-ef3d426a4baf" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="xml">http://depot.sharplab.net/php/iknow/PipeToXPathGraph.php?id=shiroica</pre>
</div>
<p>XPathの方はこれだけ。</p>
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:3cb71c4a-24e7-4766-a111-ebdfa177a9c0" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="c#">//li[1]</pre>
</div>
<p>さて、<a href="http://xpath.kayac.com/graph/nNvHchoi3RGaDA">出来たグラフ</a>。まだ二点分のデータしかない（5/17時点）けど、まぁ動作しているのが確認できる。</p>
<p><a href="http://xpath.kayac.com/graph/nNvHchoi3RGaDA"><img alt="shiroicaのiKnow学習中アイテム数" src="http://graph.hatena.ne.jp/xpathgraph/graph?graphname=nNvHchoi3RGaDA" /></a> </p>
<p>そして学習完了アイテム数。</p>
<p><a href="http://xpath.kayac.com/graph/utK2bi4i3RGaYg"><img height="90" alt="shiroicaのiKnow学習完了アイテム数" src="http://graph.hatena.ne.jp/xpathgraph/graph?graphname=utK2bi4i3RGaYg" width="130" /></a></p>
<p>これで進捗状況が一目で分かるようになった。さぁがんばれ自分。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/05/17/112/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iKnowLastAccessTimeChecker</title>
		<link>http://blog.sharplab.net/blog/2008/05/03/83/</link>
		<comments>http://blog.sharplab.net/blog/2008/05/03/83/#comments</comments>
		<pubDate>Sat, 03 May 2008 02:03:12 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[iKnow]]></category>
		<category><![CDATA[Star]]></category>
		<category><![CDATA[WebScripting]]></category>

		<guid isPermaLink="false">http://www.sharplab.net/computer/scripting/webscripting/iknowlastaccesstimechecker/</guid>
		<description><![CDATA[一般に公開するphpスクリプトとしてはWordPressのテンプレートを除き、記念すべき第一弾かな？ 「iKnowのBlogパーツの通信を覗いてみた」というエントリで書いたように、iKnowではBlogパーツのために、ユーザーの学習中アイテム数などをxmlファイル形式で外部に公開している。今回は、その中の最終学習日時を表示するphpスクリプトを書いてみた。 &#60;?php function getLastAccesseTime($id){ $req = 'http://www.iknow.co.jp/assets/user/' . $id . '/iknow_badge.xml'; $iknow = @simplexml_load_file($req); if($iknow===false){ echo('パースエラー'); exit(); } $date = strtotime($iknow-&#62;history-&#62;fragment['date']); return $date; } ?&#62; &#60;?php $id = htmlspecialchars($_GET['id']); ?&#62; &#60;!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'&#62; &#60;html xmlns='http://www.w3.org/1999/xhtml' xml:lang='ja' lang='ja'&#62; &#60;head&#62; &#60;meta http-equiv='Content-Type' content='text/html; charset=utf-8'&#62; &#60;title&#62;iKnowLastAccessTimeChecker - &#60;?php echo($id); ?&#62; &#60;/title&#62; &#60;/head&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>一般に公開するphpスクリプトとしてはWordPressのテンプレートを除き、記念すべき第一弾かな？</p>
<p>「<a href="http://blog.sharplab.net/star/70/">iKnowのBlogパーツの通信を覗いてみた</a>」というエントリで書いたように、iKnowではBlogパーツのために、ユーザーの学習中アイテム数などをxmlファイル形式で外部に公開している。今回は、その中の最終学習日時を表示するphpスクリプトを書いてみた。</p>
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:912a1335-d302-4a33-967e-f0317275b5f7" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="php">&lt;?php
function getLastAccesseTime($id){

    $req = 'http://www.iknow.co.jp/assets/user/' . $id . '/iknow_badge.xml';

    $iknow = @simplexml_load_file($req);
    if($iknow===false){
        echo('パースエラー');
        exit();
    }

    $date = strtotime($iknow-&gt;history-&gt;fragment['date']);

    return $date;
}

?&gt;

&lt;?php
    $id = htmlspecialchars($_GET['id']);
?&gt;

&lt;!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
    'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'&gt;
&lt;html xmlns='http://www.w3.org/1999/xhtml' xml:lang='ja' lang='ja'&gt;
    &lt;head&gt;
        &lt;meta http-equiv='Content-Type' content='text/html; charset=utf-8'&gt;
        &lt;title&gt;iKnowLastAccessTimeChecker -
            &lt;?php
                echo($id);
            ?&gt;
        &lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;p&gt;

&lt;?php
    if(!empty($id) &amp;amp;&amp;amp; (strpos($id,'/')===false)){
        $accessedTime = getLastAccesseTime($id);
        echo(date('Y年m月d日 H：i：s',$accessedTime));
    }
?&gt;

        &lt;/p&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>こんな感じ。get変数idを与えると、そのidを持つユーザーの最終アクセス日時を表示する。で、このスクリプトを早速デポにUPしてみたので、その検索窓を設置してみる。</p>
<form action="http://depot.sharplab.net/php/iknow/LastAccessTimeChecker.php" method="get">
<input name="id" />
<input type="submit" /> </form>
<p>自分のIDで試してみた例：<br />
  <br /><a title="http://depot.sharplab.net/php/iknow/LastAccessTimeChecker.php?id=shiroica" href="http://depot.sharplab.net/php/iknow/LastAccessTimeChecker.php?id=shiroica">http://depot.sharplab.net/php/iknow/LastAccessTimeChecker.php?id=shiroica</a></p>
<p>脆弱性対策はDirectory Traversal対策位しか思いつかなかったけど、大丈夫かな？</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/05/03/83/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iKnowのBlogパーツの通信を覗いてみた</title>
		<link>http://blog.sharplab.net/blog/2008/05/01/70/</link>
		<comments>http://blog.sharplab.net/blog/2008/05/01/70/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 17:08:15 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[iKnow]]></category>
		<category><![CDATA[Star]]></category>
		<category><![CDATA[WebScripting]]></category>

		<guid isPermaLink="false">http://www.sharplab.net/star/iknow%e3%81%aeblog%e3%83%91%e3%83%bc%e3%83%84%e3%81%ae%e9%80%9a%e4%bf%a1%e3%82%92%e8%a6%97%e3%81%84%e3%81%a6%e3%81%bf%e3%81%9f/</guid>
		<description><![CDATA[飲み会などで中断を挟みながらも、なんとか順調にこなせているe-learningサイトのiKnow。このiKnowには、学習状況を表示できるBlogパーツがある。前回紹介した時に貼り付けたあれである。 で、今日はちょっとした好奇心からそのBlogパーツがサーバーと何を通信しているかを調べてみた。 使ったソフトはFiddler2。FiddlerはHTTP(s)トラフィックをモニタするためのツールで、ローカルプロキシとして実装されており、http://www.fiddlertool.com/fiddler/からDL可能。実行すると、自動的にアタッチされるので、左側のリストから任意のセッションを選択して内容を覗くことができる。 さて、Fiddlerで覗いてみると、それらしいリクエストとして http://www.iknow.co.jp/assets/user/shiroica/iknow_badge.xml?time_stamp=1209570292344 というものがあった。GETメソッドでtime_stamp=1209570292344というデータが送られているが、これは名前の通り、リクエストを送信する時点でのUNIXタイムスタンプ（ミリ秒単位）のようである。但し、この値を操作しても、返ってくる結果は変わらないようであるが。（5/2追記：よく考えたらキャッシュ対策ですね） で、そのボディの内容について。先のリクエストに対して返却されるデータは、ニコ動同様にXML形式であった。具体的には以下のように。 &#60;iknow&#62; &#60;version&#62;1.0&#60;/version&#62; &#60;title&#62;iKnow! バッジ&#60;/title&#62; &#60;link&#62;http://www.iknow.co.jp/clickback/iknow_public_badge/shiroica&#60;/link&#62; &#60;avatar&#62;/assets/users/49q1_small.jpg&#60;/avatar&#62; &#60;language&#62;ja&#60;/language&#62; &#60;description&#62;iKnow! で一緒に学習しよう&#60;/description&#62; &#60;history application="iknow"&#62; &#60;fragment date="Wed Apr 30 13:11:46 UTC 2008"&#62; &#60;score label="学習中アイテム"&#62;706&#60;/score&#62; &#60;score label="学習完了アイテム"&#62;9&#60;/score&#62; &#60;/fragment&#62; &#60;/history&#62; &#60;/iknow&#62; ということは、ユーザー名から母国語、アイコンのURL、最終学習日時（UTCであることに注意）、学習中アイテム数、学習完了アイテム数がとれるようである。 アイコンのURLと、学習中アイテム数、学習完了アイテム数はBlogパーツ上でも表示されるので、通信されているとは思っていたが、最終学習日時まで通信しているとは思わなかった。最終学習日時はプロフィールページなどでも公開されていないので、予想外の珍しいデータがとれたといえる。 「見て見て、ちゃんと勉強してるんだよ！」という意図でBlogパーツを貼り付けている自分みたいなタイプの人間は、こっちのデータも表示するようにできたらなぁと思ったりする。そのうちPHPでXMLを取得してきて最終学習日時を表示するスクリプトでも書いてみるかな。]]></description>
			<content:encoded><![CDATA[<p>飲み会などで中断を挟みながらも、なんとか順調にこなせているe-learningサイトのiKnow。このiKnowには、学習状況を表示できるBlogパーツがある。前回紹介した時に貼り付けたあれである。</p>
<p><a rel="lightbox" href="http://blog.sharplab.net/wp-content/uploads/2008/05/image-300x181.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="149" alt="image-300x181" src="http://blog.sharplab.net/wp-content/uploads/2008/05/image-300x181-thumb.png" width="244" align="left" border="0" /></a> で、今日はちょっとした好奇心からそのBlogパーツがサーバーと何を通信しているかを調べてみた。</p>
<p>使ったソフトはFiddler2。FiddlerはHTTP(s)トラフィックをモニタするためのツールで、ローカルプロキシとして実装されており、<a title="http://www.fiddlertool.com/fiddler/" href="http://www.fiddlertool.com/fiddler/">http://www.fiddlertool.com/fiddler/</a>からDL可能。実行すると、自動的にアタッチされるので、左側のリストから任意のセッションを選択して内容を覗くことができる。</p>
<p>さて、Fiddlerで覗いてみると、それらしいリクエストとして</p>
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:dca82c73-d06c-470e-b307-84f643b6af37" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="c">http://www.iknow.co.jp/assets/user/shiroica/iknow_badge.xml?time_stamp=1209570292344</pre>
</div>
<p>というものがあった。GETメソッドでtime_stamp=1209570292344というデータが送られているが、これは名前の通り、リクエストを送信する時点でのUNIXタイムスタンプ（ミリ秒単位）のようである。但し、この値を操作しても、返ってくる結果は変わらないようであるが。（5/2追記：よく考えたらキャッシュ対策ですね）</p>
<p>で、そのボディの内容について。先のリクエストに対して返却されるデータは、ニコ動同様にXML形式であった。具体的には以下のように。</p>
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7201c5d8-a356-40f0-b277-c33c903ce6d7" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="xml">&lt;iknow&gt;
  &lt;version&gt;1.0&lt;/version&gt;
  &lt;title&gt;iKnow! バッジ&lt;/title&gt;
  &lt;link&gt;http://www.iknow.co.jp/clickback/iknow_public_badge/shiroica&lt;/link&gt;
  &lt;avatar&gt;/assets/users/49q1_small.jpg&lt;/avatar&gt;
  &lt;language&gt;ja&lt;/language&gt;
  &lt;description&gt;iKnow! で一緒に学習しよう&lt;/description&gt;
  &lt;history application="iknow"&gt;
    &lt;fragment date="Wed Apr 30 13:11:46 UTC 2008"&gt;
      &lt;score label="学習中アイテム"&gt;706&lt;/score&gt;
      &lt;score label="学習完了アイテム"&gt;9&lt;/score&gt;
    &lt;/fragment&gt;
  &lt;/history&gt;
&lt;/iknow&gt;</pre>
</div>
<p>ということは、ユーザー名から母国語、アイコンのURL、最終学習日時（UTCであることに注意）、学習中アイテム数、学習完了アイテム数がとれるようである。<br />
  <br />アイコンのURLと、学習中アイテム数、学習完了アイテム数はBlogパーツ上でも表示されるので、通信されているとは思っていたが、最終学習日時まで通信しているとは思わなかった。最終学習日時はプロフィールページなどでも公開されていないので、予想外の珍しいデータがとれたといえる。 </p>
<p>「見て見て、ちゃんと勉強してるんだよ！」という意図でBlogパーツを貼り付けている自分みたいなタイプの人間は、こっちのデータも表示するようにできたらなぁと思ったりする。そのうちPHPでXMLを取得してきて最終学習日時を表示するスクリプトでも書いてみるかな。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/05/01/70/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>入門　正規表現</title>
		<link>http://blog.sharplab.net/blog/2008/04/11/26/</link>
		<comments>http://blog.sharplab.net/blog/2008/04/11/26/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 14:41:33 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[Book]]></category>
		<category><![CDATA[Scribble]]></category>
		<category><![CDATA[WebScripting]]></category>

		<guid isPermaLink="false">http://www.sharplab.net/scribble/%e5%85%a5%e9%96%80%e3%80%80%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be/</guid>
		<description><![CDATA[「入門 正規表現」を買った。まだ読み始めたばかりであるが、なかなか分かりやすくて良い本である。正規表現は、これまでJScriptを処理系に、リファレンス片手に少々触ったことがあるだけなので、ここで規則をマスターしておきたい。バイト先で予告された仕事内容の一つに、正規表現を使った入力チェックをクライアントサイドとサーバーサイドの両方で行う、というのがあるので、この前買った「PHPサイバーテロの技法―攻撃と防御の実際」とともに、勉強していこうと思う。]]></description>
			<content:encoded><![CDATA[<p>「<a href="http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.co.jp%2F%25E5%2585%25A5%25E9%2596%2580-%25E6%25AD%25A3%25E8%25A6%258F%25E8%25A1%25A8%25E7%258F%25BE-%7E%25E6%25A4%259C%25E7%25B4%25A2%25E3%2583%25BB%25E7%25BD%25AE%25E6%258F%259B%25E3%2583%25BB%25E3%2583%2586%25E3%2582%25AD%25E3%2582%25B9%25E3%2583%2588%25E5%2587%25A6%25E7%2590%2586%25E3%2581%25AB%25E5%25BC%25B7%25E3%2581%258F%25E3%2581%25AA%25E3%2582%258B-%25E5%25B2%25A9%25E8%25B0%25B7-%25E5%25AE%258F%2Fdp%2F477413404X%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1207924011%26sr%3D8-2&amp;tag=sharplab-22&amp;linkCode=ur2&amp;camp=247&amp;creative=1211">入門 正規表現</a><img height="1" alt="" src="http://www.assoc-amazon.jp/e/ir?t=sharplab-22&amp;l=ur2&amp;o=9" width="1" border="0" />」を買った。まだ読み始めたばかりであるが、なかなか分かりやすくて良い本である。正規表現は、これまでJScriptを処理系に、リファレンス片手に少々触ったことがあるだけなので、ここで規則をマスターしておきたい。バイト先で予告された仕事内容の一つに、正規表現を使った入力チェックをクライアントサイドとサーバーサイドの両方で行う、というのがあるので、この前買った「<a href="http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.co.jp%2FPHP%25E3%2582%25B5%25E3%2582%25A4%25E3%2583%2590%25E3%2583%25BC%25E3%2583%2586%25E3%2583%25AD%25E3%2581%25AE%25E6%258A%2580%25E6%25B3%2595%25E2%2580%2595%25E6%2594%25BB%25E6%2592%2583%25E3%2581%25A8%25E9%2598%25B2%25E5%25BE%25A1%25E3%2581%25AE%25E5%25AE%259F%25E9%259A%259B-GIJOE%2Fdp%2F4883374718%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1207924715%26sr%3D1-1&amp;tag=sharplab-22&amp;linkCode=ur2&amp;camp=247&amp;creative=1211">PHPサイバーテロの技法―攻撃と防御の実際</a><img height="1" alt="" src="http://www.assoc-amazon.jp/e/ir?t=sharplab-22&amp;l=ur2&amp;o=9" width="1" border="0" />」とともに、勉強していこうと思う。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/04/11/26/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ニコ動の外部プレーヤーの自動再生方法</title>
		<link>http://blog.sharplab.net/blog/2008/04/02/20/</link>
		<comments>http://blog.sharplab.net/blog/2008/04/02/20/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 13:01:17 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[WebScripting]]></category>

		<guid isPermaLink="false">http://www.sharplab.net/computer/scripting/webscripting/%e3%83%8b%e3%82%b3%e5%8b%95%e3%81%ae%e5%a4%96%e9%83%a8%e3%83%97%e3%83%ac%e3%83%bc%e3%83%a4%e3%83%bc%e3%81%ae%e8%87%aa%e5%8b%95%e5%86%8d%e7%94%9f%e6%96%b9%e6%b3%95/</guid>
		<description><![CDATA[ニコ動の外部プレーヤーからの再生も、動画の再生数のカウンタを回すようだ。ということは、だ。外部プレーヤーに対して、読み込みと同時に自動再生させるように仕組み、それをページビューの多いページに張り付ければ、ビジターの数だけカウンタを回す工作が可能になるのではないだろうか？ と、いうことで実証コードを書いてみた。 &#60;embed type="application/x-shockwave-flash" id="nicoplayer" src="http://www.nicovideo.jp/swf/nicoplayer.swf?ts=1206973925" flashvars="fv_autoplay=1&#38;amp;thumbWatch=1&#38;amp;playerTimestamp=1206973925&#38;amp;v=sm1911846&#38;amp;thumbTitle=&#38;amp;thumbDescription=&#38;amp;thumbImage=&#38;amp;thumbPostedAt=&#38;amp;thumbPlayKey=1207198286.xBrJUYYRHY5hUTyx6wFoEdL4La4&#38;amp;mylist_counter=1140&#38;amp;movie_type=flv&#38;amp;wv_id=sm1911846&#38;amp;thumbWidth=485&#38;amp;thumbHeight=385" allowscriptaccess="always" bgcolor="#000000" quality="high" height="385" width="485"&#62; http://adfrontica.sakura.ne.jp/lab/test.htm どうだろう？読み込みと同時に再生が始まっただろうか？動画を張り付ける際に使うscriptが実際に吐き出すソースをFirefoxの「選択部分のソースを表示」という機能を使って取得したうえで、flashvars属性の中に、fv_autoplay=1というパラメータを付加したことで実現できた。もっとも、プレイキーが時間とともに変化するかもしれないから、実際に使うには改修する必要があるだろう。]]></description>
			<content:encoded><![CDATA[<p>ニコ動の外部プレーヤーからの再生も、動画の再生数のカウンタを回すようだ。ということは、だ。外部プレーヤーに対して、読み込みと同時に自動再生させるように仕組み、それをページビューの多いページに張り付ければ、ビジターの数だけカウンタを回す工作が可能になるのではないだろうか？</p>
<p>と、いうことで実証コードを書いてみた。</p>
<div class="csharpcode">
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:590b3a5c-5cd0-4fc3-ad05-1248ea0e9231" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="xml">&lt;embed type="application/x-shockwave-flash" id="nicoplayer" src="http://www.nicovideo.jp/swf/nicoplayer.swf?ts=1206973925" flashvars="fv_autoplay=1&amp;amp;thumbWatch=1&amp;amp;playerTimestamp=1206973925&amp;amp;v=sm1911846&amp;amp;thumbTitle=&amp;amp;thumbDescription=&amp;amp;thumbImage=&amp;amp;thumbPostedAt=&amp;amp;thumbPlayKey=1207198286.xBrJUYYRHY5hUTyx6wFoEdL4La4&amp;amp;mylist_counter=1140&amp;amp;movie_type=flv&amp;amp;wv_id=sm1911846&amp;amp;thumbWidth=485&amp;amp;thumbHeight=385" allowscriptaccess="always" bgcolor="#000000" quality="high" height="385" width="485"&gt;</pre>
</div>
<p><a title="http://adfrontica.sakura.ne.jp/lab/test.htm" href="http://adfrontica.sakura.ne.jp/lab/test.htm">http://adfrontica.sakura.ne.jp/lab/test.htm</a></p>
<p>どうだろう？読み込みと同時に再生が始まっただろうか？動画を張り付ける際に使うscriptが実際に吐き出すソースをFirefoxの「選択部分のソースを表示」という機能を使って取得したうえで、<span class="attr">flashvars属性の中に、</span><span class="kwrd">fv_autoplay=1というパラメータを付加したことで実現できた。もっとも、プレイキーが時間とともに変化するかもしれないから、実際に使うには改修する必要があるだろう。</span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/04/02/20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ニコ動でidやnicknameが読み出せた件の追補</title>
		<link>http://blog.sharplab.net/blog/2008/04/02/19/</link>
		<comments>http://blog.sharplab.net/blog/2008/04/02/19/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 12:39:41 +0000</pubDate>
		<dc:creator>shiroica</dc:creator>
				<category><![CDATA[WebScripting]]></category>

		<guid isPermaLink="false">http://www.sharplab.net/computer/scripting/webscripting/%e3%83%8b%e3%82%b3%e5%8b%95%e3%81%a7id%e3%82%84nickname%e3%81%8c%e8%aa%ad%e3%81%bf%e5%87%ba%e3%81%9b%e3%81%9f%e4%bb%b6%e3%81%ae%e8%bf%bd%e8%a3%9c/</guid>
		<description><![CDATA[前のBlogに載せた、ニコ動のPlayerから内部変数が読み出せる件は、合宿から帰ってきたら修正されていたが、どう修正されたかというと、 System.security.allowDomain("*"); という記述が書き換えられたようだ。allowDmainは、内部変数に対して操作を加えられるドメインを設定する機能のようだ。詳しくは以下のページを参照。 Adobe &#8211; デベロッパーセンター : Flash Player 8 のセキュリティ機能の変更点 んー、ニコ動以外にもこの記述を適切にできていないで、結果セキュリティリスクにしているWebサービスも、探せばあるかもね。]]></description>
			<content:encoded><![CDATA[<p>前のBlogに載せた、ニコ動のPlayerから内部変数が読み出せる件は、合宿から帰ってきたら修正されていたが、どう修正されたかというと、</p>
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7ecf8157-82f8-4079-9ca7-cf8c49fee46d" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="js">System.security.allowDomain("*");</pre>
</div>
<div class="csharpcode">
<p>という記述が書き換えられたようだ。allowDmainは、内部変数に対して操作を加えられるドメインを設定する機能のようだ。詳しくは以下のページを参照。<br />
    <br /><a href="http://www.adobe.com/jp/devnet/flash/articles/fplayer8_security_09.html" target="_blank">Adobe &#8211; デベロッパーセンター : Flash Player 8 のセキュリティ機能の変更点</a> </p>
<p>んー、ニコ動以外にもこの記述を適切にできていないで、結果セキュリティリスクにしているWebサービスも、探せばあるかもね。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharplab.net/blog/2008/04/02/19/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

