« 2007年01月 | メイン | 2007年03月 »

2007年02月 アーカイブ

2007年02月07日

Rails用携帯電話ライブラリ mobile_view.rb を改良する

技術コラム : Rails で携帯用にビューを切り替えで公開されているmobile_view.rbを2箇所修正しました。

class ::ActionController::Base#is_mobile? で携帯電話からのアクセスか判定していますが、対象を増やしました。この処理はHikiを参考にしています。

# モバイルかどうかを判定
def is_mobile?
    ua = request.user_agent
    #ua =~ %r{^(DoCoMo|J-PHONE|Vodafone)/} || ua =~ %r{UP\.Browser/}
    %r[(DoCoMo|J-PHONE|Vodafone|WILLCOM|MOT-|UP\.Browser|DDIPOCKET|ASTEL|PDXGW|Palmscape|Xiino|sharp pda browser|Windows CE|L-mode)]i =~ ua
  rescue NoMethodError
    # テストのときは user_agent メソッドが存在しないので false を返しておく
    false
  end
end

次に、文字コードを変換するときに半角カタカナを全角カタカナに変換してしました。nkfは半角カタカナを自動的に全角カタカナに変換します。-x を指定して変換しないようにしました。

# レスポンスを Shift_JIS に変換
def sjis_response
  if is_mobile? && (!headers["Content-Type"] || headers["Content-Type"] =~ %r{^text/html})
    response.body = NKF.nkf('-Ws -m0 -x', response.body) if is_mobile?
    headers["Content-Type"] = "text/html; charset=Shift_JIS" if is_mobile?
  end
end

2007年02月09日

シェアレジ月次レポート集計

DoteConvVectorから送られてくるシェアレジの月次レポートを集計するプロジェクトを公開しました。

月次レポートからダウンロード数の累計や申込件数、支払件数、支払金額などをCSVファイルに出力します。

CSVファイルをExcelなどの表計算ソフトで開いて、集計したりグラフ化したりして、楽しんで下さい。

2007年02月10日

BDS2006(C++Builder2006)でメール送信

BDS2006(C++Builder2006)でメールを送信するには、IndyのTIdSMTPを使います。

文字コードをShift_JISからJISに変換するのには、IndyのEncode2022JP()を使いました。

Subjectは自動的にBase64でエンコードしてくれるようです。

AnsiString host = "mail.example.jp";
AnsiString subject = Encode2022JP("メールの件名");
AnsiString to = yamamoto@example.jp";
AnsiString from = yamamoto@example.jp;
AnsiString text = Encode2022JP("メールの本文");
IdSMTP1->QuickSend(__classid(TIdSMTP), host, subject, to, from, text);

ファイルを添付したり、細かいことをしたいときは、TIdMessageを使用する。

TIdSMTP* smtp = new TIdSMTP(this);
TIdMessage* mail = new TIdMessage(this);
try
{
  //件名(Subject)
  mail->Subject = Encode2022JP("メールの件名");
  //差出人(From)
  mail->From->Name = Encode2022JP("山本");
  mail->From->Address = "yamamoto@example.jp";
  //宛先(To)
  TIdEMailAddressItem* item = mail->Recipients->Add();
  item->Name = "山本";
  item->Address = "yamamoto@example.jp";
  //メールの本文(Body)
  mail->Body->Text = Encode2022JP("メールの本文。");

  //添付ファイル
  AnsiString filename = "C:\\サンプル.txt";
  TIdAttachment* attach = new TIdAttachment(mail->MessageParts, filename);
  attach->ContentTransfer = "base64";
  //添付ファイルのファイル名に日本語を含むときはBase64にエンコードする必要がある
  attach->FileName = EncodeHeader(Encode2022JP(ExtractFileName(filename)),
                                  TSysCharSet(), 'B', iso2022jp, "ISO-2022-JP");
  //ファイルにあわせて text/plain image/gif image/jpeg application/octet-stream など
  attach->ContentType = "text/plain";

  //重要度「高」
  mail->Priority = mpHigh;
  mail->ContentType = "text/plain";
  mail->CharSet = "ISO-2022-JP";

  //SMTPサーバー
  smtp->Host = "mail.example.jp";
  //PORT(必要に応じて設定)
  smtp->Port = 25;

  //サーバーに接続して送信
  smtp->Connect();
  smtp->Send(mail);
  smtp->Disconnect();
}
__finally
{
  delete smtp;
  delete mail;
}

2007年02月12日

損失回避性

Beltaの大人の効果的な学習方法:微妙なズレ…」の

昨日、友人の山本隆氏から面白い話を聴きました。
お金を頂く側と、払う側では、
お金の価値が3倍、違うのだそう。

について補足すると、これは「損失回避性」についての話です。

「損失回避性」とは、

損失は、同額の利得よりも強く評価される。つまり、同じ額の損失と利得があったならば、その損失がもたらす「不満足」は、同額の利得がもたらす「満足」よりも大きく感じられるという意味である。

行動経済学』 友野 典男

さらに、『行動経済学』からの孫引きになりますが、

われわれがいい境遇からわるい境遇に転落するときには、わるい境遇からいい境遇へと上昇するときにつねに享受するよりも、おおくの受難を感じる

道徳感情論』 アダム・スミス

と、アダム・スミスも「損失回避性」に気づいていました。

で、どのくらい不満足の方が大きいかというと、

カーネマンとトヴェルスキーの計測では、同じ大きさの利得と損失、つまりたとえば1000円の利得と1000円の損失では、その絶対値は後者の方がおよそ二倍から二・五倍も大きい。

行動経済学』 友野 典男

ということです。

ちなみに、損失額の合計が同じ場合、損失が二回続いたときの方が、一回だけの時よりも不満足が大きくなります。

About 2007年02月

2007年02月にブログ「山本隆の開発日誌」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2007年01月です。

次のアーカイブは2007年03月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35