OpenPNEのスマートフォン対応

OpenPNEを使ったサイトでスマートフォンで登録出来ないとの事で対応しました。
いろいろ手をかけてあるので単純にバージョンをあげれなかったので、改造に踏み切りました。
尚、ここで述べた方法を行った結果生じた不具合・損害については一切責任を負いませんので、自己責任でお願いいたします。

初期登録では「メールアドレス」を登録し招待メールを送るのですが、この際メールのドメインで携帯であるかPCであるかを判断するので、スマートフォンの場合でもメールアドレスは携帯扱いになってしまいます。ところが・・・いざ登録する場面ではUserAgentで識別されてしまうため初期登録がエラーとなってしまいます。
スマートフォン用の画面を製作していないので、PC用を使ってもらっている関係でUserAgentにスマートフォン用のブラウザを追加する事は出来ません。またいろいろなブラウザを使用しているためいたちごっこになりそうです。

そこで、PCの初期登録URLで携帯のメールアドレスを処理出来る様に改造する事にしました。
突貫であったのでもう少し良い方法があるかもしれませんが取り急ぎ動いているようです。
尚、OpenPNEは3.4系です。
ご参考まで

初期でtokenを処理するために下記を改造する。
“plugins/opAuthMailAddressPlugin/apps/pc_frontend/modules/opAuthMailAddress/actions/actions.class.php”
=======================================================
   略
 public function executeRegister($request)
 {
  $this->getUser()->setCurrentAuthMode(‘MailAddress’);
  $token = $request->getParameter(‘token’);
  $memberConfig = Doctrine::getTable(‘MemberConfig’)->retrieveByNameAndValue(‘pc_address_token’, $token);
##追加#######################
if ($memberConfig != ‘pc_address_token’){
  $memberConfig = Doctrine::getTable(‘MemberConfig’)->retrieveByNameAndValue(‘mobile_address_token’, $token);
}
#########################
  $this->forward404Unless($memberConfig, ‘This URL is invalid.’);

初期登録画面でmobile_address_preを処理出来るように下記を変更する。
“./plugins/opAuthMailAddressPlugin/lib/form/opAuthRegisterFormMailAddress.class.php”
=======================================================
  public function doSave()
    略
  if (sfConfig::get(‘app_is_mobile’, false))
  {
   $memberConfig = Doctrine::getTable(‘MemberConfig’)->retrieveByNameAndMemberId(‘mobile_address_pre’,$this->getMember()->getId());
   $memberConfig->setName(‘mobile_address’);
  }
  else
  {
   $memberConfig = Doctrine::getTable(‘MemberConfig’)->retrieveByNameAndMemberId(‘pc_address_pre’,$this->getMember()->getId());
##コメントアウトして、追加########
   #$memberConfig->setName(‘pc_address’);
   if (“$memberConfig” == “pc_address_pre”){
    $memberConfig->setName(‘pc_address’);
   }else{
    $memberConfig = Doctrine::getTable(‘MemberConfig’)->retrieveByNameAndMemberId(‘mobile_address_pre’,$this->getMember()->getId());
    $memberConfig->setName(‘mobile_address’);
   }
##########
   }
   $memberConfig->save();
   return $memberConfig;
  }
=======================================================

ログサーバーが・・・

ふと見たらガイガーカウンターの積算データが出ていない・・・・どうやらログサーバーが止まっていたようで、再起動しました。
多分メモリあたりがおかしい感じです。作り直すかな・・・。

アルコールテスター

以前秋葉原でアルコールテスターを購入していたものが出てきたので、以前からやってみたかった実験を行ってみた。
実験とは、「飲んだお酒の量と呼気中のアルコール濃度の変化」である。
行きつけのお店で店主の許可をもらって早速開始した。
ちなみにこの実験はかなりいい加減なのでちゃんとしたものではないのですが、まあご愛敬って事で・・・。

1.使用機器
 使用機器は秋葉原で購入した下記機器である。製品に書いてあるが、「正確なものではありません」とちゃんと書いてあります。

被験者
 性別:男
 年齢:40代
 体重:0.1t弱
アルコール
 Chamisul(チャミスル)22度
 高清水(日本酒)

2.実験方法
 ショットグラスの容量を予め計測しておき、このグラスで飲んだお酒の量と、飲み終わった後の呼気中のアルコール濃度を測定します。計測前には水で口の中を洗浄してから測定する事としました。尚、店主と周りのお客の許可を取って(・・というより皆さんも楽しんでました)実施しています。
水割りやお茶割りの場合は上記ショットグラスで計測してから作るようにしました。

3.結果
 時刻とともなって呼気中のアルコール濃度がどのように変わってきたかと言うと下記の様になりました。

