20190615

 ミリシタのこと全然わかってなくて、MV観たことなくて観た。虹色レター、未送信レターのところずっと「嘘を知ってた」だと思ってた。野々原茜さんのショートパンツ衣装めちゃくちゃよくないですか。はい。

 出かけて地下鉄から地上に出たら大雨で困った。そのまま帰ってシャワー浴びたらやんでた。

 無線のマウスと有線のマウスのどっちがいいかわからなかったので両方買ってきた。

 梅酒やってみようかと思ったけど、雨なのでやめて普通に梅酒買って飲んでた。関西とか四国とか梅雨入りまだなんですね。

 2000万円貯めるの大変じゃないですか。

20190611

 SQLのことはまだ何も触ってないから相変わらずわからないけど、いくつか思い違いをしていた点は解決した?気がした。まず無理にパネルに全部載せしなくても良さそうだということ。フォームを生成して、消して同時に生成する感じでいいっぽい。ちゃんとオブジェクト指向で分けてクラスとか作れよって感じ。だいたいにおいて全部ガーッと作ってからクラスを切り出したりメソッドにバラしたりしてたけど、よくない気がする。あとコメントが舐めプすぎたのでちゃんと人に見られることを意識して書きます。すみません。

 IDとパスのテーブルを作って、IDと名前とその他情報のテーブルとをくっつける形でいいのか?IDとパスでログイン通ったら、そのIDを持って情報テーブルに検索かけて、情報テーブルから任意の情報を取り出すって感じか?

 まずはどこかにあるデータベースと接続しないといけない。本当はその前にどこかにデータベースをちゃんと作って置かないといけないけど。接続はこういうのやんな。

string str = @"Data Source=192.168.0.1;Initial Catalog=(Database名);Connect Timeout=60;Persist Security Info=True;
SqlConnection con = new SqlConnection(str);
con.Open();

最初の方は何となくわかってきたけど、これ以降のコマンドとか戻り値が何なのかよくわからない。SqlDataReaderとか使えばいいのか。あー?

 具体的に、ログイン情報データベースとの接続を確立して、入力された文字列とデータベースの文字列を比較。比較するためにデータベースの文字をforeachみたいな形で取り出し続けて、もしログインIDと一致したらパスを取得して比較。パスも一致してたら画面遷移する。

"select id,pass from tablename"が実行文で

SqlDataReader sdr = cmd.ExecuteReader();

while(sdr.Read())
{

    //ここで入力文字列とパスを比較して...
}

この一連の命令自体は、何か入力されて明らかに偽の条件(入力文が空とか、IDの長さが決まっていたらその範囲に一致しないものとか)であれば弾いて、そのあと回せばいい?多分クリックされたら始まる、で。

 であれば、datagridviewは据え置きではなく、つど生成してしまった方が楽なのか。

 ログインしたら、さっきのようにExecuteReader()回して、IDと一致した行の個人情報をどんどん作ってListにでもためておく。で、その行を元にdatagridviewを作る。

 

 ちなみに出勤退勤何だけど今のまま行くと、一度作ったデータを消去できるコマンドがない。出勤も退勤も編集可能になるはずなので、どちらも空にされた場合はその行を削除するようにすればいいかな。更新処理後、出勤と退勤のセルがnullな列は削除。10日出勤の12日退勤のパターンは退勤登録時に一番最近の出勤のみ登録されている行に登録する。そして、出勤日と退勤日が異なる場合、退勤日の0時から退勤登録時間で一行作って、退勤日時をその前の日の24時(23:59か?)にする、また異なるかチェックする。異なればその日の時からで作って退勤日時をという形。出勤日時と退勤日時が一致すれば終わり。何でIDと出勤した日の二つをキーとして出勤退勤テーブルになるのか?あと休憩時間も登録してるので休憩時間も。これ、元の入力はnullにしておいて、1.データベースから読み込んできて、2.出勤時と退勤時の時差から勤務時間を計算して、その結果から休憩時間を引く、3.データベースの勤務時間にnullからその時差を上書きする。これが出勤退勤の時間の変更と更新反映だと、入力した時間が1.出勤時より後か(退勤時より前か)という点をクリアする、2.あーこれってセルが変更されたものなのかって知れるの?まあいいや。入力した時間から再度計算。出勤か退勤時間を一つだけいじった場合は、別段問題ない。同時に出勤退勤いじった場合も多分そんなに変わらない。ただ、休憩時間が長すぎて勤務時間がマイナスになるのは発生しえるな。勤務時間がマイナスになったら警告出して変更させない。

 あとは勤務日が変更されるのも面倒。12-22時の出勤を12-26時みたいにしたい時、26時は入力させたくないと思う。多分そういうのありにしたら144時とかもありなのか?何でその場合はどうする?

 加えて、出勤したら出勤が登録されてしまうのでその日に100回出勤押したら100回出勤してることになる。これは退勤が押されてるかは関係なく。なので退勤なしで同日の出勤を押すのはダメよするか、押されても無視。修正で同日に揃えてくるとかのキ印してきたらどうしよ。その前に、退勤して同日出勤は本当に同日出勤ぽいので再度登録して、退勤を待つ。退勤が登録された時に、さっきの日またぎを勘案して処理していくんだから、その処理の中で、同日の出勤が二つあれば、二つの出勤のうち早い方を出勤時間にして遅い方を退勤時間にする。最初の退勤時間からあとの出勤時間までを休憩時間に加算する。んで出勤退勤時間をnullにすればさっきので片一方の行は消えるはず。これで処理としてはいい感じかな?

 ただ修正された時がめんどくさそう。修正して同日に揃えられたら9-19と12-20が合体して9-20の休憩時間が、マイナス?になるとかあり得る。それをどう弾くか。重なっている時間がないかをチェックすればいいのか。出勤記録aと出勤記録bが同日にさせられた。というか勤務した日を変更するってどういう事態何だよ。まあ。そしたら出勤時間を比較するaの方が早かった、であればaの退勤時間よりbの出勤時間の方が遅いか?であれば一応操作は可能とする。かな?

 日にちの修正は面倒なので一旦無視。

 DaraGridViewの操作もわかってないし何もわからん。何もわからん

 

 野々原茜さんのアナザー衣装を手に入れたので嬉しい。1000位以内だったけど100位の得点とか見てるとまともに生活しながらではないだろうと思う。

