<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>AUSGANG SOFT</title>
        <link>http://a-h.parfe.jp/einfach/</link>
        <description>ソフトの開発メモや気になった記事など</description>
        <language>ja</language>
        <copyright>Copyright 2010</copyright>
        <lastBuildDate>Tue, 02 Feb 2010 20:12:19 +0900</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title> Gyazoの履歴を紙Copiで管理するためのAHKスクリプト</title>
            <description><![CDATA[<div>Gyazoは、Skypeチャットなどでの意思疎通や、Webサイトのプロトタイプ作成などに非常に便利なのですが、履歴が取れないので、以前にとったスクリーンショットを見たいときに困ることがしばし。</div><div><br /></div><div>簡単なAutoHotKeyスクリプトで、履歴を紙copiで管理できるようにしてみました。</div><div>Windows限定です。</div><div><br /></div><div><script src="http://gist.github.com/292214.js?file=Gyazo+Viewer+on+%E7%B4%99copi"></script></div><div><br /></div><div>このスクリプトはクリップボードを監視して、gyazoのurlであれば、紙Copiの管理するディレクトリにあるhtmlファイルに追記します。<br />HTMLにGyazoイメージが表示されるので、内容を一目で確認できます。（当たり前だけど重要）<br />人からもらったGyazoも、URLをコピーするだけで取り込めます。</div><div><br /></div><div>htmlファイルのパスなどは、お使いの環境にあわせて変えてください。</div><div>ファイルはなければ自動的に作られます。</div><div><br /></div><div>紙Copiの編集機能を使えば、不要なGyazoの削除も可能です。<br /><br /></div><img src="http://gyazo.com/680a1b74381925ef165b9021512ad584.png" alt="" /><div><br /><div>しばらく使ってみての感想。</div><div>ただ履歴をとるだけなのであまり整理には向いてない。Gyazo単位で分類・管理できれば・・・。</div><div>そういうのやるならAirアプリでクリップボード監視して、Gyazoを分類・管理できたりするGyazoCopiを作るといいのかも。</div> </div><div id="okneonigbfnolfkmfgjmaeniipdjkgkl-simple-notify" style="display: none; " class=""><span>a :: focus first text input</span></div><div id="okneonigbfnolfkmfgjmaeniipdjkgkl-simple-notify" style="display: none; " class=""><span>M</span></div>]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2010/0202201219.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2010/0202201219.html</guid>
            
            
            <pubDate>Tue, 02 Feb 2010 20:12:19 +0900</pubDate>
        </item>
        
        <item>
            <title>Amazon Product Advertising API の電子署名にすべりこみで対応した</title>
            <description><![CDATA[2005年から提供している<a href="http://amazie.jp/">amazie</a>は、PHPとAmazonAPIのXSLを使った方法で情報を取っているのですが、<br />昨日の10時から、テスト的な停止で見事に止まってしまってました。<br /><br />Amazon Web Services Developer Community : 【重要】Product Advertising API - サービスメンテナンス（旧サービスの一時的な停止）のお知らせ<br /><a href="http://developer.amazonwebservices.com/connect/ann.jspa?annID=477">http://developer.amazonwebservices.com/connect/ann.jspa?annID=477</a><br /><br />誰だ、XSLは署名送れないから大丈夫とか言ってたのは。＞というかそれを鵜呑みにした自分がわるい。<br />
<br />で、急いで対処方法を検索してみたところ、<br /><br />[PHP] Amazon Product Advertising API で認証付きリクエストを送る方法まとめ - RinGoon POP!!<br /><a href="http://ringoon.jp/2009/05/09/memo-amazon-product-advertisin.html">http://ringoon.jp/2009/05/09/memo-amazon-product-advertisin.html</a><br /><br />こんなありがたいライブラリを提供してくださる方が。<br />これ使えば、ほとんど従来のままでいけますね。<br /><br />ところがどっこい、うちのサーバーでは、ライブラリに必要な hash_hmac 関数が使えない。<br />インストールを試みるも、コンパイルエラーで挫折。<br /><br />しょうがないので、他の方法を探したところ、<br /><br />Product Advertising API用PukiWikiプラグイン - IMHO<br /><a href="http://d.hatena.ne.jp/mokehehe/20090526/productadvertisingapi">http://d.hatena.ne.jp/mokehehe/20090526/productadvertisingapi</a><br /><br />こちらにジャストミートな情報が。<br />これを使って動作することを確認しました。<br /><br />その他、パラメーターにアソシエイトＩＤをくっつけてたらリクエストがとおらないとか。<br /><br /><pre>&amp;AssociateTag=associate_id</pre>↑はつけてはいけない。<br /><br />Amazon Product Advertising API 電子署名とXSLTのまとめ - web2.0的ラボ<br /><a href="http://www.web2-labo.com/amazon_product_advertising_api.html">http://www.web2-labo.com/amazon_product_advertising_api.html</a><br /><br /><pre>もやしさんのところで紹介されていた、リクエストURL「http://ecs.<span style="color: black; background-color: rgb(255, 255, 170);" id="dnl2baSTH-instance17" class="dnl2baSTH-term dnl2baSTH-termColor0">amazon</span>aws.jp/onca/xml～」のドメイン部分を、「http://xml-jp.amzn<span style="color: black; background-color: rgb(204, 255, 204);" id="dnl2baSTH-instance18" class="dnl2baSTH-term dnl2baSTH-termColor2">xsl</span>t.com/onca/xml～」に変更したら、表示されるようになりました。</pre>↑は本当。現時点では、http://ecs.<span style="color: black; background-color: rgb(255, 255, 170);" id="dnl2baSTH-instance17" class="dnl2baSTH-term dnl2baSTH-termColor0">amazon</span>aws.jp/では署名が違うと言われてしまう。<br /><br />IndexをBlendedにすると結果が返ってこないなど、まだ不明な点も。<br /><br />とりあえず対応できたけど、いまさらのこの仕様変更はつらい。<br />Amazonは、サーバーにかかる負荷、コストを削減したいのかな～。<br />よほど不正なリクエストが多いのか？普通に使っている人が迷惑をこうむらない方法はなかったのか？<br /><br /><br />なお、オープンソースソフトウェアでの利用については、tDiaryの作者でもある、ただただしさんが、<br /><br />Amazon Web Services Developer Community : OSSからの認証利用について ...<br /><a href="http://developer.amazonwebservices.com/connect/thread.jspa?threadID=32142&amp;tstart=0">http://developer.amazonwebservices.com/connect/thread.jspa?threadID=32142&amp;tstart=0</a><br /><br />Amazon API認証のPROXYを書いたよ(AmazonのAPI認証導入はOSSに対する挑戦だよなぁ(4)) - ただのにっき(2009-06-19)<br /><a href="http://ringoon.jp/2009/05/09/memo-amazon-product-advertisin.html">http://sho.tdiary.net/20090619.html#p01<br /></a><br />素晴らしいつっこみと対応をされてます。<br /><br /><div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div>]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2009/0812123018.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2009/0812123018.html</guid>
            
            
            <pubDate>Wed, 12 Aug 2009 12:30:18 +0900</pubDate>
        </item>
        
        <item>
            <title>Kanasan.js Greasemonkey チュートリアル読書会に行ってきた</title>
            <description><![CDATA[<div>遅すぎですが、あけましておめでとうございます。</div><div>タイトルどおり読書会に行ってきました。</div><div><br />今回の<a href="http://sites.google.com/site/kanasanjs/">Kanasan.js</a>は「Greasemonkey チュートリアル」読書会。</div><div><br /></div><div>これは行かざるを得ない。</div><div>直前までけるかどうかわからず、前日に定員ぎりぎりの30人目に申し込み参加。</div><div><br /></div><div><br /></div><div>一気読みすげー。13:30～19:00くらいまで。</div><div>かなりの熱気でした。</div><div>会議室に30台もPCがあるんだもんね。</div><div><br /></div><div><br /></div><div>久しぶりの勉強会。</div><div>かなかプログラミング話についてくのが大変。</div><div><br /></div><div><br /></div><div>Greasemonkey の歴史など。</div><div><br /></div><div><br /></div><blockquote class="webkit-indent-blockquote" style="border: medium none ; margin: 0pt 0pt 0pt 40px; padding: 0px;">unsafeWindowが導入された経緯はこの辺り<br /><br />Greasemonkeyの共通な落とし穴を避ける - minghaiの日記<br /><a href="http://d.hatena.ne.jp/minghai/20080101">http://d.hatena.ne.jp/minghai/20080101</a></blockquote><div><br /></div><div><br /></div><div>本編と関係ないけどLingr上でのヒアドキュメント談義がおもしろかった。</div><div><br /></div><div><br /></div><blockquote class="webkit-indent-blockquote" style="border: medium none ; margin: 0pt 0pt 0pt 40px; padding: 0px;">ujihisa@会場<br />Q: JSにはヒアドキュメントがない?<br />A: ない<br />ヒアドキュメントってすごく大事だと思う<br /><br />deguchi @会場<br />@ujihisa ヒアドキュメントの代わりになるものならあるよ<br />var text = &lt;&gt;<br />hoge<br />hige<br />&lt;/&gt;<br />E4Xが実装されてるブラウザ限定だけど<br /><br />ujihisa@会場<br />!<br /><br />deguchi @会場<br />もちろんIEにはない！<br /><br />ujihisa@会場<br />xmlリテラル的な感じ<br />scalaの<br />「またIEか」<br /><br />repeatedly@会場<br />何かamachangの記事で見た記憶が &gt; &lt;&gt;<br /><br />ujihisa@会場</blockquote><blockquote class="webkit-indent-blockquote" style="border: medium none ; margin: 0pt 0pt 0pt 40px; padding: 0px;">&gt;&lt;&gt;&lt;<div><br /></div><br />37to@会場<br />これは便利<br /><br />ujihisa@会場<br /> &gt;&lt;<br />↑amachangリテラル<br /><br />yuya@会場<br />これは魚 &gt;&lt;&gt;<br /><br />37to@会場<br />innerHTMLにまるごと入れる時に、楽に出来る<br /><br />ujihisa@会場<br />魚リテラル<br /><br />hakobe<br />innerHTMLへの代入こわい<br /><br />yuya@会場<br />ウオドキュメント<br /><br />ujihisa@会場<br />ウオドキュメント</blockquote><div><br /></div><div>ウオドキュメント誕生の瞬間。</div><div><br /></div><div><br /></div><div>よくみたら正面のテーブルは、一人を除いて全員リンゴマーク。</div><div>Mac率の異常に高い勉強会だった。</div><div><br /></div><div>最後のほうはemobileの回線速度がスローダウン。</div><div>6台近く接続されていて、それを30人でシェアしたり、ustreamしたり。<br /></div><div><br /></div><div>一通り読み終わった後、各自の作っているGreasemonkeyを紹介するという時間がとられて、発表させてもらった。</div><div><br /></div><div><br /></div><blockquote class="webkit-indent-blockquote" style="border: medium none ; margin: 0pt 0pt 0pt 40px; padding: 0px;">これまで作ったGreasemonkeyスクリプト まとめ<br /><a href="http://a-h.parfe.jp/einfach/archives/2006/1213180001.html">http://a-h.parfe.jp/einfach/archives/2006/1213180001.html</a></blockquote><div><br /></div><div><br /></div><div>Googleイメージ、画像を回して</div><div>バターになるグリモンがスゴイ！</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="border: medium none ; margin: 0pt 0pt 0pt 40px; padding: 0px;">バターです。<br /><a href="http://www.kiy0taka333.sakura.ne.jp/scripts/guruguruimages.user.js">http://www.kiy0taka333.sakura.ne.jp/scripts/guruguruimages.user.js</a></blockquote><div><br /></div><div><br /></div><div>今日、はじめてGreasemonkey書く人が発表。これはスゴイｗ</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="border: medium none ; margin: 0pt 0pt 0pt 40px; padding: 0px;">便利ツールcoconutsfineのインストールはこちらから <a href="http://gist.github.com/68420">http://gist.github.com/68420</a></blockquote><div><br /></div><div><br /></div><div><br /></div><div>Greasemonkeyについて話せる場があるというのはあまりなくて、</div><div>かなり調子に乗って、いろいろ出してしまって、少し反省気味。</div><div><br /></div><div>でも、多少脱線しても、ちゃんと本筋に戻しつつ、運営されててよかった。</div><div><a href="http://www.lingr.com/room/Kanasan.JS/archives/2009/02/22">Lingrのチャット</a>も、先に読み終わったり、疲れてきた人の気分転換な場になってて、勉強会の運営スタイルとしてうまくなってるなーと思いました。</div><div><br /></div><div>久々緊張して疲れたけど、とてもいい刺激をもらいました。<br />37toさんはじめ、スタッフのみなさんお疲れ様でした！</div> ]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2009/0223114520.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2009/0223114520.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Greasemonkey Kanasan.js</category>
            
            <pubDate>Mon, 23 Feb 2009 11:45:20 +0900</pubDate>
        </item>
        
        <item>
            <title>Google Chrome で Livedoor Reader のピンを快適に開く UserJavaScript</title>
            <description><![CDATA[<div>Chrome（愛称 ちょろめ）がメインブラウザになってしばらくになります。</div><div><a href="http://greasemetal.31tools.com/">Greasemetal</a>のおかげで、Firefoxからの移行を決意。</div><div><br /></div><div>とても快適なのですが、不満点がひとつ。</div><div>Livedoor Readerで、ピンをたてた記事をまとめて開こうとすると、ポップアップブロックにひっかかって、タブで表示されません。解除する設定もなく、これはストレスフル。</div><div><br /></div><div>ちょうど Greasemetalがバージョンアップして、GM_openInTab ファンクションをサポートしていたので、window.openを上書きして、ピンをタブで開けるようにする UserJavaScript を書いてみました。</div><div><br /></div><div><br /></div><div><ul><li><a href="http://a-h.parfe.jp/einfach/archives/ldrfixpinopen.user.js">ldrfixpinopen.user.js</a></li></ul></div><div><br /></div><div>とっても短いっす。</div><div>これで思う存分、タブを開きまくれます。</div><div><br /></div><div><a href="http://greasemetal.31tools.com/">Greasemetal</a> version 0.2以降必須。</div><div>開発者の方に感謝。</div><div><br /></div><div><span class="Apple-style-span" style="font-weight: bold;">追記</span></div><div><br /></div><div>タイミングやキャッシュによって、スクリプトが読み込まれてないときがあるみたいなので、読み込まれたらLDRのロゴに＋を追加するようにしました。</div><div><br /><img src="http://gyazo.com/044c5c61d9535ca924ae830c024bfd49.png" alt="" /><br />↑こんな表示になっていれば有効になっています。</div><div><br /></div><br /><div><span class="Apple-style-span" style="font-weight: bold;">おまけ Chrome関連のメモ</span></div><div><br /></div><div>・おすすめユーザースクリプト</div><div><br /></div><div>Greasemetal, GreaseKit で使える UserJavaScript (自作中心)</div><div><a href="http://d.hatena.ne.jp/os0x/20080916/1221578886">http://d.hatena.ne.jp/os0x/20080916/1221578886</a></div><div><br /></div><div>ほとんどここに網羅されてる。まとまっていて、すばらしい。</div><div><a href="http://a-h.parfe.jp/einfach/archives/2006/0106171150.html">Greasemonkey - Google のラジオボタン押したら検索</a></div><div>もリファクタしてもらってる！！</div><div>ありがとうございます。</div><div><br /></div><div><span class="Apple-style-span" style="font-family: 'trebuchet ms';">Out of Sync - スペースキーで LDR っぽいスクロールを実現する Greasemonkey スクリプト<br /><a href="http://d.hatena.ne.jp/nagaton/20060831/1156993415" title="Out of Sync - スペースキーで LDR っぽいスクロールを実現する Greasemonkey スクリプト" style="outline-style: none; color: rgb(171, 4, 4); text-decoration: underline;">http://d.hatena.ne.jp/nagaton/20060831/1156993415</a></span></div><div><span class="Apple-style-span" style="font-family: 'trebuchet ms';"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'trebuchet ms';">スペースキーでページをスクロールする人にはおすすめ。</span></div><div><br /></div><div><br /></div><div>・マウスジェスチャー<a href="http://www.piro.cc/"></a></div><div><a href="http://www.piro.cc/">マウ筋</a>で設定。</div><div>閉じたタブを開きなおすショートカットは、Ctrl+Shift+T。</div><div><br /></div><div>・キャッシュのクリア</div><div>右上の設定アイコン→閲覧履歴の消去→キャッシュにチェックを入れて→閲覧履歴の消去を実行。</div><div><br /></div><div><br /></div><div>・Windows2000でChromeを使う</div><div><br /></div><div>Google Chrome (BETA) を Windows 2000 で</div><div><a href="http://blog.livedoor.jp/blackwingcat/archives/139405.html">http://blog.livedoor.jp/blackwingcat/archives/139405.html</a></div><div><br /></div><div>Chrome起動時の警告をなくす(Win2000)</div><div><a href="http://blog.livedoor.jp/blackwingcat/archives/149216.html">http://blog.livedoor.jp/blackwingcat/archives/149216.html</a></div><div><br /></div><div><br /></div> ]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2008/0919232033.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2008/0919232033.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">LDR Greasemetal Greasemonkey Chrome</category>
            
            <pubDate>Fri, 19 Sep 2008 23:20:33 +0900</pubDate>
        </item>
        
        <item>
            <title>Skype Washerから紙Copi Net に保存</title>
            <description><![CDATA[<a href="http://a-h.parfe.jp/einfach/archives/2008/0817083622.html/">前回</a>につくったSkypeのチャットログを整形するツール、<a href="http://a-h.parfe.jp/skypewasher/">SkypeWasher</a> に <a href="http://kamicopi.net/">紙CopiNet</a> へ保存する機能を追加しました。<br /><br /><a href="http://a-h.parfe.jp/skypewasher/"><img src="http://gyazo.com/768bd5ec71da694d4395cfab71b9cf02.png" /></a><br /><br />save to kami ボタンで、ログを整形して紙Copi Net に送ります。<br />最近、紙Copi Netにiframeでテキスト中のURLを開いてくれる機能が追加されたので、組み合わせると便利です。<br /><br /><br /><img src="http://gyazo.com/936cb42fbc0f9d25d4aba6affa0319ad.png" />]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2008/0821170843.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2008/0821170843.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">紙Copi Skype</category>
            
            <pubDate>Thu, 21 Aug 2008 17:08:43 +0900</pubDate>
        </item>
        
        <item>
            <title>Skype Washer　スカイプのチャットログを読みやすく</title>
            <description><![CDATA[<img src="http://a-h.parfe.jp/skypewasher/logo.gif" alt="skype washer" /><br /><br /><br /><b>これはなに？</b><br /><br />Skypeのチャットを日常的に使っているのですが、とても不便なことがあります。<br />やりとりの内容を残しておきたいと思って、選択してコピーすると、読みづらいテキストになってしまうことです。<br />これを、必要なときは、手作業で整えたり、テキストエディタで置換したり。<br />かなり手間なので、Skypeのチャットログをきれいに整形してくれる（洗う）ツールを作りました。<br /><br /><b>skype washer</b><br /><a href="http://a-h.parfe.jp/skypewasher/">http://a-h.parfe.jp/skypewasher/</a><br /><br />例)<br />変換前<br /><blockquote>[2008/08/11 13:23:58] deguchisの発言: 飲み会の場所どうしよ？<br />[2008/08/11 13:23:59] nektixeの発言: うまい魚食べたいね。<br />[2008/08/11 13:24:02] nektixeの発言: どこかない？<br />[2008/08/11 13:24:29] deguchisの発言: それだったら<br />[2008/08/11 13:24:30] deguchisの発言: まんまや　和坐(マンマヤ　ワザ)/ホットペッパー.jp<br />http://www.hotpepper.jp/A_20100/strJ000020882.html<br />[2008/08/11 13:24:31] deguchisの発言: ここオススメ。<br />[2008/08/11 13:24:33] deguchisの発言: 日本海から直送の魚を食わせてくれる。<br /></blockquote>変換後<br /><blockquote>飲み会の場所どうしよ？<br />うまい魚食べたいね。<br />どこかない？<br />それだったら<br />まんまや　和坐(マンマヤ　ワザ)/ホットペッパー.jp<br />http://www.hotpepper.jp/A_20100/strJ000020882.html<br />ここオススメ。<br />日本海から直送の魚を食わせてくれる。<br /></blockquote><br /><b>特徴</b><br /><br />・Javascriptのみで動作するので、動作が軽く、情報漏洩の危険性がありません。<br />・洗うのと同時にクリップボードにコピーできます。<br /><br /><b>使い方</b><br /><br />sourceに貼り付けて、wash!ボタンを押すだけです。<br /><br />ブックマークして、必要なときに呼び出してお使いください。<br />
とても簡単な作りなのでローカルに保存しても動作します。<br /><br /><b>今後の予定</b><br /><br />・<a href="http://kamicopi.net/">紙Copi Net</a> への取り込み機能<br />→ 追加しました<br /><br />読みやすいテキストに整形する機能は、本来Skypeに標準でついていて欲しい機能です。<br />なので、独自機能として、紙Copi Netに送ることで、保存・管理・検索が容易にできれば便利かもと思ってます。<br /><br />どうぞ、ご利用ください。<br /> <div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div><div style="display: none;" id="FLASH_MESSAGE"></div>]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2008/0817083622.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2008/0817083622.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">skype</category>
            
            <pubDate>Sun, 17 Aug 2008 08:36:22 +0900</pubDate>
        </item>
        
        <item>
            <title>Googleの検索結果をバックグラウンドタブで自動的に開くGreasemonkey</title>
            <description><![CDATA[久しぶりにGreasemonkeyスクリプトを書いてみました。<br /><br />

<ul><li><a href="http://a-h.parfe.jp/einfach/archives/browseboost.user.js">browseboost.user.js</a></li></ul>

<p><img src="http://farm4.static.flickr.com/3210/2676819178_a3e75545e6_o.gif" /></p>

<p>若干わかりにくいですが、Googleで検索すると検索結果をバックグラウンドのタブ（赤線）で自動的に開きます。</p>

<p>開くページの数はスクリプト先頭の
<blockquote>OPENLIMIT</blockquote>
で変更可能。<br />
デフォルトは2つ。</p>

<p>思いつきは、検索結果の最初の2つくらいはよく開くんじゃないかということ。<br />
昔、Fasterfoxというリンクを先読みする拡張が、サーバーに負荷をかけるということで批判されてたけど、２つくらいなら許されるんじゃないかと。</p>

<p>GM_xmlhttpRequest でHTMLだけ先読みを試みるも、どうも体感的に先読みになってないっぽいので、GM_openInTab で表にこないタブに開いておくことにしました。<br />マウスでタブ切り替え、ワンキーでタブを閉じるとかできるようにしてる環境では便利かもです。</p>

<p>このスクリプト、LDRize のSITEINFOを共用することが出来ると思います。<br />
いろんなページでタブ開きまくることになるので、便利かどうかはやってみないとわからないけど。<br />要望があればつけてみます。</p>]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2008/0717171400.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2008/0717171400.html</guid>
            
            
            <pubDate>Thu, 17 Jul 2008 17:14:00 +0900</pubDate>
        </item>
        
        <item>
            <title>ボタン一発で部分スクリーンショット</title>
            <description><![CDATA[<a href="http://gyazo.com/">Gyazo</a>が便利すぎる。<br />Skypeでやりとりする際に、「この部分、レイアウト崩れている」「こんなデザインでどうか？」などと伝えるのにウチでは使われまくっている。<br /><br />Gyazoは、範囲選択→画像化→アップロード→URLをクリップボードにコピー、を一括してやってくれるので、声や文章では伝えられない部分をすぐに共有できて便利。<br /><br />なんだけど、たまにイラストレーター上にサイトのモックアップを作るときに、単にクリップボードにコピーするだけでよい場合も。<br /><br />そういうシンプルなソフトがないか探してみたけどなさげ。<br /><br />既存のスクリーンショットツールのコマンドラインオプションでできないか、探してみると、<a href="http://www.woodybells.com/winshot.html">WinShot</a>＋<a href="http://lukewarm.s101.xrea.com/">AutoHotKey</a>でやってる人がいたー。<br /><b><br />ホットキー一発で WinShot でスクリーンショットを撮る</b><br /><a href="http://moewe.xrea.jp/log/2005_09.html#d20050912">http://moewe.xrea.jp/log/2005_09.html#d20050912<br /></a><br />参考にさせてもらって、Gyazoに近い設定にした。<br /><br /><blockquote>PrintScreen::Run, C:\Program Files\WinShot\WinShot.exe -Copy -Rectangle -Close<br /></blockquote><br />地味に便利。<br /><br />若干、Gyazoと選択の操作感が違うので最初戸惑うけど、拡大鏡みたいなプレビューも出るのでドット単位で選択できてよい。 ]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2008/0623090124.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2008/0623090124.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Gyazo AHK WinShot</category>
            
            <pubDate>Mon, 23 Jun 2008 09:01:24 +0900</pubDate>
        </item>
        
        <item>
            <title>bluewindでファイルランチャー</title>
            <description><![CDATA[毎日の作業で特定のフォルダにある同じ拡張子のファイルを開くことが多いので、その作業を簡単にできないかなぁと思っていたところ、<a href="http://cspace.s2.xrea.com/software/bluewind/">bluewind</a>とバッチファイルを組みあわせることで、できそうだったのでやってみました。<br /><br />例えば、C:\hoge\jsにあるjsファイルを開きたい場合、以下のようなバッチファイルを書いて<br /><br /><blockquote>@echo off<br />start C:\hoge\js\%1.js<br /></blockquote>bluwindのコマンドとして設定します。<br /><br /><img alt="js" src="http://farm4.static.flickr.com/3029/2597321866_7e6cc71469.jpg?v=0" height="402" width="380" /><br /><br />あとは、<br /><br />js common<br /><br />とコマンドのあとにファイル名だけを打てばOK。<br />bluewindの入力補完や履歴機能が使えるので、使うほどに直感的にファイルを開くことができます。（最初少し慣れも必要）<br /><br /><font style="font-size: 0.8em;">※バッチファイルではなく、Explorerにパラメータを渡す形式でも可能なのですが、XPだと毎回セキュリティダイアログがでて、うっとおしいので、この方法にしました。<br /></font><br /><br /><b>Tips<br /></b><br />コマンドの設定画面で、高度な設定&gt;入力時のパラメータにキーワードを使う<br />をOFFにしておくと、コマンドと同名のファイルがあってもちゃんと開いてくれます。<br /><br /><br />コマンドの履歴は<br />設定画面からは999件までしか設定できません。<br /><br />これでは多用するときに、ファイル名が履歴から消えてたりするので、不便です。<br />そこで、設定ファイルを直に書き換えることで履歴の数を増やします。<br /><br />インストールフォルダの<br />bluewind.ini<br />HistoryCount<br />の数値を書き換えます。<br /><br />例えば3000件くらい。<br />HistoryCount=3000<br /><br />特に重くもならないので、履歴の数に不満を感じたら設定するとよいでしょう。<br /><br /><br />この方法、数ヶ月使ってますが、ウチの場合はMVCフレームワークのビュー、ヘルパーファイルだったり、Javascript、CSSファイルを開くのに重宝しています。<br /><br /><br /><b>おまけ</b><br /><br />ついでにファイルのgrep検索をbluewindからできるようにしたいと思って調べたところ<br /><br /><blockquote>for /R %%i in (*.html) do echo %%i &amp;&amp; findstr /N %1 %%i<br />pause<br /></blockquote>というバッチでできることが判明。<br /><br />でも、いまいち使い勝手がよくないので、秀丸のgrep検索をコマンドライン呼び出ししてみることにしました。<br /><br /><blockquote>@echo off<br />"C:\Program Files\Hidemaru\Hidemaru.exe" /gCwRUo,"C:\hoge\view\*.html",%1<br /></blockquote>これでなんとかいけそう。<br />パラメーターは秀丸のヘルプ＞起動オプションを参照。<br /><br /><b>追記：</b><br />この記事を書いてから、bluewindはもともと、ファイルランチャー的な機能があることを知った。<br /><br />MetLog：便利なコマンドライン型ランチャー「bluewind」<br /><a href="http://megalo.jp/metlog/2006/12/091724.html">http://megalo.jp/metlog/2006/12/091724.html</a><br /><br /><blockquote>たとえば、よく参照ようなディレクトリ(C:\Documents and Settings\ユーザー名\My Documents とか)を例えば「mydoc」キーワード登録しておくと、<br />notepad mydoc<br />といった感じでmydocを打つと、その後ろに、ちゃんと配下のファイルが自動補完されます。</blockquote><br />うおお、まったく求めていたものと同じ機能だorz<br />よく下調べしましょう。<br />ただ、少し負け惜しみ的に書いておくと、↑の方法だと、コマンド後の補完の開始に、￥を押すか、カーソルキーの右を押さないといけないので、若干使いにくい。<br />バッチファイルを使う方法は、スペースを押してファイル名を入れるので、若干キー入力のロスが少なくて済みます。<br />毎日、使うものなので、まぁ、ほんの少しラクなのもけっこう大事。こんな方法もあるよということで。<br /><br /><div style="display: none;" id="FLASH_MESSAGE"></div>]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2008/0621154219.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2008/0621154219.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">bluewind file launcher tips</category>
            
            <pubDate>Sat, 21 Jun 2008 15:42:19 +0900</pubDate>
        </item>
        
        <item>
            <title>prototype.js でタブ切り替え(複数表示版)</title>
            <description><![CDATA[prototype.js でタブ切り替え - AUSGANG SOFT<br /><a href="http://a-h.parfe.jp/einfach/archives/2006/1012175043.html">http://a-h.parfe.jp/einfach/archives/2006/1012175043.html</a><br /><br />に、同じページで複数タブを表示できるようにならないか？<br />というご要望をいただきました。l<br /><br />もともと１つしかタブがない想定なので、大幅な改造が必要。<br />いい機会なので、作ってみました。<br /><br />サンプル<br /><a href="http://a-h.parfe.jp/einfach/archives/tabSample.html">http://a-h.parfe.jp/einfach/archives/tabSample.html</a><br /><br />CSSもJavascriptも↑のファイル内に書いています。<br /><br /><br /><b>変更点</b><br /><br /><ul><li>複数タブに対応</li></ul>ページ末尾の<br /><br /><blockquote>new TabMaker('tab');<br />new TabMaker('menu');<br /></blockquote><br />↑という指定で、複数のタブを作っています。<br />サンプルを参考にHTML、CSSもそれぞれの名前で指定してください。<br />逆にいうと、デザインを別々にすることができます。<br /><br /><ul><li>document.getElementsByClassName の使用をやめました。<br />ページによっては非常に重いという指摘をいただいていたので、必要ないようにしてみました。<br /></li></ul><br /><ul><li>ページの読み込みを待たずに、タブ表示を行うようにした。<br />タブのHTMLの直後にタブ表示をする処理をいれることで、読み込むを待つ必要をなくしています。<br /></li></ul>要望をいただいたgontaさんに感謝です。 ]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2008/0222180032.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2008/0222180032.html</guid>
            
            
            <pubDate>Fri, 22 Feb 2008 18:00:32 +0900</pubDate>
        </item>
        
        <item>
            <title>ActionScript3 事始め</title>
            <description><![CDATA[新年、あけました。<br />新しいことをやってみようということで、会社でActionScript3を勉強することに。<br />その下準備の作業をメモ。Windows環境です。<br /><br /><b>概要</b><br /><br />3月22日の技術勉強会 - ActionScript3 / Flex / Apollo 勉強会 - はてな技術発表会日記 - 機能変更、お知らせなど<br /><a href="http://hatena.g.hatena.ne.jp/hatenatech/20070324/1174713674" target="_blank">http://hatena.g.hatena.ne.jp/hatenatech/20070324/1174713674</a><br /><br />まずは、概要がよくまとまっている↑からスタート。<br /><br /><br /><b>開発環境を整える</b><br /><br />とりあえず、AS3をコンパイルできる環境を整えよう。<br />Flex Builderは有料だし、慣れたエディタを使いたいので、Flex2 SDKを使う方法でいくことに。(これがけっこう大変だった)<br /><br />Java(JRE&nbsp; or&nbsp; JDK)が必須なのだけど、入ってたので割愛。<br /><br />Adobe - Flex 2のダウンロード<br /><a href="http://www.adobe.com/cfusion/tdrc/index.cfm?product=flex&amp;loc=ja" target="_blank">http://www.adobe.com/cfusion/tdrc/index.cfm?product=flex&amp;loc=ja</a><br /><br /><ul><li>Flex 2 SDK （無償）と日本語パック</li><li>Flex Compiler Shell(fcsh)<br /><a href="http://labs.adobe.com/wiki/index.php/Flex_Compiler_Shell" target="_blank">http://labs.adobe.com/wiki/index.php/Flex_Compiler_Shell</a><br /></li></ul>をダウンロード(要AdobeID)<br /><br />Flex 2 SDKのplayerフォルダにデバッグ用のFlashPlayerがあるので、ブラウザを終了させて入れておく。<br />IE用とそれ以外の2種類。<br />エラーログやtraceなどを出力するのに必須。<br /><br />FlexSDKのbinフォルダにパスを通しておく。<br />Windowsだと再起動orログオフしないと変更が反映されない？<br /><br /><b><br />rascut</b><br /><br />コードを更新したら即座に結果を見れるfcwrapがとても便利そうなんだけど、インストールが難しそう？<br /><br />fcwrap 改め rascut - PBD - subtech<br /><a href="http://subtech.g.hatena.ne.jp/secondlife/20070825/1187978780" target="_blank">http://subtech.g.hatena.ne.jp/secondlife/20070825/1187978780</a><br /><br />名前が変わって、gemが公開されインストールが簡単に。<br /><br />Rubyのインストールからの手順は↓<br /><br />ActionScript やるなら入れとけ。rascut 導入と使い方。 - てっく煮ブログ<br /><a href="http://d.hatena.ne.jp/nitoyon/20070914/how_to_install_rascut" target="_blank">http://d.hatena.ne.jp/nitoyon/20070914/how_to_install_rascut</a><br /><br />よくまとまってます。<br />ログの表示までサポートされていて、すばらしい。<br />nitoyonさんに感謝。<br /><br /><b><br />Hello AS3!</b><br /><br />ようやくコンパイル。<br />お決まりのHelloWorld.as。<br /><br /><blockquote>package {<br /><br />&nbsp;&nbsp; &nbsp;import flash.display.*; &nbsp;<br />&nbsp;&nbsp; &nbsp;import flash.text.*; &nbsp;<br /><br />&nbsp;&nbsp; &nbsp;//HelloWorld<br />&nbsp;&nbsp; &nbsp;public class HelloWorld extends Sprite {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//コンストラクタ<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public function HelloWorld() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//テキストフィールドの生成<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;var textField:TextField=new TextField();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;textField.text="Hello AS3 World!";<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;addChild(textField);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;trace(textField.text);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;}<br />}<br /></blockquote><br /><blockquote>rascut HelloWorld.as -s<br /></blockquote>rascut便利すぎ。<br />127.0.0.1:3001にアクセス。<br />コードを書き換えると、自動でコンパイルして、作成されたSWFを表示してくれる。<br />ページの再読み込みすらない!!<br />secondlife氏に感謝。<br /><br /><b><br />console.log</b><br /><br />デバッグなどで使うtraceはどうせならJavascript同様FireBugのコンソールに出力させたい。<br /><br /><a href="http://www.amazon.co.jp/exec/obidos/ASIN/477413256X/asociatehelpe-22/ref=nosim" target="_blank" class="ausgangsoft"><img src="http://rcm-images.amazon.com/images/P/477413256X.09.MZZZZZZZ.jpg" alt="WEB+DB PRESS Vol.41" border="0" height="160" width="113" /></a><br /><a href="http://www.amazon.co.jp/exec/obidos/ASIN/477413256X/asociatehelpe-22/ref=nosim" target="_blank" class="ausgangsoft">WEB+DB PRESS Vol.41</a><br /><br />WEB+DB PRESS Vol.41：サポートページ｜gihyo.jp ... 技術評論社<br /><a href="http://gihyo.jp/magazine/wdpress/archive/2007/vol41/support" target="_blank">http://gihyo.jp/magazine/wdpress/archive/2007/vol41/support</a><br /><br /><blockquote>「log関数でデバッグ」のlog関数<br /></blockquote><br />これを使えばいける。<br />外部ライブラリの利用方法は<br /><br /><blockquote>外部ライブラリをローカルにダウンロードし、Flex2SDKのframeworks/flex-config.xmlのsource-pathタグの部分を編集します。<br /></blockquote>とのこと。<br />最初はsource-path部分がコメントアウトされているので解除して設定。<br /><br /><br />↑の特集1「ActionScript 3.0開発入門」<br /><br />を読んで、PhotoViewer作ってみる。<br />フィルタや、アニメーションがこんな簡単にできんのかー。<br /><br /><br /><b>とりあえずのActionScript3 雑感</b><br /><br />型指定が面倒。やっぱり。<br />クラスごとにファイル分けないといけないの？<br />importは最初面倒なんだけど、慣れれば管理が便利になるのか？<br />クラスとファイル名をあわせる必要があるみたい。<br />タイプ量が多い気がする。<br />↓<br />エディタの補完機能でどうにかしよう。<br /><br />萌ディタのjscript.javascript.txtに補完単語を追加 - Cheese Pie<br /><a href="http://d.hatena.ne.jp/cheesepie/20070219/1171816331" target="_blank">http://d.hatena.ne.jp/cheesepie/20070219/1171816331</a><br /><br />補完は↑の方法でやっているので、よく使いそうな単語を追加でおｋ。<br /><br /><br />とりあえず、なんとか入口まではたどり着けた感じ。<br />]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2008/0108230217.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2008/0108230217.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">ActionScript3 flash Flex rascut</category>
            
            <pubDate>Tue, 08 Jan 2008 23:02:17 +0900</pubDate>
        </item>
        
        <item>
            <title>ジョジョの奇妙なGreasemonkey</title>
            <description><![CDATA[<p>mixiやチャットで友人にコメントするとき、共通に好きな漫画のセリフをパロディ化して使うことがあります。</p>
<blockquote>Twitter / AUSGANG SOFT: クーラーつけるとネットが切れる。二者択一。。。
<a href="http://twitter.com/nektixe/statuses/208569602">http://twitter.com/nektixe/statuses/208569602</a><br /><br />Twitter / uj: @nektixe 逆に考えるんだ。「暖房をつけちゃっていい」<br /><a href="http://twitter.com/ujihisa/statuses/208571982">http://twitter.com/ujihisa/statuses/208571982</a><br /><br />Twitter / AUSGANG SOFT: @ujihisa いいや！限界だ！押すね！<br /><a href="http://twitter.com/nektixe/statuses/208581402">http://twitter.com/nektixe/statuses/208581402</a></blockquote>

<p>たいてい名言集をググってコピーしてくるんですが、それを簡単にしたいなと。<br />
  思ったので、「ジョジョの奇妙な冒険」の名セリフを自動表示するGreasemonkeyを書いてみました。</p>
<h4>スクリプト</h4>
<p><a href="http://a-h.parfe.jp/einfach/archives/seliffromjojo.user.js">seliffromjojo.user.js</a></p>
<h4>使い方</h4>
<p>Twitterとmixiに対応しています。<br />
  自動で、テキストエリアにセリフがランダムに挿入されます。<br />
  テキストエリアの下の「JoJo!」ボタンでセリフを変更できます。</p>
<img src="http://farm3.static.flickr.com/2063/2054688356_f3be424eb0_o.gif" />
<p><br /></p><p>自動挿入をしたくない場合は、スクリプト冒頭のAUTO_STARTを</p>
<pre>AUTO_START = false;</pre>
<p>にしてください。「JoJo!」ボタンで挿入できます。<br />
</p>
<h4>謝辞</h4>
<p>素晴らしい作品を描きつづけられている荒木飛呂彦先生に感謝。</p>
<p>スクリプト中に埋め込んだセリフは、"ジョジョ 名言"でググると一番に出てきた↓のサイトのものを利用させていただきました。感謝。</p>
<p>☆ジョジョの奇妙な冒険名言集☆<br /><a href="http://www.gdh.fromc.jp/07.jojo/01.jojomeigen.html">
  http://www.gdh.fromc.jp/07.jojo/01.jojomeigen.html</a></p>
<p>以下のコードをFirebugで実行。得られたテキストを整形。</p>
<pre>var proverb = [];
var text = $x('//p');
text.forEach(function(tx){
    proverb.push(tx.innerHTML.replace(/&lt;\/?[^&gt;]+&gt;/gi, '').replace(/\n/gi, ''))
});
copy(proverb.toString());</pre>
<h4>余談</h4>
<p>もともとTwitter用に作ってました。<br />
  が、試してもらおうと思った@ujihisaがいつのまにか退会してたので、mixiにも対応してみました。</p>
<p>設定で、他のサイトでも使うようにできます。</p><p>&gt;&gt;ユーザースクリプトの管理&gt;&gt;include(ユーザースクリプトを実行するページ)指定することで。<br />
  ただし、ページの最初のテキストエリアに自動挿入する仕様です。</p>
<p>他にもドラゴンボール、スラムダンクなどあるといいなぁ。<br /></p><p>本当は名セリフを集めるサービスを作りたいのだけど、とりあえずやってみたいことの簡単な実例ということでつくってみました。</p><p>Todo:キーワードのインクリメンタル検索で、好きなセリフを挿入できるようにする。<br /></p>
<h4>2007.12.10 追記</h4>
<p>インクリメンタル検索機能を追加しました。</p>
<p><a href="http://www.flickr.com/photos/einfach/2100341376/" title="twitter JOJO by AUSGANG SOFT, on Flickr"><img src="http://farm3.static.flickr.com/2352/2100341376_964a4f7c3f_o.png" width="584" height="500" alt="twitter JOJO" /></a></p>
]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2007/1122223347.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2007/1122223347.html</guid>
            
            
            <pubDate>Thu, 22 Nov 2007 22:33:47 +0900</pubDate>
        </item>
        
        <item>
            <title>prototype.jsでfillinメッセージ</title>
            <description><![CDATA[ <script type="text/javascript" src="/einfach/archives/prototype.js"></script>
<script type="text/javascript" src="/einfach/archives/fillin.js"></script>

<h4>フィルインメッセージって？</h4>
<p>
  ↓こんなやつ。</p>
<input id="sample_text0" type="text" />
<script type="text/javascript">
Event.observe(window, 'load', function(){
	new fillin('sample_text0', 'Google', '#999');
});
</script>
<p>ブラウザの検索窓などに使われていて、ちょっと使いやすくなるっぽい効果を与えます。</p>
<p>prototype.jsで簡単にこの効果をつけられるライブラリを作ってみました。</p>
<h4>ダウンロード</h4>
<p><a href="http://a-h.parfe.jp/einfach/archives/fillin.js">http://a-h.parfe.jp/einfach/archives/fillin.js</a></p>
<h4>使い方・サンプル</h4>
<pre>&lt;script type="text/javascript" src="prototype.js"&gt;&lt;/script&gt;<br />&lt;script type="text/javascript" src="fillin.js"&gt;&lt;/script&gt;
</pre>
<p>prototype.jsのあとにこのライブラリを読み込んで<br />
以下のように書くと</p>
<pre>&lt;input type="text" id="sample_text1"&gt;
&lt;script type="text/javascript"&gt;
Event.observe(window, 'load', function(){
	new fillin('sample_text1', 'Google', '#999');
});
&lt;/script&gt;</pre>
<p>
  <input name="text" id="sample_text1" type="text" />
  <script type="text/javascript">
Event.observe(window, 'load', function(){
	new fillin('sample_text1', 'Google', '#999');
});
</script>
</p>
<p>↑こうなります。</p>
<p>fillin('&lt;対象のＩＤ&gt;', 'フィルイン表示するメッセージ', 'メッセージの色');</p>
<p>という指定ができます。</p>
<h4>サンプル２</h4>
<form contenteditable="false" method="get" action="/">
<input id="sample_text2" type="text" /><br />
<input id="sample_text3" value="削除してみて" type="text" /><br />
<textarea id="sample_textarea"></textarea><br />
<input type="submit" />
</form>
<script type="text/javascript">
Event.observe(window, 'load', function(){
	new fillin('sample_text2', 'ここに入力', '#CCC');
	new fillin('sample_text3', 'こちらも有効', '#CCC');
	new fillin('sample_textarea', 'テキストボックスでもＯＫ', '#999');
});
</script>
<p>↓のようなコードを書くと↑になります。</p>
<pre>&lt;script type="text/javascript"&gt;
Event.observe(window, 'load', function(){
	new fillin('sample_text', 'ここに入力', '#CCC');
	new fillin('sample_text2', 'こちらも有効', '#CCC');
	new fillin('sample_textarea', 'テキストボックスでもＯＫ', '#999');
});
&lt;/script&gt;</pre>
<h4>サンプル3</h4>
<p>フィルインメッセージを表示させた個所に入力がされていないと、<br />
フォームを送信できなくなる機能もつけておきました。</p>
<form contenteditable="false" method="get" action="/" id="sample_form">
  <input name="text2" id="sample_text5" size="30" type="text" />
  <input type="submit" />
</form>
<script type="text/javascript">
Event.observe(window, 'load', function(){
	new fillin('sample_text5', '入力しないと送信できないよ', '#CCC', 'sample_form');
});
</script>
<pre>&lt;form method="get" action="/" id="sample_form"&gt;
&lt;input type="text" id="sample_text5"&gt;
&lt;input type="submit"&gt;
&lt;/form&gt;
&lt;script type="text/javascript"&gt;
Event.observe(window, 'load', function(){
  new fillin('sample_text5', '入力しないと送信できないよ', '#CCC', 'sample_form');
});
&lt;/script&gt;</pre>
<p>↑のように4番目の引数に、フォームのIDを入れておくだけです。</p>
<p><strong>蛇足</strong></p>
<p>少し改造すれば、Google desktopの検索窓のように背景画像をフィルイン表示するのも可能かも。</p>
<p>「時代はjQuery！」という方には、同様の機能の、ｊQuery用プラグインが↓で公開されてます。</p>
<p>abui.nowa.jp - fillinメッセージギミックを実現するjQueryの拡張プラグイン<br />
  <a href="http://abui.nowa.jp/entry/8bff791a51" target="_blank">http://abui.nowa.jp/entry/8bff791a51</a></p>]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2007/1112182656.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2007/1112182656.html</guid>
            
            
            <pubDate>Mon, 12 Nov 2007 18:26:56 +0900</pubDate>
        </item>
        
        <item>
            <title>Kanasan.jsに行ってきました</title>
            <description><![CDATA[<p><a href="http://www.flickr.com/photos/einfach/1868134785/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2061/1868134785_94d6801646_o.jpg" alt="kanasan.js" height="70" width="313" /></a></p>
<h4>Kanasan.jsって？</h4>
<p>関西でJavaScriptの小さい勉強会を開くことになった (Kanasansoft Web Lab.)<br />
<a href="http://www.kanasansoft.com/weblab/2007/10/javascript_1.html">http://www.kanasansoft.com/weblab/2007/10/javascript_1.html</a></p>
<blockquote>Shibuya.JSが盛り上がっているのを関西から見ていると非常に悔しい。関西にも同様なコミュニティはないのか。
<a href="https://twitter.com/kanasan/statuses/342758542">https://twitter.com/kanasan/statuses/342758542</a></blockquote>
<p>  Twitter上のkanasanのこの発言から始まった関西ＪＳイベント。<br />
同様の思いを持ってた人は僕も含めてかなり多かったのではないかと。</p>
<p>  リバース風邪で前の晩から何も食べないまま、ふらふらしながら蛍池に。<br />
  20数人の参加者。かなり多い。<br />
やっぱりTwitterで知ったひとの割合が多かった。</p>
<h4>  内容</h4>
<p>  <strong>Kanasanによる基調講演。</strong><br />
  プロジェクターが調達できなかったらしく、みんなでMacbookにわらわらと群がりながら聞く。<br />
  2台のMacbook＋Keynoteをリモコンを使って交互に操作して笑いを誘いつつ、Javascriptの基本から。<br />
かなりこの時点でけっこう高度かも･･･という予感。</p>
<p><strong>Prototype.jsのソースをコードリーディング</strong><br />
  前半は、みんなでリーディング。<br />
  途中で、休憩後、初心者と上級者にわかれてリーディング。</p>
<h4>前半の感想。</h4>
<p>  オレ、Javascriptというプログラム言語のことって全然わかってないな～と。<br />
誰かも言ってたけど、使い方の部分はそこそこ知ってるけど内部の動作とか仕様の部分なんてもう知らないこと多くて新鮮だった。</p>
<p>異様に仕様にからむ話多いよ。<br />
  すごく正確なひとがいらっしゃり、<br />
  この人、頭の中に仕様書が入ってるのでは？と思うほど。<br />
隣のかた（<a href="http://d.hatena.ne.jp/nitoyon/20071105/kanasan_js1">nityon</a>さん）によると<a href="http://nanto.asablo.jp/blog/2007/11/04/1889765">Days on the Moon</a>の方だった模様。</p>
<p>せっかくなのでustream配信でもしてみようとカメラ持っていったのに、マイクを忘れ、音なし配信になってしまった。。。見てた人すんません＞＜</p>
<p>以下メモ書き。参加者のつぶやき、つっこみなど。<br />
耳コピなので内容は正確じゃないかもしれません。</p>
<pre>  truncate: function(length, truncation) {
    length = length || 30;
    truncation = truncation === undefined ? '...' : truncation;
    return this.length &gt; length ?
      this.slice(0, length - truncation.length) + truncation : this;
  },


truncateのデフォルト値は30
いい感じなのが30なのか？


__proto__
は宿題


  stripScripts: function() {
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
  },

img?イメージタグ？？<br />正規表現か
imgは間違いやすいだろ!!


↓こっちのが処理速度が速い？

Object.extend(String.prototype.escapeHTML, {
  div:  document.createElement('div'),
  text: document.createTextNode('')
});


unescapeHTML
toQueryParams
の対比
哲学の違い？

o.prototype ← functionのみ
o.__proto__ ← すべてのObjectに存在する


  toQueryParams: function(separator) {
    var match = this.strip().match(/([^?#]*)(#.*)?$/);

?,は使えないブラウザがあるかもしれない？


  underscore: function() {
    return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
  },

gsubはRubyライクな置換をするため？


JSON多い
これなに？
読むの嫌になってきた。。。
コメント欲しい。。。。

  isJSON: function() {
    var str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
  },

r-u はrstu?

どんなときに使うの？


with (String.prototype.escapeHTML) div.appendChild(text);

evalする回数を一回減らす
百円のものを99円で買うようなもの？
</pre>
<h4> 後半の感想。</h4>
<p>  他の人も書いてらっしゃるがレベルが高すぎて呆然とした。<br />
  なんていうかプログラム知識のレベルが。<br />
  RubyとかHaskellとかLispの話についていけない～。でもつっこみが笑える～。</p>
<p>  途中、空腹で朦朧としてたときに配られたお菓子がありがたかった。<br />
お酒のつまみとしか思えない噛み切れない干物とかもあったけどｗ</p>
<p>  そんなこんなで非常に濃くてついてくのも必死だったけどおもしろかった。<br />
今回、十分の一まで進んだ。あと十回あり？</p>
<p>  なんか最近、私事で忙しく、プログラムへの熱意が薄まってる気がしてたのだけど、もっとできる限り勉強しようと思った。</p>
<h4>  主催者曰く、</h4>
<p> 「家に帰ってレポートを書き、主催者のブログにトラックバックを送るまでが勉強会です」</p>
<p>  ああ、やっとオレのKanasan.jsが終わる。楽しかった。<br />
2回目も参加したいっす。</p>
<p>  楽しいイベントを開いてくれた<a href="http://www.kanasansoft.com/weblab/2007/11/kanasanjs_1.html">kanasan</a>、裏の仕掛け人<a href="http://ujihisa.nowa.jp/">ujihisa</a>、参加者のみなさんに感謝。
</p>
]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2007/1105164651.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2007/1105164651.html</guid>
            
            
            <pubDate>Mon, 05 Nov 2007 16:46:51 +0900</pubDate>
        </item>
        
        <item>
            <title>私の出会ったバグ達 - ブラウザ依存</title>
            <description><![CDATA[<style type="text/css">
<!--

/* CcFox */

#CcFox {
	display: none;
	position: absolute;
	/* position: fixed !important; */
	z-index: 100001;
	top: 0;
	left: 0;	
	background-color: #fff;
	filter: alpha(opacity=65);
	-moz-opacity:0.65;
	opacity:0.65;
	padding: 0 5% 0 5%;
/*
	background-color: transparent;
*/
	text-align: left;
	overflow: auto;
}
#CFTab {
	display: none;
	position: absolute;
	z-index: 100002;
	width: 100%;
	height: 100%;
	background-color: #fff;
	margin: 0 auto;
	border: 10px solid #999;
}

#shadow {
	opacity:0.5;
	background:#222222 none repeat scroll 0%;
	border:medium none;
	bottom:0pt;
	height:100%;
	left:50px;
	position:absolute;
	width:100%;
	z-index:1;
	float:left;
}

-->
</style>

<script type="text/javascript" src="http://a-h.parfe.jp/einfach/archives/prototype.js"></script>

<script type="text/javascript">
<!--


var log = function(){
	if(!window.console) return;
	var c = window.console;
	if(c)    c.log.apply(c, arguments);
}

/* for Older Safari */
if (!Object.hasOwnProperty) {
  Object.prototype.hasOwnProperty = function(it) {
    return (this[it] && !this.constructor.prototype[it]);
  }
}

function mktag(tagName, option, childs){
	var tag = document.createElement(tagName);
	if(option){
		for(a in option){
			if(a == 'style' && typeof(option[a]) == 'object'){
				var styles = option[a];
				for(a in styles){
					tag.style[a] = styles[a];
				}
			}else if(option.hasOwnProperty(a)){
				tag[a] = option[a];
			}
		}
	}
	switch(typeof childs){
		case 'string' : {
			tag.appendChild(document.createTextNode(childs));
			break;
		}
		case 'object' : {
			if(!childs.length) tag.appendChild(childs);
			for (var i=0, l=childs.length; i<l; i++) {
				var child = childs[i];
				if(typeof child == 'string'){
					tag.appendChild(document.createTextNode(child));
				}else{
					tag.appendChild(child);
				}
			}
			break;
		}
	}
	return tag;
}

'div p span a img br table tr th td form label input textarea'.split(' ').each(function(tagName){
	var func = function(option, childs){
		return mktag(tagName, option, childs);
	};
	eval('$' + tagName + '= func;' );
});

function getWinSize() {
	var width;
	var height;

	if (document.compatMode == 'CSS1Compat' && !window.opera) {
		width= document.documentElement.clientWidth;
		height = document.documentElement.clientHeight;
    } else if (navigator.userAgent.indexOf('AppleWebKit') != -1){
		width  = window.innerWidth;
		height = window.innerHeight;
	} else {
		width= document.body.clientWidth;
		height = document.body.clientHeight;
	}
	return [width, height];
}

function getPageSize() {

	var winSize = getWinSize();

	var width  = winSize[0];
	var height = winSize[1];

	if (document.compatMode == 'CSS1Compat') {
	  if (document.documentElement.scrollWidth > width) {
		width  = document.documentElement.scrollWidth;
	  }
	  if (document.documentElement.scrollHeight > height) {
		height = document.documentElement.scrollHeight;
	  }
	} else {
	  if (document.body.scrollWidth > width) {
		width  = document.body.scrollWidth;
	  }
	  if (document.body.scrollHeight > height) {
		height = document.body.scrollHeight;
	  }
	}

	return [width, height];
}


var CcFox = new Class.create();
CcFox.prototype = {
	initialize: function(){
		this.version = 0.02;
		this.make();
		this.setSize();
		this.setEvent();
	},
	make: function(){
		this.win = mktag('div', {id: 'CcFox'});
		this.tab = mktag('iframe', {
			id: 'CFTab',
			name: 'CFTab',
			frameBorder: 'no',
			scrolling: 'no'
		});
		//this.win.appendChild(this.tab);
		document.body.appendChild(this.tab);
		document.body.appendChild(this.win);
	},
	setEvent: function(){
		Event.observe(window, 'resize', this.setSize.bind(this));
		Event.observe(window, 'keypress' ,function(e){
			if(e.keyCode == 27)this.hide();
		}.bind(this));
		Event.observe(this.win, 'click', this.hide.bind(this));
	},
	setSize: function(width, height){
		var width = 464;
		var height = 410;
		var size = getWinSize();
		this.win.style.width = size[0] + 'px';
		this.win.style.height = size[1] + 'px';
		this.tab.style.left = (size[0] - width)/2 + 'px';
		this.tab.style.top = (size[1] - height)/2 + 'px';
		this.tab.style.width = width + 'px';
		this.tab.style.height = height + 'px';
	},
	show: function(url){
		this.win.style.display = 'block';
		this.tab.style.display = 'block';
		this.tab.src = url;
	},
	hide: function(){
		this.win.style.display = 'none';
		this.tab.style.display = 'none';
		this.tab.src = '';
	}
}

Event.observe(window, 'load', function(){
browser = new CcFox;
});
-->
</script>

<p>最近、Javascriptで開発していて、ブラウザ依存のバグに出会うことが多いので、実例をメモ。<br />原因と対策は、リンク先を参照されたし。</p>

<br />
<h4>ifreame上のinput、textareaからキャレットが消えるバグ</h4>

<p>Windows版Firefoxで発症。</p>

<h5>実例</h5>

<p><input value="Open iframe" onclick="try{browser.show('/einfach/archives/form.html')}catch(e){}" type="button" /></p>

<p>↑の場合は、背景のオーバレイDIVを消したら、治った。</p>

<pre>Bug 226933 - Caret vanishes in input form elements over iframe - lambda {|diary| lambda { diary += 1 } }.call(hatena)
<a href="http://d.hatena.ne.jp/winebarrel/20070814/p1">http://d.hatena.ne.jp/winebarrel/20070814/p1</a></pre>

<br />
<h4>透明のオーバレイDIVを表示すると勝手にFlashが消えるバグ</h4>

<p>Mac版Firefoxのみ発症。<br />
透明度が関連するので、DIVのフェードイン、フェードアウトのエフェクトでも再現した。</p>

<h5>実例</h5>

<p><input value="Show shadow div" onclick="Element.toggle('shadow')" type="button" /></p>

<div class="amazie_ad">
<p>
<script type="text/javascript"><!--//
amazie_ad_prm = "amazie=0%26Books=Javascript";//
amazie_ad_asid = "asociatehelpe-22";//
amazie_ad_width = 400;//
amazie_ad_height = 128;//
amazie_ad_type = "yoko";//
amazie_ad_n = 2;//
amazie_ad_tar = 1;//
amazie_ad_ref = 1;//
amazie_ad_pl = 25;//
amazie_ad_time = 300;//
amazie_color_text = "000000";//
amazie_color_bg = "";//
amazie_color_line = "";//
amazie_ad_bg = "http://amazie.jp/bg/white2.swf";//
//--></script><script type="text/javascript" src="http://amazie.jp/js/show_amz2.js"></script>
</p>
<div id="shadow" style="display: none;" onclick="Element.hide(this);"></div>
<br />
<pre>Bug:Flash Disappear in Firefox on Mac
<a href="http://www.hedgerwow.com/360/bugs/opacity-disable-flash-on-mac-firefox.html">http://www.hedgerwow.com/360/bugs/opacity-disable-flash-on-mac-firefox.html</a></pre>

<br />
<h4>Javascriptで生成したラジオボタンが選択できないバグ</h4>

<p>Windows版 IE6、IE7で発症。</p>

<h5>実例</h5>

<div id="select_type"></div>
<script type="text/javascript">
<!--
'Amazon Google Apple Yahoo Facebook MySpace'.split(' ').each(function(name){
	var input = mktag('input', {
		type: 'radio',
		value: name,
		id: name,
		name: 'type'
	})
	var label = mktag('label', {htmlFor: name}, [input, name]);
	$('select_type').appendChild(label);
});
-->
</script>

<br />
<p>一番、わかりにくくてハマりました。<br />
IEで生成されているHTMLソースを見て判明。<br />
<br />
生成されたHTMLの参照は<a href="http://www.ie7pro.com/">IE7Pro</a>がオススメ。日本語対応、無料、IE6でも使える。<br />
プロキシの切り替えがCtrl+F9でできるのでプロキシ駆動開発にも便利。</p>

<pre>掲示板/JavaScript質問板/DOMを利用して追加したエレメントのエラーチェック - TAG index
<a href="http://www.tagindex.com/cgi-lib/q4bbs/patio.cgi?mode=view&amp;no=1211">http://www.tagindex.com/cgi-lib/q4bbs/patio.cgi?mode=view&amp;no=1211</a>
IE は createElement('input') した要素の name 属性を変更することができない。</pre>
</div>

<p>同じようなバグで悩まされている方の参考になれば幸いです。</p>]]></description>
            <link>http://a-h.parfe.jp/einfach/archives/2007/1024220905.html</link>
            <guid>http://a-h.parfe.jp/einfach/archives/2007/1024220905.html</guid>
            
            
            <pubDate>Wed, 24 Oct 2007 22:09:05 +0900</pubDate>
        </item>
        
    </channel>
</rss>
