Subcribe via RSS

gem install memcached ではまったメモ

2012/1/20 | Posted in linux, ruby

Error:

$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

$ gem clean memcached

centos
$ yum install cyrus-sasl2 cyrus-sasl-devel

ubuntu, debian
$ apt-get install libsasl2-2 libsasl2-dev




Tags: ,

[PHP] twitterのRSSからreplyを取り除く

2012/1/8 | Posted in php, twitter

twitterのRSSを自分のウェブページに表示していたのですが、そのままだとつぶやきもリプライ(mention?)もすべて表示されてしまいます。

なので、正規表現でリプライだけ取り除いて表示するようにしました。
RTはそのまま表示してます。

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 "<ul>";
foreach($twit_rss->items as $item){
  $cnt++;
  if($cnt > $max)break;
  $title = htmlspecialchars($item['title']);
  if(preg_match("/^tjun: @/", $title))continue;
  $url = htmlspecialchars($item['link']);
  echo "  <li><a href=\"$url\">$title</a></li>\n";
}
echo "</ul>";

リプライを取り除くのは以下の部分です。
  if(preg_match("/^tjun: @/", $title))continue;
tjunは、自分のtwitterのユーザ名です。先頭が “ユーザ名: @” であれば、リプライと判定してます。


久しぶりにPHP書きました。
一応正しく動いているように見えますが、何か間違ってるかもしれません。




Tags: ,

Kyoto TycoonをJavaから利用する

2011/12/23 | Posted in db, java

Kyoto tycoonのセットアップは、以前のエントリを参照



Kyoto Tycoonの起動

memcachedプラグインを有効にして起動します。
ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' test.kch

Xmemcachedというライブラリを使います。
参考:

Xmemcachedのダウンロード

JavaプログラムからKestrelを利用するために、Xmemcachedというmemcached用のライブラリを利用します。
http://code.google.com/p/xmemcached/downloads/list からxmemcached-1.3.5-bin-with-dependencies.tar.gz をダウンロードして利用します。



利用プログラム例
String hostname = "localhost";
String port = "22222";
int expiration_time = 0;

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

ArrayList<String> keylist = new ArrayList<String>();

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

    // get data

    // bulk get
    System.out.println("bulk get");
    Map<String, Object> valuemap = client.get(keylist);
    for(Integer i =0; i != 5; i++){
        System.out.println(valuemap.get(keylist.get(i)));            
    }

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

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

    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();
}




Tags: , , ,

kyoto tycoonをcentosにセットアップ

| Posted in centos, db

前準備

依存するpackageのインストール
gcc44がないと、makeできないから注意です。

sudo yum install gcc44 gcc44-c++ boost-devel zlib-devel
(libbzip2も必要かも)

kyoto cabinetインストール

まずはkyoto cabinetを入れます。

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

/etc/ld.so.conf に /usr/local/lib を追加
sudo ldconfig

kyoto tycoonのインストール


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


kyoto tycoonの起動


memcachedプロトコルで使いたいので、memcachedプラグインを有効にします

ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222'
永続化するためには、db ファイル名を指定する必要があるようです。
ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' [db filename]

[db filename]は、拡張子によってKyoto Cabinet内のdb(索引付け)が変わります。

(null): オンメモリ
“.kch”: ハッシュDB
“.kct”: ツリーDB
“.kcd”: ディレクトリハッシュdb
“.kcf”: ディレクトリツリーdb


ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' test.kch

参考:





Tags: , , ,

KestrelをJavaから利用する

2011/12/20 | Posted in java

kestrelのセットアップについては以前の記事を参照してください。




以下では、JavaのプログラムからKestrelのキューを利用する方法を説明します。

Kestrelは、memcachedプロトコルで利用できるので、memcachedのライブラリなら基本的に大丈夫だと思います。
でも、kestrelに対応しているというところと、パフォーマンスがよさそうなところから、Xmemcachedというライブラリを利用します。

参考:



Xmemcachedのダウンロード

JavaプログラムからKestrelを利用するために、Xmemcachedというmemcached用のライブラリを利用します。
http://code.google.com/p/xmemcached/downloads/list からxmemcached-1.3.5-bin-with-dependencies.tar.gz をダウンロードして利用します。


プログラム例

こんな感じで使えます。

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 = "test";
    Striing host = "localhost";
    int port = "22133";
  
    builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(host + ":" + port));
    builder.setCommandFactory(new KestrelCommandFactory());
    client = builder.build();

    client.set(queueName, expirationTime, "hello");

    String res = client.get(queueName);
    System.out.println(res);
}

参考:


エラーが出るときは、ketrelの設定を確認してみてください。

docs/guide.md at master from robey/kestrel – GitHub




Tags: ,
  • 書いてる人:

    Junichiro Takagi
    高木潤一郎

    http://tjun.jp
    mail@tjun.jp

    未踏でクリエータやってました。メーカーでエンジニアやってます。
    このブログは、会社とは関係なく個人の意見を書いています。

    RSS:


  • friendfeed: