X



ふらっと C#,C♯,C#(初心者用) Part128 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2017/05/02(火) 22:05:40.13ID:OPFlvhxj
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part127 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489498042/

■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0003デフォルトの名無しさん
垢版 |
2017/05/02(火) 22:27:22.22ID:zgEKCDSk
>>1おつ

そういえば、変数名にvarは使えるんだよな
int var = 0;
みたいなコードを見てギョッとしたおもひで
0008デフォルトの名無しさん
垢版 |
2017/05/03(水) 00:31:58.92ID:kdqGhQXm
Linq使うなラムダ使うなvar使うな保守できない読めないって自分がバカなのをまず自覚してほしい
0011デフォルトの名無しさん
垢版 |
2017/05/03(水) 06:47:51.71ID:zkWNfzXl
>>10
俺からするとその程度で読めなくなるようなカスを集めて何がやりたいのかな?って思う
0013デフォルトの名無しさん
垢版 |
2017/05/03(水) 07:00:27.28ID:Gc6xuRHP
>>9
型明記しなきゃわからないなら
画面内に型が表示されていないとわからないレベルでしょ?
0018デフォルトの名無しさん
垢版 |
2017/05/03(水) 12:08:34.66ID:9NtpzxGG
他人(MS)が作った言語に文句ばかり垂れてるヘタレ底辺
嫌なら自分で好みの言語作ればいいのに
0020デフォルトの名無しさん
垢版 |
2017/05/03(水) 12:34:48.91ID:IhwilyPb
>>18
そういうの滲み出てるからc#で作れるものって少ないじゃん
windowsアプリとゲームぐらいじゃないの?

ストアアプリも失敗
silverlightも失敗
WPFも失敗
Azureも失敗

c#で作れるものってWindowsFormとゲームしか残ってないよな?
0023デフォルトの名無しさん
垢版 |
2017/05/03(水) 13:39:58.01ID:FWXQV7fR
>>17
こういう「リファクタリング」する人よくいるわ
なぜそう書かれているのかをあまり考えず簡略化してしまって結果動作が変わる
0025デフォルトの名無しさん
垢版 |
2017/05/03(水) 14:27:23.36ID:PAB4dkAH
>>24
-1が何を指してるかわからないマジックナンバーだから本来は許されないが
MSも同じことをやってる
これは完全に悪習

たちが悪いやつになると-1を前提にして計算してぱっと見何をやってるかわからなくなってる
cのころifの判定に数式を入れて分岐してたのと同じぐらいの害悪

c#はifの判定結果がboolじゃないとコンパイラエラー
bool?もダメ
0026デフォルトの名無しさん
垢版 |
2017/05/03(水) 14:30:14.36ID:PAB4dkAH
nullをわざわざはじいておきながら-1というマジックナンバーを導入している
変な風習
将来はなくすべき
0028デフォルトの名無しさん
垢版 |
2017/05/03(水) 14:55:55.52ID:PAB4dkAH
仮に
var x = hoge?.Value ?? -1;
として-1が返ってきたとしてそれをそのまま使うのか?

そのあとif(x==-1)するなら最初からvar x = hoge?.Value ?? -1;なんてしないで
if(hoge==null)したほうがいい
0029デフォルトの名無しさん
垢版 |
2017/05/03(水) 14:59:59.06ID:Qe/Rl4Fq
ワッチョイが消えたせいで ID:PAB4dkAH みたいなヤツをNGに登録するのが面倒になったな
0030デフォルトの名無しさん
垢版 |
2017/05/03(水) 15:02:18.92ID:PAB4dkAH
理解できないならいいよ

おまけ
pythonとかじゃ配列にマイナス添え字が使えるので
indexの見つからない結果に-1は不適切
0031デフォルトの名無しさん
垢版 |
2017/05/03(水) 15:05:37.18ID:Qe/Rl4Fq
理解できるできないの問題じゃねーよ
ここは「初心者用」なんだよスレチ野郎はさっさと消えろ
0032デフォルトの名無しさん
垢版 |
2017/05/03(水) 15:08:37.35ID:PAB4dkAH
初心者の皆様へ

意味を持たない自分が勝手に決めた俺俺数字 -1は使わないようにしようね
こういうのはマジックナンバーと言って使うなとそのうち教わります
0033デフォルトの名無しさん
垢版 |
2017/05/03(水) 15:14:01.74ID:EjDQxWog
初心者はまず使わないし式の意味わからないだろうから心配いらんと思うが
0034デフォルトの名無しさん
垢版 |
2017/05/03(水) 15:15:04.81ID:PAB4dkAH
var x = hoge?.Value ?? -1;が一般的とか使われるようになってきたとか
初心者に間違った知識を植え付けないほうがいいでは?
0037デフォルトの名無しさん
垢版 |
2017/05/03(水) 15:24:15.23ID:PAB4dkAH
俺のことはC#でググれとか言ってる岩永氏も同じレベルなんだからしょうがないわな・・・
0039デフォルトの名無しさん
垢版 |
2017/05/03(水) 15:37:34.40ID:aKL6bPvW
まさか真面目に言ってるとは思わなかったw

var x = hoge?.Value ?? -1;
この-1がマジックナンバーかどうかはケースバイケース。
変数名がちゃんとしていて意図が読み取れれば-1の意味は自明な場合もある。

しかし、ID:PAB4dkAHみたいなのが職場におったらやりづらいねw
0040デフォルトの名無しさん
垢版 |
2017/05/03(水) 15:44:35.37ID:IGshBH22
全体の意図把握せずに一行だけ見て「初心者はこれをやってはいけない」
とか職場で言っていたら無能どころかキチガイ
0041デフォルトの名無しさん
垢版 |
2017/05/03(水) 15:48:17.50ID:aKL6bPvW
どんな道具も使い方次第で凶器にもなりうるわけで、
極端な話、こういう構文だから、こういう書き方だから一律にわかりづらいなんてことはなく、
すべてがケースバーケースなんだけど、そういう実質を自分の頭で判断する能力がない人が
羹に懲りてなますを吹いちゃうと、こういう形式にこだわるセキセントリックな奴になっちゃうんだろうね
0043デフォルトの名無しさん
垢版 |
2017/05/03(水) 16:36:15.72ID:0sDWrHda
ID:QAOFniPk と言う無職
0045デフォルトの名無しさん
垢版 |
2017/05/03(水) 16:57:56.10ID:AgXd40Zr
言語の新機能が設計から実装に落とし込むための機能じゃなくて
厨房の工作レベルの計画性しかなくて呆れる
ラムダ式、var、linqとか
この設計を実現するために、この言語にはこの表現が必要なんだ!

って代物か?
なんか開発経験の浅い素人がちょっと変わった表現入れて見ましたレベルのゴミじゃね?
って言うのはさ、想定する理想の設計書が言語から見えない
こんなの続けてたら早めに終わるよ
0049デフォルトの名無しさん
垢版 |
2017/05/03(水) 17:34:31.33ID:0sDWrHda
夕食

はい、無職いがい言えました

少ない情報でそんな結論に到達する
 お前の頭のほうが可哀想だろ?
0053デフォルトの名無しさん
垢版 |
2017/05/03(水) 18:03:08.53ID:yMHwWAzs
夕食?
本人は面白いんだろうな...
こんな少ない情報で語彙のレベルがわかるのも珍しい w
0054デフォルトの名無しさん
垢版 |
2017/05/03(水) 18:10:02.53ID:0sDWrHda
秋田
0056デフォルトの名無しさん
垢版 |
2017/05/03(水) 18:30:30.49ID:tOtENMmp
var使うためにはvarのためにコードを記述しないと動かない
var出ないコードで動いてもvarで動くとは限らない
のでますます使いたくない
0060デフォルトの名無しさん
垢版 |
2017/05/03(水) 19:33:55.40ID:yMHwWAzs
>>52
それじゃなくて
>> 514
> カーソル当てて見れるのって実行中だけじゃねっけ?
でしょ
まあデータヒントと勘違いしたんだろうけど恥ずかしいのには変わりないわな
0062デフォルトの名無しさん
垢版 |
2017/05/03(水) 20:53:55.67ID:n84gKlGC
>>60
でも実行中しか見れないのもあった気がするから
今度メモっとくよ
そのおかげでいちいち実行して型調べてってやってた記憶がある
0065デフォルトの名無しさん
垢版 |
2017/05/04(木) 02:39:11.85ID:EbOwgvak
>>58
varが使えないのは型変換やキャストが伴うときだけのはず
キャストならもちろん実行例外になる可能性もある
「varでないコードで動いてもvarで動かない」時は型変換伴う特殊なコードを記述してる時だから、それを気付けるのはむしろメリット

そもそも、今XDocumemtじゃなくてXmlDocumentを使う必要って何かあるんだっけ?
0070デフォルトの名無しさん
垢版 |
2017/05/04(木) 12:55:34.05ID:jK3vPaI/
実のない議論がよっぽど好きなんだろうな
「絶対使え」VS「絶対使うな」になっている人もいるみたいだし
こんな連中が仕事でやっているとか信じられなーいw
0074デフォルトの名無しさん
垢版 |
2017/05/06(土) 03:15:29.49ID:pFOk+Mr/
<MouseBinding Gesture="LeftClick" Command="{Binding PlayCommand}" CommandParameter="{Binding ElementName=mediaElement}"/>
ViewModelでmediaElement.Play()
とやっているんですが、ViewModelで直接GUIを操作するのは良くないですか?
0075デフォルトの名無しさん
垢版 |
2017/05/06(土) 04:19:00.57ID:JAj3fJt6
>>74
いいんじゃねぇの
どうせVisibilityとかBrushとかVMに持ってるんだろ?
それらと同列だよMediaElementだって。

完全に分離するならVMでSystem.Windowsをusingした時点で負け
0078デフォルトの名無しさん
垢版 |
2017/05/06(土) 12:57:36.09ID:8ByKHzLH
randomって今時デフォシード秒単位なのかよ
毎回インスタンス作ってたウンコプログラムで同じのがで続けて困ってたw
まぁバグを分かりやすくしてんのかな?
0083デフォルトの名無しさん
垢版 |
2017/05/06(土) 22:26:19.40ID:E68EYTdk
varの話してもいいですか?
008580
垢版 |
2017/05/07(日) 03:10:43.47ID:GwfheDvL
作った方はもう居ないんですがOleDbConnectionでConnectメソッドを呼び出しているわけではないんです
なのにmdbファイルから読んでいるみたいなのです。変数の定義元に行っても以下のように書いてあり、拡張子は.csではないです
hogehoge {
}

これってどうやってmdbファイルにアクセスしているんでしょうか?エスパーになりますがよろしくお願いします
0086デフォルトの名無しさん
垢版 |
2017/05/07(日) 09:25:44.48ID:2TKwZSPE
1.OleDbConnectionクラスなの?派生なの?
2.それはOpenメソッドを呼び出しいるの?
3.mdbファイル名がプロジェクトの定数に設定されてない?
4.変数の定義元のファイル拡張子ってなに?

どーせDSN接続とか、接続文字列リソース内にありましたとかじゃねーの
008880
垢版 |
2017/05/08(月) 19:27:02.19ID:omDRiSwu
拡張子はxsdでした
3みたいに定義はされていましたが何なのかわかりません
0090デフォルトの名無しさん
垢版 |
2017/05/11(木) 00:02:37.39ID:In0r9D2X
初心者質問で申し訳ないのですが
form1が親フォーム、form2が子フォームの時
form1にform1のコントロールを操作する関数があり、form2からその関数を実行するには、form2のコンストラクタにform1のオブジェクト(f1)を渡せばf1.hohe()のように実行出来るのでしょうか
適切な方法がいまいちわかりません。どなたかご教授頂けると助かります
0092デフォルトの名無しさん
垢版 |
2017/05/11(木) 00:18:13.36ID:deUGmbrA
varの話してもいいですか?
0093デフォルトの名無しさん
垢版 |
2017/05/11(木) 00:20:37.09ID:tLIafHnt
>>90
確かにForm1のメソッドをpublicかinternalで公開して、Form2がForm1のインスタンスを
何らかの方法で持てば実現できるけど、あくまで一般論で言えばFormのメソッドを
外部に公開するのは不適切な場合が多いと思うよ

普通は、

Form1からモデルMのメソッドを呼び出す

Mが何らかのイベント発生

Form2はMのイベントを受信して何か処理をする

こんな流れじゃないの?
0095デフォルトの名無しさん
垢版 |
2017/05/11(木) 00:40:50.67ID:Wt/R3NkD
>>91>>93
ありがとうございます

>>91で紹介された方法で実行しようと考えてたのですが、>>93の指摘からform2にイベントハンドラを追加してコールバックイベントで実行するのが良さそうですね
再度検討してみます
0096デフォルトの名無しさん
垢版 |
2017/05/11(木) 09:10:31.71ID:HCpPVWHs
>>93
Form1からモデルMのメソッドを呼び出す

Mが何らかのイベント発生

Form2はMのイベントを受信して何か処理をする

Form2がなんらかのイベント発生

Mがイベントを受信してイベント発生

Form1がMのイベントを受信してコントロールを操作する

アホみたいな設計だな
0100デフォルトの名無しさん
垢版 |
2017/05/11(木) 10:04:09.58ID:bPF/k6WN
まあ、どうしてVとMを分離するのか理解してないとそういう発想になるね
なんでそんな回りくどいことをする必要があるんだ!って(笑)
そういうのは部分最適って言うんだけどさ
0101デフォルトの名無しさん
垢版 |
2017/05/11(木) 10:37:36.53ID:k8LkF3Rq
場合によるでしょ
社員のセクハラが発覚したら人事から懲戒処分が出るみたいな処理を>>98みたいな実装するのは最悪だけど、
ビューに閉じた処理なら別にいい
0103デフォルトの名無しさん
垢版 |
2017/05/11(木) 11:15:50.68ID:Nmw4yzni
そもそも画面を2つも3つも作る設計が駄目
って中々言いにくいんだよな
メインの画面遷移とウインドウは有っても確認ダイアログ程度ってのが使いやすいんだが
0107デフォルトの名無しさん
垢版 |
2017/05/11(木) 19:51:33.23ID:Fmy4inGe
すべてをあてはめることが正とまでは思わんが過去に生まれて今まで生きてる考えは大切にしたい

あと意志疎通するときに共通言語があるとやりやすいってのもある
0108デフォルトの名無しさん
垢版 |
2017/05/11(木) 22:34:16.25ID:Wt/R3NkD
Formアプリケーションのdatagridviewなんですが
プロパティである列だけボタンセルにしたとき、初期処理で空の100行を作るとボタンにした列に全てボタンが並びます
これを最初の列に値が入ってるところだけ、ボタン表示させることって出来るでしょうか?
例えば100行のうち最初の10行だけセルに値が入り、ボタンも10行目までしか表示されないといった感じです
0109デフォルトの名無しさん
垢版 |
2017/05/11(木) 22:38:08.56ID:/9yi1ILC
>>98
ありがとうございます
指導頂いた方法でも試してみます
0110デフォルトの名無しさん
垢版 |
2017/05/11(木) 22:51:43.92ID:RY17F3BC
リークする可能性がない場合でもイベントにラムダ式を登録するのは
なんか嫌だね。

これはvar使うなみたいな教条主義じゃなくて、実際問題
コードの見通しを悪くするだけの場合の方が多いと思う。
0112デフォルトの名無しさん
垢版 |
2017/05/11(木) 23:12:34.95ID:deUGmbrA

varに殺された人の怨念が渦巻いておる
0115デフォルトの名無しさん
垢版 |
2017/05/12(金) 03:37:10.22ID:buo/LFts
>>105
だいたいこんなんある、とだけ知っておいて必要時に調べる程度でいいと思う

無理になんかのパターンに当てはめようとしてクラス図書きました
結果いろいろマズくてAdapterで接ぎました
とか笑い話にもならん
0119デフォルトの名無しさん
垢版 |
2017/05/12(金) 15:28:11.73ID:rar2tz1g
https://msdn.microsoft.com/ja-jp/library/system.collections.ienumerator(v=vs.110).aspx

このスクリプトの、Peopleクラスのprivate Person[] _people;に
Personクラスのインスタンスを3つ代入した後の動作が全くわかりません。
どのタイミングでGetEnumerator()が呼び出されるんでしょうか?
GetEnumerator()が呼び出されたとしても、public Person[] _people;に値が代入されてから
IEnumeratorの実装メソッドがどこで呼び出され、どのように互いに影響してるのかわかりません。
どなたか教えていただけますでしょうか?
0120デフォルトの名無しさん
垢版 |
2017/05/12(金) 15:39:20.58ID:RyB9wBnj
>>119
foreach文はGetEnumeratorやIEnumeratorの実装メソッドの呼び出しに展開されるので、そこで呼び出されてる

どう展開されるかはググれば出るだろうから調べてみて
0121デフォルトの名無しさん
垢版 |
2017/05/12(金) 16:16:55.87ID:1e2m781m
>>119
まずforeachはpeople.GetEnumerator()を実行して
IEnumeratorを取得します
あとはそれを使って反復処理を実行します
PeopleクラスはPeopleEnumというEnumeratorを使っていますよと示しているだけ
0122デフォルトの名無しさん
垢版 |
2017/05/12(金) 18:09:13.09ID:rar2tz1g
>>120>>121
GetEnumeratorの呼び出しのタイミングが解かったら、IEnumeratorの処理もなんとなく理解できました。
ありがとうございました。
0123デフォルトの名無しさん
垢版 |
2017/05/12(金) 20:01:54.80ID:jvu/Dkon
SQL Server 2012にあるデータ(ビュー)を取得し、それを条件で絞ったあとDataGridViewで表示させたいのですが自分の知識不足かうまくできません
DataGridViewのDataSourceプロパティにDataSetを指定するのが一番簡単なのかと思うのですが、クエリを動的に指定できず・・・挫折しました
0124デフォルトの名無しさん
垢版 |
2017/05/12(金) 20:03:15.18ID:jvu/Dkon
途中で書き込んでしまいました
どうすればもっと簡単にできるでしょうか?
0125デフォルトの名無しさん
垢版 |
2017/05/12(金) 22:17:23.05ID:TH+jg9IW
DataSourceにできるかどうかしらんが

DataView使う
LINQ(to DataSet)でデータセットいじる
DataSetやめてEFつかう

お好きな方法でどうぞ
0129デフォルトの名無しさん
垢版 |
2017/05/13(土) 01:35:24.98ID:sHoGv97L
タスクバー常駐型のアプリを作ってます。
起動時に確保したヒープを起動中は保持し続けてるのですが、
この領域が長期間運用中もビット化け等を起こしていないかチェックするには
どのような方法があるでしょうか?

またECCメモリだとビット化けの心配は無いのでしょうか?
0130デフォルトの名無しさん
垢版 |
2017/05/13(土) 02:44:06.49ID:D+nN5dSS
CRCとか?
2倍の領域を確保してミラーリングみたいにするとか?
どっちにしろC#向きじゃないような気が...
0131デフォルトの名無しさん
垢版 |
2017/05/13(土) 02:58:37.95ID:a/q/GLOb
>>129
ECCメモリーは、訂正可能なエラーは文字通り訂正されるから、化ける確率はずっと低くなるけど、
稀に訂正不可能なエラーが発生する場合もあるから、全く化けないわけじゃない。
0132129
垢版 |
2017/05/13(土) 03:16:23.00ID:sHoGv97L
C#でDictionary構造を保持しています。
Dictionaryに格納しているデータは任意のタイミングで変更されます(頻繁ではない)。

データに変化があるたびにDictionaryをバイト配列に変換してサムを算出し、
定期的にチェックサムするっていう方式はビット化けに対して有効でしょうか?
0134デフォルトの名無しさん
垢版 |
2017/05/13(土) 06:43:20.62ID:R3eq2uIx
>>132
メモリが勝手に化けることを想定したらプログラミングは全く成り立たないので無視
ユーザーコードからの普通の書き込みについては、Dictionaryを直接晒さずに特定のメソッド経由で書き換えさせるようにすれば確実にフックできる
0135デフォルトの名無しさん
垢版 |
2017/05/13(土) 06:56:04.40ID:499UT8S9
>>132
こういうレイヤを分けて考えられない奴っているよな
特にインフラ系から来た奴にありがち
「変数が多いなら抽象化しろ」という考え方が理解できず、
if一行足せば済む問題を必死でネットワークの設定弄り続けて回避しようとする
0140デフォルトの名無しさん
垢版 |
2017/05/13(土) 10:34:05.94ID:hW1ZB19M
>>138
nugetでサンプル例を公開みたいな流れで、プロジェクトをダウンロードしても内容が訳ワカメなんだろうね。