20190610

 SQLのテーブルづくりの考え方がよくわからない。文字数の制限とかは後から変更の可能性があるから少し多めにとってソフトで制限かける方が望ましいのか?あとIDとパスは数値と文字列でいいのか?どっちも文字列の方がいい?あとは時間aと時間b、その時差cがある時、もしかしてcは列として作る必要ない?SQLデータの行取得とかできるの?一文ごとに取得して","でバラせるとかならかなり楽そうだけど。あー違うな。列を指定して行の条件に合致したものをお出しするって感じでしたっけ?それなら列指定の全文にして置いて、一意な値にぶつかったら、その値をキーにしてパスの列からその値に対応するパスを取り出して確認すればいいって具合です?

 援助交際してる人の数パーセントは、援助がしたくて金渡してるってのもいると思う。キモいけど。

 アラジンの予習でアニメのアラジンを観ました。魔法の絨毯がかわいい。驚異の大宇宙パワー、スーパー牛さんパワー思い出した。

 C→C#→も〜っと!C→Cドッカ〜ン!、すでに100回言われてた。

20190609

 今日は読もうと思っていた本も読まずに黙々とミリシタしてた。おかげで14万ポイントくらい稼いで17万ポイントくらいになった。野々原茜さんへの誠意です。足りなさそうなら明日足す。

 昨日何となく日本橋行って本当にTihnk Pad X230買ってきた。タッチパッドの挙動がよくわからない以外問題ないと思う。Win10でSSD換装済みだし。よく考えたらWindows機を手に入れたので今までできなかったゲームとかできますね。

 

 洗濯機が来た。洗濯機便利。椅子がなく椅子の代わりに踏み台を導入して踏み台に座ってる。次は炊飯器買います。ベッドも欲しいけどしばらくは敷布団オンリーな気がする。枕だけは買った。ノートPCより先に買うべきものがたくさんあるのでは。

20190607

 来週やる課題みたいなの聞いたけど、よくわかってない。勤怠管理はまあわかる。誰がどこから何でアクセスするかがわからない。C#で書くならwindows  formってのか?と思ったけど、うちのMacじゃ書けないので面倒になってきた。ソフトの導入とかバージョンが云々みたいなの面倒ですよね。あとSQL Serverでってのも自宅で試すのが一手間なので面倒になってしまった。やる気の問題かもしれません。

 黙々と文法や思想を詰め込むことにして詰め込んでいます。

 中古のthink padとか買って触るか???日本橋行って3万円くらいでWin10入ってるの買えないかな。

20190605

 C#ちょっと読んでた。タプル型とか強い。構造体の引数なしコンストラクタが記述不可なのがよくわかってない。あー0初期化のためか?MyStruct mySt = newMyStruct(); はどういう?それとコンストラクタ用意するなら構造体のフィールドは全て初期化すること。これってthis()できるの?というかC#にthis()とかsuper()あるのか?なんかないっぽい。this.numとかは見た気がするけど。オブジェクトに初期値を与えて初期化できるの。なんかJavaほど継承とかインタフェースの実装とか書かなさそうな気配がある。パッケージに相当する名前空間もそんなに切り分けてなさそうだし。プロパティは便利というか楽になるってのがわかったがインデクサなに。あと構造体にもプロパティ持てるのか。Javaでアホみたいにsetterとgetter書いてたら悲しくなってきた。#regionてメソッドに切り出した方がよくない?構造体の中に構造体置けるの。派生クラス、アセンブリなに。classの初期化{}ってある?あーコンストラクタと同時に初期化のイニシャライザ{}を渡すことが可能って感じなのか。じゃあnewするクラス内のフィールドがprivateとかでもいける、ぽい?コンストラクタのデフォルト値の設定とかメソッドのオプション引数便利そう。

 ビジネスで役立つ"哲学"思考方法、みたいな話をされてひたすら渋い顔してた。何が言いたいんだ。論理的思考や多角的なものの見方でよくないですか???

 近所の喫茶店が24時間営業でありがたい。ちょっとしたご飯も食べれて分煙

20190604

 イツナロウバのリリック、「朝から 朝まで (Ah) Summer day」だと思ってたら「朝から 朝まで 朝まで」だった。

 キッチンワゴンが欲しいんだけど行動範囲のニトリに売ってない。注文するか。

 敷布団しかないんですけど、敷布団カバーと枕とマットレスのうちどれが優先順位高いだろう。

 毎日QOL高めていこうと思ったけど、今日はたぶん初めて台湾まぜそば食べたくらいしかなかった。あとアイスにウイスキー垂らすのした。

 C#のoutとかちゃんと使えば便利そう。それはそうとC#って検索性低すぎませんか???