2008年10月16日木曜日

proftpdに大量のファイルをアップすると止まってしまう

ブログシステムとか、大量のファイルをFTPでサーバーにアップするとき、途中でとまってしまうことが結構あって困っています。
一度とまってしまうと、そのあと少数のファイルをアップしただけでも止まってしまって、いつまでたってもアップが終わらない。
いつまでもこれじゃ生産性悪いことこのうえないので、ちょっと調べてみました。

結論からいうと、
・サーバー側のFTPサービスがproftod
・クライアント側のFTPソフトがFFFTP、Fetch
という組み合わせでおこるようです。

proftod側の設定をいじるというTIPSもググると出てきましたが、僕の場合は変化なしでした。
ちなみにそのTIPSを転載しておくと、

・standaloneモードのとき
/etc/proftpd.confのMaxInstancesの数値を増やす (300くらいにしたら動いたらしい)

・inetdモードのとき
/etc/xinetd.conf
instancesの数値を増やす (200くらいにしたら動いたらしい)

ということです。
でも、これはDos攻撃のときにあやうい気がする・・。

結局僕は、FTPソフトをCyberDuck(OSX用)にしたら、とまることなく全部アップできました。
Fetch、金払ったのに今ひとつ使えないな〜。
以前、Transmitってやつを試用版で使ったらよさげだったので、それにしようかな。
CyberDuckも今ひとつ重かったりするし。

2008年5月15日木曜日

TweenerのuseFramesが効かない

AS3になってから、トゥイーンにはもっぱらTweenerを使ってます。
前はTweenクラスとか使っていたんだけど、便利で一度使ったら手放せません。

そんなTweenerですが、ひとつハマったところがあったので情報シェア。

「useFrames」というプロパティがあって、これはTweenerさせる時間を秒で設定するかフレーム数で設定するか決められるBoolean値です。

Tweener.addTween(mc, {time:10, useFrames:true, y:100, transition:"easeOutQuint"});

とかすると、「useFrames:true」になってるので「time:10」を10フレームとしてとらえます。
つまり、10フレームかけてyを100にトゥイーンするわけです。
しかし、これが何回試してもうまくいかない。
useFrames:trueにしても、秒数になっちゃうのです。フレーム数で計算してくれない。

「Tweener useFrames」で日本語でググっても有益な情報は見つからずで、しょうがないので英語でもググるとこんなページが・・。

[Tweener] useFrames
> I just switched to Tweener for all my tweening stuff and I love it.
> But I have a problem with useFrames in den AS3 Version.
> Although I set useFrames to true, the time parameter doesn't use a
> frame amount-
> it's still in seconds. I would like to use a number in frames.
> Is it a known bug or why doesn't it work ?

It's a known bug; rather, it's something that has been known for a long
time but that managed to slip uncorrected.

Coincidentally, it's one of the little things I'm correcting for the
next version, so expect a fix in a few days.

Zeh

簡単に訳すと、
>Tweenerを喜んで使ってるけど、AS3バージョンだとuseFrames効かないんだよね。
>これって既知のバグ? なんで動かないの?

これは既知のバグです。っていうかずっと前からわかってるんだけど、直しそびれちゃってるんだよね。
2、3日で直せるから次のバージョン待っててね。

Zeh(Tweenerの開発者さん)

ということらしい。
早く次のバージョン・・。

だけど、Google CodeのTodoみても、
properly support .useFrames!

つまり「ちゃんとやるところ useFrames!」ってまだ書いてるし、直ってないでしょ。。
まあ、秒数でやりますよ、しばらく。


(2008.08.12追記 最近のリビジョンでは直ってるようです。)

2008年4月11日金曜日

HELOSCAN ─bloggerにTrackbackを実装する

Trackbackなんてあまり使わないから気がつかなかったけど、bloggerってTrackback機能がないんだ!
びっくり。
バックリンクとかいうのがあるけど、これではこちらから向こうにリンクはってますよ、とは伝えられないので、不便。
ないと思うと欲しくなるのが人の常でありまして、例によって調べてみました。

海外のサービスではありますが、HELOSCANというサイトのサービスを利用すると、bloggerでもトラックバックが使えるようです。
クリボウの Blogger 入門というページがよくまとまっているので、参考にしてみました。
ただ、今現在はHELOSCANがちょっとバージョンアップしているみたいで、若干説明と違うところがあります。

クリボウさんの説明では、サイトの画面に従っていくと、trackback用のコードが表示されてそれをbloggerのテンプレートに組み込んでいくという流れですが、現在では、

1.bloggerの「レイアウト」-「 HTML の編集」-「テンプレートをすべてダウンロード」でbloggerのテンプレートをダウンロード。
2.それをHELOSCANにアップロード。
3.HELOSCANが、トラックバック機能を埋め込んだテンプレートを勝手に作ってくれるので、それをまたダウンロード。
4.bloggerの「レイアウト」-「 HTML の編集」の「〜テンプレートをアップロードします」のところで、HELOSCANがつくってくれたテンプレートをアップロード。

で完了です。
すばらしい。ほんと手間いらずです。

これでtrackbackを受けれるようになったのですが、trackbackを送信するにはちょっと手数がいります。
HELOSCANの画面から、いちいち手作業で送信しなきゃいけないのです。
方法は、The Okano Mailさんに詳しくのってますので、そちらをご参照ください。

