Home > とんとかいも > Web技術 Archive

Web技術 Archive

MT5で通知メールが化ける件

  • Posted by: ヽ(°▽、°)
  • 2010年1月 6日 00:32
  • Web技術

movabletype 5 は投稿などイベントがあったときにメール通知する機能がありますが、内容に日本語を含むと文字化けを起こすことがあります。

その場合、mt のアプリケーションルートにある mt-config.cgi に「MailEncoding ISO-2022-JP」と一行書き加えると直ります。

備忘録なり。

自宅サーバ環境の消費電力を計ってみた

  • Posted by: ヽ(°▽、°)
  • 2009年9月23日 14:55
  • Web技術

今年のシルバーウィークは5連休。
せっかくなので、工画乃郷などを置いている自宅サーバ環境の消費電力を計ってみました。

サーバ環境

サーバ

左から...

  • ルータ: マイクロ技研 SuperOPT GFive
  • 光終端装置: GE-PON
  • スイッチングハブ: LSW3-GT-5NS
  • ひかり電話アダプタ兼ルータ: RT-200NE
  • サーバ: Let's Note CF-T2
自宅ネットワーク図

ひかり電話ルータは手持ちのルーターにぶら下げることができません。にもかかわらず機種はNTTが決める為、性能が低い機種に当たることもあります。その場合は上図のようにスイッチングハブを挟むと良いでしょう。(ひかり電話はただ繋ぐだけで機能しますので、プロバイダ契約が1つのみの場合、PPPoE設定は手持ちのルータ側に施します)

電力は?

赤で囲った部分を計ってみると平均23Wでした。
電気代に直すと、月300円くらいですね。

うち、サーバの Let's Note CF-T2 はなんと3W。
ということはネットワーク機器が20Wも食っていることに...。

他の皆さまはどうでしょう、気になります。

Google Chrome のバグっぽいもの

  • Posted by: ヽ(°▽、°)
  • 2008年9月14日 22:20
  • Web技術

Google Chrome 0.2.149.29 、JavaScript の表示領域取得がうまくできません。


document.documentElement.scrollHeight 8
document.documentElement.clientHeight 500
document.documentElement.scrollWidth 700
document.documentElement.clientWidth 700

※HTML 4.01 Strict

document.documentElement.scrollHeight はブラウザの表示領域の高さをスクロールバー分込みで取得するものですが「8」ってどこから!?「0」ならともかく。
scrollWidth は正しく取得できるのでバグでしょうなぁ。

とりあえず↓でしのげます。
IE, Firefox, Opera, Google Chrome で動作確認済。

var H = ( document.documentElement.clientHeight || document.documentElement.scrollHeight ) ;

IEでObjectを動的生成すると動かない、の対策

  • Posted by: ヽ(°▽、°)
  • 2008年9月14日 16:24
  • Web技術

SWFObject などで Object タグを動的に生成した時、IE7 以降では表示がうまくいかない場合があります。

まずタグがちゃんと生成されているか innerHTML などでチェックします。生成されていなければ引数などを確認しましょう。

ちゃんと生成されていて他のブラウザでは見えるのに IE では見えない、動画を埋め込んだのに再生されないといった場合は、Object が描かれた後に再描画を伴う何かをすると解決する事が多いです。

<div id="A"></div>

<script type="text/javascript"><!--
 var O = new SWFObject("hoge.swf", "fuga", "100%" , "100%" , "9.0.0", "#ffffff");
 O.write("A");

 document.getElementById('A').style.margin = 0 ; //←これ
// --></script>

この例では margin = 0 としましたが、もちろん他の宣言でもOK。
与える値は元と同じでもOK。
とにかく与えればOK

あとは、WIndows XP SP3 以降とVistaで導入された保護モードが悪さをしている可能性があります。保護モードを無効にして動くかで切り分けできますね。
こちらの解決方法はまだわかっていません。

WSUSの仕様について(怒)

  • Posted by: ヽ(°▽、°)
  • 2008年9月13日 23:01
  • Web技術

WSUSはアップデートファイル取得用に、ポート80が通るサーバに [Selfupdate] 仮想ディレクトリを要求しますが、このサーバにホストヘッダを指定してはダメなようです。

「Selfupdateサービスが起動できない」エラーの解決方法、いくら調べても権限設定くらいしか見つからなかったのだぞ(-5) ←Civ4風

設定を直したら [Auto Update] サービスの再起動を忘れずに。

