C#, C♯, C#相談室 Part92 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2017/01/28(土) 16:46:53.58ID:op86qfG/http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467211515/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
0322デフォルトの名無しさん
2017/03/02(木) 09:06:59.45ID:Ct6l/xwh0323デフォルトの名無しさん
2017/03/02(木) 09:07:18.82ID:cjA1b3op終端ノードまで来たら開始インデックスから後を削除し、終端ノードに持たせてある置換文字列を付加し、現在のツリーポインタを全て破棄
こうすれば280で置換も効率的にやれるよ
0324デフォルトの名無しさん
2017/03/02(木) 09:17:20.56ID:cjA1b3opそれ文字列が長ければreplaceのための線形探索がネックになるはずで、StringBuilderは直接関係ないでしょ
簡単に効率を改善するんなら、全キーワードのうち最長のキーワードの文字数と同じサイズのバッファを持っといて
そこに対して置換をかけりゃいい
もちろんその置換結果を最終出力の文字列として連結していくところはStringBuilderを使うべきだけど
0325デフォルトの名無しさん
2017/03/02(木) 10:02:53.43ID:xcfTeAxlに限定されると思ふ ノ ヽ(・ω・)/ズコー
0326デフォルトの名無しさん
2017/03/02(木) 12:13:19.52ID:63yIksCz0327デフォルトの名無しさん
2017/03/02(木) 13:30:45.83ID:NvG2Ox0H一万近いとどうなんだろうか
0328デフォルトの名無しさん
2017/03/02(木) 13:39:24.58ID:Ct6l/xwh置換後に短くなっても駄目っぽいけどね
0329デフォルトの名無しさん
2017/03/02(木) 13:42:21.47ID:j0RdOmJSで方法変えた方がいいな
0330デフォルトの名無しさん
2017/03/02(木) 16:45:48.51ID:yzi1qiN6そんな変な処理をしなければいいだろ。
解決!
0331デフォルトの名無しさん
2017/03/02(木) 19:36:05.41ID:tOCPWbBv0332デフォルトの名無しさん
2017/03/02(木) 19:43:30.86ID:j0RdOmJS0333デフォルトの名無しさん
2017/03/02(木) 19:47:35.64ID:eNjjKtZ0それ以前にベタにやっても余裕だと思うが。
0334デフォルトの名無しさん
2017/03/02(木) 19:54:31.82ID:Ct6l/xwhプロファイラ使えるようになるのが一番いいね
ただ、それじゃわかりにくいときもあるから知恵をつけるのも大事だと思う
0335デフォルトの名無しさん
2017/03/02(木) 20:14:46.47ID:eNjjKtZ0例えばString.Replaceと出て終わり。
https://msdn.microsoft.com/ja-jp/library/ms182372.aspx
https://msdn.microsoft.com/ja-jp/library/fk49wtc1(v=vs.110).aspx
その先の解像度は一般的に無いでしょ。(俺はC#のプロファイラを使ったことは無い)
だからここでやってるみたいにCLR内の動作を考える必要がある。
0336デフォルトの名無しさん
2017/03/02(木) 20:23:23.74ID:j0RdOmJSそれはプロファイラの考え方を間違ってる(使ってないみたいだから知らないのは当然かもしれんが)
replaceがネックって出ればそれでいいんだよ
0337デフォルトの名無しさん
2017/03/02(木) 20:34:59.52ID:Ct6l/xwhそうだね
さらにgoogleで
replace 遅い c#
なんてキーワードで検索かければもう解決方法も見つかったようなもんだね
0338デフォルトの名無しさん
2017/03/02(木) 20:42:38.33ID:eNjjKtZ0いや俺は他言語(JavaScript)ではプロファイラ使いまくりだぞ。
そしてプロファイラ自体は見た目ほぼ同じだし。当たり前だが。
というか今回は20行程度のプログラムで2重ループするだけだろ。
ベタでやった場合、String.Replaceが出るに決まってるだろ。
お前はアホの子か?
問題はそれをどう変えたらどう改善されるかの見通しを立てることだろ。
それはここでみんながやってるように、自分で考えないと分からない。
とはいえここで案を出してもらってるんだし、後はがんばれでしかないが。
0339デフォルトの名無しさん
2017/03/02(木) 20:44:03.61ID:maE+uJIv馬鹿は一生js書いてろ
くせえから出歩くなクソが
0340デフォルトの名無しさん
2017/03/02(木) 20:49:46.45ID:rlmCwDYA品質の悪いライブラリと品質の悪い人材によって書かれているから
すぐsucks so muchになるんだ
0341デフォルトの名無しさん
2017/03/02(木) 21:44:03.77ID:eNjjKtZ0いやJavaScriptはJITがエグイからでしょ。(同じ傾向はC#にもあるはずだが)
例えばHTMLの特殊文字を変更する場合、string.replace(Regex,func)で纏めるよりも、
数個なら string.replace().replace().replace() とかハードコードした方が速かったりする。
ボトルネックがソースから予測しづらいからプロファイラを使うしかない。
その点、Cは最初から見えた状態で書くからいい。
ただこのあっさり感、C#ならString, StringBuilder, Regexで試して、
それ以上は諦める文化なのかもしれんね。そういう用途の言語ではあるし。
C的アプローチで限界速度を追求するのではなくてね。
0342デフォルトの名無しさん
2017/03/03(金) 07:07:46.01ID:GM13pkfIろくな解決策が出ないので
もう結構です
0343デフォルトの名無しさん
2017/03/03(金) 07:16:35.43ID:cZXazyZL文字列探索アルゴリズムの問題だと思うのは俺だけかな?
そこを自前で実装すれば高速化できると思うのだけど
0344デフォルトの名無しさん
2017/03/03(金) 07:22:10.27ID:4qcBtzljそれは>>280で出てる
0345デフォルトの名無しさん
2017/03/03(金) 07:22:40.42ID:cZXazyZL置き換え後、どこに格納するかはたいして重要じゃないはず。
状況に応じた探索アルゴリズムを使用することが重要。
自前実装は辛いけど。
0346デフォルトの名無しさん
2017/03/03(金) 07:31:45.18ID:ELiKOyhw0347デフォルトの名無しさん
2017/03/03(金) 07:34:13.74ID:4qcBtzljその「状況」は単純に探索をどうするかだけではないよ
置換処理に適したアルゴリズムを使用することが重要
その意味ではトライ木を使った方法(280)はリアルタイムで読んだそばから置換できるから目的に合ってる
0348デフォルトの名無しさん
2017/03/03(金) 07:50:58.21ID:pVtcQ1mY0349デフォルトの名無しさん
2017/03/03(金) 07:54:40.78ID:a7lwSDS40350デフォルトの名無しさん
2017/03/03(金) 07:56:17.33ID:pVtcQ1mY0351デフォルトの名無しさん
2017/03/03(金) 08:06:18.44ID:hxiWJWmX検索された文字列から変換後の文字列を求める手間の話?
8,200個くらいならたいしたことないと思う
0352デフォルトの名無しさん
2017/03/03(金) 08:19:11.00ID:ELiKOyhw0353デフォルトの名無しさん
2017/03/03(金) 08:30:26.60ID:LqKyLlg1できるのわかってるし
正直、対象の文字列に対してdictionaryでまとめてある群からヒットさせるならそこまで変わらないと俺は思ってるので興味ない
さらに話題提供者は明確な仕様を出したわけではないので現状では「組めない」が正解
さらにこの問題は対象のデータの持ち方で解決する方法もあって多くの場合そっちのほうが楽なので
あまりこのスレで出たような解決方法を適用することは無いかも
0354デフォルトの名無しさん
2017/03/03(金) 08:56:05.96ID:LqKyLlg1キーワードが改行を含まないのであれば
行ごとにreplace処理して文字列の統合だけstringbuilderを使えばこれだけで十分な速度が出ると思われる
(1行300文字程度と想定)
とかね
僕のカコイイスペシャルエディタでも作らない限りはフォーマット自体に特有の癖があるもんで
大抵の場合は独自の解決方法を考えたほうが早い
0355デフォルトの名無しさん
2017/03/03(金) 09:35:42.12ID:velk9AIH0356デフォルトの名無しさん
2017/03/03(金) 13:45:46.60ID:hf3TFoOqUNIXのShellのコマンド解析の実装がそんな感じ。
ただしスイッチ文の嵐だが(一文字目がCならCPを検査とか・・・
0357デフォルトの名無しさん
2017/03/03(金) 15:59:24.43ID:GTe30Tvn1ファイルの文字数がやたら少ないし何の目的か全くわからんかった
>>346,352がアフィ本人だね
0358デフォルトの名無しさん
2017/03/03(金) 16:00:23.77ID:GTe30Tvn>>342,346,352がアフィ本人
0359デフォルトの名無しさん
2017/03/03(金) 16:00:55.70ID:oAXP4RlZアホの子なの?
0360デフォルトの名無しさん
2017/03/03(金) 16:02:40.13ID:nP8cPyWm0361デフォルトの名無しさん
2017/03/03(金) 16:54:07.87ID:Loi48FLt0362デフォルトの名無しさん
2017/03/03(金) 17:00:38.87ID:nP8cPyWm0363デフォルトの名無しさん
2017/03/03(金) 19:35:06.90ID:MASUg06L0364デフォルトの名無しさん
2017/03/04(土) 00:57:57.14ID:V1fO2YUM馬鹿かこいつ。
0365デフォルトの名無しさん
2017/03/06(月) 15:15:15.66ID:c2C1QaOD実装しないだけだ(´・ω・`)
0366デフォルトの名無しさん
2017/03/06(月) 16:53:48.94ID:HdaZCaDT(´・ω・`).Dispose();
0367デフォルトの名無しさん
2017/03/06(月) 17:04:44.11ID:gswSb9xJthrow new GenjyuminException("お兄ちゃん僕を消さないで");
}
0368デフォルトの名無しさん
2017/03/06(月) 18:04:17.43ID:fLI2L2/vif((´・ω・`)==null)break;
}
これでどや、消えるまで永久に彷徨え
0369デフォルトの名無しさん
2017/03/06(月) 18:06:58.06ID:SM9wIIjZこういうのエラーになっちゃうんだけど、ならないのあるかな
0370デフォルトの名無しさん
2017/03/06(月) 18:10:04.79ID:gswSb9xJとうふさんをすころう🙋
0371デフォルトの名無しさん
2017/03/08(水) 07:21:50.44ID:0djAud0F使い始めてデータエンティティの設計を
意識するようになったのですが
論理ER図とクラス図がほとんど同じ
ようなエンティティになるのは
良いのでしょうか?
使ってる言語がC#なだけで
OOPの話になっているみたいで
恐縮ですが
0372デフォルトの名無しさん
2017/03/08(水) 07:57:43.96ID:j5hWWAogオブジェクト指向原理主義的に言うなら、最初にデータ設計ありきで作ったのが間違い
DB構造はオブジェクトを抽出した上でその永続化層として結果的に導出されるもの
その結果、テーブル構成がクラスと一対一になるのはおかしくはない
0373デフォルトの名無しさん
2017/03/08(水) 09:10:06.96ID:4zQ1zZR+>論理ER図とクラス図がほとんど同じ
>ようなエンティティになるのは
それをEFと言うんじゃないか?
殆ど同じじゃなく完全一致するんじゃないの?
0374デフォルトの名無しさん
2017/03/08(水) 11:04:45.08ID:WDLIW5bb皆さんはどうやって解決してますか?
0375デフォルトの名無しさん
2017/03/08(水) 11:21:49.05ID:j5hWWAogメソッドやクラスを適切に使って使い回せばそんなことにはならない
0376デフォルトの名無しさん
2017/03/08(水) 12:38:38.92ID:xVFA2xmi適切とは?
0377デフォルトの名無しさん
2017/03/08(水) 12:46:41.42ID:FTYppI6w例えばこうしろってだけでしょ
method(0); method(1); method(2); method(3);・・・method(x);
↓
for (int i =0; i <= x; i++) method(i);
ただいくらそうしたって作るものによっては定形だらけになるからな。そんなの気にするなとしか言えん
0378デフォルトの名無しさん
2017/03/08(水) 13:31:44.38ID:WDLIW5bbそれに、クラスとリターン、ラベル貼るから一行より長くなるんです
0379デフォルトの名無しさん
2017/03/08(水) 14:05:18.27ID:pm5pCz2zEDM理解してる?
0380デフォルトの名無しさん
2017/03/08(水) 14:35:54.93ID:jFDZ8cwhリアルでカードゲームやボードゲーム作ってゲームマーケットで売ろう
個人利用、商用利用も可の198,381 個の無料ベクター画像
http://jp.freepik.com/popular-vectors
オシャレ感をプラスできる手書きのアイコン50選
http://blog.nest-online.jp/27240
無料素材:ヴィンテージ感がおしゃれ!デザインソフトのツールアイコン49個セット
http://switch-box.net/free-resources-vintage-design-icons.html
無料素材:魔法陣の文様が描けるユニークな英語フリーフォント「MagicRing」
http://switch-box.net/free-font-magic-ring.html
ねくらファンタジーマップチップ素材集
http://piposozai.blog76.fc2.com/blog-entry-500.html
ひぽやマップチップ
http://piposozai.blog76.fc2.com/blog-entry-485.html
クオリティの高いゲーム用のモンスター素材画像が手に入るフリー素材サイト5つ
https://agency-star.com/freelance/articles/117/
ファンタジー世界地図を簡単に作れる「Inkarnate Worlds」をゲーム制作に活用しよう
http://www.moguragames.com/entry/inkarnate-worlds-indiegame-dev/
QRコード・クトゥルフ神話・24世紀などユニークすぎるデザインてんこ盛りのサイコロ「Dice Empire」レビュー
http://gigazine.net/news/20150313-dice-empire/
駆け出し奮闘記「ゲームチップ・他小物類の作り方」
http://yuofc2.blog72.fc2.com/blog-entry-233.html
0381デフォルトの名無しさん
2017/03/08(水) 16:48:47.00ID:EwGirieAhttps://www.ibm.com/developerworks/jp/linux/library/l-mono/
>実際、作成された実行可能ファイルを別のシステム、おそらくWindowsが稼動しているシステムにコピーして、そこでそのまま実行することができます。
Linuxで動くexeファイルがwindowsでもそのまま動くのはなぜですか?
本来、実行可能形式に互換性はありませんよね?
Javaだと.jarファイルでjavaが関連付けられてるからどこでも動作するというのは分かるんですが
0382デフォルトの名無しさん
2017/03/08(水) 17:05:53.57ID:FTYppI6wjavascripはテキストファイルなのに実行できるってのと同じで、exeという拡張子だけど中身はスクリプトって考えりゃいい
linux側は「mono example.exe」のように実行するのはexeでなくmonoでしょ
0383デフォルトの名無しさん
2017/03/08(水) 17:10:53.01ID:CceDL3fbLinuxはexeが実行ファイルという訳でもなし、mcsがPE互換でも吐いてるんじゃない?
C#はそもそも中間言語にコンパイルされるし、.NET Framework(あるいは互換ランタイム)を通して
色々な操作を行うので、DllImportとか除けばコード部分はプラットフォーム依存にはならない、Javaと一緒
0384デフォルトの名無しさん
2017/03/08(水) 17:41:17.11ID:4q4g4kgyやはりそう思いますよね
自分もデータエンティティと
クラス図が一致してしまって
アンチパターンしてないか
不安になったもので
クラス図要らないじゃん
てことになって良いのかなと
0385デフォルトの名無しさん
2017/03/08(水) 17:56:23.47ID:EwGirieAわかりました
linuxでもx window systemとかGUIシステムで
拡張子とプログラムの関連付けがあるみたいだけど
.exeをmonoに関連付けるのは少し疑問です
.jarみたいな固有拡張子じゃないので
windowsだと関連付け関係無く実行可能形式として動くんだろうけど
他のOSでは特定のプログラムから起動しなければならないというのが
非対称的でクロスプラットフォーム感欠けてるような気がします
0386デフォルトの名無しさん
2017/03/08(水) 18:12:34.14ID:ZazPDLJU特定のプログラムでコンパイルしないと動かないぞ
0387デフォルトの名無しさん
2017/03/08(水) 18:13:37.64ID:NpQQdkRqクロスプラットフォームにこだわるのならC#使わない方がいいだろ
>>383に書いてあるようにDllImportとか入っていたらどうしようもないんだから
0388デフォルトの名無しさん
2017/03/08(水) 20:03:39.84ID:VZtOnmtcビジネスロジックはほとんどSQLとストアドに書かれ
ホスト言語はデータセットをUIとバインドするだけ
マイクロソフトは業界の現実を見据えたフレームワークを提供してほしい
0389デフォルトの名無しさん
2017/03/08(水) 20:08:18.13ID:jS0zQn/F0390デフォルトの名無しさん
2017/03/08(水) 20:25:11.68ID:q0ZuMA54品質を上げるために
誰だよJavaオワコンとか言ってたの
Javaつよすぎんだろ
0391デフォルトの名無しさん
2017/03/08(水) 20:37:42.27ID:WDLIW5bb0392デフォルトの名無しさん
2017/03/08(水) 20:43:44.50ID:YCUi9zWw実際Javaは周辺技術はすごい
世界中の叡智が結集して糞を料理し、なんとか食えるものにしてる
0393デフォルトの名無しさん
2017/03/08(水) 20:50:23.47ID:YUr8l1RF0394デフォルトの名無しさん
2017/03/08(水) 21:09:03.23ID:psTqZ+Sc0395デフォルトの名無しさん
2017/03/08(水) 21:32:29.32ID:U5noIHdNgolangもgoogleだから不安がつきまとう
swiftもappleだから数年後の未来も予測出来ない
でも不思議とc#とmsの場合はあんまそういう不安が無い
0396デフォルトの名無しさん
2017/03/08(水) 21:39:55.81ID:Uljnsbub>ビジネスロジックはほとんどSQLとストアドに書かれ
最適化のためにしかたなくストアド化することはあっても
ビジネスロジックまるごととかあるんだね
おいたわしゅう
0397デフォルトの名無しさん
2017/03/08(水) 21:49:14.72ID:YUr8l1RFJavaと同じ設計をしたいならJavaを使えばいい。
0398デフォルトの名無しさん
2017/03/08(水) 21:51:54.89ID:MEKWLPl80399デフォルトの名無しさん
2017/03/08(水) 22:28:25.34ID:gllfe4Ss大人の事情。
0400デフォルトの名無しさん
2017/03/08(水) 23:15:48.59ID:nWki5I6GいやJavaが使われるような分野ならJava(やその周辺のライブラリ類)は糞速い
クライアントじゃビチグソだが
0401デフォルトの名無しさん
2017/03/08(水) 23:21:37.62ID:YUr8l1RF0402デフォルトの名無しさん
2017/03/08(水) 23:31:16.51ID:RgWWdtUJOracleにはJavaを伸ばすほどの能力はない。
環境の互換性に固執した結果、エコシステムがブラッシュアップされたのならそれでOK。
あとはC#で実験済みの便利機能を順に採り入れていけばいい。
C#がJavaに滅ぼされない為には数歩先を走り続けるしかない。
そのうちにJavaと同レベルのエコシステムが揃えられればJavaを食えるかもしれないが、
これはかなり厳しいとは思う。
0403デフォルトの名無しさん
2017/03/09(木) 00:10:57.40ID:x6aOWZGA今Javaの一番メジャーなパッケージマネージャって何?
rubygemsやnpmみたいなのないって聞いたら
Mavenでpom.xmlって言われて愕然としたことがある
0404デフォルトの名無しさん
2017/03/09(木) 00:43:02.76ID:zrZoqbypMavenで用は足りるし、LLっぽいのがお好みならGradleも人気
0405デフォルトの名無しさん
2017/03/09(木) 07:33:43.82ID:i1kRuTOPEFって何がいいの?
そんなの使わなくてもsql実行すればいいんじゃないの?
0406デフォルトの名無しさん
2017/03/09(木) 19:18:10.50ID:NWFSmelLORMでググれ
0407デフォルトの名無しさん
2017/03/09(木) 19:27:05.21ID:kp/XS3en業務運営リスク管理
sqlを文字ではなくオペレーションとして記述できるからsqlコマンド記述ミスによるバグやsqlインジェクションに強くなり
リスク回避に繋がるソース運営や管理ができる
0408デフォルトの名無しさん
2017/03/09(木) 19:28:46.08ID:ekX4ZlFqそんなの使わなくてもアセンブラ使えばいいんじゃないの?
35年前の会話
0409デフォルトの名無しさん
2017/03/09(木) 19:38:38.06ID:6OW1VF+t0410デフォルトの名無しさん
2017/03/09(木) 19:39:54.78ID:NWFSmelL使う側の頭の良し悪しってことかな
0411デフォルトの名無しさん
2017/03/09(木) 19:43:58.45ID:6OW1VF+t0412デフォルトの名無しさん
2017/03/09(木) 19:45:09.07ID:NWFSmelL具体的に
0413デフォルトの名無しさん
2017/03/09(木) 20:12:05.29ID:J4siqdXVまっさらなDB扱う機会なんてそうそうないし
0414デフォルトの名無しさん
2017/03/09(木) 21:56:54.03ID:i1kRuTOPsql記述ミスしなければいいだろ。
0415デフォルトの名無しさん
2017/03/09(木) 22:09:20.08ID:ZZ1gzprq既存DBからのコードファースト
0416デフォルトの名無しさん
2017/03/09(木) 22:09:48.58ID:GqwkUUnWばーか
0417デフォルトの名無しさん
2017/03/09(木) 22:25:30.67ID:FW6HepzMそんな根性論・精神論的なものでミスは無くならないよ
0418デフォルトの名無しさん
2017/03/09(木) 22:38:08.68ID:i1kRuTOPプログラムのミスを無くすのも
sqlのミスを無くすのも同じだろ。
0419デフォルトの名無しさん
2017/03/09(木) 22:45:19.50ID:mybEc7J10420デフォルトの名無しさん
2017/03/09(木) 23:05:42.43ID:ZZ1gzprq0421デフォルトの名無しさん
2017/03/09(木) 23:06:17.34ID:ojqe9dcn具体的に
■ このスレッドは過去ログ倉庫に格納されています