( ノД`)…
0143デフォルトの名無しさん
垢版 |
2017/05/13(土) 11:45:53.97ID:rBo1iP3S
文化の違いがどうしようもない

日本人は縦横の線が入った表に慣れてる
アメリカ人は線がない方が好み
0146デフォルトの名無しさん
垢版 |
2017/05/13(土) 13:45:34.70ID:imuXkIUh
そもそもWPFは論理的レイアウトに隅々まで拘った極めて欧米的な設計思想で作られていて、
Excel方眼紙を愛する未開の列島民族が手を出しちゃいけない代物だよ
0147デフォルトの名無しさん
垢版 |
2017/05/13(土) 14:03:04.20ID:0mphNaBc
確かに国産のアプリってUIのレイアウトがしっちゃかめっちゃかだよな
画面だけ見てもモデルがパッと頭に浮かばない
これじゃユーザーも自分は今何を操作しようとしてこの画面を開いてるんだろうって混乱すると思うのだが
そういうこと考えないのかね日本人って
0148デフォルトの名無しさん
垢版 |
2017/05/13(土) 15:23:35.46ID:uYz1OrPp
レイアウトとかユーザービリティーに無頓着なのは
どちらかと言えば欧米人の方だと思うけどね。

っていうか、欧米はガイドラインやコンセプトの設計者は優秀なんだろうけど、
現場の下っ端がアホなんだろうね。
0150デフォルトの名無しさん
垢版 |
2017/05/13(土) 17:15:40.88ID:fNJg9X4W
日本人は、ってわけでもないと思うんだけど、現場に近い人間ほど、枝葉末節まで詳細に決めたがる(決めさせたがる)くせに、UX基礎知識が無くてオレオレルールを押し付ける傾向にある気がする。
だから、何でも出来るポテンシャルはあるんだけど、やり方が全く理解できずに、結局何にも使えないガラクタが多い感がある。
使用者に勤勉を求めるUIは悪だよな。
0151デフォルトの名無しさん
垢版 |
2017/05/13(土) 17:25:13.23ID:BGrmsOZ0
デザインはわからんなぁ
一点透視図で矛盾なく並べたところで「だっせぇ」って言われたら終わりだしね
0153デフォルトの名無しさん
垢版 |
2017/05/13(土) 18:49:49.73ID:fNJg9X4W
「見栄え」って意味のデザインは、ぶっちゃけどうでもいいと思ってる。
それは主観評価だからねー。
愛着には関係するけど、使い易さへの影響度はほとんど無いと思う事ね。

入力項目多すぎとか、あるあるだよね。
0157デフォルトの名無しさん
垢版 |
2017/05/14(日) 10:47:33.08ID:0uI+mSYs
ゲームやドロー系除いてタブ移動やフォーカス管理がちゃんと考慮されてればデザインなんて気にしないよ
今はOS自体がそういった基本UI変えてくる糞になってるけど
0158デフォルトの名無しさん
垢版 |
2017/05/14(日) 10:56:41.46ID:R3oKaNsf
モデルオブジェクトを取得して
新しい内部状態を入力して
送信して保存する
こういうUIは使いにくい

モデルオブジェクトを取得して
メソッド引数を入力して
送信してメソッドを呼び出して保存する
こういうUIは使いやすい
0163デフォルトの名無しさん
垢版 |
2017/05/14(日) 14:55:13.18ID:8Y89/URi
> クラスに直接メソッド書くなボケ
えっ、普通そうするやん
って思ったら直接文を書いてたのか w
確かに想像以上だわ
0164デフォルトの名無しさん
垢版 |
2017/05/14(日) 17:05:55.65ID:m/JH8Lz+
関数名とか日本語ですけどダメですかね?
なでしこ言語から入ったので、まぁいっかな、とか思ってます。
0167デフォルトの名無しさん
垢版 |
2017/05/14(日) 18:21:04.68ID:VOaapSFu
変数名だろうがメソッド名だろうが日本語にしても問題ないからな
もしIDEにエラー表示出ているのなら、ここで聞くのは荒らしレベル
0173デフォルトの名無しさん
垢版 |
2017/05/14(日) 19:04:12.94ID:m1coD/cI
個人レベルなら変数名、メソッド名に日本語使うのはおk
訳の分からない英語にするよりはいいんじゃないか?

ダメな例
void Convert_Data()

void Method_01(int i)
0174デフォルトの名無しさん
垢版 |
2017/05/14(日) 21:04:12.46ID:3fFVFQc0
うちのも変数メソッドは日本語にしたくなって来た
辞書引いたりググりながらやったりして調べてるけど後で見返すと読めないのがあったりして困るときあるし
0175デフォルトの名無しさん
垢版 |
2017/05/14(日) 21:30:38.16ID:8Y89/URi
VBA で将来自分が保守しないコードは日本語識別子にしてる
あとデータベースの表名とか列名も日本語だな
それ以外は習慣でまだ英字だな
0178デフォルトの名無しさん
垢版 |
2017/05/15(月) 00:13:11.99ID:WWr1mKyF
複数とか諸とか「たち」とかつければOK
まあ日本語なんてインテリセンス殺しの名前は俺は絶対使わないけどw
0179デフォルトの名無しさん
垢版 |
2017/05/15(月) 00:44:55.37ID:Fre6jJ42
質問です
ApplicationSettingsBase(を継承したクラス)において
applicationScopedSetting 属性をつけたプロパティのデータが保存されません。
(userScopedSetting のものは保存されます。)

applicationScopedSetting属性のものはどうやったら保存されるのでしょうか。
また、どのような使い道があるのでしょうか。

おねがいします
0180デフォルトの名無しさん
垢版 |
2017/05/15(月) 01:46:58.70ID:H6WdDjEY
設定プロバイダを自作しないと保存できないんだったか

使い道?アプリケーションで共有する読み取り専用の値を書くんだよ
DB接続文字列とか
0181デフォルトの名無しさん
垢版 |
2017/05/15(月) 15:15:02.32ID:DW83hE61
お前らthisつける派?
0182デフォルトの名無しさん
垢版 |
2017/05/15(月) 15:45:00.88ID:uzaXOcwn
>>181
初心者の俺もそれ知りたい。
偉そうにしてる皆さん達による個々の信仰からのバトルを期待。
0183デフォルトの名無しさん
垢版 |
2017/05/15(月) 15:54:57.49ID:APQEqBwf
あえてthisを付けるのが正当化されるのは、引数やローカル変数の値を同じ名前
(またはキャメル形式かパスカル形式かだけが違う)のプロパティーやフィールドに
代入する時ぐらいかね。
0184デフォルトの名無しさん
垢版 |
2017/05/15(月) 16:29:55.58ID:zwx/TTMf
this や self だけじゃなく呼び出し側オブジェクトも
his とか her で参照できていたらパラダイム変わってたよね
0185デフォルトの名無しさん
垢版 |
2017/05/15(月) 16:55:55.59ID:a/4QJWcH
つける方が好きではあるんだけど、VSだかReSharperだかが消せって言ってくるのでそっちに合わさせたかなぁ
0187デフォルトの名無しさん
垢版 |
2017/05/15(月) 18:25:08.24ID:cef61/4v
C#で何つくれば一人前なん?
0189デフォルトの名無しさん
垢版 |
2017/05/15(月) 19:14:36.37ID:7MwFbRFx
普段this付ないや規則があれば付けるけど
0191デフォルトの名無しさん
垢版 |
2017/05/15(月) 19:42:05.75ID:1kHxYJuC
全部のメソッド呼び出しにthis付けているソース見たことあるわ
baseが見辛かったことだけ覚えている
0196デフォルトの名無しさん
垢版 |
2017/05/15(月) 20:58:22.16ID:MBLyoBiO
最近はインテリセンスも賢くなったからthisは消してる
昔はthis打った方が補完が安定した
0197デフォルトの名無しさん
垢版 |
2017/05/15(月) 20:59:47.42ID:cef61/4v
入門書読んでるけど、キーワードが80個しか無いってホントなん?
コンテキスト キーワードのみって事なん?
0199デフォルトの名無しさん
垢版 |
2017/05/15(月) 21:18:38.92ID:QfNwrH5V
c#について質問です。
生成したファイルを実行時に呼び出したいんですが、
絶対パスで指定している場合、環境が代わってしまうと
パス変わってしまうので読み出せなくなってしまいます。
どの環境でも正しく読み出せるように
絶対パスではなく実行ファイルのディレクトリに
ビルド時に生成するものを作りたいんですが
どうすればよろしいでしょうか?

なんとなくリソースなどにファイルを追加設定すればいいのかと思ったのですが
実行してもどこにも生成されませんでした
VisualStudioの扱いに慣れてなくて申し訳ございませんが
そのあたりご存じの方いたら教えてください。
0200デフォルトの名無しさん
垢版 |
2017/05/15(月) 21:27:26.62ID:cef61/4v
>>198
今見てるサイトで笑った
0202デフォルトの名無しさん
垢版 |
2017/05/15(月) 23:59:09.51ID:MBLyoBiO
msbuildはタスク追加めんどくさいよね
Coreになった時にcsproj引き継がないでgradleライクなスクリプトに変えればよかったのに
0205デフォルトの名無しさん
垢版 |
2017/05/16(火) 10:27:28.95ID:JvSvSRd1
Formアプリケーションを作成しているのですが
複数のクラスで発生したそれぞれのエラーをエラーが発生した時に
メッセージボックスに表示してかつログに書き込みたいですのですが
各クラスにはどういう実装をするのがいいのでしょうか
0206デフォルトの名無しさん
垢版 |
2017/05/16(火) 10:49:45.75ID:z70mDz+n
C#
ボタン配置しても、ダブルクリックでコードが出ない
http://fast-uploader.com/file/7050419469159/

本当に困っているので、教えて頂けると助かります
0207デフォルトの名無しさん
垢版 |
2017/05/16(火) 11:27:54.26ID:z70mDz+n
pyhonファイルも使えると聞いたのですが、やり方はどうすれば良いのでしょうか?
調べてもmacやubuntuしかでて来ませんでした。
OSはlinux mintです
0208デフォルトの名無しさん
垢版 |
2017/05/16(火) 11:45:34.03ID:z70mDz+n
using System;
using System.Windows.Forms;

public Sample(a,b)
{
Console.Write(a);
MessageBox.Show(b);
}

Sanmple呼び出し
↑↑↑
を最後に埋め込み
0209デフォルトの名無しさん
垢版 |
2017/05/16(火) 13:52:34.17ID:z70mDz+n
何とかなりませんかね?
0210デフォルトの名無しさん
垢版 |
2017/05/16(火) 15:06:12.06ID:2YPoPkpm
先生、sqlbulkcopyでdatatableをDB(sqlserver)に入れたいのですが、datatable内の1カラムにgetdate()を設定することは可能でしょうか?
0211デフォルトの名無しさん
垢版 |
2017/05/16(火) 15:09:53.48ID:z70mDz+n
はい、可能です
0212デフォルトの名無しさん
垢版 |
2017/05/16(火) 15:13:05.65ID:2YPoPkpm
>>211
マジですか!調べてみても分からなかったので出来れば設定方法をご教授願います
0215デフォルトの名無しさん
垢版 |
2017/05/16(火) 18:47:27.26ID:/hvrKFRI
>>210
sqlserverならコピー先のテーブルの既定値にgetdate()設定しておけばいいんじゃないの
少なくともDataTableのExpressionじゃ目当ての処理はできないと思う
0216雪風
垢版 |
2017/05/16(火) 19:14:17.44ID:z70mDz+n
死ねなんて、言われた事ないな
0219デフォルトの名無しさん
垢版 |
2017/05/16(火) 21:36:37.56ID:fxDdBjd8
>>205です
>>208>>217>>218
ありがとうございます

イメージとしては、各クラスで起こった例外をcatchしたときコールバック出来るデリゲートを準備して、それぞれのクラスのコンストラクタにformで定義したメソッドを渡してやるといった感じなのですが、一般的にどういったやり方をするもんなのかと思いまして
MessageBox.Show()を実行させるので、エラー発生時の処理を全てform内に記述するのが普通なんですかね?
0220デフォルトの名無しさん
垢版 |
2017/05/16(火) 21:46:34.93ID:fjoeC8EN
>>219
クラスを同時実行しないのならForm内にエラー処理メソッド作って
・エラーが起きたときに各クラスからそのメソッドを呼び出す
・クラス終了時にエラーを示す返値を出してFormで判断する
普通とか存在しないからその他好きに作ればいいよ
クラス同時実行するのならちょっと面倒になるけど
MessageBox.Show()を使うよりFormにRichTextBoxかLabelで表示したほうが分かりやすいと思うけど
0221デフォルトの名無しさん
垢版 |
2017/05/16(火) 21:55:35.21ID:64KrDfHK
>>219
例外はなるべく呼び出し階層の上の方でキャッチするのが基本
フォームアプリならそれはすなわちイベントハンドラになる
ヘタに奥の方でキャッチして握り潰すよりずっといい
その代わり、どこで例外が発生して処理か打ち切られてもリソースのリークなどの問題が起きないように
常に例外安全なコーディングをすること
0222デフォルトの名無しさん
垢版 |
2017/05/16(火) 21:55:53.25ID:kR+Ii8XK
エラーを記録する事に情熱を燃やすよりもエラーを出さないコードを書く事に集中する方がいいと思う。
0223デフォルトの名無しさん
垢版 |
2017/05/16(火) 22:10:05.09ID:fxabLeuL
エラーを出さないようにするにはエラーを記録することが役に立つから情熱をかけてもいい
0225デフォルトの名無しさん
垢版 |
2017/05/16(火) 22:22:33.82ID:Ag35s8j3
コンパイラをframeworkで標準装備って、ウイルス的に良くないと思うのだけど?
0226デフォルトの名無しさん
垢版 |
2017/05/16(火) 22:31:35.05ID:AGzM1pll
>>219
よく分からんけど、個々の例外ハンドラーでいちいちメッセージの表示とログの処理を書くのが面倒だってことなら
こんなのはどうかね。
もちろん、まったく一般的でも何でもないはずだけどw


(1) すでに適切に処理された例外を表すHandledExceptionを定義

(2) 個々の例外ハンドラーではキャッチした例外をHandledExceptionのInnerExceptionに
入れてHandledExceptionをスロー

(3) 集約例外ハンドラーを使ってHandledExceptionのInnerExceptionを使って
メッセージの表示とログを行う

集約例外ハンドラーって俺はあんまり使ったことないけどこういうやつ
http://www.atmarkit.co.jp/ait/articles/0507/01/news134.html
0228デフォルトの名無しさん
垢版 |
2017/05/16(火) 22:37:25.86ID:zhIbn0v9
エラー処理は置いといて、
自分はログや経過表示にはログクラスを作って各クラスにインスタンスを渡してるな
0229デフォルトの名無しさん
垢版 |
2017/05/16(火) 22:41:10.27ID:VGECTk9b
例外はキャッチされようがされまいがメソッドを抜けた時点で必ず後片付けが完了しているのが正しい
極端な話、全部UnhandledExceptionで処理しても問題ないはず
0230デフォルトの名無しさん
垢版 |
2017/05/16(火) 22:54:27.55ID:4vSkrFsf
下のコードで、var fuga からインデックス等で最初の要素を指定して
データを取得したいのですが、どのように書けば行けるでしょうか?

class Hoge
{
public int hoge { get; set; }
}

static void Main(string[] args)
{
List<Hoge> hogehoge = new List<Hoge>();
hogehoge.Add(new Hoge { hoge = 1 });
var fuga = hogehoge.Where(e => e.hoge==1);
int hogege = fuga[0].hoge; //インデックス等で最初の要素だけ取得したい
}
0232デフォルトの名無しさん
垢版 |
2017/05/16(火) 23:02:22.98ID:iUpJkWmO
>>205です
皆さんありがとうございます
すごく参考になるレス頂けてとても助かりました
指摘頂いたことを参考に頑張ってみます
またわからないことあったら質問させてください
0235230
垢版 |
2017/05/17(水) 00:17:28.91ID:F4n193dh
fuga.First()がまさに求めていたものでした
fuga.ToList()というやり方も、非常に参考になります。

ありがとうございました。
0236デフォルトの名無しさん
垢版 |
2017/05/17(水) 01:29:46.60ID:4KwX7I2m
>>235
fuga.ToList()の方は一旦条件に該当するもの全部の配列を作るから、First()を使うのと比べて無駄がある。
さらに言うなら、この場合はWhere()も必要無くて、hogehoge.First( e => e.hoge ==1 )で良い。
0237デフォルトの名無しさん
垢版 |
2017/05/17(水) 08:36:02.32ID:oIZq9+Td
>>215
ありがとうございます。
私もその結論に至りました。
0238デフォルトの名無しさん
垢版 |
2017/05/18(木) 04:30:00.50ID:plBfXEwH
.netとapi絡みですがいいですか?
GetPrivateProfileStringですがどうやっても30000文字くらいまでしか読めません…
2000以降のOSだと読み込みの文字数制限無いって書いてるのに… なんででしょうか?
ちなみにC++から普通に全然読み込めました。
0239デフォルトの名無しさん
垢版 |
2017/05/18(木) 04:31:21.77ID:plBfXEwH
宣言はこんなかんじです。
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,
string key, string def, StringBuilder retString,
int size, string path);
0242デフォルトの名無しさん
垢版 |
2017/05/18(木) 05:20:15.27ID:plBfXEwH
こうやってみたけどダメでした… 無理かな…
[DllImport("Kernel32.dll", CharSet=CharSet.Unicode, EntryPoint="GetPrivateProfileStringW")]
0243デフォルトの名無しさん
垢版 |
2017/05/18(木) 05:51:43.24ID:3q2usjgF
無理かどうか以前にGetPrivateProfileStringで30000文字読み込むなんていう仕様がおかしい気が・・・
0245デフォルトの名無しさん
垢版 |
2017/05/18(木) 06:21:12.42ID:3q2usjgF
どこにそう書いてあるのか知らないけど自分の環境で試してみたら60000文字以上でも読めたよ
0249デフォルトの名無しさん
垢版 |
2017/05/18(木) 06:56:20.37ID:plBfXEwH
>>247
いやそういう事でもやっぱないような…
これでいいんですよね??
StringBuilder temp = new StringBuilder(99999999);
GetPrivateProfileString(Section, Key, "", temp, 99999999, path);
0250デフォルトの名無しさん
垢版 |
2017/05/18(木) 07:15:48.86ID:3q2usjgF
バッファの終端はNULL文字になるからそれだと99999998バイトまでしか読めないみたいよ
MSDNにその辺りのことが書いてある
99999999が仕様なら仕方ないけど、そうでないなら長さはちゃんと決めないとトラブルの元になるよ
0251デフォルトの名無しさん
垢版 |
2017/05/18(木) 07:26:40.34ID:plBfXEwH
>>250
というかよくわからないのが
WritePrivateProfileString()は最初の一回は30000文字以上でも書き込めるけど
2回目に試しに上書きしてみようとしてもうまくできないんですよね…
""空文字を設定してもダメみたいで…
一旦30000文字以上を書き込むと上書きも出来なくなります。
これReadPrivateProfileString()が読み込めないのと何か関係してるのかな…
意味が分からない…
0253デフォルトの名無しさん
垢版 |
2017/05/18(木) 07:39:21.49ID:bq0WS2qT
INIファイルはWin16の頃の遺物だからそんなでかい文字列を扱ってトラブルになるのも仕方ないと思う
ってかMSDN見ても30000文字以上扱えるという記述ないけど
0255デフォルトの名無しさん
垢版 |
2017/05/18(木) 08:26:32.47ID:plBfXEwH
>>253
今VC++からも読み込んでみたんですがどうやら勘違いでした。
31487文字までしかどうやっても読み込めませんでした。
GetPrivateProfileString()自体にやっぱ制限があるようです。
0256デフォルトの名無しさん
垢版 |
2017/05/18(木) 08:27:25.66ID:Za5q7uI4
なんでそんな限界に挑戦したいの?
どんな環境でも動くようにしたくないのか?
0257デフォルトの名無しさん
垢版 |
2017/05/18(木) 08:43:47.28ID:0yP1j9dj
iniファイル使わざるを得ない事情があるんだろうけどそれならAPIより.NETライブラリ探したほうがいいんじゃないの
0258デフォルトの名無しさん
垢版 |
2017/05/18(木) 08:48:31.58ID:plBfXEwH
>>256
古いアプリのファイルを読み込みたくて
>>257
何かよいソースないかさがしてみます。
最悪自力で読み込もうと思います。
0262デフォルトの名無しさん
垢版 |
2017/05/18(木) 18:13:55.78ID:kDiQJ8Uz
ビットフィールドないのけ?
あと固定長も

unsafeなんか入れたくないけど結構使うもん?
gchandleとmarshalでsafeにやった方がいいのかunsafe使いまくっても全然問題ないのか
みなさんの方針を教えてください
0265デフォルトの名無しさん
垢版 |
2017/05/18(木) 19:28:28.05ID:POnkIYdd
クロージャだの非同期タスクだの高レベルなことは各言語記述性高まってるけど、
エンディアン指定してビット長さ指定してビットフィールドとか
そういう低レベルなことを簡単に記述できる方向の進歩って少ないよね…

30年前と同じにシフトしてマスクして足すという
0266デフォルトの名無しさん
垢版 |
2017/05/18(木) 20:08:12.45ID:Zif2rhHO
>>255
Windows NT 4 の頃に WritePrivateProfileString( ) をガンガン使ってたらたまに戻ってこないことがあったので、マイクロソフトにインシデント使って問い合わせたらすったもんだの末に「仕様です」って言われた w
もうその頃から捨てたがってるのがありありだったわ
0267デフォルトの名無しさん
垢版 |
2017/05/18(木) 20:26:56.52ID:kDiQJ8Uz
>>263-4
32ビット境界になってればいいけど…
そこまでまだ見てないけど多分なってないんだよなぁ
取り敢えずその辺当たってみるわありがとさん!
0270デフォルトの名無しさん
垢版 |
2017/05/18(木) 22:40:26.48ID:K0KmS8r5
>>268
最大数十回程度だったと思う
ただ24時間運用の機器だったから再現テストがめちゃ大変だった
最後は自前で読み書きを実装した
0271デフォルトの名無しさん
垢版 |
2017/05/18(木) 23:10:55.63ID:anTKPcsr
>>270
iniに記録する類の情報なんかアプリ終了時の保存しようよそもそもw
いきなり電源落ちたら困る?
そういうのはハード(UPSとか)で対応しなきゃw
0272デフォルトの名無しさん
垢版 |
2017/05/19(金) 09:25:16.90ID:v7TM541h
下記のような処理をスマートに書くとどうなるでしょうか
for (int i = 0; i< 100; i++){
if (i< 50){
for (int j = 0; j< 20; j++){
if (j< 10){
hoge[idx] = 1;
}else{
hoge[idx] = 2;
}

idx++;
}
}else{
for (int j = 0; j< 20; j++){
if (j< 10){
hoge[idx] = 3;
}else{
hoge[idx] = 4;
}

idx++;
}
}
}
0275デフォルトの名無しさん
垢版 |
2017/05/19(金) 10:06:42.03ID:EmkjUD+o
>>272
const int COUNT = 2000;
int idx = 0;
int[] hoge = new int[COUNT];
var tmp = Enumerable.Range(idx, COUNT).Select(x => x / 10 % 2 + x / 1000 * 2 + 1).ToArray();
Array.Copy(tmp, 0, hoge, idx, COUNT);
idx += COUNT;
0279デフォルトの名無しさん
垢版 |
2017/05/19(金) 12:43:58.87ID:prKcdFJm
>>272
こんな感じ?
aはない方がいいかも

Action<int> a = (x) =>
{
  hoge[idx] = x;
  idx++;
};

Action<int, int> a2 = (first, second) =>
{
  for (int i = 0; i < 10; i++) a(first);
  for (int i = 0; i < 10; i++) a(second);
};

for (int i = 0; i < 50; i++) a2(1, 2);
for (int i = 0; i < 50; i++) a2(3, 4);
0282デフォルトの名無しさん
垢版 |
2017/05/19(金) 13:09:48.87ID:cfgUfLYa
そんなテトリスを十行で書いたから偉いみたいな厨房コードより
一番はじめのコードで定数を意味のわかる形にするだけでええと思うで
デバッガでも追いやすいと思うし
1行にありったけ詰め込んじゃうとバグったときに追いにくいし仕様書のどこがどのコードと一致してるかもわかりにくい
0283デフォルトの名無しさん
垢版 |
2017/05/19(金) 13:14:54.18ID:prKcdFJm
言っちゃ悪いけど、この程度のコードが分かりづらいと思うなら
プログラマなんかやめた方がいいよw

>>279みたいな書き方をする目的は行数を減らすことじゃない。

>>272のコードにある重複部分を一つにまとめるとともに、2重ループで構成される
スパゲッティーな構造を平坦化して見通しを良くすること
0284デフォルトの名無しさん
垢版 |
2017/05/19(金) 13:19:11.93ID:cfgUfLYa
>>283
俺は少しでも読みにくいと思うなら誰でも読めるコードに倒す派
程度問題になるなら簡単な表現にするよ
何より仕様書に書けない
お前そのラムダ式仕様書でどうやって表現するの?
0285デフォルトの名無しさん
垢版 |
2017/05/19(金) 13:22:52.04ID:prKcdFJm
言っても無駄なタイプだと思うけど、まともなプログラマなら
>>279の方が>>272より何倍も読みやすいと感じるはずだと思うよ。

>>279が読みづらいと思うなら、それは端的に君の能力不足ですw
悪いけどね

まあ、「マジックナンバーガー」なんて本質と無関係のことを吠えてるレベルの人には
分からないかもしれん。
0286デフォルトの名無しさん
垢版 |
2017/05/19(金) 13:26:48.87ID:cfgUfLYa
>>285
それは何人のプログラマにアンケートをとったの?
設計を語る割にはあんまりレビュー慣れしてないね
お前が不勉強だから俺のコードがわからないんだって解説が会社で通っているならまあそれがお前の不幸なんだろうな
0290デフォルトの名無しさん
垢版 |
2017/05/19(金) 13:42:16.23ID:wsjFAOP3
読める人が3人以上いれば使って良し
その場合、読めない奴は今後雑魚コーダーとして扱効果査定で技術力マイナス査定
俺らも遊びじゃないからね
何でもかんでも下に合わせるのはジャップランド運動会みたいで悪しき風習だ
0294デフォルトの名無しさん
垢版 |
2017/05/19(金) 13:46:42.22ID:cfgUfLYa
>>292
じゃあ、設計書無いのにソースだけ見ていいって言ってるわけだ

俺らの仕事は設計書を書いた段階で95%は終ってなきゃいけないよね
いいソースってのは設計書の内容をソースに反映できていることであって
ソースの見てくれがいいことじゃないよ
0296デフォルトの名無しさん
垢版 |
2017/05/19(金) 13:55:45.76ID:wsjFAOP3
設計書をコードに齟齬なく反映可能
だとすればその設計書はもはや設計書ではなくコードである
コードに置き換えるという無駄な行程を無くしてコンパイラに仕事をさせればよい

設計書をコードに齟齬なく反映不可能
だとすれば設計書至上論者の言ってることはハナから間違いとなる
反映不可能なのに反映したものが良いとはおかしな話だ
反映不可能なら書いたコードが設計書を正しく反映していると何をもって言えるのだろうか

結論
設計書至上主義者は現実が見えていないバカ
0297デフォルトの名無しさん
垢版 |
2017/05/19(金) 14:01:48.82ID:a+VoRKlA
設計書は「誰の為に」「何の為に」あるのか理解してる?
まさかプログラマの為に作られてるとでも思ってるの?
0300デフォルトの名無しさん
垢版 |
2017/05/19(金) 14:35:25.16ID:XSlpA42c
今回の命題はコードを簡単にするにはどんなやり方がありますか?
ってことなのにありもしない設計書ベースにコードを簡単にすべきではないと主張するとか完全に馬鹿だろw
0302デフォルトの名無しさん
垢版 |
2017/05/19(金) 14:42:01.05ID:UT6RIjCf
よくわからんから具体例で議論してほしい
どういう設計書なら>>279がだめなの?
ここ初心者スレだから初心者にもわかるようにやってくれ
0306デフォルトの名無しさん
垢版 |
2017/05/19(金) 15:32:26.04ID:cfgUfLYa
>>302
ううんそれは本質じゃないよ
設計書もないのにソースの良し悪しを判断しようとしてるのが不味い
0307デフォルトの名無しさん
垢版 |
2017/05/19(金) 15:41:42.49ID:gmSWrJbX
また底辺プログラマくんが来てスレが荒れてるねw
一生拝承システムでも作ってろ
0308デフォルトの名無しさん
垢版 |
2017/05/19(金) 16:15:41.26ID:CDMysSsn
底辺かどうか知らんけど、ラムダ式をトリッキーでも何でもない
ごく普通の使い方しただけで上から目線で「わかりにくい」とか勘弁してほしいねw

>>279はラムダ式を使ってるだけで、考え方自体は普通の構造化プログラミングの方法論通り
共通部分を括り出して分割統治しただけ。

でも構造化プログラミングの段階で躓いてる人って実際割といるよね。
前の職場にも一つのメソッドに全部のロジックを詰め込んでダラダラ書く方が
分かりやすいと思い込んでる人がいて困った
0309デフォルトの名無しさん
垢版 |
2017/05/19(金) 16:26:40.59ID:dgLRkGLJ
バカが書いた凝ったコードこそが悪夢だからね
コボラーをPGとして使わなきゃいけないなら全部フラットに書くのは実際無難な方法ではある
ウォーターフローが守られてる限りは問題なくスケールするし
0310デフォルトの名無しさん
垢版 |
2017/05/19(金) 16:34:13.39ID:4KQhVkeZ
>>308
狙ってやってるのか不具合なのかわかりにくいな
普通にif文で条件判定入れてくれると読みやすいんだけど
まあ、それは設計書になんて書いてあるかだけどね
0311デフォルトの名無しさん
垢版 |
2017/05/19(金) 16:44:34.52ID:CDMysSsn
>>310
単純に1ずつ増えるループ変数iがXを超えたかどうか(i>X)みたいなのは
条件判断なんて言わない。

I == Xになるまではiは絶対にX未満、一度Xを超えたらその後は絶対にi>Xに決まってるんだから、
普通に考えてただの無駄、それが言い過ぎなら仕方のない妥協の産物だ。

こういうコードを見て無駄でエレガントでないと感じないならプログラマ向いてないよマジで
0312デフォルトの名無しさん
垢版 |
2017/05/19(金) 16:58:16.77ID:4KQhVkeZ
>>311
ううんそれは元のコードが仕様通りだったらの話
範囲で入る値が異なるコードを書くなら明示的にif文で条件判定を書いて欲しいんだよね
だからラムダのコードの方は俺には偶然によっかかって辛うじて成り立ってるコードに見えちゃう
0313デフォルトの名無しさん
垢版 |
2017/05/19(金) 17:19:07.19ID:CDMysSsn
何のこっちゃ
要求されているのは機能的に等価でよりスマートなコード以上でも以下でもないでしょ

YAGNIじゃないけど、こんなところで無限にありうる仕様変更の可能性に対して
備えてないからダメなんてただの言い掛かりでしかない
0314デフォルトの名無しさん
垢版 |
2017/05/19(金) 17:57:50.30ID:pkYYdS/8
ちなみに272氏は単純にこう書こうとは思わんかったん?
for (int i = 0; i< 100; i++){
if (i<**) hoge[i]=1;
if (i>=** && i<**) hoge[i]=2;

if (i>**) hoge[i]=4;
}
0319デフォルトの名無しさん
垢版 |
2017/05/19(金) 18:31:48.04ID:CDMysSsn
っていうかさあ、ループ変数が単純に増減するループの中で
ループ変数を定数と比較してるコードを見たら、なんだか気持ち悪いとか何か間違ってると
感じるのが普通だけど、>>312みたいに逆にそうでないとしっくりこないって感じる人間もいるんだから
世の中いろいろだね
0322デフォルトの名無しさん
垢版 |
2017/05/19(金) 21:06:53.85ID:luDd5jKl
using ( var stream = new MemoryStream( hoge ) )
{
for ( int i = 0; i < 50; i++ )
{
for ( int j = 0; j < 10; j++ )
{
stream.WriteByte( 1 );
}

for ( int j = 0; j < 10; j++ )
{
stream.WriteByte( 2 );
}
}

for ( int i = 0; i < 50; i++ )
{
for ( int j = 0; j < 10; j++ )
{
stream.WriteByte( 3 );
}

for ( int j = 0; j < 10; j++ )
{
stream.WriteByte( 4 );
}
}

idx = ( int )stream.Position;
}
0323デフォルトの名無しさん
垢版 |
2017/05/19(金) 21:22:07.20ID:PUsZCclE
教えてください
ディスクトップの特定の場所の色が変わったらAを実行するというコードを書きたいのですが
どの様に書けばよいのでしょうか?
よろしくお願いします
0324デフォルトの名無しさん
垢版 |
2017/05/19(金) 21:25:59.99ID:V49AdHLO
>>323
それは画面キャプチャが必要でそれだけでも一筋縄じゃできないような
タイマで監視するにしてもコスト大きすぎるし
他の条件は無いのか?
0325デフォルトの名無しさん
垢版 |
2017/05/19(金) 21:33:43.42ID:PUsZCclE
>>324
ありがとうございます

アプリから通知が来た時に右下に通知の吹出が出るので
その時にAというプログラムを実行したいと考えているのですが難しそうですね
0328デフォルトの名無しさん
垢版 |
2017/05/19(金) 22:02:05.77ID:9om5PS5P
>>271
設定とかを書いてる訳じゃないよ
詳しくは書けないけど要するに WritePrivateProfileString なんて使うのがバカって言う結論
装置制御用のPCだからUPSはもちろんハングアップしたら外部のハードウェアで電源Off/Onまでやるようになってる
0331デフォルトの名無しさん
垢版 |
2017/05/19(金) 23:53:05.65ID:luDd5jKl
通知ウィンドウ(?)をSpy++とかで調べておいて、そのウィンドウが出てるかポーリングするとか。
0334デフォルトの名無しさん
垢版 |
2017/05/20(土) 16:56:47.34ID:LUvMfIz7
>>272の質問の人何も言わずにとんずらしちゃったけど、
ひょっとしてラムダ式が分かりづらいって文句言ってたのが質問者本人だったのかなw
0339デフォルトの名無しさん
垢版 |
2017/05/20(土) 18:07:46.65ID:okSFnVvW
>>334
コードをスマートに書き換えて、ってそもそも質問じゃないじゃん
ネタ振ってスレの様子見て遊んでいる人が混ざっているのだからいつまでも構わないでくれ
0341323
垢版 |
2017/05/20(土) 18:52:37.15ID:eWsnLc5H
>>327
し、初心者なので許してくださいww

>>330
なるほど〜その線でしらべてみます
…って思ったけどさっぱりわかりませんorz何処か誘導お願いします

>>332
大丈夫です。
ほかのアプリは黄色い色の通知はしないのでいけると思います
0342デフォルトの名無しさん
垢版 |
2017/05/20(土) 20:24:06.43ID:Tc+UN3QZ
>>339
もっと綺麗に書けそうに思うけど自分ではどうしたらいいか分からない、
っていうのも立派な質問だしスレの趣旨に反していると思えない
0343324
垢版 |
2017/05/20(土) 20:29:39.57ID:kVhEQFVq
>>341
その通知を出すアプリが何かわかればアドバイスできる人もいるかもしれない
色は問題ありすぎだから忘れろw
今のところ>>326が一番適切な回答だと思う
0344デフォルトの名無しさん
垢版 |
2017/05/20(土) 20:29:47.52ID:o8jDeEud
>>341
デスクトップをキャプチャしてイメージにする。その特定の座標の色を取得する。

まずはそこから
0345デフォルトの名無しさん
垢版 |
2017/05/20(土) 20:31:11.74ID:o8jDeEud
次に上に書いてあるようの、デスクトップの画面更新をフックする。

WM_PAINTとかかな
0346デフォルトの名無しさん
垢版 |
2017/05/20(土) 20:55:22.87ID:RDFlCbPz
色はダメだってw
OSがアップデートしたりソフトの使用が変わったら何の意味もない

もしそのアプリがc#と絡んでるならそっちをいじれ
0347デフォルトの名無しさん
垢版 |
2017/05/20(土) 21:05:00.27ID:U9rYpiRi
通知のフックって具体的にはどうやるの。
アプリの中身知らなくても出来るもん?
0348デフォルトの名無しさん
垢版 |
2017/05/20(土) 21:06:58.07ID:U9rYpiRi
デスクトップの色解析はスジが悪いよな。
たまたま似たような画面が重なったら誤動作するし。
0350323
垢版 |
2017/05/20(土) 21:38:51.77ID:eWsnLc5H
>>343
MultiChartsというチャートソフトなんですけど、通知をフックすると言うことは…ネイティブコードの解析が必要?
それが出来れば最高なんですけど私のスキルでそこまで出来ません

他に何も入っていない専用PCなので仕様はほとんど変わらないので
とりあえずスジが悪いかも知れませんが>>344さんの方法で調べてみます
0354デフォルトの名無しさん
垢版 |
2017/05/21(日) 01:25:55.95ID:YXecPC33
オープンソースで公開するってんならOSやソフトの仕様を考慮する必要があるけど、
全くの個人使用なら色で判断するってのはそう悪いアプローチでもないと思う

autohotkeyとかでできそうだけど
0360デフォルトの名無しさん
垢版 |
2017/05/21(日) 13:01:14.66ID:JJ83HkpI
タプルをコレクションに入れるのはバグの温床
dynamicに匿名型突っ込む方がまだマシ
0362デフォルトの名無しさん
垢版 |
2017/05/21(日) 14:51:50.29ID:jNq5R9xb
妙な小細工するより素直に複数の値の入れ物の型を定義した方が
分かりやすく使いやすいと思うけど
0364デフォルトの名無しさん
垢版 |
2017/05/21(日) 17:07:27.54ID:JJ83HkpI
>>361
要素を取り違えるバグだね
入れてるところまで遡らないと何番目の要素が何を意味するのか分からない
個人的には、タプルは即座に要素をバラして変数に展開するべきで
タプル型の変数やコレクションは決して使ってはいけない
0366デフォルトの名無しさん
垢版 |
2017/05/21(日) 17:35:37.21ID:mFXnnnZ/
タプルを単一の値としてコレクションや変数に入れたことによる要素の取り違えに起因するバグはPythonだとよくある
C#7.0のタプルはその問題点を考慮して要素にラベルを付けられるようになってるね
0367デフォルトの名無しさん
垢版 |
2017/05/21(日) 18:46:01.80ID:eq83iLnZ
絶滅危惧種だとは思うけど、コードレベルの設計書が必要な人達って未だいるんだね (´・ω・`)
0368デフォルトの名無しさん
垢版 |
2017/05/21(日) 19:01:05.84ID:JJ83HkpI
普通にいるだろ
ていうかそういう奴はどれだけ詳細なコード設計を渡してもそれだけではコード書けなくて、
必ず類似したプログラムをサンプルとして渡してコピペさせてやる必要がある
0370デフォルトの名無しさん
垢版 |
2017/05/21(日) 19:12:49.79ID:/dC0YVGz
新米ってどこにでも居るけどな
0371デフォルトの名無しさん
垢版 |
2017/05/21(日) 19:13:25.76ID:iRCfL5dm
>>367
こう言う時ってどうしてる?
自分でコード書くのが正解なんだろうけど下流の仕事奪うとそれはそれで面倒な展開になる
0372デフォルトの名無しさん
垢版 |
2017/05/21(日) 19:16:10.49ID:/dC0YVGz
仕様教えてテスト計画書作成してもらう
0373デフォルトの名無しさん
垢版 |
2017/05/21(日) 19:24:32.38ID:mFXnnnZ/
>>370
新米なら教えてやろうという気にもなるけど、それがベテランコボラーだったりするんだよな
0375デフォルトの名無しさん
垢版 |
2017/05/21(日) 21:41:22.20ID:lJj1Wn7F
>>374
仕様を満たしてるかどうかと規約に違反してないかだけだろう
あとごくたまにどっかから拾ってきたオープンソースだとかどう見ても怪しいライブラリとか勝手に使おうとするアフォな人がいる
だいたい調べるとGPLとかGNUとかだったりする
オープンソースじゃねぇって言ってるだろwと
文化がわからないな
0378324
垢版 |
2017/05/21(日) 21:52:59.76ID:w3qiO5bj
マ板でやれよ。業界談義をここでやるな
0379デフォルトの名無しさん
垢版 |
2017/05/21(日) 21:57:45.31ID:Oz98oGI1
async/awaitですが、.NET FW4.0でも使えるみたいなのですが、使い方的に何か違いがあるのでしょうか。また使うにはどうしたらいいのでしょうか。
0381デフォルトの名無しさん
垢版 |
2017/05/21(日) 22:02:21.29ID:8VZiX6Z0
言語と.netは違います。
.net4でC#5を使うことは可能です。
何ら問題もないです。
使用するクラスが.net4で使えるかどうかを気を付けませう。
0382デフォルトの名無しさん
垢版 |
2017/05/21(日) 22:12:23.12ID:yzY+yVHd
>>379
nugetでMicrosoft Async(Microsoft.Bcl.Async)をインストールする。
.Net4.5以降でTaskクラスにある一部のメソッドがTaskExクラスにあるらしい。
0383デフォルトの名無しさん
垢版 |
2017/05/21(日) 22:17:05.82ID:lJj1Wn7F
>>378
いいや、ここがちょうどいいと思う
ちょっと前にLivetとかPrismとか勝手に使われて
品証からストップされて納期前に大変な事になった
初心者スレでこそ警笛を鳴らしたい
勝手に使わないでね
こういうの大抵駄目だから
0384デフォルトの名無しさん
垢版 |
2017/05/21(日) 22:22:11.46ID:bjY9GTUB
>>383
>>1を読め
これ以上のスレチは荒らしだぞ

