OpenIDでテキストを共有できます
- 新規作成
- OpenIDで認証してエントリーを新規作成します
- 共有
- エントリーにはOpenIDで閲覧と編集に制限かけることができます
- 変更履歴
- 編集履歴もあるので、コラボレーションにも活用できます
新着エントリー
Yappo++
codereposがOPになったー
Net::OpenID::ServerのOpenID 2.0対応patch update
前回からupdate
http://nomadscafe.jp/tmp/openid_server_20_20080303.patch
id:miyagawaと話して、APIは前回のget_identityでいいんじゃないかとなったので、方向性は変わらずで、
面倒なのでsha1だけのサポートにして、pod追加して、test足した。
limilic、fastladder、pibb、plaxo、livejournal、ついついツイッターあたりでも検証しました
Catalystのsampleみたいなのを書いておきます
my $server = Net::OpenID::Server->new( post_args => $c->req->params, get_args => $c->req->params, endpoint_url => $c->uri_for('/server'), setup_url => $c->uri_for('/login'), get_user => sub { return $c->user_exists ? $c->user : undef; }, get_identity => sub { my( $u, $identity ) = @_; return $identity unless $u; return $c->uri_for( sprintf('/user/%s', $u->username ) ); }, is_identity => sub { my($u, $identity) = @_; return $u && $u->username eq (split '/', $identity)[-1]; }, is_trusted => sub { my($u, $trust_root, $is_identity) = @_; return $is_identity; } ); my ( $type, $data ) = $server->handle_page(); if ( $type eq 'redirect' ) { return $c->res->redirect($data); } elsif ( $type eq 'setup' ) { my $uri = $c->uri_for('/login', $data ); return $c->res->redirect($uri); } else { $c->res->content_type($type); $c->res->body($data); }
created by blog.nomadscafe.jp
kazeburo++
username.coderepos.org とか方がいいのかなぁ
Apache mod_rewriteでCIDRを使えるようにするpatchを拡張した
Apache mod_rewrite 携帯アクセスを動的に振り分ける 〜CIDRじゃなきゃヤダ!を若干拡張
RewriteCond 127.0.0.1/32 -i
とか/32って書くの面倒だよねってことで、さらにmod_authz_hostからコピペした
2.2.8でmakeと動作の検証はした
*** mod_rewrite.c.orig Wed Jul 25 22:13:49 2007 --- mod_rewrite.c Wed Feb 27 20:52:24 2008 *************** *** 44,49 **** --- 44,53 ---- * Ralf S. Engelschall * rse engelschall.com * www.engelschall.com + * ---------------------------------------------------------------------------- + * CUSTOM RewriteCond CIDR option (-i) + * 2006/09/01 qinglong@atticfactory.com + * ---------------------------------------------------------------------------- */ #include "apr.h" *************** *** 239,245 **** CONDPAT_LU_FILE, CONDPAT_STR_GT, CONDPAT_STR_LT, ! CONDPAT_STR_EQ } pattern_type; typedef struct { --- 243,251 ---- CONDPAT_LU_FILE, CONDPAT_STR_GT, CONDPAT_STR_LT, ! CONDPAT_STR_EQ, ! /* CUSTOM 2006/09/01 by qinglong */ ! CONDPAT_CUSTOM_CIDR } pattern_type; typedef struct { *************** *** 3101,3106 **** --- 3107,3114 ---- case 'x': newcond->ptype = CONDPAT_FILE_XBIT; break; case 'U': newcond->ptype = CONDPAT_LU_URL; break; case 'F': newcond->ptype = CONDPAT_LU_FILE; break; + /* CUSTOM 2006/09/01 by qinglong */ + case 'i': newcond->ptype = CONDPAT_CUSTOM_CIDR; break; } } else { *************** *** 3492,3497 **** --- 3500,3511 ---- ap_regmatch_t regmatch[AP_MAX_REG_MATCH]; int rc = 0; + /* CUSTOM 2006/09/01 by qinglong */ + char *mask; + apr_ipsubnet_t *ipsub; + apr_status_t rv; + /* ----------------------------- */ + switch (p->ptype) { case CONDPAT_FILE_EXISTS: if ( apr_stat(&sb, input, APR_FINFO_MIN, r->pool) == APR_SUCCESS *************** *** 3559,3564 **** --- 3573,3599 ---- } break; + /* CUSTOM 2006/09/01 by qinglong */ + case CONDPAT_CUSTOM_CIDR: + if (*input && (mask = ap_strchr(input, '/'))) { + *mask++ = '\0'; + rv = apr_ipsubnet_create(&ipsub, input, mask, r->pool); + if (rv == APR_SUCCESS && apr_ipsubnet_test(ipsub, r->connection->remote_addr)) { + rc = 1; + } + rewritelog((r, 3, NULL, "RewriteCond CIDR (-i) check: " + "ip=%s mask=%s", input, mask)); + } + else if (*input && !APR_STATUS_IS_EINVAL(rv = apr_ipsubnet_create(&ipsub, input, + NULL, r->pool))) { + if (rv == APR_SUCCESS && apr_ipsubnet_test(ipsub, r->connection->remote_addr)) { + rc = 1; + } + rewritelog((r, 3, NULL, "RewriteCond CIDR (-i) check: " + "ip=%s", input)); + } + break; + case CONDPAT_STR_GT: rc = (compare_lexicography(input, p->pattern+1) == 1) ? 1 : 0; break;
APRの本が欲しいです>oyamaさん
created by blog.nomadscafe.jp
Cache::Memcached + Set::ConsistentHash works to
某IRCからメモ
Cache::Memcached + Set::ConsistentHash works too :)
なるほど
created by blog.nomadscafe.jp
Cache::Memcached::libmemcachedでSegmentation fault
MEMCACHED_HASH_KETAMAを使いたくてテストしているんだけど、
use strict; use warnings; use Cache::Memcached::libmemcached qw/MEMCACHED_DISTRIBUTION_CONSISTENT MEMCACHED_HASH_KETAMA/; my $mmc = Cache::Memcached::libmemcached->new({ servers => [qw/localhost:11211/], }); $mmc->set_distribution_method( MEMCACHED_DISTRIBUTION_CONSISTENT() ); #$mmc->set_hashing_algorithm( MEMCACHED_HASH_KETAMA() );
実行するとSegmentation fault
$ perl test.pl Segmentation fault
どうやら、Memcached::libmemcachedの段階でNGのようだなぁ
created by blog.nomadscafe.jp