ClickOnce配布時のエラー

2009-07-28
このエントリーをはてなブックマークに追加

URLDownloadToCacheFile failed with HRESULT ‘-2146697202’

ClickOnceで配布したアプリケーションを起動しようとすると起動にコケました。エラーログを辿ると上記のログが。エラーからググったんですけど、どうにもわかんなかったんですね。

で、思い当たったのが第三者機関が証明書を発行していないオレオレ証明書。

これがビンゴだったわけですよ。社内でしか使わないアプリケーションなので証明書にコストも掛けられず、かといってプレーンな状態でデータのやり取りもしたくなく、オレオレ証明書を使っていたわけですが、それがよくなかった様子。証明書のインポートをしたら無事に起動しました。

 

Tags:

C#でXMLからLINQtoXMLで必要な情報だけ抜き出してDataGridViewにバインドする

2009-07-09
このエントリーをはてなブックマークに追加

最近RubyonRailsのエントリーばっかりだったのですが、別にそれしかやっていないわけではありません。プロジェクトも並行で同時進行、言語もまちまち。なんとか混乱しないでこなしていますが、堤防決壊寸前ですな。

XDocument doc = XDocument.Parse(XMLの形をした文字列);
var query = from n in doc.Descendants(“user”)
        select new {
            id = n.Element(“id”).Value,
            user_name = n.Element(“user_name”).Value,
            telephone = n.Element(“telephone”).Value
        };

データグリッド.DataSource = query.ToList();

XMLファイルをXDocumentに読み込む場合は

XDocument.Load(ファイルパス);

となります。

LINQtoXMLで必要なノードだけを抽出して(今回は「user」というノードだけを抜き出しています)、データグリッドにバインドしています。

バインドするのはLINQの結果のままの状態ではなく、IListに明示的に変換してあげなければいけません。変換してやら無いとIEnumerableのままなのかな?バインドしてもデータグリッドに何も表示されませんでした。

コレを解決するのに半日悩んだ。。。

Tags: , ,

RubyonRailsでLike演算子を使ったあいまい検索をする方法

2009-07-07
このエントリーをはてなブックマークに追加

:conditionsにクエリ文字列ごりごり書くなら別に気にしなくてもいいのですが、まぁたいていはインジェクション対策も兼ねてプレースホルダーを使うか、シンボルを使うかのどちらかでは無いでしょうか。

ハセテツは前者です。PHPでもPEARを使っていたので、プレースホルダーを使っていました。

で、Rails(ActiveRecord)でプレースホルダーを利用している状況でLike演算子を使ったあいまい検索はどうしたらよいものか、と意外にシンプルな部分で躓いたりします。キーワード検索機能を実装しない限り、Like演算子って使わないですよね。

:conditions => [“hoge like ?”, “%#{hogeParam}%”]

上記の書き方であいまい検索ができました。手抜きではあるのですが、これでhogeParamが空白文字列であっても検索はできます。nilだったらどうしようもないですけどね。

Rubyで書くか、PHPで書くか、それが問題だ

2009-07-06
このエントリーをはてなブックマークに追加

はっきりいって、やっぱりRubyは遅いです。Railsじゃなくて、Rubyが遅いです。Rubyでループしまくってデータをインポートするバッチを書いたら、C#で同じ処理をさせたときの倍近くかかりました。(正確に計測していないので倍は言いすぎだと思うが、体感できるぐらい遅かった。今度PHPで同じコードを書いてみよう)

いわれてみれば書いてて気持ちいいし、Railsはらくちんです。しかし、ここまで遅いとは思っていなかった。ただ、遅いといってもフツーのWebアプリを開発する分にはそれほど大差は出ないのかもしれません。それでもやっぱりループ処理は遅いなぁ。イテレータのおかげでらくちんではあるのですが。

ORマッパーは、便利ですがやはり不安を常に感じてしまいます。ループ処理するときにはORマッパー任せにしないでfind_by_sqlで自分でSQLを書いちゃいます。そうしないと、100回のループで100件の問い合わせをされちゃいます。ここは外部結合使ってごっそり取ってきて欲しかった。まぁ、MySQLは外部結合するよりクエリ連打した方が早いからいいのかな。

ただし、ルーテイングは便利です。コントローラとアクションの管理がラクなので、あとからソースを追うときに非常にラクです。さらに、MVCの管理がすっきりしてます。

「それだけならCakePHPでもいいじゃないか」といわれそうですが、CakePHPはRubyonRailsより遅いというベンチを誰かのブログで拝見しました。いやー、アレ以上遅いのはさすがにパスかな。symfonyも同様みたいです。

小規模サイトで開発メンバーの入れ替わりがあるなら、フレームワークは必須でしょう。中規模以上になってもハードウェアに予算投入で解決できるならそれほど問題にはならないと思います。

予算が限られ、自社内コンテンツみたいに開発メンバーが限定されるのであれば、ピュアなPHPとSmarty、URLをきれいにしたければ(GETにだらだらつけたくなければ)mod_rewriteを使えばよいかと。

自社内コンテンツであっても、メンテナンスなどを考えるとフレームワークを導入した方がいい気もするのですが、サイトの成長計画と相談ですかねぇ。

あ、言語の話じゃなくてフレームワークの話になってきちゃった。

Tags: ,