次に摂取アルコール量をザックリ計算してグラフにしてみます。ロックで飲んだり、割ったり、途中で日本酒に切り替えたりしたのでかなりいいかげんですが、20%と見なして飲んだお酒の量(割もの除く)に0.2をかけてCCで表現しました。

なんか同じようなグラフになってしまいました。
試しに時間と飲んだ量をグラフにすると下記の様になりました。

律儀に飲んでいたようです。37cc/hくらいですね・・・。

予想していたのは、もう少し飲んだ量に対して右上がりのデータを期待したのですが、実際はコップ1杯(チャミスル100ml位)飲んだあたりで0.2mg/L弱になり、後はしばらく飲んでもあまり変わらない感じです。ちなみに「あ、酔ってきたかも・・」と自覚したのはグラフ中の0.3mg/Lを示したあたりです。後半の0.25mg/Lあたりを示したあたりからは結構楽しい状態でした。(感想は飲んでる環境の影響が大きいですが・・・)
ちなみにグラフの真ん中あたりで日本酒に切り替えてます。
しばらくの間値が一定となったのは、おそらく腸からのアルコール吸収とアルコールの分解のバランスが取れていたのでは無いかと思いますが、次回はここらあたりの推測が出来るデータの取り方を考えてみたいと思います。

ちなみに「成人男性の適量の目安が、1日平均純アルコールで約20g程度」と見たことがありますが、上記実験ではその10倍位ですね・・・(^^;。

補足
下記に呼気中のアルコール濃度と状態の記述がありました。
全く別の製品の資料ですが参考になるかな・・・
www.figaro.co.jp/data/pdf/20100628214833_98.pdf

先日の降雪と放射線

しばらく空いてしまいました。少々まとめてアップする様にします。
先日まで東京方面では異常乾燥がつづき、ようやく月曜日に雨と雪になりました。この時間帯でガイガーカウンターの記録に変化がありましたので、一応記載しておきます。
下記は連続記録データの、1月24日午前8時のグラフです。前日の14時頃に雨が降り、18時頃から24時頃にかけて雪が降りました、図中にこれについても記載しています。カウンターの値が高くなっているのが、降雨(雪)にあわせて高くなっている感じです。
乾燥で空気中に浮遊している埃などが雨で落ちてきたのでしょうね。2Fで測っているのですが、雪の方がやや高い感じがするのは、落ちてくる速度と何らかの関係があるんでしょうかね・・・単なる気のせい・・・?

自宅カウント結果

最近部屋のガイガーカウンターがうるさい気がしていたので、記録を残してみる事にした。
とりあえず手元にあった1ボードのPCがあったので、linuxサーバーにし、手製のガイガーカウンターを接続する事にした。幸いFT232R-USBシリアル変換モジュールがそのまま認識してくれたので、この装置でデータを取った後本ブログを動かしているサーバーに送る事にした。
写真は本装置の外観である。

cronで1分ごとにガイガーカウンターよりデータを取り、そのままサーバーに送る仕様でプログラムを作成して実行した。
ときおり通信に失敗するものの、大体送れているのでとりあえずこれで良しとする。
次にサーバー側でグラフを書こうかと思ったが・・・・!GD関係が使えない!・・サーバーサイドでグラフを作成する事が出来ないではないか・・・・。
集信装置側でグラフを作成する等を考えたが、とりあえずテキストで表示する事にした。
自作ガイガーカウンターの測定結果の1時間毎の平均値
一応左側にリンクを表示しておきます。

さて、このカウンターで年間1mSvはどの様になるか考察しておく。
このあたりの自然放射線は、
 地質からの放射線        0.036uSv/h
 宇宙線による放射線量(海抜 0m) 0.33mSv/y
  参考:http://www.geosociety.jp/hazard/content0058.html#map
となる。これより合計で      0.074uSv/h
自然外からの放射線が1mSv/yとすると、1時間あたの値にして自然放射線と合計して0.188uSv/hとなる。
これを先の換算係数0.0094として計算すると、約20cpmとなる。
核種が異なるので、単純に換算する事は間違いであるが、参考値として考える事にする。
このあたりは特に放射線が高いとされている場所ではない。執筆時には平均値が14cpm程度であるが、20cpm程度の値がでる事もあるので、他と比べて問題視するレベルでは無いように思うが、生活圏として結構微妙な感じである。
今後の推移を見ていきたいと思います。

2012/1/3
グラフを追加しました。5分間隔で更新しています。フォントの関係でちょっと見づらいですがご愛敬って事で・・・。

赤が1分ごとのデータで、緑が1時間の平均値です。横軸は時間で、23時間のデータを表示しています。