ブラウザで文字エンコーディングをいちいちUTF-8にするとかかなり面倒ですが、まあできないよりはいいでしょう。
っていうか、なんで最初っからtrackbackできないの? blogger。

2008年3月29日土曜日

postfixのインストール(fedoracore3)

fedoracore3のpostfixは、mysqlに対応してないのでsrpm から mysql 対応の Postfix をつくる。
(参考:ずんWiki - Postfix/Postfixをmysql対応にする

http://ftp.riken.jp/Linux/fedora/core/3/SRPMS/
の中で一番新しいpostfix、postfix-2.1.5-2.2.src.rpmをダウンロード&インストール。
rpm -ivh http://ftp.riken.jp/Linux/fedora/core/3/SRPMS/postfix-2.1.5-2.2.src.rpm

SPECS/postfix.specを修正。

また、postfixはバーチャルでMaildirにすると、Quotaが使えない。
patchをあてることで使えるようになる。
Quotaパッチ適用済みPostfix RPMの作成

postfixをアンインストールしてから、あとは参考URLのとおりインストール。
rpmsavedのconfを元に戻して終了。

chkconfigで自動起動を設定する。
yumの自動アップデートからも除外しておく。
冷凍牛乳箱 - Linux関連 Archive

Postfix、Postfixadmin、Dovecotのメールサーバー構築

●Quota
postfixadminのconfig.inc.phpの中を
$CONF['quota'] = 'YES';
にする。

●postfixのconfをmysql対応に
Server(Debian-Postfix-MySQL-Courier-Postfixadmin)
さくらの専用サーバ環境のメール設定

●dovecot
fedora core3の場合、rpmパッケージが0.9までしかない。
1.0系を入れたいので、ソースからコンパイル。
configureのとき、--with-mysqlでmysql対応にする。
chakiの部屋: Postfix + Dovecot + MySQLで認証
yumの自動アップデートからも除外しておく。
冷凍牛乳箱 - Linux関連 Archive

mysql認証のために、/usr/local/etc/dovecot-sql.confを作成。
どこにもサンプルがみつからなかったので、自己流で作成。
/usr/local/etc/dovecot.confのuserdb、passdbまわりにdovecot-sql.confへのパスを書く。

dovecot.conf内のhomeディレクトリへのパスは

mail_location = maildir:/home/virtual/mail/%u/Maildir

と最後に「Maildir」がつくのが通常だが、
postfixadminの場合、「Maildir」フォルダを生成しないので、

mail_location = maildir:/home/virtual/mail/%u

とする。

●認証
postfixadminのデフォルト、MD5Cryptとする
dovecot-sql.conf内では、

default_pass_scheme = MD5-CRYPT

と記述。
postfixadminのアドレス編集画面で、「名前」を他ドメインと同じものにしてしまうと、
(taro@foo.jpで「taro」とtaro@bar.jpで「taro」)
クライアントの認証でうまくいかないときがある。
「taro / foo」「taro / bar」などと区別するとよい。

.htaccessのerrorドキュメント設定が認識されない

バーチャルドメインの場合、.htaccessにerrorドキュメントの設定を書いても、正しく表示されない。
どうも/error/ディレクトリをちゃんと認識してないみたい。

httpd.conf内の
Alias /error/ "/var/www/error/"

が、
「URLに対する仮想ディレクトリの指定を行います。
上記の「/error/」の設定の例では、ブラウザから「http://www.example.com/error/」というURLにアクセスがあった際、ドキュメントルートで指定されたディレクトリではなく、「/var/www/error」ディレクトリ内のコンテンツを表示させることができます。

という動作をしているみたい。
なので、この1行をコメントアウトして、httpdをrestart。
ちゃんと表示された。

Apacheの基本設定 - Webサイトを創ろう!

nucleusでif文を使ってブログごとに表示をかえる

nucleusで複数のブログを運営しているとき、同じスキンでブログごとにタイトル画像だけ変えたい、なんてときがあります。

どうもスキンでif文を使えばできる模様です。
ただ、if文の書き方がよくわからなくてハマリました。

正解を先に書いちゃうと、

<%if(blogsetting,bnumber,2)%>
ブログIDが2のときの処理
<%elseif(blogsetting,bnumber,4)%>
ブログIDが4のときの処理
<%endif%>
ということになります。
これのよくわからなかったのが、ifの引数の書き方。
ほかの言語だと
if(bnumber==2){
とか演算子使って書くことが多いと思うのですが、nucleusの場合、カンマで区切って書く模様。
上の例の場合、blogsetting変数のbnumberが2、とかそんな感じです。

あと、もうひとつわかりにくいのが、blogsetting変数のヘルプを見ると、ブログIDは「id」という名前になってるので、
<%if(blogsetting,id,2)%>
と書いたんだけど、これだと動かない。
ここは、idは、nucleus_blogテーブルのbnumberというカラムに格納されていて、このカラム名のbnumberで、
<%if(blogsetting,bnumber,2)%>
としてあげないとダメ。
これ、ヘルプに書いてないじゃんよ!
まあ、解決してよかったけど。

あっ、ちなみにelseifはnucleusのバージョン3.3以降じゃないと使えないらしいです。