<?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>Service &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/service/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Fri, 06 Sep 2013 01:28:29 +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>2013年秋、Codogue.com をリニューアルしました</title>
		<link>https://blog.mach3.jp/2013/09/06/codogue-renewal-2013.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 06 Sep 2013 01:28:29 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Codogue]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Service]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3240</guid>

					<description><![CDATA[この度 Codogue.com のリニューアルを試みましたので、ご報告など。 ついでにアプリを一つ追加しています。 こうなりました 新しくなった Codogue.com がこちらです。 少しずつ長い期間で地味に進めて来ま [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>この度 <a href="http://codogue.com">Codogue.com</a> のリニューアルを試みましたので、ご報告など。<br />
ついでにアプリを一つ追加しています。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/-Kq3mGXvbdzY/UiijRRnhTeI/AAAAAAAACLY/0vcQe1Y3zFo/s400/20130906-00.png" alt="2013年秋、Codogue.com をリニューアルしました"/></figure>



<p></p>



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



<h2 class="wp-block-heading">こうなりました</h2>



<p>新しくなった <a href="http://codogue.com">Codogue.com</a> がこちらです。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/-xCmV6ScnwPc/UiijRfY71zI/AAAAAAAACLY/hEn5iu4Ic0U/s500/20130906-01.png" alt="Codogue.com"/></figure>



<p><a href="http://codogue.com"><br />
<br />
</a></p>



<p>少しずつ長い期間で地味に進めて来まして、ようやく形になったところ。<br />
書き方の好みや開発環境もだいぶリリース当初から様変わりしているので、中身も全部書き直してます。<br />
デザインは、途中で飽きましたが最後まで貫きました。</p>



<h2 class="wp-block-heading">ついでに追加された 「Facebookmark」</h2>



<p>せっかくの機会なので一つアプリを増やしてみました。</p>



<h3 class="wp-block-heading"><a href="http://codogue.com/facebookmark">Facebookmark</a></h3>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/-Z9cDWp20v3o/UiijRfSjfXI/AAAAAAAACLY/0ljLBoEPZG8/s500/20130906-02.png" alt="Facebookmark"/></figure>



<p></p>



<p>これは、Facebook上で自分が「シェア」してきたリンクを一覧表示・検索するアプリです。<br />
（Facebookへのログインが必要です）</p>



<p>何らかのソーシャルブックマークを使っているのなら勿論それで用は足りるのですが、<br />
Facebookのシェア機能も、公開範囲を設定できたりコメントを残せたりと、わりとログを残す場として便利に使えたりします。<br />
ただ、Facebook上だと昔にシェアした物を探すのは正直骨なので、このアプリを作ってみたわけです。</p>



<p>文字列検索機能は、自分がつけたコメントやリンクのサマリーも含んで検索してくれます。<br />
（後からつけたコメントは含めない様です。残念。）</p>



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



<p>他にもいくつか実験してみたいネタはあるのですが、そのうちいずれ…</p>



<p>今後共よろしくお願い致します。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>一括メンションを簡単にするジェネレータ「MultiMentions」</title>
		<link>https://blog.mach3.jp/2012/09/07/multimentions.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 07 Sep 2012 00:30:42 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Anywhere]]></category>
		<category><![CDATA[Codogue]]></category>
		<category><![CDATA[Generator]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Twitter]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=2655</guid>

					<description><![CDATA[先日ひっそりとCodogueに加わった新しい仲間「MultiMentions」の紹介です。 これはなに MultiMentions : 一括メンションジェネレーター &#124; CoDogue 多数のアカウントに対して一斉にメン [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先日ひっそりと<a href="http://codogue.com">Codogue</a>に加わった新しい仲間「MultiMentions」の紹介です。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-1SfqVYNWCBo/UEjNdx8kmHI/AAAAAAAABlI/0EaGrk_IBvw/s500/20120906-00.png" alt="一括メンションツイートを簡単にするジェネレータ「MultiMentions」"/></figure>



<p></p>



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



<h2 class="wp-block-heading">これはなに</h2>



<p><a href="http://codogue.com/multimentions/">MultiMentions : 一括メンションジェネレーター | CoDogue</a></p>



<p>多数のアカウントに対して一斉にメンションを送る為のジェネレータです。</p>



<p>2,3ユーザーならば何の問題もないのですが、<br />
数十人〜に一括して送るのはツイッターの文字数制限をクリアする為に<br />
一々小分けにしなくてはならず、骨が折れますね。</p>



<p>MultiMentionsはそんな分割作業をお手伝いしてくれるツールです。</p>



<h2 class="wp-block-heading">使用例</h2>



<p>例えば大規模なパーティの幹事をしていて、参加者に一斉に確認事項を送りたいけど、<br />
全員相互にフォローしているわけではないので、Twiplaの一括DMが送れない。捗らなくて辛い。</p>



<p>そんな時は</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/-mgH3GxmhWgI/UEjNeNeg8HI/AAAAAAAABlI/NIwwgtu9TKk/s500/20120906-01.png" alt="Twipla のコメントで宛先を『「参加者」全員』にしてコピ"/></figure>



<p></p>



<p>Twipla のコメントで宛先を『「参加者」全員』にしてコピーして</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/-hOOOcDAQNIg/UEjNd9qH0VI/AAAAAAAABlI/Rxjync8-c58/s500/20120906-02.png" alt="ユーザーリストをペースト/メッセージを入力"/></figure>



<p></p>



<p>MultiMentionsの<em>「ユーザーリスト」</em>に貼り付けます。</p>



<p><em>「メッセージ」</em>に送りたいメッセージを入力して、<em>「メッセージの生成」</em>ボタンをクリックします。<br />
ここではまだメッセージは送信されないので安心してクリックしてください。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-u_sXQltv70Q/UEjNernVFFI/AAAAAAAABlI/W6gHbFNOnS4/s500/20120906-03.png" alt="生成されたメッセージ"/></figure>



<p></p>



<p>すると下に連々と分割されたメッセージが出てきます。</p>



<p>これをコピーしてTwitterで投稿するも良し、<br />
各メッセージについている「Tweet」ボタンをクリックしても投稿する事が出来ます。<br />
「Tweet」ボタンで投稿完了すると、そのメッセージは消えます。</p>



<h2 class="wp-block-heading">注意事項など</h2>



<ul class="wp-block-list">
<li><br /><p>分かりやすいTwiplaを例に出してますが、ユーザーリストがその形式でなければいけないなんて事はありません。<br /><br />何らかの文字で区切ってあるTwitterアカウントの羅列であれば、動くはずです。</p><br /></li>



<li><br /><p>URLを短縮してから入力すると、ツイート時に文字制限オーバーのエラーが出る事があります。<br /><br />（サードパーティの短縮サービスより、公式の t.co の方が文字数が多い場合があるせいではないかと思っています）</p><br /></li>



<li><br /><p>「以下のユーザーは文字数の関係で入りませんでした。」というメッセージが表示される事があります。<br /><br />これは、メッセージと足すだけで文字数制限を超えてしまうユーザーです。メッセージを短くする等の工夫が必要です。</p><br /></li>



<li><br /><p>「Tweet」ボタンは初回だけ認証画面が表示されます。<br /><br />二つ目以降のメッセージでは表示されずにそのままツイートされるのでご注意ください。</p><br /></li>
</ul>



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



<p>たまたま大規模なパーティに関わる機会があったので、作ってみました。<br />
幹事さんの手助けになれば、幸いです。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ちょこざいなツール格納庫「CoDogue.com」を公開しました。</title>
		<link>https://blog.mach3.jp/2011/02/08/codogue-com.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 08 Feb 2011 03:34:49 +0000</pubDate>
				<category><![CDATA[Monologue]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1538</guid>

					<description><![CDATA[CoDogue &#8211; ちょこざいなツール格納庫 を公開したのでお知らせ。 これはなに？ 「CoDogue」は「コドーグ」と読みます。 タイトルどおり、ちょこざいなツールを格納していくサイトです。 ちょこざいなツ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="http://codogue.com/">CoDogue &#8211; ちょこざいなツール格納庫</a> を公開したのでお知らせ。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/_JJkNs5Ixl70/TVC46KIwwPI/AAAAAAAABKo/yAovxZ7khss/201102081219.png" alt="CoDogue - ちょこざいなツール格納庫"/></figure>



<p></p>



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



<h2 class="wp-block-heading">これはなに？</h2>



<ul class="wp-block-list">
<li><a href="http://codogue.com/">CoDogue &#8211; ちょこざいなツール格納庫</a></li>
</ul>



<p>「CoDogue」は「コドーグ」と読みます。<br />
タイトルどおり、ちょこざいなツールを格納していくサイトです。</p>



<p>ちょこざいなツールは各地にあると思いますが、<br />
1サイトにまとまっていたら便利なのではないかと思い作ってみました。<br />
まだ2つしかツールはございませんが、じわじわと増やしていくつもり。</p>



<p>初期メンバーを軽く紹介など。</p>



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



<p>そんまんまです。パスワードを生成します。<br />
使う文字種と文字列の長さ、生成する数を指定できます。<br />
オマケ機能として、テキスト形式でダウンロードできます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/_JJkNs5Ixl70/TVC46EiJOgI/AAAAAAAABKs/oxJiHTi9hbg/201102081221.png" alt="MkPasswd"/></figure>



<p></p>



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



<p>TSV形式のテキストデータを様々な形式にコンバートするツール。<br />
以下の形式に対応。</p>



<ul class="wp-block-list">
<li>JSON</li>



<li>XML</li>



<li>PHP array</li>



<li>HTML Table</li>
</ul>



<p>例えば、ExcelやGoogleドキュメントのスプレッドシート上のデータをコピーして、<br />
それをペーストしてコンバートしたりして使います。<br />
数値とブール値ぐらいはそれっぽくしてくれます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/_JJkNs5Ixl70/TVC46YfjZvI/AAAAAAAABKw/JsbOM6wt5yQ/201102081229.png" alt="TsvTo"/></figure>



<p></p>



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



<p>ご要望、不具合等ございましたら是非に。</p>
]]></content:encoded>
					
		
		
			</item>
		<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>@anywhereで認証してみる備忘録</title>
		<link>https://blog.mach3.jp/2010/09/14/auth-anywhere.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 14 Sep 2010 14:35:46 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Anywhere]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Twitter]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=682</guid>

					<description><![CDATA[Twitterの@anywhereは既に提供を終了していますので、本記事の内容も利用出来ません。 Sunsetting @Anywhere &#124; Twitter Developers @anywhereはTwitter公式 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="caution">
  Twitterの@anywhereは既に提供を終了していますので、本記事の内容も利用出来ません。<br /> <a href="https://dev.twitter.com/blog/sunsetting-anywhere">Sunsetting @Anywhere | Twitter Developers</a>
</p>



<p>@anywhereはTwitter公式から提供されている、<br />
どのサイトでもTwitterの機能が使えるようになる便利なライブラリです。<br />
cf) <a href="/2010/04/twitter-anywhere.html">ブログで@anywhereを試してみた！ ～ どこでもTwitter</a></p>



<p>今回はこの@anywhereでユーザー認証をしてみましょう。<br />
※アプリケーションの登録等は割愛致します。<br />
※jQueryを使用しています。</p>



<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>



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



<ul class="wp-block-list">
<li><a href="#auth-basic">@anywhereの基本</a></li>



<li><a href="#auth-func">認証に必要な機能</a></li>



<li><a href="#auth-demo">デモ</a></li>



<li><a href="#auth-source">コード抜粋</a></li>



<li><a href="#auth-mendokusee">めんどくせーな、と思ったら</a></li>



<li><a href="#auth-fin">まとめ</a></li>
</ul>



<h2 class="wp-block-heading" id="auth-basic">@anywhereの基本</h2>



<h3 class="wp-block-heading">ライブラリのロード</h3>



<p>公式で登録したアプリケーションのAPIkeyを付加したURLで、ライブラリをロードします。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"http://platform.twitter.com/anywhere.js?id=&lt;ここにAPIkeyを記述&gt;&amp;v=1"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></span></pre>


<h3 class="wp-block-heading">twttr.anywhere</h3>



<p>@anywhereはtwttr.anywhereというメソッドが全ての基本です。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">twttr.anywhere(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">tw</span>)</span>{
    <span class="hljs-comment">// ここでtwを使ってなんやかんやする</span>
});
</code></span></pre>


<p>twttr.anywhereに渡したfunctionは、<br />
anywhereを使用する準備が整った時にコールされます。<br />
ここでfunctionに渡されているtwに様々な便利な機能が備えられているので、<br />
それらを使ってなんやかんやするわけですね。</p>



<h2 class="wp-block-heading" id="auth-func">認証に必要な機能</h2>



<p>cf) <a href="http://dev.twitter.com/anywhere/begin">@anywhere公式ドキュメント（英語）</a></p>



<h3 class="wp-block-heading">tw.isConnected()</h3>



<p>ユーザー認証が済んでいるかどうかをbool値で返すメソッド。<br />
認証済みかそうでないかで処理を切り分けたい時に使います。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">if</span>( tw.isConnected() ){
    <span class="hljs-comment">// 認証済みの場合の処理</span>
} <span class="hljs-keyword">else</span> {
    <span class="hljs-comment">// 未認証の場合の処理</span>
}
</code></span></pre>


<h3 class="wp-block-heading">tw.signIn()</h3>



<p>Twitterにサインインする為のメソッドです。<br />
これをコールすると、別ウィンドウでTwitterに接続するページが開き、<br />
そのページでログインして戻ってくると認証が完了する仕組みです。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"#Signin"</span>).live(<span class="hljs-string">"click"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{
    tw.signin();
});
</code></span></pre>


<h3 class="wp-block-heading">twttr.anywhere.signOut()</h3>



<p>Twitterからサインアウトする為のメソッドです。<br />
※signIn()とは親が異なる点に注意。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"#Signout"</span>).live(<span class="hljs-string">"click"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{
    twttr.anywhere.signOut();
});
</code></span></pre>


<h3 class="wp-block-heading">authCompleteイベント</h3>



<p>認証が完了すると、twの&#8221;authComplete&#8221;イベントがトリガーされます。<br />
認証完了時に処理を行いたい時にbindして使います。<br />
「おや？bindってjQueryじゃねーの？」とか思われるかもしれませんが、<br />
実際anywhere自体がjQueryを使用して書かれているみたいです。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">tw.bind(<span class="hljs-string">"authComplete"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{
    alert(<span class="hljs-string">"認証完了！"</span>);
});
</code></span></pre>


