[Rails3]ActionMailerで日本語メールを送る

最近は時間を見つけてはRailsによるアジャイルWebアプリケーション開発 第4版を写経しておる。
これ翻訳書なせいかアプリがちゃんと動いてもテストがなかなか通らないのね。Rails初心者だからどうしていいかわかんない。イテレーション一つ進めるのにものすごく時間がかかって疲れる。

今日はイテレーションH1の確認メールの送信をやっていたのだけどテストが通らないのね。
メール本文が文字化けしているからassert_matchが通らない。
そりゃそうだ。
Railsの文字エンコードはデフォルトでUTF-8だから日本語の文字化けで困ることはほとんどないんだけど、日本語メールはUTF-8じゃなくてISO-2022-JPに指定しなくちゃね。

解決策はGemでmail-iso-2022-jpを取ってきて、

続きを読む

減らしたがる病気

ここ1年くらいで段々と減らすことの重要性と快感に目覚めている気がする。

それまでは増やすことこそが善だと思ってきた。友達を増やし、入ってくる情報を増やし、収入を増やすことが善。24時間無駄なく目いっぱい自己研鑽することこそ善。欲しい物があればもっと働いて収入を増やして買う。働く時間が増えて他に使える時間が減れば一日が48時間あったらいいなと思ってしまう。ものを買えば買うほど物欲は増えるし、食べれば食べるほど食欲は増す。情報源を増やせば増やすほどもっといろんな情報を知りたくなる。増えれば増えるほど欠乏症になる。

でも自分が増やそうとしているもののほとんどが「関係ない」「重要じゃない」「緊急じゃない」ものばかりだ。一度我慢してみれば自分に必要なものでなかったと気づくことが多い。

続きを読む

21歳になりました。

おかげさまで21歳になりました。祝ってくれた方、ふだん支えてくれてる人たち、ありがとう。

21歳になって思うことがいろいろあるんだなー。自分としては21歳ってけっこう重要な年って思ってる。20歳って未成年に毛が生えたようなもんで、21歳から大人ってイメージがある。なんでかわかんないけど昔から20歳と21歳って全然違う気がしてた。実際1歳しか違わないし、世間的には20歳も21歳も未熟なんだろうけど。他人から見れば年が一つ増えただけなんだけど、心境の変化は19→20歳のときよりも大きい。どちらかというと焦り。自分が思い描いていた21歳に比べると自分は全然ダメだなと。別に萎えてるわけじゃないけど、もうちょっと気合いれて頑張らなきゃあっという間に30歳になりそう。

続きを読む

Rubyはじめました

Rubyはじめました。
とは言ってもここ最近いろいろあって全然プログラミングできてなかったが。
まぁこれから本格的にやってみますよっと。

とりあえず $ gem install twitter してTwitterで遊びながらRuby覚える。

[ruby]
# 公開ユーザーの最新のツイートを取得する
require ‘twitter’
Twitter.user_timeline("Chan_tera", {:trim_user => true, :count => 10}).each do |i|
p i["text"]
end
[/ruby]

参考

大学3年生になってちょっと経った。

大学3年生になって少し経った。新年度の慌ただしさも少し落ち着いたかな。
授業もゼミも部活も含めた一週間を今週過ごしたからなんとなくこれからの時間の使い方が想像できる。

当初入る予定が全くなかったゼミ。2年生のときは説明会に一度も行かなかったし願書ももらわなかった。大学2年になって始めたWebプログラミングはやればやるほど面白いし、残りの大学生活もこれをきわめようと考えていた。
ある日同じ学部の部活の同期に願書の再配布があるという話を聞いた。いまの学部を選んだのも興味があって勉強したい分野だったからとふと思い、特に深い理由もなくゼミに入ることにした。このまま今やってることをやり続けるのも良いけど、なんとなく寄り道したい、いきなり方向転換して横道に逸れてみたいという思いで再配布の願書を受け取った。ゼミのことをよく調べないまま聞いたことあるゼミの名前を書いてその場で提出して帰った。

続きを読む

MacOSX10.7LionにRails環境を作ってみた

春になって大学3年生になったので気分を一新してRubyを勉強することにした。なんだかんだずっとRubyやってみたかったんです。作りながら覚えるということで今までPHPでガリガリWebやってたこともあってRailsでWebアプリ作ってみることにした。以下環境構築手順。(Google先生に聞きながらやったんで詳しいことは知りません。間違っていたらすみません&優しく教えてください)

続きを読む

健康と無駄。

病院行ってきたけどインフルエンザじゃなかった。体調は最悪でもないし布団から飛び出して今日は調子をととのえるよういつもよりのんびり過ごしている。

