C#, C♯, C#相談室 Part75at TECH
C#, C♯, C#相談室 Part75 - 暇つぶし2ch1:デフォルトの名無しさん
12/09/06 23:11:33.73
前スレ
C#, C♯, C#相談室 Part74
スレリンク(tech板)

Visual Studio 2010 Express
URLリンク(www.microsoft.com)

Visual Studio 2012 Express
URLリンク(www.microsoft.com)

2:デフォルトの名無しさん
12/09/06 23:12:33.71
ふらっとVisual C#,C♯,C#(初心者用) Part96
スレリンク(tech板)

WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part13
スレリンク(tech板)

【VB.NET】LINQ友の会【C#, C♯, C#】
スレリンク(tech板)

C#,C#の宿題片付けます。
スレリンク(tech板)

ASP.NET + Atlas or Ajax について
スレリンク(tech板)

Microsoft Silverlight その9
スレリンク(tech板)

Visual Studio 2010 Part19
スレリンク(tech板)

Visual Studio 2012 Part3
スレリンク(tech板)

C# C# C♯でゲームを作ろう Part1
スレリンク(tech板)

3:デフォルトの名無しさん
12/09/06 23:13:05.09
参考リンク

MSDNライブラリ
URLリンク(msdn.microsoft.com)

@IT Insider.NET
URLリンク(www.atmarkit.co.jp)
Insider.NET 会議室 ディレクトリ
URLリンク(www.atmarkit.co.jp)
MSDN フォーラム
URLリンク(social.msdn.microsoft.com)

pinvoke.net: the interop wiki!
URLリンク(pinvoke.net)
宇宙仮面の C# プログラミング / C# Programming
URLリンク(uchukamen.com)
WisdomSoft C#入門
URLリンク(wisdom.sakura.ne.jp)
WisdomSoft Microsoft .NET入門
URLリンク(wisdom.sakura.ne.jp)
どっとねっとふぁん
URLリンク(dotnetfan.org)
緑のバイク 初めてのC# ~ 覚え書き ~
URLリンク(homepage3.nifty.com)
どぼん!の .NET Tips
URLリンク(dobon.net)

4:デフォルトの名無しさん
12/09/06 23:13:41.30
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。

初歩的な質問はPC初心者板で・・・
URLリンク(pc11.2ch.net)
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
URLリンク(windowsvista.ms)
Windows VistaFAQ
URLリンク(vistafaq.stdo.net)
~インストールから設定・活用まで~ すべてが分かるWindows Vista大百科
URLリンク(journal.mycom.co.jp)

コードの量が多い場合は下記サイトを使うなどしたほうがいいかも。
コードを貼り付けてRun codeのチェックを外し、submitボタンを押すと専用のアドレスが発行されます。

URLリンク(ideone.com)
URLリンク(pastebin.com)

直接貼る場合はhtmlエンコードした方がインデントも残って見やすいです。

URLリンク(kawama.jp)

5:デフォルトの名無しさん
12/09/06 23:16:39.70
テンプレにVS2012のスレとDL先を追加しました。

6:デフォルトの名無しさん
12/09/06 23:54:00.30
otu

7:デフォルトの名無しさん
12/09/07 00:49:28.55
URLリンク(i.microsoft.com)

8:デフォルトの名無しさん
12/09/07 19:10:11.40
.Net Reflector 使って自分の作成した EXEを見たら
びっくりする位簡単に、そして正確に逆アセンブルされてました。。。

必至で作ったソフトが簡単に
ぱくられてしまいます。

何度化ツールでおススメはありますか?

9:デフォルトの名無しさん
12/09/07 19:21:29.35
Dotfuscator
まあお前のソースなんか誰も気にしないよ

10:デフォルトの名無しさん
12/09/07 19:22:44.14
>>8
C++でかけ。

11:デフォルトの名無しさん
12/09/07 19:34:36.20
>>9 >>10

Dotfuscator 使って難読化したけど、最新版のReflector で見たら
綺麗に見える!!!
C#で書いたのをいまさらC++に置き換えるのはきついな。


12:デフォルトの名無しさん
12/09/07 19:36:21.68
ふうーwww

Dotfuscatorのディレクトリの中に難読化後の
EXEが生成されるのねwww
良かったw

最新版のReflector で開いても
意味不明な関数だらけになってるwww

これでソース朴られる心配ねーなwwwwwwww

13:12
12/09/07 19:39:18.22
うーん、読み辛くなってはいるが
読もうと思えば読めるな。。。

あかーん

14:デフォルトの名無しさん
12/09/07 19:51:30.01
いっそ公開しちまえ、すっきりするぞbyQZ

15:デフォルトの名無しさん
12/09/07 19:56:46.30
難読化しても読めるのは俺のスキルが高いからか?

それとも、Reflectorの精度が悪いから?


16:デフォルトの名無しさん
12/09/07 19:57:54.74
元ソースと見比べでもしない限り解読難しいだろ

17:デフォルトの名無しさん
12/09/07 20:03:35.29
↑多分君のスキルの問題。

俺は、難読化しても結構理解出来るんだよね。

世の中に俺レベルの奴も中にはいるから心配。。。

でも、俺レベルの奴はいちいち逆アセンブルなんかしなくても作れるから・・・

18:デフォルトの名無しさん
12/09/07 20:06:04.29
Windowsフォームは難読化すると
メソッド名がバラバラになるから読み辛いけど

ライブラリ(*.dll)はそのまんまです。
DLLは難読化できないの?

19:デフォルトの名無しさん
12/09/07 20:06:53.71
dllにするときに難読化すれば?

20:デフォルトの名無しさん
12/09/07 20:24:30.79
>>17
書いた本人が読めると言っても説得力ないね

21:デフォルトの名無しさん
12/09/07 20:42:49.29
取り敢えず、


逆アセンブルしてソースをパクリたがる奴というのは低レベルが
大半だろうから、別にいいか。



22:デフォルトの名無しさん
12/09/07 20:54:56.95
批評に耐えてきたものが古典として永遠に語り継がれる

23:デフォルトの名無しさん
12/09/07 21:21:03.35
FormLoadイベントで次のコードを実行すると
画面上のTextBox内の文字列が選択された状態となります。
選択したくないのですが、どうすれば良いでしょうか?

