新規作成
OpenIDで認証してエントリーを新規作成します
共有
エントリーにはOpenIDで閲覧と編集に制限かけることができます
変更履歴
編集履歴もあるので、コラボレーションにも活用できます

Yappo++

codereposがOPになったー

created by http://coderepos.org/share/wiki/Committers/kazeburo

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 とか方がいいのかなぁ

created by http://coderepos.org/share/wiki/Committers/yappo

OpenID Hackathon

created by bulknews.vox.com

yahoo.comのOpenIDに対応できた

rev. 118でyahoo.comに対応できた


http://code.sixapart.com/trac/openid/changeset/118


mala++

上田さん++

created by blog.nomadscafe.jp

かなり適当なNet::OpenID::Serverの2.0対応patch

created by blog.nomadscafe.jp

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

勝負の神髄

勝負に勝つ秘訣とは何か


ジリ貧にならないこと

created by isuzuka [livedoor.com]

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

<6789101112131415>