自分は20歳にしては健康に気をつかっている。朝5:30に起きて歯を磨いてコップ一杯の水を飲んでからトイレに行き、軽くストレッチしたあとに朝食を食べる。朝食は一日の中で一番食べる量が多く、それでも腹八分目に留めている。メニューは和食と決まっていて内容もだいたい決まっている。魚料理1品、サラダ1品、それに野菜たっぷりの煮物もしくは汁物1品と納豆と豆腐。それとご飯と果物。あと牛乳。おかずを口に運ぶ順番まで決まっている。米はそのうち玄米にしたい。朝食後は一日の予定を立ててから部活で2時間近く泳ぐ。朝だけでもいろいろ項目があるが昼・晩にも健康に関する日課や決まりがたくさんある。

続きを読む

春休み。。

テスト終わったー。
ついに春休み。ブログ放置気味だったので帰省から帰ってきて今日まで(1/11-2/5)を振り返る。

テストとバイトとプログラミングの話。今回はテスト期間が異様に長い。テストの数が多いわけでもないけど週に3つずつぐらいで3週間。まあ余裕を持って勉強できるからいいんだけど。だから普通にバイト行ってた。てか普段よりバイト入ってた。バイトない日は一日中プログラミング。飽きないねー。リファクタリングとかで何書いていいのか分かる場合は単純に作業だから捗る。書き直さず一発で良いコード書けるのが一番いいけど、結果的には作業はかなり進んだ(、気がする)。

続きを読む

広島帰省から帰ってきた。

帰ってきたのは10日(火)、成人式の次の日。
酒飲みながら振り返っております。

——

広島帰省から帰ってきた。
9ヶ月ぶりの広島だった。
めったに帰れないから今回は1週間いることにした。
テスト、レポート、その他諸々やることがあり、学校も始まるからそれ以上長くいるのは正直帰ってからがキツい。
久しぶりに帰省するからしばらく会ってない人がいる、会いたい人がいる。
帰省1週間は毎日誰かに会いに行く予定だったけど、1週間はあまりに短すぎて予定が入り切らない。
泣く泣く断った誘いもあった。

帰省前日、広島の友達と待ち合わせ時間とか場所とかの予定の詳細を詰めていた。
途中で話が逸れて成人式のことを話してた。

続きを読む

CakePHP findで年、月検索

MySQLのdatetime型のカラムで年or月で検索する方法ないかなーって調べてたら出てきた。
[MySQL]MySQLで月、年単位で値を抽出する方法::僕のススメ。
MySQL 5.1 リファレンスマニュアル :: 7 関数と演算子 :: 7.6 日付時刻関数

DATE_FORMAT(date,format)
MySQLのDATE_FORMAT関数を使うことで解決。
これは第1引数のdate(日付)を第2引数のformatに基づいてフォーマットする関数だ。
format文字列に使用することができる指定子%Yは西暦4ケタを指し、%mは月2ケタを指す。

この関数をCakePHPのfindのconditionsで使って年・月にマッチしたレコードを抽出した。(CakePHP1.3)

[php title=”model”]
<?php
class TStatusObj extends AppModel {
var $name = ‘TStatusObj’; // t_status_objsはツイート(statusオブジェクト)を保存しているテーブル

function getMonthlyArchive($months = 12)
{
$archive = array();
$i = 0;

// 最新12ヶ月ぶんのアーカイブを取得する, 引数で何ヶ月分取得するか指定可能
while(count($archive)<$months){
$month = date("Ym", mktime(0, 0, 0, date("m")-$i , 1, date("Y")));
// ツイートした時刻のカラムcreated_atから月毎のツイート件数を取得
$archive_count = $this->find(‘count’, array(
‘conditions’ => array(
array(‘DATE_FORMAT(TStatusObj.created_at, "%Y%m")’ => $month)
)
));

// 件数が0じゃない場合、日付と件数をpush
if(!empty($archive_count)){
$month = preg_replace(‘/^20\d{2}/’, ‘$0-‘, $month);
array_push($archive, array(‘month’=>$month,’count’=>$archive_count));
}
$i++;
}

return empty($archive) ? false : $archive;
}
}
[/php]

あとはcontrollerからmodelのgetMonthlyArchiveメソッドを呼んでviewに渡せば良いんじゃないのでしょうか。

[php title=”Archiveの出力例”]
Array
(
[0] => Array
(
[month] => 2012-01
[count] => 22
)

[1] => Array
(
[month] => 2011-12
[count] => 142
)

[2] => Array
(
[month] => 2011-11
[count] => 162
)

[3] => Array
(
[month] => 2011-10
[count] => 166
)

[4] => Array
(
[month] => 2011-09
[count] => 166
)

[5] => Array
(
[month] => 2011-08
[count] => 131
)

[6] => Array
(
[month] => 2011-07
[count] => 137
)

[7] => Array
(
[month] => 2011-06
[count] => 179
)

[8] => Array
(
[month] => 2011-05
[count] => 160
)

[9] => Array
(
[month] => 2011-04
[count] => 110
)

[10] => Array
(
[month] => 2011-03
[count] => 104
)

[11] => Array
(
[month] => 2011-02
[count] => 58
)

)
[/php]

ここ半年は月平均で150回ツイートしてますね。ということでTwitterのほうもフォローよろしくお願いします。=> @Chan_tera