string mes = "long message";
txt_message.Text = mes;



24:デフォルトの名無しさん
12/09/07 21:33:21.53
そのコードの後に

txt_message.Select( 0, 0 );

とでも書いとけ

25:デフォルトの名無しさん
12/09/07 21:55:32.63

thank you

26:デフォルトの名無しさん
12/09/07 23:45:13.24
Dotfuscator 使えば、
少なくとも読み辛くなってソースをぱくる位だったら
一から書き直した方が速い!って気にはなるね。


取り敢えず、俺の作成した工数はこれで無駄にはならない。ちゃんちゃん♪


27:デフォルトの名無しさん
12/09/08 01:00:41.01
サーバーサイドに置いておけばプロトコル割られない限りOK
telnetで接続してhelpと打たれてもコマンドを答えてはいけないぞ(BitKeeperはそこからクラックを受けた)

28:デフォルトの名無しさん
12/09/08 08:39:02.57
MVPでViewとPresenterの関係について
・View は、ユーザーからの入力イベントを受け取り、処理を Presenter に委譲します。
・View は、上記以外の目的で Presenter を操作しません。
とあるのですが、例えばView内で直接Presenterのメソッドを呼び出すようなのは依存してしまうのでよくないということでしょうか?
そうなると、Viewはイベントによるやり取りだけすることになると思うのですが、この方が望ましいですか?

29:デフォルトの名無しさん
12/09/08 13:22:09.31
今度WPFでプロジェクトが始まります。
フォームしか使ったことないんですが、WPFでここは押さえておけ!ってところあったらアドバイスお願いします。
あと、フォームと比較してWPFを使うメリット・デメリットってなんでしょうか?
ネットで調べてもフォームと比較したメリット・デメリットを解説してる記事がないんです。

30:デフォルトの名無しさん
12/09/08 16:35:09.60
2chで質問してる時点で・・・

31:デフォルトの名無しさん
12/09/08 17:48:31.46
デメリットはそれだよ
使う人間が少なくて情報がない

32:デフォルトの名無しさん
12/09/08 18:17:44.10
>>29
WPFデメリット
・xaml言語を覚えなければいけない
・コマンドが少ない、トリガーとか面倒、いろんな意味でBlendないと無理
・WPFの方がバンディングが楽だけど、バインディング自体面倒なので使いたくない
・GUI作るのもxamlで手書き&クソ重い
・MVVMを意識しだすと死ぬ
・現状、Winフォームと同等のものが作れない

WPFメリット
・オシャレGUI
・大抵のイベントをコマンドにできるのでコードが見やすくなった気もしないでもない

33:デフォルトの名無しさん
12/09/08 18:19:17.52
とにかく、見た目をオシャレにしない限り、機能的に何か勝っているところもなく
ただ、開発効率が異常に落ちるだけなのがWPF
フリーソフトレベルのものを作るのにWPFは絶対に選択肢に入らない

34:デフォルトの名無しさん
12/09/08 19:05:09.50
俺がWinFormsを作りやすいと思っているのは単に慣れているだけと思っていたけど
Xaml言語ってそんなに開発効率が落ちるのか

35:デフォルトの名無しさん
12/09/08 19:08:23.76
ぜんぜん別物だし
最新のリファレンスはBlendの吐くxamlというありさま

36:デフォルトの名無しさん
12/09/08 19:17:54.50
UIのデザインにXML使うだけで止めておけば良かった
しかしそれ以上を目指してしまった

37:デフォルトの名無しさん
12/09/08 19:41:41.74
URLリンク(pbs.twimg.com)

靖国神社でこんなもん貰ったんだがwwwwwwww斬新な政治ビラwwww
URLリンク(twitter.com)


38:デフォルトの名無しさん
12/09/08 19:58:26.17
コントロールを配置したりする程度なら
XAMLで直書きしていったほうがWinフォームより早くて正確だけど
バインドやトリガーなどもろもろも書こうとするとめっちゃ面倒
何も考えずにやるとメモリリークを起こすし、初心者が手を出すものじゃないね
Winフォームはイベントだらけになるから面倒だけどまだマシ

39:デフォルトの名無しさん
12/09/08 20:06:34.67
バインド使ってデータとビューを同期させる場合、短いコードで書けるので楽っちゃ楽
単純にコレクションを公開するだけで、それぞれのコントロール表示することができる

WinFormだとそれぞれのコントロールにデータを表示するために
ListViewCollectionだとかコントロールごとに仕様理解しながら、別々の手段で追加することになるから面倒

40:デフォルトの名無しさん
12/09/08 21:22:46.63
PictureBoxにDrawLine()で長さ100の線を引いたのですが
PictureBoxを縮小して線の長さを50にする方法を教えて下さい。

41:デフォルトの名無しさん
12/09/08 21:34:55.52
>>40
答え出てるじゃん

42:デフォルトの名無しさん
12/09/08 21:47:55.34
WinFormsでオーナードローした経験のある人なら
WPFのテンプレートに感動すると思う。

特にDataTemplateが神がかってるわ。

43:デフォルトの名無しさん
12/09/08 22:11:01.06
WinFormsでUIの動作や表示をほんのちょっとだけ改善したいと思っても
難しく酷く面倒で時間が掛かり断念した人は多いよね。

WPFだから先進的なオシャレUIを作らないといけないかっていうと全然そんな事はなくて
そういう小さな要求も拾える所がいい。

44:デフォルトの名無しさん
12/09/08 23:21:08.22
VS2010で気がついたら
実行時エラーが発生しても、エラーメッセージがポップアップ表示されなく(無視されてる?)なっているのですが
どうすれば治りますか?

45:デフォルトの名無しさん
12/09/08 23:22:44.73
try catch で囲むとしっかり catch ブロックに入ります。
毎回、try catch を書くのは面倒なので書きたくありません。

46:デフォルトの名無しさん
12/09/08 23:27:07.50
>>40
以前他所で投下したサンプル
URLリンク(ideone.com)

マトリックスを使って縮尺を設定しろ

47:デフォルトの名無しさん
12/09/09 00:08:33.61
log4netって使っているやついるかね?

