【ニコニコ動画】公式タグ検索RSSに再生数/コメント数/マイリスト数を追加してみた

【修正】2010/01/23 11:46 RSSの書き出しにミスがあり、正しくリンクされていませんでした。 現在は修正済みです。すみません。
ちなみに、公式のRSSの何が不満かというとですね。 RSS内に再生数、マイリスト数が表示されないってことです。 まぁ確かに正確さとか考えたら載せる必要ないだろという話なんですけども、例えば「東方手描き劇場」なんていうタグでチェックしていたりすると、定評のある作者のものから初投稿のものまでそらもう山のように上がるわけです。さすがに全部を見るわけにはいかないので、サムネイルとかコメントとかで判断していくんですけど、特に再生数、マイリスト数が多い動画は必ずチェックするようにしていました。てのが出来なくなったと。
 
というわけででっち上げてみた。 以下の形式で取得可能。
http://lab.nplll.com/ntag/タグ名
例)タグ 謎の技術‐ニコニコ動画(9) よろしければどうぞ。

続きを読む

【メモ】ファイル変更/削除時のパーミッションまとめ

恥ずかしながら、いや本当に恥ずかしながら、ファイルを変更するときのパーミッションにいて混乱してしまったので少しまとめておく。 OSはCentOS 5.2。 まず重要なことはこれ。

ファイルを変更、削除するのに必要なのはそのファイル自体のパーミッションではなく、そのファイルを格納しているディレクトリのパーミッション
…。 (そうだったのか…) ディレクトリのパーミッション毎に可能な操作は以下の通り。
  • [r] そのディレクトリの一覧の参照が可能
  • [w] そのディレクトリ内のファイルの削除、名前変更が可能。新規作成が可能
  • [x] そのディレクトリにアクセス可能
ディレクトリの所有者と処理(例えば削除)を実行するユーザとを勘案すると、パーミッションと出来ることの例は次のような感じになる。

続きを読む

memcached の返り値まとめ(Pecl::Memcached)

memcachedにnullやbooleanなどを入れたらどうなるか、曖昧になっていたので調べた。

テストコード

(PHP5、Pecl::Memcached使用)
$m = new Memcached();
$m->addServer('localhost', 11211);

//test data
$items = array(
'string'  => 'string',
'integer' => 1,
'array'   => array(
1,
'a' => 'A'
),
'true'    => true,
'false'   => false,
'empty'   => '',
'null'   => null
);
//sets
$m->setMulti($items);

//keys
$keys = array_keys($items);
//add key has no value
$keys[] = 'not_found';

//gets
$null = null;
$result = $m->getMulti($keys, $null, Memcached::GET_PRESERVE_ORDER);

//result
var_dump($result);

続きを読む

Ziza.RuのRSSが正常に取得できなくなってるので修正版を用意してみた

こちら。 http://lab.nplll.com/diy/rss/zizaru.xml 15分くらいででっち上げたのでアレですが、多分大丈夫です。 もし本家が復活すればそっちに転送の予定で。 ちなみになぜ取得できなくなってたかって言うと、RSS内のリンクが全部相対パスになってたからのようです。RSSリーダーによっては上手くフォローしてくれるのかも知れませんが、どちらにせよリンク切れにはなるようです(Livedoorリーダーで確認)。 相手が日本人なら、いやせめて韓国人とかアメリカ人とかくらいなら教えてあげられるんですけど、さすがにロシア人では… ということで、DIY。

追記:22:55

よくよく見てみるときちんと修正できていなかったので、さらに修正しました。 どうやら、相対パスで書かれている以外に、パーマリンクも変わってるみたいです。RSSで来るパーマリンクは以前の「yyyy/mm/base_name」なんですが、実際のパーマリンクは「category/entrytime-base_name」みたい。entrytimeはともかくとして、categoryの方はRSSに含まれていないので何も出来ない…と思いきや。カテゴリの方はカテゴリの方でそれぞれにRSSを吐いてたんですね。なんだ。 カテゴリの方のRSSも相対パスであることには変わりないので、それを補ってあげた上で、画像が多く含まれるカテゴリ(others、girls、fun)のRSSを1つにまとめました。 これできちんと受信できるようになったはず。

続きを読む

【メモ】memcacedのバックアップとしてTokyoTyrantを使う

現在あるシステムで、memcachedのバックアップとしてTokyoTyrantを利用しています。 以下は、主要な部分だけを抜粋したコードです。

$key = 'hello';
//Pecl::memcached
$value = MyMemcached::get($key);
if($value === false):
//memcacheから取得できないときはTokyoTyrantからの取得を試みる
MyTokyoTyrant::initialize();
if(MyTokyoTyrant::getEnabled() === true):
$value = MyTokyoTyrant::get($key);
$hasTTCache = (!$value) ? false : true;
else:
$hasTTCache = false;
endif;
//TokyoTyrantからも取得できないときはMySQL
if($hasTTCache === false):
$value = self::getByIdWithConnection($key);
MyTokyoTyrant::set($key, $value, 0);
endif;
MyMemcached::set($key, $value);
endif;
システムの前提として、
  1. 設備が非常に貧弱である
    • キャッシュサーバはなく、APサーバと同居したプロセスが用途別に1プロセスずつあるのみ
  2. memcachedを利用するプログラムの構成が適切ではない
    • PHPのクライアント「Pecl::Memcache」がmgetに対応していない影響で、1データごとにgetを繰り返す構成になっている。順次「Pecl::Memcached」のgetMultiに置き換え中
という問題点があります。 どちらも現在根本的な修正に向けて作業中ですが、今日始めて明日実装というわけにはいかない(特にサーバの増強)ので、なんとか「誤魔化」さないといけません。というわけで試行錯誤の末、TokyoTyrantを併用する形になっています。

続きを読む

【メモ】さくらインターネットで使うシェルをzshに変更する

FreeBSDであるさくらインターネットではデフォルトでcsh(tcsh)になっているけれども、仕事で使用しているのはzshなので揃えたい。 というわけで、そのメモ。

参考サイト

続きを読む

さくらインターネットでSubversionを利用する

IDEとしてEclipseを利用していることもあり、バージョン管理をもっと簡単に行えれば…と常々思っていて何度もトライしていたのですが、いまいち知識が足りず上手くいきませんでした。なんなのだ。 しかし今回まっさらな状態からもう一度順序立ててトライしてみたところ、サーバーの設定が更新されているのか意外なほどあっさり出来たのでまとめておきます。 以下、簡単な手順です。

  1. インストール
  2. svnのシンボリックリンクを貼る
  3. Eclipseの設定
  4. 既存のWebをSubversionで管理するようにする
  5. 他のPCでのチェックアウト
なお、今回の設定に関しては以下のエントリを参考にさせていただきました。特に「サクっとly.com」さんにはインストールのほぼ全てを参考にさせていただいています。感謝します。

続きを読む