はてなキーワード: sigとは
MENSA(メンサ)という団体をご存じだろうか。天才のみが入会を許される世界的な団体だ。
IQ148以上限定、メンバーは人口上位2%の頭脳の持ち主であると喧伝されている。
先日、その日本支部の入会試験があったので、暇をもてあましていたので受験してみた。
ネットから申し込みを行って、当日、会場に行くと老若男女、様々な人が10人ほど集まっていた。
全員が集まった後、試験官(今にして思うと日本支部の会長だった)から試験の説明を受け、例題を皆で解いた。
3問あった例題のうち、一つだけどうにも分からなかったので、とても不安になりながら、試験開始。
試験は、よくネットでみかけるIQテストとほぼ同様の形式だった。
規則性を探し、空欄に当てはまるモノを選択するというアレ。
ただ、問題数が多い割に時間が短い(一問あたり20秒程度しか与えられない)ので、
試験開始と同時に、僕の近くにいた受験者は問題冊子をペラペラめくりだした。
そんな特殊技術もなにもない僕が合格するのかと半信半疑になりながら、
僕は数問を除いて規定時間の半分で回答し、残りの半分で残った難問を解いた。
本国の英国で採点するのでで2週間から2ヶ月の間に合格通知があると告げられ、その日は解散となった。
(ちなみにタイトルのネタ元の方はアメリカ支部のテストを受けたので、文化に関するテストも出題されたようだ。
日本ではこのテストオンリーだ。そこらへんは国の事情もあるので、支部ごとに違うのだろう。)
こうして僕は、MENSAに入会することとなった。
なんせ、何を隠そう僕のスペックは、私立大学卒のフリーターと、天才のイメージからは想像も付かないものだ。
だが、やはりSPIは大の得意だし、ICUの入試の過去模試を解いたら(註:SPIや知能テストに近い)、
制限時間より短い時間で解いたのに最高点だった人より上だったとか、
子供の頃に、父親の使っていた公務員試験用の問題集を軽々と解いていたような記憶があるとか、
そういうパズル的なモノには無類の強さを発揮してきた。
他の会員も見聞きする範囲では、社長からフリーターまで幅広い人が集まっているようで、
やはりパズル関係が得意な人が多いらしい。そういえば芦ヶ原伸之というパズルの権威もメンサの会員だった。
メンサでは、メンサに幻想を抱いている人にとって残念なことには、
天才たちの英知を集合させて世界の未来を云々する、などということは一切行っていない。政治的に、宗教的に中立である。
また、公式サイトのFAQにいうように「身長が高い人の集まりのようなもの」であり、会員も特に特権意識を持っていない。
基本的にただの社交場。なので天才児が入ったとしてもあんまり得はない。
もっとも、天才児のようなギフテッドの支援はメンサを挙げて行ってはいるが。
日本支部でも、例会(お食事会)と、有志が集まってSIG(Special Interest Group)を形成して交流を楽しむ活動がメインだ。
こういった活動に興味がない人が入会しても、自己満足で終わると思う。
僕自身は新鮮なことがいっぱいとても満足している。
(ログインリンク)https://api.login.yahoo.co.jp/WSLogin/V1/wslogin?appid=hoge&appdata=choix&send_userhash=1&done=http%3A%2F%2Fwww.choix.jp%2Fyahoo&ts=hoge&sig=hoge (ログイン画面)https://login.yahoo.co.jp/config/login?.src=ba_choix&.done=https%3A%2F%2Fapi.login.yahoo.co.jp%2FWSLogin%2FV1%2Fwslogin%3Fappid%hoge%26appdata%3Dchoix%26send_userhash%3D1%26done%3Dhttp%253A%252F%252Fwww.choix.jp%252Fyahoo%26ts%3Dhoge%26sig%3Dhoge%26.scrumb%3D0 (注意事項画面)https://api.login.yahoo.co.jp/WSLogin/V1/wslogin?appid=hoge&appdata=choix&send_userhash=1&done=http%3A%2F%2Fwww.choix.jp%2Fyahoo&ts=hoge&sig=hoge&.scrumb=hoge (新規登録画面)http://www.choix.jp/yahoo?appid=hoge&token=hoge&appdata=choix&userhash=hoge&ts=hoge&sig=hoge
LiveDoor認証がでたらしいので、とりあえず寝際にちゃちゃっと書こうとしたのだけどなんかうまくいかない。
「ログインURLの有効期限が切れています」とかでちゃうんだ。
なにか間違ってるかな?
<?php // LiveDoor認証に必要なリンクの生成 // 定数がクラス内に切ってあるので環境にあわせ変更してください include_once('authlivedoor.class.php'); // Livedoor認証用クラス $obj_auth = new AuthLiveDoor(LIVEDOOR_APIKEY, LIVEDOOR_SECRET); $livedoorloginurl = $obj_auth->getLoginUrl(); ?> <div style="border:solid 1px #666666;"> <a href="<?= $livedoorloginurl ?>">ライブドア認証を利用してログインする<br /> <img src="http://auth.livedoor.com/img/cmn/head_livedoor.gif" border="0"> <img src="http://auth.livedoor.com/img/cmn/head_logo.gif" border="0"> </a><br />
<?php // this code is writen by utf-8 & lf //http://auth.livedoor.com/login/?app_key=<app_key>&perms=<perms>&t=<time>&v=1.0&userdata=<userdata>&sig=<sig> // LiveDoor外部認証APIを利用する // キーは各開発者ごとに取得が必要です。 http://auth.livedoor.com/ ここより取得できます。 // コールバックURLには authlivedoor.php を指定してください // --- 下記宣言を環境に合わせて変更してください。 --- define("LIVEDOOR_APIKEY" ,""); // アプリケーションキー define("LIVEDOOR_SECRET" ,""); // LiveDoor認証秘密キー // --- ここまで --- class AuthLiveDoor { const LIVEDOOR_AUTH_PORT = 80; // ポート const LIVEDOOR_AUTH_TIMEOUT = 10; // タイムアウト const LIVEDOOR_AUTH_VERSION = '1.0'; // 認証APIのプロトコルバージョン const LIVEDOOR_AUTH_PERMS = 'id'; // 認証APIのアクセス権 const LIVEDOOR_AUTH_FORMAT = 'xml'; // 認証APIの取得フォーマット const LIVEDOOR_AUTHURL = "auth.livedoor.com"; // LiveDoor認証URL private $login_state = false; private $login_id = ""; private $err_msg = ""; private $apikey = ""; private $secret = ""; public function __construct($apikey, $secret) { $this->apikey = $apikey; $this->secret = $secret; } // // $cert = $_GET['token']; public function getAuth($token) { if ($token == "" ) { return; } $api_time = date('U'); // エポック秒で $param_ary = array($this->apikey ,AuthLiveDoor::LIVEDOOR_AUTH_FORMAT ,$token ,api_time ,AuthLiveDoor::LIVEDOOR_AUTH_VERSION ); sort($param_ary); $api_sig = hash_hmac('sha1',implode('',$param_ary),$this->secret); $param = "app_key=".$this->apikey ."&format=".AuthLiveDoor::LIVEDOOR_AUTH_FORMAT ."&token=".$token ."&t=".$api_time ."&v=".AuthLiveDoor::LIVEDOOR_AUTH_VERSION ."&sig=".$api_sig; $fp = fsockopen(AuthLiveDoor::LIVEDOOR_AUTHURL , AuthLiveDoor::LIVEDOOR_AUTH_PORT , $errno , $errstr , AuthLiveDoor::LIVEDOOR_AUTH_TIMEOUT); if (!$fp) { $this->err_msg = "$errstr ($errno)<br />\n"; } else { $out = "POST /rpc/auth?$param HTTP/1.1\r\n"; $out .= "Host: auth.livedoor.com\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); $ret = ""; while (!feof($fp)) { $ret .= fgets($fp, 2048); } fclose($fp); } // LiveDoorの認証XMLのパターン $pattern = '/(\s*<livedoor_id>)(.*)(<\/livedoor_id>)/'; preg_match_all($pattern,$ret,$getAry); $livedooruserid = $getAry[2][0]; // ユーザーIDを取得できた場合 if ($livedooruserid != "") { // ログイン成功 $this->login_state = true; $this->login_id = $livedooruserid; return ture; } } public function getLoginState(){ return $this->login_state; } public function getLoginId(){ return $this->login_id; } public function getLoginUrl() { # http://auth.livedoor.com/guide/ # http://auth.livedoor.com/login/?app_key=<app_key>&perms=<perms>&t=<time>&v=1.0&userdata=<userdata>&sig=<sig> # app_key 必須 登録時に発行されたアプリケーションキー # perms 必須 要求するアクセス権、現状userhashとidの2種類がある # t 必須 URLが生成された時間をエポック秒で表したもの # v 必須 プロトコルバージョン、現在は1.0で固定 # userdata 任意 コールバックURLに引き継ぎたい値を255バイトまで自由に設定できる # sig 必須 このURLの正当性を確認するためのシグネチャ // ログインURLの有効期限が切れています // ヾ(。o、゜)ノ ここらへんがわからん!! // $api_time = time()+32400; // エポック秒で $api_time = date('U')+32400; // エポック秒で // $api_time = date('U'); // エポック秒??もしかして、それはポエティック病ではありませんか? $param_ary = array($this->apikey ,AuthLiveDoor::LIVEDOOR_AUTH_PERMS ,api_time ,AuthLiveDoor::LIVEDOOR_AUTH_VERSION // ,data ); sort($param_ary); $api_sig = hash_hmac('sha1',implode('',$param_ary),$this->secret); $loginurl = "http://auth.livedoor.com/login/" ."?app_key=".$this->apikey ."&perms=".AuthLiveDoor::LIVEDOOR_AUTH_PERMS ."&t=".$api_time ."&v=".AuthLiveDoor::LIVEDOOR_AUTH_VERSION // ."&userdata=" ."&sig=".$api_sig; return $loginurl; } }
もう疲れたので寝る。ライブドアなんてーーーー!!!
訂正。
秘密キーとか、そのままのっけちゃった (ーωー|||)
そしてなかなか訂正できなくてあせった。。