<?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>村式流 イッパシエンジニアへの道</title>
	<atom:link href="http://blog.ville.jp/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.ville.jp</link>
	<description>若手エンジニアへおくる！</description>
	<lastBuildDate>Wed, 15 Feb 2012 09:23:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>IE5.5+でCSS3のtransformを使う</title>
		<link>http://blog.ville.jp/2012/02/14/987</link>
		<comments>http://blog.ville.jp/2012/02/14/987#comments</comments>
		<pubDate>Tue, 14 Feb 2012 14:14:05 +0000</pubDate>
		<dc:creator>中川</dc:creator>
				<category><![CDATA[css/(x)html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=987</guid>
		<description><![CDATA[CSS3のtransformでは ・rotate (回転) ・scale (拡大縮小) ・skew (歪ませる) ・translate (移動) が定義されていますが、IE8以下はこれに対応していません。しかしながら、IE5.5から使えるMatrix Filterを使えば同等の効果を得ることができます。 ただし、これをそのまま使うと変形の起点(transform-origin)がCSS3のtransformと違うため座標にズレが出てしまいます。座標変換コードを書こうと思ったらもうやってる人がいたので紹介します。 jQuery 2D Transformation Plugin 45度回転させるコードは以下のように記述できます。 $('.example').transform({rotate: 45}); 他のプロパティも同時に変更できます。 $('.example').transform({ rotate: '45deg', skew: ['10deg', '10deg'], scale: [1.5, 1.5], translate: ['20px', '20px'] } jQueryのanimateもhookしているのでtransformのアニメーションも簡単に記述できます。 // 1秒で1回転させる $('.example').animate({rotate: '+=360deg'}、1000); 類似のjQueryプラグインにjquery-css-transformがありますが、現時点ではIE8以下で動きません。]]></description>
			<content:encoded><![CDATA[<p>CSS3のtransformでは<br />
・rotate (回転)<br />
・scale (拡大縮小)<br />
・skew (歪ませる)<br />
・translate (移動)<br />
が定義されていますが、IE8以下はこれに対応していません。しかしながら、IE5.5から使える<a href="http://msdn.microsoft.com/en-us/library/ms533014%28VS.85%29.aspx" target="_blank">Matrix Filter</a>を使えば同等の効果を得ることができます。</p>
<p>ただし、これをそのまま使うと変形の起点(transform-origin)がCSS3のtransformと違うため座標にズレが出てしまいます。座標変換コードを書こうと思ったらもうやってる人がいたので紹介します。<br />
<a href="https://github.com/heygrady/transform" target="_blank">jQuery 2D Transformation Plugin</a></p>
<p>45度回転させるコードは以下のように記述できます。</p>
<pre class="brush: javascript">
$('.example').transform({rotate: 45});
</pre>
<p>他のプロパティも同時に変更できます。</p>
<pre class="brush: javascript">
$('.example').transform({
    rotate: '45deg',
    skew: ['10deg', '10deg'],
    scale: [1.5, 1.5],
    translate: ['20px', '20px']
}
</pre>
<p>jQueryのanimateもhookしているのでtransformのアニメーションも簡単に記述できます。</p>
<pre class="brush: javascript">
// 1秒で1回転させる
$('.example').animate({rotate: '+=360deg'}、1000);
</pre>
<p>類似のjQueryプラグインに<a href="https://github.com/zachstronaut/jquery-css-transform" target="_blank">jquery-css-transform</a>がありますが、現時点ではIE8以下で動きません。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2012/02/14/987/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend_Service_TwitterのaccountEndSessionのバグ</title>
		<link>http://blog.ville.jp/2012/02/03/959</link>
		<comments>http://blog.ville.jp/2012/02/03/959#comments</comments>
		<pubDate>Fri, 03 Feb 2012 03:19:05 +0000</pubDate>
		<dc:creator>神崎</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=959</guid>
		<description><![CDATA[こんにちは、神崎です。 TwitterのAPIを利用するために、ZendFrameworkをライブラリとして利用しました。 OAuthで認証を行ない、tweetするという挙動を確認して、tweet後の挙動としてsessionを切るために accountEndSessionメソッドを叩いたところ、sessionは切れずに、返り値としてtrueが返ってきました。 ZendFrameworkのソースを追ってみたところ 内部的には、getメソッドで、APIのエンドポイントを叩いて trueを返しているだけでした。 (ZendFramework 1.11.11で確認しています) class Zend_Service_Twitter extends Zend_Rest_Client { /** * End current session * * @throws Zend_Http_Client_Exception if HTTP request fails or times out * @return true */ public function accountEndSession() { $this-&#62;_init(); $this-&#62;_get('/1/account/end_session'); &#8230; <a href="http://blog.ville.jp/2012/02/03/959">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>こんにちは、神崎です。</p>
<p>TwitterのAPIを利用するために、ZendFrameworkをライブラリとして利用しました。<br />
OAuthで認証を行ない、tweetするという挙動を確認して、tweet後の挙動としてsessionを切るために<br />
accountEndSessionメソッドを叩いたところ、sessionは切れずに、返り値としてtrueが返ってきました。</p>
<p><span id="more-959"></span></p>
<p>ZendFrameworkのソースを追ってみたところ<br />
内部的には、getメソッドで、APIのエンドポイントを叩いて trueを返しているだけでした。<br />
(ZendFramework 1.11.11で確認しています)</p>
<pre class="brush: php">
class Zend_Service_Twitter extends Zend_Rest_Client
{

    /**
     * End current session
     *
     * @throws Zend_Http_Client_Exception if HTTP request fails or times out
     * @return true
     */
    public function accountEndSession()
    {
        $this-&gt;_init();
        $this-&gt;_get('/1/account/end_session');
        return true;
    }

}</pre>
<p>なぜsessionが切れなかったかというと、<br />
twitterのAPIが変更になり、APIのエンドポイントとメソッドが変更になっているのが原因でした。</p>
<p>ドキュメントをみるとAPIが変更になったのが、2011-11-04 のようでした。</p>
<p>https://dev.twitter.com/docs/api/1/post/account/end_session</p>
<p>単純に言えば、APIの変更にライブラリの改修が追いついていないだけですが、<br />
これでは使えないので、下記のようにZend_Service_Twitterをextendsしたclassを作って対応しました。</p>
<pre class="brush: php">
class my_Zend_Service_Twitter extends Zend_Service_Twitter
{
    public function accountEndSession()
    {
        $this-&gt;_init();
        $res = $this-&gt;_post('/1/account/end_session.json');
        return $res;
    }
}</pre>
<p>以上、参考になれば幸いです！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2012/02/03/959/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpの最新バージョン5.3.9を使う際に、気をつけるべきこと</title>
		<link>http://blog.ville.jp/2012/01/24/965</link>
		<comments>http://blog.ville.jp/2012/01/24/965#comments</comments>
		<pubDate>Tue, 24 Jan 2012 09:10:02 +0000</pubDate>
		<dc:creator>小池</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=965</guid>
		<description><![CDATA[こんにちは小池です。 今日はphpの最新バージョン5.3.9を使う際に、気をつけるべきことを記載します。 php5.3.9ではhashdos攻撃の脆弱性に対応するために以下の設定値が追加されています。 max_input_vars これはGETやPOSTのインプット数を制限する設定値です。 デフォルトでは1000と設定されていて、1000以上のパラメータは無視されます。 hashdos攻撃とその対策については以下の記事に詳しく出ております。 http://blog.tokumaru.org/2011/12/webdoshashdos.html さて、この初期値1000ですが 1000以上もの値を入力する場面はそうそうないかと思いますがあるパッケージ製品の管理画面において、その数を超える場合がありました。 その際には管理画面においてのみmax_input_varsの設定を変更することで回避しましたが最大値を超えた場合、入力値がただ消えてなくなって見えるので原因の特定に時間がかかりました。 PHP 5.3.9を使用する場合にはちょっと気をつける必要がありますね。 それでは、今日もガシガシコードを書きましょう！]]></description>
			<content:encoded><![CDATA[<p>こんにちは小池です。</p>
<p>今日はphpの最新バージョン5.3.9を使う際に、気をつけるべきことを記載します。</p>
<p><span id="more-965"></span><br />
php5.3.9ではhashdos攻撃の脆弱性に対応するために以下の設定値が追加されています。</p>
<blockquote><p>max_input_vars</p></blockquote>
<p>これはGETやPOSTのインプット数を制限する設定値です。<br />
デフォルトでは1000と設定されていて、1000以上のパラメータは無視されます。<br />
hashdos攻撃とその対策については以下の記事に詳しく出ております。</p>
<blockquote><p>http://blog.tokumaru.org/2011/12/webdoshashdos.html</p></blockquote>
<p>さて、この初期値1000ですが</p>
<p>1000以上もの値を入力する場面はそうそうないかと思いますがあるパッケージ製品の管理画面において、その数を超える場合がありました。</p>
<p>その際には管理画面においてのみmax_input_varsの設定を変更することで回避しましたが最大値を超えた場合、入力値がただ消えてなくなって見えるので原因の特定に時間がかかりました。</p>
<p>PHP 5.3.9を使用する場合にはちょっと気をつける必要がありますね。</p>
<p>それでは、今日もガシガシコードを書きましょう！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2012/01/24/965/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>アイドル状態と復帰を判定するJS</title>
		<link>http://blog.ville.jp/2012/01/11/934</link>
		<comments>http://blog.ville.jp/2012/01/11/934#comments</comments>
		<pubDate>Wed, 11 Jan 2012 11:26:46 +0000</pubDate>
		<dc:creator>中川</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=934</guid>
		<description><![CDATA[サイト訪問者がしばらく何もしてなかったり別のウィンドウに移ってしばらくした場合、 そのタイミングを知りたいケースがあります。 そんなライブラリを探してみたのですが、調度良いのがなかったので作りました。 jQueryを前提にしていますが、短いコードなので簡単に依存を切れると思います。 使い方 以下のように書くと5秒放置したときに&#8221;idle&#8221;と表示されます。 &#8220;idle&#8221;状態で画面に戻ったりマウスが動いたりすると復帰、&#8221;back&#8221;と表示されます。 new IdleTimer( 5000, function(){ console.log('idle'); }, function(){ console.log('back'); } ); コード /* idletimer.js author:nakagawa@ville.jp licence:NYSL */ var IdleTimer = function(){ this.isIdle = false; this.timestamp = null; this.timerId = null; this.init.apply(this, arguments); } IdleTimer.prototype &#8230; <a href="http://blog.ville.jp/2012/01/11/934">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>サイト訪問者がしばらく何もしてなかったり別のウィンドウに移ってしばらくした場合、<br />
そのタイミングを知りたいケースがあります。<br />
そんなライブラリを探してみたのですが、調度良いのがなかったので作りました。<br />
jQueryを前提にしていますが、短いコードなので簡単に依存を切れると思います。</p>
<p><span id="more-934"></span></p>
<h3>使い方</h3>
<p>以下のように書くと5秒放置したときに&#8221;idle&#8221;と表示されます。<br />
&#8220;idle&#8221;状態で画面に戻ったりマウスが動いたりすると復帰、&#8221;back&#8221;と表示されます。</p>
<pre class="brush: javascript">new IdleTimer(
    5000,
    function(){
        console.log('idle');
    },
    function(){
        console.log('back');
    }
);</pre>
<h3>コード</h3>
<pre class="brush: javascript">/*
idletimer.js

author:nakagawa@ville.jp
licence:NYSL
*/

var IdleTimer = function(){
    this.isIdle = false;
    this.timestamp = null;
    this.timerId = null;
    this.init.apply(this, arguments);
}
IdleTimer.prototype = {
    init : function(timeout, onIdle, onBack){
        this.timeout = timeout;
        this.onIdle = onIdle;
        this.onBack = onBack;

        this.setEvents();
        this.setIdleTimeout();
    },
    setEvents : function(){
        var self = this;
        var doc = $(document);
        doc.ready(function(){
            doc.mousemove(function(){ self.active();});
            try{
                doc.scroll(function(){ self.active(); });
            }catch(e){}
            try{
                doc.keydown(function(){ self.active(); });
            }catch(e){}
            try{
                doc.click(function(){ self.active(); });
            }catch(e){}
        });
    },
    setIdleTimeout : function(){
        var self = this;
        this.timestamp = new Date().getTime() + this.timeout;
        if(this.timerId) clearTimeout(this.timerId);
        this.timerId = setTimeout(function(){ self.idle(); }, this.timeout);
    },
    idle : function(){
        var self = this;
        var t = new Date().getTime();
        if(t &lt; this.timestamp){
            this.timerId = setTimeout(function(){ self.idle(); }, self.timestamp - t);
            return;
        }
        this.isIdle = true;
        this.onIdle.call();
    },
    active : function(){
        var t = new Date().getTime();
        this.timestamp = t + this.timeout;
        if(this.isIdle){
            this.setIdleTimeout(this.timeout);
            this.onBack.call();
        }
        this.isIdle = false;
    }
};</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2012/01/11/934/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>twitter Bootstrapを試してみた</title>
		<link>http://blog.ville.jp/2011/11/11/920</link>
		<comments>http://blog.ville.jp/2011/11/11/920#comments</comments>
		<pubDate>Fri, 11 Nov 2011 03:29:56 +0000</pubDate>
		<dc:creator>神崎</dc:creator>
				<category><![CDATA[css/(x)html]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=920</guid>
		<description><![CDATA[こんにちは、神崎です。 僕は、サーバサイドエンジニアで、フロントエンドには余り興味がなく、 残念ながら、非常に薄いHTMLの知識しか持っていません。 モックレベルの構築をしているときには、おもにtableタグで作ることが多いです。 そんな、フロントエンドがわからない人間にとって朗報となるものが twitter社が2011/8にリリースしたCSSフレームワークのBootstrapです。 githubにおいてあるcssを読み込むだけで、今風な画面に仕上がります。 (細かい調整は、もちろん必要なのですが。) さらに、Javascriptでalert、tab、dropdownなどを実現できる機能も備わっています。 ドキュメントも英語ですが備わっていますので、そこも安心です。 管理画面など、程々に見た目や機能が必要なものに関しては、実用できるのでは無いでしょうか。 http://twitter.github.com/bootstrap/]]></description>
			<content:encoded><![CDATA[<p>こんにちは、神崎です。</p>
<p>僕は、サーバサイドエンジニアで、フロントエンドには余り興味がなく、<br />
残念ながら、非常に薄いHTMLの知識しか持っていません。<br />
モックレベルの構築をしているときには、おもにtableタグで作ることが多いです。</p>
<p>そんな、フロントエンドがわからない人間にとって朗報となるものが<br />
twitter社が2011/8にリリースしたCSSフレームワークのBootstrapです。<br />
githubにおいてあるcssを読み込むだけで、今風な画面に仕上がります。<br />
(細かい調整は、もちろん必要なのですが。)</p>
<p>さらに、Javascriptでalert、tab、dropdownなどを実現できる機能も備わっています。</p>
<p>ドキュメントも英語ですが備わっていますので、そこも安心です。</p>
<p>管理画面など、程々に見た目や機能が必要なものに関しては、実用できるのでは無いでしょうか。</p>
<p><a href="http://twitter.github.com/bootstrap/">http://twitter.github.com/bootstrap/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2011/11/11/920/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMWareからcoLinuxへ</title>
		<link>http://blog.ville.jp/2011/11/02/904</link>
		<comments>http://blog.ville.jp/2011/11/02/904#comments</comments>
		<pubDate>Wed, 02 Nov 2011 06:36:44 +0000</pubDate>
		<dc:creator>塩浦</dc:creator>
				<category><![CDATA[開発環境]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=904</guid>
		<description><![CDATA[こんにちは、塩浦です。 すっかり秋ですね。 開発環境を見直すには、もってこいの季節です。 私の使っていたローカルの開発環境は、Windows7(32bit)のVMWare PlayerにLinuxをインストールして、フォルダ共有機能を使って開発を行っていました。環境の構築は、とても楽チンですが、どうも開発・運用しているWebアプリをローカルで実行すると、非常にレスポンス等が遅く、開発リズムがくずれてしまうなど、とてもストレスのたまる状況でした。 この状況を打破すべく、VMWareの設定を調整するなどしましたが、一向に改善せず、同僚からは、あきれられている状況でした。 そこで、過去に使ったことのあったcoLinuxを思い出しました。coLinuxの評価をネットで調べると、VMWareより軽いとうこのが何件かありましたので、使ってみることにしました。 しかしながら、coLinuxで環境を作成するのは、VMWareと比べると骨の折れる作業でした。 ちなみに私は、centOSを使いたかったので、通常より大変な作業となりました。 【参考にさせていただいたサイト】感謝！！ http://d.hatena.ne.jp/from_kyushu/20071203/1196628743 http://tm.root-n.com/application:colinux:centos5.6install 上記の２つめのサイトにも記載されていますが、インストールするLinuxのHDDのパーティションをカスタマイズで設定する必要があります。私は、この設定をしていなかった為、coLinuxを起動するとkernel panicが発生してしまうことを繰り返してしまっていました。 coLinuxをインストールしたのち、sambaの機能を使って、windows側とフォルダ共有するのが、有名ですが、coLinuxには、cofsという機能があり、それをcoLinuxの設定ファイルにWindowsのどのフォルダを共有するかを記載し、Linux側からマウントすると使用することが可能になります。 実際にインストールした後の使用感ですが、私の環境では、体感ですが、Webアプリの動きが数倍早くなりました。そして、開発リズムもストレスがなくなり、さらに楽しく開発ができるようになりました。 もし開発環境がVMWareで重くて、悩んでいる方は、開発環境を見直して、coLinuxを一度考えてみてはいかがでしょうか？ 以上。]]></description>
			<content:encoded><![CDATA[<p>こんにちは、塩浦です。</p>
<p>すっかり秋ですね。</p>
<p>開発環境を見直すには、もってこいの季節です。</p>
<p><span id="more-904"></span></p>
<p>私の使っていたローカルの開発環境は、Windows7(32bit)の<a href="http://www.vmware.com/jp/products/desktop_virtualization/player/overview" target="_blank">VMWare Player</a>にLinuxをインストールして、フォルダ共有機能を使って開発を行っていました。環境の構築は、とても楽チンですが、どうも開発・運用しているWebアプリをローカルで実行すると、非常にレスポンス等が遅く、開発リズムがくずれてしまうなど、とてもストレスのたまる状況でした。</p>
<p>この状況を打破すべく、VMWareの設定を調整するなどしましたが、一向に改善せず、<a href="http://ville.jp/members#kanzaki" target="_blank">同僚</a>からは、あきれられている状況でした。</p>
<p>そこで、過去に使ったことのあった<a href="http://www.colinux.org/" target="_blank">coLinux</a>を思い出しました。coLinuxの評価をネットで調べると、VMWareより軽いとうこのが何件かありましたので、使ってみることにしました。</p>
<p>しかしながら、coLinuxで環境を作成するのは、VMWareと比べると骨の折れる作業でした。</p>
<p>ちなみに私は、centOSを使いたかったので、通常より大変な作業となりました。</p>
<p>【参考にさせていただいたサイト】感謝！！</p>
<ul>
<li><a href="http://d.hatena.ne.jp/from_kyushu/20071203/1196628743">http://d.hatena.ne.jp/from_kyushu/20071203/1196628743</a></li>
<li><a href="http://tm.root-n.com/application:colinux:centos5.6install">http://tm.root-n.com/application:colinux:centos5.6install</a></li>
</ul>
<p>上記の２つめのサイトにも記載されていますが、インストールするLinuxのHDDのパーティションをカスタマイズで設定する必要があります。私は、この設定をしていなかった為、coLinuxを起動するとkernel panicが発生してしまうことを繰り返してしまっていました。</p>
<p>coLinuxをインストールしたのち、sambaの機能を使って、windows側とフォルダ共有するのが、有名ですが、coLinuxには、cofsという機能があり、それをcoLinuxの設定ファイルにWindowsのどのフォルダを共有するかを記載し、Linux側からマウントすると使用することが可能になります。</p>
<p>実際にインストールした後の使用感ですが、私の環境では、体感ですが、Webアプリの動きが数倍早くなりました。そして、開発リズムもストレスがなくなり、さらに楽しく開発ができるようになりました。</p>
<p>もし開発環境がVMWareで重くて、悩んでいる方は、開発環境を見直して、coLinuxを一度考えてみてはいかがでしょうか？</p>
<p>以上。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2011/11/02/904/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE6を切り捨てれば使えるCSSセレクタとプロパティ</title>
		<link>http://blog.ville.jp/2011/10/29/892</link>
		<comments>http://blog.ville.jp/2011/10/29/892#comments</comments>
		<pubDate>Sat, 29 Oct 2011 12:13:47 +0000</pubDate>
		<dc:creator>中川</dc:creator>
				<category><![CDATA[css/(x)html]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=892</guid>
		<description><![CDATA[世間ではHTML5だCSS3だと騒がれていますが、WEB制作の現場では古いブラウザへの対応に縛られて未だにHTML4/XHTMLとCSS1に毛がはえた程度の武器で戦わざるを得ないことが多くあります。 ie7.jsのように、CSSの機能をJSで保管するスクリプトもありますが、速度面、安定性、互換性の面から見てできれば使いたくないというのも実情です。 そんな中、最近になってようやくIE6を無視してもいいケースが増えてきました。そこで今回はIE6を切り捨てると使えるようになるCSSについてまとめてみました。余計なclassや妙なハックを使わずに便利なものは堂々と使っていきましょう。 IE6を切った時のもう一つ大きな恩恵として「透過PNGが使える」というのも大きいです。 CSS2/CSS3-セレクタ &#62; チャイルドセレクタ + 隣接兄弟セレクタ ~ 間接兄弟セレクタ [attr] 属性セレクタ [attr="value"] 属性セレクタ(完全一致) [attr~="value"] 属性セレクタ(スペース区切りの単語のどれかと一致) [attr&#124;="value"] 属性セレクタ(ハイフン区切りの先頭単語と一致) [attr^="value"] 属性セレクタ(前方一致) [attr$="value"] 属性セレクタ(後方一致) [attr*="value"] 属性セレクタ(部分一致) .multiple.classes 複数クラスの同時指定 :hover &#60;a&#62;タグ以外の :hover 疑似クラス :first-child 疑似クラス CSS2-プロパティ min-width min-height max-width max-height position:fixed overflow:visible &#8230; <a href="http://blog.ville.jp/2011/10/29/892">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>世間ではHTML5だCSS3だと騒がれていますが、WEB制作の現場では古いブラウザへの対応に縛られて未だにHTML4/XHTMLとCSS1に毛がはえた程度の武器で戦わざるを得ないことが多くあります。<br />
ie7.jsのように、CSSの機能をJSで保管するスクリプトもありますが、速度面、安定性、互換性の面から見てできれば使いたくないというのも実情です。<br />
そんな中、最近になってようやくIE6を無視してもいいケースが増えてきました。そこで今回はIE6を切り捨てると使えるようになるCSSについてまとめてみました。余計なclassや妙なハックを使わずに便利なものは堂々と使っていきましょう。<br />
IE6を切った時のもう一つ大きな恩恵として「透過PNGが使える」というのも大きいです。</p>
<p><span id="more-892"></span></p>
<h3>CSS2/CSS3-セレクタ</h3>
<table>
<tbody>
<tr>
<th>&gt;</th>
<td>チャイルドセレクタ</td>
</tr>
<tr>
<th>+</th>
<td>隣接兄弟セレクタ</td>
</tr>
<tr>
<th>~</th>
<td>間接兄弟セレクタ</td>
</tr>
<tr>
<th>[attr]</th>
<td>属性セレクタ</td>
</tr>
<tr>
<th>[attr="value"]</th>
<td>属性セレクタ(完全一致)</td>
</tr>
<tr>
<th>[attr~="value"]</th>
<td>属性セレクタ(スペース区切りの単語のどれかと一致)</td>
</tr>
<tr>
<th>[attr|="value"]</th>
<td>属性セレクタ(ハイフン区切りの先頭単語と一致)</td>
</tr>
<tr>
<th>[attr^="value"]</th>
<td>属性セレクタ(前方一致)</td>
</tr>
<tr>
<th>[attr$="value"]</th>
<td>属性セレクタ(後方一致)</td>
</tr>
<tr>
<th>[attr*="value"]</th>
<td>属性セレクタ(部分一致)</td>
</tr>
<tr>
<th>.multiple.classes</th>
<td>複数クラスの同時指定</td>
</tr>
<tr>
<th>:hover</th>
<td>&lt;a&gt;タグ以外の :hover 疑似クラス</td>
</tr>
<tr>
<th>:first-child</th>
<td>疑似クラス</td>
</tr>
</tbody>
</table>
<h3>CSS2-プロパティ</h3>
<p>min-width<br />
min-height<br />
max-width<br />
max-height<br />
position:fixed<br />
overflow:visible</p>
<h3>IE6以下のCSSバグ</h3>
<p>セレクタやプロパティの表現力が高まるだけでなく、IE6以下限定の有名なバグも意識しなくてよくなります。</p>
<p><a href="http://www.positioniseverything.net/explorer/doubled-margin.html">&#8220;doubled margin&#8221; bug</a><br />
floatした要素の横マージンが倍になる</p>
<p><a href="http://www.positioniseverything.net/explorer/peekaboo.html">&#8220;peekaboo&#8221; bug</a><br />
ボーダーや背景がスクロールしたときに消える</p>
<p><a href="http://www.positioniseverything.net/explorer/unscrollable.html">&#8220;unscrollable content&#8221; bug</a><br />
画面に収まらないposition:absoluteのボックスがあってもスクロールバーがでない</p>
<p><a href="http://www.positioniseverything.net/explorer/threepxtest.html">3 pixel text-jog</a><br />
インライン要素をfloatさせると3pxのmarginが自動的に付与されるバグ</p>
<h3>JavascriptでIE6もカバーする</h3>
<p>ここに挙げたCSSセレクタ、プロパティはいずれも<a href="http://code.google.com/p/ie7-js/">&#8220;ie7.js&#8221;</a>でカバーできます。<br />
IE6は無視したいけどまぁ一応。。という時にはこれを使うのもいいでしょう。<br />
さらに、上に挙げた3つのバグはie7.jsと同時に配布されている&#8221;ie7-squish.js&#8221;を読み込むと解消されます。</p>
<h3>参考サイト</h3>
<p><a href="http://www.quirksmode.org/css/contents.html">&#8220;CSS contents and browser compatibility&#8221;</a></p>
<p><a href="http://www.webdevout.net/browser-support-css">&#8220;Web browser CSS support&#8221;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2011/10/29/892/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iichiの大半はAWSでできています</title>
		<link>http://blog.ville.jp/2011/10/22/883</link>
		<comments>http://blog.ville.jp/2011/10/22/883#comments</comments>
		<pubDate>Sat, 22 Oct 2011 07:02:13 +0000</pubDate>
		<dc:creator>平井</dc:creator>
				<category><![CDATA[cloud]]></category>
		<category><![CDATA[devops]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=883</guid>
		<description><![CDATA[こんにちは。 最近は器用貧乏を名乗ってはばからない平井です。 貧乏は余計ですが、サーバーサイドにかかわらず多方面に興味が出てきているお年ごろです。 さて、村式が共同運営する &#8220;iichi&#8220;。 &#8220;手仕事の新しいマーケットプレイス&#8221;として、2011/7/6 にプレオープンしました。 2011/10/5 にグランド・オープンを迎えて英語化され、ついに作家さんの作品を世界へ販売することが可能となりました。 世界へ進出し、今後も成長を目指していくiichi。 インフラには、Amazon Web Services (以下 &#8220;AWS&#8221;) の多くの製品を採用しています。 このエントリでは、iichiのインフラを少し紹介したいと思います。 インフラの構成図 上が、iichiのインフラ構成の概要図です。 タイトルでは&#8221;大半&#8221;なんて書きましたが、全部AWSです。 以下のAWS製品を使用しています。 ELB (Elastic Load Blancing) / ロードバランサー EC2 (Elastic Compute Cloud) / WEBサーバー, キャッシュ・セッションストレージ RDS (Relational Database Service) / DBサーバー &#8230; <a href="http://blog.ville.jp/2011/10/22/883">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>こんにちは。<br />
最近は器用貧乏を名乗ってはばからない平井です。<br />
貧乏は余計ですが、サーバーサイドにかかわらず多方面に興味が出てきているお年ごろです。</p>
<p>さて、村式が共同運営する &#8220;<a href="http://www.iichi.com" target="_blank">iichi</a>&#8220;。<br />
&#8220;手仕事の新しいマーケットプレイス&#8221;として、2011/7/6 にプレオープンしました。</p>
<p>2011/10/5 にグランド・オープンを迎えて英語化され、ついに作家さんの作品を世界へ販売することが可能となりました。</p>
<p>世界へ進出し、今後も成長を目指していくiichi。</p>
<p>インフラには、<a href="http://aws.amazon.com/jp/" target="_blank">Amazon Web Services</a> (以下 &#8220;AWS&#8221;) の多くの製品を採用しています。</p>
<p>このエントリでは、iichiのインフラを少し紹介したいと思います。</p>
<p><span id="more-883"></span></p>
<h2>インフラの構成図</h2>
<p><a href="http://blog.ville.jp/wp-content/uploads/2011/10/iichi構成図.png"><img class="alignnone size-full wp-image-884" title="iichi構成図" src="http://blog.ville.jp/wp-content/uploads/2011/10/iichi構成図.png" alt="" width="540" height="517" /></a></p>
<p>上が、iichiのインフラ構成の概要図です。<br />
タイトルでは&#8221;大半&#8221;なんて書きましたが、全部AWSです。<br />
以下のAWS製品を使用しています。</p>
<ul>
<li>ELB (Elastic Load Blancing) / ロードバランサー</li>
<li>EC2 (Elastic Compute Cloud) / WEBサーバー, キャッシュ・セッションストレージ</li>
<li>RDS (Relational Database Service) / DBサーバー</li>
<li>S3 (Simple Storage Service) / 画像ストレージ</li>
<li>CloudFront / 画像配信</li>
<li>Simple Email Service / メール配信</li>
</ul>
<p>初動のリソースをとにかくアプリケーションの開発に集中させたいという思惑もあり、積極的にAWSの利用を進めました。<br />
大部分がコントロールパネルからポチポチすれば利用可能な状態にまでもっていけるので、なんとも楽チンです。<br />
上記の構成の中でエンジニアが手を動かしてセットアップしたのはEC2とSESくらいでした。</p>
<p>EC2単体では他のIaaSやVPSで代替可能な部分もありましたが、<br />
ELBのメリットを考えると、EC2を選択せざるを得ません。<br />
SSLターミネーションとか、相当楽チンです。統一することでコントロールパネルも1つにできますし。</p>
<p>ローンチ後が予測できない状態で、IaaSの柔軟性やスピード感はやはり魅力的です。<br />
その中でもAWS製品のフルラインナップは、エンジニアを幸せにしてくれます。（むしろ仕事を奪うかも・・・）<br />
iichiの場合はHA構成など手厚くする余地はありますが、そこを調整していく上でもIaaSの手軽さは助かります。</p>
<h2>おわりに</h2>
<p>AWSイケテルって話に終始してしまいましたが、あの製品フルラインナップはやっぱり魅力です。<br />
今後、各コンポーネント毎に内情を紹介できる部分があればしていきたいと思います。</p>
<p>それではまた。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2011/10/22/883/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>スマートフォンでは、スタイルのposition:fixedが使えない!!</title>
		<link>http://blog.ville.jp/2011/10/15/845</link>
		<comments>http://blog.ville.jp/2011/10/15/845#comments</comments>
		<pubDate>Fri, 14 Oct 2011 16:53:24 +0000</pubDate>
		<dc:creator>塩浦</dc:creator>
				<category><![CDATA[css/(x)html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=845</guid>
		<description><![CDATA[こんにちは、塩浦です。 スマートフォン用(iPhone,Android)に最適されたサイトを作成することが、最近は業界全体で如実に増えていると思います。 スマートフォンサイトでよく見られる演出に、時間が経過すると画面下部に広告などのバナーを表示するといったものがあります。 そういったサイトを実現しようとした場合、単純に思いつくのがスタイルシートにposition:fixedを用いた書き方です。 私も当初そのように考え、position:fixedを用いいたスタイルシートでコーディングしました。 しかし実機で検証すると、表示が崩れるなどの現象が発生しました。 調べてみると、iPhoneの仕様では、position:fixedが使えないということでした。 そこで以下のようなjavascriptのコードで実現することにしました。 var scrollCount = 0; $(window).scroll(function(){ burner.attr("style", "display:none;"); scrollCount++; setTimeout(function(){ 　　　　scrollCount--; 　　　　if (scrollCount == 0) { 　　　　　　　　var scroll = document.body.scrollTop + window.innerHeight; 　　　　　　　　burner.attr("style", "position:absolute;left:50%;top:" + scroll + "px;margin-top:-50px;margin-left:-160px;z-index:50;display:none;"); 　　　　　　　　burner.animate({height: "toggle", opacity: "toggle"}, "slow"); 　　　　} }, 1000); &#8230; <a href="http://blog.ville.jp/2011/10/15/845">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>こんにちは、塩浦です。</div>
<div>スマートフォン用(iPhone,Android)に最適されたサイトを作成することが、最近は業界全体で如実に増えていると思います。</div>
<div>スマートフォンサイトでよく見られる演出に、時間が経過すると画面下部に広告などのバナーを表示するといったものがあります。</div>
<div>そういったサイトを実現しようとした場合、単純に思いつくのがスタイルシートにposition:fixedを用いた書き方です。</div>
<div>私も当初そのように考え、position:fixedを用いいたスタイルシートでコーディングしました。</div>
<div>しかし実機で検証すると、表示が崩れるなどの現象が発生しました。</div>
<div>調べてみると、iPhoneの仕様では、position:fixedが使えないということでした。</div>
<div><span id="more-845"></span>そこで以下のようなjavascriptのコードで実現することにしました。</div>
<div><span style="color: #ff0000;"><span style="text-decoration: underline;"><em><br />
</em></span></span></div>
<pre class="brush: javascript">var scrollCount = 0;
$(window).scroll(function(){
burner.attr("style", "display:none;");
scrollCount++;
setTimeout(function(){
　　　　scrollCount--;
　　　　if (scrollCount == 0) {
　　　　　　　　var scroll = document.body.scrollTop + window.innerHeight;
　　　　　　　　burner.attr("style", "position:absolute;left:50%;top:" + scroll + "px;margin-top:-50px;margin-left:-160px;z-index:50;display:none;");
　　　　　　　　burner.animate({height: "toggle", opacity: "toggle"}, "slow");
　　　　}
}, 1000);
});</pre>
<div><span style="text-decoration: underline;"><em>※注）コードの一部を抜き出しています。</em></span></div>
<div><span style="text-decoration: underline;"><em><br />
</em></span></div>
<div>javascriptでは、スクロールが開始されたイベントは取得できますが、イベントが終わったというのは、取得できません。</div>
<div>上記コードでは、スクロールのイベントが発生する度にscrollCountにインクリメントをしていきます。</div>
<div>同時にsetTimeoutを使って、そのイベントの数秒後にscrollCountをデクリメントしていきます。</div>
<div>値が0になった時点で、</div>
<div>document.body.scrollTop + window.innerHeight で表示されている画面下部の位置情報がわかります。</div>
<div>そして、表示したいburnerのスタイルにその値を使い、バーナー分の高さ（margin-top:-50px）引いくことによって、画面下部にバーナーが表示することができます。</div>
<div>今回は、スクロールした後にバーナーを表示させるという方法でしたので、iScroll（<a href="http://cubiq.org/iscroll-4">http://cubiq.org/iscroll-4</a>）などのプラグインを用いずに実現することができました。</div>
<div>もしスクロール中もバーナーを表示することを実現する場合は、iScrollなどのプラグインを用いたほうがいいかもしれません。</div>
<div>以上。</div>
<div></div>
<div>※追記：ios5からposition:fixedをサポートしているようです。</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2011/10/15/845/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery.supportでIE7以下を判別するときの注意</title>
		<link>http://blog.ville.jp/2011/09/30/813</link>
		<comments>http://blog.ville.jp/2011/09/30/813#comments</comments>
		<pubDate>Fri, 30 Sep 2011 07:02:15 +0000</pubDate>
		<dc:creator>中川</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=813</guid>
		<description><![CDATA[jQuery.supportを使ってIE7以下を判定するとき、 IE6,7でfalse,IE8以上でtrueを返すjQuery.support.styleを使っていたのですが jQuery1.6になってからこれがIE8でfalseを返すようになってしまいました。 jQuery1.6のjQuery.supportのプロパティの中でIE6,7でfalse,IE8以上でtrueを返すのは jQuery.support.tbody jQuery.support.hrefNormalized の二つです。 jQueryのバージョンを上げるときなど気をつけましょう。 jQuery1.6以前 IE6 IE7 IE8 $.support.style false false true $.support.tbody false false true $.support.hrefNormalized false false true ↓ jQuery1.6.2 IE6 IE7 IE8 $.support.style false false false $.support.tbody false false true $.support.hrefNormalized false false &#8230; <a href="http://blog.ville.jp/2011/09/30/813">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>jQuery.supportを使ってIE7以下を判定するとき、<br />
IE6,7でfalse,IE8以上でtrueを返すjQuery.support.styleを使っていたのですが<br />
jQuery1.6になってからこれがIE8でfalseを返すようになってしまいました。</p>
<p>jQuery1.6のjQuery.supportのプロパティの中でIE6,7でfalse,IE8以上でtrueを返すのは<br />
jQuery.support.tbody<br />
jQuery.support.hrefNormalized<br />
の二つです。</p>
<p>jQueryのバージョンを上げるときなど気をつけましょう。</p>
<h3>jQuery1.6以前</h3>
<table>
<tr>
<th></th>
<th>IE6</th>
<th>IE7</th>
<th>IE8</th>
</tr>
<tr>
<td>$.support.style</td>
<td>false</td>
<td>false</td>
<td>true</td>
</tr>
<tr>
<td>$.support.tbody</td>
<td>false</td>
<td>false</td>
<td>true</td>
</tr>
<tr>
<td>$.support.hrefNormalized</td>
<td>false</td>
<td>false</td>
<td>true</td>
</tr>
</table>
<p>↓</p>
<h3>jQuery1.6.2</h3>
<table>
<tr>
<th></th>
<th>IE6</th>
<th>IE7</th>
<th>IE8</th>
</tr>
<tr>
<td>$.support.style</td>
<td>false</td>
<td>false</td>
<td><strong>false</strong></td>
</tr>
<tr>
<td>$.support.tbody</td>
<td>false</td>
<td>false</td>
<td>true</td>
</tr>
<tr>
<td>$.support.hrefNormalized</td>
<td>false</td>
<td>false</td>
<td>true</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2011/09/30/813/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

