自分のブログ名

sheephumanのブログ

ひつじ好きな人間のブログ。

インスタント家計簿の更新(2020.6.25)

 

 

個人製作の家計簿アプリをアップデートしました。

 

 

 

 

使い方

 レシートの合計値を入力してEnterキーを押す たったこれだけです。

 「価格と内訳をクリア」をチェックすることにより、連続して入力することが可能です。

インスタント家計簿

 

 

レシート数枚程度なら、5分以内に入力ができます。

また、最後に開いたファイルは、次回起動時に自動的に再ロードされます。

 

 
入力項目を削除したい場合

f:id:sheephuman:20200625234507p:plain

  右クリックメニューから「選択行の削除」をクリックしてください。

 

その他

・DateTimePickerの日付はマウスホイールで変えられる

・入力履歴がドロップダウンリストに保存される。

 

 

ソース(修正版を上げましたので、こちらを使ってください)

 

 

 

www.youtube.com

 

 

変更点

今回は主にListBox周りの機能追加です。

 ・Shift+矢印キーで、上下の項目と入れ替えられるようにした。

 ・ctrlキーを押して項目を二つ選択 → Shitキーを押すと、2つの項目が入れ替わるようにした。

 ・項目をダブルクリックをするとTextBoxが表示され、直接編集が出来るようになった。  

   →Enterキーを押すか、Escapeキーを押す事で編集モードは解除されます。

 ・項目(種別)に対応

  ”-”が先頭にある文字列は選択できないようにしました。

 ・複数列表示に切り替えられるようになった

   →右クリックメニューの「表示切替」にて出来ます。

f:id:sheephuman:20200626111906p:plain

   

 

   ・軽微なバグの修正

   -ファイルを開くときのカレントディレクトリ設定

   -ファイルを開く→キャンセル時のnullチェック

   -「DateViewから開く」場合の最後に呼び出したファイルパスを保存

   

f:id:sheephuman:20200626112248p:plain

  グラフ上のコンボボックスの右クリックメニューです。

 

簡単な実演動画

 

www.youtube.com

 

 

反省点

 このアプリは私が無駄に長々としなくてもいい苦労しながら制作したもので、コード上の欠点が色々あります。

 ・一機能一クラスを無視した実装

 ・Partial Classを多用し過ぎ

 ・実装が複雑すぎ

 ・WinFormすぎ

 ・変数の命名がおかしい 

    →いつでも変えられるだろうと適当に書いている

 ・Version管理されていない

  などなどです。

 

 

 改変・再配布は自由です。 

 

 しかし、上記の欠点があるので、特に入力部分の実装は一から作った方が良いのではないかと思うところです。今はあまりにも大変なので(できなくはないけど割に合わない)、これで勘弁してください。

 

 

次回更新

 時間があったらDataGridView周りを弄りたいです。

 

