<?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>Browser &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/browser/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Fri, 13 Jun 2014 01:52:47 +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>PHPのビルトインウェブサーバーを活用して動作確認を捗らす話</title>
		<link>https://blog.mach3.jp/2014/06/13/php54-builtin-server.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 13 Jun 2014 01:52:47 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Virtual Machine]]></category>
		<category><![CDATA[VM]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3844</guid>

					<description><![CDATA[PHPのビルトインウェブサーバーについては以前も軽く触れたのですが、 今回はもう少し細かく噛み砕きつつ、仮想マシンからホストOS（Win/Mac）のサーバーにアクセスして動作確認を捗らせてみます。 まえおき やりたいこと [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>PHPのビルトインウェブサーバーについては<a href="https://blog.mach3.jp/2012/09/21/check-html-with-simple-server.html">以前も軽く触れた</a>のですが、 今回はもう少し細かく噛み砕きつつ、仮想マシンからホストOS（Win/Mac）のサーバーにアクセスして動作確認を捗らせてみます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/-EOcn2k67Ig4/U5fvKKdSu3I/AAAAAAAACfo/qKn6R_tP4-o/s400/2014-0611-00.png" alt="PHPのビルトインウェブサーバーをもっと活用して動作確認を捗らす話"/></figure>



<p></p>



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



<h2 class="wp-block-heading">まえおき</h2>



<h3 class="wp-block-heading">やりたいこと</h3>



<ul class="wp-block-list">
<li>仮想マシン（Windows）で、ローカルで制作中のWebサイトの動作確認をしたい。</li>



<li>せっかくなのでhttpアクセスで閲覧したい。</li>



<li>でもどこかにアップロードしたりローカルサーバ構築したりするのはめんどう。</li>



<li>せっかちなのでDropboxの同期をまっている心の余裕がない。</li>
</ul>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/-erUouvs_1s0/U5fvKWgAgEI/AAAAAAAACfo/TT13XDUstMw/s500/2014-0611-01.png" alt="やりたいこと"/></figure>



<p></p>



<p>こういう時にはPHPビルトインウェブサーバーが簡単でおすすめです。</p>



<ul class="wp-block-list">
<li>好きなディレクトリをドキュメントルートにしてコマンド一発で即時に簡易Webサーバが立ち上がります。</li>



<li>ログがターミナルに流れるのでわかりやすく、どことなくテンションがあがります。</li>



<li>ちょっとしたPHPのスクリプトを確認できるオマケつき。</li>



<li>ルータースクリプトも使える。</li>
</ul>



<h3 class="wp-block-heading">別にやりたくないこと</h3>



<ul class="wp-block-list">
<li>PHPの動作確認はちゃんと仮想マシン上のLinux等の開発環境で行います。<br /><br />（できるだけ本番環境にあわせてチェックを行いたいですし、 PHPを弄る様な方ならば素直にLinux環境のVMで環境構築した方が断然楽だと思います。）</li>
</ul>



<h2 class="wp-block-heading">ビルトインウェブサーバーの使い方</h2>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/-1dPYOnf5kTU/U5fwS_jMYDI/AAAAAAAACf8/EAFwnJWQfU8/s500/2014-0611-02.png" alt="PHPビルトインウェブサーバー"/></figure>



<p><a href="http://www.php.net/manual/ja/features.commandline.webserver.php">  </a></p>



<h3 class="wp-block-heading">PHP5.4+ の導入</h3>



<p>ここでは詳しく触れませんが、ビルトインウェブサーバーを使用するにはPHP5.4以降が必要です。 Windowsでもすぐに動くバイナリが配布されていますし、Macならmacportsやhomebrewで導入も容易だと思います。</p>



<ul class="wp-block-list">
<li><a href="http://windows.php.net/download/">PHP For Windows: Binaries and sources Releases</a></li>



<li><a href="http://www.macports.org/">The MacPorts Project &#8212; Home</a></li>



<li><a href="http://brew.sh/index_ja.html">Homebrew — OS X用パッケージマネージャー</a></li>
</ul>



<h3 class="wp-block-heading">ビルトインウェブサーバーの起動</h3>



<ul class="wp-block-list">
<li><a href="http://www.php.net/manual/ja/features.commandline.webserver.php">PHP: ビルトインウェブサーバー &#8211; Manual</a></li>
</ul>



<p>詳しくは上のURLにある通りです。<code>php</code> コマンドに <code>-S</code> オプションを渡す事でウェブサーバーを起動することができます。 その他オプションの書式は下記のようになります。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">$ php -S <span class="hljs-tag">&lt;<span class="hljs-name">ホスト名</span>&gt;</span>:<span class="hljs-tag">&lt;<span class="hljs-name">ポート番号</span>&gt;</span> -t <span class="hljs-tag">&lt;<span class="hljs-name">ドキュメントルートのパス</span>&gt;</span>
</code></span></pre>


<p>例えば、localhostの8080番ポートで、 &#8220;public_html&#8221; ディレクトリをドキュメントルートとしてWebサーバを立ち上げる場合は次のようになります。</p>


<pre class="wp-block-code"><span><code class="hljs">$ php -S localhost:8080 -t public_html
</code></span></pre>


<h3 class="wp-block-heading">仮想マシンから確認する</h3>



<p>ホスト名がlocalhostでは仮想環境からアクセスする事ができません。 そこで、次のようにホスト名を <strong>&#8220;0.0.0.0&#8221;</strong> にして起動する事で外部から接続できるようになります。</p>


<pre class="wp-block-code"><span><code class="hljs">$ php -S 0.0.0.0:8080 -t public_html
</code></span></pre>


<p>例えばサーバを起動するマシンのローカルIPアドレスが 192.168.10.3 などだった場合、 仮想マシンのゲストOSから &#8220;http://192.168.10.3:8080&#8221; へアクセスすれば直接動作確認をする事ができるようになります。 （これはあくまで一例で、アクセス先のアドレスは仮想マシンのネットワーク設定によって様々なので注意しましょう）</p>



<p>IEの確認には、Microsoft提供の <a href="http://modern.ie/ja-jp">modern.ie</a> が便利です。 昔はVrtualPC用のイメージだけだったのですが、modern.ie になってからはVirtualBox、VMWare、Parallels等、 様々なプラットフォーム用の仮想マシンイメージを配布しています。</p>



<ul class="wp-block-list">
<li><a href="http://modern.ie/ja-jp">Internet Explorer のテストが簡単に | modern.IE</a></li>
</ul>



<h3 class="wp-block-heading">ルータースクリプトを使う</h3>



<p>このビルトインウェブサーバーの素敵なポイントの一つに、<strong>ルータースクリプト</strong> を簡単に使用出来るという利点があります。 ざっくり言うと、Apacheのmode_rewriteのような処理がPHPスクリプトを通じて行えるようになる代物です。</p>



<p>例えばこれは、Wordpress の .htaccess にある mod_rewrite の記述です。 この記述のおかげで WordPress はURLをデザインする事が出来るわけですね。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"># BEGIN WordPress
<span class="hljs-tag">&lt;<span class="hljs-name">IfModule</span> <span class="hljs-attr">mod_rewrite.c</span>&gt;</span>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php &#91;L]
<span class="hljs-tag">&lt;/<span class="hljs-name">IfModule</span>&gt;</span>
# END WordPress
</code></span></pre>


<p>ここで記述されているルールは非常に単純で、 「アクセスされたURLにあたるファイルやディレクトリが存在しない場合は、index.phpでレスポンスを返す」だけです。 同様の処理をPHPのルータースクリプトで記述してみましょう。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-comment">/* _router.php */</span>
<span class="hljs-keyword">if</span>(file_exists($_SERVER&#91;<span class="hljs-string">"REQUEST_FILENAME"</span>])){
    <span class="hljs-comment">// false を返すとリクエストされたリソースをそのまま返します</span>
    <span class="hljs-keyword">return</span> <span class="hljs-keyword">false</span>;
} <span class="hljs-keyword">else</span> {
    <span class="hljs-keyword">require</span> <span class="hljs-string">"index.php"</span>;
}
</span></code></span></pre>


<p>あとは、この内容を記述した &#8220;_router.php&#8221; をコマンドに渡すだけです。</p>


<pre class="wp-block-code"><span><code class="hljs">$ php -S 0.0.0.0:8080 -t public_html public_html/_router.php
</code></span></pre>


<p>mod_rewrite のような処理を簡単にテストしたい場合や、 History.pushState を使った構成で制作を進める時などに重宝しています。</p>



<h2 class="wp-block-heading">Gruntタスクで起動する</h2>



<p>Gruntを使って開発をされている方は、<a href="https://github.com/gruntjs/grunt-contrib-connect">grunt-contrib-connect</a> のような感じで開発用サーバを起動したいと考えるでしょう。 ちょうどそのようなプラグインが公開されていたので、ここはひとつ活用させて頂きます。</p>



<ul class="wp-block-list">
<li><a href="https://github.com/sindresorhus/grunt-php">sindresorhus/grunt-php @ Github</a></li>
</ul>



<p>タスク設定例:</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">grunt</span><span class="hljs-selector-class">.initConfig</span>({
    <span class="hljs-attribute">php</span>: {
        dist: {
            options: {
                port: <span class="hljs-number">8080</span>,
                hostname: <span class="hljs-string">"0.0.0.0"</span>,
                base: <span class="hljs-string">"public_html"</span>,
                router: <span class="hljs-string">"_router.php"</span>,
                keepalive: true
            }
        }
    }
});
</code></span></pre>


<p>router のパスは base からの相対パスになります。</p>



<p>JavaScriptやCSSのコンパイル等で <strong>watch</strong> タスクを利用している場合は、サーバーの起動と同時に行えるようにしたいですね。 その際には <code>keepalive</code> を <strong>false</strong> にし、次のように watch の前に登録して起動します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-comment">// `$ grunt dev` で起動</span>
grunt.registerTask(<span class="hljs-string">"dev"</span>, &#91;<span class="hljs-string">"php:dist"</span>, <span class="hljs-string">"watch"</span>]);
</code></span></pre>


<p>Grunt で php を扱うプラグインにはこの他にも <a href="https://github.com/ddprrt/connect-php">ddprrt/connect-php</a> があります。 こちらは grunt-conrib-connect のミドルウェアとして動かすタイプのライブラリで、 5.4+ でなくても動くかわりに、ルータースクリプト等は使えなさそうです。gruntベースで自前で書けという事でしょう。</p>



<p>また、プラグインを探していた当初、<strong>grunt-php</strong> が見つからなかった為、 ほぼ同じような動作をする物を自前で書いて使っていたのは<a href="https://github.com/mach3/grunt-phps">秘密</a>です。 私が書いた物よりも grunt-php の方が優秀そうなので、何も書かなかった事にしました。 grunt-php に無くて自前の物にある機能といえばアクセスログの出力ぐらいで、オプションの名前などもほとんど同じでした。 どちらも grunt-contrib-connect を参考にしているので当たり前ですね。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>単純に確認用のサーバを起動したいのならば grunt-contrib-connect で十分なのですが、 URLのリライト等をしたい場合などはPHPビルトインウェブサーバーの方が楽に設定出来る気がします。 Gruntを使わない人でも簡単に扱えるは大きなメリットですね。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IEの透過PNG+opacityの不具合を治すメモ</title>
		<link>https://blog.mach3.jp/2011/02/17/png-and-opacity-on-explorer.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Thu, 17 Feb 2011 03:01:54 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DD_belatedPNG]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PNG]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1595</guid>

					<description><![CDATA[透過PNGの処理が下手くそなのは、IE6だけではなく、IE7/8も同様です。 IEで透過PNGをあてた要素のopacityを弄ると、周りがグレーがかって汚くなります。 この現象はよく知られていると思いますが、今日はこの不 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>透過PNGの処理が下手くそなのは、IE6だけではなく、IE7/8も同様です。<br />
IEで透過PNGをあてた要素のopacityを弄ると、周りがグレーがかって汚くなります。<br />
この現象はよく知られていると思いますが、今日はこの不具合の治し方のメモを記しておきます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/_JJkNs5Ixl70/TVu-3xR1lSI/AAAAAAAABMM/DOQpFbompG8/201102162110.png" alt="IEの透過PNG+opacityの不具合を治すメモ"/></figure>



<p></p>



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



<h2 class="wp-block-heading">サンプルコード</h2>



<p>例えば、こんなコード。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">style</span>&gt;</span><span class="css">
<span class="hljs-selector-class">.test</span> {
    <span class="hljs-attribute">display</span>:block;
    <span class="hljs-attribute">width</span>:<span class="hljs-number">128px</span>;
    <span class="hljs-attribute">height</span>:<span class="hljs-number">128px</span>;
    <span class="hljs-attribute">background</span>:<span class="hljs-built_in">url</span>(./test.png) <span class="hljs-number">0</span> <span class="hljs-number">0</span> no-repeat transparent;
}
<span class="hljs-selector-class">.test</span><span class="hljs-selector-pseudo">:hover</span> {
    <span class="hljs-attribute">background-image</span>:<span class="hljs-built_in">url</span>(./test-hover.png);
}
</span><span class="hljs-tag">&lt;/<span class="hljs-name">style</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"test"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
</code></span></pre>


<p>test.pngとtest-hover.pngは透過PNGです。<br />
IE6では当然透過されずに背景がグレーになります。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/_JJkNs5Ixl70/TVu99U1FJqI/AAAAAAAABL8/IkDaUNtWpnI/20110216a.png" alt="IE6は背景がグレーに"/></figure>



<p></p>



<p>IE7,8では綺麗に表示されている様子ですが…</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">".test"</span>).css( <span class="hljs-string">"opacity"</span>, <span class="hljs-string">"0.5"</span> );
</code></span></pre>


<p>このようにfilterのopacityを弄ってやると、下記の画像のような状態になります。キタナイ。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/_JJkNs5Ixl70/TVu99fg5tCI/AAAAAAAABMA/21E-ATnMuv0/20110216b.png" alt="IE7,8ではフチが黒くなる"/></figure>



<p></p>



<h2 class="wp-block-heading">DD_belatedPNGはどうか</h2>



<p>上記の現象はalphaImageLoaderを使えば解決出来るのですが、<br />
alphaImageLoaderはhover時の処理が面倒だったり、遅かったりと問題もあります。<br />
そこで去年ぐらいからもてはやされているDD_belatedPNGを使ってみましょう。</p>



<p><a href="http://www.dillerdesign.com/experiment/DD_belatedPNG/">DD_belatedPNG: Medicine for your IE6/PNG headache!</a></p>



<p>DD_belatedPNGは他の透過PNG用ライブラリと異なり、<br />
alphaImageLoaderを使わずにVMLで透過を実現しているのが特徴。<br />
パフォーマンスも比較的上々のようです。</p>



<h3 class="wp-block-heading">IE8でエラーが出る</h3>



<p>が、困ったことにIE6向けのライブラリであるが為か、<br />
IE8で走らせようとするとエラーが出ます。<br />
今回のお題はIE6～8全てに関わる物なのですが、困りました。</p>



<h3 class="wp-block-heading">jQuery移植版を使用する</h3>



<p>探してみたところ、DD_belatedPNGをjQueryプラグインとして移植した記事を発見。<br />
そこらへんの問題も解決してくださったみたいです。素晴らしい！</p>



<dl>
<dt>該当記事</dt>
<dd><a href="http://wakuworks.jugem.jp/?eid=153">DD_belatedPNG を改造して、jQuery.belatedPNG を作ってみた | プログラマ気分</a></dd>
<dt>リポジトリ</dt>
<dd><a href="https://github.com/wakuworks/jquery.belatedPNG/">wakuworks/jquery.belatedPNG &#8211; GitHub</a></dd>
</dl>



<h2 class="wp-block-heading">jquery.belatedPNG.jsで試してみよう</h2>



<p>jquery.belatedPNG.jsは、<br />
jQueryオブジェクトにfixPng()メソッドを提供します。<br />
こんな感じにしてみる。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">".test"</span>).fixPng().css(<span class="hljs-string">"opacity"</span>,<span class="hljs-string">"0.5"</span>);
</code></span></pre>


<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/_JJkNs5Ixl70/TVu99irjazI/AAAAAAAABME/sqTbHGUerLQ/20110216c.png" alt="jquery.belatedPNG.jsで試してみよう"/></figure>



<p></p>



<p>opacityを設定しても汚くならない！素晴らしい！</p>



<h3 class="wp-block-heading">マウスイベントが効かなくなる問題</h3>



<p>ただ、このままだとa要素に対するマウスイベントが効かなくなってしまう模様。<br />
CSSで設定した:hoverのスタイルも適用されず、<br />
クリックしてもウンともスンともいいません。</p>



<p>なので、子要素に「透明な何か」を入れてあげる事で解決を試みます。 例えば透過Gif。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"test"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"trans.gif"</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"128"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"128"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Foobar"</span> /&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
</code></span></pre>


<p>これでマウスイベントがきちんと効くようになりました。<br />
hoverのスタイルも適用されます。</p>



<p>もしくは、同サイズの透明要素を中にappendしてやったり。</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-keyword">var</span> $test = $(<span class="hljs-string">".test"</span>);

<span class="hljs-comment">// opacityに非対応なブラウザに適用</span>
<span class="hljs-keyword">if</span>( !$.support.opacity ){
    $test.fixPng()
    .append(
        $(<span class="hljs-string">"&lt;span&gt;"</span>).css({
            display : <span class="hljs-string">"block"</span>,
            width : $test.width(),
            height : $test.height(),
            backgroundColor : <span class="hljs-string">"#ffffff"</span>,
            opacity : <span class="hljs-number">0</span>,
            cursor : <span class="hljs-string">"pointer"</span>
        })
    );
}

$test.css( <span class="hljs-string">"opacity"</span>, <span class="hljs-string">"0.5"</span> );
</code></span></pre>


<h2 class="wp-block-heading">まとめ</h2>



<p>
  jQueryのプラグインでfadeIn/fadeOut等を使うとopacityが弄られますが、<br /> その影響でこの不具合に遭遇する事があるので注意したいですね。
</p>



<p>
  マウスイベントの件は、他に良い解決策あったら知りたいです！
</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>JavaScriptで「パスワードを表示」機能を実装してみる</title>
		<link>https://blog.mach3.jp/2011/01/18/javascript-password-toggle.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 18 Jan 2011 02:11:39 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Password]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1437</guid>

					<description><![CDATA[通常なら文字が伏せてある状態のパスワード入力フォームですが、 入力したパスワードを確認する為の「パスワードを表示」機能を JavaScriptで実装する為のメモです。（jQuery使用） ざっくりとした仕掛け チェックボ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>通常なら文字が伏せてある状態のパスワード入力フォームですが、<br />
入力したパスワードを確認する為の「パスワードを表示」機能を<br />
JavaScriptで実装する為のメモです。（jQuery使用）</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TTSLFjwxAHI/AAAAAAAABJo/qKQvnTxJ7io/201101180330.png" alt="JavaScriptで「パスワードを表示」機能を実装してみる"/></figure>



<p></p>



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



<ol class="wp-block-list">
<li>ざっくりとした仕掛け</li>



<li>IE兄弟はinput要素のtype属性をいじれないらしい</li>



<li>textとpasswordを並べて表示/非表示をトグルする</li>



<li>コード抜粋</li>
</ol>



<h2 class="wp-block-heading">ざっくりとした仕掛け</h2>



<p>チェックボックスにチェックを入れると、<br />
パスワードのtypeが<em>text</em>に切り替わって内容が確認出来るようになる仕組み。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TTSLFy-TuyI/AAAAAAAABJw/xTl8BbYjSXI/201101180231.png" alt="ざっくりとした仕掛け"/></figure>



<p></p>



<p><em>type直接いじれば楽じゃーん。</em><br />
そう考えていた時代が僕にもありました。</p>



<h2 class="wp-block-heading">IE兄弟はinput要素のtype属性をいじれないらしい</h2>



<p>ところがIEはinput要素のtype属性を弄ろうとするとエラーになります。<br />
その為jQueryでも、attr()で同様の処理を行おうとすると、以下の例外が投げられてきます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>type property can&#8217;t be changed</p>
</blockquote>



<p>HTML</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"password"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"foo"</span> /&gt;</span>
</code></span></pre>


<p>JavaScript</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">try</span> {
    $(<span class="hljs-string">"#foo"</span>).attr(<span class="hljs-string">"type"</span>, <span class="hljs-string">"text"</span> );
} <span class="hljs-keyword">catch</span>( e ){
    <span class="hljs-built_in">console</span>.log( e ); <span class="hljs-comment">// type property can't be changed</span>
}
</code></span></pre>


<p>cloneNode等で複製したオブジェクトでも同様なので、<br />
これを回避する為には手作業で要素の複製を行い、<br />
それでもって元の要素とスワップしなければならないみたいです。面倒ですね！</p>



<h2 class="wp-block-heading">textとpasswordを並べて表示/非表示をトグルする</h2>



<p>面倒なのは回避する事にして、<br />
<em>input[type=text]</em>と<em>input[type=password]</em>を並べておき<br />
表示/非表示を切り替える方向でやってみます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TTSLF1EUU9I/AAAAAAAABJs/bdY4vXqHq84/201101180318.png" alt="textとpasswordを並べて表示/非表示をトグルする"/></figure>



<p></p>



<ol class="wp-block-list">
<li>input[type=text]とinput[type=password]の入力内容を同期させる</li>



<li>チェックボックスのON/OFFでそれぞれの表示/非表示を切り替える</li>
</ol>



<h2 class="wp-block-heading">コード抜粋</h2>



<p>こんな感じになりました。</p>



<p><a href="http://jsfiddle.net/mach3ss/Dk448/">DEMO ( jsFiddle )</a></p>



<h3 class="wp-block-heading">HTML</h3>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"password"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"pswd"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"pswd"</span> /&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"pswd-text"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"pswd-text"</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"display:none;"</span> /&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"pswd-toggle"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"pswd-toggle"</span> <span class="hljs-attr">data-for</span>=<span class="hljs-string">"pswd"</span> /&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"pswd-toggle"</span>&gt;</span>パスワードを表示する<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
</code></span></pre>


<p><em>パスワード（#pswd）</em>の相方となる<em>テキストフィールド（#pswd-text）</em>を非表示にして設置。<br />
<em>チェックボックス（#pswd-toggle）</em>には、<em>data-for</em>属性で対象のID(pswd)を入れておきます。<br />
ちょうど、label要素のfor属性のように。</p>



<h3 class="wp-block-heading">JavaScript</h3>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$.fn.extend({
    <span class="hljs-attr">togglePassword</span> : <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"> config </span>)</span>{
        option = $.extend({
            <span class="hljs-string">"postfix"</span> : <span class="hljs-string">"-text"</span>
        }, config );
        <span class="hljs-comment">// 入力内容を同期するfunction</span>
        sync = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
            <span class="hljs-keyword">var</span> i = <span class="hljs-keyword">this</span>.type.toUpperCase() === <span class="hljs-string">"PASSWORD"</span> ?
                <span class="hljs-keyword">this</span>.id + option.postfix :
                <span class="hljs-keyword">this</span>.id.replace( option.postfix, <span class="hljs-string">""</span> );
            $( <span class="hljs-string">"#"</span> + i ).val( $(<span class="hljs-keyword">this</span>).val() );
        };
        <span class="hljs-comment">// 表示/非表示を切り替えるfunction</span>
        toggle = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
            <span class="hljs-keyword">if</span>( <span class="hljs-keyword">this</span>.checked ){
                $.data( <span class="hljs-keyword">this</span>, <span class="hljs-string">"pswd"</span> ).hide();
                $.data( <span class="hljs-keyword">this</span>, <span class="hljs-string">"text"</span> ).show();
            } <span class="hljs-keyword">else</span> {
                $.data( <span class="hljs-keyword">this</span>, <span class="hljs-string">"pswd"</span> ).show();
                $.data( <span class="hljs-keyword">this</span>, <span class="hljs-string">"text"</span> ).hide();
            }
        };
        <span class="hljs-keyword">this</span>.each( <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
            <span class="hljs-keyword">var</span> id, pswd, text, check, handlers;
            id = <span class="hljs-keyword">this</span>.getAttribute( <span class="hljs-string">"data-for"</span> );
            pswd = $(<span class="hljs-string">"#"</span> + id );
            text = $(<span class="hljs-string">"#"</span> + id + option.postfix );
            check = $(<span class="hljs-keyword">this</span>);
            <span class="hljs-comment">// テキストフィールドのイベント</span>
            handlers = { <span class="hljs-attr">keyup</span> : sync, <span class="hljs-attr">blur</span> : sync };
            pswd.bind( handlers );
            text.bind( handlers );
            <span class="hljs-comment">// チェックボックスのイベント</span>
            $.data( <span class="hljs-keyword">this</span>, <span class="hljs-string">"pswd"</span>, pswd );
            $.data( <span class="hljs-keyword">this</span>, <span class="hljs-string">"text"</span>, text );
            $(<span class="hljs-keyword">this</span>).click( toggle );
            <span class="hljs-comment">// 初期化</span>
            toggle.apply( <span class="hljs-keyword">this</span> );
        });
    }
});

$(<span class="hljs-string">"#pswd-toggle"</span>).togglePassword();
</code></span></pre>


<p>IEスルーするなら恐ろしく短いコードで済みそうですが…残念。</p>
]]></content:encoded>
					
		
		
			</item>
		<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>2010年に出会った愛すべきリソース達*11</title>
		<link>https://blog.mach3.jp/2010/12/29/lovely-resources-2010.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Wed, 29 Dec 2010 08:46:00 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Yahoo]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1284</guid>

					<description><![CDATA[2010年も残りわずか。CS5やらHTML5やらiナントカやら忙しい1年でしたが、 せっかくなので今年出会った素晴らしいリソースを振り返ってみます。 @anywhere Welcome to @Anywhere &#124; de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>2010年も残りわずか。CS5やらHTML5やらiナントカやら忙しい1年でしたが、<br />
せっかくなので今年出会った素晴らしいリソースを振り返ってみます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TRrzte8LnJI/AAAAAAAABH4/5TZJ_Ar76fI/201012291739.png" alt="Great Resources 2010"/></figure>



<p></p>



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



<h2 class="wp-block-heading">@anywhere</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TI-FvKGTMFI/AAAAAAAABB4/DWq3p5mDXQM/201009142322.png" alt="@anywhere"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://dev.twitter.com/anywhere">Welcome to @Anywhere | dev.twitter.com</a></h3>



<p>Twitterの機能がどのサイトでも活用出来るようになるJavaScriptリソース。<br />
認証からタイムライン読み込み、パーツのレンダリングまで。<br />
連携サービスを組むならおさえておきたい。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/04/twitter-anywhere.html">ブログで@anywhereを試してみた！ ～ どこでもTwitter | Mach3.laBlog</a></li>



<li><a href="/2010/09/auth-anywhere.html">@anywhereで認証してみる備忘録 | Mach3.laBlog</a></li>
</ul>
</blockquote>



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



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TAuiwlC67MI/AAAAAAAAA7k/f0V7_v6GCEM/s800/201006062143.png" alt="jsLint"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://www.jslint.com/">JSLint, The JavaScript Code Quality Tool</a></h3>



<p>JavaScriptをストリクトに書く為のチェックツール。<br />
前はWSH版がダウンロード出来たんですけど見つからなくなってますね。<br />
<a href="https://github.com/douglascrockford/JSLint">Github</a>のを使ってなんやかんやするんでしょうか。こんど試してみよう。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/06/jslint.html">JSLintでストリクトなJavaScriptを書く | Mach3.laBlog</a></li>
</ul>
</blockquote>



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



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TC9OtbZAqRI/AAAAAAAAA9c/UGfbYnLsdWc/s800/201007032351.png" alt="LESS"/></figure>



<p></p>



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



<p>変数に代入したり、ネストしたり、ミックスインしたり…<br />
CSSコーディングが素晴らしくスピードアップするCSS開発キット。<br />
エディタからも簡単に呼び出せるので重宝しています。<br />
似たようなプロジェクトに「<a href="http://sass-lang.com/">Sass</a>」というのもあります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/07/less-on-ruby-windows.html">ゼロから導入する、Ruby LESS for Windows ～素晴らしいCSSソリューション | Mach3.laBlog</a></li>



<li><a href="/2010/08/css3-snippet-for-less.html">CSS3対応の為のLESSスニペットメモ | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">jsDoc Toolkit</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TExlCdWAOSI/AAAAAAAAA_Y/oT60gg9HcrM/s800/201007260122.png" alt="jsDoc Toolkit"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://code.google.com/p/jsdoc-toolkit/">jsdoc-toolkit &#8211; Project Hosting on Google Code</a></h3>



<p>JavaScript版のドキュメント生成ツール。<br />
こちらもエディタから使うと大変便利。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/07/jsdoctoolkit-from-notepad.html">エディタ（Notepad++）からJSDoc Toolkitを使ってみる | Mach3.laBlog</a></li>
</ul>
</blockquote>



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



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TEb6RR1X0LI/AAAAAAAAA-4/_5uGmJsiuwg/s800/201007212239.png" alt="Modernizr"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://www.modernizr.com/">Modernizr</a></h3>



<p>HTML5の新機能等が使用可能かどうかを判別してくれるライブラリ。<br />
判別の結果はhtml要素のクラスとして出力してくれる他、<br />
メンバを直接参照する事でも結果を知ることが出来ます。</p>



<p>便利なスクリプトなのですが、最近<a href="http://headjs.com/">Head.js</a>に持って行かれた感が…<br />
こちらは未検証なのでまた後ほどレポートを。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/07/modernizr-js.html">「Modernizr」 モダンなクロスブラウザCSSの為の支援スクリプト | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">Raphael / gRaphael</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TDwr1qEithI/AAAAAAAAA-Q/6t9diGuL98g/s800/201007131656.png" alt="gRaphael"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://g.raphaeljs.com/">gRaphaël—Charting JavaScript Library</a></h3>



<p><a href="http://raphaeljs.com/index.html">Raphael</a>は、ベクターグラフィックを簡単に扱うためのJavaScriptライブラリ。<br />
gRaphaelはそれをグラフ描画用に拡張する為のプラグインです。<br />
投稿した時はまだドキュメントが不備でしたが…今見に行きましたがまだありませんでした！</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/07/graphael.html">実験室: gRaphaëlでインタラクティブなグラフを描いてみる | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">IE9.js</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TJLUD970GRI/AAAAAAAABCU/oxPr4vt8h9U/201009171134.png" alt="IE9.js"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://code.google.com/p/ie7-js/">ie7-js &#8211; Project Hosting on Google Code</a></h3>



<p>プロジェクト名としては「IE7.js」ですが、<br />
その中に含まれるIE8.js、IE9.jsやie7-squish.jsが結構便利。<br />
JavaScriptが動く事が前提になりますが、擬似クラスやHTML5の新要素の対応もしてくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/09/ie9js-clearfix.html">IE9.jsで実現するシンプルなclearfixとその他の恩恵 | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">YUI Compressor</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TMmzBvs9ayI/AAAAAAAABEs/ZY7JUy71f0w/201010290014.png" alt="YUI Compressor"/></figure>



<p></p>



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



<p>Yahoo!がおくる、JavaScriptやCSSを圧縮するツール。<br />
Webページのパフォーマンス向上を図るのに欠かせません。<br />
ご一緒に<a href="http://developer.yahoo.com/yslow/">YSlow</a>（Firebugプラグイン）も是非。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/10/yui-compressor-bat.html">YUI Compressorをお手軽にするバッチファイルを書いてみる | Mach3.laBlog</a></li>



<li><a href="/2010/11/quick-tip-for-site-performance.html">今すぐ出来る、ちょこざいなサイトパフォーマンスアップ | Mach3.laBlog</a></li>
</ul>
</blockquote>



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



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TKnnq0vc63I/AAAAAAAABDE/OOIY9hnndPo/201010042339.png" alt="mustache"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://mustache.github.com/">{{ mustache }}</a></h3>



<p>マルチランゲージテンプレートエンジン！（言い切った！）<br />
様々な言語に対応する、シンプルで使いやすいテンプレートエンジンです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/10/mustache-template-engine.html">どこでも活躍できるテンプレートエンジン「Mustache」 | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">Sammy.js</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TJjDmzzS06I/AAAAAAAABCw/rriMLBnT_6c/201009212338.png" alt="Sammy.js"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://code.quirkey.com/sammy/">Sammy.js</a></h3>



<p>Ajaxコンテンツのセッションを操る為のjQueryプラグイン。<br />
要するに、location.hashによるルーティングをウマイこと処理してくれるスクリプトです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/09/sammy-js.html">Sammy.jsでAjaxコンテンツのセッションを操る | Mach3.laBlog</a></li>
</ul>
</blockquote>



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



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TOIVnTG4iGI/AAAAAAAABFc/mpVknEjCqqU/201011161309.png" alt="jQueryMobile"/></figure>



<p></p>



<ul class="wp-block-list">
<li><a href="http://jquerymobile.com/">jQuery Mobile | jQuery Mobile</a></li>
</ul>



<p>jQueryの作者が送る、スマートフォン向けのjQueryUIのようなもの。<br />
ルールに従ったマークアップをするだけで、各要素をそれっぽくレンダリングしてくれます。<br />
1月に正式版がリリースされる予定。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/11/jquery-mobile-for-beginner.html">はじめてのjQueryMobile | Mach3.laBlog</a></li>
</ul>
</blockquote>



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



<p>結構色々ありましたね、2010年。<br />
来年もまた素晴らしい技術に出会えますように。</p>



<p>皆様よいお年を！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IE9.jsで実現するシンプルなclearfixとその他の恩恵</title>
		<link>https://blog.mach3.jp/2010/09/17/ie9js-clearfix.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 17 Sep 2010 02:38:08 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[clearfix]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[GoogleCode]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=719</guid>

					<description><![CDATA[既に広く知られているであろう、IE9.jsは、 新旧IEの差異を（出来るだけ）埋めてくれる素晴らしいスクリプトです。 今日のお話は、IE9.jsで実現出来るシンプルなclearfixと、 このスクリプトで実際どんな恩恵が [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>既に広く知られているであろう、<a href="http://code.google.com/p/ie7-js/">IE9.js</a>は、<br />
新旧IEの差異を（出来るだけ）埋めてくれる素晴らしいスクリプトです。<br />
今日のお話は、IE9.jsで実現出来るシンプルなclearfixと、<br />
このスクリプトで実際どんな恩恵が受けられるかの備忘録です。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TJLUD970GRI/AAAAAAAABCU/oxPr4vt8h9U/201009171134.png" alt="IE9.js"/></figure>



<p></p>



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



<p>cf) <a href="http://code.google.com/p/ie7-js/">ie7-js &#8211; Project Hosting on Google Code</a></p>



<h2 class="wp-block-heading">シンプルになったclearfix</h2>



<p>念の為スクリプトのロードも記載しておきます。<br />
IE用の条件分岐コメントを外すと他のブラウザでエラーが出ますのでご注意を。<br />
（これも内部で条件分岐して頂けると大変幸せだなぁ）</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-comment">&lt;!--&#91;if lt IE 9]&gt;
&lt;script src="http://ie7-js.googlecode.com/svn/trunk/lib/IE9.js"&gt;&lt;/script&gt;
&lt;!&#91;endif]--&gt;</span>
</code></span></pre>


<p>そしてこちらがシンプルになったclearfixのコード。</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-class">.clearfix</span><span class="hljs-selector-pseudo">:after</span>{
    <span class="hljs-attribute">content</span>:<span class="hljs-string">""</span>;
    <span class="hljs-attribute">clear</span>:both;
    <span class="hljs-attribute">display</span>:block;
    <span class="hljs-attribute">height</span>:<span class="hljs-number">0</span>;
}
</code></span></pre>


<p>余計なハックを用いず、一種類のセレクタだけでクリーンに書けます。<br />
IE9.jsにより、旧IEでも擬似クラス「:after」が使えるようになったおかげです。<br />
もちろん、「:before」も使えます。</p>



<h2 class="wp-block-heading">その他のIE9.jsの恩恵</h2>



<h3 class="wp-block-heading">ボックスサイズの計算法の統一化</h3>



<p><a href="/2010/06/css-box-sizing.html">ボックスサイズの解釈はIE6の方がわかりやすいと思う</a><br />
で触れたとおり、IE6はボックスサイズをborder-widthとpaddingを含めた値として解釈します。<br />
が、IE9.jsを導入する事で、IE6も他のブラウザ同様の計算法に修正してくれます。<br />
border-boxの方が計算しやすいとは言え、統一してくれるに越したことはありませんね。</p>



<h3 class="wp-block-heading">first-child, last-childの実現</h3>



<p>IE6は言わずもがな、<br />
IE7/8はfirst-childには対応しているものの、last-childは使えません。<br />
IE9.jsはこれら全てにfirst/last-childを提供してくれます。</p>



<h3 class="wp-block-heading">HTML5の新要素にも対応してくれる</h3>



<p>header/nav/article/section等、HTML5で追加された新要素は、<br />
IE～8ではhtml5.js等の力を借りないとCSSを適用する事が出来ませんでした。<br />
IE9.jsは同様の処理も行ってくれちゃいますので、html5.jsをロードする必要がありません。</p>



<h3 class="wp-block-heading">ie7-squish.js</h3>



<p>別途ie7-squish.jsをロードする事で、<br />
ダブルマージン等のIE6のお馴染みのバグを幾つか修復してくれます。<br />
さらに詳細は公式で。<br />
cf) <a href="http://ie7-js.googlecode.com/svn/test/index.html">IE7.js Test Pages</a></p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-comment">&lt;!--&#91;if lt IE 7]&gt;
&lt;script src="http://ie7-js.googlecode.com/svn/trunk/lib/ie7-squish.js"&gt;&lt;/script&gt;
&lt;!&#91;endif]--&gt;</span>
</code></span></pre>


<h2 class="wp-block-heading">まとめ</h2>



<p>IE7jsライブラリの存在は知っていたのですが、予想以上の働きをしてくれる模様。<br />
作者に感謝すると共に、改めて世界中の技術者がIEに頭を悩ませているんだなと実感させられます。<br />
無数の開発者が一丸となってIEという共通の課題を…胸が熱くなりますね。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>BrowserDetect.jsと子孫セレクタによるシンプルなクロスブラウザCSS</title>
		<link>https://blog.mach3.jp/2010/09/16/browserdetect-js-xbrowser-css.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Thu, 16 Sep 2010 02:55:42 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[BrowserDetect]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Modernizr]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=707</guid>

					<description><![CDATA[BrowserDetect.jsは、閲覧環境を判別する為のJSライブラリです。 今回はこれを使用して、Modernizrのような手法で クロスブラウザCSSを書く実験を試みてみます。 BrowserDetect.js J [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="http://www.quirksmode.org/js/detect.html">BrowserDetect.js</a>は、閲覧環境を判別する為のJSライブラリです。<br />
今回はこれを使用して、<a href="http://www.modernizr.com/">Modernizr</a>のような手法で<br />
クロスブラウザCSSを書く実験を試みてみます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TJGGwkARlOI/AAAAAAAABCM/EnC2WVlSUEQ/201009161152.png" alt="BrowserDetect.jsと子孫セレクタによるシンプルなクロスブラウザCSS"/></figure>



<p></p>



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



<h2 class="wp-block-heading">BrowserDetect.js</h2>



<p><a href="http://www.quirksmode.org/js/detect.html">JavaScript &#8211; Browser detect</a></p>



<p>ダウンロードリンクはどうやら無いようなので、<br />
ページ内に書かれたソースをコピー&amp;ペーストします。<br />
使い方は簡単で、スクリプトをロードして<br />
BrowserDetectオブジェクトのプロパティを参照するだけ。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> browser = BrowserDetect.browser; <span class="hljs-comment">//ブラウザ名の取得</span>
<span class="hljs-keyword">var</span> version = BrowserDetect.version; <span class="hljs-comment">//ブラウザバージョンの取得</span>
<span class="hljs-keyword">var</span> os = BrowserDetect.OS; <span class="hljs-comment">// OS名の取得</span>
</code></span></pre>


<h2 class="wp-block-heading">クロスブラウザCSSを書く準備</h2>



<p>もしModernizrを使用した事があればご想像の通りですが、<br />
HTML要素にブラウザ名とバージョンを添えたクラス名を動的に追加してやります。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"html"</span>).addClass( BrowserDetect.browser );
$(<span class="hljs-string">"html"</span>).addClass( BrowserDetect.browser + BrowserDetect.version );
</code></span></pre>


<p>例えばIE6でアクセスすると、HTML要素には次のようにクラスが追加されます。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">&lt;html lang=<span class="hljs-string">"ja"</span> <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"Explorer Explorer6"</span>&gt;
</code></span></pre>


<h2 class="wp-block-heading">
    CSSを書く<br />
  </h2>



<p>
    あとは子孫クラスタを使ってCSS内で条件分岐をしてやれば良いです。<br /> ハック等に頼らないクリーンなCSSが出来上がりますね。
  </p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-id">#Box</span>{
    <span class="hljs-comment">/* デフォルトのスタイル */</span>
    <span class="hljs-attribute">width</span>:<span class="hljs-number">290px</span>;
    <span class="hljs-attribute">height</span>:<span class="hljs-number">210px</span>;
    <span class="hljs-attribute">border</span>:<span class="hljs-number">5px</span> solid <span class="hljs-number">#666</span>;
    <span class="hljs-attribute">padding</span>:<span class="hljs-number">10px</span>;
}
<span class="hljs-selector-class">.Explorer6</span> <span class="hljs-selector-id">#Box</span>{
    <span class="hljs-comment">/* IE6用のスタイル */</span>
    <span class="hljs-attribute">width</span>:<span class="hljs-number">320px</span>;
    <span class="hljs-attribute">height</span>:<span class="hljs-number">240px</span>;
}
</code></span></pre>


<h2 class="wp-block-heading">
    この方法の問題点<br />
  </h2>



<h3 class="wp-block-heading">
    JSが働かないとだめ<br />
  </h3>



<p>
    当たり前ですが、JavaScriptが動かない環境ではデザインが崩れる事が予想されます。<br /> （Modernizr使ってる時点で今更何を言ってるのって感じですが…）
  </p>



<h3 class="wp-block-heading">
    HTML4ではHTML要素のclass属性はInvalidである<br />
  </h3>



<p>
    class属性が使用出来る要素について、<br /> HTML5では「The Every HTML Element」と言及している事から問題はなさそうですが、<br /> どうやらHTML4ではInvalidになる様子。<br /> これもまた、Modernizrも同様に孕んでいる問題点です。<br /> （一体誰が気にするのか、とも思いますが）
  </p>



<p>
    以上の問題を踏まえて、<br /> プロジェクトの趣旨/性格に基づいて使用を判断したいですね。
  </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>HTML5を簡潔にまとめたインフォグラフィック＋Flashの行方</title>
		<link>https://blog.mach3.jp/2010/06/18/infographic-html5-and-flash.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 18 Jun 2010 02:10:00 +0000</pubDate>
				<category><![CDATA[Monologue]]></category>
		<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Infographic]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/06/18/html5%e3%82%92%e7%b0%a1%e6%bd%94%e3%81%ab%e3%81%be%e3%81%a8%e3%82%81%e3%81%9f%e3%82%a4%e3%83%b3%e3%83%95%e3%82%a9%e3%82%b0%e3%83%a9%e3%83%95%e3%82%a3%e3%83%83%e3%82%af%ef%bc%8bflash%e3%81%ae%e8%a1%8c.html</guid>

					<description><![CDATA[「HTML5」をまとめた素晴らしいインフォグラフィックが公開されていました。 重要な新要素や、各ブラウザのサポート状況も簡潔に紹介されています。 WTF is HTML5 (Infographic) ちびっと文字が小さい [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>「HTML5」をまとめた素晴らしいインフォグラフィックが公開されていました。<br />
重要な新要素や、各ブラウザのサポート状況も簡潔に紹介されています。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TBpWIMx3NZI/AAAAAAAAA8Y/H3DW0JsAQDg/s800/201006180205.png" alt="WTF is HTML5"/></figure>



<p></p>



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



<p><a href="http://www.focus.com/images/view/11905/">WTF is HTML5 (Infographic)</a><br />
<a href="http://www.focus.com/images/view/11905/"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TBpWIKWcpWI/AAAAAAAAA8c/6UKoyvajMs0/s800/201006180206.png" alt="WTF is HTML5"></a></p>



<p>ちびっと文字が小さいですが、わかりやすくまとまっていますね。<br />
HTML5を独習する際の目安としても使えそうです。</p>



<p>さて気になるのは下段のFlashに関する項ですが…</p>



<h2 class="wp-block-heading">FlashとHTML、Webを席巻するのはどちらか？</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>HTML5 VS. FLASH. WHO WILL OWN THE WEB&#8217;S INTERACTIVE FUTURE ?</p>
</blockquote>



<p>このインフォグラフィックでは、FlashとHTML5を4つの要素で比較しています。</p>



<ul class="wp-block-list">
<li>どちらが安いか</li>



<li>どちらがパワフルか</li>



<li>どちらがより広く受け入れられるか</li>



<li>どちらが有能か</li>
</ul>



<p>結果は画像を見ての通りですが、「どちらが安いか」については…</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Flash Playerはフリーだが、Adobe製の開発環境は非常に高価だ。HTML5は開発者にとっても無料だ。</p>
</blockquote>



<p>確かにFlashIDEもFlashBuilder(Flex)も製品を購入すると高価ですが、<br />
FlashにはオープンソースのFlexSDKがあります。<br />
<a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK">Flex SDK &#8211; Flex SDK &#8211; Adobe Open Source</a><br />
高価な統合環境を使用しない前提でHTML5と比較するのであれば、<br />
こちらと比較したほうがフェアな気はしますね。</p>



<p>最後は次のように締めくくっています。超訳。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>これらのチョイスは排他的ではなく、場合によって、開発者は両方ともに使用する。<br />
  長い目でみれば、HTML5が要求に叶う選択になるだろう。</p>
</blockquote>



<p>要は、当面の間は適材適所だという事です。</p>



<h2 class="wp-block-heading">私見</h2>



<p>開発者にとっては、インタラクティブなWebアプリを作るにあたって<br />
まだまだFlashに軍配があがるのではないでしょうか。<br />
HTML5にはFlashのような優れた開発環境がまだ無いからです。</p>



<p>ただ、遅かれ早かれFlashIDEは、HTML5+CSS3+JSで<br />
プロジェクトの書き出しが出来るようになるのではと予想しています。<br />
ASとJSは親戚ですし、Flashの得意なベクターもSVGで解決出来ます。<br />
相性は非常に良いでしょう。</p>



<p>既にちょっと違った方法でswf→HTML5を実現してしまっているライブラリも存在しますね。<br />
<a href="http://smokescreen.us/">Smokescreen</a></p>



<p>問題はAdobeがその後FlashPlayerをどうするのか。<br />
それまでの間に、HTML5ではとても実現出来ないような素晴らしい表現が可能になるか、<br />
そうでなければFlashPlayerはHTML5が表示出来ない、<br />
古い環境の面倒を見る為の存在になってしまいかねません。</p>



<p>AdobeとしてはFlashが売れればそれでよさそうな気もしますが、<br />
1ファンとして、Flashの底力をまだまだ見てみたいですね。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>マルチブラウザでキャプチャが撮れる「BrowserSeal」を試してみた</title>
		<link>https://blog.mach3.jp/2010/06/15/browserseal.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 15 Jun 2010 21:29:00 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/06/15/%e3%83%9e%e3%83%ab%e3%83%81%e3%83%96%e3%83%a9%e3%82%a6%e3%82%b6%e3%81%a7%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%81%8c%e6%92%ae%e3%82%8c%e3%82%8b%e3%80%8cbrowserseal%e3%80%8d%e3%82%92%e8%a9%a6.html</guid>

					<description><![CDATA[様々なブラウザのキャプチャを撮れるサービスやツールは、最近かなり増えてきていますね。 Cross-Browser Testing: A Detailed Review Of Tools And Services &#82 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>様々なブラウザのキャプチャを撮れるサービスやツールは、最近かなり増えてきていますね。<br />
<a href="http://www.smashingmagazine.com/2010/06/04/cross-browser-testing-a-detailed-review-of-tools-and-services/">Cross-Browser Testing: A Detailed Review Of Tools And Services &#8211; Smashing Magazine</a><br />
先日SmashingMagazineで多くのサービスやソフトウェアが紹介されていましたが、<br />
その中でも気になった「BrowserSeal」を試してみました。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TBdxrV9k_0I/AAAAAAAAA8E/aiur1aCnwZs/s800/201006152120.png" alt="BrowserSeal"/></figure>



<p></p>



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



<p><a href="http://www.browserseal.com/">BrowserSeal : fast multi browser website screenshot application</a></p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TBdxrtKl1kI/AAAAAAAAA8I/0epJBgkjlO4/s800/201006152036.png" alt="BrowserSeal"/></figure>



<p></p>



<p>BrowserSealはWebサービスの類ではなく、<br />
様々なバージョンのブラウザでの動作確認と、スクリーンショットの撮影が行える<br />
Windows用のデスクトップアプリケーションです。</p>



<p>Webサービスのレスポンスを待つ必要が無い為、<br />
ローカルでも高速にWebサイトの確認が行えます。</p>



<h2 class="wp-block-heading">本命かもしれないブラウザパック</h2>



<p>ローカルで動作させる為には当然それぞれのブラウザをインストールする必要がありますが、<br />
BrowserSealは以下のブラウザのスタンドアローンエディションを一度に導入出来ます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TBdxr7SGGCI/AAAAAAAAA8M/Eg7xGYo7D8Y/s800/201006152123.png" alt="様々なブラウザのスタンドアローンエディション"/></figure>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Includes Firefox 3.0.16, Firefox 3.5.6, Internet Explorer 6.00.2900.2180, Internet Explorer 7.00.5730.13, Internet Explorer 8.00.6001.18702, Chrome 3, Opera 8.54, Opera 9.64, Opera 10.10, Safari 3.2.3 and Safari 4.0.4.</p>
</blockquote>



<p>これらのブラウザはいずれもBrowserSealを介さずに<br />
独立したウィンドウとしてそのまま立ち上げる事が出来ます。<br />
JavaScriptなどの検証も行いたい場合に大変便利ですね。</p>



<h2 class="wp-block-heading">BrowserSealでキャプチャを撮る</h2>



<p>トライアル版では、キャプチャを撮れるのはFirefoxとIEの2ブラウザに留まります。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TBdxr4DV2rI/AAAAAAAAA8Q/xGKOlSUHdpc/s800/201006152126.png" alt="BrowserSealでキャプチャを撮る"/></figure>



<p></p>



<p>BrowserSeal本体のアドレスバーにURLを入力すると、<br />
ブラウザが順番に立ち上がってWebページを開き、<br />
キャプチャを撮る動作後に閉じられます。<br />
（なんかこう、ちょっとアナログな感じもしますが…）</p>



<p>とられたキャプチャは本体にタブ分けされて表示されます。<br />
長いページ等は、キチンと下までスクロールして撮影してくれます。</p>



<p>個人的にはブラウザパックが本命なのでトライアル版でも十分いけますが、<br />
スクリーンショット機能を存分に駆使したい方は有償版（$49.00）を手に入れましょう。<br />
自動化してくれるBrowserSeal.ROBOT（$199.0）なんてのも用意されています。</p>



<p><a href="http://www.browserseal.com/">BrowserSeal : fast multi browser website screenshot application</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Chromeはポテトと同時だった。ではOperaは…？</title>
		<link>https://blog.mach3.jp/2010/06/01/opera-promotion-video.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 01 Jun 2010 21:37:00 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Video]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/06/01/chrome%e3%81%af%e3%83%9d%e3%83%86%e3%83%88%e3%81%a8%e5%90%8c%e6%99%82%e3%81%a0%e3%81%a3%e3%81%9f%e3%80%82%e3%81%a7%e3%81%afopera%e3%81%af%e2%80%a6%ef%bc%9f.html</guid>

					<description><![CDATA[Chromeの速さをアピールするためのビデオ YouTube &#8211; Google Chrome Speed Tests が話題を呼びましたが、Operaだって負けていません。 この度、Operaからそのスピード [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Chromeの速さをアピールするためのビデオ<br />
<a href="http://www.youtube.com/watch?v=nCgQDjiotG0">YouTube &#8211; Google Chrome Speed Tests</a><br />
が話題を呼びましたが、Operaだって負けていません。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TAT-EBFpeNI/AAAAAAAAA7I/gc_swKVgDb0/s800/201006012124.png" alt="Opera CM"/></figure>



<p></p>



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



<p>この度、Operaからそのスピードを映像化したビデオが公開されています。<br />
Chromeはポテトと同着だって？Operaならポテトを超える。</p>



<p>見てくださいこの大掛かりな装置を。<br />
これは本気だ…。</p>



<p><iframe width="500" height="288" src="//www.youtube.com/embed/zaT7thTxyq8?rel=0" frameborder="0" allowfullscreen=""></iframe></p>



<p>ね、はやかったでしょう？（ボブ</p>



<p>ちなみにOperaが高速というのはジョークでもなんでもなく、<br />
ベンチマークでも良い成績を収めています。<br />
cf) <a href="http://journal.mycom.co.jp/news/2010/02/04/021/index.html">Opera 10.5最速をマーク、Chrome 5とSafari開発版 | エンタープライズ | マイコミジャーナル</a></p>



<p>先日Twitterのフォロアーさんと共同でベンチマークをしていたのですが、<br />
私の環境ではそこでも最速を記録していました。</p>



<p>いろんな意味で、あなどれない存在ですね。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