[IIS6] ワイルドカードSSLを使って、ホスト名のみで区別されたWebサーバ群を運用する方法

  • Posted by: ヽ(°▽、°)
  • 2008年9月 9日 22:08
  • Web技術

IISで複数のWebサーバを設置するには、通常「IPアドレス」「ポート」「ホスト名」のいずれかが異なればOKですが、SSLを使う場合は「ホスト名」が異なるだけではダメとされています。

ということはワイルドカードSSLを使うにも、全部異なるIPかポートにしないとダメなの?「ホスト名」を変えるだけでOKにする方法はないの!?

...そんな貴方に「SSLホストヘッダサーババインド」がございます。
なんとコマンドプロンプトに↓魔法の言葉↓を入れるだけ。

cscript.exe adsutil.vbs set /w3svc/<サイトの識別子>/SecureBindings ":443:<ホスト名(完全装飾ドメイン名)>"

あ、Windows Server 2003 SP1 以上限定です。


試しにやってみました。
識別子 66, 67, 68 を持つサブドメイン a, b, c に魔法の言葉を掛けてみます。

cscript.exe adsutil.vbs set /w3svc/66/SecureBindings ":443:a.dsk.jp"
cscript.exe adsutil.vbs set /w3svc/67/SecureBindings ":443:b.dsk.jp"
cscript.exe adsutil.vbs set /w3svc/68/SecureBindings ":443:c.dsk.jp"

するとどうでしょう。
SSL:443 を持つサーバ群がすべて「実行中」に!

multiSSL

ちなみに一度設定してしまえば、再起動しても大丈夫。
すばらしい!

注意
バインドはドメイン名が異なるサーバ同士でも可能ですが、その中で使用できる証明書は一つのみです。
SSL通信は通常、ホストヘッダは暗号化され、特定のサーバに到達した後に復号が行われます。
そのため「1.jp」「2.com」など異なるドメイン同士でバインドするとSSL通信が意図しない方に到達し、復号の過程でサーバ証明書不一致エラー...という事が起こり得ます。

複数の証明書を使う場合は、従来どおりIPかポートを変えましょう。

ASP.NETのPostBackにおける、IEに起因する注意ふたつ

  • Posted by: ヽ(°▽、°)
  • 2008年6月23日 19:45
  • Web技術

IISの「規定のドキュメント」でPostBackするときはURLに注意。
IEは「/」など省略したURIで発生したPostBackを切り捨ててしまいます「/」でPostBackするとまっさらの「/index.aspx」が開くので、IE内部でURL転送かけてる感じなのかな。

回避策は「/」でアクセスさせない事。
サイトのトップの場合は転送かけるように設定しましょう。


フォームでEnterキーを押すとSubmitされますが、IEでは入力コントロール(ボタンでないinput要素)が2つ以上ないと入力内容が送られません。また要素があっても内容が空だとダメです。(送信ボタンをクリックしたときはOK)

はっきり言ってスクリプトのエラーと紛らわしいので、ダミーのフォームを一個作って回避しましょう。type="hidden"(runat="Server"にせずvalueを入れる) か Style="display:none;" がよさげ。当然 Visible="false" ではダメですよん。

datetime型から日付で集計する方法 (MSSQL)

  • Posted by: ヽ(°▽、°)
  • 2008年5月30日 19:36
  • Web技術

例えばWebログを取り貯めているデータベーステーブルから、一日あたりのアクセス数などを知りたくなったとします。
ある一日だけであれば WHERE で簡単に出ますが、これで1か月分調べるのは酷。といって単純に GROUP BY すると日付+時間で丸まるので意味がない。日付だけで丸めるにはどうすればいいんじゃー!?

MySQLのは簡単に見つかったが、MSSQLのは見つからなかったので、おいら流のやり方を以下に記しますよ。

-----

SELECT CONVERT(varchar,日時,111) As 日,Count(*)
FROM ログのテーブル
WHERE 日時 BETWEEN 対象期間はじめ And おわり
GROUP BY CONVERT(varchar,日時,111) --ここでAsは使えない
ORDER BY 日

-----

SELECT と GROUP で CONVERT を合わせるのがミソ。ORDER BY は As のでやるべし。ちなみに111はyyyy/MM/ddに相当するプロパティ値でそ。
大雑把ですが値が一発で出るので便利ですぞ。

Index of all entries

Home > とんとかいも > Web技術 Archive

Search
Feeds

Return to page top