<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>tjun memo &#187; programming</title>
	<atom:link href="http://tjun.jp/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://tjun.jp/blog</link>
	<description>面白いこと探してます。</description>
	<lastBuildDate>Tue, 07 Feb 2012 14:50:00 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/category/programming/feed/" />
		<item>
		<title>gem install memcached ではまったメモ</title>
		<link>http://tjun.jp/blog/2012/01/gem_memcached_error/</link>
		<comments>http://tjun.jp/blog/2012/01/gem_memcached_error/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 14:22:07 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[memcached]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1085</guid>
		<description><![CDATA[Error: $gem install memcached ... rlibmemcached_wrap.c: In function ‘_wrap_MemcachedSt_sasl_callbacks_set’: rl [...]]]></description>
			<content:encoded><![CDATA[<p>
Error:<br />
<pre>
$gem install memcached
...
rlibmemcached_wrap.c: In function ‘_wrap_MemcachedSt_sasl_callbacks_set’:
rlibmemcached_wrap.c:6669: error: ‘sasl_callback_t’ undeclared (first use in this function)
rlibmemcached_wrap.c:6669: error: (Each undeclared identifier is reported only once
rlibmemcached_wrap.c:6669: error: for each function it appears in.)
rlibmemcached_wrap.c:6669: error: ‘arg2’ undeclared (first use in this function)
rlibmemcached_wrap.c:6669: error: expected expression before ‘)’ token
rlibmemcached_wrap.c:6687: error: expected expression before ‘)’ token
rlibmemcached_wrap.c:6688: error: ‘struct memcached_st’ has no member named ‘sasl_callbacks’
rlibmemcached_wrap.c:6688: error: expected ‘)’ before ‘const’
rlibmemcached_wrap.c:6688: error: expected ‘;’ before ‘arg2’
rlibmemcached_wrap.c: In function ‘_wrap_MemcachedSt_sasl_callbacks_get’:
rlibmemcached_wrap.c:6700: error: ‘sasl_callback_t’ undeclared (first use in this function)
rlibmemcached_wrap.c:6700: error: ‘result’ undeclared (first use in this function)
rlibmemcached_wrap.c:6711: error: expected expression before ‘)’ token
rlibmemcached_wrap.c:6711: error: ‘struct memcached_st’ has no member named ‘sasl_callbacks’
rlibmemcached_wrap.c: In function ‘_wrap_memcached_set_sasl_callbacks’:
rlibmemcached_wrap.c:12021: error: ‘sasl_callback_t’ undeclared (first use in this function)
rlibmemcached_wrap.c:12021: error: ‘arg2’ undeclared (first use in this function)
rlibmemcached_wrap.c:12021: error: expected expression before ‘)’ token
rlibmemcached_wrap.c:12039: error: expected expression before ‘)’ token
rlibmemcached_wrap.c:12040: error: expected ‘)’ before ‘const’
rlibmemcached_wrap.c:12040: error: expected ‘)’ before ‘arg2’
rlibmemcached_wrap.c: In function ‘_wrap_memcached_get_sasl_callbacks’:
rlibmemcached_wrap.c:12122: error: ‘sasl_callback_t’ undeclared (first use in this function)
rlibmemcached_wrap.c:12122: error: ‘result’ undeclared (first use in this function)
rlibmemcached_wrap.c:12133: error: expected expression before ‘)’ token
rlibmemcached_wrap.c: In function ‘Init_rlibmemcached’:
rlibmemcached_wrap.c:13285: error: ‘SASL_OK’ undeclared (first use in this function)
make: *** [rlibmemcached_wrap.o] Error 1
</pre>
<br />
<pre>
$ gem clean memcached
</pre>
<br />
centos<br />
<pre>
$ yum install cyrus-sasl2 cyrus-sasl-devel
</pre>
<br />
ubuntu, debian<br />
<pre>
$ apt-get install libsasl2-2 libsasl2-dev
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/01/gem_memcached_error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/01/gem_memcached_error/" />
	</item>
		<item>
		<title>[PHP] twitterのRSSからreplyを取り除く</title>
		<link>http://tjun.jp/blog/2012/01/php_twitter_rss/</link>
		<comments>http://tjun.jp/blog/2012/01/php_twitter_rss/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 17:16:23 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1080</guid>
		<description><![CDATA[twitterのRSSを自分のウェブページに表示していたのですが、そのままだとつぶやきもリプライ(mention?)もすべて表示されてしまいます。 なので、正規表現でリプライだけ取り除いて表示するようにしました。 RTは [...]]]></description>
			<content:encoded><![CDATA[<p>
twitterのRSSを<a href="http://tjun.jp">自分のウェブページ</a>に表示していたのですが、そのままだとつぶやきもリプライ(mention?)もすべて表示されてしまいます。<br />
<br />
なので、正規表現でリプライだけ取り除いて表示するようにしました。<br />
RTはそのまま表示してます。<br />
<br />
<pre class="brush: php; title: ; notranslate">
require_once 'lib/rss_fetch.inc';

$twit_feed = 'http://twitter.com/statuses/user_timeline/********.rss';
$twit_rss = fetch_rss($twit_feed);

$max = 20;
$cnt = 0;

echo &quot;&lt;ul&gt;&quot;;
foreach($twit_rss-&gt;items as $item){
  $cnt++;
  if($cnt &gt; $max)break;
  $title = htmlspecialchars($item['title']);
  if(preg_match(&quot;/^tjun: @/&quot;, $title))continue;
  $url = htmlspecialchars($item['link']);
  echo &quot;  &lt;li&gt;&lt;a href=\&quot;$url\&quot;&gt;$title&lt;/a&gt;&lt;/li&gt;\n&quot;;
}
echo &quot;&lt;/ul&gt;&quot;;
</pre>
<br />
リプライを取り除くのは以下の部分です。<br />
<pre class="brush: php; title: ; notranslate">
  if(preg_match(&quot;/^tjun: @/&quot;, $title))continue;
</pre>
tjunは、自分のtwitterのユーザ名です。先頭が &#8220;ユーザ名: @&#8221; であれば、リプライと判定してます。<br />
<br />
<br />
久しぶりにPHP書きました。<br />
一応正しく動いているように見えますが、何か間違ってるかもしれません。<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/01/php_twitter_rss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/01/php_twitter_rss/" />
	</item>
		<item>
		<title>Kyoto TycoonをJavaから利用する</title>
		<link>http://tjun.jp/blog/2011/12/kyoto-tycoon_java/</link>
		<comments>http://tjun.jp/blog/2011/12/kyoto-tycoon_java/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 12:51:42 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[db]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[kyoto_tycoon]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1065</guid>
		<description><![CDATA[Kyoto tycoonのセットアップは、以前のエントリを参照 kyoto tycoonをcentosにセットアップ &#124; tjun memo Kyoto Tycoonの起動 memcachedプラグインを有効にして起動し [...]]]></description>
			<content:encoded><![CDATA[<p>
Kyoto tycoonのセットアップは、以前のエントリを参照<br />
<ul>
	<li><a href="http://tjun.jp/blog/2011/12/kyototycoon_setup/">kyoto tycoonをcentosにセットアップ | tjun memo</a></li>
</ul>
<br />
<br />
<h2>Kyoto Tycoonの起動</h2>
memcachedプラグインを有効にして起動します。<br />
<pre>ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' test.kch</pre>
<br />
Xmemcachedというライブラリを使います。<br />
参考：<br />
<ul>
	<li><a href="http://code.google.com/p/xmemcached/wiki/User_Guide#Talk_with_Kestrel">User_Guide &#8211; xmemcached &#8211; User Guide Version 0.3 &#8211; Extreme performance modern memcached client for java &#8211; Google Project Hosting</a></li>
</ul>
<br />
<h2>Xmemcachedのダウンロード</h2>
JavaプログラムからKestrelを利用するために、Xmemcachedというmemcached用のライブラリを利用します。<br />
http://code.google.com/p/xmemcached/downloads/list　からxmemcached-1.3.5-bin-with-dependencies.tar.gz をダウンロードして利用します。<br />
<br />
<br />
<br />
利用プログラム例<br />
<pre class="brush: java; title: ; notranslate">
String hostname = &quot;localhost&quot;;
String port = &quot;22222&quot;;
int expiration_time = 0;

XMemcachedClientBuilder builder = new XMemcachedClientBuilder(
        AddrUtil.getAddresses(hostname + &quot;:&quot; + port));
builder.setTranscoder(new TokyoTyrantTranscoder());
MemcachedClient client = builder.build();

ArrayList&lt;String&gt; keylist = new ArrayList&lt;String&gt;();

try{
    // set data
    System.out.println(&quot;set data&quot;);
　　　    for(Integer i = 0; i != 5; i++){
　　　　    String value = &quot;value&quot; + i;
        client.set(i.toString() , expiration_time, value);
        keylist.add(i.toString());
    }    

    // get data

    // bulk get
    System.out.println(&quot;bulk get&quot;);
    Map&lt;String, Object&gt; valuemap = client.get(keylist);
    for(Integer i =0; i != 5; i++){
        System.out.println(valuemap.get(keylist.get(i)));            
    }

    // single get
    System.out.println(&quot;single get&quot;);
    for(Integer i=0; i != 5; i++){
        String value = client.get(i.toString());
        System.out.println(value);
    }

　　　　// delete data
        System.out.println(&quot;delete data from db&quot;);

    for(Integer i=0; i != 5; i++){
        client.delete(i.toString());
    }

} catch (TimeoutException e) {
    // memcached operation timeout
    e.printStackTrace();
} catch (InterruptedException e) {
    // ignore
    //e.printStackTrace();
} catch (MemcachedException e) {
    // memcached operation fail
    e.printStackTrace();
}
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2011/12/kyoto-tycoon_java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2011/12/kyoto-tycoon_java/" />
	</item>
		<item>
		<title>kyoto tycoonをcentosにセットアップ</title>
		<link>http://tjun.jp/blog/2011/12/kyototycoon_setup/</link>
		<comments>http://tjun.jp/blog/2011/12/kyototycoon_setup/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 12:37:26 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[centos]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[kyoto_tycoon]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1064</guid>
		<description><![CDATA[前準備 依存するpackageのインストール gcc44がないと、makeできないから注意です。 sudo yum install gcc44 gcc44-c++ boost-devel zlib-devel (libb [...]]]></description>
			<content:encoded><![CDATA[<p>
<h2>前準備</h2>
依存するpackageのインストール<br />
gcc44がないと、makeできないから注意です。<br />
<br />
<pre>sudo yum install gcc44 gcc44-c++ boost-devel zlib-devel
(libbzip2も必要かも)
</pre>
<br />
<h2>kyoto cabinetインストール</h2>
まずはkyoto cabinetを入れます。<br />
<br />
<pre>
wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.70.tar.gz
tar zxf kyotocabinet-1.2.70.tar.gz 
cd kyotocabinet-1.2.70
./configure CC=gcc44 CXX=g++44
make
sudo make install
</pre>
<br />
/etc/ld.so.conf に /usr/local/lib を追加<br />
<pre>
sudo ldconfig
</pre>
<br />
<h2>kyoto tycoonのインストール</h2>
<br />
<pre>
wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.52.tar.gz
tar zxf kyototycoon-0.9.52.tar.gz 
cd kyototycoon-0.9.52
./configure CC=gcc44 CXX=g++44
make 
sudo make install
sudo ldconfig
</pre>
<br />
<br />
<h2>kyoto tycoonの起動</h2>
<br />
memcachedプロトコルで使いたいので、memcachedプラグインを有効にします<br />
<br />
<pre>ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222'</pre>
永続化するためには、db ファイル名を指定する必要があるようです。<br />
<pre>ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' [db filename]</pre>
<br />
[db filename]は、拡張子によってKyoto Cabinet内のdb（索引付け）が変わります。<br />
<br />
(null): オンメモリ<br />
 &#8220;.kch&#8221;: ハッシュDB<br />
 &#8220;.kct&#8221;: ツリーDB<br />
 &#8220;.kcd&#8221;: ディレクトリハッシュdb<br />
 &#8220;.kcf&#8221;: ディレクトリツリーdb<br />
<br />
例<br />
<pre>ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' test.kch</pre>
<br />
参考:<br />
<ul>
	<li><a href="http://fallabs.com/blog-ja/promenade.cgi?id=98">開発メモ: Kyoto Tycoonベータ版リリースすた</a></li>
	<li><a href="http://www.slideshare.net/estraier/kyoto-tycoon-guide-in-japanese">Kyoto Tycoon Guide in Japanese</a></li>
	<li><a href="http://www.omakase.org/perl/freebsdkyototycoon.html">FreeBSDでKyotoTycoonを使ってみた｜perl｜@OMAKASE</a></li>
<br />
</ul>
<br />
<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2011/12/kyototycoon_setup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2011/12/kyototycoon_setup/" />
	</item>
		<item>
		<title>KestrelをJavaから利用する</title>
		<link>http://tjun.jp/blog/2011/12/kestrel-java/</link>
		<comments>http://tjun.jp/blog/2011/12/kestrel-java/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 15:12:16 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[kestrel]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1067</guid>
		<description><![CDATA[kestrelのセットアップについては以前の記事を参照してください。 Kestrelをcentosにセットアップ &#124; tjun memo 以下では、JavaのプログラムからKestrelのキューを利用する方法を説明します [...]]]></description>
			<content:encoded><![CDATA[<p>
kestrelのセットアップについては以前の記事を参照してください。<br />
<ul>
	<li><a href="http://tjun.jp/blog/2011/12/kestrel_setup/">Kestrelをcentosにセットアップ | tjun memo</a></li>
</ul>
<br />
<br />
<br />
以下では、JavaのプログラムからKestrelのキューを利用する方法を説明します。<br />
<br />
Kestrelは、memcachedプロトコルで利用できるので、memcachedのライブラリなら基本的に大丈夫だと思います。<br />
でも、kestrelに対応しているというところと、パフォーマンスがよさそうなところから、Xmemcachedというライブラリを利用します。<br />
<br />
参考：<br />
<ul>
	<li><a href="http://code.google.com/p/xmemcached/wiki/User_Guide#Talk_with_Kestrel">User_Guide &#8211; xmemcached &#8211; User Guide Version 0.3 &#8211; Extreme performance modern memcached client for java &#8211; Google Project Hosting</a></li>
</ul>
<br />
<br />
<br />
<h2>Xmemcachedのダウンロード</h2>
JavaプログラムからKestrelを利用するために、Xmemcachedというmemcached用のライブラリを利用します。<br />
http://code.google.com/p/xmemcached/downloads/list　からxmemcached-1.3.5-bin-with-dependencies.tar.gz をダウンロードして利用します。<br />
<br />
<br />
<h2>プログラム例</h2>
こんな感じで使えます。<br />
<br />
<pre class="brush: java; title: ; notranslate">
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.command.KestrelCommandFactory;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;

(略)
{
    private XMemcachedClientBuilder builder = null;
    private MemcachedClient client = null;
    int expirationTime = 0;
    String queueName = &quot;test&quot;;
    Striing host = &quot;localhost&quot;;
    int port = &quot;22133&quot;;
  
    builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(host + &quot;:&quot; + port));
    builder.setCommandFactory(new KestrelCommandFactory());
    client = builder.build();

    client.set(queueName, expirationTime, &quot;hello&quot;);

    String res = client.get(queueName);
    System.out.println(res);
}
</pre>
<br />
参考：<br />
<ul>
	<li><a href="http://code.google.com/p/xmemcached/wiki/Getting_Started#Talk_with_Kestrel">Getting_Started &#8211; xmemcached &#8211; Extreme performance modern memcached client for java &#8211; Google Project Hosting</a></li>
</ul>
<br />
<br />
エラーが出るときは、ketrelの設定を確認してみてください。<br />
<br />
<a href="https://github.com/robey/kestrel/blob/master/docs/guide.md">docs/guide.md at master from robey/kestrel &#8211; GitHub</a><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2011/12/kestrel-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2011/12/kestrel-java/" />
	</item>
		<item>
		<title>[Mac]lionでJAVA_HOMEを設定(jdkのインストールも）</title>
		<link>http://tjun.jp/blog/2011/09/lion_java_home/</link>
		<comments>http://tjun.jp/blog/2011/09/lion_java_home/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 09:10:14 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=944</guid>
		<description><![CDATA[LionではJDKが予めインストールされている？かもしれません。 ターミナルで $ java -version が出来れば入っていると思います。 その場合、~/.bashrcなどに を追記して再読み込みすれば、JAVA_ [...]]]></description>
			<content:encoded><![CDATA[<p>
LionではJDKが予めインストールされている？かもしれません。<br />
ターミナルで<br />
<pre>
$ java -version
</pre>
が出来れば入っていると思います。<br />
<br />
その場合、~/.bashrcなどに<br />
<pre class="brush: bash; title: ; notranslate">
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
</pre>
を追記して再読み込みすれば、JAVA_HOMEが反映されます。<br />
<pre>
$ source ~/.bashrc
</pre>
<br />
javaがなければ、<br />
<br />
http://support.apple.com/downloads/#Java<br />
<br />
からダウンロードしてインストールできます。</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2011/09/lion_java_home/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2011/09/lion_java_home/" />
	</item>
		<item>
		<title>[Mac]JAVA_HOME/include以下にjni.hがないというエラーを解決</title>
		<link>http://tjun.jp/blog/2011/09/java_include_mac/</link>
		<comments>http://tjun.jp/blog/2011/09/java_include_mac/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 09:07:00 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=941</guid>
		<description><![CDATA[Mac OSX (lion)で、とあるconfigureスクリプトを実行中に cannot find jni.h in /System/Library/Java/JavaVirtualMachines/1.6.0.jdk [...]]]></description>
			<content:encoded><![CDATA[<p>
Mac OSX (lion)で、とあるconfigureスクリプトを実行中に<br />
<pre>cannot find jni.h in /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/include.</pre>
というエラーが出ました。<br />
<br />
JAVA_HOMEの設定は済んでいるとして、<br />
（参考 <a href="http://tjun.jp/blog/2011/09/lion_java_home/" title="[Mac]lionでJAVA_HOMEを設定(jdkのインストールも） | tjun memo">[Mac]lionでJAVA_HOMEを設定(jdkのインストールも） | tjun memo</a>）<br />
<pre>
$ cd $JAVA_HOME
$ sudo ln -s /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers ./include
</pre>
<br />
これで解決すると思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2011/09/java_include_mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2011/09/java_include_mac/" />
	</item>
		<item>
		<title>rubyで短縮URLの展開</title>
		<link>http://tjun.jp/blog/2011/06/ruby-extend-url/</link>
		<comments>http://tjun.jp/blog/2011/06/ruby-extend-url/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 23:21:51 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=890</guid>
		<description><![CDATA[rubyで「bit.ly/******」などの短縮URLを展開したいときは、hugeurlが使えます。 インストール gem install hugeurl 使い方 require 'rubygems' require  [...]]]></description>
			<content:encoded><![CDATA[<p>
rubyで「bit.ly/******」などの短縮URLを展開したいときは、<a href="https://github.com/shokai/hugeurl">hugeurl</a>が使えます。<br />
<br />
<h2>インストール</h2>
<pre>
gem install hugeurl
</pre>
<br />
<h2>使い方</h2>
<pre>
require 'rubygems'
require 'hugeurl'
puts URI.parse("http://bit.ly/iZhgER").to_huge
</pre>
<br />
これで展開されたURLが取得できます。簡単で便利です。<br />
<br />
<br />
追記<br />
短時間にたくさん使うと、エラーが出ることがあります。<br />
そういうときは<br />
<br />
<a href="http://codnote.net/2011/01/03/ruby-url-expand-is-strange/">RubyでURL短縮展開のコードがきもいです… | cod.note</a><br />
<br />
も使えます。<br />
<br />
<br />
<h3>参考にしたサイト</h3>
<ul>
	<li><a href="http://shokai.org/blog/archives/5363">橋本商会 » hugeurlというgemを作った</a></li>
	<li><a href="https://github.com/shokai/hugeurl">shokai/hugeurl &#8211; GitHub</a></li>
	<li><a href="https://rubygems.org/gems/hugeurl">hugeurl | RubyGems.org | your community gem host</a></li>
</ul>
<br />
<br />
<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2011/06/ruby-extend-url/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2011/06/ruby-extend-url/" />
	</item>
		<item>
		<title>Rubyでtwitter, facebook, instagramなどの認証</title>
		<link>http://tjun.jp/blog/2011/06/ruby_auth_twitter-facebook-instagram/</link>
		<comments>http://tjun.jp/blog/2011/06/ruby_auth_twitter-facebook-instagram/#comments</comments>
		<pubDate>Sat, 04 Jun 2011 01:54:21 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[oauth]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=851</guid>
		<description><![CDATA[最近のソーシャルなサービスをアプリケーションと連携するには、Oauthで認証する必要があります。 これを自分で全部やるのは結構大変なので、ライブラリを使います。 RubyでOauthを使う場合、Omniauthというライ [...]]]></description>
			<content:encoded><![CDATA[<p>
最近のソーシャルなサービスをアプリケーションと連携するには、Oauthで認証する必要があります。<br />
これを自分で全部やるのは結構大変なので、ライブラリを使います。<br />
<br />
RubyでOauthを使う場合、<a href="https://github.com/intridea/omniauth">Omniauth</a>というライブラリが便利です。<br />
更新がこまめにされていて、対応できるサービスもtwitterをはじめgithubやlinkedinなどたくさんあり、instagramなどの新しいサービスにも対応できます。<br />
<br />
使い方を紹介するのがちょっと大変なので、参考になりそうなサイトのリンクを貼っておきます。<br />
<ul>
	<li><a href="https://github.com/railsapps/rails3-mongoid-omniauth/wiki/Tutorial">Rails 3 with Mongoid and OmniAuth &#8211; GitHub</a></li>
	<li><a href="http://www.communityguides.eu/articles/16">Ruby on Rails CommunityGuides: Omniauth pure: Authentication with Facebook, Google, Google Apps, Twitter, Github, AOL, MyOpenID, &#8230;</a></li>
	<li><a href="http://taksatou.blogspot.com/2011/03/twitterfacebookrails.html">taksatouの日記: twitterやfacebookのOAuthをつかってrails+omniauthでログイン機能を実装するメモ その１</a></li>
</ul>
</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2011/06/ruby_auth_twitter-facebook-instagram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2011/06/ruby_auth_twitter-facebook-instagram/" />
	</item>
		<item>
		<title>Ubuntu11.04でrails</title>
		<link>http://tjun.jp/blog/2011/05/ubuntu11-04_rubyonrails/</link>
		<comments>http://tjun.jp/blog/2011/05/ubuntu11-04_rubyonrails/#comments</comments>
		<pubDate>Sat, 28 May 2011 01:11:17 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=810</guid>
		<description><![CDATA[今までrubyは使ってたけどrailsは使ったことなかったので、少し勉強を始めました。 ubuntuのaptでgemを入れると、最新のものが使えなかったりしていろいろハマるので、別にいれた方がよさそうです。 また、rai [...]]]></description>
			<content:encoded><![CDATA[<p>
今までrubyは使ってたけどrailsは使ったことなかったので、少し勉強を始めました。<br />
<br />
ubuntuのaptでgemを入れると、最新のものが使えなかったりしていろいろハマるので、別にいれた方がよさそうです。<br />
<br />
また、railsのバージョンも2.xと3.xでいろいろ違うみたいなので、今回は両方の環境を入れてrvmで切り替えられるようにします。<br />
<br />
参考にしたのは<br />
<ul>
	<li><a href="http://michae1a.wordpress.com/2011/05/12/ruby-on-rails-on-ubuntu-11-04/">Ruby on Rails on Ubuntu 11.04 | 嘘つき女</a></li>
</ul>
です。<br />
<br />
関連するパッケージなどをインストール。<br />
<pre>
$ sudo apt-get install gcc build-essential
$ sudo apt-get install bison byacc gperf zlib1g-dev libssl-dev
$ sudo apt-get install libreadline5 libreadline5-dev libncurses5 libncurses5-dev sqlite3 libsqlite3-dev curl
</pre>
<br />
rvm(Ruby Version Manager)を入れる。<br />
URLが変わっているかもしれないので、その時は<a href="https://rvm.beginrescueend.com/rvm/install/">RVM: Ruby Version Manager &#8211; Installing RVM</a>を確認。<br />
<pre>
$ bash < <(curl -s https://rvm.beginrescueend.com/releases/rvm-install-head )
</pre>
<br />
次に、.bashrcなどに以下を追加してログインしなおす。<br />
<pre>
# This loads RVM into a shell session.
[[ -s "$HOME/.rvm/scripts/rvm" ]] &#038;&#038; . "$HOME/.rvm/scripts/rvm"
</pre>
<br />
<br />
ここから、rvmを使ってrubyなどをインストールしていきます。<br />
rubyは1.8xや1.9xを入れます。<br />
<br />
<pre>
$ rvm install 1.8.7
$ rvm install 1.9.1
$ rvm default use 1.8.7
切り替えは
$ rvm use 1.9.1
</pre>
<br />
railsは2.3xや3.0xを入れてみます。<br />
railsの切り替えのために、rails2とrails3というgemsetを作ります。<br />
また、rails3をそのまま入れるとエラーが出るので、その前にgemを少し入れます。<br />
<br />
<pre>
$ rvm gemset create rails2
$ rvm gemset create rails3
$ rvm gemset use rails2
$ gem install rails -v 2.3.11
$ rvm gemset use rail3
$ gem install hoe
$ gem install rdoc-data
$ gem install rails -v 3.0.7

切り替えは、
$ rvm gemset use rail2
$ rvm gemset use rail3
$ rvm gemset use global
</pre>
<br />
最初からglobalっていうgemsetがあるから、共通するgemはこれに入れるべきっぽい。<br />
<br />
まあ、とりあえずrubyとrailsが入って、異なるバージョンが切り替えられるようになりました。<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2011/05/ubuntu11-04_rubyonrails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2011/05/ubuntu11-04_rubyonrails/" />
	</item>
	</channel>
</rss>

