C#, C♯, C#相談室 Part92 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2017/01/28(土) 16:46:53.58ID:op86qfG/http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467211515/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
0237デフォルトの名無しさん
2017/02/27(月) 19:17:31.38ID:Ehytdfgfごちゃ混ぜで語りすぎてる。
ラムダ、LINQなんてちょっと学習するだけやん。
請負、派遣業界に無理なのは分かるがw
0238デフォルトの名無しさん
2017/02/27(月) 19:47:36.34ID:RCbBwD75みんなは、どうしてる?
図書館は、全くと言って良いほどロクな書籍が無い
後はグーグル書籍で、漁る位だし……。
0239デフォルトの名無しさん
2017/02/27(月) 19:55:43.62ID:GaZbolX80240デフォルトの名無しさん
2017/02/27(月) 20:15:06.48ID:RCbBwD750241デフォルトの名無しさん
2017/02/27(月) 20:17:13.08ID:zuqOpmfmMSDNのリファレンスを全部プリントアウトしたほうが安いんじゃね?
0242デフォルトの名無しさん
2017/02/27(月) 20:46:05.22ID:RCbBwD75その発想は無かった
因みに get setの使い道が微妙なんだけど、
具体的な使用例とか、教えてくれ><
0243デフォルトの名無しさん
2017/02/27(月) 20:55:40.51ID:SheqW2ppカプセル化
0244デフォルトの名無しさん
2017/02/27(月) 21:04:36.29ID:bir6oLGvWPFざっくり見てみたが、HTML/CSS/JavaScriptの再開発でしかない。
時期的な問題もあったのだろうが、
ここまで似せるなら最初からHTML/CSS採用しろよ、とWEB系からは見えるだろう。
WEB系の連中を引っ張り込みたいのなら、今からでも全面採用して、
HTML/CSS/C#出来るようにするべきだろう。
見た目、WEB系はC#よりも新技術の使い捨てが酷くて、余裕が無い。
彼らにとってWPFは簡単だが、学ぶのが面倒であり、その価値もないから、
Electron(HTML/CSS/JavaScript)でデスクトップアプリを作る方を選択するだろう。
面倒だから学ばない、というのはラムダもLINQも同じ。
元々無くても出来るのだから、それで苦労してない人には同期付けが無い。
その辺がメモリ保護/GCと根本的に異なる。
0245デフォルトの名無しさん
2017/02/27(月) 21:14:29.75ID:Ehytdfgf相変わらず馬鹿だな。
0246デフォルトの名無しさん
2017/02/27(月) 21:19:28.45ID:QfkRDmsT0247デフォルトの名無しさん
2017/02/27(月) 21:22:26.99ID:aCjjvIHm0248デフォルトの名無しさん
2017/02/27(月) 21:34:20.63ID:sVGz7y9C0249デフォルトの名無しさん
2017/02/27(月) 21:39:40.07ID:Ftr1v2iEElectronは遅すぎる
0250130
2017/02/27(月) 22:16:01.34ID:8x434lFb>WEB系の連中を引っ張り込みたいのなら、今からでも全面採用して、
>HTML/CSS/C#出来るようにするべきだろう。
ASP.NET MVCってまさにこれ?
0251デフォルトの名無しさん
2017/02/27(月) 22:49:12.00ID:bir6oLGv> UWP
名前しか聞いた事無かったけど、これは良いね。
HTML/JavaScriptならElectronと同じコンセプトが可能か?
HTML/C++で使いたいんだが、この組み合わせは無理なのか、、、
0252デフォルトの名無しさん
2017/02/27(月) 23:22:57.99ID:ENJIvJC40253デフォルトの名無しさん
2017/02/27(月) 23:40:54.02ID:o2MHRqlI最近の本は安くなってるよ。
一番高かったのは2000年当時、Windows関連書籍で一冊1万越えもあった。
平均7、8千円かな、5千円だと安いと感じた。
本代はケチらずばんばん買ってる。
飯の種だし、1日悩んでたら人件費何万になる?
本買って解決すれば安上がり。
0254デフォルトの名無しさん
2017/02/28(火) 00:00:06.65ID:8+bIkryZWPF → UWP という進化だよw
0255デフォルトの名無しさん
2017/02/28(火) 00:13:12.42ID:3lr7jZCG看板付け替えただけ、という見方かもしれんが、俺は進化でいいと思うぞ。
0256デフォルトの名無しさん
2017/02/28(火) 00:17:57.53ID:C4A7F+ayMFCでだいぶ前からhtml/c++はできるじゃん。
0257デフォルトの名無しさん
2017/02/28(火) 19:37:38.52ID:yxAUZLha読みたい行が何行目かは決まってるんですが、
1.1行目からその行までに含まれる文字数
2.読みたい行からファイルの末尾までの行数
は不定です。
FileStream.Seekの、バイト数ではなく行数指定出来るものがあればいいんですが。
0258デフォルトの名無しさん
2017/02/28(火) 19:42:51.05ID:9Xdv30xYループ回して対象行のカウントでホゲホゲすれば?
0259デフォルトの名無しさん
2017/02/28(火) 19:44:38.27ID:yxAUZLhaありがとうございます。
うまくできました。
StreamReader reader = new StreamReader(file,Encoding.Default);
for(int i = 0; i < 10; i++)
{
reader.ReadLine();
}
this.listBox1.Items.Add(reader.ReadLine());
0260デフォルトの名無しさん
2017/02/28(火) 20:23:35.47ID:K7hLR7oh実践で使えないコード過ぎてイラっときた
気分で改行したら終わりって
0261デフォルトの名無しさん
2017/02/28(火) 20:29:23.68ID:+WocOs48読みたい行が何行目かは決まってるのに気分で改行したがるその仕様無視にイラっときた
0262デフォルトの名無しさん
2017/02/28(火) 20:35:19.50ID:K7hLR7ohn行目ってのはあくまで質問者が宿題を読んだ感想文なわけで
0263デフォルトの名無しさん
2017/02/28(火) 20:37:44.89ID:Fq1JMnLGエスパーさんはいらないから
汎用性のないコードだってのならともかく「本来はこんな問題のはず」とか議論しても何もならん
0264デフォルトの名無しさん
2017/02/28(火) 21:08:18.23ID:pIiGTdLDどこが実践で使えないんだ(笑)
0265デフォルトの名無しさん
2017/02/28(火) 21:15:58.55ID:wrouDyFM0266デフォルトの名無しさん
2017/02/28(火) 21:19:57.27ID:BFmlECVlCopyToを使って動かしてみると、マージされているセルなどが思った通りにはコピーされないようです。
worksheet.Range(rowno + 2 + ":" + rowno + 3).CopyTo(worksheet.Range(rowno + 4 + ":" + rowno + 5));
お助けください
0267デフォルトの名無しさん
2017/02/28(火) 21:34:46.83ID:A2md68KBこういうの気持ち悪い
0268デフォルトの名無しさん
2017/02/28(火) 21:59:17.96ID:39alJvfiStreamReaderをCloseしようね
内部的には同じだけどFile.ReadLines()を使ってElementAt()とかで目的の行が取れるよ
0269デフォルトの名無しさん
2017/02/28(火) 22:08:38.41ID:s47hQ+GZじゃ、お前んとこってテキストファイルの行数でデータ定義するの?
0270デフォルトの名無しさん
2017/02/28(火) 22:11:57.45ID:39alJvfi0271デフォルトの名無しさん
2017/02/28(火) 22:14:30.88ID:pIiGTdLD普通にID管理だけど、チートやバグが発生した場合に行数管理で正常か
どうか判断する局面も有るけど?
0272デフォルトの名無しさん
2017/02/28(火) 22:24:32.74ID:+WocOs48測定データ1分1行で定義されてて、1日置き=1440行ごと読み出しとか、行数でのデータ取扱なんてざらだよ
0273デフォルトの名無しさん
2017/02/28(火) 23:03:34.74ID:s47hQ+GZ面倒でも日時入れるわ
データがないとき(?)って空白出すの?
超面倒じゃん
データがないって判定もヤバそう
0274デフォルトの名無しさん
2017/02/28(火) 23:10:22.11ID:AHF/JWRtReadLinesは全部メモリに読むから、ファイルがでかい可能性があるなら避けたほうがよいかも
0275デフォルトの名無しさん
2017/02/28(火) 23:12:03.23ID:z/77EZzb運用が面倒臭すぎる
0276デフォルトの名無しさん
2017/02/28(火) 23:25:18.45ID:39alJvfi読まないよ
全部読むのはReadAllLines
0277デフォルトの名無しさん
2017/03/01(水) 01:43:58.56ID:jez9uqUVテキスト読み出しながら、登録したキーワードに引っかかったらreplaceする必要があるんだけど、(足りない脳味噌の範囲で)どうやってもクッソ遅い。
キーワードと置換後文字はDictionaryで管理してるけど、そもそもキーワードが8200程ある上に、テキストも1ファイルあたり平均約2.7万文字あってもう無理(テキストファイルは1日あたり1600ほど生産されてる)
速度は諦めるしかない?
0278デフォルトの名無しさん
2017/03/01(水) 01:54:31.83ID:XgpeB6sRすまん、そうだった
0279デフォルトの名無しさん
2017/03/01(水) 04:22:26.99ID:uGJVx5D1どのくらいで遅いって言ってるのか次第じゃない?
キーワードにマッチする単位で単語分割できてれば入力の単語単位で辞書にぶつけるのが効率よさそう
ただ3万文字程度ならキーワードの数だけ入力を走査しても言うほど時間かからない気がする
0280デフォルトの名無しさん
2017/03/01(水) 07:58:17.12ID:ElQ6OcG3キーワードを予め文字単位でツリー化しておいて辿っていけば?
1文字読むたびに最大でもキーワードの最大文字数と同じ数だけのツリーのポインタを1歩進めるだけで済む
0281デフォルトの名無しさん
2017/03/01(水) 08:04:58.33ID:SJrJxNnQ> StreamReaderをCloseしようね
そこは using だろ
0282デフォルトの名無しさん
2017/03/01(水) 08:26:19.47ID:mkeal5qn0283デフォルトの名無しさん
2017/03/01(水) 14:31:13.79ID:UzmiTiReDomainのスコープを設定するにはどうすればいいでしょうか?
0284デフォルトの名無しさん
2017/03/01(水) 15:36:27.74ID:yuocqMDOまた、キーワード「こね・ねこ」があるとき、どちらに該当する?
0285デフォルトの名無しさん
2017/03/01(水) 17:28:21.57ID:9PjUMtQQフォームにボタンAとボタンBの二つのボタンがあります
ボタンAをクリックすると、ある反復処理が延々と繰り返されます
ボタンBをクリックしてこの反復処理をストップさせるには通常どのような記述をするのでしょうか
0286デフォルトの名無しさん
2017/03/01(水) 17:33:43.62ID:kRYqKFSr反復処理の中に条件付き中断処理を入れる
もう一つのボタンを押したときに中断処理用のフラグをセットする
もちろん別スレッドじゃないとボタン押せないけど
0287デフォルトの名無しさん
2017/03/01(水) 17:36:44.01ID:kRYqKFSr反復処理中にApplication.DoEvents入れてもボタンの入力受けるけど
反応悪くなるし、今時はまず使わないだろうな
0288デフォルトの名無しさん
2017/03/01(水) 19:13:43.54ID:1ptPBH8rCancellationTokenSource cancellationTokenSource;
async buttonA_Click()
{
this.cancellationTokenSource = new CancellationTokenSource();
while ( this.cancellationTokenSource.Token.IsCancellationRequested )
{
await Task.Run( () =>
{
// 何か
}, this.cancellationTokenSource.Token );
}
}
private void buttonB_Click()
{
this.cancellationTokenSource.Cancel();
}
0289デフォルトの名無しさん
2017/03/01(水) 19:21:54.77ID:z3LIBqaM0290デフォルトの名無しさん
2017/03/01(水) 19:31:02.44ID:CFmNTLskソース上げたら誰かみてくれるよ
0291デフォルトの名無しさん
2017/03/01(水) 19:53:57.57ID:SJrJxNnQ0292デフォルトの名無しさん
2017/03/01(水) 20:31:55.65ID:r70GDLNPnot Defined
0293デフォルトの名無しさん
2017/03/01(水) 21:37:40.58ID:PGtJZLdC「At2chLib」が使用できなくなってて困っています。
なにか良いライブラリとか有りますか?
0294デフォルトの名無しさん
2017/03/01(水) 21:39:56.43ID:PR7YLHWZ0295デフォルトの名無しさん
2017/03/01(水) 21:46:15.04ID:RAuT14LS0296デフォルトの名無しさん
2017/03/01(水) 22:01:49.72ID:r70GDLNP0297デフォルトの名無しさん
2017/03/01(水) 22:08:23.90ID:PGtJZLdC0298デフォルトの名無しさん
2017/03/01(水) 22:31:30.38ID:78O8EuSm0299デフォルトの名無しさん
2017/03/01(水) 22:38:28.52ID:fB20izlq違法だったら良いのにな…
もし違法だったらVIPで埋めまくってる奴逮捕されていなくなるはずなのにな…
はぁ…
0300デフォルトの名無しさん
2017/03/01(水) 23:00:18.14ID:U2Od4VRx0301デフォルトの名無しさん
2017/03/01(水) 23:13:49.83ID:fB20izlq0302デフォルトの名無しさん
2017/03/01(水) 23:57:19.29ID:6tJnN0su1処理1個挟むんじゃなくて100処理か1000処理に1回ぐらいでお願いします
0303デフォルトの名無しさん
2017/03/02(木) 00:33:44.50ID:IBdXO0OOどこが遅いか分析が足りてないな
キーワードにヒットしたら番地とヒットしたキーワード格納して置換はしないでみたら?
置換って頭使わないと最悪な方法で処理してくれてる気がする
abcを見つけたらdefghijkに変換してくれる処理って
c言語だったら変換後の配列のサイズの計算からしなきゃいけないわけで
それをc#ってreplaceしやがったら配列の再確保余裕でしたみたいなことするアホだろ
その辺は考慮に入ってる?
0304デフォルトの名無しさん
2017/03/02(木) 00:54:02.49ID:FuaoIGJx0305デフォルトの名無しさん
2017/03/02(木) 00:54:51.19ID:IBdXO0OOstr1 + str2
みたいなことするとこれも合体後の文字列の長さで配列を再確保する
3万文字もある文字列だと1回文字列連結をするだけでヤバイ
変換に使用するキーワードの使用回数から最終的な文字列の長さを算出する必要があるかも
ってそれも考慮済みだろうか?
0306デフォルトの名無しさん
2017/03/02(木) 00:58:24.20ID:FuaoIGJx0307デフォルトの名無しさん
2017/03/02(木) 01:07:45.83ID:B13E3oAw0308デフォルトの名無しさん
2017/03/02(木) 01:09:29.82ID:FuaoIGJxstringは糞遅い。
だからMSは最初から別のクラスを用意してる。ググレカスども。
0309デフォルトの名無しさん
2017/03/02(木) 01:14:29.76ID:oXaAut0o0310デフォルトの名無しさん
2017/03/02(木) 01:18:09.17ID:iFkNWUjshttps://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,1485
https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,1535
0311デフォルトの名無しさん
2017/03/02(木) 01:20:26.39ID:iFkNWUjsReplaceのパフォーマンスはそんな変わらないよ
ググレカス
0312デフォルトの名無しさん
2017/03/02(木) 01:22:58.33ID:o9lMs6ta0313デフォルトの名無しさん
2017/03/02(木) 01:23:22.99ID:FuaoIGJx最後のヒントな。
大山札
0314デフォルトの名無しさん
2017/03/02(木) 02:04:51.98ID:ggH8M0CBもしかしてあらかじめ領域を準備して,自分で足していく,とか‥
0315デフォルトの名無しさん
2017/03/02(木) 02:30:07.47ID:4HioNM+3違法と犯罪は違うぞ
0316デフォルトの名無しさん
2017/03/02(木) 02:41:55.30ID:iFkNWUjs>>280
0317デフォルトの名無しさん
2017/03/02(木) 06:45:07.41ID:JZiPjSZc>>280のアルゴリズムで実装したら100倍とかのオーダーで速くなるはず
0318デフォルトの名無しさん
2017/03/02(木) 07:40:36.76ID:WqhQkxL/実装して計測してコードと計測結果を晒してから主張して
0319デフォルトの名無しさん
2017/03/02(木) 07:52:06.73ID:Ct6l/xwh280は検索で遅いとき
置換で遅いときはstringbuilderをキッチリサイズ指定する方法でやらないとダメ
まず切り分けかな?
0320デフォルトの名無しさん
2017/03/02(木) 08:49:47.79ID:oX3M/pPf圧倒的に検索の問題になるだろうね
普通は
0321デフォルトの名無しさん
2017/03/02(木) 09:05:00.59ID:Ct6l/xwhいや3万文字を置換のたびに1回1回stringのreplaceしてたらその度に3万文字分の配列を再確保
これが致命的
stringのreplaceはやってはならない
stringbuilderで
これも使い方悪いと速度出ないので正しい感じで
0322デフォルトの名無しさん
2017/03/02(木) 09:06:59.45ID:Ct6l/xwh0323デフォルトの名無しさん
2017/03/02(木) 09:07:18.82ID:cjA1b3op終端ノードまで来たら開始インデックスから後を削除し、終端ノードに持たせてある置換文字列を付加し、現在のツリーポインタを全て破棄
こうすれば280で置換も効率的にやれるよ
0324デフォルトの名無しさん
2017/03/02(木) 09:17:20.56ID:cjA1b3opそれ文字列が長ければreplaceのための線形探索がネックになるはずで、StringBuilderは直接関係ないでしょ
簡単に効率を改善するんなら、全キーワードのうち最長のキーワードの文字数と同じサイズのバッファを持っといて
そこに対して置換をかけりゃいい
もちろんその置換結果を最終出力の文字列として連結していくところはStringBuilderを使うべきだけど
0325デフォルトの名無しさん
2017/03/02(木) 10:02:53.43ID:xcfTeAxlに限定されると思ふ ノ ヽ(・ω・)/ズコー
0326デフォルトの名無しさん
2017/03/02(木) 12:13:19.52ID:63yIksCz0327デフォルトの名無しさん
2017/03/02(木) 13:30:45.83ID:NvG2Ox0H一万近いとどうなんだろうか
0328デフォルトの名無しさん
2017/03/02(木) 13:39:24.58ID:Ct6l/xwh置換後に短くなっても駄目っぽいけどね
0329デフォルトの名無しさん
2017/03/02(木) 13:42:21.47ID:j0RdOmJSで方法変えた方がいいな
0330デフォルトの名無しさん
2017/03/02(木) 16:45:48.51ID:yzi1qiN6そんな変な処理をしなければいいだろ。
解決!
0331デフォルトの名無しさん
2017/03/02(木) 19:36:05.41ID:tOCPWbBv0332デフォルトの名無しさん
2017/03/02(木) 19:43:30.86ID:j0RdOmJS0333デフォルトの名無しさん
2017/03/02(木) 19:47:35.64ID:eNjjKtZ0それ以前にベタにやっても余裕だと思うが。
0334デフォルトの名無しさん
2017/03/02(木) 19:54:31.82ID:Ct6l/xwhプロファイラ使えるようになるのが一番いいね
ただ、それじゃわかりにくいときもあるから知恵をつけるのも大事だと思う
0335デフォルトの名無しさん
2017/03/02(木) 20:14:46.47ID:eNjjKtZ0例えばString.Replaceと出て終わり。
https://msdn.microsoft.com/ja-jp/library/ms182372.aspx
https://msdn.microsoft.com/ja-jp/library/fk49wtc1(v=vs.110).aspx
その先の解像度は一般的に無いでしょ。(俺はC#のプロファイラを使ったことは無い)
だからここでやってるみたいにCLR内の動作を考える必要がある。
0336デフォルトの名無しさん
2017/03/02(木) 20:23:23.74ID:j0RdOmJSそれはプロファイラの考え方を間違ってる(使ってないみたいだから知らないのは当然かもしれんが)
replaceがネックって出ればそれでいいんだよ
■ このスレッドは過去ログ倉庫に格納されています