48:デフォルトの名無しさん
12/09/09 00:15:57.78
Javaから.NETへ移植されたライブラリってインターフェイスがキモいんだよな

49:デフォルトの名無しさん
12/09/09 00:42:48.15
USBハスプ挿さないと動かないようにしても、.NETのソース復元出来ちゃうから意味無し・・・

50:デフォルトの名無しさん
12/09/09 01:01:49.01
ドングル使うようなネイティブ製の市販ソフトだってクラックされまくってるわけだが?

51:デフォルトの名無しさん
12/09/09 01:44:42.58
取り敢えず、難読化しても読まれるので
いかに読み辛くするか、それにつきる。

52:デフォルトの名無しさん
12/09/09 01:48:02.74
・お前の書いたコードなんて読みたがるやつは居ない
・カジュアルハック対策なら難読化しとけ
・隠したいデータはクライアントに渡すな

結局これにつきる

53:デフォルトの名無しさん
12/09/09 01:55:16.77
お前何か一つでも仕上げたことあるの?

これに尽きるだろ

54:デフォルトの名無しさん
12/09/09 01:55:44.24
命つき果てて死ねばいい

55:デフォルトの名無しさん
12/09/09 02:08:19.74
>>52
なぜ難読化に拘るかを説明しておく。

こちらをA社とするA社は、開発

56:デフォルトの名無しさん
12/09/09 02:09:42.19
市販どころかライバル社のカメラからファーム吸い出して中身解析とか平気でやってる
今の俺の仕事
難読化なんて聞き飽きたよ
最終的に人海戦術でどうにでもなる

57:デフォルトの名無しさん
12/09/09 02:12:19.40
ミスったので書き直す。

>>52
なぜ難読化に拘るかを説明しておく。

こちらをA社とするA社は、B社(営業主体)からノウハウを盛り込みつつソフトを開発し
B社に無償でレンタルしている。開発はしたが開発代金等は受け取ってはいない。
しかし、そのソフトにより一定の売り上げがたち、売り上げの一部がA社に入ることになっている。

しかし、こちら(A社)にしてみると
B社にソフトをレンタル(無償)売り上げを立てるよりも
C社にレンタルした方がマージンが良い。

そこで、最悪B社にレンタルすることなくC社にしようと思っているが
契約を切り替えたタイミングで、そのソフトを無断に逆アセンブル等して
流用されやしないかを心配している。

初期の契約段階でかなりなぁなぁにやってきたが
売り上げが経ち始めてから、こーいうトラブルになりつつある。

A社としては、より支払い率をあげなければ、B社にはもう貸与しない。
C社に出しますよ!という切り札となっているのがソフトなのだ。




58:デフォルトの名無しさん
12/09/09 02:16:00.18
というわけで難読化に必死なのですよ。

.NETでやっている以上、ソースはどうしても見られてしまうので
どれだけ逆アセンブルをし辛くさせるかに異常な位に執着してるわけです。

で、Windows Form部分については
Dotfastor 使って確かに見づらくなりましたが、

*.dll化した自社ライブラリは難読化がまったくされずに困ってます。
クラスの中に便利な関数とかを詰め込み、それをDLL化しているだけですが
クラス名、メソッド名にいたるまでまったくオリジナルのままなんです。

皆さんは、*.dllファイルはどうやって難読化していますか?
便利な関数群なのでぱくられると、工数(開発費)が盗まれたに等しくなってしまうのです。


59:デフォルトの名無しさん
12/09/09 02:16:28.70
言語の選択を間違えた
設計を間違えた
生まれてくるのが間違いだった

さあどれが正解?

60:デフォルトの名無しさん
12/09/09 02:20:05.56
2chで相談するのが間違い

61:57
12/09/09 02:20:31.33
これ以上は、司法の話になるからわかる奴はいないか。

最初のタイミングでh
こちらは納得していないながらも、
A社よりも規模の大きいB社より仕事が得られると
相手方が特定ソフトについて「共同開発しましょう。」と口頭でしきりにいってました。

そのタイミングでは、確かに「あーはい。」とは言いましたが
書面は残していません。最悪、弁護士がはいってもしらばっくれられるか。
権力乱用だものね。

確かに、B社から知ったノウハウを詰め込みA社はソフトを開発したけど
ソフト開発費はもらっていない。

ソフトによる売り上げの一部が安定的にA社に入っている。。。

うーん。まぁーどっちみちソースは維持でも渡さないからな!!

62:デフォルトの名無しさん
12/09/09 02:21:24.09
仕組みをブラックボックス化して特許とって製品を売り出したが他社にスグまねされた。
特許侵害で訴えてやるといったが、相手もブラックボックス化していて真似かどうかの根拠が証拠不十分
逆に不当な言いがかりを付けられたと難癖つけられ賠償させられて涙目って何処の業界でもあるよな

63:デフォルトの名無しさん
12/09/09 02:22:05.39
怪しいプログラムを見つけたら逆アセンブルすればいいじゃんって誰かが言ってた

64:57
12/09/09 02:22:58.48
ソフトのアルゴリズムであったり、
使い方とかもろもろのドキュメントはまったく残しておらず

ノウハウは、ソフトのマニュアル等のある場所は

・A社の開発担当者の頭の中
・ソースコードの中のコメント

だけです。

逆アセンブルしてもコメントまでは読めないですよね?
難読化して読みづらくして、逆アセンブルしたとしても
丸パクリは出来なければよしとしたほうがいいですかね?




65:デフォルトの名無しさん
12/09/09 02:24:18.27
いや、司法の話がどうかなんてのは建前的なものであって
内部的にはライセンスもNDAも無視なんてざらだよざら

そう思った時にはもう割られてると思ったほうがいい
相手だってお前がそういう手段に出てきたときのリスクを考えていないと思うのか

66:57
12/09/09 02:24:38.94
>>62
ソース頼む

とりあえずソースコードだけは何があっても守ります。
絶対にB社に渡すものか!!


最初の頃のうまくいかないときには、
仲がいいけどよくなると揉めるってのを本当に実感した。

67:デフォルトの名無しさん
12/09/09 02:26:02.80
契約書もないとか場末の下請けかフリーランス臭がする

68:57
12/09/09 02:27:09.55
>>65
こちら(A社)からB社の社内環境にレンタルしてるソフトは
全て難読化しました。

