- 1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ]
- このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 ふらっとC#,C♯,C#(初心者用) Part22 pc11.2ch.net/test/read.cgi/tech/1197802312/
- 710 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:04:08 ]
- C#でスタック関係の直接操作ってできますか?
- 711 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:05:41 ]
- なんでスタックなんか弄りたいんだ?
- 712 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:17:07 ]
- 関数のカリー化を実装したいとか
- 713 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:17:58 ]
- それならdelegateでいいだろ
- 714 名前:710 mailto:sage [2008/01/31(木) 18:22:59 ]
- うまく説明できないのでまとめると
ウィルスチェックってどうなってるんだろう? →全ファイル走査するにはどんなやり方がスマートなんだろう →再帰処理を使って全部辿るのがベターらしい →なんだか重くなる (ここら辺から迷走気味) →コールスタックとかを知る →すたっくおーばーふろー・・? (本格的に迷走) →スタックを直接操作できればどうにかなるんじゃね? こんな感じです 質問をするにもどう質問すればいいかわからず>>710のような具合で質問しました
- 715 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:29:04 ]
- 再帰処理をほぐす、すなわち、
再帰処理で、保存・復帰してる情報(今探索してるフォルダの情報)を、 インスタンス変数にリストか何かで保持するようにして、そのリストで、 保存したり取り出したりして、本体はループになるように書き直す、 というのがだいたい定番。 ファイルシステムの場合、親フォルダを ".." で探せることを利用すれば、 そういう面倒なことをしなくてもうまくいくかもしれない。
- 716 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:30:34 ]
- 吹いたw
とりあえず重くなる原因を確認したほうが良いよ
- 717 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:30:59 ]
- 再帰関数でローカルな変数が多すぎなら、
関数を何とかする手もある。
- 718 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:31:54 ]
- そもそも再帰の脱出条件ミスってて、無限に掘ってるかもしれんなw
- 719 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:35:02 ]
- >>715
つまり再帰処理を行う回数を最初に逆算しておくってこと、かな ディレクトリの階層数があって更に木構造のように枝分かれしていくのを考えると すごく大変そうですがちょっと調べつつがんばってみます・・・ >>716-718 しっかり終了はするんですが、時間が経つとだんだんと重たくなってきます CPU使用率の方が、他アプリケーションをがんがん使うと結構きつくなったりするようです
- 720 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:36:50 ]
- お前のパソコンはウィルス検索中に他アプリケーションがんがん使ったら重たくならないか・・?
うちのノートン先生は重たくなる
- 721 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:39:22 ]
- >>719
> つまり再帰処理を行う回数を最初に逆算しておくってこと、かな 「配列」じゃなくて「リスト」って書いた意味を汲んでくれないかな...
- 722 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:42:53 ]
- >>709
なるほど! ありがとうございました。
- 723 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:44:13 ]
- ・探索中にサブディレクトリを見つけたら、現在の状態をスタックに積み上げて、
サブディレクトリの探索を開始する。 ・現在のディレクトリの探索が終了したら、スタックから状態をとってきて、 そのディレクトリの探索を再開する。 ・スタックが空になったら終了。 何も難しいことはない。
- 724 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:48:28 ]
- 再帰をループにするときはスタックに変数を入れるんじゃなかったっけ。
- 725 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:49:05 ]
- Directory.GetFiles(@"c:\", "*.*", SearchOption.AllDirectories);
とかじゃだめなのか?
- 726 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:49:13 ]
- あ、かぶった。
- 727 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:50:23 ]
- >>725
あんまり変なことを教えるなよ…
- 728 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:54:15 ]
- >>725
それだとXP以降のOSではシステムフォルダを検索しようとして権限がないので例外が発生する。 また拡張子のないファイルが取得出来ない。
- 729 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:57:45 ]
- コールスタックの知識自体に間違いがあると問題なのですが、
再帰呼び出しをするからスタックが溜まっていってしまうのであって ループで何度も何度も呼び出す分には問題ないのでしょうか? >>721 すみません調べてみます >>723 やってることは同じなのは感覚として掴めました しかし全然想像つかないです、じっくり考えてみます >>725 調べていてDirectoryInfoとかそういうのは見つけました .GetFiles()とかは使っていましたが引数渡すのは試してないです ちょっとやりたいことがやられちゃう感じなので今回はパスでお願いします
- 730 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:02:47 ]
- 関数を呼び出すたびに、その時点の実行状態がコールスタックに積み上げられる。
しかし、コールスタックは小さいから、すぐに溢れる。 だから、再帰呼び出しをループに展開する。 そのときには、もとと同じようにスタックを使って実装すると楽。
- 731 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:12:04 ]
- コールスタックについて学ぶのは良いことだけどさ、
たかがコールスタックが増えたごときで動作は遅くならん。 ましてやディレクトリの深さが 1000 や 2000 も無いかぎり溢れるなんて。
- 732 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:13:27 ]
- どうでもいいかもしれないけどファイル階層列挙場合はQueueの方が好きかなあ
並び的に
- 733 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:49:26 ]
- >>730
つまり関数の中で関数が呼ばれてその中で更に・・・みたいのだとあふれちゃうんですよね スタックはC++でクラスを勉強する時にそういう構造を作ってみた記憶があるので やってみようと思います >>731 ですよね・・ちょっと1から作り直してみます ありがとうございました、助かりました
- 734 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:56:24 ]
- それにしても良い子であった
スタックの実装にArrayListを使ってくれればいいけど
- 735 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:06:27 ]
- >>734
なんで”Array”Listなん?
- 736 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:16:56 ]
- Stack<T>でおk
- 737 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:39:51 ]
- .NETってどうしてもっさりなん?
- 738 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:59:41 ]
- メモリ大量に積んだvista使ってから言え!
ってゲイツが言ってた
- 739 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:02:21 ]
- 32bitCPUだといまのメモリで限界だろ(2GB)
- 740 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:04:38 ]
- つーか、スタックぐらい自分で作ればよくね?
- 741 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:46:08 ]
- Expression Treeって面白いな
時々話題になるT Multiply<T>(T left, T right)みたいなのも簡単に作れる
- 742 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:57:21 ]
- Mapが見当たらないので作ってしまったが,拡張性高いのはいいなC#
static class Extension { public delegate Y MapFuncor<X, Y>(X item); public static IEnumerable<TDst> Map<TSource, TDst>(this IEnumerable<TSource> source, MapFuncor<TSource, TDst> functor) { foreach (TSource s in source) { yield return functor(s); } } }
- 743 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:00:26 ]
- Enumerable.Selectでいいだろ
- 744 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:37:36 ]
- >>743いまわかた^p^
- 745 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:29:50 ]
- .netもっさりとか言ってるやつはどんなボロいPC使ってるん?
- 746 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:33:35 ]
- .netもっさりって気分は分からんでもない。
結局は結構windowsのAPI使用することが多いし。 何のための.netなんか分からんときがある。
- 747 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:36:31 ]
- それでも楽じゃん。
- 748 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:42:18 ]
- >>745
Athlon64 3500+ですがもっさりです
- 749 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:46:47 ]
- それじゃあたりまえ。
- 750 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:58:33 ]
- どれ位のCPU使うともっさりしなくなりますか?
- 751 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:04:34 ]
- >>750
ヅアルコア
- 752 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:06:00 ]
- >>748
日ごろのメンテナンス次第でいくらでも遅くできるよ
- 753 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:13:31 ]
- Pen4とかでも、チューニング次第じゃそこそこ動くんじゃね?
- 754 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:24:18 ]
- 今Core2Duoを買う金がないのでAthlon64 X2にでもしてみます。
あの重い2005が軽くなるなら。
- 755 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:26:14 ]
- メモリ搭載量の方が重要
- 756 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:30:04 ]
- 今AMDは駄目だろ。
- 757 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:30:50 ]
- メモリ3G詰め込めばOK
- 758 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:31:20 ]
- 2G積んでます。
それと2度目以降の起動はキャッシュが効いて速いです。 よく見ると2005自体にNTFS圧縮が掛けてあるみたいです。
- 759 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:32:42 ]
- >>754
OS入れなおしだよ
- 760 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:32:50 ]
- 常駐プロセスいくつあるよ?
- 761 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:33:28 ]
- >>756
安いのならコストパフォーマンス高いんじゃね? 15k以下のラインで
- 762 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:35:52 ]
- >>759
それやっても大して変化なかったです。 >>760 42個です。極力いらないものは切っています。
- 763 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:36:36 ]
- NTFS 圧縮のせいじゃね?
- 764 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:36:49 ]
- 4万だせばX2 4000+でGeForce6150のケース付きが変えます。
メモリは別ですが今は5000円あればお釣りが来ますので。
- 765 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:37:53 ]
- >>763
わかりました。やはりNTFS圧縮のせいでもっさりなのかもしれません。 WordやExcelにもNTFS圧縮掛けていますがもっさりしませんけど。 あとC++Builder2007にも圧縮掛けてありますがもっさりしません。
- 766 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:38:19 ]
- 中間ファイルに圧縮かかってたらもっさりしそう
- 767 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:38:44 ]
- CPU : pentium4 3ghz
mem : 256*2 これでも十分。
- 768 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:39:52 ]
- >>764
4万出してそれはないわ。
- 769 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:40:09 ]
- >>767
えー やっぱりNTFS圧縮のせいっぽいですね。 他に原因が思いつかない。
- 770 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:40:15 ]
- おまえらPC自作板かよ
- 771 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:41:44 ]
- 今思い出しましたが2003の時はNTFS圧縮を掛けてなかったのでか
もっさりしてませんでした。 さっそく圧縮を解除してみます。これでだめなら本格的にPCの交換を 考えます。
- 772 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:42:56 ]
- 俺NTFS圧縮掛けてない
ちなみにCドライブは80GB
- 773 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:51:56 ]
- >>762
常駐多すぎ ノートンいれて起動時に30切るくらい、スタンドアロンで20弱くらいで
- 774 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:54:39 ]
- >>773
30個?どうやったらそんなに少なくなるんだろう。 WinampエージェントとかDaemon Toolsとか切るしかないか。
- 775 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:55:32 ]
- 俺今3GBだけど起動直後で60個くらいあるわ・・・
しばらく前までは1GBで常駐プロセスとか気にしてたんだが・・・
- 776 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:56:42 ]
- 60は多すぎ。
- 777 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:58:40 ]
- ちなみに仮想メモリは切ってある
- 778 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:59:39 ]
- 変態的にカスタマイズし過ぎかと
- 779 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:59:55 ]
- >>774
デーモンとかwinampは関係ないだろ・・・切れよ・・・
- 780 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:01:19 ]
- >>779
切りますか・・・・
- 781 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:02:33 ]
- msconfigして、スタートアップとサービスから
マイクロソフトとセキュリティ関係のやつ全部とめて デーモンバスターいれて、不要なwindowsプロセスとめるといいよ
- 782 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:03:08 ]
- それくらいはやってるが
- 783 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:03:48 ]
- ituneHelperとかなめてるよな。
- 784 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:04:24 ]
- QuickTimeのおそろしさは異常
- 785 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:05:14 ]
- まったくだw
- 786 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:06:03 ]
- それ考えるとAcronis True ImageとDiskeeper2007入れてるのが
痛いかもなあ。 Acronis True Imageは定期的にバックアップ取るので仕方ないとして Diskeeperはバックグラウンドでデフラグするので止めた方がいいのかも。 でも何かやってる間はデフラグ止めてくれるんだけど。
- 787 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:06:46 ]
- >>784
QUick Time Alternative入れてます。
- 788 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:08:34 ]
- >>787
賢いな
- 789 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:14:54 ]
- なんか話がスレとかなり違ってきている。
- 790 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:15:14 ]
- コーデックそのものがffdshowしか入れてないので・・・・って
だいぶスレチになってきました。
- 791 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:15:36 ]
- こういう話なら敷居が低くなるから盛り上がる
- 792 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:35:50 ]
- うんこな話題にハエがよって来てるだけだろ
- 793 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 02:05:46 ]
- そのうんこをためらいなく踏み潰す >>792。かっこいー!
- 794 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:01:02 ]
- 開発環境は「できるだけ」素のOSっぽくしときたいよな
- 795 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:07:05 ]
- まっさらなHDDにOSだけ入れればいいんじゃね?
- 796 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:10:54 ]
- でもそれだと不便だよ
最低限便利なファイラとか解凍ソフトが欲しい
- 797 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:12:28 ]
- おまえら学生とかアマグラマ?
- 798 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:59:14 ]
- cvsサーバーが必要だよな
- 799 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 04:47:17 ]
- >>798
どこの古代人だw
- 800 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 04:55:18 ]
- Windows専用ソフトならWin標準GUI使って欲しい
正直.NET快適、Javaは起動以外快適、動作はもっさり .NETがもっさりするPC使ってみてえ Win98時代のが残ってるけどそっちはHDD小さすぎてなんもできないしな
- 801 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 05:10:56 ]
- 日本語でおk
- 802 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 05:28:12 ]
- 常駐起動時50くらいだしStylerとか入れてるがすいすい起動する
ブートファイルデフラグを何回かやっていくと起動が目に見えて早くなることがあるから ブートファイルデフラグ→再起動繰り返しでちょくちょく様子みてる
- 803 名前:デフォルトの名無しさん [2008/02/01(金) 11:10:58 ]
- .NET2.0のMDIアプリで親フォームと子フォームの両方にToolStripPanelを付けたのですが、
なぜか、この親子間でToolStripPanelのドッキングツールバーが移動できていまうのですが、 両者のツールバーは全く意味が違うツールバーなので移動できないようにしたいのですが、 どうすればよいでしょうか?
- 804 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:14:59 ]
- 何故そんなことをする必要があるのかは抜きにして、
labelに表示してある文字列をstring型で再取得する方法ってあるのでしょうか?
- 805 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:36:10 ]
- label.Text
- 806 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:42:40 ]
- その方法だと表示してある文字列じゃなくて
"label1"という文字列を取得してしまうのですが・・・やり方が悪いのかな
- 807 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:46:41 ]
- それはlabelにlabel1って入ってるんじゃないの
- 808 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:04:34 ]
- すみません、情報が小出しになってしまって。
DateTime nitiji = DateTime.now; label1.Text = nitiji.ToString("d"); これでlabel1に「2008/2/1」って表示されてるとしたら label1に表示されている"2008/2/1"ってのを 文字列で取得したいんです。(nitijiを使わずに) これがやりたいんですが、出来ますか?
- 809 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:06:09 ]
- いや、だからlabel1.Textだって
- 810 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:06:15 ]
- 小出しにするやつは相手にしない
|

|