Microsoft Silverligh ..
[2ch|▼Menu]
540:デフォルトの名無しさん
09/09/15 15:29:07
そもそも、クラス内で作っているcolorRectangleがどこにも使われていない件について。

public class Block
{
Rectangle colorRectangle = new Rectangle();
SolidColorBrush testBlack = new SolidColorBrush();

public Block(Panel owner)
{
testBlack.Color = Color.FromArgb(0xFF, 0x00, 0x00, 0x00);
colorRectangle.Width = 100;
colorRectangle.Height = 50;
colorRectangle.Fill = testBlack;
owner.Children.Add(colorRectangle);
}
}
とかにして、
Block block = new Block(canvas);
で出るんでないかな。

541:デフォルトの名無しさん
09/09/15 15:56:04
わざわざクラスを作る必要もない
各プロパティを設定するスタイルをXAMLのリソースで宣言して
Rectangleに設定すればいいだけ

542:523
09/09/15 19:23:20
試しに会社のPC & ネット環境から見に行くと、私が↑で書いたプログラムだと tmpは1、2個程度で
それ以上増えませんでした。
しかし、@ITのサイトは住所を変更しなくてもボタンを押すたびに次々増えていきました。
現象に統一性がないのがアレですが、IEもしくはPC環境の問題も絡んで面倒なことになりそうな
気がしてきました。;;
(IEの設定は持ち帰りましたので、この後調べます。)

ちなみに自PC起動直後に試してみたところ、両サイトとも tmpが10個前後まで増えたあと、
急に2、3個に減りました。(しばらく待ってもゼロ個になることはありません)
現象が変わってます。ん〜〜、よくわかりません。
コンピュータなんだから、毎回同じ動きしてほしいものです。w

取り急ぎ報告まで。

543:523
09/09/15 22:49:45
対処療法ですが、tmpの作成個数を抑える方法が見つかりました。
それはガベージコレクション(以下GC)。
通常は自動にまかせて問題ないし、メモリにしか関係しないと思っていました。
(少なくとも私はメモリを食いつぶされた経験はありません。今回もメモリは十分残っていました。)

私の↑のプログラムで言えば、mWebClient_DownloadStringCompleted(…)の処理の最後に以下を記述します。
GC.Collect();
すると、最新の tmpのみ残りそれ以前のは即時削除されました。

元々問題となっていた、ループ中で通信して数十GBも食いつぶすプログラムでは、10〜15個 tmpが溜まった後
最新以外が一気に消えるという繰り返しになりました。
(こちらも GCは通信処理の末尾に記述)
このプログラムの処理をもう少し詳しく書くと、
(1) メインの処理は、0.5秒間隔のTimerで常にある処理をしている。
(2) 上記処理を行いながら、約10秒ごとに非同期でファイルを取得する。← DownloadStringAsync
のようなことをしています。
この場合は、(2)で毎回GCを行っても、必ずしも削除されるわけではないようです。

Bestな解決方法とは言えませんが、とりあえず回避はできるようですので〆ようと思います。
(ここはずっと見てますので、根本解決が見つかれば書き込んでいただければ幸いです。)
協力してくださった皆様、ありがとうございました。m(_ _)m

GCが tmp削除に関連している理由は予想しかできないので書きませんが、この対処方法を見つけた時は、
「何でやねん」と叫んだことを付記しておきます。w

544:デフォルトの名無しさん
09/09/16 00:03:33
Dispose関係じゃね

545:デフォルトの名無しさん
09/09/16 00:38:23
他のSLアプリでも起きてるので環境だと思う。
めちゃくちゃメモリが乗っかっててGCが発生しにくいとか。

546:デフォルトの名無しさん
09/09/16 01:01:05
こういう時は、多少面倒でもWebRequestを使ったほうが良いかもしれないな。

547:デフォルトの名無しさん
09/09/16 01:03:13
> 他のSLアプリでも起きてるので環境だと思う。
全く根拠になってねぇ

548:デフォルトの名無しさん
09/09/16 03:30:50
>>547
ごめん。言い直すよ。


他のSLアプリでも起きてるので環境だと思う。根拠はない。

549:デフォルトの名無しさん
09/09/16 06:43:07
他のSLアプリも馬鹿が作ってたらその理屈は通らないだろw

550:デフォルトの名無しさん
09/09/16 10:14:31
GCでアンマネージリソースが廃棄されると言われると、
普通の人はファイナライザで廃棄されてるんだなと考える。
そしてリクエスト毎にwebclientをnewし、不要になったものからDisposeしてみることから試すと思う。





やってみてないけど。

551:デフォルトの名無しさん
09/09/16 14:34:47
WebClientがIDisposableを実装していれば、そんな答えはとっくに出てるよ

552:デフォルトの名無しさん
09/09/16 14:57:53
そうか?
wc内部のDisposeが怪しいと思っているならなんとかなるんじゃね?と模索してみたり、突然GCで解決してみるわーという解を出すあたり試してなかったんじゃないの?

確かにsl版には無いな

553:523
09/09/16 22:45:22
> 545
> めちゃくちゃメモリが乗っかっててGCが発生しにくいとか。
もし tmp1ファイル当たり100Byteメモリ消費するとしたら、20GB分のファイルが溜まるまでに
消費するメモリは 100KBにしかならないので、その可能性もありますね。
(他の消費はムシとする)
メモリは1GB程度は空いている状態で実行してました。
(時間経過によるメモリ消費の増加具合はよく覚えていません。タスクマネージャのグラフを
出してましたが、「メモリ減ったな…」と感じるほどには消費されていなかったはず。)

> 546
行き詰ってしまったときはそれを覚悟してました。
しかし、簡単に使える WebClientを捨てがたく、粘ってみた次第です。w

> 550,552
Disposeの件は、書かれているように Silverlightには無いのです。
無いものは試せません。w
また、リクエスト毎newは試したと最初に書いてあります。

