2012年3月7日水曜日

電子国土ポータル

最近SVGを勉強することになり、色々調べたら
電子国土ポータル
http://portal.cyberjapan.jp/q_and_a/index.html

日本地図をSVGで公開しているとな。
業務で営業マンがどこに行ったかなどの地図表示に利用できそう。

2012年3月6日火曜日

SVG 日本語和訳

SVG 日本語和訳

http://www.hcn.zaq.ne.jp/___/REC-SVG11-20030114/index.html#minitoc

SVG-edit

SVG-edit

ブラウザ上で動くSVGグラフィックエディタのオープンソースが超凄いです。
次のようなインタフェースで、Chromeだとサクサク動くSVGエディタがGoogle codeにてオープンソースでダウンロード可能です。
SVGでお手軽にお絵かきしたい場合や、SVGなお絵かきサイトなんかを作るのにも活用できそう

元ネタ
http://phpspot.org/blog/archives/2010/10/svg_1.html

2012年3月5日月曜日

UniPaas Richアプリを複数動作させる方法

UniPaas Richアプリを複数動作させる方法

Magic.iniの
MaxConcurrentUsers = 0
上記値を変更する

MaxConcurrentRequests = 0
この値は、UniPaas ENterPriceServerの場合に使用する

2012年3月3日土曜日

[HttpException (0x80004005): URL にエンコードされたフォーム データが有効ではありません。]

オブジェクトの現在の状態に問題があるため、操作は有効ではありません。
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.InvalidOperationException: オブジェクトの現在の状態に問題があるため、操作は有効ではありません。

ソース エラー:

現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の例外スタック トレースを使って確認できます。

スタック トレース:


[InvalidOperationException: オブジェクトの現在の状態に問題があるため、操作は有効ではありません。]
System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded() +2420362
System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding) +58
System.Web.HttpRequest.FillInFormCollection() +159

[HttpException (0x80004005): URL にエンコードされたフォーム データが有効ではありません。]
System.Web.HttpRequest.FillInFormCollection() +217
System.Web.HttpRequest.get_Form() +104
System.Web.HttpRequest.get_Item(String key) +40
Telerik.Web.UI.RadCompression.IsAjaxRequest() +50
Telerik.Web.UI.RadCompression.Compress(HttpApplication application) +373
Telerik.Web.UI.RadCompression.PreRequestHandlerExecute(Object sender, EventArgs e) +43
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75


原因としては、「MS11-100」によって、.NET Framework のいくつかの問題が解決されています。

これにより導入されたセキュリティパッチの中に、「一時的にハッシュテーブルの衝突に友なる潜在的な DoS 攻撃を軽減する」を修正するために、POSTデータの多くを含むページの PostBack に問題が生じます。
幾つかの情報から、PostBack 項目が 500 に到達すると上のようなエラーが発生するようです。

回避策は、画面上のコントロールの数を少なくするのがいいのでしょうが、実際に動いているサービスではそれは難しい事になってくる。

私も最初この問題が発生したときに、PostBack に必要なデータが多すぎるために発生しているのではないかと推測はできた。
しかし、なかなか有効な情報に辿りつけなくて...さまよっていた。考える事、1時間そうかぁ validateRequest や PostBack 時の検証のチェックをしなければ....っと思って
Page で設定を行なってみたが、やはり解決しない。

結論を書くと、正確な対応としては、上記にある通り、一画面に出るコントロールを減らすのがセキュリティ面から考えても正しいのだろう。しかし、そうも行っていられない。


web.config に、
<appsettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5001" />
</appSettings>
と記述するだけで、少なくても上限だと思われる10倍の5001個のコントロールになる。
後は、環境で増やしていけばいい。

根本解決ではないけど、回避策にはなる。

2012年3月2日金曜日

SVGをiFrameで表示

IE6とIE8で、SVGを表示すると、画面サイズが大きい場合、画面スクロールしてくれない。
(IE9では、正常に画面スクロールしてくれる。)

SVGをXAMLに変換して表示しようとすると、XAML変換が、WPF対応になってしまう。
SilverLightでは、ちと面倒な変換が必要になった。

SilverLightで強引に、WebBrowserで表示させようかと思ったけど
表示権限が必要でうまく行かない。

htmlで、iFrameを使用したら、フレーム枠を設定出来るからいけるかもと思い、実験すると
思った通りにIE6でも、画面スクロールしてくれた。

Visio to XAML

Visioで書いたフローをWebブラウザーで表示したいと考えていた。
VisioからSVG形式で出力できるので、コレでOKからと思ったら
IE6のAdobe SVG Viwerで画面スクロールしない。

仕方ないので、VisioからXAML形式に直接出力するToolがあった。

http://visioautomation.codeplex.com/

CodePlexで公開されていた。