*.dllは確かに難読化しても一発で簡単にソースを読めますが
然程、特殊なことはやっていないのでまだいいです。

問題は、
WindowsFormの中の処理。

こちらは色々と苦戦してノウハウを詰め込んだだけに
非常に難しい部分の一連の流れを丸パクリされるのを恐れています。

出来るだけ難読化するために他プロジェクトでしようしていたまったく関係ない
処理群もソースコード(WindowsForm側)に詰め込みまくることにします。

69:デフォルトの名無しさん
12/09/09 02:30:49.72
1日中バイナリやニモニックの羅列とにらめっこしてる俺なら
コメントない程度なら序の口レベル

70:デフォルトの名無しさん
12/09/09 02:43:50.90
>>69
だから、逆アセンブルしたってコメントは見えないですよね?


71:デフォルトの名無しさん
12/09/09 02:46:45.95
だから、見えないくらい何の障害にもならないと言ってんですよ

72:デフォルトの名無しさん
12/09/09 02:47:54.35
見えなくても平気なレベルの人がはたして
逆アセンブルに頼るものなのか?

73:デフォルトの名無しさん
12/09/09 02:55:28.89
序の口レベル→序二段に昇格

74:デフォルトの名無しさん
12/09/09 03:09:07.30
>>68
そこまで気にするなら、プロファイラーなんかも意識したほうがよさそうだが。
(単に見にくくするためにコード量増やす手ぐらいしか考えていないのなら)

75:デフォルトの名無しさん
12/09/09 03:14:25.40
いい加減ネイティブコンパイラを用意して欲しいんだけど、
できるだろうになぜしないのか。

76:52
12/09/09 03:31:16.56
>>58
そんなもんILMergeで結合してから難読化するだけの話。

>>57
というか、仕事でやってるんなら最初からそう言え。
これ使っとけ
URLリンク(www.remotesoft.com)
URLリンク(www.remotesoft.com)

77:72
12/09/09 04:57:03.41
>>74
サンキュー。そんなのあったのね。

そーいえば、弥生会計難読化してねーよね。
普通にReflectorでソース丸見え。


78:デフォルトの名無しさん
12/09/09 05:36:35.95
弥生以外の会計ソフトもだいたい.NET製。
会計ソフトは.NET製の占める割合が特に高い分野だな。

調べりゃ他にも難読化してないのがあるだろうね。
ソースコードが丸見えだと批判する阿呆には理解できない光景だろうなw
知財を守る方法は単純に隠すだけではない。
ネイティブだろうと本気で見ようとする輩には時間稼ぎの気休めにしかならんよw

79:デフォルトの名無しさん
12/09/09 05:42:05.67
xamlも難読化してくれるの?

80:デフォルトの名無しさん
12/09/09 05:45:43.45
XAMLっていうかBAML(Binary XAML)な
当然難読化サポートしてるのがいっぱいある。例えばDotfastorも対応してる。

81:デフォルトの名無しさん
12/09/09 05:50:11.77
やるじゃん

82:デフォルトの名無しさん
12/09/09 07:04:11.31
“韓流の中心”新大久保を探訪……韓流ファンはどこへ?

韓流中心地の新大久保を探訪……韓流はバブルだったのか?
ほぼ1年ぶりに訪れた東京だった。東京内の韓国留学生が多く滞在している新大久保の街を
去年11月以来もう一度訪問した。最近、ソン・イルグクを始めとする複数の韓流スターが
日本での活動を制限されたり、無期限延期される状況で、日本現地の雰囲気を捉えるためだった。

3日と4日、東京・新大久保を始めとする東京市内を歩いた。新大久保を始めとして、豪華な
ショップが並ぶ六本木周辺で韓国スターの広告を目にすることができた。特に、新大久保には
韓流ショップが増えていた。表では平穏に見える雰囲気だった。

最近、ある芸能界の関係者は、自身の所属俳優が日本のドラマ出演を契約したが撮影が
無期限延期となり、確実に冷え込んで日本の雰囲気を実感したと述べた。一部の雰囲気だった
反韓感情を関係者が実感し始めたのだ。

「竹島問題?確実に影響を受けている」
昨年、渋谷と新大久保を見て回った記憶を辿りながら、今年の韓流の流れにはどのような変化があるか
比較してみようと思った。4日に訪れた新大久保の街は閑散としているように見えた。前回の
訪問時間と似ている、早い午後の時間だった。増えたショップに比べて、人波は減っているように見えた。

ホットックやトッポッキなど、ストリートフードを売っている、ある従業員に会った。日本語で
「おいしい韓国のホットックはいかがですか」と忙しく動く彼に、最近の変化について実感しているか
尋ねた。彼は「確実に街を歩く日本人の数が減った」と答えた。「確実ではないが、知らないうちに
竹島問題など反韓感情の影響を受けているようだ」とし、再び道を行く人に声をかけた。
>>2

URLリンク(news.kstyle.com)
URLリンク(tc.search.naver.jp)


83:デフォルトの名無しさん
12/09/09 07:06:07.29
韓国の食料品を販売する店を訪れた。店の中は純豆腐(スンドゥブ)鍋の試食コーナーが設けられており、
多くの人が内部を見回っていた。
品物を並べていた韓国人の従業員は「客が減ったことを実感している。竹島問題などに影響を受けて
いるようだ」と答えた。彼は「テレビでは韓国の関連ニュースや討論会がよく放送される」と付け加え、
変わった雰囲気を伝えた。彼によると、この店はここ数ヶ月の間で3割ほどお客が減ったという。

「低迷しているのは確かだが、嫌韓ではない!一時的な現象だ」
これに対する反論も少なくない。新大久保駅の近くにある店で働いているキム・チャンヒョン氏は「客が減って
いるのは確かだが、学生の夏休みシーズンが終わったためではないかと思っている。もうすぐ韓流が復興する
だろうという話もあるし、ただ竹島問題で韓流が消えたようには思えない」と話す。

それでは、最近の売上減少についてはどのように思っているのだろうか。これについてはより率直な意見が
聞けた。キム氏が体感している売上減少は去年に比べて50%ほどだという。一連の流れについて彼は
「今年初めから韓流関連ショップの売上の減少があった。嫌韓というより、韓流のバブルがはじける時期だろう」
と述べた。

