墜つ
DoEventsをawait Taskで描き直したいのですが for(int t = 0; t < 1000; ++t){ //なんか処理 //Application.DoEvents(); await Task.FromResult<object>(null); //(1) await Task.Delay(0); //(2) await Task.Delay(1); //(3) } (1)と(2)はメッセージループに戻ることなく、関数が継続してしまいます。 (3)だとメッセージループに戻って、他のイベントを処理してから 戻ってきますが、他のイベントがない場合でも1ms戻って来ないです。 DoEventsのように、イベントがなければすぐ戻ってくる方法はありませんか? BeginInvokeとフェーズ管理を自分でやればできることは分かっていますが 上記と同じくらい簡潔に書ける方法はありませんか?
>DoEvents ブビ厨脳のお前には無理
根本的にTaskの仕組みを理解してないな 思い込みを捨てて基礎からやったほうが良いぞ
//なんか処理 はListView更新とかがメインなので タスクのスレッドプールでは実行できません。 だから、非同期メソッドの構文をウェイトを挟むのに使いたいです。 非同期メソッド以外にも、簡潔に書ける方法があったら教えてください。
簡潔に書ける方法がDoEventsだろ間抜け
DoEventsを使うなって聞き齧ったか何かで書き直そうとしてるんだろうな 仮にTaskで出来たとしても、DoEventsと同じ動作をするなら意味無いぜ
やってることはControl.BeginInvoke使うのと一緒だが、 Taskを使うならスケジューラーを交互に換えるとそれっぽくなる。 var task = Task.Factory.StartNew<int>(() => { Thread.Sleep(1000); return 10000; }); for (int i = 0; i < 10; i++) { task = task .ContinueWith<int>((t) => { textBox1.Text = t.Result.ToString(); return t.Result; }, // 表示処理 TaskScheduler.FromCurrentSynchronizationContext()) .ContinueWith<int>((t) => { Thread.Sleep(1000); return t.Result + 1; }, // 時間のかかる処理 TaskScheduler.Default); }
FromCurrentSynchronizationContextというのがあるんですね。 スレッドプールでしか実行できないと思っていました。 試してみます。ありがとうございました。
11 :
デフォルトの名無しさん :2013/12/12(木) 19:07:36.49
TcpClientででかいデータを一発でやりとりすんのってどうやってやるんですか? 別に一発じゃなくてもいいですが、できれば一発がいいです。
そんな方法はありません
ロジックのスレッドからUIスレッド操作はデリゲート使わないと出来ないこともわからないのかブビ厨はwww マジでVBとかこの世から消えて欲しいんだよね、なんなのあれ?闇のソナタ?ひと目見るだけで目が腐るわwww
ブビ厨にスレッドをさわらせるとロクなことがない
(なんでみんなYで始まるアレを教えてあげないんだろう・・・?)
YANMARはこの際関係ないと思うが
YAZAWAだろ
YOSHIDAが最強だよね
誰だよ
21 :
デフォルトの名無しさん :2013/12/16(月) 14:11:55.08
private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { HtmlElementCollection hec = wb.Document.GetElementsByTagName("a"); foreach (HtmlElement he in hec) { // ~ 略 ~ 一定のクリック対象の条件を満たした場合 InvokeMember("click"); ・・・① } } グーグルで検索を行い表示された検索結果のうち 特定サイトをクリックすると、 ①を実行した直後に wb_DocumentCompleted イベントが発生しなくなってしまいます。 クリックしたサイトが表示されるページが大半なのに なぜ特定サイト ( suumo ・ 2ch)の場合だけ、ページが表示されてもDocumentCompleteが 発生しなくなるか理由が分かりません。いった何が原因なのでしょうか?
いろんなアプリを使ってるとたまに OpenFileDialogのような外観と操作性のフォルダ選択画面があるんですが .NETの標準ではそういう物は無いですか?
APICodePackに入ってる奴か?
コピペプログラマ卒業したいのにWin32APIだとコピペになっちゃう やっぱC++覚えないと駄目なんか・・・
>>24 windows7 api codepackはMSご謹製のライブラリーであってwin32APIとは別物ですよ
nugetにてcodepackを検索すれば出てくるのでインストールは簡単です
使い方はぐぐってね
自作C++ライブラリを呼ぶとかならアレだけど Win32APIをDllImportするなんて約束事を幾つか覚えれば簡単でしょう
Comとか文字列とか含んだ構造体とかは結構わからなくなる
いえいえ
30 :
デフォルトの名無しさん :2013/12/20(金) 18:45:04.78
拡張メソッドだとオブジェクトがnullか判定できちゃうのな 例えば public static bool IsNull( this object obj ) { return obj == null; } ------- Object o = null; bool fNull = o.IsNull(); // ぬるりかと思いきやtrue キモいw キモいけど便利かも
へー、勉強になった 多分役に立たないけど
string.IsNulOrrEmptyと一緒かな?
>>32 =バカ
見た目上nullに対して(null).method()
が実行できてしまうことの
気持ち悪さを言っているというのに
C#初心者用だと答えが返ってこなかったのでここで質問します
http://keyboardmousehooks.codeplex.com ここのKeyboardHook Classを利用してフックは出来たんですが、メッセージの書き換え方がわからないんです
どうすればいいか教えてください
それと、何故かEnterキーを一度しか押してないのにメッセージボックスを開くとキーが2回押されてるようでメッセージボックスがすぐ閉じてしまいます
これも原因がわからないんのでアドバイスお願いします
663 名前:デフォルトの名無しさん[sage] 投稿日:2013/12/20(金) 22:02:32.23
見てないけどLLの方なら書き換えはできないよ
握りつぶして代わりにSendInputとかで改めて送信
帰って来てますので
>>34 はスルーでお願いします
ちょっとオブジェクトがどうなるか自信が無いので教えてください C# 4.0、Framework 4.0で作成してます 下の様なTaskを使った処理を作ろうとしてるのですが、 StartNewでタスクが作成された後、StartTask関数は抜けますが その時に自動変数なので変数としてのClientは無効になると思うのですが タスクに渡されたTcpClientのインスタンス自体は タスク無いで保持されてるので消滅しないと思って間違いないでしょうか? private void StartTask() { var Client = Listener.AcceptTcpClient(); Task.Factory.StartNew((ClientSck) => { while(!TaskCancelation.IsCancellationRequested) { // ソケットを使用した通信処理 } }, Client, TaskCancelation.Token); }
うん
ご変換してますね
タスク無い、じゃなくて、タスク内、ですね
>>37 ありがとうございます
これでやってみます
RichTextBoxの選択範囲について教えてください 今、私はVS2012のC#を使ってエディタを作成しているのですが 選択範囲のテキストをドロップドラッグするためにTextBoxではなくRichTextBoxを使って作成しています そして質問したい事なのですが RichTextBox内のテキストを選択すると一番最後に空文字の様なものが入ったり 4行の文字列があるとするとその行末に選択できる空白(消すと改行が消える)があったりします とりあえず改行をマウスで選択出来てしまいます それを無くしたいのですが どの様にしたら良いのでしょうか 具体的には 何のイベントにどの様な事を記述すれば良いのでしょうか
改行選択できないエディタ見たことないんだが
「リッチテキスト 改行文字」でググれ
>>40 さくらエディタ見たいなヤツを作りたいです
>>41 ググって見ましたが分かりません
改行はたぶん
>>39 の手に負えない内容だと思う
それって別にエディタの動作として再優先な機能じゃないんだろ?
とりあえず放置してほかの部分作っとくのがいいと思う
>>43 C#しかやった事がないもので
>>44 メモ帳としての基本機能はつけ終わりました
>>45 notepad.exe起動してメニュー見てみ。地味に多いぞ。全部パクるんだ
今時エディタなんて誰が喜ぶんだよ・・・
おまえらいつも喜んでんじゃん
てす
PureC#のエディタってあるの?
51 :
デフォルトの名無しさん :2013/12/29(日) 22:35:18.76
探せばあるんじゃね
うん
こういう質問する奴には簡単には作れないよ 生産性が高いっていうのは、わかってる奴が作ると手間が掛からないってだけ
55 :
デフォルトの名無しさん :2013/12/29(日) 22:57:41.00
ほなら、VC++だっていっしょじゃん
>>54 >わかってる奴が作ると手間が掛からないってだけ
激しく同意
>>51 大して難しくないだろ
面倒なだけ。
やれば終わる仕事だよ
>>51 ふらっとにもきた?
>Windows API Code Packを使うと、割と簡単にできる
だって
でも.NETはフレームワークってほど便利じゃないんだよね あくまでもVC++と比較して.NETは生産性が高いってだけで .NETが用意してくれていない(UIに関してはほとんど)ことを実装しようと思うと言語仕様を理解してる前提で言えば手間はかわらないんじゃない? RailsやjQueryみたいなチートフレームワークが.NETでも出てくればいいね
そういう意味のフレームワークならASP.NET MVCがある 評判上々でかなり上手くいってるぞ
Threadクラス使って別スレッドで結構長い時間がかかるループ処理をしているんだけど、 自分でスレッドを強制終了したいためこういうコードにしたのよ。 while(!AbortRequest) { ~省略~ } でスレッド終了したいときにメインスレッドからAbortRequestをTrueにして抜けるようにしたんだけど なぜだかわからないけどwhile文の最後までいかず途中で終了してしまうのよ。ファイル書き込みも途中で終わってしまう せめてファイル書き込みを終わらせてから終了させたいんだけど、どういうふうに対策したらいいの? あとなんでこんなことがおきるの?
それだけじゃどの「?」にも答えられませんわ
変な最適化くらってんじゃないの
>>62 が変なことをしているから。
バックグラウンドスレッドに設定してメインスレッドを終了させているとか、
Thread.AbortやInterruptを呼び出しているとか、
サブスレッドが使用するリソースを破棄して例外が出ているとか。
何もしなければwhile条件以外で終わるはずがない。
あきらかに.NETからプログラミングを始めましたって感じのコードだなw
67 :
デフォルトの名無しさん :2013/12/30(月) 01:44:39.57
冷やし中華でしたか。
IsBackground==trueでは? バックグラウンド スレッドは、プロセスの終了を回避しないので
つーか単にそれのインスタンスをどこも持ってなくてGC回収食らってんじゃないの
70 :
デフォルトの名無しさん :2013/12/30(月) 04:41:20.48
資源回収でしたか。
ないない
72 :
デフォルトの名無しさん :2013/12/30(月) 05:24:38.13
岡村さんでしたか。
74 :
18 :2013/12/30(月) 09:04:41.13
>>69 この発想はなかったわ。
こんな奴が近くにいなくてよかった~ (w
ふらっとにFormClosingでAbort呼んでといった質問があったので同一人物だろう 原因もきっとそれだ
ふらっとスレ立て遅れてるからこっち来たのか
78 :
62 :2013/12/30(月) 14:26:29.48
>>75 同一人物だけど、Abortは呼ばないようにしたんだけどうまくいかない
ふらっとがたったのでそっちいきます
やっぱMSの人間って頭わるいんでしょうね こんな独善的な言語、時間の膨大な浪費になるところでした。 で、脱MSへのトリガーともなりました。 ちかれた。。。
おめでとう 君は今邪悪なソフトウェアの呪縛を逃れたのだ 次に君がすべきことはFSFへの帰依である
あ、C#じゃなくて .NETか こりゃ失敬
TreeViewコントロールを貼ったフォームを用意して Loadイベントの中で Process.GetProcesses()を使ってウィンドウを持つ全プロセスを列挙し 取得した各プロセスのトップレベルウィンドウのハンドル値をテキストにしてTreeViewのノードを追加し その後Win32APIのEnumChildWindowsを使用して 取得済みの全トップレベルウィンドウの子ウィンドウを列挙して各ウィンドウノードの子ノードとして追加しようとしているのですが、 子ウィンドウの列挙が最初のトップレベルウィンドウしか行われないまま終わってしまいます。 しかし、ステップ実行で動きを追うと、すべての列挙が正常に行われます。 どうしたらちゃんと列挙できるんでしょうか? VisualStudioは2010、フレームワークはVer.4.0です
それだけではなんとも EnumChildWindowsに渡すデリゲートをGC.KeepAliveなりフィールドに置くなりでインスタンス維持してない可能性とかぐらいか
84 :
82 :2013/12/30(月) 20:01:33.40
すいません、動かしたコードを載せます。 public class Win32API { public delegate bool WndEnumProc(IntPtr hWnd, IntPtr lParam); [DllImport("user32.dll")] private static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount); [DllImport("user32.dll")] public static extern bool EnumChildWindows(IntPtr hWndParent, WndEnumProc lpEnumFunc, IntPtr lParam); [DllImport("user32.dll")] public static extern IntPtr GetParent(IntPtr hWnd); public static string GetWindowText(IntPtr hWnd) { var Buf = new StringBuilder(MAX_PATH); GetWindowText(hWnd, Buf, Buf.Capacity); return Buf.ToString(); } }
85 :
82 :2013/12/30(月) 20:02:04.50
public partial class MainForm : Form { private Win32API.WndEnumProc CallbackFunc; private GCHandle EnumParam; private void Form_Load(object sender, EventArgs e) { CallbackFunc = new Win32API.WndEnumProc(MainForm.EnumChildProc); EnumParam = GCHandle.Alloc(WindowTree); EnumWindows(); } private void Form_Closing(object sender, FormClosingEventArgs e) { if(EnumParam != null && EnumParam.IsAllocated) { EnumParam.Free(); } } private void EnumWindows() { foreach(var Proc in System.Diagnostics.Process.GetProcesses()) { if(Proc.MainWindowHandle != IntPtr.Zero) { WindowTree.AddNode(IntPtr.Zero, Proc.MainWindowHandle, Proc.MainWindowTitle); } } foreach(WindowTreeNode Node in WindowTree.Nodes) { Win32API.EnumChildWindows(Node.WindowHandle, CallbackFunc, GCHandle.ToIntPtr(EnumParam)); } } private static bool EnumChildProc(IntPtr hWnd, IntPtr lParam) { var ParentHandle = Win32API.GetParent(hWnd); var TreeView = ((GCHandle)lParam).Target as WindowTreeView; TreeView.AddNode(ParentHandle, hWnd, Win32API.GetWindowText(hWnd)); return true; } }
86 :
82 :2013/12/30(月) 20:04:47.41
フォームのコンストラクタはデフォルトのままなので省略してます。 EnumChildWindowsを呼び出してるforeach部分をtry~catchしてみたりもしましたが 特に例外は返ってきませんでした AddNodeはメソッド内でハンドル値を元に子ノードを追加すべきノードを検索して子ノードを追加するメソッドです
EnumChildProcでTrace.WriteLineやってみてちゃんと出力はされてる?
コールバック内でTrace.WriteLineしてみましたが 1つ目のトップレベルウィンドウの分の列挙分は出力されましたが、 その後は出力されませんでした。 デバッグでステップ実行するとやはり全部出力されます。
exeで実行しプロセスにアタッチでデバッグするとどうなる?
なんでEnumChildProcだけstaticなんだよw
以前、C#でWindowsAPI使う時にコールバック関数の使い方調べたことあるが その時に見つけたサイトで、EnumWindowsを使って例を書いてたが そこではコールバック関数をstaticにしてあったな 同じようなの見たんじゃないかな?
MSDNのGCHandleのサンプルをベースにしたんだろ EnumChildWindowsは同期型のコールバックだから、 あんまり問題は出ないはずだけどね
VisualC# 2010で作成したソリューションファイルを Visual Studio 2013 for Windows Desktopのものに変換するにはどうすればいいでしょうか?
ダブルクリック
C#ってもうオワコンなの?
オワコンだよ!
ロボコンだよ!
2chがオワコン
終わってんのはおまえら
まぁ、人類が終わってルナーと感じる事は最近頓にある
そろそろ次のステージに進化しないとな
次はC##かな
CX(シー ダブルシャープ) でお願いします
C丼
Cシャープ(音楽記号)
C囲
C#++
109 :
18 :2014/01/11(土) 13:12:51.08
D♭
まあ、こんなのが面白いんだから、終わってるな
冬休みだからしょうがない
冬休みは5日までじゃね?
C??
あ、UNICODE出ないのか プログラム板なのに
プログラム板なのに下らないカキコしてんじゃねー
ユニコード=ウイルス 使用例:もっと強力なウイルスありませんか?
強力なユニコードありませんか?じゃね。
超漢字のサポートはまだですか?
dataGridViewを使っています。 セルのタイプがDataGridViewComboBoxCellだったらという条件で処理を分岐させようと考えていますが、条件の書き方が分かりません。 if (dataGridView1.Columns[n].CellType.Name == ここまでは分かっていて、左辺の値はDataGridViewComboBoxCellが取れているのですが 右辺を固定文字列以外の形式で表現する方法は無いでしょうか。
Columns[n] is DataGridViewComboBoxColumn じゃあかんの? 行ごとにセルの型が違うとか?
これでいけるんじゃね if (dataGridView1.Columns[n].GetType() == typeof(DataGridViewComboBoxColumn)) { 処理 }
122 :
デフォルトの名無しさん :2014/01/21(火) 13:26:36.20
抽象クラスAで、publicな実装済みメソッドbのほか、protectedな抽象メソッドaを定義しました。 この実装済みメソッドbでは、 抽象メソッドaを呼び出すコードを書きます。 そして派生クラスでは、この 抽象メソッドaの実装のみします。 今、この派生クラスを実体化し、publicな 実装済みメソッドbを呼び出すと、 実装されたメソッドaが機能するでしょうか。 基底クラスから派生クラスのメンバを呼び出しているように見えるので、大丈夫なのかなと。 お願いいたします
123 :
デフォルトの名無しさん :2014/01/21(火) 14:58:59.77
ゴミ
カス
つーかテストコード書いてみりゃわかることでしょうが。 そもそも機能しなかったとしたらメソッドbはいったい何を呼ぶのか
>>122 Template Methodでぐぐってみな
127 :
122 :2014/01/22(水) 09:53:25.02
レス頂きありがとうございます!
>>125 そうですかできますか!
今日、開発環境(VS2010)をインストールしおわったので、いよいよ試してみたいと思います。
>>126 まさにそれです。なんかわかってもらえた感じがあって嬉しい。
129 :
デフォルトの名無しさん :2014/01/23(木) 11:11:58.30
C#のWindows アプリケーションにて、 System.Data.OleDb.OleDbConnection クラスを使い、 ローカルディスク上のmdbファイルに接続する場合、 時間経過でタイムアウトが起こることはあり得ますか? 下記の様な接続文字列を用いて接続することを想定しています。ODBCは使いません。 Connection.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=ファイル名;" また、タイマーコントロールやスレッドなどを使わず、 OleDbConnectionやmdbの機能だけで 故意にタイムアウトを起こすことは出来ますか? (接続プーリングのことではなく、接続そのものをタイムアウトで自動切断させる) もし有ればその方法をお教え願えたらと思います。
130 :
129 :2014/01/23(木) 11:24:41.62
申し訳ありません。 説明不足でしたが、上記のタイムアウトはOpenメソッドでのタイムアウト (ConnectionTimeoutプロパティ)ではなく、 接続確立後にアイドル時間が一定以上経過した後のタイムアウトを想定しています。 アプリケーションを起動して数十分や数時間放置したあと、タイムアウトが起きるか? もし起きるならその条件は?という質問です。 もしよろしければお教えいただけると幸いです。
usingでリソース管理する
mdbに接続後のアイドル時間でタイムアウトってあるのかい?
どうでもいい話だけど、ミュータブルなクラスのコンストラクタに関して、 (1) なるべく多くのオーバーロードを用意する。 (2) 名前付き引数を使う。 (3) どうせオブジェクト初期化子が使えるんだから、必要最小限の引数を取るものを1つだけ用意する。 この3つの方針でよく迷うんだけど皆さんはどう?
(4) オプション引数を使う
ああ、名前付き引数ってのは呼び出す側から見た時の呼び方で オプション引数って書いた方がよかったか。 まあ同じことだと思うんだけど。
違います
馬鹿っぽい反応だね
PythonとかRubyみたいなLLから来た子だろ C#では全然違う
確かに厳密に言えば違うか。 名前付き引数なんて省略可能な引数使って定義されたメソッドを呼び出す時以外に 使いどころがないとは思うけど
可哀相な子がいるな 誰か彼の魂を開放してやりなさい
141 :
129 :2014/01/24(金) 00:28:54.14
厳密に言わなくても全く別物ですがね 知識不足を指摘されてみっともなくいつまでも言い訳して居座ってるんじゃないよ 邪魔だ
おぉ、神よ。どうか、129の魂が天に召されんことを
>>141 俺にとってはお前みたいな奴こそ邪魔。
幼稚くんに言っても始まらないが、下らない揚げ足取りの前に建設的なことの1つも言ってみろバカ。
主観的視点で邪魔と切り捨てる慧眼はさすが幼稚としか言いようがない ん?その観点だと幼稚は2人いるみたいだな
それが主観に過ぎないことの自覚があるのとないのでは違うと思うんだけどね。 って中学生じみた話だな
ここまで幼稚
イミュータブルなクラスにもオブジェクト初期化子が使えたらいいなと思うこの頃
>>147 なにそれ、初めてきいた
免疫と関係するものですか
MSは既存の用語があるのにいちいち新語・無意味な新仕様使うから調べる手間が増える
おじいちゃんには大変ですよね
>>150 若い奴が貴重な時間を浪費する方が遥かに不憫だ、と普通は思うけどな
イミュータブルはMS語じゃないだろ
>>151 一回読んだら250ミリ秒くらいで覚えるけど
なんで独自フレームワーク(笑)作る糞PG・SEってやたら深い階層アーキテクチャにすんだ? 何層ものレイヤーがまったく同じ処理を繰り返す意味ってなんなの? サブシステム\からアクセスする共通ライブラリに書かず、それぞれのレイヤーで同じ処理をPrivateなメンバで持つって低能すぎませんか? こういう糞コード見る度に設計(笑)とかInterface(笑)とか馬鹿にやるせるな・使わせるなっていつも思うんだが こういうの手直しさせられる身にもなれよ糞PG・SEども
仕事選べないって残酷だね
俺の経験では、2chくんだりでそうやってクダ巻いてる奴こそ例外なく無能。
>>154 分割してから別のところに発注するからだろ
そういう無駄があるからこそお前は飯が食えてるんだから上流様に感謝しろよ
君は夢に手が届かないのか いかんなあ努力が足りないよ
21世紀だというのになぜ人類が働かなければならないのか 機械とロボットだけが働いて、全人類がそのアガリで生きていける時代になるべきだ
161 :
デフォルトの名無しさん :2014/01/28(火) 14:40:31.64
後方互換性を破壊しないで属性を拡張する方法ってないの? プラグインのクラスにつける属性に機能を追加することを想定してます 古い実行ファイルでもプラグインの新しい部分は無視するようにしたい 既存のFooAttributeに新しいプロパティを追加すると 古い実行ファイルがGetCustomAttribute()したときにCustomAttributeFormatException 投げる(新しいプロパティなんて知らねーよって)し FooAttributeの他にBarAttributeをつけても 新しい属性の型を解決できないのでGetCustomAttribute()でTypeLoadException やっぱ古い方が参照してるpluginlib.dllを更新しないとダメ?
>>161 ・pluginlib.dllはそのままで、pluginlib2.dllを追加してBarAttribute。
・古いexeのアプリケーション構成ファイルを弄っていいならバージョンリダイレクトして
互換性のある新しいpluginlib.dllを参照させる。(ただしpluginlib.dllに署名がないとダメ)
属性ってテキストだしメタデータだから型は緩いのかとかちょっと思ったら やっぱり型ぎちぎちなんだぬ
MSモノにはヘルプのヘルプが必要という昔からの謎がある
MSのドキュメントはずば抜けて丁寧すぎるから、勘違いしてOfficeと同じようにお客様感覚で使ってる人が多いんだよ MS以外のゴミみたいなドキュメントで開発したら二度とそんなこと言えなくなる
VS2010のヘルプはコピーが一部しかできないし、 MSDNは翻訳で変な日本語だし、ソース部分のコメントは英語だし、例が難しすぎたり的外れだったり・・・ で、結局、個人のサイトやブログのおかげでなんとかプログラムが書ける、というのが現状^^;
>>167 最新のは翻訳が追いついていないのが歩から、機械翻訳のページは少し古いのみるといい
>>166 俺も昔はMSDN読んでもイミフでなにこの糞とか思ったけどそれなりのレベルになってきたらMSDN見るのが一番早いもんな
他社のフレームワークのドキュメントとか読むとマジでどんだけMSDNわかりやすいか良くわかるわ
っつーか日本語あるだけでありがたい
バイリンだけどブログラムは一行も書けない。 ここ何? 変な所に飛ばされた。
梅淋って病気2つ持ってるのか
淫らな梅林
この雌豚め!
他の人が作ったライブラりーをC#で使っていて、その中でエラー発生の 例外処理でMessageBoxが表示される仕様になっているのですが、 それを出さないようにできないでしょうか?ソースコードを変更できないので、 何か別の方法で。
酷すぎ 親のWndProcに何かメッセージとかきてないかな
VCのプロジェクトファイルを弄ってみたいのですが分からんことが有ります。 vcproject.dllの参照渡してから次を実行すると、InvalidCastException吐き出されます。 new Microsoft.VisualStudio.VCProjectEngine.VCProjectEngineObject(); 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProjectEngineShim' のオブジェクトを 型 'Microsoft.VisualStudio.VCProjectEngine.VCProjectEngineObject' にキャストできません。 見当外れなことしてる気がするんだけど、結局分からんという。
181 :
デフォルトの名無しさん :2014/02/07(金) 04:59:30.04
sqlserverの10万行以上あるテーブルを別のデータベースのテーブルに移すために、 sqlcommandオブジェクトでinsertストアドプロシジャを毎行ループさせて呼び出しています。 ループごとに、sqlcommandを新生させていますが、明示的にディスポーズしてません。 多分、10万行分のsqlcommandが新生されながら、自動的にガベージコレクトされているのだと思います。 質問です。 ループ内部にusingステートメントを使ってsqlcommandをディスポーズさせる必要はないのでしょうか。
SqlBulkCopy使えよ
馬鹿は死ね
184 :
デフォルトの名無しさん :2014/02/07(金) 09:24:30.42
すいません、自分以外の意見がほしいので聞きたいです。 LaLena.comというサイトのtsp.exe.zipについてです。 こちらのプログラムで使用している交叉は欲張り法にだと思うのですがどう思いますか?
よくわからないニダ
186 :
デフォルトの名無しさん :2014/02/07(金) 14:48:29.48
>>182 そんなクラスがあるなんて知りませんでした。ありがとうございます。
これって、移動先と移動元のテーブル構造が異なる場合でも、
insert文のように列ごとにコピー方法を設定できるのでしょうか。
SQLServerにコピーするんじゃなくて、SQLServerからコピーするんだろ 別のデータベースってのは別のDBMSって意味じゃないのか? そのデータベースでバルクコピーがサポートされてないとだめなんじゃね 別のデータベースってのが同じSQLServerのインスタンスのってなら、SQL一発で終わるんだが
最小ログ操作の成立条件は厳しいから Bulk使っても速くならん事が多いよ SqlCommandの件だがPrepareしなけりゃ 開放しなきゃいけないようなリソースは抱えてない 気にるならしとけばいい程度
189 :
デフォルトの名無しさん :2014/02/08(土) 01:08:17.52
>>187 >別のデータベースってのは別のDBMSって意味じゃないのか?
>別のデータベースってのが同じSQLServerのインスタンスのってなら、SQL一発で終わるんだが
すみません、用語が不正確だった
同一マシンで動作するSQLSERVERの異なるインスタンス間でのテーブル間コピーをしたいんです
ところで、もし、同じインスタンスのテーブルコピーだったら、一発で(超高速という意味でしょうか?)終わる?
>>188 >Prepareしなけりゃ開放しなきゃいけないようなリソースは抱えてない
わざわざ、開放のための準備(Prepare)をする必要はないってこと?
ガベージコレクトされるのをまってりゃおk?
>>181 で自分が想像しているとおり、
「10万行分のsqlcommandが新生されながら、自動的にガベージコレクトされている」っていう考えでよい?
レスありがとうございます。
>>189 正確にはGCされてるかどうかはそのときの状況次第
開放されたオブジェクトがすぐにGCされるわけではない
>ところで、もし、同じインスタンスのテーブルコピーだったら、一発で(超高速という意味でしょうか?)終わる?
超高速かどうかはしらんが同一インスタンスならDB名で修飾してinsert select 1文実行するだけ
別インスタンスなり別DBMSなりなら、俺ならまずリンクサーバ検討するがな
まあ、これ以上はDB板かどっかで聞け
191 :
デフォルトの名無しさん :2014/02/08(土) 01:59:03.44
>>190 すみません、ありがとうございます。
ガベージコレクトの状況については、物理メモリの利用の推移をタスクマネージャーの動きで確かめてみたいと思います。
同一インスタンス内の異なるデータベース間でのテーブルコピーができるだけでも便利そうですね。> SqlBulkCopyクラス
>>191 なんか勘違いしてそうだけど、DB名で修飾とか、リンクサーバとかは
SqlBulkCopyクラス関係ない話だぞ
つか、普通はループの外でコマンド生成するようにするだろ
193 :
デフォルトの名無しさん :2014/02/08(土) 03:33:35.48
>>192 >普通はループの外でコマンド生成するようにする
そう思ったんですが、ループ毎にきちんと、COMMANDオブジェクトを初期化できる自信がなかったんで
194 :
デフォルトの名無しさん :2014/02/08(土) 03:35:22.36
>>192 >DB名で修飾とか
勘違いでした。SQL文で、テーブルをデータベース名で修飾するわけですね
>>193 パラメータの使い方がわからず、SQLにテキストで埋め込んでるのか?
あと、disposeは外部リソースを開放するもので、
マネージドメモリを開放するのはあくまでもGCだよ。
C#でのTwitterクライアント開発の質問はここでいいのでしょうか?
>>196 そんなもん出来合いのオープンソースなライブラリが腐るほどあるから好きなの選んでサンプルの通りに使うだけ
以上
198 :
デフォルトの名無しさん :2014/02/08(土) 17:32:18.32
>>195 ディスポーズされると、即座に.netフレームワークに目をつけられてガベージコレクトされるものなのだと思っていました。
sqlcommandオブジェクトなのですが、ストアドプロック呼び出しで、パラメタオブジェクトを追加してます。
ループの外でnewしたsqlcommandオブジェクトを使いまわすと、
さっき追加したパラメタオブジェクトを初期化しないと、次のループで誤動作するのではないかと思ったんです。
ループ内で、パラメータオブジェクトをcommandオブジェクトに.addするので、
初期化しないと、二重に.addされることになってしまいます。
ループ内で最初に、commandオブジェクトのパラメタなどの設定がクリアする方法があればいいのですが。
sqlcommand.Parameters.Clear()
普通コマンドにパラメタaddするまでループの外でやるもんじゃ...
System.Drawing.Imaging.Encoderで画像ファイルの保存を行おうと思っているのですが、 それぞれのEncoderがどのEncoderParameterをサポートしていてどういう値を設定できるか、 どこで調べられるのでしょうか? とりあえずpng/bmp/jpgがわかればいいので、どこかに書かれたものを参照できれば それでもかまいません。
画像のメタデータから判断するのがいいんじゃないかな
203 :
デフォルトの名無しさん :2014/02/09(日) 01:32:07.59
>>199 ああ!そんな便利そうなやつ、あったんだ!
>>200 そうなんですか。慣れていないもので。
どうもありがとうございました。
うー、抽象メソッドを実装するメソッド内に、sqlcommandオブジェクトの新生まで記述してしまっている。
また、その具象クラス数が多いので、修正するのが非常に面倒だなあ。
1000件処理するのに、0.5秒ほどかっているのが、もっと早くなって半分くらいになるなら、直す価値があるなあ。
全体の数パーセントをいくら短縮しても 数パーセント以上に速くなることはないな
1件INSERT×1000行で0.5秒って既に無茶苦茶早いだろ
>>202 そういう話じゃなくて、Encoderがどういう設定に対応しているかが知りたいんですが。
たとえばJPEGエンコーダはQualityを設定できるのは知っていますが、他のEncoderでは
どうなのかとか、それぞれのEncoderで有効なColorDepthの値は何かとか。
GetEncoderParameterListでも使っとけ
画像毎ではなくて事前に求めておきたいと思ったんですが、MSDNのサンプルも ダミーのBitmapからGetEncoderParameterListで求めてるんですね。失礼しました。
c#で書いたオッパイスクリプト系プログラムってある?
210 :
デフォルトの名無しさん :2014/02/09(日) 15:31:28.62
>>205 1000ループで、ドットを1個吐くようにしていて、
だいたい、1秒ほどでドットが2個吐き出されるようすを確認しました。
じゃあ、毎ループにsqlcommand新生のままで行こうかな。
直すの、面倒だし。
まじめに計測しようよ
SqlCommandの内部実装ってかなり良くできてる気がする おんなじようなコード見つけてループの外に出したことあるけど あんまり速度差でなかったんだよなぁ
bcpでロードしたときの速度を参考にすれば、 クライアント側でどこまで改善可能かの指標になるよ >1000000 行コピーされました。 >ネットワーク パケット サイズ (バイト): 4096 >クロック タイム (ミリ秒) 合計 : 120359 平均 : (8308.48 行/秒) あとはDBスレにでも行ってくれ
ローカルにMySQLをインストール。 WinFormではデータテーブルと、グリッドビューを配置。 実行時にDBデータがグリッドビューに表示されるようにしているんだけど、 2万行、40列くらいのデータを表示するのに5秒くらいかかる。 ちょっと遅い気がするんだけどそんなもん? ちなみにコードは1行も書いてないっす。
表示分だけ随時データとれよ
妄想で事実を疑うってヤツだ。
フォルダーやファイルのアクセス権について質問 ■アクセス権の取得方法 ・File.GetAccessControlを使用して、FileSystemAccessRuleの値から アクセス権とユーザ・グループを取得 ・WindowsPrincipal.IsInRoleを使用して自分が利用可能 (ユーザー・グループに該当するか)かどうかを判定 ■質問 1.このやり方が一般的なのでしょうか? 2.所有者のアクセス権はフルコントロール扱いなんでしょうか? 2については、所有者が自分自身で、読み書きの制限が無いフォルダーが、 上記アクセス権の取得方法では、読み取りぐらいしか出来ないことになっていておかしい。 所有者のアクセス権の扱いが知りたいです。
スレ違いは去れ
219 :
デフォルトの名無しさん :2014/02/10(月) 22:26:49.94
ASP.NETスレッドがないので、ここで御願いします。 ASP.NET4からURLルーティングという機能が使えるようになり、 クエリストリングで指定していたパラメタを、ディレクトリ形式で指定し、ルーティング先ASPXページオブジェクト内で、取得できるようになりました。 さて、このディレクトリ形式で指定できるURLは、ビルトインのユーザ認証機能で、 アクセス許可設定はできるのでしょうか。 web.configの、locationタグで、URLを指定してから、子要素で認証関係の設定を行うだけで良いのでしょうか。 おねがいします
WebProg板にあるっちゃあるが、あっちも過疎ってるしな
222 :
デフォルトの名無しさん :2014/02/11(火) 04:04:03.82
>>221 非常に良く分かりました!良いページをありがとうございます。
URLルーティングされる静的URLも、物理URLに対するのと同様にアクセス制御ができるとわかりました。
また、 CheckPhysicalUrlAccess プロパティによって、
その静的URLだけでなく、ルーティング先の物理URLについてもアクセス制御が可能だと分かりました。
ありがとうございます。
C#にはiniファイル読み書きクラスはないのか?
そんな時代遅れなものはない XMLかJSONを使え
226 :
217 :2014/02/11(火) 12:33:12.79
ファイラー作ってんだけど、
例外回避したいからアクセス権で処理の可否を事前確認しようとしているんだけど、
アクセス権取得(GetAccessControl)で例外発生して使えない
どうすりゃいいっての?
まあ、
>>217 の■アクセス権の取得方法 で例外が発生した場合、
アクセス権が無いと判断すれば、やりたいことはやれるだけど
MSはACLでnull返すとか、個数0を返すとかしてくれれば良かったのに。
>>224 今時iniとかありえないよな
でもユーザーが直接触る可能性のあるものはやっぱiniだわ
>>227 何その自己矛盾
って思ったら、相手をあえて肯定しつつ若干反論になる自分の意見を主張してたのね
コミュ力高いと見た!
まあAPI呼ぶのが無難かと
JSONなら手書きもいけるっしょ 最近の人ならiniよりむしろ馴染みがあるのでは
xmlもjsonも先方にわからないって怒られるからダメ
おれおれフォーマットでいいならいくらでも作ればいいだろ
そもそもiniの仕様がわからない
[section] key=value ;コメント ;まぁ大体こんな感じ
xmlにしとけよ iniはきちんと実装しようとすると沼にハマる
xmlの沼よりマシな気がするけど
なんで設定ファイルごときの仕様を厳密に守る必要があるんだ
後で泣くのは自分だから
iniは「”」とか微妙なところで個人差があるから独自フォーマットの方がマシ
>>239 そういう意味では、ini自体独自フォーマットでしょう。
最近日本語が通じなくなってきたorz
>>239 そういうのは標準のAPIを使ってない「iniモドキ」だろ。
>>243 標準()のAPIでも挙動が異なるんだよ
「個人差」
iniはvalueがコレクションとかだと面倒だけど xmlは場合によっては>とかユーザーがやるんでしょ? うーん
CDATAの使い方でも教えとけよ
普通のテキストファイルに設定データ書けばいいじゃん
iniもxmlも普通のテキストファイルですが?
>>249 だからその書式をどうするかの話だろ。
ひょっとして .ini とか XML がテキストファイルでないと思ってる?
設定ファイルはXAMLもどきにしてコンポジションを定義するのに使ってる
だから自分で勝手にフォーマットを決めろよ APIなんか使わなくてもいいよ
そうやって、一見似てるけど微妙に互換性がないフォーマットが増えていく
XML≠テキストファイル
互換性なんて幻想
>>246 俺が「個人差」と言った意味がわかったろ
2万年ROMれ
iniファイルの互換性って意味不明すぎる
2chにいるガキ=甘ったれの能無し がデフォになりつつあるな 2chももうすぐ完全終了かもw
先輩!前はどうだったんすかwww
鼻ったれの種無し
韓国人の強姦性は?
映画「インスタント沼」 超お勧め しない
264 :
デフォルトの名無しさん :2014/02/12(水) 02:10:18.91
クラスA { クラス1 クラス2 クラス3 } こんな風に、複数クラスをクラスAに「集約」させて定義するのは、 クラスAの機能がクラス123に強固に依存するからなんでしょうか。 クラスAを実体化させた場合でも、当然、内部クラス123は、別々に実体化する必要がありますよね。 当たり前か。 こんな風にクラスを定義することってよくあることなんですか
うん
>>264 クラス1~3が絶対にクラスAでのみ使われるのなら
私も同じ様に書きますね
でもバラして書く人もいるでしょうね
結局は人それぞれなのでは?
普通によく有る。 というか既存クラス123で提供されている機能を再利用するごく当たり前の方法。 別々に実体化といっても、確かに外部からオブジェクトを渡されて保持する場合も有るけど、 普通にクラスAのコンストラクタで生成すればいいだけ。
>>264 単なるグループとしてAを使うならそうだけど、
本来は逆で、123がAに強く依存してる場合に使う
123はAのプライベートメンバに自由にアクセスできるからね
両方向あるだろ
264はネストクラスと言うことで良いのかな
271 :
デフォルトの名無しさん :2014/02/12(水) 09:08:03.76
C#を使ってたら学校で恥ずかしい奴と言われました みんなJavaを使っています 何とか言い返してやりたいのですが 簡潔に相手をギャフンと言わせるような文言はありませんか? 多勢に無勢で言われ放題はとても口惜しいです
「ギャフン」と書いた紙を見せてこれ読んでみてと言う
こんなバカの巣窟に依頼しても何も得られんよ
>>273 バカの巣窟で釣られる人はバカの王様かなぁ
275 :
デフォルトの名無しさん :2014/02/12(水) 10:48:00.85
C#はJavaと違って多重継承ができると言ってやれ 学校中の笑いものになれるよ
コピペ元特定班の報告はまだなの?
277 :
217 :2014/02/12(水) 12:25:06.00
アクセス権について注意事項をここにまとめておきますね。
お礼は要りません。
FileSystemRightsのReadAttributesについて調べました。
属性って何が属性やねんと思われる方がお読みください。
ここでいう、属性はエクスプローラのプロパティで見れる属性と
イコールではありません。
■ファイルの読み込み属性のみの拒否
親ディレクトリでListDirectoryを拒否し、ファイルのReadAttributeを拒否すると、
File.Exists()自体でfalseが返ってくる。
つまり、なんの情報も得られないどころか、存在しないことになる。
■ファイルの読み込み属性のみの拒否2
親ディレクトリでListDirectoryを許可し、ファイルのReadAttributeを拒否しても、
File.Exists()はtrueが返ってくる。
更に、ファイルの属性(読み取り専用、SYSTEM等)が読み込めるだけでなく、
サイズ、時間(タイムスタンプ等)の基本情報の読み込みは可能。
つまり、下記のMSDNの注釈の意味はそういうことである。
■ファイルの読み込みデータのみの拒否
親ディレクトリでListDirectoryを拒否し、ファイルのReadDataを拒否すると
ファイルの属性(読み取り専用、SYSTEM等)が読み込めるだけでなく、
サイズ、時間(タイムスタンプ等)の基本情報の読み込みは可能。
当然データの読み込みは拒否される。
■File.GetAccessControl メソッド
http://msdn.microsoft.com/ja-jp/library/8e1fc3b8 (v=vs.110).aspx
NTFS 環境では、ユーザーが親フォルダーに対して ListDirectory 権限を
持っている場合、ReadAttributes および ReadExtendedAttributes が
そのユーザーに付与されます。
ReadAttributes および ReadExtendedAttributes を拒否するには、
親ディレクトリで ListDirectory を拒否します。
調査乙ではあるが、OSバージョンによっても微妙に差異がありそうなんだが vista前と以後とかで
279 :
217 :2014/02/12(水) 12:37:23.89
ついでに、FileSystemRightsの16進表示も書いておきます。 こちらの方が、意味が分かりやすい。 フィルだーとファイルについては対応するものは同じ値が割り振られています。 ■FileSystemRights ListDirectory 0x000001 ReadData 0x000001 CreateFiles 0x000002 WriteData 0x000002 CreateDirectories 0x000004 AppendData 0x000004 ReadExtendedAttributes 0x000008 WriteExtendedAttributes 0x000010 ExecuteFile 0x000020 Traverse 0x000020 DeleteSubdirectoriesAndFiles 0x000040 ReadAttributes 0x000080 WriteAttributes 0x000100 Delete 0x010000 ReadPermissions 0x020000 ChangePermissions 0x040000 TakeOwnership 0x080000 Synchronize 0x100000 Write 0x000116 Read 0x020089 ReadAndExecute 0x0200A9 Modify 0x0301BF FullControl 0x1F01FF
280 :
217 :2014/02/12(水) 12:38:27.92
281 :
218 :2014/02/12(水) 12:41:05.16
>>278 調査環境は
OS Windows8.1
.NET .NET FrameWork4
ファイルシステム NTFS
です。
親となるAクラスと継承した子クラスBがあります。 それぞれに同じ名称のint型の変数oneがあったとします。 Aにはメソッドtest()がありone++;を実行するとします。 BからAのメソッドをtest()を呼び出す場合、test(one)とoneを引数とせずにAのoneではなくBのoneを++;する記載方法はありますでしょうか?
あえてなら class A { private int one; public void test() { this.one++; this.ontest(); } protected virtual void ontest() { } } class B { private int one; protected override void ontest() { this.one++; } } こんなん でも意図が分からないからこれがベストかどうかは知らん ただ名前が同じというのは何の意味も関係もないのは確か リフレクション使うってんなら別だが
>>282 そんなアホなコードは書かないのが正解。
どうしてもやるならoneはフィールドでなくプロパティーにしてBはそれを
オーバーライドする。
ありがとうございます ここいうメソッドtest()はAでもBでも使用するのですが、全く同じ内容で共通の名称の変数oneの内容が違えば使いまわせたので 使いまわす方法がないか気になってました 実際は引数が複数あるのであまり追加したくなかったのですが、素直に引数を追加します
別にアホではないだろ 典型的なテンプレートメソッドパターンじゃないか
らうめん
つけぅめん
ブレッドアンドバターじゃないか、にみえた
どうやら
ペドロアンドカプリシャス
292 :
デフォルトの名無しさん :2014/02/13(木) 01:56:15.28
>>265 おおっそうですか。
>>266 >クラス1~3が絶対にクラスAでのみ使われるのなら
「のみ」がポイントですね。子クラスをばらして使うことは考えないので大丈夫です。でも、あえて子クラスのみを実体化しようと思えば、
親クラス.子クラス()のようにして、親クラスのメンバとしての子クラスについてそのコンストラクタを呼んでいいのかな。
>>267 >普通にクラスAのコンストラクタで生成すればいいだけ。
なるほど、クラスAに子クラスを集約した場合には、クラスAのコンストラクタで連鎖的に、子クラスを実体化したいと思います。
ありがとうございます。
>>268 >123はAのプライベートメンバに自由にアクセスできるからね
なるほど、クラスAに複数の子クラスを集約した場合、子クラスからは親クラスAのプライベートメンバにもアクセスできるようになるのか。
重要な知見です。でも、ちょっとカプセルが破けた感じかな。
>>269 >両方向あるだろ
親クラスが子クラスに強固依存、あるいは、子クラスが親クラスに強固に依存
この両方のことですね。今回は、親クラスが子クラスの機能に大いに利用し依存し、また、外部から子クラス単独を使うことはないという場合になります。
みなさま、ありがとうございました。
整理がついてきました。
整然とした集約がいいなら子クラスをインターフェースに書き換えるとかも手だね
>>293 そのインターフェイスを実装するクラスの定義はどこに書くんだ?
295 :
デフォルトの名無しさん :2014/02/13(木) 15:07:20.80
298 :
デフォルトの名無しさん :2014/02/13(木) 21:51:50.59
>>294 お前のカーチャンが寝てる隙に腹に油性ペンで
>>294 頭の中で動いてたら
別にわざわざコードに書く必要なくね?
300 :
デフォルトの名無しさん :2014/02/14(金) 12:57:33.92
301 :
デフォルトの名無しさん :2014/02/14(金) 16:05:20.88
[DllImport("user32.dll", SetLastError = true)]
public static extern uint keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
この使い方でDLL のプリロード攻撃は問題ないのでしょうか?
http://support.microsoft.com/kb/2389418/ja
wellknown dllだから問題なす
SetDllDirectory呼んどけ
最近C#始めたのですが、switchでbreak;を省略できないので、 困っています。他の言語でbreak;を省略する方法で記述した プログラムをC#に移植する場合は、どうするのが一般的でしょうか?
驚愕のgoto
case 1: case 2: 処理 このようにcaseの中になにも書かない場合に限りbreak省略OK 何らかの処理をしてからフォールスルーしたいときはbreakの代わりに明示的にgotoを記述する
switch で break; 使うのはCからのお約束だし、 割り切って全ソースの switch 検索して追加してく以外無いんじゃない? どうせそれ以外の部分だって修正無しに使えるわけ無いんだし
みなさん素早いコメントありがとうございます。 goto文を使う方法があるなんて知らなかったです。 少し抵抗がありますが、さっそく使ってみます。
使 う な
case 1: goto Case_2; case 2: Case_2:
goto case 2; goto default; でいいよ~
後藤さんと愛を育もうとしたのですが、この愛は壊れてしまいました goto break
C#でgotoなんて使ったこと無いな。
多重ループでbreak代わりに使うわ
315 :
デフォルトの名無しさん :2014/02/14(金) 22:53:53.86
マウスで地形になるやつはJavaScriptで作れますか?
複雑な分岐とか書く場合にifの括弧に複雑な式を書くぐらいなら 単純な式のifを多く並べてgotoで飛ばした方がむしろ可読的に書ける場合とかあるけど、 使いどころの選択と(こっちは一般にあまり強調されないが)ラベル名の命名センスが問われるね。 俺は割とgoto使うけど、無頓着なダメグラマが乱用したら害しかないのは間違いない。
前に飛ぶのか後ろに飛ぶのか一目で分からないのが痛い
アセンブラじゃあるまいし構造化ができる言語で前に飛ぶgotoなんて使わないよw
ループ前後での制御に使うのがgotoだと思っておけばいいんじゃないの
オブジェクト指向言語で何の話してんだw
そもそもなんでCと違うようにして ダサい方法でそれをできるようにしたのか
322 :
デフォルトの名無しさん :2014/02/15(土) 02:30:53.36
gotoなんて、つかうのは、BASIC もううんざり
gotoはコンパイラ警告出しても良い時代だと思う
>>323 そう思う。
>>316 を悪く言っているわけではないが、
>ラベル名の命名センスが問われる
にはいらいらを覚えてしまった。
アセンブラで組んでいたときは、jmpの連発で、何がなんだかわからなくなってしまう。
Basicやってない
VBAで組んでいるスパゲッティアプリを修正、改良していると、
もうどうでもよくなって、その場しのぎでとにかく動けばいいものを組んでしまう。
C,C++,javaやってない
C#だとオブジェクト指向でクラス設計と関係を重視して、
あとで振り返りやすい美しいものになる。
いまここ。
c#にもgotoあるのかよ
switch文が縦に長くなりがち。
今回の質問者のようにCとかC++のような言語からの移植を考慮してあるんでしょ。 しっかりオブジェクト指向でやれば、そもそもswitch/case文すらあんまり使わなくなるし。
あえてgotoを残したのはcとの互換のほか、 特に禁止にしなくても「おまいらわかってるだろ」てことらしい
gotoは宝だ!
後藤さん
>>327 どうしてswitch/case文使わなくなるん?
なに使えばいいの?
単純に処理の振り分けってことを考えたらどうせ似たような文書くんだから同じ 使ってないんじゃなくて他の書き方で使ってるだけ
オブジェクト指向だと多態とか継承を使うからswitchをあまり使わないという 昔からある言説
334 :
デフォルトの名無しさん :2014/02/15(土) 11:18:58.51
固定長の配列を受け取る関数を作ろうと思ったら 固定長の配列のみをメンバーに持つclassにして それを受け取るぐらいしかないでしょうか。
そのままreturnすれば?
>>333 コンパイラとか書けば、switch文は必ず使うよな。
組込み型とか内部見たらifもswitchも使いまくりじゃん 内部実装なんてどうでもよくないか? オブジェクト指向に必要なのはモジュール化する意味だろ? 使用者が内部実装なんて気にせず簡単かつ便利に使えることが一番重要だろーが ブラックボックステストで内部実装把握しろみたいな糞実装多過ぎるんだよカスPGども
ごみん
>>337 >オブジェクト指向に必要なのはモジュール化する意味だろ?
あと、継承させることによる、プログラミング中の整理のつき易さ
>>340 そのユーモアがいいね
ところで、
c#コードも大事だけど、
SQLのテーブルとテーブル構造とストアドプロシジャは、なかなか修正できないので、
最初の設計って大切だなと思うこの頃です。
もう14年もたったデータベースがまだ使われているし、特に困ったこともない。
>>331 例えば、スーパーマリオで、
通常マリオ、スーパーマリオ、ファイアマリオという状態に対するイベントの組み合わせを
条件分岐を使わずに書くと。
基底クラス、通常マリオ、スーパーマリオ、ファイアマリオを作って、
コントローラの操作やらゲーム内のイベントをそれぞれメソッドで定義し、
呼び出し側は基底クラスで参照しておく。
キノコ、フラワー、敵にぶつかった時は、各クラスが自分の次の状態のマリオの
インスタンスを返してやる。
こうすれば、イベントに対して、各マリオクラス固有に動作を実装するだけでよくて、
そこに条件分岐というものはどういう形であれ全く入って来ない。
言葉だけだと分かりずらいので、この辺参考にして貰えればいいと思う。
http://d.hatena.ne.jp/hkhumanoid/20090528/1243473358
実際にマリオ作ろうと思ったらそんな設計にするやつは少数派だろうな・・・
多段ifも禁止
345 :
342 :2014/02/15(土) 20:11:52.61
こんなこと書いてるが、普段の仕事はC言語で おもいっきりスパゲティー、1関数何百行、10段ぐらいのネスト、 コメント無しの技巧的なコード、グローバル変数の名前がaとかbとか1文字でコメント無し、 そしてgoto文使いまくりの最低なソースと大格闘しているわけだ。 C#の仕事したいよ。。。
説明するのもバカバカしい話だけど、本来の話は多態で無くせるswitchがあるよっていう話で、 当たり前だけど多態使えばswitchを全廃できるなんて馬鹿な話じゃない。 そんな訳ないでしょ。
誰が全廃って言ってる?
また荒れてきそうだな 雪でも被って来いよ
>>347 鳥頭か。
誰も言ってないが、誰かがそう言ってるという前提で話をしている人ならいる。
ああそうか。 何故かデザインパターンという言葉に噛み付いてくる奴が居るから使わずに、 Stateパターンのケースを紹介しただけのつもりだったけど、 確かに全て条件分岐を無くせると誤解されそうだな。すまなかった。
>>350 現実には「あんまり」と評するほどもswichの使用頻度なんか変わらない。
同じ話を繰り返したくないが、正しくは「多態で無くせるswitchがあるよ」という程度のインパクトしかない。
プロジェクトのフォルダの管理に関して上級者の皆さんにお聞きしたいのですが、 VS2008とVS2013をインストールしていて、7:3くらいでVS2008を使っています。 デフォルトの保存先はCディスクのそれぞれ、 My Documents\Visual Studio 2008\Projects My Documents\Visual Studio 2013\Projects ですが、ちょっとしたテストはこれらのフォルダに適当にサブフォルダを作って保管しています。 一方、本格的なプロジェクトはDesktopにそれぞれ専用のフォルダを作って、 プロジェクト1 プロジェクト2 みたいに管理しています。 でも、自己流なので混乱気味です。もっと良いお勧めの方法ありますか?
フォルダ分けで混乱しそうになるほどソリューションを乱造しない
最近は仮想環境に作ったDebianのgitlabに全部突っ込んでる 俺適当にサクサク消すからさーサクサク涙が出るんだよね後で
文字列をgoogleみたいに and or ""などの演算子を使って検索するライブラリ教えて 正規表現で実装してたら、ユーザーが使えなくて文句が出たわ
それライブラリ必要か?
必要なんだよ 理解しろよ上級者
ユーザには使えないけど、あんたは出来るだよね? じゃあちょっとラッパー書いてやればいいだけじゃないか。
ローカル画像検索のライブラリ無いっすかね?
Windowsの検索を利用するライブラリはないでしょうか
Eigenみたいな高速な行列演算をおこなうライブラリはないでしょうか?
抽象クラスの存在意義ってあるのか?
364 :
デフォルトの名無しさん :2014/02/17(月) 01:10:22.38
テキストボックスのテキストを取得したいのですが、うまくいかないので質問させてください。 対象とするアプリケーションは、kabuステーションという株ドットコム証券の専用ツールです。 これの現物買発注ダイアログで、テキストボックスに入力した値(例えば証券コードのボックス)を取得したいのですが、うまくいきません。 今やっている方法は、sendmessageのWM_GETTEXTを使う方法です。 他のアプリケーションのテキストボックスや、kabuステーションのラベル(例えば、数量や執行条件など)のテキストは同じ方法で取得できるのですが、 なぜかkabuステーションのテキストボックスに入力した値だけは取得できずに困っています。 具体的なプログラムは以下です。 (hWndはウィンドウハンドルであり、正しく取得できていることを確認しています) [DllImport("USER32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); [DllImport("USER32.dll", CharSet = CharSet.Auto)] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, [MarshalAs(UnmanagedType.LPTStr)] System.Text.StringBuilder buff); private const int WM_GETTEXT = 0xD; private const int WM_GETTEXTLENGTH = 0xE; //WindowのTextのバイト数を取得 int byteLength = SendMessage(hWnd, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero).ToInt32(); System.Text.StringBuilder buff = new System.Text.StringBuilder(byteLength + 1); //WindowのTextのバイト数を取得 byteLength = SendMessage(hWnd, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero).ToInt32(); buff = new System.Text.StringBuilder(byteLength + 1); //Textを取得(wParamは文字数,lParamはTextを受け入れるバッファ) SendMessage(hWnd, WM_GETTEXT, byteLength + 1, buff);
Lengthは取得できるの? それと、本当にテキストボックスか?spy++とかで見てみろ
lengthが取得できていないのかと思って、10文字固定でやってみましたがダメでした。 spy++は入手できていないのでウィンドウエクスプローラを使っているのですが、 テキストボックスかどうかって、どこを見ればわかりますか?
ウィンドウクラス名を見る
他のを見たところ、editなどとなっていましたが、取得したいボックスには そういうのは入っておらず、謎の文字列が並んでいました こういう場合、根本的に取得できないのでしょうか? (settextならできたのですが) また、これ以外の方法で取得する方法はあるのでしょうか?
UIAutomationとか
>>367 クラス名は
WindowsForms10.Window.8.app.0.2e0c681
となっています。
一部の入力ボックスは
WindowsForms10.EDIT.app.0.2e0c681
となっており、テキストの取得が可能でした。
EDITが入っているものは取得できるのですが、そうでないものはどうすればいいのか分かりません。
ドトネトじゃねーか Reflectorにアセンブリをドロップしてみそ
サウンド関連は今もDirectXや外部ライブラリに頼るしかないって感じでしょうか? Win8.xみたいなメトロアプリでもそこらへんは変わらないんでしょうか?
WPFならMediaElementとかがある ストアアプリも同様
もっと下層の、効果音をミキシングとかその辺はまあ…
>>371 やってみました。
私のC#の知識では、どこをどう見ればいいのか全然分かりませんでした・・・
ILSpyでデコンパイルしたプロジェクトってエラーだらけでリビルド出来ないのだがこんなもんなのか? 割と期待して導入しただけにこれにはがっくし来たよ 謎の$記号とかなんなんだろうなあれ
コンパイラが自動生成してる部分があるからね。まぁ諦めろ。
なるほど自動生成か あーステップ実行したいよ…
デバッガをアタッチすればILでステップ実行はできるでしょ ILはC#がわかってりゃ十分読める
ASP.NETにはドロップダウンリストコントロールはありますが、 コンボボックスはあるんでしょうか。 ドロップダウンリストは、データソースから導出されたリストから一列を値として取得できるだけです。 コンボボックスというのは、ドロップダウンリストの能力も持ちながら、テキストボックスのように任意の文字列の入力もできます。
385 :
ぴんく :2014/02/18(火) 15:59:07.18
ぴんくちゃんねるで画像認証が導入されたせいで書き込みが自由に出来ないので 浪人BETAで発行される メールアドレス・ハッシュキーを使って画像認証をスキップ出来る ブラウザを開発しています。
もう普通に書けるらしいぞ
388 :
デフォルトの名無しさん :2014/02/18(火) 18:07:30.29
ERROR!
ERROR:CAPTCHAを記入する必要があります
画像認証無しで投稿できます!
JaneXenoで浪人を使えます。
Live2chで浪人を使えます。
Respoolで浪人を使えます。アンドロイド
2chA1Foxで浪人を使えます。ア>ンドロイド
2chスマホ ブラウザ(iand2ch.net)で画像認証なしでPINKへ投稿できます。
2chスマホ ブラウザ(i.bbspink.com)で画像認証なしでPINKへ投稿できます。開発中
>>387 どこが
普通に書けたけどな 荒らし対策で一時的にオンにしたって言ってたぞ。 ●入れてたりしないか?
プログラミングやっていると、頭が精密になってくるのか、生来のものなのか、他の人の言葉の羅列が理解できなくなる。 仕様決定のための打ち合わせをしていても、頭に入ってこない。 わからないが聞いているうちにわかるだろうと相槌を打つと、 どんどんと手続き言葉の羅列が流し込まれてくるので、ますますわからなくなる。 反応をしないでいるが、頭が悪いと思われているかもしれないと考えると、余計に気が散ってしまう。 で、後でじっくりとノートに図式を書きながら理解していく。 すると、ブロックがきちりきちりとはまっていく感じに理解していく。 するとたった一つの言葉で語られていたことが、たくさんの場合わけが必要だとも気づき、用語も新生することになる。 表にまとめてそれぞれの条件も綺麗に整理する。 ここまできてようやく理解できる。 だから、あのシリアル化ストリームから即座に理解するなんてありえないんだと思った。 自分の頭の構造がちょっと違うのだと気づいた。
かわいそうに。疲れているんだね。
なんだ、その打ち合わせは口頭でしかやってないのか? 何か図を描いた資料を用意してないのか? もしくはホワイトボードに書きながらとかやらないのか? そりゃ、分からんだろ。
かわいそうに。釣られてしまったんだね。
>>392 レスありがとうございます
私だけではないんですね。よかった。
後で思ったんですけど、プログラマの理解はプログラミングに通じるような、必要なすべてを考慮あるいは定義することになります。
しかし、業務に携わっている人の業務の理解は全く違う。だから具体例ばかりをあげられる。
で、そこから本質を抽出するのがわれわれなんだと思いました。
この頭の構造でなんの後悔もありません。
プログラマは本質をつかめます。つかめなければちょっとしたプログラムなんてかけないはずです。
だから人にわかりやすく教えることも長けています。私がそうです。
物事を幼稚園児にもわかりやすく教えられそうにいつも思っているくらいです。
マ板でやれ
>人にわかりやすく教えることも長けています。私がそうです
>>390 ,394を見る限り、どうみてもそれは間違っています
つまり、あなたは単に頭の悪い人です
マ板でやれ
今日はマ板君がんばってるな
Int32.Parseにアルファベット食わせた時にFormatExceptionをキャッチしているのに コンソールに A first chance exception of type 'System.FormatException' occurred in mscorlib.dll って出ちゃうんだけどこれってなんとかならん?
コンソールに? 出力ウィンドウじゃなくて?
むしろそんなもの何とかしたいという発想が謎
>>399 そんなもんキャッチするな
失敗するのがわかってるんならTryParseを使え
いや、失敗するのがわかってたらパースしようとするなとw
男なら、危険を顧みず、死ぬと分かっていても行動しなければならない時がある 負けると分かっていても戦わなければならないときがある
ポエマーきもっ、まで読んだ。
ハーロック△
女子校生だったらどうよ?
>>402 バリデーションの為だから失敗する前提と言うのは確かだな。
なんか本末転倒な気もするけどTryParseでスッキリしたわ。ありがとう。
しかしキャッチ自体はできるのにイチイチログはくとか気持ち悪いな。
例外処理で引っかけるとコスト高いし折角スッキリ書けるのに勿体ない。
それってデバッグ情報をfullとかpdb-onlyで実行してるからじゃないの?
環境も何も書かんで言われても解らんわな 変なデバッガアタッチしてたりするかもしれん
例外がコスト高いってなら、極力発生しないように IsNumericとかで先にチェックしてからやればいんじゃね。 念のためTryはするとして。
>>409 >>410 VisualStudio2013のWPFアプリ、.NET4Full向け。Release版。
プロジェクト設定は特に変更せずって感じ。
>>411 うん、そう。
だから例外処理一本で出来ればコード的にはスッキリするのになって愚痴だよ。
念の為にしかならないのは仕組みとしてもったいないなって話。
今回のログはく話とは全然違う話ではあるけど。
UIに凝ると、その部分のコードがコテコテになる。
自家用書き捨てコードは、ちょっと変な入力しただけでハングするけど何の問題もない。
ハングするのはないな 最低限のエラーチェックはするけど、エラー処理ルーチンまでは書いてられないので、いきなり異常終了しちゃうが
>>416 適当な階層でcatchして無視するなり、リスタートするなりすればいいじゃん、
>>403 一般的にパースのエラーはパースしないと分からない(事前チェックとパースは本質的に同じ処理コスト)なので
「失敗するのがわかってたらパースしようとするな」はない。TryParseが正解
Try...パターンがout Exceptionパラメータ持ってくれてたら嬉しかったんだけどなー
そもそもエラーとは何かって哲学的な問題になる
何にせよTryParseがあるだけJavaよりマシだろ あのクソ
TrayParse、.Net 1.1 とか Compact Framework には存在しないけどな
>>419 情報集めたり親切なメッセージ作ったりするのにコストがかかるから意味内
非同期処理なんかだとどう書けばいいか分からずそんな感じになる
非同期処理だとコールバックの引数に例外渡すことはあるが outはないだろ
LeftToRightに設定したFlowLayoutPanel1に画像とラベルを追加して、SetChildIndexで先頭に持って行きたいのですが、 FlowLayoutPanel1.Controls.Add(this.PictureBox[n]); FlowLayoutPanel1.Controls.Add(this.Label[n]); FlowLayoutPanel1.Controls.SetChildIndex(this.Label[n], 0); FlowLayoutPanel1.Controls.SetChildIndex(this.PictureBox[n], 0); とすると一番最後の FlowLayoutPanel1.Controls.SetChildIndex(this.PictureBox[n], 0); の部分で 「'子'はこの親の子コントロールではありません。」とのエラーがでます。 Labelの方のSetChildIndexではエラーは出ないのですが、どういうことなのでしょうか。
C++の世界からやって来ました C#にはC++のsmart_ptrのようなクールななクラスはないのですか? 毎回いちいちusingを書くのはタイピングが面倒ですしネストが無駄に深くなる酷いパターンです しかしリソースの解放はシビアな課題なのでやる気のないGCには任せられません 我々C++プログラマは楽をしつつリソース解放のタイミングを完全に制御したいのです
そんなにリソース開放する場面あるか?
>>427 そんなにメモリ気にするならCでゴリゴリ書けよ。
そんなの自分で制御できないGCに依存するものを選択した時点で間違ってるわ。
そもそもusingって何か理解してるか?
C、C++の世界に戻るのが吉ですね。
usingはファイルだとか、描画オブジェクトの開放とか、アンマネージなリソースでしか必要無いぞ。
RAIIなら意味は通るがスマートポインタとか言ってる時点でレベルが知れるな スマートポインタはいつ解放すべきか決めるのが難しい時に使うもんで、いわば欠陥の多いGCだ
Formのレイアウトで、 |ボタン1 ボタン2 ボタン3| と横一列に並べる ボタン1,3はサイズ固定、ボタン2はサイズ可変だが最小値あり 加えてこの一行を水平方向にFillしたい場合、どうすればよいでしょうか?
>>433 の補足
|■□■|
|■□□■|
...
|■□□□□□■|
のように、ウィンドウサイズによりボタン2のみサイズを変えたい場合です
Anchor = Left|Right なPanelに突っ込んで それぞれのAnchorをLeft, Left|Right, Rightにする 最小値はPanelのMinSizeでも設定すれば
必ずtry{}finallyブロックがほしいオブジェクトの場合 リソース握ってなくてもIDisposableにする場合あるだろ ネストが怖くてC#できるかっての
usingはブロックをネストせずに複数重ねられるし C++でも細かく寿命を制御したいときにはブロックをネストすることはある
いいから失せろC++カス
C言語の次世代って、何? なんか言ってたよな。立ち読みで日経プログラミングで見たとき。
アスペ脳の恐怖、まで読んだ。
Croatia言語の次はRussia言語
D言語って使っている人いるの?
C#のここがダメ!俺ならこう!→やっぱり糞だからやめて互換性切るわ Dはひたすらこれの繰り返しでC#の先見性を証明しただけの言語
.netなければC#なんて使ってないけどな 後からツギハギしてるだけのC#のどこに先見性があるのかと
>>444 互換重視の言語がつぎはぎだらけになるのは仕方が無い気もする
TIOBEで一桁に入って来れない言語がメジャー面すんな お前よりはC++の方がいいわ
グローバルマウスカーソルの情報を取得したいと考えています。 具体的には、グローバルマウスカーソルのアイコンが変化したことを確認したいのですが、方法が分かりません。 GetCursorInfoを使えばいいというのはわかったのですが、どういう風にプログラムを組めばよいのか、 サンプルも見つからず困っています。 教えてください。よろしくお願いします。
すいません、さっぱりです 何かいいサンプルはないでしょうか?
usingを省いてもスコープアウトでリソース解放して欲しいならそういうコンパイラを書けばいいだけ 幸いにもマイクロソフトが頑張ってるからプログラマは楽できる 並の職業プログラマなら半月分の昼休みがあれば可能だろう
>>450 ありがとうございます。
カーソルのハンドルまではどうやら取得できたようですが、カーソルの形状はどのように取得すればよいのでしょうか?
ありがとうございます。 うまくできたようです。 大変お世話になりました
どういたしまして。
ファイルの暗号化を行っているのですが、せっかくなのでファイル名の暗号化を考えています。 取り敢えず手っ取り早くBASE64エンコードを考えていたのですが スラッシュ("/")はファイル名に使用できませんでした。 何か手軽に文字列として出力できる暗号方法は無いでしょうか?
置換も出来ないのか
BASE64は暗号じゃないが? 暗号化したファイル名をどうエンコードするかという話なら、ふつうに16進でいいんじゃないの?
>>457 取り敢えず元ファイル名が分からなくなればいいけど何かライブラリとか無いかなと思って。
>>458 自前で暗号化(Cryptography)した後のバイナリデータだとファイル名に出来ないから最後にBASE64で文字列に変換してる。
多少長くなるが取り敢えず運用上問題ない。
長くなっていいならHEXDUMPやろ
/が使えないならほかの記号とかに置き換えればいいやん?って457が
/を別の記号に変えればいいじゃん
%エンコードしてたらUriクラスが誤動作するようになって・・・ 使えねー奴
>>461 >>462 なるほど。自分の頭では考えが及びませんでした。
置換する事によりBASE64の仕様から外れるため、一見BASE64とは思われなくなると言う効果も期待できそうです。
ありがとうございました。
一見BASE64とは思われない効果?
そこは触れないでやれよ 「組織」か何かに狙われてんだろ
シード固定の乱数でも使って適当にパターン生成すればいいんじゃねえの
暗号化した上でそういう目的の置換俺はよくやってるな 意味ないけどw
お触り程度の置換
>>465 まあ素の Base64 デコードはできなくなるからイージーハック対策にはなるんじゃね?
>>467 すでに暗号化してるらしいんだが...
struct CELL { public int Xposition; public int Yposition; public int life; }; private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { List<CELL> cell = new List<CELL>(); cell.Add(new CELL(e.X,e.Y,100)); ~~~~~~~~~~~~~~~~~~~~~~~~ って書いたら"'LifeGame.Form1.CELL' に、引数を 3 個指定できるコンストラクターがありません。 C:\Users\******\documents\visual studio 2012\Projects\LifeGame\LifeGame\Form1.cs 50 22 LifeGame" ってエラーが出ます。どうしたらよいでしょうか?
引数三個指定できるコンストラクタ書けばいいだろ
複数の byte[] のデータを ひとつの byte[]にしたい(順番にくっつけたい)場合、 どうやると効率がいいのでしょうか。
全部のLengthを合計したbyte[]を作ってBuffer.BlockCopyあたり
LINQのConcat().ToArray()以外は実行効率はともかくコード書く効率が悪すぎてやってられんわ 計測もしてないからLINQが速いか遅いかは知らんが、まあそのうち最適化されんじゃねぇの
List<byte>にAddRangeすればいいじゃない
せめてMemoryStreamに
MemoryStreamもToArray()するとBlockCopyされた奴が返ってくるんだよな
ファイル名最後の部分が全角空白のファイルがあるのですが、 string path = "z:\\Work\\test00010 . txt "; // 最後の部分が全角空白 Console.WriteLine(System.IO.File.Exists(path)); .NET Framework 3.5だとfalse .NET Framework 4だとtrue が返ります。 3.5でtrueが返るような回避方法ないですか?
代わりにPathFileExists呼び出すとかそういう後ろ向きなのしかないんじゃないかな
>>481 ども、
やはりWindowsAPIじゃないとだめっぽいですね。
Exitsメソッドだけではなく System.File.SetAccessControl とか
ファイルIO関連メソッドでもダメなようなので全部対応となると・・・
4に上げてもらうのが一番早そうですが、うーん。
趣味でC++とJavaの経験がある程度なんですが、C#も勉強したいと思ってます。 そして今までdllというものに対してネイティブな動的リンクライブラリってイメージしかなかったんですが もしかしてC#で作ったdllであれば、Javaのclassファイルのように ヘッダファイル無しでクラスなどにアクセスできたりするんですか?(ついでにIDEでコード保管されちゃったり)
うん C++でいうところの.h/.lib/.dllを全部まとめた感じのもの
逆コンパイルしたらソースほとんど丸ごと出てくるし、c/cppもまとめた感じだよな
別にそれは目的じゃないし
テンプレートと思ってジェネリクス使うと多分がっかりする
ポータビリティとのトレードオフだよ そのための制限ということさえ理解していれば納得のいく非常に自然で十分強力な仕様 Javaのジェネリ糞に比べればな
あれはVM互換性重視した結果なんですよ 君らも好きだろ互換性
互換性よりメタプログラミングの方が好きだけどね
メタプロはオブジェクト指向(の動的ポリモフィズムな部分)と相性悪いし、住み分けだよね
互換性互換性言うけどジェネリックス使ったJavaのバイナリって1.4じゃ動かないよね
>>493 そりゃライブラリが違うからな
当時のSunの台所事情のせいでああなっただけだよ
一方Oracleはすげえくだらんことで早速JVMを弄った
.NETのジェネリックはTypeオブジェクトで型引数を指定してList<>をインスタンス化したりできるからな これはこれで一種のメタプログラミングに使える
496 :
デフォルトの名無しさん :2014/03/05(水) 13:22:04.06
実行時にメタプログラミングする必要はないと思う
T4テンプレートって使ってる?
C#やめたい 仕事やめたい つまんない
>>497 むちゃくちゃ使ってる。C/C++の.hから[Import]を作るとか
Razorに置き換えてくれ 書きにくいし読みにくいんだよT4
彡彡ハミミ 彡彡´・ω・ミ 邪悪なIDEより 彡彡彡彡ミッミミ Emacsを使おう 彡彡彡彡ハミミミミ / _|つ _|つ / |
emacsでIDE作るプロジェクトって無いの?
みんな進捗表示どうやってる? 俺はワーカータスクの中で進捗情報セットして、イベント投げて、 それ受けたUI側で進捗情報読み取って表示してる。 ワーカータスク側のイベントハンドラにUI側で+=してInvokeしなきゃいけないのがきれいじゃないけど IProgressとasync/await使うやつもみたけどなんか直感的じゃないような気が、 結局見えないだけでイベント処理してんじゃね?
>>505 > 俺はワーカータスクの中で進捗情報セットして、イベント投げて、
> それ受けたUI側で進捗情報読み取って表示してる。
それBackgroundWorkerそのものや
ReportProgressを呼ぶだけ
進捗100%表示のままなかなか次に進まないダイアログとか 無性にイラっとくるよな。
だんだん遅くなるダイアログの方がウザイ ブラウザとか通信できてないくせにチョコチョコ進めやがって
>>507 インストーラーでよくあるな
5分くらい何の変化も無く止まっててプログレスバーの意味全くねーだろアホか?
って感じの奴
おまいらがコーティングしたから、そんな感じのゲージ表示になるのかw
プログラマだったらあれをうまく進めるのがどれだけ難しいか分かるだろ どんだけ(ry
わからないし、そんな不適切なプログレスは作らない。 馬鹿でマトモな作りができない上に それがおかしいと思わない低脳なのだろう。
逆に100%を待たずに消えちゃう進捗とかもあるな
時間を見積もるのはかなり難しいぞ 究極的には実環境でテストしながら調整するしかない
しばらくお待ちください... ※10分以上かかる場合は何か問題が起きています プログレスバーなど不要
動いてないと固まったように見えて、ユーザが不安になるんだよ。 10分と書いててもいつからだとかユーザが記録・記憶してるわけないから、 まだなのに、10分待ったのに終わらないぞ、このソフトおかしいと強制終了させたり クレームつけて来たり。
>>514 > 時間を見積もるのはかなり難しいぞ
そんなことはこのスレのまともな奴なら知ってるだろ
>>507-9 はそういう問題じゃないし
わろたw
・作業量を見積もる難しさ。そもそも始めてみないとわからない場合がある ・残り時間を見積もる難しさ。経過時間と完了割合から推測するしかないので ・
class Foo { public Foo<T>(~) { } } みたいなコンストラクタ書けないんだね。 どういう設計思想でこうなったんだろう?
そのTの使い所が思いつかんな
public Foo<T>(ReadOnlyObservableCollection<T> source, Func<T, Hoge> converter) みたいなコンストラクタ作ろうと思ったら出来なかったのよね。 まぁFactory作ればいいんだけど、なんでかなと思って。
自覚はしてるみたいだけど それって呼び出し元で.Selectってやるのと実質変わらないよね
コレクション変更に追従するようにするので、Selectじゃ無理なんです。
おかしいな と思ったら糞言語をやめて他の言語を勉強しよう
どういう理由でこういう仕様になったのか知りたいのです。
そういう設計思想はバグ産むからこういう仕様
ああ言えばこう言う
設計思想について云々するのはオナニーに他ならない というのがこのスレの総意
素朴な疑問ですが FooとFoo<T>は同じ型ですか?
Javaとは違うんです
>>524 無理でないのでは?
var list = new List<int>(new[] { 1, 2, 3 });
var sel = list.Select(i => i * 10);
foreach (var i in sel) Console.WriteLine(i);
//list.Clear();
list.Add(4);
foreach (var i in sel) Console.WriteLine(i);
>>532 CollectionChangedイベントが使いたいんだろう
コンストラクタに型引数付けられたらnew Hoge<int><string>()みたいなおかしなことになるだろ
Javaだとnew<String> Hoge<int>という苦しい書き方をするが、
こんな気持ち悪い構文よりは諦めたほうがマシだろ
3.0以降ってC++みたいで読みにくい(^p^)
C++っぽいのはC#2.0だろ お前はC++もC#もろくに理解せずにただ何となく難しそうに見えるものをC++みたいと言っているだけ
最新のバージョンはPHPっぽいからな
FooとFoo<T>が違う型なのに FooのコンストラクタがFoo<T>になるのは理解できませんが どういう設計思想をしたらそう言う事が出来るようにと考えるんですか
意味不明 Foo型のコンストラクタ: Foo() Foo<T>型のコンストラクタ: Foo<int>()等 Foo<int>で一つの型名だぞ?何が理解できないのか全く理解できない
>>538 コンストラクタが普通のメソッドみたいにジェネリック使えないのかと聞いているのであって、Foo<T>は型名として言ってるんじゃなんじゃない?
ややこしくなるからやらないだけで、やれない理由はないよ(構文上の制約は別にして) コンストラクタ呼び出しってただ初期化専用のインスタンスメソッドを呼んでるだけだからね
ジェネリックじゃない型のコンストラクタにジェネリック?
SQLSERVERの、トリガを使うべきか、アプリケーションとしてC#で実装するか。 どっちが良いのでしょうか。 あるテーブルの複数行にまたがる同じフィールドで管理している数の合計が、 別テーブルにあるそれと関連した行のフィールドで管理している数に一致したとき、 もう一つのフィールドのBIT型列をTRUEにするような動作です。 これをトリガで実装しちゃうと、 意図しないタイミングでもこの処理がなされてしまいます。 たとえば、行コピーを行なった場合です。 やっぱり、C#でアプリ機能として実装しとこうと思います。 トリガって使ってます??
意図しないタイミングってなんだよ データは常に整合性を満たすように操作しろや
そもそも実データとしてそのBIT列を持つ設計が間違ってる
COBOLみたいなクソ設計だな
>>545 あれっ?そうなの。BIT列を実データで持っては駄目なの
BIT列がなければ、
「あるテーブルの複数行にまたがる同じフィールドで管理している数の合計が、
別テーブルにあるそれと関連した行(かなりたくさんある!!)のフィールドで管理している数に一致」
しているかどうかを必要なときに毎回、SQL文を走らせる必要が出てくるので、
それを端折って高速化を図るために、「もう一致したよ」という意味のBIT列を備えようと思ったんです。
>>544 データベースの引越しなんかでデータを流し込むときです。
この場合は、アプリケーション意図の圏外です。
gdgdになりそーな作り方だな
目的がわからんので何とも言えないけど、バッチロードしたデータがそのフラグに影響しない意図がよくわからん それならその項目の値はアプリでの挿入とバッチロードでの挿入は別にするべきじゃないの?
そもそもデータ設計の話であってC#とは全く関係なかった
こうしたいだけだろ?適当にクラスつくって入出力管理するだけじゃん 入力 出力 ↓ ↑ データ+フラグ→メモリ ↓ DB
>>データベースの引越しなんかでデータを流し込むときです。
>>この場合は、アプリケーション意図の圏外です。
>>549 >バッチロードしたデータがそのフラグに影響しない意図がよくわからん
言われてみれば、ロード時のデータもフラグに影響します。そのほうが自然です。
ただ、数万ある行の各挿入ごとに、トリガが動作するので大変そうですし、(バッチロードが非常に遅くなりそう)
「もう一致したよ」を表すBIT列は整合性を気にするほどのものでもないし、
アプリ動作には必須ではないからです。
なぜなら、BIT列チェックによる計算軽減がなされない場合には、きちんと計算しなおすように設計しているからです。
あくまでも、SQL導出処理時にBIT列で行を絞り込んでやることで計算軽減を図るだけのものなんです。
だから、整合性はあったほうが良いけど、上の理由により必須でもないのでトリガは大げさだし・・・
バッチロード時の負担を考えれば、アプリケーション層でC#で実装しようかと。
>>551 >→メモリ
って何を意味しますか?
アプリ層で実装せよってことですね
バッチロードの時だけトリガ無効化して、流しこみ終わったらSQLでフラグの再設定してトリガ有効化すりゃいいんじゃないの?
>>554 トリガを使うという場合にならそれが一番ですよね
しかし、整合性重視にトリガを使うべきか、アプリ層でC#で実装するのか、
うーん、今日はこの問を立てて終了した。
低レベルにトリガを使ったほうが確かにカンタンそう。
アプリ層だと対応が面倒くさそうだった。
トリガってカンタンに有効無効設定できるんだ。
使ったことないんで。
厳密な整合性入らないなら適当な頻度でマテビュー切れば?
突っ込みどころ満載だな
整合性の無い関連フラグDBに持たせてるやついたら そいつプロジェクトから外すか俺がプロジェクトから降りるかするわ
CCWの挙動をカスタマイズしたいのだがどうすりゃいいのよ IUnknownの実装が不満たらたら
>>558 整合性が全くないというわけではない
厳密に整合性がなくても困らないように、うまい具合に整合をとってある
>>556 はい、手動イベント発生で、sql文実行するように考えています
整合性と言うものが厳密なものではないとは知らなかった
厳密かどうかのレベルはあるだろ 預金残高みたいに常に整合していないといけない情報もあるし、アクセスカウント表示みたいに大体合ってりゃいい (誤差が累積しなきゃいい) ようなものもあるだろ
トリガはリアルタイムな整合性のために設計するべきだし、カウンタは誤差が累積する例だと思うよ
どうやったら誤差が出るのか分からない カウンタの誤差ってどんなアクセスをカウントするかで誤差るってことであって、DBへ入れる作業で誤差が生じるわけじゃないだろ? それともおまえらが作ったらDBへ入れるとこで誤差出るのか?w
参照するたびに値が違うよ
1、データベース都合なら、トリガへ 2、アプリケーション都合なら、ビジネスクラスで これがわかった。 1が大切そう。ストアドプロシジャしかやってなかったが、今後はトリガつかっていく。
たぶん常識的なこと言ってるんだろうけどさっぱりWakarane
マ板にID変えられない奴なんでいないだろ ID出しても無意味だね
質問者の成りすましがいなくなるだけでも効果絶大だわ
と自演荒らしが申してます
どっちでもいいけど、出されて困ることもないな
勝手にやってくれどうでもいい
俺みたいな実家で家族と一緒にネットやってるやつは気軽にID変えれないし、 スマホのID変えも、子供やイタズラ目的の輩が手を出そうとすると偽情報に 騙されるリスクがあるから割と効果的だと思う
自演がバレて困る
通行人です。 例えばある時刻の総訪問者数をデータベースに記録する場合データ不整合起こしやすいんだね。 ミリ秒の差でカウンタ増えた場合も記録して、データベースの時刻は秒までとか。 唯一のユニークな値にならない場合どの値採用するの?
ユニークな値にならないじゃなくて、ユニークな値にしてないだけじゃん ロックかけろよ
>>577 > 唯一のユニークな値にならない場合どの値採用するの?
なんでそんな変な設計なのかよくわからんが、その案件ならでかい方の値でいいでしょ。
つーかデータベースの話でさえない予感
通行人ってなんすか 門外漢の間違いでは
70ってなんだよ殺すぞ
70とかマルチスレッドくんはもういいだろ まだ引きずってんのかよ
糞ワロタ だが確かに特徴あるな
70は自決しました ありがとうございました
幼稚くさ。生きてて苦痛じゃないのかねこういう馬鹿って
おっぱい飲みたいでちゅ
俺のチンコからはミルクが沢山でるよ
しかしdynamic型が中途半端すぎる ラムダ式入れられないって
ダイクマ型
592 :
デフォルトの名無しさん :2014/03/10(月) 23:04:23.62
ラムダ式はそれだけじゃデリゲートなのかExpressionなのかもわからんからしょうがないやろ。
dynamicなんか良いからウォッチでラムダ式使わせろ
川俣以外のラムダ解説で良いものあります? 本とか雑誌のコラムとか、ほぼ川俣しかみないし もしかして流行ってないの?ラムダ式
流行ってないどころか(川俣さんも書いてるけど)もはや常識化しちゃってるだけでしょ。 っていうかラムダなんてそんないくつも記事読まないと分からないような深い技術じゃないよ。 むしろ覚えたその日にすぐ使えるようになる類のもの。
ラムダ式に限らないけどC#の場合追加した仕様は全部○○のために必要だからちょっと文法変でも後付で入れた だから○○するならそこで使うだけ
関数型言語やればいいよ。 ラムダも普通の関数も表記に一切違いがないことを見れば全く同じだと直感的にわかるから
いや、まずはJava8やればいいよ その前にC++の知識が要るね 前提条件としてObject-Cも身に着けておこうか でもやっぱ基本はasmだろ常考 とかいう流れに持って行くのがココの住人
本に C#では参照パラメータが必要になる場面はほとんどない。他のプログラミング言語との相互運用のために利用する。 ってあったんだけど…そうなんすか…?
カスタム値型だと稀に見かける程度 ほぼoutしか使わない
おれのスパゲッティコードではよく出てくるよ
Tuple<T1, T2, ...>に詰めて返すくらいなら素直にref使って下さい
だよなあ…著者はどういうつもりで参照は使わないと書いているんだろう?
クラス書けよってことじゃないかな
C#ではということは他の言語と違うということだな
>>603 Tupleの代わりならoutだろ。refである必要が無い。
Tupleから取り出して元の変数に代入する作業があるんだよ……
Java8はStreamがC#のLINQにそっくりなわけか でもSceneBuilderひでえなあれ JavaFX使い物にならん
C#はキライです でもJavaさんはもっとキライです
じゃあObjective-Cでどうだ。今ならラムダ式っぽいのもあるぞ
パパの象さんが大しゅきです
初めてはお父さんでした
インスタンスメソッド内で定義したフィールドとかオブジェクトとか実体Aがあるとします。 そしてこの参照をreturnで呼び出し元に返します。 呼び出し元では参照可能なこの実体Aは、いったいどこにあると考えればよいんでしょう。 もし、また呼び出しが行なわれて同じインスタンスのそのメソッドを呼び出して、再び参照を得たとします。 今度の参照は実体Aではない実体を取り扱うことになるんでしょうか。 それとも、同じ実体Aなんでしょうか。
>インスタンスメソッド内で定義したフィールドとかオブジェクトとか実体Aがあるとします。 出来ません
>参照可能なこの実体Aは、いったいどこにあると考えればよいんでしょう。 生のアドレスを基本的には扱うことがないC#で実体のアドレスを 必要とすることはないので意識する必要はありません。 >また呼び出しが行なわれて~以降 具体的なコード例を示してくれないと何が言いたいのかわかりません。
>>614 参照型とか値型を知ってるとして。
参照型の本当の実体はヒープというとこに有って、参照型はその場所を知っているだけ。
で、それを取得するということは、その場所の情報を教えるだけなので、結局参照先の実体は同じ。
値型はその値そのものを持っているものなので、
それを取得するということは、その値を複製するということなので、
受け取ったものをどういじっても元の値には影響しない。
class ABC { 略 } class A { public ABC method-a { c1 = new ABC(); return c1; } } static class MAIN { void start() { A ca = new A() ABC one = ca.method-a() ABC two = ca.method-a() 略 } } この場合、startメソッド内の、oneとtwoは、同じ実体を参照することになるのでしょうか。 それとも、メソッドのコール毎に異なる実体を参照するのでしょうか。 アレッ?何を勘違いしていたんだろう。 c1 = new ABC(); って書いたんだから、メソッド呼び出しごとに異なる実体が生成されてる。 すみません。また思い出したら質問します。
>>617 ありがとうございます。
ということは、値型をreturnしたときには、呼び出し元ごとにコピーされて値が渡されているんですね。
参照型の場合は、
>>618 の場合のように、メソッド内でnewして生成して対応する参照が呼び出し元に返されるとき、
呼び出し元毎に異なる実体が参照されるとわかりました。
そして、そういうメソッド内でnewされた実体は、メソッドの枠を超えて別管理されていることもわかりました。
>>616 >生のアドレスを基本的には扱うことがないC#で実体のアドレスを必要とすることはないので意識する必要はありません。
ありがとうございます!!
他人に聞く前に自分でコード書いて確認した方が早い気がする…
参照型変数の中のアドレスが見えているか見えていないかで コードのクオリティが全く変わってくるから 参照と実体がなにか知りたければ C言語をアドレスを理解できるまでかじるといい
>>621 アセンブラ(masm)で、
mov ax,[1234]
のような理解でもおk?
>>622 まあいいんじゃないのかな
C#とのつながりが分かれば
Console.Writeのラッパーを Action<string, params Object[]> print = (format,arg) => Console.WriteLine(format,arg); こんな感じでは書けないんでしょうか?
paramsいらなくね
型引数にparamsは使えない やるとしたら独自delegateを定義する
Actionって、ラッパーとして使うものなの? ラムダ式を引数にとる関数に渡すときに使うものだと思っているが。
関数内で関数を作って局所化したいっていう動機はあるよね そのためにdelegate定義するのはめんどいし外側が汚れてしまうっていうのも分かる
みなさんありがとうございます。 とりあえず可変引数は無理っぽいですね。 例は可変引数の場合わかりやすいかなと思っただけなので特に意味はないです。
結局ID出す事にしたんだな
こういう系の板だと一旦変なのに絡まれるとスレ跨いでストーカーされるのが 鬱陶しんだよねIDがあると。
そんな心配するほどレス数の多い板じゃない
ここで初心者扱いされてるのにVBAスレでは強気な俺のレスが見られてしまうな///
>>631 同時にあぼーんする手段もできるんだから問題ない。
>>634 オストリッチ症候群かよ。
っていうか、無視すること自体は見えるかどうかとそもそも関係なく可能。
IDの何が問題って、確信犯的な荒らしを抑止する効果なんか事実上ないのに 荒らしてる自覚がない荒らし(むしろ本人下手すると正義味方(笑)気取りだったりする) を増長させる副作用だけはしっかりあること。 結局余計な問題を増やすだけで有難みなんかほとんどないんだよね。 情緒的にではなく論理的に考えれば。 日本人は何でもそうだけど論理を無視して情緒で物事決めるダメな国民性だよな本当。 それで原発も止めてるし金融緩和政策なんて馬鹿な政策も実行しちゃうし泣けてくるよ本当
そういうの自治スレかID議論スレでやってね
IDを変えるプログラムはし~シャープでかけますか?
かけますん
>>636 死ねばいいのに
皮肉でも何でもなく、こんなんでよく今のご時世を生きてられると思う
うんこに触るとうんこの臭いがするよ
IF(おまえら[i].精神性 < c#.精神性) THEN 後藤
コンパイルエラー! 理由:自明な式
自動テストどうやってる? 例えば、DBの検索結果に対するテストとか 入門サイトに書いてあるとおり、1 + 1の結果が2になったのでテストOKでーすってのはまずありえないし
DB程度なら別接続先で随時データ入れ替えてやればいい リレーションが複雑だとテストデータのテストになりがちなのがアレだが
わかりやすいテスト感丸出しのデータで完全一致テスト 業務に近いデータでルール合致テスト めんどくさいし自分からやる場合はこれだけ あとは顧客の要求しだいだね
抽象クラスAを実装したクラスBがあります。 クラスBでは抽象メソッドaを実装したり、新規にメソッドbを追加しています。 クラスBをインスタンス化あるいはセッションオブジェクトから取り出すとき、 抽象クラスAにキャストして抽象クラスAのメンバメソッドαにアクセスしたいです。 このメソッドαは内部で抽象メソッドaをコールするようになっています。 ここで、クラスBによって実装されえいるものが実行されるんでしょうか。 何がひっかかっているかというと、クラスBのインスタンスを抽象クラスAで参照しているところです。 クラスBのインスタンスをクラスBで参照するのなら何の疑問もありません。 よろしくお願いします。
もちろんそうよ
なんでテストコード書かないの? そのわかりにくい日本語で質問を書く時間があればテストコード書けたでしょ?
>>647 根本的なところを勘違いしてるようだが、インスタンスメソッドを持ってるのは
インスタンスではなくてクラスだ。
で、インスタンスメソッドを呼ぶときって対象のインスタンスの型に応じて見に行くクラスが変わるわけ。
見に行った先に目的のメソッドがあればそれを実行し、なければ継承元のクラスを見に行くという動作をする。
クラスAの抽象メソッドはクラスBで「上書き」されるわけだよね overrideされる クラスB側でクラスAのメソッドを書き換えてると考えればいい
>>648 >>651 ありがとうございます。
>>652 overrideと実装は別物じゃないのですか。たしか、オーバーライドって、ベースクラスのメンバが隠蔽されることですよね。
派生クラス型変数でそのメンバを参照すると隠蔽後のメンバが、ベースクラス型変数で参照すればもともとのメンバが見えるんですよね。
あっ、抽象メンバの実装って、オーバーライドの特殊な場合だと考えていいわけですね。
でも、もともとのメンバがabstructなので、ベースクラス型変数で参照してもオーバーライド後のメンバしか見えないのかな。
>>650 >インスタンスメソッドを持ってるのはインスタンスではなくてクラスだ。
クラス変数で参照することでインスタンスがそのクラスとしての意味を持つわけですね。object型で参照しても石ころにしか見えない。
>インスタンスの型に応じて見に行くクラスが変わるわけ。見に行った先に目的のメソッドがあればそれを実行し、なければ継承元のクラスを見に行くという動作をする。
だんだん先祖クラスへとキャストされながらメンバアクセスされるんですね。
私の
>>647 で書いたクラスBインスタンスは、キャストされることでまずそのベースである抽象クラスA変数で参照されてメンバであるメソッドαが呼ばれます。
メソッドα内ではthis.抽象メソッドがコールされています。このときに、おっしゃる「インスタンスの型に応じて見に行くクラスが変わる」わけですね。
すると、なるほど、抽象メンバなのでクラスAのままでは駄目なので、派生クラスBを通してthisインスタンスが見られて、めでたく具象メンバにアクセスできるのですね。
>>649 インテリセンスが機能しないので・・・以前のコードをコピペするので、真っ白なところにとっさに書けない。
合っているでしょうか。みなさまありがとうございます。
>>653 隠ぺいするのはnew
上書きするのはoverride
この違いはnewではAにキャストした時Aのメソッドが呼び出される(この場合は抽象メソッドだから呼び出せないけど)
overrideだとAにキャストしてもBのメソッドが呼び出される
>>654 >newではAにキャストした時Aのメソッドが呼び出される
>overrideだとAにキャストしてもBのメソッドが呼び出される
ありがとうございます。今までぜんぜん意識していませんでした。
派生クラスによる抽象メソッドの実装では、オーバーライドを使いますね。
だから、派生クラスBのインスタンスを基底抽象クラスにキャストして参照しても、オーバーライドしたメソッド(具象メソッド)がアクセスされるんですね。
そして、これがnewだと駄目なわけなのか。なるほど。
勉強になります。
ありがとうございます。
>>655 そうそう
中身を知りたければ関数ポインタとか仮想関数テーブルを調べればいい
>>656 そうやって何を参照するのかを調べる方法もあるんですね。
とりあえず、色々試したいと思います。
みなさん、ありがとうございました。
中小クラス
相互運用でさ Variantの引数をマーシャリングしないでそのままVariantとして扱いたいのだけどなんか手段はありませんかね?
試して無いが、StructLayoutで自前定義するとか?
>>660 dynamic
ラッパーは入るだろうけど
>>662 ここまでいろんな型考慮しなくてもいいよな
とりあえず使う型だけでさ
>>660 いずれにせよ
それを使うインターフェイス等の自前定義から始めないとな
配列の要素が全て一致するかどうかはSequenceEqualで調べられるけど 一部が一致している場合って簡単に分かる方法無い? 例えるならstring型のContains(string value)みたいな事を、任意の型の配列で行いたい。 自前でfor文でチェックする処理を実装するしかないのだろうか。
Array.ForEach
Anyかな
標準にはないね
A.Intersect(B).Any()以上のものを用意しろと?
誰が考えてもそんな汎用性のない処理が(
Anyだと配列の順番まで見てくれないのだ。 自分が使い方を完全に把握していないかもしれないけど。 イメージとしては int[] a = new int[] { 0, 1, 2, 3 };を比較元として int[] b = new int[] { 1, 2, 3 }; ←OK int[] c = new int[] { 1, 3, 2 }; ←NG int[] d = new int[] { 2, 3, 4 }; ←NG にしたいんだが。実際はint型じゃないけど。 取り敢えず自前でチェックしてみるわ。
var c = a.Intersect(b).OrderBy(x => a.IndexOf(x)).ToList(); var i = a.IndexOf(y[0]); var j = b.IndexOf(y[0]); for(var k = 0; k < y.Count; k++) { if(a[i] != b[j] || b[j] != c[k]) return false; i++; j++; } return true; とかそんなゴミみたいなロジックってことか
ゴミだとは思わないがArrayとは処理のレイヤーが違うんだろうな
>int[] c = new int[] { 1, 3, 2 }; ←NG 順番に依存するならIEnumerable<T>の拡張メソッドとしても馴染まない気がするが
ReverseとかZipとかSkipとかTakeとか思いっきり順番依存だろ
単純なメソッドを連結していけばLINQ的に記述しても分かりやすいけど 込み入ったことをするならループ書いたほうが分かりやすいだろう
LINQの方が抽象化されてて簡潔に書けるから意味は取りやすいだろ 理解していないだけ
>>677 それはLINQが単純なメソッドで構成されてるから分かりやすいだけだよ
DataContractSerializerでプレースホルダなしで 配列・コレクションを入出力するにはどうしたらいいでしょうか。 たとえば以下からitemsを取り除くにはどうしたらよいのかということです。 <root><id/><items><item/><item/></items></root>
>>679 DataContractSerializerは通信用。入出力ファイルのスキーマが決まってる場合に使うものじゃない。
中身を気にするならXmlSerializerを使う。XmlSerializerは決してレガシーじゃなくて明確に役割が違う。
>>671 P/Invokeでmemmemを使えば・・・と思ったけどVCにmemmemってないんだな。
質問です 違うホストのHttpWebRequestで同じCookieを使いたいんですがなにかうまい方法ありませんか? CookieContainerを指定するとどうしてもUriごとに別々にされてしまいます
やめてやめて 仕事の質問をここでしないでよC#プログラマさん 僕の考えてるC#プログラマさんはもっと頭がよくてかっこよくてイケメンで聡明なんだからさぁ 努力不足の人はここにこないでよぉ
cookieってそういうもんだし 追加するときにCookie.Domain書き換えれば?
頭の悪いドカタさんなんだからもっと丁寧に回答してあげてよぉ! 出来るC#プログラマを育てる気持ちでさぁ
>>684 なるほどわかりました。やってみます。
それと正攻法はないでしょうか?
CookieCollectionにGetCookieHeaderとSetCookiesができればいいのですが…
A:風が吹けば桶屋が儲かる B:なんで? A:猫が減るからです いちいち0から馬鹿丁寧に教える義理もないし この程度のヒント提示であとは自分で考えろ ってな感じでいいんでね?
ほらまた質問で反ってきたでしょ? ちゃんと回答してあげないといつまでも解決できないよ
cookieはそういうもんじゃないから正攻法も何もない
もし有るならセキュリティ問題としてそのうちWindowsUpdateで修正されそうだな
結局それ言われて帰っちゃうんだ 何しに来たんだろうね まともな答えを得られないのをわかって質問したのかな 本を広げればいいことなのに
>>692 みたいに終わった質問を後から横から茶々いれて
意味不明なこと言うのはやめて
C#プログラマがこんな低レベルって思われたくないよぉ
次はもうちょっと勉強してから来てよね
荒らし的なことをやってるのはどいつだよぉ>< ダメな質問者を甘やかしちゃだめだよ
C#はいずれ天下をとる言語なんだから汚したりしないでよねっ!プンプン
>>700 元々はPythonスレ住人で他言語スレを荒らしまくっているようだ
Pythonスレから離れてくれて助かっていると、
Pythonスレ住人の一人(ID:pXWrRWdV)が告白していた
ふーんそうなんだ ID出るようになって本当に良かったよな
やっぱり質問が低レベルなスレだと頭も低レベルな人が集まってきちゃうのかな うまく上級者スレと区分けされてていいね
むしろIDの存在が荒らしを誘発してるケースのように見えるが...
>>703 はむこうのスレのことですよ
投稿間違えた
>>704 直前直後の短い期間だけみればそう考えても不自然ではないが、もう少しスパンを長くすれば功罪両方ともみえると思う
自分に関しては例のトリップがつけにくくなった(苦笑)、必死チェッカーって強力すぎなくない?他板まで引っ張ってくるのは勘弁してほしいなあ‥‥
荒らし氏の狙いもそこにあるような気もするね
自治スレでやってろよ。おまえらが荒らしじゃん
荒らしじゃなくてこのスレで変な回答する人が問題になってるんでしょ?
多分こうやって荒らし続けた後にIDが原因で荒れたからIDを削除して下さいって言えば なんとかなると思ってるんじゃないのかな
だまってNGIDに入れとけ
lockによるブロッキングを検出できる方法はないでしょうか? ・アプリケーション内から ・デバッグやパフォーマンスツールから 実際にブロッキングが発生している回数やブロッキング時間、 タイミングなどが知りたいです。
Process Explorerとか使ってパフォーマンスカウンター眺めてみれば
lock内で記録しとけば?
>>712 ありがとうございます。カラム追加で.NET>lock>Contentionでしょうか?
試してみたいと思います。
>>713 シンプルでいいですね。ただソースに変更なしでやれるとうれしいですね。
それと追加でもうしわけありません。現在Taskによるスレッディングが
一般的と思いますが、これで、スレッドを即座に終了させるということは
できるのでしょううか?キャンセルチェック処理に到達しない場合の
強制アボート?的な終了ということです。
>>714 ゴミの知能で質問しないでよ
C#プログラマの名がすたる
工業高校ってそんなもん
そこらのドカタより学生のほうがレベル高かったりするからね
いやほんと、学生のほうが独学でガリガリやってくるからね
もしかして宿題スレの回答を提出して落第したuyか?このあぼ~んは
722 :
デフォルトの名無しさん :2014/03/17(月) 15:57:57.93 ID:fy2/s0A2
学生は出来る奴と出来ない奴の差が激しいよな。 教わるなんてレベルじゃ無いのも居れば、 引数が理解出来ていないのも居る。
出来る奴は出来る 出来ない奴は派遣IT行きだね
Win32APIスレのキチガイと同じ臭い
まあ出来る奴に限ってIT派遣の道は選ばないんだけどね
上流連中が少数精鋭で自らコーディングするようになったらPGなんてほとんど絶滅だよね
>>726 うん、何が言いたいか全くわからないよ(困惑
コストで言うと 少数の優秀なプログラマ>>大量のドカタ集団
729 :
デフォルトの名無しさん :2014/03/18(火) 22:13:14.67 ID:+2DQ87sc
>>726 >上流連中が少数精鋭で自らコーディングするようになったら
>PGなんてほとんど絶滅だよね
現実は、文系営業SEが、良く解らず無茶苦茶な納期で
無茶苦茶な仕事を取ってくるんだけどな。
この業界は、そういうイビツな姿が、すっかり定着した。
プログラムを知らない文系SEに丸投げされる気分はどうでっか~?
少数精鋭がコーディングするのがアメリカとかでは普通なんだがな
732 :
デフォルトの名無しさん :2014/03/18(火) 22:34:05.45 ID:+2DQ87sc
フルタイム13万のシステム開発派遣を見たことあるけど、 生活保護の方が余程マシだな。
733 :
デフォルトの名無しさん :2014/03/18(火) 22:40:31.09 ID:+2DQ87sc
納期厳守で、入った1週間後が納期。 フルタイム月13万サビ残上等で、 文系SEの仕様無き仕様からPG起こす。 こんな仕事でも人が群がるんだから、 ヤクザな業界だよな。
IDの話だとすぐスレ違いだとか噛み付いてくる奴が何も言わないのは何か語るに落ちてる感じだな。 しかし、この手のレスを見るといつも思うんだが、お前の職場に馬鹿しかいないのは お前自身がそういう職場でしか取ってもらえないその程度のレベルの人間だからに決まってるわけだが、 こんな簡単なことが分からない馬鹿って何なんだろうね。 こういうのがマ板とかででてめえの無能を棚に上げてブラックだ何だと吼えてるんだろうけど。
ブラックでも歳食ってると採用されない現実。
736 :
デフォルトの名無しさん :2014/03/18(火) 23:06:55.46 ID:+2DQ87sc
>>734 サビ算とか無能に関係なくブラックだろ。
常識的に考えれば。
下請けプログラマは例外なく奴隷
マ板でやれ
739 :
デフォルトの名無しさん :2014/03/18(火) 23:54:18.52 ID:+2DQ87sc
>>737 IT土方が奴隷なんて、そんな身分は高くない。
朝鮮人から戦犯ジャップと罵られるような世界の癌的な存在。
細かいこと気にしないで要件の表面をなぞるだけなら少数精鋭で十分だけど、 ジャップは無駄に帳票のレイアウトに凝ったりチェックやメッセージ表情をクソ丁寧にやったりして ちょっとしたことでも結局膨大な量の単純作業になるのでドカタ大量投入は正解
灰は灰に、ゴミはゴミに
この業界はほんとにプログラムを知らない奴がプログラマやエンジニアとかになってるよな そういう無能はブラック企業で奴隷として酷使される運命にある
高給食んでるヘッドにも分かってないのが居るんですけど。
744 :
デフォルトの名無しさん :2014/03/19(水) 08:53:41.43 ID:b0n3Qh/f
>>742 引数の使い方解らない期待の新人とか居た。
クラスとか何それ美味しいの状態。
そういうのがSEとして、ガンガン仕事取ってくるんだから、
穴埋め用の派遣IT土方が大量に必要なんだよ。
当然納期は守れないんだけどな。
みかかを頂点とした搾取構造ピラミッドが崩れないんだからしかたないじゃん 日本のIT業界はゼネコンなんだ、三菱地所と鹿島・関電工がやらかした欠陥億ションと同じ お金持ってる大手と仕事の出来る上流様の下請けで業界は回ってるが、その上流様がプログラムのプの字も知らない癖に要件定義や基本設計やって詳細以下を下請けに丸投げ そりゃショートするよ、こんなんで上手く行くはずないよね 海外のスタートアップみたいに少数精鋭で仕事したいわ、金あればAppleやGoogleみたいに好きな物作って納得できるクオリティで世に出したい いつも志しあるPG以外がぶち壊しにする
だからお前が肥溜めの中にいるのはお前自身がウンコだから。 お前がダイアモンドかその原石なら肥溜めの中になんかいねえよ。 馬鹿じゃねえの本当。 偉そうに構造問題(まあそれは肥溜めの中の狭窄な視点から見える勘違いの産物でしかないんだが) を語る前にまず己の器を知れよ馬鹿。
海外のスタートアップが裏山なら海外行けって言うだけのことだわな まあ、ここで愚痴ってる口だけ番長なのはお互い様なんで仲良くやろうよ
・プログラミングの実力無い ・英語出来ない
マ板でやれやキチガイども
キチガイに話が通じるとお考えの花畑を発見しました
質問です。 ユーザーコントロールの上にLabelを配置しました。 ユーザーコントロールでマウスクリックのイベントを拾おうとしたのですが Labelが邪魔してユーザーコントロールまでイベントが届きません。 Labelを無視するあるいは ユーザーコントロールがクリックを受け取るにはどうしたらよろしいでしょうか? 検索する単語が悪いのか これと言ったサイトにたどり着くこともできませんでした。
WinFormsだろ? Label.ClickでUserControl.Clickを呼ぶだけ それ以外にこれといって対処できることはないから これといったサイトにたどり着くこともない
まずなぜユーザーコントロールの上にLabelを配置するのか状況が想定出来んw
ゴミだからでしょ
また馬鹿質問でスレを私物化しているゴミがやってきたようだね さすがC#
ありがとうございましたじゃなくてゴミ質問をしたことを謝罪しろ
>>758 むしろお前が邪魔だから馬鹿。
>>751 が言ってるようなことは、例えば既存のコンポーネントの上にオーバーラップして
何かを表示したいといった場合には必要になる。
必要になるというか、恐らくそれが一番簡単に実現する方法なわけで、
別にそんなにおかしなことを言ってるわけじゃない。
>>750 おかしいのはお前の頭、嘘回答で初心者に嘘を教えこんだ
お前も謝罪しろ、質問者とこのスレを汚したことを
何故突然荒れ出したしw ID反対派?
俺の画面だと荒れてないよ
uyってやっぱり在日チョンだったんだな
ああああぁぁぁ!
>>774 の家が!!! 〈 、′・. ’ ; ’、 ’、′‘ .・”
〈 ’、′・ ’、.・”; ” ’、
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY´ ’、′ ’、 (;;ノ;; (′‘ ・. ’、′”;
、′・ ( (´;^`⌒)∴⌒`.・ ” ;
:::::::::::::::::::::: ____,;' ,;- i 、 ’、 ’・ 、´⌒,;y'⌒((´;;;;;ノ、"'人
:::::::::::::::::: ,;;'" i i ・i; _、(⌒ ;;;:;´'从 ;' ;:;;) ;⌒ ;; :) )、___
::::::::::::::: ,;'":;;,,,,,, ;!, `'''i;. / ( ´;`ヾ,;⌒)´ 从⌒ ;) `⌒ )⌒:`.・/\
::::::::::: ,/'" '''',,,,''''--i / :::::. ::: ´⌒(,ゞ、⌒) ;;:::)::ノ. _/ \
::::::::: ;/ .,,,,,,,,,,,,,,,,, ;i'⌒i; / ノ ...;:;_) ...::ノ ソ ...::ノ__/ \
::::::: i;" ___,,,,,,, `i" /_______________/| |\
::::::: i; ,,;'""" `';,,, "`i;  ̄| _____ .______. |
>>774 宅 .|
::::::: | ''''''i ,,,,,,,,,, `'--''''" | | | | | | |
::::::: |. i'" "; | | | | | | |
::::::: |; `-、.,;''" | | | | | | |
:::::::: i; `'-----j | | ==== .| | ===== .| | |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
vs2010を使っています。 Accessのレポート機能は、かなり細かく制御できました。 sqlデータソースからの行がなくても明細パートのイベントハンドラをつかって、下地を白黒に交互に反転させることで、綺麗な書類を作成できました。 こういうレポート機能のフレームワークって、vsにも用意されているんでしょうか。 クリスタルレポートというのが2008までのものには同梱されていたらしいですが、 これはACCESSのレポート機能と同様に高度な設定はできるんでしょうか。 2010からはクリスタルレポートってどこかで購入する必要があるんでしょうか。 また、ASP.NETのページオブジェクトとクリスタルレポートの関係ってどうなりますか。 クリスタルレポートのフォーマットイベントって、C#でハンドルできるんでしょうか。
90%の職場でExcelは表計算ソフトじゃなく ただの表を作るソフトとして使われてるっていう話を思い出した
>>765 のようなゴミにはC#は手が届かない言語だって気づけよ馬鹿
>>765 いちいち細かく質問しで自分の頭では調べる能力がまったくないんだね
誰も相手しないよ、お前みたいなクレクレ野郎
VS2010以降は標準バンドルが廃止されており、 無償アドオン(SAP Crystal Reports for Microsoft Visual Studio.Net)をSAP社よりダウンロードし、 開発環境へインストールすることで継続して開発環境の 利用が可能。-Wikipedia-
>>769 m社はどうして自分で開発しようとしないのですかね?
ACCESSのようなレポートデザインツールはあるのに。
>>770 馬鹿には理解できないことだから諦めろよクズ人間
二度とこのスレに来るな
>>769 Wikipediaからコピペする馬鹿発見
ググれば出てくる問題をわざわざスレに書き込み
そして誰かがググってで出てきたものコピペして回答
これで質問が解決
終わってるなこのスレ
Z82+z0lXはメンヘラ? スレタイに相談室って書いてあるじゃん。 質問をして何が悪い? スレ終わってると思うなら来るなメンヘラのカス
確信犯の荒らしを構う貴方も荒らしのお仲間。 むしろ自覚がないあんたの方が重症かもしれない。
面白い人が面白いことをする ↓ 面白いから凡人が集まってくる ↓ 住み着いた凡人が居場所を守るために主張し始める ↓ 面白い人が見切りをつけて居なくなる ↓ 残った凡人が面白くないことをする ↓ 面白くないので皆居なくなる
>>764 天から黄金が降ってきて、大金持ちになりましたとさ。
俺、たった一人で会社(40名ほど)のITを担当している。 IT管理者全般、各PC自作&インストール、プログラム開発(SQLも活用した伝票処理)、ネットワーク構築、LINUXサーバー運用管理、IP電話システムの構築等々、ビルのLAN配線までやっている。 多分、ちょっとやりすぎではないかと思うのだが、会社としてはIT関係にたくさんの人は雇えないのだという。 サーバーが壊れてひどいめにあったりしたので、VPSに鯖を移設する作業が大詰めの段階。 一人で何もかもするって、中小企業なら当たり前なの?それとも、俺ってけっこう優秀だからできるのか? ASP.NET2.0を、Windows8のIISに移設しようとして、おかしいエラーに見舞われて、疲れた。 カスタムエラーでmode=Offとやっても、リモートからのアクセス時にブラウザに表示されない問題が解消しなかった。 VS2010で開発したASP.NET4プログラムは問題なく移設できたし、エラーもリモートのブラウザに表示できた。 疲れた。 甘口の意見たのむ
たった一人で、インターネットという不安定な環境が、唯一の相談の場だ。 挫折しそうになったこともたびたびあったが、なんとか一人で乗り越えてきた。 だから、さまよえるネット難民の気持ちがわかるので、わかることはヒントなど差し上げるようにしている。 IT担当って、縁の下で活動している。 プログラムの内部事情も知らないで、無理難題をぶつけてくる社員もある。 まともにほめられたこともないな。 どうしてこの仕事つづけているんだろう。 はやく楽になりたいなあ。ITの進化よ止まれ! 永遠に夏休みはこないのか。。。。 いやいや、神経質になってはいけない。 山があるからもくもくと登るんだ。たまには休憩しよう。そしてこれほどまで高く上ってこれたことを喜ぼう。 しかし、いっしょに登ってくれる仲間がほしいなあ。 VPSはディスクや電源交換の不安から俺を自由にして、負担を軽くした。これからもっとそういうサービスは安価になっていくだろう。
で、C#の相談はまだかね?
本日のNGID ID:ZZbby7db
ID:ZZbby7dbは自分語りをダラダラ書いてる割に質問が分かりにくくて判断材料も少ないだけの普通の質問者だろ
>>778 ASP.NETエラーページが出てるのならイベントビューアかログ出力コードでエラー特定できるでしょ
Global.asaxでも使ってみたら?
さすがにそのレベルは超えてるだろ 多分一眠りすれば自力で解決するよw
>>778 この業界って代わりはいくらでもいるから辛くても我慢するしかないよ
>>778 > 俺、たった一人で会社(40名ほど)のITを担当している。
人数的にはそんなもんかな。
ちなみにうちの会社は社員 800名で IT 部門は 18名。
まあ、一人と言うのはキツいわな。
逆に細かい所は自分で決められるから、スキルと向上心があればやりやすい面もある。
> 一人で何もかもするって、中小企業なら当たり前なの?
これは当たり前。
> それとも、俺ってけっこう優秀だからできるのか?
まあ、そう言うことにしておこう (w
年齢書いてないから何とも言えないけど 40越えてるなら、体力的な問題とかも出始めるから、若いやつを一人入れてくださいよ~ ってたのみ続けた方がいい、多分五年位かかると思うから。
ASP.NET2.0ってことは.NET Frameworkも2.0だよな まずWin8で.NET2.0動くのか? あとWin8でIISは(ライセンスの問題は別として)フル機能で動くのか? 自分が満足してやってるなら一人で全部やればいいさ 不満があるのに全部やってるなら、仕事のやり方を知らない馬鹿だな
一人で全部決められる方が楽しいわな 無能な上司の下でやってると死にたくなる
win8への移行は難しいぞ かなりコアな部分に互換性がない
C#うんこは処置諸所うおいおのしょ
どっちもNTベースです
またゴミが発狂した
>>783 >>786 >>788 そうですね。一度、web.confとmachine.confを、vs2010で再生成させてみたいと思います。
asp.net2.0を、.net3.5で動かすことになると思います。
新しいiis8などではアプリケーションプールという概念があるんで、そのプールの.netバージョンをguiで簡単に設定する必要がありました。
一応、ローカルマシンのブラウザからアクセスすると完全に動作した。
しかし、わからないのはリモートマシンからアクセスした場合、一部のaspxだけは動作するけど、sqlコネクションやデータソースコントロールを多用したaspxページはうごかないこと。
カスタムエラー設定でmode=Offとしても、リモートのブラウザにエラー情報を表示させるには、mode=Offを設定しろとのエラーが出ること。
>>782 の言うとおり、別の方法でエラーメッセージを取得してみたいと思います。慣れないので大変。
>>784 できることなら代わってほしいです。でも、全部、自分のオリジナルプログラムなんです。
後継が全部、持っていってしまいそうで、それもいやだ。
>>785 共感してくださってありがとうございます。一人はさびしいです。
深さ浅さは別として、オールマイティーにこなすIT担当の大変さを皆がわかってくれていたらまだ頑張れるけど、ある意味、目立つ医者よりも大変でしょ。(治療方針がないし、大病院依頼もできない)
ねぎらいもない。当たり前。不具合がでたらゴラーで、恐縮するばかり。
システムを安定させるまでもうちょっと頑張ります。
安定すれば、長い長い休みが取りたい。
>>792 お前みたいなゴミがなんでC#やってんだよ
消えろゴミクズうんこ
自分語りしてーならマ板でやれハゲ TPOわきまえず、物事簡潔に語ることもできねーからお前は底辺なんだよ
>>794 >物事簡潔に語ること
してその心得とは?
マ板へ行きます。
質問しに来たんなら質問だけ書けって話だそんくらい理解しろハゲ てめーの事情なんぞどうでもいいわ
質問する奴は全員クズなのだ論理的にも明らか
相互参照してるプロジェクトって作れないの? プロジェクトAにクラスaがあり プロジェクトBにクラスbがある aはbに依存してbはaに依存している 大人の事情でこの設計はもう変えられない ソリューションにAとBを作ってお互い参照させようとしたのだが普通に出来なかった
プロジェクトCにインターフェースを抽出しCに依存させろ
801 :
デフォルトの名無しさん :2014/03/25(火) 01:12:30.30 ID:RHWCQzbD
>>799 DLL参照を順序考えてやったらいけたというかなっちゃったような。
ビルドの後処理でお互いのバイナリ参照場所にコピー
>>801 はゴミの中でも一級品のゴミC#プログラマー
>>799 C#は前方宣言できないの?例えば、
class a の前に、class b とか。よく知らんけど
class b
class a
>>803 ゴミはごみなりにゴミコードを提示してください
妙なことせずにインターフェイス使えば
>>803 それを最近の静的言語の世界ではインターフェイスと呼びます
C#のインターフェイスには実装つけられないしなぁ Javaはできるようになったけど
同じ型内に書けないと言うだけで 静的メソッド(+拡張メソッド)で完全に代替可能だから
できないよ。静的メソッドはオーバーライドできないから。
あ、そうなのか>Java
そうなのかじゃねーよ馬鹿プログラマ お前にはC#は向いてないJavaでもやってろ
そんな罵ることないだろw 言語仕様にラムダ式追加したけどリストとかの既存のインターフェイスどうすんべ てのが元々の課題であって、 静的メソッド+拡張メソッドでLinqを実装して解決したのがC# インターフェイスに実装を置けるようにしたのがJavaってだけだもの 後発の方が機能が上なのは当然だけど、割り切った仕様が悪いというわけでもない インターフェイスを継承した子インターフェイスが親のデフォルト実装をオーバーライドとか 悪夢としか思えないし
うわあゴミにマジレスしてるよこの人
>>813 ゴミはお前だろ
何も語らないなら黙ってろ
>>803 ふつう前方宣言は同じアセンブリ内での話になる。
Pascalのように前方宣言必須の言語もあるが、C#は必要ない。
// class Bar -- こういう前方宣言は不要
class Foo {
public Bar Bar { get; set; }
}
class Bar {
public Foo Foo { get; set; }
}
でも、ここではアセンブリ間でどうなんだって話題だろ。
816 :
799 :2014/03/26(水) 00:24:28.92 ID:hfCViy2F
結局インターフェースだけ別のプロジェクトに分離した そんで生成をダイナミックにしたらなかなか悪くない感じになった
ちょこっとunsafeなコードを使い始めたら もうMarshal.PtrToStructure / StructureToPtrでしこしこやってきたところを全部治したくなった stackallocマンセー病にかかったかも
これからはunsafeだけでいいんだろうけど、 書き直す必要は無いんじゃね?
そうですね
820 :
デフォルトの名無しさん :2014/03/26(水) 13:00:24.21 ID:ZC1sfyNn
罵るだけのゴミは相手にしないようお願いします。
そうですね
822 :
799 :2014/03/26(水) 22:59:22.99 ID:op6WvdKw
unsafeってなにが出来るのですか? C++の構造体を使えますか?
使えるよ Cと同等のポインタ操作ができる 固定長配列も使える
824 :
デフォルトの名無しさん :2014/03/27(木) 17:33:13.28 ID:hr5UXKyM
元請のPG未経験の新人SEが、空いた時間でC#のプログラムを 勉強しろと言われたらしく、IT土方の俺の隣で、 変数とは何かから勉強しているんだけど、 先輩SEが「書ける必要は無い。読めるだけで良いから。」と 言っていたんだ。 「読むほうが難しくね?」と思ったけど、 実際の所、書けなくても読めるものでしょうか?
書くにも読むにも、どのくらいのレベルを求められてるかによる
読むほうが簡単なのは言うまでもない 「俺が読めるように書き直せ」という奥の手もあるしw だがぷろぐらむの書けないど初心者に向かって「書けなくてもいい」と言うのは暴論
827 :
デフォルトの名無しさん :2014/03/27(木) 18:08:45.84 ID:hr5UXKyM
>>826 新人SEの今のレベルだと、
メソッドを曖昧に理解しているレベルだから、
オーバーロードどころか参照引数も禁止になるかも知れない。
いや、型が何か解ってないから、
全部voidで書けと言われるかも知れない。
結構ピンチかも。
書けなくても読むことは出来ると思うけど、書いた経験のある人とない人では読み方に差が出るのではないのかな。
一概に書ける人が良くて書けない人が良くない、とは言えないだろうけれど、
傾向として書いたことがある人のほうがぱっと見は問題なさそうだけれども実際動かすとダメなコードとかを見分けられるだろうし。
でも、変数とはなにかレベルの人は結局勉強をしなきゃ読めるようにはならないよね。
メソッド名や変数名を追っていってなんとなくどこで何の処理をしているかが分かる、は「読める」というのかどうか。
まあそう考えると
>>825 に行き着くか。
829 :
デフォルトの名無しさん :2014/03/27(木) 18:22:13.02 ID:hr5UXKyM
ちなみに、新人SEが下のようなコードを書いて、 answer = a + b; int a = 1; int b = 2; 「正しいはずなのに何で動かない?」と悩んでいたのを見て、 先輩SEが、書くのは土方がやるから読めるようにだけなっておけって 感じで言ってました。 ちなみに、なぜコンパイルが通らないのか教えてあげようとしたら 「もうちょっとで解るんです。言わんで下さい。」と言われた。 まあ、惜しいとは思いましたが。。。
事実だとして先に謝っておきます ごめんなさい 本音 ネタ臭い
いいとこ行ってるじゃない うまいこと煽ってやればVBAくらいは使いこなせるようになるかも
関数型やSQL向きだな
全部voidで書いてやんよー 後で怒るなよ
全部dynamicで書けと言われるかも知れない。
いくら新人でも、プログラマ志望じゃなくてSE志望でも システム開発会社に入ろうかと言う人間でそのレベルは信じられない
上流の会社なら半分はコード一行も書いたことない文系だよ そして最下流奴隷のお前より高い給料を貰う
>>836 わかる
大手SIerで土方並に書けるSEなんて中途以外考えられん
838 :
デフォルトの名無しさん :2014/03/27(木) 23:30:14.05 ID:hr5UXKyM
日本のSEは、プログラムよりも語学力が優先される。 プログラムなんて、システムを作る上で、 大きなウェイトを占めていないからだろうね。
正確な文書を書ける、2つ以上の意味に取られる曖昧な記載をしない。 これが出来なきゃならんから確かに重要な要素だな。 企画書とか提案ならまだしも、要件定義で曖昧さが残ると ちゃぶ台返される。
840 :
799 :2014/03/28(金) 02:31:15.60 ID:D2kEgAua
正確で曖昧性の無い文書を書きたいなら必然的にプログラムに近付いていく 上流だからプログラム出来ないってのは土方の嫉妬からくる幻覚だよ やらないだけで書こうと思えばいくらでも書ける
マ板でやれっつってんの
いつまでも言ってろよバーカ
>>829 そいつはExcelでも使ってたのかね?
リアクティブプログラミングの考え方が根底にあるようだ。
845 :
デフォルトの名無しさん :2014/03/28(金) 09:10:16.92 ID:jR46UBH4
>>844 >そいつはExcelでも使ってたのかね?
Excelは使っているので、そうかも知れません。
いずれにしても、彼はプログラムを書くのを止めたので、
真相は闇の中です。
全部objectで書いたことならあるなw
C言語出来ない人はプログラマとは呼べないね
スレタイ読めない奴は人間失格か?
幸子ちゃんかわいかった
C#の正規表現ってパターンを新しく定義できないの? \myPtnと書いたら[a-c]と書いたのと同じだ~みたいな
継承クラス作って、マッチ関数の前処理で文字列置換すれば?
WPFを使用してタブをウィンドウに昇格可能なアプリケーションを作成しようと思っているのですがどうすればいいのでしょうか?
タブドラッグを検出したらタブ削除してウインドウ生成
MVVM的な状態分離できてりゃあとはドック実装だけでどうにかなる
宗教論争に乗る気はない
誤りを指摘されると「宗教論争」 その発想は斬新だ
MVVMってなんですか? MVCとは違うのですか?
結局ビューの実装に閉じた問題だからMVVMとか全く関係ないな
>>852 みたいなビューの要請が内部のロジックにまで影響するようなクソ設計は
MVVMがどうとかいう以前の問題だ
内部ロジックの話は一言も書いてないようだが・・・
VMがVに便宜を図らないんならそれはMだろ、というようなどうでもいい認識の話になるから止めろって言ったのに 俺はMVVMを使うとすら書いてないぞ
862 :
859 :2014/03/29(土) 10:25:49.91 ID:96vl7zqK
誤解させてすまん
ビューの要請(例:
>>852 )が内部のロジックにまで影響するようなクソ設計
という意味
質問に直接答えるなら、 新しいウィンドウ作って中のコントロールをそのままウィンドウへ移動するだけだよ 中身はユーザーコントロールとしてまとめておくこと バインディング使ってデータだけ移してもいいけど、中身が全く一緒なんだったらビューをそのまま移せばいいよ
質問です MVVMと状態分離って何か関係あるのですか?
質問を禁止します
再開
月間MVVC賞
ここまでの皆さんのありがたいご教示をもとに実装してみようと思いましたがあきらめました みなさんありがとうございました
アプリを書けるようになってから5年後ぐらいだな 他人のコードを読めるようになったと思ったのは
C#3.0が読めません
シーシャープさんてんぜろと読むんですよ
シーシャープに移転ゼロ
どううまく行かなかったのか どういうコードを書いたのか なぜふらっとスレではなくここに書き込んでしまったのか
PDF-1.3ならPDFSharpのサポート範囲だな
その例外の意味が分からんのは初心者スレ行きだけど、 50行目が原因ならライブラリか解説が間違ってるので初心者には直せないと思うよ
そのファイルをブラウザで開いたらfirefoxのプラグインが文句言ってきたから 不正なpdfファイルなのかもね 知らんけど
帳票作成するにはサードパーティしかないのですか?
はい。私はあなたにとって第三者です。 いいえ。自分で自作して自分で使えばサードパーティ使わなくていいよ。 どっちで答えたら荒れるかなぁ
MSにこだわるんならWordかExcelかAccessを使えばいい
MS製品で固めておくのが無難んだよなぁ サードパーティ製品使うと、使ってる人が少ないから質問する場が凄く限られる サポートがしっかりしていれば、問題無いんだけどね・・・
いい製品と悪い製品の違いが大きすぎる。
いい製品に出会った試しがない
{関数名,引数0,引数1,,,} で関数として引数の中に関数を入れ子にして正規表現で簡単に処理する方法を教えてください
日本語でおk!
{RepeatString,あ,{Rnd,100}} こういうのです
… 他の言語で君の欲している機能を実装してるものはありますか? あったら言語の名前と機能の名前を教えてください
と思ったけど、デリミタが違うだけでlispだなこれ
なんか/*/の後ろのhが消えたけど気にしない
>>892 S式という名称だったんですね、ありがとうございます。
早速見てみます。
正規表現っていつまでたっても進歩しないよな やる気あんのかあいつ
896 :
デフォルトの名無しさん :2014/04/02(水) 12:16:22.23 ID:0N7Ta5mu
以下のようなコードを書き、入れ子にしたListの情報を foreach で取り出したいと思ったのですが、思惑通りにいきませんでした。 どのようなコードで取得出来るでしょうか? public static void DataSet(List<Bm> dbPak) { foreach (Bm l1 in dbPak) { var para = l1.paramPack.param; <-ダメでした } } public class Am { public Am(string param) { this.param = param; } public string param { get; set; } } public class Bm { public Bm(List<DBPara> paramPack) { this.paramPack = paramPack; } public List<Am> paramPack { get; set; } }
>>896 public static void DataSet(List<Bm> dbPak) {
foreach (var para in dbPak.SelectMany(b => b.paramPack)) {
//paraが使える
898 :
デフォルトの名無しさん :2014/04/02(水) 13:01:47.61 ID:0N7Ta5mu
>>897 素早い回答ありがとうございます
おかげさまで動きました。。。が
ラムダ式をマスターしていないので
なぜ動くのかは解りませんでした
勉強になります
ありがとうございます
変数に一つ一ついれてみて型を確認してみたら理解できるよ >foreach (Bm l1 in dbPak) >{ >var para = l1.paramPack.param; <-ダメでした >} l1.paramPackの型はなんだ
というか、パラメータを手打ちしてるの?
901 :
デフォルトの名無しさん :2014/04/02(水) 19:12:10.13 ID:0N7Ta5mu
>l1.paramPackの型はなんだ 言われてみると おかしなコード書いてました。 精進します >というか、パラメータを手打ちしてるの? 「これで通ると思うのになー」というコードを書きましたが、 基本インテリセンスです。
なるほど、そんな下らないことを貼ってるテメエはおかしな奴とは思わないんだ。 これがアスペ脳か。
狭い見識しか持っていないんだろう 井の中の蛙ってやつさ
丼の中の蛙といえば松屋。
> 自分に対する質問には答えると言うのが自分の基本姿勢ですが、これ以上はこの掲示板に > ノイズを増やして他の方の迷惑になるだけですので止めます。悪しからず。 もはや言い返せなくなったんじゃない? これ以上ボロを出さないという意味では賢明だねw
わんくまだもん お察しください
他のスレでもこいつは質問内容をよく読まずに回答しているのか、 それとも思い込みで回答しているのか、 たまにとんちんかんな答えを出している。 思い込みで行動するのは、論理的な思考がなされないので、 頭を使うことがない。 アルツハイマーのリスクが高そうだなwww
わんくま(笑) どぼん(爆)
今週末はRoslynを触…らなくてもいいか いまさら感あるよな
でもDirectXみたいに途中でサポートやめるんでしょう?
913 :
デフォルトの名無しさん :2014/04/04(金) 13:49:07.75 ID:ZIYLiBEI
なんか必死だな
915 :
デフォルトの名無しさん :2014/04/05(土) 12:43:24.31 ID:1WkruOLq
エロい人教えて firebugとか火狐の要素解析からのネットワークとかのページロード情報を取りたい キーワードかヒントお願い
firebug→「ネット」タブ 「持続」をチェックしとくとなお良い
917 :
デフォルトの名無しさん :2014/04/05(土) 14:03:38.25 ID:1WkruOLq
>>916 いや、firebugの使い方じゃなくてさ、C#でロードリストを取りたいんだが・・・
firefoxのアドオン作って通信させれば
919 :
デフォルトの名無しさん :2014/04/05(土) 16:57:18.74 ID:EfFgQkIU
>当面ストアアプリ限定になってる理由の1つだと思うけど、ストアのサーバー上でクラウドコンパイル(Compile in the Cloud)する。依存先のライブラリが更新されたら自動でバイナリ更新。 勝手に更新とか不安すぎる 静的リンクしてるなら更新しなくてもいいじゃんか
えw
つーか.netのライブラリに依存してたらそれネイティブじゃないんじゃないか
923 :
デフォルトの名無しさん :2014/04/05(土) 21:17:59.39 ID:1WkruOLq
>>921 Firebugで出せるようなWebPageのロードするリストを取りたい
Fiddler Core使うじゃダメ?
>>923 Firebugはオープンソースなんだから答え見ればいいじゃん
Firebugを弄って、C#のアプリを起動して解析結果のダンプを渡すようにするくらいなら難しくないでしょ
926 :
デフォルトの名無しさん :2014/04/05(土) 21:30:38.29 ID:1WkruOLq
.NetよりVB6のコンパイラをオープンソースにして欲しいよ
あんなもんCOMの化け物だからコンパイラだけあったところでクソの役にも立たん
VB6で作った資産が多すぎて世界中からクレームが集中したせいで MSDN限定提供を再開したぐらいだからな。VB6の禍根は大きい。
確かにVB6は便利だったなー
ここでいいのかわからんけど、log4net以外にロギングに便利なものって何か無いかな? システムのeventlogとかもっと手軽に使えたら良いのになぁ
TraceSource
933 :
デフォルトの名無しさん :2014/04/08(火) 21:35:25.82 ID:oIH/hQKP
素人質問で恐縮ですが、 下のようなコードを書いたのですが 「TestAに引数を1個指定できるコンストラクタだありません」と 怒られてしまいます。 Listの中に、TestA クラスを含めるには どうしたら良いのでしょうか? public partial class Form1 : Form { private void button1_Click(object sender, EventArgs e) { var ListTest = new List<TestA>(); ListTest.Add(new TestA(10)); } } class TestA { public int a { get; set; } }
934 :
デフォルトの名無しさん :2014/04/08(火) 21:46:10.61 ID:V1A5Bvcp
>>933 初心者はふらっとスレの方がいいよ
var testA = new TestA();
testA.a = 10;
ListTest.Add(testA);
class TestA { public int a { get; set; } public TestA(int a){ this.a=a; } } リストとか全く関係ない
936 :
デフォルトの名無しさん :2014/04/08(火) 22:03:13.77 ID:oIH/hQKP
メモリが勿体無いからマルチバイトで文字列を保持したいのだけどstringにそんなオプションはないのかな?
マルチバイトってutf-8? そんなの無かったはず。
940 :
デフォルトの名無しさん :2014/04/08(火) 22:37:40.15 ID:Bi2RyCEo
sharpdevelop使ってるか?
>>937 文字列まで切り詰めなきゃいけないようなメモリクリティカルな環境でC#など使ってはいけない。
>>937 「ノートが勿体ないからチラシの裏で勉強したいんだけど、そんなオプションはないのかな?」
↓
お母さん「馬鹿なこと言ってないで宿題やっちゃいなさい」
.NETのプログラム起動した時点で何MB食ってるかよく観察してみろよ そんな認識だと吐くぞ
charでもbyteでも好きなの使えばよろし 俺なら投げ捨てるがw
charは2バイトだったかと思うから、byteの配列かなんかで頑張れば良いかな。
よほど大量の文字列をメモリ内に保持する必要があって、しかも読み出しや検索の速度を犠牲にしてでも メモリを節約したい場合なら、そういう最適化にも意味があるかもね。
ASCII限定なら1文字7bitだから頑張ればテキストファイルより小さくできるね
>>947 適当な圧縮アルゴリズム持ってきた方が早くね?
こういうコード書いたらフォルダが再作成されないんですけど 正確にはDeleteが非同期に動いてるぽいんですけどそんなことどこにも書いてないじゃんよー if(Directory.Exists(path)) { Directory.Delete(path,true); } Directory.CreateDirectory(path);
>そんなことどこにも書いてない ならマイクロソフトにバグ報告して修正させろ
>>949 ファイルみたいに書き込みを行わなきゃ行けなかったりしないの?
100 * 2.71が、271にならずに、270になっちゃう。 duoble型を使っているからそうなってしまうらしい。 decimalを使うと良いらしい。 分かりやすい説明をください。
浮動小数点数 誤差 で検索
丸めるべきところで切り捨ててるだけでしょ
Icon.Saveってバグってます?なんか灰色で保存されるので解決する方法があればお願いします。
>>953 残念ながら君にプログラミングは向いていない
>>957 死ねよ
>>956 色数が落とされてるんじゃないの
16bitになってるとか
元データは何よ
浮動小数点数の問題はマジどうにかならんのかな。 いろいろ考える必要があってめんどい。
BigInteger使って分数クラスでも作れば
>>958 シェルが拾ってくる拡張子に対応するアイコンやけど
SystemIconsとかから持ってきたのでもあかん
using(var ico = System.Drawing.SystemIcons.Application)
using (var stream = System.IO.File.Create(@"E:\" + Guid.NewGuid().ToString() + ".ico"))
using (var stream2 = System.IO.File.Create(@"E:\" + Guid.NewGuid().ToString() + ".png"))
{
ico.Save(stream);
ico.ToBitmap().Save(stream2, System.Drawing.Imaging.ImageFormat.Png);
}
マジですCAR
そりゃなるわけない。 計算機の実数の扱い方は理系の学部の1年で習う実験数値の扱いの考え方とほとんど同じで たいして難しい話じゃないけど、そういうの知らないと厳しいのかもね。
decimalを使いたいなら100m * 2.71mでいいんだけどね
968 :
デフォルトの名無しさん :2014/04/13(日) 11:51:04.60 ID:VrI+9WRO
IList<T>.ToArray() って書くとlinqのほうのEnumerable.ToArray<T> が呼ばれちゃって遅いんだけど! 実装がT[]だったらそのままとか List<T>だったらList<T>.ToArray()を返してくれるとかだったらよかったのにー
気のせいだろ EnumerableのToArrayはthisがIList<T>ならCopyToを使う実装だから
測定したコードがアホで本当に遅いかもしれないだろ! 実データも見る前から気のせいと言い切るな! ということで測定コードクレクレ
972 :
デフォルトの名無しさん :2014/04/13(日) 15:23:50.81 ID:9qNTSaXc
実装はBufferのコンストラクタで
>>969 の通りじゃん
Bufferは構造体だからnewはコスト無いし
だからコードがアホに決まってるから早く見せろって言ってんじゃん 笑わしてくれよ 西村みたいに
>>971 のコード綺麗だな
保守性重視の超素直な作りだけど細かく追っていくとちゃんと効率的なコードになってる
命名スレがあるのは知ってるがあえてこっちで質問。 BCLのクラスのvoidを返すメソッドの、処理は同じでthisを返すようにしたバージョンを 拡張メソッド等で追加したい場合が稀にあると思うんだけど(例えば、そうすることでそのメソッドを 呼び出し済みの状態で変数をインラインで初期化したりできるようになるから)、こんな場合、 その追加したthisを返すメソッドの名前ってどうしてる? 例えばThread.StartとかFreezable.Freezeのthisを返すバージョンならどういう名前を付ける?
977 :
デフォルトの名無しさん :2014/04/17(木) 20:27:20.93 ID:iPUv3pbV
そんなよくわからないことはしない
何の意味もない拡張メソッド作ってまでインライン化しないだろ…
StartAndReturnSelfObjectForInline
Thread CreateRunningThread() Freezable CreateFrozen()
ほ
982 :
デフォルトの名無しさん :2014/04/18(金) 09:22:31.48 ID:TXiJG1g/
thisを返してるだけなのにCreateは嫌だ
ああthisか
まだですか
985 :
デフォルトの名無しさん :2014/04/19(土) 09:54:39.08 ID:+cER51WV
WindowsAPIのEnumWindows関数を使って IEnumerable<IntPtr> を返す遅延評価のメソッドを作ることってできるかな?
お願いします ___ / \ / / ヽ_ //⌒ヽ ノ|) // ̄\| _///フ / ヽ/ |廴/ | |) |/ レ ||||ノ ノ ヽN/ノ L/
つーかトップレベルウィンドウでもFindWindowEx使えるのか 子ウィンドウしか使えないのかと思ってた。。 EnumWindowsじゃなくてFindWindowEx使ってできました IEnumerable<IntPtr> EnumerateWindow( string className ) { IntPtr hwnd = IntPtr.Zero; while( ( hwnd = FindWindowEx( IntPtr.Zero, hwnd, className, null ) ) != IntPtr.Zero ) { yield return hwnd; } }
う
め
だ
992 :
デフォルトの名無しさん :2014/04/20(日) 02:53:46.68 ID:ekNgbe08
埋める前にまず次スレを立てろよ
↓ テンプレート修正してね ↓
おつ
996 :
デフォルトの名無しさん :2014/04/20(日) 11:15:55.32 ID:ekNgbe08
乙
松
竹
ご
完
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。