カテゴリー「パソコン・インターネット」の5件の投稿

2008年12月15日 (月)

Photosynthってのはもっとすごいぞ

今度はPhotosynthというやつです。ミレニアムファルコンの写真を使って作ってみました。Windows LiveのIDを持っていなくても見れるのかな?

適当に選んだ写真なので、いまいちか・・・。でも、単に写真を選んであげるだけで勝手にここまで作ってくれる。なんかすごい。

| | コメント (0) | トラックバック (0)

2008年11月15日 (土)

[c#][vb.net] StringBuilderを使えばいいってもんじゃないぞという話

文字列を動的に作る時にはStringBuilderを使ったほうが速くなるといった記事が、ここここなどに書かれているが、これを誤解している人が多いと思う。

ここに書いてあるように、場合によってはStringBuilderを使うほうが遅くなるんじゃないかな。

たとえば、SQL文を作るのに、こんな書き方をしてしまっている例を見つけた。

StringBuilder sb = new StringBuilder();
sb.Append("SELECT");
sb.Append(" A");
sb.Append(",B");
sb.Append(" FROM TABLE1");

見栄えや保守性を考慮してってことだと思うが、
これでほんまに早いの??と思ったので、ちょっと調べてみたら、
やはりこれは意味がないことだとわかった。

つまり、ここの議論にあるように、先のようなコードを書きたいのであれば、たとえばこんな風に書けばよいのだ。

string s = ""
  + "SELECT"
  + " A"
  + ",B"
  + " FROM TABLE1";

これは、以下のように書くのと同値だ。コンパイル時に変換されるのだ。ildasmというSDKについているツールで調べられるぞ。

string s = "SELECT A,B FROM TABLE1";

また、変数同士をくっつけて1つの文字列にするような場合においても、かなりのループを回したり、処理が集中したりするようなケースでもない限り、たいしてパフォーマンスには影響しないことがほとんどだと思うぞ。

| | コメント (0) | トラックバック (0)

2008年11月11日 (火)

[ASP.NET][C#] データのIDを指定してそのデータがあるページでGridViewを開くのに試行錯誤した話

最近やっとASP.NETを触りだしたんだけど、わからないことがやたら多くて困っている。

その1つが、タイトルにも書いたデータのIDを指定してそのデータがあるページでGridViewを開く方法がわからないというものなんだが・・・。

まず、GridViewでいきなり指定ページを開く方法だが、これはすぐにわかった。

GridViewを配置し、Page_Loadでページ番号を指定してみる。
この例だと、3ページ目が開かれる。
あとはQueryStringなどでページ番号を渡してやればOK。

protected void Page_Load(object sender, EventArgs e)
{
  GridView1.PageIndex = 2;
}

不思議なのは、この後で画面上でページを切り替えてもちゃんと動くこと。
なんでここで指定したページに変わらないのかが謎。
ちゃんと勉強しないとわからんかも。

続いて、最初の目的であるIDを指定してそのIDを持つデータがあるページを開くようにしてみる。
やり方だけど、QueryStringで渡されたIDを持つデータを、1つずつ調べていくことにした。
(相当原始的な方法かも。スマートな方法があるのかもしれないけど、勉強してないのでよくわからない。)

試行錯誤した揚句、以下のようになった。
なんか無理やりという感じがするが他に思いつかない。
(IDが入っている列の位置はCellsのインデックスで指定。)

protected void GridView1_PreRender(object sender, EventArgs e)
{
  string id = Request.QueryString["id"];

  if (id != null)
  {
   string act = Request.Path;
   int ind = act.LastIndexOf("/");
   if (ind >= 0)
   {
    act = act.Substring(ind + 1);
    form1.Action = act;
   }

   for (int i = 0; i < GridView1.PageCount; i++)
   {
    GridView1.PageIndex = i;
    for (int j = 0; j < GridView1.Rows.Count; j++)
    {
     string tempid = GridView1.Rows[j].Cells[1].Text;
     if (tempid.Equals(id))
     {
      return;
     }
    }
   }
   GridView1.PageIndex = 0;
  }
}

注意しないといけないのは、先のPage_LoadでGridViewのデータを参照してみても値が入っていないというとこ。
GridView1のPreRenderイベントを割り当てて、そこで参照してやる必要がある。
(PageのPreRenderでもいいかも。)

あと、form1.actionを設定しているところがあるが、単にファイル名だけにしたかっただけ。

なんかasp.netになったら便利になると思っていたが、なんだかお約束が多くて大変だな~。
aspのがよかったかも。

| | コメント (0) | トラックバック (0)

2008年11月 5日 (水)

Vista PCのセットアップでトラブル

VistaのノートPCを買った。せっせとセットアップを始めた。いろいろやってるとログイン後にブルースクリーンになってしまうようになった。セーフモードなどいろいろ試したがだめ。別のPCでネットを探してシステムの復元でなんとか立ち直った。ああよかった。

復元の手順としては、だいたい以下のような感じ。

1)セーフモードとコマンドプロンプトで起動。
2)コマンドプロンプトでrstrui.exe と入力してEnter。
3)しばらくするとシステムの復元が起動する。
4)ここで推奨の復元を選んでやってみてもだめだったので、別の復元ポイントを選択するというほうを選んで、立ち上がりそうなものを選んでやったらうまく起動した。

これを知らなかったら完全にリセットしてやり直しだったので助かった。この程度の情報はマニュアルに書いてあってもよさそうなもんだが・・・。素人には無理と考えてんのかな。もっといえば、このユーティリティーが立ち上がるセーフモードがあってもよいと思うんだが・・・。

| | コメント (0) | トラックバック (0)

2007年9月30日 (日)

VMware Playerでさんざんな目に・・・

VMWare Playerで遊ぼうと思ってインストールしたらネットに繋がらなくなった。

アンインストールしてもだめで、どうもDHCPサーバーを探してくれてない模様だったので、IPアドレスを手動設定にしたら、なんとかルーターにも外部のIPアドレスにもPINGは通った。家庭内LAN内のほかのPCの共有フォルダも開けるのだが、なぜかDNSだけ引けない。

DHCPサーバーとの通信だけの問題かと思い、ネットでdhcplocとかいうソフトを探して試してみたら、なんかソケットのエラーが出た。

TCP/IP関連の設定が壊れたのかと思い、NICのドライバを入れなおしたり、TCP/IPを削除して入れなおしたり、あげくOSのサービスパックを入れなおしたりしたが全然だめ。

そんなこんなで2日間試行錯誤して、dhcplocだかイベントログだかで出ていたソケットのエラー番号でネットを調べなおしてみたら、ウイルスセキュリティーがどうのこうのと書いてあるページを発見。

で、結局ソースネクストのウイルスセキュリティーを入れなおしたらあっさり解決した。最初にウイルスセキュリティーのサービスを止めてのチェックまではやっていたんだが、アンインストールはしてなかった。サービスを止めたらこのソフトの影響を殺せたと思ったのが甘かった模様。最初にやっておけばよかった・・・。

VMware Playerとの相性の問題なんだろうか。とにかくOSの再インストールまで考えていたので一安心。

これで時間をつぶしてしまったのと、子供の運動会やらF1日本GP(今年はテレビ観戦)やら雨やらで、今週末はプラモ作りのほうは進んでないぞ。

| | コメント (0) | トラックバック (0)