<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Firefox &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/firefox/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Tue, 04 Jan 2011 08:05:06 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>新Twitterに非公式RTを追加するChrome/Firefox拡張</title>
		<link>https://blog.mach3.jp/2011/01/04/unofficial-retweet-by-extension.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 04 Jan 2011 08:05:06 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Twitter]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1354</guid>

					<description><![CDATA[個人的にはすっかりTwitterの新しい画面に慣れきってしまいまして、 最近では別途クライアントを使用せずにブラウザ上でTwitterしてます。 そこで気になるのは、いわゆる非公式RTと呼ばれるアレです。 非公式RTにつ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>個人的にはすっかりTwitterの新しい画面に慣れきってしまいまして、<br />
最近では別途クライアントを使用せずにブラウザ上でTwitterしてます。<br />
そこで気になるのは、いわゆる非公式RTと呼ばれるアレです。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TSLSpuqqkuI/AAAAAAAABIs/7LfCYNtRSZw/201101041655.png" alt="新Twitterに非公式RTを追加するChrome/Firefox拡張"/></figure>



<p></p>



<span id="more-1354"></span>



<p>非公式RTについては趣向主義色々あれど、<br />
身内でじゃれあう時には欲しくなっちゃいますね。<br />
そんなわけで、非公式RTボタンを追加するブラウザ拡張を2点ここに。</p>



<h2 class="wp-block-heading">Chrome</h2>



<p><a href="https://chrome.google.com/extensions/detail/mejfljhfeahhhicjefeehikaooffggmf">Classic Retweet &#8211; Google Chrome 拡張機能ギャラリー</a></p>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TSLRYkjMNaI/AAAAAAAABIg/nU2tAwKBZ0E/201101041637.png" alt="Classic Retweet"/></figure>



<p></p>



<p>導入すると、Twitterの各ツイートの「リツイート」ボタンの右に<br />
「ClassicRetweet」というのが出現するので、これをリプライ同様に使います。<br />
自分のツイートにはつかないみたいです。（上の画像は合成です！）</p>



<h2 class="wp-block-heading">Firefox</h2>



<p>Firefoxの場合はユーザースクリプトでの導入になりますので、<br />
事前に<a href="https://addons.mozilla.org/ja/firefox/addon/748/">Greasmonky</a>を入れておきましょう。</p>



<p><a href="http://userscripts.org/scripts/show/89252">Twitter add RT button for new UI for Greasemonkey</a></p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TSLRYopxUEI/AAAAAAAABIc/rboGNvYBxdE/201101041638.png" alt="Twitter add RT button for new UI for Greasemonkey"/></figure>



<p></p>



<p>インストール後、「返信」の右に「RT」「QT」ボタンが出現します。<br />
こちらは自分のツイートにも出ます。</p>



<p>（追記）<br />
こちらのユーザースクリプトをChromeで使うことも出来ます。お好みで。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Twitterの新公式ページ、<br />
クライアントをフル活用している方には少し物足りないかもしれませんが、<br />
関連ツイートとかも見やすくなっているので個人的には十分な感じです。<br />
食わず嫌いな方がいましたら是非に。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>今すぐ出来る、ちょこざいなサイトパフォーマンスアップ</title>
		<link>https://blog.mach3.jp/2010/11/30/quick-tip-for-site-performance.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 30 Nov 2010 01:00:50 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Firebugs]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Yahoo]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1187</guid>

					<description><![CDATA[一言にサイトパフォーマンスアップと言っても、どこまで手をつけるか悩みどころ。 今日のお話は、出来るだけ忘れずにやっておきたいごくごく簡単なチューニングです。 フロントエンドで出来ること CSSは一番はじめにロードする ス [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>一言にサイトパフォーマンスアップと言っても、どこまで手をつけるか悩みどころ。<br />
今日のお話は、出来るだけ忘れずにやっておきたいごくごく簡単なチューニングです。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TO9wt1cjx2I/AAAAAAAABGQ/rmZ_bSXzSQc/201011242016.png" alt="今すぐ出来るサイトパフォーマンスアップ"/></figure>



<p></p>



<span id="more-1187"></span>



<h2 class="wp-block-heading">フロントエンドで出来ること</h2>



<h3 class="wp-block-heading">CSSは一番はじめにロードする</h3>



<p>スタイルシートに含まれる背景画像のロードと、<br />
ページのレンダリングを出来るだけ早くおこなう為です。</p>



<h3 class="wp-block-heading">JavaScriptは一番最後にロードする</h3>



<p>JavaScriptは&lt;/body&gt;の直前あたりでロードするのがパフォーマンスが上がる様子。<br />
ただし、レンダリング前に処理したいケースもあるので、可能な限りで。</p>



<h3 class="wp-block-heading">CSS/JavaScriptは圧縮しよう</h3>



<p>ツールを使って、CSS/JavaScriptファイルを最小化してあげましょう。<br />
YahooライブラリにあるYUICompressorは、CSS/JS両方を圧縮出来るのと、<br />
ついでに軽くバリデートしてくれるのも助かりますね。</p>



<p>使用例など。</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">java</span> <span class="hljs-selector-tag">-jar</span> <span class="hljs-selector-tag">yuicompressor-2</span><span class="hljs-selector-class">.4</span><span class="hljs-selector-class">.2</span><span class="hljs-selector-class">.jar</span> <span class="hljs-selector-tag">-v</span> <span class="hljs-selector-tag">--charset</span> <span class="hljs-selector-tag">UTF-8</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">hoge</span><span class="hljs-selector-class">.min</span><span class="hljs-selector-class">.js</span> <span class="hljs-selector-tag">hoge</span><span class="hljs-selector-class">.js</span>
</code></span></pre>


<ul class="wp-block-list">
<li><a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a> </li>



<li><a href="/2010/10/yui-compressor-bat.html">YUI Compressorをお手軽にするバッチファイルを書いてみる</a></li>
</ul>



<p>また、導入が面倒な場合はオンラインツールも公開されています。</p>



<ul class="wp-block-list">
<li><a href="http://www.minifycss.com/">Minify CSS &#8211; Compress CSS Code</a></li>



<li><a href="http://www.minifyjs.com/">Free Javascript Compression and Minify Javascript Resources &#8211; Minify JS</a></li>
</ul>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TO9wufBKpsI/AAAAAAAABGY/RcG_VhLapaU/201011242001.png" alt="Minify CSS"/></figure>



<p></p>



<h3 class="wp-block-heading">HTTPアクセスを減らす</h3>



<p>大量のJavaScriptやCSSをロードしているページはご注意を。<br />
可能な限りファイルを纏めて、HTTPアクセスを減らしてやると良いようです。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"hoge.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"fuga.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"foo.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"bar.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>

<span class="hljs-comment">&lt;!-- ↓ ファイルをまとめて圧縮 --&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"mylibraries.min.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></span></pre>


<p>また、大量の画像を部品として使用する場合は、<br />
CSS Spriteなどを利用してまとめてあげると良いですね。</p>



<h3 class="wp-block-heading">CSSの@importを避ける</h3>



<p>@importによるインポートは、<link>に比べてパフォーマンスが落ちるそうなのでご注意を。<br />
むしろ、ひとつのCSSファイルにまとめてあげて圧縮するのがベストですね。<br />
それが面倒だと感じる場合は、LESSやSassのような開発ツールの導入も検討してみましょう。</p>



<ul class="wp-block-list">
<li><a href="http://lesscss.org/">LESS &#8211; Leaner CSS</a></li>



<li><a href="http://sass-lang.com/">Sass &#8211; Syntactically Awesome Stylesheets</a></li>
</ul>



<h3 class="wp-block-heading">DNSルックアップを減らす</h3>



<p>広告やGoogleAnalytics等で致し方ない場合の方が多いですが、<br />
出来るだけ別ドメインからのファイルインポートは避け、<br />
DNSルックアップを減らすのが吉です。</p>



<h2 class="wp-block-heading">サーバサイドで出来ること</h2>



<h3 class="wp-block-heading">Expiresを設定する</h3>



<p>ヘッダの有効期限を適正に設定する事で、更新頻度の低いファイルをキャッシュさせます。<br />
※ApacheのExpiresモジュールが有効になっている必要があります。<br />
cf) <a href="http://httpd.apache.org/docs/2.0/ja/mod/mod_expires.html">mod_expires &#8211; Apache HTTP サーバ</a></p>



<p>.htaccessでの設定例。<br />
有効期限の初期設定を1ヶ月に設定しています。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">ExpiresActive On
ExpiresDefault <span class="hljs-string">"access plus 1 month"</span>
</code></span></pre>


<p>もしくは、ファイルの種類毎に設定を変えたい場合の例がこちら。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">ExpiresActive On
ExpiresByType text/css <span class="hljs-string">"access plus 1 week"</span>
ExpiresByType applicdation/javascript <span class="hljs-string">"access plus 1 month"</span>
ExpiresByType image/png <span class="hljs-string">"access 3 month"</span>
</code></span></pre>


<h2 class="wp-block-heading">YSlowでチェックしてみる</h2>



<p>サイトパフォーマンス測定ツールとしては、こちらもYahooから提供されている、<br />
Firebugプラグインの<a href="http://developer.yahoo.com/yslow/">YSlow</a>が良い感じです。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TO9wuMCaB2I/AAAAAAAABGU/0i7CnQvDDbk/201011242002.png" alt="YSlow"/></figure>



<p></p>



<p>インストールするとFirebugに「YSlow」タブが追加され、<br />
閲覧しているページのパフォーマンスを測定する事が出来ます。<br />
細かく項目別にA～F判定を行ってくれるので、<br />
チェックすべきところがすぐに分かり、目安として使えそうですね。</p>



<ul class="wp-block-list">
<li><a href="http://developer.yahoo.com/yslow/">Yahoo! YSlow for Firebug</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Webデザインは年々リッチになりつつありますが、<br />
その分フロントエンドのパフォーマンスは注意しておきたいですね。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>実験室: 編集可能なTableをcontentEditableで実装してみたかった</title>
		<link>https://blog.mach3.jp/2010/05/29/table-contenteditable.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Sat, 29 May 2010 19:15:00 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[contentEditable]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Webkit]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/05/29/%e5%ae%9f%e9%a8%93%e5%ae%a4-%e7%b7%a8%e9%9b%86%e5%8f%af%e8%83%bd%e3%81%aatable%e3%82%92contenteditable%e3%81%a7%e5%ae%9f%e8%a3%85%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f%e3%81%8b%e3%81%a3%e3%81%9f.html</guid>

					<description><![CDATA[この記事の情報は古くなっています。 jQuery.fn.live は既に現行バージョンで削除されています。 contentEditableは、要素をユーザ側で編集可能にする為の属性です。 ブラウザ毎でちょっとクセのある機 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="caution">
    この記事の情報は古くなっています。<br />
    jQuery.fn.live は既に現行バージョンで削除されています。
</p>



<p>contentEditableは、要素をユーザ側で編集可能にする為の属性です。<br />
ブラウザ毎でちょっとクセのある機能ですが、<br />
これで編集可能Tableを作ったらどうなるか、という実験です。</p>



<span id="more-29"></span>



<h2 class="wp-block-heading">書いてみたもの（Webkit/Firefox）</h2>



<p>まず「myEdit」というidを持つTableを用意し、<br />
その子要素のtdをダブルクリックした際にそのセルを編集可能にトグルし、<br />
編集が終了したら編集不可に戻します。</p>



<p>※ChromeとFirefoxのみで動作確認 ※jQueryを使用</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"#myEdit td"</span>).live(<span class="hljs-string">"dblclick"</span>,<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{

    e.target.contentEditable = <span class="hljs-literal">true</span>;
    e.target.focus();

}).live(<span class="hljs-string">"blur"</span>,<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{

    e.target.contentEditable = <span class="hljs-literal">false</span>;

}).live(<span class="hljs-string">"keydown"</span>,<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{

    <span class="hljs-keyword">var</span> code = e.which;
    <span class="hljs-keyword">var</span> ctrl = (<span class="hljs-keyword">typeof</span> e.modifiers == <span class="hljs-string">"undefined"</span>) ?
    e.ctrlKey : e.modifiers &amp; Event.CONTROL_MASK;
    <span class="hljs-keyword">if</span>(ctrl &amp;&amp; code == <span class="hljs-number">86</span>){
        <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
    }<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(e.keyCode == <span class="hljs-number">13</span>){
        e.target.blur();
        <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
    }

}).live(<span class="hljs-string">"contextmenu"</span>,<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{

    <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;

});
</code></span></pre>


<p><a href="http://jsbin.com/ayuhi">デモを見る（JSBin）</a></p>



<p>各ブラウザのcontentEditableでの改行の仕様が安定していないので、<br />
改行を含まない一行のみのコンテンツに制限して実装しています。<br />
また、改行以外にも余計な要素を挿入させない為、ctrl+vは弾き、<br />
かつコンテキストメニューを無効にしています。</p>



<p>なんだか、問題点いっぱいですぞ？</p>



<h2 class="wp-block-heading">問題点</h2>



<h3 class="wp-block-heading">IE/Operaでの動作</h3>



<p>上のスクリプトはIE/Operaでは動作しません。<br />
というのは、どうやらtdにおけるcontentEditableが動作しない為です。<br />
なので、何か別の要素をtdにappendして、<br />
その要素でcontentEditableをtrueにしてやらなければなりません。</p>



<p>しかし、それをやるなら巷で多く使われている<br />
input要素でスワップしてやる手法の方がよりスマートで楽です。</p>



<h3 class="wp-block-heading">挙動が本当にばらばらである</h3>



<p>各ブラウザでの挙動は本当にまちまちです。<br />
この差異は果たしてハックで埋められるものなのか、甚だ疑問です。</p>



<h3 class="wp-block-heading">データの保護が面倒</h3>



<p>input要素ならば、「一行のテキスト」のみに制限する事は容易ですが、<br />
contentEditableでは上記スクリプトのように面倒な処理をせねばなりません。<br />
そもそも一行に制限しなければならない理由が「安定しないから」ですからね。</p>



<p>保護の為にコンテキストメニューを無効にしている点についても、<br />
ユーザフレンドリーにする為の実装なのに、ユーザの操作を妨げるとは本末転倒。<br />
代替で自前のコンテキストメニューを表示すれば良いですが、<br />
果たしてそこまでしてcontentEditableでやりたいのでしょうか…</p>



<h2 class="wp-block-heading">私的結論</h2>



<p>Webサイト上でクロスブラウザな運用をするのは、<br />
労力的な意味でも報われない感がいっぱいです。</p>



<p>ですが、より限定された使い方、<br />
例えばChromeエクステンションのオプション画面等ならば<br />
使えるのではないでしょうか。</p>



<p>実は、はじめからそれに使いたくて書いたんですけどね…</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>2010/8/23 : メニューバーからのペーストに対応出来てないことに気付く。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