自身でSL版には無いと書かれているのに、552の2行目は何を試すべきだったと書いてあるのか
ちょっとよくわかりません。

554:デフォルトの名無しさん
09/09/17 00:30:02
まあ、後出しなら何とでも言えが、それなのに的外れと。w

555:523
09/09/17 00:31:34


556:デフォルトの名無しさん
09/09/17 00:48:11
>>553
GCに頼るよりかは自作するかcodeplex探索するほうがはるかに適切だろ

557:デフォルトの名無しさん
09/09/17 15:07:15
点の数が500ぐらいのpolylineを20本ぐらい表示させてマウスの動きにあわせてPOINTCOLLECTIONを設定し直すだけでもっさもっさなんですが、何かやり方が根本的に違うんでしょうか?
ちなみにcanvasにaddしてます。

558:デフォルトの名無しさん
09/09/17 21:21:23
多分限界だと思う。今の所Flashに毛が生えた程度の速度しか出ないと俺は思ってる。
Silverlight4に期待したい。

559:デフォルトの名無しさん
09/09/17 21:28:35
WriteableBitmapに描くようにしてみたら

560:デフォルトの名無しさん
09/09/17 21:38:31
てか、描画周りはFlash速いよ。
速い書き方を知ってる人が書けばの話だけど。


561:デフォルトの名無しさん
09/09/17 21:56:30
PolyLineではなく、PolyLineSegmentを使ってみては?

562:デフォルトの名無しさん
09/09/17 22:03:57
WritableBitmapはピクセル操作はできても書けないんじゃなかったっけ?
自前でGraphicsAPI作ればいいのか。




・・・orz

563:デフォルトの名無しさん
09/09/17 22:06:24
Renderメソッドで描けるよ

もちろん自前でピクセルで描けるなら一番速いだろうが

564:デフォルトの名無しさん
09/09/17 22:53:35
MediaElementを使って、wmvやmp3を読み込んで再生したいです。
そもそも読み込みがうまくいっていないようなのですが、どこがおかしいのでしょうか?
どうかよろしくお願いします。

public class Test : Application
{
Canvas canvas = new Canvas();
MediaElement sound = new MediaElement();
private String url = "pattern02.wmv";

public Test()
{
RootVisual = canvas;
init();
}

public void init()
{
sound.Loaded += new RoutedEventHandler(mInit);
}

public void mInit(object sender,RoutedEventArgs e)
{
sound.Source = new Uri(url);
sound.Play();
this.canvas.Children.Add(this.sound);
}
}

565:デフォルトの名無しさん
09/09/17 23:02:01
>>554
やっちゃったかw

566:デフォルトの名無しさん
09/09/17 23:04:14
>>565
Webサイトのプロジェクト作った?
開発用Webサーバ上で動かしてる?
読み込むファイルはそのWebサイトプロジェクトのClientBinフォルダの中に入れた?

567:デフォルトの名無しさん
09/09/17 23:07:31
>>566
レスありがとうございます。
wmvは、C#のコードと同じフォルダに入れました。
Webサイトのプロジェクトは作っていませんorz
Web上で動かしても、wmvの読み込みを開始しようとすると、他のコンポーネントが消えて
真っ白になっちゃうんですよね。


568:デフォルトの名無しさん
09/09/17 23:31:45
>>564
sound.Loadedの先でSourceを設定してるのが悪いかと。
読み込むファイルの設定を、読み込みが完了したときに呼ばれるとこでしたら駄目でしょ。

569:デフォルトの名無しさん
09/09/17 23:48:46
>>568さん
レスありがとうございます。ご指摘のとおり、Sourceの設定をsound.Loadedの前に持ってきました。
しかし今度はデバッグ中に、UriFormatException はユーザーコードによってハンドルされませんでした。
「無効なURI: URIの形式を決定できませんでした。」というエラーがでます。
C#と同じディレクトリにwmvファイルを持ってきているのですが、URIの指定がまずいのでしょうか?
ファイルの置き場所が悪いのですか?

public class Test : Application
{
Canvas canvas = new Canvas();
MediaElement sound = new MediaElement();
private String url = "pattern02.wmv";

public Test()
{
RootVisual = canvas;
init();
}

public void init()
{
sound.Source = new Uri(url); //sound.Sourceをこっちに移しました
sound.Loaded += new RoutedEventHandler(mInit);
}

public void mInit(object sender,RoutedEventArgs e)
{
                   //sound.Sourceは、ここにあった
sound.Play();
this.canvas.Children.Add(this.sound);
}
}

570:デフォルトの名無しさん
09/09/18 00:35:03
今度はLoadedイベントハンドラの追加より前でSource入れてるし。
Silverlight以前にプログラミングの基礎をしっかりやった方が良いのでは・・・

571:デフォルトの名無しさん
09/09/18 00:37:35
>「無効なURI: URIの形式を決定できませんでした。」というエラーがでます。
new Uri(url, UriKind.Relative);

572:571
09/09/18 00:39:37
つーかこれ、わざわざCanvasとか作ってるとこみるとxaml無でコードのみでやってんの?

573:デフォルトの名無しさん
09/09/18 00:54:56
>>560
まじ?点の数が500ぐらいのpolylineを20本いけちゃう?
そしたら即SilverlightからFlashに乗り換える。

574:デフォルトの名無しさん
09/09/18 07:32:52
>561
後で試してみます(=゚ω゚)ノ

575:デフォルトの名無しさん
09/09/18 09:02:20
>>573
環境によるだろ

576:デフォルトの名無しさん
09/09/18 12:37:06
それをいったらいけちゃうの定義も曖昧だろw
小さい言葉遊びは置いといて、んじゃあFlashでこれは描画速い!
っていうサイトない?Silverlightでコレはムリだろ、みたいな。

577:デフォルトの名無しさん
09/09/18 12:39:34
確かFlashだとポリラインてmoveTo、LineToの繰り返しで引くんだよね?
さすがにCanvasにaddするよりは速いだろうけど、
WritableBitmap.Renderより速いかはわからない。
Flashでも高速描画したいときはBitmapData.drawってやるようだし、
大して変わらない可能性もあるかと。

