約2ヶ月ぶりのリリースになります。
今回の修正は、
・sendmail述語の追加(メール送信)
・rkey述語の追加(ランダムなキーを取得する)
・乱数をメルセンヌツイスターを使用するように回収
・set_session_cookie述語の追加(セッションIDクッキーの、ドメイン、パス、有効期限、セキュリティを設定)
・now述語の変更(現在時+a秒の表示を行える)
・remap述語の追加(ハッシュキーの交換)
・keys述語の追加(ハッシュキーの一覧を返す)
・DB周りでエラーが発生し終了した場合、ODBCドライバ内で例外となるバグの修正
・?ポストフィックス(評価がfalseでもバックトラックしない)の追加、last述語(直前の?述語の評価結果を返す)の追加
と盛りだくさんになりました。
いろいろ追加・変更点がありますが、面白いのは、乱数のアルゴリズムを標準Cライブラリのものからメルセンヌツイスタ(MT)と呼ばれるものに変更した点です。
詳しくは
ホームページを見ていただければと思うのですが、かなり強力な乱数生成器のようで、perl や php にも導入されています。
ということで、我がADPでもMTを使用することにしました。
作者の松本先生に許可を取りましたところ快く了解いただきました。この場を借りてお礼を申し上げます。
桜の季節になりましたが、神田川の桜を見てきました。
神田川ですが、川沿いが散歩道になっていまして、桜並木があり、多くの人が桜をみに来ていました。
以下、曙橋からの桜になります。
都会の真ん中でなかなか風情がある景色でした。
今、世界中で大問題となっている原発のお話です。6日現在、新聞等では、低レベル汚染水を海中に放出した件が韓国で問題になっている件を報じていますが、オーストラリアのオーケストラが放射能汚染を警戒して韓国行きをキャンセルした話を伺いました。
韓国の人にとってはまさにとばっちりでしょうが、オーストリアにいらっしゃる現地提携会社にお勤めの
はっぱさんからの情報なのですが、
『こちらオーストリアでは、日本は既に放射能に侵されて、壊滅した国みたいで(笑)
ザルツブルクのモーツァルテウム・オーケストラは、世界地図を知らない人が多いらしく
韓国への演奏旅行をキャンセルしました。』(なかなか過激ですが原文まま)
とのことです。オーケストラの韓国公演がキャンセルになったのは事実のようで、
こちらのサイトでもその旨を報じています。
記事では、韓国側のトンヨン国際音楽祭(TIMF)のアナウンスとして
“While the Korean government officially announced that the radiation leakage in Japan will not affect Korea and more than 150 other artists plan to visit Tongyeong for the 2011 TIMF, the Salzburg Mozarteum Orchestra’s concert cancellation seems to have been affected by the Austrians’ traumatic memory of the 1986 Chernobyl nuclear disaster.”
『韓国政府は、日本の放射漏れの影響はない見通しで150組以上のアーティストがTIMF 2011の為にトンヨン市に訪れる予定との公式発表しました。それにもかかわらず、ザルツブルク モーツァルテウム・オーケストラはキャンセルしました。86年のチェルノブイリ事故の時のトラウマがあるのではないかと見られます。』
とのことで、放射能という目に見えない恐怖は、なかなかぬぐえないようです。
われわれは、風評に惑わされないで、冷静に行動したいものです。
地震でここしばらくブログの更新を自粛しておりましたが、自分でできることをやるのが一番ということで、ブログの更新を再開します。
ブログビューワーのリリースを行おうかとおもっとりましたが、その間にADPもアップデートがあったのと、その中で、久しぶりにC++/STLネタができたので、今回はC++/STLネタを披露いたします。
ちなみに、このブログで一番アクセス数が多い記事は、
C++/STLでCSVファイルの読み込みで、一時期、
自作機向けWindows7のKernel-Power 41病対策のアクセス数が首位に躍り出たのですが、再びCSVが首位に返り咲きました。『おまえらどれだけCSVやねん』と突っ込みたくなるのですが、次の刺客ということで、日本語メール送信を送り込みます。
コードは長くなるので呼び出し部分のみ以下に示します。全ソースのダウンロードは、プラットホーム別に以下のとおりです(ソースの内容自体は同じでプラットフォームに合わせて日本語のエンコードを変えています)。
Windows版(Shift_JIS)
Linux版(utf-8)
int main(void)
{
#ifdef _WIN32
WSADATA wsaData;
WSAStartup( 0x0101, &wsaData);
string charset = "Shift_JIS ";
#else
string charset = "utf-8";
#endif
string smtpserver("mail");
string to("to_address@example.com");
string cc("");
string bcc("");
string from("from_address@example.com");
string subject("サブジェクト");
string text("メール本文");
cout << subject << ":" << text << endl;
if ( !sendmail( smtpserver, to, cc, bcc, from, subject, text, charset) ) {
cout << "Error Send Mail.";
return 1;
}
#ifdef _WIN32
WSACleanup();
#endif
return 0;
}
各パラメータに値をセットして、sendmail関数を呼び出します。あて先(to,cc等)が複数ある場合はコンマ , で区切ります。サブジェクト(件名)とメールの本文のみ日本語OKです。使用している文字コードをcharsetで指定します。
例では、WindowsがShift_JISで、それ以外がutf-8になっていますが、Windowsでutf-8を使うことも可能です。
(もちろんメールの件名や本文で使用する文字コードをutf-8にする必要があります)。
日本語の取り扱いについてですが、昔、日本語メールと言えば、JISコードに変換して送るという風にやっておったのですが、最近のメーラは適切に処理をすれば(文字コードを指定し、base64等で適切にエンコードする)文字コードを変換する必要がなくそのまま送信できるようです。このプログラムもそのまま送信しています。
ちなみに、このプログラムにはbase64のエンコード・デコードも入っています。詳しくはソースをご覧ください。
コンパイルに際して注意があります。char をunsigned charとしてコンパイルする必要があります。
gccでは、
g++ -funsigned-char sendmail.cpp
のように -funsigned-char オプションを使用してコンパイルします。
Visual Studio 2008の場合は、プロジェクトのプロパティ→構成プロパティ→C/C++→言語→char型を規定でunsigned を はい にします(または/Jオプションを指定します)。
このプログラムは、以下の環境で動作確認しました。
Linux:Centos 5.5
Windows: Visual Studio 2008 professional / Windows 7 ulitimate 64bit (32ビットモードでコンパイル)
3月11日の東北関東大震災、被災者の方には心からお見舞い申し上げます。一日も早い復旧を願っています。
こういうときはITエンジニアはあまり用がないかとも思っておったのですが、『
東電が電気使用状況データをCSVで公開 「アプリ作ったら知らせて」と経産省』という記事を読み、少しでもお役にたとうと
WEBアプリを私も作成してみました。
以下のようにiframeで差込ができようにシンプルに作りました。ご自由にご使用いただければと思います。
<iframe src="http://www.global-navigator.com/toden/consumption.awp"
width="640" height="25" marginheight="0" scrolling="no" frameborder="0" >
当面、データをアップデートします。毎時、5分、15分、25分、35分、45分、55分に
東電のサイト(電力の使用状況グラフ(当社サービスエリア内))にデータを取りにいきます。
簡単に説明しますと、取得できた最近の1時間毎の電力消費量(単位が万KW)で表示しています。括弧内の%は、ピーク供給力に対する電力消費量の割合(%)を表示しています。
色ですが、90%以上で赤字になります。80~90%がオレンジ、それ以下が緑色になります。
前日差は、前日の同時刻帯の電力消費量の差分を%で表示します。
表示の内容につきましては無保証です。自己責任でご使用下さい。