X



ふらっと C#,C♯,C#(初心者用) Part136
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2018/03/03(土) 15:09:05.75ID:SBEkwl3H
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part135
http://mevius.5ch.net/test/read.cgi/tech/1517749348/

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

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0004デフォルトの名無しさん
垢版 |
2018/03/04(日) 08:49:14.26ID:Jnf3+hM1
invokeの意味がよく分からない。
別のスレッドからUIのコントロールを触るには、手順が必要でそれをInvokeを通すとちゃんとやってくれる
ということらしい。
疑問1:手順を踏まないと駄目なのはFormに貼り付けたコントロールだけなのか?
これは「コントロールはスレッドセーフじゃない」と同義のことか?

疑問2:一般的なクラスやListデータはスレッドセーフなのか?
 例えば、100kバイトの受信データが常時更新されているとする。これをメインスレッドにコピーするときに
半分程度コピーしたときに、次の受信割り込みでスレッドが切り替わって上書きされるなんてことは起きないのか?
スレッドの切り替えはOSが勝手にやるんだから、これは当然起きてしまいそうな気がするんだが、防ぐ手立ては
あるんか?
0006デフォルトの名無しさん
垢版 |
2018/03/04(日) 09:37:54.15ID:fUFxJxoP
>疑問2
個々のクラスのスレッドセーフ性については、使用するクラスのリファレンスを参照
スレッドセーフなコレクションクラス群というのも提供されている
https://docs.microsoft.com/ja-jp/dotnet/standard/collections/thread-safe/

スレッドセーフでないクラスをスレッドセーフに扱いたいのであれば自分でその機能を実装する必要がある
その際はlockステートメントやAutoResetEventクラスなどが役に立つだろう
0007デフォルトの名無しさん
垢版 |
2018/03/04(日) 09:43:21.26ID:fUFxJxoP
どうやって実装するかに関しては
一般的なスレッドセーフプログラミングのガイドに従うが
あまりにも広範すぎるのでここには記載しない

手っ取り早くはラッパクラスを書き、
ラッパクラスのプライベートなインスタンス変数にロックオブジェクトを確保し
すべてのメソッドの入り口でロックを取ってしまうことである
0008デフォルトの名無しさん
垢版 |
2018/03/04(日) 10:16:01.96ID:Jnf3+hM1
>>5
こいつらだけがスレッドセーフでそれ以外はセーフじゃない。
M:System.Windows.Forms.Control.BeginInvoke(System.Delegate),
M:System.Windows.Forms.Control.EndInvoke(System.IAsyncResult),
M:System.Windows.Forms.Control.Invoke(System.Delegate),
P:System.Windows.Forms.Control.InvokeRequired,
and M:System.Windows.Forms.Control.CreateGraphics(ただしすでにハンドルが生成されていること)
ハンドルがクリエイトされる前のバックグラウンドでの.Forms.Control.CreateGraphicsスレッド
の呼び出しは問題をひきおこす。

って書いてあるので、まあそういうことなんだな。
セーフじゃないのは解ったが、スレッドが何処で切り替わるかが問題だな。
少なくともInvoke中は切り替わらないから、Invokeに渡すDelegateにガッサリとほりこんでやれば絶対に
安全ってことでいいのだな。
 それなら別にLockもへったくれもいらない。なんも難しくないな。
0009デフォルトの名無しさん
垢版 |
2018/03/04(日) 10:18:39.61ID:Jnf3+hM1
>一般的なスレッドセーフプログラミングのガイドに従うが あまりにも広範すぎるのでここには記載しない

いったいどう広範なんだ? Lockしたら終わりだろ。変数の書き換え中に切り替わらんなら何も問題ないはずだよな。
0012デフォルトの名無しさん
垢版 |
2018/03/04(日) 10:27:55.49ID:Jnf3+hM1
Lock(object)
馬鹿っぽいのはこっちだな。なんでObjectでロックする必要があるんだよ。単にラベルでいいだろ。
Lock(name)
なんかサンプルにしろ説明にしろ難しそうに見せたがるんだよな。賢そうに見せたいんだろうな。要するに
賢くないってことだな。
0013デフォルトの名無しさん
垢版 |
2018/03/04(日) 10:28:25.45ID:fUFxJxoP
ああ一昨日くらいにTaskでギャーギャー喚いていた人でしたか
気付かず相手をしてしまいました
申し訳ありませんでした
0014デフォルトの名無しさん
垢版 |
2018/03/04(日) 10:31:50.77ID:Jnf3+hM1
素人の簡単な質問に答えられないで、解った振りをするのは良くないぞ。
0017デフォルトの名無しさん
垢版 |
2018/03/04(日) 11:02:22.21ID:Jnf3+hM1
スレッドセーフについては
http://www.atmarkit.co.jp/ait/articles/0505/25/news113_3.html
ここが詳しい。これは頭のいい説明だからすぐわかる。
要するにロックすればいいのだが、あたりかまわずロックするとかなり負荷が
かかるので少し工夫がいるということだな。別に難しいことはなにもない。
0018デフォルトの名無しさん
垢版 |
2018/03/04(日) 11:47:26.08ID:ARj8S9qu
>>12
お子様なら他へ行った方がいい
成人なら本当の意味でコミュニケーション障害
はっきりいうとおまえとは会話ができない
0020デフォルトの名無しさん
垢版 |
2018/03/04(日) 14:42:13.81ID:uAAm/7vQ
質問です。

class A
class B : A
class C : A
class D : A

のような感じでAを継承するクラスがいつくかあったとき、Aの関数に

public A Copy()
{
return new BとかCとかD;
}

みたいな感じで、Aから自分が今なんのクラスなのかを見て
B・C・Dを生成することはできないのでしょうか?
0021デフォルトの名無しさん
垢版 |
2018/03/04(日) 15:00:25.90ID:TuLIeqFr
>>20
if(this is B){return B}
みたいな感じでできると思うよ
普通はvirtualメソッドにして派生先でoverrideするのが普通だと思うけど
0022デフォルトの名無しさん
垢版 |
2018/03/04(日) 15:27:46.44ID:uAAm/7vQ
>>21
ありがとうございます。
クラスが増えるたびにAに分岐を追加するより、派生先で実装しようと思います。
0026デフォルトの名無しさん
垢版 |
2018/03/04(日) 23:57:01.35ID:WQz+5Gha
質問があります。
.NET標準のChartコントロールなんですけど、
大量のデータ(50000件くらい)を表示してから
そのChartの上をブラウザとかエクスプローラとかを横切らせたら
Chart上に残像みたいなのができて(ちょっと時間が経ったら正常に表示される)
物凄い重いんですけど直す方法ってあるんですか?
0027デフォルトの名無しさん
垢版 |
2018/03/05(月) 03:26:06.68ID:FmqsFfvf
>多分Lockを誤解してる
>わざとどうでもいい名前にしてあると言うことを理解してないな

そこだな。「どうでもいい」のが名前の性質だ。ここは「どうでもいい」ということが重要だ。だからこそどうでもいい
名前にしないといけない。Objectである必要はないし、そういう制約をつけるのは間違いだ。そこのところを理解していないと思う。
0028デフォルトの名無しさん
垢版 |
2018/03/05(月) 03:31:44.01ID:FmqsFfvf
>>26
Chartなんてそんなに大量に表示する物と違うだろ。だったら代表値にしてデータ量を
圧縮するとか見せ方を工夫すればいい。
0029デフォルトの名無しさん
垢版 |
2018/03/05(月) 03:47:59.98ID:FmqsFfvf
田舎者は総じて優しいが、村にそぐわないと判断すると突然ブチ切れて仲間を募って村八分を宣告する。
ネット上に田舎者が多いのはやむえない。ああもう朝だ。寝よう。
0030デフォルトの名無しさん
垢版 |
2018/03/05(月) 10:31:47.99ID:g6xeuprT
>>29
何一人でブチ切れてるんだ
田舎者か?
0033デフォルトの名無しさん
垢版 |
2018/03/05(月) 14:29:39.76ID:LOGBc36P
すまんが、.netってパスワードを安全に保管するためのストアは用意されてるの?
0034デフォルトの名無しさん
垢版 |
2018/03/05(月) 15:12:32.80ID:kyU90biE
パスワードをローカルに保管するという発想そのものが本質的に間違っているからそんなものはないよ
ハッシュ値だけ平文で保管して、パスワード原本は速攻で捨てろ
0035デフォルトの名無しさん
垢版 |
2018/03/05(月) 15:27:45.97ID:VUFW/DdR
別に間違っちゃいないw

多少のリスクより利便性を選択する人がいてもいいし、そういう人に倒して
「お前は意識が低い」なんて言うのは独善的で傲慢だ
0037デフォルトの名無しさん
垢版 |
2018/03/05(月) 15:56:42.33ID:VUFW/DdR
それはただの思い込み

そんなこと言ったらローカルどろろかクラウドにパスワードするChromeやFirefoxは
もっとお行儀悪いよ

現実問題、個人のPCがハッキングされる可能性なんか交通事故よりはるかに低いし、
その上暗号化されたパスワードがたまたま見つかってたまたま解析される可能性なんかもっと低い
0039デフォルトの名無しさん
垢版 |
2018/03/05(月) 16:52:28.49ID:1eWHTsKF
どういう脅威に対してどの程度の安全性が必要なのか次第で対策が違う
PasswordValutだってある意味では安全なストア
0040デフォルトの名無しさん
垢版 |
2018/03/05(月) 17:33:52.91ID:JEjkThv5
ローカルなのかクラウドかの話ではではく、
原本のパスワード(平文のパスワード)をそのまま保存するのは行儀が悪いと言いたかったにゃ
0044デフォルトの名無しさん
垢版 |
2018/03/05(月) 19:28:47.91ID:s8qQLejn
>>37
行儀の問題じゃないよ。
パスワードを保管することに意味があるか無いか。
極一部の例外を除いて、一般に開発者がユーザーの入力したパスワードを保管したいと考える(勘違いする)のは、
ほとんどが簡易的なパスワード認証を実装したいケースだ。
その場合、パスワードを復元可能な形で保管する必要はまったく無い。ハッシュを使えばハッシュ値の保管方法に気を使う必要はなく、
遥かに簡単でセキュアな認証情報管理が実現できる。
0047デフォルトの名無しさん
垢版 |
2018/03/05(月) 20:04:06.08ID:TmlQrbi9
>>46
ハッシュを使ったパスワード認証ってセキュアプログラミングの基本中の基本だぞ
ほんとに分からないの?ちょっと危機感持ったほうがいいよ
0048デフォルトの名無しさん
垢版 |
2018/03/05(月) 20:05:40.69ID:1eWHTsKF
>>44
>極一部の例外を除いて、… ほとんどが簡易的なパスワード認証を実装したいケースだ。
これは完全に思い込みだよね
用途を聞く前からパスワード保管を全否定はいただけない
0049デフォルトの名無しさん
垢版 |
2018/03/05(月) 20:07:37.44ID:NU3s1WzP
入力したパスワードをそのまま持っておくというのは、作り手側の危機感が足りないようにみえるね
大昔の yp からそんなことはしないものと決まっていたと思っていたが
0053デフォルトの名無しさん
垢版 |
2018/03/05(月) 20:20:35.48ID:VUFW/DdR
やっぱりちょっと何言ってるのか分からないけど、
>>47の人は認証するのが自分のコードだと思い込んでる気がするw

だからChromeとかFirefoxとか具体名出してるのに

ちなみに、FXとか株とかのトレードアプリでもパスワード保存機能がついてるのが普通ですよw
場合によっては億単位の金が絡むんだけどね。
0055デフォルトの名無しさん
垢版 |
2018/03/05(月) 20:32:50.58ID:NU3s1WzP
>>52
保存するならキャッシュで、というのが安全ですね

>>53
ブラウザのパスワード入力支援の話でしたか…そりゃ違う話ですねえ…
0057デフォルトの名無しさん
垢版 |
2018/03/06(火) 17:22:21.13ID:40kaWQRT
結局、Javaみたいなパスワード用のストアってないわけ?
証明書のストアがあるぐらいならあるのかと思っちゃったよ
0059デフォルトの名無しさん
垢版 |
2018/03/06(火) 18:20:52.64ID:/9uChD8X
用途とか細かく書かないと質問者そっちのけでマウント合戦始めるスレだからな
0060デフォルトの名無しさん
垢版 |
2018/03/06(火) 19:27:25.91ID:XG2njCd+
>>59
なんか気付いてないみたいだけど、それ一番やりたがってるの君じゃないの?w
ずっと思ってたけど単細胞だよねお宅。
この単細胞な幸せ回路、ネトウヨだったりもしそうw
0062デフォルトの名無しさん
垢版 |
2018/03/07(水) 00:46:04.16ID:E/AkTCwB
グラフ書くってなったらchart使うんだよね?
0063デフォルトの名無しさん
垢版 |
2018/03/07(水) 06:54:10.77ID:dyn70F+X
groupをしてTimeSpan型の平均、合計をだしたいのですが

var C =
from a in db.Articles
group a by a.Category into B
select new ArticleHaving

{
合計 = B.sum(a => a.時間)
};

↑のa.時間がTimeSpan型だと型変換できなくてエラーになるのですが
どのように書いたらいいでしょうか?
0065デフォルトの名無しさん
垢版 |
2018/03/07(水) 08:26:40.93ID:of1Kc4NS
>>63
合計 = B.sum(a => a.時間.ticks)
として合計出して
TimeSpan.FromTicks(C) でTimeSpan型に戻せばいいんじゃね?
0066デフォルトの名無しさん
垢版 |
2018/03/07(水) 09:27:56.48ID:Rfc91YM1
>>57
MS的には資格情報マネージャを使えということになっているので
プラットフォーム独立な奴はない
0067デフォルトの名無しさん
垢版 |
2018/03/07(水) 12:38:55.21ID:2wkHBkDf
同じソースを Framework 3.5 / 4.0以降 で使い回ししたいのですが、
コンパイル時にバージョンを識別させることできますか。

C言語ぽく書くと

#ifdef FRAMEWORK35
  // 3.5用のソース
#else
  // 4.0用のソース
#endif

的なことがやりたいのですが。
0069デフォルトの名無しさん
垢版 |
2018/03/07(水) 14:03:40.77ID:500OxlyC
それ、いいと思ってるのは本人だけシリーズ
んなコード、ソース中に散りばめたこと想像するだけでゾッとするわ
0071デフォルトの名無しさん
垢版 |
2018/03/07(水) 20:17:39.78ID:UA5KKOmp
>>69
良し悪しの問題じゃなく、好むと好まざると>>67みたいないことが必要な場合は実際にある。
質問者が言ってもいない前提まで加えてくだらないいちゃもんつける奴の方がよほどぞっとするよ
0074デフォルトの名無しさん
垢版 |
2018/03/07(水) 21:33:11.25ID:500OxlyC
>>71
は?ねーよ
ちょっと考えてみ
それさ、ソースのどっかにあったらアプリの挙動変わるんだぜ
いちいちそんなの確かめてらんねーよ
んでそれがあちこちにあったらもうプロジェクト終わるね
そこでやるべきものじゃないし
もうバージョン管理レベルで変更するものであってそこに書くもんじゃねーよ
0075デフォルトの名無しさん
垢版 |
2018/03/07(水) 22:35:50.64ID:jL/wX1y0
>>74
>バージョン管理レベルで変更するものであってそこに書くもんじゃねーよ

複数の.NETバージョンのサポートが必要なライブラリなんかを作る時に
新バージョンにしかない機能も使えるようにしたい場合
どういう風にバージョン管理レベルで変更すればいいの?
0076デフォルトの名無しさん
垢版 |
2018/03/07(水) 22:39:29.37ID:kbPu74AY
神エクセルの読み取りで使えそうな典型的処理をまとめたライブラリとかない?
100種類ぐらいの神エクセルファイルがあるんだが今月中に読み取りを全部自動化しなければならない
時々フォーマット間違ってるものもあってもう心が折れそう
0081デフォルトの名無しさん
垢版 |
2018/03/08(木) 00:03:36.21ID:QLJ7X/Ow
>>80
と思うだろ?
お前が節約してる手間なんて実装だけだろ
テストや動作確認は各バージョン全部やらなきゃいけない上に
バージョン番号での分岐のテストも各バージョン毎全部しなきゃならん

分けた方が楽だぞ
0084デフォルトの名無しさん
垢版 |
2018/03/08(木) 00:45:24.85ID:3qyzG5H1
だから、バカの壁の向こう側に何言っても無駄w

コメントは二重管理になるからコメントなしで理解できるようなコードを書け、
と言っても問題意識を共有できない人がいるのと同じw

っていうかまさにそういうタイプの人なんだろう
0086デフォルトの名無しさん
垢版 |
2018/03/08(木) 01:08:54.44ID:3qyzG5H1
こんな過疎スレでそんな「交通整理」に意味あるの?
スレ違いって自分が言いたいだけだよねw
何よりそういう自己分析ができないってもう絶望的に頭悪いよ
0087デフォルトの名無しさん
垢版 |
2018/03/08(木) 01:28:30.71ID:QLJ7X/Ow
>>83
それでもやれ
何度も言うけどお前等は実装なんてチンケな工程にこだわり過ぎてる
処理はできるだけ共通化すると幸せになれるという根拠のないルールが呪いになっている
いくら共通化ったってここまで複雑になったコードが管理しやすいわけねぇだろ
0088デフォルトの名無しさん
垢版 |
2018/03/08(木) 01:37:47.28ID:4UosM8wW
ソースから完全に分けるのと#ifdef使うのとなら
あらゆる状況でどちらかが常に優れてるわけじゃないんだから
状況に応じて選べばいいんじゃん
0091デフォルトの名無しさん
垢版 |
2018/03/08(木) 12:01:42.48ID:m1DjBHcg
T where int,long のT a、T bの変数に対して、a+bを実行したいんだけとなんかいい方法ある?
0094デフォルトの名無しさん
垢版 |
2018/03/08(木) 13:10:43.66ID:m1DjBHcg
>>93
ダイナミックやリフレクションを使うとできそうって感じかな
どちらも採用したくないので諦めることにするわ
0095デフォルトの名無しさん
垢版 |
2018/03/08(木) 13:16:29.76ID:wkuTrnYs
int, longならlongだけ用意しとけばいいだろ
ジェネリックにしたくなる気持ちはわかるけど実際ほとんどの場合は結局一つしか使わないよ
YAGNI
0097デフォルトの名無しさん
垢版 |
2018/03/08(木) 13:35:16.73ID:KNsyBCN9
いつのまにかwhereにintやlongやdecimalが指定できるようになったのか?
違うだろ?
0098デフォルトの名無しさん
垢版 |
2018/03/08(木) 13:38:21.60ID:7fgp1oNf
くだらないいちゃもんつける馬鹿多すぎだなこのスレ
いちいちいちゃもんつけないと死ぬのかねw
0102デフォルトの名無しさん
垢版 |
2018/03/08(木) 14:44:07.16ID:m1DjBHcg
>>101
演算用の構造体を作る方法もあるのか
結局型ごとに構造体を作らなきゃいけないなら型ごとにメソッドを作る方がいいかな
考え方は面白いんだけど書いてあるとおりちょっと強引な感じがするし構造体の使い方もちょっと気になる
0103デフォルトの名無しさん
垢版 |
2018/03/08(木) 16:13:44.03ID:q48xQYEj
>>102
まあそうだよね…
どうしてもメソッドを共通化したいときにこれをやるとしても、普通のオーバーロードでラップする感じになると思う
0107デフォルトの名無しさん
垢版 |
2018/03/08(木) 20:25:17.73ID:SCks1g98
WinFormのプログラムで85k超データなんて作ってないのにLargeObjectHeapが増えていくのはなんでなの・・・
0108デフォルトの名無しさん
垢版 |
2018/03/08(木) 20:34:08.32ID:QLJ7X/Ow
蓮メモリにならないように大きい単位で取るんじゃないだろか?
と尻もしないのにレスしてみる
0109デフォルトの名無しさん
垢版 |
2018/03/09(金) 00:41:31.37ID:ZGeJbhBv
public static extern bool GetDiskFreeSpace(
string lpRootPathName,
out ulong lpSectorsPerCluster,
out ulong lpBytesPerSector,
out ulong lpNumberOfFreeClusters,
out ulong lpTotalNumberOfClusters);
上記だとビルドが通らない。
これのようなクラスタあたりのセクタ数、及び、セクタあたりのバイト数を取得する方法ってありますか?
0110デフォルトの名無しさん
垢版 |
2018/03/09(金) 01:15:48.36ID:Ohyjj+7n
>>109
ビルド自体は通りそうだが…P/InvokeしたいならDllImportを付けないと
DWORDは32bitでulongは64bitなのは承知の上?ポインタ渡しであまり関係ないけど

[DllImport("kernel32", SetLastError = true, CharSet = CharSet.Unicode)]
static extern bool GetDiskFreeSpace(
string lpRootPathName,
out uint lpSectorsPerCluster,
out uint lpBytesPerSector,
out uint lpNumberOfFreeClusters,
out uint lpTotalNumberOfClusters
);
0111デフォルトの名無しさん
垢版 |
2018/03/09(金) 01:50:16.56ID:kxCLXgK0
WINAPI型(__stdcall)じゃないC++の関数を呼ぶ時は
DllImportに CallingConvention = CallingConvention.Cdecl 入れないとメモリ破壊する
0113デフォルトの名無しさん
垢版 |
2018/03/09(金) 02:37:19.22ID:RRa2zRYk
TextBoxにフォームロードの中で文字列を設定しています。
ウィンドウが表示された時にそのテキストボックスの中の文字列が
全て選択された状態で表示されてしまいます。

どうすれば文字を設定しても選択された状態にならないでしょうか?
0115デフォルトの名無しさん
垢版 |
2018/03/09(金) 07:23:53.63ID:jWrPs27H
アクティブコントロールを他にあてれば済む話じゃ?
0116デフォルトの名無しさん
垢版 |
2018/03/09(金) 07:30:10.43ID:LQK/KvB6
教育系の研究データをとるためのアプリをwindowsベースで開発したくて

「確かな力が身につくC#入門」

を勉強終えた。
次のステップとして

「独習C#」

を終えるべきか、もう自分で調べながらプログラムを書き始めるべきかどっちがいいだろう?
0117デフォルトの名無しさん
垢版 |
2018/03/09(金) 07:35:01.67ID:LQK/KvB6
教育心理系で

1. タッチパネル上に×を表示させて学習者に触らせる
2. ×とタッチの座標を記録して、二つの距離を計算

1,2を数十回実施して結果のデータをテキストで吐き出す。
が実走したい最低限の仕様。
可能であればネット経由で結果のテキストデータをサーバーに送信したい。
です。
「独習c#」
ぐらいは終えてからの方が、急がば回れで効率いいのかな?

ちなみにプログラム経験は20年前にCで人工知能の研究してたぐらいでほぼど素人。
0118デフォルトの名無しさん
垢版 |
2018/03/09(金) 07:40:46.98ID:Bccqo4ev
ランサーズとかのクラウドソーシングで募集したら?
一万も出せば一瞬でできるでしょ
0120デフォルトの名無しさん
垢版 |
2018/03/09(金) 08:04:10.76ID:LQK/KvB6
>>119
実際に組み始めて分からないことは調べる方式のほうが習得早いのかな。
あまりに恥ずかしいコードにならないように、基本は身に着けたいと思ったんだけど
「独習C#」
のページ数にひるんで、これは辞書的に使う本なのかと・・・。
0121デフォルトの名無しさん
垢版 |
2018/03/09(金) 08:05:34.00ID:LQK/KvB6
>>118
そういう手もあるのか・・・。
いやでも、実験しながら仕様は変えてくだろうから、やはりプログラミングの技術ももっておかないと。
0122デフォルトの名無しさん
垢版 |
2018/03/09(金) 08:13:16.82ID:a01q5dZ9
Encoding.UTF8