578:デフォルトの名無しさん
09/09/18 15:20:09
つーか、とっととDrawContextとか実装しておくれよ…


579:デフォルトの名無しさん
09/09/18 18:16:47
あれ?WriteableBitmap.Pixels でピクセルバッファに直接アクセスできるけど、そういう話じゃない?
SetPixel、GetPixel なんかも簡単に作れるし、DDA で Line するのも難しくない。
つか、「WriteableBitmap SetPixel Line」 でググるとすぐにサンプルが見つかるけど。

580:デフォルトの名無しさん
09/09/18 18:31:54
線が毎フレーム動いてるようならWritableBitmap.Renderでは速くならないと思うし、
動かない線をキャッシュするならBitmapCacheだけで十分じゃないかな?

581:デフォルトの名無しさん
09/09/18 18:54:41
>>578
WPFのDrawingContextで毎フレーム更新したら糞遅いよ
どっかでMSの中の人が「最も効率の悪い方法」とコメントしてた記憶がある

582:デフォルトの名無しさん
09/09/18 20:41:14
Json文字列をDataGridに入れるソースなのですが、もうすこしサッパリならないでしょうか?
わざわざjoからjaを取り出さなくてもいい方法とか、わざわざenumを作らなくてもいい方法とか

あれば教えてください。
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
string json = "{'title':'Hello!', 'array':[{'id':1, 'name':'aaa'}, {'id':2, 'name':'bbb'}, {'id':3, 'name':'ccc'}]}";
JsonObject jo = (JsonObject)JsonValue.Parse(json);
JsonArray ja = (JsonArray)jo["array"];
IEnumerable<test> enum = from obj in ja
select new test
{
ID = (int)obj["id"],
NAME = (string)obj["name"]
};

mygrid.ItemsSource = enum;

}
}
public class test
{
public int ID {get; set;}
public string NAME { get; set; }
}


583:デフォルトの名無しさん
09/09/18 20:41:52
凄い質問スレな雰囲気。

584:デフォルトの名無しさん
09/09/18 21:36:14
まあいいんじゃねえの
有用なドキュメントもないし

俺もSilverlight用アップローダでも作って支援しようかなあ

585:デフォルトの名無しさん
09/09/18 22:18:09
>>576
言葉遊びとかそういう問題じゃないだろこれは

586:デフォルトの名無しさん
09/09/18 22:25:56
json扱うならDLR系の言語使ったほうが楽だろうなー

587:デフォルトの名無しさん
09/09/18 23:58:20
>581
そなのか(´・ω・`)
毎フレームでShapeを削除/追加するよりはましかと思ったんだけど・・・
軽い描画命令が欲しいお(´;ω;`)ウッ…
株式チャートを作りたいんだお・・・

588:デフォルトの名無しさん
09/09/19 01:11:52
自作するより持ってきたほうが楽な気が。

589:デフォルトの名無しさん
09/09/19 01:17:34
細かい機能で不満が出るかもしれないけど、まずは置いておいて、
全体をまず作りこんでからでもいいと思いますし。

一例
visifire
URLリンク(visifire.com)
下の「Gallery」からサンプルが見れます。

590:デフォルトの名無しさん
09/09/19 04:39:47
シルバーライト3で Service参照 を設定しプログラムしたときに
IISのサイトのバインドが2つ以上あるとエラーで実行できないのですが
これの回避方法はありませんか?

Service の endpoint は正しく設定してあります。

例 IISバインド
 www.サイト名.co.jp
 www2.サイト名.co.jp


591:デフォルトの名無しさん
09/09/19 07:57:41
>504
ありがとう。
IEじゃヤフ、GYAO見れるんだが火狐で見れないのが不思議だった。
インストールされているらしいのに。

TEMPディレクトリか・・・・
気がつかなかった。
だいたいtmpなんてC:直下に置いておくものだろ。
それも奥の方にいくつもある窓の作法なんかに従うなんて出来ない。

理由が分かって少しすっきりしたw

592:デフォルトの名無しさん
09/09/24 17:19:55
<Grid x:Name="LayoutRoot">
<Grid.RenderTransform>
<ScaleTransform ScaleX="2"></ScaleTransform>
</Grid.RenderTransform>
<Rectangle Fill="Blue" Stroke="Red" StrokeThickness="3" />
</Grid>

ScaleTransformでRectangleを横方向に拡大しているXAMLです。

拡大後のRectangleの幅を取得したいのですが、ActualWidth や RenderSize.Width では
元々の幅しか取得出来ません、どうにか取得する方法は無いでしょうか?


593:デフォルトの名無しさん
09/09/25 01:30:01
2倍すればいいんとちゃうの?

594:デフォルトの名無しさん
09/09/25 02:08:58
Layoutの方を使う

595:デフォルトの名無しさん
09/09/25 20:06:37
こっちに張っていいのかな?
Microsoft Expression Encoder 3
URLリンク(www.microsoft.com)

596:デフォルトの名無しさん
09/09/27 04:33:52
初心者ですまん。
WPFってWebアプリも作れるよね?

じゃあSilverLightの違いって何?

SilverLightには4M制限があり、
その為、WPFの機能縮小版であると言うところまでは調べれたんだけど・・・。

597:デフォルトの名無しさん
09/09/27 07:01:42
WPFは.NET Frameworkが要るのじゃまいか

598:デフォルトの名無しさん
09/09/27 08:59:18
WPFの場合は、WPFで作った画面が一応ブラウザーの画面にひっついて動いてますよレベルで実質ほとんどWPFアプリが動いてるのと変わらないんじゃ?
たとえばクライアントにWPF入ってないといけないとか、サンドボックスも減ったくれもないとか。
ほとんどデプロイの一手段としての役割しかないんじゃ。
アーキテクチャからの適当な予測なのでおお外れしてたらすまん。