>「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
>他のスレッドでは書き込めないような低レベルな質問、
>質問者自身なんだか意味がよく分からない質問、
>ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
0387デフォルトの名無しさん
垢版 |
2017/05/21(日) 22:31:32.33ID:Oz98oGI1
>>380-382
ありがとうございます
>>380
.NET4でシンプルな非同期処理やりたいだけです
>>382
それを確かどこかで見かけました
使用するにあたって特に問題ないのですね
試してみます
0388デフォルトの名無しさん
垢版 |
2017/05/21(日) 22:46:05.61ID:lJj1Wn7F
>>386
品証は駄目って判断したねぇ

なんでもこれ使ってるってどっかに使ってるって記述しないといけなくてお客さんのアプリだから駄目って結論になったらしい
まあ、こういうの大抵駄目だから今更驚かんが
0389デフォルトの名無しさん
垢版 |
2017/05/21(日) 22:48:32.01ID:C57KKbG4
>>387
.NET4.5.2で作った非同期プログラムを.NET4.0環境に入れる必要が出てそれ使ったわ
上に書いてあるとおり一部のTaskをTaskExに変えたぐらいで基本問題なく動いたよ
0390デフォルトの名無しさん
垢版 |
2017/05/21(日) 22:53:00.26ID:iRCfL5dm
納品直前まで使ってるGUIフレームワークが何かも把握してないとかいくらなんでも仕事サボりすぎ
特に使用制限厳しい案件でその管理体制ならろくな会社じゃないな
0392デフォルトの名無しさん
垢版 |
2017/05/21(日) 23:08:15.63ID:yzY+yVHd
最近は、マイクロソフト製ですらオープンソース(Ms-PL等)で公開してるものも多いのに、それらが利用できないとは大変だな。
0396デフォルトの名無しさん
垢版 |
2017/05/21(日) 23:32:28.60ID:iRCfL5dm
企業が責任を持ってメンテナンスしている安心感
保守契約で守られている安心感

なんかおじいさん達にはそういうのが大事らしい
自社の製品見た上で企業への信頼とか言ってるなら正気の沙汰ではない
0398
垢版 |
2017/05/22(月) 00:21:16.72ID:KxRThp41
あるあるだと思うけど。うちも割と悩んで載せることにしたものはあったな。
金はいくらでも払うが、明示する系はダメとか昔は結構あった。
法務部が腰重いのもある。
0399デフォルトの名無しさん
垢版 |
2017/05/22(月) 00:47:09.79ID:1ihqP+7T
>>398
そうなんだよねぇ
場所によってはお金払って自由って方が通りやすいんだよね
ソフトの値段なんてたかが知れてるからね
ハード1個売れるだけで簡単に億いくし
0402デフォルトの名無しさん
垢版 |
2017/05/22(月) 10:57:07.83ID:NpIrM3yR
そいつらは自分ちのTVのマニュアル見たことないんだろ
今はオープンソースライセンス文がずらずら並んでる
0403デフォルトの名無しさん
垢版 |
2017/05/22(月) 11:04:31.53ID:l8xRI2bt
>>402
実際どうかってよりでかい会社の請負って間に幾つか会社が入っててそのうちの一人でも駄目って判断をすれば駄目なんだよ
その人は多分プログラマじゃないし今まで必要なかったのに必要になるってところもおそらく理解できない
そんなとこだよ
0405デフォルトの名無しさん
垢版 |
2017/05/22(月) 11:32:44.78ID:SMVCp6Um
企業が割に合うかどうかわからないリスクを避けるのは当たり前だと思うけどね。
シロがシロであることを確証するのにもコストかかるのが分からないのはお子様過ぎるんじゃないの?w
0406デフォルトの名無しさん
垢版 |
2017/05/22(月) 11:40:33.60ID:l8xRI2bt
申請出してて納期直前で駄目って返って来たときにどれだけ対処できるかだよね
0407デフォルトの名無しさん
垢版 |
2017/05/22(月) 11:47:49.70ID:eJszv2Pe
そういう場合はリスケに応じることって発注契約書に書いてるわ
さっさと返事しないのが悪いんだから
0408デフォルトの名無しさん
垢版 |
2017/05/22(月) 11:49:36.22ID:eJszv2Pe
別に使えないなら使えないなりの見積もり立てるからいいんだよ
ギリギリに返してくる馬鹿会社が死ね
0409デフォルトの名無しさん
垢版 |
2017/05/22(月) 12:34:23.64ID:TZYu7Wfg
今のASP.NETなんか使うとMS非保証のOSSが山ほど入るよね
日本型の業界構造のままでは開発環境すらまともに使い物にならない時代になってしまった
0410デフォルトの名無しさん
垢版 |
2017/05/22(月) 12:59:31.08ID:l8xRI2bt
でもこれ危険だよね
ms側がバージョンアップして
フリーソフトにおんぶで抱っこのソースにしちゃって
フリーソフトの更新が止まっちゃってるときに
msバージョンアップ対応するってときに
窮地に立たされんじゃないの?
0411デフォルトの名無しさん
垢版 |
2017/05/22(月) 13:09:41.67ID:eAPLFCmr
勝手に無駄なハードル作りまくって
それで自滅するのが好きだよな、日本って