また、キム氏は「依然としてSUPER JUNIORやBIGBANGは人気を博している。俳優としてはチャン・グンソクが
依然として人気を集めており、パク・シフも最近日本人が好きな俳優として急浮上している」と述べた。不況だが、
韓国スターの人気は相変わらずだった。ショップで人気のある品目を基準に分析したキム氏の考えだった。

取材の結果、確実に影響は受けているが嫌韓が大きな流れではなかった。もちろん、毎週水曜日に右翼集団が
韓国の大使館の前でデモをするなど、過激な動きがあるのは事実だ。しかし、このような時こそ大衆文化の
関係者たちは韓国の文化コンテンツの質的な面を補完し、徹底的な準備をすべきではないだろうか。それと
同時に、日本だけではなく、様々な国に裾野を広げていく時ではないだろうか。

元記事配信日時 : 2012年09月07日09時58分

84:デフォルトの名無しさん
12/09/09 10:33:51.80
URLリンク(www.codeproject.com)
C#でこれやりたいんだけど、どうやるのか教えろください。

85:デフォルトの名無しさん
12/09/09 13:19:36.05
どうやるもこうやるも、ソースがあるんだからC#に移植するだけでしょう
下の方のコメント欄にC#に移植しましたって投稿とソースへのリンクがあるけど、
まさかそれは見たんですよね?

86:デフォルトの名無しさん
12/09/09 13:46:17.07
すれ違いかもしれないけど

King SoftのKDriveってどうして無料で50GBも
ユーザに提供出来るの?

これまで、DropBoxを使っていたけど
桁違いに容量が多くて使いやすいので
KDriveしかつかっていない。


87:デフォルトの名無しさん
12/09/09 15:19:55.91
>>85
そのまさかだよ。。リンク先のどれよ?
ちなみに自分で移植できるスキルはない…

88:デフォルトの名無しさん
12/09/09 15:34:47.54
じゃあ諦めろ

89:デフォルトの名無しさん
12/09/09 19:12:16.68
>>88
そうもいかないからそこを何とか(T_T)

90:デフォルトの名無しさん
12/09/09 20:25:03.75
>>89
そのリンク先だけ貼っとくよ
どんなもんか知らんから責任は持てないよ
URLリンク(www.codeproject.com)

91:デフォルトの名無しさん
12/09/09 20:51:32.03
Gilma

をFW4.0をインストールした環境で使用しようとしているのですが

.NET Framework version 1.1.4322.

という昔のバージョンにしか使えないのでしょうか?

92:デフォルトの名無しさん
12/09/09 21:36:41.35
インストーラーは弾かれてもzip版は使えるんじゃないの?

93:デフォルトの名無しさん
12/09/09 21:43:18.90
そんな微妙なもん使うくらいだったら
リソースにdllそのまま全部突っ込んどいてAssembly.Loadでよくね

94:デフォルトの名無しさん
12/09/09 21:57:30.97
>>92
試してみます。

>>93
???そんな方法があるんですか?

95:デフォルトの名無しさん
12/09/09 23:11:55.44
.NETってロギングツール普及してないのね
検索してもlog4net以外はヒットしないや

96:デフォルトの名無しさん
12/09/09 23:12:51.97
TraceSourceでも使ってろ

97:デフォルトの名無しさん
12/09/09 23:20:38.95
log4net 使ってるプロジェクトあったな。

生産性を邪魔する糞ツールだった。

98:デフォルトの名無しさん
12/09/10 01:02:19.08
すれ違いだが


URLリンク(thinker-japan.com)

面白かった。戦争って全て仕組まれてたんだね。

99:デフォルトの名無しさん
12/09/10 01:09:43.08
ログインログアウトツール?

100:デフォルトの名無しさん
12/09/10 10:10:33.01
ふらっとVisual C#,C♯,C#(初心者用) Part96
スレリンク(tech板)

101:デフォルトの名無しさん
12/09/10 17:34:17.61
Interface の明示的実装と Generic について質問です。

Interface を返すメソッドを明示的実装によって
その Interface を実装する構造体を返すように定義したとします。

Interface の型にボクシングされないようにその機能を使いたいのですが、
以下の認識で合っていますか ?

List<T>.Enumerator が構造体なので、
Run(Enumerable.Range(0, 10).ToList(), action)
というようにそれぞれ実行したとします。
action 内ではボクシングは無いものとします。

// 1. ボクシングされない例
void Run<T>(List<T> list, Action<T> action)
{ foreach (var i in list) action(i); }

// 2. ボクシングされる例
void Run<T>(IEnumerable<T> list, Action<T> action)
{ foreach (var i in list) action(i); }

// 3. ボクシングされる例 ?
void Run<TList, TItem>(TList list, Action<TItem> action) where TList : IEnumerable<TItem>
{ foreach (var i in list) action(i); }

最後の Run は List<T> が構造体ではないため Generic が特殊化されず、
IEnumerator<TItem> にボクシングされてしまうと考えました。
List<T> を構造体でラップしたような型を引数にした場合は特殊化され、ボクシングの起きないコートになるのでしょうか ?

102:デフォルトの名無しさん
12/09/10 17:48:25.85
コンテナがstructかどうかは関係ない
1~3にボクシングされる(Tの値を参照型に代入する)箇所は見当たらない

103:デフォルトの名無しさん
12/09/10 21:19:14.99
なるほど。 2 の場合もですか。驚きです。

2 の場合、型情報が IEnumerable<T> に落とされている為、
IEnumerable<T>.GetEnumerator() が呼び出され、
IEnumerator<T> にボクシングされると思ったのですが、
違うのですね。


何故違うのかが理解できません。
本来、以下のどれが正しいのでしょうか ?
a. Generic は型パラメータが値型の場合のみ特殊化されるのではなく、そもそも共通部分をまとめているだけ (参照型はほぼ共通のコードが使用出来る)
b. Generic に限らず Interface 型 (参照型) を引数に取っていても、a のように処理される。
c. 特殊化という考え自体が間違いで、見当はずれ

