<?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>grotta blog &#187; おだむら</title>
	<atom:link href="http://grottad.com/blog/%e7%b7%a8%e9%9b%86%e8%80%85/odamura/feed" rel="self" type="application/rss+xml" />
	<link>http://grottad.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 16 Sep 2015 01:02:29 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>SublimeText3でSassとCompassを使う</title>
		<link>http://grottad.com/blog/424</link>
		<comments>http://grottad.com/blog/424#comments</comments>
		<pubDate>Tue, 15 Sep 2015 23:11:47 +0000</pubDate>
		<dc:creator><![CDATA[おだむら]]></dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Compass]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Sass]]></category>
		<category><![CDATA[SublimeText]]></category>
		<category><![CDATA[備忘録]]></category>

		<guid isPermaLink="false">http://grottad.com/blog/?p=424</guid>
		<description><![CDATA[SassとCompassを使うとコーディング作業がすこぶる捗りますが、コンパイルが少々面倒なのがネックです。ターミナルコマンドでのコンパイルは複数ディレクトリのコンパイルには不向きだし、GUIアプリケ …<a href="http://grottad.com/blog/424" class="more">続きを読む</a>]]></description>
				<content:encoded><![CDATA[<p class="pd5">SassとCompassを使うとコーディング作業がすこぶる捗りますが、コンパイルが少々面倒なのがネックです。<br />ターミナルコマンドでのコンパイルは複数ディレクトリのコンパイルには不向きだし、GUIアプリケーションは起動とプロジェクト毎の設定が億劫です。<br />そんな中、SublimeTextでのコンパイルが思いの外便利だったので、MacOSにおけるSass/Compassの導入方法と便利な機能を備忘録を兼ねて紹介します。</p>
<p style="font-size: 18px; padding: 5px 0; border-left: 3px solid #4c4c4c; margin-top: 20px; text-indent: 7px;"><strong>SassとCompassをインストール</strong></p>
<pre class="crayon-plain-tag">sudo gem install sass
sudo gem install compass</pre>
<p class="pd5" style="margin-bottom: 0;">※9月16日現在、上記コマンドでMac OSX 10.11(El Capitan)にインストールすることはできませんが、-nでバイナリファイルの場所を指定するとインストールできます。</p>
<pre class="crayon-plain-tag">sudo gem install -n /user/local/bin sass
sudo gem install -n /user/local/bin compass</pre>
<p style="font-size: 18px; padding: 5px 0; border-left: 3px solid #4c4c4c; margin-top: 20px; text-indent: 7px;"><strong>SublimeTextの設定</strong></p>
<p class="pd5">パッケージのインストール<br />・Sass<br />・SASS Build<br />・SCSS<br />・Compass</p>
<p class="pd5">Macの場合は、コマンドパレットからList PackageでCompassを選択し、ファイル“Compass.sublime-build”にosxを追加する。<br />※USERNAMEの箇所は自分のユーザー名が入ります。</p>
<pre class="crayon-plain-tag">{
  "osx": {
    "path": "/usr/local/bin:/Users/USERNAME/.rbenv/shims:$PATH"
  },
  "cmd": "sh '${packages}/Compass/build.sh' '${file_path}' '${project_path:${folder}}'",
  "working_dir": "$packages/Compass",
  "selector": "source.sass, source.css",
  "shell": "true",
  "windows":
  {
    "cmd": "build.cmd \"${file_path}\" \"${project_path:${folder}}\""
  }
}</pre>
<p style="font-size: 16px; padding: 5px 0; border-left: 3px solid #4c4c4c; margin-top: 20px; text-indent: 7px;"><strong>“config.rb”を設置</strong></p>
<p class="pd5">プロジェクトのルートにconfig.rbを作成し、下記の内容を記述。</p>
<pre class="crayon-plain-tag">http_path = "/"
css_dir = "css"
sass_dir = "sass"
images_dir = "images"
javascripts_dir = "js"
output_style = :expanded
line_comments = false</pre>
<p class="pd5">※css_dirにはcssファイルの出力先ディレクトリを、sass_dirにはsassまたはscssファイル格納ディレクトリを設定します。</p>
<p class="pd5" style="margin-bottom: 0;">上記設定でのフォルダ構成例</p>
<pre class="crayon-plain-tag">■プロジェクトルート
     │
     ├─config.rb
     │
     ├─css
     │
     ├─images
     │
     ├─js
     │
     └─sass</pre>
<p style="font-size: 16px; padding: 5px 0; border-left: 3px solid #4c4c4c; margin-top: 20px; text-indent: 7px;"><strong>Sassファイルの編集とコンパイル</strong></p>
<p class="pd5">config.rbで指定したsassファイル格納ディレクトリに、.sassまたは.scssを作成し、編集します。</p>
<p class="pd5">コンパイル（ビルド）はコマンド＋Bで行います。<br />コンパイルに成功すると、config.rbで指定したcss格納ディレクトリに.cssが作成されます。</p>
<p class="pd5"><a href="424/2/">次のページ</a>では<a href="424/2/">Sassの便利な機能</a>について紹介します。</p>
<p>]]></content:encoded>
			<wfw:commentRss>http://grottad.com/blog/424/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HDR タイムラプス</title>
		<link>http://grottad.com/blog/353</link>
		<comments>http://grottad.com/blog/353#comments</comments>
		<pubDate>Thu, 02 Apr 2015 14:00:49 +0000</pubDate>
		<dc:creator><![CDATA[おだむら]]></dc:creator>
				<category><![CDATA[video]]></category>
		<category><![CDATA[HDR]]></category>
		<category><![CDATA[タイムラプス]]></category>
		<category><![CDATA[新宿御苑]]></category>

		<guid isPermaLink="false">http://grottad.com/blog/?p=353</guid>
		<description><![CDATA[お昼休みに新宿御苑へ撮影に行きました。お花見日和で、とても多くの人が訪れていました。 3秒のインターバルで約40分間、2400枚弱撮りましたが、カメラの前で思っきり記念撮影をされたりして、かなりのフレ …<a href="http://grottad.com/blog/353" class="more">続きを読む</a>]]></description>
				<content:encoded><![CDATA[<p class="pd5">お昼休みに新宿御苑へ撮影に行きました。<br />お花見日和で、とても多くの人が訪れていました。</p>
<a href="http://grottad.com/blog/wp-content/uploads/2015/04/MG_6808.jpg" rel="lightbox[353]"><img src="http://grottad.com/blog/wp-content/uploads/2015/04/MG_6808-1024x683.jpg" alt="新宿御苑" class="aligncenter size-large wp-image-362"/></a>
<br />
<p class="pd5" style="margin-top:1em;">3秒のインターバルで約40分間、2400枚弱撮りましたが、<br />カメラの前で思っきり記念撮影をされたりして、かなりのフレームを削ることになりました…。</p>
<div class="arve-wrapper arve-normal-wrapper arve-iframe-wrapper aligncenter" itemscope itemtype="http://schema.org/VideoObject"><div class="arve-embed-container" ><iframe class="arve-inner" src="https://www.youtube.com/embed/OkHRmQYbPX4?rel=0&#038;ap=0&#038;autoplay=0&#038;autoStart=false&#038;player_autoStart=false#038;vq=hd720" frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></div></div>]]></content:encoded>
			<wfw:commentRss>http://grottad.com/blog/353/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magic Lantern HDR VIDEO</title>
		<link>http://grottad.com/blog/275</link>
		<comments>http://grottad.com/blog/275#comments</comments>
		<pubDate>Sat, 07 Feb 2015 04:32:12 +0000</pubDate>
		<dc:creator><![CDATA[おだむら]]></dc:creator>
				<category><![CDATA[video]]></category>
		<category><![CDATA[HDR]]></category>
		<category><![CDATA[新宿御苑]]></category>

		<guid isPermaLink="false">http://grottad.com/blog/?p=275</guid>
		<description><![CDATA[先日、新宿御苑でタイムラプス撮影をした際にHDRビデオ撮影もしておいたので編集してみました。 通常、3枚〜5枚の画像をHDR合成しますが、Magic LanternのHDRビデオの場合、1フレーム毎に …<a href="http://grottad.com/blog/275" class="more">続きを読む</a>]]></description>
				<content:encoded><![CDATA[<p class="pd5">先日、新宿御苑でタイムラプス撮影をした際にHDRビデオ撮影もしておいたので編集してみました。<br />
通常、3枚〜5枚の画像をHDR合成しますが、Magic LanternのHDRビデオの場合、1フレーム毎に録画された露出違いの画像2枚からHDR合成をすることになります。<br />合成枚数が少ない分、HDR効果も薄いです。<br />そもそも露出が高すぎたという設定ミスもあり、期待に反した仕上がりになりました…。</p>

<p class="pd5" style="margin-bottom:5px;"><strong>■理想</strong>(RAW3枚から合成)</p>
<p style="margin-bottom:25px"><a href="http://grottad.com/blog/wp-content/uploads/2015/02/hdr_still.jpg" rel="lightbox[275]"><img src="http://grottad.com/blog/wp-content/uploads/2015/02/hdr_still-1024x683.jpg" alt="RAW3枚で合成" class="aligncenter size-large wp-image-276" /></a></p>
<p class="pd5" style="margin-bottom:5px;"><strong>■現実</strong>(ビデオから書き出した画像2枚で合成)</p>
<div class="arve-wrapper arve-normal-wrapper arve-iframe-wrapper aligncenter" itemscope itemtype="http://schema.org/VideoObject"><div class="arve-embed-container" ><iframe class="arve-inner" src="https://www.youtube.com/embed/Q4RQ5SX_9Ac?rel=0&#038;ap=0&#038;autoplay=0&#038;autoStart=false&#038;player_autoStart=false#038;vq=hd720" frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></div></div>

<p class="pd5">ビデオからHDR合成をする方法は様々ありますが、今回はシーケンスで画像を書き出し、<a href="http://www.hdrsoft.com/jp/" target="_blank">Photomatrix Pro</a>でバッチ処理をしました。</p>

<p class="pd5">
ざっくりとした作業工程は、<br />
①Motion：シーケンス書き出し<br />
②Photomatrix Pro：プリセット作成<br />
③Photomatrix Pro：バッチ処理<br />
④Motion：シーケンス読み込み</p>

<p class="pd5">と、物凄く手間と時間がかかります。</p>
<p calss="pd5">今回は設定ミスもあり散々な仕上がりでしたが、次回は納得の行く仕上がりになるよう頑張りたいと思います。</p>]]></content:encoded>
			<wfw:commentRss>http://grottad.com/blog/275/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RubyでGmailを使う</title>
		<link>http://grottad.com/blog/228</link>
		<comments>http://grottad.com/blog/228#comments</comments>
		<pubDate>Wed, 04 Feb 2015 12:42:34 +0000</pubDate>
		<dc:creator><![CDATA[おだむら]]></dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[備忘録]]></category>

		<guid isPermaLink="false">http://grottad.com/blog/?p=228</guid>
		<description><![CDATA[ちょっとしたテストや、メールサーバーがない環境でメール送信をしたい場合、Gmailの利用が非常に便利です。備忘録を兼ね、RubyでGmailライブラリを使用したメールの送信方法を紹介します。 ※ここで …<a href="http://grottad.com/blog/228" class="more">続きを読む</a>]]></description>
				<content:encoded><![CDATA[<p class="pd5" style="margin-bottom:5px;">ちょっとしたテストや、メールサーバーがない環境でメール送信をしたい場合、Gmailの利用が非常に便利です。<br />備忘録を兼ね、RubyでGmailライブラリを使用したメールの送信方法を紹介します。</p>
<p class="pd5" style="font-size:1.2rem;line-height:1.3em">※ここで紹介する例は、GmailのSMTPサーバーを利用した標準mailライブラリでの送信方法ではなく、Gmailそのものを使用する例です。</p>

<pre class="crayon-plain-tag">gem install gmail</pre> 
 
<pre class="crayon-plain-tag">require 'gmail'

gmail = Gmail.connect("Gmailアドレス","パスワード")　#Gmailに接続
gmail.deliver do
    to "送信先アドレス"
    subject "件名"
    text_part do
        body "本文"
    end
end
gmail.logout #切断</pre> 
<p class="pd5">上記が送信に必要なスクリプトの全てになりますが、これだけでは送信できません。<br />Ruby側で何もエラーが出ないので原因究明に手こずりましたが、解決方法はGoogleアカウントの設定にありました。</p>
<p class="pd5">まず、Googleアカウント設定の『2段階認証プロセス』の項目を確認します。</p>
<p>
<img src="http://grottad.com/blog/wp-content/uploads/2015/02/gmail_1.png" alt="" class="alignnone size-full wp-image-244" />
</p>
<p style="background-color:#000;color:#fff;padding:5px 0;margin-top:20px;text-indent:7px;"><strong>◆2段階認証プロセスがオフの場合</strong></p>
<class="pd5">『安全性の低いアプリのアクセス』をオンにするだけでメール送信が可能になります。</p>
<p>
<img src="http://grottad.com/blog/wp-content/uploads/2015/02/gmail_21.png" alt="" class="alignnone size-full wp-image-245" />
</p>
<p>
<img src="http://grottad.com/blog/wp-content/uploads/2015/02/gmail_2.png" alt="" class="alignnone size-full wp-image-237" />
</p>
<p style="background-color:#000;color:#fff;padding:5px 0;margin-top:20px;text-indent:7px;"><strong>◆2段階認証プロセスがオンの場合</strong></p>
<p class="pd5">アプリパスワードを生成します。</p>
<p>
<img src="http://grottad.com/blog/wp-content/uploads/2015/02/gmail_3.png" alt="" class="alignnone size-full wp-image-246" />
</p>
<p>
<img src="http://grottad.com/blog/wp-content/uploads/2015/02/gmail_4.png" alt="" class="alignnone size-full wp-image-247" />
</p>
<p class="pd5">生成されたアプリパスワードをGmail.connectのパスワードにすることで二段階認証を通過してメールの送信が可能になります。</p>
<p class="pd5">ちなみに、二段階認証プロセスを有効にするには、携帯電話のメールアドレスが必要となります。<br />また、二段階認証プロセス有効後は、デバイスごとにパスワードの認証が求められ、都度、携帯電話に送られてくるパスワードを入力する必要があるため、運用・管理におけるアカウントの共有化が難しくなります。</p>
<p class="pd5"><strong>Gmail使用のメリット</strong><br />・自前のメールサーバーを必要としない<br />・文字化け対策が不要</p>
<p class="pd5"><strong>デメリット</strong><br />・セキュリティが不安<br />・Googleの監視下にある</p>
<p class="pd5">セキュリティ面や運用性を考えると用途が限られてきますが、ちょっとしたテストなんかには十分使えるんじゃないでしょうか。</p>]]></content:encoded>
			<wfw:commentRss>http://grottad.com/blog/228/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HDRタイムラプス撮影にチャレンジ</title>
		<link>http://grottad.com/blog/150</link>
		<comments>http://grottad.com/blog/150#comments</comments>
		<pubDate>Sun, 01 Feb 2015 10:54:21 +0000</pubDate>
		<dc:creator><![CDATA[おだむら]]></dc:creator>
				<category><![CDATA[video]]></category>
		<category><![CDATA[HDR]]></category>
		<category><![CDATA[タイムラプス]]></category>
		<category><![CDATA[新宿御苑]]></category>

		<guid isPermaLink="false">http://grottad.com/blog/?p=150</guid>
		<description><![CDATA[都心で今冬初めての積雪なった1月30日、新宿御苑でHDRタイムラプスの撮影にチャレンジしました。インターバルを5秒に設定し、露出の異なる写真を3枚ずつ撮っていくわけですが、撮影を始めた頃には既に雪から …<a href="http://grottad.com/blog/150" class="more">続きを読む</a>]]></description>
				<content:encoded><![CDATA[<img src="http://grottad.com/blog/wp-content/uploads/2015/02/hdr_thumb.png" alt="hdr" class="alignnone size-full wp-image-159" /><p>
<p class="pd5">都心で今冬初めての積雪なった1月30日、新宿御苑でHDRタイムラプスの撮影にチャレンジしました。<br />インターバルを5秒に設定し、露出の異なる写真を3枚ずつ撮っていくわけですが、撮影を始めた頃には既に雪から雨へと変わり、あまりの寒さに7分程度でギブアップ…。<br />結果、2秒足らずのビデオとなってしまいました…。</p>
<div class="arve-wrapper arve-normal-wrapper arve-iframe-wrapper aligncenter" itemscope itemtype="http://schema.org/VideoObject"><div class="arve-embed-container" ><iframe class="arve-inner" src="https://www.youtube.com/embed/NqSgTZbIuWk?rel=0&#038;ap=0&#038;autoplay=0&#038;autoStart=false&#038;player_autoStart=false#038;amp&#038;vq=hd720" frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></div></div></p>
<p class="pd5">しかし、この悪天候で入園する人なんていないだろうと思っていましたが、写真好きにとっては絶好の撮影日和ということなのか、意外とカメラを持った人が多く驚きました。</p><p class="pd5">次回は長時間撮影ができるよう、桜が満開になった頃にでもリベンジしたいと思います。</p>]]></content:encoded>
			<wfw:commentRss>http://grottad.com/blog/150/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rubyはじめました。</title>
		<link>http://grottad.com/blog/83</link>
		<comments>http://grottad.com/blog/83#comments</comments>
		<pubDate>Thu, 29 Jan 2015 14:21:28 +0000</pubDate>
		<dc:creator><![CDATA[おだむら]]></dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Twitter API]]></category>

		<guid isPermaLink="false">http://grottad.com/blog/?p=83</guid>
		<description><![CDATA[今までちょっとしたスクレイピングはPHPで済ましていましたが、最近はAjaxで要素をロードするサイトも多く、PHPだけでスクレイピングを行うのは少々困難になってきました。もっと柔軟で効率の良いスクレイ …<a href="http://grottad.com/blog/83" class="more">続きを読む</a>]]></description>
				<content:encoded><![CDATA[<p><img src="http://grottad.com/blog/wp-content/uploads/2015/01/MG_3839.png" alt="" class="alignnone size-full wp-image-90" /></p><p class="pd5">今までちょっとしたスクレイピングはPHPで済ましていましたが、最近はAjaxで要素をロードするサイトも多く、PHPだけでスクレイピングを行うのは少々困難になってきました。<br />もっと柔軟で効率の良いスクレイピング方法はないものかと色々調べてみたところ、「どうやらスクレイピングにはRubyが適している」ということが分かりました。<br />Rubyには以前から興味があったものの、なかなか必要に迫られることもなくスルーしていましたが、良い機会なので少し勉強してみることにしました。</p>
<blockquote style="margin-bottom:15px;"><p>Ruby（ルビー）は、まつもとゆきひろ（通称 Matz）により開発されたオブジェクト指向スクリプト言語であり、スクリプト言語が用いられてきた領域でのオブジェクト指向プログラミングを実現する。 また日本で開発されたプログラミング言語としては始めて国際電気標準会議で国際規格に認証された事例となった。</p><a href="http://ja.wikipedia.org/wiki/Ruby" class="origin">ウィキペディア(Wikipedia)</a></blockquote>
<p class="pd5">
クローラーを作りたかったこともあり、早速『<a href="http://www.amazon.co.jp/gp/product/4797380357" target="_blank">Rubyによるクローラー開発技法</a>』という本を購入。この本の売りである「運用例」はAPIを利用した例が多く、自分にはあまり成果がありませんでしたが、序盤〜中盤でのクロールとスクレイピングに必要なライブラリについての解説は比較的丁寧だったこともあり、Ruby未経験の私でも、基本ノウハウを得ることが出来ました。
</p>
<p class="pd5">で、実際にRubyを触ってみた感想ですが、すごく良いです。<br />流石、“エレガントなプログラミング言語”と言われるだけあり、行末のセミコロンや条件分岐の{}が不必要だったりと、とても見やすく、より短いスクリプトでコーディングが可能です。</p>
<p class="pd5" style="margin-bottom:0;">例えば、100回繰り返す処理をPHPで書くと</p>
<pre class="crayon-plain-tag">&lt;?php
for($i=0;$i&lt;100;$i++){
 //処理
}
?&gt;</pre> 
<p class="pd5" style="margin-bottom:0;">となりますが、Rubyだと…</p>
<pre class="crayon-plain-tag">100.times do
 #処理
end</pre> 
<p class="pd5" style="margin-bottom:3rem">実にシンプルです。</p>
<p class="pd5">Rubyの強みは正規表現処理にあると思いますが、便利なライブラリの数々も標準で用意されており、PHPでは面倒だった“スクレイプ→パース→XML出力→外部サーバーにFTPアップロード”という工程もRubyならサクっと書くことができ、常に人気プログラミング言語ランキングの上位にいるのも納得できます。</p>
<p>残念ながら、RubyはPHPのようにHTML内に簡単にプログラムを組み込めないため、一般的なWEBサイトの制作においてはなかなか使い道がないのですが、上記の工程のように、バックグラウンドで行うデータの収集・解析・作成には十分活躍できそうなので、今後は部分的にでも積極的にRubyを導入していきたいと思います。</p>
<p class="pd5">最後に、スクレイピングとは関係ありませんが、Twitter APIを使った“自動フォロー返し”をRubyで作ってみたので載せておきます。</p>
<pre class="crayon-plain-tag">gem install twitter</pre> 
 
<pre class="crayon-plain-tag">require 'twitter'

USERNAME = 'XXXXXXXXXX'
CONSUMER_KEY = 'XXXXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXXXX'
ACCESS_TOKEN = 'XXXXXXXXXX'
ACCESS_TOKEN_SECRET = 'XXXXXXXXXX'

client = Twitter::REST::Client.new(
  :consumer_key =&gt; CONSUMER_KEY,
  :consumer_secret =&gt; CONSUMER_SECRET,
  :access_token =&gt; ACCESS_TOKEN,
  :access_token_secret =&gt; ACCESS_TOKEN_SECRET
)

followers = []
client.follower_ids(USERNAME).each do |id|
  followers.push(id)
end

friends = []
client.friend_ids(USERNAME).each do |id|
  friends.push(id)
end

client.follow(followers - friends)</pre> 
<p class="pd5 clearfix" style="margin-top:25px;margin-bottom:0;">ちなみに同じことをPHPで書くとこうなります。</p>
<pre class="crayon-plain-tag">&lt;?php
require_once 'twitteroauth/twitteroauth.php';

$consumer_key = "XXXXXXXXXX";
$consumer_secret = "XXXXXXXXXX";
$access_token = "XXXXXXXXXX";
$access_token_secret = "XXXXXXXXXX";

$to = new TwitterOAuth(
  $consumer_key,
  $consumer_secret,
  $access_token,
  $access_token_secret
);

$followers = $to-&gt;get('followers/ids', array('cursor' =&gt; -1));
$friends = $to-&gt;get('friends/ids', array('cursor' =&gt; -1));

foreach ( $followers-&gt;ids as $i =&gt; $id) {
  if (empty($friends-&gt;ids) or !in_array($id, $friends-&gt;ids)) {
    $req = $to-&gt;post('friendships/create', array('user_id' =&gt; $id));
  }
}
?&gt;</pre> ]]></content:encoded>
			<wfw:commentRss>http://grottad.com/blog/83/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