599:デフォルトの名無しさん
09/09/27 11:09:32
Macで動くとか
動画のストリーミング再生に強いとか

600:デフォルトの名無しさん
09/09/27 15:05:08
最もWindows寄りなのが Winアプリ。
最もネット寄りなのが Silverlight。
WPFはその間だと思ってる。

ある意味万能だけど、どちらかに寄った実装をしようとしたときに、
対応が難しい(できない)ので、もっぱら作るのはWinアプリか
Silverlightアプリ。

601:デフォルトの名無しさん
09/09/27 15:20:42
winアプリにwpfコントロールを使うってことでいんじゃ。

602:デフォルトの名無しさん
09/09/27 15:22:00
WPFは思いっきりWindows寄りというかグラボ寄り
設計がWinFormsとは全然違っててゲームみたいなスタイル

603:596
09/09/27 18:21:55
皆さん、ありがとうございました!
クライアントがWinのみを想定した業務用アプリの場合、
どっちを使用したら良いのか悩んでました。

604:デフォルトの名無しさん
09/09/28 00:26:41
WPFってsilverlightと違って埋め込めなかったと思う。
ページ丸ごとxbapになるはず


605:デフォルトの名無しさん
09/09/28 03:49:40
IntelがLinux OSのMoblinにSilverlightを移植中
URLリンク(www.infoq.com)

606:デフォルトの名無しさん
09/09/28 11:11:57
Intelが!?

607:デフォルトの名無しさん
09/09/28 11:32:36
>>605
> Silverlightのアプリケーションが.NETランタイム上で動くのか、
> それともMoblinのネイティブコード上へ移植されるのかもわからないが、
> 後者になる可能性が高い。

原文のほうで、恐らく Silverlight runtimeのことをSilverlight applicationsと書いて
しまっているせいだろうけど、そのせいで変な記事になっちゃってるね。

608:デフォルトの名無しさん
09/09/28 11:33:30
要するにMoonlightのようなもんだろう?

609:デフォルトの名無しさん
09/09/28 11:45:45
>>607
ちょっとSilverlightを誤解してるんだろうなそれ
ネイティブコードで書かれたCLRの上にマネージコードのレイヤを載せて
その上でマネージコードのアプリケーションを動かす以外にありえない

610:デフォルトの名無しさん
09/09/28 19:59:12
tblみたいなもん?

611:デフォルトの名無しさん
09/09/29 16:09:59
CanvasにRectangleを500ぐらい追加して、MouseMoveでCanvas.SetLeft等を使って表示位置を動かすとします。
Transformは使わないものとします。
Mouseを動かした時にCPU負荷があがるけれどそれなりのFrameRateで描画出来るんですが、RectangleがCanvasの外に出る時などに固まるような気がします。
これは何故でしょう?
またCanvasで子が矩形に含まれるかどうかの判定を省いたりなど処理速度をあげる方法はありますか?

612:デフォルトの名無しさん
09/09/29 17:07:48
もしかして、CaputureMouseやってなかったり?

613:デフォルトの名無しさん
09/09/29 17:29:36
いやマウスはCanvasの矩形の中で動かすんだが、中のRectangleが矩形からはみ出そうになった時に引っかかってるっぽい気が。

614:デフォルトの名無しさん
09/09/29 17:37:36
なので、RectangleにMouseCaptureしないと。

615:デフォルトの名無しさん
09/09/29 18:59:53
Silverlightで作成された業務アプリ?見つけた。
ここの株価チャートがSilverlightで作られてる
オーソドックスなWinアプリみたいな作りだけど

URLリンク(wincity.jp)

616:デフォルトの名無しさん
09/09/29 21:19:59
>614
ん?よくわからん・・・
Rectangleは描画するのに必要なだけでイベント処理は全部Canvasのほうですよ?

617:デフォルトの名無しさん
09/09/29 21:26:22
マウスでRectangleをD&Dして動かすというのではないの?