UTF8Encoding.UTF8
の違いって何ですか?
0123デフォルトの名無しさん
垢版 |
2018/03/09(金) 08:26:28.70ID:Bccqo4ev
>>121
作ってさよならじゃなくて同じ人に継続的に依頼できるよ
お前はプログラミングで遊ぶより他にやるべきことがあるだろ
お前の時間はそんなに安いのか?
手段と目的をごっちゃにしてはいけない
0124デフォルトの名無しさん
垢版 |
2018/03/09(金) 08:43:48.76ID:UzKVOjRn
>>122
おんなじ
UTF8EncodingはEncodingを継承してて、
継承元.静的メンバ
派生先.静的メンバ
どっちを書いても継承元.静的メンバを指す
0125デフォルトの名無しさん
垢版 |
2018/03/09(金) 11:56:27.06ID:a01q5dZ9
>>124
なるほど、同じなんですね
使い分けするようなケースってあるんですか?
0126デフォルトの名無しさん
垢版 |
2018/03/09(金) 12:17:04.55ID:fyExTngt
>>125
無い
君自身が疑問を感じたように、実際紛らわしくて誤解の元になるので、常にそのメンバが本当に定義されているクラス(つまりこの場合はEncodingの方)を通して参照するべき。
0128デフォルトの名無しさん
垢版 |
2018/03/09(金) 13:25:03.80ID:Ys6dLiAA
>>121
コメント&ソースコード付で納品してもらうという手もある。おれは初心者のころ、金を払って自分が実現したいことの定石を学んだ。
0131デフォルトの名無しさん
垢版 |
2018/03/09(金) 16:16:50.85ID:Vu9joQUd
2つのアプリ(win form)で情報をやりとりするとき、データベースを介してやるのって一般的ですか?
ソケット通信とどちらがいいでしょうか?あるいは、もっといいやり方がありますか?
情報といっても、数字や数文字の文字列をトリガーに動作する程度です。
0132デフォルトの名無しさん
垢版 |
2018/03/09(金) 16:20:24.75ID:ZvjLaJPv
一般的かと聞かれたら一般的じゃない
DB増えると管理対象が増えるだけだし

通知を監視するためにずっとDBポーリングするってことは無駄だよ

自分ならプロセス間通信のどれかを選んで使う
0133デフォルトの名無しさん
垢版 |
2018/03/09(金) 16:46:01.78ID:RRa2zRYk
ぶっちゃけここで質問するよりランサーズで外注して
教えてもらった方がはやいよ

俺もよくつかってる。

たまーに超人的なPGがいる。
0135デフォルトの名無しさん
垢版 |
2018/03/09(金) 17:38:57.35ID:a01q5dZ9
>>126
そうします
回答ありがとうございました
0136デフォルトの名無しさん
垢版 |
2018/03/09(金) 17:39:37.72ID:XwDpFLle
>>131
DBでも競合に弱いのもあるからな(SQLiteとか)
通信量が少ないのなら、ソケットでいいかと
0137デフォルトの名無しさん
垢版 |
2018/03/09(金) 18:22:06.08ID:5QpWky7V
>>117
windowsベースで開発したい理由って何なの?

そのレベルなら言語の基礎文法を学んだあとに
GUIフレームワークを学びながら作れば十分だと思うが
window固有のGUIフレームワークを学ぶ価値がどの程度あるのかわからない
0138デフォルトの名無しさん
垢版 |
2018/03/09(金) 18:28:41.57ID:nugpn9wm
また始まった
アホは人に突っ込む前に自分に突っ込むことをいい加減覚えろ
いちいち下らん突っ込み入れないと死ぬのかw
0140デフォルトの名無しさん
垢版 |
2018/03/09(金) 19:07:43.72ID:LQK/KvB6
>>127
現場で表示時間のパラメーター等を変更するなどあると思うので、
勉強がてら独習c#をリファレンスに組んでみます。
0141デフォルトの名無しさん
垢版 |
2018/03/09(金) 19:08:45.19ID:LQK/KvB6
>>128
人のソースコード読むのも勉強になるよね。
今の環境は周りにコーディングする人いないので、物によっては外注もありですね。
0142デフォルトの名無しさん
垢版 |
2018/03/09(金) 19:11:12.05ID:LQK/KvB6
>>137
外部施設でコンピューターについて何もわからない人たちにデータを取ってもらう協力をお願いするため。
Linuxとか使ったらそれだけで強力拒否される。

なるべく多くの施設に手軽に参加してもらうには、一番普及してるOSがいいかなと。
0146デフォルトの名無しさん
垢版 |
2018/03/09(金) 19:51:06.10ID:Ys6dLiAA
>>139
理解できるレベルになると安い料金で要求だけ高い地雷だらけでエントリーしたくなくなるぞw
0147デフォルトの名無しさん
垢版 |
2018/03/09(金) 20:06:29.84ID:S6tyjFC3
>>146
っていうかやりようが無いようなクソ案件ばっかりじゃね?
そんなインターフェース提供されていないのに〇〇アプリと連動する〜とか
不可能なレベルの要求ばっかり
0148デフォルトの名無しさん
垢版 |
2018/03/09(金) 20:26:38.72ID:QuBAH4JX
ランサーズの案件見てると、なめてのか?
てめーでやっとけってなるな
0149デフォルトの名無しさん
垢版 |
2018/03/09(金) 23:52:59.10ID:5QpWky7V
>>142
なるほど

タッチパネル端末で一番普及してるOSかどうかは怪しいけど
windows端末を使う前提で決まってるのならいいのかもね
0150デフォルトの名無しさん
垢版 |
2018/03/10(土) 10:21:46.47ID:lWKHEJ9v
>>149
C#だとwindows、android、ios全部範疇に入ってくるのでいいかなと。
Linuxとか使いたいけど、普通の人に教育する手間考えるとWindowsがやはり無難なんだよね。
0152デフォルトの名無しさん
垢版 |
2018/03/10(土) 10:33:56.77ID:8DmJsdyc
WinFormsとWPFに新しいコンポーネントが登場するらしいね
WebViewって言うEdgeエンジンのブラウザ
0153デフォルトの名無しさん
垢版 |
2018/03/10(土) 10:40:46.17ID:X48XHq+4
WebViewはブラウザ作るためじゃなくてUIにWebコンテンツを組み込むためにあるんやで
WinFormsやWPFで取り残されてる可愛そうな羊たちにもWeb移行のチャンスをあげようという、MS様の粋なはからい
0160デフォルトの名無しさん
垢版 |
2018/03/10(土) 12:34:31.33ID:mzuiLpki
これで高単価ってタグ付けるとか舐めてるな
間違いなく、割に合わないだろ
0161デフォルトの名無しさん
垢版 |
2018/03/10(土) 12:38:56.33ID:9KQiOEH7
学生のワイにはこれで本当に1万円貰えるなら最高なんだが本当に貰えるのかな
0164デフォルトの名無しさん
垢版 |
2018/03/10(土) 12:42:27.86ID:dOb3Zb1K
この価格じゃどう考えても割に合わない
保守も考えたら最低でも10倍以上はないと話にならんぞ
0166デフォルトの名無しさん
垢版 |
2018/03/10(土) 13:10:29.96ID:AY0LzIsz
>>158
追加でいくらでも変更依頼が来るし
最終的に目的を達成できないとして支払い拒否
しかもキレながらな

いい社会勉強になると思うわ
0168デフォルトの名無しさん
垢版 |
2018/03/10(土) 13:46:50.93ID:xj7f+MUR
今日から勉強始めました、ってバカじゃなければ仕様があいまいな時点で拒否反応が出る
0169デフォルトの名無しさん
垢版 |
2018/03/10(土) 14:09:52.14ID:DtuniYws
そんなもん後から詳細を教えて貰えばいいだけやん
0171デフォルトの名無しさん
垢版 |
2018/03/10(土) 14:18:47.15ID:mzuiLpki
>>169
この手のは依頼主自身が良く分かってないパターン。
詳細なんか出てこないと思った方が良い。
0172デフォルトの名無しさん
垢版 |
2018/03/10(土) 14:24:44.51ID:DtuniYws
今見たら出ててワロタ
0176デフォルトの名無しさん
垢版 |
2018/03/10(土) 16:39:21.24ID:e/SHdYnW
そもそもスクレイピングって合法なのか?
国内でスクレイパーが逮捕された事件あったよねたしか
0178デフォルトの名無しさん
垢版 |
2018/03/10(土) 16:59:10.67ID:ummNhzTo
サーバー攻撃と見なされるような頻度でのアクセスがダメってことじゃね?
あと著作権や引用のルールとか
0179デフォルトの名無しさん
垢版 |
2018/03/10(土) 18:16:32.48ID:CYNPOxqI
>>177
不起訴になったが起訴猶予だったと書かれていたな
相手方とは後に和解して共同声明出してるけど
MDISも警察も検察も到底容認出来る対応ではない

赤の他人ながら未だに腸が煮えくりかえるわ
0180デフォルトの名無しさん
垢版 |
2018/03/10(土) 18:16:34.41ID:32LTkPVU
>>150
Xamarinのこと言ってるんだろうけどそんな簡単じゃないよ
それぞれの環境に合わせた実行ファイルの用意と配布だけでも相当な手間だから

Windowsに限ってもOSバージョンや.NETバージョン別にテストが必要
ブラウザと違って環境用意するのも大変

仕事で使う物ならアプローチの仕方から相談できる人間を雇ったほうがいいと思うよ
0182デフォルトの名無しさん
垢版 |
2018/03/10(土) 18:31:18.81ID:OvdmWYI0
C#といっこも関係ないけど、5年ぐらい前にちょっと流行ったような気がするNUIって
結局一過性のブームで終わった?

それとも実は俺が知らんだけでじわじわ普及してる?
0184デフォルトの名無しさん
垢版 |
2018/03/11(日) 01:08:34.06ID:RWekHsjv
はまった時にはランサーズに外注

Super Programmerがたまーにいるので
金払ってでも教えてもらった方が早いぞ。マジ。
0186デフォルトの名無しさん
垢版 |
2018/03/11(日) 02:17:10.20ID:QwNvBvJi
揚げ足取るようだけどコーディングは出来るでしょ
開発環境で実機デバッグが出来ないだけでは?
リモートならデバッグも可能なはず
0190デフォルトの名無しさん
垢版 |
2018/03/11(日) 18:22:20.07ID:+qdItvv1
起動時にファイル等をOpenして、終了時にCloseがしたいのですが、
VC#のFormアプリでは各処理をどこに記載すればいいのでしょうか?
以下のような感じのことがしたいのですが。

try{
Open
Application.Run(new Form());
}finally{
Close
}

またform起動後にOpen/Close処理を行う場合(formにOpenやCloseのテキストを表示したい場合)は、
FormShownイベントにOpen処理を、FormClosingイベントにClose処理を入れればいいのでしょうか。
途中で落ちた場合を考えて、finallyを入れなければいけない気がするのですが、
どこをtryで囲んだらいいのか分からず、途中で落ちた場合もformは閉じることになるので、これでいいかと思ったのですが。
0193デフォルトの名無しさん
垢版 |
2018/03/11(日) 19:06:58.01ID:dxsKvpqu
>>190
IDisposeインターフェイスを実装したオブジェクトならusingを使う、ILになれば結局同じ様なコードだけど
Formで持つなら保険はvoid Dispose(bool)で行う、VSフォームデザイナーだと*.Designer.csでoverrideされてる
開くのはFormShownなら例外ダイアログ設定後だしコンストラクタより良さそうだが…しかし開く対象は固定なんかな
0194デフォルトの名無しさん
垢版 |
2018/03/11(日) 20:27:46.27ID:KWlCmpPd
C#でASP.NET WebForm を使うことになりました。
そこでLINQに関する質問です。
なにぶんC#もLINQもよくわかっていないので
ご教授よろしくお願いいたします。

1) LINQ による列挙は、スレッドセーフでしょうか?

ローカル変数にメソッド構文で何らかのLINQクエリを記述して
メソッド内で使用する場合には、スレッドセーフでしょうか?
→ lock 文などは不要ですか?

2) 拡張メソッドを作成して内部で yield return 文などを使用して
LINQ のメソッド構文で使用する場合、yield return 文を
lock 文で囲む必要はありますか?

3) 以下のページの最後の方で、中信頼性とか高信頼性とかの記述が
でてきますが、ASP.NET でLINQを使う場合には、web.config に
これらの設定が必須ですか?

'https://msdn.microsoft.com/ja-jp/library/bb907622(v=vs.100).aspx

以上です
0195デフォルトの名無しさん
垢版 |
2018/03/11(日) 20:38:13.04ID:PLvoLZo8
>>190
落ちる前にストリームを閉じるのはたぶん無意味なので
無理してusuingやtryのブロックで囲う必要はないと思う。

open/closesするタイミングは教条主義的に考える必要はないでしょう。
要は必要になる前にopenして必要なくなった後にcloseすればよいだけ
0196デフォルトの名無しさん
垢版 |
2018/03/11(日) 20:44:38.34ID:lvju0XX+
>>195
たぶんで答えるな
てか知らん事に答えようとすんな
0197デフォルトの名無しさん
垢版 |
2018/03/11(日) 20:53:10.61ID:dF1Cj7yy
>>190
そのフォームを開く Program.Main だっけでやればいいんじゃない?

using( var stream = (ファイルを開く)) {
Application.Run(new Form1( stream )); // フォームのコンストラクタの引数にでも渡してやる
}

ただ本当にファイルを開きっぱなしにする必要があるのかとか、きちんと検証する事をおすすめ。
0198デフォルトの名無しさん
垢版 |
2018/03/11(日) 20:57:33.66ID:PLvoLZo8
>>196
たぶんは婉曲表現で本当は確実に必要ない
お前くそくだらない突っ込みではなく意義のある発言をしろ馬鹿
0199デフォルトの名無しさん
垢版 |
2018/03/11(日) 21:07:56.85ID:lvju0XX+
>>198
確実にお前の理解が足りてない
意地張るな、な?
0200デフォルトの名無しさん
垢版 |
2018/03/11(日) 21:16:59.78ID:xf8GjCk5
運用中にファイルの中身を確認できないファイルとな?
開いたらアプリもろとも死んでもらうまさに漢の中の漢よ
0201デフォルトの名無しさん
垢版 |
2018/03/11(日) 22:34:52.34ID:Aj3DuHB+
>>194
スレッドセーフかどうかが問題になるようなコレクションを
ASP.NETのスレッド間で共有する必要があるのか考えたほうがよさげ

1) スレッドセーフではない。
lockが必要かどうかは使い方次第
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1.getenumerator?view=netframework-4.7.1

2) IEnumerable<T>を自前で実装する話ならyield returnをlockで囲んだところで意味ない
必要なら呼び出し側で対処する

3) 知らん
0202デフォルトの名無しさん
垢版 |
2018/03/11(日) 22:41:38.87ID:baL9gt0u
別に普通でしょ。例えば、アプリのローカルフォルダにある設定ファイルは基本アプリの1インスタンスにのみ有効であるべきで、アプリ起動時に設定ファイルを書き込み権限でオープンして他は読み取りのみにしておけば、二重起動防げるし。
むしろ、設定ファイルを他から勝手に変更されないようにそうすべきであるし。

フォルダ変えれれば厳密な二重起動は防げんけど。
0205デフォルトの名無しさん
垢版 |
2018/03/11(日) 23:25:00.03ID:gqF9MiU9
おじいちゃんのやり方がことごとく常識外れ過ぎる
なのにドヤ顔で間違った事ばかり書いてくる
0206190
垢版 |
2018/03/11(日) 23:46:06.06ID:+qdItvv1
>>191-193
ログ出力と、あまりOpen/Closeを連続でしたくない外部機器を考えています。
void Dispose(bool)調べてみます。

>>195-199
繋がっている外部機器を出来る限りCloseしたく、usingが使えないので下を試したのですが、
こういう事はダメなようで、定石みたいなものがあればと質問させて頂きました。
try{
  Open
  Application.Run(new Form());
}finally{
  Close
}
0207デフォルトの名無しさん
垢版 |
2018/03/12(月) 00:45:48.96ID:Ok4d75rJ
>>206
open/closeがデバイスハンドルの取得/破棄のことを指してるなら
やはり通常はアプリが異常終了する場合のことを考える必要はないと思う
(プロセスが落ちれば勝手に閉じられる)

そういう話ではなく、例えば232Cとかから何か送信する必要があるとかなら、
http://www.atmarkit.co.jp/ait/articles/0507/01/news134.html
これを利用するのが普通じゃないかな
0209デフォルトの名無しさん
垢版 |
2018/03/12(月) 01:52:29.42ID:uqwSBh4C
VS2010使ってます。

/// と入力した時のコメントの色を変更したいんですけど

/// <summary> ← この部分

Tool→Option→Environment→Fonts and Colors→ Display items
の中のどれのフォントを設定すればよいのでしょうか?

背景色を黒、文字色を黄色にしたです!
0210デフォルトの名無しさん
垢版 |
2018/03/12(月) 01:58:56.52ID:P6b6g7+Q
>>209
自分で1つずつ設定するのは大変だから、設定済みのスタイルをインポートするのがおすすめ
お気に入りの色の組合せダウンロードしたら、「ツール」→「設定のインポートとエクスポート」とかで出来たはず
https://studiostyl.es/schemes
0215デフォルトの名無しさん
垢版 |
2018/03/13(火) 00:20:52.15ID:Odo9QKBD
コンストラクタの引数に型を渡して中で利用したいのですが
どのようにすればいいでしょうか?

