<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xml:lang="ja">
	<channel>
		<title>hitode909のダイアリー</title>
		<link>http://d.hatena.ne.jp/hitode909/</link>
		<description>hitode909のダイアリー</description>
		<dc:creator>hitode909</dc:creator>


		<item>
			<title> Javascriptでクリックする</title>
			<link>http://d.hatena.ne.jp/hitode909/20100206/1265422411</link>

			<description><![CDATA[
		<div class="section">
			<p>TwitterのHomeを開いていると，新たな更新があるとき，3 new tweets.みたいなのが表示されて，クリックすると表示される．</p>
			<p><a href="http://gyazo.com/4ce09bdc6be128f2b17b486d33e08023.png" class="http-image" target="_blank"><img src="http://gyazo.com/4ce09bdc6be128f2b17b486d33e08023.png" class="http-image" alt="http://gyazo.com/4ce09bdc6be128f2b17b486d33e08023.png"></a></p>
			<p>これを一日中クリックし続けるのは指が疲れるので，自動的にクリックさせるようにしてみた．</p>
			<br>

			<p><a href="http://gist.github.com/274903" target="_blank">gist: 274903 -  GitHub</a></p>
<pre class="syntax-highlight">
<span class="synComment">// ==UserScript==</span>
<span class="synComment">// @name click-new</span>
<span class="synComment">// @namespace http://www.hatena.ne.jp/hitode909</span>
<span class="synComment">// @include http://twitter.com/*</span>
<span class="synComment">// @include https://twitter.com/*</span>
<span class="synComment">// ==/UserScript==</span>
 
setInterval(<span class="synIdentifier">function</span>() <span class="synIdentifier">{</span>
    <span class="synIdentifier">var</span> button = <span class="synStatement">document</span>.querySelector(<span class="synConstant">&#34;#results_update&#34;</span>);
    <span class="synStatement">if</span> (!button || button.style.display == <span class="synConstant">&#34;none&#34;</span>) <span class="synStatement">return</span>;
    <span class="synIdentifier">var</span> evt = <span class="synStatement">document</span>.createEvent(<span class="synConstant">&#34;MouseEvents&#34;</span>);
    evt.initMouseEvent(<span class="synConstant">&#34;click&#34;</span>, <span class="synConstant">true</span>, <span class="synConstant">true</span>, <span class="synStatement">window</span>,
        0, 0, 0, 0, 0, <span class="synConstant">false</span>, <span class="synConstant">false</span>, <span class="synConstant">false</span>, <span class="synConstant">false</span>, 0, <span class="synStatement">null</span>);
    button.dispatchEvent(evt);
<span class="synIdentifier">}</span>, 1000);
</pre>

			<br>

			<p>上記のように，clickイベントを作ってelementにdispatchすると，クリックしたことにできるのだけど，引数が多くてめんどくさい．</p>
			<p>jQueryを使えば，trigger("click")だけでできる．</p>
			<p>これを，</p>
<pre class="syntax-highlight">
    <span class="synIdentifier">var</span> button = <span class="synStatement">document</span>.querySelector(<span class="synConstant">&#34;#results_update&#34;</span>);
    <span class="synStatement">if</span> (!button || button.style.display == <span class="synConstant">&#34;none&#34;</span>) <span class="synStatement">return</span>;
    evt.initMouseEvent(<span class="synConstant">&#34;click&#34;</span>, <span class="synConstant">true</span>, <span class="synConstant">true</span>, <span class="synStatement">window</span>,
        0, 0, 0, 0, 0, <span class="synConstant">false</span>, <span class="synConstant">false</span>, <span class="synConstant">false</span>, <span class="synConstant">false</span>, 0, <span class="synStatement">null</span>);
    button.dispatchEvent(evt);
</pre>

			<p>こう書ける．</p>
<pre class="syntax-highlight">
    $(<span class="synConstant">&#34;#results_update:visible&#34;</span>).trigger(<span class="synConstant">&#34;click&#34;</span>);
</pre>

			<br>

			<h4> 参考</h4>
			<ul>
				<li> <a href="https://developer.mozilla.org/en/DOM/document.createEvent" target="_blank">document.createEvent - MDC</a></li>
				<li> <a href="https://developer.mozilla.org/en/DOM/event.initMouseEvent" target="_blank">event.initMouseEvent - MDC</a></li>
				<li> <a href="http://semooh.jp/jquery/api/events/trigger/type,+%5Bdata%5D/" target="_blank">trigger(type, &#91;data&#93;) - jQuery 1.3.2 日本語リファレンス</a></li>
			</ul>

		</div>
]]></description>

			<dc:creator>hitode909</dc:creator>

			<pubDate>Sat, 06 Feb 2010 02:13:31 GMT</pubDate>




		</item>

		<item>
			<title> undo-tree.elを小さいwindowで実行して終了時にもとのwindowに戻るようにする</title>
			<link>http://d.hatena.ne.jp/hitode909/20100204/1265244995</link>

			<description><![CDATA[
		<div class="section">
			<p>undo-tree.elが便利で，しばらく使っていたのだけど，気になることがあった．</p>
			<ul>
				<li> てきとうにwindowを分割していると，思わぬところで実行されることがある</li>
				<li> 終了しても，もとのwindowに戻らないので，手動でもとのwindowに戻る必要がある</li>
			</ul>
			<p>ので，以下のように変更した．</p>
			<ul>
				<li> 右端に小さいwindowを作って，そこで実行する</li>
				<li> 終了すると元のwindowに戻る</li>
			</ul>
			<br>

			<p><a href="http://gyazo.com/6c4c4aeec8908c275b37b0c076b06e67.png" class="http-image" target="_blank"><img src="http://gyazo.com/6c4c4aeec8908c275b37b0c076b06e67.png" class="http-image" alt="http://gyazo.com/6c4c4aeec8908c275b37b0c076b06e67.png"></a></p>
			<br>

			<p>もとの関数をwrapするような感じにできればよかったのだけど，Emacs Lispを書いたことがなくて，よくわからなかったので，もとの関数を書き換えた．</p>
			<p>もともとgitで開発されてたので，勝手にgithubに置いた．</p>
			<p><a href="http://github.com/hitode909/undo-tree" target="_blank">hitode909’s undo-tree at master - GitHub</a></p>
			<br>

			<h4> 参考</h4>
			<p><a href="http://d.hatena.ne.jp/khiker/20100123/undo_tree" target="_blank"> undo-tree.el の導入 - とりあえず暇だったし何となく始めたブログ</a></p>
			<br>

			<h4> 追記</h4>
			<p>Emacs 23では正しく動かないようです(直したいです…………)．</p>
		</div>
]]></description>

			<dc:creator>hitode909</dc:creator>

			<pubDate>Thu, 04 Feb 2010 00:56:35 GMT</pubDate>




		</item>

		<item>
			<title>[Ruby]式展開したStringをsprintfに使うのはよくない</title>
			<link>http://d.hatena.ne.jp/hitode909/20100202/1265120682</link>

			<description><![CDATA[
		<div class="section">
			<p>Rubyで，よくないコードを書いてしまっていたので，メモ．</p>
			<br>

			<p>Rubyで，String中に変数を入れたいとき，</p>
<pre class="syntax-highlight">
action=<span class="synSpecial">&#34;</span><span class="synConstant">起床</span><span class="synSpecial">&#34;</span>
<span class="synSpecial">&#34;#{action}</span><span class="synConstant">しました</span><span class="synSpecial">&#34;</span>
</pre>

			<p>すると，#{ }の中の式が展開されて，</p>
<pre>
&#34;起床しました&#34;
</pre>

			<p>になる．</p>
			<br>

			<p>一方，数字の桁を合わせて表示したいときは，sprintfのフォーマットを使って，</p>
<pre class="syntax-highlight">
<span class="synSpecial">&#34;</span><span class="synConstant">起動してから%f.2秒経過しました</span><span class="synSpecial">&#34;</span> % started_from - <span class="synIdentifier">Time</span>.now
</pre>

			<p>とできる．普通にFloatをStringにすると，小数点以下が延々と出てしまうので，このように，桁を調整する必要がある．</p>
			<br>

			<p>しかし，式展開しつつも桁を揃えて出そうとして，</p>
<pre class="syntax-highlight">
<span class="synSpecial">&#34;#{action}</span><span class="synConstant">してから%f.2秒経過しました</span><span class="synSpecial">&#34;</span> % started_from - <span class="synIdentifier">Time</span>.now
</pre>

			<p>してはいけない．</p>
			<br>

			<p>actionが"起動"なら，#{action}が展開されて，</p>
<pre class="syntax-highlight">
<span class="synSpecial">&#34;</span><span class="synConstant">起動してから%f.2秒経過しました</span><span class="synSpecial">&#34;</span> % started_from - <span class="synIdentifier">Time</span>.now
</pre>

			<p>になるので良いけど，もし"%"のような文字列が入っていると，</p>
<pre class="syntax-highlight">
<span class="synSpecial">&#34;</span><span class="synConstant">%してから%f.2秒経過しました</span><span class="synSpecial">&#34;</span> % started_from - <span class="synIdentifier">Time</span>.now
</pre>

			<p>になってしまって，最初のStringがsprintfのフォーマットとして不適切なので，落ちてしまう．</p>
<pre>
ArgumentError: malformed format string
        from (irb):9:in `%&#39;
        from (irb):9
</pre>

			<br>

			<p>こういう場合は，</p>
<pre class="syntax-highlight">
<span class="synSpecial">&#34;</span><span class="synConstant">%sしてから%f.2秒経過しました</span><span class="synSpecial">&#34;</span> % [action, started_from - <span class="synIdentifier">Time</span>.now]
</pre>

			<p>とか，</p>
<pre class="syntax-highlight">
<span class="synSpecial">&#34;#{ action }</span><span class="synConstant">してから</span><span class="synSpecial">#{ '%.2f' % started_from - Time.now }</span><span class="synConstant">秒経過しました</span><span class="synSpecial">&#34;</span>
</pre>

			<p>とかにする必要があるのだった．</p>
			<br>

			<p>気をつけよう．．．</p>
		</div>
]]></description>

			<dc:creator>hitode909</dc:creator>

			<pubDate>Tue, 02 Feb 2010 14:24:42 GMT</pubDate>



			<category>Ruby</category>


		</item>

		<item>
			<title> Canvasで閾値処理してみた</title>
			<link>http://d.hatena.ne.jp/hitode909/20100121/1264080157</link>

			<description><![CDATA[
		<div class="section">
			<p><a href="http://hitode909.appspot.com/threshold_filter/" target="_blank">http://hitode909.appspot.com/threshold_filter/</a></p>
			<p>Canvasに画像をロードして，1ドットずつ明るさを見て塗る，という方法で閾値処理してみた．</p>
			<p>こんなのができる．</p>
			<p><a href="http://gyazo.com/d6135b15ea4139b6c843cf4e08e21b63.png" class="http-image" target="_blank"><img src="http://gyazo.com/d6135b15ea4139b6c843cf4e08e21b63.png" class="http-image" alt="http://gyazo.com/d6135b15ea4139b6c843cf4e08e21b63.png"></a></p>
			<br>

			<p>ところで，Canvasにロードした画像を操作(ピクセルの画素値を取得とか)するには，画像のドメインが同じでないといけなくて，気軽に画像処理することができない．</p>
			<p>指定したURLをバックエンドで取得して返すAPIを作って，そのAPIで取得した画像をロードして使うようにすると，この問題を回避できる．</p>
			<p>最近話題だった，triangulationも，ドメインの問題を回避するために，バックエンドで指定した画像を取得しているようである．</p>
			<p><a href="http://triangulation.jgate.de/" target="_blank">http://triangulation.jgate.de/</a></p>
			<p><a href="http://gyazo.com/0c42765ce8db7b3582b4d8d5e4eecb42.png" class="http-image" target="_blank"><img src="http://gyazo.com/0c42765ce8db7b3582b4d8d5e4eecb42.png" class="http-image" alt="http://gyazo.com/0c42765ce8db7b3582b4d8d5e4eecb42.png"></a></p>
		</div>
]]></description>

			<dc:creator>hitode909</dc:creator>

			<pubDate>Thu, 21 Jan 2010 13:22:37 GMT</pubDate>




		</item>

		<item>
			<title> screenを起動するスクリプトでタイトルバーとhardstatusに名前を出すようにした</title>
			<link>http://d.hatena.ne.jp/hitode909/20100118/1263789522</link>

			<description><![CDATA[
		<div class="section">
			<p>.screenrcで</p>
<pre>
hardstatus alwayslastline &#34;$__session_name: %-w%{=b bw}%n %t%{-}%+w&#34;
</pre>

			<p>しておいて，</p>
<pre class="syntax-highlight">
<span class="synStatement">alias </span><span class="synIdentifier">sl</span><span class="synStatement">=&#34;</span><span class="synConstant">screen -ls</span><span class="synStatement">&#34;</span>
s <span class="synStatement">()</span> <span class="synSpecial">{</span>
    <span class="synIdentifier">name</span>=<span class="synPreProc">${1</span><span class="synStatement">:-</span><span class="synPreProc">${PWD</span><span class="synStatement">##</span>*/<span class="synPreProc">}}</span>
    <span class="synStatement">echo</span><span class="synConstant"> </span><span class="synStatement">&#34;</span><span class="synSpecial">\033</span><span class="synConstant">P</span><span class="synSpecial">\033</span><span class="synConstant">]0;</span><span class="synPreProc">${name}</span><span class="synSpecial">\007\033\\</span><span class="synStatement">&#34;</span>
    <span class="synIdentifier">__session_name</span>=<span class="synPreProc">$name</span> screen -x <span class="synPreProc">$name</span> <span class="synStatement">||</span> <span class="synIdentifier">__session_name</span>=<span class="synPreProc">$name</span> screen -<span class="synStatement">r</span> <span class="synPreProc">$name</span> <span class="synStatement">||</span> <span class="synIdentifier">__session_name</span>=<span class="synPreProc">$name</span> screen -S <span class="synPreProc">$name</span>
<span class="synSpecial">}</span>
</pre>

			<p>すると，タイトルバーとhardstatusに名前が出る．</p>
			<br>

			<p><a href="http://gyazo.com/7cf8ef47e316d5a915f728203404a915.png" class="http-image" target="_blank"><img src="http://gyazo.com/7cf8ef47e316d5a915f728203404a915.png" class="http-image" alt="http://gyazo.com/7cf8ef47e316d5a915f728203404a915.png"></a></p>
			<br>

			<p>今使っているscreenにどういう名前がついているか見ることができて，便利．</p>
		</div>
]]></description>

			<dc:creator>hitode909</dc:creator>

			<pubDate>Mon, 18 Jan 2010 04:38:42 GMT</pubDate>




		</item>

	</channel>
</rss>
