<?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>Fri, 13 Apr 2012 04:25:37 +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>rsyncの-Cオプション</title>
		<link>http://blog.ville.jp/2012/04/13/996</link>
		<comments>http://blog.ville.jp/2012/04/13/996#comments</comments>
		<pubDate>Fri, 13 Apr 2012 04:25:37 +0000</pubDate>
		<dc:creator>神崎</dc:creator>
				<category><![CDATA[開発環境]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=996</guid>
		<description><![CDATA[こんにちは、神崎です。 とある案件でFuelPHPを採用して構築しました。 デプロイをするにあたり、rsyncでサーバにファイルを配置しようとしたところ FuelPHPのコアファイルが格納されているcoreというディレクトリが syncされないということに気づきました。 なぜ、そのようなことがおきたかというと rsyncのオプションで-Cをつけていたからでした。 -Cオプションは、CVSなどのバージョン管理のファイルなどをexcludeしてくれるオプションです。 このexclude対象に core というものが含まれているのが原因となっていました。 excludeしたいファイルは、&#8211;exclude-fromのオプションで リストアップしたファイルを指定していたので -Cオプションを外すことで対応しました。 今回は、普段、何気なく使っているコマンドのオプションの罠にハマった格好になってしました。 以上、参考になれば幸いです！]]></description>
			<content:encoded><![CDATA[<p>こんにちは、神崎です。</p>
<p>とある案件でFuelPHPを採用して構築しました。<br />
デプロイをするにあたり、rsyncでサーバにファイルを配置しようとしたところ<br />
FuelPHPのコアファイルが格納されているcoreというディレクトリが<br />
syncされないということに気づきました。</p>
<p>なぜ、そのようなことがおきたかというと<br />
rsyncのオプションで-Cをつけていたからでした。</p>
<p>-Cオプションは、CVSなどのバージョン管理のファイルなどをexcludeしてくれるオプションです。<br />
このexclude対象に core というものが含まれているのが原因となっていました。</p>
<p>excludeしたいファイルは、&#8211;exclude-fromのオプションで<br />
リストアップしたファイルを指定していたので<br />
-Cオプションを外すことで対応しました。</p>
<p>今回は、普段、何気なく使っているコマンドのオプションの罠にハマった格好になってしました。</p>
<p>以上、参考になれば幸いです！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2012/04/13/996/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter statuses/update API の不思議な挙動</title>
		<link>http://blog.ville.jp/2012/03/05/1004</link>
		<comments>http://blog.ville.jp/2012/03/05/1004#comments</comments>
		<pubDate>Mon, 05 Mar 2012 00:37:02 +0000</pubDate>
		<dc:creator>神崎</dc:creator>
				<category><![CDATA[開発環境]]></category>

		<guid isPermaLink="false">http://blog.ville.jp/?p=1004</guid>
		<description><![CDATA[こんにちは、日々合宿状態の神崎です。 さて、今回は、Twitterの投稿API(statues/update)の不思議な挙動についてのお話です。 事の発端は、とあるプロジェクトで、twitterの投稿APIを利用した際に エラーが発生して調査をした結果、発覚したものです。 その不思議な挙動というのは、 「/*」 という文字列をPOSTすると直前のtweetがresponseとして返ってくるというものです。 statuses/update APIの通常の挙動だと、エラーが発生した場合は、その旨のJSONが返ってくるのですが 直前のtweetが知らぬ顔して普通に返ってくるのがこの挙動の問題なわけです。 検証をするためにMac App のTwitterアプリに同梱されている開発コンソールを利用しました。 正常な挙動の場合、左下のstatusに入力した値がresponseのtextの値になります。 これが、「/*」と入力するとエラーにもならず直前のtweetが返ってきます。 また、TwitterのWebサイトからも同様に「/*」を投稿したところ、 送信しましたと表示はされますが実際には投稿がタイムラインには反映されませんでした。 Twitter自体のバグであるとは思いますが、 Twitter API を利用するアプリを作る場合には気を付けなければいけない挙動だと思います。 また、バグレポートがされているのかは調べきれていないのですが、 余裕を見つけてレポートされていない場合は、レポートしたいと思います。 以上、参考になれば幸いです。]]></description>
			<content:encoded><![CDATA[<p>こんにちは、日々合宿状態の神崎です。</p>
<p>さて、今回は、Twitterの投稿API(statues/update)の不思議な挙動についてのお話です。</p>
<p>事の発端は、とあるプロジェクトで、twitterの投稿APIを利用した際に<br />
エラーが発生して調査をした結果、発覚したものです。</p>
<p><span id="more-1004"></span></p>
<p>その不思議な挙動というのは、<br />
「/*」<br />
という文字列をPOSTすると直前のtweetがresponseとして返ってくるというものです。<br />
statuses/update APIの通常の挙動だと、エラーが発生した場合は、その旨のJSONが返ってくるのですが<br />
直前のtweetが知らぬ顔して普通に返ってくるのがこの挙動の問題なわけです。</p>
<p>検証をするためにMac App のTwitterアプリに同梱されている開発コンソールを利用しました。</p>
<p>正常な挙動の場合、左下のstatusに入力した値がresponseのtextの値になります。<br />
<a href="http://blog.ville.jp/wp-content/uploads/2012/03/success.png"><img class="alignnone size-medium wp-image-1009" title="success" src="http://blog.ville.jp/wp-content/uploads/2012/03/success-300x203.png" alt="" width="300" height="203" /></a></p>
<p>これが、「/*」と入力するとエラーにもならず直前のtweetが返ってきます。<br />
<a href="http://blog.ville.jp/wp-content/uploads/2012/03/unknown.png"><img class="alignnone size-medium wp-image-1008" title="unknown" src="http://blog.ville.jp/wp-content/uploads/2012/03/unknown-300x203.png" alt="" width="300" height="203" /></a></p>
<p>また、TwitterのWebサイトからも同様に「/*」を投稿したところ、<br />
送信しましたと表示はされますが実際には投稿がタイムラインには反映されませんでした。</p>
<p><a href="http://blog.ville.jp/wp-content/uploads/2012/03/web_input.png"><img class="alignnone size-medium wp-image-1010" title="web_input" src="http://blog.ville.jp/wp-content/uploads/2012/03/web_input-300x177.png" alt="" width="300" height="177" /></a></p>
<p><a href="http://blog.ville.jp/wp-content/uploads/2012/03/web_finish.png"><img class="alignnone size-medium wp-image-1011" title="web_finish" src="http://blog.ville.jp/wp-content/uploads/2012/03/web_finish-300x177.png" alt="" width="300" height="177" /></a></p>
<p>Twitter自体のバグであるとは思いますが、<br />
Twitter API を利用するアプリを作る場合には気を付けなければいけない挙動だと思います。<br />
また、バグレポートがされているのかは調べきれていないのですが、<br />
余裕を見つけてレポートされていない場合は、レポートしたいと思います。</p>
<p>以上、参考になれば幸いです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ville.jp/2012/03/05/1004/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
	</channel>
</rss>