104:デフォルトの名無しさん
12/09/10 21:40:12.36
>>103
答. ジェネリックは常に特殊化される(と考えてよい)
実際の実装は、
・値型の場合…JITが本当に特殊化する
・参照型の場合…共通のコードを使い回す
なんだけど、プログラマから見ると常に特殊化されているのと
全く区別できない動作をするから気にしなくていい。

105:デフォルトの名無しさん
12/09/10 21:50:36.98
つまり、2 番が特殊化されるのはジェネリックを使用しているからですか ?

List<int>, IEnumerable<int> ではなく、IntList, IIntEnumerable を自分で作り、
2 と同様のことを行った場合は特殊化されないのでしょうか ?

106:デフォルトの名無しさん
12/09/10 21:53:11.79
>>101
2,3の場合はボックス化されるよ
仰る通り、IEnumerable<T>.GetEnumeratorがボックス化されたList<T>.Enumeratorを返す。
1の場合、IEnumerable<T>.GetEnumeratorではなく構造体をそのまま返す方のGetEnumeratorが呼び出されるから
ボックス化が起きない。
C#のforeachがインターフェイスによらずGetEnumeratorという名前のメソッドを呼ぶのは
あくまでC#のコンパイル時に解決できる場合の話で、
JITによる実行時の特殊化は関係ない。

107:デフォルトの名無しさん
12/09/10 22:07:19.07
どっちなんだ。。。
あっていたのかな ?

>>106
では、3 の TList が where TList : struct, IEnumerable<TItem> な型 StructList<T> の場合はどうなるのでしょうか ?
A. StructList<T>.GetEnumerator() は IEnumerator<TItem> にボクシングされる
B. 特殊化されるため、StructList<T>.Enumerator が使用され、ボクシングは起きない

と、ここまで書きましたが、特殊化は JIT 時にされるのですか。。
つまり、ダックタイピング的に行われるものではなく、静的型検査はされる、ということですかね ?
なら A が正解ということですか ?

108:デフォルトの名無しさん
12/09/10 22:07:27.00
インターフェイスで渡した場合もボックス化が起きないようにしたいならこうなる
struct ValueEnumerator<out T> : IEnumerator<T> { /*好きなように実装しろ*/ }
interface IValueEnumerable<out T> { ValueEnumerator<T> GetEnumerator(); }
これでボックス化なしでforeachが使えるはずだが、ValueEnumerator<out T>を実装するのが難しいだろうな

109:デフォルトの名無しさん
12/09/10 22:12:01.24
>>107
その通り
ダックタイピング的なバインディングはC#言語固有のもので、実行時には行われない
ちなみにdynamic使うと実行時にもC#固有のバインディング動作になるよ
dynamic使うとどっちみちボックス化されてしまうけど

110:デフォルトの名無しさん
12/09/10 22:18:55.14
おい!お前ら何話しているんだよ
俺にわかるように日本語でしゃべれ!

111:101
12/09/10 22:22:28.56
>>107
最後から 2 行目の静的型検査は、静的型付けの間違いした。
言いたいことは伝わったとは思いますが、一応。

>>108
なるほど。
ボクシングしないような Interface を設ければ確かにボクシングはされませんね。
ですが例とは違い、参照型と値型で同じコードを使いたかったので、今回はその方法は使えません。

>>109
つまり、dynamic を使えば、StructList<T>.Enumerator が使用される、ということですか ?

112:デフォルトの名無しさん
12/09/10 22:27:01.02
>>110
前提
・foreachの仕様はダックタイピング的であるといわれる。なぜか。
・上に関連して、List<T>.Enumeratorがなぜpublic structなのか説明せよ
・.NETにおけるジェネリックの特殊化とはどういうものか説明せよ
これらに回答できるようになって出直してきなさい

113:デフォルトの名無しさん
12/09/10 22:28:27.25
ボクシングなんかしたら怪我しちゃうだろ

114:デフォルトの名無しさん
12/09/10 22:36:08.19
おいおっさん

115:デフォルトの名無しさん
12/09/10 22:37:10.04
以下のように、ある任意(IXmlSerializableを実装していないPOCO的な)のオブジェクトをXDocumentを利用してシリアライズ/デシリアライズをしようと思っています。

対象のクラス
class Foo
{
  int PropInt { get; set; }
  Bar PropBar { get; set; }
}
class Bar
{
  string PropString { get; set; }
}

期待するXML
<Foo>
  <PropInt>0</PropInt>
  <PropBar>
    <PropString>0</PropString>
  </PropBar>
</Foo>

現在はFooクラスからPropertyInfoを取得し、PropertyInfo.NameとPropertyInfo.GetValue(foo, null)からXElementを生成しています。
プロパティがstringやintなどの基本的な型であれば問題なくできるのですが型が複合型の場合は以下のようにその複合型の名前が値として出力されます。
<PropBar>Bar</PropBar>
理由は理解できるので複合型の場合は再帰的にXElementを生成したいのですが、どのようにしたらよいかわかりません。
XEelementがシリアライズ可能なプロパティ(intやstring等)かどうかを判断する方法があれば、再帰処理が可能かと思いますが判断する方法が見つかりません。





116:101
12/09/10 22:37:50.49
>>111 の最後でアホなことを聞いてしまいました。
すいません。

>>102, >>104, >>106, >>108, >>109
お陰様で、理解できました。
ありがとうございます。

117:デフォルトの名無しさん
12/09/10 22:38:20.13
>>112
それが答えられるようになるとすごいの?

118:デフォルトの名無しさん
12/09/10 22:43:27.04
>>115
どこまで汎用性持たせるかって話になるけど。
例えば、XElementからのキャスト演算子オーバーロードが定義されてるかどうかで判断するとか。

119:デフォルトの名無しさん
12/09/10 22:50:39.25
文字列との相互変換をTypeConverter.ConvertToString/ConvertFromStringに任せるなら
TypeConverter.CanConvertTo/CanConvertFromとか

120:デフォルトの名無しさん
12/09/10 22:53:50.68
>>115だったらXmlSerializerで一発でしょ
IXmlSerializable不要
いちいちPropertyInfoとか型判定とかやってたらクソ遅いよ

121:デフォルトの名無しさん
12/09/10 23:03:23.07