618:デフォルトの名無しさん
09/09/29 21:39:55
Canvas上でMouseMoveをひろって500個のRectangleの位置を動かしてるだけです(´・ω・`)
つたない日本語ですまん。

619:デフォルトの名無しさん
09/09/29 21:48:45
Rectangle使わないでRenderTargetBitmapに直接書き込んだら?
矩形の描画だけなら簡単だろ

620:デフォルトの名無しさん
09/09/29 21:50:01
WriteableBitmapの間違い

621:デフォルトの名無しさん
09/09/29 21:58:21
>619
矩形だけでない他の描画要素を含むグラフとかチャートコントロール的なカスタムコントロールを作る必要があるんで、自前描画も一瞬考えたんだが出来れば避けたい・・・
最悪その線も考えてるんですが・・・


622:デフォルトの名無しさん
09/09/29 22:00:55
グラフの中身をアニメーションさせたりしないで全体をまとめて動かすだけだったら
WriteableBitmap.Renderでキャッシュしとけばいい

623:611
09/09/29 22:29:04
すまん、全体をまとめて動かすだけではないw
条件を後出しみたいになってきたのでまとめてざっくり書くと

・ある程度の頻度で変わるデータを元に矩形や楕円、円、折れ線、Textを含めていろいろな描画要素を使って描画をしたい。操作によっていくつかの描画要素の位置やサイズなどが変更される可能性がある。
・縦軸や横軸のMin,Maxが操作によって変わったりする。単純にScaleTransformやTranslateTransform的なことで対応できない場合が多く存在する。
・各描画要素に対するマウスイベントなどはその上のコンテナなどで処理するため単純に描画が早くできればいい。

超ざっくりいうとGrahics.DrawRectangleとかDrawLine,FillEllipseなどの描画が高速にできればいい。

624:デフォルトの名無しさん
09/09/29 22:57:30
ふと新しいLet's noteの仕様を見ていたら
導入済みソフトウェアのところにSilverlightの文字が。
URLリンク(club.panasonic.jp)

MSが入れさせているのかな?
なにはともあれ、デフォルトで入って普及していくのはうれしいね。

625:デフォルトの名無しさん
09/09/30 00:12:48
ようやく秋モデルが発表か。
先週はどこにも情報がなかったわ。

626:デフォルトの名無しさん
09/09/30 00:15:45
冬モデルかw

627:デフォルトの名無しさん
09/09/30 06:31:50
いまさらレッツって誰が買うの?


628:デフォルトの名無しさん
09/09/30 06:53:44
>>627
君は知らないんだろうがLet's NoteはノートPCじゃ売れ線なんだよ。
上から目線がかっこいいと思ってたらそれは間違いだよ。
ただの痛い人w

629:デフォルトの名無しさん
09/09/30 06:57:08
前ならいざ知らず、今だとレッツの利点とかもだいぶ薄れてないか?
特に高すぎ。

630:デフォルトの名無しさん
09/09/30 07:36:01
液晶がクズすぎる。
Rのファンレスまでが華。昨今のは買う価値ゼロ。

631:デフォルトの名無しさん
09/09/30 09:10:57
モノは悪いが売れ筋って何ら矛盾はないだろ

632:デフォルトの名無しさん
09/09/30 12:26:31
個人のPC覗くと意外に高い割合でSilverlight入ってるよなあ

633:デフォルトの名無しさん
09/09/30 22:09:35
DataGridの行ヘッダって、
1行目:AAA
2行目:BBB
って出来たりしますか?

めっちゃ悩んでます・・・・。

634:デフォルトの名無しさん
09/09/30 22:14:07
テンプレート作ればどうにでもなる
URLリンク(msdn.microsoft.com)

635:デフォルトの名無しさん
09/09/30 22:16:03
間違えた
>>634も参考になるけどこっち
URLリンク(msdn.microsoft.com)

636:デフォルトの名無しさん
09/09/30 22:35:26
さんくす。
この書き込みが終わったら見てみます。

やー、しかし全然わからんです。
次のプロジェクトでひょっとしたらSilverLight使うかもしれないんで調査してるんですが、
まとまった資料はMSDNぐらいしかネットには転がってないみたいですね。

WPF未経験でSLやろうとしてるんですが、正直しんどい。
SL使わない可能性もあるので、本買うのもシャクだし・・・(しかも2の本しかないし)。
でもXAMLいまいちピンとこないや。
本買うしかないのかー。


637:デフォルトの名無しさん
09/09/30 23:58:32
>>636
WPF未経験の俺が3週間くらいで使えたから頑張れ。
英語の資料とサンプルコードは腐るほど落ちてるから楽。
ビデオ解説も分かりやすい。

一応日本語のチュートリアルもある
URLリンク(silverlight.net)

638:デフォルトの名無しさん
09/10/01 00:08:17
本ぐらい時給換算したら安いものだろ

639:636
09/10/01 02:16:33
>>637
ありがとうございます!
こちらも見てみます!

>>638
何がお勧めですかね?
Amazonではどの本も評価低いみたいなので・・・。
XAMLの構文の基礎が1から詳しく載ってる本があれば良いのですけれど。

640:デフォルトの名無しさん
09/10/01 07:32:22
Blend評価版を使って、出てきたXAMLを読めば良い。

641:デフォルトの名無しさん
09/10/01 08:57:50
俺的にはEssential.WPF
でももう洋書とかでもっと良いのでてそうだなー

642:デフォルトの名無しさん
09/10/01 09:06:25
XAMLの理解にはこれっぽちも役に立たないけど「Silverlightで開発するデータ駆動アプリケーション」は良書。
でも翻訳が下手(これはかなり下手な部類じゃないかと思う)で読みづらいのが残念。

643:デフォルトの名無しさん
09/10/01 23:39:51
Winアプリの作成経験が豊富だと、その分頭をやわらかくして挑む必要があると思う。
あまり凝らなければいいけど、ちょっと凝ったことしだすとあっちこっちでゴツンゴツン壁に当たります。

私が一番最初に引っかかったのは、Canvasにコントロール配置するときに、Width、Heightはあるのに、
Left、Topが無かったこと。(Blend未使用)
?が頭の中駆け巡りましたよ。ありえね〜だろと。

今でも何で Canvas.Topと書かないといけないのかは不明です。
Winアプリなら、Top、Leftで親コントロールに対する位置ってことなのに・・・。
同じでいいじゃん。

644:デフォルトの名無しさん
09/10/02 00:39:38
Gridに配置する時、Top,Leftなんてプロパティは要りません

645:デフォルトの名無しさん
09/10/02 01:03:26
値が無効になればいいだけです。
例えばテキストボックスの ScrollBarsの設定が Multilineの値によって
有効無効になるように。

646:デフォルトの名無しさん
09/10/02 01:06:44
>>644
特定の条件のときに不要になるプロパティは元から不要?
頭おかしいんじゃねーのか?

647:デフォルトの名無しさん
09/10/02 01:07:59
添付プロパティの話?コンテナによって子に追加されるプロパティ
だからだよ。

>>644 がいっているように「子を座標指定するコンテナ」な Canvas
だから Top, Left が必要なんであって Grid なら Row, Column、
DockPanel なら Dock とコンテナによって子に必要なプロパティが
変わる。つまりコンテナが A だったら子にこのプロパティが必要と
いった子に持たすべきだけどその内容はコンテナの種類に依存する
プロパティ。

から Container.PropertyName で子に指定できるコンテナ依存な
プロパティを作っただけ。

648:デフォルトの名無しさん
09/10/02 01:23:01
新しいPanelを作って、それ専用のプロパティが必要になる場合もあるしね。

649:デフォルトの名無しさん
09/10/02 01:27:12
それって実装はどうなってるん?
文字列キーでのPropertyBagのようなもの?


650:デフォルトの名無しさん
09/10/02 02:01:22
文字通り添付プロパティを実装してみれば想像つくだろ。
スニペット(C#)は propa で出るから読んでみれ。

>>646
なんという態度。

651:デフォルトの名無しさん
09/10/02 09:17:17
>650
やはりそういう実装か・・・
コンテナ側が持つ方がスマートそうだが。添付プロパティのやり方はどうも好きになれん。

652:デフォルトの名無しさん
09/10/02 10:19:14
>コンテナ側が持つ方がスマート
コードで書く場合はね。
多分XAMLで書く都合上の導入なんじゃねぇかなぁ>添付プロパティ

653:デフォルトの名無しさん
09/10/02 10:25:41
まぁ、回りくどい感じはするね

654:デフォルトの名無しさん
09/10/02 11:44:44
2Dゲームの移動処理を実装する場合、
Canvas.LeftProperty(TopProperty)をSetValueするのと、
オブジェクト毎にTranslateTransform作っておいて、
それのXとYいじるのではどちらがいいんだろう?

655:デフォルトの名無しさん
09/10/02 12:00:26
Silverlightと通常の.Net製Windowsアプリで画面更新などを伴わない内部処理での
処理速度を比較してみたら4倍も差が出るんだけど、こんなもん?

こんなもんだとしても、なんでこんなに差が出るんだろう?

656:デフォルトの名無しさん
09/10/02 13:02:57
内部処理なんていう何とでも取れるあいまいな書き方をしてる時点で
マトモな議論する気無いだろお前。

657:デフォルトの名無しさん
09/10/02 22:07:14
>>654
MatrixTransform一本でいいじゃん
平行移動も回転も拡大縮小も統一して扱える

658:デフォルトの名無しさん
09/10/03 07:51:29
>>654
オレだったらベンチとってみて、速い方使う。
リアルタイム系&重いゲームなら。
↑はとにかく速度優先で作っていかないと、時間的な壁に
当たったとたんに面倒なことになる。

659:デフォルトの名無しさん
09/10/03 09:58:37
>>657
ほう、そんなものもあったのか。
ちょっと試してみる。

>>658
とりあえず400x300のCanvas内で幅、高さ20のEllipse2000個くらい移動を試してみたら、
SetValue 13FPS前後
TranslateTransform 16FPS前後
という結果に。
微妙にTransform使った方が早かった。

660:デフォルトの名無しさん
09/10/03 15:18:21
MatrixTransform使ったら10FPS以下に落ちた。
回転とか使わないなら、TranslateTransformでいいかもしらん。

661:デフォルトの名無しさん
09/10/03 15:21:31
>>651
遅レスやけど…添付プロパティはことさら複雑っていうわけで
はない。依存プロパティのほんのおまけみたいなものだから。
依存プロパティは同期機構でどうせまとめたほうがいいものやし
もうちょい広い(UI専用とかそんなんではない)概念やしな。

というかコンテナに持たす、コンテナが特化することの中で
よくある「子ごとに属性をつける」のを汎化したのが添付プロパティ
であってやね、概念的にはコンテナが持っているようなもの。
別立て(別Dictionary)にするとまた同期がどうとか階層構造が
破壊される、増えるとか色々複雑化したり切り離せない面が
あるわけでやね・・・。

この辺の話をしだすと System.ComponentModel ではどうだった
とかややこしくなっていくので以下略

662:655
09/10/03 20:25:12
DataContractJsonSerializerがSilverlightだと糞遅い。
たかが2万件、500KB程度のデータを逆シリアライズするのに5秒かかるとか
ちょっと使い物にならん。C#だと1秒で返ってくるというのに。

JsonObject使えば倍程度には速くなるけど、それでも遅い。


663:デフォルトの名無しさん
09/10/03 20:27:37
ブラウザで差がでないもんなの?

664:655
09/10/03 20:46:48
>>662
> C#だと1秒で返ってくるというのに。

この表現変だわw
通常の(.NET Framework for Silverlightでない).NET Frameworkだと1秒で返ってくる。
ややこしい。

665:デフォルトの名無しさん
09/10/04 00:25:47
>661
んー歴史は知らんがあの実装は型付きできれいに実装が出来ないんでKeyValueにしてたたっこんじゃいましたっていうことだとしかおもえん。

666:デフォルトの名無しさん
09/10/04 10:26:11
バインディングの都合だろ
プロパティのハンドルみたいなものがあったほうが便利だから

667:デフォルトの名無しさん
09/10/06 18:13:47
【ネット】検索市場で「Bing」のシェアが初めて減少、Baiduの伸長が影響か[09/10/05]
スレリンク(bizplus板)


668:デフォルトの名無しさん
09/10/06 18:19:24
コピペ君って馬鹿だな

669:デフォルトの名無しさん
09/10/06 18:24:19
>「Flash vs. HTML5」という構図がはっきりと見え始めたぞ、と
>URLリンク(satoshi.blogs.com)
>そんなこんなで、パソコン側でこれほど有利な立場にありながら、
>スマートフォンの世界では土俵際に追いつめられた感のあるAdobe。
>WebKitという戦略兵器を軸に手をがっちりと手を組んだGoogleとApple。
>思いっきり出遅れてしまったがOS・ブラウザーのシェアと資金力だけは誰にも負けないMicrosoft。
>この戦いは目が離せない。

670:デフォルトの名無しさん
09/10/06 18:25:51
>Windows Mobileに「全力投球」を決めたMicrosoftの厳しい戦い
URLリンク(satoshi.blogs.com)
1. OSが時代遅れなこと
2. ブラウザーが時代遅れ
3. 何をするのにも時間がかかること
4. ビジネスモデルが違いすぎること
5. Google Android

671:デフォルトの名無しさん
09/10/06 20:44:56
他スレで既出。ネタが古すぎだろw

672:デフォルトの名無しさん
09/10/07 12:32:41
モバイル用SLってH264のハードウェア再生支援利用できるんかな

673:デフォルトの名無しさん
09/10/08 17:00:12
つ [参考にドゾ]

>現実に最も使える.NETのバージョンはどれ?
URLリンク(www.atmarkit.co.jp)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
・.NET 1.0 → 絶対使わない方がいい
・.NET 1.1 → 使わない方がいい
・.NET 2.0 → 現時点ではベスト
・.NET 3.0 → 特別な理由があれば使ってもよい
・.NET 3.5 → 使ってもよい
・.NET 4.0 → 数年後にはベストになるかも

・Visual Studio .NET 2002 → 絶対使わない方がいい
・Visual Studio .NET 2003 → 使わない方がいい
・Visual Studio 2005 → 使ってもよい
・Visual Studio 2008 → 現時点ではベスト
・Visual Studio 2010 → 近い将来、ベストになるかも


674:デフォルトの名無しさん
09/10/09 01:19:20
今更LINQなしで書いてられねぇ

675:デフォルトの名無しさん
09/10/09 01:40:34
3.5がベストだよな

676:デフォルトの名無しさん
09/10/09 02:03:56
少なくともラムダ式無しなんてちょっと耐えがたい

677:デフォルトの名無しさん
09/10/09 02:32:06
いや、ラムダ式関係ないから

678:デフォルトの名無しさん
09/10/09 02:38:44
ラムダ式関係あるだろ

679:デフォルトの名無しさん
09/10/09 02:47:48
いや、ラムダ式はC#3.0の機能だから.NET 2.0ターゲットでも使える。つまり関係ない
Func<>やAction<>が使いたかったら自分で用意する必要があるのと、式木(Expression<>)は使えないので、ラムダ式の全ての機能が使えるってわけじゃないけどね。

680:デフォルトの名無しさん
09/10/09 06:54:01
関係あるじゃない・・・。
なんでないっていいきるんだ。


681:デフォルトの名無しさん
09/10/09 08:10:54
Func相当なもの自前で実装して(というかでる前から相当するもの作ってた)、高階関数としてラムダ式多用してるが3.5はいらんな。
LINQもだれかがWhereとか2.0用に実装してるのあったのでそれつかってる。

682:デフォルトの名無しさん
09/10/09 08:44:16
これとSLの関係ってどうよ?

>Google WaveがHTML5ブラウザーへのシフトを加速する
>URLリンク(satoshi.blogs.com)
IEが他のブラウザー(Safari/Firefox/Chrome/Opera)と比べてHTML5やCSS3のサポートに関して大きく遅れている
そもそもIEの進化のスピードが(というかMicrosoftから出る製品すべての進化のスピードが)遅すぎる
にもかかわらずIEのシェアが大きいため、業界全体の足を引っ張っている


683:デフォルトの名無しさん
09/10/09 08:49:48
文句あるなら使わなきゃいいんじゃね(´・ω・`)