家計簿アプリで記録した支出(17日間)

 

 

 

 自作の家計簿アプリ(C# WinForm製)で記録した支出です。

 

 

グラフはこのような感じ。

C#製家計簿

 

 

 

まだまだ多機能とは言えませんが、習慣化は出来ています。

当たり前ですが、20枚以上は溜めてしまうので、それほど入力は楽とは言えません。

4-5枚ならたぶん2-3分で終了です。

 

 

ソースと仕様

drive.google.com

・テキストボックス内で数値入力 → エンターで入力

・DataGridView上の右クリックメニューで選択行の削除ができます。(正しくはカーソル上の行の削除)

・保存したファイルからグラフ読み込み

・HTML出力(これは保存しなくても出来ます)

・入力履歴機能付き

 

 

 

 

 

 

レシート貯めるんじゃなくて記録を貯めろって話。

 

このめんどくさい作業のついでにバグチェックと、内部的な改良を進めてます。

 

今回はファイル名にピリオドが含まれていた場合、ファイルに保存しないように改良を施しておきました。 そうしないとグラフが読み込まなくなってしまうので。

 ※ソースにはまだ反映させてませんのでご注意ください。

 

 

◆HTML出力をしたもの◇

3014 業務スーパー 06月03日  
1266 業務スーパー 06月06日  
123 LAWSON 06月06日 焼き鳥丼
680 日高屋 06月06日  
110 ダイソー 06月08日  
823 maruhiro 06月08日  
980 自転車 06月08日 長期防錆剤
201 ベルク 06月08日  
211 セブンイレブン 06月08日  
5400 自転車 06月08日 後輪タイヤ チューブ
191 おかしのまちおか 06月09日  
100 セブンイレブン 06月09日  
95 welcia 06月09日  
210 郵送 06月09日  
704 業務スーパー 06月10日  
120 郵送 06月10日  
973 業務スーパー 06月11日  
500 目利きの銀次 06月11日  
191 業務スーパー 06月12日  
162 おかしのまちおか 06月12日  
522 おかしのまちおか 06月12日  
387 業務スーパー 06月13日  
1592 maruhiro 06月15日  
2440 業務スーパー 06月15日  
1648 業務スーパー 06月15日  
543 業務スーパー 06月16日  
660 すき屋 06月16日  
1980 雑貨 06月16日 ウォータージャグ
522 おかしのまちおか 06月16日  
432 ダイソー 06月16日  
794 すき屋 06月16日 超特盛
339 おかしのまちおか 06月20日  
5317 電気代 06月20日 192kwh(29日間)
3190 maruhiro 06月20日 ポーチ
142 セブンイレブン 06月20日  

 

 

 今回、割と衝動買いもしています。それは別にいいんだけど、電気代が高いのがちょっと気になる。扇風機買おうかな~。

 

 

アタシのC#勉強法(ソースコード移植法)1

 

 

 こんにちわ! ひつじ!人間です。

今日は羊さんならぬ女の子のフリでやるわ。

今回はアタシのC#勉強法を紹介するわ!

次回の記事
 
sheephuman.hatenablog.com



ちょっとメンドウだけど、難しいコードも理解できるようになるわ!

 

  

 

 


レイラ(ガッシュ)

レイラ(ガッシュ

   

www.amazon.co.jp

 

 

 

準備するもの

 ・Visual Studio(新しいもの)

 ・移植用のソースコード

www.codeproject.com

追記 DataGridViewのRedo Undoを実現するサンプルです。 割と中身が複雑です。

ツイート版



 

  見やすい?のでこちらでもいいわ!

 

やり方

1.Visual Studioを2つ分起動させる

2.外観をコピー

Ctrlを押しながら各コントロールをクリックすることで、全てのコントロールを選択状態に出来るのよ。

 

 

 

コピーして、張り付け。外観を似せるだけならそんなに時間はかからないわ。

〇ッキリ〇クスチャーね

 

 

 

3.メンバ変数の定義

 ここからいよいよ実装に入るわ。

まずは

  private Restaurant _dataobject;
  private Stack<Restaurant> _undostack;
  private Stack<Restaurant> _redostack;

f:id:sheephuman:20200612195105p:plain

を貼り付けるのよ。基礎的な構文さえ把握しておけば、丸暗記する必要もないわ。 

エラーが出てるけど、落ち着いて。これはclassが定義されてないから起きるerrorなの。 

ソリューションエクスプローラWindows FormApplication [数字]を右クリック

 f:id:sheephuman:20200612193742p:plain

 新しい項目 →classを追加f:id:sheephuman:20200612194331p:plain

ファイル名は任意のもので問題ないわ。 

その場合はclass名は変更しておく必要があるの。名前を変更したい箇所で右クリック「名前を変更」で書き換えればいいわ

 f:id:sheephuman:20200612194728p:plain

このやり方は覚えておくといろいろと便利よ。

一度errorを解消して紐づけてしまえば、今度はclass名と変数宣言の型名を一括で書き換えたりも出来るの

f:id:sheephuman:20200612195105p:plain

こんな感じね。別のファイルであっても問題なく適用されるわ。

4.class内部を実装する

ここからは駆け足よ。前と同じように、メンバ変数から貼り付けていき、エラーが出ているものと同名のclassを定義して、エラーを消していくの

f:id:sheephuman:20200612200247p:plain

赤い波線が出ているところにカーソルを合わせると、自動でリファクタリング出来るから、いずれかを選べばいいわ。今回は「class HealthScoreを生成する」を選んでおいたわ。

public event RestaurantChangedEventHandler Changed; のエラーはリファクタリング機能では直せないわね。オリジナルからコピペ実装するわ。

f:id:sheephuman:20200612200513p:plain

public delegate void RestaurantChangedEventHandler(object sender, RestaurantChangedEventArgs e);

この辺は覚えるために手打ちするのも良いかも知れないわね。まあ似たようなイベントを自分で組む方が覚えが早いんだけど

これを修正するためには、オリジナルの同じ個所を見て

f:id:sheephuman:20200612201337p:plain

右クリックメニュー→「定義へ移動」機能を利用するの。

ここから同じように実装作業をしていくわ。

RestaurantChangedEventArgsの大本は同名のclassがある事が分かったので、順次入れていくわ。

 public class RestaurantChangedEventArgs : EventArgs
    {//何らかの処理  } 

大事なのは、外堀から埋めることよ。一つ一つ丁寧にやっていかないと覚えないわ。

 

また同様にメンバ変数 → 実装と進んでいきましょう。次はメソッド定義ね

f:id:sheephuman:20200612202258p:plain

超めんどくさい

これはさっきのリファクタリング機能で自動生成したものよ。これにオリジナルからコピペするの

f:id:sheephuman:20200612202459p:plain

ここで大切なのは、コピペするだけじゃなく読んでいく事ね。処理の流れを頭の中に描いていくの。

f:id:sheephuman:20200612203415p:plain

エラーをリファクタリング機能で埋めたわ。自動生成のコードをちょっと手直しするだけで、数分で実装出来るわ。

こうやって、エラーを消しながら実装していく事で、理解を深めながら学ぶことが出来るわ。

f:id:sheephuman:20200612204750p:plain

とりあえず長くなったので今日はここまでね。ビルドは通るけど、実装はまだ殆ど空なので、何も出来ないわね。

ま、ここまで出来れば上出来だと思うわ。 ちなみに、アクセサリビリティ-public の設定も必要だったわ。

次回の記事
sheephuman.hatenablog.com

気になったツイート2

 

 

 

  気になったツイートを挙げます。

※諸事情で非公開になる事があります。

 

 

 

 

 

 

都会でのマッチング系は非常に有効。

 

https://twitter.com/ASD85676693/status/1249946836049088517

 

 ASDTwitterをやらない.... もちろんそういったものを全くやらないかというと、そうでもありません。

でも

 

・”嫌なツイート”も多くて過剰反応してしまう。

・自分の事を言われたように錯覚してしまう

 

という事が多く、精神衛生が保てないという事情もあります。

 

 

 海外の人とやり取りする

 

なかなか興味深いですね。

 

 このホセさんはこだわりが強いASD系で、古物を扱ってる人だったと思います。

 

 

 

走ってる絵の描き方

 

 たまに練習するときにいいかも。

 

 

 

特殊な素材。

 

 

 

記事はこちら

research-er.jp

 

自分が対象ではないメッセージに対する不快感

 

 

これって、彼女いない人に、趣味の合う婚活アプリの広告見せる系のヤツですね。

たしかにたまに不快になりますね。

 

 

 

英語論文の執筆を手伝うAI

 

 便利そうですね。

 

 

 

CSV読み込んでからPythonで書き出すと処理がめちゃくちゃ早くなる

  Pythonを一から理解するのが面倒くさいので、C#を土台にして理解しようと思っています。

 

 

虐待を受けると

 脳が委縮するらしい。

 

 

 命に嫌われている

  

www.nicovideo.jp

 アイルさんは韓国の方です。迷いがの曲に似てる。

 

 

 

大学とオンライン学習、どちらが学習効率が良いか

 

 さりげなく自分のです。大学に以外と投票されてて意外だったんですけどね。

 

 

女だったら

  男だったら微妙なんだろうけど、何となく男の方が渋いよね、こーいうの。

 

 

明かりがあると寝れないタイプ

  もう何とかしたんだろうけど、ちょっと難しいかな。

強力な両面粘着テープとか使ったかも。

 

 

 

厚労省自立支援医療制度の仕組みの図

 

 

 枠内に10,000円とか書いてあっても意味不明ですね。医療費を指している?

自分が低所得なのか中間所得なのかも、この図では分からないんじゃないですかね。

f:id:sheephuman:20200610223036p:plain

 

この人は奥さんがADHDだそうです。

本人は至って生きづらさなどは感じていないとのこと。

 

 

「苦しいなら助けを求めればいいのに」

  まあそんな単純な話ではないですからね。人に寄っかかていればいいという訳にもいかないし。今時は国や自治体の制度もびみょ~な感じで、申請しても拒絶されるなどのケースもあるようです。

 

 

ADHDの人はシェアハウスをしたがる 

 

 ADHDは盗みなどのトラブルもあるらしいです。

ADHD同士なら大丈夫なんですかね。

 

 

 

金融の仕事に必要な事

 

  以前もらったリプ。

ADHD中度、軽度知的障害だそうです。

 

 

 

NoCodeCamp プログラミングを使わないIT開発

 

 プログラミングを使わずに「Webサイト構築」「アプリ開発」をつくるサロン。

5,000円 /1ヶ月 まあ安いかな。やりたい事を手っ取り早く覚えるのにはいいかも。こういうのって相応の時間と労力も使うんですよね~ あんま軽く考えない方がいいです。

 

 

 

あとがき

 このようなツイートは割とあちこちに転がっていて、どうという事もないのですが、たまに興味深いものや、感じるものがあったりするので集めています。

まあ何かの役にも立つかも知れないしね。

 

blogやゲームの紹介なんかも気が向いたらやります。

 

インスタント家計簿のUp(リファクタリング)

 

 

 これまで気が向いたときに制作をしてきた家計簿アプリを更新しました。C#製でWinformです(古っ)。

今回はリファクタリング作業を中心とした作業を行い、内部の処理もいくつか見直しました。 あとはPartial classに分割したり、一部はclass化しました。

 

 

過去の苦闘と迷走の産物

C# 家計簿アプリの習作 ”Instant Expenses” コード集 - Instant Expenses

 

 

 

 挙動は、これまでよりも大幅に洗練されています。基本的な実装は変えてませんが。

インスタント家計簿

 

 

 

 ソースファイルを同梱してあります。

インスタント家計簿1.0.zip - Google ドライブ

 

ヴァージョン管理のやり方が分かりません。誰か教えてください.....

 

Twitter上の方に見てもらいましたが、起動できなかったとのことで、修正しました(20/6/9) お手数をおかけしました。

 

 

 

 

変更点

・設定保存の処理見直し

・設定をロードする処理の改良

 ┗最大化して終了しても反映されるようにした。

・開く・保存の処理と各種判定の見直しと改良

・メニューバーを再配置した

・グラフの縦・横切り替え処理を大幅に簡略化した

 

 

 

 

本当は機能追加を施してから上げたかったのですが、進捗がおそいんで。

自分から見ても、なんとか実用レベルまで漕ぎつけたと思います。

保存処理のバグとか調整するのが大変だった。

 

 

今は個人的にRedo Undo処理を実装するべく作業中です。

あとは「日付」の項にDatetimePickerを埋めたい。

なぜベストを尽くさないのか

 

 

 ※この記事は諸事情で非公開になる可能性があります。

 

冗長な前置き

 僕は今まで論破など存在しないと言ってきたが、実は嘘だ。どんな相手もたちどころに吹き飛ばしてしまう秘密の呪文を僕は知っている。 鏡の前に立ち、自分自身に向かってこう唱えるんだ。

 

 

尽 な
く ぜ
さ べ
な ス
い ト
の を
か   

 

 

 

 

 

↓広告 右が名作です。

 

 

 

 

 

 

 

概要

  Twitterでのやりとりですちなみにおねむさんには嫌われている....前にひつじ呼ばわりしたせいで

家庭教師で教えている子が受験対策の英語授業の飲み込みが悪くて悩んでいるという内容です。

変なオッサンが可愛い女の子に絡んできて、説教をぶつ....よくある光景です。

 

 

 

Twitterやりとり

なぜベストを尽くさないのか

 

 

 

 

 

 

 まあ一見して正論ではありますが、礼儀の欠片もなってないですね~ 

それに、自分にはもっと良い教え方が出来ないので、出来るだけの手を打とうというその姿勢こそ評価すべきだと思います~。

 

 

 年下だからと見下して偉ぶる....これでは老害と呼ばれても仕方がないのではないでしょうか。ちなみに、面白そうなオッサンだったのでフォローしました。

 

 

 本人はパフォーマンスのつもりらしいですが、空気を読めてないだけですね。

あの世代はだいたい似たような見方をしてしまうんで、わざわざ話を聴いてもかったるいだけなんですけどね、本当のとこは。

 

 相手の落ち度を責めるという心理が先に立つというか、自分が経験や知識を若い子よりも持っていて、視野が広いんだと思い込んでるんですな。

 

 もちろん、ある面ではその通りです。自分なりの”やり方”を良くも悪くも身に着けているハズです。しかし、自分が年長者だから年下が無知だとは、必ずしも限らない訳ですよ。

 

 

その点は自分も気を付ける事にしています....。まあ自分が引きこもり気味で、単に本当に無知だというのもありますけどね。

 

 

 なぜベストを尽くさないのか

 

自分もこの呪文を唱えて考えてみようと思います.....(了)

 

 

 

ブクマコメント

 > 家庭教師にも、指導力のあるひと、ないひと、いろいろですね(つд`)

 頑張っていると思います。ただ、やはり経験に乏しいので対応力がない感じですね。

彼女は確かまだ10代後半だったはず。

 

 

MicroSIPの着信確認を行う方法

 

 ご無沙汰しております。ひつじ!人間です。

 今回はSIPクライアントMicroSIP(https://www.microsip.org/)の着信確認を行う方法を解説します。

 これを使うと、IP電話を固定電話として使用することが出来ます。

 

 

 

 

Smartalk(https://ip-phone-smart.jp/)などのIP電話を登録して使用します。

ip-phone-smart.jp

 

 

 

 

概要

 繋がっているかどうかを確認する程度なら、どこか適当な番号に掛ければ事足ります。公共施設の番号でもいいし、ご友人の電話番号に電話してみても良いでしょう。

 

 しかし、着信するかどうかはちょっと難題です。掛けてもらうしかない訳ですから。

 

 

 

やり方

 一番簡単でオーソドックスなのは、二段階認証時のGoogleログインで、登録した電話番号をIP電話にして、認証する方法です。3-4回試すと数時間は認証を送れなくなるため、今回はメルカリで認証を行いました。

 

 

メルカリで電話認証

 

 

 

 

www.youtube.com

 

マスキングし切れてないけど察してください・・・

 

 

 

 

 

 以上です。

ちなみに本来、このような用途で使用すべきではありません。

 裏技的なものだとお考え下さい。