18/08/05 19:55:44.50 tZmoj8I+.net
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
スレリンク(tech板)
■前スレ
ふらっと C#,C♯,C#(初心者用) Part138
スレリンク(tech板)
■コードを貼る場合は↓を使いましょう。
URLリンク(ideone.com)
URLリンク(dotnetfiddle.net)
■情報源
URLリンク(msdn.microsoft.com)
URLリンク(docs.microsoft.com)
URLリンク(msdn.microsoft.com)
URLリンク(referencesource.microsoft.com)
2:デフォルトの名無しさん
18/08/05 19:56:18.64 tZmoj8I+.net
すみません、ワッチョイ忘れました
3:デフォルトの名無しさん
18/08/05 23:33:45.09 SfajzAT9.net
>>2
ふざけんなよ
4:デフォルトの名無しさん
18/08/05 23:47:40.56 U+AnL1A0.net
>>1
スレたて乙
「980以降で次スレ立っていないときはスレを埋めないでください」もテンプレに追加しなきゃならんかな
5:デフォルトの名無しさん
18/08/06 00:07:39.61 +HTQkGSa.net
質問や回答で埋まる分には仕方ないだろ
6:デフォルトの名無しさん
18/08/06 12:39:27.90 ZTMxp9nC.net
VBの質問してもいいですか?
7:デフォルトの名無しさん
18/08/06 13:34:24.30 QR385WnF.net
いいえ
8:デフォルトの名無しさん
18/08/08 23:09:42.74 8OrgOoWk.net
ファイルやディレクトリー操作する時は
パスを文字列で取得するけど
パスをコントロールする用の適切なクラスや型ってあったりしますか?
9:デフォルトの名無しさん
18/08/08 23:15:13.95 UTxKd5gF.net
コントロールが何を指しているのか不明だけど、System.IO.Path のこと?
10:デフォルトの名無しさん
18/08/08 23:21:00.20 9nfo9izj.net
>>8
こういうのならあるけど望んでいるものかは知らね
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
11:デフォルトの名無しさん
18/08/08 23:22:04.89 8OrgOoWk.net
>>9
単純にパスの格納を文字列でしているから
パス格納用の型とかがあったら知りたいです
MSならWindowsのファイルシステムに対して.Netから特殊な操作ができるのかなあって思いました
単純にファイルの検索でpathクラスより高速なものがあったりするのかなあと
12:デフォルトの名無しさん
18/08/08 23:35:59.13 7IOaw32y.net
Path.Combine
で十分でしょ
13:デフォルトの名無しさん
18/08/09 00:07:54.69 xHgFHFx+.net
Ruby のPathname クラスみたいな、便利なユーティリティクラスだろ
14:デフォルトの名無しさん
18/08/09 00:14:33.68 IuFsMvv7.net
あのAPIってPath, File, Directoryのどのクラスにいたっけ…ってなることがたまに
15:デフォルトの名無しさん
18/08/09 00:21:18.50 5fPidJPz.net
共変性、反変性どうのって性質ってさあ
一体、なんに利用できるんだぜ?
16:デフォルトの名無しさん
18/08/09 12:23:17.42 uNn6MZJ3.net
ウィンドウを広げたら画像も等倍で大きくなるようにしたいんですがどういう設定を弄ればいいでしょうか?
今はこんな風になります。
URLリンク(fast-uploader.com)
pictureboxのsizemodeはzoomにしてあります
17:デフォルトの名無しさん
18/08/09 12:34:59.33 p84d2kw+.net
>>16
配置しているコントロールの大きさが変わらないと機能しない
それフォームしか大きさ変わっていない
18:デフォルトの名無しさん
18/08/09 14:11:43.19 4pchpIvY.net
>>16
各コントロールのAnchorにRightやBottomを追加して
意図した結果になるように付けたり外したり試してみて
19:デフォルトの名無しさん
18/08/09 16:01:56.38 Q9fsVYYC.net
>>16
先回りしとくと画像ができたらボタンとDateTimePickerもそろえて変えたいと思うかもしれないが
少なくともWinFormではDateTimePickerの大きさを合わせて変えるのは凄く面倒
20:デフォルトの名無しさん
18/08/09 16:50:18.89 uNn6MZJ3.net
>>17
>>18
>>19
Anchorを弄って大体の感じでできました。
DateTimePickerはあきらめます。
ありがとうございました。
21:デフォルトの名無しさん
18/08/12 01:49:29.47 YrPOuymD.net
publicメンバの変数名全部小文字にしちゃった
後任の人ごめんね
22:デフォルトの名無しさん
18/08/12 02:08:24.17 23yIPh0T.net
visuakstudioでクラスを追加したあと関連づける方法がわかりません
どうすれば良いでしょうか?
Form1.cs
namespace neko
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(testtext);
}
}
}
test.cs
namespace neko
{
class test
{
string testtext ="表示";
}
}
23:デフォルトの名無しさん
18/08/12 02:14:07.60 YrPOuymD.net
test t = new test();
MessageBox.Show(t.testtext);
もしくは
MessageBox.Show(test.testtext);
class test
{
static string testtext ="表示";
}
24:デフォルトの名無しさん
18/08/12 02:16:01.58 06lg+uZn.net
>>22
オブジェクト、クラス、インスタンスの言葉の意味
URLリンク(dobon.net)
アクセス修飾子 (C# リファレンス)
URLリンク(docs.microsoft.com)
25:デフォルトの名無しさん
18/08/12 02:32:17.74 23yIPh0T.net
>>23
ありがとうございます
下のやり方では出来ませんでしたが
上のやり方でpubulic stringにしたら出来ました
>>24
読んでみます
26:デフォルトの名無しさん
18/08/12 02:45:33.22 23yIPh0T.net
インスタンス作成を書かずに済ます方法はないのでしょうか?
usingを使用したりです
2つ以上のファイルに分けてコードを書きたいのが目的です。
MessageBoxがusing System.Windows.Forms;で参照している様なのと同じように書きたいです
27:デフォルトの名無しさん
18/08/12 02:57:30.97 wouDTZ9z.net
俺流を考えるのは一通り基礎を理解してからで遅くないからw
28:デフォルトの名無しさん
18/08/12 03:02:44.64 61mYfpvC.net
まずは黙って感謝の1日1万行写経しなさいな
29:デフォルトの名無しさん
18/08/12 03:08:45.87 23yIPh0T.net
>>23の下のやり方が出来れば目標達成です
public static string testtextとしたところ目的どおりにできました
何か変なところはないでしょうか?
これで大丈夫ですかね?
30:デフォルトの名無しさん
18/08/12 08:54:02.49 3UTFG/IT.net
>>21
プロパティのこと?それともフィールドをpublicにしちゃったの?
31:デフォルトの名無しさん
18/08/12 17:47:13.24 29Ctg7zJ.net
メッセージボックスを出して押されたボタンに対応するメッセージをラベルに表示する簡単なプログラムなんですがswitchでかけるのは解ったんですがifでかくとどうなりますか?
ちなみにソースとアプリの画面はこんな感じです。
URLリンク(fast-uploader.com)
var x = MessageBox.Show("メッセージ", "タイトル", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk);
switch (x)
{
case DialogResult.Yes:
label1.Text = "はいが押されました。";
break;
case DialogResult.No:
label1.Text = "いいえが押されました。";
break;
default:
label1.Text = "キャンセルされました";
break;
}
32:デフォルトの名無しさん
18/08/12 17:57:27.20 VB6uTYfX.net
>>31
var x = MessageBox.Show("メッセージ", "タイトル", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk);
if (x==DialogResult.Yes) label1.Text = "はいが押されました。";
else if (x==case DialogResult.No) label1.Text = "いいえが押されました。";
else label1.Text = "キャンセルされました";
33:デフォルトの名無しさん
18/08/12 18:06:12.77 29Ctg7zJ.net
>>32 あれ・・・それ書いてみてダメだった気がしたんですけど自分の勘違いでした やってみたら動きました。
35:デフォルトの名無しさん
18/08/12 18:09:32.01 29Ctg7zJ.net
どこか書き間違えてたんですねきっと。ありがとうございました
36:デフォルトの名無しさん
18/08/12 19:30:52.63 U04Z7MLo.net
フィールドはパブリックにしないほうがいいよ
理由は調べれば出てくる
37:デフォルトの名無しさん
18/08/13 10:12:06.70 JI1vIyZs.net
AxWindowsMediaPlayer をフォームに貼り付けていろいろやっているんですが、
MediaPlayer に予め設定されているキーボードショートカットを無効化する方法はないでしょうか。
まちがえて押してしまって暴発する他、Ctrl + F などの登録されているキーに
別の機能を割り当てたいのですが、MediaPlayerのKeypressイベントで e.handled がtrueにされてしまっているのか
フォームのKeyPressイベントが呼ばれないようです。
38:デフォルトの名無しさん
18/08/13 14:06:18.33 8S8/2I2z.net
>>36
フォームでキーイベントを全部受けたいだけならフォームのKeyPreviewプロパティをtrue
39:デフォルトの名無しさん
18/08/13 20:52:46.66 JI1vIyZs.net
>>37
もちろんそれはやっています
というかKeyPreviewをtrueにしないとForm.Keypressイベントは発生しないものだと
思っていたのですが、勘違いでしょうか。
MediaPlayerに登録されていないらしいキーの組み合わせについてはちゃんとイベントが発生しています。
ところでKeyPressなどのイベントでは受け取ったキーがhandleされないときは別のコントロールのKeyPressイベントに
値が渡されているみたいですが、その順番はどういうルールに基づくのかご存じないでしょうか。
Keypress 順番 などでググってみても KeyDown の後にKeypressが起こる云々しかでてこないのですが。
40:デフォルトの名無しさん
18/08/13 22:26:49.67 iMw9ATb1.net
FormにIFilterMessage実装して、PreFilterMessageで
WM_KEYDOWN/WM_KEYUPのときActiveControlがAxWindowsMediaPlayerなら
false返せばAxWindowsMediaPlayerには渡らなくなる
Formの方で受け取りたいならついでにOnKeyDown/OnKeyUp呼び出す
WinFormにはルーティングイベントなんてないから別のコントロールが受け取るとかないはずだけど
KeyPreviewしてるFormが先に受け取るとかぐらいで
どういうコントロール構成とイベントハンドラにしたら再現できる?
41:デフォルトの名無しさん
18/08/14 00:17:13.29 cUGYJeNz.net
なんか違和感あると思ったらIMessageFilterだった
あとFormのコンストラクタあたりでApplication.AddMessageFilter(this)する必要あり
42:デフォルトの名無しさん
18/08/16 20:46:30.44 CMBG5Zb1.net
以下のようなコードでITestにList<Hoge>とList<Fuga>を併記するような書き方はあるでしょうか?
public class Fuga{ public string val { get; set; } }
public class Hoge{ public string val { get; set; } }
interface ITest{ List<Hoge> Hogege(); }
public class A : ITest
{
public List<Hoge> Hogege()
{
return null;
}
}
public class B : ITest
{
public List<Fuga> Hogege()
{
return null;
}
}
class Program
{
static void Main(string[] args)
{
ITest AB;
AB = new A();
AB = new B();
}
}
43:デフォルトの名無しさん
18/08/16 20:54:09.65 ypHiACds.net
Stringですか?
stringですか?
44:デフォルトの名無しさん
18/08/16 21:10:05.62 cTYLky9x.net
併記ってどういうこと?
45:デフォルトの名無しさん
18/08/16 21:12:25.13 AjFj7Rns.net
>>42
好きなほうをどうぞ
>>41
できれば何をやりたくて「併記」したいのか書いてもらえるといいかも
46:デフォルトの名無しさん
18/08/16 21:35:49.30 Kqrl
47:VipO.net
48:41
18/08/16 21:47:02.98 CMBG5Zb1.net
理解が乏しく説明が拙くてすみません
インターフェースを以下のように書く方法があれば良いなと思った次第です
interface ITest{ List<共通or抽象化したクラス記述> Hogege(); }
どうも無理そうな雰囲気を感じておりますが
お願い致します
49:デフォルトの名無しさん
18/08/16 21:55:43.81 cTYLky9x.net
FugaとHogeになんらかの関係がないとどうにもならないよ
どちらかが継承してるとか共通のinterfaceを実装してるとか
あるいはITestをジェネリックにするか この場合Mainの方のコード書けないけど
あとは型安全なんか投げ捨ててdynamicにするか、ってのはジョークだけど
50:41
18/08/16 22:26:51.44 CMBG5Zb1.net
たびたび失礼します
こんなコードを書いた動機としては、class A と class B のメソッドの違いが
返り値のList<xxx>でしかないため、インターフェースで共通の型に出来たら
mainでインスタンス作る際にスッキリするなと思ったからです
こんな記述が無理そうな時点でC#の考えに則って無いんだろうなと感じております
public class A : ITest
{
public List<Hoge> Hogege()
{
return null;
}
}
public class B : ITest
{
public List<Fuga> Hogege()
{
return null;
}
}
51:デフォルトの名無しさん
18/08/16 23:17:36.51 4LOkjF+G.net
何度もみんな言っている通りAとBじゃなくてHogeとFugaでなんとかしろって話だと思うんだが、なんでそんな頑なにAとBにこだわるの?
52:デフォルトの名無しさん
18/08/16 23:23:32.70 sGlIzl1X.net
Hage Tsuru Pika
53:デフォルトの名無しさん
18/08/17 00:12:00.44 bI0Dxrf9.net
アドバイスを基にこの記述で行けるか!と思ったのですがreturn hoge;でList<IStore>でないとダメと怒られました
素人のぬか喜びでした
public interface IStore
{
}
public class Fuga: IStore
{
public string val { get; set; }
}
public class Hoge: IStore
{
public int val { get; set; }
}
public interface ITest
{
List<IStore> Hogege();
}
public class A : ITest
{
public List<IStore> Hogege()
{
List<Hoge> hoge = new List<Hoge>();
hoge.Add(new Hoge { val = 1 });
return hoge; //エラー
}
}
54:デフォルトの名無しさん
18/08/17 00:24:38.97 ceNJ30ox.net
visualstudioをインストールしました
参考書にはWindowsフォームアプリケーションやコンソールアプリケーションなどあるんですが、インストールしたvisualstudioには見当たらないです
何が設定かインストールし忘れたのでしょうか?
55:デフォルトの名無しさん
18/08/17 00:50:04.81 PFV80D0U.net
>>52
VisualStudioのスレで聞くべきだけど、その前にどのバージョンをインストールしたか把握している?
VS2017ならスタートページで「新しいプロジェクトの作成」をクリックするかメニューのファイル>新規作成>プロジェクト
56:デフォルトの名無しさん
18/08/17 17:33:16.91 ceNJ30ox.net
>>53
すみません、C#の話でしたのでこちらに書き込んでしまいました
visualstudioのバージョンは2017です
それで、visualstudio起動後のファイル>プロジェクト>新しいプロジェクト内に存在しないんですよね…
あるのは空のアプリ、WPFアプリ、Windowsランタイムコンポーネント、クラスライブラリのみでした
57:デフォルトの名無しさん
18/08/17 17:55:13.19 tlmPPTdZ.net
URLリンク(image.itmedia.co.jp)
URLリンク(image.itmedia.co.jp)
Windowsクラシックデスクトップって奴だと思うけどそれは分かってる?
インストール時に選択してないなら知らんけど
58:デフォルトの名無しさん
18/08/17 18:00:12.39 PWcnU2kA.net
WPF入っているのにWinフォームとコンソールアプリ入っていないって何か変なことやっていそう
インストー�
59:堰[でそれっぽいの入れなおしてそれでもだめなら素直に専用スレ行けばいい
60:デフォルトの名無しさん
18/08/18 13:00:11.77 XAZ8inQ9.net
Windows 7はデフォでFW 3.5が入ってて
WIndows Updateを適当に入れてけば今サポートされてる最古のFW 4.5.2になるって認識でOKですか?
それともWindows UpdateするだけではFWは更新されない?
61:デフォルトの名無しさん
18/08/18 14:06:53.55 CVV71Jnt.net
fwって何だファームウェアか
62:デフォルトの名無しさん
18/08/18 14:11:43.31 piDfOcEW.net
ここ言語スレなんだよなあ
>>57
URLリンク(www.atmarkit.co.jp)
URLリンク(docs.microsoft.com)
Windows7で4.0以降はOSのアップデートに入らない。OSのスレで聞いてくれ
63:デフォルトの名無しさん
18/08/18 14:15:04.34 63PJyp6j.net
いちいち交通整理くっだらねアホか
こういう馬鹿、自分が質問者以上にスレと関係ないことをほざいてる自覚がないらしい。
そもそも馬鹿は自分を客観視できないからな
64:デフォルトの名無しさん
18/08/18 14:29:01.60 bu3iHsiJ.net
>>60
おまえそれどのレスに対して言ってんの?
65:デフォルトの名無しさん
18/08/18 15:08:10.60 CVV71Jnt.net
前スレにもいた客観視君か
九官鳥みたいだな
66:デフォルトの名無しさん
18/08/18 15:27:59.00 AFavdKXG.net
前から誰のこと言ってるのか知らんけど、この意味不明な粘着質、普通にストーカーと同じメンタルだ
67:デフォルトの名無しさん
18/08/18 17:48:26.71 pAmB63kN.net
>>58
(.Net) Frame Work だろ
68:デフォルトの名無しさん
18/08/18 18:22:34.56 m2/0Uqcq.net
FWって初めて聞いたわ。.NETと一般的な名称使わずにオレオレ略語使う奴って頭悪そう
69:デフォルトの名無しさん
18/08/18 18:36:09.82 rpJq+M3x.net
C# スレで FW 3.5 って来たら候補は一つしか無い
70:デフォルトの名無しさん
18/08/18 18:38:11.71 PMPVVek/.net
fwと言えばファイアーウォールだな・・・
と思ったけどWikipediaによるとフレームワークの略語としても定義されてたわ
URLリンク(ja.m.wikipedia.org)
71:デフォルトの名無しさん
18/08/18 18:55:10.22 bESODcUh.net
ファーム
72:デフォルトの名無しさん
18/08/18 18:59:38.07 y78sZYS/.net
>>57
アップデートだけじゃ無理だよ
.NET4.0入れたら4.5.2まで行けた記憶あるが
73:デフォルトの名無しさん
18/08/18 21:05:24.91 XoXRtiM1.net
VISUALSTUDIOのバージョンとC#のバージョンの対応関係ってどこかに一覧表ない?
74:デフォルトの名無しさん
18/08/18 21:45:53.66 m2/0Uqcq.net
あるよ
75:デフォルトの名無しさん
18/08/18 21:50:46.39 IgqCTt2j.net
あるわけないだろ
76:デフォルトの名無しさん
18/08/18 22:02:40.56 y78sZYS/.net
>>70
qiitaでアレだが
URLリンク(qiita.com)
77:デフォルトの名無しさん
18/08/18 22:09:57.24 G1cg7QSD.net
Firewallやろ
78:デフォルトの名無しさん
18/08/19 08:12:36.40 k1wUp59c.net
>>73
サンクス!
79:デフォルトの名無しさん
18/08/19 20:03:15.69 WKvykaAV.net
PostgreSQLからデータ抽出したいんだけど
何を使えばいいですか?
データの更新追加削除もします
80:デフォルトの名無しさん
18/08/19 20:06:52.16 /xcR5TgM.net
81:デフォルトの名無しさん
18/08/19 20:07:06.44 mWLpYff3.net
>>76
Dapper
82:デフォルトの名無しさん
18/08/19 20:29:51.81 WKvykaAV.net
>>78
Npgsqlってのは駄目なの?
83:デフォルトの名無しさん
18/08/19 20:39:13.05 mWLpYff3.net
>>79
ADO.NET感覚でDataReaderやDataSet使いたいならそれでもいいと思うけど、今更
84:感あるような
85:デフォルトの名無しさん
18/08/19 20:47:54.16 ztvlDXyo.net
>>80
Dapper使うならNpgsqlも必要だろ
自分で使ったこともないのに回答してるの?
86:デフォルトの名無しさん
18/08/19 20:49:37.70 WKvykaAV.net
>>80
>>81
どっちも勉強してみます
ありがとうございます
87:デフォルトの名無しさん
18/08/19 22:25:18.22 WKvykaAV.net
メッソッドってregionで囲むもんなん?
これアウトライン用よね?
88:デフォルトの名無しさん
18/08/19 22:33:16.81 NgDo0XDZ.net
冗長なコード書くやつは畳みたいんだろう
89:デフォルトの名無しさん
18/08/19 22:43:06.20 Qn4G0bqC.net
畳みたくなるような長いクラスは書かない
90:デフォルトの名無しさん
18/08/19 22:44:46.22 WKvykaAV.net
>>84
>>85
好きにしてってことか
メソッド囲んでるソース多かったから基本なのかと思ったけど
面倒だし囲まないことにする
91:デフォルトの名無しさん
18/08/19 23:10:34.65 0oWhlzQ+.net
全ての機能をFormに
92:デフォルトの名無しさん
18/08/19 23:19:59.25 hDKgqoRf.net
俺はregionによる仕分け多用するけど一般的な習慣とまでは言えないね
でも、単純にプロパティ、メソッド、イベント(OnXxxx)、コンストラクタに分類するだけでも
少なくとも視覚的な見やすさはだいぶ違うと思うよ
MSDNライブラリのクラスメンバー一覧がそういう分類じゃなく単純にアルファベット順だったら
どうか想像すりゃ分かると思うけど
93:デフォルトの名無しさん
18/08/20 20:47:47.03 4Ys3BH8f.net
複数のメソッドをregionで囲むはまだ許せるが、くそ長いメソッドの一部をregionで囲って短く見せるのは許せない
94:デフォルトの名無しさん
18/08/20 21:12:28.08 dwFWVIwC.net
>くそ長いメソッドの一部をregionで囲って短く見せる
海外サイトでサンプル漁ってると時々見かけるな
95:デフォルトの名無しさん
18/08/20 21:18:42.69 7wKYHqTA.net
まあアウトラインってスコープ単位で線引されるからね
regionは昔の機能と思っていいよ
96:デフォルトの名無しさん
18/08/20 21:21:04.27 Uo4wU7xn.net
メソッドはregionで囲まなくても普通に畳めるよww
97:デフォルトの名無しさん
18/08/20 21:23:33.78 7wKYHqTA.net
>>92
畳めるけどメソッドをregionで囲ってるソースみること結構あるわ
98:デフォルトの名無しさん
18/08/20 21:23:49.70 7wKYHqTA.net
ホント謎
99:デフォルトの名無しさん
18/08/20 21:41:03.34 UWgl1tII.net
メソッド単位で囲ってるのは俺も謎だと思ってた
昔は普通にたたむのできなくてその名残とかなのかもしかして普通にたためるの知らないのか
100:デフォルトの名無しさん
18/08/20 21:43:29.04 /2kqdAhT.net
メソッドで畳めないIDE使ってるとか?
101:デフォルトの名無しさん
18/08/20 21:45:48.75 1JpQrvUt.net
IEnumerable、IDisposable、IEquatableみたいな定型インターフェイスの実装は邪魔なんでregionで括ってるわ
あとToStringやらGetHashCodeのオーバーライドなんかも
102:デフォルトの名無しさん
18/08/20 21:50:55.75 DUHqVJSw.net
>>97
.NET Frameworkのライブラリと同じように作らなきゃいけないと勘違いしてた頃は俺もそれやってた
アプリと不特定多数向けのライブラリは作り方が違ってていい、アプリはなるべく絞り込んで作るのがよい、
ということを理解してからは無駄なコードが減って必要なくなった
103:デフォルトの名無しさん
18/08/20 22:10:27.90 FTwuHoIr.net
不特定多数向けのライブラリを作ってるのかもしれないだろ
104:デフォルトの名無しさん
18/08/20 23:12:34.39 4xbzQ56O.net
IDisposableはusing使うために必須だからなあ
105:デフォルトの名無しさん
18/08/21 00:18:54.40 oo1eFPzK.net
HttpClientみたいにsession繋ぎっぱなしが推奨されてるのにusing使う奴
106:デフォルトの名無しさん
18/08/21 00:23:49.00 2/I2BB9Y.net
>>101
なんでそのルールをセッション繋ぎっぱなしが推奨されないものにまで適用しなきゃいけないの?
107:デフォルトの名無しさん
18/08/21 00:27:03.72 2ZNryZEm.net
ここで聞くことでもないんだけど適当に意見くだせえ
仮に外部設計書・内部設計書・詳細設計書が必要として、
詳細設計書は別ファイルで作成するよりxmlドキュメントコメント使って生成したxmlファイル使った方がよっぽどいいよね?
108:デフォルトの名無しさん
18/08/21 00:40:44.14 lLRe5osi.net
>>103
ドキュメントコメントは内部設計だろ
詳細設計というのはソースコードを日本語に逐語翻訳したものであり、一般にはコーディングシートと同じもの
下請けの一番使えない奴に押し付けるのが一番
109:デフォルトの名無しさん
18/08/21 00:46:11.78 Fn3PsyHg.net
>>102
日本語読めます?
110:デフォルトの名無しさん
18/08/21 00:50:51.67 1ei+2zpw.net
最初の設計がおかしかったからこんなことになった
using使えるような新しいライブラリを出してこないMSが悪い
pythonだったらpython的でないと言う理由で新しいライブラリが出てくる
111:デフォルトの名無しさん
18/08/21 01:07:05.30 krr9M76P.net
>>101
ファイルの利用が終わったのにすぐにファイルハンドルを解放しないとか不便でしょうが
112:デフォルトの名無しさん
18/08/21 01:46:45.25 2ZNryZEm.net
>>104
ドキュメントコメントは内部設計なの?
サイトによって言ってること違って混乱してる
内部設計書=詳細設計書と書いてるところもあれば、
内部設計書=複数の処理の流れ、詳細設計書=ドキュメントコメントってところもある
自然言語でコード書いた奴は見当違いで本来必要の無い何かって認識だった。会社と人によって違うのかな
113:デフォルトの名無しさん
18/08/21 02:00:13.53 lLRe5osi.net
>>108
詳細設計はCOBOL時代の名残りだ
パンチカードや80x24文字の画面でコーディングしてた頃はソースコードは純粋なアウトプットであり、
ソース上で試行錯誤したりソース眺めながらコミュニケーションしたりするなんていう発想は無かったの
プログラミングはタイピングの前に完了していなければならず、詳細設計を作成することこそが今でいうコーディング工程そのものだったんだよ
本来全く必要のないもの、でまさに正しいんだよ
114:デフォルトの名無しさん
18/08/21 02:01:33.41 NrpzP/Hk.net
>>106
HttpClientFactoryも知らないおじいちゃんこんにちは
115:デフォルトの名無しさん
18/08/21 07:18:27.76 K3bJIWvH.net
>>103
答えはNO
内部・詳細設計書はゴミのように不要どころか持ってると邪魔なものだけど客は金を出してくれる
ビジネスでやる以上金になるほうを選ぶのが当然
116:デフォルトの名無しさん
18/08/21 09:21:19.00 6+/Jo0uy.net
設計書ネタはスレちがくね?
117:デフォルトの名無しさん
18/08/21 09:58:08.14 eCXr2PsD.net
質問者すらそう言ってるが
言及したがりのバカが沸いたからしゃーない
118:デフォルトの名無しさん
18/08/21 10:26:32.76 UjHMgN47.net
しかも最初の疑問点からずれた話題だけを掘り下げるという意味不明な状態
119:デフォルトの名無しさん
18/08/22 12:27:18.26 DYb1gEuJ.net
Win32API関数でのエラー処理について質問です
var DllFilePath = "hogehoge.dll";
handle = LoadLibrary(DllFilePath);
if (handle == IntPtr.Zero)
{
throw new System.ComponentModel.Win32Exception();
}
↑のコードで例外をthrowするときに例外のMessageにDllFilePathの値を追加したいのですが
throw new System.ComponentModel.Win32Exception(DllFilePath)
とすると本来のエラーメッセージが上書きされてしまいます。
var DllFilePath = "hogehoge.dll";
try
{
handle = LoadLibrary(DllFilePath);
if (handle == IntPtr.Zero)
{
throw new System.ComponentModel.Win32Exception();
}
}
catch(System.ComponentModel.Win32Exception e)
{
throw new System.ComponentModel.Win32Exception($"{e.Message} \"{DllFileName}\"", e);
}
こうすれば期待通りの内容にできるのですがAPI呼び出しの度に例外処理を書くのは
コードが冗長になってしまうし何より面倒なのでうまいこと簡単に書けないか悩んでいます。
何かいい方法は無いですかね?
120:デフォルトの名無しさん
18/08/22 12:58:43.22 GmRbaMy/.net
>>115
Win32Exceptionを継承して使う
121:デフォルトの名無しさん
18/08/22 13:00:35.25 Ua1FlSB5.net
>>115
public class LoadLibraryFailedException : Win32Exception
{
public LoadLibraryFailedException (string path)
{ DllPath = path; }
public string DllPath {get; private set; }
...
}
122:デフォルトの名無しさん
18/08/22 14:32:10.34 DYb1gEuJ.net
Messageに情報を足すことばかりが頭にあって
情報を別のプロパティに持たせる発想がなかった…
こっちのほうがcatchする側で融通が利かせやすいし
クラスやプロパティの名前を調整すればLoadLibraryに限らず
他のAPI呼び出しにも汎用的に使えそうでいいですね
この方法で検討してみます。ありがとうございました
123:デフォルトの名無しさん
18/08/23 11:52:17.79 +a3jfYk1.net
すんません初歩駅な質問なんですが
フォームアプリのコントロールに
ボリュームやスライダーのような可変データコントロールは無いのでしょうか?
似たのはNumericUpDownがありますが・・・
これの画像を差し替えてボリューム風にしろってことですか?
124:デフォルトの名無しさん
18/08/23 12:20:54.20 Qdf2BjgW.net
>>119
トラックバー
125:デフォルトの名無しさん
18/08/23 12:40:46.09 +a3jfYk1.net
>>120
おお!「コモンコントロール」にも他カテゴリにも無いコントロールがあったのか!
完全に見落としてました
ところでこれの画像を差し替えて丸型回転ノブにすることはできるんでしょうか?
まだ勉強不足でよくわかってないのですが
Imageプロパティとか無いからできないかな?
126:デフォルトの名無しさん
18/08/23 13:36:36.72 XFHRsDpy.net
ノブに変えるのは
おお難しいんじゃあ~
127:デフォルトの名無しさん
18/08/23 13:42:16.42 OU0cRkrI.net
初心者に回転ノブの実装は難しいと思う
ってか使いにくいだろ
128:デフォルトの名無しさん
18/08/23 13:58:21.08 oqmXoghj.net
>>121
画像だけで済まないでしょそれ
そんな形で回転するコントロールは無いので一から自作しないと
>>123
マウスホイール部分で動かすのならともかくドラッグで操作するものとか考えただけで頭痛くなる
129:デフォルトの名無しさん
18/08/23 14:11:46.80 YLcqAqh8.net
volatile キーワードの役割がどうしても理解できないので教えてください。
自分の考えでは、以下のようなプログラムを最適化ありでコンパイルして実行すると
while (loop) ; のループから抜け出すことができないから
volatile キーワードが役に立つのかと思ったのですが、
残念ながら(?)実際に試すと普通にループを抜け出せてしまいました。
class Program
{
static bool loop = true;
static void Main(string[] args)
{
new Thread(() =>
{
Thread.Sleep(1000);
loop = false;
}).Start();
while (loop) ;
Console.WriteLine("End");
}
}
そもそも、volatile がある場合とない場合で動作が変わるコードを
ただの1つも作り出すことができていない状態なので、
何か volatile の役割を示すコードの例を示していただけると嬉しいです。
よろしくお願いします。
130:デフォルトの名無しさん
18/08/23 15:15:56.49 MTIo/8hT.net
>>122-124
むむむ画像の差し替えだけじゃ回転ノブは難しいのか!
C#というのは在り物のコントロールをそのまま使って工夫するものなんですかね?
131:デフォルトの名無しさん
18/08/23 15:23:55.44 7meTQdNO.net
マジレスするとメッセージ捕まえて
自力で描画すれば可能なんだけど
労
132:力に見会わないのでお勧めしない webやWPF, UWPならグラ弄るの簡単
133:デフォルトの名無しさん
18/08/23 15:58:07.77 yzuHUqjv.net
労力かけてそんな使いにくいUI作る必要ないだろ
134:デフォルトの名無しさん
18/08/23 19:00:57.46 4aOJVToK.net
たぶん音量調整とかしたいんだろうけど
そんなui見かけないのは使いづらいからでは?
135:デフォルトの名無しさん
18/08/23 19:45:13.80 /L2wlbg3.net
regionの適切な使い方って結局どうすんのがいいんだ?
独学だし人のあんま見たことないからよくわからん
136:デフォルトの名無しさん
18/08/23 19:50:59.55 Hj0kcImk.net
折れ線グラフとか棒グラフとか
3Dで立体的に表示できる機能なんかない?
開いたら開始地点から現在の値のトコまで棒が伸びていくアニメーションとか
リッチ感だしたいんだけど
137:デフォルトの名無しさん
18/08/23 21:01:34.44 IbEC1I+s.net
GDI+よりWPFが簡単とはまったく思わんなあw
>>129
XPの時代はそういうUIが結構あった。
>>126
ボリュームの位置(値)を、例えば小さな丸で示す実装なら超簡単でしょう。
138:デフォルトの名無しさん
18/08/23 23:07:37.52 nqcPx5oZ.net
自分の作ったプログラムをウェブで公開したいのですが、完全に独学のため、
リリース用のビルドをするにあたっての注意点がよくわかりません。
このウェブサイトにあるように、単純にリリースビルドすればそれでいいのでしょうか?
第5回 Windowsアプリケーションのデバッグ&リリース (5/5):連載簡単!Visual Studio .NET入門 - @IT
URLリンク(www.atmarkit.co.jp)
また、リリースビルドした場合、デバッグ不足で予期しないエラーが発生した場合、何行目にエラーがあるとかそういう表示って出てこなくなるのですか?
139:デフォルトの名無しさん
18/08/23 23:19:35.02 S0ZPdzES.net
>>132
回転はどうするのwってのは置いておくとして超簡単って書くのなら方法示したほうがいいと思う
>>133
公開するのならビルドした.Netのバージョンを必ず明記すること
.Net以外の外部DLL等参照している場合はそれも書くこと
>何行目にエラーがあるとかそういう表示って出てこなくなるのですか?
はい
140:デフォルトの名無しさん
18/08/23 23:24:55.20 AuVZlFM/.net
>>134
PDBの設定によるやろ…
141:デフォルトの名無しさん
18/08/23 23:55:38.28 OU0cRkrI.net
>>133
pdbファイルも一緒に配布すればrelease版でも例外発生箇所を表示できる
142:デフォルトの名無しさん
18/08/23 23:57:41.73 AuVZlFM/.net
>>136
リリースビルド時のフルパスがPDBに含まれないようにするのってどうやるんだっけ?
143:デフォルトの名無しさん
18/08/24 00:17:32.21 uCffaOwh.net
>>137
[ビルド]-[出力]-[詳細設定]-[デバッグ情報]を「なし」に設定
144:デフォルトの名無しさん
18/08/24 07:41:58.39 uu5lHyZK.net
フォーマット指定の方法なんだけど
("id:{0}",変数)みたい0とかのインデックス指定なしに
記載する方法ってなかったっけ?
こんな感じ
("id:{}",変数)
あったような気がするのだが見つからない
145:デフォルトの名無しさん
18/08/24 08:05:28.79 1zvoR5Nf.net
>>139
URLリンク(docs.microsoft.com)
146:デフォルトの名無しさん
18/08/24 08:16:29.54 srP6ovAZ.net
>>139
文字列補完?
$"Id:{変数}"
147:デフォルトの名無しさん
18/08/24 12:23:14.01 fKyaBZGN.net
計算処理クラスは自動テスト実現のため一時変数以外のインスタンスを持たせない
という方針を聞いたんですけどC#に例えるとどういう事ですか?
独り派遣で聞く人もおらず困っています
148:デフォルトの名無しさん
18/08/24 12:53:09.08 ucGkXF3f.net
なぜその方針を作った�
149:、の人に直接聞かないの 理解せずに間違ったことやったら最終的に叱られるのは君じゃないの?w こういう人が2chで「コミュニケーションスキルガー」とか被害妄想全開で吠えてるんだろうなあ
150:デフォルトの名無しさん
18/08/24 12:54:55.58 /eex7TkL.net
2chとかいつの時代だよ
151:デフォルトの名無しさん
18/08/24 13:47:23.02 7bl9vxOR.net
未来から来てる可能性だってあるじゃないか
152:デフォルトの名無しさん
18/08/24 16:00:43.60 ILYVISJ2.net
状態を持たせずに純粋関数にした方が
バグが減って保守やテストがしやすいってことじゃろ
Mathクラスみたいに
153:デフォルトの名無しさん
18/08/24 16:28:08.95 cHge5Sdm.net
メソッドを全部staticにしたらいいんじゃね
もちろんstaticな変数は持たない
utilクラスみたいなもんだと思えば
154:デフォルトの名無しさん
18/08/24 16:41:00.57 qtcVVPQQ.net
それやるならstatic classってのがc#にはあったような
155:デフォルトの名無しさん
18/08/24 17:06:07.87 7htaPF/P.net
メソッドやクラスをstaticにしたところで他のクラスのインスタンスへの依存は防げないだろ
計算処理クラスなんてものが生み出されるようなレベルの現場だと、
ヘタにstatic強制なんかしたらstaticフィールドに状態持たせるバカが増えて余計に酷い状況になりそう
156:デフォルトの名無しさん
18/08/24 17:54:49.70 g1+rhs2E.net
>>143
それ書いた人はもう居ないです
いつもイライラして椅子蹴ってくる正社員リーダーとは恐怖でこちらから話せません
157:デフォルトの名無しさん
18/08/24 17:56:51.04 q0UJEScu.net
Utilクラスってゴミ箱になりがちだから嫌いだわ。
計算処理クラスはなんとなく気持ちはわかるが。
delegateでは微妙に表現力が足りないから特定のinterface実装したクラスを受けるようにして、その引数と型を渡せばネットワーク上のどこかでインスタンスが起こされて実行されるようにした、みたいなケースじゃないの?
テストではないけど、ジョブスケジューラがdll名と引数をキューから拾って、appdomain切って動的にそのクラスを実装したdllを読み込んで実行してくれる、みたいなのは作ったことある。
158:デフォルトの名無しさん
18/08/24 18:01:21.93 g1+rhs2E.net
>>149
処理をクラスにするって古い考えなのでしょうか
自分はDDD的な知識のクラスを構成するクラスも作りますが、そんなものは作らんのが流行りなのかと気になります
159:デフォルトの名無しさん
18/08/24 18:44:47.51 h3eX92xO.net
>>134
>>136
ありがとうございます。やってみます
160:デフォルトの名無しさん
18/08/24 19:20:46.35 s18ZTF9u.net
>>150
マジで底辺のリーダーってこんなんがほとんどなの?こええ
161:デフォルトの名無しさん
18/08/24 19:36:31.86 n2aXOJxU.net
staticなナントカUtilクラスはJavaドカが好むよねー
staticなのに内部でインフラ異存しまくっててキレそうになるよ
162:デフォルトの名無しさん
18/08/24 22:32:41.02 KbP5R+D4.net
失礼します。
ASP.NET MVC又はASP.NET MVC CoreのRazorビューから匿名型がサポートされない理由を説明してくださる方居ますか?
163:デフォルトの名無しさん
18/08/24 22:36:20.82 usF07bpd.net
>>156
これのこと?
URLリンク(stackoverflow.com)
164:デフォルトの名無しさん
18/08/25 00:04:54.82 K7SavMc/.net
>>157
はい。
.frameworkがpoorなのでサポート出来ない事が私には理解できません。
こちらのurlの記事では普通にプロパティで取得出来ているように見えますが…
URLリンク(architect-wat.hatenablog.jp)
165:デフォルトの名無しさん
18/08/25 09:58:42.90 uF3Ar+0r.net
>>158
匿名型なんて使わなきゃいい
166:デフォルトの名無しさん
18/08/25 19:34:07.64 ZJ6IWHAy.net
c#アプリって簡単に逆コンパイルで簡単にソース見れちゃうじゃん?
例えばAPIキーとかハードコーディングしてもしてなくても抜き出せてしまうけどどうすんの?
167:デフォルトの名無しさん
18/08/25 19:41:36.20 ajbZjNWE.net
>>160
リバースエンジニアリングはどのくらいの労力がかかるかだけの違いで解析できないものなんかないから諦めろ
168:デフォルトの名無しさん
18/08/25 19:57:01.93 Z58Bgt4H.net
>>160
ハッシュ値使うねん
169:デフォルトの名無しさん
18/08/25 20:08:24.14 6fvgv2wi.net
>>162
ハッシュからAPIキーは復元できないでしょ
170:デフォルトの名無しさん
18/08/25 20:21:29.85 nj06+sqx.net
>>160
環境変数
171:デフォルトの名無しさん
18/08/25 20:50:49.58 J4BiRy9W.net
200週くらい周回遅れの話題だ
172:デフォルトの名無しさん
18/08/25 21:51:49.34 uGtRYhlb.net
>>163
間接的に別なのから取得するとか
173:デフォルトの名無しさん
18/08/25 21:53:27.00 Y3DnwOBx.net
>>165
結論はどうなってるの?
どうしようもない?
174:デフォルトの名無しさん
18/08/25 21:53:40.13 Y3DnwOBx.net
>>166
どういうこと?
175:デフォルトの名無しさん
18/08/26 09:06:38.21 mvt+Dc+2.net
>>159
問題はEFで匿名型が簡単に作られてしまうのが問題ですね。
結局expandoobjectに変換するか、ViewModelを毎回作るしか無さそうですね。
176:デフォルトの名無しさん
18/08/26 09:44:13.36 O9adGcKd.net
>>167
要件による
サーバーからもらうとか
177:デフォルトの名無しさん
18/08/26 12:36:40.81 KYhaaDP0.net
>>161
まあそうだけど
>>164
ふむふむ
>>170
まあそれだね
てかそれやってるんだけど超めんどい
178:デフォルトの名無しさん
18/08/26 12:41:52.49 d3emHXQQ.net
>>170
サーバーから貰うときの認証は?
179:デフォルトの名無しさん
18/08/26 12:45:24.17 MAg8NxfR.net
>>172
認証のパスワードなどの手続を登録した人に別途配布
180:デフォルトの名無しさん
18/08/26 12:48:09.71 mLZLsxB6.net
サーバーから受け取るようにしたとしてもクライアントが丸見えなら同じ方法でサーバーからキー抜けるだろ
ちゃんとやるなら、開発者だけが知ってる秘密鍵でシリアルキー作ってクライアントごとに払い出すようにする
そしてサーバー側でシリアルキーに基づいてクライアントを識別し、クライアント単位でクォータや権限の制御をする
漏れる前提で他のクライアントに影響が出ないように設計するのが基本的な戦略だよ
181:デフォルトの名無しさん
18/08/26 12:55:18.75 IHY0+SV3.net
どうでもいいけど、もともとの質問の趣旨は
ネイティブコードと同程度の秘匿性でバイナリにデータを隠せるかじゃないの?
それは無理、で終わりだと思うけど。
182:デフォルトの名無しさん
18/08/26 12:56:47.03 g9QDbTAC.net
APIキーって5chのAPIみたいなの想像してたけど違うの?
それだとクライアント毎に払い出しても誰か一人のがばれたら使用権貰えちゃうけど
183:デフォルトの名無しさん
18/08/26 12:57:13.81 mLZLsxB6.net
>>175
APIキーを抜くくらいならネイティブでも難しくないよ
184:デフォルトの名無しさん
18/08/26 13:13:33.45 mLZLsxB6.net
>>176
それで困るのは5chではなくブラウザの開発者だろ?
5chにとっては、特定のクライアント(この場合は開発者単位な)からの不正な大量投稿があれば、
そのクライアント(開発者)を丸ごとBANしてしまえばいい。他のクライアント(開発者)には影響しない。それを防ぐ責任はあくまでクライアントの開発者にある。
ユーザー単位で
185:払い出すにしろ開発者単位て払い出すにしろ、個別に払い出すことで責任をAPIキーを払い出された側に転嫁できるんだよ。
186:デフォルトの名無しさん
18/08/26 13:14:28.64 fHWcXfSA.net
>>178
なるほど
187:デフォルトの名無しさん
18/08/26 13:22:20.16 KYhaaDP0.net
ソースコード丸見えだから、APIキーがどこにあるかわかるよね
そうやって海賊版作れてしまうわけだ
188:デフォルトの名無しさん
18/08/26 14:46:35.94 VBsyc88B.net
流石にAPIキーを普通に文字列で書くアホはnativeでも居ないだろ。
難読化する。
ソースコードが丸見えだとしても問題無い気はする。どーせnativeでも逆アセンブルするんだし。
カジュアルな対策なら、c#には逆コンパイルされないILコード使って復号ロジック書くべきかと思うな。
ちゃんとやるならドングルかライセンスサーバのどっちかじゃねえかな。
189:デフォルトの名無しさん
18/08/26 16:44:19.57 Aux3ZmsD.net
nativeと同程度の隠匿で良いならそこだけnativeにすれば良いだけやん
190:デフォルトの名無しさん
18/08/26 16:46:40.21 UH8BRHfz.net
oauthのキーなら速攻でばれるし文字列でそのまま書くな。難読かしても意味ねぇし。やるだけ無駄。
191:デフォルトの名無しさん
18/08/26 16:48:17.70 7VY92v0a.net
DBのパスワードとかソースに直書きしてるわ
ハッシュにしてもどこで復号すればいいのか
192:デフォルトの名無しさん
18/08/26 17:33:04.42 Lq+jppE1.net
自前でやるだけのセキュリティのスキルがあるとこは珍しい
素直にASP.NET Identity + IdentityServerでOIDC使っとくのが懸命な判断
193:デフォルトの名無しさん
18/08/26 17:45:57.13 6lhNHki6.net
こういう大事な部分を手軽で強固なセキュリティとしてなんでMSは用意しておかないんだ?
194:デフォルトの名無しさん
18/08/26 17:47:36.13 vKa62JvF.net
はい意味不明
OIDCってアプリ側がユーザーの認証認可をする仕組みだぞ?
それをどうクライアントアプリのAPIキーの隠蔽に使うのか教えてくれ
195:デフォルトの名無しさん
18/08/26 17:47:37.20 86UvKUWS.net
>>186
もうすでにC#関係なくなっているが手軽で強固なやり方ってどんなことよ?
196:デフォルトの名無しさん
18/08/26 17:49:20.77 vKa62JvF.net
>>186
本質的に不可能だからだよ
見られたくないならクライアントに埋め込まずにサーバーに持ってプロキシせよってこと
197:デフォルトの名無しさん
18/08/26 17:49:59.20 6lhNHki6.net
まあそれよりもソースを復元できるのが問題だわな
198:デフォルトの名無しさん
18/08/26 17:50:52.91 O9adGcKd.net
>>172
マシンに固定したいならMACアドレスとかHDDのシリアル番号とかで特定
ユーザーに固定するなら登録されたパスワードを定期的に入力とか
199:デフォルトの名無しさん
18/08/26 17:51:50.11 86UvKUWS.net
>>190
中間言語形式だけでなくスクリプト言語も否定する気かw
200:デフォルトの名無しさん
18/08/26 17:54:18.49 Lq+jppE1.net
>>187
チュートリアルもやったことないのかよ…
201:デフォルトの名無しさん
18/08/26 17:56:14.36 vKa62JvF.net
>>193
だから何のことを言ってるんだ
アプリ本体がユーザーの手元にあるのに認証認可もクソもないわ
202:デフォルトの名無しさん
18/08/26 17:57:02.40 6lhNHki6.net
>>192
サーバー型はビジネスロジックがサーバー内にあるからそこで防げるけど、c#アプリは無理じゃん
203:デフォルトの名無しさん
18/08/26 18:00:17.07 O9adGcKd.net
>>186
それなりには用意してる
お前らが使わねーだけ
URLリンク(docs.microsoft.com)
204:デフォルトの名無しさん
18/08/26 18:02:46.79 6lhNHki6.net
>>196
UWPじゃなくFormアプリでおねがい
205:デフォルトの名無しさん
18/08/26 18:04:53.73 vKa62JvF.net
>>196
これユーザーが入力した認証情報を安全に保持するのと、サーバー側のリソースに関するユーザーの認証認可をする話だよね
開発者の機密情報を安全にクライアントに持たせるのとは全く別の問題だよ(そしてそれは原理的に不可能)
206:198
18/08/26 18:15:55.92 vKa62JvF.net
もちろんクライアント側で復号する必要がなくて、単にデータストアをクライアント側に置きたいだけなら、サーバー側で暗号化すればいいだけだよ
原理的に不可能なのはクライアント側でも機密情報を復号して使う必要がある場合の話ね
207:デフォルトの名無しさん
18/08/26 18:22:46.80 wR7TFJf0.net
こんな解説しないと分からないってのが信じられん
208:デフォルトの名無しさん
18/08/26 18:40:28.29 O9adGcKd.net
>>198
だから「それなり」って書いてあるだろ
209:デフォルトの名無しさん
18/08/26 23:06:54.05 BDbiNYg/.net
Dapperを使用するにあたり、下記の「DAO」クラスの「SelectDAO」メソッドの
戻り値を抽象的に表現できれば、SQL与えるだけで共通に使えるのになと思っているのですが
戻り値を下記のList<IAB>のように書く方法はあるでしょうか?
interface IAB{ }
public class A : IAB { public string nen{ get; set; } }
public class B : IAB { public string nen{ get; set; } }
public class DAO
{
public List<IAB> SelectDAO(string sql)
{
System.Data.IDbConnection _con = new SqlConnection("接続文字列");
return (List<IAB>)_con.Query<IAB>(sql);//DynamicMethodに対する型オーナーが無効です。
と怒られます。
}
}
210:デフォルトの名無しさん
18/08/26 23:10:18.71 iDr2keD8.net
>>202
いやSQLを隠蔽するのがDAOなのにSQL渡したらダメだろ…
211:デフォルトの名無しさん
18/08/26 23:12:59.95 hANAm2gW.net
ようするにdaoなんか使わずに
odbc使いなさいということ
212:デフォルトの名無しさん
18/08/26 23:15:38.55 qu/vhMXg.net
>>204
ODBCだなんて何十年前の話だよ…
213:デフォルトの名無しさん
18/08/26 23:26:06.62 HvpvLn4I.net
>>202
戻す値をList<dynamics>にすることで解決します。
マジオススメ
214:デフォルトの名無しさん
18/08/26 23:30:34.69 BDbiNYg/.net
>>203
Dapperは緩いORMでクエリは書く必要あるんです
EntityFrameworkなら確かに悩む必要無い問題な気がします
215:デフォルトの名無しさん
18/08/26 23:32:55.01 acagJbyI.net
API抜かれるってどのシーンで警戒してるの?サーバー上でアプリ起動してるとき?
216:デフォルトの名無しさん
18/08/26 23:33:30.52 8W/FdQms.net
5chせんぶら
217:デフォルトの名無しさん
18/08/27 10:42:42.81 YXkmN521.net
>>202
最終的にDapperも何らかのインスタンスをnewしないといけないのに
IABだけ渡されても何作ればいいのか分からないだろ
素直に
public List<T> SelectDAO<T>(string sql) where T : IAB
とかに
というかSelectDAOを呼び出した側はメンバの存在しないIABを使って何をすればいいのか
218:デフォルトの名無しさん
18/08/27 13:05:39.06 97nSTlug.net
>>207
いやそういう問題じゃなくて、SQLを書くんだったらDAOの中で書くんだよ
外からSelectクエリを文字列で受け取るってそれ使う側がDBのテーブル構造を知ってないとできないだろ
データストアの詳細を全く隠蔽できてない
219:デフォルトの名無しさん
18/08/27 13:51:51.69 eRxM3k20.net
Dapperの実装ってこんな大変だったのか
220:デフォルトの名無しさん
18/08/27 17:39:21.68 dQ3pJlXI.net
>>211
1知識1DAOクラスが本来の姿という事でしょうか?
実装レベルでもうちょっと抽象化できるかと思ったのですが設計レベルでは好ましく無いとなれば深追いは不要ですね
221:デフォルトの名無しさん
18/08/27 20:08:24.29 LmPAdMN0.net
VS2017WindowsFormsAppの実行ファイルを作成したのですが、
実行ファイルをzip圧縮するとサイズが10分の1以下になります
小さくなりすぎな気がするのですが正常の範囲で問題ありませんでしょうか?
または、実行ファイルが肥大?(余分な情報が含まれている等)していたりするのでしょうか?
なにかVS上で出来ることはありますか?
222:デフォルトの名無しさん
18/08/27 20:15:33.37 RlI7Tzg3.net
>>21
223:4 使用しないのならデバッグ情報とか埋め込まれるマニフェストとか外せるけどそれは肥大するほどでもない どんな実行ファイルか見てみないと分からないし解凍しても動くのなら気にしなくてもいいのでは
224:デフォルトの名無しさん
18/08/27 20:39:37.08 liNpwcvg.net
プログラミング初心者です
visual studio for mac2017をインストールしてC#を覚えたいんだけど、どうやって学習したらいいのか教えてください!
探してもなかなかいい日本語の学習動画やサイトがなくて、、、
225:デフォルトの名無しさん
18/08/27 20:46:49.73 lvpUeXXJ.net
未確認飛行が定番じゃないかね
226:デフォルトの名無しさん
18/08/27 21:10:56.77 LmPAdMN0.net
>>215
ありがとうございます
1MBほどのファイルが80KBほどになるので、小さくなりすぎではないかと思いまして…
生成される実行ファイルが、プロジェクトのある時点から1MBほどに大きくなったような記憶もあります
読み込み差し替えした画像リソースが上手く外れていないのかなと想像したりしますが…
もうちょっと色々自分で調査してみます
227:デフォルトの名無しさん
18/08/27 21:15:57.46 RlI7Tzg3.net
>>216
念のため書いておくけどMac版はWinフォームやWPF作れないからな
>>218
コード中心で1MBくらいになるのは数万行のものだから、そんな縮むのは間違いなく画像リソースだろうな
BMP形式で入っているとかアイコンが多いとかならZIPでもかなり縮む
228:デフォルトの名無しさん
18/08/27 22:15:24.67 SLuEHwvX.net
>>219
コードは5000行ほどですね。試しにプロジェクトを新規で作り直して中身を移し替えてみます
エクスポートインポート的なのがあれば良いのですがVS標準ではないみたいなので
大変ですが手動でやるしかないですが
229:デフォルトの名無しさん
18/08/27 22:26:04.85 liNpwcvg.net
>>217
ありがとうございます!!!
230:デフォルトの名無しさん
18/08/27 22:36:37.03 HUaFIhtM.net
>>217
あそこほんと神
231:デフォルトの名無しさん
18/08/27 23:34:18.00 nPk8x20U.net
OSデフォルト環境だとsn.exeがインストールされてないのか
隔離環境で作ったアセンブリにストロングネームつけたい時ってみんなどうしてんだ?
232:デフォルトの名無しさん
18/08/27 23:53:32.54 E9g9LiKW.net
>>217
>>222
未確認ってどちらかというと入門じゃなくて確認用途だと思うよ
あれを見て判る人はすでにjavaなどの他の言語を習得してる
233:デフォルトの名無しさん
18/08/27 23:57:11.03 rJOuuZ33.net
まあそうだね
C#でプログラミング入門って正直キツいと思うし、そういうコンセプトのところは
たぶんないんじゃないか
234:デフォルトの名無しさん
18/08/27 23:58:55.68 m5aHtIH2.net
>>225
俺は「C#の絵本」でプログラミング入門した。
つまり、C#でプログラミング入門した
235:デフォルトの名無しさん
18/08/28 00:04:55.80 5gce9PvO.net
プログラミングはDelphi6からだったなー
\5,000でパッケージを買ったすぐ後に、無料版のDL提供が始まった思い出
高校生にとって\5,000は地味に痛かった……
236:デフォルトの名無しさん
18/08/28 00:10:26.77 ym/+5T0Q.net
>>225
何がそんなにキツい?
Windows Formsのぽとペタ以上に初心者に優しいのってなんだろ
237:デフォルトの名無しさん
18/08/28 00:11:23.06 9uK3R3xF.net
Androidもjavaのコンパイル通すだけなら
238:デフォルトの名無しさん
18/08/28 00:36:01.05 a3yKcaCh.net
英語得意ではなくてプログラミング言語の経験が全くないのなら
本を買う方がいいような気もする・・
239:デフォルトの名無しさん
18/08/28 03:46:31.78 CqD+kceR.net
猫でも判るで十分じゃね
240:デフォルトの名無しさん
18/08/28 07:03:31.88 CaCX57FK.net
神サイトはどぼんでしょ
あのサイトのコピペがC#する日本ITドカタを支えてる
241:デフォルトの名無しさん
18/08/28 07:14:31.08 TOj+sTb1.net
そこもう情報が古くね
242:デフォルトの名無しさん
18/08/28 12:15:17.24 psOOFlwe.net
>>228
細かいことよくわかんないけどなんとなくコピペで動くからいいやとVB的に使うならそれでいいけど、
言語を一から体系的に習得しようとするとC#はかなり大変だよ
継続的に進化してるから実感がないかもしれないが、今のC#はもはやメジャーな言語の中ではC++に次いでトップクラスに複雑な部類
243:デフォルトの名無しさん
18/08/28 12:27:46.49 Xl5gotOf.net
仕事でも趣味でも体系的に一から学ぶとかやっていたら何もできなくなる
自分の必要な部分以外勉強するのはもはや研究者
244:デフォルトの名無しさん
18/08/28 12:31:32.32 fGWTaV2a.net
C#って、言語仕様で難し目なのはyield, dynamic, awaitくらいな気がする
複数ある実行環境や巨大なフレームワーク、コンパイル後のILの話まで含めたら複雑だと思う
245:デフォルトの名無しさん
18/08/28 12:39:40.35 wSuYfii2.net
>>234
具体的に
246:デフォルトの名無しさん
18/08/28 13:10:00.14 psOOFlwe.net
>>237
たとえば簡単なところでいうと、読み取り専用プロパティの定義には今何種類のバリエーションがあるか知ってる?
int Hoge { get { return 5; } }
int Hoge { get => 5; }
int Hoge => 5;
int Hoge { get; private set; } = 5;
int Hoge { get; } = 5;
これらにどういう違いがあってどういうときにどれを使うべきか初学者向けに説明できる?
247:デフォルトの名無しさん
18/08/28 13:12:12.91 H5BH2HV+.net
>>238
どれでもいいじゃん
まずは動けばいいんだよ
バグる?そんなのバグったときに対応すればいい
どうせ世の中のほとんどのアプリがバグだらけなんだし
そしてそのバグ取り経験が学習にもなる
248:デフォルトの名無しさん
18/08/28 13:14:07.70 5WHkkAct.net
C++やったことないから知らないどC++は基本的なことも複雑なイメージ
C#は極めるほど複雑なイメージ
249:デフォルトの名無しさん
18/08/28 13:14:21.36 5WHkkAct.net
基本はかんたん
250:デフォルトの名無しさん
18/08/28 13:15:27.95 5WHkkAct.net
>>238の例なら初心者は一番上だけ知っとけばいい
251:デフォルトの名無しさん
18/08/28 13:20:49.83 onl38Ff8.net
複雑なことができると学習が困難
すべてを学習すること前提ならそうかもしれん
252:デフォルトの名無しさん
18/08/28 13:55:05.69 8egnCxzp.net
>>236
>>125 でも質問させていただいたのですが、
yield, dynamic, await あたりは理解できているつもりであるものの
volatile の役割がどうしても理解できません。
慣れている方にとっては当たり前のことなのかもしれませんが、
volatile がある場合とない場合で動作が変わるコードの例だけでも
お教えいただけないでしょうか。
どうぞよろしくお願いいたします。
253:デフォルトの名無しさん
18/08/28 14:22:59.40 MmXTTGRL.net
>>244
>volatile がある場合とない場合で動作が変わるコード
難しいんじゃないかなあ
(1) 実行儒所を入れ替える
(2) 変数(メモリ)に直接アクセスしない
みたいな最適化がどういうケースでコンパイラによって行われるか、たぶん誰もよく知らないw
だけでなく、古い記事だけど
URLリンク(www.itmedia.co.jp)
↑にあるように、CPUレベルの最適化はCPUに依存する
254:デフォルトの名無しさん
18/08/28 14:32:18.53 sGx9mZW+.net
使ったことなくてググったけどそもそものvolatileに対する理解がなんか違う気がする
URLリンク(d.hatena.ne.jp)
255:デフォルトの名無しさん
18/08/28 14:33:27.71 d5vKjLdu.net
>>125
volitateは「この変数はマルチスレッドで使うよ」と明示することによってシングルスレッドの場合�
256:ノしか効果的ではないような実行速度の最適化技術を使わせないようにするだけであって、排他制御を自動で行うものではないのでは?
257:デフォルトの名無しさん
18/08/28 14:53:49.79 8egnCxzp.net
>>245-247
皆さんレスどうもありがとうございます!
>>245
> >volatile がある場合とない場合で動作が変わるコード
> 難しいんじゃないかなあ
ありがとうございます。
ということは逆に言えば、volatile が無いことによって想定外の最適化が行われて
不具合につながること自体が起こりにくいものだと考えてもいいのでしょうか。
ただ仮にそうだとしても、お作法的には複数のスレッドからアクセスされる可能性のある
フィールドはすべてに volatile を付けるべきなのかなとも思うのですが、
CS0420 : volatile フィールドへの参照は、volatile として扱われません。
のような警告がうるさくてあまり volatile をつけたくないときもあるので悩んでしまいます。
258:デフォルトの名無しさん
18/08/28 14:54:59.71 8egnCxzp.net
>>246
参考ページのご紹介どうもありがとうございます。
実はそのページも読んでみたのですが
> ちなみに後者の記事では実際にvolatileをつけないと問題のあるコードが記載されている。
> 以下のコードをReleaseモードでビルドして、デバッグなしで実行すると終了しない。
> volatile をつける(static volatile bool complete = false;)と正しく終了する。
という記述に反して、私の環境(Win10, .NET Framework 4.7.1)では
volatile がなくても終了してしまうようです。
そもそも私にはそのページのコードと >>125 のコードが本質的に同じものに見えてしまい、
> volatileに対する理解がなんか違う気がする
とおっしゃることの真意が理解できていないのですが、
何かお気づきのことがあれば教えていただけないでしょうか。
>>247
レスありがとうございます。
つまり、volatite の有無で実行速度に差が出ることはあっても
計算結果が変わることはない、ということでしょうか。
そうであるなら気が楽なのですが、いくつかのページやここでの他の方のレスを読むと
どうしても確信が持てずにいます。
259:デフォルトの名無しさん
18/08/28 15:45:02.14 MmXTTGRL.net
>>248
確実である保証がないものに確実性の保証を与えるvolatileを「お作法」
と思う発想は100%間違っています
260:デフォルトの名無しさん
18/08/28 16:26:12.47 8egnCxzp.net
>>250
レスどうもありがとうございます。やはり、>>249 に書いたような
> volatite の有無で実行速度に差が出ることはあっても
> 計算結果が変わることはない
などということを期待してはいけないということでしょうか。
ただ、volatite が無いとどのような問題が起こるのかを理解していないと、
どのような場面で volatite を使えば確実性の保証が得られるのかも分からず、
結局は、なんとなく気分が悪いから volatite をつけておこう、
というレベルにとどまってしまうように思うのです。
確実である保証がないことを証明するというのは
一種の悪魔の証明なのかもしれませんが、
例えばオーバーフローの危険性を説明するなら
int x = int.MaxValue;
int y = 1;
int z = x + y;
のようなコードを見せればいいですし、
volatite についてもこのようなコードがないものかと期待して
質問させていただいた次第です。
261:デフォルトの名無しさん
18/08/28 16:40:01.44 d5vKjLdu.net
volatie付けないとマルチスレッドだと遅くなるとかじゃないのか?
実行結果が変わるとか困るしそんなことになるならもっと知られてるはずなんだが
262:デフォルトの名無しさん
18/08/28 16:45:40.99 3YXzfPPp.net
>>251
最適化のオプション外してビルドしたら?
保険であるvolatiteが「どのようなときに必要か」はMSも公表していないんだからどうしようもない
volatiteを含んだ上で機能するコードをどうしても書きたいとかなら知らないけど
263:デフォルトの名無しさん
18/08/28 17:49:00.74 YFDGQHp2.net
保障のようなものでしょ
今はどうか知らないけど
例えば
a=1;
a=1;
a=1;
a=1;
a=1;
みたいなコードがあっても
264:最適化でa=1が一回しか実行されないようにならないで ちゃんと回数分実行されることの保証
265:デフォルトの名無しさん
18/08/28 18:10:01.12 YFDGQHp2.net
憶測で申し訳ないけど
a=calc0(a);
b=calc1(a);
が最終的にアセンブラレベルで
フィールドa = レジスタA
レジスタA =フィールドa
みたいなのが出てきた場合に
シングルスレッドであればあとのレジスタA=aの実行が無駄じゃないかと思って
実行しないとかありうるかもしれない
マルチスレッドならフィールドaが書き変わってる可能性あり
266:デフォルトの名無しさん
18/08/28 18:24:08.22 MzYJYWNz.net
>>255
コンパイラの最適化で削られるんじゃなく実行されないのか
どっちにしてもきりがない
267:デフォルトの名無しさん
18/08/28 19:01:48.59 5NsMegki.net
>>233
新しいとこ教えてクレメンス
268:デフォルトの名無しさん
18/08/28 19:52:33.60 QdKJddNI.net
コンパイラの最適化の問題でしょ?
非同期処理で使うフィールドはいれときゃいいんじゃね
269:デフォルトの名無しさん
18/08/28 20:25:43.56 M3D05fOs.net
ちなみに「お作法」という言葉を使う人間が書くコードは間違ってます
マメな
270:デフォルトの名無しさん
18/08/28 20:43:21.83 sKgj8tWl.net
>>251
もう作成されたILのコード全部確認・検証しとけよ
問題が起こらない方がいいのに何か起こらないと困るように見える
271:デフォルトの名無しさん
18/08/29 01:22:33.42 4YeISD0k.net
>>251
C#ひいては.NET CILではJITないしAOTのコンパイルにかかる時間など故か
ネイティブC/C++程の最適化は行われないので具体例は難しいかもしれません
ということでネイティブC++(プログラム全体の最適化は無効)を例にしてみると
int n;
int main() {
n = 1;
n = 2;
return NO_ERROR;
}
上記コードは関数内でn = 1時点を参照してないし、最終的にn = 2じゃんという事で
「n = 1;」が削られマシンコードは「mov dword ptr [n], 2」とリターンコードのみに成ったりします
参照の場合においても変数の値を逐一読み込まずレジスタに保持して使い回すかもしれません
これを「volatile int n;」と修飾すれば、そのような最適化は抑制されます
C#コンパイラ(C#→CIL)レベルでは読み書きにvolatile.接頭辞などが付く事になる筈
URLリンク(msdn.microsoft.com)
ECMA-335やJIS X 3016といった言語仕様にも記載されていますが、排他制御云々ではありません
272:デフォルトの名無しさん
18/08/29 02:03:21.40 Hgs5A/6b.net
つまり、実行結果が変わる場合があるということ?
273:デフォルトの名無しさん
18/08/29 03:59:58.56 B+rDuEfA.net
C#のデストラクタってどういう場面で必要なんでしょうか?
ネットの記事で見かけたところ
C++ではコンストラクタとセットでプログラマがマネージする必要があるが
C#ではシステムが自動でやるのであまり重要じゃないとありましたが
イマイチよく分かりませんでした
Win32API関数をマーシャリングして使用したりするとデストラクタは必要でしょうか?
実はそういうプログラムを自作してずっと使用してるのですが
デストラクタを書いてなくても特に問題が発生したことがありません
問題が出ないのはたまたま自分の使用環境が合ってるだけでしょうか?
デストラクタを書かないと具体的にどういう不具合が起こるんでしょうか?
274:デフォルトの名無しさん
18/08/29 05:59:16.57 saiWj2Qp.net
ファイル・データベース・プロセスなどのリソースが解放されないから、
使用メモリサイズが
275:ドンドン大きくなっていく つまり、メモリリーク
276:デフォルトの名無しさん
18/08/29 09:22:23.43 o37zBcM2.net
>>264
ありがとうございます
その「使用メモリサイズ」というのは
タスクマネージャーの「メモリ」という所を見ればいいのですか?
277:デフォルトの名無しさん
18/08/29 09:30:37.55 SgdWV5FD.net
vmmapを使った方が良いかも
HeapWalkerを使えるようになればなおよし
278:デフォルトの名無しさん
18/08/29 09:55:10.31 o37zBcM2.net
>>266
windowsデフォの管理ツールに「リソースモニタ」ていうのもありますね
これでもいいのかな?
初耳な分野なので全く分かりませんが調べてみます
ありがとうございました
279:デフォルトの名無しさん
18/08/29 21:29:00.98 xKUAwzTF.net
C♯にて数あるエクセルファイルの中身を読み取りあれこれしたい時、早く開いて読み取って閉じる方法ってありますか?
280:デフォルトの名無しさん
18/08/29 21:43:41.82 bGCoQXPI.net
>>268
何と比較して?
281:デフォルトの名無しさん
18/08/29 22:02:30.99 XA15QLm3.net
>>268
「あれこれ」じゃなく具体的に何がしたいか書かないと
やりたいことが多くなるほど「じゃあエクセルで直接開いた方が早いね」になるだろうけど
282:デフォルトの名無しさん
18/08/29 22:14:58.95 dev0xKTh.net
前提条件やマシン構成で大きく変わるので思いつく手段を全部書いて実測
283:デフォルトの名無しさん
18/08/30 03:48:10.84 Aa4o8Duk.net
>>268
バイナリーで読み込むのが最速
284:デフォルトの名無しさん
18/08/30 07:21:13.96 oIUtx1rS.net
>>270
①シート名の読み込み。
②指定シートの指定列の読み込み。
③指定シートの指定行の読み込み。
こんな感じのを各エクセルに①~③を繰り返し行う。
ネットを参考に見て普通に開いて閉じるだと遅くて...
285:デフォルトの名無しさん
18/08/30 09:55:38.76 l8OdYu1h.net
>>273
ExcelDataReaderでも満足できないレベルに遅いの?
だとしたらほぼ無理かと
Excel側で予め必要になる情報をVBAとかでtxtファイルに出力しとくとかで対処するしかなさそう
286:デフォルトの名無しさん
18/08/30 12:24:59.82 8MIxRZMr.net
>>273
ネットで参考にした情報はOLEでExcelを起動して読み込む方法かね?
それは遅いからOpen XML SDKでも使って直接ファイルを読んだ方がいいね
287:デフォルトの名無しさん
18/08/30 17:27:14.97 Cn/2yBNm.net
質問させてください!
VisualStudio2017のC#Formアプリで自分用のテキストエディタを作ろうとしていて、
「改行した時、一行前の行頭に全角スペースがあった場合次の行頭にも全角スペースを挿入する」
というちょっとした自動インデントのような動作をさせたいのが目的です。
探り探りで一応目的の動作をするコードは書けたのですが、
「KeyUpからエンターキーの場合のみ分岐して座標をひとつ戻してから改行かどうかを確かめて、
行数を調べて一文字切り出してからカーソル位置を戻して比較して……」
をはじめとする行程で相当に回りくどいことをやっているような感覚があるので
もっとスマートな方法はないものかと思い質問に来ました。
どうぞよろしくお願いします。
URLリンク(ideone.com)
288:デフォルトの名無しさん
18/08/30 18:25:03.14 iISOYGhU.net
エディタはそんなもん
作るの超めんどい
289:デフォルトの名無しさん
18/08/30 18:56:29.70 2QdSuJnz.net
task難しすぎない…?
非同期が難しいのは当然だけどこんな躓いたのc#が初めて
290:デフォルトの名無しさん
18/08/30 19:01:33.74 16om6f/5.net
スレッドのシーケンシャル図みたいなのに書き出すといいよ
まあスレッドセーフな構造を理解してるのが大前提だけど
291:デフォルトの名無しさん
18/08/30 19:0
292:5:11.47 ID:syYDPcaO.net
293:デフォルトの名無しさん
18/08/30 19:16:12.27 r/TRQYs/.net
task自体は簡単だと思うけど
async/awaitは誤解したまま使うとハマる
294:デフォルトの名無しさん
18/08/30 19:19:23.09 JgfkbZf2.net
>>275
いや普通にOSSのライブラリ使えよ
295:デフォルトの名無しさん
18/08/30 19:25:02.55 2+/sJ3kY.net
>>276
読み辛すぎるw
っていうか、これ本当にちゃんと動く?
KeyUp発生した時点で入力したキーがTextに反映されてる前提になってると思うけどそうだっけ?
296:デフォルトの名無しさん
18/08/30 19:34:27.48 r/TRQYs/.net
windowsの仕組み上不定な気がする
297:デフォルトの名無しさん
18/08/30 20:37:16.45 4drhoSMA.net
>>276
行頭に全角スペースが入力されたときにフラグ立てる
というのはどうかな
文字列型フラグ変数に行頭に入力された全角スペースを突っ込んでおいて
改行でフラグ変数の値を行頭に挿入とか
行頭全角スペースが削除されたらフラグも空文字列にしないといけないけど
298:デフォルトの名無しさん
18/08/30 20:42:40.52 2QdSuJnz.net
URLリンク(ideone.com)
>>278で質問したものだけどコードで書いたので下の疑問が正しいのか教えてください
A:ここで並列にダウンロードできているのか?
B:Resultを使うとデッドロックすると聞いたけどawaitしていれば大丈夫?
299:デフォルトの名無しさん
18/08/30 21:00:14.61 Assw0OKp.net
>>285
行全部のフラグ作るのとテキスト読み込むときにフラグ作る必要があるが
何万行とかで構成されるテキストでもそれやるの?
動くのなら>>276の方がまだ楽だと思う
300:デフォルトの名無しさん
18/08/30 21:07:07.68 cD6Bz7+B.net
>>282
ん?
Open XML SDKってOSSなんだが w
URLリンク(blogs.technet.microsoft.com)
301:デフォルトの名無しさん
18/08/30 21:24:36.54 VlraDHRu.net
>>288
え、生でそれ使えってか?
302:デフォルトの名無しさん
18/08/30 21:26:02.80 Yh+aUVCO.net
>>286
A: DownloadAsyncが真っ当に実装されていれば並列ダウンロードになる
(真っ当ではない例: 同期的にダウンロードしてTask.FromResult)
B: Task<TResult>.Resultはタスクが終了済みなら即座に値を返すので、デッドロックしない
ちなみにTask<TResult>.WhenAllはTask<TResult[]>を返すから
return (await Task.WhenAll(tasks)).ToList();
でも行けるはず
303:デフォルトの名無しさん
18/08/30 21:26:33.91 qGVo2Ysa.net
Open XML SDK生で使ったことあるけど、もうちょっと頑張れなかったのかと言いたい
中のファイルメモリに乗っけてシートごとの並列処理出来るかと思ってたのに全然だし、セルの位置はR1C1限定とかマジで死ねよ
304:デフォルトの名無しさん
18/08/30 21:27:27.97 jRU2Egdi.net
>>288
Open XML SDKはWordなんかも含むOffice製品全部のSDKちょっと直感的じゃないから
ラッパーで多少はExcel VBAライクなClosedXMLとかNPOIとかの話と思われ
305:デフォルトの名無しさん
18/08/30 21:27:50.35 2+/sJ3kY.net
>>276
まあケチ付けるだけなのもあれなんで
俺ならこうかなあ
無駄なフィールドを作らないために無理矢理ラムダ式使ってるけど本当はこういうのよくないかも
class TextBoxEx:TextBox
{
protected string GetIndent(int line)
{
var s = Lines[line];
var m = Regex.Match(s, @"^[ \t]*");
return m.Value;
}
protected string GetIndent()
{
return GetIndent(CaretLine);
}
public int CaretLine
{
get { return GetLineFromCharIndex(SelectionStart
306:); } }
307:デフォルトの名無しさん
18/08/30 21:28:10.88 2+/sJ3kY.net
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
if(e.KeyCode == Keys.Enter)
{
var indent = GetIndent();
EventHandler eh = null;
eh = (sender, ea) =>
{
TextChanged -= eh;
SelectedText = indent;
};
TextChanged += eh;
}
}
}
308:デフォルトの名無しさん
18/08/30 21:41:05.42 cD6Bz7+B.net
>>289, >>292
だからそういう話ならもっと便利なOSS書けよって話
>>282だと単なるバカか文句しか言えないクズにしかならん
309:デフォルトの名無しさん
18/08/30 21:46:27.28 2QdSuJnz.net
>>290
勉強になりました
c#は書き方いろいろあってむつかしいです
310:デフォルトの名無しさん
18/08/30 22:15:02.92 jRU2Egdi.net
>>295
>>282はSDKという単語に対してライブラリという単語を使ったんだだと思うぞ
(それにOpen XML SDKはソース公開されてるものの
MSしかコミットしてない実質プロプラなのでOSSと呼ぶの違和感あるのもあると思う)
>>275の質問レベルに対してSDKを出すのは
それこそもっと便利なOSS書けよって話
ここ初心者スレだぞ
311:デフォルトの名無しさん
18/08/30 22:26:00.43 R+j2ccwX.net
>>282が的外れで意味不明なのが悪いということ
312:デフォルトの名無しさん
18/08/30 23:39:14.89 4drhoSMA.net
>>287
そう言われるとそうだな
もっとよく考えないとダメだったな
テキストエディタ舐めてたわ
313:デフォルトの名無しさん
18/08/31 00:01:56.93 4iUWs/UZ.net
var config = new ConfigurationBuilder()
.AddEnvironmentVariables(prefix: @"XXX_")
.Build();
services.Configure<MyOptions>(config.GetSection("MyOptions"));
class MyOptions {
public int Foo { get; set; }
public int Bar { get; set; }
}
---env---
export XXX_MYOPTIONS_FOO=1
export XXX_MYOPTIONS_BAR=2
ヒエラルキーを持った設定を環境変数に入れたいのだけどコロンを環境変数の識別子に使うとOSに怒られる
アンダーバーにすれば環境変数をセットできるけど今度はIOptionsパターンがヒエラルキーを認識してくれない
なんかイケてる対処法ないんか?
314:デフォルトの名無しさん
18/08/31 00:12:53.87 0MAifXJX.net
>>299
ギガ単位のテキストファイルを編集できるエディタって意外とないのよね
ログファイルとかで需要はありそうなのに
昔、探したけど無かったからけっこう苦労して自作したわ
315:デフォルトの名無しさん
18/08/31 00:14:40.87 4ZfpOo1s.net
そんなもんをエディタで編集しようというのが
そもそもの間違い
sedで十分
316:デフォルトの名無しさん
18/08/31 00:18:44.01 4ZfpOo1s.net
ギガ単位のファイルなんか
結局検索しないと編集箇所を特定することなんかできない
もしかしてギガ単位のファイルを目視で編集箇所特定してんの
どんだけ頭悪いねんと。。。
317:276
18/08/31 03:32:18.34 ogs0aMAV.net
>>277
こんなもんなんですね!?
テキスト入力を広げていくだけだから初心者向きだと思って始めたのですが
びっくりです……でも組み上げていくのは楽しい……
>>283 >>293
当方プログラミング3日目ゆえ……読み辛くてすまぬ……すまぬ……
コードありがとうございます!
すでに用意されているものを組み合わせることしか考えてなかったので
Textboxのクラスごと作ってしまう方法は目から鱗でした!
GetLineFromCharIndexメソッドの存在すら知らなかったので
これだけで無限に簡略化できそうな気がします……
本当にありがとうございます、色々弄ってみます!
>>285
既存のファイルを読み込んだ時に改行しやすくするのが目的なので
>>287さんの言うとおり一行一行フラグ立てていく方式は厳しいかなと思いました……!
リアルタイムで少ない文章を入力していくならそのぐらい簡素でも
いいと思うのですけれどね! むずかしい!
おかげで先に進めそうです、ありがとうございましたー!
318:デフォルトの名無しさん
18/08/31 03:47:24.61 ogs0aMAV.net
れんとうしつれいします
いざググって調べてclass TextBoxEXの意味を勘違いしていた事に気付いたため
レス内容は笑い流してあげてください 正しい意味を知って本当に目からウロコでした
ありがとうございました!!
319:デフォルトの名無しさん
18/08/31 06:16:33.32 WaaqYsvL.net
>>298
たぶん>>297と同類でOpen XML SDKがOSSなのを知らなかったんだろうな
実質プロプラとかわけわからんこと口走って恥の上塗りしてるし w
320:デフォルトの名無しさん
18/08/31 06:36:54.02 7Lf8QxyM.net
実質プロプラw
321:デフォルトの名無しさん
18/08/31 07:41:37.25 Sw5Wccxa.net
>>304
3日目なら他にやることあるだろ
322:デフォルトの名無しさん
18/08/31 08:23:57.84 ogs0aMAV.net
>>308
どんな技術も取り敢えず自分がやりたい事から始めて
壁にぶつかったら都度必要な事を調べていけば上手くなると思っているのですが違うのでしょうか……?
どうにか自力で一応の形にして目的を実現するところまではやって、
本当にそれが正しいのか調べて見つけることができなかったから質問させて頂いた状態なので
他にやる事と言われても何をすればいいのかわからないです、すみません……