ちょっと規模が大きくなると
外への攻勢に疲れるのか知らんが、身内を攻撃し始める
0415デフォルトの名無しさん
垢版 |
2017/05/22(月) 13:54:08.30ID:5GrenZQq
オープンソースのフリーソフトと同じ機能を内製するよりリスクは低いわけだから
問題にしているのは権利関係が多いんじゃね
0416デフォルトの名無しさん
垢版 |
2017/05/22(月) 14:27:56.16ID:eAPLFCmr
医療機関や原発施設とか
僅かでも可能性があっちゃいけないようなケースも稀にあるけど
それに同じ次元の宗教を一般民生用途にも当てはめようとするのが日本

石橋を叩くと言えば聞こえは良いが、叩いた上で渡らないという。

だから中国に置いてかれちゃうんだよ
0417デフォルトの名無しさん
垢版 |
2017/05/22(月) 14:48:10.64ID:CmaccE3w
それはリスクじゃなくてコスト
リスクっていのは訴訟リスクのことだよ
大丈夫か

このレベルの奴が日本の企業はダメとか上から目線で言ってるだからへそ茶も極まるなw
0418デフォルトの名無しさん
垢版 |
2017/05/22(月) 15:41:18.07ID:omVxQ446
c#でwebdriverを使用してChromeを自動操作しているんですが
ページ遷移する際に待機時間を設定する方法がわかりません
具体的にいうと以下のように時間指定した後
2つのサイトを連続して開くような処理なのですが
待機時間がむしされてページ遷移してしまいます。

webDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
webDriver.Url = ウェブサイト1;
webDriver.Url = ウェブサイト2;

どなたか解決法ご存知の方いたら教えて頂けますでしょうか?
どうぞよろしくお願いします
0419デフォルトの名無しさん
垢版 |
2017/05/22(月) 15:42:34.62ID:1ihqP+7T
日本の開発は時代遅れとか言ってるアウトサイダーに限って
じゃあ、実際に問題がおこったら俺しーらねみたいなクソばっかで
信用できない
0420デフォルトの名無しさん
垢版 |
2017/05/22(月) 15:49:07.59ID:1hpbwYAN
シンタックスシュガーにつつまれてるからお前ら気づいてないかもしれないけど
ここは初心者用の質問スレだ
0423デフォルトの名無しさん
垢版 |
2017/05/22(月) 17:07:18.90ID:brZChpEQ
最近だと、Webアプリ(?)って、何で作ればいいんでしょう?
昔VS2018の時代はWebアプリで作ったんですけど。
0426デフォルトの名無しさん
垢版 |
2017/05/22(月) 17:30:51.07ID:yiQaLvEL
>>418
触ったこともないけどちょろっと検索した感じ
findElementなりで要素検索するときに見つかるまで待機するためのもんらしいけど
1ページ目に遷移した後なんか適当な要素検索したらどう?
0429デフォルトの名無しさん
垢版 |
2017/05/22(月) 19:39:51.96ID:YIKJJ/dk
http://tech.bbtune.com/csharp/items/3-18.html

インスタンスHelloをintに型のするまではわかるんですが
すでに値が設定されているローカル変数にクラスのインスタンスを代入することの意味がわかりません
Console.WriteLine("i = {0}",i); i++;はどういう経緯でYの値が無視されてXの値が代入されてるんですか?
明示的なキャストでreturn h.x;はどこに代入されてるのかもわかりません。
どなたか教えてください。宜しくお願いします。
0430デフォルトの名無しさん
垢版 |
2017/05/22(月) 19:54:05.26ID:RIp9oKHd
Linq to SQLについて質問があります。

現在DBから特定のIDの最大値を取得する問合せをしているのですが、生成されるSQL文があまり効率のいいものではありません。
どの様に記述すれば効率の良いSQLが生成されるか、ご教示いただけないでしょうか。

【期待値】
 SELECT MAX(Id) FROM TestTable

【検証1】
 ■期待値のSQLが発行されるが、レコードが無い場合例外となる
 System.Data.Linq.Table<Test> table = context.GetTable<Test>();
table.Max(i => i.Id);

【検証2】
 ■レコードが無い場合はnullとして結果が返るが、期待したSQLではない
 System.Data.Linq.Table<Test> table = context.GetTable<Test>();
table.Max(i => (int?)i.Id);

 〇生成されたSQL(サブクエリが生成されてしまう)
SELECT MAX([t1].[value]) AS [value]
FROM (
SELECT [t0].[Id] AS [value]
FROM [TestTable] AS [t0]
) AS [t1]

よろしくお願いいたします。
0432デフォルトの名無しさん
垢版 |
2017/05/22(月) 19:57:38.58ID:TAH0zPbT
>>412
そもそも更新が止まる程長い間同じものを使い続けない
今はビジネスの変化がすごく早い
だからシステムも追随して早く変化しなければ競争に負ける
システムの更新が早ければ新陳代謝で旬の過ぎたOSSへの依存はそのうち消える

日本企業においてはビジネスが変化しないのでその限りではない
0433 ◆QZaw55cn4c
垢版 |
2017/05/22(月) 20:08:02.25ID:Zgh5eQVH
昔も英字 3 文字の略号で示される「新しい技術」が流行ったものだが,今となってはどこにいったのかさっぱり
0435430
垢版 |
2017/05/22(月) 20:16:47.20ID:RIp9oKHd
質問者の430です。

早速のレスありがとうございます。

>>431
 出来るか、出来ないかが判らないため、出来る方法が無いか質問いたしました。

>>434
 レコードカウント->MAX集計の場合、2回クエリが発行されるため1回で結果が返る方法などないでしょうか?
0437430
垢版 |
2017/05/22(月) 21:25:55.74ID:RIp9oKHd
>>436さん
 EntityFrameworkの場合、ちょっと(?)ではあるのですが多少改善されているようでした。
 Linq to SQLは.NET3.5縛りがあるので仕方なくとなります。。

【EntityFrameworkの場合】※サンプルは削除してしまったので若干うろ覚えです。
 SELECT t1.Id FROM ( SELECT Max(t0.Id) TestTable AS t0) AS t1
0438デフォルトの名無しさん
垢版 |
2017/05/23(火) 01:20:49.37ID:lTsrConv
>>429
どこでつまづいてるのか分からん…

> すでに値が設定されているローカル変数にクラスのインスタンスを代入することの意味がわかりません
代入で値が変わりましたよってのを表すためじゃない? まあ別にいらないけど

> Console.WriteLine("i = {0}",i); i++;はどういう経緯でYの値が無視されてXの値が代入されてるんですか?
> 明示的なキャストでreturn h.x;はどこに代入されてるのかもわかりません。
iはint型だからXの値とかYの値とか関係ない
iに入るのはhをHelloからintに変換した結果、つまりop_implicit(h)の返値
h = new Hello(1)だからh.x=1, h.y=10
なのでop_implicit(h)はh.xである1を返す
よってi = (int)hによってiに1が代入される
0439デフォルトの名無しさん
垢版 |
2017/05/23(火) 02:34:14.69ID:JboiPkez
PrismなんてほぼMS公式なのになぁ
JSONとかもJson.NET使えばいいから標準ライブラリには入れないよって感じだし

Web周りとかをやることになったらjQueryもReactもすべて禁止になるのかな
0441
垢版 |
2017/05/23(火) 08:57:24.20ID:9OGdTOvp
>>414
あ、うちレビュー対象だよ。
0442デフォルトの名無しさん
垢版 |
2017/05/23(火) 09:56:41.61ID:3W0XlzKr
>>429
ぶっちゃけC#離れてしばらく経つから初見だけど、operater何ちゃらってのが

クラスを値型にキャストする時。i = x
値型をクラスにキャストする時。x =i(コントラスタ経由)

それぞれどのフィールドを反映させるか明示させてるだけだよね。

キャストしたら複数あるフィールドのどれが値型に入るか、値型がどのフィールドに入るか分からないから、やってみないと分からないし、漏れた分はどこいった?ってなって怖いから。

getter/setterやプロパティあれば良いだけだから、余程頻繁にやらない限りはコード書くコストが赤字になりそうだが。

yのyは無視というかXYメソッドでしか使われてない。
0443デフォルトの名無しさん
垢版 |
2017/05/24(水) 00:58:21.35ID:p69ay+rF
>>438
>>442
返信ありがとうございます
アドバイスを元に見直してみたところ相当勘違いがあったことがわかりましたが何とか理解できました
0444デフォルトの名無しさん
垢版 |
2017/05/24(水) 01:00:36.58ID:j84N/qwQ
今からC#のGUIプログラミングの勉強をしようと思ってるんですが、何から手をつけたらいいでしょうか。
WindowsFormsは古過ぎるらしいですし、WPFもあんまり評判がよくないようです?
UWPというのはWin10専用らしいんですが、
今の環境がWindows7で、今のところ10にする予定もないので、7で動いてくれないと困ります。
0445デフォルトの名無しさん
垢版 |
2017/05/24(水) 01:11:24.86ID:Run0pESv
>>444
個人のお勉強目的でデスクトップアプリ作るならWindows Formsで十分
Web上に日本語情報も多いし

Formsで満足できなくなってきたときに、より新しいものに挑戦してみたらいい
0447デフォルトの名無しさん
垢版 |
2017/05/24(水) 11:34:07.38ID:6Y2qmaWe
>>444
WPF、Win8、Win8.1、WP、UWPと、ことごとく新しいGUIはC#+XAMLで作られてるから、勉強だと思ってWPFで作っておいた方が後々技術が応用しやすいよ。
0449デフォルトの名無しさん
垢版 |
2017/05/24(水) 11:52:35.12ID:XBA0eVol
WPFは標準の画面パーツがFormの半分すら無いから始めてやるにはあまりオススメはできんかな
Formで出来たことをやろうとするとnugetで探す羽目になるのが
0451デフォルトの名無しさん
垢版 |
2017/05/24(水) 12:25:04.09ID:mj1wJSTY
>>444
悩ましい選択だよね
WinFormsは古いのは確かだけど、今後も使い続けられていくだろうし、枯れた技術だとも言える
WPFは相対的に新しいけど、将来性が微妙という点では五十歩百歩
プログラミングの経験や知識がそれほどでないなら、WinFormsのほうが習得はしやすいかな
より単純明快で、Web等で入手できる情報もより豊富だからね
古くても知っておけばその知識は無駄にはならないと思うし
WPFはMVVMの宗教論争をくぐり抜けて、自分なりのスタイルを確立できる自信がある人で
ないと、なかなかお勧めできないw
0453デフォルトの名無しさん
垢版 |
2017/05/24(水) 12:41:47.08ID:8JWkr8fd
勉強が目的なのか作りたいものが目的なのかで挫折率って大きく変わるから作りたいものがformsで出来るならそこから始めたほうが絶対に良い
0454デフォルトの名無しさん
垢版 |
2017/05/24(水) 12:55:27.94ID:rRpM8tLB
WPFって見えないんだよね処理が
バグっててもハイここですってわかりにくい
0455デフォルトの名無しさん
垢版 |
2017/05/24(水) 13:19:48.05ID:ZnkTJstw
WPFの弱いイベントパターン化にすごく苦労したわ。
UWPはsegoeフォントとか色々あるから、とりあえずWinFormsで良いと思う。
0456デフォルトの名無しさん
垢版 |
2017/05/24(水) 15:58:09.23ID:/N4PQk0O
wpfのBindingはエラーが出ないから初心者には辛いかもしれんね
却ってUWPのx:Bindならエラーが出るから初心者向けかもしれん
0458デフォルトの名無しさん
垢版 |
2017/05/24(水) 18:37:23.77ID:wLU8X/p7
PHPにできてC#で出来ないことってないよね?
0465デフォルトの名無しさん
垢版 |
2017/05/24(水) 20:57:50.88ID:e1iv8ltj
WinFormsでちょっとしたローカルデータベースのアプリを個人で作ってみる予定です
年間10000レコードくらいの規模です。
ググってるとSQLiteかSQLServerCEか、みたいな感じなんですが
選ぶとしたらどういう基準で選べばいいでしょうか?
C#でデータベース自体扱ったことがないので、ネットで情報が手に入りやすく
初心者にやさしそうな方を選ぼうと思っています。

Access+vbaはいじったことあるので、accdbにしようかと思ったのですが
access入ってないPCで使うのにAccess選ぶのもどうかと思ったのと
OfficeかAccessランタイム辺りをインストしたPCでないと最適化が使えそうにない?ので
選択肢から外そうかと思っています。(最適化できるならAccessでいいかとも思っています)

後、DataSetとTableAdapterはある程度知っているのですが
今やるならEntityFrameworkとか使った方がいいでしょうか?
EntityFrameworkだけでも何やらいろんな方法が出てくるのですが
いまいちどれを選んだらいいかわかりません。
どうせなら今風のやり方を学んでみようかと思ってますが・・・
0467デフォルトの名無しさん
垢版 |
2017/05/24(水) 21:06:27.05ID:/s+SEDS3
>>465
SQLServerCE(今の正式名称はSQL Server Compact)は、マイクロソフトから見捨てられたと言って良い状態。
SQLiteの方が色々揃ってて良いよ。
ViaualStudioの管理用のDBも、昔はSQL Server Compactだったけど、今はSQLiteになったし。
0471デフォルトの名無しさん
垢版 |
2017/05/24(水) 21:45:18.79ID:e1iv8ltj
>>466
>>467
ありがとうございます
SQLiteにしようかと思います。

>>468
>>465
DataSetは結構わかりやすくてよかったのですが
EFは正直Webサイト読んでてもなんかピンと来ず
どんどん新しいことが増えていってるせいか情報がまとまってるところが見当たらなくて…
でも、DataSetが古くなった今では?こき下ろしてるサイトも結構見かけて
使い続けるのもどうかなぁと思ったり…

DBからデータを引っ張ってくるところは
かなり簡素な内容になる予定なので
SQL覚えるよかEFを学ぶほうがコストはよっぽどかかると思います。

DapperっていうのはEFよりも簡素でその分簡単に扱えるORMって感じですかね?
これが自分にはいい選択肢かもしれないです。
ちょっとググってきます。
0478デフォルトの名無しさん
垢版 |
2017/05/24(水) 23:01:27.95ID:8JWkr8fd
formに大量のコントロール配置すると、ロードしたときや画面更新するときにパラパラパラパラって表示されるんですが一気に表示させられないでしょうか
〜Layoutは全く効果ありませんでした
DoubleBufferなるものはまだ確認してません
何か効果的な対策あればお願いします
0480デフォルトの名無しさん
垢版 |
2017/05/24(水) 23:18:37.48ID:QZczTL/V
>>468
上の件とは関係ない純粋な技術的興味なんだけど、リポジトリパターンでDapper使った場合のUnitテストをメモリ上でやる方法知らない?
0482デフォルトの名無しさん
垢版 |
2017/05/25(木) 00:35:01.49ID:Xlj75eVQ
問題を切り分けて考えよう
リポジトリを使う方のテストは実装を差し替えてテストするとして、
リポジトリ自体のテストの方はクエリの確認が目的だ
だったらDBは本番と同じものを使わないと意味がない
SQLiteみたいに揮発モードのあるDBならそれでいいが、
それが無いからといってSQLiteに差し替えるんではなくて、実環境がpostgresなら必ずpostgresを使うべき
リポジトリのテストだけに使うんなら少々遅くても大した問題にはならない
0484デフォルトの名無しさん
垢版 |
2017/05/25(木) 01:31:22.95ID:VSmfM+8N
>>482
EF CoreならInMemoryでUnitテストできるでしょ。Dapperで同じようなことやる方法ないかな?実DB使うのはIntegrationテストやね。
0488デフォルトの名無しさん
垢版 |
2017/05/25(木) 07:02:50.17ID:Xlj75eVQ
>>484
Dapper使ってるならDBMSに対してSQLを直に実行してるんだからどう転んでもテストはDBMSに依存する
テストフェーズは関係ない
なんか勘違いしてるようだけど、この場合EFに相当するのはDapperではなくリポジトリの方だ
EFのInMemoryモードを使うことはリポジトリをインメモリな実装に差し替えることに相当する
0489デフォルトの名無しさん
垢版 |
2017/05/25(木) 07:10:56.11ID:sTAredU3
現行で進んでるような専用の板が見付からなかったのでスレチかも知れないけど助けてくれませんか
概念的な話になります

http通信を行っているc#のサーバ側の開発に携わったんだけどリソースって言葉が曖昧すぎて困ってます

httpで通信するときに
put ←動作
uri ←対象
body ←引数

渡してるのはuriとbodyだからこの二つがリソースを指すのだろうか??
それともどちらか片方?
0491デフォルトの名無しさん
垢版 |
2017/05/25(木) 07:26:10.80ID:sTAredU3
>>490
今あるやつを猿真似すれば良いだけだから開発には困らない
ただ理解して書かないと何を何のために追加したのかも説明できないから理解したい
言葉の整理がしたくて調べてたけどリソースについて全然記述が見つからず...
0492デフォルトの名無しさん
垢版 |
2017/05/25(木) 07:26:53.04ID:Xlj75eVQ
>>489
RESTのリソースっていうのは「顧客1」「5月25日の投稿」といった、名前によって識別される何かを指す抽象概念
Webならデータがサーバーに格納されてURLによってアクセス可能な状態になった時点でリソースとなる
0494デフォルトの名無しさん
垢版 |
2017/05/25(木) 07:37:42.57ID:sTAredU3
>>492
クライアントは
動作としてputなどを
何に動作させるかのためにURLを
データ(リソース)としてbodyを
ってことで良いのかな?

>>493
そうなっててでも違うのかあってるのかみたいになってるんだ
0495デフォルトの名無しさん
垢版 |
2017/05/25(木) 07:45:57.64ID:Xlj75eVQ
>>494
クライアントはリソースに対する操作とその結果を扱っているにすぎない
リソースの実体は常にサーバーにある
0496デフォルトの名無しさん
垢版 |
2017/05/25(木) 07:49:43.64ID:72iDOUXT
>>495
あ 書き方が悪かった
クライアントが上記のように通信してきたとしたら
サーバー側は上記を三つのように解釈して処理をする?
って聞いた意味だった

データをentityに受け取って、URLで識別してアクセス可能になった
この状態をリソースと呼ぶ?それともentityのことをリソースと呼ぶ...?
0498デフォルトの名無しさん
垢版 |
2017/05/25(木) 07:56:41.84ID:Xlj75eVQ
>>496
クライアントが送ってきたものはリソースではなく単なる操作
その操作対象となる、サーバー側のDBやファイルシステムにある何かがリソース
0499デフォルトの名無しさん
垢版 |
2017/05/25(木) 08:01:40.11ID:72iDOUXT
>>498
ああああああああああああああああああああああああああああああああああああああ
わかった 今わかったかも

Aのファイルがサーバーにあったとしたときに

クライアント
Aにputするよ
URLは取り決めでxxxxだよ
Aに操作する値はbodyだよ

こういうときにサーバーで言うリソースってのは
クライアントが送ってきた情報ではなく、その対象となるAか!!!
0500デフォルトの名無しさん
垢版 |
2017/05/25(木) 08:02:52.71ID:iDw56Z9j
君がそのPJではリソースとはこういう意味で使ってますと決めればいいやん。
0501デフォルトの名無しさん
垢版 |
2017/05/25(木) 08:09:40.42ID:Xlj75eVQ
>>497
一緒だよ
アプリからのエンティティの操作がDBMSに依存しないことをEFが担保する
それをMSがproviderの差し替えで実装してようが、そんなことはどうでもいい
少なくともDapperを使って実装したリポジトリパターンではその責任をリポジトリに負わせているのだから、当然リポジトリを差し替えるのが筋
0502デフォルトの名無しさん
垢版 |
2017/05/25(木) 08:14:47.64ID:72iDOUXT
>>500
追加開発だから無理だった
リソースの説明よんでも理解できなかったから一般的にどのような意味なのか知りたかった
こんな感じだった
0504デフォルトの名無しさん
垢版 |
2017/05/25(木) 11:34:34.78ID:OlDCYnHs
WinFormでForm1.csで使用しているコントロールがデザインのどこにあるか探す方法って、
Form1.Designer.csの座標を見る以外にありますでしょうか?
また変数等を検索する時、コメント部分はスキップする方法はありますでしょうか?
0505デフォルトの名無しさん
垢版 |
2017/05/25(木) 11:40:39.74ID:WvpLhP2L
アプリ終了時に手動で破棄するべきリソースとそうでないリソースの区別はどうつけたらいいのですか。
Disposeメソッドを持っているクラスのインスタンスは全部、アプリ終了時にDisposeすべきなのでしょうか。
0506デフォルトの名無しさん
垢版 |
2017/05/25(木) 11:57:56.72ID:QWlkLrx5
>>504
どんな状況かよく分からんがドキュメントアウトラインは?
検索は全ての参照を検索(Shift+F12)とか
0507デフォルトの名無しさん
垢版 |
2017/05/25(木) 12:11:41.77ID:z/F8HTBQ
数値の配列(リスト)が30程度あって、その配列を要素ごとに加算して
一つの配列にしたいのですが、何かいい方法あるでしょうか。
0509デフォルトの名無しさん
垢版 |
2017/05/25(木) 12:48:52.27ID:z/F8HTBQ
>>508
ありがとうございます!
すごくイカしてます!
早速試してみます
0510デフォルトの名無しさん
垢版 |
2017/05/25(木) 13:28:09.73ID:WvpLhP2L
あ、元になる数値配列の要素数がそれぞれ違う場合は、
public static int[] CombineArray(int[] dest, params int[][] source)
{
int n = dest.Length;

for(int i = 0; i < source.Length; i++)
{
for(int j = 0; j < source[i].Length; j++)
{
dest[j] += source[i][j];
}
}
return dest;
}
0511デフォルトの名無しさん
垢版 |
2017/05/25(木) 13:49:55.87ID:OlDCYnHs
>>506
状況は引き継いだソフトが、テスト用のコントロールも貼りまくりで、
使用しているコントロール名も「label1」とか貼ったまま使ってて、
未使用のコントロールも沢山あるので、
未使用はコメントにしたり名前を付けて整理しているところです。

