<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5275746956271420249</id><updated>2024-08-30T01:59:52.770+09:00</updated><category term="Firefox"/><category term="Stylish"/><category term="foobar2000"/><category term="SBM"/><category term="Google"/><category term="Custom Buttons"/><category term="Greasemonkey"/><category term="userCrome.js"/><category term="Other"/><category term="Apple"/><category term="Desktop Customize"/><title type='text'>WebScrap</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://other-webscrap.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>69</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-8119267689243367866</id><published>2011-12-30T21:41:00.010+09:00</published><updated>2011-12-30T22:59:24.645+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Custom Buttons"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="Greasemonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="userCrome.js"/><title type='text'>Firefox 9.0 現在の設定・アドオン</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLZmoSogMXxB1rWN5aUVbRfdAAv71cNKh0ZbDo3NkKiVMCymS6xcUeYH4RoidEjpKne5gvwQe8-qypN2mMlrrBCLS9U8VTn-R7Grl9O9pwUDhHA7cOtj8PBsmqso8ZFjF2SGWFS0eqM8KU/s900/firefox9%25255B1%25255D.jpg&quot; rel=&quot;lightbox&quot;&gt;&lt;img alt=&quot;firefox9&quot; border=&quot;0&quot; height=&quot;315&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVj69wu4ngW8IbN4rDWcaiVYzzrOh4Nlbdg2ofr5KnMj290RC7XUZ_9-FyAmI07xBMaezDXOD2OslYoskllKNn3wNqN8Ab8Osnk8-11Sqm6QWYv3xmRRGoJPNQpmsd_6Rfcp464Ywn0uaK/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none;&quot; title=&quot;firefox9&quot; width=&quot;560&quot; /&gt;&lt;/a&gt;しばらく記録を残さなった間にFirefoxもかなりバージョンアップを繰り返してきたようだ。前の記録から大きく飛んでしまう事になるが、設定やアドオンはそれほど変わらなかった。いくつかのアドオンは同様または代替となるものと交換し、FirefoxのUIの変更に伴ってそれに対応したアドオンも導入した。 &lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/10255&quot; target=&quot;_blank&quot;&gt;bookmarks history panel&lt;/a&gt; &lt;br /&gt;
ブックマーク・履歴サイドバーをポップアップ表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://classic-web.archive.org/web/20080731120416/http://code.google.com/p/cachestatus/downloads/detail?name=cachestatus.xpi&amp;amp;can=2&amp;amp;q=&quot; target=&quot;_blank&quot;&gt;Cache Status&lt;/a&gt; &lt;br /&gt;
メモリ・ディスクキャッシュの容量を設定し、一定まで溜まると自動で削除する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/handysearch/&quot; target=&quot;_blank&quot;&gt;Ctrl Ctrl&lt;/a&gt; &lt;br /&gt;
Ctrlキー2回押しで画面上に検索窓を表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/custom-buttons/&quot; target=&quot;_blank&quot;&gt;Custom Buttons&lt;/a&gt; &lt;br /&gt;
様々な機能のボタンをツールバーに追加できる。  &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;Auto context menu on selection&lt;/a&gt; &lt;br /&gt;
選択するとコンテキストメニューを開く&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-1135.html&quot; target=&quot;_blank&quot;&gt;AutoCopy&lt;/a&gt; &lt;br /&gt;
選択した文字列を自動でコピーする。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/12/deliciouscustom-buttons.html&quot;&gt;delicious&lt;/a&gt; &lt;br /&gt;
表示しているサイトをdeliciousに登録する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://urtz.blog58.fc2.com/blog-entry-76.html&quot; target=&quot;_blank&quot;&gt;Google’s Cache&lt;/a&gt; &lt;br /&gt;
表示しているサイトのGoogleキャッシュを表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/09/firefoxsleipnirgoogle-chromecustom.html&quot;&gt;Launch Google Chrome&lt;/a&gt; &lt;br /&gt;
表示しているサイトをGoogle Chromeで開く。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;Launch IE&lt;/a&gt; &lt;br /&gt;
表示しているサイトをSleipnirで開く。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons.mozdev.org/drupal/content/make-bookmarklet-button&quot; target=&quot;_blank&quot;&gt;Make bookmarklet button&lt;/a&gt;&lt;br /&gt;
ブックマークレットをCustom Buttons化する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19837833.html&quot; target=&quot;_blank&quot;&gt;Open the Chrome Folder&lt;/a&gt; &lt;br /&gt;
FirefoxのProfileフォルダを開く。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.asahi-net.or.jp/%7Ehn5k-itu/Pdflink.html&quot; target=&quot;_blank&quot;&gt;PDF to GoogleDocs&lt;/a&gt; &lt;br /&gt;
ページ内のpdfへのリンクをGoogleDocsで開くようにURLを書き換える。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19837833.html&quot; target=&quot;_blank&quot;&gt;Restart Firefox&lt;/a&gt; &lt;br /&gt;
Firefoxを再起動する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-1135.html&quot; target=&quot;_blank&quot;&gt;toggle GIF anime&lt;/a&gt; &lt;br /&gt;
gifアニメーションのon/offを切り替える。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19887381.html&quot; target=&quot;_blank&quot;&gt;Toggle Option&lt;/a&gt; &lt;br /&gt;
オプション画面を開く。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;サイト内検索&lt;/a&gt; &lt;br /&gt;
表示しているサイト内をGoogleで検索する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/09/custom-buttons.html&quot;&gt;はてなブックマークレット&lt;/a&gt; &lt;br /&gt;
表示しているサイトをはてなブックマークに登録する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;リファラ on/off 切り替え&lt;/a&gt; &lt;br /&gt;
リファラのon/offを切り替える。 &lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/download-on-arrow-panel/&quot; target=&quot;_blank&quot;&gt;Download on arrow panel&lt;/a&gt; &lt;br /&gt;
ダウンロードマネージャをポップアップで表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/8538&quot; target=&quot;_blank&quot;&gt;feedly&lt;/a&gt; &lt;br /&gt;
Googleリーダーで取得しているフィードをマガジンスタイルで表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/find-toolbar-tweaks/&quot; target=&quot;_blank&quot;&gt;Find Toolbar Tweaks&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
ページ内検索バーの機能を拡張する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/flashblock/&quot; target=&quot;_blank&quot;&gt;Flashblock&lt;/a&gt; &lt;br /&gt;
Flashの自動再生を停止させる。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/gmail-checker/&quot; target=&quot;_blank&quot;&gt;Gmail Checker&lt;/a&gt; &lt;br /&gt;
Gmailの新着メールを定期的に確認する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/image-toolbar/&quot; target=&quot;_blank&quot;&gt;Image Toolbar&lt;/a&gt; &lt;br /&gt;
マウス上の画像に保存などのボタンを表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/imestatus/&quot; target=&quot;_blank&quot;&gt;IMEStatus&lt;/a&gt; &lt;br /&gt;
文字の入力状態に応じてフォームの背景色を変化させる。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/minimize-addon-bar/&quot; target=&quot;_blank&quot;&gt;Minimize Addon-Bar&lt;/a&gt; &lt;br /&gt;
アドオンバーの表示範囲を設定し、開閉できるようにする。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/minimizetotray-revived/&quot; target=&quot;_blank&quot;&gt;MinimizeToTray revived&lt;/a&gt; &lt;br /&gt;
Firefoxを最小化・閉じたときタスクトレイにしまう。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.filehippo.com/download_orbit_downloader/6117/&quot; target=&quot;_blank&quot;&gt;Orbit Downloader Firefox Integration&lt;/a&gt; &lt;br /&gt;
Orbitへパラメータを渡す。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/personal-menu/&quot; target=&quot;_blank&quot;&gt;Personal Menu&lt;/a&gt; &lt;br /&gt;
Firefoxメニューをカスタマイズできるようにする。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/read-it-later/&quot; target=&quot;_blank&quot;&gt;Read It Later&lt;/a&gt; &lt;br /&gt;
「あとで読む」機能を追加する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/show-file-size/&quot; target=&quot;_blank&quot;&gt;Show File Size2&lt;/a&gt; &lt;br /&gt;
ファイルを保存するダイアログウィンドウにファイルサイズを表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/tab-utilities/&quot; target=&quot;_blank&quot;&gt;Tab Utilities&lt;/a&gt; &lt;br /&gt;
タブ機能を設定する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userchromejs.mozdev.org/&quot; target=&quot;_blank&quot;&gt;userChromeJS&lt;/a&gt; &lt;br /&gt;
FirefoxのUIを拡張する。  &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://firefox.geckodev.org/index.php?plugin=attach&amp;amp;pcmd=open&amp;amp;file=copy_link_text-1.0-fx.uc.xul&amp;amp;refer=userChrome.js&quot; target=&quot;_blank&quot;&gt;copy_link_text-1.0-fx.uc.xul&lt;/a&gt; &lt;br /&gt;
リンク文字列をコピーする。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/alice0775/userChrome.js/blob/master/rebuild_userChrome.uc.xul&quot; target=&quot;_blank&quot;&gt;rebuild_userChrome.uc.xul&lt;/a&gt;&lt;br /&gt;
userChrome.js用のスクリプトのキャッシュをクリアーし,新しいウインドウを開く。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=70&quot; target=&quot;_blank&quot;&gt;SubmitToTab.uc.xul&lt;/a&gt; &lt;br /&gt;
送信ボタンを中クリックで新規タブに開く。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=266&quot; target=&quot;_blank&quot;&gt;adblock#.uc.js&lt;/a&gt; &lt;br /&gt;
ページ上の広告をブロックする。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=121&quot; target=&quot;_blank&quot;&gt;AutocloseBookmark&amp;amp;HistoryFolders.uc.js&lt;/a&gt; &lt;br /&gt;
ブックマーク・履歴サイドバーで他のフォルダを開けたとき自動で閉める。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=302&quot; target=&quot;_blank&quot;&gt;dragimage.uc.js&lt;/a&gt; &lt;br /&gt;
画像をドラッグしてスクルールできるようにする。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/alice0775/userChrome.js/blob/master/findNextPrevByMouseWheel.uc.js&quot; target=&quot;_blank&quot;&gt;findNextPrevByMouseWheel.uc.js&lt;/a&gt; &lt;br /&gt;
ページ内検索の「次を検索」と「前を検索」をボタン上のマウスホイールの回転でできるようにする。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs3.html&quot; target=&quot;_blank&quot;&gt;MenubarForcus.uc.js&lt;/a&gt; &lt;br /&gt;
Flashにフォーカスがある時サイドバーのスクロールをできるようにする。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ne.jp/asahi/nanto/moon/2006/12/31/middle-click-and-go.uc.js&quot; target=&quot;_blank&quot;&gt;MiddleClickandGo.uc.js&lt;/a&gt; &lt;br /&gt;
サーチバー、ロケーションバーを中クリックするとクリップボードの値を読み込んで検索する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.xuldev.org/misc/script/MouseGestures2.uc.js&quot; target=&quot;_blank&quot;&gt;MouseGestures.uc.js&lt;/a&gt; &lt;br /&gt;
軽量マウスジェスチャを追加する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://firefox.geckodev.org/index.php?plugin=attach&amp;amp;pcmd=open&amp;amp;file=SelectSearchInTextArea.uc.js&amp;amp;refer=userChrome.js&quot; target=&quot;_blank&quot;&gt;SelectSearchInTextArea.uc.js&lt;/a&gt; &lt;br /&gt;
テキストエリア内でドラッグした文字列を’Googleで検索’ができるようにする。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=88&quot; target=&quot;_blank&quot;&gt;smartmiddleclick.uc.js&lt;/a&gt; &lt;br /&gt;
JavaScriptリンクを中クリックで新規タブに開く。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/alice0775/userChrome.js/blob/master/textLink.uc.js&quot; target=&quot;_blank&quot;&gt;TextLink.uc.js&lt;/a&gt; &lt;br /&gt;
リンクの貼られていないURLや足りていない文字列を補完して、ダブルクリックで新規タブに開く。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gist.github.com/225872&quot; target=&quot;_blank&quot;&gt;uAutoPagerize.uc.js&lt;/a&gt; &lt;br /&gt;
AutoPagerizeをuserChromeJSに移植したもの。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/alice0775/userChrome.js/blob/master/ucjs_findWrapPlayBeep.uc.js&quot; target=&quot;_blank&quot;&gt;ucjs_findWrapPlayBeep.uc.js&lt;/a&gt; &lt;br /&gt;
ページ内検索において検索が折り返す時にビープ音を鳴らす。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/alice0775/userChrome.js/blob/master/ucjs_findbar_For3.7.uc.js&quot; target=&quot;_blank&quot;&gt;ucjs_findbar_For3.7.uc.js&lt;/a&gt; &lt;br /&gt;
ページ内検索からの検索結果を画面中央にスクロール表示させる。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/alice0775/userChrome.js/blob/master/ucjs_revert_titlebar.uc.js&quot; target=&quot;_blank&quot;&gt;ucjs_revert_titlebar.uc.js&lt;/a&gt; &lt;br /&gt;
タイトルバーにページ名を表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Griever/userChromeJS/blob/master/UserCSSLoader/UserCSSLoader.uc.js&quot; target=&quot;_blank&quot;&gt;UserCSSLoader.uc.js&lt;/a&gt;&lt;br /&gt;
Stylishの簡易版。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Griever/userChromeJS/blob/master/UserScriptLoader/UserScriptLoader.uc.js&quot; target=&quot;_blank&quot;&gt;UserScriptLoader.uc.js&lt;/a&gt; &lt;br /&gt;
Greasemonkeyとほぼ同じ機能を実装する。  &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/57679&quot; target=&quot;_blank&quot;&gt;GoogleSearch-RemoveRedirectFromLinks.user.js&lt;/a&gt; &lt;br /&gt;
Google検索のリダイレクトを消去して高速化する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/10/googlegreasemonkey.html&quot;&gt;GoogleThumnails.user.js&lt;/a&gt; &lt;br /&gt;
Googleの検索結果にサムネイルを追加する。 &lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/23906&quot; target=&quot;_blank&quot;&gt;Google+SBM.user.js&lt;/a&gt; &lt;br /&gt;
Googleの検索結果にはてなブックマーク数を表示する&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fg-180.katamayu.net/archives/2007/03/08/213055&quot; target=&quot;_blank&quot;&gt;FixRecommendedTags.user.js&lt;/a&gt; &lt;br /&gt;
はてなブックマークのタグの英語の大文字・小文字を同一化する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/57994&quot; target=&quot;_blank&quot;&gt;FlashQualityChanger.user.js&lt;/a&gt; &lt;br /&gt;
Flashの画質を自動で変更する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/95205&quot; target=&quot;_blank&quot;&gt;Google Hit Hider by Domain.user.js&lt;/a&gt; &lt;br /&gt;
Googleの検索結果から指定したドメインを含むものを非表示にする。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://jugyo.org/blog/2694&quot; target=&quot;_blank&quot;&gt;habocovi.user.js&lt;/a&gt; &lt;br /&gt;
コメント表示枠に触れた時に、はてなブックマークのコメントを取得して展開・表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gist.github.com/103061&quot; target=&quot;_blank&quot;&gt;imitationLightbox.user.js&lt;/a&gt;&lt;br /&gt;
Greased Lightboxの簡易版。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/71014&quot; target=&quot;_blank&quot;&gt;pixiv_comment_histories_opener.user.js&lt;/a&gt; &lt;br /&gt;
pixivのコメントを自動で表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/82175&quot; target=&quot;_blank&quot;&gt;pixiv_expand_thumbnails.user.js&lt;/a&gt; &lt;br /&gt;
pixivのイラストページで画像をオリジナルサイズに置換し、マンガは展開して表示する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/39167&quot; target=&quot;_blank&quot;&gt;YouTubeHDSuite.user.js&lt;/a&gt; &lt;br /&gt;
YouTubeの動画を自動で高画質に切り替え、ダウンロードリンクを追加する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/39136&quot; target=&quot;_blank&quot;&gt;2chURLModify.user.js&lt;/a&gt; &lt;br /&gt;
2ch等の掲示板の画像URLをサムネイル表示に切り替える。&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/vertical-toolbar/&quot; target=&quot;_blank&quot;&gt;Vertical Toolbar&lt;/a&gt; &lt;br /&gt;
画面端に縦置きのツールバーを追加する。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/informational-tab/&quot; target=&quot;_blank&quot;&gt;情報化タブ&lt;/a&gt; &lt;br /&gt;
タブの中にサムネイルや読み込み状況などを表示できるようにする。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;メニューバーは元々ほとんどの項目を非表示にしていたので、Personal Menuを使ってFirefoxボタンにその機能を纏めた。 また、大量にあったCustom Buttonsのボタンは、Vertical Toolbarにより画面左端から縦型のツールバーを自動開閉して使えるようになったので、手動でのツールバーの開閉がいらなくなった。&lt;br /&gt;
Dom InspectorやStylishなどは別にWeb開発用のプロファイルを作って分割し、目的別に使い分けることにした。他にもDownload Statusbarはより省機能なDownload on arrow panelに入れ替えた。&lt;br /&gt;
これらのアドオンを整理した分、全体の挙動が軽くなったように感じられる。UIもよりシンプルにできたので、以前のものと比べても更に使いやすくなっただろう。 &lt;br /&gt;
&lt;div id=&quot;hatebu_content&quot; style=&quot;background-color: #1841ce; border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; bottom: 0px; color: white; font-family: arial; font-size: 11px; left: 0px; line-height: 16px; margin: 0pt; max-height: 400px; min-height: 16px; min-width: 16px; opacity: 0.6; overflow: auto; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; position: fixed; text-align: left; z-index: 300;&quot;&gt;&lt;div id=&quot;hatebu_status&quot; style=&quot;background-color: #1841ce; border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; color: white; font-size: 11px; line-height: 16px; margin: 0pt; padding-bottom: 0pt; padding-left: 0pt; padding-right: 0pt; padding-top: 0pt; text-align: right;&quot;&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2011/12/firefox-90.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/8119267689243367866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/8119267689243367866'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2011/12/firefox-90.html' title='Firefox 9.0 現在の設定・アドオン'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVj69wu4ngW8IbN4rDWcaiVYzzrOh4Nlbdg2ofr5KnMj290RC7XUZ_9-FyAmI07xBMaezDXOD2OslYoskllKNn3wNqN8Ab8Osnk8-11Sqm6QWYv3xmRRGoJPNQpmsd_6Rfcp464Ywn0uaK/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-7242970712262833363</id><published>2011-12-24T20:41:00.002+09:00</published><updated>2011-12-24T20:43:11.023+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Other"/><title type='text'>WebScrapをhtml5で再構築</title><content type='html'>しばらく触らなかった間に、Bloggerにも新しい機能が追加されていたようだ。以前からhtml5への移行は考えていたため、この機会にブログをhtml5で再構築した。他にもファビコンの一新や、細かい部分の手直しなども行った。&lt;br /&gt;
&lt;br /&gt;
また、新しいBloggerインターフェースはデザインはすっきりとしたが、動作のもたつきが気になるので、まだしばらくは旧インターフェースを使うことになりそうだ。</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2011/12/webscraphtml5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/7242970712262833363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/7242970712262833363'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2011/12/webscraphtml5.html' title='WebScrapをhtml5で再構築'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-1199754718960693735</id><published>2011-03-01T16:37:00.003+09:00</published><updated>2011-03-02T07:08:17.243+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Custom Buttons"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="Greasemonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="userCrome.js"/><title type='text'>Firefox 3.6 現在の設定・アドオン 2</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP1Yi86QGFyuq82BpbPafnfePiCxv6CNzE640jbgY9cNHDuJAch7LuEwgEN0m-69_P3QoyhCY09wmYma1evV4W_neOBUmwmUEOd6C2sLNrOA1pMuNa14ZJlkaLUwlFAI_uKgTs7V-e8_vo/&quot; rel=&quot;lightbox&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;firefox01&quot; border=&quot;0&quot; alt=&quot;firefox01&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCvF2SlxRzMQwNijFv6WOn0NSK-S376nzzFrD41VTa_nNGDC6g5d7WUWxj23O6BmaC0b2_SEE7GyujN2Xy5-AUavRh_alk1AYH5EpjPKIbOanDQhYWapfe8YNi0h7EDGoe6fP9GNh4QRUC/?imgmax=800&quot; width=&quot;440&quot; height=&quot;248&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;開発が長引いたFirefox 4も、今回のBeta 12でようやく最終テスト版になるようだ。既に何回か試しているが、やはりまだ多くのアドオンが対応しておらず、そのまま移行するのは難しそうだ。特に、多くの機能を兼ねているCustom Buttons²が使えないのは痛い。他にも代替のきかないものが多いので、正式版がリリースされてもしばらくの間はアップグレードできないだろう。&lt;/p&gt;&lt;p&gt;という訳で、同じバージョンのままでも設定やアドオンもかなり変わっているので、Firefox 3.6時の最後の状態を残しておく。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/10255&quot; target=&quot;_blank&quot;&gt;bookmarks history panel&lt;/a&gt;       &lt;br /&gt;
ブックマーク・履歴サイドバーをIE7のようにポップアップ表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-1291.html&quot; target=&quot;_blank&quot;&gt;Boss Key&lt;/a&gt;       &lt;br /&gt;
Firefoxを最小化・閉じる・グローバルホットキーでタスクトレイにしまう。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/cachestatus/downloads/detail?name=cachestatus.xpi&amp;amp;can=2&amp;amp;q=&quot; target=&quot;_blank&quot;&gt;Cache Status&lt;/a&gt;       &lt;br /&gt;
メモリ・ディスクキャッシュの容量を設定し、一定まで溜まると自動で削除する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/82&quot; target=&quot;_blank&quot;&gt;CookieCuller&lt;/a&gt;       &lt;br /&gt;
指定したクッキーを保護し、それ以外をFirefox起動時に削除する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/handysearch/&quot; target=&quot;_blank&quot;&gt;Ctrl Ctrl&lt;/a&gt;       &lt;br /&gt;
Ctrlキー2回押しで画面上に検索窓を表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/5066&quot; target=&quot;_blank&quot;&gt;Custom Buttons²&lt;/a&gt;       &lt;br /&gt;
様々な機能のボタンをツールバーに追加できる。       &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;Auto context menu on selection&lt;/a&gt;           &lt;br /&gt;
選択するとコンテキストメニューを開く &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-1135.html&quot; target=&quot;_blank&quot;&gt;AutoCopy&lt;/a&gt;           &lt;br /&gt;
選択した文字列を自動でコピーする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons2.com/ja/forum/buttons/buttons-database/bookmarklet-button-button.html&quot; target=&quot;_blank&quot;&gt;Bookmarklet to Button&lt;/a&gt;           &lt;br /&gt;
ブックマークレットをCustom Buttons化する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/12/deliciouscustom-buttons.html&quot;&gt;delicious&lt;/a&gt;           &lt;br /&gt;
表示しているサイトをdeliciousに登録する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons2.com/ja/forum/buttons/buttons-database/domi-error-console.html&quot; target=&quot;_blank&quot;&gt;DOMi and Error Console&lt;/a&gt;           &lt;br /&gt;
DOM Inspector、エラーコンソールを開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons2.com/ja/forum/buttons/buttons-database/extensions-menu-button.html&quot; target=&quot;_blank&quot;&gt;Extensions in Sidebar&lt;/a&gt;           &lt;br /&gt;
アドオンマネージャをサイドバーで開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://urtz.blog58.fc2.com/blog-entry-76.html&quot; target=&quot;_blank&quot;&gt;Google’s Cache&lt;/a&gt;           &lt;br /&gt;
表示しているサイトのGoogleキャッシュを表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/09/firefoxsleipnirgoogle-chromecustom.html&quot;&gt;Launch Google Chrome&lt;/a&gt;           &lt;br /&gt;
表示しているサイトをGoogle Chromeで開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;Launch IE&lt;/a&gt;           &lt;br /&gt;
表示しているサイトをSleipnirで開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19837833.html&quot; target=&quot;_blank&quot;&gt;Open the Chrome Folder&lt;/a&gt;           &lt;br /&gt;
FirefoxのProfileフォルダを開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.asahi-net.or.jp/~hn5k-itu/Pdflink.html&quot; target=&quot;_blank&quot;&gt;PDF to GoogleDocs&lt;/a&gt;           &lt;br /&gt;
ページ内のpdfへのリンクをGoogleDocsで開くようにURLを書き換える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2010/03/quix-custom-buttons.html&quot;&gt;Quix&lt;/a&gt;           &lt;br /&gt;
多機能ブックマークレットをCustom Buttons用に移植したもの。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19837833.html&quot; target=&quot;_blank&quot;&gt;Restart Firefox&lt;/a&gt;           &lt;br /&gt;
Firefoxを再起動する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-1135.html&quot; target=&quot;_blank&quot;&gt;toggle GIF anime&lt;/a&gt;         &lt;br /&gt;
gifアニメーションのon/offを切り替える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19887381.html&quot; target=&quot;_blank&quot;&gt;toggle Java&lt;/a&gt;           &lt;br /&gt;
Javaのon/offを切り換える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19887381.html&quot; target=&quot;_blank&quot;&gt;toggle Javascript&lt;/a&gt;           &lt;br /&gt;
JavaScriptのon/offを切り換える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19887381.html&quot; target=&quot;_blank&quot;&gt;Toggle Option&lt;/a&gt;           &lt;br /&gt;
オプション画面を開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons2.com/ja/forum/buttons/buttons-database/toggle-toolbars.html&quot; target=&quot;_blank&quot;&gt;Toggle Toolbar (Bookmark Toolbar)&lt;/a&gt;           &lt;br /&gt;
ツールバーを開閉する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://firefox.exxile.net/cb/index.php&quot; target=&quot;_blank&quot;&gt;URL-Tools&lt;/a&gt;           &lt;br /&gt;
一つ上の階層に移動やキャッシュなどを表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;サイト内検索&lt;/a&gt;           &lt;br /&gt;
表示しているサイト内をGoogleで検索する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/09/custom-buttons.html&quot;&gt;はてなブックマークレット&lt;/a&gt;           &lt;br /&gt;
表示しているサイトをはてなブックマークに登録する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;リファラ on/off 切り替え&lt;/a&gt;           &lt;br /&gt;
リファラのon/offを切り替える。 &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/6622&quot; target=&quot;_blank&quot;&gt;DOM Inspector&lt;/a&gt;       &lt;br /&gt;
表示しているサイトの構造を表示・解析する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/26&quot; target=&quot;_blank&quot;&gt;Download Statusbar&lt;/a&gt;       &lt;br /&gt;
ダウンロード中ファイルのプログレスバーをステータスバーの上に表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/8538&quot; target=&quot;_blank&quot;&gt;feedly&lt;/a&gt;       &lt;br /&gt;
Googleリーダーで取得しているフィードをマガジンスタイルで表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/find-toolbar-tweaks/&quot; target=&quot;_blank&quot;&gt;Find Toolbar Tweaks&lt;/a&gt;&amp;#160; &lt;br /&gt;
ページ内検索バーの機能を拡張する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/flashblock/&quot; target=&quot;_blank&quot;&gt;Flashblock&lt;/a&gt;       &lt;br /&gt;
Flashの自動再生を停止させる。 &lt;/li&gt;
&lt;li&gt;flstflip      &lt;br /&gt;
表示中のタブを閉じた時、直前にフォーカスしていたタブをアクティブにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/5627&quot; target=&quot;_blank&quot;&gt;Group/Sort Tabs&lt;/a&gt;       &lt;br /&gt;
同ドメインやリンク元→リンク先のタブを自動でグループ化する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/image-toolbar/&quot; target=&quot;_blank&quot;&gt;Image Toolbar&lt;/a&gt;       &lt;br /&gt;
マウス上の画像に保存などのボタンを表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/imestatus/&quot; target=&quot;_blank&quot;&gt;IMEStatus&lt;/a&gt;       &lt;br /&gt;
文字の入力状態に応じてフォームの背景色を変化させる。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/link-target-display/&quot; target=&quot;_blank&quot;&gt;Link Target Display&lt;/a&gt;       &lt;br /&gt;
Google Chromeのようなリンク先表示を実装する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.filehippo.com/download_orbit_downloader/6117/&quot; target=&quot;_blank&quot;&gt;Orbit Downloader Firefox Integration&lt;/a&gt;       &lt;br /&gt;
Orbitへパラメータを渡す。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/save-to-read/&quot; target=&quot;_blank&quot;&gt;Save-To-Read&lt;/a&gt;&amp;#160; &lt;br /&gt;
「あとで読む」機能を追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/427&quot; target=&quot;_blank&quot;&gt;ScrapBook&lt;/a&gt;       &lt;br /&gt;
Webサイトを取り込んで保存する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/2108&quot; target=&quot;_blank&quot;&gt;Stylish&lt;/a&gt;       &lt;br /&gt;
CSSでWebサイトの表示を変更できる。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/12105&quot; target=&quot;_blank&quot;&gt;Stylish-Custom&lt;/a&gt;       &lt;br /&gt;
Stylishの機能や設定を拡張する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/tab-progress-bar/&quot; target=&quot;_blank&quot;&gt;Tab Prgress Bar&lt;/a&gt;       &lt;br /&gt;
タブ上にプログレスバーを表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/tab-utilities/&quot; target=&quot;_blank&quot;&gt;Tab Utilities&lt;/a&gt;       &lt;br /&gt;
タブ機能を設定する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userchromejs.mozdev.org/&quot; target=&quot;_blank&quot;&gt;userChromeJS&lt;/a&gt;       &lt;br /&gt;
FirefoxのUIを拡張する。       &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://firefox.geckodev.org/index.php?userChrome.js#p3e08575&quot; target=&quot;_blank&quot;&gt;copy_link_text-1.0-fx.uc.xul&lt;/a&gt;           &lt;br /&gt;
リンク文字列をコピーする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=70&quot; target=&quot;_blank&quot;&gt;SubmitToTab.uc.xul&lt;/a&gt;           &lt;br /&gt;
送信ボタンを中クリックで新規タブに開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=266&quot; target=&quot;_blank&quot;&gt;adblock#.uc.js&lt;/a&gt;           &lt;br /&gt;
ページ上の広告をブロックする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=121&quot; target=&quot;_blank&quot;&gt;AutocloseBookmark&amp;amp;HistoryFolders.uc.js&lt;/a&gt;           &lt;br /&gt;
ブックマーク・履歴サイドバーで他のフォルダを開けたとき自動で閉める。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=302&quot; target=&quot;_blank&quot;&gt;dragimage.uc.js&lt;/a&gt;           &lt;br /&gt;
画像をドラッグしてスクルールできるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=225&quot; target=&quot;_blank&quot;&gt;enabledMainMenuToMove.uc.js&lt;/a&gt;           &lt;br /&gt;
メインメニューをドラッグアンドドロップで移動できるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs3.html&quot; target=&quot;_blank&quot;&gt;findNextPrevByMouseWheel.uc.js&lt;/a&gt;           &lt;br /&gt;
ページ内検索の「次を検索」と「前を検索」をボタン上のマウスホイールの回転でできるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://d.hatena.ne.jp/Griever/20081215/1229353082&quot; target=&quot;_blank&quot;&gt;MedleyMenu.uc.js&lt;/a&gt;           &lt;br /&gt;
メニューバーを一纏めにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs3.html&quot; target=&quot;_blank&quot;&gt;MenubarForcus.uc.js&lt;/a&gt;           &lt;br /&gt;
Flashにフォーカスがある時サイドバーのスクロールをできるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ne.jp/asahi/nanto/moon/2006/12/31/middle-click-and-go.uc.js&quot; target=&quot;_blank&quot;&gt;MiddleClickandGo.uc.js&lt;/a&gt;           &lt;br /&gt;
サーチバー、ロケーションバーを中クリックするとクリップボードの値を読み込んで検索する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.xuldev.org/misc/ucjs.php?lang=ja#MouseGestures&quot; target=&quot;_blank&quot;&gt;MouseGestures.uc.js&lt;/a&gt;           &lt;br /&gt;
軽量マウスジェスチャを追加する。 &lt;/li&gt;
&lt;li&gt;StatusbarElementInsert.uc.js          &lt;br /&gt;
ステータスバーの要素をツールバーに移動させる。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://firefox.geckodev.org/index.php?userChrome.js#p3e08575&quot; target=&quot;_blank&quot;&gt;SelectSearchInTextArea.uc.js&lt;/a&gt;           &lt;br /&gt;
テキストエリア内でドラッグした文字列を’Googleで検索’ができるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=88&quot; target=&quot;_blank&quot;&gt;smartmiddleclick.uc.js&lt;/a&gt;           &lt;br /&gt;
JavaScriptリンクを中クリックで新規タブに開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=124&quot; target=&quot;_blank&quot;&gt;StopAddonUpdate.uc.js&lt;/a&gt;           &lt;br /&gt;
指定したアドオンの更新を無効にする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://mozilla.zeniko.ch/userchrome.js.html&quot; target=&quot;_blank&quot;&gt;TextareaSizers.uc.js&lt;/a&gt;           &lt;br /&gt;
テキストエリアの大きさを変更できるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs.html&quot; target=&quot;_blank&quot;&gt;TextLink.uc.js&lt;/a&gt;           &lt;br /&gt;
リンクの貼られていないURLや足りていない文字列を補完して、ダブルクリックで新規タブに開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gist.github.com/225872&quot; target=&quot;_blank&quot;&gt;uAutoPagerize.uc.js&lt;/a&gt;           &lt;br /&gt;
AutoPagerizeをuserChromeJSに移植したもの。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs.html&quot; target=&quot;_blank&quot;&gt;ucjs_findbar.uc.js&lt;/a&gt;           &lt;br /&gt;
ページ内検索からの検索結果を画面中央にスクロール表示させる。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs4.html&quot; target=&quot;_blank&quot;&gt;ucjs_findWrapPlayBeep.uc.js&lt;/a&gt;           &lt;br /&gt;
ページ内検索において検索が折り返す時にビープ音を鳴らす。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gist.github.com/358815&quot; target=&quot;_blank&quot;&gt;UserScriptLoader.uc.js&lt;/a&gt;           &lt;br /&gt;
Greasemonkeyとほぼ同じ機能を実装する。           &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/57679&quot; target=&quot;_blank&quot;&gt;GoogleSearch-RemoveRedirectFromLinks.user.js&lt;/a&gt;               &lt;br /&gt;
Google検索のリダイレクトを消去して高速化する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/10/googlegreasemonkey.html&quot;&gt;GoogleThunails.user.js&lt;/a&gt;               &lt;br /&gt;
Googleの検索結果にサムネイルを追加する。 &lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/23906&quot; target=&quot;_blank&quot;&gt;Google+SBM.user.js&lt;/a&gt;               &lt;br /&gt;
Googleの検索結果にはてなブックマーク数を表示する &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://shiftingpixel.com/lightbox/&quot; target=&quot;_blank&quot;&gt;GreasedLightbox.user.js&lt;/a&gt;               &lt;br /&gt;
リンクされた画像を新規タブで開かずにオーバーレイ表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/61079&quot; target=&quot;_blank&quot;&gt;AmazonPopupImageScript.user.js&lt;/a&gt;               &lt;br /&gt;
Amazonサイト内の画像をポップアップする &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/35179&quot; target=&quot;_blank&quot;&gt;DeliciousThumbnail&amp;amp;Favicon.user.js&lt;/a&gt;               &lt;br /&gt;
deliciousにサムネイル・ファビコンなどを追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fg-180.katamayu.net/archives/2007/03/08/213055&quot; target=&quot;_blank&quot;&gt;FixRecommendedTags.user.js&lt;/a&gt;               &lt;br /&gt;
はてなブックマークのタグの英語の大文字・小文字を同一化する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/57994&quot; target=&quot;_blank&quot;&gt;FlashQualityChanger.user.js&lt;/a&gt;               &lt;br /&gt;
Flashの画質を自動で変更する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/5288&quot; target=&quot;_blank&quot;&gt;Google Image direct links.user.js&lt;/a&gt;               &lt;br /&gt;
Google画像検索のリンクを直接画像を開くように置き換える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/95205&quot; target=&quot;_blank&quot;&gt;Google Hit Hider by Domain.user.js&lt;/a&gt;               &lt;br /&gt;
Googleの検索結果から指定したドメインを含むものを非表示にする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://jugyo.org/blog/2694&quot; target=&quot;_blank&quot;&gt;habocovi.user.js&lt;/a&gt;               &lt;br /&gt;
コメント表示枠に触れた時に、はてなブックマークのコメントを取得して展開・表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/71014&quot; target=&quot;_blank&quot;&gt;pixiv_comment_histories_opener.user.js&lt;/a&gt;               &lt;br /&gt;
pixivのコメントを自動で表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/82175&quot; target=&quot;_blank&quot;&gt;pixiv_expand_thumbnails.user.js&lt;/a&gt;               &lt;br /&gt;
pixivのイラストページで画像をオリジナルサイズに置換し、マンガは展開して表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/39167&quot; target=&quot;_blank&quot;&gt;YouTubeHDSuite.user.js&lt;/a&gt;               &lt;br /&gt;
YouTubeの動画を自動で高画質に切り替え、ダウンロードリンクを追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/39136&quot; target=&quot;_blank&quot;&gt;2chURLModify.user.js&lt;/a&gt;               &lt;br /&gt;
2ch等の掲示板の画像URLをサムネイル表示に切り替える。 &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/5846&quot; target=&quot;_blank&quot;&gt;Yet Another Smooth Scrolling&lt;/a&gt;       &lt;br /&gt;
スクロールをスムーズにする。 &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Ctrl Ctrlは中々面白いアドオンで、一々ロケーションバーにマウスを合わせずにキーボードだけで全ての操作が終わるので、中々使い勝手がいい。ただ、表示される検索窓の外観や文字サイズなどがあまり良くなかったので、Stylishで調整している。(&lt;a href=&quot;http://other-webscrap.blogspot.com/2011/02/firefox-ctrl-ctrlstylish.html&quot;&gt;Firefoxアドオン Ctrl Ctrlの外観を整えるStylish&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;UserScriptLoaderはuserContent.jsと同様にGreasemonkeyの機能を実装するものだが、こちらの方が管理がし易く、そのままでも動かせるスクリプトが多かったので交換した。また、「あとで読む」機能のアドオンはRead It Laterを使っていたが、 同期などの使わない機能が多かったので、少機能・少サイズのSave-To-Readを入れた。&lt;/p&gt;&lt;p&gt;最後に、注目しているアドオンとしてVertical Toolbarがある。画面端に縦置きのツールバーを設置してくれるもので、ポインタを端に寄せると自動で開閉される。ページ上に重なるように動作するので、サイドバーを開くときのように画面がずれることはない。Custom Buttonsのボタンも利用できるので、今までのように一々ツールバー開閉ボタンを押さなくてもよく、表示領域も狭くならないので一石二鳥である。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2011/03/firefox-36-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1199754718960693735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1199754718960693735'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2011/03/firefox-36-2.html' title='Firefox 3.6 現在の設定・アドオン 2'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCvF2SlxRzMQwNijFv6WOn0NSK-S376nzzFrD41VTa_nNGDC6g5d7WUWxj23O6BmaC0b2_SEE7GyujN2Xy5-AUavRh_alk1AYH5EpjPKIbOanDQhYWapfe8YNi0h7EDGoe6fP9GNh4QRUC/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-1763604922843109638</id><published>2011-02-28T22:32:00.004+09:00</published><updated>2011-03-03T13:05:58.990+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="Stylish"/><title type='text'>Firefoxアドオン Ctrl Ctrlの外観を整えるStylish</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6VBGkxM5_KAq1bBNqnzNSld-Ib_ggUFxhMuvbTHd0rScD6pYrvexlsfS5CKqN1hyncxekKDwXynPjdetRORG2e16wJEtH4ZsOhDxXkADdxsrQ8Ha7GxKWi0yQKhnkBLLISlwHta1pHBXu/&quot; rel=&quot;lightbox&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;ctrlctrl&quot; border=&quot;0&quot; alt=&quot;ctrlctrl&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFZmqNDmW84km6ddiRvxqiE6YKzyAgjztgea8qv1T098jk1AoDPxuARGzOz-GwDkJ8B0UUrc6YabKiftiRvWEvySBC2SnKDSXKqM46JYEPOkasMoxEM4xAGHuzHsCABZ8qEd7eUOWxfPTZ/?imgmax=800&quot; width=&quot;440&quot; height=&quot;251&quot; /&gt;&lt;/a&gt;検索候補などの文字サイズが大き過ぎたので、調整用のユーザースタイルを書いた。それに伴って外観も変更してある。Google以外の検索エンジンをほとんど使わないので、検索エンジン選択部分は非表示にしてある。その機能を使う場合は該当部分を削除してほしい。また、設定はWindow&#39;s width:600, Window&#39;s height offset:30に合わせてある。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://userstyles.org/styles/44715&quot; target=&quot;_blank&quot;&gt;Ctrl Ctrl adjustment - userstyles.org&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;&lt;b&gt;2011/03/03 追記：&lt;/b&gt;設定を追記。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2011/02/firefox-ctrl-ctrlstylish.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1763604922843109638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1763604922843109638'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2011/02/firefox-ctrl-ctrlstylish.html' title='Firefoxアドオン Ctrl Ctrlの外観を整えるStylish'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFZmqNDmW84km6ddiRvxqiE6YKzyAgjztgea8qv1T098jk1AoDPxuARGzOz-GwDkJ8B0UUrc6YabKiftiRvWEvySBC2SnKDSXKqM46JYEPOkasMoxEM4xAGHuzHsCABZ8qEd7eUOWxfPTZ/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-1053156260859349779</id><published>2010-05-10T13:21:00.005+09:00</published><updated>2010-05-10T13:48:57.007+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Other"/><title type='text'>radikoで録音した番組のCMをカットする</title><content type='html'>&lt;p&gt;少し前に始まったインターネットラジオサービスの&lt;a href=&quot;http://radiko.jp/&quot; target=&quot;_blank&quot;&gt;radiko&lt;/a&gt;が中々良い。普通のラジオよりも音質がかなり良くなっており、ノイズがほとんど入らない。録音にも専用の機材などがいらず、録音用のソフトだけで簡単にできるので、あまり手間暇かけずに好きな番組を録ることができる。&lt;/p&gt;&lt;p&gt;しかし、そのままでは前後の番組やCMなどが残ってしまう。 好きな番組は繰り返し聴きたいので、そういった不要な部分をカットし、ラジオを快適に楽しめるようにする。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;使うソフトは&lt;a href=&quot;http://koukaijo.seesaa.net/&quot; target=&quot;_blank&quot;&gt;radika&lt;/a&gt;と&lt;a href=&quot;http://audacity.sourceforge.net/?lang=ja&quot; target=&quot;_blank&quot;&gt;Audacity(1.3β)&lt;/a&gt;の二つ。 また、Audacityでmp3とm4aを扱うために&lt;a href=&quot;http://lame.buanzo.com.ar/&quot; target=&quot;_blank&quot;&gt;LAME&lt;/a&gt; 、&lt;a href=&quot;http://manual.audacityteam.org/index.php?title=FAQ:Installation_and_Plug-Ins#installffmpeg&quot; target=&quot;_blank&quot;&gt;FFmpeg&lt;/a&gt;。音声を解析する&lt;a href=&quot;http://www.gaclrecords.org.uk/audacity.html&quot; target=&quot;_blank&quot;&gt;SilenceMarker&lt;/a&gt;プラグインもインストールしておく。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;radikaの設定&lt;/p&gt;&lt;p&gt;&amp;#160; &lt;br /&gt;
radikoの性質上放送には若干のズレが生じるので、後に編集するのも踏まえて、予約マージンは前後に60秒と多めに取っておく。録音フォーマットはm4aに。録音終了時実行コマンドのファイルにAudacity.exe、引数に&amp;quot;@FIL&amp;quot;を指定しておけば、録音終了次第Audacityにファイルを渡せる。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;Audacityで不要な部分をカット&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;不要な部分を探すには、Silence Finderを使えば無音部分を検出してラベルがつけられ、番組～CM間の位置が解りやすくなるので、それを参考にして編集する。Silence Finderの値は上から40dB、0.5秒、0.20秒だといい具合に区切ってくれる。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE8KQIWe2qUUhToqPKokCnAoHycofjbd3oRH6DfQfxRythaaizkgLlf__w1EDE3QTRq0PyIjb4muiyBcTR51cjy1fqf_5bGdxoPfj6MPj4r7on8UInc4YB1NRygsUoiPDPgWaM-CrJFJuT/&quot; title=&quot;ラベルを参考にしながら編集する。&quot; rel=&quot;lightbox&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;Silence Finderで無音部分を検出&quot; border=&quot;0&quot; alt=&quot;Silence Finderで無音部分を検出&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhARsw_DIQOHA7QtvI7LD_7znAiwEcFa5iIM-EHCHtaNNtAG1X7nHHEFoqOgk7N3IhT4tM2rKdR2Ao98WzvqbbmzrwWqZsetrSfqPHyBukj5Sr2ZETHVUEADMZ4V6QP-DOTPzARwum9DvRU/?imgmax=800&quot; width=&quot;440&quot; height=&quot;249&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;いきなり不要な部分を削除すると音声とラベルの位置がずれてしまうので、最初に不要な部分を無音にしてから後でまとめて削除するといい。最後にラベルトラックを削除するのを忘れずに。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;出力時の音声フォーマットと音質&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;radikoの音声フォーマットはHE-AAC v2の48kbpsだが、HE-AAC v2は低ビットレートでもかなり音質が良いので、mp3で十分な音質にしたいなら128kbpsが調度いい。    &lt;br /&gt;
元のフォーマットで保存したいなら、AudacityではHE-AAC v2を出力することはできないので、一旦wavで保存し、&lt;a href=&quot;http://www.mediacoderhq.com/&quot; target=&quot;_blank&quot;&gt;MediaCoder&lt;/a&gt;などで再度HE-AAC v2に変換し直す。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;これで不要な部分を除いた番組本編だけのものができた。これをiPodなどに入れれば、いつでもお気に入りのラジオを快適に聴くことができる。もし数が多い場合は少し面倒になるので、あらかじめ編集して残したい番組を決めておいた方がいいだろう。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/05/radikocm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1053156260859349779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1053156260859349779'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/05/radikocm.html' title='radikoで録音した番組のCMをカットする'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhARsw_DIQOHA7QtvI7LD_7znAiwEcFa5iIM-EHCHtaNNtAG1X7nHHEFoqOgk7N3IhT4tM2rKdR2Ao98WzvqbbmzrwWqZsetrSfqPHyBukj5Sr2ZETHVUEADMZ4V6QP-DOTPzARwum9DvRU/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-8500148627450942798</id><published>2010-04-07T22:40:00.002+09:00</published><updated>2010-04-07T22:43:00.889+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="foobar2000"/><title type='text'>foobar2000 × iPod × Last.fm</title><content type='html'>&lt;p&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;foobar2000とiPodとLast.fmで連携&quot; border=&quot;0&quot; alt=&quot;foobar2000とiPodとLast.fmで連携&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCxozTSqffQBVryDczIezJLBC0mm8DmBNF2TtS0KgbpCrfFRgsEP7tlUx8VOrtywIkFOcIhFbsRmGPsYuvLMJD85Q4ugEvshVNekhSESHA3p22P6I-xGal2SXsi-jXyDhzf0npfCMPW9sj/?imgmax=800&quot; width=&quot;375&quot; height=&quot;96&quot; /&gt; &lt;/p&gt;&lt;p&gt;私はiPod nanoの管理用にiTunesを使っている。他にもそういった用途のソフトはあるが、iTunesよりも機能的に劣り、iPod nanoで聴いた曲をLast.fmに送信できないので、これ以外のものは使う気にはならなかった。だが、音楽を聴くのにはfoobar2000を使うので、そうなると別々に音楽ライブラリを構築しなければならず、かなり面倒臭く感じていた。&lt;/p&gt;&lt;p&gt;そんな折に、foobar2000でiPodが管理できる&lt;a href=&quot;http://yuo.be/ipod.php&quot; target=&quot;_blank&quot;&gt;iPod manager&lt;/a&gt;というコンポーネントがあったのを思い出した。これは以前試したことがあったが、そのときはまだ使い物にならなかったので見送りにしていた。しかし、久しぶりに試してみると機能がかなり改善されており、iTunesよりも高機能な部分もあった。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p class=&quot;crossheading&quot;&gt;iPod nanoで聴いた曲をLast.fmに送信&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;iTunesではプラグインのjscrob2でiPod nanoで聴いた曲をLast.fmに送信していたが、エラーが出たりすることもあってあまり使い勝手が良くなかった。&lt;/p&gt;&lt;p&gt;だが、foobar2000でもiPod managerと&lt;a href=&quot;http://mp3tag.de/en/fb2k.html&quot; target=&quot;_blank&quot;&gt;foo_audioscrobbler&lt;/a&gt;との連携でLast.fmに送信できるようになった。こちらは聴いた日時まで記録してくれるので、エラーも無く正確に情報を残してくれる。また、外部データベースに再生情報を記録し、そこから情報を取得することによって記録の散逸を防ぐこともできる。（&lt;a href=&quot;http://other-webscrap.blogspot.com/2010/01/foobar2000lastfm.html&quot;&gt;foobar2000 に Last.fm の曲情報を表示する&lt;/a&gt;）&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;コンピレーションアルバムの条件を自由に指定できる&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;iPod managerでは参照されるアルバム名やアーティスト名などの条件をTFで自由に編集できる。その中のCompilationの項目で特定のジャンルを指定しておけば自動で判別してくれるので、iTunesのように一つ一つアルバムごとに設定しなくてもいい。この点ではiTunesよりも使いやすい。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;iPod nanoでLoveトラックのランダムスマートプレイリスト&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;何より嬉しかったのはLast.fmのLoveトラックをiPod nanoで楽しめること。foobar2000にLoveトラックのAutoplaylistを作ってiPod nanoに送れば、そのプレイリストを利用して簡単にLoveトラックのランダムスマートプレイリストが作れる。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;欠点としてiPod managerではiTunes StoreやGeniusなどの機能はないが、曲の同期意外に使わないのならばこちらで十分だ。&lt;/p&gt;&lt;p&gt;これでiPod nanoの管理をするだけに使っていたiTunesがいらなくなり、foobar2000だけで事足りるようになった。音楽ライブラリを別々に構築するのは面倒だったので、これで随分と楽になるだろう。更にはLast.fmとの連携も強力にできるようになったので、言うこと無しだ。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/04/foobar2000-ipod-lastfm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/8500148627450942798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/8500148627450942798'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/04/foobar2000-ipod-lastfm.html' title='foobar2000 × iPod × Last.fm'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCxozTSqffQBVryDczIezJLBC0mm8DmBNF2TtS0KgbpCrfFRgsEP7tlUx8VOrtywIkFOcIhFbsRmGPsYuvLMJD85Q4ugEvshVNekhSESHA3p22P6I-xGal2SXsi-jXyDhzf0npfCMPW9sj/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-1216280773911925185</id><published>2010-03-15T01:07:00.005+09:00</published><updated>2011-02-28T22:36:46.654+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><title type='text'>Firefoxをネットブック向けにカスタマイズ</title><content type='html'>&lt;p&gt;遂に寿命が近づいていたノートPCが動かなくなったので、とりあえずネットブックを代わりに使用することに。Firefoxを入れて以前と同じ環境にしたが、このままではWebサイトの表示部分がかなり小さく見にくかったので、ネットブック用にカスタマイズし直すことにした。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;FirefoxのUIを大まかに分けるとツールバー、タブ、ステータスバーの3つ。それぞれの部分について省スペース化を考えていく。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;検索バーとロケーションバーの統合&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;今まではメニューバー、ナビゲーションツールバー、ブックマークツールバー(ボタンでの開閉式)の3段だった。その中でもナビゲーションツールバー内のロケーションバーがかなりスペースを取っているので、Googgle Chromeのように検索バーとロケーションバーを統合する&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/8823&quot; target=&quot;_blank&quot;&gt;Omnibar&lt;/a&gt;でスペースの節約を図る。更に他のボタンなども移動させて、ツールバーを２段構成にした。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;ページ内検索バーの強化&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;そうなると検索バーでのページ内検索はできなくなるので、&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/376&quot;&gt;SearchWP&lt;/a&gt;と&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/13320/&quot;&gt;検索ボックス自動入力（学習機能付き）&lt;/a&gt;は削除。代わりにページ内検索バーをカスタマイズする&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/2585&quot; target=&quot;_blank&quot;&gt;Find Toolbar Tweaks&lt;/a&gt;、検索結果を画面中央に表示する&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs.html&quot; target=&quot;_blank&quot;&gt;ucjs_findbar.uc.js&lt;/a&gt;、検索結果が折り返すときにビープ音を鳴らす&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs4.html&quot; target=&quot;_blank&quot;&gt;ucjs_findWrapPlayBeep.uc.js&lt;/a&gt;を導入して、ページ内検索バーの機能を強化した。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;多段タブからスクロールタブへ&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;多段式の方が沢山のタブを開いている際に判別しやすくて便利だが、その分スペースを取ってしまうのでスクロール式に変更。それに伴ってタブ管理を&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/14439&quot; target=&quot;_blank&quot;&gt;Tabberwocky&lt;/a&gt;から&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/59961&quot; target=&quot;_blank&quot;&gt;Tab Utilities&lt;/a&gt;に入れ替えた。このアドオンは&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/3780&quot; target=&quot;_blank&quot;&gt;FaviconizeTab&lt;/a&gt;と同等の機能を持っており、常に表示させているタブ等を小さくしておけばスペースを節約することができる。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;ステータスバーを非表示に&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;私の場合は&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/07/firefoxgoogle-chrome.html&quot;&gt;ChromeStatusbarModoki.uc.js&lt;/a&gt;で既に非表示にしてあったが、表示されるパネルがリンクと重なる部分の問題があるので、それを解消できる&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/55724&quot; target=&quot;_blank&quot;&gt;Link Target Display&lt;/a&gt;に変更。ステータスバーが非表示となるとプログレスバーも無くなるので、タブにページのプログレスバーを表示する&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/14644&quot; target=&quot;_blank&quot;&gt;Tab Progress Bar&lt;/a&gt;、ロケーションバーにプログレスバーを表示する&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/1951&quot; target=&quot;_blank&quot;&gt;Fission&lt;/a&gt;などで補強するといい。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;以上によってUIを省スペース化し、Webサイトの表示範囲を広げることができた。&lt;/p&gt;&lt;p&gt;&lt;a title=&quot;通常時はブックマークツールバーを折りたたんでいる。&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhncE_2pulHDrb018Qz3Cey6jj7uZKVHLSKrpQxn4_U1aUhfLXRHXOxufEZy5lGX_G7DAid-6Ccu7TQMG_yGIetn9j7Jl3YfnqigKn31ldH1NSmNKiDqBPD26aSH3r7debOd45Pmpz_O-y2/&quot; rel=&quot;lightbox&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;ネットブック向けにカスタマイズしたFirefox&quot; border=&quot;0&quot; alt=&quot;ネットブック向けにカスタマイズしたFirefox&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ-oo6i3nFyUmbqOTW50axG-cf_d-5c6vbHHMNR-hpW6x8Xyw8Jj1hwCap7VogsjSI8tiCw9Ms3UmsXLqCSjoKyaPfCKAyUl4saXvKBmNbFafSYApNVDsmulEifBfZdPmS-RIF7wYapz9O/?imgmax=800&quot; width=&quot;440&quot; height=&quot;248&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;今回一番大きな変更は、やはり検索バーとロケーションバーを統合させた点。最初は少し違和感があったが、使っているうちに解消されていった。2つのバーの統合はFirefox 3.7でも予定されているので、今のうちに慣れておくのもいいだろう。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/03/firefox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1216280773911925185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1216280773911925185'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/03/firefox.html' title='Firefoxをネットブック向けにカスタマイズ'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ-oo6i3nFyUmbqOTW50axG-cf_d-5c6vbHHMNR-hpW6x8Xyw8Jj1hwCap7VogsjSI8tiCw9Ms3UmsXLqCSjoKyaPfCKAyUl4saXvKBmNbFafSYApNVDsmulEifBfZdPmS-RIF7wYapz9O/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-1030935950973668559</id><published>2010-03-03T00:28:00.003+09:00</published><updated>2010-03-03T00:35:13.695+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Custom Buttons"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><title type='text'>多機能ブックマークレット Quix Custom Buttons版</title><content type='html'>&lt;p&gt;多機能ブックマークレットの&lt;a href=&quot;http://quixapp.com/&quot; target=&quot;_blank&quot;&gt;Quix&lt;/a&gt;をCustom Buttons用に移植。コマンドのなかでもSEOやWeb管理者向けのものが充実しており、その上Firebugまでアドオン無しで使えるというのはとてもありがたい。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;ツールチップに一般的な検索サイトやソーシャルブックマークが表示される。コマンドを調べたいときは、中クリックでヘルプページを開ける。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//custombuttons2.com/%22%3E%0A%20%20%3CCb2Ver%3E3.1.0%3C/Cb2Ver%3E%0A%20%20%3Cname%3EQuix%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%252F9hAAAKQWlDQ1BJQ0MgUHJvZmlsZQAAeAGdlndUU9kWh8%252B9N73QEiIgJfQaegkg0jtIFQRRiUmAUAKGhCZ2RAVGFBEpVmRUwAFHhyJjRRQLg4Ji1wnyEFDGwVFEReXdjGsJ7601896a%252FcdZ39nnt9fZZ%252B9917oAUPyCBMJ0WAGANKFYFO7rwVwSE8vE9wIYEAEOWAHA4WZmBEf4RALU%252FL09mZmoSMaz9u4ugGS72yy%252FUCZz1v9%252FkSI3QyQGAApF1TY8fiYX5QKUU7PFGTL%252FBMr0lSkyhjEyFqEJoqwi48SvbPan5iu7yZiXJuShGlnOGbw0noy7UN6aJeGjjAShXJgl4GejfAdlvVRJmgDl9yjT0%252FicTAAwFJlfzOcmoWyJMkUUGe6J8gIACJTEObxyDov5OWieAHimZ%252BSKBIlJYqYR15hp5ejIZvrxs1P5YjErlMNN4Yh4TM%252F0tAyOMBeAr2%252BWRQElWW2ZaJHtrRzt7VnW5mj5v9nfHn5T%252FT3IevtV8Sbsz55BjJ5Z32zsrC%252B9FgD2JFqbHbO%252BlVUAtG0GQOXhrE%252FvIADyBQC03pzzHoZsXpLE4gwnC4vs7GxzAZ9rLivoN%252Fufgm%252FKv4Y595nL7vtWO6YXP4EjSRUzZUXlpqemS0TMzAwOl89k%252FfcQ%252F%252BPAOWnNycMsnJ%252FAF%252FGF6FVR6JQJhIlou4U8gViQLmQKhH%252FV4X8YNicHGX6daxRodV8AfYU5ULhJB8hvPQBDIwMkbj96An3rWxAxCsi%252BvGitka9zjzJ6%252Fuf6Hwtcim7hTEEiU%252Bb2DI9kciWiLBmj34RswQISkAd0oAo0gS4wAixgDRyAM3AD3iAAhIBIEAOWAy5IAmlABLJBPtgACkEx2AF2g2pwANSBetAEToI2cAZcBFfADXALDIBHQAqGwUswAd6BaQiC8BAVokGqkBakD5lC1hAbWgh5Q0FQOBQDxUOJkBCSQPnQJqgYKoOqoUNQPfQjdBq6CF2D%252BqAH0CA0Bv0BfYQRmALTYQ3YALaA2bA7HAhHwsvgRHgVnAcXwNvhSrgWPg63whfhG%252FAALIVfwpMIQMgIA9FGWAgb8URCkFgkAREha5EipAKpRZqQDqQbuY1IkXHkAwaHoWGYGBbGGeOHWYzhYlZh1mJKMNWYY5hWTBfmNmYQM4H5gqVi1bGmWCesP3YJNhGbjS3EVmCPYFuwl7ED2GHsOxwOx8AZ4hxwfrgYXDJuNa4Etw%252FXjLuA68MN4SbxeLwq3hTvgg%252FBc%252FBifCG%252BCn8cfx7fjx%252FGvyeQCVoEa4IPIZYgJGwkVBAaCOcI%252FYQRwjRRgahPdCKGEHnEXGIpsY7YQbxJHCZOkxRJhiQXUiQpmbSBVElqIl0mPSa9IZPJOmRHchhZQF5PriSfIF8lD5I%252FUJQoJhRPShxFQtlOOUq5QHlAeUOlUg2obtRYqpi6nVpPvUR9Sn0vR5Mzl%252FOX48mtk6uRa5Xrl3slT5TXl3eXXy6fJ18hf0r%252Bpvy4AlHBQMFTgaOwVqFG4bTCPYVJRZqilWKIYppiiWKD4jXFUSW8koGStxJPqUDpsNIlpSEaQtOledK4tE20Otpl2jAdRzek%252B9OT6cX0H%252Bi99AllJWVb5SjlHOUa5bPKUgbCMGD4M1IZpYyTjLuMj%252FM05rnP48%252FbNq9pXv%252B8KZX5Km4qfJUilWaVAZWPqkxVb9UU1Z2qbapP1DBqJmphatlq%252B9Uuq43Pp893ns%252BdXzT%252F5PyH6rC6iXq4%252Bmr1w%252Bo96pMamhq%252BGhkaVRqXNMY1GZpumsma5ZrnNMe0aFoLtQRa5VrntV4wlZnuzFRmJbOLOaGtru2nLdE%252BpN2rPa1jqLNYZ6NOs84TXZIuWzdBt1y3U3dCT0svWC9fr1HvoT5Rn62fpL9Hv1t%252FysDQINpgi0GbwaihiqG%252FYZ5ho%252BFjI6qRq9Eqo1qjO8Y4Y7ZxivE%252B41smsImdSZJJjclNU9jU3lRgus%252B0zwxr5mgmNKs1u8eisNxZWaxG1qA5wzzIfKN5m%252FkrCz2LWIudFt0WXyztLFMt6ywfWSlZBVhttOqw%252BsPaxJprXWN9x4Zq42Ozzqbd5rWtqS3fdr%252FtfTuaXbDdFrtOu8%252F2DvYi%252Byb7MQc9h3iHvQ732HR2KLuEfdUR6%252BjhuM7xjOMHJ3snsdNJp9%252BdWc4pzg3OowsMF%252FAX1C0YctFx4bgccpEuZC6MX3hwodRV25XjWuv6zE3Xjed2xG3E3dg92f24%252BysPSw%252BRR4vHlKeT5xrPC16Il69XkVevt5L3Yu9q76c%252BOj6JPo0%252BE752vqt9L%252Fhh%252FQL9dvrd89fw5%252FrX%252B08EOASsCegKpARGBFYHPgsyCRIFdQTDwQHBu4IfL9JfJFzUFgJC%252FEN2hTwJNQxdFfpzGC4sNKwm7Hm4VXh%252BeHcELWJFREPEu0iPyNLIR4uNFksWd0bJR8VF1UdNRXtFl0VLl1gsWbPkRoxajCCmPRYfGxV7JHZyqffS3UuH4%252BziCuPuLjNclrPs2nK15anLz66QX8FZcSoeGx8d3xD%252FiRPCqeVMrvRfuXflBNeTu4f7kufGK%252BeN8V34ZfyRBJeEsoTRRJfEXYljSa5JFUnjAk9BteB1sl%252FygeSplJCUoykzqdGpzWmEtPi000IlYYqwK10zPSe9L8M0ozBDuspp1e5VE6JA0ZFMKHNZZruYjv5M9UiMJJslg1kLs2qy3mdHZZ%252FKUcwR5vTkmuRuyx3J88n7fjVmNXd1Z752%252Fob8wTXuaw6thdauXNu5Tnddwbrh9b7rj20gbUjZ8MtGy41lG99uit7UUaBRsL5gaLPv5sZCuUJR4b0tzlsObMVsFWzt3WazrWrblyJe0fViy%252BKK4k8l3JLr31l9V%252FndzPaE7b2l9qX7d%252BB2CHfc3em681iZYlle2dCu4F2t5czyovK3u1fsvlZhW3FgD2mPZI%252B0MqiyvUqvakfVp%252Bqk6oEaj5rmvep7t%252B2d2sfb17%252FfbX%252FTAY0DxQc%252BHhQcvH%252FI91BrrUFtxWHc4azDz%252Bui6rq%252FZ39ff0TtSPGRz0eFR6XHwo911TvU1zeoN5Q2wo2SxrHjccdv%252FeD1Q3sTq%252BlQM6O5%252BAQ4ITnx4sf4H%252B%252BeDDzZeYp9qukn%252FZ%252F2ttBailqh1tzWibakNml7THvf6YDTnR3OHS0%252Fm%252F989Iz2mZqzymdLz5HOFZybOZ93fvJCxoXxi4kXhzpXdD66tOTSna6wrt7LgZevXvG5cqnbvfv8VZerZ645XTt9nX297Yb9jdYeu56WX%252Bx%252Baem172296XCz%252FZbjrY6%252BBX3n%252Bl37L972un3ljv%252BdGwOLBvruLr57%252F17cPel93v3RB6kPXj%252FMejj9aP1j7OOiJwpPKp6qP6391fjXZqm99Oyg12DPs4hnj4a4Qy%252F%252FlfmvT8MFz6nPK0a0RupHrUfPjPmM3Xqx9MXwy4yX0%252BOFvyn%252BtveV0auffnf7vWdiycTwa9HrmT9K3qi%252BOfrW9m3nZOjk03dp76anit6rvj%252F2gf2h%252B2P0x5Hp7E%252F4T5WfjT93fAn88ngmbWbm3%252FeE8%252Ful8iYiAAAACXBIWXMAAAsTAAALEwEAmpwYAAACp0lEQVQ4EY2SSWgUURCG673u6e5MO2MyklXQCNlMJGjUQMT1oheFICQQkIAiChHNVbxEvRnIJULIweWgongQNAcPigp6ElEjYi4jzBAGsk2SWXt5S9kzpuOMQfBBQ3X1X1%252B%252FqvoJIsKGc4MYcLh1O9MCoQCxV%252BBVNA4jyDfovAQpA9wmulXbcFmtqzpLgnqbaqhUcskIOt9kLj2hHIrfh7KCEsD8IDH1rtDDyiazV1IKjis%252BUYqz1FCaA1u0XaAgyFRugi4kr0AfCv82qh9ApXbV5G5vLubaQMl585L92PubhH6i8TPmsGIqt6hBhkQo9FkBuOvX0UIQ7SfVPCcvsFUJ1oKctN7Tt%252B%252BOQvFbvmfTOfZRPhEZ%252FgxcAcTFYXhJ9DKAZGon2FiTXUYUizglIjjatSccLohI0AhCnTGOGfkcUhLQkq2QDTWWAZBhBG0AKwPMTgFIIEdcUzuQHW3ciXpFO1I8yRexmi95G8uDxmxe6QOKMxCMJB2vXa%252B3gKQQZBmWNav5lAgL10Cm2Tn7J8lTjUoErqGj6bjsA4p9UsGnLQfmVO6tVcLxfJr1W7PZFyK6oDmxFeBJERNJt4emOWBKfv8x58TLAG2vMSk4TDAbC5O7GK4K7K%252FN8NPOkpgU3rV5Fg7yhDjlzHDgCXesfQRdH7BupNgxYqwKei%252Bkw4CxmQAaOE1y6Hjr61ZDBGBGMDchxxqicK3UTEUAIcRrH%252BjeKgjebKJDEQ0GDZTN7jwoFQ2KrG%252BhVEhMTH7l3de%252FwKKn9fz429o%252BoDCLAqTw8I4whIdroD4dB6Nzn9LSsYM80IJESVh4Yvcj%252FmYNUHTjegte8h%252BHkFif%252BiGgw7aKCO%252BIjGO6VPjHyqXZstjzs1DvMJu0bP2ruCD7DwBANieeagKMMu7ayy8EZla1ipMz5QAAAABJRU5ErkJggg%253D%253D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0Athis.leftclick%20%3D%20function%20Quix%28evt%29%7B%0Avar%20e%3DencodeURIComponent%3Bvar%20t%3Dwindow.getSelection%3Fwindow.getSelection%28%29%3A%28document.getSelection%3Fdocument.getSelection%28%29%3A%28document.selection%3Fdocument.selection.createRange%28%29.text%3A%27%27%29%29%3Bvar%20c%3Dwindow.prompt%28%27Quix%3A%20Type%20%60help%60%20for%20a%20list%20of%20commands%3A%27%29%3Bif%28t%21%3D%27%27%29%7Bif%28c%29%7Bc+%3D%27%20%27+t%3B%7Delse%7Bc%3D%27%27+t%3B%7D%7Dif%28c%29%7Bvar%20u%3D%27http%3A//quixapp.com/go/%3Fc%3D%27+e%28c%29+%27%26t%3D%27+%28window._content.document.title%3Fe%28window._content.document.title%29%3A%27%27%29+%27%26s%3D%27+%27%26v%3D080%27+%27%26u%3D%27+%28window._content.document.location%3Fe%28window._content.document.location%29%3A%27%27%29%3Bd%3D%27%27+window._content.document.location%3Bif%28d.substr%280%2C4%29%21%3D%27http%27%29%7Bwindow._content.document.location%3Du+%27%26mode%3Ddirect%27%3B%7Delse%7Bheads%3Dwindow._content.document.getElementsByTagName%28%27head%27%29%3Bif%28c.substring%280%2C1%29%3D%3D%27%20%27%29%7Bvar%20w%3Dwindow.open%28u+%27%26mode%3Ddirect%27%29%3Bw.focus%28%29%3B%7Delse%20if%28heads.length%3D%3D0%29%7Bwindow._content.document.location%3Du+%27%26mode%3Ddirect%27%3B%7Delse%7Bq%3Dwindow._content.document.getElementById%28%27quix%27%29%3Bif%28q%29%7Bq.parentNode.removeChild%28q%29%3B%7Dsc%3Dwindow._content.document.createElement%28%27script%27%29%3Bsc.src%3Du%3Bsc.id%3D%27quix%27%3Bsc.type%3D%27text/javascript%27%3Bvoid%28heads%5B0%5D.appendChild%28sc%29%29%3B%7D%7D%7D%0A%7D%0A%0Athis.midclick%20%20%20%3D%20function%28evt%29%7B%0AgBrowser.selectedTab%3DgBrowser.addTab%28%27http%3A//quixapp.com/help/%27%29%3Bundefined%3B%0A%20%20gBrowser.selectedTab%20%3D%20newtab%3B%0A%7D%0A%0Athis.setAttribute%28%20%27onclick%27%2C%20%27gQuot%28%20event%2C%20this%20%29%27%20%29%3B%0A%0Athis.tooltipText%20+%3D%27%5Cn%20a%5Ct%5CtAmazon%20Search%5Cn%20f%5Ct%5CtFlickr%20Search%5Cn%20g%5Ct%5CtGoogle%20Search%5Cn%20img%5Ct%5CtGoogle%20Image%20Search%5Cn%20map%5Ct%5CtGoogle%20Maps%5Cn%20t%5Ct%5CtTwitter%20Search%5Cn%20w%5Ct%5CtWikipedia%20Search%5Cn%20y%5Ct%5CtYouTube%20Search%5Cn%5Cn%20e%5Ct%5CtEmail%20link%5Cn%20db%5Ct%5CtBookmark%20the%20current%20page%20in%20Delicious%5Cn%20fb%5Ct%5CtShare%20the%20current%20page%20on%20Facebook%5Cn%20gb%5Ct%5CtBookmark%20with%20Google%20Bookmarks%5Cn%20tn%5Ct%5CtTweet%20the%20current%20page%5Cn%20tumblr%5CtShare%20on%20Tumblr%5Cn%20post%5Ct%5CtShare%20on%20Posterous%5Cn%20su%5Ct%5CtSubmit%20to%20StumbleUpon%27%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E&quot; title=&quot;Quix&quot;&gt;&lt;img alt=&quot;Quix&quot; src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKQWlDQ1BJQ0MgUHJvZmlsZQAAeAGdlndUU9kWh8+9N73QEiIgJfQaegkg0jtIFQRRiUmAUAKGhCZ2RAVGFBEpVmRUwAFHhyJjRRQLg4Ji1wnyEFDGwVFEReXdjGsJ7601896a/cdZ39nnt9fZZ+9917oAUPyCBMJ0WAGANKFYFO7rwVwSE8vE9wIYEAEOWAHA4WZmBEf4RALU/L09mZmoSMaz9u4ugGS72yy/UCZz1v9/kSI3QyQGAApF1TY8fiYX5QKUU7PFGTL/BMr0lSkyhjEyFqEJoqwi48SvbPan5iu7yZiXJuShGlnOGbw0noy7UN6aJeGjjAShXJgl4GejfAdlvVRJmgDl9yjT0/icTAAwFJlfzOcmoWyJMkUUGe6J8gIACJTEObxyDov5OWieAHimZ+SKBIlJYqYR15hp5ejIZvrxs1P5YjErlMNN4Yh4TM/0tAyOMBeAr2+WRQElWW2ZaJHtrRzt7VnW5mj5v9nfHn5T/T3IevtV8Sbsz55BjJ5Z32zsrC+9FgD2JFqbHbO+lVUAtG0GQOXhrE/vIADyBQC03pzzHoZsXpLE4gwnC4vs7GxzAZ9rLivoN/ufgm/Kv4Y595nL7vtWO6YXP4EjSRUzZUXlpqemS0TMzAwOl89k/fcQ/+PAOWnNycMsnJ/AF/GF6FVR6JQJhIlou4U8gViQLmQKhH/V4X8YNicHGX6daxRodV8AfYU5ULhJB8hvPQBDIwMkbj96An3rWxAxCsi+vGitka9zjzJ6/uf6Hwtcim7hTEEiU+b2DI9kciWiLBmj34RswQISkAd0oAo0gS4wAixgDRyAM3AD3iAAhIBIEAOWAy5IAmlABLJBPtgACkEx2AF2g2pwANSBetAEToI2cAZcBFfADXALDIBHQAqGwUswAd6BaQiC8BAVokGqkBakD5lC1hAbWgh5Q0FQOBQDxUOJkBCSQPnQJqgYKoOqoUNQPfQjdBq6CF2D+qAH0CA0Bv0BfYQRmALTYQ3YALaA2bA7HAhHwsvgRHgVnAcXwNvhSrgWPg63whfhG/AALIVfwpMIQMgIA9FGWAgb8URCkFgkAREha5EipAKpRZqQDqQbuY1IkXHkAwaHoWGYGBbGGeOHWYzhYlZh1mJKMNWYY5hWTBfmNmYQM4H5gqVi1bGmWCesP3YJNhGbjS3EVmCPYFuwl7ED2GHsOxwOx8AZ4hxwfrgYXDJuNa4Etw/XjLuA68MN4SbxeLwq3hTvgg/Bc/BifCG+Cn8cfx7fjx/GvyeQCVoEa4IPIZYgJGwkVBAaCOcI/YQRwjRRgahPdCKGEHnEXGIpsY7YQbxJHCZOkxRJhiQXUiQpmbSBVElqIl0mPSa9IZPJOmRHchhZQF5PriSfIF8lD5I/UJQoJhRPShxFQtlOOUq5QHlAeUOlUg2obtRYqpi6nVpPvUR9Sn0vR5Mzl/OX48mtk6uRa5Xrl3slT5TXl3eXXy6fJ18hf0r+pvy4AlHBQMFTgaOwVqFG4bTCPYVJRZqilWKIYppiiWKD4jXFUSW8koGStxJPqUDpsNIlpSEaQtOledK4tE20Otpl2jAdRzek+9OT6cX0H+i99AllJWVb5SjlHOUa5bPKUgbCMGD4M1IZpYyTjLuMj/M05rnP48/bNq9pXv+8KZX5Km4qfJUilWaVAZWPqkxVb9UU1Z2qbapP1DBqJmphatlq+9Uuq43Pp893ns+dXzT/5PyH6rC6iXq4+mr1w+o96pMamhq+GhkaVRqXNMY1GZpumsma5ZrnNMe0aFoLtQRa5VrntV4wlZnuzFRmJbOLOaGtru2nLdE+pN2rPa1jqLNYZ6NOs84TXZIuWzdBt1y3U3dCT0svWC9fr1HvoT5Rn62fpL9Hv1t/ysDQINpgi0GbwaihiqG/YZ5ho+FjI6qRq9Eqo1qjO8Y4Y7ZxivE+41smsImdSZJJjclNU9jU3lRgus+0zwxr5mgmNKs1u8eisNxZWaxG1qA5wzzIfKN5m/krCz2LWIudFt0WXyztLFMt6ywfWSlZBVhttOqw+sPaxJprXWN9x4Zq42Ozzqbd5rWtqS3fdr/tfTuaXbDdFrtOu8/2DvYi+yb7MQc9h3iHvQ732HR2KLuEfdUR6+jhuM7xjOMHJ3snsdNJp9+dWc4pzg3OowsMF/AX1C0YctFx4bgccpEuZC6MX3hwodRV25XjWuv6zE3Xjed2xG3E3dg92f24+ysPSw+RR4vHlKeT5xrPC16Il69XkVevt5L3Yu9q76c+Oj6JPo0+E752vqt9L/hh/QL9dvrd89fw5/rX+08EOASsCegKpARGBFYHPgsyCRIFdQTDwQHBu4IfL9JfJFzUFgJC/EN2hTwJNQxdFfpzGC4sNKwm7Hm4VXh+eHcELWJFREPEu0iPyNLIR4uNFksWd0bJR8VF1UdNRXtFl0VLl1gsWbPkRoxajCCmPRYfGxV7JHZyqffS3UuH4+ziCuPuLjNclrPs2nK15anLz66QX8FZcSoeGx8d3xD/iRPCqeVMrvRfuXflBNeTu4f7kufGK+eN8V34ZfyRBJeEsoTRRJfEXYljSa5JFUnjAk9BteB1sl/ygeSplJCUoykzqdGpzWmEtPi000IlYYqwK10zPSe9L8M0ozBDuspp1e5VE6JA0ZFMKHNZZruYjv5M9UiMJJslg1kLs2qy3mdHZZ/KUcwR5vTkmuRuyx3J88n7fjVmNXd1Z752/ob8wTXuaw6thdauXNu5Tnddwbrh9b7rj20gbUjZ8MtGy41lG99uit7UUaBRsL5gaLPv5sZCuUJR4b0tzlsObMVsFWzt3WazrWrblyJe0fViy+KK4k8l3JLr31l9V/ndzPaE7b2l9qX7d+B2CHfc3em681iZYlle2dCu4F2t5czyovK3u1fsvlZhW3FgD2mPZI+0MqiyvUqvakfVp+qk6oEaj5rmvep7t+2d2sfb17/fbX/TAY0DxQc+HhQcvH/I91BrrUFtxWHc4azDz+ui6rq/Z39ff0TtSPGRz0eFR6XHwo911TvU1zeoN5Q2wo2SxrHjccdv/eD1Q3sTq+lQM6O5+AQ4ITnx4sf4H++eDDzZeYp9qukn/Z/2ttBailqh1tzWibakNml7THvf6YDTnR3OHS0/m/989Iz2mZqzymdLz5HOFZybOZ93fvJCxoXxi4kXhzpXdD66tOTSna6wrt7LgZevXvG5cqnbvfv8VZerZ645XTt9nX297Yb9jdYeu56WX+x+aem172296XCz/ZbjrY6+BX3n+l37L972un3ljv+dGwOLBvruLr57/17cPel93v3RB6kPXj/Mejj9aP1j7OOiJwpPKp6qP6391fjXZqm99Oyg12DPs4hnj4a4Qy//lfmvT8MFz6nPK0a0RupHrUfPjPmM3Xqx9MXwy4yX0+OFvyn+tveV0auffnf7vWdiycTwa9HrmT9K3qi+OfrW9m3nZOjk03dp76anit6rvj/2gf2h+2P0x5Hp7E/4T5WfjT93fAn88ngmbWbm3/eE8/ul8iYiAAAACXBIWXMAAAsTAAALEwEAmpwYAAACp0lEQVQ4EY2SSWgUURCG673u6e5MO2MyklXQCNlMJGjUQMT1oheFICQQkIAiChHNVbxEvRnIJULIweWgongQNAcPigp6ElEjYi4jzBAGsk2SWXt5S9kzpuOMQfBBQ3X1X1+/qvoJIsKGc4MYcLh1O9MCoQCxV+BVNA4jyDfovAQpA9wmulXbcFmtqzpLgnqbaqhUcskIOt9kLj2hHIrfh7KCEsD8IDH1rtDDyiazV1IKjis+UYqz1FCaA1u0XaAgyFRugi4kr0AfCv82qh9ApXbV5G5vLubaQMl585L92PubhH6i8TPmsGIqt6hBhkQo9FkBuOvX0UIQ7SfVPCcvsFUJ1oKctN7Tt++OQvFbvmfTOfZRPhEZ/gxcAcTFYXhJ9DKAZGon2FiTXUYUizglIjjatSccLohI0AhCnTGOGfkcUhLQkq2QDTWWAZBhBG0AKwPMTgFIIEdcUzuQHW3ciXpFO1I8yRexmi95G8uDxmxe6QOKMxCMJB2vXa+3gKQQZBmWNav5lAgL10Cm2Tn7J8lTjUoErqGj6bjsA4p9UsGnLQfmVO6tVcLxfJr1W7PZFyK6oDmxFeBJERNJt4emOWBKfv8x58TLAG2vMSk4TDAbC5O7GK4K7K/N8NPOkpgU3rV5Fg7yhDjlzHDgCXesfQRdH7BupNgxYqwKei+kw4CxmQAaOE1y6Hjr61ZDBGBGMDchxxqicK3UTEUAIcRrH+jeKgjebKJDEQ0GDZTN7jwoFQ2KrG+hVEhMTH7l3de/wKKn9fz429o+oDCLAqTw8I4whIdroD4dB6Nzn9LSsYM80IJESVh4Yvcj/mYNUHTjegte8h+HkFif+iGgw7aKCO+IjGO6VPjHyqXZstjzs1DvMJu0bP2ruCD7DwBANieeagKMMu7ayy8EZla1ipMz5QAAAABJRU5ErkJggg==&quot; border=&quot;0&quot; style=&quot;margin: 0 6px;&quot; /&gt;Quix&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/03/quix-custom-buttons.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1030935950973668559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1030935950973668559'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/03/quix-custom-buttons.html' title='多機能ブックマークレット Quix Custom Buttons版'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-4460602498393601869</id><published>2010-02-21T02:36:00.003+09:00</published><updated>2010-02-21T02:47:31.489+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="foobar2000"/><title type='text'>Func UIのサンプル：画像の鏡面表示</title><content type='html'>&lt;p&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;Func UIで画像を鏡面表示&quot; border=&quot;0&quot; alt=&quot;Func UIで画像を鏡面表示&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg26Zg469RvSqVGfBDduCFrDcHkDz_-FSGKjt8KEVxMZfsKT9S499y-Wbxn1XTeE2X9aFStz-Gk8_RWJLxbO8nbDdrMcBNmY5zTNicQX-V27KZ5NWqbWuYxnJgMyuozxVs52uxRBjD5apdD/?imgmax=800&quot; width=&quot;320&quot; height=&quot;340&quot; /&gt;$gp_imageではkeepaspect:trueにしてあると画像が自動で縮小されるが、画像の基準点を指定することはできない。なのであらかじめ表示座標を取得して、縮小された分だけ下にずらすようにして鏡面表示にしている。素材画像は&lt;a href=&quot;http://cid-5e67ae1f18509d47.skydrive.live.com/self.aspx/.Public/func%5E_ui%5E_mirror.zip&quot; target=&quot;_blank&quot;&gt;func_ui_mirror.zip&lt;/a&gt;に。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;(General)      &lt;ul&gt;&lt;li&gt;On Playback New Track          &lt;pre&gt;&lt;code&gt;$hash(NOWPLAYING.ART,$albumart(%path%,cover_front))
$updatewindow(&#39;NOWPLAYING&#39;,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;MAIN      &lt;ul&gt;&lt;li&gt;Load          &lt;pre&gt;&lt;code&gt;// init
$hash(NOWPLAYING.W,300)
$hash(NOWPLAYING.H,$calc(%NOWPLAYING.W%*1.5))
$hash(NOWPLAYING.ART.WH,240)

$window(&#39;NOWPLAYING&#39;,10,10,%NOWPLAYING.W%,%NOWPLAYING.H%,parent:%_id%,embed:true)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;NOWPLAYING      &lt;ul&gt;&lt;li&gt;Load          &lt;pre&gt;&lt;code&gt;// init
$style(%_id%,clear)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Open&amp;#160; &lt;pre&gt;&lt;code&gt;// clear
$clearobject(%_id%,event:open)

// object
$gp_image(%_id%,%NOWPLAYING.ART%,$calc({%NOWPLAYING.W%-%NOWPLAYING.ART.WH%}/2),,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true,mempos:true,dmode:calconly)
$gp_image(%_id%,%NOWPLAYING.ART%,$calc({%NOWPLAYING.W%-%NOWPLAYING.ART.WH%}/2),%_mp_top%,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true,cache:false)
$gp_image(%_id%,%NOWPLAYING.ART%,$calc({%NOWPLAYING.W%-%NOWPLAYING.ART.WH%}/2),$calc(%_mp_bottom%-1),%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,flip:y,keepaspect:true,cache:false)
$gp_image(%_id%,/images\overlay.png,$calc({%NOWPLAYING.W%-%NOWPLAYING.ART.WH%}/2),%_mp_top%,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true)
$gp_image(%_id%,/images\overlay_reflect.png,$calc({%NOWPLAYING.W%-%NOWPLAYING.ART.WH%}/2),%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true)

// update
$updatewindow(%_id%,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/02/func-ui_21.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/4460602498393601869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/4460602498393601869'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/02/func-ui_21.html' title='Func UIのサンプル：画像の鏡面表示'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg26Zg469RvSqVGfBDduCFrDcHkDz_-FSGKjt8KEVxMZfsKT9S499y-Wbxn1XTeE2X9aFStz-Gk8_RWJLxbO8nbDdrMcBNmY5zTNicQX-V27KZ5NWqbWuYxnJgMyuozxVs52uxRBjD5apdD/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-2727586252632105449</id><published>2010-02-14T22:20:00.006+09:00</published><updated>2010-02-14T22:54:44.945+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="foobar2000"/><title type='text'>foobar2000のカスタマイズ 3</title><content type='html'>&lt;p&gt;&lt;a title=&quot;Columns UIで構築した以前のデザインをFunc UIに落とし込んだ。&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2YU8RXdDFTouFHqvDc8wMLIZ-DRMdnw0flUktCreWhbTOcTemq7NdbUJN91zyLJWs_HqWy3yOXNxTrEPOwx47ZsHPCF5cue76N4H9k9wh3EhMVLZZPJHx8nsw0CjIkRSlhbYHY9EGC56M/&quot; rel=&quot;lightbox&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px&quot; title=&quot;foobar2000をFunc UIで構築&quot; border=&quot;0&quot; alt=&quot;foobar2000をFunc UIで構築&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTEs5qga7QUvflo2mxhQFikCIkApY_MdZN_u16qBLrxI5UFt-asyqEmllG4rfgsv8hQFKQ8-wyqUb8XAm46v7VBUMj-KLunwkUZ6C2mwlBTWxc-YwZY7nEjt_LJH1c9WIoQHaiI3uB6vw3/?imgmax=800&quot; width=&quot;440&quot; height=&quot;302&quot; /&gt;&lt;/a&gt;foobar2000をv0.9.5.2からv1.0にアップグレードし、ユーザーインターフェイスをColumns UIからFunc UIへと変えた。なのでデザインは以前のものとほぼ同じだが、構築方法はまるで違うものになっている。また、v1.0から新しく追加されたPortable Modeでも使えるようにパスは全て相対パスに直し、オンラインストレージ上の曲を聞く場合はimages &amp;gt; albumフォルダから画像を取得するようにした。&lt;/p&gt;&lt;p&gt;Func UIの自由度に関しては、コマンドを自分で作ることさえ可能なので、できないことはほぼ無いというほど。Track info modやWSH Panelで表示させていたボタンやシークバーもFunc UI一つで全て表示できるようになったので、構造自体もかなりシンプルになった。&lt;/p&gt;&lt;p&gt;欠点があるとすれば、ホットキーのActivate or HideでActivate時に正常に表示されないことと、Vistaではポップアップ(ツールチップ)が正常に表示されないことぐらいだ。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;コンポーネント&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Biography View &lt;/li&gt;
&lt;li&gt;Channel Spectrum panel &lt;/li&gt;
&lt;li&gt;Custom Datebase &lt;/li&gt;
&lt;li&gt;ELPlaylist &lt;/li&gt;
&lt;li&gt;Func User Interface &lt;/li&gt;
&lt;li&gt;Graphical Browser &lt;/li&gt;
&lt;li&gt;Playlists Dropdown &lt;/li&gt;
&lt;li&gt;WSH Panel Mod &lt;/li&gt;
&lt;/ul&gt;&lt;p class=&quot;crossheading&quot;&gt;画像ファイル&lt;/p&gt;&lt;ul&gt;&lt;li&gt;overlay.png      &lt;br /&gt;
CDジャケットにかかる光沢の画像 &lt;/li&gt;
&lt;li&gt;overlay_reflect.png&amp;#160; &lt;br /&gt;
CDジャケットを鏡面反射にするための画像 &lt;/li&gt;
&lt;li&gt;no_image.jpg      &lt;br /&gt;
表示するCDジャケットがない場合に表示される画像 &lt;/li&gt;
&lt;li&gt;lovetrack.png, lovetrack_hover.png, lovetrack_active.png&amp;#160; &lt;br /&gt;
再生中または選択中の曲をLoveトラックか判別して表示する画像 &lt;/li&gt;
&lt;/ul&gt;&lt;p class=&quot;crossheading&quot;&gt;Window (Script)&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;#general&quot;&gt;(General)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#user&quot;&gt;(User)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#mainwindow&quot;&gt;MAIN&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#nowplaying&quot;&gt;NOWPLAYING&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#seek&quot;&gt;SEEK&lt;/a&gt;&amp;#160; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#volume&quot;&gt;VOLUME&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#header1&quot;&gt;HEADER1&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#header2&quot;&gt;HEADER2 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#header3&quot;&gt;HEADER3&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p class=&quot;crossheading&quot;&gt;Panel&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;#channelspectrumpanel&quot;&gt;CHANNEL_SPECTRUM_PANEL&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#wshlastfm&quot;&gt;WSH_LAST_FM&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#playlistsdropdown&quot;&gt;PLAYLISTS_DROPDOWN&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#elplaylist&quot;&gt;ELPLAYLIST &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#graphicalbrowser1&quot;&gt;GRAPHICAL_BROWSER1&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#graphicalbrowser2&quot;&gt;GRAPHICAL_BROWSER2&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#biography&quot;&gt;BIOGRAPHY&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p class=&quot;crossheading&quot;&gt;Script&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;general&quot;&gt;&lt;/span&gt;(General)&amp;#160; &lt;ul&gt;&lt;li&gt;On init          &lt;pre&gt;&lt;code&gt;// size
$hash(COLUMN1.X,10)
$hash(COLUMN2.X,250)
$hash(COLUMN3.X,722)
$hash(COLUMN1.Y,10)
$hash(COLUMN2.Y,60)
$hash(COLUMN3.Y,620)
$hash(COLUMN1.W,230)
$hash(COLUMN2.W,462)
$hash(COLUMN3.W,248)
$hash(COLUMN1.H,50)
$hash(COLUMN2.H,550)
$hash(COLUMN3.H,20)

$hash(SEEKBAR.W,130)
$hash(SEEKBAR.H,10)
$hash(SEEKBAR.X,$calc({%COLUMN1.W%-%SEEKBAR.W%}/2))
$hash(SEEKBAR.Y,0)
$hash(SEEKBAR.B,2)
$hash(SEEKBAR.BW,$calc(%SEEKBAR.W%-%SEEKBAR.B%*2))
$hash(SEEKBAR.BH,$calc(%SEEKBAR.H%-%SEEKBAR.B%*2))

$hash(PLAYBACK.Y,410)
$hash(PLAYBACK.W,20)
$hash(PLAYBACK.H,25)

$hash(NOWPLAYING.ART.WH,180)
$hash(HEADER.H,50)
$hash(BUTTON.W,60)

// font
$if($files(C:\WINDOWS\Fonts\TARISAKA.ttf),
 $hash(MAIN.FONT.N,Arial)
 $hash(NOWPLAYING.FONT.Y,5)
 $hash(POPUP.FONT.Y,14)
,
 $hash(MAIN.FONT.N,メイリオ)
 $hash(NOWPLAYING.FONT.Y,0)
 $hash(POPUP.FONT.Y,12)
)
$hash(MAIN.FONT.S,8)
$hash(PLAYBACK.FONT.N,Webdings)
$hash(PLAYBACK.FONT.S,14)
$hash(BUTTON.FONT.N,Arial)
$hash(BUTTON.FONT.S,7)

// color
$hash(MAIN.COLOR,81-134-165)
$hash(NOWPLAYING.FONT.COLOR,64-64-64)
$hash(SUB.FONT.COLOR,96-96-96)
$hash(ACTIVE.FONT.COLOR,255-255-255)
$hash(HEADER.FONT.COLOR,255-255-255)
$hash(HEADER.BG.COLOR,192-192-192)
$hash(FOCUS.BG.COLOR,224-224-224)
$hash(DEFAULT.BG.COLOR,240-240-240)

// command
$contextmenu_set(ActivateNowPlaying,&#39;$pi_select(%pl_playingname%,%pi_playingindex%)&#39;)
$hash(PLAYBACK.ORDER.DEFAULT,&#39;Repeat (playlist)&#39;)
$hash(PLAYBACK.ORDER.REPEAT,&#39;Repeat (track)&#39;)
$hash(PLAYBACK.ORDER.SHUFFLE,&#39;Shuffle (albums)&#39;)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Timer          &lt;pre&gt;&lt;code&gt;// popup
$if($strcmp(%_timerid%,&#39;POPUP&#39;),
 $tooltip_activate(%POPUP%,false)
 $settimer(%_timerid%,0)
,)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playback Starting          &lt;pre&gt;&lt;code&gt;// playback
$playback_update()&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playback New Track          &lt;pre&gt;&lt;code&gt;// nowplaying
$nowplaying()
$updatewindow(&#39;NOWPLAYING&#39;,event:open)
$updatewindow(&#39;HEADER3&#39;,event:open)

// seek
$updatewindow(&#39;SEEK&#39;,event:open)

// popup
$popup()&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playback Stop          &lt;pre&gt;&lt;code&gt;// nowplaying
$updatewindow(&#39;NOWPLAYING&#39;,event:open)

// playback
$playback_update()

// seek
$updatewindow(&#39;SEEK&#39;,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playback Seek          &lt;pre&gt;&lt;code&gt;// seek
$updatewindow(&#39;SEEK&#39;,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playback Pause          &lt;pre&gt;&lt;code&gt;// playback
$playback_update()

// popup
$if(%playback_ispaused%,,$popup())&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playback Time (Per Second)          &lt;pre&gt;&lt;code&gt;// seek
$if(%playback_ispaused%,,$if(%playback_isplaying%,$updatewindow(&#39;SEEK&#39;,event:open)))&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playback Order Changed          &lt;pre&gt;&lt;code&gt;// playback order
$playback_order_update()&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playlist Activate          &lt;pre&gt;&lt;code&gt;$updatewindow(&#39;HEADER1&#39;,event:open)
$updatewindow(&#39;HEADER2&#39;,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playlist Renamed          &lt;pre&gt;&lt;code&gt;$updatewindow(&#39;HEADER2&#39;,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playlist Item Focus Change          &lt;pre&gt;&lt;code&gt;$updatewindow(&#39;HEADER1&#39;,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playlist Item Added          &lt;pre&gt;&lt;code&gt;$updatewindow(&#39;HEADER2&#39;,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Playlist Item Removed          &lt;pre&gt;&lt;code&gt;$updatewindow(&#39;HEADER2&#39;,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;On Volume Change          &lt;pre&gt;&lt;code&gt;//volume
$updatewindow(&#39;VOLUME&#39;,event:open)
$trayballoon(&#39;foobar2000&#39;,&#39;Volume:&#39;$ifequal($strchr(%volume%,&#39;.&#39;),2,&#39;0.0 dB&#39;,$ifequal($strchr(%volume%,&#39;.&#39;),3,$left(%volume%,4)&#39; dB&#39;,$ifequal($strchr(%volume%,&#39;.&#39;),4,$left(%volume%,5)&#39; dB&#39;,&#39;Mute&#39;))),sound:false)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;user&quot;&gt;(User)&lt;/span&gt;&amp;#160; &lt;ul&gt;&lt;li&gt;(Custom scripts)&amp;#160; &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// nowplaying
#function nowplaying
$hash(NOWPLAYING.ART,$albumart(
$ifequal($replace($substr(%path%,1,2),C:,1),1,
 $replace(%path%,%filename_ext%,)%album%.jpg
,
 $ifequal($replace($substr(%path%,1,4),http,1),1,
  /images\album\%album%.jpg
 ,
  /images\no_image.jpg
 )
)
,cover_front))
$hash(NOWPLAYING.TITLE,%title%)
$hash(NOWPLAYING.ARTIST,%artist%)
$hash(NOWPLAYING.ALBUM,%album%)
#end

// playback
#function playback_button
$drawtext(%mainid%,9,$calc(%COLUMN1.W%/2-%PLAYBACK.W%-5),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%,fg:%SUB.FONT.COLOR%,font-name:%PLAYBACK.FONT.N%,font-size:%PLAYBACK.FONT.S%,halign:center,valign:middle)
$hash(PLAYBACK.PREV.HOVER,$drawtext(%mainid%,9,$calc(%COLUMN1.W%/2-%PLAYBACK.W%-5),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%,fg:%MAIN.COLOR%,font-name:%PLAYBACK.FONT.N%,font-size:%PLAYBACK.FONT.S%,hide,halign:center,valign:middle))
$map(%mainid%,
 over:&#39;
 $showobject(%PLAYBACK.PREV.HOVER%,true,redraw:true)&#39;,
 out:&#39;
 $showobject(%PLAYBACK.PREV.HOVER%,false,redraw:true)&#39;,
 lbuttondown:&#39;
 $playback_control(prev)&#39;
)
$hash(PLAYBACK.PREV.MAP,%_result%)
$map_rect(%PLAYBACK.PREV.MAP%,$calc(%COLUMN1.W%/2-%PLAYBACK.W%-5),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%)

$drawtext(%mainid%,:,$calc(%COLUMN1.W%/2+%PLAYBACK.W%+5),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%,fg:%SUB.FONT.COLOR%,font-name:%PLAYBACK.FONT.N%,font-size:%PLAYBACK.FONT.S%,halign:center,valign:middle)
$hash(PLAYBACK.NEXT.HOVER,$drawtext(%mainid%,:,$calc(%COLUMN1.W%/2+%PLAYBACK.W%+5),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%,fg:%MAIN.COLOR%,font-name:%PLAYBACK.FONT.N%,font-size:%PLAYBACK.FONT.S%,hide,halign:center,valign:middle))
$map(%mainid%,
 over:&#39;
 $showobject(%PLAYBACK.NEXT.HOVER%,true,redraw:true)&#39;,
 out:&#39;
 $showobject(%PLAYBACK.NEXT.HOVER%,false,redraw:true)&#39;,
 lbuttondown:&#39;
 $playback_control(next)&#39;
)
$hash(PLAYBACK.NEXT.MAP,%_result%)
$map_rect(%PLAYBACK.NEXT.MAP%,$calc(%COLUMN1.W%/2+%PLAYBACK.W%+5),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%)

$hash(PLAYBACK.PLAY,$drawtext(%mainid%,4,$calc(%COLUMN1.W%/2),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%,fg:%SUB.FONT.COLOR%,font-name:%PLAYBACK.FONT.N%,font-size:%PLAYBACK.FONT.S%,hide,halign:center,valign:middle))
$hash(PLAYBACK.PAUSE,$drawtext(%mainid%,;,$calc(%COLUMN1.W%/2),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%,fg:%SUB.FONT.COLOR%,font-name:%PLAYBACK.FONT.N%,font-size:%PLAYBACK.FONT.S%,hide,halign:center,valign:middle))
$hash(PLAYBACK.PLAY.HOVER,$drawtext(%mainid%,4,$calc(%COLUMN1.W%/2),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%,fg:%MAIN.COLOR%,font-name:%PLAYBACK.FONT.N%,font-size:%PLAYBACK.FONT.S%,hide,halign:center,valign:middle))
$hash(PLAYBACK.PAUSE.HOVER,$drawtext(%mainid%,;,$calc(%COLUMN1.W%/2),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%,fg:%MAIN.COLOR%,font-name:%PLAYBACK.FONT.N%,font-size:%PLAYBACK.FONT.S%,hide,halign:center,valign:top))
#end

#function playback_update
$if(%playback_ispaused%,
 $showobject(%PLAYBACK.PLAY%,true,redraw:true)
 $showobject(%PLAYBACK.PAUSE%,false,redraw:true)
 $showobject(%PLAYBACK.PAUSE.HOVER%,false,redraw:true)
 $removectrl(%PLAYBACK.PLAY.MAP%)
 $updatectrl(%PLAYBACK.PLAY.MAP%)
 $map(%mainid%,
  over:&#39;
  $showobject(%PLAYBACK.PLAY.HOVER%,true,redraw:true)&#39;,
  out:&#39;
  $showobject(%PLAYBACK.PLAY.HOVER%,false,redraw:true)&#39;,
  lbuttondown:&#39;
  $playback_control(play_or_pause)&#39;
 )
 $hash(PLAYBACK.PLAY.MAP,%_result%)
 $map_rect(%PLAYBACK.PLAY.MAP%,$calc(%COLUMN1.W%/2),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%)
,
 $if(%playback_isplaying%,
  $showobject(%PLAYBACK.PLAY%,false,redraw:true)
  $showobject(%PLAYBACK.PAUSE%,true,redraw:true)
  $showobject(%PLAYBACK.PLAY.HOVER%,false,redraw:true)
  $removectrl(%PLAYBACK.PLAY.MAP%)
  $updatectrl(%PLAYBACK.PLAY.MAP%)
  $map(%mainid%,
   over:&#39;
   $showobject(%PLAYBACK.PAUSE.HOVER%,true,redraw:true)&#39;,
   out:&#39;
   $showobject(%PLAYBACK.PAUSE.HOVER%,false,redraw:true)&#39;,
   lbuttondown:&#39;
   $playback_control(play_or_pause)&#39;
  )
  $hash(PLAYBACK.PLAY.MAP,%_result%)
  $map_rect(%PLAYBACK.PLAY.MAP%,$calc(%COLUMN1.W%/2),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%)
 ,
  $showobject(%PLAYBACK.PLAY%,true,redraw:true)
  $showobject(%PLAYBACK.PAUSE%,false,redraw:true)
  $showobject(%PLAYBACK.PAUSE.HOVER%,false,redraw:true)
  $removectrl(%PLAYBACK.PLAY.MAP%)
  $updatectrl(%PLAYBACK.PLAY.MAP%)
  $map(%mainid%,
   over:&#39;
   $showobject(%PLAYBACK.PLAY.HOVER%,true,redraw:true)&#39;,
   out:&#39;
   $showobject(%PLAYBACK.PLAY.HOVER%,false,redraw:true)&#39;,
   lbuttondown:&#39;
   $playback_control(play)&#39;
  )
  $hash(PLAYBACK.PLAY.MAP,%_result%)
  $map_rect(%PLAYBACK.PLAY.MAP%,$calc(%COLUMN1.W%/2),%PLAYBACK.Y%,%PLAYBACK.W%,%PLAYBACK.H%)
 )
)
#end

// playback order
#function playback_order_button
$gp_rect(%mainid%,%COLUMN1.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%DEFAULT.BG.COLOR%)
$drawtext(%mainid%,Default,%COLUMN1.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%SUB.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,halign:center,valign:middle)
$hash(PLAYBACK.ORDER.DEFAULT.HOVER.BG,$gp_rect(%mainid%,%COLUMN1.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%FOCUS.BG.COLOR%,hide))
$hash(PLAYBACK.ORDER.DEFAULT.HOVER,$drawtext(%mainid%,Default,%COLUMN1.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%MAIN.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$hash(PLAYBACK.ORDER.DEFAULT.ACTIVE.BG,$gp_rect(%mainid%,%COLUMN1.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%MAIN.COLOR%,hide))
$hash(PLAYBACK.ORDER.DEFAULT.ACTIVE,$drawtext(%mainid%,Default,%COLUMN1.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%ACTIVE.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$map(%mainid%,
 over:&#39;
 $showobject(%PLAYBACK.ORDER.DEFAULT.HOVER.BG%,true,redraw:true)
 $showobject(%PLAYBACK.ORDER.DEFAULT.HOVER%,true,redraw:true)&#39;,
 out:&#39;
 $showobject(%PLAYBACK.ORDER.DEFAULT.HOVER.BG%,false,redraw:true)
 $showobject(%PLAYBACK.ORDER.DEFAULT.HOVER%,false,redraw:true)&#39;,
 lbuttondown:&#39;
 $mainmenu_execute(%PLAYBACK.ORDER.DEFAULT%)&#39;
)
$hash(PLAYBACK.ORDER.DEFAULT.MAP,%_result%)
$map_rect(%PLAYBACK.ORDER.DEFAULT.MAP%,%COLUMN1.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%)

$drawtext(%mainid%,Repeat,$calc(%COLUMN1.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%SUB.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,halign:center,valign:middle)
$hash(PLAYBACK.ORDER.REPEAT.HOVER.BG,$gp_rect(%mainid%,$calc(%COLUMN1.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%FOCUS.BG.COLOR%,hide))
$hash(PLAYBACK.ORDER.REPEAT.HOVER,$drawtext(%mainid%,Repeat,$calc(%COLUMN1.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%MAIN.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$hash(PLAYBACK.ORDER.REPEAT.ACTIVE.BG,$gp_rect(%mainid%,$calc(%COLUMN1.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%MAIN.COLOR%,hide))
$hash(PLAYBACK.ORDER.REPEAT.ACTIVE,$drawtext(%mainid%,Repeat,$calc(%COLUMN1.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%ACTIVE.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$map(%mainid%,
 over:&#39;
 $showobject(%PLAYBACK.ORDER.REPEAT.HOVER.BG%,true,redraw:true)
 $showobject(%PLAYBACK.ORDER.REPEAT.HOVER%,true,redraw:true)&#39;,
 out:&#39;
 $showobject(%PLAYBACK.ORDER.REPEAT.HOVER.BG%,false,redraw:true)
 $showobject(%PLAYBACK.ORDER.REPEAT.HOVER%,false,redraw:true)&#39;,
 lbuttondown:&#39;
 $mainmenu_execute(%PLAYBACK.ORDER.REPEAT%)&#39;
)
$hash(PLAYBACK.ORDER.REPEAT.MAP,%_result%)
$map_rect(%PLAYBACK.ORDER.REPEAT.MAP%,$calc(%COLUMN1.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%)

$gp_rect(%mainid%,$calc(%COLUMN1.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%DEFAULT.BG.COLOR%)
$drawtext(%mainid%,Shuffle,$calc(%COLUMN1.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%SUB.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,halign:center,valign:middle)
$hash(PLAYBACK.ORDER.SHUFFLE.HOVER.BG,$gp_rect(%mainid%,$calc(%COLUMN1.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%FOCUS.BG.COLOR%,hide))
$hash(PLAYBACK.ORDER.SHUFFLE.HOVER,$drawtext(%mainid%,Shuffle,$calc(%COLUMN1.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%MAIN.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$hash(PLAYBACK.ORDER.SHUFFLE.ACTIVE.BG,$gp_rect(%mainid%,$calc(%COLUMN1.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%MAIN.COLOR%,hide))
$hash(PLAYBACK.ORDER.SHUFFLE.ACTIVE,$drawtext(%mainid%,Shuffle,$calc(%COLUMN1.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%ACTIVE.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$map(%mainid%,
 over:&#39;
 $showobject(%PLAYBACK.ORDER.SHUFFLE.HOVER.BG%,true,redraw:true)
 $showobject(%PLAYBACK.ORDER.SHUFFLE.HOVER%,true,redraw:true)&#39;,
 out:&#39;
 $showobject(%PLAYBACK.ORDER.SHUFFLE.HOVER.BG%,false,redraw:true)
 $showobject(%PLAYBACK.ORDER.SHUFFLE.HOVER%,false,redraw:true)&#39;,
 lbuttondown:&#39;
 $mainmenu_execute(%PLAYBACK.ORDER.SHUFFLE%)&#39;
)
$hash(PLAYBACK.ORDER.SHUFFLE.MAP,%_result%)
$map_rect(%PLAYBACK.ORDER.SHUFFLE.MAP%,$calc(%COLUMN1.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%)
#end

#function playback_order_update
$ifequal(%playback_orderindex%,1,
 $showobject(%PLAYBACK.ORDER.DEFAULT.ACTIVE.BG%,true,redraw:true)
 $showobject(%PLAYBACK.ORDER.DEFAULT.ACTIVE%,true,redraw:true)
 $showobject(%PLAYBACK.ORDER.REPEAT.ACTIVE.BG%,false,redraw:true)
 $showobject(%PLAYBACK.ORDER.REPEAT.ACTIVE%,false,redraw:true)
 $showobject(%PLAYBACK.ORDER.SHUFFLE.ACTIVE.BG%,false,redraw:true)
 $showobject(%PLAYBACK.ORDER.SHUFFLE.ACTIVE%,false,redraw:true)
,
 $ifequal(%playback_orderindex%,2,
  $showobject(%PLAYBACK.ORDER.DEFAULT.ACTIVE.BG%,false,redraw:true)
  $showobject(%PLAYBACK.ORDER.DEFAULT.ACTIVE%,false,redraw:true)
  $showobject(%PLAYBACK.ORDER.REPEAT.ACTIVE.BG%,true,redraw:true)
  $showobject(%PLAYBACK.ORDER.REPEAT.ACTIVE%,true,redraw:true)
  $showobject(%PLAYBACK.ORDER.SHUFFLE.ACTIVE.BG%,false,redraw:true)
  $showobject(%PLAYBACK.ORDER.SHUFFLE.ACTIVE%,false,redraw:true)
 ,
  $ifequal(%playback_orderindex%,5,
   $showobject(%PLAYBACK.ORDER.DEFAULT.ACTIVE.BG%,false,redraw:true)
   $showobject(%PLAYBACK.ORDER.DEFAULT.ACTIVE%,false,redraw:true)
   $showobject(%PLAYBACK.ORDER.REPEAT.ACTIVE.BG%,false,redraw:true)
   $showobject(%PLAYBACK.ORDER.REPEAT.ACTIVE%,false,redraw:true)
   $showobject(%PLAYBACK.ORDER.SHUFFLE.ACTIVE.BG%,true,redraw:true)
   $showobject(%PLAYBACK.ORDER.SHUFFLE.ACTIVE%,true,redraw:true)
  ,
  )
 )
)
#end

// panel switch
#function panel_switch_button
$gp_rect(%mainid%,%COLUMN2.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%DEFAULT.BG.COLOR%)
$drawtext(%mainid%,Playlist,%COLUMN2.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%SUB.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,halign:center,valign:middle)
$hash(PANEL.SWITCH.PLAYLIST.HOVER.BG,$gp_rect(%mainid%,%COLUMN2.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%FOCUS.BG.COLOR%,hide))
$hash(PANEL.SWITCH.PLAYLIST.HOVER,$drawtext(%mainid%,Playlist,%COLUMN2.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%MAIN.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$hash(PANEL.SWITCH.PLAYLIST.ACTIVE.BG,$gp_rect(%mainid%,%COLUMN2.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%MAIN.COLOR%,hide))
$hash(PANEL.SWITCH.PLAYLIST.ACTIVE,$drawtext(%mainid%,Playlist,%COLUMN2.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%ACTIVE.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$map(%mainid%,
 over:&#39;
 $showobject(%PANEL.SWITCH.PLAYLIST.HOVER.BG%,true,redraw:true)
 $showobject(%PANEL.SWITCH.PLAYLIST.HOVER%,true,redraw:true)&#39;,
 out:&#39;
 $showobject(%PANEL.SWITCH.PLAYLIST.HOVER.BG%,false,redraw:true)
 $showobject(%PANEL.SWITCH.PLAYLIST.HOVER%,false,redraw:true)&#39;,
 lbuttondown:&#39;
 $showwindow(HEADER1,1)
 $showwindow(HEADER2,1)
 $showwindow(HEADER3,0)
 $showpanel(ELPLAYLIST,true)
 $showpanel(GRAPHICAL_BROWSER1,true)
 $showpanel(GRAPHICAL_BROWSER2,false)
 $showpanel(BIOGRAPHY,false)
 $panel_switch_update()&#39;
)
$hash(PANEL.SWITCH.PLAYLIST.MAP,%_result%)
$map_rect(%PANEL.SWITCH.PLAYLIST.MAP%,%COLUMN2.X%,%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%)

$drawtext(%mainid%,Browser,$calc(%COLUMN2.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%SUB.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,halign:center,valign:middle)
$hash(PANEL.SWITCH.BROWSER.HOVER.BG,$gp_rect(%mainid%,$calc(%COLUMN2.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%FOCUS.BG.COLOR%,hide))
$hash(PANEL.SWITCH.BROWSER.HOVER,$drawtext(%mainid%,Browser,$calc(%COLUMN2.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%MAIN.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$hash(PANEL.SWITCH.BROWSER.ACTIVE.BG,$gp_rect(%mainid%,$calc(%COLUMN2.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%MAIN.COLOR%,hide))
$hash(PANEL.SWITCH.BROWSER.ACTIVE,$drawtext(%mainid%,Browser,$calc(%COLUMN2.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%ACTIVE.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$map(%mainid%,
 over:&#39;
 $showobject(%PANEL.SWITCH.BROWSER.HOVER.BG%,true,redraw:true)
 $showobject(%PANEL.SWITCH.BROWSER.HOVER%,true,redraw:true)&#39;,
 out:&#39;
 $showobject(%PANEL.SWITCH.BROWSER.HOVER.BG%,false,redraw:true)
 $showobject(%PANEL.SWITCH.BROWSER.HOVER%,false,redraw:true)&#39;,
 lbuttondown:&#39;
 $showwindow(HEADER1,0)
 $showwindow(HEADER2,0)
 $showwindow(HEADER3,0)
 $showpanel(ELPLAYLIST,false)
 $showpanel(GRAPHICAL_BROWSER1,false)
 $showpanel(GRAPHICAL_BROWSER2,true)
 $showpanel(BIOGRAPHY,false)
 $panel_switch_update()&#39;
)
$hash(PANEL.SWITCH.BROWSER.MAP,%_result%)
$map_rect(%PANEL.SWITCH.BROWSER.MAP%,$calc(%COLUMN2.X%+%BUTTON.W%),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%)

$gp_rect(%mainid%,$calc(%COLUMN2.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%DEFAULT.BG.COLOR%)
$drawtext(%mainid%,Biography,$calc(%COLUMN2.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%SUB.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,halign:center,valign:middle)
$hash(PANEL.SWITCH.BIOGRAPHY.HOVER.BG,$gp_rect(%mainid%,$calc(%COLUMN2.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%FOCUS.BG.COLOR%,hide))
$hash(PANEL.SWITCH.BIOGRAPHY.HOVER,$drawtext(%mainid%,Biography,$calc(%COLUMN2.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%MAIN.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$hash(PANEL.SWITCH.BIOGRAPHY.ACTIVE.BG,$gp_rect(%mainid%,$calc(%COLUMN2.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%MAIN.COLOR%,hide))
$hash(PANEL.SWITCH.BIOGRAPHY.ACTIVE,$drawtext(%mainid%,Biography,$calc(%COLUMN2.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%ACTIVE.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
$map(%mainid%,
 over:&#39;
 $showobject(%PANEL.SWITCH.BIOGRAPHY.HOVER.BG%,true,redraw:true)
 $showobject(%PANEL.SWITCH.BIOGRAPHY.HOVER%,true,redraw:true)&#39;,
 out:&#39;
 $showobject(%PANEL.SWITCH.BIOGRAPHY.HOVER.BG%,false,redraw:true)
 $showobject(%PANEL.SWITCH.BIOGRAPHY.HOVER%,false,redraw:true)&#39;,
 lbuttondown:&#39;
 $showwindow(HEADER1,0)
 $showwindow(HEADER2,0)
 $showwindow(HEADER3,1)
 $showpanel(ELPLAYLIST,false)
 $showpanel(GRAPHICAL_BROWSER1,false)
 $showpanel(GRAPHICAL_BROWSER2,false)
 $showpanel(BIOGRAPHY,true)
 $panel_switch_update()&#39;
)
$hash(PANEL.SWITCH.BIOGRAPHY.MAP,%_result%)
$map_rect(%PANEL.SWITCH.BIOGRAPHY.MAP%,$calc(%COLUMN2.X%+%BUTTON.W%*2),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%)
#end

#function panel_switch_update
$if($ispanelvisible(ELPLAYLIST),
 $showobject(%PANEL.SWITCH.PLAYLIST.ACTIVE.BG%,true,redraw:true)
 $showobject(%PANEL.SWITCH.PLAYLIST.ACTIVE%,true,redraw:true)
 $showobject(%PANEL.SWITCH.BROWSER.ACTIVE.BG%,false,redraw:true)
 $showobject(%PANEL.SWITCH.BROWSER.ACTIVE%,false,redraw:true)
 $showobject(%PANEL.SWITCH.BIOGRAPHY.ACTIVE.BG%,false,redraw:true)
 $showobject(%PANEL.SWITCH.BIOGRAPHY.ACTIVE%,false,redraw:true)
,
 $if($ispanelvisible(GRAPHICAL_BROWSER2),
  $showobject(%PANEL.SWITCH.PLAYLIST.ACTIVE.BG%,false,redraw:true)
  $showobject(%PANEL.SWITCH.PLAYLIST.ACTIVE%,false,redraw:true)
  $showobject(%PANEL.SWITCH.BROWSER.ACTIVE.BG%,true,redraw:true)
  $showobject(%PANEL.SWITCH.BROWSER.ACTIVE%,true,redraw:true)
  $showobject(%PANEL.SWITCH.BIOGRAPHY.ACTIVE.BG%,false,redraw:true)
  $showobject(%PANEL.SWITCH.BIOGRAPHY.ACTIVE%,false,redraw:true)
 ,
  $if($ispanelvisible(BIOGRAPHY),
   $showobject(%PANEL.SWITCH.PLAYLIST.ACTIVE.BG%,false,redraw:true)
   $showobject(%PANEL.SWITCH.PLAYLIST.ACTIVE%,false,redraw:true)
   $showobject(%PANEL.SWITCH.BROWSER.ACTIVE.BG%,false,redraw:true)
   $showobject(%PANEL.SWITCH.BROWSER.ACTIVE%,false,redraw:true)
   $showobject(%PANEL.SWITCH.BIOGRAPHY.ACTIVE.BG%,true,redraw:true)
   $showobject(%PANEL.SWITCH.BIOGRAPHY.ACTIVE%,true,redraw:true)
  ,
  )
 )
)
#end

// config
#function config_button
$drawtext(%mainid%,Config,$calc(%COLUMN2.X%+%BUTTON.W%*3),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%SUB.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,halign:center,valign:middle)
$hash(CONFIG.HOVER.BG,$gp_rect(%mainid%,$calc(%COLUMN2.X%+%BUTTON.W%*3),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%FOCUS.BG.COLOR%,hide))
$hash(CONFIG.HOVER,$drawtext(%mainid%,Config,$calc(%COLUMN2.X%+%BUTTON.W%*3),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%MAIN.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle,hide))
$hash(CONFIG.ACTIVE.BG,$gp_rect(%mainid%,$calc(%COLUMN2.X%+%BUTTON.W%*3),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,aa:false,brush:255-%MAIN.COLOR%,hide))
$hash(CONFIG.ACTIVE,$drawtext(%mainid%,Config,$calc(%COLUMN2.X%+%BUTTON.W%*3),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,fg:%ACTIVE.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle,hide))
$map(%mainid%,
 over:&#39;
 $showobject(%CONFIG.HOVER.BG%,true,redraw:true)$showobject(%CONFIG.HOVER%,true,redraw:true)&#39;,
 out:&#39;
 $showobject(%CONFIG.HOVER.BG%,false,redraw:true)$showobject(%CONFIG.HOVER%,false,redraw:true)&#39;,
 lbuttondown:&#39;
 $showobject(%CONFIG.ACTIVE.BG%,true,redraw:true)
 $showobject(%CONFIG.ACTIVE%,true,redraw:true)$mainmenu_execute(&#39;File/Preferences&#39;)&#39;,
 lbuttonup:&#39;
 $showobject(%CONFIG.ACTIVE.BG%,false,redraw:true)
 $showobject(%CONFIG.ACTIVE%,false,redraw:true)&#39;
)
$hash(CONFIG.MAP,%_result%)
$map_rect(%CONFIG.MAP%,$calc(%COLUMN2.X%+%BUTTON.W%*3),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%)
#end

// popup
#function popup
$tooltip_update(%POPUP%,text:&#39;
$gp_rect(%_objectid%,,,%_iwidth%,%_iheight%,brush:255-%MAIN.COLOR%,aa:false)
$gp_image(%_objectid%,%NOWPLAYING.ART%,10,10,60,60,keepaspect:true,cache:false)
$gp_text(%_objectid%,[%NOWPLAYING.TITLE%],80,%POPUP.FONT.Y%,$calc(%_iwidth%-90),15,brush:255-%ACTIVE.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:9,font-style:b)
$gp_text(%_objectid%,[%NOWPLAYING.ARTIST%],80,$calc(%POPUP.FONT.Y%+18),$calc(%_iwidth%-90),15,brush:255-%ACTIVE.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:9)
$gp_text(%_objectid%,[%NOWPLAYING.ALBUM%],80,$calc(%POPUP.FONT.Y%+18*2),$calc(%_iwidth%-90),15,brush:255-%ACTIVE.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:9)&#39;
)
$puts(POPUP.W,$tooltip_getinfo(%POPUP%,width))
$puts(POPUP.H,$tooltip_getinfo(%POPUP%,height))
$tooltip_update(%POPUP%,pos:$calc(%screen_width%-$get(POPUP.W)-20)-$calc(%screen_height%-$get(POPUP.H)-20))
$tooltip_activate(%POPUP%,true)
$settimer(POPUP,4000)
#end&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;mainwindow&quot;&gt;MAIN&lt;/span&gt;       &lt;ul&gt;&lt;li&gt;Load          &lt;pre&gt;&lt;code&gt;// init
$style(%mainid%,maximizebox:off)

// $menubar(%_id%,%COLUMN1.X%,%COLUMN1.Y%,,,fg:255-255-255)
$window(&#39;NOWPLAYING&#39;,%COLUMN1.X%,80,%COLUMN1.W%,280,parent:%_id%,embed:true)
$window(&#39;SEEK&#39;,%COLUMN1.X%,370,%COLUMN1.W%,30,parent:%_id%,embed:true)
$playback_button()
$playback_update()
$panel(%_id%,&#39;CHANNEL_SPECTRUM_PANEL&#39;,$calc(%COLUMN1.X%-5),460,$calc(%COLUMN1.W%+5),150)
$playback_order_button()
$playback_order_update()

$window(&#39;HEADER1&#39;,%COLUMN2.X%,%COLUMN1.Y%,%COLUMN2.W%,%HEADER.H%,parent:%_id%,embed:true)
$panel(%_id%,&#39;ELPLAYLIST&#39;,%COLUMN2.X%,%COLUMN2.Y%,%COLUMN2.W%,%COLUMN2.H%)
$panel_switch_button()
$panel_switch_update()
$config_button()
$panel(%_id%,&#39;WSH_LAST_FM&#39;,$calc(%COLUMN2.X%+%BUTTON.W%*6-18),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%)
$window(&#39;VOLUME&#39;,$calc(%COLUMN2.X%+%BUTTON.W%*7-18),%COLUMN3.Y%,%BUTTON.W%,%COLUMN3.H%,parent:%_id%,embed:true)

$window(&#39;HEADER2&#39;,%COLUMN3.X%,%COLUMN1.Y%,%COLUMN3.W%,%HEADER.H%,parent:%_id%,embed:true)
$panel(%_id%,&#39;GRAPHICAL_BROWSER1&#39;,%COLUMN3.X%,%COLUMN2.Y%,%COLUMN3.W%,%COLUMN2.H%)
$panel(%_id%,&#39;PLAYLISTS_DROPDOWN&#39;,%COLUMN3.X%,%COLUMN3.Y%,%COLUMN3.W%,%COLUMN3.H%)

// hide
$panel(%_id%,&#39;GRAPHICAL_BROWSER2&#39;,%COLUMN2.X%,%COLUMN1.Y%,$calc(%COLUMN2.W%+10+%COLUMN3.W%),600,hide)
$window(&#39;HEADER3&#39;,%COLUMN2.X%,%COLUMN1.Y%,$calc(%COLUMN2.W%+10+%COLUMN3.W%),%HEADER.H%,parent:%_id%,embed:true,hide)
$panel(%_id%,&#39;BIOGRAPHY&#39;,%COLUMN2.X%,85,$calc(%COLUMN2.W%+10+%COLUMN3.W%),525,hide)

// popup
$tooltip(%_id%,,,,,,mode:absolute,topmost:true,custom:true,size:300-80)
$hash(POPUP,%_result%)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;nowplaying&quot;&gt;NOWPLAYING&lt;/span&gt;       &lt;ul&gt;&lt;li&gt;Load          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// init
$style(%_id%,clear)
$map(%_id%,
 lbuttondown:&#39;
 $contextmenu_execute(&#39;Func/User/ActivateNowPlaying&#39;,playing)&#39;
)
$hash(NOWPLAYING.ART.MAP,%_result%)
$map_rect(%NOWPLAYING.ART.MAP%,$calc({%COLUMN1.W%-%NOWPLAYING.ART.WH%}/2),,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Open          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// clear
$clearobject(%_id%,event:open)

// object
$ifequal(%playback_isplaying%,1,
 $gp_image(%_id%,%NOWPLAYING.ART%,$calc({%COLUMN1.W%-%NOWPLAYING.ART.WH%}/2),,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true,mempos:true,dmode:calconly)
 $gp_image(%_id%,%NOWPLAYING.ART%,$calc({%COLUMN1.W%-%NOWPLAYING.ART.WH%}/2),%_mp_top%,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true,cache:false)
 $gp_image(%_id%,%NOWPLAYING.ART%,$calc({%COLUMN1.W%-%NOWPLAYING.ART.WH%}/2),$calc(%_mp_bottom%-1),%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,flip:y,keepaspect:true,cache:false)
 $gp_image(%_id%,/images\overlay.png,$calc({%COLUMN1.W%-%NOWPLAYING.ART.WH%}/2),%_mp_top%,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true)
 $gp_image(%_id%,/images\overlay_reflect.png,$calc({%COLUMN1.W%-%NOWPLAYING.ART.WH%}/2),%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true)

 $drawtext(%_id%,%NOWPLAYING.TITLE%,10,$calc(%NOWPLAYING.ART.WH%+%NOWPLAYING.ART.WH%/5),$calc(%COLUMN1.W%-20),15,fg:%NOWPLAYING.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:%MAIN.FONT.S%,font-style:b,ellipsis:end,editctrl:true,halign:center)
 $drawtext(%_id%,%NOWPLAYING.ARTIST%,10,$calc(%NOWPLAYING.ART.WH%+%NOWPLAYING.ART.WH%/5+20),$calc(%COLUMN1.W%-20),15,fg:%NOWPLAYING.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:%MAIN.FONT.S%,ellipsis:end,editctrl:true,halign:center)
 $drawtext(%_id%,%NOWPLAYING.ALBUM%,10,$calc(%NOWPLAYING.ART.WH%+%NOWPLAYING.ART.WH%/5+40),$calc(%COLUMN1.W%-20),15,fg:%NOWPLAYING.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:%MAIN.FONT.S%,ellipsis:end,editctrl:true,halign:center)
,
 $gp_image(%_id%,/images\no_image.jpg,$calc({%COLUMN1.W%-%NOWPLAYING.ART.WH%}/2),,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true,cache:false)
 $gp_image(%_id%,/images\no_image.jpg,$calc({%COLUMN1.W%-%NOWPLAYING.ART.WH%}/2),%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,flip:y,keepaspect:true,cache:false)
 $gp_image(%_id%,/images\overlay.png,$calc({%COLUMN1.W%-%NOWPLAYING.ART.WH%}/2),,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true)
 $gp_image(%_id%,/images\overlay_reflect.png,$calc({%COLUMN1.W%-%NOWPLAYING.ART.WH%}/2),%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,%NOWPLAYING.ART.WH%,keepaspect:true)
)

// update
$updatewindow(%_id%,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;seek&quot;&gt;SEEK&lt;/span&gt;       &lt;ul&gt;&lt;li&gt;Load          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// init
$style(%_id%,clear)
$gp_rect(%_id%,%SEEKBAR.X%,%SEEKBAR.Y%,$calc(%SEEKBAR.W%-1),$calc(%SEEKBAR.H%-1),pen:255-224-224-224-1,aa:false)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Open          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// clear
$clearobject(%_id%,event:open)

// object
$gp_rect(%_id%,$calc(%SEEKBAR.X%+%SEEKBAR.B%),%SEEKBAR.B%,%SEEKBAR.BW%,%SEEKBAR.BH%,brush:255-255-255-255,aa:false)
$map(%_id%,
 lbuttondown:&#39;
 $hash(SEEKBAR.PER,$calc({%_mouse_cx%+1-%SEEKBAR.X%-%SEEKBAR.B%}/%SEEKBAR.BW%))$playback_seek($calc(%playback_length%*%SEEKBAR.PER%))&#39;
)
$hash(SEEKBAR.MAP,%_result%)
$gp_rect(%_id%,$calc(%SEEKBAR.X%+%SEEKBAR.B%),%SEEKBAR.B%,$calc(%SEEKBAR.BW%*{%playback_position%/%playback_length%}),%SEEKBAR.BH%,brush:255-%MAIN.COLOR%,aa:false)
$drawtext(%_id%,$pl_getmeta(&#39;[%playback_time%]&#39;,%pl_playingname%,%pi_playingindex%)&#39; / &#39;$pl_getmeta(&#39;[%_length%]&#39;,%pl_playingname%,%pi_playingindex%),,20,%COLUMN1.W%,10,fg:%SUB.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,halign:center)
$map_rect(%SEEKBAR.MAP%,$calc(%SEEKBAR.X%+%SEEKBAR.B%),%SEEKBAR.B%,%SEEKBAR.BW%,%SEEKBAR.BH%)

// update
$updatewindow(%_id%,event:open)
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;volume&quot;&gt;VOLUME&lt;/span&gt;       &lt;ul&gt;&lt;li&gt;Load          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// init
$style(%_id%,clear)
$bgcolor(%_id%,%DEFAULT.BG.COLOR%)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Open          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// clear
$clearobject(%_id%,event:open)

// object
$ifequal(%volume%,-100.0,
 $bgcolor(%_id%,%MAIN.COLOR%)$drawtext(%_id%,Mute,,,%BUTTON.W%,%COLUMN3.H%,fg:%ACTIVE.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,halign:center,valign:middle)
,
 $hash(PLAYBACK.VOLUME,$drawtext(%_id%,$ifequal($strchr(%volume%,&#39;.&#39;),2,&#39;0.0&#39;,$ifequal($strchr(%volume%,&#39;.&#39;),3,$left(%volume%,4),$ifequal($strchr(%volume%,&#39;.&#39;),4,$left(%volume%,5),)))&#39; dB&#39;,,,%BUTTON.W%,%COLUMN3.H%,fg:%SUB.FONT.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,halign:center,valign:middle))
 $hash(PLAYBACK.VOLUME.HOVER,$drawtext(%_id%,$ifequal($strchr(%volume%,&#39;.&#39;),2,&#39;0.0&#39;,$ifequal($strchr(%volume%,&#39;.&#39;),3,$left(%volume%,4),$ifequal($strchr(%volume%,&#39;.&#39;),4,$left(%volume%,5),)))&#39; dB&#39;,,,%BUTTON.W%,%COLUMN3.H%,fg:%MAIN.COLOR%,font-name:%BUTTON.FONT.N%,font-size:%BUTTON.FONT.S%,hide,halign:center,valign:middle))
)
$map(%_id%,
 over:&#39;
 $bgcolor(%_id%,%FOCUS.BG.COLOR%)
 $showobject(%PLAYBACK.VOLUME%,false,redraw:true)
 $showobject(%PLAYBACK.VOLUME.HOVER%,true,redraw:true)&#39;,
 out:&#39;
 $bgcolor(%_id%,%DEFAULT.BG.COLOR%)
 $showobject(%PLAYBACK.VOLUME%,true,redraw:true)
 $showobject(%PLAYBACK.VOLUME.HOVER%,false,redraw:true)&#39;,
 lbuttondown:&#39;
 $mainmenu_execute(&#39;Mute&#39;)&#39;
)
$hash(VOLUME.MAP,%_result%)
$map_rect(%VOLUME.MAP%,,,%BUTTON.W%,%COLUMN3.H%)

// update
$updatewindow(%_id%,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;header1&quot;&gt;HEADER1&lt;/span&gt;       &lt;ul&gt;&lt;li&gt;Load          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// init
$style(%_id%,clear)
$bgcolor(%_id%,%HEADER.BG.COLOR%)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Open          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// clear
$clearobject(%_id%,event:open)

// object
$drawtext(%_id%,$pl_getmeta(&#39;%album%&#39;),10,10,$sub(%COLUMN2.W%,20),15,fg:%HEADER.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:%MAIN.FONT.S%)
$drawtext(%_id%,$pl_getmeta(&#39;%artist%&#39;),10,25,$sub(%COLUMN2.W%,20),15,fg:%HEADER.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:%MAIN.FONT.S%)
$drawtext(%_id%,$ifgreater($muldiv($pl_duration(%pl_activename%,selected),1,60),59,$muldiv($pl_duration(%pl_activename%,selected),1,3600):$pad_right($mod($muldiv($pl_duration(%pl_activename%,selected),1,60),60),2,0),$muldiv($pl_duration(%pl_activename%,selected),1,60)):$pad_right($mod($muldiv($pl_duration(%pl_activename%,selected),1,1),60),2,0),10,25,$sub(%COLUMN2.W%,20),15,fg:%HEADER.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:%MAIN.FONT.S%,halign:right)

// update
$updatewindow(%_id%,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;header2&quot;&gt;HEADER2&lt;/span&gt;       &lt;ul&gt;&lt;li&gt;Load          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// init
$style(%_id%,clear)
$bgcolor(%_id%,%HEADER.BG.COLOR%)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Open          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// clear
$clearobject(%_id%,event:open)

// object
$drawtext(%_id%,$pl_getmeta(&#39;%pl_activename%&#39;),10,10,$sub(%COLUMN3.W%,20),15,fg:%HEADER.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:%MAIN.FONT.S%)
$drawtext(%_id%,$pl_group(group,&#39;%album%&#39;)&#39; groups, &#39;$pl_itemcount()&#39; tracks.&#39;,10,25,$sub(%COLUMN3.W%,20),15,fg:%HEADER.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:%MAIN.FONT.S%)

// update
$updatewindow(%_id%,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;header3&quot;&gt;HEADER3&lt;/span&gt;       &lt;ul&gt;&lt;li&gt;Load          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// init
$style(%_id%,clear)
$bgcolor(%_id%,%DEFAULT.BG.COLOR%)
$gp_rect(%_id%,,,10,%_height%,aa:false,brush:255-%HEADER.BG.COLOR%)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Open          &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// clear
$clearobject(%_id%,event:open)

// object
$gp_text(%_id%,[%NOWPLAYING.ARTIST%],15,%NOWPLAYING.FONT.Y%,$calc(%COLUMN2.W%+10+%COLUMN3.W%-20),$calc(%_height%-5),fg:%NOWPLAYING.FONT.COLOR%,brush:255-%NOWPLAYING.FONT.COLOR%,font-name:%MAIN.FONT.N%,font-size:26,font-style:b,valign:top)

// update
$updatewindow(%_id%,event:open)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p class=&quot;crossheading&quot;&gt;Panel Settings&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;channelspectrumpanel&quot;&gt;CHANNEL_SPECTRUM_PANEL&lt;/span&gt;      &lt;br /&gt;
&lt;img style=&quot;border-right-width: 0px; margin: 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;CHANNEL_SPECTRUM_PANELの設定&quot; border=&quot;0&quot; alt=&quot;CHANNEL_SPECTRUM_PANELの設定&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikhOpXLVHG7eRYmXJM_1tRFpLkSIHztr15djNZjetxQXMbbY-3TCGdrFoEpRL7bHI-6brL7RpoU2SysRgu4LcfDc70MS6hm2QlDcYvlP7JPqTAc4CWCKzH-PofmDDkremIrQtZStkxq3m2/?imgmax=800&quot; width=&quot;355&quot; height=&quot;434&quot; /&gt;       &lt;br /&gt;
&lt;strong&gt;ForeGround1 :&lt;/strong&gt; 160-160-160       &lt;br /&gt;
&lt;strong&gt;BackGround :&lt;/strong&gt; 255-255-255 &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;wshlastfm&quot;&gt;WSH_LAST_FM&lt;/span&gt;       &lt;br /&gt;
詳しくは別記事の&lt;a href=&quot;http://other-webscrap.blogspot.com/2010/01/foobar2000lastfm.html&quot;&gt;foobar2000にLast.fmの曲情報を表示する&lt;/a&gt;で。 &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;playlistsdropdown&quot;&gt;PLAYLISTS_DROPDOWN&lt;/span&gt;       &lt;ul&gt;&lt;li&gt;Display          &lt;br /&gt;
&lt;strong&gt;Display&lt;/strong&gt;           &lt;pre&gt;&lt;code&gt;$rgb(64,64,64,255,255,255)
%title%&lt;/code&gt;&lt;/pre&gt;&lt;strong&gt;Style&lt;/strong&gt;           &lt;pre&gt;&lt;code&gt;$set_style(back,$rgb(255,255,255),$rgb(81,134,165))

$if($and(%_list%,$not(%_themed%)),
$ifequal($mod(%list_index%,2),1,
$set_style(back,$rgb(240,240,240),$rgb(81,134,165)),
$set_style(back,$rgb(255,255,255),$rgb(81,134,165))
)
)&lt;/code&gt;&lt;/pre&gt;&lt;strong&gt;Padding :&lt;/strong&gt; top・bottom 1px, left・right 7px &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;elplaylist&quot;&gt;ELPLAYLIST&lt;/span&gt;&amp;#160; &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Script          &lt;br /&gt;
&lt;b&gt;Track list&lt;/b&gt;           &lt;pre&gt;&lt;code&gt;// Even background
$ifequal($mod(%el_item_index2%,2),1,
$fillrect(,,,,%EVEN.BG%,),
)

// Now playing
$if(%el_isplaying%,
$fillrect(,,,,%PLAYING.BG%,)
$drawstring(%tracknumber%,10,,%el_width%,%el_height%,%PLAYING%,vcenter nowrap elipchar)
$drawstring(%title%,30,,$sub(%el_width%,120),%el_height%,%PLAYING%,vcenter nowrap elipchar)
$drawstring($ifequal(%LASTFM_LOVED_DB%,1,♥,),,,$sub(%el_width%,70),%el_height%,%PLAYING%,vcenter right nowrap elipchar,),

// Focus
$if(%el_focused%,
$fillrect(,,,,%FOCUS.BG%,)
$drawstring(%tracknumber%,10,,%el_width%,%el_height%,%FOCUS%,vcenter nowrap elipchar,)
$drawstring(%title%,30,,$sub(%el_width%,120),%el_height%,%FOCUS%,vcenter nowrap elipchar,)
$drawstring($ifequal(%LASTFM_LOVED_DB%,1,♥,),,,$sub(%el_width%,70),%el_height%,%FOCUS%,vcenter right nowrap elipchar,)
$drawstring(%length%,,,$sub(%el_width%,8),%el_height%,%FOCUS%,vcenter right nowrap elipchar,),

// Default
$drawstring(%tracknumber%,10,,%el_width%,%el_height%,%DEFAULT%,vcenter nowrap elipchar,)
$drawstring(%title%,30,,$sub(%el_width%,120),%el_height%,%DEFAULT%,vcenter nowrap elipchar,)
$drawstring($ifequal(%LASTFM_LOVED_DB%,1,♥,),,,$sub(%el_width%,70),%el_height%,%DEFAULT%,vcenter right nowrap elipchar,)
$drawstring(%length%,,,$sub(%el_width%,8),%el_height%,%DEFAULT%,vcenter right nowrap elipchar,)
))
))&lt;/code&gt;&lt;/pre&gt;&lt;b&gt;Per Second&lt;/b&gt;           &lt;pre&gt;&lt;code&gt;$drawstring(%playback_time% / %length%,,,$sub(%el_width%,10),%el_height%,%PLAYING%,vcenter right nowrap elipchar hq)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Style          &lt;br /&gt;
&lt;b&gt;dafoult font :&lt;/b&gt; Arial 7pt (メイリオ 7pt)           &lt;br /&gt;
&lt;strong&gt;Custom Background Colour :&lt;/strong&gt; Total 255-255-255           &lt;br /&gt;
&lt;b&gt;Scrollbar :&lt;/b&gt; hide 4 &lt;/li&gt;
&lt;li&gt;Grouping          &lt;br /&gt;
&lt;b&gt;Group format&lt;/b&gt;           &lt;pre&gt;&lt;code&gt;%album%&lt;/code&gt;&lt;/pre&gt;&lt;b&gt;Sort format&lt;/b&gt;           &lt;pre&gt;&lt;code&gt;$ifequal($replace($meta(genre),Compilation,1),1,$meta(genre) %album%,$ifequal($replace($meta(genre),Soundtrack,1),1,$meta(genre) %album%,%artist%)) $meta(date) %album% %tracknumber%&lt;/code&gt;&lt;/pre&gt;&lt;b&gt;Row height :&lt;/b&gt; 25 &lt;/li&gt;
&lt;li&gt;Field definition          &lt;br /&gt;
&lt;b&gt;EVEN.BG :&lt;/b&gt; 240-240-240           &lt;br /&gt;
&lt;b&gt;PLAYING.BG :&lt;/b&gt; 81-134-165           &lt;br /&gt;
&lt;b&gt;&lt;b&gt;PLAYING&lt;/b&gt; :&lt;/b&gt; 255-255-255&amp;#160; &lt;br /&gt;
&lt;b&gt;FOCUS.BG :&lt;/b&gt; 224-224-224           &lt;br /&gt;
&lt;b&gt;FOCUS :&lt;/b&gt; 81-134-165           &lt;br /&gt;
&lt;b&gt;DEFAULT :&lt;/b&gt; 96-96-96 &lt;/li&gt;
&lt;li&gt;Behaviour          &lt;br /&gt;
&lt;b&gt;Mouse Hover Action :&lt;/b&gt; Enable hover, Item Focus, Item Delay 0           &lt;br /&gt;
&lt;strong&gt;Display only the focused group&lt;/strong&gt;           &lt;br /&gt;
&lt;strong&gt;Update every second(for per second)&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;graphicalbrowser1&quot;&gt;GRAPHICAL_BROWSER1&lt;/span&gt;       &lt;ul&gt;&lt;li&gt;Group&amp;#160; &lt;pre&gt;&lt;code&gt;%album%&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Sort&amp;#160; &lt;pre&gt;&lt;code&gt;$ifequal($replace($meta(genre),Compilation,1),1,$meta(genre) %album%,$ifequal($replace($meta(genre),Soundtrack,1),1,$meta(genre) %album%,%artist%)) $meta(date) %album%&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Item size          &lt;br /&gt;
236 × 50 &lt;/li&gt;
&lt;li&gt;Popup size          &lt;br /&gt;
300 × 100 &lt;/li&gt;
&lt;li&gt;Draw          &lt;br /&gt;
&lt;strong&gt;Item&lt;/strong&gt;           &lt;pre&gt;&lt;code&gt;// Global
$puts(artpath,$ifequal($replace($substr(%path%,1,2),C:,1),1,
$replace(%path%,%filename_ext%,)%album%.jpg,
$ifequal($replace($substr(%path%,1,4),http,1),1,
images\album\%album%.jpg,
images\no_image.jpg)))

$puts(maincolor,81-134-165)
$set_font(Arial,8,)

// Even background
$ifequal($mod(%gb_item_index%,2),1,
$set_brush(240-240-240)
$fill_rect(0,0,%gb_width%,%gb_height%),
)


// Nowplaying
$if(%gb_isplaying%,
$set_brush($get(maincolor))
$fill_rect(0,0,%gb_width%,%gb_height%)

$draw_image(10,10,30,30,$get(artpath),
255,)

$set_font_color(255-255-255)
$draw_text(%album%,50,10,$eval(%gb_width%-60),%gb_height%,word_ellipsis)
$set_font_color(224-224-224)
$draw_text(%artist%,50,25,$eval(%gb_width%-60),%gb_height%,word_ellipsis),


// Focus
$if(%gb_focused%,
$set_brush(208-208-208)
$fill_rect(0,0,%gb_width%,%gb_height%)

$draw_image(10,10,30,30,$get(artpath),255,)

$set_font_color($get(maincolor))
$draw_text(%album%,50,10,$eval(%gb_width%-60),%gb_height%,word_ellipsis)
$set_font_color(128-128-128)
$draw_text(%artist%,50,25,$eval(%gb_width%-60),%gb_height%,word_ellipsis),


// Mouse over
$if(%gb_mouse_over%,
$set_brush(224-224-224)
$fill_rect(0,0,%gb_width%,%gb_height%)

$draw_image(10,10,30,30,$get(artpath),255,)

$set_font_color($get(maincolor))
$draw_text(%album%,50,10,$eval(%gb_width%-60),%gb_height%,word_ellipsis)
$set_font_color(128-128-128)
$draw_text(%artist%,50,25,$eval(%gb_width%-60),%gb_height%,word_ellipsis),


// Default
$draw_image(10,10,30,30,$get(artpath),230,)

$set_font_color($get(maincolor))
$draw_text(%album%,50,10,$eval(%gb_width%-60),%gb_height%,word_ellipsis)
$set_font_color(144-144-144)
$draw_text(%artist%,50,25,$eval(%gb_width%-60),%gb_height%,word_ellipsis)
)))&lt;/code&gt;&lt;/pre&gt;&lt;strong&gt;Popup&lt;/strong&gt;           &lt;pre&gt;&lt;code&gt;// Global
$puts(artpath,$ifequal($replace($substr(%path%,1,2),C:,1),1,
$replace(%path%,%filename_ext%,)%album%.jpg,
$ifequal($replace($substr(%path%,1,4),http,1),1,
images\album\%album%.jpg,
images\no_image.jpg)))

$set_font(Arial,8,)

// Popup
$gp_set_pen(255-192-192-192,2)
$gp_draw_rectangle(0,0,%gb_width%,%gb_height%)

$set_font_color(96-96-96)
$draw_image(10,10,80,80,$get(artpath),255,)
$draw_text(Album:%album%,100,12,$eval(%gb_width%-110),13,word_ellipsis)
$draw_text(Artist:%artist%,100,28,$eval(%gb_width%-110),13,word_ellipsis)
$draw_text(Genre:$meta(genre),99,44,$eval(%gb_width%-110),13,word_ellipsis)
$draw_text(Date:$meta(date),100,60,$eval(%gb_width%-110),13,word_ellipsis)
$draw_text(%gb_track_count% tracks   %gb_length%,100,76,$eval(%gb_width%-110),13,word_ellipsis,right)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Others          &lt;br /&gt;
&lt;strong&gt;Scroll type :&lt;/strong&gt; Vertical scroll           &lt;br /&gt;
&lt;strong&gt;Scroll by a multiple of scroll size&lt;/strong&gt;           &lt;br /&gt;
&lt;strong&gt;Show scrollbar&lt;/strong&gt;           &lt;br /&gt;
&lt;strong&gt;Scroll size :&lt;/strong&gt; 100 &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;graphicalbrowser2&quot;&gt;GRAPHICAL_BROWSER2&lt;/span&gt;       &lt;br /&gt;
GRAPHICAL_BROWSER1と同じ設定だが、背景色が入るマスの位置だけが違う。       &lt;ul&gt;&lt;li&gt;Draw          &lt;br /&gt;
&lt;strong&gt;Item&lt;/strong&gt;           &lt;pre&gt;&lt;code&gt;// Global
$puts(artpath,$ifequal($replace($substr(%path%,1,2),C:,1),1,
$replace(%path%,%filename_ext%,)%album%.jpg,
$ifequal($replace($substr(%path%,1,4),http,1),1,
images\album\%album%.jpg,
images\no_image.jpg)))

$puts(maincolor,81-134-165)
$set_font(Arial,8,)

// Odd background
$ifequal($mod(%gb_item_index%,2),0,
$set_brush(240-240-240)
$fill_rect(0,0,%gb_width%,%gb_height%),
)


// Nowplaying
$if(%gb_isplaying%,
$set_brush($get(maincolor))
$fill_rect(0,0,%gb_width%,%gb_height%)

$draw_image(10,10,30,30,$get(artpath),
255,)

$set_font_color(255-255-255)
$draw_text(%album%,50,10,$eval(%gb_width%-60),%gb_height%,word_ellipsis)
$set_font_color(224-224-224)
$draw_text(%artist%,50,25,$eval(%gb_width%-60),%gb_height%,word_ellipsis),


// Focus
$if(%gb_focused%,
$set_brush(208-208-208)
$fill_rect(0,0,%gb_width%,%gb_height%)

$draw_image(10,10,30,30,$get(artpath),255,)

$set_font_color($get(maincolor))
$draw_text(%album%,50,10,$eval(%gb_width%-60),%gb_height%,word_ellipsis)
$set_font_color(128-128-128)
$draw_text(%artist%,50,25,$eval(%gb_width%-60),%gb_height%,word_ellipsis),


// Mouse over
$if(%gb_mouse_over%,
$set_brush(224-224-224)
$fill_rect(0,0,%gb_width%,%gb_height%)

$draw_image(10,10,30,30,$get(artpath),255,)

$set_font_color($get(maincolor))
$draw_text(%album%,50,10,$eval(%gb_width%-60),%gb_height%,word_ellipsis)
$set_font_color(128-128-128)
$draw_text(%artist%,50,25,$eval(%gb_width%-60),%gb_height%,word_ellipsis),


// Default
$draw_image(10,10,30,30,$get(artpath),230,)

$set_font_color($get(maincolor))
$draw_text(%album%,50,10,$eval(%gb_width%-60),%gb_height%,word_ellipsis)
$set_font_color(144-144-144)
$draw_text(%artist%,50,25,$eval(%gb_width%-60),%gb_height%,word_ellipsis)
)))&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;biography&quot;&gt;BIOGRAPHY&lt;/span&gt;       &lt;br /&gt;
&lt;img style=&quot;border-right-width: 0px; margin: 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;BIOGRAPHYの設定&quot; border=&quot;0&quot; alt=&quot;BIOGRAPHYの設定&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjctywbGtFa9nbLyCuemRLkFTQThnATFCdlcmp5ds9P4CvxkITcOSbm_7dUdL8gO8DaNocjAxQ7h_jkjqXT37P6KedPqPQ1eA6_VTn3daoKe-b2ZUTCOjy6VZKsw1CxDRVx2IeDtLL5fbhU/?imgmax=800&quot; width=&quot;418&quot; height=&quot;512&quot; /&gt;&amp;#160; &lt;ul&gt;&lt;li&gt;Custom Colour          &lt;br /&gt;
&lt;strong&gt;Font :&lt;/strong&gt; Arial 10pt (メイリオ 9pt)           &lt;br /&gt;
&lt;strong&gt;Background :&lt;/strong&gt; 255-255-255           &lt;br /&gt;
&lt;strong&gt;Text :&lt;/strong&gt; 96-96-96 &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/02/foobar2000-3.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/2727586252632105449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/2727586252632105449'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/02/foobar2000-3.html' title='foobar2000のカスタマイズ 3'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTEs5qga7QUvflo2mxhQFikCIkApY_MdZN_u16qBLrxI5UFt-asyqEmllG4rfgsv8hQFKQ8-wyqUb8XAm46v7VBUMj-KLunwkUZ6C2mwlBTWxc-YwZY7nEjt_LJH1c9WIoQHaiI3uB6vw3/s72-c?imgmax=800" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-6857906851221319372</id><published>2010-02-05T01:46:00.002+09:00</published><updated>2010-02-05T01:51:48.413+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="foobar2000"/><title type='text'>Func UIの参考サイトのまとめ</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2010/02/foobar2000mp3.html&quot;&gt;foobar2000でオンラインストレージからmp3をストリーミング再生する&lt;/a&gt;方法を実際に別のPCで試してみたところ、ファイルが正常に再生されなかった。原因はDolby Headphone Wrapperで指定するdolbyhph.dllの位置が絶対ファイルでしか指定できない為だった。最新版ならその問題を解決できるが、導入するにはfoobar2000 v1.0が必要となるので、これを機にアップグレードすることにした。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;そうなるとfoo_funcやcwbowron&#39;s hooksなどのコンポーネントも使えなくなるので、同じような関数が使えるFunc UIを試してみた。&lt;/p&gt;&lt;p&gt;軽くいじってみたところ、今まで以上に自由な構成や多くの関数が使える反面、設定が難解だと言われるfoobar2000の中でも更に難易度が上がったように感じた。初めから全て作っていくとなるとかなり困難に近いので、Func UIの作者のTipsと設定を公開しているサイトをまとめておく。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;Tips&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blog.99ravens.net/index.php?e=293&quot; target=&quot;_blank&quot;&gt;blog.99ravens.net::Tips: トグルボタンの作り方&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.99ravens.net/index.php?e=291&quot; target=&quot;_blank&quot;&gt;blog.99ravens.net::Tips: ウィンドウ上を流れる星&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.99ravens.net/index.php?e=290&quot; target=&quot;_blank&quot;&gt;blog.99ravens.net::Tips: 曲開始時に右下にポップアップを表示する&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.99ravens.net/index.php?e=289&quot; target=&quot;_blank&quot;&gt;blog.99ravens.net::Tips: オブジェクトのドラッグ&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.99ravens.net/index.php?e=287&quot; target=&quot;_blank&quot;&gt;blog.99ravens.net::Tips: TFでシークバーを作る&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p class=&quot;crossheading&quot;&gt;設定を公開しているサイト&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blog.99ravens.net/index.php?e=292&quot; target=&quot;_blank&quot;&gt;blog.99ravens.net::Func User Interface sample config&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www7.atpages.jp/~customize/drupal6/?q=foobar2000-config&quot; target=&quot;_blank&quot;&gt;Config | noname&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://d.hatena.ne.jp/syo00/20090413/1239634936&quot; target=&quot;_blank&quot;&gt;foobar2000 の自作スキンを公開してみるテスト - 爪切りと半年前の裂きイカ&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://kadrinche.la/manual/music/fb2k/&quot; target=&quot;_blank&quot;&gt;音楽再生ソフト | ナメサメカリンチョ&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/02/func-ui.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/6857906851221319372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/6857906851221319372'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/02/func-ui.html' title='Func UIの参考サイトのまとめ'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-1240253797884168851</id><published>2010-02-02T23:46:00.002+09:00</published><updated>2010-02-02T23:57:09.795+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="foobar2000"/><title type='text'>foobar2000でオンラインストレージからmp3をストリーミング再生する</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://www.mp3tunes.com/&quot; target=&quot;_blank&quot;&gt;MP3tunes&lt;/a&gt;はオンラインストレージ上にmp3をアップロードして、ネット環境さえあればどこでも気軽に音楽を聴ける便利なサービスだが、いかんせんプレイヤーの使い勝手が悪い。 だがプレイリストファイル(m3u)をダウンロードすることができるので、それを使ってfoobar2000でストリーミング再生させてみる。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;早速ダウンロードしたプレイリストファイルをfoobar2000に読み込ませると、曲名ではなくファイルのURLが表示される。実際に再生してみると曲名に差し替えられ、プロパティからもファイル情報を見ることができた。オンラインプレイヤーでは日本語のファイル情報は文字化けしていたが、ファイル情報自体はそのまま保持されているようなので、foobar2000では正常に表示される。&lt;/p&gt;&lt;p&gt;※ MP3tunesのサイト上でもファイル情報を編集して文字化けを解消できるが、特定のタグ(Artist Name, Track Title, Album Title, Album Year, Track Number)しか編集はできない。また、その場合それ以外のものは全て消去されてしまうので、オンラインプレイヤーをどうしても使いたいのでなければファイル情報の編集はしない方がよい。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;大量の曲を正常に表示させるには時間がかかるので、&lt;a href=&quot;http://kitahei.cocolog-nifty.com/youyou/2007/04/foo_custominfo__6ab8.html&quot; target=&quot;_blank&quot;&gt;foo_preview_custom&lt;/a&gt;で順次再生させていったのだが、その途中でプレイリストに全てのファイルが登録されていないのに気づいた。原因はmp3のファイル名が日本語だとfoobar2000で読み取れない為だったので、その際はプレイリストファイルをメモ帳に開いて、foobar2000のMenu &amp;gt; File &amp;gt; Add location...から手動で読み込ませた。&lt;/p&gt;&lt;p&gt;ストリーミング再生なので読み込みには少し時間がかかるが、その後は途切れることなく再生でき、音質の劣化も無い、また、曲を進ませるのはシームレスだが、戻らせるには若干間が空くので再度ストリーミングしているようだ。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;これでMP3tunesにある曲をfoobar2000で聴くことができるようになった。後はUSBメモリなどに入れて持ち歩けば、使い慣れた環境でどこでも音楽を楽しめる。再生回数の情報などもLast.fmに送信して管理していたので、より効果的にデータベースを利用できるようにもなった。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/02/foobar2000mp3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1240253797884168851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1240253797884168851'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/02/foobar2000mp3.html' title='foobar2000でオンラインストレージからmp3をストリーミング再生する'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-8955557004289437138</id><published>2010-02-01T01:21:00.003+09:00</published><updated>2010-02-02T12:56:57.943+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><title type='text'>Firefoxを引き算で高速化</title><content type='html'>&lt;p&gt;Firefoxの高速化に関する記事は大量にあるが、ほとんどのものが実際に早くなっているかは正確なテストをしなければ分からないので、単純にFirefoxから無駄をそぎ落とすことでの高速化を考えてみる。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p class=&quot;crossheading&quot;&gt;最低限必要な機能を持ったアドオンを入れる&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Tab Mix Plusのような多機能なアドオンは、その分ファイルサイズも大きくFirefoxを鈍重にしてしまう。最低限必要な機能があれば事足りるので、同系統のより小機能なものと入れ替える。    &lt;br /&gt;
もし一つ二つ欲しい機能がない場合は、他のアドオンとの組み合わせで補うといい。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;     &lt;div align=&quot;left&quot;&gt;&lt;a href=&quot;http://wikiwiki.jp/firefox/?Comparison/Tab&quot; target=&quot;_blank&quot;&gt;タブ統合型アドオンの比較表 - Firefox更新情報 Wiki*&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;また、あまり使わないアドオンは一旦無効にしてしばらく様子を見る。それで特に不便を感じないようであれば、思い切って削除してしまう。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;Greasemonkeyの代わりにuserContent.jsを使う&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;GreasemonkeyはFirefoxの中でもとても優秀かつ代表的なアドオンだが、Webページのレンダリングを遅くしてしまう欠点がある。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://d.hatena.ne.jp/independent007/20070612&quot; target=&quot;_blank&quot;&gt;Firefoxを遅くさせる最大原因はアドオン - 300clp&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;これと同じ機能を実装するものにuserContent.jsがある。こちらはレンダリング速度にもあまり影響は出ず、ファイルサイズ自体もかなり小さくなる。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://coxcafe.net/2008/02/14/16_02_03/&quot; target=&quot;_blank&quot;&gt;Cox Café » userContent.jsの導入方法&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;しかし、スクリプトをインストールするのに一々プロファイルフォルダに手動でファイルを入れなければならならず、正常に動作しないスクリプトもある。&lt;/p&gt;&lt;p&gt;この点に関しては一概にどちらがいいとは言えないので、使いやすい方を選ぶといい。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;アドオンの余分な言語ファイルを削除する&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;アドオンにはローカライズのため様々な言語ファイルが入っている場合があるので、使わない言語ファイルを削除すればファイル容量を小さくすることができる。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://pearl-white.hp.infoseek.co.jp/fireboot/&quot; target=&quot;_blank&quot;&gt;Fireboot&lt;/a&gt;を使えば簡単に英語と日本語以外の言語ファイルを削除してくれる。ただし、圧縮率の関係で以前よりも容量が大きくなってしまうアドオンもあるので注意。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;複数のプロファイルを使い分ける&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;FirefoxはWeb開発に適したFirebugなどの優秀なアドオンがあるが、普通にサイトを見る場合は重荷となってしまう。かといって単純に削除するわけにはいかないので、そういう場合は別々のプロファイルを用意するといい。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://firefox.geckodev.org/index.php?%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&quot; target=&quot;_blank&quot;&gt;プロファイル - Mozilla Firefox まとめサイト&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;片方をWeb開発用、もう片方をWebブラウジング用として使い分ければ、互いに余分な機能を除くことができ、全体的なパフォーマンスのアップに繋がる。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;Webページからの負荷を減らす&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/722&quot; target=&quot;_blank&quot;&gt;Noscript&lt;/a&gt;や&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/433&quot; target=&quot;_blank&quot;&gt;Flashbock&lt;/a&gt;などのブロック系アドオンで、PC本体にかかる負荷を軽減する。&lt;/p&gt;&lt;p&gt;Javascriptは使用しているWebサイトが多いのでそこまで気にしなくてもいいが、Flashの広告やブログパーツなどは負荷が大きくなり邪魔なだけなので、あらかじめブロックしてしまえば大幅に負荷を軽減できる。何よりうざったい広告を見なくて済むので精神衛生上にも良い。&lt;/p&gt;&lt;p&gt;また、この系統のアドオンの中でも&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/1865&quot; target=&quot;_blank&quot;&gt;Adblock Plus&lt;/a&gt;は特に強力だが、フィルタの数が多すぎると返ってパフォーマンスを下げる原因となってしまうので注意すること。&lt;/p&gt;&lt;p&gt;他にもGIF画像のアニメーションを無効にすることでも負荷の軽減が見込める。(about:config -image.animation_mode:none)&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;操作をシンプルにする&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;よく行う動作などはそれを簡略化してくれるアドオンを導入して、Firefoxの操作上のタイムラグを無くす。この点に関しては個人の操作感が大きく影響するので、それぞれ自分に合ったアドオンを探すといい。&lt;/p&gt;&lt;p&gt;結果的にアドオンが増えることにはなってしまうが、そもそもアドオンを使わないのならFirefoxを使う意味はあまり無いので、必要なものはどんどん入れる。&lt;/p&gt;&lt;p&gt;ほとんどの人が恩恵を受けられる例としては、&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/11151&quot; target=&quot;_blank&quot;&gt;IME Area&lt;/a&gt;がある。これはIMEがonのときフォームやテキストエリアの背景色を変えてくれるので、検索バーへの入力間違いを劇的に減らしてくれる優秀なアドオンだ。&lt;/p&gt;&lt;p&gt;同じ種類のものに&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/4687&quot; target=&quot;_blank&quot;&gt;IME and DiMENSiON&lt;/a&gt;もあるが、こちらは先ほどのFlashblockと競合してしまうので、両方使いたい場合はIME Areaを選ぶといい。 &lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;こうして並べてみると、自分がFirefoxでほぼ実践していることが多い。なにせCPU・メモリ共にネットブック以下の性能の上、ついにHDDまで棺桶に片足突っ込み始めたスクラップ同然のノートPCを使っているので、極力無駄を省かないと使い物にならないのだ。&lt;/p&gt;&lt;p&gt;ちなみに軽いと評判のGoogle Chromeも試してみたところ、extentionに関しては申し分ないがGresemonkeyスクリプトが動作しないものが多いので、まだまだ移行することにはならなそうだ。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;最後に、よく出回る記事でメモリの使用量が激減するという類のアドオンやアプリケーションがあるが、大抵ほとんど効果が無いのでやめておいたほうがいい。また、config.trim_on_minimizeと設定するのも同様だ。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blog.f99aq8ove.net/archive/2006/04/1145110530.html&quot; target=&quot;_blank&quot;&gt;trim_on_minimizeでは、「FirefoxやThunderbirdのメモリ消費量を劇的に減ら」せない - ◆F99a.q8oVE::Blog&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/02/firefox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/8955557004289437138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/8955557004289437138'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/02/firefox.html' title='Firefoxを引き算で高速化'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-4055004474307376643</id><published>2010-01-23T01:30:00.006+09:00</published><updated>2010-02-01T01:26:15.864+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="userCrome.js"/><title type='text'>Firefoxアドオン TabberwockyとTab Utilities Liteの違いのまとめ</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://mozilla-remix.seesaa.net/article/129717159.html&quot; target=&quot;_blank&quot;&gt;超軽量なFirefoxタブコントロールアドオン「Tabberwocky」&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://mozilla-remix.seesaa.net/article/138764803.html&quot; target=&quot;_blank&quot;&gt;Firefoxのタブ操作を自在にカスタマイズできる軽量アドオン「Tab Utilities」&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;上記の記事で紹介されている&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/14439&quot; target=&quot;_blank&quot;&gt;Tabberwocky&lt;/a&gt;と&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/59961&quot; target=&quot;_blank&quot;&gt;&lt;strike&gt;Tab Utilities&lt;/strike&gt;&lt;/a&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/62581&quot; target=&quot;_blank&quot;&gt;Tab Utilities Lite&lt;/a&gt;は共に軽量のタブ管理アドオンだが、設定できる機能はそれぞれ違っている点が多い。他のアドオンと競合する際に入れ換えて使う場合を考えて、互いの中で無い機能と、それを補うアドオンや本体の設定をまとめておく。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p class=&quot;crossheading&quot;&gt;Tabberwocky&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strike&gt;タブを隠す (&lt;/strike&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/12849&quot; target=&quot;_blank&quot;&gt;&lt;strike&gt;HideTab&lt;/strike&gt;&lt;/a&gt;&lt;strike&gt;)&lt;/strike&gt; &lt;/li&gt;
&lt;li&gt;&lt;strike&gt;タブをファビコンだけにする (&lt;/strike&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/3780&quot; target=&quot;_blank&quot;&gt;&lt;strike&gt;FaviconizeTab&lt;/strike&gt;&lt;/a&gt;&lt;strike&gt;)&lt;/strike&gt; &lt;/li&gt;
&lt;li&gt;重複タブを元のタブの右隣に開く &lt;/li&gt;
&lt;li&gt;空白タブを利用する &lt;/li&gt;
&lt;li&gt;空白タブを自動で閉じる (&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs2.html&quot;&gt;closeBlankTabOnCloseDownloadDialog.uc.js&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;特定の条件から開いたタブにフォーカスする &lt;/li&gt;
&lt;li&gt;新規タブを特定のURLで開く (&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/2221&quot; target=&quot;_blank&quot;&gt;NewTabURL&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;&lt;strike&gt;タブを閉じたときに次の未読タブにフォーカスする&lt;/strike&gt; &lt;/li&gt;
&lt;li&gt;閉じたタブの履歴の表示 (&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/3082&quot; target=&quot;_blank&quot;&gt;Undo Closed Tabs Button&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;閉じたタブの履歴数の設定 (about:config - browser.sessionstore.max_tabs_undo) &lt;/li&gt;
&lt;li&gt;Ctrl+Tabで最近使った順に移動する (&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/112&quot; target=&quot;_blank&quot;&gt;LastTab&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;&lt;strike&gt;新規ウィンドウで開くリンクの設定 (about:config - browser.link.open_newwindow, browser.link.open_newwindow.restriction)&lt;/strike&gt; &lt;/li&gt;
&lt;li&gt;&lt;strike&gt;外部サイトへのリンクを開く設定 (&lt;/strike&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/13906&quot; target=&quot;_blank&quot;&gt;&lt;strike&gt;DomainTab&lt;/strike&gt;&lt;/a&gt;&lt;strike&gt;)&lt;/strike&gt; &lt;/li&gt;
&lt;li&gt;&lt;strike&gt;タブごとにセッション履歴を表示 (&lt;/strike&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/7340&quot; target=&quot;_blank&quot;&gt;&lt;strike&gt;Tab Session History&lt;/strike&gt;&lt;/a&gt;&lt;strike&gt;)&lt;/strike&gt; &lt;/li&gt;
&lt;li&gt;&lt;strike&gt;タブの詳細なクリックアクションの設定 (&lt;/strike&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/260&quot; target=&quot;_blank&quot;&gt;&lt;strike&gt;Tab Clicking Options&lt;/strike&gt;&lt;/a&gt;&lt;strike&gt;)&lt;/strike&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p class=&quot;crossheading&quot;&gt;Tab Utilities Lite&lt;/p&gt;&lt;ul&gt;&lt;li&gt;新規タブで開くリンクの設定 (&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/13906&quot; target=&quot;_blank&quot;&gt;DomainTab&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;タブをクリックしたときの設定 (&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/260&quot; target=&quot;_blank&quot;&gt;Tab Clicking Options&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;新規タブボタンの非表示 (userChrome.css - .tabs-newtab-button {display: none;}) &lt;/li&gt;
&lt;li&gt;タブを閉じるボタンの設定 (about:config - browser.tabs.closeButtons) &lt;/li&gt;
&lt;li&gt;タブの最小・最大幅の設定 (about:config - browser.tabs.tabClipWidth, browser.tabs.tabMaxWidth) &lt;/li&gt;
&lt;li&gt;タブを複製 (&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/28&quot; target=&quot;_blank&quot;&gt;Duplicate Tab&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;タブを保護、タブをロック (&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/12536&quot; target=&quot;_blank&quot;&gt;Tabloc&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;タブのタイトルをコピーする (&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/7355&quot; target=&quot;_blank&quot;&gt;CopyTitle&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;「選択したリンクを新しいタブで開く」の追加 (&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/4336&quot; target=&quot;_blank&quot;&gt;Snap Links&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;タブにプログレスバーを表示 (&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/14644&quot; target=&quot;_blank&quot;&gt;Tab Progress Bar&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;多段タブ (&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs2.html&quot; target=&quot;_blank&quot;&gt;zzzz-MultiRowTabforFx2.0_3.0.uc.js&lt;/a&gt;) &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;実際に使ってみたところ、欲しい機能が揃っていたのはTab Utilitiesだったが、Group/Sort Tabsや他のアドオンと競合してしまうので現状では見送りとなった。(タブを閉じたときに次にフォーカスするタブの設定が効かないなど)    &lt;br /&gt;
まだ開発版のアドオンなので、今後のアップデートで修正されるのを期待したい。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2010/01/25 追記：&lt;/strong&gt;Tab Utilitiesが大幅に機能拡張され、上記のほとんどの機能が実装されたため、軽量版のTab Utilities Liteとの比較に変更。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/firefox-tabberwockytab-utilities.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/4055004474307376643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/4055004474307376643'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/firefox-tabberwockytab-utilities.html' title='Firefoxアドオン TabberwockyとTab Utilities Liteの違いのまとめ'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-4541744334095695908</id><published>2010-01-21T01:35:00.028+09:00</published><updated>2010-01-21T03:32:01.684+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="SBM"/><title type='text'>はてなブックマーク件数取得APIでBloggerに被ブックマーク数を表示</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://d.hatena.ne.jp/amachang/20090811/1249963519&quot; target=&quot;_blank&quot;&gt;新はてなブックマーク件数取得 API を使って自分のページに件数を埋め込む最も簡単な方法&lt;/a&gt;を参考にBlogger用に調整したもの。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a expr:href=&#39;&amp;amp;quot;http://b.hatena.ne.jp/entry/&amp;amp;quot; + data:post.url&#39;&amp;gt;
&amp;lt;script expr:src=&#39;&amp;amp;quot;http://api.b.st-hatena.com/entry.count?url=&amp;amp;quot; + data:post.url + &amp;amp;quot;&amp;amp;amp;callback=document.write&amp;amp;quot;&#39;/&amp;gt; user&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;テキストで出力されるのでCSSで装飾ができる。(ブログの書式の都合で掲載できないので、下のものは大体のイメージ。)&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;#&quot; style=&quot;background: #ffcbcb; border: none; color: #ff0606; font: bold 0.9em Helvetica, Arial, sans-serif; text-decoration: underline;&quot;&gt;1 user&lt;/a&gt;  &lt;a href=&quot;#&quot; style=&quot;background: #cbcbff; border: none; color: #0606ff; font: bold 0.9em Helvetica, Arial, sans-serif; text-decoration: underline;&quot;&gt;2 user&lt;/a&gt;  &lt;a href=&quot;#&quot; style=&quot;background: #cbeecb; border: none; color: #06aa06; font: bold 0.9em Helvetica, Arial, sans-serif; text-decoration: underline;&quot;&gt;3 user&lt;/a&gt;  &lt;a href=&quot;#&quot; style=&quot;background: #e3e3e3; border: none; color: #666; font: bold 0.9em Helvetica, Arial, sans-serif; text-decoration: underline;&quot;&gt;4 user&lt;/a&gt;&lt;/p&gt;&lt;p&gt;欠点は被ブックマーク数が0でも表示されてしまうので、単純に被ブックマーク数を画像で取得する場合の代わりにはならないこと。 &lt;br /&gt;
何かいい方法は無いだろうか。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/apiblogger.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/4541744334095695908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/4541744334095695908'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/apiblogger.html' title='はてなブックマーク件数取得APIでBloggerに被ブックマーク数を表示'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-6776740338749888783</id><published>2010-01-11T22:04:00.009+09:00</published><updated>2010-01-13T19:11:08.737+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Custom Buttons"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="Greasemonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="userCrome.js"/><title type='text'>Firefox 3.6 現在の設定・アドオン</title><content type='html'>&lt;p&gt;&lt;a title=&quot;Personasが標準機能になったので、より気軽にデザインを変えられるようになった。&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5arQ8tId6C2E1i9VmycH6whP7jrzr01P2ntRNpGZheQmzKoB_rjiXqqvNkdAxmN51xic40NhUD06O5anzQVxYnubErhyphenhypheniAzsNbcuzz2nnqbFP9lXRtSDqTP3nu3bW20TIKUapToG_AqLp/&quot; rel=&quot;lightbox&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;Firefox3.6のキャプチャ画面&quot; border=&quot;0&quot; alt=&quot;Firefox3.6のキャプチャ画面&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia7nXuDhtvT4sViiEdmJnzqZdeWcm6r8FowGoAmzW34j_Qe3uUSY3czof8JqCndQMY-cxKOiCUUfKiv8oBgwhj9OfXIDE2soTLF4VME31uOldTStGjuGwXkVTO1QGWscufQGMc1klDS23N/?imgmax=800&quot; width=&quot;440&quot; height=&quot;320&quot; /&gt;&lt;/a&gt; 先日アップデートしたFirefox 3.6 RC1。JavascriptエンジンがTraceMonkeyに変わったということだが、実際に使ってみたところ以前よりキビキビと動くように感じられる。&lt;/p&gt;&lt;p&gt;もう一つの大きな変更点として、FirefoxアドオンのPersonasが標準機能として統合され、アドオンマネージャでも管理できるようになった。これにより同名のアドオンの方は、メニューバー(ステータスバー)からお気に入りや最新のものに簡単に切り換えたり、ローカルに自分で作成したものも使えるなど、更なる機能拡張のためのものとなった。    &lt;br /&gt;
私は特に頻繁に変えるという訳でもないので、Personasのアドオンは削除した。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;まだ触り始めではあるが、ほとんどのアドオンはそのまま使えたので、現在の設定・アドオンを記録しておく。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/4781&quot; target=&quot;_blank&quot;&gt;Automatic Save Folder&lt;/a&gt;       &lt;br /&gt;
保存するファイルを自動で条件ごとに指定した場所に振り分ける。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/6271&quot; target=&quot;_blank&quot;&gt;Bookmark Previews&lt;/a&gt;      &lt;br /&gt;
ブックマークしたページのサムネイルを作成し、ツールチップに表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/10255&quot; target=&quot;_blank&quot;&gt;bookmarks history panel&lt;/a&gt;       &lt;br /&gt;
ブックマーク・履歴サイドバーをIE7のようにポップアップ表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-1291.html&quot; target=&quot;_blank&quot;&gt;Boss Key&lt;/a&gt;       &lt;br /&gt;
Firefoxを最小化・閉じる・グローバルホットキーでタスクトレイにしまう。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/cachestatus/downloads/detail?name=cachestatus.xpi&amp;amp;can=2&amp;amp;q=&quot; target=&quot;_blank&quot;&gt;Cache Status&lt;/a&gt;       &lt;br /&gt;
メモリ・ディスクキャッシュの容量を設定し、一定まで溜まると自動で削除する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/82&quot; target=&quot;_blank&quot;&gt;CookieCuller&lt;/a&gt;       &lt;br /&gt;
指定したクッキーを保護し、それ以外をFirefox起動時に削除する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/5066&quot; target=&quot;_blank&quot;&gt;Custom Buttons²&lt;/a&gt;       &lt;br /&gt;
様々な機能のボタンをツールバーに追加できる。       &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;Auto context menu on selection&lt;/a&gt;           &lt;br /&gt;
選択するとコンテキストメニューを開く &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-1135.html&quot; target=&quot;_blank&quot;&gt;AutoCopy&lt;/a&gt;           &lt;br /&gt;
選択した文字列を自動でコピーする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons2.com/ja/forum/buttons/buttons-database/bottom-panel-menu-button.html&quot; target=&quot;_blank&quot;&gt;Bottom Panel&lt;/a&gt;           &lt;br /&gt;
様々な設定画面やページを下部パネルで開く &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons2.com/ja/forum/buttons/buttons-database/check-em-all-checkbox-button.html&quot; target=&quot;_blank&quot;&gt;Check ‘em All&lt;/a&gt;           &lt;br /&gt;
選択したチェックボックスのon/offをまとめて切り換える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/12/deliciouscustom-buttons.html&quot;&gt;delicious&lt;/a&gt;           &lt;br /&gt;
表示しているサイトをdeliciousに登録する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons2.com/ja/forum/buttons/buttons-database/domi-error-console.html&quot; target=&quot;_blank&quot;&gt;DOMi and Error Console&lt;/a&gt;           &lt;br /&gt;
DOM Inspector、エラーコンソールを開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons2.com/ja/forum/buttons/buttons-database/extensions-menu-button.html&quot; target=&quot;_blank&quot;&gt;Extensions in Sidebar&lt;/a&gt;           &lt;br /&gt;
アドオンマネージャをサイドバーで開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://urtz.blog58.fc2.com/blog-entry-76.html&quot; target=&quot;_blank&quot;&gt;Google’s Cache&lt;/a&gt;           &lt;br /&gt;
表示しているサイトのGoogleキャッシュを表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/09/firefoxsleipnirgoogle-chromecustom.html&quot;&gt;Launch Google Chrome&lt;/a&gt;           &lt;br /&gt;
表示しているサイトをGoogle Chromeで開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/09/firefoxsleipnirgoogle-chromecustom.html&quot;&gt;Launch Sleipnir&lt;/a&gt;           &lt;br /&gt;
表示しているサイトをSleipnirで開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19837833.html&quot; target=&quot;_blank&quot;&gt;Open the Chrome Folder&lt;/a&gt;           &lt;br /&gt;
FirefoxのProfileフォルダを開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.asahi-net.or.jp/~hn5k-itu/Pdflink.html&quot; target=&quot;_blank&quot;&gt;PDF to GoogleDocs&lt;/a&gt;           &lt;br /&gt;
ページ内のpdfへのリンクをGoogleDocsで開くようにURLを書き換える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19837833.html&quot; target=&quot;_blank&quot;&gt;Restart Firefox&lt;/a&gt;           &lt;br /&gt;
Firefoxを再起動する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19887381.html&quot; target=&quot;_blank&quot;&gt;toggle Java&lt;/a&gt;           &lt;br /&gt;
Javaのon/offを切り換える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19887381.html&quot; target=&quot;_blank&quot;&gt;toggle Javascript&lt;/a&gt;           &lt;br /&gt;
JavaScriptのon/offを切り換える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bushwhacker.seesaa.net/article/19887381.html&quot; target=&quot;_blank&quot;&gt;Toggle Option&lt;/a&gt;           &lt;br /&gt;
オプション画面を開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons2.com/ja/forum/buttons/buttons-database/toggle-toolbars.html&quot; target=&quot;_blank&quot;&gt;Toggle Toolbar (Bookmark Toolbar)&lt;/a&gt;           &lt;br /&gt;
ツールバーを開閉する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://custombuttons2.com/ja/forum/buttons/buttons-database/undo-close-tab.html&quot; target=&quot;_blank&quot;&gt;UCTB&lt;/a&gt;           &lt;br /&gt;
閉じたタブを復元する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://firefox.exxile.net/cb/index.php&quot; target=&quot;_blank&quot;&gt;URL-Tools&lt;/a&gt;           &lt;br /&gt;
一つ上の階層に移動やキャッシュなどを表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;サイト内検索&lt;/a&gt;           &lt;br /&gt;
表示しているサイト内をGoogleで検索する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/09/custom-buttons.html&quot;&gt;はてなブックマークレット&lt;/a&gt;           &lt;br /&gt;
表示しているサイトをはてなブックマークに登録する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xxsionxx.blog17.fc2.com/blog-entry-542.html&quot; target=&quot;_blank&quot;&gt;リファラ on/off 切り替え&lt;/a&gt;           &lt;br /&gt;
リファラのon/offを切り替える。 &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/6622&quot; target=&quot;_blank&quot;&gt;DOM Inspector&lt;/a&gt;       &lt;br /&gt;
表示しているサイトの構造を表示・解析する。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/13906&quot; target=&quot;_blank&quot;&gt;DomainTab&lt;/a&gt;      &lt;br /&gt;
リンク先のドメインを判別して新しいタブで開く。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/26&quot; target=&quot;_blank&quot;&gt;Download Statusbar&lt;/a&gt;       &lt;br /&gt;
ダウンロード中ファイルのプログレスバーをステータスバーの上に表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/8538&quot; target=&quot;_blank&quot;&gt;feedly&lt;/a&gt;       &lt;br /&gt;
Googleリーダーで取得しているフィードをマガジンスタイルで表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/5627&quot; target=&quot;_blank&quot;&gt;Group/Sort Tabs&lt;/a&gt;       &lt;br /&gt;
同ドメインやリンク元→リンク先のタブを自動でグループ化する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.filehippo.com/download_orbit_downloader/6117/&quot; target=&quot;_blank&quot;&gt;Orbit Downloader Firefox Integration&lt;/a&gt;       &lt;br /&gt;
Orbitへパラメータを渡す。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cid-5e67ae1f18509d47.skydrive.live.com/self.aspx/.Public/read%5E_it%5E_later-0.9948-fx%5E_jp%5E_rev2%5E_sbm.xpi?wa=wsignin1.0&amp;amp;sa=430727862&quot; target=&quot;_blank&quot;&gt;Read it Later (日本語版)&lt;/a&gt;       &lt;br /&gt;
「あとで読む」機能を追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/546&quot; target=&quot;_blank&quot;&gt;Reload Tab On Double-Click&lt;/a&gt;       &lt;br /&gt;
タブをダブルクリックでページを更新する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/4902&quot; target=&quot;_blank&quot;&gt;Save File to&lt;/a&gt;       &lt;br /&gt;
右クリックメニューに特定の保存先を追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/427&quot; target=&quot;_blank&quot;&gt;ScrapBook&lt;/a&gt;       &lt;br /&gt;
Webサイトを取り込んで保存する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/376&quot; target=&quot;_blank&quot;&gt;SearchWP&lt;/a&gt;       &lt;br /&gt;
サーチバーからページ内検索をできるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/1765&quot; target=&quot;_blank&quot;&gt;Stop Autoplay&lt;/a&gt;       &lt;br /&gt;
サイト上に埋め込まれた動画や音楽などの自動再生を止める。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/2108&quot; target=&quot;_blank&quot;&gt;Stylish&lt;/a&gt;       &lt;br /&gt;
CSSでWebサイトの表示を変更できる。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/12105&quot; target=&quot;_blank&quot;&gt;Stylish-Custom&lt;/a&gt;       &lt;br /&gt;
Stylishの機能や設定を拡張する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/14439&quot; target=&quot;_blank&quot;&gt;Tabberwocky&lt;/a&gt;       &lt;br /&gt;
タブ機能を設定する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userchromejs.mozdev.org/&quot; target=&quot;_blank&quot;&gt;userChromeJS&lt;/a&gt;       &lt;br /&gt;
FirefoxのUIを拡張する。       &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://firefox.geckodev.org/index.php?userChrome.js#p3e08575&quot; target=&quot;_blank&quot;&gt;copy_link_text-1.0-fx.uc.xul&lt;/a&gt;           &lt;br /&gt;
リンク文字列をコピーする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=70&quot; target=&quot;_blank&quot;&gt;SubmitToTab.uc.xul&lt;/a&gt;           &lt;br /&gt;
送信ボタンを中クリックで新規タブに開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=266&quot; target=&quot;_blank&quot;&gt;adblock#.uc.js&lt;/a&gt;           &lt;br /&gt;
ページ上の広告をブロックする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=121&quot; target=&quot;_blank&quot;&gt;AutocloseBookmark&amp;amp;HistoryFolders.uc.js&lt;/a&gt;           &lt;br /&gt;
ブックマーク・履歴サイドバーで他のフォルダを開けたとき自動で閉める。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/07/firefoxgoogle-chrome.html&quot;&gt;ChromeStatusbarModoki.uc.js&lt;/a&gt;           &lt;br /&gt;
Google Chrome風のステータスバーを追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs2.html&quot; target=&quot;_blank&quot;&gt;closeBlankTabOnCloseDownloadDialog.uc.js&lt;/a&gt;           &lt;br /&gt;
ファイルのダウンロード時に表示される空白タブを自動的に閉じる。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=302&quot; target=&quot;_blank&quot;&gt;dragimage.uc.js&lt;/a&gt;           &lt;br /&gt;
画像をドラッグしてスクルールできるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=225&quot; target=&quot;_blank&quot;&gt;enabledMainMenuToMove.uc.js&lt;/a&gt;           &lt;br /&gt;
メインメニューをドラッグアンドドロップで移動できるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://d.hatena.ne.jp/Griever/20081215/1229353082&quot; target=&quot;_blank&quot;&gt;MedleyMenu.uc.js&lt;/a&gt;           &lt;br /&gt;
メニューバーを一纏めにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs3.html&quot; target=&quot;_blank&quot;&gt;MenubarForcus.uc.js&lt;/a&gt;           &lt;br /&gt;
Flashにフォーカスがある時サイドバーのスクロールをできるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ne.jp/asahi/nanto/moon/2006/12/31/middle-click-and-go.uc.js&quot; target=&quot;_blank&quot;&gt;MiddleClickandGo.uc.js&lt;/a&gt;           &lt;br /&gt;
サーチバー、ロケーションバーを中クリックするとクリップボードの値を読み込んで検索する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.xuldev.org/misc/ucjs.php?lang=ja#MouseGestures&quot; target=&quot;_blank&quot;&gt;MouseGestures.uc.js&lt;/a&gt;           &lt;br /&gt;
軽量マウスジェスチャを追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://d.hatena.ne.jp/zuzu_sion/20091009/1255167787&quot; target=&quot;_blank&quot;&gt;refererChanger.uc.js&lt;/a&gt;           &lt;br /&gt;
リファラーを柔軟に書き換える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://firefox.geckodev.org/index.php?userChrome.js#p3e08575&quot; target=&quot;_blank&quot;&gt;SelectSearchInTextArea.uc.js&lt;/a&gt;           &lt;br /&gt;
テキストエリア内でドラッグした文字列を’Googleで検索’ができるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=88&quot; target=&quot;_blank&quot;&gt;smartmiddleclick.uc.js&lt;/a&gt;           &lt;br /&gt;
JavaScriptリンクを中クリックで新規タブに開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loda.jp/script/?id=124&quot; target=&quot;_blank&quot;&gt;StopAddonUpdate.uc.js&lt;/a&gt;           &lt;br /&gt;
指定したアドオンの更新を無効にする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://mozilla.zeniko.ch/userchrome.js.html&quot; target=&quot;_blank&quot;&gt;TextareaSizers.uc.js&lt;/a&gt;           &lt;br /&gt;
テキストエリアの大きさを変更できるようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://space.geocities.jp/alice0775/userChromejs.html&quot; target=&quot;_blank&quot;&gt;TextLink.uc.js&lt;/a&gt;           &lt;br /&gt;
リンクの貼られていないURLや足りていない文字列を補完して、ダブルクリックで新規タブに開く。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://firefox.geckodev.org/index.php?userChrome.js#q156be98&quot; target=&quot;_blank&quot;&gt;userContent.js&lt;/a&gt;           &lt;br /&gt;
Greasemonkeyとほぼ同じ機能を実装する。           &lt;ul&gt;&lt;li&gt;AnalyticsDisabler.user.js              &lt;br /&gt;
検索などを行った際に検索結果を追跡できないようにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/57679&quot; target=&quot;_blank&quot;&gt;GoogleSearch-RemoveRedirectFromLinks.user.js&lt;/a&gt;               &lt;br /&gt;
Google検索のリダイレクトを消去して高速化する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2009/10/googlegreasemonkey.html&quot;&gt;GoogleThumbnails.user.js&lt;/a&gt;               &lt;br /&gt;
Googleの検索結果にサムネイルを追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gist.github.com/216105&quot; target=&quot;_blank&quot;&gt;YAjaro.user.js&lt;/a&gt;               &lt;br /&gt;
Googleの検索結果でクリップ系サイトをクリックしても、直接おおもとの記事ページにジャンプする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2010/01/hatena-and-delicious-count-with-google.html&quot;&gt;HatenaAndDeliciousCountWithGoogle.user.js&lt;/a&gt;               &lt;br /&gt;
Googleの検索結果にはてなブックマークとdeliciousのブックマーク数を表示する &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://other-webscrap.blogspot.com/2010/01/autopagerize-041-mod-usercontentjs.html&quot;&gt;AutoPagerize.user.js (userContent.js用)&lt;/a&gt;               &lt;br /&gt;
表示しているページに自動で次のページを読み込む。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/55178&quot; target=&quot;_blank&quot;&gt;AutoPagerizeSwitcher.user.js&lt;/a&gt;               &lt;br /&gt;
AutoPagerizeのon/offをキーボードで切り換える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://shiftingpixel.com/lightbox/&quot; target=&quot;_blank&quot;&gt;GreasedLightbox.user.js&lt;/a&gt;               &lt;br /&gt;
リンクされた画像を新規タブで開かずにオーバーレイ表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/61079&quot; target=&quot;_blank&quot;&gt;AmazonPopupImageScript.user.js&lt;/a&gt;               &lt;br /&gt;
Amazonサイト内の画像をポップアップする &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/9151&quot; target=&quot;_blank&quot;&gt;coralized-youtube.user.js&lt;/a&gt;               &lt;br /&gt;
キャッシュサーバーを利用してYoutubeの動画のロードを速くする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/35179&quot; target=&quot;_blank&quot;&gt;DeliciousThumbnail&amp;amp;Favicon.user.js&lt;/a&gt;               &lt;br /&gt;
deliciousにサムネイル・ファビコンなどを追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fg-180.katamayu.net/archives/2007/03/08/213055&quot; target=&quot;_blank&quot;&gt;FixRecommendedTags.user.js&lt;/a&gt;               &lt;br /&gt;
はてなブックマークのタグの英語の大文字・小文字を同一化する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/57994&quot; target=&quot;_blank&quot;&gt;FlashQualityChanger.user.js&lt;/a&gt;               &lt;br /&gt;
Flashの画質を自動で変更する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/58162&quot; target=&quot;_blank&quot;&gt;Nicoiframereplace.user.js&lt;/a&gt;               &lt;br /&gt;
ニコニコ動画のiframeをニコネイルの画像に置換する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://itmst.blog71.fc2.com/blog-entry-175.html&quot; target=&quot;_blank&quot;&gt;nicoscroll2.user.js&lt;/a&gt;               &lt;br /&gt;
ニコニコ動画でプレーヤー部分まで自動スクロールする &lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/12958&quot; target=&quot;_blank&quot;&gt;PixivAjaxFavorite.user.js&lt;/a&gt;               &lt;br /&gt;
pixivの絵の上に、絵または作者の公開・非公開ブックマークのボタンを追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/25404&quot; target=&quot;_blank&quot;&gt;PixivImageEnlarger.user.js&lt;/a&gt;               &lt;br /&gt;
pixivの絵を自動で原寸サイズに切り替える。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/45192&quot; target=&quot;_blank&quot;&gt;PixivImagesDirectLink.user.js&lt;/a&gt;               &lt;br /&gt;
pixivのサムネイル周辺にフルサイズへのリンクをつける。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www14.atwiki.jp/pixivhacker/pages/17.html&quot; target=&quot;_blank&quot;&gt;PixivViewComment.user.js&lt;/a&gt;               &lt;br /&gt;
pixivのコメントを自動で表示する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/39167&quot; target=&quot;_blank&quot;&gt;YouTubeHDSuite.user.js&lt;/a&gt;               &lt;br /&gt;
YouTubeの動画を自動で高画質に切り替え、ダウンロードリンクを追加する。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/39136&quot; target=&quot;_blank&quot;&gt;2chURLModify.user.js&lt;/a&gt;               &lt;br /&gt;
2ch等の掲示板の画像URLをサムネイル表示に切り替える。 &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/5846&quot; target=&quot;_blank&quot;&gt;Yet Another Smooth Scrolling&lt;/a&gt;       &lt;br /&gt;
スクロールをスムーズにする。 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/13320/&quot; target=&quot;_blank&quot;&gt;検索ボックス自動入力（学習機能付き）&lt;/a&gt;       &lt;br /&gt;
サーチバーとサイトのサーチフォームを同期する。 &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;前と比べて大きな変更点は、タブの管理をTab Mix plusからTabberwockyとDomainTabに変えたこと。&lt;/p&gt;&lt;p&gt;Tab Mix plusはそれ一つでほとんどのタブ設定ができるほど多機能だが、それだけ容量も大きく私には余分な機能が多かった。また、新しく入れたGroup/Sort Tabsと相性が悪く、タブの挙動がおかしいなどの不満もあった。それでも手放せなかったのは、リンク先のドメインを判別して新しいタブで開いてくれる機能があったからだ。&lt;/p&gt;&lt;p&gt;だがDomainTabでその機能が実装できるようになったので、タブの管理には軽いと評判のTabberwockyに変更した。こちらはGroup/Sort Tabsでのタブの挙動もちゃんと制御でき、タブの切り替えの際にあった一瞬のブランクも解消された。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;他には、Orbit Downloader Firefox IntegrationはOrbit 2.8.17からOneClick YouTube Downloaderというアドオンに統合された。アップデートして入れて見たところ、他のアドオンが正常に動作しないなどの不具合がでたので、Orbit 2.8.16までダウングレードして入れなおした。&lt;/p&gt;&lt;p&gt;また、Boss KeyはMinimizeToTrayの代わりだが、不具合(タスクトレイ収納時に右クリックが効かない)もなくグローバルホットキーも設定して使えるので、ほぼ上位互換のようなもの。その上ファイルサイズはMinimizeToTrayよりも小さいのだから、そちらを使っている人には是非お勧めしたい。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/firefox-36.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/6776740338749888783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/6776740338749888783'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/firefox-36.html' title='Firefox 3.6 現在の設定・アドオン'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia7nXuDhtvT4sViiEdmJnzqZdeWcm6r8FowGoAmzW34j_Qe3uUSY3czof8JqCndQMY-cxKOiCUUfKiv8oBgwhj9OfXIDE2soTLF4VME31uOldTStGjuGwXkVTO1QGWscufQGMc1klDS23N/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-8343582200523037634</id><published>2010-01-09T19:30:00.008+09:00</published><updated>2010-01-23T05:36:56.515+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="userCrome.js"/><title type='text'>AutoPagerize 0.41 mod (userContent.js用)</title><content type='html'>&lt;p&gt;Firefox 3.6 RC1が出ていたので一足速くアップデートしたが、AutoPagerizeが動かなくなってしまった。私はGreasemonkeyではなくuserContent,jsを使っており、バージョンも少し前の0.35 modを使っていたので、&lt;a href=&quot;http://autopagerize.net/&quot; target=&quot;_blank&quot;&gt;AutoPagerize&lt;/a&gt;はそのままでは使えない。&lt;/p&gt;&lt;p&gt;丁度いい機会なので、AutoPagerize 0.41をuserContent.js用に調整した。また、スクロール時の動作も高速化してある。(&lt;a href=&quot;http://phenotype.jpn.org/blog/archives/25&quot; target=&quot;_blank&quot;&gt;AutoPagerizeでスクロールが重くなるのを回避する&lt;/a&gt;)&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;// ==UserScript==
// @name           AutoPagerize
// @namespace      http://swdyh.yu.to/
// @description    loading next page and inserting into current page.
// @include        http://*
// @include        https://*
// @exclude        https://mail.google.com/*
// @exclude        http://b.hatena.ne.jp/*
// ==/UserScript==
//
// auther:  swdyh edited by other http://other-webscrap.blogspot.com/
// version: 0.0.41 mod
//
// this script based on
// GoogleAutoPager(http://la.ma.la/blog/diary_200506231749.htm) and
// estseek autopager(http://la.ma.la/blog/diary_200601100209.htm).
// thanks to ma.la.
//
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//

var URL = &amp;#039;http://autopagerize.net/&amp;#039;
var VERSION = &amp;#039;0.0.41 mod&amp;#039;
var DEBUG = false
var AUTO_START = true
var CACHE_EXPIRE = 24 * 60 * 60 * 1000
var BASE_REMAIN_HEIGHT = 400
var FORCE_TARGET_WINDOW = getPref(&amp;#039;force_target_window&amp;#039;, true)
var USE_COUNTER = true
var XHR_TIMEOUT = 30 * 1000
var SITEINFO_IMPORT_URLS = [
    &amp;#039;http://wedata.net/databases/AutoPagerize/items.json&amp;#039;,
    &amp;#039;http://utatane.appjet.net/databases/AutoPagerize/items.json&amp;#039;,
    &amp;#039;http://ss-o.net/databases/AutoPagerize/items.json&amp;#039;
]
var COLOR = {
    on: &amp;#039;#0f0&amp;#039;,
    off: &amp;#039;#ccc&amp;#039;,
    loading: &amp;#039;#0ff&amp;#039;,
    terminated: &amp;#039;#00f&amp;#039;,
    error: &amp;#039;#f0f&amp;#039;
}
var SITEINFO = [
    /* sample
    {
        url:          &amp;#039;http://(.*).google.+/(search).+&amp;#039;,
        nextLink:     &amp;#039;id(&amp;quot;navbar&amp;quot;)//td[last()]/a&amp;#039;,
        pageElement:  &amp;#039;//div[@id=&amp;quot;res&amp;quot;]/div&amp;#039;,
        exampleUrl:   &amp;#039;http://www.google.com/search?q=nsIObserver&amp;#039;,
    },
    */
    /* template
    {
        url:          &amp;#039;&amp;#039;,
        nextLink:     &amp;#039;&amp;#039;,
        pageElement:  &amp;#039;&amp;#039;,
        exampleUrl:   &amp;#039;&amp;#039;,
    },
    */
]
var MICROFORMAT = {
    url:          &amp;#039;.*&amp;#039;,
    nextLink:     &amp;#039;//a[@rel=&amp;quot;next&amp;quot;] | //link[@rel=&amp;quot;next&amp;quot;]&amp;#039;,
    insertBefore: &amp;#039;//*[contains(@class, &amp;quot;autopagerize_insert_before&amp;quot;)]&amp;#039;,
    pageElement:  &amp;#039;//*[contains(@class, &amp;quot;autopagerize_page_element&amp;quot;)]&amp;#039;,
}

var AutoPager = function(info) {
    this.pageNum = 1
    this.info = info
    this.state = AUTO_START ? &amp;#039;enable&amp;#039; : &amp;#039;disable&amp;#039;
    var self = this
    var url = this.getNextURL(info.nextLink, document, location.href)

    if ( !url ) {
        debug(&amp;quot;getNextURL returns null.&amp;quot;, info.nextLink)
        return
    }
    if (info.insertBefore) {
        this.insertPoint = getFirstElementByXPath(info.insertBefore)
    }

    if (!this.insertPoint) {
        var lastPageElement = getElementsByXPath(info.pageElement).pop()
        if (lastPageElement) {
            this.insertPoint = lastPageElement.nextSibling ||
                lastPageElement.parentNode.appendChild(document.createTextNode(&amp;#039; &amp;#039;))
        }
    }

    if (!this.insertPoint) {
        debug(&amp;quot;insertPoint not found.&amp;quot;, lastPageElement, info.pageElement)
        return
    }

    this.requestURL = url
    this.loadedURLs = {}
    this.loadedURLs[location.href] = true
    var toggle = function() {self.stateToggle()}
    this.toggle = toggle
    GM_registerMenuCommand(&amp;#039;AutoPagerize - on/off&amp;#039;, toggle)
    this.scroll= function() {self.icon.style.opacity = 0; self.onScroll() }
    window.addEventListener(&amp;quot;scroll&amp;quot;, this.scroll, true)

    if (isFirefoxExtension()) {
        var div = document.createElement(&amp;quot;div&amp;quot;)
        div.setAttribute(&amp;#039;id&amp;#039;, &amp;#039;autopagerize_icon&amp;#039;)
        div.style.display = &amp;#039;none&amp;#039;
        document.body.appendChild(div)
        this.icon = div
    }
    else {
        this.initIcon()
        this.initHelp()
        this.icon.addEventListener(&amp;quot;mouseover&amp;quot;, function() {
            self.viewHelp() }, true)
    }

    var scrollHeight = getScrollHeight()
    var bottom = getElementPosition(this.insertPoint).top ||
        this.getPageElementsBottom() ||
        (Math.round(scrollHeight * 0.8))
    this.remainHeight = scrollHeight - bottom + BASE_REMAIN_HEIGHT
    this.onScroll()

    var that = this
    document.addEventListener(&amp;#039;AutoPagerizeToggleRequest&amp;#039;, function() {
        that.toggle()
    }, false)
    document.addEventListener(&amp;#039;AutoPagerizeUpdateIconRequest&amp;#039;, function() {
        that.updateIcon()
    }, false)
    that.updateIcon()
}

AutoPager.prototype.getPageElementsBottom = function() {
    try {
        var elem = getElementsByXPath(this.info.pageElement).pop()
        return getElementBottom(elem)
    }
    catch(e) {}
}

AutoPager.prototype.initHelp = function() {
    var helpDiv = document.createElement(&amp;#039;div&amp;#039;)
    helpDiv.setAttribute(&amp;#039;id&amp;#039;, &amp;#039;autopagerize_help&amp;#039;)
    helpDiv.setAttribute(&amp;#039;style&amp;#039;, &amp;#039;padding:5px;position:absolute;&amp;#039; +
                     &amp;#039;top:-300px;right:3px;font-size:10px;&amp;#039; +
                     &amp;#039;background:#fff;color:#000;border:1px solid #ccc;&amp;#039; +
                     &amp;#039;z-index:256;text-align:left;font-weight:normal;&amp;#039; +
                     &amp;#039;line-height:120%;font-family:verdana;&amp;#039;)

    var toggleDiv = document.createElement(&amp;#039;div&amp;#039;)
    toggleDiv.setAttribute(&amp;#039;style&amp;#039;, &amp;#039;margin:0 0 0 50px;&amp;#039;)
    var a = document.createElement(&amp;#039;a&amp;#039;)
    a.setAttribute(&amp;#039;class&amp;#039;, &amp;#039;autopagerize_link&amp;#039;)
    a.innerHTML = &amp;#039;on/off&amp;#039;
    a.href = &amp;#039;javascript:void(0)&amp;#039;
    var self = this
    var toggle = function() {
        self.stateToggle()
        helpDiv.style.top = &amp;#039;-200px&amp;#039;
    }
    a.addEventListener(&amp;#039;click&amp;#039;, toggle, false)
    toggleDiv.appendChild(a)

    var s = &amp;#039;&amp;lt;div style=&amp;quot;width:100px; float:left;&amp;quot;&amp;gt;&amp;#039;
    for (var i in COLOR) {
        s += &amp;#039;&amp;lt;div style=&amp;quot;float:left;width:1em;height:1em;&amp;#039; +
            &amp;#039;margin:0 3px;background-color:&amp;#039; + COLOR[i] + &amp;#039;;&amp;#039; +
            &amp;#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;margin:0 3px&amp;quot;&amp;gt;&amp;#039; + i + &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;
    }
    s += &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;
    var colorDiv = document.createElement(&amp;#039;div&amp;#039;)
    colorDiv.innerHTML = s
    helpDiv.appendChild(colorDiv)
    helpDiv.appendChild(toggleDiv)

    var versionDiv = document.createElement(&amp;#039;div&amp;#039;)
    versionDiv.setAttribute(&amp;#039;style&amp;#039;, &amp;#039;clear:both;&amp;#039;)
    versionDiv.innerHTML = &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039; + URL +
        &amp;#039;&amp;quot;&amp;gt;AutoPagerize&amp;lt;/a&amp;gt; ver &amp;#039; + VERSION
    helpDiv.appendChild(versionDiv)
    document.body.appendChild(helpDiv)

    var proc = function(e) {
        var c_style = document.defaultView.getComputedStyle(helpDiv, &amp;#039;&amp;#039;)
        var s = [&amp;#039;top&amp;#039;, &amp;#039;left&amp;#039;, &amp;#039;height&amp;#039;, &amp;#039;width&amp;#039;].map(function(i) {
            return parseInt(c_style.getPropertyValue(i)) })
        if (window.scrollX + e.clientX &amp;lt; s[1] || window.scrollX + e.clientX &amp;gt; (s[1] +s[3] + 11) ||
            window.scrollY + e.clientY &amp;lt; s[0] || window.scrollY + e.clientY &amp;gt; (s[0] +s[2] + 11)) {
                helpDiv.style.top = &amp;#039;-300px&amp;#039;
        }
    }
    helpDiv.addEventListener(&amp;#039;mouseout&amp;#039;, proc, false)
    this.helpLayer = helpDiv
    GM_addStyle(&amp;#039;#autopagerize_help a { color: #0f0; text-decoration: underline;}&amp;#039;)
}

AutoPager.prototype.viewHelp = function() {
    this.helpLayer.style.top = window.scrollY + 3 + &amp;#039;px&amp;#039;
    this.helpLayer.style.left = window.innerWidth + window.scrollX -300 + &amp;#039;px&amp;#039;;
}

AutoPager.prototype.onScroll = function() {
    if(this.IndicatorTimer) clearTimeout(this.IndicatorTimer);
    var self = this;
    self.IndicatorTimer = window.setTimeout(function(window){
      self.icon.style.top = window.scrollY + 3 + &amp;#039;px&amp;#039;
      self.icon.style.left = window.innerWidth + window.scrollX -30 + &amp;#039;px&amp;#039;;
      self.icon.style.opacity = 1;
    },300,window);

    var scrollHeight = Math.max(document.documentElement.scrollHeight,
                                document.body.scrollHeight)
    var remain = scrollHeight - window.innerHeight - window.scrollY
    if (this.state == &amp;#039;enable&amp;#039; &amp;amp;&amp;amp; remain &amp;lt; this.remainHeight) {
      if (/www\.google\.(com|co\.jp)\/search/.test(document.location.href)){
        if (this.waitTimer)
          clearTimeout(this.waitTimer);
        if (!this.LastTime){
          var wait = 0;
        } else {
          var wait = (new Date().getTime() - self.LastTime &amp;gt; 1000) ? 0 : 1000;
        }
        if (wait == 0)
          (function(self){self.request();self.LastTime = new Date().getTime();})(this);
        else
          this.waitTimer = setTimeout(function(self){self.request();self.LastTime = new Date().getTime();},wait, this);
      }else{
        this.request()
      }
    }
}

AutoPager.prototype.stateToggle = function() {
    if (this.state == &amp;#039;enable&amp;#039;) {
        this.disable()
    }
    else {
        this.enable()
    }
}

AutoPager.prototype.enable = function() {
    this.state = &amp;#039;enable&amp;#039;
    this.updateIcon()
}

AutoPager.prototype.disable = function() {
    this.state = &amp;#039;disable&amp;#039;
    this.updateIcon()
}

AutoPager.prototype.updateIcon = function(state) {
    var st = state || this.state
    var rename = {&amp;#039;enable&amp;#039;: &amp;#039;on&amp;#039;, &amp;#039;disable&amp;#039;: &amp;#039;off&amp;#039; }
    if (rename[st]) {
        st = rename[st]
    }
    var color = COLOR[st]
    if (color) {
        this.icon.style.background = color
        if (isFirefoxExtension()) {
            chlorine.statusBar.update(color, location.href)
        }
    }
}

AutoPager.prototype.request = function() {
    if (!this.requestURL || this.lastRequestURL == this.requestURL) {
        return
    }

    if (!this.canHandleCrossDomainRequest()) {
        return
    }

    this.lastRequestURL = this.requestURL
    var self = this
    var mime = &amp;#039;text/html; charset=&amp;#039; + document.characterSet
    var headers = {}
    if (isSameDomain(this.requestURL)) {
        headers.Cookie = document.cookie
    }
    var opt = {
        method: &amp;#039;get&amp;#039;,
        url: this.requestURL,
        headers: headers,
        overrideMimeType: mime,
        onerror: this.error,
        onload: function(res) {
            self.requestLoad.apply(self, [res])
        }
    }
    AutoPager.requestFilters.forEach(function(i) { i(opt) }, this)
    this.showLoading(true)
    GM_xmlhttpRequest(opt)
}

AutoPager.prototype.showLoading = function(sw) {
    if (sw) {
        this.updateIcon(&amp;#039;loading&amp;#039;)
    }
    else {
        this.updateIcon(&amp;#039;enable&amp;#039;)
    }
}

AutoPager.prototype.requestLoad = function(res) {
    if (!this.canHandleCrossDomainRequest()) {
        return
    }

    AutoPager.responseFilters.forEach(function(i) {
        i(res, this.requestURL)
    }, this)

    if (res.finalUrl) {
        this.requestURL = res.finalUrl
    }

    var t = res.responseText
    var htmlDoc = createHTMLDocumentByString(t)
    AutoPager.documentFilters.forEach(function(i) {
        i(htmlDoc, this.requestURL, this.info)
    }, this)
    try {
        var page = getElementsByXPath(this.info.pageElement, htmlDoc)
        var url = this.getNextURL(this.info.nextLink, htmlDoc, this.requestURL)
    }
    catch(e){
        log(e)
        this.error()
        return
    }

    if (!page || page.length &amp;lt; 1 ) {
        debug(&amp;#039;pageElement not found.&amp;#039; , this.info.pageElement)
        this.terminate()
        return
    }

    if (this.loadedURLs[this.requestURL]) {
        debug(&amp;#039;page is already loaded.&amp;#039;, this.requestURL, this.info.nextLink)
        this.terminate()
        return
    }

    this.loadedURLs[this.requestURL] = true
    page = this.addPage(htmlDoc, page)
    AutoPager.filters.forEach(function(i) {
        i(page)
    })
    this.requestURL = url
    this.showLoading(false)
    this.onScroll()
    if (!url) {
        debug(&amp;#039;nextLink not found.&amp;#039;, this.info.nextLink, htmlDoc)
        this.terminate()
    }
    var ev = document.createEvent(&amp;#039;Event&amp;#039;)
    ev.initEvent(&amp;#039;GM_AutoPagerizeNextPageLoaded&amp;#039;, true, false)
    document.dispatchEvent(ev)
}

AutoPager.prototype.addPage = function(htmlDoc, page) {
    var HTML_NS  = &amp;#039;http://www.w3.org/1999/xhtml&amp;#039;
    var hr = document.createElementNS(HTML_NS, &amp;#039;hr&amp;#039;)
    var p  = document.createElementNS(HTML_NS, &amp;#039;p&amp;#039;)
    hr.setAttribute(&amp;#039;class&amp;#039;, &amp;#039;autopagerize_page_separator&amp;#039;)
    p.setAttribute(&amp;#039;class&amp;#039;, &amp;#039;autopagerize_page_info&amp;#039;)
    var self = this

    if (page[0] &amp;amp;&amp;amp; page[0].tagName == &amp;#039;TR&amp;#039;) {
        var insertParent = this.insertPoint.parentNode
        var colNodes = getElementsByXPath(&amp;#039;child::tr[1]/child::*[self::td or self::th]&amp;#039;, insertParent)

        var colums = 0
        for (var i = 0, l = colNodes.length; i &amp;lt; l; i++) {
            var col = colNodes[i].getAttribute(&amp;#039;colspan&amp;#039;)
            colums += parseInt(col, 10) || 1
        }
        var td = document.createElement(&amp;#039;td&amp;#039;)
        // td.appendChild(hr)
        td.appendChild(p)
        var tr = document.createElement(&amp;#039;tr&amp;#039;)
        td.setAttribute(&amp;#039;colspan&amp;#039;, colums)
        tr.appendChild(td)
        insertParent.insertBefore(tr, this.insertPoint)
    }
    else {
        this.insertPoint.parentNode.insertBefore(hr, this.insertPoint)
        this.insertPoint.parentNode.insertBefore(p, this.insertPoint)
    }

    p.innerHTML = &amp;#039;page: &amp;lt;a class=&amp;quot;autopagerize_link&amp;quot; href=&amp;quot;&amp;#039; +
        this.requestURL.replace(/&amp;amp;/g, &amp;#039;&amp;amp;amp;&amp;#039;) + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + (++this.pageNum) + &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;
    return page.map(function(i) {
        var pe = document.importNode(i, true)
        self.insertPoint.parentNode.insertBefore(pe, self.insertPoint)
        var ev = document.createEvent(&amp;#039;MutationEvent&amp;#039;)
        ev.initMutationEvent(&amp;#039;AutoPagerize_DOMNodeInserted&amp;#039;, true, false,
                             self.insertPoint.parentNode, null,
                             self.requestURL, null, null)
        pe.dispatchEvent(ev)
        return pe
    })
}

AutoPager.prototype.initIcon = function() {
    var div = document.createElement(&amp;quot;div&amp;quot;)
    div.setAttribute(&amp;#039;id&amp;#039;, &amp;#039;autopagerize_icon&amp;#039;)
    with (div.style) {
        fontSize   = &amp;#039;12px&amp;#039;
        position   = &amp;#039;absolute&amp;#039;
        top        = &amp;#039;3px&amp;#039;
        right      = &amp;#039;3px&amp;#039;
        background = COLOR[&amp;#039;on&amp;#039;]
        color      = &amp;#039;#fff&amp;#039;
        width = &amp;#039;10px&amp;#039;
        height = &amp;#039;10px&amp;#039;
        zIndex = &amp;#039;255&amp;#039;
        if (this.state != &amp;#039;enable&amp;#039;) {
            background = COLOR[&amp;#039;off&amp;#039;]
        }
    }
    document.body.appendChild(div)
    this.icon = div
}

AutoPager.prototype.getNextURL = function(xpath, doc, url) {
    var nextLink = getFirstElementByXPath(xpath, doc)
    if (nextLink) {
        var nextValue = nextLink.href || nextLink.action || nextLink.value
        if (nextValue.match(/^http(s)?:/)) {
            return nextValue
        }
        else {
            var base = getFirstElementByXPath(&amp;#039;//base[@href]&amp;#039;, doc)
            return resolvePath(nextValue, (base ? base.href : url))
        }
    }
}

AutoPager.prototype.canHandleCrossDomainRequest = function() {
    if (!supportsFinalUrl()) {
        if (!isSameDomain(this.requestURL)) {
            this.error()
            return false
        }
    }
    return true
}

AutoPager.prototype.terminate = function() {
    this.updateIcon(&amp;#039;terminated&amp;#039;)
    window.removeEventListener(&amp;#039;scroll&amp;#039;, this.scroll, true)
    var self = this
    setTimeout(function() {
        self.updateIcon(&amp;#039;disable&amp;#039;)
        self.icon.parentNode.removeChild(self.icon)
    }, 1500)
}

AutoPager.prototype.error = function() {
    this.updateIcon(&amp;#039;error&amp;#039;)
    window.removeEventListener(&amp;#039;scroll&amp;#039;, this.scroll, true)
}

AutoPager.documentFilters = []
AutoPager.requestFilters = []
AutoPager.responseFilters = []
AutoPager.filters = []

function Counter() {}
Counter.DATA_KEY = &amp;#039;counter_data&amp;#039;

Counter.get = function() {
    return eval(GM_getValue(Counter.DATA_KEY)) || {}
}

Counter.set = function(val) {
    return GM_setValue(Counter.DATA_KEY, uneval(val))
}

Counter.up = function() {
    var date = new Date()
    var date_y = date.getFullYear()
    var date_m = date.getMonth() + 1
    var date_d = date.getDate()
    var counter_data = Counter.get()
    counter_data[date_y] = counter_data[date_y] || {}
    counter_data[date_y][date_m] = counter_data[date_y][date_m] || {}
    counter_data[date_y][date_m][date_d] =
        (counter_data[date_y][date_m][date_d] || 0) + 1
    Counter.set(counter_data)
    return counter_data[date_y][date_m][date_d]
}

Counter.reset = function() {
    return Counter.set({})
}

Counter.total = function() {
    var total = 0
    var counter_data = Counter.get()
    for (var year in counter_data) {
        for (var month in counter_data[year]) {
            for (var date in counter_data[year][month]) {
                total += counter_data[year][month][date]
            }
        }
    }
    return total
}

Counter.view = function() {
    var div = Counter.layer()
    var couter_data = Counter.get()
    var comp = function(a, b) { return b - a }
    Counter.each(couter_data,function(year, year_data) {
        Counter.each(year_data, function(month, month_data) {
            var img = document.createElement(&amp;#039;img&amp;#039;)
            img.src = Counter.chart(year, month, month_data)
            div.appendChild(img)
        }, comp)
    }, comp)
    window.scrollTo(0, 0)
}

Counter.layer = function() {
    var id = &amp;#039;autopagerize_count_chart&amp;#039;
    var e = document.getElementById(id)
    if (e) {
        e.parentNode.removeChild(e)
    }
    var div = document.createElement(&amp;#039;div&amp;#039;)
    div.id = id
    div.style.position = &amp;#039;absolute&amp;#039;
    div.style.top = &amp;#039;0px&amp;#039;
    div.style.left = &amp;#039;0px&amp;#039;
    div.style.width = &amp;#039;100%&amp;#039;
    div.style.border = &amp;#039;1px solid #ccc&amp;#039;
    div.style.backgroundColor = &amp;#039;#fff&amp;#039;
    div.style.zIndex = &amp;#039;100&amp;#039;
    document.body.appendChild(div)
    var h1 = document.createElement(&amp;#039;h1&amp;#039;)
    h1.appendChild(document.createTextNode(&amp;#039;AutoPagerize Count Chart: &amp;#039; + Counter.total()))
    div.appendChild(h1)
    return div
}

Counter.each = function(obj, func, comp) {
    var ks = []
    for (var k in obj) {
        ks.push(k)
    }
    if (comp) {
        ks.sort(comp)
    }
    for (var i = 0; i &amp;lt; ks.length; i++) {
        func(ks[i], obj[ks[i]])
    }
}

Counter.chart = function(year, month, month_data) {
    var max = 0
    var total = 0
    var x_label = []
    var val = []
    for (var i = 1; i &amp;lt;= 31; i++) {
        var v = month_data[i] || 0
        x_label.push(i)
        val.push(v)
        max = Math.max(max, v)
        total += v
    }
    var range = Counter.ceil(max)
    var y_label = []
    for (var i = 0; i &amp;lt;= 10; i++) {
        y_label.push(range / 10 * i)
    }
    var xl = function(num, list) {
        return num + &amp;#039;:|&amp;#039; + list.join(&amp;#039;|&amp;#039;) + &amp;#039;|&amp;#039;
    }
    var url = &amp;#039;http://chart.apis.google.com/chart?&amp;#039; +
        &amp;#039;cht=bvs&amp;amp;chs=500x250&amp;amp;chbh=10&amp;amp;chxt=x,y,x&amp;amp;chco=adff2f&amp;#039; +
        &amp;#039;&amp;amp;chd=t:&amp;#039; + val.join(&amp;#039;,&amp;#039;) +
        &amp;#039;&amp;amp;chxl=&amp;#039; + xl(0, x_label) + xl(1, y_label) + xl(2, [&amp;#039;  total: &amp;#039; + total]) +
        &amp;#039;&amp;amp;chds=0,&amp;#039; + (range * 1.1) +
        &amp;#039;&amp;amp;chtt=&amp;#039; + year + &amp;#039;/&amp;#039; + month
    return url
}

Counter.ceil = function(val) {
    var n = 1
    var limit = 100
    for (var i = 0; i &amp;lt; limit; i++) {
        if (n &amp;gt; val) {
            return n
        }
        n = n * 5
        if (n &amp;gt; val) {
            return n
        }
        n = n * 2
    }
}

if (USE_COUNTER) {
    GM_registerMenuCommand(&amp;#039;AutoPagerize - count chart&amp;#039;, Counter.view)
    AutoPager.documentFilters.push(function() {
        Counter.up()
    })
}


var parseInfo = function(str) {
    var lines = str.split(/\r\n|\r|\n/)
    var re = /(^[^:]*?):(.*)$/
    var strip = function(str) {
        return str.replace(/^\s*/, &amp;#039;&amp;#039;).replace(/\s*$/, &amp;#039;&amp;#039;)
    }
    var info = {}
    for (var i = 0; i &amp;lt; lines.length; i++) {
        if (lines[i].match(re)) {
            info[RegExp.$1] = strip(RegExp.$2)
        }
    }
    var isValid = function(info) {
        var infoProp = [&amp;#039;url&amp;#039;, &amp;#039;nextLink&amp;#039;, &amp;#039;pageElement&amp;#039;]
        for (var i = 0; i &amp;lt; infoProp.length; i++) {
            if (!info[infoProp[i]]) {
                return false
            }
        }
        return true
    }
    return isValid(info) ? info : null
}
var launchAutoPager = function(list) {
    if (list.length == 0) {
        return
    }
    for (var i = 0; i &amp;lt; list.length; i++) {
        try {
            if (ap) {
                return
            }
            else if (!location.href.match(list[i].url)) {
            }
            else if (!getFirstElementByXPath(list[i].nextLink)) {
                // FIXME microformats case detection.
                // limiting greater than 12 to filter microformats like SITEINFOs.
                if (list[i].url.length &amp;gt; 12 ) {
                    debug(&amp;quot;nextLink not found.&amp;quot;, list[i].nextLink)
                }
            }
            else if (!getFirstElementByXPath(list[i].pageElement)) {
                if (list[i].url.length &amp;gt; 12 ) {
                    debug(&amp;quot;pageElement not found.&amp;quot;, list[i].pageElement)
                }
            }
            else {
                ap = new AutoPager(list[i])
                return
            }
        }
        catch(e) {
            log(e)
            continue
        }
    }
}
var clearCache = function() {
    GM_setValue(&amp;#039;cacheInfo&amp;#039;, &amp;#039;&amp;#039;)
}
var getCache = function() {
    return eval(GM_getValue(&amp;#039;cacheInfo&amp;#039;)) || {}
}
var getCacheCallback = function(res, url) {
    if (res.status != 200) {
        return getCacheErrorCallback(url)
    }

    var info
    try {
        info = eval(res.responseText).map(function(i) { return i.data })
    }
    catch(e) {
        info = []
        var matched = false
        var hdoc = createHTMLDocumentByString(res.responseText)
        var textareas = getElementsByXPath(
            &amp;#039;//*[@class=&amp;quot;autopagerize_data&amp;quot;]&amp;#039;, hdoc)
        textareas.forEach(function(textarea) {
            var d = parseInfo(textarea.value)
            if (d) {
                info.push(d)
                if (!matched &amp;amp;&amp;amp; location.href.match(d.url)) {
                    matched = d
                }
            }
        })
    }
    if (info.length &amp;gt; 0) {
        info = info.filter(function(i) { return (&amp;#039;url&amp;#039; in i) })
        info.sort(function(a, b) { return (b.url.length - a.url.length) })

        var r_keys = [&amp;#039;url&amp;#039;, &amp;#039;nextLink&amp;#039;, &amp;#039;insertBefore&amp;#039;, &amp;#039;pageElement&amp;#039;]
        info = info.map(function(i) {
            var item = {}
            r_keys.forEach(function(key) {
                if (i[key]) {
                    item[key] = i[key]
                }
            })
            return item
        })

        cacheInfo[url] = {
            url: url,
            expire: new Date(new Date().getTime() + CACHE_EXPIRE),
            info: info
        }
        GM_setValue(&amp;#039;cacheInfo&amp;#039;, cacheInfo.toSource())
        launchAutoPager(info)
    }
    else {
        getCacheErrorCallback(url)
    }
}
var getCacheErrorCallback = function(url) {
    var expire = new Date(new Date().getTime() + CACHE_EXPIRE)
    if (cacheInfo[url]) {
        cacheInfo[url].expire = expire
        launchAutoPager(cacheInfo[url].info)
    }
    else {
        cacheInfo[url] = {
            url: url,
            expire: expire,
            info: []
        }
    }
    GM_setValue(&amp;#039;cacheInfo&amp;#039;, cacheInfo.toSource())
}

var linkFilter = function(doc, url) {
    var base = getFirstElementByXPath(&amp;#039;//base[@href]&amp;#039;, doc)
    var baseUrl = base ? base.href : url
    var isSameBase = isSameBaseUrl(location.href, baseUrl)
    if (!FORCE_TARGET_WINDOW &amp;amp;&amp;amp; isSameBase) {
        return
    }

    var anchors = getElementsByXPath(&amp;#039;descendant-or-self::a[@href]&amp;#039;, doc)
    anchors.forEach(function(i) {
        var attrHref = i.getAttribute(&amp;#039;href&amp;#039;)
        if (FORCE_TARGET_WINDOW &amp;amp;&amp;amp; !attrHref.match(/^#|^javascript:/) &amp;amp;&amp;amp;
            i.className.indexOf(&amp;#039;autopagerize_link&amp;#039;) &amp;lt; 0) {
            i.target = &amp;#039;_blank&amp;#039;
        }
        if (!isSameBase &amp;amp;&amp;amp; !attrHref.match(/^#|^\w+:/)) {
            i.href = resolvePath(i.href, baseUrl)
        }
    })

    if (!isSameBase) {
        var images = getElementsByXPath(&amp;#039;descendant-or-self::img&amp;#039;, doc)
        images.forEach(function(i) {
            i.src = resolvePath(i.getAttribute(&amp;#039;src&amp;#039;), baseUrl)
        })
    }
}
AutoPager.documentFilters.push(linkFilter)

fixResolvePath()

//if (typeof(window.AutoPagerize) == &amp;#039;undefined&amp;#039;) {
    window.AutoPagerize = {}
    window.AutoPagerize.addFilter = function(f) {
        AutoPager.filters.push(f)
    }
    window.AutoPagerize.addDocumentFilter = function(f) {
        AutoPager.documentFilters.push(f)
    }
    window.AutoPagerize.addResponseFilter = function(f) {
        AutoPager.responseFilters.push(f)
    }
    window.AutoPagerize.addRequestFilter = function(f) {
        AutoPager.requestFilters.push(f)
    }
    window.AutoPagerize.launchAutoPager = launchAutoPager

    var ev = document.createEvent(&amp;#039;Event&amp;#039;)
    ev.initEvent(&amp;#039;GM_AutoPagerizeLoaded&amp;#039;, true, false)
    document.dispatchEvent(ev)
//}

GM_registerMenuCommand(&amp;#039;AutoPagerize - clear cache&amp;#039;, clearCache)
var ap = null
launchAutoPager(SITEINFO)
var cacheInfo = getCache()
var xhrStates = {}
SITEINFO_IMPORT_URLS.forEach(function(i) {
    if (!cacheInfo[i] || cacheInfo[i].expire &amp;lt; new Date()) {
        var opt = {
            method: &amp;#039;get&amp;#039;,
            url: i,
            onload: function(res) {
                xhrStates[i] = &amp;#039;loaded&amp;#039;
                getCacheCallback(res, i)
            },
            onerror: function(res){
                xhrStates[i] = &amp;#039;error&amp;#039;
                getCacheErrorCallback(i)
            },
        }
        xhrStates[i] = &amp;#039;start&amp;#039;
        GM_xmlhttpRequest(opt)
        setTimeout(function() {
            if (xhrStates[i] == &amp;#039;start&amp;#039;) {
                getCacheErrorCallback(i)
            }
        }, XHR_TIMEOUT)
    }
    else {
        launchAutoPager(cacheInfo[i].info)
    }
})
launchAutoPager([MICROFORMAT])

// new google search sucks!
if (location.href.match(&amp;#039;^http://[^.]+\.google\.(?:[^.]{2,3}\.)?[^./]{2,3}/.*(&amp;amp;fp=)&amp;#039;)) {
    var to = location.href.replace(/&amp;amp;fp=.*/, &amp;#039;&amp;#039;)
    // console.log([location.href, to])
    location.href = to
}
return

// utility functions.
function createHTMLDocumentByString(str) {
    if (document.documentElement.nodeName != &amp;#039;HTML&amp;#039;) {
        return new DOMParser().parseFromString(str, &amp;#039;application/xhtml+xml&amp;#039;)
    }
    var html = strip_html_tag(str)
    var htmlDoc
    try {
        // We have to handle exceptions since Opera 9.6 throws
        // a NOT_SUPPORTED_ERR exception for |document.cloneNode(false)|
        // against the DOM 3 Core spec.
        htmlDoc = document.cloneNode(false)
        htmlDoc.appendChild(htmlDoc.importNode(document.documentElement, false))
    }
    catch(e) {
        htmlDoc = document.implementation.createDocument(null, &amp;#039;html&amp;#039;, null)
    }
    var fragment = createDocumentFragmentByString(html)
    try {
        fragment = htmlDoc.adoptNode(fragment)
    }
    catch(e) {
        fragment = htmlDoc.importNode(fragment, true)
    }
    htmlDoc.documentElement.appendChild(fragment)
    return htmlDoc
}

function getElementsByXPath(xpath, node) {
    var nodesSnapshot = getXPathResult(xpath, node,
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE)
    var data = []
    for (var i = 0; i &amp;lt; nodesSnapshot.snapshotLength; i++) {
        data.push(nodesSnapshot.snapshotItem(i))
    }
    return data
}

function getFirstElementByXPath(xpath, node) {
    var result = getXPathResult(xpath, node,
        XPathResult.FIRST_ORDERED_NODE_TYPE)
    return result.singleNodeValue
}

function getXPathResult(xpath, node, resultType) {
    var node = node || document
    var doc = node.ownerDocument || node
    var resolver = doc.createNSResolver(node.documentElement || node)
    // Use |node.lookupNamespaceURI(&amp;#039;&amp;#039;)| for Opera 9.5
    var defaultNS = node.lookupNamespaceURI(null)
    if (defaultNS) {
        const defaultPrefix = &amp;#039;__default__&amp;#039;
        xpath = addDefaultPrefix(xpath, defaultPrefix)
        var defaultResolver = resolver
        resolver = function (prefix) {
            return (prefix == defaultPrefix)
                ? defaultNS : defaultResolver.lookupNamespaceURI(prefix)
        }
    }
    return doc.evaluate(xpath, node, resolver, resultType, null)
}

function addDefaultPrefix(xpath, prefix) {
    const tokenPattern = /([A-Za-z_\u00c0-\ufffd][\w\-.\u00b7-\ufffd]*|\*)\s*(::?|\()?|(&amp;quot;.*?&amp;quot;|&amp;#039;.*?&amp;#039;|\d+(?:\.\d*)?|\.(?:\.|\d+)?|[\)\]])|(\/\/?|!=|[&amp;lt;&amp;gt;]=?|[\(\[|,=+-])|([@$])/g
    const TERM = 1, OPERATOR = 2, MODIFIER = 3
    var tokenType = OPERATOR
    prefix += &amp;#039;:&amp;#039;
    function replacer(token, identifier, suffix, term, operator, modifier) {
        if (suffix) {
            tokenType =
                (suffix == &amp;#039;:&amp;#039; || (suffix == &amp;#039;::&amp;#039; &amp;amp;&amp;amp;
                 (identifier == &amp;#039;attribute&amp;#039; || identifier == &amp;#039;namespace&amp;#039;)))
                ? MODIFIER : OPERATOR
        }
        else if (identifier) {
            if (tokenType == OPERATOR &amp;amp;&amp;amp; identifier != &amp;#039;*&amp;#039;) {
                token = prefix + token
            }
            tokenType = (tokenType == TERM) ? OPERATOR : TERM
        }
        else {
            tokenType = term ? TERM : operator ? OPERATOR : MODIFIER
        }
        return token
    }
    return xpath.replace(tokenPattern, replacer)
}

function createDocumentFragmentByString(str) {
    var range = document.createRange()
    range.setStartAfter(document.body)
    return range.createContextualFragment(str)
}

function log(message) {
    if (typeof console == &amp;#039;object&amp;#039;) {
        console.log(message)
    }
    else {
        GM_log(message)
    }
}

function debug() {
    if ( typeof DEBUG != &amp;#039;undefined&amp;#039; &amp;amp;&amp;amp; DEBUG ) {
        console.log.apply(this, arguments)
    }
}

function getElementPosition(elem) {
    var offsetTrail = elem
    var offsetLeft  = 0
    var offsetTop   = 0
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft
        offsetTop  += offsetTrail.offsetTop
        offsetTrail = offsetTrail.offsetParent
    }
    offsetTop = offsetTop || null
    offsetLeft = offsetLeft || null
    return {left: offsetLeft, top: offsetTop}
}

function getElementBottom(elem) {
    var c_style = document.defaultView.getComputedStyle(elem, &amp;#039;&amp;#039;)
    var height  = 0
    var prop    = [&amp;#039;height&amp;#039;, &amp;#039;borderTopWidth&amp;#039;, &amp;#039;borderBottomWidth&amp;#039;,
                   &amp;#039;paddingTop&amp;#039;, &amp;#039;paddingBottom&amp;#039;,
                   &amp;#039;marginTop&amp;#039;, &amp;#039;marginBottom&amp;#039;]
    prop.forEach(function(i) {
        var h = parseInt(c_style[i])
        if (typeof h == &amp;#039;number&amp;#039;) {
            height += h
        }
    })
    var top = getElementPosition(elem).top
    return top ? (top + height) : null
}

function getScrollHeight() {
    return Math.max(document.documentElement.scrollHeight,
                                document.body.scrollHeight)
}

function isSameDomain(url) {
    return location.host == url.split(&amp;#039;/&amp;#039;)[2]
}

function isSameBaseUrl(urlA, urlB) {
    return (urlA.replace(/[^/]+$/, &amp;#039;&amp;#039;) == urlB.replace(/[^/]+$/, &amp;#039;&amp;#039;))
}

function supportsFinalUrl() {
  if (typeof GM_getResourceURL != &amp;#039;undefined&amp;#039;)
    return (GM_getResourceURL);
  else
   return false;
}

function resolvePath(path, base) {
    var XHTML_NS = &amp;quot;http://www.w3.org/1999/xhtml&amp;quot;
    var XML_NS   = &amp;quot;http://www.w3.org/XML/1998/namespace&amp;quot;
    var a = document.createElementNS(XHTML_NS, &amp;#039;a&amp;#039;)
    a.setAttributeNS(XML_NS, &amp;#039;xml:base&amp;#039;, base)
    a.href = path
    return a.href
}

function fixResolvePath() {
    if (resolvePath(&amp;#039;&amp;#039;, &amp;#039;http://resolve.test/&amp;#039;) == &amp;#039;http://resolve.test/&amp;#039;) {
        return
    }
    // A workaround for WebKit and Mozilla 1.9.2a1pre,
    // which don&amp;#039;t support XML Base in HTML.
    // https://bugs.webkit.org/show_bug.cgi?id=17423
    // https://bugzilla.mozilla.org/show_bug.cgi?id=505783
    var XML_NS = &amp;#039;http://www.w3.org/XML/1998/namespace&amp;#039;
    var baseElement = document.createElementNS(null, &amp;#039;base&amp;#039;)
    var pathElement = document.createElementNS(null, &amp;#039;path&amp;#039;)
    baseElement.appendChild(pathElement)
    resolvePath = function resolvePath_workaround(path, base) {
        baseElement.setAttributeNS(XML_NS, &amp;#039;xml:base&amp;#039;, base)
        pathElement.setAttributeNS(XML_NS, &amp;#039;xml:base&amp;#039;, path)
        return pathElement.baseURI
    }
}

function strip_html_tag(str) {
    var chunks = str.split(/(&amp;lt;html(?:[ \t\r\n][^&amp;gt;]*)?&amp;gt;)/)
    if (chunks.length &amp;gt;= 3) {
        chunks.splice(0, 2)
    }
    str = chunks.join(&amp;#039;&amp;#039;)
    chunks = str.split(/(&amp;lt;\/html[ \t\r\n]*&amp;gt;)/)
    if (chunks.length &amp;gt;= 3) {
        chunks.splice(chunks.length - 2)
    }
    return chunks.join(&amp;#039;&amp;#039;)
}

function getPref(key, defaultValue) {
    var value = GM_getValue(key)
    return (typeof value == &amp;#039;undefined&amp;#039;) ? defaultValue : value
}

function isFirefoxExtension() {
    return (typeof chlorine == &amp;#039;object&amp;#039;)
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;b&gt;2010/01/23 追記：&lt;/b&gt;コードが正常に表示されていなかったので修正。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/autopagerize-041-mod-usercontentjs.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/8343582200523037634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/8343582200523037634'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/autopagerize-041-mod-usercontentjs.html' title='AutoPagerize 0.41 mod (userContent.js用)'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-1967645399148271913</id><published>2010-01-07T21:03:00.012+09:00</published><updated>2010-01-07T22:43:29.444+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="foobar2000"/><title type='text'>foobar2000にLast.fmの曲情報を表示する</title><content type='html'>&lt;p&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;foobar2000のELPlaylistにLast.fmの曲情報を表示&quot; border=&quot;0&quot; alt=&quot;foobar2000のELPlaylistにLast.fmの曲情報を表示&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5avar4hNsQZDMvYeh7C8o_dA0-uOzzcExgGWK3bqlYBrWuLcKsHdAbq7mTgK6Ze318QDMLU8HJDzqH9YeMZSl71Jiez3Xq3xUWn2f2LwyEDosHgWMyZ2oHQ5_lc-QYWLnrDltME6actNu/?imgmax=800&quot; width=&quot;462&quot; height=&quot;100&quot; /&gt;&lt;/p&gt;&lt;p&gt;Last.fmにはお気に入りの曲をLoveトラックに登録できる機能があるが、とりあえず付けてはいるものの、今ひとつ使い道が無かった。しかしsynchronise last.fm playback statsを使えば、Last.fmに記録されている曲情報(Loveトラック・再生回数)を取得し、Title Formatとして出力することができる。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p class=&quot;crossheading&quot;&gt;必要なコンポーネントとファイル&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.hydrogenaudio.org/forums/index.php?showtopic=76772&quot; target=&quot;_blank&quot;&gt;synchronise last.fm playback stats&lt;/a&gt; (playcount sync.zip) &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.foobar2000.org/components/view/foo_softplaylists&quot; target=&quot;_blank&quot;&gt;Soft Playlists&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hydrogenaudio.org/forums/index.php?showtopic=70363&quot; target=&quot;_blank&quot;&gt;WSH Panel Mod&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.99ravens.net/index.php?e=283&quot; target=&quot;_blank&quot;&gt;Custom Database&lt;/a&gt; (※ 取得した曲情報を外部データベースに記述したい場合) &lt;/li&gt;
&lt;/ul&gt;&lt;p class=&quot;crossheading&quot;&gt;導入の手順&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Last.fmから自分のライブラリ情報を取得するにはAPIキーが必要になるので、&lt;a href=&quot;http://www.lastfm.jp/api&quot; target=&quot;_blank&quot;&gt;API – Last.fm&lt;/a&gt;から発行する。 &lt;/li&gt;
&lt;li&gt;Soft PlaylistsのLast.fm User、Last.fm Passwordを設定する。 &lt;/li&gt;
&lt;li&gt;playcount sync.zipを解凍して、中にあるscript、imagesフォルダをfoobar2000のインストールフォルダにコピーする。 &lt;/li&gt;
&lt;li&gt;WSH panel modを配置してcode.txtをインポートし、ユーザーネームとAPIキーを設定する。&amp;#160; &lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;これでLast.fmから再生中の曲情報を取得して、ファイルのタグに直接、またはCustom Databaseで外部データベースに記述される。&lt;/p&gt;&lt;p&gt;外部データベースを使う場合はCustom Databaseで設定する項目が多いので、同梱してある設定ファイル(foo_customdb.dll.cfg)を使うように進められている。しかし、コンポーネント別に設定ファイルを生成するのはfoobar2000 v1からなので、それ以前のバージョンでは手動で項目の設定が必要になる。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;まずFieldsタブに以下の値を作る。    &lt;br /&gt;
LFM_U・T・H・THは再生回数の値で、それぞれ一・十・百・千の位になる。&lt;/p&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;       &lt;th class=&quot;th_first&quot;&gt;Display&lt;/th&gt;        &lt;th&gt;Name&lt;/th&gt;        &lt;th class=&quot;th_last&quot;&gt;Key (Custom)&lt;/th&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;LASTFM_LOVED_DB&lt;/td&gt;        &lt;td&gt;LASTFM_LOVED_DB&lt;/td&gt;        &lt;td&gt;%artist%,%title%&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;%artist%,%title%&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;%artist%,%title%&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;%artist%,%title%&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;%artist%,%title%&lt;/td&gt;     &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;次にActionタブに以下の値を作る。    &lt;br /&gt;
Updateの項目は全てContext menuになる。&lt;/p&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;       &lt;th class=&quot;th_first&quot;&gt;Display&lt;/td&gt; &lt;/th&gt;        &lt;th&gt;Field&lt;/td&gt; &lt;/th&gt;        &lt;th class=&quot;th_last&quot;&gt;Set Value&lt;/th&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;Customdb Love 1&lt;/td&gt;        &lt;td&gt;LASTFM_LOVED_DB&lt;/td&gt;        &lt;td&gt;1&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;Customdb Love 0&lt;/td&gt;        &lt;td&gt;LASTFM_LOVED_DB&lt;/td&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU 0&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;0&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU 1&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;1&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU 2&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;2&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU 3&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;3&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU 4&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;4&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU 5&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;5&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU 6&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;6&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU 7&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU 8&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;8&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU 9&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;9&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbU Erace&lt;/td&gt;        &lt;td&gt;LFM_U&lt;/td&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT 0&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;0&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT 1&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;1&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT 2&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;2&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT 3&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;3&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT 4&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;4&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT 5&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;5&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT 6&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;6&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT 7&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT 8&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;8&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT 9&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;9&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbT Erace&lt;/td&gt;        &lt;td&gt;LFM_T&lt;/td&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH 0&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;0&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH 1&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;1&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH 2&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;2&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH 3&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;3&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH 4&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;4&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH 5&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;5&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH 6&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;6&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH 7&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH 8&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;8&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH 9&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;9&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbH Erace&lt;/td&gt;        &lt;td&gt;LFM_H&lt;/td&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH 0&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;0&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH 1&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;1&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH 2&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;2&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH 3&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;3&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH 4&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;4&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH 5&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;5&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH 6&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;6&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH 7&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH 8&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;8&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH 9&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;9&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;CustomdbTH Erace&lt;/td&gt;        &lt;td&gt;LFM_TH&lt;/td&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;そしてWSH panel modで外部データベースへの記述を有効にし、foobar2000を再起動すれば、customdb_sqlite.dbに取得した曲情報が記述される。&lt;/p&gt;&lt;p class=&quot;crossheading&quot;&gt;ファイルのタグに記述する場合のTitle Format&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Loveトラック      &lt;pre&gt;$ifequal(%LASTFM_LOVED%,1,♥,)&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;再生回数      &lt;pre&gt;&lt;code&gt;%LASTFM_PLAYCOUNT%&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p class=&quot;crossheading&quot;&gt;外部データベースに記述する場合のTitle Format&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Loveトラック      &lt;pre&gt;$ifequal(%LASTFM_LOVED_DB%,1,♥,)&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;再生回数      &lt;pre&gt;$replace(%LFM_TH%%LFM_H%%LFM_T%%LFM_U%,?,)&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;WSH panel modには再生中の曲がLoveトラックならばハートアイコンが表示され、そうでなければ再生中の曲をLoveトラックにするボタンが表示される。&lt;/p&gt;&lt;p&gt;なお、取得した曲情報が書き込まれるのは初期設定では曲再生中の0:10のタイミングなので、変えたい場合は次のコードの2行目の数値をいじればよい。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;function on_playback_time(time) {
 if(t.eval() == 10) {
  if(old_userloved != 1 &amp;amp;&amp;amp; auto_love == 1 &amp;amp;&amp;amp; auto_love_condition.eval() == 1) {
   fb.trace(&amp;quot;Playcount sync: Auto-love is on. Triggering soft_playlists....&amp;quot;);
   fb.RunContextCommand(love_command);
  }
  sync();
 }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;今回はsynchronise last.fm playback statsを使うためにSoft Playlistsを入れたが、他にもLast.fmから曲情報を取得して様々なプレイリストを作成する機能などもあるので、単体でも優秀なコンポーネントだ。    &lt;br /&gt;
また、有料メンバーならば&lt;a href=&quot;http://www.unkempt.co.uk/fb2k/foo_lastfm_radio.html&quot; target=&quot;_blank&quot;&gt;Last.fm Radio&lt;/a&gt;を有効に使えて、更に連携を強化できるだろう。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/foobar2000lastfm.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1967645399148271913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/1967645399148271913'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/foobar2000lastfm.html' title='foobar2000にLast.fmの曲情報を表示する'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5avar4hNsQZDMvYeh7C8o_dA0-uOzzcExgGWK3bqlYBrWuLcKsHdAbq7mTgK6Ze318QDMLU8HJDzqH9YeMZSl71Jiez3Xq3xUWn2f2LwyEDosHgWMyZ2oHQ5_lc-QYWLnrDltME6actNu/s72-c?imgmax=800" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-6404149578919485468</id><published>2010-01-03T18:55:00.004+09:00</published><updated>2010-01-05T12:42:05.430+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="Greasemonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="SBM"/><title type='text'>Hatena And Delicious Count With Google</title><content type='html'>&lt;p&gt;&lt;a title=&quot;ブックマーク数の表示や色の違いにより、注目度が判りやすくなるようにした。&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv7egM1aYsPlEKJo0le35Av-V1BF3AaE5YeeMeexd2gLeIcsfDo49cOvbR5B22gcrD4o7wobO16xLiufLDqKodvUX426lioMCYl3_TXgl7YTvki5cR4cuaDf-9PMqO52fqdX6EOmxWlnzm/&quot; rel=&quot;lightbox&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px&quot; title=&quot;Hatena And Delicious Count With Googleを適用したGoogle&quot; border=&quot;0&quot; alt=&quot;Hatena And Delicious Count With Googleを適用したGoogle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxnk9uFqvDxMGWwbbbMvlQfwMbkncSiR5snq7fD59BtDM1ePn5tN2TqZ7adE-oOR1YGMH4R2rg6O9dHvkW8GahwXAUerpyYU266JswrmoMFtyK6zJ7nye_KG58OgkIgusvTaWqEDTZFdrA/?imgmax=800&quot; width=&quot;460&quot; height=&quot;370&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://white.s151.xrea.com/wiki/index.php?script%2FSBMCountWithGoogle&quot; target=&quot;_blank&quot;&gt;SBMCountWithGoogle&lt;/a&gt;をはてなブックマークとdeliciousのみ表示するようにしたもの。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;改良点として、ファビコンを非表示にし、ブックマーク数のデザインをそれぞれのサービスのものにした。また、ブックマーク数によって表示や色なども変化するようにしてある。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;// ==UserScript==
// @name           Hatena And Delicious Count With Google
// @namespace      http://other-webscrap.blogspot.com/2010/01/hatena-and-delicious-count-with-google.html
// @description    show Hatena and Delicious count in Google search result
// @include        http://*.google.*/search?*
// ==/UserScript==

(function (){

 var version = &amp;quot;2010.01.03&amp;quot;;
 var author  = &amp;quot;shiro edited by other&amp;quot;;

 var launch = function(){
  hatena();
  delicious();
 }

 var MD5_T = new Array(0x00000000, 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391);
 var MD5_round1 = new Array(new Array( 0, 7, 1), new Array( 1,12, 2), new Array( 2,17, 3), new Array( 3,22, 4), new Array( 4, 7, 5), new Array( 5,12, 6), new Array( 6,17, 7), new Array( 7,22, 8), new Array( 8, 7, 9), new Array( 9,12,10), new Array(10,17,11), new Array(11,22,12), new Array(12, 7,13), new Array(13,12,14), new Array(14,17,15), new Array(15,22,16));
 var MD5_round2 = new Array(new Array( 1, 5,17), new Array( 6, 9,18), new Array(11,14,19), new Array( 0,20,20), new Array( 5, 5,21), new Array(10, 9,22), new Array(15,14,23), new Array( 4,20,24), new Array( 9, 5,25), new Array(14, 9,26), new Array( 3,14,27), new Array( 8,20,28), new Array(13, 5,29), new Array( 2, 9,30), new Array( 7,14,31), new Array(12,20,32));
 var MD5_round3 = new Array(new Array( 5, 4,33), new Array( 8,11,34), new Array(11,16,35), new Array(14,23,36), new Array( 1, 4,37), new Array( 4,11,38), new Array( 7,16,39), new Array(10,23,40), new Array(13, 4,41), new Array( 0,11,42), new Array( 3,16,43), new Array( 6,23,44), new Array( 9, 4,45), new Array(12,11,46), new Array(15,16,47), new Array( 2,23,48));
 var MD5_round4 = new Array(new Array( 0, 6,49), new Array( 7,10,50), new Array(14,15,51), new Array( 5,21,52), new Array(12, 6,53), new Array( 3,10,54), new Array(10,15,55), new Array( 1,21,56), new Array( 8, 6,57), new Array(15,10,58), new Array( 6,15,59), new Array(13,21,60), new Array( 4, 6,61), new Array(11,10,62), new Array( 2,15,63), new Array( 9,21,64));
 function MD5_F(x,y,z){return (x&amp;amp;y)|(~x&amp;amp;z);}
 function MD5_G(x,y,z){return (x&amp;amp;z)|(y&amp;amp;~z);}
 function MD5_H(x,y,z){return x^y^z;}
 function MD5_I(x,y,z){return y^(x|~z);}
 var MD5_round=new Array(new Array(MD5_F, MD5_round1), new Array(MD5_G, MD5_round2), new Array(MD5_H, MD5_round3), new Array(MD5_I, MD5_round4));
 function MD5_pack(n32){return String.fromCharCode(n32 &amp;amp; 0xff)+String.fromCharCode((n32&amp;gt;&amp;gt;&amp;gt;8)&amp;amp;0xff)+String.fromCharCode((n32&amp;gt;&amp;gt;&amp;gt;16)&amp;amp;0xff)+String.fromCharCode((n32&amp;gt;&amp;gt;&amp;gt;24)&amp;amp;0xff);}
 function MD5_unpack(s4){return s4.charCodeAt(0)|(s4.charCodeAt(1)&amp;lt;&amp;lt;8)|(s4.charCodeAt(2)&amp;lt;&amp;lt;16)|(s4.charCodeAt(3)&amp;lt;&amp;lt;24);}
 function MD5_number(n){while(n&amp;lt;0)n+=4294967296;while(n&amp;gt;4294967295)n-=4294967296;return n;}
 function MD5_apply_round(x,s,f,abcd,r){var a,b,c,d;var kk,ss,ii;var t,u;a=abcd[0];b=abcd[1];c=abcd[2];d=abcd[3];kk=r[0];ss=r[1];ii=r[2];u=f(s[b],s[c],s[d]);t=s[a]+u+x[kk]+MD5_T[ii];t=MD5_number(t);t=((t&amp;lt;&amp;lt;ss)|(t&amp;gt;&amp;gt;&amp;gt;(32-ss)));t+=s[b];s[a]=MD5_number(t);}
 function MD5_hash(data){var abcd,x,state,s;var len,index,padLen,f,r;var i,j,k;var tmp;state = new Array(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476);len=data.length;index=len&amp;amp;0x3f;padLen=(index&amp;lt;56)?(56-index):(120-index);if(padLen&amp;gt;0){data+=&amp;quot;\x80&amp;quot;;for(i=0;i&amp;lt;padLen-1;i++)data+=&amp;quot;\x00&amp;quot;;}data+=MD5_pack(len*8);data+=MD5_pack(0);len+=padLen+8;abcd=new Array(0,1,2,3);x=new Array(16);s=new Array(4);for(k=0;k&amp;lt;len;k+=64){for(i=0,j=k;i&amp;lt;16;i++,j+=4){x[i] = data.charCodeAt(j)|(data.charCodeAt(j+1)&amp;lt;&amp;lt;8)|(data.charCodeAt(j+2)&amp;lt;&amp;lt;16)|(data.charCodeAt(j+3)&amp;lt;&amp;lt;24);}for(i=0;i&amp;lt;4;i++)s[i]=state[i];for(i=0;i&amp;lt;4;i++){f=MD5_round[i][0];r=MD5_round[i][1];for(j=0;j&amp;lt;16;j++){MD5_apply_round(x,s,f,abcd,r[j]);tmp=abcd[0];abcd[0]=abcd[3];abcd[3]=abcd[2];abcd[2]=abcd[1];abcd[1]=tmp;}}for(i=0;i&amp;lt;4;i++){state[i]+=s[i];state[i]=MD5_number(state[i]);}}return MD5_pack(state[0])+MD5_pack(state[1])+MD5_pack(state[2])+MD5_pack(state[3]);}
 function MD5_hexhash(data){var i,out,c;var bit128;bit128=MD5_hash(data);out=&amp;quot;&amp;quot;;for(i=0;i&amp;lt;16;i++){c=bit128.charCodeAt(i);out+=&amp;quot;0123456789abcdef&amp;quot;.charAt((c&amp;gt;&amp;gt;4) &amp;amp; 0xf);out+=&amp;quot;0123456789abcdef&amp;quot;.charAt(c &amp;amp; 0xf);}return out;}


 var XPATH = &amp;quot;//a[@class=&amp;#039;l&amp;#039;]&amp;quot;;

 String.prototype.htmlescape = function() {
  return this.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);
 }

 function forEachMatch(xpath, cb, class){
  var matches = document.evaluate(
   xpath, document, null,
   XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  for (var i=0; i&amp;lt;matches.snapshotLength; i++){
   var link=matches.snapshotItem(i);
   var test=class+&amp;quot;_loaded[&amp;#039;&amp;quot;+link.href+&amp;quot;&amp;#039;]&amp;quot;;
   if(!eval(test)){
    eval(test+&amp;quot;=true&amp;quot;);
    cb(link);
   }
  }
 }

 function setBookmarkCount(link, count, href, class){
  var container = document.createElement(&amp;quot;span&amp;quot;);
  container.setAttribute(&amp;quot;class&amp;quot;, class);
  var a = document.createElement(&amp;quot;a&amp;quot;);
  a.setAttribute(&amp;quot;href&amp;quot;, href);
  if(count==0){
  }else{
   if (container.className == &amp;quot;hatena&amp;quot;) {
    a.appendChild(document.createTextNode(&amp;quot;&amp;quot;+count+&amp;quot; user&amp;quot;+(count&amp;gt;1?&amp;quot;s&amp;quot;:&amp;quot;&amp;quot;)));
    }else{
     a.appendChild(document.createTextNode(&amp;quot;&amp;quot;+count+&amp;quot;&amp;quot;));
    }
  }
  with(a.style){
   if(count==0){
   }else{
    verticalAlign = &amp;quot;middle&amp;quot;;
    marginLeft = &amp;quot;5px&amp;quot;;
    fontSize = &amp;quot;0.8em&amp;quot;;
    textDecoration = &amp;quot;none&amp;quot;;
    if (container.className == &amp;quot;hatena&amp;quot;) {
     if (count &amp;gt;= 3) {
      backgroundColor = &amp;quot;#fff0f0&amp;quot;;
      color = &amp;quot;#f66&amp;quot;;
      fontWeight = &amp;quot;bold&amp;quot;;
      textDecoration = &amp;quot;underline&amp;quot;;
     }
     if (count &amp;gt;= 10) {
      backgroundColor = &amp;quot;#fcc&amp;quot;;
      color = &amp;quot;#f00&amp;quot;;
      fontWeight = &amp;quot;bold&amp;quot;;
      textDecoration = &amp;quot;underline&amp;quot;;
     }
    }else{
     padding = &amp;quot;3px 5px&amp;quot;;
     backgroundColor = &amp;quot;#73adff&amp;quot;;
     color = &amp;quot;#fff&amp;quot;;
     fontWeight = &amp;quot;bold&amp;quot;;
     if (count &amp;gt;= 10) {
      backgroundColor = &amp;quot;#5592e9&amp;quot;;
     }
     if (count &amp;gt;= 100) {
      backgroundColor = &amp;quot;#3274d0&amp;quot;;
     }
     if (count &amp;gt;= 1000) {
      backgroundColor = &amp;quot;#2261a0&amp;quot;;
     }
    }
   }
  }
  container.appendChild(a);
  if (container.className == &amp;quot;hatena&amp;quot;) {
   link.parentNode.insertBefore(container, link.nextSibling);
  }else{
   link.parentNode.insertBefore(container, link.parentNode.lastChild.nextSibling);
  }
 }

 // hatena
 var hatena_loaded = {};
 var hatena = function() {
  function callXmlrpc(requestbody, url2link) {
   const endpoint = &amp;quot;http://b.hatena.ne.jp/xmlrpc&amp;quot;;
   function onload(response) {
    var pattern = /&amp;lt;name&amp;gt;([^&amp;lt;]+)&amp;lt;\/name&amp;gt;\s*&amp;lt;value&amp;gt;&amp;lt;int&amp;gt;(\d+)/g;
    var m;
    while (m = pattern.exec(response.responseText)) {
     var link = url2link[m[1]];
     if(link) setBookmarkCount(link, m[2], &amp;quot;http://b.hatena.ne.jp/entry/&amp;quot;+link.href, &amp;quot;hatena&amp;quot;);
     
    }
   }
   GM_xmlhttpRequest({method: &amp;quot;POST&amp;quot;, url: endpoint, data: requestbody, onload: onload});
  }
  var request = &amp;#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;\n&amp;lt;methodCall&amp;gt;\n&amp;lt;methodName&amp;gt;bookmark.getCount&amp;lt;/methodName&amp;gt;\n&amp;lt;params&amp;gt;\n&amp;#039;;
  var url2link = new Array();
  var cb = function(link){
   request += &amp;quot;&amp;lt;param&amp;gt;&amp;lt;value&amp;gt;&amp;lt;string&amp;gt;&amp;quot;+link.href.htmlescape()+&amp;quot;&amp;lt;/string&amp;gt;&amp;lt;/value&amp;gt;&amp;lt;/param&amp;gt;\n&amp;quot;;
   url2link[link.href] = link;
  }
  forEachMatch(XPATH, cb, &amp;quot;hatena&amp;quot;);
  request += &amp;quot;&amp;lt;/params&amp;gt;\n&amp;lt;/methodCall&amp;gt;\n&amp;quot;;
  callXmlrpc(request, url2link);
 }
 
 // delicious
 var delicious_loaded = {};
 var delicious = function(){
  var cb = function(link){
   var md5url = MD5_hexhash(link.href);
   var onload = function(response){
    var res = eval(response.responseText);
    if(!res || !res[0] ) {
     setBookmarkCount(link, 0, &amp;#039;http://del.icio.us/url/&amp;#039; + md5url, &amp;quot;delicious&amp;quot;);
     return;
    }
    setBookmarkCount(link, res[0][&amp;quot;total_posts&amp;quot;], &amp;#039;http://del.icio.us/url/&amp;#039; + md5url, &amp;quot;delicious&amp;quot;);
   }
   GM_xmlhttpRequest({
     method: &amp;quot;GET&amp;quot;,
     url: &amp;#039;http://badges.del.icio.us/feeds/json/url/data?hash=&amp;#039; + md5url,
     onload: onload});
  }
  forEachMatch(XPATH, cb, &amp;quot;delicious&amp;quot;);
 }

 // for debug
 function debug1(id){
  var div = document.createElement(&amp;quot;div&amp;quot;);
  div.setAttribute(&amp;quot;id&amp;quot;, id);
  var hash = eval(id + &amp;quot;_loaded&amp;quot;);
  var lst = new Array();
  for(var key in hash) lst.push(key);
  var div1 = document.createElement(&amp;quot;div&amp;quot;);
  div1.appendChild(document.createElement(&amp;quot;br&amp;quot;));
  div1.appendChild(document.createTextNode(&amp;quot;&amp;gt;&amp;gt;&amp;gt; &amp;quot;+id+&amp;quot;( &amp;quot;+lst.length+&amp;quot; ):&amp;quot;));
  div.appendChild(div1);
  var txt = document.createTextNode(lst.join(&amp;quot;, &amp;quot;));
  div.appendChild(txt);
  div.appendChild(document.createElement(&amp;quot;br&amp;quot;));
  var res = document.getElementById(&amp;quot;res&amp;quot;);
  res.parentNode.insertBefore(div,res);
 }
 function debug(){
  var bmlst = [&amp;quot;hatena&amp;quot;, &amp;quot;delicious&amp;quot;];
  for(var i=0; i&amp;lt;bmlst.length; i++){
   var res = document.getElementById(&amp;quot;res&amp;quot;);
   var div = document.getElementById(bmlst[i]);
   if(div) res.parentNode.removeChild(div);
   debug1(bmlst[i]);
  }
 }

 // for Auto Pager
 var scrollHeight = document.documentElement.scrollHeight;
 document.addEventListener(
  &amp;quot;scroll&amp;quot;,
  function(e){
   if(document.documentElement.scrollHeight - scrollHeight &amp;gt; 100){
//    debug();
    scrollHeight = document.documentElement.scrollHeight;
    launch();
   }
  },false);

 launch();

GM_addStyle(&amp;lt;&amp;gt;&amp;lt;![CDATA[
.delicious:hover:after{
 margin-left: 2px;
 color: #787878;
 font-size: 0.6em;
 content: &quot;PEOPLE&quot;;
}
.delicious a:hover {
 background: #7cba0f !important;
}
]]&amp;gt;&amp;lt;/&amp;gt;);

})();&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;b&gt;2010/01/05 追記：&lt;/b&gt;CSSを修正。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/hatena-and-delicious-count-with-google.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/6404149578919485468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/6404149578919485468'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2010/01/hatena-and-delicious-count-with-google.html' title='Hatena And Delicious Count With Google'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxnk9uFqvDxMGWwbbbMvlQfwMbkncSiR5snq7fD59BtDM1ePn5tN2TqZ7adE-oOR1YGMH4R2rg6O9dHvkW8GahwXAUerpyYU266JswrmoMFtyK6zJ7nye_KG58OgkIgusvTaWqEDTZFdrA/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-6031393417896643726</id><published>2009-12-29T01:48:00.004+09:00</published><updated>2010-01-02T20:52:32.333+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="SBM"/><title type='text'>Read It Later 0.9948 日本語版 rev.2 (SBM改良版)</title><content type='html'>&lt;p&gt;Read It Laterがメジャーアップデートされてバージョン2になったが、起動時に毎回出るウィンドウが鬱陶しかったので、結局ダウングレードすることにした。&lt;/p&gt;&lt;p&gt;そうなるとバージョン0.9448が最終ビルドなので、&lt;a href=&quot;http://d.hatena.ne.jp/Nunskey/20091207/1260190595&quot; target=&quot;_blank&quot;&gt;Read It Later 0.9948 日本語版 rev.2&lt;/a&gt;を使っていたが、それを更に改良してソーシャルブックマークなどを日本のものに置き換えてみた。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://cid-5e67ae1f18509d47.skydrive.live.com/self.aspx/.Public/read%5E_it%5E_later-0.9948-fx%5E_jp%5E_rev2%5E_sbm.xpi&quot; target=&quot;_blank&quot;&gt;Read It Later 0.9948 日本語版 rev.2 (SBM改良版)&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;収録されているソーシャルブックマークなどは以下の通り。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;@niftyクリップ &lt;/li&gt;
&lt;li&gt;Buzzurl&amp;#160; &lt;/li&gt;
&lt;li&gt;Choix &lt;/li&gt;
&lt;li&gt;delicious &lt;/li&gt;
&lt;li&gt;Digg &lt;/li&gt;
&lt;li&gt;Diigo &lt;/li&gt;
&lt;li&gt;FC2ブックマーク &lt;/li&gt;
&lt;li&gt;gooブックマーク &lt;/li&gt;
&lt;li&gt;Googleブックマーク &lt;/li&gt;
&lt;li&gt;livedoorクリップ &lt;/li&gt;
&lt;li&gt;newsing &lt;/li&gt;
&lt;li&gt;POOKMARK Airlines &lt;/li&gt;
&lt;li&gt;reddit &lt;/li&gt;
&lt;li&gt;Scuttle &lt;/li&gt;
&lt;li&gt;StumbleUpon &lt;/li&gt;
&lt;li&gt;Tumblr &lt;/li&gt;
&lt;li&gt;Twitter &lt;/li&gt;
&lt;li&gt;Windows Live &lt;/li&gt;
&lt;li&gt;Yahoo!ブックマーク &lt;/li&gt;
&lt;li&gt;イザ！ブックマーク &lt;/li&gt;
&lt;li&gt;トピックイット &lt;/li&gt;
&lt;li&gt;はてなブックマーク &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;※ Read it Laterを上書きしたり以前に使っていたりした場合は、ソーシャルブックマークを選ぶ欄で不具合が起きるので、以下の手順で解決してください。&lt;/p&gt;&lt;ol&gt;&lt;li&gt;about:configを開く。 &lt;/li&gt;
&lt;li&gt;設定名「isreaditlater.sites」を探す。 &lt;/li&gt;
&lt;li&gt;値を「,23,5,11,12,3,18」に変更する。 &lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;p&gt;&lt;b&gt;2010/01/02 追記：&lt;/b&gt;deliciousのクエリを変更。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2009/12/read-it-later-09948-rev2-sbm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/6031393417896643726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/6031393417896643726'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2009/12/read-it-later-09948-rev2-sbm.html' title='Read It Later 0.9948 日本語版 rev.2 (SBM改良版)'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-4532770683013103448</id><published>2009-12-27T13:10:00.002+09:00</published><updated>2009-12-27T13:40:48.633+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="foobar2000"/><title type='text'>foobar2000のBiographyで取得した画像をカッコよく表示させる</title><content type='html'>&lt;p&gt;&lt;a title=&quot;取得した画像をPanel Stack Splitterで表示させている。&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO7bT2EUvLGe1ycJ4do1l0IINVGzC1iPt5F09phmfRmiioD-Vbl3R0qNjDewAwwFcSlAOulhiZGtOCE0qyc_Y2HsK2PMdt6Li7NYIXC_M_kz-gz1VBKX6SjjJcuyBrN3aTgQvlrdb7HmKf/&quot; rel=&quot;lightbox&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;foobar2000のBiographyパネル&quot; border=&quot;0&quot; alt=&quot;foobar2000のBiographyパネル&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkHd7ydWnKt-l-PiqpKsmqIoL_Ifxs_roIxh_ZpUYwjMr16KuLOYbhDNn-emcKtEBKgrswBe_mdaYn3otARTHPhYEBt6CtNprKBGq1eAXN3cP3Yq0lza6cRh8neSEoNAL1n-B5QYOUX6XX/?imgmax=800&quot; width=&quot;440&quot; height=&quot;300&quot; /&gt;&lt;/a&gt; foobar2000にBiographyパネルを追加した。&lt;/p&gt;&lt;p&gt;初めは単純にBiograhphyコンポーネントで表示させていたが、取得してくる画像の大きさがそれぞれ違うので、バランスが悪く悩んでいた。そこで、他のコンポーネントで画像を表示させてみてはと考えついた。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;取得してきた画像を一旦キャッシュに保存させ、それをPanel Stack SplitterのPer Secondでリサイズ・トリミングして3枚並べて表示させる。これで大・小・縦長・横長の画像でも、大抵は綺麗に整列して表示させられる。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$imageabs_rc(300,800,40,10,240,150,250,85,$if($cwb_fileexists(Z:\foobar2000\%artist%.jpg),Z:\foobar2000\%artist%.jpg,$if($cwb_fileexists(Z:\foobar2000\%artist%.png),Z:\foobar2000\%artist%.png)),)
$imageabs_rc(300,800,40,10,240,150,490,85,$if($cwb_fileexists(Z:\foobar2000\%artist%_01.jpg),Z:\foobar2000\%artist%_01.jpg,$if($cwb_fileexists(Z:\foobar2000\%artist%_01.png),Z:\foobar2000\%artist%_01.png)),)
$imageabs_rc(300,800,40,10,240,150,730,85,$if($cwb_fileexists(Z:\foobar2000\%artist%_02.jpg),Z:\foobar2000\%artist%_02.jpg,$if($cwb_fileexists(Z:\foobar2000\%artist%_02.png),Z:\foobar2000\%artist%_02.png)),)&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2009/12/foobar2000biography.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/4532770683013103448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/4532770683013103448'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2009/12/foobar2000biography.html' title='foobar2000のBiographyで取得した画像をカッコよく表示させる'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkHd7ydWnKt-l-PiqpKsmqIoL_Ifxs_roIxh_ZpUYwjMr16KuLOYbhDNn-emcKtEBKgrswBe_mdaYn3otARTHPhYEBt6CtNprKBGq1eAXN3cP3Yq0lza6cRh8neSEoNAL1n-B5QYOUX6XX/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-592018461459582203</id><published>2009-12-10T18:21:00.002+09:00</published><updated>2009-12-10T18:22:11.539+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Custom Buttons"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><title type='text'>deliciousへブックマークするCustom Buttons</title><content type='html'>&lt;p&gt;表示しているページをdeliciousへブックマークするCustom Buttons。右クリックでその記事のブックマークページを表示させようとしたが断念。    &lt;br /&gt;
中クリックで自分のブックマークページへ行けるので、URLを書き換えて使って欲しい。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a title=&quot;delicious&quot; href=&quot;custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//custombuttons2.com/%22%3E%0A%20%20%3CCb2Ver%3E3.1.0%3C/Cb2Ver%3E%0A%20%20%3Cname%3Edelicious%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAJEAAAICAjJ00f%252F%252F%252F93d3SH5BAAAAAAALAAAAAAQABAAAAIqlG%252Bhq4jM3IFLJhqswNly%252FXkYQJbkgKaoaaoqW7opfMoDDdg3reM9bysAADs%253D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A%0Athis.leftclick%20%20%20%3D%20function%28evt%29%7B%0AgBrowser.selectedTab%3DgBrowser.addTab%28%27http%3A//delicious.com/save%3Fjump%3Dno%26url%3D%27+escape%28window._content.document.location.href%29+%27%26title%3D%27+encodeURIComponent%28window._content.document.title%29%29%3Bundefined%3B%0A%20%20gBrowser.selectedTab%20%3D%20newtab%3B%0A%7D%0A%0Athis.midclick%20%20%20%3D%20function%28evt%29%7B%0AgBrowser.selectedTab%3DgBrowser.addTab%28%27http%3A//delicious.com/an_other%27%29%3Bundefined%3B%0A%20%20gBrowser.selectedTab%20%3D%20newtab%3B%0A%7D%0A%0Athis.setAttribute%28%20%27onclick%27%2C%20%27gQuot%28%20event%2C%20this%20%29%27%20%29%3B%20//%20Calls%20the%20Golbal%20MouseClick%20handler%20gQuot%5D%5D%3E%3C/initcode%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E&quot;&gt;&lt;img style=&quot;margin: 0px 6px&quot; border=&quot;0&quot; alt=&quot;delicious&quot; src=&quot;data:image/gif;base64,R0lGODlhEAAQAJEAAAICAjJ00f///93d3SH5BAAAAAAALAAAAAAQABAAAAIqlG+hq4jM3IFLJhqswNly/XkYQJbkgKaoaaoqW7opfMoDDdg3reM9bysAADs=&quot; /&gt;delicious&lt;/a&gt;       &lt;br /&gt;
左クリック：表示しているページをdeliciousへブックマークする。       &lt;br /&gt;
中クリック：deliciousの自分のブックマークページを開く。 &lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2009/12/deliciouscustom-buttons.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/592018461459582203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/592018461459582203'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2009/12/deliciouscustom-buttons.html' title='deliciousへブックマークするCustom Buttons'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-168804368284046272</id><published>2009-12-09T21:29:00.007+09:00</published><updated>2010-01-13T18:43:07.245+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SBM"/><title type='text'>deliciousとはてなブックマークの違い</title><content type='html'>&lt;p&gt;ソーシャルブックマークを使い始める際に検討したのが、deliciousとはてなブックマークの二つだった。その時は言語が日本語なのもあってはてなブックマークを選び、使っているうちにソーシャルブックマークの有効的な使い方も段々と分かってきた。そんな折に、&lt;a href=&quot;http://r.nanapi.jp/845/&quot; target=&quot;_blank&quot;&gt;はてなブックマークからdeliciousに移行する方法&lt;/a&gt;という記事を見つけたので、これを機にdeliciousへの移行も視野に入れて両者の違いを調べた。&lt;/p&gt;&lt;p&gt;しかし記事や情報が既に古いものが多く、機能やサービスの内容も結構変わっていたので、新しく両者のサービスの違いを簡単にまとめてみた。サービスの開始頃と比べて基本的な機能も大体同じレベルになってきているようなので、ここでは特に違う点について上げる。&lt;/p&gt;&lt;p&gt;なお、はてなブックマークプラスでの追加機能は除いたものである。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p class=&quot;crossheading&quot;&gt;delicious&lt;/p&gt;&lt;p&gt;&lt;a title=&quot;シンプルなインターフェイスで、「bundle」でのタグの絞り込みはとても優秀。&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj07jYsMTA9LUFbZ1ZtmDLd0Y_orn7IUSYANwxY00EuvMR7SPpQx2cOliZvJQ950gIIFQPvS6rRW9-KNhQY3hUnefoR4Ydr7-O0L7l2dhJhxPfiya2IormJEDqy0T217p2inyDMOsXWuJHj/&quot; rel=&quot;lightbox-20091209&quot;&gt;&lt;img style=&quot;border-right-width: 0px; margin: 20px auto 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;deliciousのブックマークページ&quot; border=&quot;0&quot; alt=&quot;deliciousのブックマークページ&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimGTzI7WBo8BomRU9hVe7d0rIC7o6RLNoJwLGOoZaKsriyNov3MXN6j32xZNI5a8smn-rDXdlKO55CISvPnerQ_IvgblWffyIlKkhLCFLNvSgV-_CvpS_11g7oA0IjGU4JogOaIv8sSoXK/?imgmax=800&quot; width=&quot;480&quot; height=&quot;360&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;機能&lt;/b&gt;      &lt;br /&gt;
表示形式は件数別(10～100件)。       &lt;br /&gt;
記事のタイトルはユーザーが個別に編集できる。       &lt;br /&gt;
タグは128個、コメントは1000文字(半角・全角共通)まで。       &lt;br /&gt;
複数のタグを束ねる機能「bundle」がある。       &lt;br /&gt;
Flickrは記事にサムネイル画像が表示される。       &lt;br /&gt;
プライベートブックマークは標準機能。       &lt;br /&gt;
タグの柔軟な絞り込みができる。       &lt;br /&gt;
ソートが新着順・アルファベット順に簡単に変更できる。      &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;デザイン &lt;/b&gt;     &lt;br /&gt;
青を主体としたスッキリとしたデザインで、記事の表示は3通り。       &lt;br /&gt;
全体の変更は不可(userstyleなどを使えば可能)。      &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;特徴&lt;/b&gt;      &lt;br /&gt;
英語圏のサービスなので人気記事は海外のものが多め。       &lt;br /&gt;
Twitterで話題になっている記事がトップページに表示される。       &lt;br /&gt;
&lt;a href=&quot;http://userscripts.org/scripts/show/35179&quot; target=&quot;_blank&quot;&gt;Delicious Thumbnail &amp;amp; Favicon&lt;/a&gt;で記事にサムネイル画像が表示できる。      &lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p class=&quot;crossheading&quot;&gt;はてなブックマーク&lt;/p&gt;&lt;p&gt;&lt;a title=&quot;デザインは好みで変えられ、タブで機能を切り替えることができる。&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3PwzVFjgZW3IEZ2c8XrbvODDsYyh09N71_kTfTbtU5HGmlavNthslt-1SCss_p_DnFNVm8vJ1GKdT0CGmfU5YoQeYjgOj6CWZwouPQYQuZEYFPVy_0stlijydANS_KjiJ5pacXTnjc9tS/&quot; rel=&quot;lightbox-20091209&quot;&gt;&lt;img style=&quot;border-right-width: 0px; margin: 20px auto 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;はてなブックマークのブックマークページ&quot; border=&quot;0&quot; alt=&quot;はてなブックマークのブックマークページ&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXaStCGZAmcKbOVZw5hkkJxUZsxXrlOFj6kVjBznkdMujKFM3EgtvNqfHCkdOYGCeppwv4O0bnoAUseiDnE82QbKWw9hIIyLKP0lIa0XclJwzCq37HrwAMfDGL47sqDT-HDP3gzJrza67N/?imgmax=800&quot; width=&quot;480&quot; height=&quot;360&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;機能&lt;/b&gt;      &lt;br /&gt;
表示形式は件数別(10～100件)と日付別(1日ごと)。       &lt;br /&gt;
記事のタイトルは編集できるが、ユーザー全員で共有される。       &lt;br /&gt;
タグは10個・全角10文字(半角20文字)、コメントは合計100字まで。       &lt;br /&gt;
お気に入りに登録したユーザーのタグ・コメントも表示できる。       &lt;br /&gt;
Amazon、Flickr、YouTube、ニコニコ動画は記事にサムネイル画像が表示される。       &lt;br /&gt;
プライベートブックマークは追加機能で有料。       &lt;br /&gt;
好みのユーザーアイコンを設定できる。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;デザイン&lt;/b&gt;      &lt;br /&gt;
豊富なテーマ・カラーなどがあり、ユーザーの好みで選べる。       &lt;br /&gt;
また、CSSを使えれば更に細かいところまでいじれる。&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;特徴&lt;/b&gt;      &lt;br /&gt;
日本のサービスなので人気記事はほぼ日本のもの。       &lt;br /&gt;
記事にはタグとは別にカテゴリ分けがあり、個別にフィードも取得できる。       &lt;br /&gt;
コメント欄が盛んなので、一種のユーザーコミュニティになっている。       &lt;br /&gt;
はてなの他サービスとの連携ができる。&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;総じて言えばdeliciousはシンプルで使いやすく、はてなブックマークは多機能で拡張性に優れているといったところ。両者ともTwitterとの連携機能もありGreasemonkeyも沢山出ているので、細かい機能は大体網羅されている。ブラウザによる差に関しても、Google chromeにもベータ版ではあるが拡張が出始めたので、特に大きな差は無くなった。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;私ははてなの他のサービスは使っていないのでどちらにするかかなり悩んだが、最終的には別々に使い分けることにした。&lt;/p&gt;&lt;p&gt;deliciousは記事一覧が見やすいので、参考にするものや資料的なもの、オンラインサービスなどを中心にオンラインブックマークとして。    &lt;br /&gt;
一方はてなブックマークはコミュニティ的な側面が強いので、ニュースや気になった記事などを中心にスクラップブックのように使う。動画はサムネイルが表示されるので一覧から探しやすく、Amazonの欲しいものやチェックしたいものなどを登録しておけば、外出した際に携帯から簡単にチェックできる。&lt;/p&gt;&lt;p&gt;このように、必ず片方を選ばなくてはいけないわけではないので、記事の性質ごとに使い分けてみるのもいい。また、単純に片方を主として使い、もう片方をバックアップ用にするという使い方もあるだろう。&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;ここまで簡単に違いを比較してみたが、結局一番いいのは一回使ってみることだ。双方ともブックマークのインポート・エクスポートが簡単にできるので、使ってみて自分にあってる方を選択するといい。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2009/12/delicious.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/168804368284046272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/168804368284046272'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2009/12/delicious.html' title='deliciousとはてなブックマークの違い'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimGTzI7WBo8BomRU9hVe7d0rIC7o6RLNoJwLGOoZaKsriyNov3MXN6j32xZNI5a8smn-rDXdlKO55CISvPnerQ_IvgblWffyIlKkhLCFLNvSgV-_CvpS_11g7oA0IjGU4JogOaIv8sSoXK/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-7933707356088743690</id><published>2009-12-05T00:49:00.002+09:00</published><updated>2009-12-05T00:52:16.097+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Desktop Customize"/><title type='text'>デスクトップカスタマイズ 2</title><content type='html'>&lt;p&gt;&lt;a title=&quot;グレーをベースに落ち着いた雰囲気に。&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgPdNdkaRCqhSVpwUZ44pCelDHZTUDcmcTTSTuGDjyvxwsG2HVQh4bWSCNbsEPzcrGDHlhXX0XHcARxHF5bZgDtp0aPiyZciNzWnWS8OT4Zk1B3xwVrJTrXf9JV9EFxOvGchXi-HXO6aqO/&quot; rel=&quot;lightbox-20091205&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;デスクトップキャプチャ&quot; border=&quot;0&quot; alt=&quot;デスクトップキャプチャ&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvGhtQR0nJut-8JKB36QXm0w3pU7Rk28jc9Tqo3CkihlVu4GW-wHoO1IOyRdB6V-iDrR1itejaTXx2BDrQ_8Tn1WAjYcFJ_9DcGQUeNEunBv8uN_O5UMi6D5tm1TldxMtrhlt3uDWc9_YL/?imgmax=800&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;a title=&quot;アイコンは光沢を抑えられた物を使用。&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEqBQ377Pj6EERqtD9Aj9c4GtY038e5CUHl_2bcmZyl1FdbH32X7VraEBUyjnOqrxmy0pWY9GIHdlc_KL66aeaEgEICVo0GKxKYKZq0N04ZxdnlfHH2YCg51hWfIfCHzHui0nAycVAFKLa/&quot; rel=&quot;lightbox-20091205&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;デスクトップキャプチャ&quot; border=&quot;0&quot; alt=&quot;デスクトップキャプチャ&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin8WZw3yO9od2ASvhgLhLHFnCRblReDsJDWq5Bg-qrenxsOeRSeUK8YfEsRTqlVxgUZzvmr5BpeuK2sU7UtRZI18kCh727EA_S5ifCrtF0TDbvbkjgXQqqCx74ftSB3hs-c_Ul8QrFF7mV/?imgmax=800&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt; いい壁紙を見つけたので久しぶりにデスクトップを変更。雰囲気はグレーをベースにマットな感じで。ベースカラーがモノクロだと、特に質感を統一しないとチグハグなデザインになってしまうので難しい。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;壁紙に記されている言葉は、ディーター・ラムスの「&lt;a href=&quot;http://www.vitsoe.com/ja/jp/about/dieterrams/gooddesign&quot; target=&quot;_blank&quot;&gt;良いデザインの10原則&lt;/a&gt;」。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;VS：devARTg &lt;/li&gt;
&lt;li&gt;壁紙：Good design &lt;/li&gt;
&lt;li&gt;アイコン：Archive, pure &lt;/li&gt;
&lt;li&gt;カーソル：Aero White Tailless Shadow &lt;/li&gt;
&lt;li&gt;Styler：GAIA TYPO &lt;/li&gt;
&lt;li&gt;FindeXer &lt;/li&gt;
&lt;li&gt;Orchis &lt;/li&gt;
&lt;li&gt;Samurize &lt;/li&gt;
&lt;li&gt;TabExplorer &lt;/li&gt;
&lt;li&gt;Y’z Shadow &lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2009/12/2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/7933707356088743690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/7933707356088743690'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2009/12/2.html' title='デスクトップカスタマイズ 2'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvGhtQR0nJut-8JKB36QXm0w3pU7Rk28jc9Tqo3CkihlVu4GW-wHoO1IOyRdB6V-iDrR1itejaTXx2BDrQ_8Tn1WAjYcFJ_9DcGQUeNEunBv8uN_O5UMi6D5tm1TldxMtrhlt3uDWc9_YL/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275746956271420249.post-637695525259922712</id><published>2009-11-21T06:51:00.002+09:00</published><updated>2009-11-21T07:01:14.968+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="foobar2000"/><title type='text'>foobar2000でアルバムのリピート再生</title><content type='html'>&lt;p&gt;foobar2000ではアルバム一枚だけをリピート再生することができない。一応アルバム一枚だけのプレイリストを作ってやればできないこともないが、途方もない数になってしまうのであまり実用的ではない。だが&lt;a href=&quot;http://www.hydrogenaudio.org/forums/index.php?showtopic=44012&quot;&gt;Quick Search Toolbar&lt;/a&gt;を使えば、擬似的にアルバムのリピート再生をすることができる。&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;  &lt;p&gt;やり方は曲の再生方法をRepeat (playlist)とし、アルバムを選んで右クリックメニューからQuicksearch for same ... &amp;gt; Albumと実行すればいいだけ。これでそのアルバム一枚のみのプレイリストが作成される。他のアルバムを新しく指定したり、通常の検索機能を使った場合も同じプレイリストに上書きされるので、プレイリストの数を増やさずにアルバムのリピート再生ができる。&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://other-webscrap.blogspot.com/2009/11/foobar2000_21.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/637695525259922712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275746956271420249/posts/default/637695525259922712'/><link rel='alternate' type='text/html' href='http://other-webscrap.blogspot.com/2009/11/foobar2000_21.html' title='foobar2000でアルバムのリピート再生'/><author><name>other</name><uri>http://www.blogger.com/profile/07436924572522218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh4.ggpht.com/_Jp3Pf2e6KBw/SpySs_M8-OI/AAAAAAAAAW8/E22w5ToWlHs/other.jpg'/></author><thr:total>0</thr:total></entry></feed>