Subcribe via RSS

nginxでスマホからのアクセスをリダイレクト

2012/1/8 | Posted in linux, server

nginxでiPhoneやAndroidからのアクセスをリダイレクトする方法のメモ。

Apacheなら.htaccessなどを使ってリダイレクトしますが、nginxだとちょっと違います。
/etc/nginx/sites-available/ にある設定から行います。


$vi /etc/nginx/sites-available/example.com

以下のように、rewriteを使ってリダイレクトします。

server {
    listen 80;      
    server_name example.com;
    access_log  /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

    (中略)
    # スマホからのトップページへのアクセスを、/mobile にリダイレクト
    if ($http_user_agent ~* “2.0\ 2MMP|240×320|400X240|BlackBerry|Cellphone|Googlebot-Mobile|Opera\ Mini|iPhone|iPod|Android|BlackBerry9530|Nokia5800″) {
           rewrite ^/$ /mobile last;
    }
}


スマホ判定の部分は、どこかから持ってきたやつを適当にいじっただけなので、よく分からない端末名も入ってます。

if 文は、ifのあとにスペースがないとダメみたいなので注意。
if (      #OK
if(       #NG

あと、以下も注意。


参考にしたサイト

2つめのサイトでは、rewriteのflagの使い方なども載っていて、参考になります。





Tags: , ,

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

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

[mac]opendirectorydの暴走を解決

2012/1/7 | Posted in mac

環境はMacBookAir2010?, Mac OSX 10.7.2 Lionでした。
CPU使用率が突然高くなることがあって調べてみると、opendirectorydというプロセスが50%くらい消費してた。

で、自分の場合の原因は「宛先が存在しないシンボリックリンクがDropbox内に存在すること」でした。

シンボリックリンクの探し方は以下のコマンドを実行。

$ find ~/Dropbox -type l

これで、宛先がないシンボリックリンクが見つかって、それを消してからはopendirectorydの暴走はなくなりました。

参考:


原因はこれ以外にもいろいろありえるみたいで、調べるの結構苦労しました。




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: , , ,
  • 書いてる人:

    Junichiro Takagi
    高木潤一郎

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

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

    RSS:


  • friendfeed: