javascriptで、正負の整数、小数をチェックする

正負の整数、小数をチェックする正規表現ではまったのでメモ。

許容したいのは、1, -10, 0.5, -1.2

^-?[0-9]+(¥.[0-9]+)?$

と書いていたが、小数点を入れると一致しなくなる
¥. を . にしてみると任意の一文字となり、0a0等も許容してしまう。
上記で動かない理由を探していたけどわからないので、以下に変更

^-?[0-9]+([¥.]{1}[0-9]+)?$

これで意図した通りに動きました

メールが送れない

ローカル環境(Mac OS 10.5)で開発をしているんですが、
プログラムからのメール送信ができない。。。

% sudo /usr/sbin/sendmail -bd -q1h

で、sendmailを起動したら、sendmailでエラーはでなくなったけど、
送信先にメールが届いていない。
gmailに送ってみた結果、以下のログが。

postfix/smtp[967]: connect to alt2.gmail-smtp-in.l.google.com[209.85.217.183]: Connection refused (port 25)
postfix/smtp[967]: connect to alt1.gmail-smtp-in.l.google.com[72.14.205.27]: Connection refused (port 25)
postfix/smtp[967]: connect to alt2.gmail-smtp-in.l.google.com[209.85.217.182]: Connection refused (port 25)
postfix/smtp[967]: connect to alt2.gmail-smtp-in.l.google.com[209.85.217.177]: Connection refused (port 25)

25番ポートで接続できないってことなのかと思い、
http://blog.dc-d.jp/archives/1002.html
を参考に、master.cfを編集し、再起動しても結果は変わらず。

一時間ほど検索しても、これだ!!って内容は見つからず。
/etc/mail/配下のファイルを変更する手法も見つかったが、これは自分で
sendmailをインストールした場合に有効そうだった。

また、時間見つけてやろうと思います。
これやったか?ってのを教えていただけると、大変助かります。

気になったサイト

http://rin-kaku.jp/

どうやってみつけたか覚えていないけど、昨日見つけて、気になったので、ブックマークしておいた。
今日、ショートストーリを読んでみると面白い。
代官山のAfricaとか名前を知っているところが舞台だからなのか。

自分よりだいぶ大人な人達のストーリーだと思ったけど、
自分も結構いい年齢だと感じてしまう。中身は若僧もいいとこ。
こういうストーリーとは無縁なところにいる。
巡り合いたいわけではなく、こういうのがあっても、中身が幼いから
違和感たっぷりってことが、ちょっとさみしい。

インタビューのところも見てみよう。

Zend_Pagenatorを使う

http://framework.zend.com/manual/ja/zend.paginator.html

これを使ってみた。
マニュアル読んでもあまりピンとこず、サンプル見た方が早い。

Zendを使うときは、Zend_Viewではなく、Smartyを使っているので、
Zend_View_Smarty(Smartyを使うためのラッパー)に追加が必要になります。
http://framework.zend.com/manual/ja/zend.view.scripts.html#zend.view.scripts.templates

上記がZendのマニュアルにのっているZend_View_Smartyクラス。
これに、Zend_View_Abstractクラスから以下のメソッドをコピペしたら、
Zend_Pagenator等のZend_Viewヘルパー、プラグインが呼び出せます。
 ・__call
 ・getHelper
 ・getPlugin
 ・getPluginLoader
 ・getHelprPaths()

private変数なんかは、上記のメソッドで使ってるやつを適宜追加してください。

まだ、Zend_Pagenatorしか使ってないので、他のプラグイン、ヘルパーを
使うには抜けがあるかもしれません。

Zend_Pagenatorは、動いてみると楽でした。これ便利です。
ページャーはPEARのやつを組み合わせてたんですが、もう使わなくていいですね。

protectedの勘違い

protectedで定義した変数は、そのクラスを継承したクラスからは参照できますが、継承していないクラスからは参照できません。これはメソッドも同様です。

私は、クラスAにprotected変数がある場合、クラスAを継承したクラスB、クラスBを継承したクラスCからも参照できるものだと思っていました。しかし実際は、孫クラスにあたるクラスCからは参照できませんでした。よくドキュメントに書いてある、サブクラスというのは、子クラスのみをさしていたのですね。

javaのときはどうだったか覚えてないですが、phpではこうでしたってことでメモ。

findManyToManyRowsetの盲点

findManyToManyRowset はとても便利なメソッドです。

以下の様なテーブル構成の場合

・テーブルA
・テーブルB (テーブルAの子テーブル)
・テーブルC (テーブルBの子テーブル)

findテーブルCViaテーブルB
または
findManyToManyRowset(‘テーブルC’ , ‘テーブルB’)
と書くことで、Cの情報を1行で取得することができます。

以前の記事でこの場合、テーブルBのデータも参照のみ可能な状態で、
Zend_Db_Table_Rowsetクラスに含まれていることを書きました。
しかし、テーブルCのデータを更新して、save()した後、テーブルBのデータは、オブジェクトの中から消えてしまいます。
もともとテーブルCのRowsetオブジェクトなので、理解できるのですが、
予想していない挙動だったので、ここにメモしておきます。

参照するなら、テーブルCの情報を更新する前に。ここ大事です。

続2Zend_Mailで日本語本文が文字化け

昨日書いた対処により、Mac OS9 Outlook Expressでは化けなくなったが、
他のメーラーではまだ化けることがあるようでした。

そんなときに、会社のメールサーバ等に詳しい方から情報をもらいました。
日本語メールの本文のエンコーディングは、7bitでないといけないということを。
メールヘッダのContent-Transfer-Encodingの部分です。

というわけで早速変更してみました。
以前、Zend_Mime::ENCODING_BASE64としていた部分を、
Zend_Mime::ENCODING_7BITに変更です。

$mail = new Zend_Mail(‘ISO-2022-JP’);

$mail->setBodyText($text, null, Zend_Mime::ENCODING_7BIT);

これで、文字化け問題から解放されることを望みます。
また新たなメーラーで問題がおこりませんよーにー。

続Zend_Mailで日本語本文が文字化け

以前https://life.co-hey.com/2008/09/zend-mail-6.htmlという記事を書きましたが、的外れだった可能性がでてきました。

メールヘッダーがbase64になっていたのに、printableで送信していたため、
この対処を入れて様子を見ていたのですが、まだ文字化けする場合がありました。

Mac OS9で、Outlook Expressをの場合に文字化けする現象がでました。
いろいろ試したところ、以下の対処で文字化けしなくなりました。

$mail = new Zend_Mail(‘ISO-2022-JP’);
$mail->setBodyText($text):

上記のように、base64の指定をしない形に戻す。

次に、メール本文の最後に改行を入れる。

これでMac OS9 Outlook Expressでも文字化けしなくなりました。
誤った情報を書いてしまったことをお詫び致します。