static XElement Serialize(object obj) {
 var serializer = new XmlSerializer(typeof(Foo));
 using (var writer = new StringWriter()) {
  serializer.Serialize(writer, obj);
  return XElement.Parse(writer.ToString());
 }
}
自前でこれを超えるものを作るのは相当大変だよ
汎用性は比べ物にならないし速度も普通にやってたら全く勝ち目無い

122:デフォルトの名無しさん
12/09/11 00:07:15.37
今現在はみなさんがおっしゃる通りXmlSerializerを使用しています。
今後の追加の要件として、プロパティ毎に保存するファイルを振り分けたいと考えていて、
プロパティにパスを指定できる属性を付与しました。
その為、XmlSerializerを使うことができなくなってしまったのです。
シリアライズ/デシアライズはそれぞれ1回しか処理が走らないため
多少の速度は目を瞑ることができます。
また、ほかに解決案があれば他の方法でも構わなく、XElementに拘っているわけではありません。
他に思いつかなかったのです。

>>118
オーバーロードの情報はどのようにして取得するのでしょうか。
型情報まで取得できますでしょうか。

123:デフォルトの名無しさん
12/09/11 00:10:23.73
>>121でいったんXElementにしてしまえば
後はどうにでもできるだろ

124:デフォルトの名無しさん
12/09/11 00:14:04.27
XElementにしてしまえばあとはLINQ to XMLで保存先パスの属性を検索して
振り分けて保存するなんて楽勝ですよ

125:デフォルトの名無しさん
12/09/11 00:47:13.13
確かにその通りでした。
シリアライズはXmlSerializeを使ってそこからXElementに落とし込めばよいのですね。
こういうのが思いつかないのがとても悔しいというか悲しい。

ちなみに>>124さんのいう「LINQ to XMLで保存先パスの属性を検索」
というのはプロパティはLINQで検索して属性はTypeから取得する、でよいでしょうか。
それともLINQ to XMLで一緒にとってこれるのでしょうか。

126:デフォルトの名無しさん
12/09/11 00:56:18.80
もうひとつ質問させてください。

Visual StudioのスニペットのXMLのように改行やスペースの入ったタグを利用したいと考えた場合、
どのようにしてシリアライズしたらよいでしょうか。
スニペットのようにXMLにそのまま改行を表現できるものであればそのままシリアライズしたいと考えています。

127:デフォルトの名無しさん
12/09/11 01:08:26.48
改行コード書けばいいだけだろうが!

128:デフォルトの名無しさん
12/09/11 01:11:30.58
自分がやったときは、改行とスペースがなぜか消えてしまったので仕様かと思いました。
明日、出社したら再度試してみます。
すいません。

129:デフォルトの名無しさん
12/09/11 01:13:25.23
改行入った文字列をシリアライズすればいいだけじゃん

130:デフォルトの名無しさん
12/09/11 01:42:34.16
オブジェクト(or型)ごとにパス持たせて振り分けるならわかるが
プロパティごとってどうやるつもりなんだ?
素直にやったらどのオブジェクトのプロパティかわからなくなるだろ

131:デフォルトの名無しさん
12/09/11 01:44:43.14
言っている意味がさっぱりわからん

public string hoge{get;set;}
これに改行した文字列入れればいいじゃんってことなんだけど
プロパティ名で管理されてるじゃん

132:デフォルトの名無しさん
12/09/11 07:57:59.53
片山さつき「修学旅行の行き先を韓国に選ぶ学校ですが、土下座旅行に近い事が判明しました」
スレリンク(poverty板)


片山氏が調査を進めると、韓国への修学旅行での訪問先に、信じがたい場所が選ばれていることが分かった。

日本海側の私立高校K(男女共学)が、今月末に予定していた韓国修養会(修学旅行)のレジュメによると、
訪問先に「戦争と女性の人権博物館」や「ナヌムの家/日本軍『慰安婦』歴史館」とあり、
説明に「日本軍性奴隷(日本軍慰安婦)とされた人々の苦悩の深さと日本軍の扱いの実態を知ることができる」
と書かれていたのである。

片山氏は「これはひどい。日本政府が発見した資料からは(慰安婦に)軍や官憲の強制連行を示す
証拠がなかったことは閣議決定されている。
教育の一環である修学旅行で、日本政府が『事実と違う』と抗議していることを学ばせようと
していたのではないか。『教育の自主性』では許容できない。
国益に反する洗脳教育が行われる危険がある」と語った。

私立高校Kは6日、保護者などの強い抗議を受けて、修学旅行先を韓国から国内に変更することを発表した。
同校が予定していた訪問先には、「西大門刑務所歴史館」や「安重根義士記念館」など、
日本や日本人に敵意や憎悪を植え付けるような場所も並んでいた。
片山氏は「K校だけとは思えない。インターネットを見ると、似たような修学旅行をしている学校がありそうだ。
背後に、国内の『反日組織』が関与している疑いもある。早急に実態を調べたい」と語っている。
URLリンク(www.zakzak.co.jp)

133:デフォルトの名無しさん
12/09/11 09:18:00.74
XmlSerializerはよく使われているみたいだけどWinMDではなくなるんだよな
マイクロソフトにとってはレガシーってことじゃないの?

134:デフォルトの名無しさん
12/09/11 09:18:32.83
レガシー・・・マイファースト

135:デフォルトの名無しさん
12/09/11 10:02:21.50
>>133
MF系を除いて、XmlSerializerが削られた.NETは今のところ無い
URLリンク(msdn.microsoft.com)
.NETのユーティリティ的な機能の中でこれほど大事にされてるものも珍しいと思う
レガシーも糞も、WCF系とは全く役割が違うし

136:デフォルトの名無しさん
12/09/11 10:55:20.19
>>135
ありがとさん
URLリンク(www.atmarkit.co.jp)
に書いてあることは嘘ってことか

137:デフォルトの名無しさん
12/09/11 11:05:04.90
LINQ to XMLの利用で代替とか言ってるからXML DOMと間違えてるんじゃないの
デスクトップ版と比べた差は大まかに以下の通り、で非ジェネリックコレクションと
XmlSerializerだけ挙げてるってちょっと酷いなw
コレクションの方はともかく、XmlSerializer(嘘だけど)みたいなちょっとしたユーティリティなんかより
挙げるべき重大な変更点はいくらでもあると思う。
まともに.NET使ったことないんじゃないのこの人