ドキュメントアウトラインで整理しながら簡単に見つけられますね。
参照の検索で使用しているか確認出来ますね。
ありがとうございました。
0512デフォルトの名無しさん
垢版 |
2017/05/25(木) 13:57:53.66ID:Pu7QS8L6
未使用は果たして本当に未使用かな?
ってぐらい動的に変わるコントロールがあったりして作った奴ぶっ殺したくなることもしばしば
0513デフォルトの名無しさん
垢版 |
2017/05/25(木) 14:09:25.89ID:QWlkLrx5
>>511
そういう状況だとthis.Controls["label" + i]なんてやってるかもしれなくて
全ての参照を検索じゃすくいきれないかも知れないから要注意だぞ
0515デフォルトの名無しさん
垢版 |
2017/05/25(木) 22:18:41.97ID:GaW0ueJ6
>>510
ありがとうございます
動作確認してみましたが問題なく、ソースの量もわかりやすさも文句無しでした
本当に助かりました!
0516デフォルトの名無しさん
垢版 |
2017/05/26(金) 10:09:45.86ID:oMsVEL65
C#の言語的な話じゃないので入れ違いかもしれないですけど
パワポをC#から弄ろうとしてますが、ファイルを掴んだままになってしまいます。

using System.Windows.Forms;
using DocumentFormat.OpenXml.Packaging;

PresentationDocument ppt = PresentationDocument.Open(@"D:\A.pptx", true);
ppt.SaveAs(@"D:\B.pptx");
ppt.Close();
ppt.Dispose();
MessageBox.Show("できました");

A.pptx を読み込んで B.pptx に書き込むだけでテストしてますが
この実行プロセスを終了させないと(「できました」の表示の時点では) B.pptx が掴まれているらしく
開いたりコピーしたりできません。

誰が掴んでるか調べる手段はありませんでしょうか。
0518デフォルトの名無しさん
垢版 |
2017/05/26(金) 10:53:24.42ID:oMsVEL65
そうじゃなくて、Close と Dispose を明示しているにも関わらず
内部で保存先のファイルを掴んだままになっちゃってて弄れない、って意味です。

プロセス(EXE)を落とせば解放されるんですけど、続きの処理があるもんで。
0520デフォルトの名無しさん
垢版 |
2017/05/26(金) 11:02:29.39ID:oMsVEL65
なんと!
まさにビンゴでした。

ppt.SaveAs(@"D:\B.pptx").Dispose();

で無事に目的を果たせました!
ありがとうございました!!
0525デフォルトの名無しさん
垢版 |
2017/05/26(金) 14:46:54.86ID:F6wIZe6/
すみません
Char.IsNumber()メソッドは文字列の内の一桁しか判別できないのですか?また2桁以上を判別したい場合はどのメソッドを使うと良いのでしょうか
0526デフォルトの名無しさん
垢版 |
2017/05/26(金) 14:53:33.20ID:YpZka8l7
文字と文字列は区別付けよう
ところでChar.IsNumberはいわゆる全角の数字とかローマ数字とかもtrueって評価するけどその辺どうすんの?
0529デフォルトの名無しさん
垢版 |
2017/05/26(金) 15:22:13.46ID:sdCJMym9
テキストボックスに突っ込まれた文字列が数値かそうでないか判断したいんだきっと
でもisnumberじゃ駄目だったよイマココ
int.parseだきっとint.parseが求める答えだったんだよ!


シラネ( ´∀`)b
0533デフォルトの名無しさん
垢版 |
2017/05/26(金) 15:44:35.17ID:IbAmlhQI
>>529
判断したいのならTryつけようよ
>>525
むしろChar.IsNumberとか知らなかった
文字列 数値 変換 とかでググるとTryParseがすぐ出てくるはず
outが嫌なら別の当たって
0535デフォルトの名無しさん
垢版 |
2017/05/26(金) 16:30:48.38ID:F6wIZe6/
なるほど!
やっぱりTryParseメソッドが良さそうですね
>>529さんのおっしゃる通りでした!
確かにこの質問だけでは>>526さんや>>534さんのような問題も出てくるんですね!申し訳ありませんでした。判別したかったのは一般的な全角と半角の数字のみでした。
>>526さんChar.IsNumberに渡すのはstring のような文字列型も渡せるのではないのですか?
>>530さんConvert.toint32メソッドは文字や文字列を渡すとスローされるのではないのですか?

526
529
531
533
534さん相談に乗っていただきありがとうございました!
0536デフォルトの名無しさん
垢版 |
2017/05/26(金) 16:42:29.54ID:sdCJMym9
>>532
プログラムの回答って必要最小限でぶっきらぼうに回答すると全部嫌味に見える
そういうつもりはないんだよ
0539デフォルトの名無しさん
垢版 |
2017/05/26(金) 18:44:14.72ID:YpZka8l7
>>535
> Char.IsNumberに渡すのはstring のような文字列型も渡せるのではないのですか?
Char.IsNumberにStringを渡せるオーバーロードの引数は
Char.IsNumber(String, int)
この文字列の何番目の文字を判定しますか? ってこと
0540デフォルトの名無しさん
垢版 |
2017/05/26(金) 18:51:35.84ID:bEaQUHBT
そんなオーバーロードあるのかw
stringのインデクサがあれば要らないはずだけど
0545デフォルトの名無しさん
垢版 |
2017/05/26(金) 20:13:06.21ID:bEaQUHBT
>>543
ほとんどの場合は君が被害妄想全開で勘違いしてるような理由じゃなくて
再テストするコストの問題だと思うけどね
0546デフォルトの名無しさん
垢版 |
2017/05/26(金) 21:39:41.16ID:Ym5et5f0
>>541
この業界は9割以上がレガシーの保守らしいぞ
日本人はソフトになるととにかく新しいものを作りたがらない
0547デフォルトの名無しさん
垢版 |
2017/05/26(金) 22:02:23.90ID:Heb9aC5z
失敗の可能性にお金を払いたくないだけですな
とても便利になろうとも失敗の可能性があるからには手を出したくないって方が多い印象
0548デフォルトの名無しさん
垢版 |
2017/05/26(金) 22:24:11.81ID:Ym5et5f0
それが最大の失敗だよな
ミスを恐れて何もしないで結果、損をする
ダメ人間そのままじゃないか
0550デフォルトの名無しさん
垢版 |
2017/05/26(金) 22:27:57.00ID:bEaQUHBT
っていうか、どんな会社でも君が無給の勤労奉仕でやるっていうのならダメだって言わないと思うよ。
コストなんか問題じゃないんだって本気で思ってるのなら是非やったら?w
0556デフォルトの名無しさん
垢版 |
2017/05/27(土) 08:05:10.08ID:2waTjXRv
記録しても変更できないんじゃ意味ないよ
変更を容易にするために日頃からリファクタリングをすること
これが唯一の正解なんだよ
塩漬けは最もやってはいけない行為
0557デフォルトの名無しさん
垢版 |
2017/05/27(土) 08:13:13.30ID:MuqnBgBV
>>556
そうだね
ずいぶん昔にソース管理に登録されてから変更のないシステムを一部改修することになって、本番稼働してるコードと同一かどうかを調べるのが大変なクソ現場です
0560デフォルトの名無しさん
垢版 |
2017/05/27(土) 09:58:59.18ID:dfyKY7Wk
UWPに至っては、半ば強制的にasync await使わされます
ライブラリがそれ前提で作られているからね
0561デフォルトの名無しさん
垢版 |
2017/05/27(土) 10:24:26.01ID:reRwAhMh
今時PythonやJavaScriptにもasyncがあるのに何を言っているのか
なんだかんだC#のやり方は正しくて他の言語もすぐに追従する
0562デフォルトの名無しさん
垢版 |
2017/05/27(土) 10:25:05.62ID:IYBRhAj3
使いはするけど仕組みはよくわかってない人が多いんじゃないかな
実際はreturnしてるけどそういう風には見えない
0563デフォルトの名無しさん
垢版 |
2017/05/27(土) 10:36:00.65ID:IYBRhAj3
async awaitの説明サイトがあんまり初心者もは優しくないんだよな
どれもいまいちというか
何故かTaskの説明ばかり

重要な事にはほとんど触れてない
0564デフォルトの名無しさん
垢版 |
2017/05/27(土) 10:39:17.27ID:8fRknhmf
C#は突出して新しいことをやっているわけではないが
まだマイナーだけど光るものを見つけてきてメインストリームに持ってくるときの
取捨選択とデザインのセンスが神がかっているという印象
0566デフォルトの名無しさん
垢版 |
2017/05/27(土) 13:41:30.68ID:p4c408zN
>>563
非同期(スレッド)を理解せずに非同期メソッドが使えるはずがなく、
そもそも非同期自体が初心者が気軽に使えるような機能じゃないんだから当たり前だw

っていうか、@ITの記事はちょっと説明が足りない部分はあるけどよく書けてるでしょ
あれで何が不満なんだ?
0567デフォルトの名無しさん
垢版 |
2017/05/27(土) 13:59:40.73ID:gzircrhE
C#でintの配列を保存したファイルを読み込んでint配列に設定したいんですが
まずbyte[]に読み込んでそれを変換するという形になりますか?
一番効率の良い方法ってどんなでしょうか?
System.IO.FileStream fs = System.IO.File.OpenRead(path);
byte[] b = new [4*32];
fs.Read(b, 0, 4*32);
fs.Close();
int[] = n = new [32];
コピーはひとつずつする以外にどういうやり方があるでしょうか?
0568デフォルトの名無しさん
垢版 |
2017/05/27(土) 14:10:30.20ID:VKoRAsZa
>>567
var buffer = new int[ 32 ];
using( var fs = File.OpenStream( path ) )
using( var reader = new BinaryReader( fs, Encoding.Ascii, true ) )
{
for ( int i = 0; i < buffer.Length; ++i )
{
buffer[ i ] = reader.ReadInt32();
}
}
0570デフォルトの名無しさん
垢版 |
2017/05/27(土) 14:51:03.74ID:djXMvCo4
>>567
一番効率が良いというとやはりポインタにしてC++で言う所のreinterpret_castだけど
C#ではunsafeになり非推奨なので、基本形は>>568のようなBinaryReader/Writerになると思う

汎用的な所だとバイト配列と数値型の変換を行うBitConverter、IntPtrを介して遣り取りするMarshal.Copy
UnmanagedMemoryAccessorのバックエンドとなるSafeBuffer(ジェネリック及び構造体配列が指定可能)など
うちSafeBufferは抽象クラスなので http://ideone.com/P6ZpjV みたいな実装を自前で書く必要あり
0571570
垢版 |
2017/05/27(土) 15:29:18.13ID:djXMvCo4
1つ忘れてた、Buffer.BlockCopyでバッファ自体をコピー可能、プリミティブ配列同士ならこれが最もシンプルだったような
Stream.Readの一部実装はArrayなら何でも読み込めた気がするけど、無理矢理渡す方法がアレなので…
あとSafeBufferの配列読み書きはMarshal.AlignedSizeOf<T>(内部メソッド)のバイトサイズでアライメントされる
0573デフォルトの名無しさん
垢版 |
2017/05/27(土) 16:00:40.64ID:5EjoFYzo
Bufferなんてクラスが1.1の時代からあったのか知らなかったw
>>567みたいなのはbyte[]でまとめて読んでint[]にunsafeかCopyMemory使って
コピーしてたなあ

>>567は配列の要素が固定なら固定サイズバッファの共用体使えば
コピーなしでいけるんじゃないかな
0574デフォルトの名無しさん
垢版 |
2017/05/27(土) 17:01:09.52ID:uuvh7wIS
質問の主語がわからんが、int配列のデータをWriteして、1バイトづつReadしたら、もちろん逆になってるよ
0575デフォルトの名無しさん
垢版 |
2017/05/27(土) 17:45:11.27ID:gIqbrIjJ
環境依存じゃないかって言ってるならたぶん理念的には環境依存なんだろうね

68kみたいにビッグエンディアンのC#の動作環境があったとしたら、
その環境ではbyte[]を*intで正常に読めないと思う
0576デフォルトの名無しさん
垢版 |
2017/05/27(土) 18:16:22.09ID:dfyKY7Wk
まあファイルI/Oはメモリー操作に比べると思いっきり遅いから
何やっても大して早くならんけどね
0578デフォルトの名無しさん
垢版 |
2017/05/27(土) 18:27:21.11ID:gIqbrIjJ
>>576
だからこそパフォーマンスが必要なら1つずつチビチビじゃなくて一度になるべくまとめて読み書きするんですよw
0579デフォルトの名無しさん
垢版 |
2017/05/27(土) 18:32:14.66ID:S8Hvv/fS
>>578
基本的なことだけど、バッファがあるからアプリケーションレベルで小細工する必要はないよ
0580デフォルトの名無しさん
垢版 |
2017/05/27(土) 19:01:40.80ID:gIqbrIjJ
>>579
Windowsのアーキテクチャーに詳しいわけじゃないけど、
書き込みは確かにディスクキャッシュにバッファリングされるから
プログラム側でまとめて書いても効果薄いかもしれないけど、
読み出し時にはHWレベルでもOSレベルでも大きなキャッシュなんか
用意してないはずだから、プログラム側でまとめて読む意味はあると思うよ
0585デフォルトの名無しさん
垢版 |
2017/05/27(土) 20:12:08.55ID:VKoRAsZa
>>580
検証したことないけど、FileOptions.SequentialScan指定してFileStreamを作成したらprefetch効かないかな。
0586デフォルトの名無しさん
垢版 |
2017/05/27(土) 20:52:47.13ID:dfyKY7Wk
>>580
ディスクの読み書きってさ、最小限でもセクターって単位で処理するんだが今のWindows10だと4096バイト有るんだわ
だから1バイト読んでもメモリーには最小でも4096バイト入るわけだね
0587デフォルトの名無しさん
垢版 |
2017/05/27(土) 20:59:07.50ID:gIqbrIjJ
>>586
HDDの物理層の知識はゼロだけど、セクターってのはファイルシステム上の概念であって
最小の読み出し単位じゃないと思うよw

SSDみたいなフラッシュメモリーには最小の書き換え単位が存在するけど
最小の読み出し単位は存在しない
0588デフォルトの名無しさん
垢版 |
2017/05/27(土) 21:03:14.20ID:WiwmRK76
物理層も高速化のためにセクタ単位で読んでるはずよ
ファイルシステムより低位の概念
0589 ◆QZaw55cn4c
垢版 |
2017/05/27(土) 21:06:30.48ID:+Wc4u9QX
>>587
ファイルシステム上の最小概念はクラスタ
セクタじゃない
0590デフォルトの名無しさん
垢版 |
2017/05/27(土) 21:12:40.87ID:dfyKY7Wk
>>587
ディスクってさ、回転するからそれとシンクロして読まないと一周待たないといけなくなるんだよね
だからディスクは決まったバイト数をシーケンシャルに読むのが当たり前なんです
で。その最小単位をセクターと呼んでwindows10だと4096バイト有る
SSDはそんなこと無いけど、HDDと同じ振る舞いで動くようにセクタ管理しています
0593デフォルトの名無しさん
垢版 |
2017/05/27(土) 21:20:55.03ID:nge3QdkF
定義は色々違うけど概ね
セクター ... 物理的に読み書きできる単位
ブロック... 論理的に読み書きできる単位
クラスタ ... ファイルシステムの割り当て単位
って言う場合が多い
なお HDD でも1バイトだけ読み出したり書き換えたりはできない
必ずセクター単位の読み書きになる
0595デフォルトの名無しさん
垢版 |
2017/05/28(日) 00:11:01.44ID:HK/67GFs
今時OSどころかBIOSでさえ、ディスクの物理的なセクターとか管理できてないけどな
0596デフォルトの名無しさん
垢版 |
2017/05/28(日) 12:23:16.31ID:2K8JxE4j
UDPでデータをBeginiReceiveで非同期受信したらToastで受信文字列を表示させたいんだが、以下みたいなバックグラウンドスレッドからGUI操作はできませんみたいなのがでる
Java.Lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

これ対処どうしたらいいかな
Javaのやり方は見つけたけど、Xamarinだとどうしたらいいかいまいちわからん「
0598デフォルトの名無しさん
垢版 |
2017/05/28(日) 12:38:59.53ID:2K8JxE4j
あ、ごめんw
Xamarinスレと思って素で間違えた
失礼しました

ちなみにSynchronizationContext使ったら解決しました
0599デフォルトの名無しさん
垢版 |
2017/05/28(日) 20:16:37.95ID:dc5zy2FD
ブラウザコントロールを使ったアプリを作りたいんですが、
WinFFormsでもWPFでも、webサイトを開くと、ブラウザが古いって言われてマトモに表示できません。
新しいブラウザコントロールはどうやって使用したらいいでしょうか?
0603デフォルトの名無しさん
垢版 |
2017/05/28(日) 20:54:57.63ID:Q4IaIxAm
>>599
"c# webbrowser ie バージョン"でググると色々出てくるよ
要はレジストリを弄る必要がるんだが、プログラムから変更して戻すパターンも有るから
探すと良いよ
0605デフォルトの名無しさん
垢版 |
2017/05/28(日) 21:52:44.46ID:9tRj7diM
WPFのデータバインディングって速度速かったりするん?
コントロールとDBをリンク出来るような感じって思って良いんだよね?
0607デフォルトの名無しさん
垢版 |
2017/05/28(日) 22:17:03.35ID:9tRj7diM
>>606
じゃあXMLに保存された1万件の音楽情報を
グリッドに展開するとしたら?
0608デフォルトの名無しさん
垢版 |
2017/05/28(日) 22:32:41.86ID:WRn0Vp2w
データバインディングの動きを理解してない以上
手を出さねーほうが無難じゃね〜の?
0611デフォルトの名無しさん
垢版 |
2017/05/29(月) 16:23:55.26ID:NQQqCKG9
↓このような処理があった時にbutton1を押して無限ループのタスクを実行した後に
button2のクリックイベントからtaskを止める方法ってありますでしょうか?どなたか教えてください

Task task;
private async void button1_Click(object sender, EventArgs e)
{
task = doTask();
}
private async Task doTask()
{
await Task.Run(() =>
{
while (true)
{
// 無限ループ
}
}
}
private async void button2_Click(object sender, EventArgs e)
{
// ここでtaskを止めたい
}
0616デフォルトの名無しさん
垢版 |
2017/05/29(月) 17:31:52.87ID:NQQqCKG9
>>612
ボタン2はタスクを止める処理と書きましたが
実際にはonとoffの処理を兼ねているので
フラグを使った制御を行うと、例えばボタンを連打した時におかしな挙動なってしまうような気がします。

>>613
CancellationTokenSource ってタスクの中から制御するのかとおもってたのですが
外からでも制御できるんですね。調べてみます。

>>614
スクレイピングです

>>615
ちょっと気になるのでもう少しだけ詳しく教えて頂けますでしょうか?
0617デフォルトの名無しさん
垢版 |
2017/05/29(月) 17:49:34.30ID:pjx27QrG
>>616
普通に考えれば、ループを抜けるにはループの継続条件がfalseになるように変えてやるだけ

それなのに>>611みたいな質問をするのは、制御構造を無視して強制終了したいとか
考えてるんじゃないかという印象を持った。

普通はそんな必要はないよね。
そんな必要があるのは、デッドロックするバグがある、ソースをいじれないライブラリを利用する時ぐらい。
0618デフォルトの名無しさん
垢版 |
2017/05/29(月) 17:56:22.13ID:guqVR5DS
適切な処理をせずにスレッドを強制的に止めるのは設計がよくないという話、まあ気持ちは分かるけどね
0620デフォルトの名無しさん
垢版 |
2017/05/29(月) 18:00:51.67ID:oHsWfsZc
>>617
Waitで長時間待ったりしてることもあるから、
こういうのはキャンセルで止めたほうが確実だよ
0621デフォルトの名無しさん
垢版 |
2017/05/29(月) 18:15:18.42ID:NQQqCKG9
皆さんありがとうございました
フラグで制御すると無限ループ内のいたるところでgoto文を書かなきゃ行けないので
まずいかなと思っておりました
やっぱりキャンセルで止める方法を調べてみます。
たくさんのご意見大変参考になりました。ありがとうございました!
0623デフォルトの名無しさん
垢版 |
2017/05/29(月) 19:24:40.20ID:pjx27QrG
>>622
俺の理解が間違ってるのかな?

確かにCancellationTokenSource使えばユーザーコードなしても実行前のタスクをキャンセルすることは
可能だと思うけど、一旦動き出したタスクを強制終了なんか出来ないと思うけど...
0624デフォルトの名無しさん
垢版 |
2017/05/29(月) 19:30:56.57ID:cnTBcIoG
外部exeとかもそうだけどキャンセルするからといってプロセスをすぐ殺す必要はないんだよな
>>623
安全に中断とかでなく止められれば何でもいいんだろ
質問者はもういないしスレ違いの方に行きそうだからその辺でやめてくれ
0625デフォルトの名無しさん
垢版 |
2017/05/29(月) 19:33:24.08ID:HUcfMRFq
>>623
俺も強制終了はされないという認識
タスク内のコードがトークンのキャンセルフラグチェックして終了処理をする必要があると思ってる
0626デフォルトの名無しさん
垢版 |
2017/05/29(月) 19:52:24.02ID:NQQqCKG9
質問者です

強制終了させる必要はなかったので
結局キャンセル入れてタスクのループから抜けるということにしました
↓一部抜粋ですが以下のような感じです。これ便利ですね勉強になりました

Task taskTest = Task.Factory.StartNew(() =>
{
while (true)
{
try
{
cancellationTokenSource.Token.ThrowIfCancellationRequested();
}
catch (OperationCanceledException oce)
{
break;
}
}

cancellationTokenSource.Dispose();
cancellationTokenSource = null;
}, cancellationTokenSource.Token);
0627デフォルトの名無しさん
垢版 |
2017/05/29(月) 20:24:05.73ID:TtK3Weat
例外投げるのって結構コストがかかるんだよな
それでもループ抜けるのに例外使う利点って何か教えて
0629デフォルトの名無しさん
垢版 |
2017/05/29(月) 21:04:57.40ID:KWmGTlOy
>>626
恐らく問題ないと思いますがcancellationTokenSourceの後処理はfinally{}の中でやると尚良いですね

>>627
try catchを使えば、深い階層でも一気にcatchまで戻ってこられるので、キャンセルなど残りの処理をブッチするのに非常に都合がいい
キャンセルの処理だからこの程度のコストは考えなくてもいいからね
どうしても例外が嫌なら、CancellationTokenのフラグを見て戻る方法もあります
0632デフォルトの名無しさん
垢版 |
2017/05/30(火) 00:17:48.17ID:7mmlzI+/
>>631
Thread.Interruptと一緒ってのが間違い。
その記事にあるように、対応メソッドだけキャンセル出来る。
Thread.Interruptみたいに無理やり止めるわけじゃないから、こっちのが安全。
0633デフォルトの名無しさん
垢版 |
2017/05/30(火) 00:28:00.84ID:7mmlzI+/
>>631
最近追加されたメソッドはCancellationTokenに対応したものが多いよ。
それらを使って組めば、タスクをすぐに止められる。
0634デフォルトの名無しさん
垢版 |
2017/05/30(火) 00:30:40.38ID:iGfRfCvW
>>631
リンク先のコードは試すまでもない意味不明なプログラムだな
CancellationTokenでのキャンセルは自分でTokenを監視してキャンセル処理を書かないと何もしてくれない
Task作るときに渡しといたからって中断処理をしてくれるわけじゃない
だからこの結果は当たり前

CancellationTokenに対応してるメソッドはTokenを監視してその処理固有の何らかのキャンセル方法を使って処理をキャンセルしてる
Thread.Interruptとは違う
0636デフォルトの名無しさん
垢版 |
2017/05/30(火) 01:40:24.01ID:yo83A8ao
>>632-634
だから汎用性はないし、単純なループを抜けるだけなら
コードが複雑になるだけで単純にループの継続条件を操作する方法以上にメリットが
存在するケースはむしろ限られるわけで、>>611に勧めるのは不適切だと思うけど
0637デフォルトの名無しさん
垢版 |
2017/05/30(火) 02:03:42.90ID:7mmlzI+/
>>636
>>611の無限ループの中身がスクレイピング(>>616)って書いてあるんだから、意味あるでしょ。
HttpClientはCancellationTokenに対応してるんだから。
>>633に書いた通り、最近追加されたのは対応してるの多いよ。
0640デフォルトの名無しさん
垢版 |
2017/05/30(火) 08:10:12.34ID:nt0s20eG
>>632,634
InterruptはSleepやロックを潰すだけだよ
従来Interruptで止めていたようなケースでは、自分でトークンの明示的なチェックなんていらなくて
呼び出し先の時間のかかるメソッドにトークンを適切に引き継ぐだけでいい(キャンセルされたら例外で止まるから)
基本的にスレッドをブロックするだけの同期処理とは違って、
async/awaitの場合は「待ち方」が実装に依存するので、最終的に「待っている」ところに限って
実装者がキャンセル処理を個別に実装する必要がある
そこ以外での扱いの考え方は基本的にはInterruptと変わらんよ
0641デフォルトの名無しさん
垢版 |
2017/05/30(火) 08:36:57.90ID:nt0s20eG
CancellationTokenの引き継ぎって明示的に渡さなくてもいいように実装できなかったのかな
一番深いところで例外を発生させるという、たかがそれだけのために途中の全てのメソッドに引数を追加しなきゃいけないのはイケてない
コンテキストを跨るから単純なスレッドローカルじゃ駄目なのはわかるけど、
そこだけSynchronizationContextみたいに手動でstaticプロパティから取ってきて明示的に引き継げばいいだけじゃないのか
それとも意図的に途中で連鎖を切るようなケースを想定してるのかな
0642デフォルトの名無しさん
垢版 |
2017/05/30(火) 08:50:03.66ID:nt0s20eG
あーでもキャンセルのハンドリング自体が非同期で行われるようなケースまで想定すると、
トークンをスレッドローカルにしたら無関係な他のジョブにまでキャンセルが伝播してしまうケースがあり得るね
やっぱりダメだな
0644デフォルトの名無しさん
垢版 |
2017/05/30(火) 09:36:50.58ID:4zyQHZTY
>>643
良くないよ
呼び出した先のメソッドをどうやって止めるつもり?
そうやって、よくある止まらない停止ボタンが出来上がるんだよ
0647デフォルトの名無しさん
垢版 |
2017/05/30(火) 11:47:54.70ID:27U6uUbR
スクレイピングの処理時間の大半は、レスポンスが返ってくるのを待つ時間と受信処理
CancellationTokenならそれを中断できるけどフラグ処理じゃ手も足も出ない

まあ作っても役立たずのゴミクズボタンが出来るだけだな
0648デフォルトの名無しさん
垢版 |
2017/05/30(火) 13:19:04.25ID:iGfRfCvW
>>640
従来Interruptで止めてたケースってなんだよ
ここでやってるスクレイピングのためのネットワーク処理はInterruptじゃ止まらないよね?

InterruptとCancellationTokenの類似性って見た目何らかの処理を中断して戻れるってだけでしょ、そんな事は指摘するまでもないし
それ以上は内部実装なども全然違うものだよ

もっと言うとCancellationTokenはキャンセル処理を統一的に扱うインターフェースでInterruptはその実装の一つと見れる
しかしCancellationTokenの実装としてスレッドのInterruptを使っているものは少なくともIO処理ではないでしょう
実際FileStreamのキャンセル実装はwin32apiのCancelIoEx使ってたし
ネットワーク系のもそんな感じでしょ
0650626
垢版 |
2017/05/30(火) 14:31:20.95ID:Wk6Gc0Fl
昨日はタスクのキャンセルの件ありがとうございました。大変助かりました。

そして、また連日の投稿となってしまい申し訳ありませんが
現在また原因不明の現象に悩まされていて困っております。
もしよかったらどなたか解決して頂けませんでしょうか?

seleniumを使ったプログラムなんですが
一度遷移先でタイムアウトが発生してしまうと
それ以降別ページへの遷移ができなくなってしまうというものです。
そもそもなんでタイムアウトを設定しているかというと
重たいページであっても一定時間すぎたら無条件で次ページへ遷移してほしいからです
どなたか解決方法がわかる方お答え頂ければと思います。

ソースは以下のような感じです

webDriver = new ChromeDriver();
// タイムアウトを2秒に設定
webDriver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(2));

foreach (string UrlString in UrlList){
try
{
webDriver.Navigate().GoToUrl(UrlString); // 一度タイムアウトが発生すると次回以降遷移出来ない
}
catch (OpenQA.Selenium.WebDriverTimeoutException) { }
}

※UrlListには適当なURLがいくつかはいっております
度々すみませんがどうぞよろしくお願いします。
0651デフォルトの名無しさん
垢版 |
2017/05/30(火) 14:47:13.92ID:4zyQHZTY
>>649
関係ないと思うなら多分君はキャンセルフレームワークの使い方を勘違いしてるんだろうな
CancellationTokenは同じものを引き回して使うの
受け取ったCancellationTokenを呼び出し先のメソッドにそのまま渡すことで、
キャンセル要求時に処理がどのメソッドにあったとしても関係なく例外を起こして潰すことができる仕組みだ
0653626
垢版 |
2017/05/30(火) 15:23:37.93ID:Wk6Gc0Fl
自分の質問のせいで争いが起こってしまうとは・・・
申し訳ないです。。
0654デフォルトの名無しさん
垢版 |
2017/05/30(火) 15:50:05.28ID:r/CU7EmN
気にすんな

タイムアウトしたら次、ってことはCookieの引き継ぎとかどうでもいいってことになるけど
それなら新しくChromeDriverをnewするって雑なやり方は?
0655デフォルトの名無しさん
垢版 |
2017/05/30(火) 16:48:13.36ID:Wk6Gc0Fl
はい、クッキーはどうでもいいです
ただchromedriverをnewするとブラウザが新たに立ち上がっちゃうのでなるべく同じブラウザのまま対応したいです
0657デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:00:00.41ID:9pAG49er
あの…WPFとUWPはどっちが速いですか?
優秀な方教えてください
0659デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:01:55.63ID:9pAG49er
>>658
エェッo┤*´Д`*├o
0661デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:10:38.44ID:9pAG49er
>>660
起動確かに速いな
常にスタンバってるのかな
0662デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:18:21.10ID:27U6uUbR
>>661
.netと違って、ライブラリの中で使うクラスだけ抽出してスタティックリンクするから
ロードするサイズが全然違いますね
0665デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:27:03.66ID:9pAG49er
>>662
ほえー
アプリ開発者と関係なくUWPがそういう仕組みになってるってこと?
0666デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:27:17.24ID:nt0s20eG
>>664
それとPhantomJSじゃ駄目というのとがどう繋がるのか分からん
ブラウザも表示しておく必要があるのか?
0667デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:28:41.25ID:9pAG49er
>>650
お前エロ動画自動収集作ろうもしてるだろ
俺にはわかるぞ
0668デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:33:16.73ID:Q5Vu0cbW
>>666
PhantomJSからwindowsアプリにデータの受け渡しをすればいいって事ですか?
タイムアウトの問題を解決するためだけなのにすごく二度手間な事してるような気がしてしまいますが・・・
0670デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:40:27.25ID:27U6uUbR
>>665
まあそんなところ。その他.net nativeだから、ライブラリもCLiじゃなくて普通のバイナリだから立ち上がった後の反応も全然違いますよ
0672デフォルトの名無しさん
垢版 |
2017/05/30(火) 20:29:50.15ID:PLPV+qTT
class ClassA
{
public override bool Equals(object obj)
{
if (this == obj)
{
return true;
}
else{
return false;
}
}
public override bool GetHashCode() { }
}

static void Main(string[] args)
{
ClassA a1 = new ClassA();
ClassA a2 = new ClassA();
bool b = a1.Equals(a2);
}

GetHashCodeなしだと警告がでるんですが、この場合GetHashCodeのコードはどう書けばいいでしょうか?
0673デフォルトの名無しさん
垢版 |
2017/05/30(火) 20:48:23.05ID:nt0s20eG
>>668
いやブラウザが開くのが嫌ならヘッドレスなドライバを使えばいいだろと言ってるだけなんだが
0676デフォルトの名無しさん
垢版 |
2017/05/30(火) 22:40:18.35ID:GhBAathx
便乗で質問だけど、オブジェクトの等価検査で使われる値が変化した時は
ハッシュコードも変えないとまずいよね?
0677デフォルトの名無しさん
垢版 |
2017/05/30(火) 22:43:36.35ID:kWERrntF
>>676
変えなくてもハッシュテーブル系のパフォーマンスが落ちるだけ、それで使わんなら適当でいい
0678デフォルトの名無しさん
垢版 |
2017/05/30(火) 23:44:25.77ID:PLPV+qTT
>>674 >>675
お2人のレスでGetHashCodeがintを返すものだと気づきました。
いろいろ漁ってみたんですが、this.GetHashCode()の方が1より速いみたいなんでこれで行こうと思います。
レスありがとうございました。
0679デフォルトの名無しさん
垢版 |
2017/05/31(水) 00:37:06.72ID:lBEWYtx2
Formアプリで登録リスト一覧みたいなものを表示させたいんですが、DataGridViewみたいな感じにしたい時は何を使いますか?
0683626
垢版 |
2017/05/31(水) 05:04:07.36ID:zbjxMbd2
>>673
いえブラウザが開くのは問題ないんですが
タイムアウトが発生するたびにブラウザを開き直すのはちょっと問題があります
なにか他に方法があればいいんですが・・・
0686デフォルトの名無しさん
垢版 |
2017/05/31(水) 06:39:24.23ID:zbjxMbd2
すいません質問がかなり流れてしまってるのでもう一度書かせていただきます

seleniumを使ったプログラムなんですが
一度遷移先でタイムアウトが発生してしまうと
それ以降別ページへの遷移ができなくなってしまって困ってます
そもそもなんでタイムアウトを設定しているかというと
重たいページであっても一定時間すぎたら無条件で次ページへ遷移してほしいからです
どなたか解決方法がわかる方お答え頂ければと思います。

ソースは以下のような感じです

webDriver = new ChromeDriver();
// タイムアウトを2秒に設定
webDriver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(2));

foreach (string UrlString in UrlList){
try
{
webDriver.Navigate().GoToUrl(UrlString); // 一度タイムアウトが発生すると次回以降遷移出来ない
}
catch (OpenQA.Selenium.WebDriverTimeoutException) { }
}

※UrlListには適当なURLがいくつかはいっております
度々すみませんがどうぞよろしくお願いします。
0688デフォルトの名無しさん
垢版 |
2017/05/31(水) 10:03:22.46ID:bfprNrby
お世話になります。
ある二次元のArrayListがありまして、
そのArrayListのある1行だけをまるまる別のListへコピーしたいのですが、
色々調べても書き方がわかりませんでした。
どのように書けば良いのでしょうか。

型は全要素がstringになっているという前提で良いです。
0689デフォルトの名無しさん
垢版 |
2017/05/31(水) 10:10:44.40ID:bfprNrby
688ですが、一旦質問を取り下げます。
二次元のArrayListではなくて、string配列のArrayListでした。
頭の中を整理してからまた質問させていただきます。
0690デフォルトの名無しさん
垢版 |
2017/05/31(水) 11:11:33.20ID:YxSv7yTD
Comparison<T>をIComparer<T>に変換する機能って用意されてないよねやっぱり

デリゲートは拡張メソッドも変換演算子も定義できないし、古典的なユーティリティークラスで
やるしかないのかな
0691デフォルトの名無しさん
垢版 |
2017/05/31(水) 11:41:32.37ID:vbSdRoYa
そういうライブラリを探す手間が大変
高級言語ってそれが面倒
最初っから当てにしない方が精神的に良いのがわかってても
あるはずだと思って探す
0692デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:16:43.04ID:Z1ZTId/u
>>690
ん?
public static IComparer<T> ToIComparer<T>(this Comparison<T> cmp)
って定義できたし呼び出しもできたけど VS2015
0693デフォルトの名無しさん
垢版 |
2017/05/31(水) 15:14:41.46ID:SYDtjKSh
あれ、デリゲートの拡張メソッドって定義できないと思い込んでたけど勘違いか。
ジェネリックの制約か何かとごっちゃになってたかな
0694デフォルトの名無しさん
垢版 |
2017/05/31(水) 15:17:45.21ID:YmmFUVDx
そんなことするより普通にnew MyDelegateComparer(comparison)でいいだろ
変なごちゃ混ぜユーティリティクラスに依存するよりよっぽどマシ
0695686
垢版 |
2017/05/31(水) 15:44:13.55ID:zbjxMbd2
ここでもだれもわからないんですね・・・
どうすればいいんだろう・・・
0697デフォルトの名無しさん
垢版 |
2017/05/31(水) 19:20:18.69ID:EmdHwMni
Null許容型の話ししてもいいですか?
0699デフォルトの名無しさん
垢版 |
2017/05/31(水) 20:58:06.31ID:P4eqmxhP
ASP.NET Identityって要するにユーザー情報やロール情報のリポジトリを注入するだけで認証処理が機能するようになるよって感じ?
0701デフォルトの名無しさん
垢版 |
2017/05/31(水) 21:36:24.45ID:PjLtCLFm
いつも思うけど、こういう奴誰に向かって威張ってるつもりなのかね
っていうかそれがそんな偉そうに言うような話かw
馬鹿じゃねえのほんっと
0704デフォルトの名無しさん
垢版 |
2017/05/31(水) 21:50:42.84ID:rluwNjli
>>702
Object型で格納されるから参照する時にキャストが必要。
後、値型だとボックス化が起きる。
0708デフォルトの名無しさん
垢版 |
2017/05/31(水) 22:22:39.78ID:bj9JDDoN
以下のようなコレクションから、プロパティ「name」「no」が重複しているオブジェクトを全削除したいのですが
Linq等で短いコードで書けそうだなと思いながら、いざ考えてみるとやり方が思い浮かばず困っております
よろしくお願いします

public class TestStore
{
public string name { get; set; }
public int no { get; set; }
public int noctl { get; set; }
}

class Program
{
static void Main(string[] args)
{

List<TestStore> list = new List<TestStore>();
list.Add(new TestStore { name = "hoge",no=2,noctl=999});
list.Add(new TestStore { name = "hoge", no = 2, noctl = 888 });
list.Add(new TestStore { name = "fuga", no = 1, noctl = 888 });

      //プロパティ「name」「no」が重複するオブジェクトを削除する処理
//最終的にはname = "fuga"だけが残っているイメージです

}
}
0709デフォルトの名無しさん
垢版 |
2017/05/31(水) 22:24:50.71ID:ne18o3PY
>>708
あのさ
自分でもわかんねーコード
人にどうやって読んでもらうの?
少なくとも初心者スレで聞くのはやめろ
0713デフォルトの名無しさん
垢版 |
2017/05/31(水) 22:58:48.07ID:bj9JDDoN
>>712
期待通りの結果が出ました

なぜ上手くいくのかメカニズムが解らないので
参考にさせて頂きます

やはり出来る人は凄いですね

ありがとうございます
0717デフォルトの名無しさん
垢版 |
2017/06/01(木) 00:42:51.33ID:mM6BhS1s
改めて思ったけど、IEquatable<T>とIEqualityComparer<T>の関係って
なんだかわかりづらいな。

