<?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>GoogleCode &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/googlecode/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Fri, 14 Jan 2011 01:00: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>goo.glがAPI公開されたらしいので試してみた</title>
		<link>https://blog.mach3.jp/2011/01/14/try-goo-gl-api.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 14 Jan 2011 01:00:47 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[cURL]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[GoogleCode]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[URL]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1402</guid>

					<description><![CDATA[Overview &#8211; Google URL Shortener API &#8211; Google Code Google製の短縮URLサービス「goo.gl」のAPIが公開されたそうなので、 試しに使って [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="http://code.google.com/intl/ja/apis/urlshortener/overview.html">Overview &#8211; Google URL Shortener API &#8211; Google Code</a><br />
Google製の短縮URLサービス「<a href="http://goo.gl/">goo.gl</a>」のAPIが公開されたそうなので、<br />
試しに使ってみたメモ。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TS8gn_MfUzI/AAAAAAAABJU/XBsVQmuNc-c/201101140055.png" alt="goo.glがAPI公開されたらしいので試してみた"/></figure>



<p></p>



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



<ol class="wp-block-list">
<li>必要なもの</li>



<li>短縮してみよう</li>



<li>展開してみよう</li>



<li>めんどくさいのでクラスにしてみる</li>



<li>(おまけ) JavaScriptで展開する</li>
</ol>



<h2 class="wp-block-heading">必要なもの</h2>



<dl>
<dt>APIのURLを控えておく</dt>
<dd>https://www.googleapis.com/urlshortener/v1/url</dd>
<dt>APIキーを取得しておく</dt>
<dd><a href="https://code.google.com/apis/console/">Google APIs Console</a>で<br />
<em>「URL Shortener API」</em>をアクティブにしてAPIキーを控えて来る</dd>
</dl>



<p>今回は、PHP+cURLでやってみることに。<br />
とりあえず持っている情報を変数につっこむ。</p>


<pre class="wp-block-code"><span><code class="hljs language-php">$api_url = <span class="hljs-string">"https://www.googleapis.com/urlshortener/v1/url"</span>;
$api_key = <span class="hljs-string">"&#91;あなたのAPIキーを入れてください]"</span>;
</code></span></pre>


<h2 class="wp-block-heading">短縮してみよう</h2>



<p>URLの短縮は、APIに次のような<em>JSON</em>を<em>POST</em>で送りつけます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>{&#8220;longUrl&#8221;: &#8220;http://www.google.com/&#8221;}</p>
</blockquote>


<pre class="wp-block-code"><span><code class="hljs language-php">$longUrl = <span class="hljs-string">"https://blog.mach3.jp/"</span>;

$curl = curl_init();
$curl_params = <span class="hljs-keyword">array</span>(
    <span class="hljs-comment">// APIのURLに ?key=&#91;your-key]を足してやります</span>
    CURLOPT_URL =&gt; $api_url . <span class="hljs-string">"?"</span> .
        http_build_query( <span class="hljs-keyword">array</span>( <span class="hljs-string">"key"</span> =&gt; $api_key ) ),
    <span class="hljs-comment">// ヘッダをapplication/jsonに</span>
    CURLOPT_HTTPHEADER =&gt; <span class="hljs-keyword">array</span>( <span class="hljs-string">"Content-Type: application/json"</span> ),
    <span class="hljs-comment">// POSTで送ります</span>
    CURLOPT_POST =&gt; <span class="hljs-keyword">true</span>,
    <span class="hljs-comment">// ロングURLの情報をJSONに加工して渡します</span>
    CURLOPT_POSTFIELDS =&gt; json_encode( <span class="hljs-keyword">array</span>( <span class="hljs-string">"longUrl"</span> =&gt; $longUrl ) ),
    CURLOPT_RETURNTRANSFER =&gt; <span class="hljs-keyword">true</span>
);
curl_setopt_array( $curl, $curl_params );
$result = json_decode( curl_exec( $curl ) ); <span class="hljs-comment">// 返り値はJSONなのでデコード</span>
var_dump( $result );
</code></span></pre>


<p>レスポンスはJSONで返って来るので、json_decodeでオブジェクトにしてやります。<br />
最終的に格納されている情報はこんな感じ。</p>


<pre class="wp-block-code"><span><code class="hljs language-php">object(stdClass)<span class="hljs-comment">#1 (3) {</span>
  &#91;<span class="hljs-string">"kind"</span>]=&gt;
  string(<span class="hljs-number">16</span>) <span class="hljs-string">"urlshortener#url"</span>
  &#91;<span class="hljs-string">"id"</span>]=&gt;
  string(<span class="hljs-number">19</span>) <span class="hljs-string">"http://goo.gl/ZZKde"</span>
  &#91;<span class="hljs-string">"longUrl"</span>]=&gt;
  string(<span class="hljs-number">21</span>) <span class="hljs-string">"https://blog.mach3.jp/"</span>
}
</code></span></pre>


<h2 class="wp-block-heading">展開してみよう</h2>



<p>展開は簡単。パラメータくっつけてGETでとってくるだけです。<br />
先ほど作った「http://goo.gl/ZZKde」を展開してみます。<br />
こんなリクエストをおくって返事をもらってるだけ。<br />
労力惜しむならfile_get_contents()でもよし。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://www.googleapis.com/urlshortener/v1/url?key=[your_api_key]&#038;shortUrl=[展開したいURL]
</div></figure>
</blockquote>


<pre class="wp-block-code"><span><code class="hljs language-php">$shortUrl = <span class="hljs-string">"http://goo.gl/ZZKde"</span>;

$curl = curl_init();
$curl_params = <span class="hljs-keyword">array</span>(
    CURLOPT_URL =&gt; $api_url . <span class="hljs-string">"?"</span> .
        http_build_query( <span class="hljs-keyword">array</span>(
            <span class="hljs-string">"key"</span> =&gt; $api_key,
            <span class="hljs-string">"shortUrl"</span> =&gt; $shortUrl
        )),
    CURLOPT_RETURNTRANSFER =&gt; <span class="hljs-keyword">true</span>
);
curl_setopt_array( $curl, $curl_params );
$result = json_decode( curl_exec( $curl ) );
</code></span></pre>


<p>こんな感じに帰ってきました。</p>


<pre class="wp-block-code"><span><code class="hljs language-php">object(stdClass)<span class="hljs-comment">#2 (4) {</span>
  &#91;<span class="hljs-string">"kind"</span>]=&gt;
  string(<span class="hljs-number">16</span>) <span class="hljs-string">"urlshortener#url"</span>
  &#91;<span class="hljs-string">"id"</span>]=&gt;
  string(<span class="hljs-number">19</span>) <span class="hljs-string">"http://goo.gl/ZZKde"</span>
  &#91;<span class="hljs-string">"longUrl"</span>]=&gt;
  string(<span class="hljs-number">21</span>) <span class="hljs-string">"https://blog.mach3.jp/"</span>
  &#91;<span class="hljs-string">"status"</span>]=&gt;
  string(<span class="hljs-number">2</span>) <span class="hljs-string">"OK"</span>
}
</code></span></pre>


<h2 class="wp-block-heading">めんどくさいのでクラスにしてみた</h2>



<dl>
<dt>GoogleUrl</dt>
<dd><a href="https://gist.github.com/69e4a0c19e4776924a21">gist: 69e4a0c19e4776924a21 &#8211; Shorten and expand urls using Google URL Shortener API- GitHub</a></dd>
</dl>



<h3 class="wp-block-heading">使い方</h3>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">// createメソッドで初期化。</span>
<span class="hljs-comment">// new GoogleUrl( $api_key ) でもいいです。</span>
$gu = GoogleUrl::create( <span class="hljs-string">"&#91;your-api-key]"</span> );

<span class="hljs-keyword">try</span> {
    <span class="hljs-comment">// shortenメソッドで短縮</span>
    $shorten = $gu-&gt;shorten( <span class="hljs-string">"http://www.mach3.jp"</span> );
    var_dump( $shorten );

    <span class="hljs-comment">// expandメソッドで展開</span>
    $expand = $gu-&gt;expand( $shorten-&gt;id );
    var_dump( $expand );

} <span class="hljs-keyword">catch</span>( <span class="hljs-keyword">Exception</span> $e ){ <span class="hljs-keyword">die</span>( $e-&gt;getMessage() ); }
</code></span></pre>


<h2 class="wp-block-heading">(おまけ) JavaScriptで展開する</h2>



<p><a href="https://gist.github.com/d98215a9cae6ef22e741">gist: d98215a9cae6ef22e741 &#8211; expand url using goo.gl shortener api- GitHub</a></p>



<p>jQuery使って展開してみました。<br />
「callback」パラメータでJSONP出来るので、大変簡単。<br />
つまりこんなリクエストをすることになります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://www.googleapis.com/urlshortener/v1/url?key=[your_api_key]&#038;shortUrl=[展開するURL]&#038;callbck=[コールバック関数名]
</div></figure>
</blockquote>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> expandGoogleUrl = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"> url, key, callback </span>)</span>{
    $.ajax({
        <span class="hljs-attr">url</span> : <span class="hljs-string">"https://www.googleapis.com/urlshortener/v1/url"</span>,
        <span class="hljs-attr">dataType</span> : <span class="hljs-string">"jsonp"</span>,
        <span class="hljs-attr">data</span> : { <span class="hljs-attr">shortUrl</span> : url, <span class="hljs-attr">key</span> : key },
        <span class="hljs-attr">success</span> : <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"> data </span>)</span>{
            callback( data.error  ? <span class="hljs-literal">false</span> : data.longUrl );
        }
    });
};

<span class="hljs-comment">// example</span>
expandGoogleUrl (
    <span class="hljs-string">"http://goo.gl/fbsS"</span>,
    <span class="hljs-string">"&#91;your api key]"</span>,
    <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"> url </span>)</span>{
        <span class="hljs-built_in">console</span>.log( url );
    }
);
</code></span></pre>


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



<p>QRコードがそのまま作れたり（ <a href="http://goo.gl/pvqxy.qr">http://goo.gl/pvqxy.qr</a> ）、<br />
アクセス解析出来たり（ <a href="http://goo.gl/info/pvqxy">http://goo.gl/info/pvqxy</a> ）と結構便利なサービスです。<br />
短縮したい際には使ってみようかな！</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>
	</channel>
</rss>
