ふらっと C#,C♯,C#(初心者用) Part141
レス数が950を超えています。1000を超えると書き込みができなくなります。
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 一般的な対策はありますか?
ユーザーに処理を放置せず、すぐ完了させてくれとかいうしかないですか?
自分はプログラマーでもないので詳しくなてすみません。 入力時にタイムアウト、ってなんでそうなるの?
入力を促されていることにユーザーが気がつかないのか、ユーザーがいい加減でほっとく人が多いのか。
前者なら、
・画面以外でユーザーに入力を促す仕組みを作る
- 決まった音を鳴らしてみる
- メール等で通知してみる
・ユーザーの入力が遅いのであれば、入力を保存してタイムアウト後に画面を開く?などした際にも前回の入力値を復元してあげて二度手間を減らしてあげる
後者なら、
・教育する
などがあるんじゃないかと思うんだけど、エスパーはたいてい外れるので、もうちょっと状況を整理してから聞いてみるのがいいんじゃないかと。 ありがとうございます。
>ユーザーの入力が遅いのであれば、入力を保存して
ローカル環境に入力途中のデータを保存するようにしてもらうという意味でしょうか バックグラウンドで定期的に無意味なselectクエリを発行すればいいよ ヘルメット開発しろ
早く入力しないと高圧電流が流れる仕組みだ - 照明を落として赤いパトランプ点灯
- SF映画で自爆装置が作動した時みたいな警報音を鳴らす
- 当然プシューという音とともにスモークを噴出させることも忘れずに そもそも何がタイムアウトしてるんだ?
真面目な話はそれからだ
まあ、設計が悪いと思うけど コネクション開きっぱなしでユーザーにフォーム入力求めてると予想。 >> 894
それっぽい場合はどのように処理をすればいいのでしょうか 1.My.settingというものに書き込んでおけば呼び出すことが出来る
2.テーブルからデータをSELECTして画面に表示したら、Oracleとの接続を切って
画面の更新ボタンを押す際にOracleと接続すれば、タイムアウトすることはない
1.2.のような理解で正しいでしょうか。 1.My.settingというものに書き込んでおけば呼び出すことが出来る
2.テーブルからデータをSELECTして画面に表示したら、Oracleとの接続を切って
画面の更新ボタンを押す際にOracleと接続すれば、タイムアウトすることはない
1.2.のような理解で正しいでしょうか。 何のタイムアウトか分からない
何でタイムアウトしてるのか分からない
この状態でどうすればいいか話しても無駄なので
まず上の2つを明らかにしないと >>897
1.はとりあえず関係ない
2.は改善する可能性はある
Oracleとの接続ってコネクション開いてるだけでもタイムアウトするのか?
タイムアウトしたといってる状況とエラーメッセージとか晒せ そもそも、なんで「プログラマーじゃない」って言っている ID:n+WfHqnB が改善案を求めているのかが謎 職業的なプログラマーじゃないけどちょっとは齧ってるからやらされてるって感じじゃなのかね データベースついでに教えて欲しいんだけどさ
内蔵のSQLiteって、あれって本家のSQLiteみたいにWALを吐かせることってできないの? 「なんか舐められてるからここらで一発英語連発しとくか」 データベースとの接続を、したり切ったりするようなものは、見たことない。
普通、ずっと接続してる
テストでは接続を切って、始めからやり直すけど
本番環境で接続処理をやり直していたら、遅くて話にならない。
ユーザー認証とか、接続の初期化処理から始めるわけだから >>907
それをやってないアプリケーションの可能性が高いよね 普通そこら辺アーケードゲームみたいに
カードをピッで暗所番号入力とか
銀行ATMとかもさ、入力遅かったら
カウントダウンで自動ログオフするんじゃないの? どんな普通か知らんけど、
MySQLにアクセスしてテーブルの中身を表示して変更するアプリを自作したときのことを、いろいろ思い出した。
データベースのユーザーidとパスワードがあるわけだけど、それはアプリのセッティングに保存できるけど
毎回アプリ起動時に入力する。
データベースにconnectして、ユーザー操作を待つ。selectやupdateが必要になったとき、そのsql文を実行する。
connectionがある間は何度でも繰り返すことができる。
アプリ終了時にはconnectionをcloseする。
何だけど、これだとconnectionが使われない時間が長くなると、接続が切れる。タイムアウトするというやつ。
なのでバックグラウンドでconnectionを維持する(もしタイムアウトしたら、次に必要な時に自動でopenするとか、タイムアウトしないように、ダミーで何かする)ライブラリ機能が大抵はある。
これをコネクションプールと言う。
件のアプリは、そのあたりに問題を抱えているのではないか。
最初からコネクションプールがうまく使えていないのか、データベースかライブラリのバージョンアップでタイムアウトの設定が変わったのか コネクションプーリングはタイムアウト対策じゃねえよ オープンしただけのアイドル状態のコネクションがタイムアウトするならプーリング関係ない
プールに戻さないでタイムアウトするんだからな
まず何がタイムアウトしてるのかはっきりさせんと話にならん
まあどうせトランザクション開始してからユーザ入力待ってるんだろうけど コネクションプールは、大量のアクセスに対して、事前に起動しておくもの
それで接続が速くなる 普通のWebアプリはリクエスト/レスポンスのたびに毎回コネクションopen/closeしてる
タイムアウトの件とは関係ないがコネクションプーリングは
DBサーバーを使う場合の基本なのでちゃんと押さえておいたほうがいいyo try~catch~finallyで質問です。
finallyを使うケース教えて下さい。 プログラム板のスレッドの中で記述されていて
catchブロックの中でreturn文などにより処理が
スレッドの呼び出し元へ戻ってしまう場合には
try文の次に記述されたレスは実行されません。
finallyブロックを使った場合はcatchブロックの中でreturn文などが実行された場合でも必ず実行されます。
(ただしSystem.exit(0)によってプログラムが終了した場合を除きます)。 finallyを使った記憶がないな
IDisposableを正しく実装してusingするのがC#流 async/awaitで排他制御やる時にSemaphoreを使うけど、開放する時にfinally使うのが一般的 >>920 は間違ってはいないだろ
偏ってるかも知れないが
using は構文糖衣 usingっていまいち分かってないんだけど、例外が起きたときにも破棄されるの? using変数宣言とref structで無駄なヒープ確保をせずにDisposeを呼べるようになったのは良いね
ネイティブ周りで重宝する ASP.Net Coreで使用しているデータベースを、他の種類のデータベースに移行する手段があれば教えてください
具体的には、SQLServer Expressから月500円の激安マネージドMariaDBに乗り換えたいんです >>928
やれるかどうかじゃない
やるかどうかだ 月500円の激安マネージドMariaDBに問い合わせろ MariaDBで動かして見て、どんな感じのテーブルが作られるか自分で確認して、手動で移行するしかないのかな? EFとか使ってれば差異はある程度吸収してくれるけど、
生SQLベッタベタに書いてたら厳しいだろうな まあ無理そうだけど、どうやるんかな
なんか手段が用意されてないんだったら難しいわ あまりに頭が悪そうでコメントすると泥沼化しそう
こんなの雇ってるクソ会社あるのか そのソフトはデータベースを変更できるように作られているのだろうか
多分なってないのでソースコードレベルで変更が必要なのではないだろうか Ruby on Rails では、sqlite, postgresql, mysql の3大DB を、
単一のRuby ファイルで定義できる
それを実行したら、各DB の型に合わせて、表が作られる。
表の型などを抽象化してる それだと最大公約数になるからDBのポテンシャルを発揮できない その代わり、個別のDB の特別な機能を使うと、可搬性が無くなる
どちらを選ぶか、難しい >>944
別言語だけど Railsでは、そういう実装になってて
C#でも同様の実装になっていればデータベースを替えるのも簡単
という話だとおもうけど、そのアプリがMS SQL ServerとMariaDBと
どっちでも動作するようになっているのなら、インストールし直せば
OKなんじゃないかな このruby荒らしは実際に使ったこともないただの頭の悪い人とバレたな >>946
インストールし直せばってなんじゃい
ORM使ってDBMSに依存したSQLを書いてなければ
設定変更でアプリの修正は終わるって話
それはRails(ActiveRecord)でもEF Coreでも同じ
データ移行は別途必要 将来的にやるかどうかもわからないRDB移行を楽にするためのものというよりは
システム管理者がバックエンドのストレージを選べるメリットのほうが価値としては大きい using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int[,] ma = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
int[,] mb = new int[,] { { 6, 3, 4 }, { 5, 1, 2 } };
int[,] mc = new int[2, 3];
for (int i = 0; i < 2; i++)
{
for (int j = 0; i < 3; j++)
mc[i, j] = ma[i, j] + mb[i, j];
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
Console.Write(string.Format("{000}", mc[i, j]));
}
}
}
}
System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
というエラーが起きます
配列のレンジをはみ出してはいないと思うのですが、どう直したらいいんでしょうか 2番目のforの条件式がjじゃなくてiになってるよ ありがとうございました..
全然気づかなかったです
勉強法がわからないんで手持ちのC言語の参考書の例題をC#で一つづつ書き直してるところです >>953
iとjの間違いじゃ?
×for (int j = 0; i < 3; j++)
○for (int j = 0; j < 3; j++)
やりたい事と合ってるかどうか知らんが
Console.Write(string.Format("{000}", mc[i, j]));
757968で、エラーなしで出力されます。 実行確認してたら亀レスだったorz
CとC#は別物では?新しく買い直した方が良いのでは? >>953
linqなら1ステップで行けそうだな。
ビバLINQ >>957
vs使ってないの?エラーの箇所すぐわかるじゃん 新・標準プログラマーズライブラリ なるほどなっとく C#入門
この本注文したんですがプライムデーで混んでるのか全然届かなくて。
年内にある程度使えるようになりたい >>961
今回エラーが出なかったんですよ
実行中に例外で止まるんですが止まる行が
mc[i, j] = ma[i, j] + mb[i, j];
の行でした >>964
馬鹿じゃないお前はRuby使ってろ
馬鹿 >>965
ID:kSQNYYOMの馬鹿さ加減がわからない馬鹿 >>962
本を読むよりDOBON.NETを読んだりしながら適当なツール自分で作った方が上達は早いぞ
そして掲示板で聞く前にVSのデバッガを使いこなしたり自分で何でもググって調べる癖をつけるようにした方がいい
ネットで質問するのはググって5分で見つかることを回答してもらうまでずっと待つということだから効率が悪すぎる 俺は本「も」読むのがいいと思う
ネットの情報でつまみ食いばかりしてると
流れが身につかなくて何も作れないままってなる鈍臭いやつもいるから
そうでない才気あふれる人間なら何やっててもすごくなるけど ネットの情報は新旧入り乱れてるからことが多いから前提となる知識のない初心者は混乱しがち >>962
注文した後に言うのもアレだが、C#は各言語の中で最も日本語WEBサイトが充実してるから本は不要なんだけどな
上でも言われてるDOBON.NETやufcpp.netの2サイトだけで上級者レベルまで学べる そうかなあ
今時はC#も主流はWeb開発なわけだけど、ASP.NET Coreを学べる日本語のサイトなんてMS公式以外にはほとんど無いぞ 今の.NET界隈はMSが米で主流な内製開発の軽いノリに迎合しすぎて、もはやジャップSIには全く適さない代物になってしまってる そもそもmsのドキュメントの機械翻訳のレベルが低すぎるっていう 昔と違って今は何でもかんでも日本語訳される時代じゃないからね
英語で読めない人は取り残されるだけ >>978
「昔と違って今は何でもかんでも日本語訳される時代じゃない」
まるで昔は何でも日本語訳されていたかのような スキあればマウンティング。
オートマウンティングデーモンか switch文も式になるけど、何でもかんでも式になる方がいいことなのか? いいかどうかはともかく流行りではある
ついていけないなら引退するしかない レス数が950を超えています。1000を超えると書き込みができなくなります。