684:デフォルトの名無しさん
09/10/09 09:16:46
>>682
なんか、空気的に、
MS技術 VS その他勢 の一環になってる気がする。
MS技術推進派で HTML5 支持してる人見たことない。
HTML+JavaScriptでリッチなウェブページ構築とかマジ勘弁して欲しい。

685:デフォルトの名無しさん
09/10/09 09:36:13
>>682
Linuxを筆頭にした勢力って、ノンプロ学生技術者や学者たちの実験台じゃねーかw
人柱と違って民間企業のMSは成熟見込みのある技術だけをだな(ry

686:デフォルトの名無しさん
09/10/09 09:48:27
Silverlight VS HTML5 VS Flashだろ。

開発者的にはSilverlightでやりたいな・・・

687:デフォルトの名無しさん
09/10/09 09:51:04
>>684
MSとgoogleがyahooに共闘を仕掛ける構図

688:デフォルトの名無しさん
09/10/09 10:40:55
>>682
そもそもHTML5ってまだ正式に決まってないものだし、それに対応してないからって
文句を言うのもおかしいと思うけどね。

個人的にはウェブアプリ云々よりも、今は何でもかんでもdivを使っている部分に
articleやnavで明確に意味を持たせられる点に期待しているので、さっさとHTML5が
普及して欲しいが。

689:デフォルトの名無しさん
09/10/09 12:17:27
お前ら釣られてスレ違いの話するなよ

690:デフォルトの名無しさん
09/10/09 12:53:30
質問させて下さい。

<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="0.75*"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="0">
<TextBlock x:Name="text_a" Margin="5"/>
<TextBlock x:Name="text_b" Margin="5"/>
</StackPanel>
<TextBlock x:Name="text_c" Margin="5"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>

このXAMLのtext_a, text_b, text_cにコードからアクセスするにはどうしたらいいんでしょうか?

691:デフォルトの名無しさん
09/10/09 20:54:49
無理っていうか使い方が間違ってる
バインディングを使う

692:デフォルトの名無しさん
09/10/10 00:46:36
Linqって微妙じゃね?
どのぐらいまで最適化や柔軟性を求めるというのかな。
やっぱSQLとプログラミング言語は別だよ


693:デフォルトの名無しさん
09/10/10 00:54:34
LINQ to Objectsはコレクション操作の手先の道具として普通に使うだろ
特にSilverlightでは配列やリストの機能でLINQと被ってるものは軒並み削られてるから使わざるを得ない

694:デフォルトの名無しさん
09/10/10 01:04:18
LINQ to Objectsまだ普通ではないだろうよ。
MSは昔からデータアクセス系の技術をいろいろ開発してるけど、
SQL以上の柔軟性のあるものを作れていないと思う。

695:デフォルトの名無しさん
09/10/10 01:05:37
まあ、データソースによらず共通のインターフェースでアクセスできるところとか、
言語に組み込まれてるからインテリセンスのサポート受けられるとことか、
LINQ の意義はでかいよ。

696:デフォルトの名無しさん
09/10/10 01:07:14
生産性を求めるとLinqは良いソリューションなのかもね。
効率を求めるとまだまだな印象ではあるんだよなぁ

697:デフォルトの名無しさん
09/10/10 01:08:00
あ、効率=実行効率ね

698:デフォルトの名無しさん
09/10/10 02:00:51
LINQで書いて遅いならプロファイル取ってみて、実際にボトルネックになってる個所を改善すればいい。
LINQは個別スレがあるんで、続きはそっちへどうぞ

699:デフォルトの名無しさん
09/10/10 02:38:54
実行効率でも Expression Tree のポテンシャルが
普通に高いと考えられて色々試されてるし。

生まれて大してたってないのを忘れちゃいけない

700:デフォルトの名無しさん
09/10/10 02:40:20
リンクの冒険

701:デフォルトの名無しさん
09/10/10 04:08:55
>>700
ちょっとおまえ体育館裏にこい

702:デフォルトの名無しさん
09/10/10 10:09:56
1スレに1回は出てるけど、少なくとも LINQ to Object の実行効率は
foreach とか直接書くのに比べて悪くても10%くらいしか効率落ちない。

その程度のロスなら、クリティカルになってるとこ以外は放置でOK。
最初は気にせず LINQ で書いて、プロファイリングしてから1部書きなおすだけ。

703:デフォルトの名無しさん
09/10/10 10:22:09
var names = items.Where(item => item.IsEnabled).Select(item => item.Name).ToArray();
クエリ式は大袈裟かもしれないけどこういうのは積極的に使うべきだろ
ループで回すより遥かに短いし一目で意図がわかる

704:デフォルトの名無しさん
09/10/10 10:33:14
やっぱりこういうのはインテンショナルプログラミングとかで複数言語をシームレスに共存出来るべきだよな-
LINQよくできてるけど無理にC#に落としてる感も。

705:デフォルトの名無しさん
09/10/10 10:36:17
LINQ で重要なのは標準クエリ演算子(メソッド形式の方)を決めたことだと思うし、
ちゃんと C# 以外も意識してるでしょ。


706:デフォルトの名無しさん
09/10/10 14:19:20
C# 3.0以降の記述力はかなり素晴らしいと思うね。
書いているときの気分の良さは、日本生まれで流行のRなんとかに全然負けてない。

707:デフォルトの名無しさん
09/10/10 15:17:31
別に俺はC++でもActionScriptでも気分いいけどね

708:デフォルトの名無しさん
09/10/10 15:29:32
>>707
ないない、それはないw

709:デフォルトの名無しさん
09/10/10 17:07:24
>>703
おれにはわからん
だれか解説してください

710:デフォルトの名無しさん
09/10/10 17:17:03
>>709
var list = new List<string>();
foreach (var it in items){
if (item.IsEnabled) list.Add(it.Name);
}
var names = list.ToArray();


711:デフォルトの名無しさん
09/10/10 17:23:21
>>710
惚れた

item => item.IsEnabled や item => item.Name
って
item.IsEnabled や item.Name
だけじゃだめなもんかね
こんな書き方する理由はなーに?

712:デフォルトの名無しさん
09/10/10 17:38:05
駄目
後者の書き方では意味が全く変わってしまう

713:デフォルトの名無しさん
09/10/10 17:45:33
>>711
item=>を省略する書き方も用意されている
これをLINQ(リンク)と呼ぶ

var names = from item in items where item.IsEnabled select item.Name;

714:デフォルトの名無しさん
09/10/10 17:54:02
クエリ式

715:デフォルトの名無しさん
09/10/10 18:07:25
だからLINQは専用スレがあると(ry
スレリンク(tech板)

>>713
クエリ構文(Query syntax)>>713とメソッド構文(Method syntax)>>703で、どちらもLINQだろ。
"これをLINQ(リンク)と呼ぶ"なんて言うと誤解されるぞw

>>711
ラムダ式について調べるといい

716:デフォルトの名無しさん
09/10/10 19:35:39
ダウンロードしようとサイトへ行くと、アドオンがうんたらこんたらって出てIEが強制終了させられてしまいます
どうしたら良いでしょうか?

717:デフォルトの名無しさん
09/10/10 19:40:34
>>713
馬鹿かおまえは。
両方ともLINQだ。

718:デフォルトの名無しさん
09/10/10 20:04:08
環境も書かずに答えを御所望のようだ
・・・書いたところで必ず答えがでるわけでもないけど。
IEのバージョン古いとか?

719:デフォルトの名無しさん
09/10/10 20:16:19
>>717
お前頭がおかしいんじゃないか?

720:デフォルトの名無しさん
09/10/10 20:25:15
LINQっていうのはコード中にクエリを書けるようにすることに関連して
周辺のライブラリもクエリ式や拡張メソッドやラムダ式などの言語拡張もひっくるめたコンセプトだ
「これがLINQ」なんてものは存在しない

721:デフォルトの名無しさん
09/10/10 20:30:19
スレ違い
LINQスレでやってくれ

722:デフォルトの名無しさん
09/10/10 22:59:17
>>682のURLを見て誰かは分かったので、おまえが言うなよな、と思いつつ
そのブログを見に行ったら、1行目から言い訳しててワロタ。

723:655
09/10/11 15:40:21
ユーザーコントロールもしくはカスタムコントロールをデータバインディング対応にする方法について
解説してあるサイトって無いでしょうか?

ヘルプではとっかかりが無くてさっぱりです。

724:デフォルトの名無しさん
09/10/11 20:42:06
本買え 本

725:デフォルトの名無しさん
09/10/12 02:01:11
MSは.NETの出始めのころにASP.NETのPetShopのような
模範になるようなアプリを作って配るべきだ。

意外とそういうの作りかたとかは参考にしているんだよな・・・


726:デフォルトの名無しさん
09/10/13 02:04:19
データバインディングとか、さっぱりぱり。

727:デフォルトの名無しさん
09/10/13 09:08:20
他のプログラム言語に慣れてると、どうもLINQは何か気持ち悪いな


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4347日前に更新/166 KB
担当:undef