138:デフォルトの名無しさん
12/09/11 21:06:22.78
>>135
WCF系がXmlSerializerと役割が違うとは言い切れないのではないだろうか。
少なくともオブジェクト永続化という役割はかぶる。
DataContractSerializerはIXmlSerializableとSerialzableAttributeにも
対応しておりXmlSerializerの上位版といえる。標準では出力するXMLが汚いが
名前空間を空にすればXmlSerializerとほぼ同じ出力。加えてIDictionaryや
循環参照も扱うことができネットワークサービスにも対応しやすい。

139:デフォルトの名無しさん
12/09/11 21:13:11.93
>>138に追加
逆にXmlSerializerにしかできないことは順序制御と要素名マッピングしか知らない。
しかしこれが有効な場面は多くないだろうからDataContractSerializerは
XmlSerializerを置き換えるといっても問題ないのではないだろうか。意見を求む。

140:デフォルトの名無しさん
12/09/11 22:20:40.54
1つの*.csファイルに複数のクラスを書くの普通ですか?
javaだとあまりやらないと思うのですが、C++と同じ流派?

141:デフォルトの名無しさん
12/09/11 22:33:36.90
>>138
DataContractは細かい制御がほとんどできないので、
XMLのスキーマが予め決まってる場合全く役に立たない
XmlSerializerはシリアライザというよりオブジェクト-XMLマッピングと考える方がいいと思う

142:デフォルトの名無しさん
12/09/11 22:45:58.92
>>140
Javaは一つのファイルにpublicクラスを一つしか置けないとか
1ファイル1パッケージとかわけのわからん制限があるが
C#では論理構造とファイルシステムを完全に分けて考えるので特に決まりはない
でも基本は1ファイル1クラス。MSのコード検査ツールを使うと一ファイルに複数の
クラスがあると警告が出たりする。
>>138
XmlSerializerはまずXMLありきなんだよ。こういうXMLを生成したい、こういうXMLを読みたい、というのが先。
.NET付属のxsd.exeを使って、XMLを読み書きするための型をスキーマから自動生成したりすることもできる。

143:デフォルトの名無しさん
12/09/11 22:56:36.89
>>141
そういう用途は今はXElement+LINQじゃね?

144:デフォルトの名無しさん
12/09/11 22:59:03.52
>>143
型付きの方が便利な場合もあるだろう

145:デフォルトの名無しさん
12/09/11 23:00:50.77
それにXmlSerializerはXLINQで手書きするのとは違って
宣言的に読み書きできるというメリットもあるぞ

146:デフォルトの名無しさん
12/09/11 23:18:16.41
>>115みたいな簡単な型はXmlSerializerでXML化して、単純にマッピングできないものは
IXmlSerializableを実装してその中でXElementを使うとか、
読むときもXElementで要素を検索してからXmlSerializerでデシリアライズするとか
柔軟に組み合わせるのが賢いと思うよ。
余計なコードを書かないで済むに越したことはない。

147:デフォルトの名無しさん
12/09/13 00:41:30.01
SQLサーバーから取り出した検索結果をDatatableで取り出したとき、
その取り出した中身のデータ型は、SQLサーバーでの定義に依存しているんですか?

つまりvarcharならstringになるとか

148:デフォルトの名無しさん
12/09/13 02:54:03.95
>>147
URLリンク(msdn.microsoft.com)

149:デフォルトの名無しさん
12/09/13 08:10:13.68
>>148
ありがとうございました

150:デフォルトの名無しさん
12/09/13 21:28:21.84
20120913という文字列型の文字列を

│2012-09-13│

というフォーマットで出したいです


String.Format("│yyyy-mm-dd│", "20120913")

ではダメなんですが、どうすればいいのでしょうか・・・・

151:デフォルトの名無しさん
12/09/13 21:32:30.72
>>150
var date = DateTime.ParseExact("20120913", "yyyyMMdd", CultureInfo.InvariantCulture);
Console.WriteLine(date.ToString("| yyyy-MM-dd |", CultureInfo.InvariantCulture));

152:デフォルトの名無しさん
12/09/13 22:02:08.90
>>150
そんなに手間がかかるのでしょうか・・・
実は.NET2.0のためvarは使えませんが、他に何か方法はありませんか

153:150
12/09/13 22:02:28.70
>>151
アンカー間違えました

154:デフォルトの名無しさん
12/09/13 22:06:42.37
>>152
varの代わりにDateTimeと書くだけ。他は2.0基準。
たかが2行だけだろ。

155:デフォルトの名無しさん
12/09/13 22:07:16.29
StringBuilderに入れてInsert
Substringで繋ぐ
お好きな方をどうぞ

どっちも小奇麗ではない
小奇麗な方法がよければ青い鳥を探して言語を変えよう
ここにはありませんのだ

156:デフォルトの名無しさん
12/09/13 22:09:06.78
手間ってどういうこっちゃ
ヘルパメソッドにでもすればいいだろ
毎回コピペとかすんなよ?

157:デフォルトの名無しさん
12/09/13 22:12:04.27
>>151で手間とか言ってたら一体何ができるというのか

158:150
12/09/13 22:25:13.01
皆さんありがとうございました

159:デフォルトの名無しさん
12/09/13 22:25:28.91
スライスができる言語ならもう少しマシには書けるかもな
ま、ないものねだりという奴だな

汚いインターフェースが嫌なら自分でラッパーを書けと
リーダブルコードには書いてあったな

160:デフォルトの名無しさん
12/09/13 22:58:33.33
こうか

"|" + "20120913".Insert(6, "-").Insert(4, "-") + "|"

161:150
12/09/13 23:18:31.68
ありがとうございます
誰が書いてもすっきりと書けないなら、とりあえず安心です

162:デフォルトの名無しさん
12/09/14 00:02:30.15
DataTable.Columns.Add("カラム名")として、データ型を省いた場合、その列にはObject型みたいな感じでなんでもはいるのですか?

163:デフォルトの名無しさん
12/09/14 03:21:34.09
>>162
ここに質問するよりMSDNでも見て自分で調べた方が早いだろうに
URLリンク(msdn.microsoft.com)
既定では、新しい列の DataType は文字列になります。


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