public class Hoge
{
 public Hoge(MyClass)  ←引数にMyClass型を渡したい(MyClass型の他にも様々な型を渡せるようにしたい)
 {
  new Fuga<MyClass>(); ←MyClassをこのように利用したい
  ...
0217デフォルトの名無しさん
垢版 |
2018/03/13(火) 00:26:57.35ID:Odo9QKBD
自己解決しました
0218デフォルトの名無しさん
垢版 |
2018/03/13(火) 00:27:13.56ID:Odo9QKBD
>>216
すみません、ありがとうございます
0220デフォルトの名無しさん
垢版 |
2018/03/14(水) 01:01:17.69ID:m+3G+xXH
unity上で人間の視覚を表現することってできるでしょうか?
人型のモデルの頭に2台のカメラを搭載して、その映像をもとに
別窓でリアルタイム3Dモデリングをさせたいのですが
0222デフォルトの名無しさん
垢版 |
2018/03/14(水) 10:10:35.96ID:dHyAKo2T
視差とかステレオカメラで検索すれば原理はいくらでも出てくるが、
実装となるとがんばれとしか
0224デフォルトの名無しさん
垢版 |
2018/03/14(水) 14:05:02.41ID:x3Fz4Pwf
C#から指定したパスにあるBATファイルを実行する為に
次のコードを記述しました。しかし、なぜかDOSが起動しません。
何が間違っているのでしょうか?
直接バッチファイルをキックすると動きます。


string path_dayo = @"C:\Users\mariokun\test.bat";
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = path_dayo;

System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
0225デフォルトの名無しさん
垢版 |
2018/03/14(水) 14:24:14.78ID:dHyAKo2T
ユーザーの下だから、アクセスする権利が無いとか
試しにC:\testとかフォルダ作って、その中でやってみたらどうかな?
0227デフォルトの名無しさん
垢版 |
2018/03/14(水) 15:44:35.53ID:9afmhkEC
最近使ってないから怪しいものだが、確かProcessに標準エラー出力をみるプロパティーかメソッドのようなものが有った気がするので
エラー見たら判るかもしれんね
0230デフォルトの名無しさん
垢版 |
2018/03/14(水) 22:03:23.06ID:o9PP0UYA
>>224
ユーザー名違うけどユーザーフォルダ直下で普通に起動する
https://dobon.net/vb/dotnet/process/shell.html
>ProcessStartInfo.UseShellExecuteプロパティがTrueである必要があります
あとはC#以外の要素、例えばtest.batの中身に因るのか
関連付けに頼らず本来の方法であるCMD.EXEと引数に変えてみるとか
0231デフォルトの名無しさん
垢版 |
2018/03/15(木) 17:01:20.38ID:OFI+/e24
visual studio 2015を使ってます
Nugetでいくつかのパッケージを導入したのですが、ビルド時にパッケージだけを/debug/vendorフォルダへ移動させて/debug直下をスッキリとさせたいのですが、そういうことは出来るのでしょうか。
0232デフォルトの名無しさん
垢版 |
2018/03/15(木) 17:43:33.35ID:hfQcS2x0
ずっと2010使ってるけどさすがに2015あたりに俺も
乗り換えたほうがいいのかな?
0233デフォルトの名無しさん
垢版 |
2018/03/15(木) 17:46:24.44ID:m1Pb8szy
インテリセンスの利き方が違うし、やっぱり新しいIDEの方が洗練されてるのねん
0236デフォルトの名無しさん
垢版 |
2018/03/15(木) 18:10:48.50ID:LOd8Ik0+
個人なら2017でいいだろ
アホみたいにアグレッシブにアップデート入れてくるから時々動かなくなったりするけど
0242デフォルトの名無しさん
垢版 |
2018/03/15(木) 21:37:17.95ID:lQYzxnHH
ここで質問で合ってるかわかりませんが、質問です
WPFのNuGetでTesseractを入れて使ってるんですが、
DLLをEXEに埋め込みたくなって、いろいろ試したのですが、うまくいきませんでした

一つはcsprojをいじってDLLを埋め込み、スタートオブジェクトを変えてアセンブリを読み込む方法
これはDLLがないと言われてエラーが出ました
もう一つはCostura.Fodyを使った方法で、TesseractEngineのコンストラクタの引数がおかしいと言われます

いずれも埋め込まずに普通に作ると動くので、何かしらが悪さをしてる感じです
DLLからDLLを呼んでいる場合などにマージがうまくいかないとネットに書いてありましたが、それかもしれませんが確証はありません
なにかうまいやり方があったら教えてほしいです
0244デフォルトの名無しさん
垢版 |
2018/03/15(木) 21:41:26.54ID:lQYzxnHH
>>243
ILMergeはWPFでは使えないとネットに書いてあったので試してなかったのですが、
一応調べてみますありがとうございます
0248デフォルトの名無しさん
垢版 |
2018/03/15(木) 23:02:51.90ID:564IsbOI
俺環の割とポンコツなWindows10のPCで数万行のソース扱うのにVS2015よりもVS2017は軽い
更新が頻繁なので不具合が怖いのなら勧めない
0249デフォルトの名無しさん
垢版 |
2018/03/15(木) 23:14:46.01ID:eOZcuNU1
うちでも 2017 の方が軽かったので 2015 は削除しちゃったな。
2015 は仕事で3年くらい前のハイスペックノートPC で使ってるけど、こっちでは快適に動いてる。
たぶん SSD の有無の違いだと思う。
0250デフォルトの名無しさん
垢版 |
2018/03/15(木) 23:14:54.49ID:G4lYZ6Ln
うちは自社サービスのベンチャー企業だけど、そんなところですら2017のアップデートはヤバいから即更新はやめろと言われてるわ
それくらいヤバイ
0254デフォルトの名無しさん
垢版 |
2018/03/16(金) 01:46:06.61ID:4NPyRaAF
>>253は初心者さんのフリした上級者の釣りなのかそれとも本当にnoobなのかどっちなんだろう・・・
0257デフォルトの名無しさん
垢版 |
2018/03/16(金) 07:36:24.07ID:YQujD0/w
2017これだけアップデートしまくってて次のバージョンどうするんだろうな
どこかで打ち切って今後の更新は2020買ってねにしたとしても、十分に差が開くまでだいぶ時間がかかりそう
MS的にはVSの売上ってほとんどがサブスクリプションらしいから、このままローリングアップデート&サブスクリプションモデルに移行するのかな
0263242
垢版 |
2018/03/16(金) 23:07:21.34ID:hJQANr44
なかなかうまくいかないですが、諦めも肝心なので
0265デフォルトの名無しさん
垢版 |
2018/03/17(土) 00:27:17.49ID:RBvH9ws3
宮大工は一般の大工が持っていない技能を有しているから価値があるんだろ
きっと258の周りには、自分の使ったことのあるバージョンよりも古いバージョンのVSを使わせたら
ストレスで気が狂ってしまう特殊な人が集まっているのだろう
0267デフォルトの名無しさん
垢版 |
2018/03/17(土) 00:57:29.49ID:AFPHSGxF
>>61
まじか。
3念位前のやつや

そこそこいいCPU思ってたのに。
スレッドりっぱー言うヤツかおうかな。
0268デフォルトの名無しさん
垢版 |
2018/03/17(土) 02:49:21.97ID:Ci5roxTl
いやいや、CPUの世界はムーアの法則が成立しなくなって10年以上経つ
もうPCが2,3年で旧式化するような時代じゃない
買い換えても体感できる差なんか生じないはず
0270デフォルトの名無しさん
垢版 |
2018/03/17(土) 02:55:49.69ID:AFPHSGxF
スレッドリッパーに乗り換えるでぇ!!!

Core i7 でもVS2010は結構サクサクなんやでぇ〜〜〜!!!
0276デフォルトの名無しさん
垢版 |
2018/03/17(土) 22:55:06.66ID:RxkyGAdz
>>275
流石にawaitのスレッドがどう動いているか知らずに作っている人は居ないだろ




居ないよな?
0281デフォルトの名無しさん
垢版 |
2018/03/18(日) 00:36:08.73ID:EuAIJOKr
ちゃんと原理を知っていれば問題ないと思うけど
ちゃんと教えてくれる親切な存在が非常に少ない

GUIがそこでメソッドの終了を待機しますなんてクソみたいな解説は死ねばいい
0283デフォルトの名無しさん
垢版 |
2018/03/18(日) 08:41:34.51ID:loIla1VR
uwpは非同期前提でライブラリ組まれているから
ファイルとか通信弄ったら強制的にasync使わされるな
0284デフォルトの名無しさん
垢版 |
2018/03/18(日) 09:23:43.99ID:LfFBDSxt
>>283
マジで?

ファイル弄ってる間何しろって言うんだろうねw
@ファ
Aファ
Bファ
Cファ
Dファイルオープン!
ってユーザが押したら
デフォルトで@〜Cも実行されんの?
0285デフォルトの名無しさん
垢版 |
2018/03/18(日) 09:40:47.42ID:CHE7gnWF
>>284
@のオープン処理のawaitで待つのでオープン処理が排他で開きっぱなら、@のオープンが終わった後にA〜Dでオープン失敗で例外吐くんじゃね
0287デフォルトの名無しさん
垢版 |
2018/03/18(日) 10:08:23.31ID:CHE7gnWF
>>286
待機せずに実行ならどれか一つがオープン処理が終わって他が失敗で例外やね、まず@が最初に終わるだろうけど
非同期当たり前だと、待機中の操作で悪さできないようにに考えないといけないのがまた面倒だわな
0290デフォルトの名無しさん
垢版 |
2018/03/18(日) 11:32:15.68ID:MxU9Q35+
>>289
処理中はWinFormだろうが入力無効にするな
そういう安全策とらずに文句言うのが初心者らしくていいじゃん
0291デフォルトの名無しさん
垢版 |
2018/03/18(日) 13:30:49.36ID:MzxPx1yb
個人的にはあんまりよい方法と思わんが、UIじゃなく
処理の再入を無効にするってアプローチもあるよ
0292デフォルトの名無しさん
垢版 |
2018/03/18(日) 13:49:17.89ID:DhSuPqdW
async/awaitがリリースされたときはヘルスバーグも耄碌したかと思ったな
今ではJavaScriptやPythonにもパクられているという
0294デフォルトの名無しさん
垢版 |
2018/03/18(日) 16:08:33.34ID:HvANmpx3
コーディング速くて正確な人って入力補完とかリファレンス見なくても頭の中で全部関数把握してるのかな
0295デフォルトの名無しさん
垢版 |
2018/03/18(日) 16:29:33.93ID:OEQy6gR7
VB職人みたいな人の中にはそういう人もいるね
頭使わず手癖でコピペコードを量産するタイプ
0296デフォルトの名無しさん
垢版 |
2018/03/18(日) 23:24:54.10ID:LfFBDSxt
>>294
そんなの無理だからちゃんと確認してるんだよ
正確じゃ無い人は覚えてると思い込んでてテキトーにやるんだ
0297デフォルトの名無しさん
垢版 |
2018/03/18(日) 23:58:03.91ID:Yx6XHCxq
>>296
本当に速くて正確な人を知らないんだな
まともな仕事をしてれば割とよく居るぜ
0300デフォルトの名無しさん
垢版 |
2018/03/19(月) 00:52:11.24ID:LTn7thRp
過去に自分が速いって言われてたときは、
・普段から出来るだけ汎用的なコードを書くように心がける
・上のをテンプレートとして頭の中やソースファイルに保存しておく

結果迷いがないから「手が止まらなくて気持ち悪い」とか言われてたなぁ。。。
それにだんだんと洗練されていくからか、同じような機能を持ったコードを書いたときに自分の方が行数が明らかに少なかった。

つまり考えてる時間が短くて、打ち込みも少なかった。
そういう例もあると言う事で。
0302デフォルトの名無しさん
垢版 |
2018/03/19(月) 01:24:30.62ID:ySbEw7Dl
じゃあ、次は俺の番だな

ゴレイヌ「まずゴリラを具現化しようと決めてからはイメージ修業だな
最初は実際のゴリラを一日中いじくってたな。とにかく四六時中だよ
目をつぶって触感を確認したり、何百回何千回とゴリラで射精したり
ずーっとただながめてみたり、なめてみたり、音を立てたり、嗅いでみたり
ゴリラで遊ぶ以外何もするなと師匠に言われたからな
しばらくしたら毎晩ゴリラの夢を見るようになって、その時点で実際のゴリラをとりあげられた
そうすると今度は幻覚でゴリラが見えてくるんだ
さらに日が経つと幻覚のゴリラがリアルに感じられるんだ
重さも冷たさもすれあう音も聞こえてくる
いつのまにか幻覚じゃなく自然と具現化したゴリラが出ていたんだ」

で?何の話だっけ?
0304デフォルトの名無しさん
垢版 |
2018/03/19(月) 08:04:31.57ID:cKcZNHNu
別にいいじゃん速いやつ居たってw
てか普通に居るわw
悔しいんかおまいら?w
0305デフォルトの名無しさん
垢版 |
2018/03/19(月) 09:16:26.83ID:qo8Tft6w
そういう議論があること自体初心者からすると絶望だわ
調べる時間、確認する時間が段々短くなっていって最終的には何も見なくても
なんでもできるようになるもんだと思ってたが
0308デフォルトの名無しさん
垢版 |
2018/03/19(月) 11:41:39.96ID:glrdUuh3
インテリセンスのなかった頃は、普通にviやmifesで書いていたわけで
当たり前のようにライブラリの関数名など記憶していた
何もなければ人間はそうやって順応するものだよ
0310デフォルトの名無しさん
垢版 |
2018/03/19(月) 12:58:25.76ID:umuusKk5
くだらない話だけど、ライブラリに登場する識別子の数はその牧歌的な時代から何倍ぐらいになってるのかと。
100倍じゃきかないと思うけどね
0311デフォルトの名無しさん
垢版 |
2018/03/19(月) 14:13:40.38ID:74Z4r7y/
ちょっと聞いてみたいんだが、株の予測でぼろ株を当てるのに利用するとして、C#で株のろうそく足が週足で連続3回ダウンしたチャートを見つける方法があるとしたらどうプログラミング組める?
是をアプリに組み込みたいとしたらの話で分かる人いる?
例えば、株のx軸が価格、y軸が期間なら、21日以内でろうそく足が3回連続ダウンしているってのを見つけるだけだけど

i= genzaichi = 1
for(i = 1; i<4; i++ ) //4回未満=3回のループで使用したい

x=kakaku , y= kikan

x軸の0ラインからの乖離率として、1-7/10 // =0.3 x軸の0ボトムラインから30%乖離、
1-8/10 // =0.2 x軸の0ボトムラインから20%乖離、1-9/10 // =0.1 x軸の0ボトムラインから10%乖離
など使うのか?と考えてみたんだけど、そもそもこれC#で本当にできる?
0312デフォルトの名無しさん
垢版 |
2018/03/19(月) 14:38:24.41ID:qo8Tft6w
21日前の価格-14日前の価格
14日前の価格-7日前の価格
7日前の価格-現在の価格
---の銘柄
0314デフォルトの名無しさん
垢版 |
2018/03/19(月) 14:57:45.70ID:74Z4r7y/
>>312 それどうやるのさ?
x=21日前の価格
i =7日後の価格 

x-i=[14] // 21日前の価格-14日前の価格
x-i*2=[7] //14日前の価格-7日前の価格
x-i*3= [x >1] ??? //7日前の価格-現在の価格 

x軸の価格が1未満?そもそも株の価格が底値になるってのは0でいいのか?
なら底値=0 だから1未満にすればいいのか?
0315デフォルトの名無しさん
垢版 |
2018/03/19(月) 15:06:09.56ID:74Z4r7y/
x-(i*3)>1 か わかんねーw
0316デフォルトの名無しさん
垢版 |
2018/03/19(月) 15:39:22.39ID:qu0U5IXL
どっかにあったスクリプトをコピペして、自分のやりたいように改良したいんだろうけどさ
そう言うのはクラウドソーシングかどこかでお金を払ってやってもらったら良いんじゃないかな、話さえきちんと伝えられれば大してお金もかからないでしょう
C#を勉強中の人の邪魔にならないだけでなく、初心者の小遣い稼ぎにもなるだろうし、あなたもちゃんとしたプログラムが手に入る、良いことづくめだよ
0317デフォルトの名無しさん
垢版 |
2018/03/19(月) 15:44:50.75ID:74Z4r7y/
>>316  ま、そうだよね これで商売してる人いるんだわ
知恵○でぶくったら重回帰分析だのモンテカルロ・シュミレーションだの難しいこと知ってる人いたわ
キャリア積まないとわかんない話だってことは理解した さんくす
0319デフォルトの名無しさん
垢版 |
2018/03/19(月) 19:59:31.14ID:I0s4BSGD
>>311
作ってあげようか? 
もとになるデータは何処からとりだしてくるの? 
チャンとしたソフトにするには80hくらいはかかるんじゃないだろうか?
その程度の費用で。
0320デフォルトの名無しさん
垢版 |
2018/03/19(月) 19:59:46.65ID:DSOIiGwJ
何も理解していなくてもスレ的にはいいけど、仕様・設計の段階で来られてもどの言語スレでもスレ違い
0321デフォルトの名無しさん
垢版 |
2018/03/19(月) 21:43:11.78ID:oS5ZVaWO
>>311
「週足のダウン」をどう定義するのか知らんが
仮に陰線ならダウンってことにすると、週ごとの始値・終値を比較して
値上がりしてるなら0、値下がりしてるなら1とすれば
3週間なら[0, 1, 1]みたいな配列ができる
[1, 1, 1]になってれば連続3回ダウン
(>>312の内容と意味は同じ)

プログラミングは難しそうだからExcelスレをオススメする
0322デフォルトの名無しさん
垢版 |
2018/03/19(月) 22:16:33.20ID:cxVTwmnS
>>311
プログラミングの基本は分割統治。

まず落ち着いて、

(1) 〇足(週足、日足、n時間足...)のローソクを表すCandle型を定義する
(2) 任意の期間の時系列の株価データを受け取って、その期間の〇足のCandleの配列を返すメソッドを書く

ここまで出来たら後は簡単でしょ
0323デフォルトの名無しさん
垢版 |
2018/03/19(月) 22:57:58.05ID:csFbH6Mx
C# なんて難しい。
Ruby の、chunk_while でグルーピングできる

# 終値が減少部分だけの、配列に分ける。
numbers = [100, 50, 70, 70, 60, 55, 65, 45, 40, 30, 20, 25]

results = numbers.chunk_while { |prev, num| prev > num }
.select { |ary| ary.length >= 3 }

p results #=> [[70, 60, 55], [65, 45, 40, 30, 20]]
0325デフォルトの名無しさん
垢版 |
2018/03/19(月) 23:05:04.51ID:dKLVd5g6
ここで聞くべきかわからないんだがiis+asp.netで webapi作ったとして
リクエストをサーバーで処理してレスポンスをクライアントに返して届かなかった場合にaspでその失敗ってわかる?
0326デフォルトの名無しさん
垢版 |
2018/03/19(月) 23:33:49.94ID:CLhJZa33
すみません、どなたかにお聞きしたいのですが
intやshortのような整数型同士のキャストはどのくらいの負荷があるんでしょうか?

出来る限りメモリを切り詰めたいので常に最小の整数型を使っているのですけど
計算や引数を渡す過程で頻繁にキャストを書かなければいけないのはどうなのかなと思いまして
0328デフォルトの名無しさん
垢版 |
2018/03/19(月) 23:51:19.72ID:yZrCIvE9
>>326
大体の場合負荷は限りなく低い
でも局面によって違うから自分で試す以外答えはでない

普通に作ったのと切り詰めたのを比べるといい
DateTime.Nowの値を保存しておいて差分でどのくらい時間がかかるか見る

差が小さすぎるなら何万回もループさせて差分を見る
0330デフォルトの名無しさん
垢版 |
2018/03/19(月) 23:55:45.93ID:6h1rUneg
>>326
データをストックする場所を最小にしたいのならともかく計算の過程で頻繁にキャストしていたらムダでしかない
キャストのコストが0でも保守が面倒になるだけ
0331デフォルトの名無しさん
垢版 |
2018/03/19(月) 23:57:09.07ID:glrdUuh3
>数年速いわ
音速の貴公子と言うより天文学レベルカー

と、微妙なtypoが何故か気になった
0332デフォルトの名無しさん
垢版 |
2018/03/20(火) 00:00:01.48ID:cgEg6Dwj
つーか、整数のキャストなんてHWが自動でやってくれない時代だって
符合拡張するか上位バイトを捨てるだけだよw
0333デフォルトの名無しさん
垢版 |
2018/03/20(火) 00:04:07.89ID:qVb9KqM8
4バイト整数に、1バイト型を4つ詰め込んだりするのは、組み込みC とか

GC もある、C# でやるだけ、ムダ! ムダ! ムダ!
0334デフォルトの名無しさん
垢版 |
2018/03/20(火) 00:08:35.20ID:iiZhLnn/
単純な話で32bitCPUで動いているとすると計算の基本単位が32bitなんだから
コンパイラ上で16bitに切り詰めて計算したところで意味がない
メソッドの引数でメモリの節約とかの発想なら根本的に間違い
0336デフォルトの名無しさん
垢版 |
2018/03/20(火) 10:30:10.37ID:uUCQMwFd
>>326
メモリを切り詰めるために最小の整数値にしても
32ビットだと32ビット単位のほうが効率的だから
コンパイラがパディングを詰めて32ビット単位にしてしまうから無駄だよ

組み込みなら話は別かもしれんが
0337デフォルトの名無しさん
垢版 |
2018/03/20(火) 17:23:02.62ID:Cboi/qMX
もしかして、boolとかもintにしたら2倍早くなるのかな?

bool b = true; //1bit分メモリ確保
if(b){}//メモリから読み出され、論理演算を2回を挟み、trueと比較

int i = 1; //32bit分メモリ確保
if(i==1){}//メモリから読み出されたら、そのままtrueと比較
0338デフォルトの名無しさん
垢版 |
2018/03/20(火) 17:41:09.07ID:VwQ1GHDU
boolはビットフィールドじゃないってw
論理演算なんか入りませんw

x86の機械語知らんけど、普通に考えればboolの評価は変数の値がゼロかどうかだけだが、
intの==演算子はコンペアが入るから、そっちの方が遅いことはあっても早いことはありえない
0339デフォルトの名無しさん
垢版 |
2018/03/20(火) 17:58:42.62ID:Cboi/qMX
でも32bitなりなんなりの単位で読み出されて、ビット演算無しでどうやって取り出すんでしょう
0341デフォルトの名無しさん
垢版 |
2018/03/20(火) 19:59:58.73ID:FFuoeUFR
>>340
>>336
0345デフォルトの名無しさん
垢版 |
2018/03/20(火) 23:14:52.88ID:QgeO599U
その手の話をするなら、とりあえずILとスタックを確認できるようになってから
可能ならRyuJITで吐かれるアセンブラまで見るべき
0347デフォルトの名無しさん
垢版 |
2018/03/21(水) 00:01:57.15ID:1NDr7Usm
-1から1の範囲を分岐無しでビットに詰めるのってどうやるんだっけ?
aabb ccddみたく4つの数値を1byteに詰める小技を昔見た気がするが思い出せない
0348デフォルトの名無しさん
垢版 |
2018/03/21(水) 00:06:22.20ID:wxFTzoek
64bit-CPU なら、8バイトしか無い。
1〜7バイトなんて無い。
使わない部分を、0 and で、マスクするだけ

並列処理で、4 + 4バイトとして使うとか、そういう命令はある
0351デフォルトの名無しさん
垢版 |
2018/03/21(水) 00:28:21.39ID:mIV9xLj7
それともアドレッシングの話か?
あれアドレッシングってどうなってんだっけか。
SP(スタックポインタ)レジスタとかって64bitCPUなら8バイト単位になるんだけっか?
0352デフォルトの名無しさん
垢版 |
2018/03/21(水) 00:30:36.35ID:1NDr7Usm
>>349
// aabb 0000
bit |= (a == -1)? 0x80: (a == 1)? 0x40: 0;
bit |= (b == -1)? 0x20: (b == 1)? 0x10: 0;

こうやるのは簡単なんだよ
これを三項演算を使わずビット演算だけでやる方法があるはずなんだよ
入れる方はシフトしてマスクすれば出来そうだが取り出す方法がまるで思い出せん
0356デフォルトの名無しさん
垢版 |
2018/03/21(水) 01:00:25.75ID:wxFTzoek
>>350
>64ビットレジスタを普通に、32ビットのEAX,EBX,ECX,EDXなどとしてアクセスできる
8バイトよりも小さい用途には、マスクして使っているだけ

実際に、8バイトよりも小さいレジスタを作るのは、場所・回路のムダ。
しかも統一的に扱えないから、ややこしいし、通信するのにも時間が掛かる
0360デフォルトの名無しさん
垢版 |
2018/03/21(水) 05:26:14.92ID:w6+mXCSB
byte bit = (byte)(((a & 0x3) << 6) | ((b & 0x3) << 4) | ((c & 0x3)<< 2) | (d & 0x3));
0361デフォルトの名無しさん
垢版 |
2018/03/21(水) 11:03:58.94ID:6oHAbJm9
1. 「確かな力が身につくC#「超」入門」

を勉強し終えて

2. 「独習C# 新版」

を読み始めたんだけど、この本厚すぎて通読には分量有りすぎる・・・。
1を読み終えてもう少しレベルアップしたい人におすすめな薄めの本ってありませんか?
0363デフォルトの名無しさん
垢版 |
2018/03/21(水) 11:21:15.82ID:ElQ36cp9
勉強という言い訳でいくらでも足踏みできるから
ノロノロしてるとそれだけで終わっちまうぞ
時間かけた割には何にも身についてなかったりする
経験と知識のバランスが大事だ
一つ本読んだらせめて一つはプログラム作れよ
0364デフォルトの名無しさん
垢版 |
2018/03/21(水) 11:21:24.54ID:04sPI9mV
いや一生本読んでいればいいよ
自由度の高い分野で「レベルアップしたい人におすすめな薄めの本」ってもう発想が「楽してレベルアップ」で無理だから
0365デフォルトの名無しさん
垢版 |
2018/03/21(水) 11:37:51.55ID:0twXSax5
言語が趣味なんだろ
0366デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:07:16.84ID:8gJoz83s
言語仕様だけ知ってても実力は上がらない
でもやみくもに手を動かしても得られるものは少ない

c#向けじゃないけど昔は脱初心者レベルのソフトを作りながら学べる本があったけど
今はそういった需要は薄いのかあまり見かけない
初級者と上級者の差を埋める本大事だと思うけど

プログラマー的思考を身に着けるために
初歩のアルゴリズム系の本でもじっくり読んで将来に備えよう
0368デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:09:17.71ID:ElQ36cp9
>>366
闇雲に動いた方がいいよ
この業界、〇〇体系とか超クソだし
単純に作成したアプリの数が力になっていくと思う
0369デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:12:58.59ID:8gJoz83s
>>368
昔は今よりできることが少なかったから
やみくもにやっても到達する範囲は広かった
今は広すぎるのでやみくもにやると割に合わない
ずっとググってるだけになりがち
0372デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:16:13.75ID:8gJoz83s
その当時流行りのライブラリの使い方なんてすぐに陳腐化する
本質的に長く使えるのはプログラマ的思考

基本的なアルゴリズムがわからないのにプログラマを名乗るのははずかしい
問題解決の手段はググってライブラリをみつけるだけじゃない
0374デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:20:49.36ID:8gJoz83s
○○をやりたい

c# ○○ で検索

ヒットしないのでやめる

じゃなくて

○○をやりたい

本やwebで○○について学習

c#でコーディング
0375デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:25:58.88ID:pPz9oHRt
>>372
> プログラマ的思考
怠惰は美徳
明日出来る事は今日やらない
アルゴリズムを学ぶよりはライブラリをググる
0376デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:27:30.38ID:Y56bN0nz
>>372
こういうこと言う人間って結局何も出来ないやつのコンプレックスなだけ
プログラミングで一番大事なのは動機。何かを作りたいという情熱だけ
0378デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:31:08.99ID:pL77RIW6
真逆の思考の人が両方ともプログラマーを名乗る
それでも全然問題ない
0380デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:37:21.23ID:pPz9oHRt
>>378
>>372のような初心者に教えたがる初心者は居ない方が良い
0382デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:42:14.57ID:pL77RIW6
>>380
しかし376のような方が情熱で作るのをコピーするのもプログラマ
0383デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:45:50.02ID:whSpFtiD
というより、現場の土方も橋の構造の設計者も同じ「建築関係者」ってことでしょw
ただ、土方が「構造力学なんて必要ねえ!」って吠えるのはその通りだけど滑稽ではあるねw
0384デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:46:24.05ID:QTwxh18R
Qiitaみたいに公共領域であるWebにゴミを棄てないなら何でもいい
勝手にやってろ
0385デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:53:26.69ID:8gJoz83s
やりたいことを言語仕様を学んだだけではコーディングできないことがある
やみくもに手を動かすだけでは目的を達成できないことが出てくる

過去の確立された手法を学ぶことで徐々にこうすべきだとが体が覚えていく

そして内部で何が行われていてどれだけの計算コストがかかりメモリなどが消費されるのか
正確じゃなくてもそれが多いか少ないかを何となく雰囲気がつかめるようになると大成功
0386デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:53:34.97ID:pPz9oHRt
>>384
QiitaはWeb用ゴミ箱やぞ
0387デフォルトの名無しさん
垢版 |
2018/03/21(水) 12:54:06.43ID:pPz9oHRt
>>385
初心者はもう黙れ
0388デフォルトの名無しさん
垢版 |
2018/03/21(水) 13:00:13.20ID:/SLykQ97
何かを作って問題にぶちあった時に発揮する問題解決能力に勝るものはない
くそみたいなネットゲーム作ってる会社が最先端のライブラリを生み出してる現状がそれ
0389デフォルトの名無しさん
垢版 |
2018/03/21(水) 14:09:56.04ID:x2r2V1ra
>>387
ここには初心者しかいないw
>>374
の上が全く納得できなかったけどコピペプログラマの考え方だと合点がいった
>>361
そもそも何のための勉強なのか
就活のための勉強なら読んだ本が多い人と簡単でも実績のある人がどちらが有利なのかはわかる
趣味のための勉強ならここで聞かずに好きにしたらいい
>>363の下の2行を否定できる人はまずいないだろうな
0390デフォルトの名無しさん
垢版 |
2018/03/21(水) 14:23:27.49ID:5e+TVXSM
今時、本を読んでコードの勉強する奴なんているの?
いんたーねっとを知らんの?
0393デフォルトの名無しさん
垢版 |
2018/03/21(水) 14:57:19.22ID:0twXSax5
>>367
趣味に使えるも使いないも関係あるかよ(´・ω・`)
0395デフォルトの名無しさん
垢版 |
2018/03/21(水) 15:27:35.75ID:5e+TVXSM
>>394
いまは何をされてるんですか?
代表作は何でしょか?
0397デフォルトの名無しさん
垢版 |
2018/03/21(水) 15:39:11.17ID:5e+TVXSM
>>396
そんな事ねーだろw
むしろ逆なんじゃないの?
ブログから書籍なら分かるけど
0400デフォルトの名無しさん
垢版 |
2018/03/21(水) 15:58:17.79ID:OlOe5UzE
書籍が情報の原点だという意味では
まぁそんなこと言い出したら知識伝播の原点は壁画時代にまで遡る
0402デフォルトの名無しさん
垢版 |
2018/03/21(水) 19:42:34.12ID:k50DXUVk
>>394
そんなにやっていて初心者のスレで真っ赤になった上にバカにされるんだ
こんなプログラマにはなりたくないな
そして忘れ去られる元の質問者
0403デフォルトの名無しさん
垢版 |
2018/03/21(水) 20:08:29.59ID:1JiLJjJR
努力で解決しちゃう奴がプログラミングをやると>>394みたいになりがち
0404デフォルトの名無しさん
垢版 |
2018/03/21(水) 20:11:51.61ID:zVVJT8mf
永遠の初心者よりいいと思うけどw
コピペしかできない人間にはなりたくない
0406デフォルトの名無しさん
垢版 |
2018/03/21(水) 20:20:02.58ID:1JiLJjJR
いや、その永遠の初心者が>>394なのだが
0408デフォルトの名無しさん
垢版 |
2018/03/21(水) 20:33:38.71ID:cPEv79wC
そんな真新しくプログラム作ることってなくないか?
自分のライブラリ使うのもコピペに入るならほとんどコピペみたいなもんやろ
ネットから拾ってただコピペは知らん
0410デフォルトの名無しさん
垢版 |
2018/03/21(水) 20:47:32.26ID:mPtLWMTP
コピペって言えばQiitaやHatenaの記事は酷いもんがあるよな
間違ったテクニックや誤魔化す技が一度紹介されたら、そのコピーブログが量産されてくんだ
0411デフォルトの名無しさん
垢版 |
2018/03/21(水) 21:53:57.93ID:1JiLJjJR
>>410
酷くていいんだよ
ああいうのは>>394みたいな努力系プログラマーが排出するゴミの受け皿なんだから
0414デフォルトの名無しさん
垢版 |
2018/03/21(水) 23:04:09.39ID:/A9S8Tke
ここでいいかな。
分かる人いたら教えてください。

C# で作成する webアプリで、web.config の appSettings セクション?の下の add には
通常では key と value の組で設定の名称と値を保存していますが、key と value の他に独自のプロパティを追加して、たとえば

<appSettings>
<add key="名称" value="設定値" explanation="この項目の説明"/>
</appSettings>

みたいな事をしたいのです。
ずっと前に appSettings の拡張クラスを定義する事によって可能になるというような記事を読んだ記憶があったような気がするのですが
いまは見つけられませんでした。

上のようなやり方の是非はともかく、実現の可否と、やり方を教えてください。
0418デフォルトの名無しさん
垢版 |
2018/03/22(木) 02:52:41.51ID:R5Phquw0
exeというのはCやC#をコンパイルしたものですか?
PyhronやRubyをコンパイルすると拡張子は何になりますか?
0419デフォルトの名無しさん
垢版 |
2018/03/22(木) 02:58:58.59ID:R5Phquw0
参考にしたい実行ファイルがあるんですがexeはどれもCやC#にデコンパイルできるんでしょうか?
構文の勉強をするにはどうすればいいですか?
0420デフォルトの名無しさん
垢版 |
2018/03/22(木) 04:12:18.59ID:JQhOGY5j
exeはWindowsの実行ファイル
PythonやRubyはインタプリタが実行することが多いけど、exeにする方法もある

簡単にでコンパイルできるとは限らない
必要に応じて逆アセンブルを読む
0421デフォルトの名無しさん
垢版 |
2018/03/22(木) 04:47:45.97ID:tdHViWJs
1. 各言語 → 実行ファイル
2. 各言語 ← 実行ファイル

1. のように、各言語をコンパイルして、実行ファイルを作ることはできるが、
2. のように、実行ファイルを逆コンパイルして、
各言語のソースコードに直すことは、無理

特に、他人が作ったものは、年十年も研究しないと無理

1. のように、まず自分でプログラムする事を、勉強した方が速い
0422デフォルトの名無しさん
垢版 |
2018/03/22(木) 07:06:16.48ID:dIG91/vu
>>419
C#で作られたものならILSpyなどのデコンパイラを使えばかなり高精度でソースを復元できる
でも他人のソース見て勉強したいならGithubでOSSを読むのが一番だと思う
上の人はこの板の名物基地外だから無視するように
0428デフォルトの名無しさん
垢版 |
2018/03/22(木) 17:44:35.45ID:s6EbUNWz
>>419
CとC#が同じように見えるレベルででデコンパイルで勉強とか無理
それ以前に言語スレで質問するときは最低限その言語で「Hello World!」実行できるようになってから
0431414
垢版 |
2018/03/22(木) 19:18:29.35ID:+BApurZo
>>415-416
ありがとう。
調べてみます。

>>417
茨の道っぽいかもですね。
まあ先の用例のケースなら <!-- --> でコメントを入れてもいいので、適宜、工数を考えてみます。
でも <!-- --> でコメント入れると、行挿入したときとかに勝手に改行が入ったりするので。。
0432デフォルトの名無しさん
垢版 |
2018/03/22(木) 19:41:14.86ID:cv696+3f
読み込んだ画像を縦横に連結して新しく出力したい。
横への結合はあるけれど、縦・横並べるにはどうしたらいいんだ



■■■
■■■

こういう風にしたい
0434デフォルトの名無しさん
垢版 |
2018/03/22(木) 19:59:53.87ID:52tkzdW9
>>432
C#以前に画像の大きさと座標を考えるだけじゃないの
横に連結できるのに縦横ができない方が意味不明
0436デフォルトの名無しさん
垢版 |
2018/03/22(木) 20:47:55.73ID:ni48WVgw
class TypeA: IType{}
class TypeB: IType{}
IType[] table;

こんな感じの構成で配列にI/Fを格納してステートマシンをやりたいのに、
何をnewして配列を初期化したらいいのか分からない誰かたすけて
0439デフォルトの名無しさん
垢版 |
2018/03/22(木) 21:17:50.71ID:ni48WVgw
ごめん
IType tmp = new IType[2];
としたら普通に出来た

インターフェースはnew不可能って嘘言ってる奴は死ねばいいのに
0440デフォルトの名無しさん
垢版 |
2018/03/22(木) 21:26:09.52ID:06GLHVJW
Interfaceはnew出来ないぞ。
それは配列をnewしてるのであってInterfaceをnewしてるわけでは無いんだよ。
0441デフォルトの名無しさん
垢版 |
2018/03/22(木) 23:23:13.81ID:R5Phquw0
>>421,428
サイト見ながらハイ&ローゲームを作ったけどめっちゃ難しかった
でもマインクラフトなんかよりずっと面白いな!
お前らみたいに長年プログラムを書いてるとソースコードを見ただけで吐き気がしたり嫌になったりすることもあるの?
今でも楽しく書けてる?もうロボットになっちゃった?
0442デフォルトの名無しさん
垢版 |
2018/03/23(金) 10:18:12.37ID:dRbnJSq+
ソースなんか見なくても
テストが全くない、仕様書はない、前任者が逃亡
のどれかを聞いたら吐く
0443デフォルトの名無しさん
垢版 |
2018/03/23(金) 15:25:59.96ID:4mHfCYml
好きなことは趣味だけにとどめておけとは良く言うな
まぁ広い世界を見るのと見ないのじゃ、得るものも考えも違ってくるけど
0444デフォルトの名無しさん
垢版 |
2018/03/23(金) 18:41:53.25ID:K8shiMoF
起動中の任意のウィンドウをクリックスルーさせるアプリを作りたいんですが開発言語は何がいいでしょうか?
C#で作れますか?
0445デフォルトの名無しさん
垢版 |
2018/03/23(金) 18:48:37.93ID:KCL7rjza
> クリックスルーとはウェブサイト上の広告をクリックすることによって広告主のコンテンツに移動することであり、
> ウェブサイトの広告効果を測る一つの尺度である。

残念ながら意味不明
0447デフォルトの名無しさん
垢版 |
2018/03/23(金) 19:16:54.09ID:K8shiMoF
言い方が悪かったですね
クリックスルーとは手前に表示されているウィンドウではなくその奥にクリックイベントを送ることです
私の作った造語です。
クリックをスルーさせる。なら分かったでしょうか?
0451デフォルトの名無しさん
垢版 |
2018/03/23(金) 19:41:03.71ID:K8shiMoF
関数も知らない初心者なのでよくわかりませんが、
ありがとうございます
頑張ってみます
0454デフォルトの名無しさん
垢版 |
2018/03/24(土) 02:01:16.50ID:eOg1kWoS
int[] ii = {1,2,3,4,5,6,7,8,9,10};
var i = ii.Where(x=>x>=11).FirstOrDefault();
Console.WriteLine(i);
こんな感じのことをしたいのですが、iに0が入っていたときに0が検索結果なのか?それともデフォルト値の0が返されたのか?を調べる方法ってないのでしょうか?
0457デフォルトの名無しさん
垢版 |
2018/03/24(土) 02:23:26.48ID:eOg1kWoS
>455
ありがとうございます
null許容型にしてしまう技は全然思いつきもしませんでした
0460デフォルトの名無しさん
垢版 |
2018/03/24(土) 11:02:27.65ID:nWAEGsYu
forでやればいいと思うけど一行で無理やりやるとしたら

var i = ii.ToList().FindIndex(x => x > 11);

で位置が取れる
見つからなかったら-1が帰る

値はii[i]

※これはLINQじゃない
0462デフォルトの名無しさん
垢版 |
2018/03/24(土) 11:54:28.18ID:I8UGP+gf
そういうラムダ式ってぶん回してるとGCガリガリしそうな気がする俺は素直にforで判定してる
0463デフォルトの名無しさん
垢版 |
2018/03/24(土) 12:07:26.69ID:Y8GXLzWd
GC大量発生しているじゃないか!とGen0と1の数字で大騒ぎしているお客さんみたいなこと言わないでよ
0466デフォルトの名無しさん
垢版 |
2018/03/24(土) 12:42:55.44ID:9NxgdLlD
Listの実装にもよるけどvector的ならインスタンス1つ増えるだけでしかも速やかに回収される
GCからみたらただの良い子だね
0470デフォルトの名無しさん
垢版 |
2018/03/24(土) 14:17:13.44ID:iw5iXVod
パフォーマンス追求するときは使わなきゃいいだけじゃん
何回目だよ
0472デフォルトの名無しさん
垢版 |
2018/03/24(土) 14:37:03.09ID:8uBzLhlU
>>470
だったら使うの止めてよ
パフォーマンスが要求されるところで使えないんでしょ
普通に組めばいい話じゃん
0473デフォルトの名無しさん
垢版 |
2018/03/24(土) 15:03:34.89ID:kwFJV00Z
コンパイラーによって最適化された結果リンクの方がパフォーマンスがいいときもある
勝手に使えないと決めつけるんじゃなくてちゃんと調べた方がいいよ
0475デフォルトの名無しさん
垢版 |
2018/03/24(土) 15:13:32.64ID:o+lnSplR
今回はLINQ関係ないだろ
Listのメソッド使ったんだから

ラムダが嫌ならPredicateのdelegate渡せばいい
0476デフォルトの名無しさん
垢版 |
2018/03/24(土) 15:52:30.11ID:kwFJV00Z
リンクだろうとラムダ式だろうとパフォーマンスは実際にやってみないとわからないってのが言いたかった
こんな所でボトルネックなんてでないから好きに書けばいいと思うけど
0477デフォルトの名無しさん
垢版 |
2018/03/24(土) 16:25:40.93ID:iw5iXVod
>>472
簡単だし楽だから使うよ
おまえは全部C++でやっとけよ
0478デフォルトの名無しさん
垢版 |
2018/03/24(土) 16:32:05.01ID:7/CvCtkV
どのくらいのパフォーマンスが必要なのかも分からないのにパフォーマンス必要だから止めろって奴何なの?
0482デフォルトの名無しさん
垢版 |
2018/03/24(土) 17:05:10.25ID:1VnhiIny
無駄というか作法的にイマイチ
IEnumerableは列挙するたびに結果が変わったり一度しか使えなかったりする実装もあり得るから、
終端操作を二度やるのは一般には良くないね
0483デフォルトの名無しさん
垢版 |
2018/03/24(土) 17:08:19.43ID:7/CvCtkV
>>479
何に対して何が遅いと言っている?

あと許容出来る遅さと許容出来ない遅さは区別することを前提でお願いね。
0486デフォルトの名無しさん
垢版 |
2018/03/24(土) 17:35:46.41ID:+6yqXiQK
>>485
本来同時に得られるはずの情報をわざわざ二度の処理で求めているからだろ
処理効率は別にしても、マルチスレッドとか考慮するとバグの元になる可能性もある
0487デフォルトの名無しさん
垢版 |
2018/03/24(土) 17:36:08.58ID:kwFJV00Z
anyで条件付きのループした後にfirstで同じことをするより、2回目は直接該当データを参照する方が早そうって感覚
0488デフォルトの名無しさん
垢版 |
2018/03/24(土) 17:42:42.62ID:1VnhiIny
列挙元の内容が変更されないことが保証されているのは列挙子が有効な間だけ(変更されたら列挙子が無効になる)
Anyの直後のFirstは新しい列挙子を使用して列挙をやり直すので、
前回から列挙元の内容が変更されていない保証は一般には無い
0490デフォルトの名無しさん
垢版 |
2018/03/24(土) 18:01:34.62ID:kwFJV00Z
>>488
anyは存在確認でfirstはデータ取得が目的だから順序が変わっても問題なし
むしろfindindexからインデクサでデータ取得する時の方が大事になってくるかな
だから、>>461はいいけど、>>460は少し危ない気がする
0491デフォルトの名無しさん
垢版 |
2018/03/24(土) 18:04:19.15ID:0F1bgfLW
いや正しくないってw
別のスレッドでコレクションが変更される可能性があるならそもそもLINQは使えない。

LINQのメソッドが返す列挙子はオリジナルのコレクションのコンポジションに過ぎないことを
忘れちゃダメよ
0492デフォルトの名無しさん
垢版 |
2018/03/24(土) 18:06:03.71ID:0F1bgfLW
>>490
問題あるとかないとか以前に、同じコレクションを2回スキャンするのは
無駄だなと思うことはプログラマの最低要件だと思う
0493デフォルトの名無しさん
垢版 |
2018/03/24(土) 18:13:37.30ID:kwFJV00Z
>>492
別にそこは否定してないんだけど
また、リストや配列のメソッドはスレッドセーフじゃなかったと思うからanyがとか以前にロックしなきゃ駄目かな
それはまた別の話だから別に触れないけど
0494デフォルトの名無しさん
垢版 |
2018/03/24(土) 18:14:09.89ID:9NxgdLlD
こんな場合には使えないんだ!←わかる
だから絶対にどんな場合にも使うな!←キチガイ
0495デフォルトの名無しさん
垢版 |
2018/03/24(土) 18:16:14.46ID:vYyJGm6o
>>486
うーん、考え方としては理解できるんだけど、
現実問題としてintみたいにdefault値に0を返す型の場合で
whereでフィルタした結果に要素があるかないかで処理を分けたいときにどうしてるの?

>>455みたくnull許容型にキャストするのは一案だけど読みやすさは低くなるよね
0499デフォルトの名無しさん
垢版 |
2018/03/24(土) 19:02:00.05ID:vYyJGm6o
>>496
例えば Where(…).DefaultIfEmpty(-1).First() みたいなこと?

>>497
それは遅延評価のメリットを完全につぶしてるよね
扱ってる型によってはcountでもO(1)で性能的な問題はない場合もあるだろうけど
0500デフォルトの名無しさん
垢版 |
2018/03/24(土) 19:29:35.04ID:RopZoVkn
>>499
> 例えば Where(…).DefaultIfEmpty(-1).First() みたいなこと?
そう。元のコレクションに -1 があったら使えないけど
0501デフォルトの名無しさん
垢版 |
2018/03/24(土) 20:06:30.63ID:WPuMsPfE
>>494
プログラマなんざ99%キチガイだから正しいだろ?
根拠あげろって?皆さんが根拠だろうにご冗談を
0502デフォルトの名無しさん
垢版 |
2018/03/24(土) 20:49:58.95ID:emfSYqOj
public static class MyLinqExtensions {
public static T? FirstOrNull<T>(this IEnumerable<T> s) where T : struct {
foreach (var i in s) return i;
return default(T?);
   // return s.Cast<T?>().FirstOrDefault();
}

public static void ForEach<T>(this IEnumerable<T> s, Action<T> a) {
foreach (var i in s) a(i);
}
}

class Program {
static void Main(string[] args) {
var s = new [] {7, 0, 1, 2, 13, 3, 4, 5};

var x = s.Where(i => i >= 11).FirstOrNull();
if (x != null) Console.WriteLine(x);

s.Where(i => i >= 11).Take(1).ForEach(Console.WriteLine);
}
}
0503デフォルトの名無しさん
垢版 |
2018/03/24(土) 22:39:25.79ID:eOg1kWoS
俺、そんな大ごとになるようなことを聞いちゃったのかな・・・・・
0504デフォルトの名無しさん
垢版 |
2018/03/24(土) 22:41:42.98ID:Y93sH5Wg
このスレはlinqを異常に嫌っているおじいちゃんが生息してるから注意してね
0506デフォルトの名無しさん
垢版 |
2018/03/24(土) 22:49:20.91ID:NMOsnRxi
WEBサイトのデータを取得するコードを書いているのですが
サーバのデータを書き換えて、クライアントからアクセスしても
キャッシュされた値が取得されてしまい困っています。

キャッシュポリシーというのでキャッシュしない設定が出来る様です。
以下コードを書きましたが、エラーが出てしまいます。

何が原因なのでしょうか?


using System.Net; //WebClient
using System.Net.Cache;

****************************************************

HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;

******************************************************

エラー
Error 8 The type or namespace name 'HttpRequestCachePolicy' could not be found (are you missing a using directive or an assembly reference?)
Error 11 The name 'request' does not exist in the current context
Error 10 The name 'HttpRequestCacheLevel' does not exist in the current context
0508デフォルトの名無しさん
垢版 |
2018/03/24(土) 23:01:20.44ID:NMOsnRxi
>>507



WebRequest req_1 = null;
req_1 = WebRequest.Create(str_url);
res = req_1.GetResponse();

でWEBサーバに設置したデータを取得しています。
0510デフォルトの名無しさん
垢版 |
2018/03/24(土) 23:04:36.74ID:NMOsnRxi
>>509
ありがとうございます。
凡ミスしてました!

using System.Net.Cache;

を別のソースファイルに書いてました、、、
0512デフォルトの名無しさん
垢版 |
2018/03/24(土) 23:11:22.61ID:NMOsnRxi
エラーは消えましたが、WEBサーバ上で書き換え前の値が取得されてしまいます。
うーん、キャッシュポリシーの設定はあっているはずなのですが。
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;
0513デフォルトの名無しさん
垢版 |
2018/03/24(土) 23:13:30.74ID:NMOsnRxi
>>511
今ナウいのは何に使うんですか?


WEBサーバ上にはというファイルをおいてます。
[ hoge_status.dat ]
1,aaa
2,bbb
3,ccc

そして、サーバ上で「2,bbb」→「2,babaa」に
書き換えて、クライアント(C#)から上のコードを実行した時に
「2,bbb」が取得されてしまいます。
0515デフォルトの名無しさん
垢版 |
2018/03/24(土) 23:24:46.34ID:NMOsnRxi
ありがとうございます。
サイトに記載の内容を参考に↓のコードを書きました。


namespace ns_test
{
public class c_udoxn
{
[DllImport("WinInet.dll", PreserveSig = true, SetLastError = true)]


Error 29 The type or namespace name 'DllImportAttribute' could not be found
(are you missing a using directive or an assembly reference?)

すると今度は、DllImportAttributeが見つからないというエラーがでます。
何か間違っていますか?
0521デフォルトの名無しさん
垢版 |
2018/03/25(日) 03:08:23.05ID:eoB6ZVmc
特定のクラスのインスタンスを探したり列挙したりすることって出来ないのでしょうか?

A a = A();//オブジェクトの生成をどこかに記録するとか面倒なこと無しに
A b = A();
A c = A();
FindObjects(A).ForEach(・・・・・);//雰囲気としてはこんなことがやりたいんです
0522デフォルトの名無しさん
垢版 |
2018/03/25(日) 03:09:02.83ID:eoB6ZVmc
嗚呼、今見たらnewが抜けてた・・・・
0523デフォルトの名無しさん
垢版 |
2018/03/25(日) 06:50:33.94ID:ODva5YKs
コンパイラの選択次第で出来上がりの性能でそんなに変わる?
0524デフォルトの名無しさん
垢版 |
2018/03/25(日) 07:44:12.53ID:iS73Z4MS
>>521
できない
お前が言ってるのを実現してしまったら、
var a = new Message(text: "うんこ");
a.Print(); //textに渡した内容を出力する
で一行目と二行目の間にaの内容が勝手に他所から書き換えられている可能性を常に考慮しないといけなくなるんだぞ?
初心者ならピンとこないかもしれないけどね
初心者がプログラミング言語を学ぶときは常に以下のように考えることが大切
・これを作った人は自分より遥かに頭が良く経験豊富である
・普通の方法でできないのは、それが悪いことだから
0525デフォルトの名無しさん
垢版 |
2018/03/25(日) 08:04:35.72ID:vPJlyNvz
>>521
コンストラクタでどこかに記録しときゃいいだけじゃね?
任意のクラスでやりたいならコンパイラに手を入れるなりしないと無理
0529デフォルトの名無しさん
垢版 |
2018/03/25(日) 10:37:55.50ID:5WPMat6H
>>521
class A{
 public static readonry List<A> allList = new List<A>();
 public A(){
  allList.Add(this);
 }
 public void Dispose(){
  allList.Remove(this);
 }

自分ならこうやってクラス内のstaticに入れておく
0530デフォルトの名無しさん
垢版 |
2018/03/25(日) 10:40:15.38ID:BGDDphgd
>>521
参照するだけなら自分に属しているフォームやクラスは列挙できるだろ
あとは名前で探せよ
0531デフォルトの名無しさん
垢版 |
2018/03/25(日) 10:54:23.63ID:5WPMat6H
明示的にDisposeを呼ぶのが面倒というなら、
リストに入れるのを弱参照にしてデストラクタを実装すれば全自動に出来るよ
0532デフォルトの名無しさん
垢版 |
2018/03/25(日) 10:57:31.10ID:BGDDphgd
>>531
探して代入したものでDisposeやCloseもできる。インスタンスの書き換えはできない
521が何のためにやりたいかによる
0533デフォルトの名無しさん
垢版 |
2018/03/25(日) 11:09:02.92ID:Ol/c1EKt
レガシーシステムで一番困るのはグローバル変数
これ以外は簡単にリファクタリング出来るがグローバル変数だけは簡単にはいかない
0534デフォルトの名無しさん
垢版 |
2018/03/25(日) 11:20:06.56ID:vPJlyNvz
普通の知能持ってたら>>529みたいにクラス内のスタティック変数でやると思う
グローバル連呼してる奴は知能足らなさすぎじゃね?
0536デフォルトの名無しさん
垢版 |
2018/03/25(日) 11:31:07.75ID:sIW0PrXb
>>534
ただ、
UnkoWorld-●UnkoArea-●Unko
みたいな関係にしたくなったとき
それでやってると
ウンコみたいにウンコウンコになるんちゃう?
0537デフォルトの名無しさん
垢版 |
2018/03/25(日) 11:34:42.78ID:Ol/c1EKt
>>534
パブリックなら同じ
最初に書くときにらくだからって堕落して思考停止してグローバルを使うと
だんだん考える力が衰えてこういう判断ができなくなる
0538デフォルトの名無しさん
垢版 |
2018/03/25(日) 11:40:28.11ID:Ol/c1EKt
パブリックスタティック書くお^q^
グローバル連呼は知能がたらないお^q^
ぼくはかしこいんだお^q^
おっおっ^q^


これがグローバル変数を使う人間の末路です
恐ろしですね
0539デフォルトの名無しさん
垢版 |
2018/03/25(日) 11:42:06.07ID:hyW7/lyL
末期やな>>538のグロ厨
0540デフォルトの名無しさん
垢版 |
2018/03/25(日) 11:42:40.12ID:sIW0PrXb
俺も一瞬いいかな?
とか思ったけどpublicにされた時点ですべてが駄目なことに気づいた
0541デフォルトの名無しさん
垢版 |
2018/03/25(日) 11:45:41.52ID:/CvrewET
具体的にどういうときにそうしたくなるか書いてあればヒントがでてくるかもしれないけど
一般的になんでもかんでもそうしたいと言うのはNGだと思う
0543デフォルトの名無しさん
垢版 |
2018/03/25(日) 11:58:50.34ID:/CvrewET
ローカルで使い捨て目的でAを作ったとしても
明示的にdisposeしないと消えない
c++のnew deleteのメモリリーク問題を回避するためにガベージコレクションの仕組みができたのに
また逆戻りするだけ
0544デフォルトの名無しさん
垢版 |
2018/03/25(日) 12:01:37.82ID:Ol/c1EKt
privateならOKってのも短絡的だよな
独立に生成したはずのオブジェクト同士が外から見えない部分で密かに連携し合っているとか破滅の臭いがプンプンするぜ
0547デフォルトの名無しさん
垢版 |
2018/03/25(日) 12:15:08.82ID:sIW0PrXb
>>546
多分仕様がウンコ
客と詰めきれてない
コードばっかり見てるとバカになるやつの典型
外の空気でも吸ってきたらよい
0548デフォルトの名無しさん
垢版 |
2018/03/25(日) 12:16:49.43ID:vPJlyNvz
>>546
えっ? w

まあパブリックにしても外部から書き換えられないなら大抵は問題ない
>>537とかはパブリックと言うだけで思考停止してる老害なんだろうな
0551デフォルトの名無しさん
垢版 |
2018/03/25(日) 12:26:42.83ID:eoB6ZVmc
そうか、>>521で書いちゃったのが実現できるようにすると、いつまでもインスタンスへの到達可能性が残ってGCが機能しなくなるのか
全然わからなかったわ
0553デフォルトの名無しさん
垢版 |
2018/03/25(日) 12:29:14.40ID:hyW7/lyL
>>551
ならんわw
0554デフォルトの名無しさん
垢版 |
2018/03/25(日) 12:42:56.52ID:PVODPgu2
いつもそうだけど、本質を少しも突かない頭の悪いやり取りしかないねw

論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
俺はないことはないと思う。

ただ、揚げ足取りかもしれんが、>>529はList<T>をそのまま公開してるのはまずい
0555デフォルトの名無しさん
垢版 |
2018/03/25(日) 13:09:44.61ID:5WPMat6H
>>554
実際やるときはさすがにprivateにしてstatic ForEachを実装するし、
ライブラリ化するならセーフティとしてリストをWeakReference<T>にしてデストラクタで自動削除するよ
ただ掲示板でそこまで長々と書く気はないだけで
0556デフォルトの名無しさん
垢版 |
2018/03/25(日) 13:13:01.00ID:Tb46nDVy
指定の時刻を過ぎたらbackgroundworkerを止める仕組みを作りたいのですが
なにかおすすめの方法はありますでしょうか?
0560デフォルトの名無しさん
垢版 |
2018/03/25(日) 14:09:46.22ID:5MzIJnBg
>>551
デストラクタでリストから外せばいいだけ
もしくはIDisposableにしてdispose( )で外すとかでもいい
0564デフォルトの名無しさん
垢版 |
2018/03/25(日) 15:29:41.34ID:Zk7ZAw6P
また元の質問者蚊帳の外に置いて盛り上がっている
オレオレ仕様で議論されても誰の役にも立たないんだよ
0568デフォルトの名無しさん
垢版 |
2018/03/25(日) 16:05:42.72ID:vPJlyNvz
グローバルガーでマウント取ろうとして失敗したID:Ol/c1EKtをそこまでバカにしてやるなよ w
0569デフォルトの名無しさん
垢版 |
2018/03/25(日) 16:28:46.20ID:n/bZLhLz
インスタンス生成と生成されたインスタンスをコレクションに追加するのは別のクラスの役割

>>521はコレクションの要素を型でフィルタリングできたらいいわけだから素直に実装したほうがいい
0570デフォルトの名無しさん
垢版 |
2018/03/25(日) 16:28:46.85ID:rmzLSBrs
よう分かりませんけど、このスレをプリントアウトして明日朝一番で精神科にかかることをお勧めします
このIDが僕です!って正直に言うんだよ
0572デフォルトの名無しさん
垢版 |
2018/03/25(日) 16:50:54.77ID:5WPMat6H
>>569
クラス単体で閉じてる機構をわざわざ外部に別けて何がしたいんだよ
メンテナンス性が下がるだけじゃん
0574デフォルトの名無しさん
垢版 |
2018/03/25(日) 16:57:56.62ID:sIW0PrXb
本来クラスAがクラスA足る為に必要な処理じゃないんだよ
リストに追加なんてのは
0575デフォルトの名無しさん
垢版 |
2018/03/25(日) 17:00:09.33ID:n/bZLhLz
>>571
>>572

きみたちマジか!!
オブジェクト指向設計原則の基礎だぞ
それを破るだけのメリットがあるユースケースなのかな?
0580デフォルトの名無しさん
垢版 |
2018/03/25(日) 17:37:41.15ID:+wly4/Cl
>>575
型として絶対使わない機能を分離してどうするの?
オブジェクト指向の目的もしかして理解してない?
0584デフォルトの名無しさん
垢版 |
2018/03/25(日) 17:49:26.15ID:+wly4/Cl
>>583
A.ForEachでアクセスする変数をA以外に持たせたら漏れなくグローバルになるけど、何を思ってAの外に出せと言ったの?
0590デフォルトの名無しさん
垢版 |
2018/03/25(日) 18:04:31.71ID:5WPMat6H
>>587
自身の生成したインスタンス一覧を保持するのはclass Aの基本要件だが、
何でお前はそれを無視してclass Aの仕様そのものを変えたがるんだよ
0592デフォルトの名無しさん
垢版 |
2018/03/25(日) 18:12:36.02ID:Vv01uOP7
初心者がマウントのために吠えあうスレになってんなw
>>521は作成したインスタンスをコレクションで持っていれば終わる話なのに
0596デフォルトの名無しさん
垢版 |
2018/03/25(日) 18:17:53.31ID:h+QwjUa5
たった数行のコードなりUMLなり書けば伝わる話なのに、
何十行も日本語書き連ねて言い訳してる時点で初心者以下だと思うのね

俺の考えた設計が最高と思うならC#で書けよ
書けないなら黙れ、素人
0598デフォルトの名無しさん
垢版 |
2018/03/25(日) 18:19:20.14ID:xrxDySNz
しょうもな
一般論を言えば>>587が正しいが、これでは質問者の要件は満たせない。

>587は必要があってシングルトンにしてるクラスについて、
そんなことしなくても使う側が一つのインスタンスだ作ればいいじゃないか、って言ってるのと同じ
0599デフォルトの名無しさん
垢版 |
2018/03/25(日) 18:23:46.34ID:sIW0PrXb
>しょうもな
>一般論を言えば>>587が正しい
ここで止めろよ
初心者の質問なんだからよ
正しいこと覆して話進める価値あるの?
0600デフォルトの名無しさん
垢版 |
2018/03/25(日) 19:06:07.44ID:vPJlyNvz
>>592
> >>521は作成したインスタンスをコレクションで持っていれば終わる話なのに
いや、そんなことはみんなわかっててそのコレクションをどこに置くんだって話
老害レベルの知ったかがグローバルとか口走ってごまかすのに必死になってるだけ w
0605デフォルトの名無しさん
垢版 |
2018/03/25(日) 21:08:37.79ID:ntckGCHi
Nugetでdll等をインストールする時にApp.configも一緒に差し替える事って可能なのでしょうか?
無理ならApp.configを書き換える手段を知りたいです

EntityFrameworkをインストールするとプロジェクトのApp.configも一緒に書き換えられてると思います
これと同じことがやりたいです
0606デフォルトの名無しさん
垢版 |
2018/03/25(日) 21:18:29.22ID:o6f1Dm/5
>>520
しらなんだー
使ってみます!


仕事でプログラム組んでた時にはいろいろと新技術を追いかけて勉強してたんだけど、
仕事じゃなくなるととりあえず、やりたい事を達成する為に
必要な機能をおいかける様になりますな。
0607デフォルトの名無しさん
垢版 |
2018/03/25(日) 23:07:48.90ID:30He22WI
引数ありで起動した場合はフォームを表示させずに処理させたいんだけど……?(°_ 。)?(。_ °)?
0609デフォルトの名無しさん
垢版 |
2018/03/25(日) 23:48:35.48ID:n/bZLhLz
>>576
>>580

あおりじゃなく君たちがマジだったってのはわかったよ
質問者が明示的に指定した要望を満たす事だけを考えてるから話が噛み合わなかったのね

指定されたwhatが正しい前提でhowを考えるか
正しくない可能性も考慮してwhyを含めて考えるか
視点の違い
0610デフォルトの名無しさん
垢版 |
2018/03/25(日) 23:59:44.77ID:fmRuNsvM
「○○なことがしたいんだけど…」

「その要望は正しくないから考えを改めるべきだ!」

正しくないからやらない
プログラマとは思えない凄い斬新な発想だな
0612デフォルトの名無しさん
垢版 |
2018/03/26(月) 00:11:47.31ID:YTVmG1TL
質問でも回答でもないレスは他でやれ
>>607
わかりやすい方法の一つ
Visual StudioでWindowsFormで作るとProgram.csが作られるから書き換える
static class Program
{
[STAThread]
static void Main(string[] args)
{
if (0 == args.Length)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
return;
}
//ここから下に引数があった時の処理
}
}
0616デフォルトの名無しさん
垢版 |
2018/03/26(月) 00:31:10.42ID:XKiwACKR
元請けだと実際>>610は普通にあるね
ほとんど全ての案件において、客の妄想のとおりに作るなんて不可能だし、できたとしても結果的に客の利益にならない
0618デフォルトの名無しさん
垢版 |
2018/03/26(月) 00:42:45.85ID:vpzWQp7E
またボケ老人同士のの繰り言合戦が始まった

繰り返すが、論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
恐らくないことはない。

一般論としては要件の合理性に疑問を持つことは悪くないが、
上記の通りこの件に関してはただの言い掛かり
0619デフォルトの名無しさん
垢版 |
2018/03/26(月) 00:50:14.64ID:Dv2PEULu
より素晴らしい設計が本当に頭に浮かんでるならそれを見せればいいのにね
何も開示しない、ただ頭ごなしに否定するだけなら、言っちゃなんだけど何も作れない素人の戯言だよね
0620デフォルトの名無しさん
垢版 |
2018/03/26(月) 02:26:07.62ID:wzFW36Lw
こういうコントロールの構造なんですが、Buttonがクリックされた時にTextBoxの文字を変更したいんですが、どうするのがベストでしょうか?
今は、Buttonから、ParentでFormまで辿って、そこからTextBoxまで辿り着いてるんですが、凄い非効率な気がします・・・

これと同じ構造のインスタンスが最大70個くらい出来ます。

Form - Panel1 - Panel2 - TextBox
    - Panel3 - Panel4 - TabControl - TabPage - Panel - Button
0621デフォルトの名無しさん
垢版 |
2018/03/26(月) 02:43:07.18ID:cavhWqCs
直接インスタンスを指定できないの?
private void Button_Click ( ... )
{
  this.HogeTextBox.Text = "hoge";
}
0622デフォルトの名無しさん
垢版 |
2018/03/26(月) 04:07:03.39ID:AffV6ek/
イベントメソッドの共通化や、自作のボタンクラスの話だったりといった特殊なことをしたいのかな?
普通は上にある通りクリックイベントでテキストボックスの値を変えるだけ70個ボタンがあるなら70個書けばいいだけなんだけど
0623デフォルトの名無しさん
垢版 |
2018/03/26(月) 07:56:24.40ID:M54ZFy+S
スタートボタンを押すとbackgroundworkerのwhileループを実行し、キャンセルボタンを押すと停止するプログラムを作りました

これを9時になると自動でスタートし、17時になると停止するプログラムにしたいのですがどうすればいいでしょうか?
自動停止時にはキャンセルボタンを押した時と違いそれ専用の処理を行いたいです。
0624デフォルトの名無しさん
垢版 |
2018/03/26(月) 08:10:40.35ID:DzDpiGFR
コントロールの種類・処理が異なるなら、
各コントロール毎に、イベントハンドラーを付ける

逆に、コントロールの種類・処理が同じなら、
各コントロールの親に、イベントハンドラーを付けて、親で処理する

同じような関数を、たくさん作るのは良くないから
0626デフォルトの名無しさん
垢版 |
2018/03/26(月) 12:37:28.74ID:KMiayiKp
どういった方法を使えばいいかすらわかりません
タスクスケジューラーはなしでやりたいです。
0627デフォルトの名無しさん
垢版 |
2018/03/26(月) 12:43:13.71ID:ErqiV+UW
自分で自分を起動するメタプログラムやね
0628デフォルトの名無しさん
垢版 |
2018/03/26(月) 12:49:56.47ID:ZELYO3P5
>>626
なんで?
それだともうサービスアプリみたいな方法しかないけど
苦労の割にタスクスケジューラと変わんないよ
0629デフォルトの名無しさん
垢版 |
2018/03/26(月) 12:54:28.04ID:4B0nX6es
>>623
タスクスケジューラなんて関係ないから騙されちゃダメwww

要は今はUIのボタンを押して人が手動で開始/停止してるのを
開始時刻/停止時刻で自動でやりたいってだけでしょ?

そんなのタイマでも使って時計をポーリングするだけ。
何が難しいのよ逆に
0631デフォルトの名無しさん
垢版 |
2018/03/26(月) 13:02:31.43ID:oo+qoL1t
何が難しいかと言えば、ボタンが有るだけに「閉じるボタン」押されてアプリが落ちる件
0633デフォルトの名無しさん
垢版 |
2018/03/26(月) 13:13:11.57ID:4B0nX6es
これ前も書いたけど、常駐なんて概念は20年以上前のシングルタスクのDOSの概念
今時何の意味ももたない

何が知ったかだよアホかほんと
0634デフォルトの名無しさん
垢版 |
2018/03/26(月) 13:17:42.44ID:xJxqYO19
マルチタスクで常駐が意味無いなんて初めて聞いたがどこ情報だよ
ソース出してみ?
0635デフォルトの名無しさん
垢版 |
2018/03/26(月) 13:18:39.78ID:4UQMW5SP
windowsで○○時にアプリを起動したいという目的に一番かなっているのはタスクスケジューラー
linuxでもcron使う局面

ずっと起動しっぱなしのアプリやサービスでポーリングやタイマー使うこともできるけど無駄
0637デフォルトの名無しさん
垢版 |
2018/03/26(月) 13:28:09.86ID:xpW3ZJwT
単に起動するだけならタスクスケジューラーでよいと思うのですが
時間が過ぎたら、それ専用の動きをして停止したいのです
なのでタスクスケジューラーでは難しいかなと
timerで検索したり、同じような悩みの質問を探してみると必ず「タスクスケジューラー!」という回答者がいるのですが、求めているのはそれではないんです!
0638デフォルトの名無しさん
垢版 |
2018/03/26(月) 13:29:55.97ID:4UQMW5SP
時間が過ぎたらってただ単にDatetime.Nowが指定した時間を経過したかどうか調べるだけだけど
0640デフォルトの名無しさん
垢版 |
2018/03/26(月) 13:32:01.24ID:4UQMW5SP
backgroundworkerのwhileループで指定された時間を超えてるか調べる
もし超えてたら何かをして終了
0642デフォルトの名無しさん
垢版 |
2018/03/26(月) 14:27:09.74ID:oo+qoL1t
>>632
ボタンが有るGUIのあるソフトなんだから、普通にユーザーがウインドウを閉じることを想定すべきだよ
対策は閉じるを無効にするとか、GUIと本体を分離するとか、ユーザー教育でなんとかするとか、パソコン自体をソレ専用にするとか
何処らへんで妥協するか考えないとな
0643デフォルトの名無しさん
垢版 |
2018/03/26(月) 14:47:34.51ID:PvcYNBhB
「大変!右上の×押したらプログラムが終了しちゃう!」

だから常駐化しろよって話だろ?
0644デフォルトの名無しさん
垢版 |
2018/03/26(月) 14:51:53.23ID:b4TsAUH3
それでいつ開始すんだ?
朝7:00に起動するとして
前日18:00に閉じて
朝8:00に開いたので起動
でおk?
0645デフォルトの名無しさん
垢版 |
2018/03/26(月) 14:55:32.88ID:EeYp3eGw
聞かれとこと答えずに必要のないこと聞き返したり聞かれていないこと回答する人たち
oo+qoL1t
b4TsAUH3
0647デフォルトの名無しさん
垢版 |
2018/03/26(月) 15:08:18.93ID:b4TsAUH3
職業柄すべてのケースをマトリックスで表現しないと組ませてもらえないから気になるんだよ
0648デフォルトの名無しさん
垢版 |
2018/03/26(月) 15:09:01.34ID:DzDpiGFR
ポーリングは、やったらダメなのが常識だろw
素人が助言してる

CPU が動き続ける。
CPU使用率が100% になって、フリーズするだけw
0649デフォルトの名無しさん
垢版 |
2018/03/26(月) 19:03:18.07ID:Hi5Z0lMV
>>648
1秒タイマーでもCPU負荷なんてゼロも同然だよ
まさかノーウェイト全力ループさせることしか思いつかないとか?
0650デフォルトの名無しさん
垢版 |
2018/03/26(月) 19:06:27.36ID:lrnbqywH
デスクトップアプリでAzureのデータベースと接続したいのですが、一般的に接続文字列等はどうやって隠蔽するんでしょうか

ハードコーディングしてもリバースエンジニアリングされたらモロバレになるので気になります
0653デフォルトの名無しさん
垢版 |
2018/03/26(月) 21:20:01.51ID:e5zVULSK
現在の日付時刻が設定した日付時刻より後か前か判断するにはどうしたらいいでしょうか?
datetime同士で引き算とかは可能なのですか?
0655デフォルトの名無しさん
垢版 |
2018/03/26(月) 21:52:26.85ID:e5zVULSK
ありがとう御座います
datetime同士の計算結果であるtimespanはtimespan>=0やtimespan<0で場合分けしても差し支えないのでしょうか
0658デフォルトの名無しさん
垢版 |
2018/03/26(月) 22:08:40.49ID:e5zVULSK
なるほど、datetimeで大小比較すればいいのですね
ありがとう御座います

msdn分かりにくくありませんか?
難しい(*_*)
0659デフォルトの名無しさん
垢版 |
2018/03/26(月) 22:18:02.65ID:AHHYeqDL
>>658
分かりにくいよね
俺も前からそー思ってけど言い出しにくかった
0662デフォルトの名無しさん
垢版 |
2018/03/26(月) 22:56:15.63ID:e5zVULSK
backgroundworker開始時に次の17時になるdatetimeを取得してループ開始、ループ毎に現在のdatetimeと設定のdatetimeを比較して過ぎていたら停止させようと思うのですが
次の17時のdatetimeを取得する方法はありますか?
0664デフォルトの名無しさん
垢版 |
2018/03/26(月) 23:48:44.24ID:lh4NSg1Q
>>662
datetimeそのものじゃなくても時間だけならHourを比較したらいいよ

var h=Datetime.Now.Hour;

if( h>=9 ){ ... } //9時以降なら
0666デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:02:34.95ID:RoQzbf+s
>>664
それがすごい気になるんですが
9時以降っていうのは何時までを指すのでしょうか?
極端な話次の日の8時とかになっても条件を満たしますか?
0668デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:06:43.46ID:1syCFnvF
どこ基準のUNIXTIMEか知らないけど1970年1月1日からの経過秒数だから
var origin =new DateTime(1970,1,1);
var unixtime=DateTime.Now-origin;

タイムゾーンは自分で好きなようにしてください

>>666
Hourはあくまでも時間の部分だけだから0時になったら満たさなくなる
条件はよく考えて自分で設定すること
0669デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:08:14.05ID:1syCFnvF
ああ抜けてる

var origin =new DateTime(1970,1,1);
var unixtime=( DateTime.Now-origin ).TotalSeconds;
0670デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:20:12.69ID:RoQzbf+s
なるほど、ではループが30分の場合
終了を23時50分に設定してしまうと止まらず動いたままになる可能性もあるということですね
0671デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:30:37.92ID:i+K8FLsM
>>662
var n = DateTime.Now; // 今
var s = n.Date.AddHours(17); // 今日の17時
var x = n < s ? s : s.AddDays(1); // 次の17時
while (DateTime.Now < x) {
// 次の17時まで何かする
}
0672デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:33:39.52ID:1syCFnvF
Datetimeのコンストラクタはいろいろなパターンがあるからどうとでも作れる
DatetimeはTimespanを足して新しいDatetimeもつくれるので

まあじっくり見て勉強することだな

終了条件をどのように設計してるのか知らないけど特定の日付の特定の時刻を設定してたら
途中で休止などして時刻を過ぎた後、再度復帰した場合すぐ終了してしまう
そして、指定時間以降だったらまたすぐ動くことになる

などどういうことを想定するよって何を選ぶかは変わる
0674デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:36:06.00ID:RoQzbf+s
>>671
これいいですね!
解決しそうです。ありがとうございます。
xの?や:の意味がわかりませんがとりあえずコピペします
ラムダ式みたいなものかな?
0680デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:46:08.70ID:1syCFnvF
16時59分スタートなら1分でストップ
17時00分ジャストなら次の日の17時まで24時間でストップ
0682デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:52:53.72ID:dhIDlkWy
終了を17時30分にしたい場合は以下のようなコードで大丈夫でしょうか?

var n = DateTime.Now; // 今
var s = n.Date.AddHours(17).AddMinutes(30); // 今日の17時30分
var x = n < s ? s : s.AddDays(1); // 次の17時30分
while (DateTime.Now < x) {
// 次の17時30分まで何かする
}
0683デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:54:52.06ID:dhIDlkWy
>>680
こんな感じでも特に問題はありません。
むしろわかりやすくて希望通りです。
0684デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:55:47.09ID:7SLvU9BO
DateTimeなんてめったに使わんけど、使ってみたら値型のくせにイミュータブルで
なんだか使いづらいね

// 時分秒が指定した値となる現在より後の直近の日時を返す
public static DateTime GetNextDateTimeFromNow(int hour, int min, int sec)
{
  var now = DateTime.Now;
  var next = new DateTime(now.Year, now.Month, now.Day, hour, min, sec);
  return next > now ? next : next.AddHours(24);
}
0692デフォルトの名無しさん
垢版 |
2018/03/27(火) 01:16:52.17ID:dhIDlkWy
とりあえずその時間帯ですが21時から5時までとかにも対応するようにしたいです。
とりあえず出来そうです助かりました。
0695デフォルトの名無しさん
垢版 |
2018/03/27(火) 01:20:41.65ID:rY6p5Eum
>>694
4.0はもうサポート対象外だし、Windows Server 2012も非対応なのに使わざるを得ないとか同情するわ
0696デフォルトの名無しさん
垢版 |
2018/03/27(火) 01:24:49.59ID:t3gWSj15
>>692
最大実行時間は何時間なん?
21時〜3日後の21時までなんて可能性は排除できるん?
平日と休日とで違いはないん?
とかね
なんか仕様がモヤっとしてんじゃん
0697デフォルトの名無しさん
垢版 |
2018/03/27(火) 01:30:08.36ID:dhIDlkWy
>>696
だいたい8から13時間程度の稼動になります!
0698デフォルトの名無しさん
垢版 |
2018/03/27(火) 01:30:24.22ID:ff4RZBmU
4.X系ならアップグレードのコストはそんなにかからないだろうに
お前が変えさせるか、辞めちまえ
0702デフォルトの名無しさん
垢版 |
2018/03/27(火) 04:03:08.18ID:E80vD2cb
task.delay(100)とTheading.sleep(100)ってどう違うの?
0706デフォルトの名無しさん
垢版 |
2018/03/27(火) 09:39:14.11ID:kmAPzdoZ
>>702
Thread.Sleepは指定した時間自分のスレッドを停止する
Task.Delayは「指定した時間停止するスレッド」を生成する
Task.Delayは単独では意味がないのでawaitなりContinueWithなりする
0707デフォルトの名無しさん
垢版 |
2018/03/27(火) 09:48:09.70ID:rY6p5Eum
async/awaitの勉強しているんだが、async voidやasync Taskのメソッドをawait無しで呼び出したらそのメソッドの処理は投げっぱなしになるの?
0709デフォルトの名無しさん
垢版 |
2018/03/27(火) 12:21:35.26ID:7OwU1Hvz
そもそも、MS が、50ms 以上掛かる処理は、同期処理するなって言ってるだろ。
非同期処理にして、callback してもらうようにって

「ポーリング」で検索して、色々な記事を読め
0710デフォルトの名無しさん
垢版 |
2018/03/27(火) 12:28:13.60ID:xeybzECW
何がそもそもなんだw
>>709の世界ではDateTimeの比較演算に50msもかかるのかw
30年前のPC-98だってそんなにかからないと思うけどww

ネタなのかマジなのか知らんけど、そもそもHW資源を直接触れないOS上で動くコードは
一件コールバックのように見える処理も実態はポーリング

単にそれがシステム側のコードに隠蔽されてるだけ
0713デフォルトの名無しさん
垢版 |
2018/03/27(火) 12:39:38.04ID:nnyxYnJQ
元々タスクスケジューラで十分な話をよくもここまで長々と続けられるな
0715デフォルトの名無しさん
垢版 |
2018/03/27(火) 13:12:24.26ID:8gmuwQWV
仮にオレがこのソフトを作るとしたら、NotifyIconのデザインで小一時間悩むところから始まるだろうね
0716デフォルトの名無しさん
垢版 |
2018/03/27(火) 13:45:19.52ID:7OwU1Hvz
何時間も待つ処理だろ。
50ms を超えてるから、非同期処理を使えって、MS が言ってる

自分でプログラミングで、ポーリングしたらダメ

OS の内部処理とは関係ない
0718デフォルトの名無しさん
垢版 |
2018/03/27(火) 14:12:37.92ID:9YSJ28+H
指定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?

c:\test

aaa.txt
bbb.txt
ccc.txt
...etc

指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。

アンパンマン → バイキンマン

といった具合です。
0720デフォルトの名無しさん
垢版 |
2018/03/27(火) 14:35:31.77ID:ClOSXPHI
1秒タイマーでタイムアウトするたびに目的の時刻を越えたか
調べるだけでいいじゃないの
違ったら即抜けるだけなのに、50msも掛かる処理じゃねーよ
なんでわざわざタスクスケジューラー使わにゃならんのだ
0722デフォルトの名無しさん
垢版 |
2018/03/27(火) 18:28:00.64ID:84JRCCml
コミュ障は病気だからやむを得ないが
読解力は人並みに身につけてから書き込んで欲しいよなw
0723デフォルトの名無しさん
垢版 |
2018/03/27(火) 19:38:51.59ID:8gmuwQWV
タイマーのインターバルは10秒とか100秒だけじゃなくて、10年でも100年でも設定できるんだから
起動時に開始と停止までの時間を計算してタイマー設定すれば
ポーリングしなくても良いんじゃね?
0724デフォルトの名無しさん
垢版 |
2018/03/27(火) 19:41:02.82ID:RNGaKb4X
>>723
時刻合わせせずPCの時計を常に基準にするのか
というか仕様や設計の話は他でやってくれないかな
0728デフォルトの名無しさん
垢版 |
2018/03/27(火) 20:36:49.79ID:D1lCzr9q
初心者の陥りがちなミス

Timeの精度を信用してしまう
途中で時刻修正の入る場合などを考慮しない
0729デフォルトの名無しさん
垢版 |
2018/03/27(火) 20:40:14.18ID:8gmuwQWV
>>724
今のPCはネットに繋がっていれば時間は自動で合わせてくれる
インターネットに繋がっていない前提ですか?
0733デフォルトの名無しさん
垢版 |
2018/03/27(火) 20:58:54.08ID:FNmJga7y
こういうインフラの煩わしい制約からコアになる処理を分離したい
ワーカー側は終了再開するためのapiを用意して時間や終了再開するタイミングの事は一切考えない
時間を管理するクラスが適切なタイミングでそれらのapiを実行する

というのが正解な
時間管理クラスが内部でループぶん回そうがシステムコール使おうがそれはどうでもいい
0735デフォルトの名無しさん
垢版 |
2018/03/27(火) 21:12:23.97ID:9YSJ28+H
指定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?

c:\test

aaa.txt
bbb.txt
ccc.txt
...etc

指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。

アンパンマン → バイキンマン

といった具合です。
0737デフォルトの名無しさん
垢版 |
2018/03/27(火) 21:14:46.44ID:1tsj2UvO
>>701
callbackはどんな条件のものをどうやって作るんだ
>>729
時刻合わせのタイミングでインターバル補正するコードは思いつかないな
時間定期的にcheckするだけのものをどこまで難しくする気だコイツら
0738デフォルトの名無しさん
垢版 |
2018/03/27(火) 21:22:44.33ID:rY6p5Eum
>>737
お仕事でなんでこの仕様からこんな糞コードが生まれるんだろと不思議に思うことあるけど、このスレの流れ見たらある意味納得だわ
0739デフォルトの名無しさん
垢版 |
2018/03/27(火) 21:23:33.47ID:8gmuwQWV
>>737
1秒ポーリングでも最大1秒弱の誤差が出るわけだが、内蔵時計ってそこまで精度悪いの?
実用上問題ない誤差に見えるがちょっと気にしすぎじゃね?
0743デフォルトの名無しさん
垢版 |
2018/03/27(火) 22:08:17.45ID:t3gWSj15
1秒ポーリングでやろうぜ

現在時刻が開始〜終了時刻の範囲
 起動Flagなし
  起動処理
  起動Flag立てる
現在時刻が開始〜終了時刻の範囲外
 起動Flagあり
  終了処理
  起動Flag下ろす

(*゚∀゚)bできた!
0745デフォルトの名無しさん
垢版 |
2018/03/27(火) 23:11:24.08ID:a4CYTpTn
持ってるけど少し勉強すれば誰でも取れる資格に意味なんてあるの?
精々資格手当で給料が5000円プラスされる程度の価値しかないぞ
0748デフォルトの名無しさん
垢版 |
2018/03/27(火) 23:34:25.90ID:zFrY2ZyB
5,000円も上乗せとかウラヤマ過ぎだろ
うちなんて高度取っても報償金30,000円だけ
基本や応用ではなにもでない
0749デフォルトの名無しさん
垢版 |
2018/03/27(火) 23:42:52.53ID:7OwU1Hvz
10年以上やってる奴でも、基本情報技術者は取れない

大卒の新米が、こんなの簡単に取れますよねって言ったら、
中堅社員は皆、新米をにらみつけていたw

企業の資格取得率は、年1%(100人中1人)ぐらいだろ。
10年いても、9割の社員は、資格を取れない
0750デフォルトの名無しさん
垢版 |
2018/03/27(火) 23:53:23.07ID:FNmJga7y
申し込みしたけど忙しくて受験できない人は沢山居るけど受験して落ちる人はいない
0751デフォルトの名無しさん
垢版 |
2018/03/27(火) 23:53:50.72ID:3aWOhLkC
俺は応用情報まで持ってて+1万だなー

>10年以上やってる奴でも、基本情報技術者は取れない
……冗談だろ?
0752デフォルトの名無しさん
垢版 |
2018/03/27(火) 23:58:15.55ID:3aWOhLkC
さておき、建築士だの医師だの弁護士だのみたいに
「この職務に就くには、○○の資格が必要」とかいう業界じゃないんで
本当に、ただ給料が増えるだけではあるな (採用試験でもまあ有利にはなるかもしれん)

増えたら増えただけ嬉しいもんではあるが
年間で+12万なら、家電の買い替え費用くらい楽に捻出出来るし
0753デフォルトの名無しさん
垢版 |
2018/03/27(火) 23:58:26.75ID:9YSJ28+H
定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?

c:\test

aaa.txt
bbb.txt
ccc.txt
...etc

指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。

アンパンマン → バイキンマン

といった具合です。
0755デフォルトの名無しさん
垢版 |
2018/03/28(水) 00:09:13.46ID:pf/Jvdmo
>>752
普通は資格手当ては基礎賃金扱いだからボーナスや残業計算対象でもっと貰えるよ
基本情報で5000は羨ましいけど資格手当て込みのベースにしてるパターンもあるから一概にいいとはいえないかもね
0756デフォルトの名無しさん
垢版 |
2018/03/28(水) 00:16:20.41ID:0was1dJs
Ruby の、Dir.glob で書ける

Dir.glob('C:/test/*.txt') do |file|
# gsub(/アンパンマン/, 'バイキンマン')で全部を置換する
end
0762デフォルトの名無しさん
垢版 |
2018/03/28(水) 22:10:34.35ID:LHMXaAz3
public Pixel(IList<byte> data, int index)
{
B = data[0];
G = data[1];
R = data[2];
Index = index;
}

var list = new List<(int x, int y)>();

// 何故か背景色がFFA07A固定なのでそれ使って適当に
list.AddRange(pixels.Where(x =>
Math.Abs(x.R - 0xFF) < 5 &&
Math.Abs(x.G - 0xA0) < 5 &&
Math.Abs(x.B - 0x7A) < 5
).Select(x => (x.Index % width, x.Index / width)));


ビットマップをPixelクラスに読み込んで特定の色(FFA07A)のピクセルを検出しているのですが
         (x.R - 0xFF) < 5
ここのRGBから16進数をマイナスして5未満の意味がわからないのですが
なぜこんな計算をしているのでしょうか?
0768デフォルトの名無しさん
垢版 |
2018/03/29(木) 00:01:16.76ID:LDL0rnP5
>>762
その前にMath.Absが付いとるじゃろ
目的の値との差をとって、その絶対値が5未満
つまり、ぴったり一致しなくても±4までの誤差ならOKとしている
0769762
垢版 |
2018/03/29(木) 00:10:37.10ID:3/dH7jim
>>768
なるほど!誤差の為ですか
ちょっとした技を使ってたんですね
ありがとうございました。
0770デフォルトの名無しさん
垢版 |
2018/03/29(木) 12:17:07.66ID:48quLBzg
質問です。よろしくお願いします。
ttps://tb.click-sec.com/fx/historical/historicalDataDownload.do?y=2018&m=01&c=21&n=USDJPY
をブラウザで開くとzipファイルのDLが始まるので、これをC#でDLしようと思ったのですが、
このURLのままだとSystem.Net.WebClient.FileDownloadでもWebBrowserコントロールで開いてもzipファイルのDLができません。
どうすればいいのでしょうか。 👀
Rock54: Caution(BBR-MD5:8e40a50a3146c71e5aa506574dbd07bd)
0772770
垢版 |
2018/03/29(木) 12:50:22.61ID:48quLBzg
IEに開かせればできるかもと思ったのでやってみます。
0773デフォルトの名無しさん
垢版 |
2018/03/29(木) 14:42:04.00ID:fRxUhejE
すまんが、イベントハンドラーを空っぽにするのってどうやんの?
0774デフォルトの名無しさん
垢版 |
2018/03/29(木) 15:00:44.15ID:mcXZqOx8
nullから空っぽのラムダ式を入れる
もしそのイベントを持つクラスの外からやりたいと言ってるならそれは無理
無理と言うより、そんなことをしたいと思うこと自体が間違ってる
0776デフォルトの名無しさん
垢版 |
2018/03/30(金) 11:54:45.53ID:LK6mi3V8
ユニットテストについて質問
例えば計算クラスのテストをするときは

[TestCase(-2, 2)]
public void AbsTest(int a, b){
 int n = Math.Abs(a);
 Assert.AreEqual(n, b);

こういう風に正しい値を予め手計算で用意しておくものなの?
0777デフォルトの名無しさん
垢版 |
2018/03/30(金) 12:24:31.95ID:Aig7x3ki
>>776
一般的にはその通り
間違っても n = a < 0 ? -a : a とかやってはいけない
ちょっと考えたら分かると思うけど、そういうのは全く意味のないオレオレテスト
手計算がどうしても困難なら、デバッガで動かしてその結果が合ってるかを検証してその値をコピペしとけ
少なくとも意図しないデグレの検出には役立つ
0778デフォルトの名無しさん
垢版 |
2018/03/30(金) 12:34:29.62ID:LK6mi3V8
>>777
ありがとう!
チェック項目が増えると引数が酷いことになるから何か間違えてるのかと思ってた
0779デフォルトの名無しさん
垢版 |
2018/03/30(金) 12:46:02.45ID:Aig7x3ki
>>778
それはテストの観点を適切に直行化できてないんじゃないか?
引数xが3以上のとき結果は必ず負になることが期待されるとしたら、
テストは3と3を超える値を引数に入れて、それぞれの結果yについて y < 0 が真となることを確認すればいいんだぞ
何を確かめたいのかを明確にしてそれをそのままコードで書くんだよ
0780デフォルトの名無しさん
垢版 |
2018/03/30(金) 14:10:01.41ID:tnFi4c/U
LinqのJoinメソッドに渡すメソッドなんだけど、ラムダ式で書く方法が全然理解できないぜ・・・・
多分、掲示板で解説するのも難しいと思うので、やさしく解説してるページやら本やらがあったら教えて!!!
0781デフォルトの名無しさん
垢版 |
2018/03/30(金) 14:45:38.48ID:L1eApEVG
>>780
どれがわかりやすいかなんて人それぞれだから宛にならないよ
ラムダ式でぐぐって良さそうなら熟読してわからない所を質問するといい
0782デフォルトの名無しさん
垢版 |
2018/03/30(金) 14:48:53.79ID:CpZcazmB
ラムダ式とか正規表現とか、記憶してるやついないから大丈夫
毎回ググればいい
0783デフォルトの名無しさん
垢版 |
2018/03/30(金) 15:28:55.57ID:87KFZNYL
ラムダ式って、無名関数の構文糖だろ

func (引数1, 引数2) => 戻り値

(a, b) => result
0784デフォルトの名無しさん
垢版 |
2018/03/30(金) 16:00:30.28ID:BIk3pBCX
λを採用した祖の言語LISPなんてわざわざ(lambda〜)と毎回書いてるのに変な略称=>なんて許されんばい
λと書きんしゃい
0789デフォルトの名無しさん
垢版 |
2018/03/30(金) 18:25:17.02ID:QYlpMr10
質問失礼します。
以下のようなプログラムを書いたところコメントに書いたようなメッセージが表示されますが、
このメッセージに従ってインライン化しようにも、どのように修正すれば良いか分かりません。
これはIDEのバグだと思って無視しても良いものなのでしょうか。

インライン化の有無は可読性だけの問題でパフォーマンスなどに影響はないのだと思いますが、
このようなメッセージが表示されたままプログラムを完成とするのはあまり気分がよくありません。
プログラムの修正方法や、このようなメッセージに対する考え方など、
分かることがあれば教えていただけないでしょうか。よろしくお願いします。

static void Main(string[] args)
{
void getMessage1(out string _message) => _message = "x is 1.";
void getMessage2(out string _message) => _message = "x is not 1.";

int x = 1;
string message; // IDE0018 変数の宣言をインライン化できます
if (x == 1)
{
getMessage1(out message);
}
else
{
getMessage2(out message);
}

Console.WriteLine(message);
}
0790デフォルトの名無しさん
垢版 |
2018/03/30(金) 18:42:11.73ID:q+LDJ3nt
そんなもん買っても十中八九忘れる
基本ネットに転がってるコピペで食いつなぐのが一流
0792デフォルトの名無しさん
垢版 |
2018/03/30(金) 18:49:12.82ID:+cAt7TAV
>>789
"IDE0018"でググったら一発で解説が見つかるんだけどw
何でその長文タイプうする前に検索しないのよw
そこが分からん
0795デフォルトの名無しさん
垢版 |
2018/03/30(金) 18:59:03.69ID:LI6oPksr
普通に考えるとスコープから外れるからインライン化できないはずなのにインライン化を進めてくるってことでそ
0796789
垢版 |
2018/03/30(金) 19:11:19.76ID:QYlpMr10
早速たくさんのレスありがとうございます。
お返事に少し時間がかかってしまいそうなので、上から順に書き込みたいと思います。
お待たせしてしまって申し訳ありません。

>>791
レスどうもありがとうございます。
色々なクラスで定義されているTryParseやIDictionaryのTryGetValueは
使いやすいと感じていて、それを参考に定義したメソッドをifの内側で使おうとしたのが
>789のようなプログラムを書いた経緯です。
しかし確かに複数の情報を返却したければそれ用のクラスを定義すれば良いことですし、
C#7ではタプルも構文化されているので、もはやoutは時代遅れということでしょうか。
C#にはいくつか負の遺産もあるということなので、その辺りについても勉強したいと思います。
0797789
垢版 |
2018/03/30(金) 19:21:12.54ID:QYlpMr10
>>792
説明が不十分で申し訳ありません。
>>795の方が分かりやすく説明してくださっているので蛇足になってしまうかも知れませんが、
私が検索した範囲では、
string message;
getMessage1(out message);

getMessage1(out string message);
に直せば良いということは分かったものの、変数の定義と関数の呼び出しとの間に
(今回の例のifのような)別のコードがあって、それが移動できないように見えても
メッセージが表示されてしまう場合があるということです。

ただ、「移動できないように見える」という部分に自信がなかったのと、
仮にそれが正しかったとしてもこのようなメッセージをどの様に受け止めれば良いのかが
よく分からなかったので質問させていただきました。
0798789
垢版 |
2018/03/30(金) 19:31:31.59ID:QYlpMr10
>>793
IDEがなんと言ってきているのか、とういことでしょうか。
サンプルコードを空行も含めて上から数えて7行目のコメント文なのですが、
「IDE0018 変数の宣言をインライン化できます」というメッセージが表示されます。

それとも、私がどのようなお返事を期待しているかとういことであれば、
このメッセージに対処するためのプログラムの修正方法や、
このようなメッセージに対する考え方などを教えていただけないかと考えています。
しかし、私の期待していること自体が見当はずれということもあると思うので、
それ以外でも何か気がつくことがあれば教えていただけると嬉しいです。
0801789
垢版 |
2018/03/30(金) 20:00:44.22ID:QYlpMr10
>>794
早速検証までしていただいてどうもありがとうございます。
また、本来書くべきC#のバージョンが抜けてしまっていて申し訳ありません。

>>789
を始めに確認したときのターゲットフレームワークは4.6.2だったので、
以下の対応表によればC#のバージョンは6.0ということになるのでしょうか。
https://qiita.com/nskydiving/items/3af8bab5a0a63ccb9893

しかし、その後ターゲットフレームワークを4.7.1や3.5に変更して試してみても
やはり同じメッセージが表示されました。

あと、これも後出しになってしまって申し訳ないのですが、
あからさまな構文エラーと違ってこのメッセージはコンパイルするまで表示されないようです。

IDEはVisual Studio 2017を使用していて、OSはWindows 10 Pro 64 bitです。
他に何かお伝えすべきことがあれば教えていただけると嬉しく思います。

よろしくおねがいします。
0802789
垢版 |
2018/03/30(金) 20:06:29.84ID:QYlpMr10
>>795
分かりやすく補足していただいてどうもありがとうございます。
C#のバージョンについてもそうですが、正確にお伝えするための情報の確認が不十分でした。
これはプログラミング以前の問題だと思うので気をつけていきたいと思います。申し訳ありません。
0803789
垢版 |
2018/03/30(金) 20:18:53.64ID:QYlpMr10
>>799
アドバイスどうもありがとうございます。一日程度このスレッドを拝見してみて、
私の勘違いという証拠が見つからなければマイクロソフトに報告してみようと思います。

報告する場合、Visual Studio の
「ヘルプ(H)>フィードバックの送信(F)>問題点の報告(P)」を利用しようと考えていますが、
もし他におすすめの連絡先などがあれば教えていただけると嬉しく思います。
0804デフォルトの名無しさん
垢版 |
2018/03/30(金) 20:21:01.69ID:keCNvJ3G
つまりこう書けるよってことじゃないの?

if(x == 1) getMessage1(out string message);
else getMessage2(out string message);
0806789
垢版 |
2018/03/30(金) 20:32:11.02ID:QYlpMr10
>>800
おっしゃる通りで、大変失礼いたしました。申し訳ありません。
>>801と内容が一部重複してしまいますが、これまでの内容を改めて整理したいと思います。
(これまでいただいたレスの表現を一部お借りしています)

問題の概要:
関数のout引数に関して、スコープから外れるためインライン化できないと思われる場面で
インライン化を推奨するメッセージが表示されることがある

問題を再現するコード及びメッセージの内容:
>>789

問題が再現する環境:
Windows 10 Pro 64bit
Visual Studio 2017
ターゲットフレームワーク:3.5/4.6.2/4.7.1 で確認

備考:
コードのコンパイル後にメッセージを確認

以上です。他に何か書くべきことがあれば教えていただけると嬉しいです。
どうぞよろしくお願いいたします。
0807デフォルトの名無しさん
垢版 |
2018/03/30(金) 20:37:12.26ID:+cAt7TAV
>>803
何でそうなるw
だから、まずググろうよ"IDE0018"で

そうすればこれはC#7の追加機能に起因する警告であり、不具合ではないとすぐに分かる。
何でそんな長文タイプする手間は惜しまないのにちょっと検索する手間は惜しむのよw
意味が分からん

ちなみに、この警告を無視するにはこうするんだってさ
https://developercommunity.visualstudio.com/content/problem/159716/is-there-a-way-to-disable-ide0018-globally.html
これもググってれあばすぐに自分で見つけられてるはず
0808デフォルトの名無しさん
垢版 |
2018/03/30(金) 20:40:09.19ID:keCNvJ3G
一行ならブロックスコープ外せるから>>804だと思うんだけど自分の6.0環境では試せなくて悲しい
0809デフォルトの名無しさん
垢版 |
2018/03/30(金) 20:59:52.66ID:keCNvJ3G
ごめん、無理だね
ブロック外してもスコープはローカルになっちゃうみたい
0810789
垢版 |
2018/03/30(金) 21:13:54.63ID:QYlpMr10
>>804>>808>>809
修正方法のご提示とご検証どうもありがとうございます。問題は>>809にお書きいただいたとおりです。

ただ、お書きいただいた通り問題はスコープにありますので、
Console.WriteLine(message);をifとelseの両方の中に書けばこの問題は起こりません。
この程度の内容を2回書くことは大した問題になりませんし、
この部分に対応するコードが長くなってしまった場合もメソッドとして切り出せば同じことですので、
いただいたレスを読みながら、>>789のようなプログラムを書くこと自体が筋が悪くて、
やはり>>804に適合するプログラムになるよう全体を修正するべきなのかなとも考えました。
ただ、メソッドとして切り出す方法であらゆる状況に対応できるかどうか自信がないので、
いずれにしても確信は持てていない状況です。
0813デフォルトの名無しさん
垢版 |
2018/03/30(金) 21:28:28.22ID:+cAt7TAV
>>811
トンチンカンでもおじいちゃんでもないからw
こんなググればすぐに理由も対処法もわかる話でMSにクレーム付けたら
質問者が恥をかくだけ
0815デフォルトの名無しさん
垢版 |
2018/03/30(金) 21:30:33.31ID:roepBgfb
>>813
じゃ、どうしろって書いてあんの?
リンクのどこ見ればいいかわかんないよ
対象のコード貼ってくれ
0817デフォルトの名無しさん
垢版 |
2018/03/30(金) 21:31:54.48ID:DYwliZHB
おじいちゃんに触れても無駄だよ
いつまでも間違いに気づいてないしレスも読んでないから
0821デフォルトの名無しさん
垢版 |
2018/03/30(金) 21:35:21.33ID:DYwliZHB
>>819
おじいちゃんはまだ何が起こってると言う話なのか判ってないからレスしても無駄
スコープもわからないから
0824デフォルトの名無しさん
垢版 |
2018/03/30(金) 21:37:22.84ID:MnRWcQoL
>>810
Visual Studio のバグでしょ
とりあえず頓珍漢野郎の>>807のリンク先に抑止方法書いてあるからそれでしのげばいいかと
0825デフォルトの名無しさん
垢版 |
2018/03/30(金) 21:38:22.07ID:+cAt7TAV
っていうか、>>789みたいなコードが警告されるのはむしろ当たり前。
outの変数を使いまわしするなんてよい作法とは言えないからだ
0829デフォルトの名無しさん
垢版 |
2018/03/30(金) 21:41:07.53ID:+cAt7TAV
しかし、バグバグいってる連中はちゃんとググって解説記事読んでるのかねw
こんなのが同僚だったら張り倒すよw
0832789
垢版 |
2018/03/30(金) 21:45:40.64ID:QYlpMr10
>>805
参考ページのご紹介どうもありがとうございます。
このページは拝見したのですが、問題の解決に至る道筋を見つけることができませんでした。
(確認したページのうち主要なものはあらかじめお伝えしておくべきだったかもしれません。
 申し訳ありません。)

質問させていただいている身でこのようなことをお願いするのは大変心苦しいのですが、
もしお時間に余裕がありましたら具体的な修正方法のご説明をお願いすることはできませんでしょうか。
ご説明の中で私の疑問を理解していただければ幸いですし、
いただいたご説明で問題が解決できれば願ってもないことです。

煽るような文章で答えを引き出すような形になってしまい大変申し訳ありませんが、
私の説明能力の無さゆえの苦肉の策ということで、どうぞ失礼をお許しください。
0834デフォルトの名無しさん
垢版 |
2018/03/30(金) 21:49:29.47ID:DYwliZHB
>>832
とりあえず別のことに時間使ったほうがいいよ
ひまーな時に思い出して修正されたか確かめるといい

うちじゃ全然再現されないからどうしようもない
0835789
垢版 |
2018/03/30(金) 22:03:34.15ID:QYlpMr10
ID:+cAt7TAV 様
警告の抑制方法についてご案内いただきどうもありがとうございます。
他に解決策が見つからなければマイクロソフトに問題を報告し、
マイクロソフトに修正していただけるまで教えていただいた方法で警告を抑制したいと思います。

ただ、他の方にいただいたレスも拝見し、やはり私としてはこのメッセージが適切であるとは確信できずにいます。
もしお時間に余裕がありましたら、>>832のお願いを ID:+cAt7TAV 様にもさせていただけないでしょうか。
お願いの方法も内容も大変失礼なもので申し訳ないのですが、どうぞお許しください。
0836デフォルトの名無しさん
垢版 |
2018/03/30(金) 22:06:55.10ID:+cAt7TAV
まあ質問者がここのお馬鹿さんを代表してMSに質問してみたらいいと思う。
恥をかくのも勉強のうちかも

個人的にはちょっと調べてちょっと自分の頭で考えれば分かるはずのことを理解しようとせず、
「このバグどうなってんだコラー」なんて突撃するのは愚の骨頂にしか思えんけど

つーか、ちょっと考えれば、この警告は余計なお世話のように思えて
一定の合理性があることぐらいすぐ分かると思うんだけど、ガチで分からない奴もいるんだね世の中には
0837デフォルトの名無しさん
垢版 |
2018/03/30(金) 22:10:00.19ID:+cAt7TAV
>>835
だから、警告の意図はout変数を値を戻す以上の目的で使うのはよい作法じゃないよ、
ってことでしょう。

外側のブロックでも値を使いたいなら別の変数にコピーしてねと
0839789
垢版 |
2018/03/30(金) 22:22:13.29ID:QYlpMr10
たくさんご反応をいただきどうもありがとうございます。
とても勉強させていただいています。
お返事が遅くなってしまい申し訳ありません。

予想以上のレスの多さでこの話題に触れてくださった方すべてにお返事するのが難しくなってきましたので、
大変勝手ながら、これ以降、直接私の書き込みにアンカーを付けてくださった方と
特に教えていただきたいことがある方へのメッセージのみ書き込みたいと思います。どうぞよろしくお願いします。

>>825
皆さんのお話を聞いて、コードの無作法が警告メッセージの直接または間接的な原因なのではということを
かなり感じてきました。ただ、作法に関する私の理解が不十分でどうにも宙に浮いたような感覚なのです。
もしよろしければ、>>810考えについてコメントなどをいただくことはできないでしょうか。よろしくお願いいたします。
0842789
垢版 |
2018/03/30(金) 22:32:45.82ID:QYlpMr10
>>824
レスどうもありがとうございます。
やはりバグと考えるのが妥当なのかなという気持ちが強くなってきました。

これだけたくさんのレスをいただき、バグであろうというご意見もいただいているので
もうマイクロソフトに報告を出してしまってもいいかなという気もしているのですが、
一応>>803に書いたとおり一日置いてから報告しようかと思います。

ただバクだとしても、このバグが今まで大した問題にならなかったということは
再現するためのコードに多かれ少なかれ作法の問題があるのではという気持ちもあり、
色々と勉強させていただきたいと考えています。
0844デフォルトの名無しさん
垢版 |
2018/03/30(金) 23:04:09.64ID:L1eApEVG
>>789
以下の書き方ってビルド通るっけ?
ビルドエラーの時は原因と関係ない警告でたりするからmessage=nullみたいに何かいれれば解決したりしない?

string message;
if (x == 1) getMessage1(out message);
else getMessage2(out message);
Console.WriteLine(message);

後outメソッドではなく、戻り値で文字列を返すのが普通
根本的な解決じゃないけどoutキーワードを使わないgetに直せば警告を消せる
0845789
垢版 |
2018/03/30(金) 23:06:10.14ID:QYlpMr10
>>834
アドバイスとご検証どうもありがとうございます。

再現性の問題については、警告のカスタム規則セットなどは使っていないつもりなのですが、
そのあたりの理解が不十分でお伝えすべきことが不足してしまっているのかも知れません。
念のため、解説ページなどを読むなどしてもう一度確認したいと思います。

また、とりあえず別のことに時間をということについて、お心遣いをとても嬉しく思います。
ただ、せっかくこれだけの反応をいただけたのだからできる限りのことを吸収して…という
殊勝(?)な考え以上に、私が感じた問題に多くの方が興味を持ってくださったことが嬉しく、
娯楽という意味でもう少しこの場にお邪魔させていただきたいと思っています。
0846789
垢版 |
2018/03/30(金) 23:33:26.14ID:QYlpMr10
>>837
大変勉強になるコメントどうもありがとうございます。この観点はまったく気づいていませんでした。
確かにout変数の使い道をそこまで限定することで警告は表示されなくなりますし、
この制限はプログラムの保守性を高める効果もありそうです。
これで私個人の、警告が表示されて気持ちが悪いという問題は解決したように思います。
どうもありがとうございます。

ただそれはそれとして、今回の警告はやはり意図されたものではないと思うのですが、
もしよければこの点についてもご意見をお聞かせいただけないでしょうか。

私がこのように思うのは、以下のコードで警告が表示されないというところにあります。
0847789
垢版 |
2018/03/30(金) 23:33:45.21ID:QYlpMr10
bool tryGetMessage1(int _x, out string _message)
{
if (_x == 1)
{
_message = "x is 1.";
return true;
}
else
{
_message = default(string);
return false;
}
}
void getMessage2(out string _message) => _message = "x is not 1.";

int x = 1;
if (!tryGetMessage1(x, out string message))
{
getMessage2(out message);
}

Console.WriteLine(message);
0848789
垢版 |
2018/03/30(金) 23:34:33.28ID:QYlpMr10
>>837の制限に従えば上のプログラムのifの部分は次のように修正されるべきです。
しかしこの例では警告文表示されず、従って警告文は>>837の制限を課すためのものではないと思われるので、
「今回の警告は意図されたものではない」という結論に至りました。

int x = 1;
string message;
if (tryGetMessage1(x, out string message1))
{
message = message1;
}
else
{
getMessage2(out string message2);
message = message2;
}
0850789
垢版 |
2018/03/31(土) 00:03:56.30ID:a/TgDl8y
>>844
レスどうもありがとうございます。
お書きいただいたコードでは、ビルドは通りますが>>789と同じ警告文が表示されました。
これは message = null と書き換えても同じようです。

戻り値で文字を返すべきだというのはおっしゃるとおりだと思います。
ただ>>796のような理由もあり、out変数でも警告が表示されずにすまないか思って質問させていただきました。
0853789
垢版 |
2018/03/31(土) 00:25:14.41ID:a/TgDl8y
>>851 >>852
申し訳ありません。
もともと不具合なのかどうかの判断もできずこのスレで質問させていただきましたが、
IDEの不具合であるとすれば、おっしゃるとおりここで解決を目指すことではないと思います。

ただ、もしこの問題に興味を持ってくださる方がいて、問題が再現されないようであれば、
>>849のソリューションファイルでもお試しいただければ嬉しく思います。

これ以降は、「IDEのバグ修正」という方向の話について私の方から書き込むことは控えたいと思います。
しかし、すでに私が書き込んでしまった内容にお返事をいただいた際のレスについてはお許しください。

以上、長々と失礼いいたしました。
0854デフォルトの名無しさん
垢版 |
2018/03/31(土) 00:25:16.57ID:p9TP05UX
>>806
Visual Studio 2017のバージョンは?
最新版(15.6.4)で>>849のソリューションビルドしたけど、IDE0018は出なかった。

後、ID:+cAt7TAVは頓珍漢な上に指摘を一切聞かない人だから無視した方が良いよ。
0856789
垢版 |
2018/03/31(土) 08:06:10.45ID:Mw1mdL1r
レスどうもありがとうございます。お返事が遅くなってしまい申し訳ありません。
日中はVisual Studioを使えそうになく、申し訳ないのですがきちんとしたお返事は夜になってしまうと思います。
中途半端な内容になってしまいますが、ひとまずいただいたレスにお返事したいと思います。
後ほど改めて書き込みますので、失礼をお許しください。

>>854
Visual Studio 2017のバージョンについてご報告できておらず申し訳ありません。
恥ずかしいことに最新版を使うという意識も持てていなかったので、古いバージョンを使っているかも知れません。
(ただ、古いバージョンで検証して下さった>>855様もIDE0018は出なかったとのことなので、
 なにか他のところに問題があるのかなとも思っています。)

>>855
ご検証どうもありがとうございます。
>>854様の結果と合わせて2つのバージョンで再現しなかったとのことなので、
私は何かとても基本的なところで間違いを犯してしまっているのかも知れません。
リファクタリング機能については、ご指摘をいただいた上で試したわけではないので後でまた確認しようと思いますが、
問題の箇所では動作しなかったように記憶しています。
0860デフォルトの名無しさん
垢版 |
2018/03/31(土) 09:03:24.19ID:9aphfiP0
>>789
正解だけ教える

bool TryGetMessage1(out string x) { x = "1"; return true; }
bool TryGetMessage2(out string x) { x = "2"; return true; }

string GetMessage(int x) {
if (x == 1 && TryGetMessage1(out var s)) return s;
if (TryGetMessage2(out var s)) return s;
return null;
}

WriteLine(GetMessage(x));
0862デフォルトの名無しさん
垢版 |
2018/03/31(土) 12:42:07.43ID:x9Yyswdb
(結局調べれば分かることで、ググれというレスを罵倒してた奴らは今どんな心境なんだろう)
0867デフォルトの名無しさん
垢版 |
2018/03/31(土) 13:32:48.06ID:OaeapR1O
>>862
> (結局調べれば分かることで、ググれというレスを罵倒してた奴らは今どんな心境なんだろう)
罵倒されてもしょうがないよね
って感じですけど?
しかも恥の上塗りしてる奴までいるし w
0869デフォルトの名無しさん
垢版 |
2018/03/31(土) 15:17:13.71ID:G6tH+bWp
FirstOrDefaultについて教えて下さい。
List<T>をFirstOrDefaultで条件のものを返してきた場合、
それは参照先のアドレスが返ってくるのでしょうか?
それとも写像としてコピーされたものが返ってくるのでしょうか
取り出したものの値を更新したときに、元のListは更新されますか?
0872デフォルトの名無しさん
垢版 |
2018/03/31(土) 15:39:45.66ID:UG1yVXDX
やってることは同じ(値をコピーしてくる)だけど結果が違ってくると言うこと
0873デフォルトの名無しさん
垢版 |
2018/03/31(土) 15:48:48.09ID:feZwED6X
教習所の教官「生徒が減ったので褒めちぎったら運転技術は向上!合格率も事故率も改善!俺はなんで今まで怒ってたんやろう?」 [274141358]
https://leia.5ch.net/test/read.cgi/poverty/1522384054/
5 名前:番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイWW d3e8-gBuS)[] 投稿日:2018/03/30(金) 13:30:33.99 ID:F53Z/ySd0
よく考えたら本当にジャップ案件だよな
初心者に対して怒鳴り散らしてどこが悪いかは一切教えない
部活と一緒だわ
0874デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:04:38.32ID:fwgHW5nR
>>869
List<T>とかHashSet<T>とか初めから使えるやつはTが値型か参照型かだけ考えればいいよ
あと「Listが更新されるか」という言い方はTが参照型だと意味が曖昧になるから改めたほうがいいかと

ふと↓こんなのが頭をよぎったけど意味が分からなければスルーしておくれ
class MyList<T> : IList<T> where T : ICloneable { ... }
0875デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:14:25.21ID:UG1yVXDX
IListは実装したことないな
実装例は見かけるけどOSSで実装してるのは見かけない
0876デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:27:15.53ID:fwgHW5nR
>>875
>>874でIEnumerableでもICollectionでもなくIListを選んだのには深い理由があるのよ
文字数という理由がね
まあIsReadOnlyプロパティとかどうかとは思うよ
0877デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:49:04.27ID:G6tH+bWp
ご指導ありがとうございます
Tが値型か参照型かというところが意識から抜けておりました
適当に組んで試してみて、その違いも確認できました
0878デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:55:49.06ID:tzO3VEeA
モニタの解像度によらず実寸A4サイズのウィンドウを開いて2pの×を座標ランダムに20表示
それをクリックするというアプリを開発しようと思ってます。
最初モニタの解像度取得してモニタの実寸をユーザーが入力して、
そこからA4サイズは何ドットになるか計算してというのをフォームで作り始めたんだけど、
これだと×や他のボタンも全て計算して調整しなければいけないのかと気づきました。

WPFで開発するとこういうモニタサイズにかかわらず実寸で表示って簡単に処理できるの?
0879デフォルトの名無しさん
垢版 |
2018/03/31(土) 17:16:01.57ID:l8CCe9Lg
実寸はモニタ変更するたび変えないと駄目じゃん
フルHDのスマホとモニタじゃちげーし
0880デフォルトの名無しさん
垢版 |
2018/03/31(土) 17:27:51.62ID:47Bv8u8/
ユーザーが勝手にWindowsのDPI設定を変更してない限りはできるけど、
今更オワコンWPFに手を出すくらいならHTMLで作ることを強くお勧めする
CSSならmm単位で実寸指定できるからWPFよりも簡単だよ
0882デフォルトの名無しさん
垢版 |
2018/03/31(土) 17:37:43.10ID:GqrQqkMZ
イベント処理でキー読み込むのと、ただ単にキー読み込むのではどう違うの?
実行すると速度が全然違うんだけど...
0883デフォルトの名無しさん
垢版 |
2018/03/31(土) 17:38:31.40ID:io+mDfEy
例の教育心理系君か
AWS S3にHTML/CSS/JavaScript置いてURL教えるのが一番手っ取り早いだろうな
結果もJavaScriptからS3 APIで保存するようにすれば完全サーバーレスだ
その程度なら料金は月10円もしない
0884デフォルトの名無しさん
垢版 |
2018/03/31(土) 17:58:49.73ID:tzO3VEeA
ご無沙汰しておりました。
教育心理系のものです。
ようやっとC#の本読み終えて作り始めましたけど、
実世界での用紙とか×とかの大きさを統一しないと実験結果に影響が出るので実o単位で画面表示が必要なことに気づきました。

a. ディスプレイ解像度はC#で取得できたので、後は実モニタサイズをユーザーに入力してもらえば、小学生の算数レベルでA4用紙のウィドウは作れる

でいいかと思ったんだけど、
そうすると×の大きさや当たり判定の範囲まですべて計算しなければいけず、
なんかあほらしいことをやってるのか??
と疑問に思ってきました。

ブラウザ上に表示するとユーザー側でctrl+スクロールで表示の大きさ変えられちゃうんですよね。
実世界でのo単位での大きさを固定したいってあまりなさそうな要求だし、aでやってくしかないのかなぁ。
0890デフォルトの名無しさん
垢版 |
2018/03/31(土) 18:59:42.15ID:tzO3VEeA
>>889
ViewBox調べてみます。
少しフォームベースで初めてみたんですけど、
これから勉強するならWpfとフォームどちらで作るのがおすすめですか?

フォームでもゴリゴリやっていけば狙ったものはつくれそうな感じはするんですけど、
wpfのほうがいいというのも聞いたりして悩み中です。
0891デフォルトの名無しさん
垢版 |
2018/03/31(土) 19:11:47.57ID:AhiWvdUc
>>890
件の用途だとformsは厳しいと思われるのでwpfを奨めるが、情報少ないから習得は簡単じゃないと思うよ
もし、不特定多数への配布を考えているならwpfの進化形であるUWPを使うのを奨める
0893デフォルトの名無しさん
垢版 |
2018/03/31(土) 20:17:53.84ID:tzO3VEeA
>>891
wpf情報少ないんですか・・・。
UWPも書籍はまだ少ないみたいですね。
ど素人なので学習のための情報は欲しいなぁ。

フォームでも×を線で描いてしまえばなんとかなりそうなんですけど、
拙速コードでも早期論文化を目指してフォームでやるか
将来のためにUWPを勉強するか悩みますね。
0894デフォルトの名無しさん
垢版 |
2018/03/31(土) 20:26:11.30ID:Tt7WJg3O
>>893
WPFでもFormでもスケーリングはページ変換使うだけだから難しくないと思う。

■ Formを使う場合の問題点

- 自動でスケーリングされるのはグラフィックだけ。コントロールやそのフォントは
コードでスケーリングや座標変換する必要がある


■ WPFを使う場合の問題点

- GDI+ほど簡単じゃない

- 多数の図形を描画する場合はパフォーマンスが問題になる
0895デフォルトの名無しさん
垢版 |
2018/03/31(土) 22:01:55.63ID:l8CCe9Lg
何処の座標を実寸通りにしたいか?
だけでformでいいだろ
なんでボタンまでやる必要があるんだ?
0896デフォルトの名無しさん
垢版 |
2018/03/31(土) 22:04:08.01ID:tzO3VEeA
A4相当の大きさのウィンドウ表示って調べてみると難しいんですね。
DPI取得もなんかOSで100%以外の拡大表示にしてると当てにならないみたいだし、
ディスプレイの大きさはユーザーが実測値入力で妥協してももいいのかな・・・。
0897デフォルトの名無しさん
垢版 |
2018/03/31(土) 22:09:29.60ID:g9lQ5N9X
厳密な同環境を求めてるみたいだが、
マウスの移動速度で無理が出ると思う
0899デフォルトの名無しさん
垢版 |
2018/03/31(土) 22:26:20.15ID:Tt7WJg3O
>>896
一応モニター自身が持つEDIDとかいう情報に表示領域の物理サイズが含まれているらしい

WPFはどうだったか知らんけど、FormはOSのDPI設定を無視して指定ピクセルサイズでFormを
表示させられると思った。

だからDPIさえ分かれば目的の物理サイズのウィンドウを表示することは難しくないはず
0900デフォルトの名無しさん
垢版 |
2018/03/31(土) 22:40:05.11ID:IoBwmw2C
>>898
さっきからスマホスマホうるさい
WPFの時点でデスクトップWindows固定だって理解できないの?
0901デフォルトの名無しさん
垢版 |
2018/03/31(土) 22:48:21.76ID:r1Fcmmf3
>>900
えー、だから解像度に対するモニタのサイズが決定しねーと駄目でしょって話何だけど?
スマホを例に挙げたのはあんな小さいなりして解像度はフルhdだから
0902デフォルトの名無しさん
垢版 |
2018/03/31(土) 22:55:14.06ID:IoBwmw2C
ユーザーがモニタサイズを入力って何回も書いてあるじゃん
それじゃ不満なの?
0905デフォルトの名無しさん
垢版 |
2018/03/31(土) 23:45:29.31ID:U08lgUq5
やっぱりC#もバカばかりなんだなあ
現代の三大バカ
ペチパー、ジャバパー、シーシャーパー
で決定やねw
0906デフォルトの名無しさん
垢版 |
2018/04/01(日) 00:58:58.57ID:AmnK79El
教えてください。

以下のような事をしたいと思います。
再現のために最低限必要なところだけを抜き出しているので、これだけだと意味が不明ですが、
同じような処理があちこちにあるので処理をまとめるため、このような事をしています。

public void Execute( string sql )
{
using (var command = new System.Data.SqlClient.SqlCommand(sql.ToString() ))
{
}
}

これをビルドしても警告等は出ませんが、コード分析の実行を行うと SqlCommand のところで
CA2100 の警告が出ます。意味は以下のページの通りです。

https://msdn.microsoft.com/ja-jp/library/ms182310.aspx?cs-save-lang=1&;cs-lang=csharp#code-snippet-3

要するに関数パラメータで受け取った文字列にはなにが含まれているのか分からないので危ないよ、と言われているのだと思いますが
出来れば上の関数を利用する形式で進めたいと思います。
この形式のまま CA2100 を回避する手段のアドバイスをいただけると助かります。
0907デフォルトの名無しさん
垢版 |
2018/04/01(日) 01:09:42.05ID:v0T9GXCI
>>906
生のテキストを送るなバカ
PrepareなりSqlParameterなり使ってSQL文とデータを分離しろバカ
詳しくは「C# インジェクション対策」でググれバカ
0908デフォルトの名無しさん
垢版 |
2018/04/01(日) 01:10:28.60ID:RE1ojOXr
MDT_RAW_DPIで物理的なppiに近い値が返ってくるからそれ使えで済む話、で終われば良いんだが
あれちゃんとした値が返ってくる保証が無さそうなのがねー
0911デフォルトの名無しさん
垢版 |
2018/04/01(日) 01:39:12.76ID:AmnK79El
>>907
それはやってる。
再現する最低限までコードを削った結果としてその部分が見えなくなってるだけ。
0913デフォルトの名無しさん
垢版 |
2018/04/01(日) 01:45:10.58ID:AmnK79El
>>912
あ。ごめん。
いろいろ試してたときのコードが残ってました。
.ToString() がなくても再現します。実際にもそんな事してません。
0916デフォルトの名無しさん
垢版 |
2018/04/01(日) 04:52:35.48ID:fKZaPfKf
>>911
ほんとにやってる?
このコードだけ出されても警告でるに決まってるし、リンク先のような対策しろとしか言えない
0917デフォルトの名無しさん
垢版 |
2018/04/01(日) 05:05:19.22ID:fKZaPfKf
>>906
一応コード分析で警告表示させないようにするだけでいいなら、SuppressMessage属性を付ければでなくなる
チームでやってるならメンバー全員の許可は必須
0918デフォルトの名無しさん
垢版 |
2018/04/01(日) 09:03:31.17ID:gIH0xNQX
>>906
ちゃんとリンク先読んでる?

メソッドに渡された文字列引数から構築された文字列を使用して IDbCommand.CommandText プロパティが設定されています。

って書いてあるんだからSqlCommamd.CommandTextに外部からもらった文字列を設定した時点でその警告になるよ
パラメーター云々はその後の話
その形式のまま使いたいなら>>917が書いてる通り抑止するしかない
ちゃんとやるならやりたいこと毎に関数作ってSqlCommamd.CommandTextに固定の文字列を設定するようにしないとダメ
0920906
垢版 |
2018/04/01(日) 13:39:58.60ID:AmnK79El
レスをくださった皆さん、ありがとうございます。

>>917
現状では、 教えていただいた属性をつける方法を相談して、NG ならこのまま警告を残す。って方向かなと思います。
一応、先のリンク先の以下に当てはまるのでセキュリティ的には問題ないと考えます。

>警告を抑制する状況
>コマンド テキストにユーザー入力が含まれない場合は、この規則による警告を抑制しても安全です。

>>918
>ちゃんとやるならやりたいこと毎に関数作って
同じような処理があちこちにあるのを嫌って、906 のように出来ないかなと考えました。
ただ、一般的なやり方ではなかったかも知れません。

>>919
ストアドとは、たとえばこのリンク先の事で正しいですか。
https://code.msdn.microsoft.com/windowsdesktop/DataAccess-howto-32c91bf0

自分が試した限りでは CA2100 が出ました。
いままではストアドでも execute 付けて普通に SQL 文として実行してましたが、こういう方法もあったのだと勉強になりました。
またストアドはローカルDB では問題ないのですが、基幹DB では使わせてもらえないようです。軽く聞いてみた範囲での事ですが。
0921デフォルトの名無しさん
垢版 |
2018/04/01(日) 18:26:06.48ID:+XMM3OWE
20年以上前にcを使っていたことがあるという状態で、c#を独学で学び始めたところです
極めて初歩的な話だとは思いますが、どうしてもわからないので教えてください

下記のコードで、「未割り当てのローカル変数'num'が使用されました」というエラーが出て
コンパイルできません。

try-catch構文の後の Console.WriteLine(...) を、try節の中に中に入れるとコンパイルが
できるのですが、try - catch構文以降は、変数のスコープが失われてしまうということなの
でしょうか。

using System;

class ExceptionTest
{
static void Main()
{
int num;
string s;
try
{
Console.Write("enter a number : ");
s = Console.ReadLine();
num = Int32.Parse(s);

} catch(Exception e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("Your number : " + num);
}
}
0922デフォルトの名無しさん
垢版 |
2018/04/01(日) 18:40:32.32ID:ut+4lapb
>>921
もしtryブロックの中で例外が発生した場合、

> Console.WriteLine("Your number : " + num);

この行に到達した時点でnumの値はどうなってるでしょうか?
0926デフォルトの名無しさん
垢版 |
2018/04/01(日) 18:51:15.76ID:/o+55+4t
>>921
スコープの問題ではなく、try節のnum代入に到達しない可能性があるから
文脈からすれば仰る様にnum出力をtry節に含める、あるいはint num = 0;等…
C#はそういうの然り、C/C++よりガチガチに厳しい
0927デフォルトの名無しさん
垢版 |
2018/04/01(日) 19:28:44.37ID:fxgoPYx5
そのうちc#にもdeferが導入されるみたいだけどそういうのでボコボココンパイルエラーが出るようになるのか
0928デフォルトの名無しさん
垢版 |
2018/04/01(日) 19:39:39.66ID:xe0krAxA
>>926
C/C++でだって未初期化の値を使うコードを書くべきじゃ無いけどな
0929906
垢版 |
2018/04/01(日) 21:34:56.28ID:AmnK79El
>>925
thx
0931デフォルトの名無しさん
垢版 |
2018/04/02(月) 12:27:49.40ID:7SJzoey2
必ず初期化されるやんC#
0932921
垢版 |
2018/04/02(月) 12:31:36.23ID:sF1TxYYm
皆様ありがとうございます
変数numが定義されていないというエラーだとばかり思っていたのですが、初期化されていないという意味だったのですね
理解できました
0933921
垢版 |
2018/04/02(月) 12:37:01.02ID:sF1TxYYm
>>931
私もそう思っていたのですが、違うのでしょうか
手元に書籍がないので、参考にしている本にはなんと書いてあるか不明ですが、
c#では整数型の変数は自動的に0で初期化される、と書いているサイトも
あるようです
0934921
垢版 |
2018/04/02(月) 12:39:19.98ID:sF1TxYYm
>>933
訂正
クラスのフィールド変数は初期化されるけれど、メソッド内のローカル変数は初期化されないのですね
誤解していました
0935デフォルトの名無しさん
垢版 |
2018/04/02(月) 18:07:44.63ID:6bvpmFc5
C#技術者は他の言語に比べて年収はいいんですか?
0937デフォルトの名無しさん
垢版 |
2018/04/02(月) 20:42:37.26ID:6Vp1brVM
winformsのTableLayoutPanelで2つの列を作成したとき、プログラムの実行中に左右の幅をマウスで調整することはできますか?
0939デフォルトの名無しさん
垢版 |
2018/04/02(月) 22:39:46.16ID:zzbs2RRz
解釈の原因は解釈者が持つ自分ルール。解釈の自由は責任を伴う
言葉風紀世相の乱れはそう感じる人の心の乱れの自己投影。人は鏡
憤怒は一時の狂気、無知無能の自己証明。中途半端な知識主ほど激昂
「真実は一つ」は錯誤。執着する者ほど矛盾を体験(争い煩悩)
他人に不自由(制約)を与えれば己も不自由(不快)を得る
問題解決力の乏しい者ほど自己防衛の為に礼儀作法マナーを要求
情報分析力の低い者ほどデマ宗教フェイク疑似科学に感化洗脳
自己肯定感の欠けた者ほど「己の知見こそ全で真」に自己陶酔
人生経験の少ない者ほど嫌いキモイ怖いウザイ憎い想定外を体験
キリスト教は世界最大のカルト。聖書は史上最も売れているト本
全ては必然。偶然 奇跡 理不尽 不条理は思考停止 視野狭窄の産物
人生存在現象に元々意味価値理由目的義務使命はない
宗教民族領土貧困は争いの原因ではなく口実動機言訳(原因帰属錯覚)
虐め差別犯罪テロ紛争は根絶可能。必要なのは適切十分な高度教育
体罰は指導力問題解決力の乏しい教育素人の独善甘え怠慢責任転嫁
死刑は民度の低い排他的集団リンチ殺人。「死ねば償える」は偽善
核武装論は人間不信と劣等感に苛まれた臆病な外交素人の精神安定剤
投票率低下は社会成熟の徴候。奇人変人の当選は議員数過多の証左

感情自己責任論 〜学校では教えない合理主義哲学〜 m9`・ω・)
0940デフォルトの名無しさん
垢版 |
2018/04/02(月) 23:16:17.88ID:VPR2x1c1
2chビューワのスレ欄のように、listViewでマウスオーバーするとその行の文字にアンダーラインが入るようにしたいです。
やってみると、以下のサイトにそれに近い方法がけいさいされていたのですが、サイトに指摘があるように画面がちらつきます。

ListViewのアイテムがポイントで選択、シングルクリックでアクティブにできるようにする - .NET Tips (VB.NET,C#...)

https://dobon.net/vb/dotnet/control/lvpointselection.html
そのため、ちらつきを抑制する方法を探したところ、いろいろ出てきましたが、どこにどのコードを記述すればいいのかさっぱりわかりませんでした。
下記サイトが一番丁寧な気がしましたが、これを参考にしてもフォーム上にlistviewが出てきません。

ListViewを更新したときのちらつきを抑制する(C#メモ): amongの雑記



どうすれば、ちらつきを抑えたlistviewを作成することができるのでしょうか?教えてください。
0941デフォルトの名無しさん
垢版 |
2018/04/02(月) 23:17:15.94ID:VPR2x1c1
すいません、
>ListViewを更新したときのちらつきを抑制する(C#メモ): amongの雑記
についてはNGワードとなってしまいました
下記のURLのスペースを抜いたものです。
http://amonution.sb lo.jp/article/45398035.html
0943デフォルトの名無しさん
垢版 |
2018/04/02(月) 23:50:34.23ID:VPR2x1c1
>>942
返信ありがとうございます。
初心者なもので
>ダブルバッファのプロパティを付け加えた新しいコントロールを作ってそれを使う
これの方法がよくわからないのです。

そのページも見たのですが、
>public class DoubleBufferingListView : ListView
以下の部分を全体のコードのどこに記述ればいいのか、記述したあとそれをどうやって使うのか、というのがそもそもわからないのです。
0944デフォルトの名無しさん
垢版 |
2018/04/02(月) 23:53:34.69ID:6Vp1brVM
>>938
すみません、もう少し詳しくおしえていただけないでしょうか?

もとの文では分かりづらかったかもしれませんが、コントロール中の左右の幅(比率)を変更したいです。
(デザイナ上でやるように、つまみを掴んで左右に動かすイメージです)
0945デフォルトの名無しさん
垢版 |
2018/04/02(月) 23:54:11.10ID:VPR2x1c1
とりあえず、namespaceの直下に貼り付けてみてビルド→うーん、エラーか
public partial class Form1 : Formの下に貼り付けてみる→動いたが、じゃあ次に何をすればいいのかわからん。

こんなレベルです。
0946デフォルトの名無しさん
垢版 |
2018/04/03(火) 00:03:03.60ID:BdcH2dSM
>>943
クラスとして記述してデザイナに表示されなければ新しく作ったコントロールを含めたアセンブリを一度ビルドする
dobonのどこかにもやり方あるんじゃないの
>>944
MouseDown:
マウスが押されたe.Location(をスクリーン座標に変える)を変数に記録する
決められた位置で押された場合にフラグをセットする
MouseMove:
フラグがセットされていれば現在の座標と記録していた座標の差分を計算してSizeを変更する
MouseUp:
フラグを破棄する
0947デフォルトの名無しさん
垢版 |
2018/04/03(火) 00:16:48.21ID:Bkifwxhh
>>946
public partial class Form1 : Formの直下に記述して、F7を押してビルドして、form1.cs[デザイン]タブを開いてみましたが、
特に何か増えたような様子はありませんでした。
ご指摘事項を正しく実行できてますでしょうか?
0950デフォルトの名無しさん
垢版 |
2018/04/03(火) 21:10:02.31ID:tN12x087
リッチテキストボックスのスクロールバーだけ、ドラッグしてもバーがついてこないのですが、
私だけでしょうか?
0951デフォルトの名無しさん
垢版 |
2018/04/03(火) 21:29:32.68ID:vN2mpw+F
業務用アプリをオサレな画面にしたいんだけどWPF使ってそこらのテーマ拾ってくるのが手っ取り早いかね
0952デフォルトの名無しさん
垢版 |
2018/04/03(火) 23:35:42.00ID:VCT3rU1H
>>951
WPFのテーマなんてクッソ古臭いデザインの10年近く前からメンテされてないのしかないぞ
WebかUWPで今風のフラットデザインにしましょう
0955デフォルトの名無しさん
垢版 |
2018/04/04(水) 00:15:51.60ID:Lt0+eORa
>>951
Material Design In XAML Toolkitが今風で良い感じだよ。
タブが必要なら同じ作者のDragablz Tab Controlも併せてどうぞ。
0957デフォルトの名無しさん
垢版 |
2018/04/04(水) 01:35:51.04ID:gGAYD4mI
ざっと知っておくに越した事は無い
使うかどうかは別としてね

むしろ、「これはやるな」っていうアンチパターンを覚えた方が良いかもだ
0958デフォルトの名無しさん
垢版 |
2018/04/04(水) 02:58:58.46ID:3/OGlZbi
バグってハニー
0959デフォルトの名無しさん
垢版 |
2018/04/04(水) 07:59:24.78ID:ClxMGJax
material designとかタッチメインならいいけど、マウスメインのデスクトップアプリならmaterial designはスペースが無駄すぎる
0960デフォルトの名無しさん
垢版 |
2018/04/04(水) 20:33:02.49ID:n4eM316R
excelファイルを操作する必要があり、いろいろ調べたらclosedXMLを使うのが良さそうという
結論に達したのですが、詳しい解説のあるサイトや書籍はないでしょうか。

ファイルの開き方、セルの参照方法などは普通に見つかるのですが、提供されている
メソッドの一覧とか、発生する例外とか、実用上知っておくべきことを知りたいのです
(主にエラートラップをするためです)

公式ドキュメントがどこにあるかすら発見できなかった程度の英語力ですが、ドキュメントの
ありかを教えていただければ、辞書を引きながらでも調べてみます
0965デフォルトの名無しさん
垢版 |
2018/04/04(水) 21:30:08.25ID:PCVfDfH6
ExcelのCOMオートメーションはサーバーでの動作保証が無い時点でゴミなんすよ
0967デフォルトの名無しさん
垢版 |
2018/04/04(水) 22:21:19.70ID:noE6VTyE
エクセルファイルなんてグレープシティのスプレッド買えば一瞬で終わるだろ
0972デフォルトの名無しさん
垢版 |
2018/04/04(水) 23:42:42.72ID:9CBA0Lmr
Electronは縦書きエディタすら作れない駄目なやつ
表示はどうにでも出来るが入力が機能的に絶対無理とか俺が費やした半日を返せよ
0973960
垢版 |
2018/04/04(水) 23:46:48.80ID:n4eM316R
>>961-966
触れてはいけないものに触れてしまったかのような反応ですが、なんとかドキュメントを
読んで頑張ってみますわ・・・

>>967
趣味で書いてたVBAマクロをスタンドアロンに書き直したい(データだけexcelファイルから
流用したい)という用途なので、万円単位の買い物は無理です、残念
0979デフォルトの名無しさん
垢版 |
2018/04/05(木) 12:00:33.19ID:D2y+fK6k
てっきり今後はWPFが主流になると思って使ってみたけど、
情報がネットに少なすぎてまいったわ
0981デフォルトの名無しさん
垢版 |
2018/04/05(木) 21:48:57.38ID:2ZtD67QF
例外処理について教えてください

簡単な例で、キーボードから数字を入力させて処理するとして、非数字が入力されたら
数字が入力されるまで、正しい入力をするよう促したいとします
(これだけなら例外を使わなくても簡単ですが、あくまで例として)

bool flag = false;
string str;
int i=0;

while(flag != true)
{
try
{
Console.Write("enter a number = ");
str = Console.ReadLine();
i = Int32.Parse(str);
flag = true;
} catch
{
Console.WriteLine("incorrect number.");
}
}
Console.WriteLine("your number is : " + i);

こんな感じで、try-catchの間をループで囲んで、脱出フラグを用意するのが正攻法
なのでしょうか?
なんかもっとスマートな方法がありそうなのですが
0982デフォルトの名無しさん
垢版 |
2018/04/05(木) 21:57:03.35ID:dUUr3xK4
>>981
いや、例だと
回答してもこれは違う実は書いてないけど
こういう問題があって駄目だの
小出しでどんどん出るから
ピンポイントでこの問題を解決したいってのを書いて
0984デフォルトの名無しさん
垢版 |
2018/04/05(木) 21:59:25.26ID:IVUDpQN0
var i = 0;
while (true) {
    Console.Write("enter a number = ");
    var str = Console.ReadLine();
    try {
        i = Int32.Parse(str);
        break;
    }
    catch (FormatException) {
        Console.WriteLine("incorrect number.");
    }
}
Console.WriteLine("your number is : " + i);
0986デフォルトの名無しさん
垢版 |
2018/04/05(木) 22:11:00.58ID:2ZtD67QF
>>982
すいません、ピンポイントで課題に直面しているのではなくて、勉強中で疑問に思ったので
質問しました
例えばファイルオープンで存在しないファイル名を掴まされたとか、テキストファイルを想定
しているところにバイナリを噛まされたとか、そういうケースのリトライをどうやって実装するのかと
疑問に感じたのです
0987981
垢版 |
2018/04/05(木) 22:19:06.91ID:2ZtD67QF
>>984
このソースは理解できましたが、>>985はどういう意味でしょう?
私は921でもあるのですが、この時指摘いただいたとおり、iを初期化しておかないと
未割り当てとしてコンパイル通りませんが
0989デフォルトの名無しさん
垢版 |
2018/04/05(木) 22:36:19.31ID:7xCMhR6w
気持ちは分からんでもないが、抽象的な質問しても抽象的な答しか返ってこないと思うw

static void Main(string[] args)
{
  var number = 0;
  Func<bool> tryAskNumber = () =>
  {
    Console.Write("enter a number = ");
    return int.TryParse(Console.ReadLine(), out number);
  };

  while (!tryAskNumber())
    Console.WriteLine("incorrect number.");
  Console.WriteLine($"your number is : {number}");
}
0990デフォルトの名無しさん
垢版 |
2018/04/05(木) 22:36:33.86ID:796HNo8s
>>986
そんなもん具体的に何をどうリトライしたいのかによる
それが明確になってるならそれをそのまま実装するだけだ
ネットワークエラーのようにそのまま自動的にリトライ可能なエラーならある程度決まったパターンがあるけど、
>>986のように条件を変えない限りリトライしても必ず失敗するケースでは個別に考えるしかない
0992981
垢版 |
2018/04/06(金) 06:10:19.26ID:e2Dy7HRM
>>989
私の学習では、まだ

Func<bool> tryAskNumber = () =>

この書き方が理解できていないのですが、これでやっているのは例外の処理ではなくて
boolでメソッドの戻り値を評価して処理を繰り返しているのですね?

抽象的な質問だと言われればそのとおりなのですが、エラーが発生したときに例外を
返してくるメソッドを使っているときに、正常処理ができるようになるまで同じ処理を繰り返す、
というケースの質問でした
条件を変えるとかは本質的な話ではなくて、「例外が発生しなくなるまで繰り返す」という
処理フローそのものの質問です
>>984で、break文でtryの中からwhileブロックを抜ければよい、と理解できたので十分です
(tryブロックから、その外側のwhileを抜けられると思ってなかったので躓いてました)

数字入力を取り上げたのは、例として単純で、言わんとすることがすぐに伝わるかと思った
だけです

>>991
>>984
の var i=0; を var i; にしただけだとエラーになりましたが、int i; なら通るんですね
0993デフォルトの名無しさん
垢版 |
2018/04/06(金) 11:09:07.04ID:iz5pUoek
>>981
例外が出たらアプリケーションを止める
ファイルオープンだとしてもそれは変わらず、存在しなくてリトライしたいなら以下のような事前チェックをするべき
if(存在していない)continue;

ってのが理想だけどファイル系のエラーってたくさんあるし、確認しずらいのもあるからtry-catchを使わないのが現実的じゃないことも

メソッドが例外を出すのは使ってはいけない使い方をしているということなので、使っていい状態か確認してから呼び出すよう心がけるべきかな
0994デフォルトの名無しさん
垢版 |
2018/04/06(金) 11:31:23.65ID:KffLTaJD
foreach(var a in XXX)
{


みたいなことを可能にするためには
XXX はどんなクラスを継承してないといけませんか?
(何が必要か)

たとえば、XXX がDataRowCollection 型だったら
foreach(DataRow a in XXX) とやらないと怒られてしまいます。

DataRow[] だったら、var が使えます。

この違いは一体なんだろう(なにが必要なのかと)、と
0997デフォルトの名無しさん
垢版 |
2018/04/06(金) 11:54:13.71ID:KffLTaJD
つまり、DataRowCollection は
IEnumerable を継承しているから、foreach の in に使えるけど
IEnumerable<T> は継承してないから foreach(var は許されない

ということですか
0998デフォルトの名無しさん
垢版 |
2018/04/06(金) 12:11:24.19ID:78uF6QEL
>>992
ラムダ式を使わずに書くとこう
static void Main(string[] args)
{
  var number = 0;
  while (!TryAskNumber(out number))
    Console.WriteLine("incorrect number.");
  Console.WriteLine($"your number is : {number}");
}

static bool TryAskNumber(out int number)
{
  Console.Write("enter a number = ");
  return int.TryParse(Console.ReadLine(), out number);
}

プログラミングの基本は一気にすべてを解決しようとしないこと。
問題を小さな問題に分割すること。

「○○が成功するまで繰り返す」なら、○○の部分と成否を判定してリトライ
する部分は分けた方が基本的に分かりやすくなる

抽象的な質問に対して何か言えるのはこの程度だと思うけど....
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 33日 23時間 52分 35秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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