<h3 class="wp-block-heading">tw.currentUser.data()</h3>



<p>tw.currentUserには現在接続中のユーザーの情報が格納されています。<br />
ユーザーの情報を引き出すには、data()メソッドを用います。<br />
console.log()してみると分かりますが、プロパティアクセスでも取得出来ます。<br />
※公式ドキュメントでは言及されていないので、念のためdata()を経由した方がよいかもしれません</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-comment">// data()で取得</span>
alert( tw.currentUser.data(<span class="hljs-string">"screen_name"</span>) + <span class="hljs-string">"でログイン中です"</span> );
<span class="hljs-comment">// プロパティアクセスで取得</span>
alert( tw.currentUser.screenName + <span class="hljs-string">"でログイン中です"</span> );
</code></span></pre>


<p>取得できるユーザー情報のリストは、APIドキュメントを参照<br />
…するよりもconsole.log()してプロパティ見たほうが多分はやい。</p>



<h2 class="wp-block-heading" id="auth-demo">デモ</h2>



<p class="caution">
    デモページは閉鎖致しました。
</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TI-FvAiWf1I/AAAAAAAABB8/sLQRotrSt6Y/201009142300.png" alt="Demo"/></figure>



<p></p>



<ul class="wp-block-list">
<li>「Signin」ボタンをクリックすると認証用のページが開きます</li>



<li>認証が完了すると表示が切り替わってユーザー情報が表示されます</li>



<li>テンプレートに<a href="http://github.com/mach3/js-jquery-render">jquery.render.js</a>を使ってみました<br /><br />cf) <a href="/2010/09/jquery-render-js.html">シンプルなjQueryテンプレートプラグインを書いてみる</a></li>
</ul>



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


<pre class="wp-block-code"><span><code class="hljs language-javascript">twttr.anywhere( <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">tw</span>)</span>{
    <span class="hljs-keyword">var</span> refresh = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
        $(<span class="hljs-string">"#LoginStatus"</span>).html(<span class="hljs-string">""</span>);
        <span class="hljs-keyword">if</span>( !tw.isConnected() ){
            $(<span class="hljs-string">"#template-loginstatus-normal"</span>)
            .render()
            .appendTo(<span class="hljs-string">"#LoginStatus"</span>);
        }<span class="hljs-keyword">else</span>{
            <span class="hljs-keyword">var</span> cu = tw.currentUser;
            $(<span class="hljs-string">"#template-loginstatus-connected"</span>)
            .render({
                <span class="hljs-string">"screen_name"</span>: cu.data(<span class="hljs-string">"screen_name"</span>),
                <span class="hljs-string">"profile_image_url"</span>: cu.data(<span class="hljs-string">"profile_image_url"</span>),
                <span class="hljs-string">"name"</span>: cu.data(<span class="hljs-string">"name"</span>),
                <span class="hljs-string">"description"</span> : cu.data(<span class="hljs-string">"description"</span>),
                <span class="hljs-string">"location"</span>: cu.data(<span class="hljs-string">"location"</span>),
                <span class="hljs-string">"followers_count"</span> : cu.data(<span class="hljs-string">"followers_count"</span>),
                <span class="hljs-string">"friends_count"</span> : cu.data(<span class="hljs-string">"friends_count"</span>),
                <span class="hljs-string">"listed_count"</span> : cu.data(<span class="hljs-string">"listed_count"</span>)
            })
            .appendTo(<span class="hljs-string">"#LoginStatus"</span>);
        }
    };
    $(<span class="hljs-string">"#LoginStatus .signin"</span>).live( <span class="hljs-string">"click"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{
        tw.signIn();
        <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
    });
    $(<span class="hljs-string">"#LoginStatus .signout"</span>).live( <span class="hljs-string">"click"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{
        twttr.anywhere.signOut();
        refresh();
        <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
    });
    tw.bind(<span class="hljs-string">"authComplete"</span>, refresh);
    refresh();
});
</code></span></pre>


<h2 class="wp-block-heading" id="auth-mendokusee">めんどくせーな、と思ったら</h2>



<p>簡単に認証ボタンが実装できる、connectButton()というメソッドが提供されています。<br />
特にカスタマイズする必要がなかったり、面倒な時はこれを使っちゃえばいいですね。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TI-Fvaa6q-I/AAAAAAAABCA/RUpaFNyoEXs/201009142305.png" alt="connectButton()"/></figure>



<p></p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">twttr.anywhere( <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">tw</span>)</span>{
    tw(<span class="hljs-string">"#MyConnectButton"</span>).connectButton();
});
</code></span></pre>


<p>サインアウトボタンにトグルしてくれたりはしないので、<br />
欲しい場合は自分で実装する必要があります。</p>



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



<p>フロントエンドだけで済んでしまうようなWebアプリケーションならば、<br />
お手軽に使えて良いですね。<br />
Webベースのクライアントなんかを作りたい時にも良いかもしれません。<br />
さ、次はPHPのOAuthだ。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Twitter+WebShotなWebサービス</title>
		<link>https://blog.mach3.jp/2010/09/12/twitter-webshot-service.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Sun, 12 Sep 2010 04:39:32 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Bookmarklet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Screenshot]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Twitter]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=670</guid>

					<description><![CDATA[TweetShot、ならびに tweetshots は既にサービスを終了している様です。 TwitterでWebサイトのスクリーンショットを共有するサービス「TweeShot」を試してみました。 それと、Typoでたどり [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="caution">
  TweetShot、ならびに tweetshots は既にサービスを終了している様です。
</p>



<p>TwitterでWebサイトのスクリーンショットを共有するサービス「TweeShot」を試してみました。 それと、Typoでたどり着いたもう１サービス。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TIxTWpdtdjI/AAAAAAAABBk/HhgDGwsPhXc/201009121309.png" alt="TweeShot"/></figure>



<p></p>



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



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



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TIxTWs2taGI/AAAAAAAABBo/6A2aftRmiQg/201009121307.png" alt="TweeShot"/></figure>



<p></p>



<p>TwitterIDでログインし、サイトのURLを入力すれば<br />
Webサイトのスクリーンショットを撮ってくれます。</p>



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



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TIxWypzjWzI/AAAAAAAABBw/0999Z2HJC1U/201009121327.png" alt="tweetshots"/></figure>



<p></p>



<p>そしてこちらがTypoで行きついたtweetshots。<br />
Tweeshotとは一文字違いですが、こちらはWebサイトのスクリーンショットではなく、<br />
ツイートのスクリーンショットを撮ってくれるサービス。<br />
ログインは不要で、URLを入力するだけで生成してくれます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SNSのシェアボタンのリンクを挿入するjQueryプラグイン</title>
		<link>https://blog.mach3.jp/2010/09/08/jquery-sharelink-js.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Wed, 08 Sep 2010 09:48:17 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Twitter]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=626</guid>

					<description><![CDATA[SNSのシェアボタンを作る為のURL&#38;パラメータメモの内容をjQueryプラグインにしてみましたが、 コメントの方が多いんじゃないか？というぐらい薄い内容になりました。 好物のちょこざいなやつです。 jqury. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://blog.mach3.jp/2010/09/sns-sharebutton-memo.html">SNSのシェアボタンを作る為のURL&amp;パラメータメモ</a>の内容をjQueryプラグインにしてみましたが、<br />
コメントの方が多いんじゃないか？というぐらい薄い内容になりました。<br />
好物のちょこざいなやつです。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TIdTtczxBfI/AAAAAAAABBE/8EQpac26dps/201009081811.png" alt="SNSのシェアボタンのリンクを挿入するjQueryプラグイン"/></figure>



<p></p>



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



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



<p>Download:<br />
<a href="http://github.com/mach3/js-jquery-sharelink">mach3&#8217;s js-jquery-sharelink at master &#8211; GitHub</a></p>



<p>SNSのシェアページへのリンクをa要素に付加するだけの単純な内容です。<br />
デフォルトでは現在表示されているページの情報を渡しますが、<br />
オプションで指定すればURLとタイトルを指定する事も出来ます。</p>



<p>各サービスで提供されているコードを<em>使いたくない時</em>や、<br />
<em>調べるのがめんどくさい時</em>に役立てて頂ければ。</p>



<h3 class="wp-block-heading">対応しているサービス</h3>



<ul class="wp-block-list">
<li>Twitter</li>



<li>Facebook (Share)</li>



<li>Livedoorクリップ</li>



<li>はてなブックマーク</li>



<li>Delicious</li>



<li>Googleブックマーク</li>



<li>Yahoo!ブックマーク</li>
</ul>



<h3 class="wp-block-heading">簡単な例</h3>



<p>クラス「share-twitter」がついたa要素に<br />
Twitterのシェアページへのリンクを付加します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"a.share-twitter"</span>).sharelink(<span class="hljs-string">"twitter"</span>);
</code></span></pre>


<h3 class="wp-block-heading">オプションを用いる例</h3>



<p>シェアしたいURLとタイトルを指定します。<br />
オプションは、第二引数のオプジェクトで渡します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"a.share-twitter"</span>).sharelink(<span class="hljs-string">"twitter"</span>,{
    <span class="hljs-attr">url</span>:<span class="hljs-string">"http://www.example.com"</span>,
    <span class="hljs-attr">title</span>:<span class="hljs-string">"EXAMPLE.com"</span>
});
</code></span></pre>


<h3 class="wp-block-heading">使用可能なオプション</h3>



<dl>
<dt>url (string) = location.href</dt>
<dd>シェアしたいページのURL</dd>
<dt>title (string) = document.title</dt>
<dd>シェアしたいページのタイトル</dd>
<dt>target (string) = &#8220;_blank&#8221;</dt>
<dd>ターゲットウィンドウ</dd>
<dt>encode (boolean) = true</dt>
<dd>URLとタイトルをURLエンコードするかどうかのブール値</dd>
</dl>



<h3 class="wp-block-heading">デモ</h3>



<p><iframe width="100%" height="400" src="http://jsfiddle.net/mach3ss/SNXFu/embedded/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>



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



<p>jQueryのプラグインでJSDocを使う時は<br />
どのように書くのが正しいのだろうか…悩み中。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>JSLintでストリクトなJavaScriptを書く</title>
		<link>https://blog.mach3.jp/2010/06/06/jslint.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Sun, 06 Jun 2010 22:32:00 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Notepad++]]></category>
		<category><![CDATA[Service]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/06/06/jslint%e3%81%a7%e3%82%b9%e3%83%88%e3%83%aa%e3%82%af%e3%83%88%e3%81%aajavascript%e3%82%92%e6%9b%b8%e3%81%8f.html</guid>

					<description><![CDATA[Web系の技術のLintといえばHTML-Lintなどが有名ですが、 JavaScriptにも、ルールに則って書かれているかどうかをチェックする 「JSLint」が存在しました。 JSLintを使う JSLint, Th [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Web系の技術のLintといえばHTML-Lintなどが有名ですが、<br />
JavaScriptにも、ルールに則って書かれているかどうかをチェックする<br />
「JSLint」が存在しました。</p>



<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>



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



<h2 class="wp-block-heading">JSLintを使う</h2>



<p><a href="http://jslint.com/">JSLint, The JavaScript Code Quality Tool</a></p>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TAuiw3CWgZI/AAAAAAAAA7o/W_pjBjLi0SA/s800/201006062139.png" alt="JSLint"/></figure>



<p></p>



<p>使い方は至ってシンプルで、<br />
テキストエリアにJSコードをペーストして「Lint」ボタンをクリックするだけ。<br />
よろしくない書き方をしていると、下に連連とエラーを吐いてくれます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TAuiw8Moq1I/AAAAAAAAA7s/kH4YB1baFKQ/s800/201006062147.png" alt="JSLintの結果"/></figure>



<p></p>



<p>オプションは多数用意されていますが、<br />
よくわからない時、面倒な時は「The Good Parts」ボタンで<br />
一般的なオプションを一括選択してくれます。</p>



<p>cf) <a href="http://www.youtube.com/watch?v=gz2mBQBp4XE">YouTube &#8211; Using JSLint （動画）</a></p>



<h2 class="wp-block-heading">テキストエディタから直接利用する</h2>



<p>一々ブラウザでアクセスしてコピー＆ペーストするのは面倒。<br />
そんな人の為はGitHubからソースをダウンロードしてきて、<br />
バッチファイルで使えるようにしましょう。</p>



<ul class="wp-block-list">
<li><a href="https://github.com/douglascrockford/JSLint">douglascrockford/JSLint &#8211; GitHub</a> </li>
</ul>



<p>利用の仕方はエディタによって違ってきますが、<br />
Notepad++でのインストール方法が、<a href="http://stackoverflow.com/questions/1046810/using-jslint-in-notepad">Stack Overflow</a>で紹介されていました。<br />
当時から状況も多少変わっているので、要所のみ紹介しておきます。</p>



<p class="caution">
  Notepad++の場合、現在ではプラグインが提供されているそうです。<br /> <a href="http://sourceforge.net/projects/jslintnpp/files/">JSLint Plugin for Notepad++ &#8211; Browse Files at SourceForge.net</a><br /> kntさんより情報頂きました。
</p>



<p class="caution">
  2012/12/19現在<br /> Notepad++のjslintはPlugin Managerでインストール出来るようになっています。</p>



<p> <img decoding="async" src="https://lh4.googleusercontent.com/-eKoAwgUkpWo/UNGFekGELAI/AAAAAAAAB1Q/u-xtQ6LCoZA/s400/20121219.png"><br /> kntさんより情報頂きました。
</p>



<h3 class="wp-block-heading">1. <a href="https://github.com/douglascrockford/JSLint">GitHub</a>から<em>&#8220;fulljslint.js&#8221;</em>をダウンロードする。</h3>



<h3 class="wp-block-heading">2. fulljslint.jsファイルの最後に以下のように追記する。</h3>


<pre class="wp-block-code"><span><code class="hljs language-javascript">(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
    <span class="hljs-keyword">if</span>(!JSLINT(WScript.StdIn.ReadAll(),{<span class="hljs-attr">passfail</span>:<span class="hljs-literal">false</span>})) {
        <span class="hljs-keyword">var</span> e;
        <span class="hljs-keyword">for</span>(<span class="hljs-keyword">var</span> i <span class="hljs-keyword">in</span> JSLINT.errors) {
                e=JSLINT.errors&#91;i];
                WScript.StdOut.WriteLine(<span class="hljs-string">'Lint at line '</span>+(e.line+<span class="hljs-number">1</span>)+<span class="hljs-string">' character '</span>+(e.character+<span class="hljs-number">1</span>)+<span class="hljs-string">': '</span>+e.reason);
                WScript.StdOut.WriteLine(<span class="hljs-string">'  '</span>+(e.evidence||<span class="hljs-string">''</span>).replace(<span class="hljs-regexp">/^s*(S*(s+S+)*)s*$/</span>,<span class="hljs-string">"$1"</span>));
        }
        WScript.Quit(<span class="hljs-number">1</span>);
    }
}());
</code></span></pre>


<p>このコードは、JSLintをWindowsScriptingHost経由で使えるようにする為の物です。</p>



<h3 class="wp-block-heading">3. NotePadのnppExecから呼び出す用のバッチファイルを作成する</h3>



<p>仮にfulljslint.jsを、「c:Program FilesJSLint」に保存したと仮定します。<br />
次のようなバッチファイルを作成し、<br />
同じディレクトリに「jslint.bat」のような名前をつけて保存しておきましょう。</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-keyword">@echo</span> off
setlocal
set P=<span class="hljs-attribute">c:</span>Program Filesjslint
@copy /b <span class="hljs-string">"%P%config.txt"</span>+%<span class="hljs-number">1</span> <span class="hljs-string">"%P%lastoutput.txt"</span>
@cscript /NoLogo <span class="hljs-string">"%P%fulljslint.js"</span> &lt; <span class="hljs-string">"%P%lastoutput.txt"</span>
endlocal
:end
</code></span></pre>


<p>何をしているかというと、conf.txtの内容（後述）と、<br />
エディタで編集中のJavaScriptの内容を結合した<br />
「lastoutput.txt」という一時ファイルを生成し、<br />
それをfulljslint.jsに「検査してくださーい」と投げているわけですね。</p>



<h3 class="wp-block-heading">4. 設定用のconf.txtを作成する</h3>



<p>Webの「OPTION」同様に様々なオプションを設定する為の設定ファイルを作成します。<br />
<a href="http://jslint.com/">JSLint</a>のWebツールでオプションを選択すると、<br />
オプションの下部に次のようなコメントが表示されます。</p>


<pre class="wp-block-code"><span><code class="hljs language-json"><span class="hljs-comment">/*jslint white: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: true */</span>
</code></span></pre>


<p>これをそのままコピー＆ペーストすればOKです。<br />
ちなみに上記のものは「The Good Parts」をクリックした時のものです。</p>



<h3 class="wp-block-heading">5. Notepad++のNppExecで実行する</h3>



<p>デフォルト設定ならば、F6でNppExecのダイアログが表示されます。<br />
（もしくは「プラグイン」→「NppExec」→「Exec」）<br />
そこに、次のように入力して「OK」しましょう。</p>


<pre class="wp-block-code"><span><code class="hljs language-json"><span class="hljs-string">"c:Program FilesJSLintjslint.bat"</span> <span class="hljs-string">"$(FULL_CURRENT_PATH)"</span>
</code></span></pre>


<p>設定が上手くいっていれば、エディタの下にコンソールが表示されてエラーを吐いてくれるはずです。<br />
いつでも使えるように「Save」しておきましょう。</p>



<h2 class="wp-block-heading">他の環境の場合は？</h2>



<p>マクロや外部ツールが扱えるようなエディタなら導入できるはずです。<br />
VIMをお使いのひとには、プラグインもあるみたい]です。（試してません！）<br />
WSHがない環境ではSpiderMonkeyやらnode.jsやらを利用するみたいですね。</p>



<ul class="wp-block-list">
<li><a href="https://github.com/hallettj/jslint.vim">hallettj/jslint.vim &#8211; GitHub</a></li>
</ul>



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



<p>つい「動けばいーや」的なスタンスで書いてしまいがちなJavaScriptですが（主に私が）、<br />
より上質なスクリプティングを目指すためには、ぜひ導入しておきたいですね。</p>



<p>ちなみに過去のスクリプトをJSLintにかけると、軽く落ち込めますよ。（オススメ！）</p>



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



<dl>
<dt>2010/12/29</dt>
<dd>WSHのURLがリンク切れになっています。</dd>
<dt>2011/01/03</dt>
<dd>ソースがGitHubに移動していたのを機会にバッチファイル等を書き直しました。</dd>
<dt>2012/09/12</dt>
<dd>kntさんにNotepad++版プラグインを教えて頂いたので追記しました。</dd>
<dt>2012/12/12</dt>
<dd>kntさんにNotepad++のPlugin Managerに関する情報を頂いたので追記しました。</dd>
</dl>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ツイートを埋め込みできる「Blackbird Pie」を試してみた</title>
		<link>https://blog.mach3.jp/2010/05/05/blackbird-pie-for-twitter.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Wed, 05 May 2010 18:43:00 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Twitter]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/05/05/%e3%83%84%e3%82%a4%e3%83%bc%e3%83%88%e3%82%92%e5%9f%8b%e3%82%81%e8%be%bc%e3%81%bf%e3%81%a7%e3%81%8d%e3%82%8b%e3%80%8cblackbird-pie%e3%80%8d%e3%82%92%e8%a9%a6%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f.html</guid>

					<description><![CDATA[Blackbird Pie はサービス終了しています。 ツイートをブログ等に埋め込める「Blackbird Pie」が公開されていたので試してみました。 Blackbird Pie – Twitter Media 使い方 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="caution">
    Blackbird Pie はサービス終了しています。
</p>



<p>ツイートをブログ等に埋め込める「Blackbird Pie」が公開されていたので試してみました。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/S-E9ESEHO4I/AAAAAAAAA4E/gziNc-bFu90/s800/201005051839.png" alt="Blackbird Pie"/></figure>



<p></p>



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



<p><a href="http://media.twitter.com/blackbird-pie/">Blackbird Pie – Twitter Media</a></p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/S-E9EVdrAwI/AAAAAAAAA4I/ESNeBc6V2Uo/s800/201005051835.png" alt="Blackbird Pie"/></figure>



<p></p>



<p>使い方は至ってシンプルで、<br />
URLを入力して「Bake It」をクリックしてパイを焼きあげます。<br />
URLは、個別ツイート画面のURLでなければなりません。<br />
「何時間前」等のリンクから遷移できるあれですね。</p>



<p>すると、埋め込まれるツイートのプレビューと<br />
埋め込む為のHTMLコードが表示されます。<br />
あとはそのHTMLコードをブログのエントリーに挿入するだけ。</p>



<p><!-- http://twitter.com/mach3ss/status/13364880016 --></p>



<p><style type="text/css">
  .bbpBox{background:url(http://s.twimg.com/a/1272578449/images/themes/theme1/bg.png) #C0DEED;padding:20px;}p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px}p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6}p.bbpTweet span.metadata span.author{line-height:19px}p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px}p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}<br />
</style>
</p>



<div class="bbpBox">
<p class="bbpTweet">
    オニ盛りは、オニ食う人じゃないときびしい。1/3で飽き、半分こえたあたりで嫌になり、残り1/3まできたら食べ物を粗末にしてはいけないという一心で食を進める。<span class="timestamp"><a title="Tue May 04 13:34:42 +0000 2010" href="http://twitter.com/mach3ss/status/13364880016">less than a minute ago</a> via <a href="http://github.com/cezarsa/chromed_bird" rel="nofollow">Chromed Bird</a></span><span class="metadata"><span class="author"><a href="http://twitter.com/mach3ss"><img decoding="async" src="http://a3.twimg.com/profile_images/71082647/icon_normal.png"></a><strong><a href="http://twitter.com/mach3ss">まっは</a></strong> mach3ss</span></span>
  </p>
</div>



<p><!-- end of tweet --></p>



<p>こんな感じに埋め込む事が出来ます。実に簡単。<br />
ユーザのページで設定されているスタイルがCSSとして一緒に埋め込まれるので、<br />
見た目も実際の物に近い感じに表示されます。</p>



<p>ただ、まだ試行錯誤の段階の様で、<br />
「もっと短いコードにする」「実際のタイムスタンプを挿入する」<br />
等の問題点がToDoにあげられています。確かにすごく冗長なコードです。</p>



<p>余談。Blackbirdはイギリスでは<a href="http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%A6%E3%82%BF%E3%83%89%E3%83%AA">クロウタドリ</a>、ただし米語では<a href="http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83%A0%E3%82%AF%E3%83%89%E3%83%AA%E3%83%A2%E3%83%89%E3%82%AD">クロムクドリモドキ</a>を指すそうな。<br />
米国の会社なので後者なのでしょうか。どちらも知らない鳥ですが…<br />
そもそもTwitterのロゴの鳥は何という鳥なのか、金属なのか粘土なのか。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Twitterのリアルタイムを感じるWebサービス</title>
		<link>https://blog.mach3.jp/2010/04/30/twitter-realtime-services.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 30 Apr 2010 22:04:00 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Infographic]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Twitter]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/04/30/twitter%e3%81%ae%e3%83%aa%e3%82%a2%e3%83%ab%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%92%e6%84%9f%e3%81%98%e3%82%8bweb%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9.html</guid>

					<description><![CDATA[忙しさにかまけてだいぶ時間が経ってしまいました… Twitterと連動するサービスは星の数ほどありますが、 今回ご紹介するのは「情報の可視化」を試みたWebサービス2点です。 POST-SEASON TWITTER PL [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>忙しさにかまけてだいぶ時間が経ってしまいました…</p>



<p>Twitterと連動するサービスは星の数ほどありますが、<br />
今回ご紹介するのは「情報の可視化」を試みたWebサービス2点です。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/S9rUgbO4SiI/AAAAAAAAA3k/OwQPJWIspA0/s800/201004302149.png" alt="Twitterのリアルタイムを感じるWebサービス"/></figure>



<p></p>



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



<h2 class="wp-block-heading">POST-SEASON TWITTER PLAYOFFS</h2>



<p><a href="http://postseason-stream.nikebasketball.com/live/">Nike NBA</a></p>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/S9rUg64zGqI/AAAAAAAAA3o/lejjgOLdVgo/s800/201004302156.png" alt="Nike NBA"/></figure>



<p></p>



<p>まずはNikeが立ち上げた「POST-SEASON TWITTER PLAYOFFS」、<br />
ツイートを集めてWeb上でプレイオフを楽しもうというサービスです。<br />
ユーザがお気に入りのチームに関するツイートをすると、<br />
投稿数によってチームのボックスが拡大縮小します。<br />
THUNDERが消えそうだーーーっ！</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/S9rUhU6k-FI/AAAAAAAAA3s/BoJkYq0QJUU/s800/201004302157.png" alt="BRACKETモード"/></figure>



<p></p>



<p>こちらは「BRACKET」モードの画面。<br />
最も投稿数が多かったチームがチャンピオン！<br />
ユーザー参加型のWeb上の応援合戦ですね。</p>



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



<p><a href="http://moritz.stefaner.eu/projects/revisit/">moritz.stefaner.eu &#8211; revisit &#8211; demo</a></p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/S9rUhyRJSpI/AAAAAAAAA3w/0w0no0XiqQo/s800/201004302158.png" alt="revisit"/></figure>



<p></p>



<p>お次は、ツイート間の関連性を可視化した「revisit」。<br />
見ての通り、どのツイートがどのツイートに対するリアクションなのかが<br />
うねうねとビジュアル化されています。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/S9rUiCyoWlI/AAAAAAAAA30/RrdipdvjZfU/s800/201004302159.png" alt="Search terms"/></figure>



<p></p>



<p>右カラムの「Search terms」に、ツイッター検索の文法で入力すると<br />
その検索結果をもとにビジュアライズされます。</p>



<p>残念ながら日本語は表示されないようですが、<br />
旬なキーワードと「RT」等を組み合わせて検索すると、<br />
なかなか美しい図形を描画してくれますよ。</p>



<p>情報を可視化した作品やサービスを近頃よく目にしますが、<br />
Twitterのリアルタイム性と併せると面白い化学反応が拝めそう。<br />
そのあたりでまた新しいアイデアを拾いたいですね。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
