RubyOnRailsで日本語メールを送信する

2008-11-25
このエントリーをはてなブックマークに追加

デフォルトはUTF-8のようです。UTF-8でもきちんと受信できるメーラーも多いですが、一番普及しているであろうMSOEが文字化けてしまうようなので、iso-2022-jpで送信する手法。もうUTF-8に統一しようよ。。。

今回はActionMaierとGetTextを利用。バージョンは以下。
Ruby 1.8.5
Rails 2.2.2
ActionMailer 2.2.2
GetText 1.93.0

まずはGetTextをインストール。これはgemで一発。

gem install gettext

メール送信するモデルは以下。ポイントはクラスの前にGetTextのインクルードと日本語であるという宣言。クラスの中で文字コードの宣言。これだけだとsubjectが残念な結果になったので、subjectは別途base64でエンコード。

require ‘gettext/rails’
GetText.locale = ‘ja’

class Hoge < ActionMailer::Base
  @@charset = ‘iso-2022-jp’

  def sendmail
    subject base64(‘ほげほげメール’)
    recipient 送り先
    from 送信者
    send_on 送信日時

  end

end

本文はerbファイルのテンプレート読み込みです。こっちに日本語が書かれています。送信はActionMailerでの通常の送り方のまま。これでGmail、Beckey!、MSOEでの受信には問題ありませんでした。

以前否定したRailsですが、最近多くの時間を割いています。理由は近いうちに説明、言い訳をしたいと思います。

MySQLで複数のテーブルを外部結合

2008-11-20
このエントリーをはてなブックマークに追加

ネストしてもいいのですが、可読性が悪かったりパフォーマンスが悪くなったり。

select * from table_0 i
left join table_1 j on i.id = j.id
left join table_2 k on i.id = k.id

つまり、「table_0に対してtable_1とtable_2を結合しまっせ。」ということです。ネストしてないのでとっても読みやすいです。パフォーマンスも、よい気がします(計測しろよというご指摘はごもっともです)。

Tags: ,

MySQLでストアドプロシージャを使う

2008-11-13
このエントリーをはてなブックマークに追加

MySQLでトリガーを使う

の続きといいますか、おんなじような内容なのですけが、ストアドの使い方です。これもいたって簡単です。

delimiter //
create procedure ストアド名(in 引数名 データ型)
begin
実行する処理、引数はそのままの名前で使える
end;
//
delimiter ;

大量の更新処理なんかには便利でしょう。

Tags:

C#で桁埋め(ゼロパディング)

2008-11-07
このエントリーをはてなブックマークに追加

Console.WriteLine( String.Format(“{0:D2}”,3) );

出力結果は「03」です。Dで10進数と指定、2で2桁にパディング、最後の3が「これをパディングしてくださ」っていう感じです。

Console.WriteLine(String.Format(“{0,4}”,3) );

だと、「   3」と出力されます。4桁にスペースパディングです。固定長出力時に利用します。でも固定長っていまでも使うのかなぁ。

Tags:

MySQLでのバックアップとリストア

2008-11-03
このエントリーをはてなブックマークに追加

MySQL5.xでのお話です。バックアップは

mysqldump -u root –password=xxxxxxxx データベース名 > 保存先パス

保存先はMySQLが書き込める権限を持っている必要があるみたいです。mysqldumpを実行するユーザが書き込めればいいのかなぁ。今度検証しておこう。

リストアは簡単です。

mysql -u root –password=xxxxxxxx データベース名 < バックアップファイル

バックアップって言っても、バイナリじゃなくてDDLとDMLがぎっしり書かれたテキストファイルなので、リストアするのも「このファイルに書かれた大量のSQLをこのデータベースに実行しよう」ってイメージですね。

そういえばmysqldump実行中って、書き込み制御してくれるのかなぁ。

Tags: