18/03/22 19:18:29.35 +BApurZo.net
>>415-416
ありがとう。
調べてみます。
>>417
茨の道っぽいかもですね。
まあ先の用例のケースなら <!-- --> でコメントを入れてもいいので、適宜、工数を考えてみます。
でも <!-- --> でコメント入れると、行挿入したときとかに勝手に改行が入ったりするので。。
442:デフォルトの名無しさん
18/03/22 19:41:14.86 cv696+3f.net
読み込んだ画像を縦横に連結して新しく出力したい。
横への結合はあるけれど、縦・横並べるにはどうしたらいいんだ
■
↓
■■■
■■■
こういう風にしたい
443:デフォルトの名無しさん
18/03/22 19:45:29.56 kZrJsqkn.net
読み込んだ画像を上下にずらしながら描画すればいいんじゃねーの?
444:デフォルトの名無しさん
18/03/22 19:59:53.87 52tkzdW9.net
>>432
C#以前に画像の大きさと座標を考えるだけじゃないの
横に連結できるのに縦横ができない方が意味不明
445:デフォルトの名無しさん
18/03/22 20:05:24.46 T2vZ1xLC.net
>>432
どこに出力するのかぐらい書けや
446:デフォルトの名無しさん
18/03/22 20:47:55.73 ni48WVgw.net
class TypeA: IType{}
class TypeB: IType{}
IType[] table;
こんな感じの構成で配列にI/Fを格納してステートマシンをやりたいのに、
何をnewして配列を初期化したらいいのか分からない誰かたすけて
447:デフォルトの名無しさん
18/03/22 21:04:10.32 uk+GlZCh.net
Listを使うようにしたらいいよ
448:デフォルトの名無しさん
18/03/22 21:16:31.83 /twRZ4qU.net
>>436
IType[] table = { new TypeA(), new TypeB() }
とか?
449:デフォルトの名無しさん
18/03/22 21:17:50.71 ni48WVgw.net
ごめん
IType tmp = new IType[2];
としたら普通に出来た
インターフェースはnew不可能って嘘言ってる奴は死ねばいいのに
450:デフォルトの名無しさん
18/03/22 21:26:09.52 06GLHVJW.net
Interfaceはnew出来ないぞ。
それは配列をnewしてるのであってInterfaceをnewしてるわけでは無いんだよ。
451:デフォルトの名無しさん
18/03/22 23:23:13.81 R5Phquw0.net
>>421,428
サイト見ながらハイ&ローゲームを作ったけどめっちゃ難しかった
でもマインクラフトなんかよりずっと面白いな!
お前らみたいに長年プログラムを書いてるとソースコードを見ただけで吐き気がしたり嫌になったりすることもあるの?
今でも楽しく書けてる?もうロボットになっちゃった?
452:デフォルトの名無しさん
18/03/23 10:18:12.37 dRbnJSq+.net
ソースなんか見なくても
テストが全くない、仕様書はない、前任者が逃亡
のどれかを聞いたら吐く
453:デフォルトの名無しさん
18/03/23 15:25:59.96 4mHfCYml.net
好きなことは趣味だけにとどめておけとは良く言うな
まぁ広い世界を見るのと見ないのじゃ、得るものも考えも違ってくるけど
454:デフォルトの名無しさん
18/03/23 18:41:53.25 K8shiMoF.net
起動中の任意のウィンドウをクリックスルーさせるアプリを作りたいんですが開発言語は何がいいでしょうか?
C#で作れますか?
455:デフォルトの名無しさん
18/03/23 18:48:37.93 KCL7rjza.net
> クリックスルーとはウェブサイト上の広告をクリックすることによって広告主のコンテンツに移動することであり、
> ウェブサイトの広告効果を測る一つの尺度である。
残念ながら意味不明
456:デフォルトの名無しさん
18/03/23 19:16:30.96 WXYYX9lz.net
エスパーすると任意のwindowの後ろの座標クリックしたいんじゃね?
457:デフォルトの名無しさん
18/03/23 19:16:54.09 K8shiMoF.net
言い方が悪かったですね
クリックスルーとは手前に表示されているウィンドウではなくその奥にクリックイベントを送ることです
私の作った造語です。
クリックをスルーさせる。なら分かったでしょうか?
458:デフォルトの名無しさん
18/03/23 19:19:36.49 f2Ovt9hj.net
windowマネージャー次第じゃね
459:デフォルトの名無しさん
18/03/23 19:20:07.85 K8shiMoF.net
>>446
そうです
460:デフォルトの名無しさん
18/03/23 19:26:06.63 oo1PkjPG.net
WndProcでマウス関連のメッセージが来たらそれを後ろのウインドウに送れ
461:デフォルトの名無しさん
18/03/23 19:41:03.71 K8shiMoF.net
関数も知らない初心者なのでよくわかりませんが、
ありがとうございます
頑張ってみます
462:デフォルトの名無しさん
18/03/23 20:04:04.89 Wu9wrvWh.net
C#でWindows7や10の通知を検知する方法ありますか?
463:デフォルトの名無しさん
18/03/23 20:07:18.14 YkCX9UZt.net
>>450
これだと自分自身のフォームに対するクリックしか対応できないんじゃね?
>>448で自作する話かと思った
464:デフォルトの名無しさん
18/03/24 02:01:16.50 eOg1kWoS.net
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が返されたのか?を調べる方法ってないのでしょうか?
465:デフォルトの名無しさん
18/03/24 02:12:40.29 RAJoRlJs.net
>>454
var i = ii.Where(x=>x>=11).Cast<int?>().FirstOrDefault();
これならデフォルトはnullになる
466:デフォルトの名無しさん
18/03/24 02:22:55.04 f2IRc2qS.net
11以上の0てw
467:デフォルトの名無しさん
18/03/24 02:23:26.48 eOg1kWoS.net
>455
ありがとうございます
null許容型にしてしまう技は全然思いつきもしませんでした
468:デフォルトの名無しさん
18/03/24 03:52:47.12 vYyJGm6o.net
普通に.Any()みたいのでチェックしたほうがいい気がする
469:デフォルトの名無しさん
18/03/24 06:34:16.57 kwFJV00Z.net
普通にanyとFirstでやるほうがいいと思う
null許容型を嫌っている人も多いし
470:デフォルトの名無しさん
18/03/24 11:02:27.65 nWAEGsYu.net
forでやればいいと思うけど一行で無理やりやるとしたら
var i = ii.ToList().FindIndex(x => x > 11);
で位置が取れる
見つからなかったら-1が帰る
値はii[i]
※これはLINQじゃない
471:デフォルトの名無しさん
18/03/24 11:07:47.22 nWAEGsYu.net
見直したら
var i = Array.FindIndex(ii, x => x > 11);
でも行けた
失礼
472:デフォルトの名無しさん
18/03/24 11:54:28.18 I8UGP+gf.net
そういうラムダ式ってぶん回してるとGCガリガリしそうな気がする俺は素直にforで判定してる
473:デフォルトの名無しさん
18/03/24 12:07:26.69 Y8GXLzWd.net
GC大量発生しているじゃないか!とGen0と1の数字で大騒ぎしているお客さんみたいなこと言わないでよ
474:デフォルトの名無しさん
18/03/24 12:20:02.80 qA6u9GtS.net
俺はRustで書く
475:デフォルトの名無しさん
18/03/24 12:36:49.22 I8UGP+gf.net
>>463
VRが90fpsなんて無茶を求めて来なきゃ俺だってLINQとか使いたいよ
476:デフォルトの名無しさん
18/03/24 12:42:55.44 9NxgdLlD.net
Listの実装にもよるけどvector的ならインスタンス1つ増えるだけでしかも速やかに回収される
GCからみたらただの良い子だね
477:デフォルトの名無しさん
18/03/24 13:07:03.68 7/CvCtkV.net
要件違うんだから争いはしないでよね
478:デフォルトの名無しさん
18/03/24 13:12:57.55 l0JTVUuX.net
>>465
お前の自己紹介スレじゃない�
479:ナ
480:デフォルトの名無しさん
18/03/24 14:15:34.65 gWAI6lWw.net
いくらLINQでも探索でGCガリガリなんてするわけないじゃん
481:デフォルトの名無しさん
18/03/24 14:17:13.44 iw5iXVod.net
パフォーマンス追求するときは使わなきゃいいだけじゃん
何回目だよ
482:デフォルトの名無しさん
18/03/24 14:22:26.64 qA6u9GtS.net
何度でも言うよ
483:デフォルトの名無しさん
18/03/24 14:37:03.09 8uBzLhlU.net
>>470
だったら使うの止めてよ
パフォーマンスが要求されるところで使えないんでしょ
普通に組めばいい話じゃん
484:デフォルトの名無しさん
18/03/24 15:03:34.89 kwFJV00Z.net
コンパイラーによって最適化された結果リンクの方がパフォーマンスがいいときもある
勝手に使えないと決めつけるんじゃなくてちゃんと調べた方がいいよ
485:デフォルトの名無しさん
18/03/24 15:10:01.14 FeWoBRlr.net
>>473
その調査で生じる賃金はどこのどなたが払って下さるんですか?
486:デフォルトの名無しさん
18/03/24 15:13:32.64 o+lnSplR.net
今回はLINQ関係ないだろ
Listのメソッド使ったんだから
ラムダが嫌ならPredicateのdelegate渡せばいい
487:デフォルトの名無しさん
18/03/24 15:52:30.11 kwFJV00Z.net
リンクだろうとラムダ式だろうとパフォーマンスは実際にやってみないとわからないってのが言いたかった
こんな所でボトルネックなんてでないから好きに書けばいいと思うけど
488:デフォルトの名無しさん
18/03/24 16:25:40.93 iw5iXVod.net
>>472
簡単だし楽だから使うよ
おまえは全部C++でやっとけよ
489:デフォルトの名無しさん
18/03/24 16:32:05.01 7/CvCtkV.net
どのくらいのパフォーマンスが必要なのかも分からないのにパフォーマンス必要だから止めろって奴何なの?
490:デフォルトの名無しさん
18/03/24 16:42:29.03 vRs+3qfJ.net
>>478
でも遅いことは確定なんだよね?
491:デフォルトの名無しさん
18/03/24 16:44:31.30 o+lnSplR.net
くだらないことで揉めるんじゃない
ただanyからのfirstは無駄だとは思う
492:デフォルトの名無しさん
18/03/24 16:55:19.70 dHFi9bQj.net
またはじまった
493:デフォルトの名無しさん
18/03/24 17:05:10.25 1VnhiIny.net
無駄というか作法的にイマイチ
IEnumerableは列挙するたびに結果が変わったり一度しか使えなかったりする実装もあり得るから、
終端操作を二度やるのは一般には良くないね
494:デフォルトの名無しさん
18/03/24 17:08:19.43 7/CvCtkV.net
>>479
何に対して何が遅いと言っている?
あと許容出来る遅さと許容出来ない遅さは区別することを前提でお願いね。
495:デフォルトの名無しさん
18/03/24 17:12:04.07 uMtlf+0x.net
質問でも回答でもないのなら他でやれ
496:デフォルトの名無しさん
18/03/24 17:32:20.25 vYyJGm6o.net
>>480
>ただanyからのfirstは無駄だとは思う
なんでそう思うの?
497:デフォルトの名無しさん
18/03/24 17:35:46.41 +6yqXiQK.net
>>485
本来同時に得られるはずの情報をわざわざ二度の処理で求めているからだろ
処理効率は別にしても、マルチスレッドとか考慮するとバグの元になる可能性もある
498:デフォルトの名無しさん
18/03/24 17:36:08.58 kwFJV00Z.net
anyで条件付きのループした後にfirstで同じことをするより、2回目は直接該当データを参照する方が早そうって感覚
499:デフォルトの名無しさん
18/03/24 17:42:42.62 1VnhiIny.net
列挙元の内容が変更されないことが保証されているのは列挙子が有効な間だけ(変更されたら列挙子が無効になる)
Anyの直後のFirstは新しい列挙子を使用して列挙をやり直すので、
前回から列挙元の内容が変更されていない保証は一般には無い
500:デフォルトの名無しさん
18/03/24 17:46:38.61 Yt7o4U/B.net
>>488
正しいよ
でもお呼びじゃないんだカス
静かにしててくれる?
501:デフォルトの名無しさん
18/03/24 18:01:34.62 kwFJV00Z.net
>>488
anyは存在確認でfirstはデータ取得が目的だから順序が変わっても問題なし
むしろfindindexからインデクサでデータ取得する時の方が大事になってくるかな
だから、>>461はいいけど、>>460は少し危ない気がする
502:デフォルトの名無しさん
18/03/24 18:04:19.15 0F1bgfLW.net
いや正しくないってw
別のスレッドでコレクションが変更される可能性があるならそもそもLINQは使えない。
LINQのメソッドが返す列挙子はオリジナルのコレクションのコンポジションに過ぎないことを
忘れちゃダメよ
503:デフォルトの名無しさん
18/03/24 18:06:03.71 0F1bgfLW.net
>>490
問題あるとかないとか以前に、同じコレクションを2回スキャンするのは
無駄だなと思うことはプログラマの最低要件だと思う
504:デフォルトの名無しさん
18/03/24 18:13:37.30 kwFJV00Z.net
>>492
別にそこは否定してないんだけど
また、リストや配列のメソッドはスレッドセーフじゃなかったと思うからanyがとか以前にロックしなきゃ駄目かな
それはまた別の話だから別に触れないけど
505:デフォルトの名無しさん
18/03/24 18:14:09.89 9NxgdLlD.net
こんな場合には使えないんだ!←わかる
だから絶対にどんな場合にも使うな!←キチガイ
506:デフォルトの名無しさん
18/03/24 18:16:14.46 vYyJGm6o.net
>>486
うーん、考え方としては理解できるんだけど、
現実問題としてintみたいにdefault値に0を返す型の場合で
whereでフィルタした結果に要素があるかないかで処理を分けたいときにどうしてるの?
>>455みたくnull許容型にキャストするのは一案だけど読みやすさは低くなるよね
507:デフォルトの名無しさん
18/03/24 18:41:22.21 RopZoVkn.net
>>495
場合によっては Enumerable.DefaultIfEmpty 使うものあり
508:デフォルトの名無しさん
18/03/24 18:45:31.61 Jt5uczDI.net
>>495
whereでフィルタかけたならそのリストを作って、countで判別でもよさそう
509:デフォルトの名無しさん
18/03/24 18:55:23.66 o+lnSplR.net
いやそれこそ無駄だよ
510:デフォルトの名無しさん
18/03/24 19:02:00.05 vYyJGm6o.net
>>496
例えば Where(…).DefaultIfEmpty(-1).First() みたいなこと?
>>497
それは遅延評価のメリットを完全につぶしてるよね
扱ってる型によってはcountでもO(1)で性能的な問題はない場合もあるだろうけど
511:デフォルトの名無しさん
18/03/24 19:29:35.04 RopZoVkn.net
>>499
> 例えば Where(…).DefaultIfEmpty(-1).First() みたいなこと?
そう。元のコレクションに -1 があったら使えないけど
512:デフォルトの名無しさん
18/03/24 20:06:30.63 WPuMsPfE.net
>>494
プログラマなんざ99%キチガイだから正しいだろ?
根拠あげろって?皆さんが根拠だろうにご冗談を
513:デフォルトの名無しさん
18/03/24 20:49:58.95 emfSYqOj.net
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);
}
}
514:デフォルトの名無しさん
18/03/24 22:39:25.79 eOg1kWoS.net
俺、そんな大ごとになるようなことを聞いちゃったのかな・・・・・
515:デフォルトの名無しさん
18/03/24 22:41:42.98 Y93sH5Wg.net
このスレはlinqを異常に嫌っているおじいちゃんが生息してるから注意してね
516:デフォルトの名無しさん
18/03/24 22:43:55.34 Y8GXLzWd.net
>>503
週末よくある光景だから気にすんな
517:デフォルトの名無しさん
18/03/24 22:49:20.91 NMOsnRxi.net
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
518:デフォルトの名無しさん
18/03/24 22:57:42.79 ADnClyNC.net
>>506
コードも張らないとアドバイスできんがな
519:デフォルトの名無しさん
18/03/24 23:01:20.44 NMOsnRxi.net
>>507
WebRequest req_1 = null;
req_1 = WebRequest.Create(str_url);
res = req_1.GetResponse();
でWEBサーバに設置したデータを取得しています。
520:デフォルトの名無しさん
18/03/24 23:03:09.08 S2nO/hPq.net
>>506
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
WebRequest request = WebRequest.Create(uri);
request.CachePolicy = noCachePolicy;
uriに文字列設定したら普通にビルド通るけど、他に何やってる?
521:デフォルトの名無しさん
18/03/24 23:04:36.74 NMOsnRxi.net
>>509
ありがとうございます。
凡ミスしてました!
using System.Net.Cache;
を別のソースファイルに書いてました、、、
522:デフォルトの名無しさん
18/03/24 23:07:50.50 bzBaKL6p.net
なぜいまどきWebRequest?
523:デフォルトの名無しさん
18/03/24 23:11:22.61 NMOsnRxi.net
エラーは消えましたが、WEBサーバ上で書き換え前の値が取得されてしまいます。
うーん、キャッシュポリシーの設定はあっているはずなのですが。
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;
524:デフォルトの名無しさん
18/03/24 23:13:30.74 NMOsnRxi.net
>>511
今ナウいのは何に使うんですか?
WEBサーバ上にはというファイルをおいてます。
[ hoge_status.dat ]
1,aaa
2,bbb
3,ccc
そして、サーバ上で「2,bbb」→「2,babaa」に
書き換えて、クライアント(C#)から上のコードを実行した時に
「2,bbb」が取得されてしまいます。
525:デフォルトの名無しさん
18/03/24 23:16:00.40 rHDBuOYV.net
URLリンク(code.i-harness.com)
526:デフォルトの名無しさん
18/03/24 23:24:46.34 NMOsnRxi.net
ありがとうございます。
サイトに記載の内容を参考に↓のコードを書きました。
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が見つからないというエラーがでます。
何か間違っていますか?
527:デフォルトの名無しさん
18/03/24 23:27:01.58 NMOsnRxi.net
using System.Runtime.InteropServices; // DLL Import
これでエラー消えました。
528:デフォルトの名無しさん
18/03/24 23:32:05.55 NMOsnRxi.net
解決しました!!
ありがとうございました!
529:デフォルトの名無しさん
18/03/25 00:22:20.31 30He22WI.net
How can I view the allocation unit size of a NTFS partition in Windows 10?
530:デフォルトの名無しさん
18/03/25 02:55:25.41 QkJGWpF+.net
>>518
fsutil fsinfo ntfsinfo
531:デフォルトの名無しさん
18/03/25 02:58:05.04 Z3IDZNHN.net
>>511
>>513
いまだとHAPかな?
532:デフォルトの名無しさん
18/03/25 03:08:23.05 eoB6ZVmc.net
特定のクラスのインスタンスを探したり列挙したりすることって出来ないのでしょうか?
A a = A();//オブジェクトの生成をどこかに記録するとか面倒なこと無しに
A b = A();
A c = A();
FindObjects(A).ForEach(・・・・・);//雰囲気としてはこんなことがやりたいんです
533:デフォルトの名無しさん
18/03/25 03:09:02.83 eoB6ZVmc.net
嗚呼、今見たらnewが抜けてた・・・・
534:デフォルトの名無しさん
18/03/25 06:50:33.94 ODva5YKs.net
コンパイラの選択次第で出来上がりの性能でそんなに変わる?
535:デフォルトの名無しさん
18/03/25 07:44:12.53 iS73Z4MS.net
>>521
できない
お前が言ってるのを実現してしまったら、
var a = new Message(text: "うんこ");
a.Print(); //textに渡した内容を出力する
で一行目と二行目の間にaの内容が勝手に他所から書き換えられている可能性を常に考慮しないといけなくなるんだぞ?
初心者ならピンとこないかもしれないけどね
初心者がプログラミング言語を学ぶときは常に以下のように考えることが大切
・これを作った人は自分より遥かに頭が良く経験豊富である
・普通の方法でできないのは、それが悪いことだから
536:デフォルトの名無しさん
18/03/25 08:04:35.72 vPJlyNvz.net
>>521
コンストラクタでどこかに記録しときゃいいだけじゃね?
任意のクラスでやりたいならコンパイラに手を入れるなりしないと無理
537:デフォルトの名無しさん
18/03/25 09:55:55.34 Z3IDZNHN.net
>>521
生成後、List<A> Alistにaddすれば可能。
538:デフォルトの名無しさん
18/03/25 10:33:10.02 sIW0PrXb.net
グローバル変数が大好きなんだな
539:デフォルトの名無しさん
18/03/25 10:36:47.24 XLrMHO3h.net
時代はグローバル
540:デフォルトの名無しさん
18/03/25 10:37:55.50 5WPMat6H.net
>>521
class A{
public static readonry List<A> allList = new List<A>();
public A(){
allList.Add(this);
}
public void Dispose(){
allList.Remove(this);
}
自分ならこうやってクラス内のstaticに入れておく
541:デフォルトの名無しさん
18/03/25 10:40:15.38 BGDDphgd.net
>>521
参照するだけなら自分に属しているフォームやクラスは列挙できるだろ
あとは名前で探せよ
542:デフォルトの名無しさん
18/03/25 10:54:23.63 5WPMat6H.net
明示的にDisposeを呼ぶのが面倒というなら、
リストに入れるのを弱参照にしてデストラクタを実装すれば全自動に出来るよ
543:デフォルトの名無しさん
18/03/25 10:57:31.10 BGDDphgd.net
>>531
探して代入したものでDisposeやCloseもできる。インスタンスの書き換えはできない
521が何のためにやりたいかによる
544:デフォルトの名無しさん
18/03/25 11:09:02.92 Ol/c1EKt.net
レガシーシステムで一番困るのはグローバル変数
これ以外は簡単にリファクタリング出来るがグローバル変数だけは簡単にはいかない
545:デフォルトの名無しさん
18/03/25 11:20:06.56 vPJlyNvz.net
普通の知能持ってたら>>529みたいにクラス内のスタティック変数でやると思う
グローバル連呼してる奴は知能足らなさすぎじゃね?
546:デフォルトの名無しさん
18/03/25 11:21:28.40 Kz38QhUD.net
他言語のグローバル変数マンがpublic staticマンになる
547:デフォルトの名無しさん
18/03/25 11:31:07.75 sIW0PrXb.net
>>534
ただ、
UnkoWorld-●UnkoArea-●Unko
みたいな関係にしたくなったとき
それでやってると
ウンコみたいにウンコウンコになるんちゃう?
548:デフォルトの名無しさん
18/03/25 11:34:42.78 Ol/c1EKt.net
>>534
パブリックなら同じ
最初に書くときにらくだからって堕落して思考停止してグローバルを使うと
だんだん考える力が衰えてこういう判断ができなくなる
549:デフォルトの名無しさん
18/03/25 11:40:28.11 Ol/c1EKt.net
パブリックスタティック書くお^q^
グローバル連呼は知能がたらないお^q^
ぼくはかしこいんだお^q^
おっおっ^q^
これがグローバル変数を使う人間の末路です
恐ろしですね
550:デフォルトの名無しさん
18/03/25 11:42:06.07 hyW7/lyL.net
末期やな>>538のグロ厨
551:デフォルトの名無しさん
18/03/25 11:42:40.12 sIW0PrXb.net
俺も一瞬いいかな?
とか思ったけどpublicにされた時点ですべてが駄目なことに気づいた
552:デフォルトの名無しさん
18/03/25 11:45:41.52 /CvrewET.net
具体的にどういうときにそうしたくなるか書いてあればヒントがでてくるかもしれないけど
一般的になんでもかんでもそうしたいと言うのはNGだと思う
553:デフォルトの名無しさん
18/03/25 11:53:10.41 yM5ntbb+.net
>>529のケースだとpublicにする必要ないよね
554:デフォルトの名無しさん
18/03/25 11:58:50.34 /CvrewET.net
ローカルで使い捨て目的でAを作ったとしても
明示的にdisposeしないと消えない
c++のnew deleteのメモリリーク問題を回避するためにガベージコレクションの仕組みができたのに
また逆戻りするだけ
555:デフォルトの名無しさん
18/03/25 12:01:37.82 Ol/c1EKt.net
privateならOKってのも短絡的だよな
独立に生成したはずのオブジェクト同士が外から見えない部分で密かに連携し合っているとか破滅の臭いがプンプンするぜ
556:デフォルトの名無しさん
18/03/25 12:02:42.33 sIW0PrXb.net
>>542
>>529はNG
こうやって使いたくないときもこうなっちゃうじゃん
static抱えちゃうのは悪手
557:デフォルトの名無しさん
18/03/25 12:10:21.24 /CvrewET.net
public じゃなかったらどうやって要素を列挙するんだよ
558:デフォルトの名無しさん
18/03/25 12:15:08.82 sIW0PrXb.net
>>546
多分仕様がウンコ
客と詰めきれてない
コードばっかり見てるとバカになるやつの典型
外の空気でも吸ってきたらよい
559:デフォルトの名無しさん
18/03/25 12:16:49.43 vPJlyNvz.net
>>546
えっ? w
まあパブリックにしても外部から書き換えられないなら大抵は問題ない
>>537とかはパブリックと言うだけで思考停止してる老害なんだろうな
560:デフォルトの名無しさん
18/03/25 12:20:32.55 /CvrewET.net
>>548
えじゃねーよ
考えてなかっただろ
561:デフォルトの名無しさん
18/03/25 12:22:41.04 yM5ntbb+.net
>>545
フレームワーク側でstaticをガンガン使ってるけどそれには文句言わないの?
562:デフォルトの名無しさん
18/03/25 12:26:42.83 eoB6ZVmc.net
そうか、>>521で書いちゃったのが実現できるようにすると、いつまでもインスタンスへの到達可能性が残ってGCが機能しなくなるのか
全然わからなかったわ
563:デフォルトの名無しさん
18/03/25 12:27:48.76 /CvrewET.net
>>551
そういうこと
目的を絞った特殊な状況でしか使えない
一般的に使うのはNG
564:デフォルトの名無しさん
18/03/25 12:29:14.40 hyW7/lyL.net
>>551
ならんわw
565:デフォルトの名無しさん
18/03/25 12:42:56.52 PVODPgu2.net
いつもそうだけど、本質を少しも突かない頭の悪いやり取りしかないねw
論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
俺はないことはないと思う。
ただ、揚げ足取りかもしれんが、>>529はList<T>をそのまま公開してるのはまずい
566:デフォルトの名無しさん
18/03/25 13:09:44.61 5WPMat6H.net
>>554
実際やるときはさすがにprivateにしてstatic ForEachを実装するし、
ライブラリ化するならセーフティとしてリストをWeakReference<T>にしてデストラクタで自動削除するよ
ただ掲示板でそこまで長々と書く気はないだけで
567:デフォルトの名無しさん
18/03/25 13:13:01.00 Tb46nDVy.net
指定の時刻を過ぎたらbackgroundworkerを止める仕組みを作りたいのですが
なにかおすすめの方法はありますでしょうか?
568:デフォルトの名無しさん
18/03/25 13:27:59.98 lVxRvEma.net
>>555
クラスの扱いの話がクラス自身を変更しちゃってる実装に違和感
569:デフォルトの名無しさん
18/03/25 13:51:57.79 JPEij3S4.net
>>556
それだけだとどこで時間を確認するべきかすらわからん
仕様きちんと決めてから質問して
570:デフォルトの名無しさん
18/03/25 13:55:31.94 5MzIJnBg.net
>>549
はあ?
そう言うイテレーター作る
571:だけだろ w
572:デフォルトの名無しさん
18/03/25 14:09:46.22 5MzIJnBg.net
>>551
デストラクタでリストから外せばいいだけ
もしくはIDisposableにしてdispose( )で外すとかでもいい
573:デフォルトの名無しさん
18/03/25 14:39:30.42 HUiARVtR.net
>>560
参照が残った状態でデストラクタが働くの?
574:デフォルトの名無しさん
18/03/25 14:41:03.20 5WPMat6H.net
>>561
世の中には弱参照というものがあってな
575:デフォルトの名無しさん
18/03/25 15:22:13.04 Ol/c1EKt.net
そういやここ初心者スレだったか
>>548みたいなのも居るか
576:デフォルトの名無しさん
18/03/25 15:29:41.34 Zk7ZAw6P.net
また元の質問者蚊帳の外に置いて盛り上がっている
オレオレ仕様で議論されても誰の役にも立たないんだよ
577:デフォルトの名無しさん
18/03/25 15:39:34.96 vPJlyNvz.net
>>563
グローバルガーって知ったかして恥ずかしいからって粘着するなよ w
578:デフォルトの名無しさん
18/03/25 15:40:34.61 Ol/c1EKt.net
>>565
は?
579:デフォルトの名無しさん
18/03/25 15:48:44.21 XJO2spvZ.net
初心者スレでマウントするイキリオタクにはなりたくないね
580:デフォルトの名無しさん
18/03/25 16:05:42.72 vPJlyNvz.net
グローバルガーでマウント取ろうとして失敗したID:Ol/c1EKtをそこまでバカにしてやるなよ w
581:デフォルトの名無しさん
18/03/25 16:28:46.20 n/bZLhLz.net
インスタンス生成と生成されたインスタンスをコレクションに追加するのは別のクラスの役割
>>521はコレクションの要素を型でフィルタリングできたらいいわけだから素直に実装したほうがいい
582:デフォルトの名無しさん
18/03/25 16:28:46.85 rmzLSBrs.net
よう分かりませんけど、このスレをプリントアウトして明日朝一番で精神科にかかることをお勧めします
このIDが僕です!って正直に言うんだよ
583:デフォルトの名無しさん
18/03/25 16:46:03.35 TrFdb9nA.net
>>569
わざわざクラスを増やす必然性はないだろ
584:デフォルトの名無しさん
18/03/25 16:50:54.77 5WPMat6H.net
>>569
クラス単体で閉じてる機構をわざわざ外部に別けて何がしたいんだよ
メンテナンス性が下がるだけじゃん
585:デフォルトの名無しさん
18/03/25 16:55:50.35 sIW0PrXb.net
>>572
いや、この仕組みが入っているがために使えない状況が出てきちゃうんじゃね?
586:デフォルトの名無しさん
18/03/25 16:57:56.62 sIW0PrXb.net
本来クラスAがクラスA足る為に必要な処理じゃないんだよ
リストに追加なんてのは
587:デフォルトの名無しさん
18/03/25 17:00:09.33 n/bZLhLz.net
>>571
>>572
きみたちマジか!!
オブジェクト指向設計原則の基礎だぞ
それを破るだけのメリットがあるユースケースなのかな?
588:デフォルトの名無しさん
18/03/25 17:11:36.39 5WPMat6H.net
>>573-575
そこまで言うなら実際に書いて見せてみろ?
589:デフォルトの名無しさん
18/03/25 17:19:41.51 sIW0PrXb.net
>>576
普通にlist外に出せよ
590:デフォルトの名無しさん
18/03/25 17:27:26.70 +wly4/Cl.net
>>577
グローバルがだいしゅきなの?
591:デフォルトの名無しさん
18/03/25 17:35:09.99 vPJlyNvz.net
>>577
へっ?
外出ししてグローバルにしろとでも言うのか? w
592:デフォルトの名無しさん
18/03/25 17:37:41.15 +wly4/Cl.net
>>575
型として絶対使わない機能を分離してどうするの?
オブジェクト指向の目的もしかして理解してない?
593:デフォルトの名無しさん
18/03/25 17:38:38.10 sIW0PrXb.net
>>579
誰もグローバルなんて言ってないけど
どっから出てきたん?
594:デフォルトの名無しさん
18/03/25 17:44:59.40 +wly4/Cl.net
>>581
どこの誰がどんなスコープでList持つ想定でいるの?
595:デフォルトの名無しさん
18/03/25 17:45:57.80 sIW0PrXb.net
>>582
まあ、それ次第だよな
596:デフォルトの名無しさん
18/03/25 17:49:26.15 +wly4/Cl.net
>>583
A.ForEachでアクセスする変数をA以外に持たせたら漏れなくグローバルになるけど、何を思ってAの外に出せと言ったの?
597:デフォルトの名無しさん
18/03/25 17:50:30.14 sIW0PrXb.net
>>584
ならねーよ
死ねよ
598:デフォルトの名無しさん
18/03/25 17:50:49.15 vPJlyNvz.net
>>581
なら
> 普通にlist外に出せよ
のlistをどこに置くのか言ってみろよ
599:デフォルトの名無しさん
18/03/25 17:52:11.71 sIW0PrXb.net
>>586
使うやつが勝手に作ればいいじゃん
クラスAにはなんの関係もないことだ
600:デフォルトの名無しさん
18/03/25 17:52:
601:42.22 ID:vPJlyNvz.net
602:デフォルトの名無しさん
18/03/25 17:53:06.16 sIW0PrXb.net
>>588
は?どこが?
603:デフォルトの名無しさん
18/03/25 18:04:31.71 5WPMat6H.net
>>587
自身の生成したインスタンス一覧を保持するのはclass Aの基本要件だが、
何でお前はそれを無視してclass Aの仕様そのものを変えたがるんだよ
604:デフォルトの名無しさん
18/03/25 18:11:58.07 sIW0PrXb.net
>>590
え?要件定義でそんなの出てくるの?
頭おかしいからだろ?
605:デフォルトの名無しさん
18/03/25 18:12:36.02 Vv01uOP7.net
初心者がマウントのために吠えあうスレになってんなw
>>521は作成したインスタンスをコレクションで持っていれば終わる話なのに
606:デフォルトの名無しさん
18/03/25 18:13:47.46 +wly4/Cl.net
>>591
あたまわっるー
607:デフォルトの名無しさん
18/03/25 18:16:24.49 a4i6A50g.net
>>591
要件定義クソワロタwww
608:デフォルトの名無しさん
18/03/25 18:17:30.34 sIW0PrXb.net
>>592
だよね
609:デフォルトの名無しさん
18/03/25 18:17:53.31 h+QwjUa5.net
たった数行のコードなりUMLなり書けば伝わる話なのに、
何十行も日本語書き連ねて言い訳してる時点で初心者以下だと思うのね
俺の考えた設計が最高と思うならC#で書けよ
書けないなら黙れ、素人
610:デフォルトの名無しさん
18/03/25 18:18:45.66 sIW0PrXb.net
>>596
でもお前単発じゃん
ご自慢の主張したいコードが付いてないけど?
611:デフォルトの名無しさん
18/03/25 18:19:20.14 xrxDySNz.net
しょうもな
一般論を言えば>>587が正しいが、これでは質問者の要件は満たせない。
>587は必要があってシングルトンにしてるクラスについて、
そんなことしなくても使う側が一つのインスタンスだ作ればいいじゃないか、って言ってるのと同じ
612:デフォルトの名無しさん
18/03/25 18:23:46.34 sIW0PrXb.net
>しょうもな
>一般論を言えば>>587が正しい
ここで止めろよ
初心者の質問なんだからよ
正しいこと覆して話進める価値あるの?
613:デフォルトの名無しさん
18/03/25 19:06:07.44 vPJlyNvz.net
>>592
> >>521は作成したインスタンスをコレクションで持っていれば終わる話なのに
いや、そんなことはみんなわかっててそのコレクションをどこに置くんだって話
老害レベルの知ったかがグローバルとか口走ってごまかすのに必死になってるだけ w
614:デフォルトの名無しさん
18/03/25 19:43:00.47 Ol/c1EKt.net
グローバル変数を使うど素人はさっさと転職したほうがいいぞ
615:デフォルトの名無しさん
18/03/25 19:50:31.57 XLrMHO3h.net
え?まさかプロがこんな所覗いて浅い知識ひけらかしてる訳じゃないよな?
616:デフォルトの名無しさん
18/03/25 20:11:31.70 sIW0PrXb.net
>>602
時代はグローバル
617:デフォルトの名無しさん
18/03/25 20:13:55.09 XLrMHO3h.net
>>603
山田くん、座布団一枚!w
618:デフォルトの名無しさん
18/03/25 21:08:37.79 ntckGCHi.net
Nugetでdll等をインストールする時にApp.configも一緒に差し替える事って可能なのでしょうか?
無理ならApp.configを書き換える手段を知りたいです
EntityFrameworkをインストールするとプロジェクトのApp.configも一緒に書き換えられてると思います
これと同じことがやりたいです
619:デフォルトの名無しさん
18/03/25 21:18:29.22 o6f1Dm/5.net
>>520
しらなんだー
使ってみます!
仕事でプログラム組んでた時にはいろいろと新技術を追いかけて勉強してたんだけど、
仕事じゃなくなるととりあえず、やりたい事を達成する為に
必要な機能をおいかける様になりますな。
620:デフォルトの名無しさん
18/03/25 23:07:48.90 30He22WI.net
引数ありで起動した場合はフォームを表示させずに処理させたいんだけど……?(°_ 。)?(。_ °)?
621:デフォルトの名無しさん
18/03/25 23:12:48.41 B8f0LaKL.net
出来るよ
622:デフォルトの名無しさん
18/03/25 23:48:35.48 n/bZLhLz.net
>>576
>>580
あおりじゃなく君たちがマジだったってのはわかったよ
質問者が明示的に指定した要望を満たす事だけを考えてるから話が噛み合わなかったのね
指定されたwhat
623:が正しい前提でhowを考えるか 正しくない可能性も考慮してwhyを含めて考えるか 視点の違い
624:デフォルトの名無しさん
18/03/25 23:59:44.77 fmRuNsvM.net
「○○なことがしたいんだけど…」
「その要望は正しくないから考えを改めるべきだ!」
正しくないからやらない
プログラマとは思えない凄い斬新な発想だな
625:デフォルトの名無しさん
18/03/26 00:09:13.21 v9FPJIaO.net
素直に「ぼくにはできましぇん(泣)」って言えばいいのにね
626:デフォルトの名無しさん
18/03/26 00:11:47.31 YTVmG1TL.net
質問でも回答でもないレスは他でやれ
>>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;
}
//ここから下に引数があった時の処理
}
}
627:デフォルトの名無しさん
18/03/26 00:13:56.74 m3Kkye2j.net
とりあえず初心者用スレで語るの辞めてもらえませんか
628:デフォルトの名無しさん
18/03/26 00:16:17.47 QH+aPMzj.net
ヨーダ記法はやめてくれ…
629:デフォルトの名無しさん
18/03/26 00:24:06.83 cY1aRMKv.net
>>610
設計しない下請けプログラマー的発想だな
630:デフォルトの名無しさん
18/03/26 00:31:10.42 XKiwACKR.net
元請けだと実際>>610は普通にあるね
ほとんど全ての案件において、客の妄想のとおりに作るなんて不可能だし、できたとしても結果的に客の利益にならない
631:デフォルトの名無しさん
18/03/26 00:36:48.08 PvcYNBhB.net
>>615-616
よく知恵袋にいる質問者にSEKKYOしてる奴みたいなことしてんのか
お前らさては無職だな?
632:デフォルトの名無しさん
18/03/26 00:42:45.85 vpzWQp7E.net
またボケ老人同士のの繰り言合戦が始まった
繰り返すが、論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
恐らくないことはない。
一般論としては要件の合理性に疑問を持つことは悪くないが、
上記の通りこの件に関してはただの言い掛かり
633:デフォルトの名無しさん
18/03/26 00:50:14.64 Dv2PEULu.net
より素晴らしい設計が本当に頭に浮かんでるならそれを見せればいいのにね
何も開示しない、ただ頭ごなしに否定するだけなら、言っちゃなんだけど何も作れない素人の戯言だよね
634:デフォルトの名無しさん
18/03/26 02:26:07.62 wzFW36Lw.net
こういうコントロールの構造なんですが、Buttonがクリックされた時にTextBoxの文字を変更したいんですが、どうするのがベストでしょうか?
今は、Buttonから、ParentでFormまで辿って、そこからTextBoxまで辿り着いてるんですが、凄い非効率な気がします・・・
これと同じ構造のインスタンスが最大70個くらい出来ます。
↓
Form - Panel1 - Panel2 - TextBox
- Panel3 - Panel4 - TabControl - TabPage - Panel - Button
635:デフォルトの名無しさん
18/03/26 02:43:07.18 cavhWqCs.net
直接インスタンスを指定できないの?
private void Button_Click ( ... )
{
this.HogeTextBox.Text = "hoge";
}
636:デフォルトの名無しさん
18/03/26 04:07:03.39 AffV6ek/.net
イベントメソッドの共通化や、自作のボタンクラスの話だったりといった特殊なことをしたいのかな?
普通は上にある通りクリックイベントでテキストボックスの値を変えるだけ70個ボタンがあるなら70個書けばいいだけなんだけど
637:デフォルトの名無しさん
18/03/26 07:56:24.40 M54ZFy+S.net
スタートボタンを押すとbackgroundworkerのwhileループを実行し、キャンセルボタンを押すと停止するプログラムを作りました
これを9時になると自動でスタートし、17時になると停止するプログラムにしたいのですがどうすればいいでしょうか?
自動停止時にはキャンセルボタンを押した時と違いそれ専用の処理を行いたいです。
638:デフォルトの名無しさん
18/03/26 08:10:40.35 DzDpiGFR.net
コントロールの種類・処理が異なるなら、
各コントロール毎に、イベントハンドラーを付ける
逆に、コントロールの種類・処理が同じなら、
各コントロールの親に、イベントハンドラーを付けて、親で処理する
同じような関数を、たくさん作るのは良くないから
639:デフォルトの名無しさん
18/03/26 08:15:42.61 DzDpiGFR.net
>>623
「windows タスクスケジューラ」で検索!
640:デフォルトの名無しさん
18/03/26 12:37:28.74 KMiayiKp.net
どういった方法を使えばいいかすらわかりません
タスクスケジューラーはなしでやりたいです。
641:デフォルトの名無しさん
18/03/26 12:43:13.71 ErqiV+UW.net
自分で自分を起動するメタプログラムやね
642:デフォルトの名無しさん
18/03/26 12:49:56.47 ZELYO3P5.net
>>626
なんで?
それだともうサービスアプリみたいな方法しかないけど
苦労の割にタスクスケジューラと変わんないよ
643:デフォルトの名無しさん
18/03/26 12:54:28.04 4B0nX6es.net
>>623
タスクスケジューラなんて関係ないから騙されちゃダメwww
要は今はUIのボタンを押して人が手動で開始/停止してるのを
開始時刻/停止時刻で自動でやりたいってだけでしょ?
そんなのタイマでも使って時計をポーリングするだけ。
何が難しいのよ逆に
644:デフォルトの名無しさん
18/03/26 12:59:57.75 ZELYO3P5.net
アプリは起動してる前提でいいの?
終了してると動かないけど
645:デフォルトの名無しさん
18/03/26 13:02:31.43 oo+qoL1t.net
何が難しいかと言えば、ボタンが有るだけに「閉じるボタン」押されてアプリが落ちる件
646:デフォルトの名無しさん
18/03/26 13:06:38.61 PvcYNBhB.net
また常駐アプリの概念すら知らない初心者が知ったかでアドバイスしてる
647:デフォルトの名無しさん
18/03/26 13:13:11.57 4B0nX6es.net
これ前も書いたけど、常駐なんて概念は20年以上前のシングルタスクのDOSの概念
今時何の意味ももたない
何が知ったかだよアホかほんと
648:デフォルトの名無しさん
18/03/26 13:17:42.44 xJxqYO19.net
マルチタスクで常駐が意味無いなんて初めて聞いたがどこ情報だよ
ソース出してみ?
649:デフォルトの名無しさん
18/03/26 13:18:39.78 4UQMW5SP.net
windowsで○○時にアプリを起動したいという目的に一番かなっているのはタスクスケジューラー
linuxでもcron使う局面
ずっと起動しっぱなしのアプリやサービスでポーリングやタイマー使うこともできるけど無駄
650:デフォルトの名無しさん
18/03/26 13:21:52.38 PvcYNBhB.net
>>635
『アプリを起動』なんて言葉は>>623のどこにも書いてないけどな
651:デフォルトの名無しさん
18/03/26 13:28:09.86 xpW3ZJwT.net
単に起動するだけならタスクスケジューラーでよいと思うのですが
時間が過ぎたら、それ専用の動きをして停止したいのです
なのでタスクスケジューラーでは難しいかなと
timerで検索したり、同じような悩みの質問を探してみると必ず「タスクスケジューラー!」という回答者がいるのですが、求めているのはそれではないんです!
652:デフォルトの名無しさん
18/03/26 13:29:55.97 4UQMW5SP.net
時間が過ぎたらってただ単にDatetime.Nowが指定した時間を経過したかどうか調べるだけだけど
653:デフォルトの名無しさん
18/03/26 13:31:09.52 xpW3ZJwT.net
>>629
タイマーを使って時計をポーリング?
という方法で調べてみます
ありがとうございます
654:デフォルトの名無しさん
18/03/26 13:32:01.24 4UQMW5SP.net
backgroundworkerのwhileループで指定された時間を超えてるか調べる
もし超えてたら何かをして終了
655:デフォルトの名無しさん
18/03/26 13:32:30.43 xpW3ZJwT.net
>>638
その方法を調べてみます
656:デフォルトの名無しさん
18/03/26 14:27:09.74 oo+qoL1t.net
>>632
ボタンが有るGUIのあるソフトなんだから、普通にユーザーがウインドウを閉じることを想定すべきだよ
対策は閉じるを無効にするとか、GUIと本体を分離するとか、ユーザー教育でなんとかするとか、パソコン自体をソレ専用にするとか
何処らへんで妥協するか考えないとな
657:デフォルトの名無しさん
18/03/26 14:47:34.51 PvcYNBhB.net
「大変!右上の×押したらプログラムが終了しちゃう!」
だから常駐化しろよって話だろ?
658:デフォルトの名無しさん
18/03/26 14:51:53.23 b4TsAUH3.net
それでいつ開始すんだ?
朝7:00に起動するとして
前日18:00に閉じて
朝8:00に開いたので起動
でおk?
659:デフォルトの名無しさん
18/03/26 14:55:32.88 EeYp3eGw.net
聞かれとこと答えずに必要のないこと聞き返したり聞かれていないこと回答する人たち
oo+qoL1t
b4TsAUH3
660:デフォルトの名無しさん
18/03/26 15:04:02.11 b4TsAUH3.net
>>645
いいじゃん
後は質問者が抜けを塞げばいいよ
661:デフォルトの名無しさん
18/03/26 15:08:18.93 b4TsAUH3.net
職業柄すべてのケースをマトリックスで表現しないと組ませてもらえないから気になるんだよ
662:デフォルトの名無しさん
18/03/26 15:09:01.34 DzDpiGFR.net
ポーリングは、やったらダメなのが常識だろw
素人が助言してる
CPU が動き続ける。
CPU使用率が100% になって、フリーズするだけw
663:デフォルトの名無しさん
18/03/26 19:03:18.07 Hi5Z0lMV.net
>>648
1秒タイマーでもCPU負荷なんてゼロも同然だよ
まさかノーウェイト全力ループさせることしか思いつかないとか?
664:デフォルトの名無しさん
18/03/26 19:06:27.36 lrnbqywH.net
デスクトップアプリでAzureのデータベースと接続したいのですが、一般的に接続文字列等はどうやって隠蔽するんでしょうか
ハードコーディングしてもリバースエンジニアリングされたらモロバレになるので気になります
665:デフォルトの名無しさん
18/03/26 19:12:25.54 2N4AiZYB.net
>>650
URLリンク(sqlazure.jp)
666:デフォルトの名無しさん
18/03/26 19:21:09.66 Sl5sXtlN.net
>>650
FPGAまで落とし込むんだ
667:デフォルトの名無しさん
18/03/26 21:20:01.51 e5zVULSK.net
現在の日付時刻が設定した日付時刻より後か前か判断するにはどうしたらいいでしょうか?
datetime同士で引き算とかは可能なのですか?
668:デフォルトの名無しさん
18/03/26 21:26:27.62 SPNFNX7k.net
>>653
キーワードわかっているものはさすがにググれ
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
減算・後の数値かどうか。メソッドも演算子も全部書いてある
669:デフォルトの名無しさん
18/03/26 21:52:26.85 e5zVULSK.net
ありがとう御座います
datetime同士の計算結果であるtimespanはtimespan>=0やtimespan<0で場合分けしても差し支えないのでしょうか
670:デフォルトの名無しさん
18/03/26 21:55:12.57 VM7iT5OR.net
>>655
いや普通にDateTime同士で大小比較できるぞ
671:デフォルトの名無しさん
18/03/26 22:00:38.75 /1kq2kd6.net
いや、それ以前に
>>654がせっかく
> 演算子も全部書いてある
って言ってるんだからちゃんと見ようよ
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
672:デフォルトの名無しさん
18/03/26 22:08:40.49 e5zVULSK.net
なるほど、datetimeで大小比較すればいいのですね
ありがとう御座います
msdn分かりにくくありませんか?
難しい(*_*)
673:デフォルトの名無しさん
18/03/26 22:18:02.65 AHHYeqDL.net
>>658
分かりにく�
674:「よね 俺も前からそー思ってけど言い出しにくかった
675:デフォルトの名無しさん
18/03/26 22:36:24.40 pJYeIgRu.net
unixtimeを4.0でDateTime型に変換するにはどうすればよかたい
676:デフォルトの名無しさん
18/03/26 22:42:13.90 iiFlz3sh.net
>>660
4.0とは?
677:デフォルトの名無しさん
18/03/26 22:56:15.63 e5zVULSK.net
backgroundworker開始時に次の17時になるdatetimeを取得してループ開始、ループ毎に現在のdatetimeと設定のdatetimeを比較して過ぎていたら停止させようと思うのですが
次の17時のdatetimeを取得する方法はありますか?
678:デフォルトの名無しさん
18/03/26 23:34:03.76 Hi5Z0lMV.net
c# datetime unixtime
679:デフォルトの名無しさん
18/03/26 23:48:44.24 lh4NSg1Q.net
>>662
datetimeそのものじゃなくても時間だけならHourを比較したらいいよ
var h=Datetime.Now.Hour;
if( h>=9 ){ ... } //9時以降なら
680:デフォルトの名無しさん
18/03/26 23:56:49.96 pJYeIgRu.net
>>661
.netです
681:デフォルトの名無しさん
18/03/27 00:02:34.95 RoQzbf+s.net
>>664
それがすごい気になるんですが
9時以降っていうのは何時までを指すのでしょうか?
極端な話次の日の8時とかになっても条件を満たしますか?
682:デフォルトの名無しさん
18/03/27 00:06:42.35 5DREL+sj.net
>>665
.NET Framework4.0のこと?もうとっくにサポート切れてるけど合ってる?
683:デフォルトの名無しさん
18/03/27 00:06:43.46 1syCFnvF.net
どこ基準のUNIXTIMEか知らないけど1970年1月1日からの経過秒数だから
var origin =new DateTime(1970,1,1);
var unixtime=DateTime.Now-origin;
タイムゾーンは自分で好きなようにしてください
>>666
Hourはあくまでも時間の部分だけだから0時になったら満たさなくなる
条件はよく考えて自分で設定すること
684:デフォルトの名無しさん
18/03/27 00:08:14.05 1syCFnvF.net
ああ抜けてる
var origin =new DateTime(1970,1,1);
var unixtime=( DateTime.Now-origin ).TotalSeconds;
685:デフォルトの名無しさん
18/03/27 00:20:12.69 RoQzbf+s.net
なるほど、ではループが30分の場合
終了を23時50分に設定してしまうと止まらず動いたままになる可能性もあるということですね
686:デフォルトの名無しさん
18/03/27 00:30:37.92 i+K8FLsM.net
>>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時まで何かする
}
687:デフォルトの名無しさん
18/03/27 00:33:39.52 1syCFnvF.net
Datetimeのコンストラクタはいろいろなパターンがあるからどうとでも作れる
DatetimeはTimespanを足して新しいDatetimeもつくれるので
まあじっくり見て勉強することだな
終了条件をどのように設計してるのか知らないけど特定の日付の特定の時刻を設定してたら
途中で休止などして時刻を過ぎた後、再度復帰した場合すぐ終了してしまう
そして、指定時間以降だったらまたすぐ動くことになる
などどういうことを想定するよって何を選ぶかは変わる
688:デフォルトの名無しさん
18/03/27 00:34:17.93 1syCFnvF.net
>>671
思いっきりバグコードだけど
689:デフォルトの名無しさん
18/03/27 00:36:06.00 RoQzbf+s.net
>>671
これいいですね!
解決しそうです。ありがとうございます。
xの?や:の意味がわかりませんがとりあえずコピペします
ラムダ式みたいなものかな?
690:デフォルトの名無しさん
18/03/27 00:36:42.86 RoQzbf+s.net
>>673
!
691:デフォルトの名無しさん
18/03/27 00:38:51.06 i+K8FLsM.net
>>673
えっ!?
692:デフォルトの名無しさん
18/03/27 00:40:05.98 1syCFnvF.net
>>675
>>676
勘違いしてた
9時スタートで5時終わりの話を引きずってるのかと思ってた
693:デフォルトの名無しさん
18/03/27 00:42:26.00 tVuDF99u.net
>>667
え、ソースは?
694:デフォルトの名無しさん
18/03/27 00:43:09.93 RoQzbf+s.net
よかったです
?はifで:はelseみたいなものですかね?
便利ですね
695:デフォルトの名無しさん
18/03/27 00:46:08.70 1syCFnvF.net
16時59分スタートなら1分でストップ
17時00分ジャストなら次の日の17時まで24時間でストップ
696:デフォルトの名無しさん
18/03/27 00:52:08.65 i+K8FLsM.net
>>671は17時直前に呼び出すと何もしないで終わる可能性があるな
do whileのほうがいいかもしれん
697:デフォルトの名無しさん
18/03/27 00:52:53.72 dhIDlkWy.net
終了を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分まで何かする
}
698:デフォルトの名無しさん
18/03/27 00:54:52.06 dhIDlkWy.net
>>680
こんな感じでも特に問題はありません。
むしろわかりやすくて希望通りです。
699:デフォルトの名無しさん
18/03/27 00:55:47.09 7SLvU9BO.net
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);
}
700:デフォルトの名無しさん
18/03/27 00:56:05.12 1syCFnvF.net
>>682
試せばいい
DateTime.Nowじゃなくて自分てnew Datetime()して
自由にnを作って試せばいい
701:デフォルトの名無しさん
18/03/27 00:59:24.75 1syCFnvF.net
>>684
AddHours(24)なのはなぜ?
うるう秒があったらずれる(そんな仕組みは多分ないけど)
702:デフォルトの名無しさん
18/03/27 01:00:54.28 1syCFnvF.net
AddDaysでもずれるか
703:デフォルトの名無しさん
18/03/27 01:04:20.64 5DREL+sj.net
>>678
ググれば一発やろ
704:デフォルトの名無しさん
18/03/27 01:05:23.72 Q5x4N+CR.net
無限ループやってる奴はわざとなのかガチなのか
705:デフォルトの名無しさん
18/03/27 01:11:21.45 t3gWSj15.net
仕様が全く見えて来ない
706:デフォルトの名無しさん
18/03/27 01:13:48.60 t3gWSj15.net
9:00~17:00でいいんだよな?
707:デフォルトの名無しさん
18/03/27 01:16:52.17 dhIDlkWy.net
とりあえずその時間帯ですが21時から5時までとかにも対応するようにしたいです。
とりあえず出来そうです助かりました。
708:デフォルトの名無しさん
18/03/27 01:17:51.30 5DREL+sj.net
>>669
.NET4.6以降ならBCLに専用のAPIが用意されてるからこんなことしなくていいんだけどね
709:デフォルトの名無しさん
18/03/27 01:19:00.55 tVuDF99u.net
>>693
糞会社が4.0止まりなんだ
710:デフォルトの名無しさん
18/03/27 01:20:41.65 rY6p5Eum.net
>>694
4.0はもうサポート対象外だし、Windows Server 2012も非対応なのに使わざるを得ないとか同情するわ
711:デフォルトの名無しさん
18/03/27 01:24:49.59 t3gWSj15.net
>>692
最大実行時間は何時間なん?
21時~3日後の21時までなんて可能性は排除できるん?
平日と休日とで違いはないん?
とかね
なんか仕様がモヤっとしてんじゃん
712:デフォルトの名無しさん
18/03/27 01:30:08.36 dhIDlkWy.net
>>696
だいたい8から13時間程度の稼動になります!
713:デフォルトの名無しさん
18/03/27 01:30:24.22 ff4RZBmU.net
4.X系ならアップグレードのコストはそんなにかからないだろうに
お前が変えさせるか、辞めちまえ
714:デフォルトの名無しさん
18/03/27 01:36:06.94 t3gWSj15.net
>>697
最大よ最大
返答に範囲が返って来ると気が狂うん
イレギュラーケースの最大を聞いてん
715:デフォルトの名無しさん
18/03/27 01:49:34.53 XpaqG/wa.net
最大13時間です!
すいません!
716:デフォルトの名無しさん
18/03/27 03:45:35.94 7OwU1Hvz.net
同期プリミティブ
URLリンク(www.tokumaru.org)
ポーリングは、ダメの見本。常識
ランデブーとか、待ち合わせしたいだけだろ。
それ�
717:ゥ、非同期で、callback してもらえば良いだけw
718:デフォルトの名無しさん
18/03/27 04:03:08.18 E80vD2cb.net
task.delay(100)とTheading.sleep(100)ってどう違うの?
719:デフォルトの名無しさん
18/03/27 07:45:14.33 i+K8FLsM.net
素人ってやたらとポーリングを嫌うよね
720:デフォルトの名無しさん
18/03/27 09:12:45.31 8h15hFzc.net
CPU100%とか言ってるし無限ループと勘違いしてるんだろ
721:デフォルトの名無しさん
18/03/27 09:37:19.37 84JRCCml.net
まあ素人さんはしょうがない
722:デフォルトの名無しさん
18/03/27 09:39:14.11 kmAPzdoZ.net
>>702
Thread.Sleepは指定した時間自分のスレッドを停止する
Task.Delayは「指定した時間停止するスレッド」を生成する
Task.Delayは単独では意味がないのでawaitなりContinueWithなりする
723:デフォルトの名無しさん
18/03/27 09:48:09.70 rY6p5Eum.net
async/awaitの勉強しているんだが、async voidやasync Taskのメソッドをawait無しで呼び出したらそのメソッドの処理は投げっぱなしになるの?
724:デフォルトの名無しさん
18/03/27 10:48:57.49 fbReATtq.net
そだよ。
725:デフォルトの名無しさん
18/03/27 12:21:35.26 7OwU1Hvz.net
そもそも、MS が、50ms 以上掛かる処理は、同期処理するなって言ってるだろ。
非同期処理にして、callback してもらうようにって
「ポーリング」で検索して、色々な記事を読め
726:デフォルトの名無しさん
18/03/27 12:28:13.60 xeybzECW.net
何がそもそもなんだw
>>709の世界ではDateTimeの比較演算に50msもかかるのかw
30年前のPC-98だってそんなにかからないと思うけどww
ネタなのかマジなのか知らんけど、そもそもHW資源を直接触れないOS上で動くコードは
一件コールバックのように見える処理も実態はポーリング
単にそれがシステム側のコードに隠蔽されてるだけ
727:デフォルトの名無しさん
18/03/27 12:35:46.40 GW1/xmrB.net
spin lock なんてものは無かったんや
いやぁ勉強になるなぁ
728:デフォルトの名無しさん
18/03/27 12:38:24.18 rY6p5Eum.net
>>708
サンクス
729:デフォルトの名無しさん
18/03/27 12:39:38.04 nnyxYnJQ.net
元々タスクスケジューラで十分な話をよくもここまで長々と続けられるな
730:デフォルトの名無しさん
18/03/27 12:44:03.80 Eb35YKQg.net
質問にとは関係ない部分で知識をひけらかしたい奴がいるから
731:デフォルトの名無しさん
18/03/27 13:12:24.26 8gmuwQWV.net
仮にオレがこのソフトを作るとしたら、NotifyIconのデザインで小一時間悩むところから始まるだろうね
732:デフォルトの名無しさん
18/03/27 13:45:19.52 7OwU1Hvz.net
何時間も待つ処理だろ。
50ms を超えてるから、非同期処理を使えって、MS が言ってる
自分でプログラミングで、ポーリングしたらダメ
OS の内部処理とは関係ない
733:デフォルトの名無しさん
18/03/27 13:53:27.94 Eb35YKQg.net
思い込み激しい奴だな
734:デフォルトの名無しさん
18/03/27 14:12:37.92 9YSJ28+H.net
指定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?
c:\test
aaa.txt
bbb.txt
ccc.txt
...etc
指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。
アンパンマン → バイキンマン
といった具合です。
735:デフォルトの名無しさん
18/03/27 14:24:49.80 zZm0N0X4.net
スレチ
736:デフォルトの名無しさん
18/03/27 14:35:31.77 ClOSXPHI.net
1秒タイマーでタイムアウトするたびに目的の時刻を越えたか
調べるだけでいいじゃないの
違ったら即抜けるだけなのに、50msも掛かる処理じゃねーよ
なんでわざわざタスクスケジューラー使わにゃならんのだ
737:デフォルトの名無しさん
18/03/27 15:21:58.88 1rmw5Lza.net
>>709
ぜんぜん理解してないじゃん
738:デフォルトの名無しさん
18/03/27 18:28:00.64 84JRCCml.net
コミュ障は病気だからやむを得ないが
読解力は人並みに身につけてから書き込んで欲しいよなw
739:デフォルトの名無しさん
18/03/27 19:38:51.59 8gmuwQWV.net
タイマーのインターバルは10秒とか100秒だけじゃなくて、10年でも100年でも設定できるんだから
起動時に開始と停止までの時間を計算してタイマー設定すれば
ポーリングしなくても良いんじゃね?
740:デフォルトの名無しさん
18/03/27 19:41:02.82 RNGaKb4X.net
>>723
時刻合わせせずPCの時計を常に基準にするのか
というか仕様や設計の話は他でやってくれないかな
741:デフォルトの名無しさん
18/03/27 19:46:25.47 a4CYTpTn.net
>>723
Timerのインターバルはint型でmsec指定
1年の秒数は31536000秒
あれぇ?
742:デフォルトの名無しさん
18/03/27 20:12:24.26 foR5XOpk.net
>>724
PCの時刻を基準にしないでどうすんの?
純粋に興味あるから教えてくれ
743:デフォルトの名無しさん
18/03/27 20:34:44.17 8gmuwQWV.net
>>725
wpfばかり使ってたんで、DisptcherTimer基準にしていたわ
悪いな
744:デフォルトの名無しさん
18/03/27 20:36:49.79 D1lCzr9q.net
初心者の陥りがちなミス
Timeの精度を信用してしまう
途中で時刻修正の入る場合などを考慮しない
745:デフォルトの名無しさん
18/03/27 20:40:14.18 8gmuwQWV.net
>>724
今のPCはネットに繋がっていれば時間は自動で合わせてくれる
インターネットに繋がっていない前提ですか?
746:デフォルトの名無しさん
18/03/27 20:42:13.82 RAm1FIuU.net
そおです
747:デフォルトの名無しさん
18/03/27 20:51:58.53 SJRVUf0s.net
>>710
30年前ってPC9801あったっけ?
748:デフォルトの名無しさん
18/03/27 20:56:33.38 vavxlF2f.net
>>731
初代は1982年(36年前)
749:デフォルトの名無しさん
18/03/27 20:58:54.08 FNmJga7y.net
こういうインフラの煩わしい制約からコアになる処理を分離したい
ワーカー側は終了再開するためのapiを用意して時間や終了再開するタイミングの事は一切考えない
時間を管理するクラスが適切なタイミングでそれらのapiを実行する
というのが正解な
時間管理クラスが内部でループぶん回そうがシステムコール使おうがそれはどうでもいい
750:デフォルトの名無しさん
18/03/27 21:05:37.51 D1lCzr9q.net
c#環境では指定時刻にイベントを起こすAPIは用意されてない
751:デフォルトの名無しさん
18/03/27 21:12:23.97 9YSJ28+H.net
指定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?
c:\test
aaa.txt
bbb.txt
ccc.txt
...etc
指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。
アンパンマン → バイキンマン
といった具合です。
752:デフォルトの名無しさん
18/03/27 21:13:34.93 D1lCzr9q.net
>>735
スレチ
ここはc#のスレ
753:デフォルトの名無しさん
18/03/27 21:14:46.44 1tsj2UvO.net
>>701
callbackはどんな条件のものをどうやって作るんだ
>>729
時刻合わせのタイミングでインターバル補正するコードは思いつかないな
時間定期的にcheckするだけのものをどこまで難しくする気だコイツら
754:デフォルトの名無しさん
18/03/27 21:22:44.33 rY6p5Eum.net
>>737
お仕事でなんでこの仕様からこんな糞コードが生まれるんだろと不思議に思うことあるけど、このスレの流れ見たらある意味納得だわ
755:デフォルトの名無しさん
18/03/27 21:23:33.47 8gmuwQWV.net
>>737
1秒ポーリングでも最大1秒弱の誤差が出るわけだが、内蔵時計ってそこまで精度悪いの?
実用上問題ない誤差に見えるがちょっと気にしすぎじゃね?
756:デフォルトの名無しさん
18/03/27 21:30:26.48 xeybzECW.net
どうでもいい
そんな盛り上がるネタじゃないだろうw
いい加減止めたら?
757:デフォルトの名無しさん
18/03/27 21:43:38.37 RAm1FIuU.net
他に居場所がないのでしゅよw
758:デフォルトの名無しさん
18/03/27 21:44:08.38 FNmJga7y.net
悲しいね
759:デフォルトの名無しさん
18/03/27 22:08:17.45 t3gWSj15.net
1秒ポーリングでやろうぜ
現在時刻が開始~終了時刻の範囲
起動Flagなし
起動処理
起動Flag立てる
現在時刻が開始~終了時刻の範囲外
起動Flagあり
終了処理
起動Flag下ろす
(*゚∀゚)bできた!
760:デフォルトの名無しさん
18/03/27 22:29:48.19 FkzRU/Z7.net
回答者の方は基本情報持ってるもんですか?
761:デフォルトの名無しさん
18/03/27 23:11:24.08 a4CYTpTn.net
持ってるけど少し勉強すれば誰でも取れる資格に意味なんてあるの?
精々資格手当で給料が5000円プラスされる程度の価値しかないぞ
762:デフォルトの名無しさん
18/03/27 23:19:17.56 LCPGZ3qz.net
5000円の価値も分からないとか働いたことないのかな?
763:デフォルトの名無しさん
18/03/27 23:32:40.08 FNmJga7y.net
うちは1万増える
764:デフォルトの名無しさん
18/03/27 23:34:25.90 zFrY2ZyB.net
5,000円も上乗せとかウラヤマ過ぎだろ
うちなんて高度取っても報償金30,000円だけ
基本や応用ではなにもでない
765:デフォルトの名無しさん
18/03/27 23:42:52.53 7OwU1Hvz.net
10年以上やってる奴でも、基本情報技術者は取れない
大卒の新米が、こんなの簡単に取れますよねって言ったら、
中堅社員は皆、新米をにらみつけていたw
企業の資格取得率は、年1%(100人中1人)ぐらいだろ。
10年いても、9割の社員は、資格を取れない
766:デフォルトの名無しさん
18/03/27 23:53:23.07 FNmJga7y.net
申し込みしたけど忙しくて受験できない人は沢山居るけど受験して落ちる人はいない
767:デフォルトの名無しさん
18/03/27 23:53:50.72 3aWOhLkC.net
俺は応用情報まで持ってて+1万だなー
>10年以上やってる奴でも、基本情報技術者は取れない
……冗談だろ?
768:デフォルトの名無しさん
18/03/27 23:58:15.55 3aWOhLkC.net
さておき、建築士だの医師だの弁護士だのみたいに
「この職務に就くには、○○の資格が必要」とかいう業界じゃないんで
本当に、ただ給料が増えるだけではあるな (採用試験でもまあ有利にはなるかもしれん)
増えたら増えただけ嬉しいもんではあるが
年間で+12万なら、家電の買い替え費用くらい楽に捻出出来るし
769:デフォルトの名無しさん
18/03/27 23:58:26.75 9YSJ28+H.net
定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?
c:\test
aaa.txt
bbb.txt
ccc.txt
...etc
指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。
アンパンマン → バイキンマン
といった具合です。
770:デフォルトの名無しさん
18/03/28 00:00:54.89 02fULCHO.net
botかな
771:デフォルトの名無しさん
18/03/28 00:09:13.46 pf/Jvdmo.net
>>752
普通は資格手当ては基礎賃金扱いだからボーナスや残業計算対象でもっと貰えるよ
基本情報で5000は羨ましいけど資格手当て込みのベースにしてるパターンもあるから一概にいいとはいえないかもね
772:デフォルトの名無しさん
18/03/28 00:16:20.41 0was1dJs.net
Ruby の、Dir.glob で書ける
Dir.glob('C:/test/*.txt') do |file|
# gsub(/アンパンマン/, 'バイキンマン')で全部を置換する
end
773:デフォルトの名無しさん
18/03/28 00:44:23.36 Im6j951B.net
C# もしくは 既に要件を満たすツールがあれば教えてください。
774:デフォルトの名無しさん
18/03/28 01:02:57.21 GnpAMkN4.net
>>753
マジレスするとVisualStudioで可能
775:デフォルトの名無しさん
18/03/28 01:13:32.94 qs/6O+TS.net
>>757
WindowsでC#使ってるならVisual Studio使ってるんだろ?
フォルダーを指定して置換でいいと思うが
URLリンク(msdn.microsoft.com)
776:デフォルトの名無しさん
18/03/28 07:24:31.11 1/4U3eU2.net
>>753
awkやろ
百歩譲ってRubyとかのP系言語
C#は向いてない
777:デフォルトの名無しさん
18/03/28 07:34:12.04 NtzDkwr+.net
powershell
778:デフォルトの名無しさん
18/03/28 22:10:34.35 LHMXaAz3.net
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未満の意味がわからないのですが
なぜこんな計算をしているのでしょうか?
779:デフォルトの名無しさん
18/03/28 22:12:50.37 6nNahb2+.net
止まるんじゃねぇぞ…
780:デフォルトの名無しさん
18/03/28 22:21:23.63 Im6j951B.net
>>759
VS2017にそんな機能があったんですね。便利!
VS2010じゃその機能はないよね?
781:デフォルトの名無しさん
18/03/28 22:33:50.78 r3METhPg.net
>>762
そのコードを書いた奴に聞けよ
782:デフォルトの名無しさん
18/03/28 22:42:38.68 qs/6O+TS.net
>>764
2008 でもある
URLリンク(docs.microsoft.com)(v=vs.90)
たぶんもっと前からあったような気がする
783:デフォルトの名無しさん
18/03/28 22:52:23.87 Im6j951B.net
>>766
知らなんだ。サンクス
784:デフォルトの名無しさん
18/03/29 00:01:16.76 LDL0rnP5.net
>>762
その前にMath.Absが付いとるじゃろ
目的の値との差をとって、その絶対値が5未満
つまり、ぴったり一致しなくても±4までの誤差ならOKとしている
785:762
18/03/29 00:10:37.10 3/dH7jim.net
>>768
なるほど!誤差の為ですか
ちょっとした技を使ってたんですね
ありがとうございました。
786:デフォルトの名無しさん
18/03/29 12:17:07.66 48quLBzg.net
質問です。よろしくお願いします。
URLリンク(tb.click-sec.com)
をブラウザで開くとzipファイルのDLが始まるので、これをC#でDLしようと思ったのですが、
このURLのままだとSystem.Net.WebClient.FileDownloadでもWebBrowserコントロールで開いてもzipファイルのDLができません。
どうすればいいのでしょうか。 👀
Rock54: Caution(BBR-MD5:8e40a50a3146c71e5aa506574dbd07bd)
787:デフォルトの名無しさん
18/03/29 12:30:39.81 49BUJ49m.net
諦める
788:770
18/03/29 12:50:22.61 48quLBzg.net
IEに開かせればできるかもと思ったのでやってみます。
789:デフォルトの名無しさん
18/03/29 14:42:04.00 fRxUhejE.net
すまんが、イベントハンドラーを空っぽにするのってどうやんの?
790:デフォルトの名無しさん
18/03/29 15:00:44.15 mcXZqOx8.net
nullから空っぽのラムダ式を入れる
もしそのイベントを持つクラスの外からやりたいと言ってるならそれは無理
無理と言うより、そんなことをしたいと思うこと自体が間違ってる
791:デフォルトの名無しさん
18/03/29 19:35:16.02 2ivypk2R.net
>>773
-= イベントハンドラ;
792:デフォルトの名無しさん
18/03/30 11:54:45.53 LK6mi3V8.net
ユニットテストについて質問
例えば計算クラスのテストをするときは
[TestCase(-2, 2)]
public void AbsTest(int a, b){
int n = Math.Abs(a);
Assert.AreEqual(n, b);
こういう風に正しい値を予め手計算で用意しておくものなの?
793:デフォルトの名無しさん
18/03/30 12:24:31.95 Aig7x3ki.net
>>776
一般的にはその通り
間違っても n = a < 0 ? -a : a とかやってはいけない
ちょっと考えたら分かると思うけど、そういうのは全く意味のないオレオレテスト
手計算がどうしても困難なら、デバッガで動かしてその結果が合ってるかを検証してその値をコピペしとけ
少なくとも意図しないデグレの検出には役立つ
794:デフォルトの名無しさん
18/03/30 12:34:29.62 LK6mi3V8.net
>>777
ありがとう!
チェック項目が増えると引数が酷いことになるから何か間違えてるのかと思ってた
795:デフォルトの名無しさん
18/03/30 12:46:02.45 Aig7x3ki.net
>>778
それはテストの観点を適切に直行化できてないんじゃないか?
引数xが3以上のとき結果は必ず負になることが期待されるとしたら、
テストは3と3を超える値を引数に入れて、それぞれの結果yについて y < 0 が真となることを確認すればいいんだぞ
何を確かめたいのかを明確にしてそれをそのままコードで書くんだよ
796:デフォルトの名無しさん
18/03/30 14:10:01.41 tnFi4c/U.net
LinqのJoinメソッドに渡すメソッドなんだけど、ラムダ式で書く方法が全然理解できないぜ・・・・
多分、掲示板で解説するのも難しいと思うので、やさしく解説してるページやら本やらがあったら教えて!!!
797:デフォルトの名無しさん
18/03/30 14:45:38.48 L1eApEVG.net
>>780
どれがわかりやすいかなんて人それぞれだから宛にならないよ
ラムダ式でぐぐって良さそうなら熟読してわからない所を質問するといい
798:デフォルトの名無しさん
18/03/30 14:48:53.79 CpZcazmB.net
ラムダ式とか正規表現とか、記憶してるやついないから大丈夫
毎回ググればいい
799:デフォルトの名無しさん
18/03/30 15:28:55.57 87KFZNYL.net
ラムダ式って、無名関数の構文糖だろ
func (引数1, 引数2) => 戻り値
(a, b) => result
800:デフォルトの名無しさん
18/03/30 16:00:30.28 BIk3pBCX.net
λを採用した祖の言語LISPなんてわざわざ(lambda~)と毎回書いてるのに変な略称=>なんて許されんばい
λと書きんしゃい
801:デフォルトの名無しさん
18/03/30 16:46:29.66 kajlCXLR.net
またはじまった
802:デフォルトの名無しさん
18/03/30 17:32:32.77 +cAt7TAV.net
ランバダのPVはエロかったなあ
関係ないけど
803:デフォルトの名無しさん
18/03/30 18:08:45.57 qHFB3R53.net
>>780
この本よかったぞ
基本的な知識はあるがLINQ、ラムダ、推論型の知識があやふやならおススメ
「C#プログラマーのための 基礎からわかるLINQマジック! 」
URLリンク(www.amazon.co.jp)
804:デフォルトの名無しさん
18/03/30 18:19:24.61 LI6oPksr.net
人脈?
805:デフォルトの名無しさん
18/03/30 18:25:17.02 QYlpMr10.net
質問失礼します。
以下のようなプログラムを書いたところコメントに書いたようなメッセージが表示されますが、
このメッセージに従ってインライン化しようにも、どのように修正すれば良いか分かりません。
これは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 変
806:数の宣言をインライン化できます if (x == 1) { getMessage1(out message); } else { getMessage2(out message); } Console.WriteLine(message); }
807:デフォルトの名無しさん
18/03/30 18:42:11.73 q+LDJ3nt.net
そんなもん買っても十中八九忘れる
基本ネットに転がってるコピペで食いつなぐのが一流
808:デフォルトの名無しさん
18/03/30 18:44:40.56 LI6oPksr.net
>>789
なんでoutを使うのかが分からないんだけど
809:デフォルトの名無しさん
18/03/30 18:49:12.82 +cAt7TAV.net
>>789
"IDE0018"でググったら一発で解説が見つかるんだけどw
何でその長文タイプうする前に検索しないのよw
そこが分からん
810:デフォルトの名無しさん
18/03/30 18:57:29.01 roepBgfb.net
>>789
これ、どうしろって言ってん?
811:デフォルトの名無しさん
18/03/30 18:57:31.26 LI6oPksr.net
>>792
そういうことを言ってるんじゃないと思うけど…
手元にあるc#7.1じゃ再現しないんだけど
812:デフォルトの名無しさん
18/03/30 18:59:03.69 LI6oPksr.net
普通に考えるとスコープから外れるからインライン化できないはずなのにインライン化を進めてくるってことでそ
813:789
18/03/30 19:11:19.76 QYlpMr10.net
早速たくさんのレスありがとうございます。
お返事に少し時間がかかってしまいそうなので、上から順に書き込みたいと思います。
お待たせしてしまって申し訳ありません。
>>791
レスどうもありがとうございます。
色々なクラスで定義されているTryParseやIDictionaryのTryGetValueは
使いやすいと感じていて、それを参考に定義したメソッドをifの内側で使おうとしたのが
>789のようなプログラムを書いた経緯です。
しかし確かに複数の情報を返却したければそれ用のクラスを定義すれば良いことですし、
C#7ではタプルも構文化されているので、もはやoutは時代遅れということでしょうか。
C#にはいくつか負の遺産もあるということなので、その辺りについても勉強したいと思います。
814:789
18/03/30 19:21:12.54 QYlpMr10.net
>>792
説明が不十分で申し訳ありません。
>>795の方が分かりやすく説明してくださっているので蛇足になってしまうかも知れませんが、
私が検索した範囲では、
string message;
getMessage1(out message);
は
getMessage1(out string message);
に直せば良いということは分かったものの、変数の定義と関数の呼び出しとの間に
(今回の例のifのような)別のコードがあって、それが移動できないように見えても
メッセージが表示されてしまう場合があるということです。
ただ、「移動できないように見える」という部分に自信がなかったのと、
仮にそれが正しかったとしてもこのようなメッセージをどの様に受け止めれば良いのかが
よく分からなかったので質問させていただきました。
815:789
18/03/30 19:31:31.59 QYlpMr10.net
>>793
IDEがなんと言ってきているのか、とういことでしょうか。
サンプルコードを空行も含めて上から数えて7行目のコメント文なのですが、
「IDE0018 変数の宣言をインライン化できます」というメッセージが表示されます。
それとも、私がどのようなお返事を期待しているかとういことであれば、
このメッセージに対処するためのプログラムの修正方法や、
このようなメッセージに対する考え方などを教えていただけないかと考えています。
しかし、私の期待していること自体が見当はずれということもあると思うので、
それ以外でも何か気がつくことがあれば教えていただけると嬉しいです。
816:デフォルトの名無しさん
18/03/30 19:34:47.70 roepBgfb.net
msに
これ壊れててん?
ってメール出してみよう
817:デフォルトの名無しさん
18/03/30 19:44:57.86 DYwliZHB.net
VSとターゲットのフレームワークのバージョンを書いてないのがいまいち
818:789
18/03/30 20:00:44.22 QYlpMr10.net
>>794
早速検証までしていただいてどうもありがとうございます。
また、本来書くべきC#のバージョンが抜けてしまっていて申し訳ありません。
>>789
を始めに確認したときのターゲットフレームワークは4.6.2だったので、
以下の対応表によればC#のバージョンは6.0ということになるのでしょうか。
URLリンク(qiita.com)
しかし、その後ターゲットフレームワークを4.7.1や3.5に変更して試してみても
やはり同じメッセージが表示されました。
あと、これも後出しになってしまって申し訳ないのですが、
あからさまな構文エラーと違ってこのメッセージはコンパイルするまで表示されないようです。
IDEはVisual Studio 2017を使用していて、OSはWindows 10 Pro 64 bitです。
他に何かお伝えすべきことがあれば教えていただけると嬉しく思います。
よろしくおねがいします。
819:789
18/03/30 20:06:29.84 QYlpMr10.net
>>795
分かりやすく補足していただいてどうもありがとうございます。
C#のバージョンについてもそうですが、正確にお伝えするための情報の確認が不十分でした。
これはプログラミング以前の問題だと思うので気をつけていきたいと思います。申し訳ありません。
820:789
18/03/30 20:18:53.64 QYlpMr10.net
>>799
アドバイスどうもありがとうございます。一日程度このスレッドを拝見してみて、
私の勘違いという証拠が見つからなければマイクロソフトに報告してみようと思います。
報告する場合、Visual Studio の
「ヘルプ(H)>フィードバックの送信(F)>問題点の報告(P)」を利用しようと考えていますが、
もし他におすすめの連絡先などがあれば教えていただけると嬉しく思います。
821:デフォルトの名無しさん
18/03/30 20:21:01.69 keCNvJ3G.net
つまりこう書けるよってことじゃないの?
if(x == 1) getMessage1(out string message);
else getMessage2(out string message);
822:デフォルトの名無しさん
18/03/30 20:23:34.69 sxHgkaP9.net
>>803
URLリンク(www.google.co.jp)
URLリンク(vimalakitty.blogspot.jp)
823:789
18/03/30 20:32:11.02 QYlpMr10.net
>>800
おっしゃる通りで、大変失礼いたしました。申し訳ありません。
>>801と内容が一部重複してしまいますが、これまでの内容を改めて整理したいと思います。
(これまでいただいたレスの表現を一部お借りしています)
問題の概要:
関数のout引数に関して、スコープから外れるためインライン化できないと思われる場面で
インライン化を推奨するメッセージが表示されることがある
問題を再現するコード及びメッセージの内容:
>>789
問題が再現する環境:
Windows 10 Pro 64bit
Visual Studio 2017
ターゲットフレームワーク:3.5/4.6.2/4.7.1 で確認
備考:
コードのコンパイル後にメッセージを確認
以上です。他に何か書くべきことがあれば教えていただけると嬉しいです。
どうぞよろしくお願いいたします。
824:デフォルトの名無しさん
18/03/30 20:37:12.26 +cAt7TAV.net
>>803
何でそうなるw
だから、まずググろうよ"IDE0018"で
そうすればこれはC#7の追加機能に起因する警告であり、不具合ではないとすぐに分かる。
何でそんな長文タイプする手間は惜しまないのにちょっと検索する手間は惜しむのよw
意味が分からん
ちなみに、この警告を無視するにはこうするんだってさ
URLリンク(developercommunity.visualstudio.com)
これもググってれあばすぐに自分で見つけられてるはず
825:デフォルトの名無しさん
18/03/30 20:40:09.19 keCNvJ3G.net
一行ならブロックスコープ外せるから>>804だと思うんだけど自分の6.0環境では試せなくて悲しい
826:デフォルトの名無しさん
18/03/30 20:59:52.66 keCNvJ3G.net
ごめん、無理だね
ブロック外してもスコープはローカルになっちゃうみたい
827:789
18/03/30 21:13:54.63 QYlpMr10.net
>>804>>808>>809
修正方法のご提示とご検証どうもありがとうございます。問題は>>809にお書きいただいたとおりです。
ただ、お書きいただいた通り問題はスコープにありますので、
Console.WriteLine(message);をifとelseの両方の中に書けばこの問題は起こりません。
この程度の内容を2回書くことは大した問題になりませんし、
この部分に対応するコードが長くなってしまった場合もメソッドとして切り出せば同じことですので、
いただいたレスを読みながら、>>789のようなプログラムを書くこと自体が筋が悪くて、
やはり>>804に適合するプログラムになるよう全体を修正するべきなのかなとも考えました。
ただ、メソッドとして切り出す方法であらゆる状況に対応できるかどうか自信がないので、
いずれにしても確信は持てていない状況です。
828:デフォルトの名無しさん
18/03/30 21:24:37.09 DYwliZHB.net
>>807
いつまでトンチンカンなこと言ってんの?
829:デフォルトの名無しさん
18/03/30 21:25:20.49 DYwliZHB.net
例のおじいちゃんかよ
レスして損した
830:デフォルトの名無しさん
18/03/30 21:28:28.22 +cAt7TAV.net
>>811
トンチンカンでもおじいちゃんでもないからw
こんなググればすぐに理由も対処法もわかる話でMSにクレーム付けたら
質問者が恥をかくだけ
831:デフォルトの名無しさん
18/03/30 21:30:10.03 DYwliZHB.net
NG推奨
832:デフォルトの名無しさん
18/03/30 21:30:33.31 roepBgfb.net
>>813
じゃ、どうしろって書いてあんの?
リンクのどこ見ればいいかわかんないよ
対象のコード貼ってくれ
833:デフォルトの名無しさん
18/03/30 21:30:33.58 +cAt7TAV.net
>>814
もうした
834:デフォルトの名無しさん
18/03/30 21:31:54.48 DYwliZHB.net
おじいちゃんに触れても無駄だよ
いつまでも間違いに気づいてないしレスも読んでないから
835:デフォルトの名無しさん
18/03/30 21:32:50.48 +cAt7TAV.net
>>815
無視するか気になるなら>>867で対処する
当たり前でしょう
836:デフォルトの名無しさん
18/03/30 21:33:56.46 roepBgfb.net
>>818
じゃ、バグってんじゃんw
837:デフォルトの名無しさん
18/03/30 21:34:34.33 +cAt7TAV.net
>>819
だから何でそうなるw
意味が分からない
838:デフォルトの名無しさん
18/03/30 21:35:21.33 DYwliZHB.net
>>819
おじいちゃんはまだ何が起こってると言う話なのか判ってないからレスしても無駄
スコープもわからないから
839:デフォルトの名無しさん
18/03/30 21:36:16.37 +cAt7TAV.net
>>821
トンチンカンなことを言ってるのは君の方なんだけど、自覚がないってのは幸福でいいねw
840:デフォルトの名無しさん
18/03/30 21:37:18.61 roepBgfb.net
>>820
いや、バグでしょコレ
だってこんなん指摘してきた同僚がいたらキチガイじゃん
841:デフォルトの名無しさん
18/03/30 21:37:22.84 MnRWcQoL.net
>>810
Visual Studio のバグでしょ
とりあえず頓珍漢野郎の>>807のリンク先に抑止方法書いてあるからそれでしのげばいいかと
842:デフォルトの名無しさん
18/03/30 21:38:22.07 +cAt7TAV.net
っていうか、>>789みたいなコードが警告されるのはむしろ当たり前。
outの変数を使いまわしするなんてよい作法とは言えないからだ
843:デフォルトの名無しさん
18/03/30 21:39:20.19 DYwliZHB.net
ジジイはトンチンカンすぎてダメだな
いつまでたっても成長しない
844:デフォルトの名無しさん
18/03/30 21:40:20.48 MnRWcQoL.net
使い回しとかほんとに意味わかってないんだな w
845:デフォルトの名無しさん
18/03/30 21:41:00.76 roepBgfb.net
>>825
使うからoutしてんじゃん
ガイジが過ぎるぞ自重しろ
846:デフォルトの名無しさん
18/03/30 21:41:07.53 +cAt7TAV.net
しかし、バグバグいってる連中はちゃんとググって解説記事読んでるのかねw
こんなのが同僚だったら張り倒すよw
847:デフォルトの名無しさん
18/03/30 21:41:48.65 DYwliZHB.net
ジジイは失礼なので取り消しておじいちゃんにまた戻す
848:デフォルトの名無しさん
18/03/30 21:42:50.83 roepBgfb.net
>>829
ありえねーレベルのアホだなw
outしたの使わないでどーすんだよ
849:789
18/03/30 21:45:40.64 QYlpMr10.net
>>805
参考ページのご紹介どうもありがとうございます。
このページは拝見したのですが、問題の解決に至る道筋を見つけることができませんでした。
(確認したページのうち主要なものはあらかじめお伝えしておくべきだったかもしれません。
申し訳ありません。)
質問させていただいている身でこのようなことをお願いするのは大変心苦しいのですが、
もしお時間に余裕がありましたら具体的な修正方法のご説明をお願いすることはできませんでしょうか。
ご説明の中で私の疑問を理解していただければ幸いですし、
いただいたご説明で問題が解決できれば願ってもないことです。
煽るような文章で答えを引き出すような形になってしまい大変申し訳ありませんが、
私の説明能力の無さゆえの苦肉の策ということで、どうぞ失礼をお許しください。
850:デフォルトの名無しさん
18/03/30 21:46:08.85 rq+fXpbo.net
ガイジでいいだろ
本人もそう言ってる
851:デフォルトの名無しさん
18/03/30 21:49:29.47 DYwliZHB.net
>>832
とりあえず別のことに時間使ったほうがいいよ
ひまーな時に思い出して修正されたか確かめるといい
うちじゃ全然再現されないからどうしようもない
852:789
18/03/30 22:03:34.15 QYlpMr10.net
ID:+cAt7TAV 様
警告の抑制方法についてご案内いただきどうもありがとうございます。
他に解決策が見つからなければマイクロソフトに問題を報告し、
マイクロソフトに修正していただけるまで教えていただいた方法で警告を抑制したいと思います。
ただ、他の方にいただいたレスも拝見し、やはり私としてはこのメッセージが適切であるとは確信できずにいます。
もしお時間に余裕がありましたら、>>832のお願いを ID:+cAt7TAV 様にもさせていただけないでしょうか。
お願いの方法も内容も大変失礼なもので申し訳ないのですが、どうぞお許しください。
853:デフォルトの名無しさん
18/03/30 22:06:55.10 +cAt7TAV.net
まあ質問者がここのお馬鹿さんを代表してMSに質問してみたらいいと思う。
恥をかくのも勉強のうちかも
個人的にはちょっと調べてちょっと自分の頭で考えれば分かるはずのことを理解しようとせず、
「このバグどうなってんだコラー」なんて突撃するのは愚の骨頂にしか思えんけど
つーか、ちょっと考えれば、この警告は余計なお世話のように思えて
一定の合理性があることぐらいすぐ分かると思うんだけど、ガチで分からない奴もいるんだね世の中には
854:デフォルトの名無しさん
18/03/30 22:10:00.19 +cAt7TAV.net
>>835
だから、警告の意図はout変数を値を戻す以上の目的で使うのはよい作法じゃないよ、
ってことでしょう。
外側のブロックでも値を使いたいなら別の変数にコピーしてねと
855:デフォルトの名無しさん
18/03/30 22:14:49.66 roepBgfb.net
は?こんなのバグだろ
856:789
18/03/30 22:22:13.29 QYlpMr10.net
たくさんご反応をいただきどうもありがとうございます。
とても勉強させていただいています。
お返事が遅くなってしまい申し訳ありません。
予想以上のレスの多さでこの話題に触れてくださった方すべてにお返事するのが難しくなってきましたので、
大変勝手ながら、これ以降、直接私の書き込みにアンカーを付けてくださった方と
特に教えていただきたいことがある方へのメッセージのみ書き込みたいと思います。どうぞよろしくお願いします。
>>825
皆さんのお話を聞いて、コードの無作法が警告メッセージの直接または間接的な原因なのではということを
かなり感じてきました。ただ、作法に関する私の理解が不十分でどうにも宙に浮いたような感覚なのです。
もしよろしければ、>>810考えについてコメントなどをいただくことはできないでしょうか。よろしくお願いいたします。