IEquatable実装したらGetHashCodeもオーバライドしろっていうのなら
IEqualityComparerだけあれば十分じゃないのか
0719デフォルトの名無しさん
垢版 |
2017/06/01(木) 01:39:00.91ID:ZOQStLdx
>>717
IEquatable<T>は値型に実装するもので、参照型に実装する意味はないよ
一種のマーカーインターフェイスみたいなもんで、これがあることによって
値型のときEqualityComparer<T>.Defaultなどでボックス化を回避することができる
0720デフォルトの名無しさん
垢版 |
2017/06/01(木) 02:01:45.31ID:ZOQStLdx
>>718
EqualsやGetHashCodeはObjectのメソッドなんだから常に等値比較は可能なはずで、なのになんでインターフェイスが必要なのかが質問者の疑問なんじゃないの?
その疑問はもっともで、実際、非ジェネリックなIEquatableって存在しないでしよ
等値比較できることを示すというよりは、型限定なEqualsの実装を持ってることを保証するためのインターフェイスなんだよ
0721デフォルトの名無しさん
垢版 |
2017/06/01(木) 02:23:40.58ID:ldik7UUC
>>713
なぜうまく行くのか自分でもわからんコード仕事で書きたいんだな
アホだな
お前がうまく行くことを祈る
0724デフォルトの名無しさん
垢版 |
2017/06/01(木) 03:49:27.04ID:aKp9LbeA
C# で 6乗したら100になる数字を求める方法ってありますか?
で、プログラムで 6とか 100の部分を可変で入れ込む関数を作りたいのです。
よろしくお願い致します。
0730デフォルトの名無しさん
垢版 |
2017/06/01(木) 08:08:40.56ID:YbQp1MN1
>>729
それは Log10 の方だろ
巾乗根なんて日常生活だと複利計算ぐらいしか思い付かんが6年で100倍なんてあり得んし w
0734デフォルトの名無しさん
垢版 |
2017/06/01(木) 11:01:21.36ID:sVwWAQG0
クラスの中にスタックを持たせたい場合、どう書くのが正しいんでしょうか。
class Solution {
private Stack<char> st = new Stack<char>();
Solution() {
}
public void pushCharacter(char c) {
st.Push(c);
}
場当たりでこんな書き方をしましたが、とても汚く感じます。
0736デフォルトの名無しさん
垢版 |
2017/06/01(木) 11:22:25.63ID:bvaaJ1gb
>>734
可読性とかはその人の感性によるものだから君が汚いって言っても他人にはよくわからんかもしれん
もっと具体的に何がどう気に入らないのか説明してくれんと要件満たしてるんだしそのコードでいいじゃんとしか言えない
0739デフォルトの名無しさん
垢版 |
2017/06/01(木) 11:46:48.93ID:aKp9LbeA
>>725さん
できました!ありがとうございます!

>>728さん >>731さん
お察しの頂いた通り 音関係です。
C#も数学もレベルが低いので苦労しております。

皆様ありがとうございました。
0740デフォルトの名無しさん
垢版 |
2017/06/01(木) 11:49:39.28ID:sVwWAQG0
>>735-736
class Solution {
private Stack<char> st;// = new Stack<char>();

Solution() {
st = new Stack<char>();
としました。
汚く感じるというのは、変数を宣言している所で割り当てするのは変なんじゃないかなと思う、ということです。
変なこと書いてすみませんでした。
0742デフォルトの名無しさん
垢版 |
2017/06/01(木) 11:58:57.49ID:bvaaJ1gb
>>740
宣言と初期化を一緒にするか別にするかはそんなに綺麗汚いに影響しない感じするなー
個人的には統一されてりゃ良いと思うけど
varのこと考慮すれば宣言時初期化のほうが楽なんじゃないかな?ってちょっと思うくらい
(確かメンバ変数もvar使えるようになったよね?)
0743デフォルトの名無しさん
垢版 |
2017/06/01(木) 12:18:08.67ID:RLRug1po
>>740
むしろ初期化できるものは積極的に宣言時に初期化しなきゃ

>>934のコードで疑問に感じる点があるとすれば、スタイルがC#じゃなくてJava
になってる点を除けば、pushCharacterなんていう、スタックを意識させるようなメソッド名が
本当に適切かどうかかね

適切かどうか(そのメソッドを使う時にそれがスタックに対するpushであることを意識する必要があるのか)
はそれだけの情報からは分からないけど、仮に意識する必要がないのであれば
そのメソッド名は考え直した方がいいかもしれない
0746デフォルトの名無しさん
垢版 |
2017/06/01(木) 13:19:28.65ID:ZOQStLdx
フィールドは基本的にreadonly + 宣言時代入
どうしてもreadonlyにできない場合は宣言時代入はまあどっちでもいいと思うよ
ミュータブルなフィールドを宣言時代入するのは意味的に紛らわしいと感じる人もいるはず
0747デフォルトの名無しさん
垢版 |
2017/06/01(木) 13:59:13.59ID:ZI/846Hh
すみません。質問です。

通常のメソッドから非同期メソッドを呼びだす時の場合です。非同期メソッドは無限ループで非同期受信を待機しています。
(async/await)
この時通常メソッドの中の非同期呼びだしが、await演算子を適用することを検討してくださいと警告をうけます。
非同期メソッドの呼びだしにawaitをつけたほうがいいのでしょうか
0750デフォルトの名無しさん
垢版 |
2017/06/01(木) 15:16:26.73ID:ZOQStLdx
>>747
awaitしないなら戻り値のTaskを受け取って何らか処理しないとタスクが宙ぶらりんになる
結果を受け取る必要がないTaskかあるとしたら、それはあまり良くない設計
0753デフォルトの名無しさん
垢版 |
2017/06/01(木) 17:37:25.02ID:Biom6P3b
>>747です
レスありがとうございます。何がしたいかというと
誘導失礼します
http://hensa40.cutegirl.jp/archives/1858
これのサーバー側を非同期で常にアクセスを待ち続けたいのですが、色々と例外が発生してうまく組めません。どの様にコーディングすればいいでしょうか。
0754デフォルトの名無しさん
垢版 |
2017/06/01(木) 18:13:44.67ID:4NZyrsle
>>753
サーバーで複数クライアントからの処理を同時にこなすならawaitしないのは全然普通だよ
コンパイラの警告は基本全部つぶすべきだけどその警告は場合によっては無視していい

複数クライアント対応のサーバー側の処理の骨格は普通以下のような感じ
疑似コードみたいなもんなので当然このままじゃ動かない
さらにclientWorkerで例外が起こった場合を考えるべきだけど
https://ideone.com/Xbn7g0
0755デフォルトの名無しさん
垢版 |
2017/06/01(木) 18:28:51.20ID:MxLX2EtY
> さらにclientWorkerで例外が起こった場合を考えるべきだけど
なのでawaitじゃなくてTaskのまま受け取ってContinueWithでエラー処理とかする
警告もなくなる
0756デフォルトの名無しさん
垢版 |
2017/06/01(木) 18:30:24.63ID:ZOQStLdx
>>754
いや複数リクエストを同時に処理するためのasync/awaitだろ
awaitはContinueWithに相当する操作なんだけど、なんか勘違いしてないか
0757756
垢版 |
2017/06/01(木) 18:43:42.91ID:l+evRAwn
ああリンク先見たらwhileの中でawaitしないことを言ってたのか
失礼した
0758デフォルトの名無しさん
垢版 |
2017/06/01(木) 18:45:38.64ID:6PQ5fYPl
async/await使った非同期サーバー作ったけど、ネットにろくな例無くて苦労したわ
未だにこの表記で良いのかと考えるときあるし
0759デフォルトの名無しさん
垢版 |
2017/06/01(木) 19:52:33.98ID:9Xkv0h5R
>>754
ありがとうございます
とりあえず以下のような感じでやって動いてはいるんですが、大丈夫でしょうか
ただ、listener.Stop()を実行すると、System.ObjectDisposedExceptionの例外がスローされます
対処方法はどうしたらいいでしょうか

public void ServerStart() {
listener.Start();
LoopTestAsync(); ←警告される
}
public void ServerStop() {
listener.Stop();
}
private async Task LoopTestAsync(){
While (True){
using (TcpClient client = await listener.AcceptTcpClientAsync()) {
clientWorker(client);
}
}
}
private void clientWorker(TcpClient client) {
using (var stream = client.GetStream()) {
IFormatter formatter = new BinaryFormatter();
Class1 c1 = (Class1)formatter.Deserialize(stream);
}
}
0761デフォルトの名無しさん
垢版 |
2017/06/01(木) 21:26:37.82ID:llpGiASm
iTunes、UWPアプリ化。マイクロソフト本気でストアアプリ強化へ
http://www.ask-mswin.com/news-170513/

これいつだよ
C#で作ってるのかな
0762デフォルトの名無しさん
垢版 |
2017/06/01(木) 22:00:17.31ID:tw8E59rn
正直、タッチパネル搭載のPC使ってるけどUWPなんてほぼ使ったことないw
これからもまず使わないだろう

モバイルのシェア1ケタのOSのモバイル用アプリなんて生まれる前から死んでいるw
0768デフォルトの名無しさん
垢版 |
2017/06/01(木) 23:52:47.43ID:tw8E59rn
>>766
そういう重箱の隅をつつく話はしてないよww
ほぼ、って言ってるでしょ

それを言うなら、Win8の時代からある立体上海みたいなゲームもやったことあるよw
0769デフォルトの名無しさん
垢版 |
2017/06/01(木) 23:57:43.40ID:tw8E59rn
っていうか、あの設定画面出てくるとゲンナリするよねw

コントロールパネルと設定画面がどういう基準で仕分けされてるのかさっぱり分からんし、
そうでなくても糞見づらいフラットデザインの画面ってイライラしてくる
0772デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:01:28.76ID:xUiVlsMK
>>768
「これからもまず使わないだろう」って書いちゃったよね恥ずかしいよね

てかなぜUWPの話でWin8が出てくる?
0774デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:05:45.63ID:JeVIxJYz
>>772
幼稚だね。小学生か

普通UWPを使うって言ったらストアからダウンロードして使うか、
少なくとも最初からインストールされているアプリを、他に選択肢があるにも
かかわらずあえて使うことだろう。

Windowsを使う限り使うことがほぼ選択の余地なく不可避のものを
「ほらみろお前使ってるじゃないか」ってそんなこと言って何の意味がある

馬鹿じゃねえの
0775デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:08:47.18ID:xUiVlsMK
>>774
そんな幼稚なオレオレ定義知らねえよwww
Googleって便利なものがあるからしばらく勉強してこいカス
0778デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:11:20.74ID:JIPxHJG/
>>774
焦点はUWPを使っているか使っていないかであって、ストアだの代替アプリだのは関係ない
無知を晒して恥ずかしいねえ
0779デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:15:27.76ID:JeVIxJYz
>>778
君のような奴って幼稚な自分が嫌にならないんだから幸せでいいよね。

しかし、いちいち他人の揚げ足をとって言い掛かりをつけないと気が済まない馬鹿って
普段実生活でどういう人生送ってるのかね。
俺ならそういう自分に耐えらんけど

Taptiles(名前忘れてたが)はWin10になった段階でUWPにリメイクされてると思ったけど、
今起動してみたらこれストアアプリのままか、
全画面でないと動作しないのな。
0780デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:19:06.60ID:L4WeawcR
明らかな間違いなのにそれを指摘されたら揚げ足取りだって喚くとか、こいつ技術者ではないだろ。
ID:JeVIxJYz
0781デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:19:23.69ID:t1ywd+Cz
呼び方がわからんが、いわゆるMetroアプリは標準を除くとLine、Nebo、Wunderlist、おためしでMicrosoft Todoぐらいか
DesktopConverterだと、CrystalDiskMark、Slack、NuGet Package Explorerかな

と思っていま見たら、楽天カードアプリがあったので入れてみた
こういう、スマホはアプリ、パソコンではスマホみたいになってたやつはUWP出てくるかもしれんね
セキュリティ的にもそのほうが安全だし
0783デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:22:55.12ID:v+jfPvQO
>>779
まだ自分が何を指摘されたのか理解できていないようだね、お馬鹿さん
いや、理解したから揚げ足取りだなんてアホなこと言って逃げたのかな?
0785デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:24:56.15ID:JeVIxJYz
>>783
幼稚な馬鹿に何を言っても無駄だけど、「ほぼ使ったことがない」という発言をしたのは
俺自身なんだけど。

俺自身がそれをどういう意味で言ったのかを何でお前が決められるわけ?
ほんっと馬鹿にも程がある。しかも幼稚ときてる。
人間として終わってるね。俺がお前なら朝一番で電車に飛び込むレベルで
0788デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:34:20.78ID:JeVIxJYz
>>787
そうだな君が馬鹿で幼稚であることは素直に受け入れてるよ
設定画面がUWPでないと言った覚えも、それを使ったことがないと言った覚えもないけどね。

まあ人間的に幼稚な奴を相手にしても腹が立つだけで得る物がないからこれで終わり
0791デフォルトの名無しさん
垢版 |
2017/06/02(金) 00:59:47.69ID:t1ywd+Cz
>>782
それはわかってるんだけど、Desktop Converterの登場でなんて呼べばいいのかわからなくなってしまった
非Desktop ConverterのUWPだけを指す呼び名って公式でなんかあったっけ?
0793デフォルトの名無しさん
垢版 |
2017/06/02(金) 02:23:04.41ID:uW9UgDbU
>>789-790
横からマジレスすると
もうオワコン過ぎて絶対増えて行かないと思うよ

どうしたんだろうね
昔は書籍とかたくさん書く人いたのに(普及するようにお金撒いてたんだと思うけど)
今じゃそれもなくなってな
0798デフォルトの名無しさん
垢版 |
2017/06/02(金) 03:02:44.75ID:uW9UgDbU
>>796
なんで?
uwpについてなにか言いたいことあったんじゃないの?
ないならもう完全消滅で全会一致ってことでもうこの話題はいいよね?
あとは誰の発言がどう補正されようが完全消滅の事実は消えないんだからすべてが誤差
0799デフォルトの名無しさん
垢版 |
2017/06/02(金) 03:05:16.61ID:uW9UgDbU
別にこの話題を続けたいならいかにuwpがオワコンであるか俺のリサイタルを聞きたいと言うならそれでもいいよ
0800デフォルトの名無しさん
垢版 |
2017/06/02(金) 03:06:13.55ID:xUiVlsMK
>>798
どこを読んだらそうなるんだ?
お前も即効で反例出されて逆ギレしてたキチガイの仲間か?
0804デフォルトの名無しさん
垢版 |
2017/06/02(金) 06:02:50.87ID:71uuKlN0
UWPなんて触る機会来るのかな
うちはレガシーの保守拡張がメインの三流企業だから
やるとしても5年後、10年後とかになるかもしれないな
ドキュメント残しておいてくれよ
0806デフォルトの名無しさん
垢版 |
2017/06/02(金) 13:14:29.51ID:CcFW0hD0
2020年のWindows7終了祭りでWindows10が標準になれば
圧倒的なスピード差でUWP採用されやすくなるだろうね
今でもGUI部品は圧倒しているし、.net Coreが充実してくれば入れ替わるな
0809デフォルトの名無しさん
垢版 |
2017/06/02(金) 14:06:27.38ID:PwRFjZu6
Win8ストアアプリはWin8.1出た時切り捨てて、Win8.1ストアアプリはWin10出た時に切り捨ててるからね。。。
せいぜい2010まで切り捨てないで欲しいわ。

それまでは信用出来ない。
0811デフォルトの名無しさん
垢版 |
2017/06/02(金) 14:34:28.02ID:PwRFjZu6
Win8.1出たらWin8ストアアプリ新規で出せなくなったりね。
開発する側は開発環境新しくするだけだけど、雇ってる企業はその度に買い直しを迫られたろうし、一番可哀想だったのはストアアプリのプログラミング本出してた出版社だったな。
あんなにコロコロ変えられたら出版費用回収出来なかったろう。
0817デフォルトの名無しさん
垢版 |
2017/06/02(金) 18:42:49.51ID:S/qmGr4o
Win7以前のフォームアプリすべて切り捨てたら4Kディスプレイでスケーリングがまともに使えるようになるんだがな
0818デフォルトの名無しさん
垢版 |
2017/06/02(金) 19:00:32.02ID:vakza0ST
>>817
スケなんかできたところで金になんねーだろ
誰が喜ぶんだよ?
入出庫管理アプリ作ったとしてピンチインピンチアウトなんてお客がやると思ってるの?
オメーがエロ画像見てるときぐらいだろそんなの必要なのは
0819デフォルトの名無しさん
垢版 |
2017/06/02(金) 19:14:55.03ID:DJo44r8c
横からだがスケーリングは高解像度でもフォントが綺麗な方向だと思うぞ。
入出庫管理ならAndroidなりWinなりの8型タブにバーコードリーダー繋げてた方が便利だろ。
今時タブのが高解像度だが、Formsのままだと高解像度だと文字が読みにくい。
0820デフォルトの名無しさん
垢版 |
2017/06/02(金) 19:21:18.48ID:8OnrstJc
入出庫管理なんかどうせ固定画面なんだからどうでもいい
フォントをでかくすりゃいいだけ
0822デフォルトの名無しさん
垢版 |
2017/06/02(金) 19:37:19.56ID:C+qIFQhN
UWPはC#でありながらC++並の表示速度が有って、
更にソース丸見え問題が仕組み上解決されている
windows10専用が問題なくなる3年後には、
C++を上書きするポテンシャルが有るよ
0826デフォルトの名無しさん
垢版 |
2017/06/02(金) 20:18:17.15ID:bsjc0qn7
高dpiモニターは医療とヲタ向け以外あんまり需要なさそうな気はするね
コモディティー化したらどうだかわからんが

UWPって現状所詮ストアアプリと同じサブセットじゃん

標準の.NETの方がUWPの要素を取り入れることはあってもUWPが
デスクチップアプリを置き換えるとか100%ないわ
0828デフォルトの名無しさん
垢版 |
2017/06/02(金) 20:35:26.14ID:bsjc0qn7
>>827
いや、UWP勉強してないんでどういうコントロールがあるとか知らんけど、
少なくともライブラリはサブセットでしょ

フルの.NETのライブラリ(BCL)の上位互換じゃないよね
0829デフォルトの名無しさん
垢版 |
2017/06/02(金) 20:37:39.62ID:8OnrstJc
データグリッド使うようなアプリはWebへ行くわな
今更またいつ投げ出すか分からん新技術に賭けるリスクをペイできない
0830デフォルトの名無しさん
垢版 |
2017/06/02(金) 20:52:27.48ID:SPpZD+rV
UWPってスタンドアロンなアプリはゲームくらいのもんで、
基本的にはWebサービスのフロントエンドを作ることを想定したプラットフォームだよ
今の時代バックエンドとしてWeb APIがあるのは当然で、
その上で薄い薄い上っ面をUWPで作るかWebブラウザで作るかという程度のどうでもいい話でしかない
WinForms対WPFとかやってた頃とはもうアプリの概念そのものが全然違うのよ
0831デフォルトの名無しさん
垢版 |
2017/06/02(金) 20:57:45.41ID:bsjc0qn7
なるほどこれからは電卓アプリも端末は画面だけ用意して
実際の演算はネットの向こうに投げるようになるのか胸熱だな
0834デフォルトの名無しさん
垢版 |
2017/06/02(金) 21:11:24.79ID:v1YzyP4O
フロントエンドはブラウザのHTML5で決まりみたいなもんだろ
どうしようもないぐらい差がついてる
もう終局してもいいレベルだからな

グラフコントロールすらないUWPに何ができるんだか
0838デフォルトの名無しさん
垢版 |
2017/06/02(金) 21:31:11.62ID:8GOk0sXV
いやだってこれアプリの製作方針すべてに関わるで
勉強してることが無駄になりかねない
0840デフォルトの名無しさん
垢版 |
2017/06/02(金) 21:41:14.55ID:6KzFniyW
>>838
だったら悪いこと言わないからWebへ行きなさい
あと、アプリ開発だけじゃなくてAWSかAzureを使えるようになっておくといい
引く手数多よ
0841デフォルトの名無しさん
垢版 |
2017/06/02(金) 21:56:03.88ID:xX8a8TPA
今後OFFICEの言語もC#になったりするの?
0844デフォルトの名無しさん
垢版 |
2017/06/02(金) 23:56:38.72ID:puUBGw4G
Officeもなんだかんだでクロスプラットフォームなもんでコア部分のC++実装の共通化に注力してるって話だし
モバイル版も普通にC++ベースなんじゃねのん
0845デフォルトの名無しさん
垢版 |
2017/06/03(土) 01:14:28.52ID:QRerHNeF
C#勉強してるんだけど、デリケートがいまいち理解出来ない。。デリケート使えば便利なのは分かるけどこれを使わないと実現出来ない場面ってどういう時?
0847デフォルトの名無しさん
垢版 |
2017/06/03(土) 01:22:29.37ID:E49aIv1k
>>845
ネイティヴAPIにコールバック登録する時とかかな
たしかデリゲートじゃないとできなかったはず
0849デフォルトの名無しさん
垢版 |
2017/06/03(土) 01:41:40.44ID:4eBaDiw2
どういう時にメソッドを変数に入れる処理するの?
0850デフォルトの名無しさん
垢版 |
2017/06/03(土) 02:10:31.71ID:viAzPl9Z
>>849
それはどういう時に引数に値(例えば整数)を入れてメソッドに渡したいか、と同じこと

それと、なんか上でトンチンカンなこと言ってる奴がいるけど、ラムダ式はデリゲート型の値を
記述する方法のひとつだから、勘違いしない方がいいよw
0852デフォルトの名無しさん
垢版 |
2017/06/03(土) 07:58:02.94ID:E49aIv1k
ICallable的なジェネリックインターフェースと匿名クラス自動実装の糖衣構文ではダメだったのかな
デリゲートを言語機能で用意する必要はあったのか
0854デフォルトの名無しさん
垢版 |
2017/06/03(土) 08:36:18.21ID:SbbN/AwM
デリゲート自体を勉強せんでも
LINQにラムダ式放り込んでたら理解できるよになると思う
0860デフォルトの名無しさん
垢版 |
2017/06/03(土) 09:12:11.24ID:os85wqX+
>>852
Javaのアレは@FunctionalInterfaceをコンパイラが直接認識してたり
メソッドハンドルを使った実装をランタイムが自動生成してたりして正真正銘の言語機能だよ
キーワード増やしたくないのと既存コードとの互換性のためにああなっただけ
まあマルチキャストとデリゲート型宣言は失敗だったけど
0862デフォルトの名無しさん
垢版 |
2017/06/03(土) 09:35:42.69ID:p/yrhdra
個人的にはラムダ式よりデリゲートの方が理解しやすかった
ラムダ式はまだまだわかった気になってるところがある
0863デフォルトの名無しさん
垢版 |
2017/06/03(土) 09:52:25.31ID:5itNX5+j
>>845です
皆さんありがとう。
デリケートって書いてた。これは恥ずかしい。。
formアプリの場合、invokeメソッドを使うときはデリゲートを使わないといけない。それ以外は必要に応じて。という認識で大丈夫ですか?
task内で呼びだすメソッドをデリゲートで行う必要はべつにないですよね?
0866デフォルトの名無しさん
垢版 |
2017/06/03(土) 10:59:41.75ID:os85wqX+
>>864
直接当てはまるものはない
デリゲートは単なる関数ポインタではなく、ターゲットのオブジェクト参照を持っていて
インスタンスメソッドを呼び出すことができる
元ネタはDelphiのメソッドポインタ
0869デフォルトの名無しさん
垢版 |
2017/06/03(土) 11:33:01.98ID:F8KVXb5q
>>863
(説明が100%正しいか自信はないけど)つーか、デリゲート自体は変数と同じようなもので、
値を格納するんじゃなくてメソッドを格納するための型。C#のイベント機能もデリゲートを
使ってるし、意識する・しないに関わらず、デリゲートはあちらこちらで使われ、色々使える

メソッドを変数のように引き渡せるなら、クラス内の特定の処理を自由に差し替えたりできる
でしょ?たとえばあるクラスで、そのインスタンスを作った際に外部からメソッドを渡してやる
事で、インスタンス毎に異なる処理をさせる事ができたりする訳

ただし今はラムダ式など新しい記述方法が出てきていて、コード中でdelegateというキーワードを
使ってデリゲートを定義する機会は少ない
0870デフォルトの名無しさん
垢版 |
2017/06/03(土) 11:46:13.55ID:pwJoSF0V
ありがとうございます
まぁこんな状態なので継承やインターフェースもうまい使いどころが分かっていないんですが。。要はまず習うより慣れろですかね
プログラムを作っててこういうことが出来れば便利なのに!を感じた時に使いどころを覚えていきます
0871デフォルトの名無しさん
垢版 |
2017/06/03(土) 11:52:54.38ID:l/gF2KNd
>>845
>>863
疑問に思ってるのは
「いちいち変数介して実行せんでも直接呼び出して実行すればいいじゃない」っていうことに見えるけどあってる?
invoke使わないといけないような場合は使いますけど…という

つまり、デリゲートなりラムダ式なりでわざわざ処理内容自体を渡す利便性って具体的になんだべ?ってことかいな
0872デフォルトの名無しさん
垢版 |
2017/06/03(土) 12:04:32.36ID:pwJoSF0V
>>871
ありがとうございます
まさにその通りです
まだそういった場面になってないからそう思うだけだとは思うんですが使いどころがいまいちピンとこない感じです。。
サンプルプログラムを見ても、ん?普通にメソッド呼びだしたほうが分かりやすくね?みたいな
0873デフォルトの名無しさん
垢版 |
2017/06/03(土) 12:13:05.71ID:oD9emiaJ
>>872
クラス作成側と使用側が別れてる場面に当たらないと難しい

先頭ノードのみ公開されてるツリー構造のデータの
ノードのすべてを辿るメソッドの引数はデリゲートだと楽そうじゃない?
って言ってわからないならとりあえずまだいいんじゃね?的な
0875デフォルトの名無しさん
垢版 |
2017/06/03(土) 12:29:55.38ID:F8KVXb5q
まあ、Formの中に全部の部品ぶちこんで、すべてのコードもぶちこんで、それですんでるうちは
継承だのインターフェースだのデリゲートだの小難しい事はあまり意識しないでもすむよな
ただ、プログラムの規模が大きくなって、だんだんスパゲティ化してきて処理をすっきりさせたい、
分けられる所は別のクラスに分けたいとか考え始めた頃に、ありがたみがわかってくる
0876デフォルトの名無しさん
垢版 |
2017/06/03(土) 12:32:52.42ID:l/gF2KNd
>>872
いきなり「この技術を自分のコードにどう取り入れるか」から入ってるからイメージ湧かないんじゃないかな
LINQは知らないの?
あれは初心者でも小手先で使えて、しかも便利な上に
「処理内容を渡す」という仕組みの便利さも実感出来ると思うんだけど
ラムダ式も、直接ラムダ式を調べるんじゃなくて(デリゲート知ってる人向けの説明ばっか出てくる気がする)
LINQのサンプルから入った方がイメージしやすいかも

継承やインターフェースなんかは「使う側」としてはもうすでに使いこないしてるはず
ListでもArrayでも、違うクラスなのにForEachで同じ書き方して列挙できるってのはまさに
インターフェースの機能だし
他にも無意識にインターフェースや継承の機能を使ってる場面はあるはず

つまり、.NETのライブラリで実際にその技術を使って設計されてるクラス使ってみて
「それがどういう仕組で動いてて、なんで便利に使えるのか」からアプローチした方がイメージ湧きやすいかも
同じ機能を持つクラスを自分で実装しようとしたらどうなるか、とかね
0877デフォルトの名無しさん
垢版 |
2017/06/03(土) 12:35:38.91ID:HOlIYUlS
関数を変数として扱えると、関数やクラスに引数とかメンバ変数として渡せるんだよ

たとえば朝6時になると何かアクションを実行してくれるクラスがあるとして、
そのクラスにアラームを鳴らすって関数を渡しておけば目覚ましになるし、
録画開始する関数を渡しておけば予約録画機能になる

元のクラスは変更せずに、渡す関数によってあとからいくらでも簡単に機能が追加できるから便利でしょ
0878デフォルトの名無しさん
垢版 |
2017/06/03(土) 12:36:02.80ID:Z3mRcKD7
>>872
例えば親フォームのメソッドを小フォームのダイアログなんかのデリゲートに突っ込んでやる
そうすると、メソッドは親フォームのクラス所属だから普通に親フォームのコントロールやプロバティーに簡単にアクセスできるが
小フォームから簡単に呼び出せる

ダイアログで親フォームのデータ更新するときなど便利に使えるよ
0879デフォルトの名無しさん
垢版 |
2017/06/03(土) 12:53:59.79ID:wtE6TEU1
一般的に「制御の反転(IoC)」と呼ばれる考え方だよ
構造化プログラミングでは通常、呼び出す側が何を呼び出すかを決めており、呼び出す側は呼び出される側に依存する
これをボタンのクリックイベントに置き換えると、
ボタンがフォームの特定のイベントハンドラに依存することになる
これだとフォームごとに別のボタンクラスを作らなきゃいけなくなるだろ?
それを避けるために「移譲」と呼ばれるテクニックを使い、呼び出す側(ボタン)に呼び出される側(ハンドラ)を渡す形になるように制御を「反転」させる
これでボタン側は共通にできる
0880デフォルトの名無しさん
垢版 |
2017/06/03(土) 12:56:39.87ID:Gn01LBfK
>>875
俺社環の話になるけどユニットテスト義務付ければ、糞長い何でもぶち込みコードを撲滅できるのかな
0882デフォルトの名無しさん
垢版 |
2017/06/03(土) 13:03:32.92ID:dUUYIXlx
>>877
それだと理解できないと思うな
だってタイマー判定してる箇所に処理書けばいいじゃん
あくまでその処理が触れないからデリゲートが意味を持つんだよね?
0884デフォルトの名無しさん
垢版 |
2017/06/03(土) 13:55:14.07ID:ep62Y9tf
配列.sort(compareFunction)

ここで引数に、ソートのやり方を渡せば、色々な順番で、ソートできる

例えば、abcd など文字の順番とか、
文字列の文字数が少ない順番とか、
様々な定義ができる

関数も関数オブジェクトに出来るし、
ラムダ式・クロージャも、オブジェクトだから、
これらはすべて同じで、引数にはクラスを渡していると考えればよい
0885デフォルトの名無しさん
垢版 |
2017/06/03(土) 13:57:09.06ID:dUUYIXlx
だからマイクロソフトが提供するapiなんかでこう使うんですってのじゃないとお目にかかる場面は少ないと思う
自社のソースだと作業者毎の縄張りとかないからこんなの作ったらドキュメント必須だね
面倒なので誰もやらんと思う
0886デフォルトの名無しさん
垢版 |
2017/06/03(土) 15:31:04.45ID:aGpIaogF
>デリゲートの質問者

だから、デリゲート型の変数が使えるメリットは
例えばint型の変数が使えるメリットと同じだってば

もしintがリテラルしか使えなかったら、任意の自然数を引数にとって素数か判定するメソッドは書けない。

同じようにデリゲート型の変数が使えなかったら、例えばLINQのWhereみたいに
要素をフィルターする条件を引数に取るメソッドも、ListなんかのSortみたいに
2つの要素の大小関係を決める方法を引数に取るメソッドも書けない
0888デフォルトの名無しさん
垢版 |
2017/06/03(土) 16:37:00.32ID:U3W11ZZJ
>>845です
皆さんありがとうございます
指導頂いた見解として、ある箇所で必ず何かしらの処理をする(コールバック?)時に、その処理が確定的でないならデリゲートを利用して行う処理を渡してあげる

その処理が確定していて後々の拡張を考えないなら直接呼びだすメソッドを書けばいい(こう思ってる場合でもデリゲートを利用するメリットがあるのか??)

ってところでいいですか?
LINQはまだ使ったことないので今から勉強してみます。
0890デフォルトの名無しさん
垢版 |
2017/06/03(土) 21:53:10.11ID:4eBaDiw2
そういや戻り値複数返せるんだっけか
忘れてた
0891デフォルトの名無しさん
垢版 |
2017/06/03(土) 22:18:31.97ID:FqrvzZFP
一定時間ごとにテキストボックスにメッセージを表示する方法が分かりません。
textBox1.Text = "";(空状態)
Thread.Sleep(1000);
textBox1.Text = "A";
Thread.Sleep(1000);
textBox1.Text = "B";
ThreadSleep(1000);
textBox1.Text = "C";
とすると、空の状態から一気にCになります。
順番に表示するにはどうしたらいいでしょうか。
0892デフォルトの名無しさん
垢版 |
2017/06/03(土) 22:22:06.54ID:n3tRmqXX
>>891
C#固有のやり方は知らなくてすまないが一般的にそういう処理は別スレッドでスリープしながらUIスレッドにメッセージを投げて処理する
0897デフォルトの名無しさん
垢版 |
2017/06/04(日) 03:41:26.92ID:P6gj5FUv
ログ表示で俺もやったことあんな
textbox1のメンバにappendなんたらってあったような希ガス
0899デフォルトの名無しさん
垢版 |
2017/06/04(日) 08:39:53.30ID:K3h7l1/2
>>880
全てのユニットテストを義務化すれば撲滅出来ると思うが、コード側を相当修正しなければならないハズなんで、かなり大変だよ。
0900デフォルトの名無しさん
垢版 |
2017/06/05(月) 01:03:05.89ID:SN6Ncnlv
varの話ししてもいいですか?
0903デフォルトの名無しさん
垢版 |
2017/06/05(月) 07:19:09.40ID:RlDx2o4h
>>902
4年ぶりに笑った
0904デフォルトの名無しさん
垢版 |
2017/06/05(月) 15:33:56.56ID:hFu+7Z6c
C#6から構造体のコンストラクタの中もでプロパティを初期化できるように
なってたんだな(VBは昔から可能だった)

ついさっき初めて知ったよ。
どうでもいい独り言でした
0905デフォルトの名無しさん
垢版 |
2017/06/05(月) 15:40:58.72ID:hFu+7Z6c
突っ込まれる前に
C#5まででもデフォルトコンストラクタを呼べば一応可能だった
0906デフォルトの名無しさん
垢版 |
2017/06/05(月) 23:30:17.53ID:iyAPDj0t
WindowsFomアプリのUIに使うフォントって何がオススメ?
ちなWindows7機で
0910デフォルトの名無しさん
垢版 |
2017/06/05(月) 23:56:15.74ID:iyAPDj0t
ありがとう
意外にも普通な回答にびっくりだけど
よくオススメのフォントにあるメイリオはなんかUIにはたるんだ感じがしてしっくりこなかったのよね
0911デフォルトの名無しさん
垢版 |
2017/06/06(火) 00:03:48.51ID:RaNlh7mb
XP切り捨てでよければ(さすがにもういいかもしれん)メイリオでもいいかもしれんけど、
さすがにメニューやドロップダウンやグリッド系には使いづらいね
0912デフォルトの名無しさん
垢版 |
2017/06/06(火) 05:31:03.84ID:HK40XdCV
>>908
最近osの拡大率設定が125%とかなってて昔作ったもん全滅だった
見込み違いはないかも

さらにPC新調してから作ったものは125%でしか正しく表示できなかった
0914デフォルトの名無しさん
垢版 |
2017/06/06(火) 15:42:24.60ID:QWKsgDqg
Win10時代だし、UWPで作った方がいいんかねぇ・・・
WinFormが便利過ぎて移れないw
0916デフォルトの名無しさん
垢版 |
2017/06/06(火) 16:44:06.32ID:QWKsgDqg
これからはWPFの時代だよ!って言ってたのに、
あっさりUWPにしろって言い出したしなぁ
しかもUWPはシリアルポートとかの情報が少ないのがネック
0918デフォルトの名無しさん
垢版 |
2017/06/06(火) 17:13:58.50ID:1IA2XrQh
windows10 Visual Studio2017 C#でボタンを継承したカスタムコントロールを作ったのですが
実際にフォームに貼り付けてデバッグを開始したところ
フォームのInitializeComponentにおいてNullReferenceExceptionが発生してしまいました。
他の自作したカスタムコントロールでは発生しないので、まったく原因がわかりません。

実際に発生するコードは下の行です
this.buttonEx1.CorrectResponseColor = System.Drawing.Color.Empty;
buttonEx1 がnullであると言われてしまいます。

どなたか原因は分からないでしょうか
0920デフォルトの名無しさん
垢版 |
2017/06/06(火) 17:37:00.06ID:/Evb0TVs
>>918
buttonEx1 がnullであるってちゃんとbuttonEx1=new 〜で作っていないんじゃね?
あとはその継承した内容見ないと分からんよ
0924デフォルトの名無しさん
垢版 |
2017/06/06(火) 20:50:59.15ID:SPVV3BvH
>>923
よく読め

>なお、デフォルトでは「任意の場所からのアプリを許可する」に設定されているため、
>今までと同じようにすべてのアプリケーションがインストールできる。
>すぐにWin32アプリケーションが利用できなくなる、という話ではないので、その点はご安心を。
0926デフォルトの名無しさん
垢版 |
2017/06/06(火) 21:09:08.72ID:FgG04McR
っていうかフラットデザインをデスクトップでもごり押しするならもうWindowsなんか使わんw
0927デフォルトの名無しさん
垢版 |
2017/06/06(火) 21:16:08.64ID:+oOec4F1
そりゃマイクロソフトとしちゃあ、UWPへの移行を促進したいのは山々だろうが、
笛吹いてみんなが付いてきてくれるかどうかだからな
マイクロソフトの持つ笛は、随分と昔に魔力を失ったように思えるが
まあ中身は実質Win32のなんちゃってだってUWP扱いだそうだから、それも含めて
いいんだったらねw
0928デフォルトの名無しさん
垢版 |
2017/06/06(火) 21:27:44.09ID:UBc0cyne
>>924
殺る気マンマンだろソレwww

ていうか逆に退路を残してあるのが信用出来ない
当然だけどある程度UWPのユーザが増えたら旧環境は切り捨てなんではないだろか?
んでやっぱり流行らなかったり方針を変えざるを得ない流れが来てしまったら
UWPも残念だったねと
世界のみんなの多数決次第?
0930デフォルトの名無しさん
垢版 |
2017/06/06(火) 23:09:10.99ID:2bdSSkLF
そういやCommunity toolkitのロードマップだと、今月中に1.5リリースとなってるな(今は1.4)
0931デフォルトの名無しさん
垢版 |
2017/06/07(水) 00:04:31.85ID:mz7+HHz3
業務クライアントアプリはもうこのままWinFormsと心中させてあとはWebへどうぞという感じなんだろうね
0932デフォルトの名無しさん
垢版 |
2017/06/07(水) 02:42:03.24ID:pdmLTJmR
UWPもWPFも作るにあたってそんな変わらなくない?
0934デフォルトの名無しさん
垢版 |
2017/06/07(水) 04:52:19.95ID:MG60w+U/
フラットデザイン俺は好きだけどね
でも用意されたコントロール使ってもフラットになんねーのにイラッ
0936デフォルトの名無しさん
垢版 |
2017/06/07(水) 07:19:22.27ID:5R+RdKTB
tryのブロックにint i = "string";と書くと
catchに移動する前にデバッグすら出来ないんですが
tryに書けるエラーの基準とかあるんですか?
0938デフォルトの名無しさん
垢版 |
2017/06/07(水) 07:39:27.82ID:BAs4z1zZ
>>936
それはコンパイルエラー
間違っていることが明らかであり、試しに動かしてみる価値すらないゴミである
出直してこい、といわれて動かす前に門前払いされている状態
tryはそのエラーとは全く関係ない
0940デフォルトの名無しさん
垢版 |
2017/06/07(水) 07:56:49.99ID:5R+RdKTB
>>937
事前に宣言は必須なんですね
>>938
実行時エラーってやつと区別されてたんですね。勉強になります。

返信ありがとうございました。
0941デフォルトの名無しさん
垢版 |
2017/06/07(水) 07:57:44.22ID:pdmLTJmR
>>936
そんなあなたに
varを使ってみてはいかがでしょうか?

intをvarに変えるだけであら不思議!
0943デフォルトの名無しさん
垢版 |
2017/06/07(水) 09:30:19.48ID:p48PqPV5
int i = "123";がコンパイルできないc#はクソ
みたいなスレがこの先バンバン立つだろうw
0945デフォルトの名無しさん
垢版 |
2017/06/07(水) 12:13:45.56ID:AIh4vCR3
>>943
わざわざ入らない入れ物に突っ込むとかプログラマ以前にキチガイ
>>936は throw new ApplicationExceptionが欲しかったんじゃないのか
0946デフォルトの名無しさん
垢版 |
2017/06/07(水) 12:19:21.27ID:aMWxbBw7
今更>>923の記事読んでみたけど、普通に考えて無理筋だね。
ほとんどのユーザーに面倒を強いるだけでメリットが少ないUWP化なんぞ進むと思えない。
MSの偉い人はこんな計画が本当にうまくいくと思ってるのかな。
0950デフォルトの名無しさん
垢版 |
2017/06/07(水) 13:04:16.58ID:pdmLTJmR
もっとも重宝されてるフリーウェアをUWP化すればお金入る?
0952デフォルトの名無しさん
垢版 |
2017/06/07(水) 13:08:09.09ID:BAs4z1zZ
>>950
需要ない
UWPアプリを使う(とMSが想定している)ような層にアプローチするなら
UWPよりもWebサービスにした方がいい
0953デフォルトの名無しさん
垢版 |
2017/06/07(水) 13:35:44.28ID:tO58j6fY
o UWPのAppModel特有のローカルへの制限が厳しい。
 かなり緩くなるとはいえDesktop Bridgeも例外ではない
o XAMLの好き嫌いはともかくとして、用意されている標準コントロールがクソゴミ過ぎる。
 見た目、機能性、数のすべてに置いてウンコな廃棄物でありキーボードサポートなど貧弱の極み
o スマホアプリのようにWebサービス+APIのクライアントとしてなら有効な選択肢にもなるが
 PCの場合Webサービス+ブラウザで済んでしまう

絶望しかない…
0955デフォルトの名無しさん
垢版 |
2017/06/07(水) 13:52:16.48ID:aMWxbBw7
>>947
いや、コンバートのことを言ってるんじゃなくて
他の人も書いてるけどそもそもUWP自体のメリットがないとは言わないがかなり微妙...


ところでしょうもない質問だけど、C#のデストラクタってFinalizeを
オーバーライドするのと何が違うんだっけ?
0956デフォルトの名無しさん
垢版 |
2017/06/07(水) 14:03:28.62ID:tO58j6fY
ただの構文糖だからなんも違わない
混乱するだけだから採用しない方が良かったと言われ続けている負債である
0957デフォルトの名無しさん
垢版 |
2017/06/07(水) 14:12:06.29ID:BAs4z1zZ
FinalizeはオーバーライドすることでGCによるインスタンスの扱いが変わる特別なメソッドなので、
言語上も特別扱いすることはそれなりに理にかなっている
C++のデストラクタの構文を借りたのはクソだけど
0959デフォルトの名無しさん
垢版 |
2017/06/07(水) 14:45:19.77ID:pdmLTJmR
>C# で書いたデストラクターは、コンパイルすると Finalize というメソッドに変換されています。
>なので、デストラクターとは別に Finalize という名前のメソッドを書こうとすると、コンパイル エラーになります。

ホント酷い
0960デフォルトの名無しさん
垢版 |
2017/06/07(水) 14:47:50.46ID:wbJxkgsu
>>953
使ったことない人にはそう見えるかもしれんね
実際にはCommunity Toolkitという公式の拡張でコントロールは豊富だし
何と言っても.net nativeでの高速化と難読化要らずは代えがたい
あと、フリーウエアの場合に配布が容易なこととアンインストールが簡単なのもポイント高いよ
0961デフォルトの名無しさん
垢版 |
2017/06/07(水) 15:36:24.68ID:tO58j6fY
>>960
影だけレイアウト無視して配置されるDropShadowPanelや
ちゃんと丸め処理してなくて特定の幅で突然レイアウトが崩れるAdaptiveGridViewなどなど
ばぐまみれのUWP Community Toolkitがなんだって???
まあ修正しながら有難く使ってはいるよ

それはともかくTemplate Studioやら最近になってようやく標準コントロールの
絶望的な貧弱さをどうにかしようという動きがあることは理解してるよ
この程度の実装ですらコミュニティ頼りなのは気に食わんが
https://blogs.windows.com/buildingapps/2017/06/02/toolkits-toolkits-toolkits/
https://www.microsoft.com/store/apps/9nblggh4tlcq
https://www.microsoft.com/store/apps/9n3fgcz50qnl

今後目指していくのであろうこういうのも嫌いというわけじゃないのよ俺も
https://www.microsoft.com/store/apps/9pp1sb5wgnww

> 何と言っても.net nativeでの高速化と難読化要らずは代えがたい
> あと、フリーウエアの場合に配布が容易なこととアンインストールが簡単なのもポイント高いよ
そうだねユーザーもデベロッパーも笑顔になれる素晴らしいメリットだね、何もかもが駄目とも思ってないよ

でもその前にメリットへの導線をごっそりと引き千切る現実的なデメリットが如何ともしがたいという話なのよ
0964デフォルトの名無しさん
垢版 |
2017/06/07(水) 22:41:40.23ID:hhDTuKVW
コンバーター使いにくそうね
開発者モードにせずにexe右クリックしてコンバートとか
できないのかね
0965デフォルトの名無しさん
垢版 |
2017/06/08(木) 02:16:50.89ID:L/mCMieh
側だけ見ればUWPのメリットは結構あるから、msがどこまで本気で取り組むかだよな

>>928
VB6さえ動作させ続けるmicrosoftが何を切り捨てるって?
機能拡張は止まるかもしれんが
0966デフォルトの名無しさん
垢版 |
2017/06/08(木) 08:59:30.83ID:nTJCwNq1
>影だけレイアウト無視して配置されるDropShadowPanel
影で内側の大きさが変わる方が遥かに扱いにくいよ
どう見てもバグじゃなくて態々そう作ってあるんだよ

あんたが検索したサイト主の感性に合わなかっただけでしょうねw
0968デフォルトの名無しさん
垢版 |
2017/06/08(木) 11:22:29.61ID:dqKuRQ++
XAML、影だけ柔軟性がヤバい!
0970918
垢版 |
2017/06/08(木) 12:12:58.72ID:SHrleZz4
カスタムコントロールにnullReferenceExceptionがでて困ったので質問したものです。
解決しました。
コンストラクタをPublicにしていなかったのが原因でした。
0971デフォルトの名無しさん
垢版 |
2017/06/08(木) 12:31:20.76ID:nTJCwNq1
>>967
パラメータをセットしないとうまく動かない程度が致命的欠陥には思えない
それと影だけ云々の方は引っ込めるのかな?
0973デフォルトの名無しさん
垢版 |
2017/06/08(木) 13:47:01.81ID:qNhFFpjU
>>961
標準のメールアプリやEdge見て思うんだけど、
Microsoftは自社製UWPアプリをもっと作り込むべき。
その過程で様々なUI要素やAPIが必要とされ充実してくる。
0979デフォルトの名無しさん
垢版 |
2017/06/08(木) 16:03:38.27ID:+U8tZQ4R
何年か前は64bitExcelは32bitの拡張プラグインを動かせないからMSが32bit推奨してたけど今は64bitのみになったのかな
0982デフォルトの名無しさん
垢版 |
2017/06/08(木) 19:01:05.53ID:AFDOnKdj
マクロ互換無いからMSも64bitそんなに推奨してなかったような
実際動かなかったから32bitインストールし直したし
0983デフォルトの名無しさん
垢版 |
2017/06/08(木) 19:20:06.08ID:g3CnR/N/
確かそんな感じだったね

でも、どういう仕組みか知らんけどオートメーションに関しては
32bitのコードから64bitのエクセルを操作することも、64bitのコードから
32bitのエクセルを操作することも可能で、その辺はよく出来てると思った
0987デフォルトの名無しさん
垢版 |
2017/06/08(木) 21:13:55.80ID:D/BtlvEx
>>971
誰も致命的な欠陥なんて言ってねえしなあ
俺だってこんなささやかなライブラリの些細な不具合でネチネチ言うのは本意じゃないんだがね
不具合すら認めらない人が居てこんなにしつこいとは思わなんだよ

> それと影だけ云々の方は引っ込めるのかな?
影だけ云々って部分を勘違いしてるようだからわざわざスクショしたのに
そこすら伝わってねえとかバカも大概にとけ
コンテント置いてきぼりにして親の影パネルが配置されるから影がずれるって言ってんの
0989デフォルトの名無しさん
垢版 |
2017/06/08(木) 23:13:15.13ID:ETkTe3KK
>>983
COMのアウトプロセスサーバーは32/64bit統一不必要だけどインプロセスサーバーは統一が必要だね
0990デフォルトの名無しさん
垢版 |
2017/06/08(木) 23:16:56.66ID:joHalbqV
>>987
影をアニメーションさせる時、君の考える仕様だと本体の大きさが影の大きさの影響で変化しちまうよね
影が動くのは光源が動くことだから本体は動いちゃいけないんだよ
だから現在の仕様が正解で君の指摘は的外れです
0991デフォルトの名無しさん
垢版 |
2017/06/08(木) 23:24:07.08ID:qNhFFpjU
>>989
idl だなんだでそれなりに使われて積み上げてきた rpc 関連技術も今や昔
単なる http で xml 渡したり jsonp したりなんとも後退したもんだよね
0994デフォルトの名無しさん
垢版 |
2017/06/09(金) 15:38:25.27ID:1jgja60X
言語習得するにはやはり参考書の1つや2つ必要?
ネットの情報だけで乞食するにはいつか限界がくるかな
0995デフォルトの名無しさん
垢版 |
2017/06/09(金) 15:58:59.01ID:ZTqRiKw5
学ぶなら公式のドキュメントを読めば十分
どうしてもわからないときやピンポイントやりたいことがあるときには
そのトピックについて検索してネットの記事とかに頼ればいい

十分は言い過ぎにしてもとにかく公式のを読むこと。
0997デフォルトの名無しさん
垢版 |
2017/06/09(金) 16:23:55.99ID:HHjljMDI
細かい内容になるとリファレンスが殆ど英語だからなぁ
英語アレルギーにとっては苦痛
1000デフォルトの名無しさん
垢版 |
2017/06/09(金) 17:45:45.79ID:Y6dY8bQb
技術系の文章なんて文法的には中学英語で十分読めるよww
使われる単語数も知れてる
英語学習てw
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 37日 19時間 40分 7秒
10021002
垢版 |
Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況