膨張空間

開発日記を中心に、時々雑記を投稿します。よろしく

資産運用について個人的なまとめ

タイトル

  1. 住宅ローン控除
  2. ふるさと納税
  3. NISA
  4. iDeco
  5. 保険

住宅ローン控除

  1. 控除期間は購入から10年間
  2. 令和2年12月31日までに取得した住宅は合計で13年間控除される
  3. 年末のローン残高の1%を控除する
  4. ローン残高が4,000万円以上の時
  5. 所得税と住民税から控除される
  6. 初年度は確定申告をする必要がある
  7. 次年度からは年末調整すると控除される

国土交通省すまい給付金

ふるさと納税

  1. 節税は投資に比べてリスクがなく効果が大きい
  2. 寄付金額 - 2,000円 = 住民税から控除される
  3. 寄付金額の上限は住民税・所得分割の一割まで

ふるさと納税

iDeCo

「個人型確定拠出年金

  1. 老後のための年金は自分で備えてね。そこ代わりに税制を優遇しますよという制度。
  2. いくら積み立てるか。どんな金融商品で運用するかは選択自由。
  3. 掛け金は5,000円から1,000円単位で選ぶことができる。
  4. 掛け金は年に1回金額を変更することができる。詳しい金額はこちらから
  5. 元本保証タイプ(元本確保商品)と保証なしタイプ(投資信託)がある。保証なしタイプの方が種類が豊富。保証タイプは利率が低く手数料を考慮すると選ぶメリットはない。
  6. 年金制度なので原則60歳まで引き出せない
  7. 受け取りは「老年一時金」で一括で受け取るか。「老年給付金」として5から20年の期間で受け取るか選べる。
  8. 掛け金全額が所得控除対象になる
  9. 運用益も非課税**

iDeCo

NISA

個人投資家のための税制優遇制度

  1. 非課税枠は最大600万円
  2. 運用益、配当が非課税
  3. 一人一口座
NISA ジュニアNISA 積み立てNISA
非課税投資枠 120万円 80万円 40万円
非課税期間 5年 5年 20年
投資可能期間 2023年 2023年 2037年
引出可能時期 18歳

金融庁

保険

  1. 保険は甚大な被害を受けた時のセーフティネットとして考える。
  2. 元が取れないから入らないは間違い。
  3. 掛け捨てより積み立ての方が税制上有利

参照書籍

  • やってはいけないお金の貯め方 大村大次郎 宝島社
  • つみたて投資の教科書

あなたは1日24時間ということを理解しているか

タイトル

自分の時間の感想 1日24時間でどう生きるか

作者:アーノルド・ベネット

訳:渡辺昇一

私がこの本から学んだこと

  1. 怠惰な生活を改める
  2. 1日24時間であることを理解する
  3. ただ始める
  4. 内なる1日を作る
  5. 自分を見つめる
  6. 物知り顔にならない
  7. 向上の芽を大切に育てる

朝の1時間は夜の2時間以上の価値がある

人間の精力を、日常の仕事に全て吸い取られてはならないのである。 もしも、それができないほどに疲れていると言うのであれば、 それは生活のバランスが悪いのであって是正すべきだ。

そのために、日常の仕事で精力を使う前に仕事以外に使うのである。

「朝早く起きる」ことで時間を作る。 睡眠はある程度は習慣の問題であり、怠惰な生活習慣に問題がある。 いつもの1時間から2時間早起きをして、仕事以外の時間をとること。 朝の1時間は夜の2時間に匹敵する 睡眠不足になるようであれば、夜に早く寝ること。

この時、早起きをして、自分にとって大切なことをする時に、 他人の協力をえなければできないと言う考えは不甲斐ない考えであるということを理解すること。 自分の怠惰を他人のせいにしてはいけない。

時間があれば金は稼げるが、金があっても時間は稼げない

1日の始まりには誰でも平等に24時間が与えられる。 あなたはすでに持っているだけの時間を持っているのである。 この24時間は誰からも奪われることはない。 ただ、過ぎ去っていく現在があるだけだ。

人生の全ては24時間の利用の仕方次第で決まる

「もう少し時間ができれば、あれを変えてみよう」 もっと時間ができるわけなどない。我々には今あるだけの時間しかなく、それはいつだって変わらないのである。

人々は時間に対して、焦り、期待、願望、欲望が原因になって不快な思いをしている。

仕事以外に何かをしなければという固定観念があり、そこから不満や焦りが生じる。 仕事以外に何かをやりたいという欲求は、ある程度、精神的に成熟した人たちに共通する。 この欲求を満たすべく努力していたいと、「何かを始めたいのに、始めていない」という焦りの感情が生じ、いつまでも心の平安がえられない。

苦労が多く報われることが少なくても不満を感じないだけの覚悟が必要。 これがないなら「何かをしなければ」と今までの通り惰眠を貪っていればいい。 覚悟ができたならただ始めればいい 来年の時間や明日の時間は手付かずでとっておかれるのだ。 その気になれば、過去は関係なくこれからを変えることができる。 来週や明日を待つ必要はない。今日から始めればいいのだ。

初めから大きな変化を求めない

多くを求めれば、その次にはさらに多くを求めるようになり、そのうち急に疲れが出て意気込みも萎んでしまう。 失敗からは何も得ることはできない。つまらない成功でおおいに結構なのである。

内なる1日を作る

平日の勤務時間をあたかも「1日」であると考え、それ以外の時間は「1日」の単なるエピローグやプロローグであると考えていないか。 1日の3分の2の時間を、単に、3分の1を占める勤務時間に付随している時間にすぎないとしてしまうなら、充実した1日など過ごせるはずがない。

1日の中に労働時間を引いたもう一つの1日を作る。 この内なる1日は全ての物から解放されている。内なる1日を有意義に過ごすことによって充実した人生を送ることができるのである。 「内なる1日に全力を注ぎ混んでしまっては8時間の労働に影響が出るのではないか」と思うだろうが、これはない。 むしろ能率は確実に上がると言っていい。 必要な睡眠を除いて、知的な能力は耐えざる労働を耐えることができる。手足のように疲れることはない。

週3回の夜90分が、あなたの心を豊にする。

毎日仕事でくたくただから、帰ってから酒でも飲みながら動画を見ていたら、もう寝る時間か。 今日もやりたいことができなかった。でも疲れているから仕方がない。

本当にそうか? 仕事終わりに、趣味を行う時や、友人と会う約束がある時も同じように、感じるだろうか。 そう、本当は疲れてなどいないのだ。 この事実を受け止めることで、夜の時間を確保することができる。 ただ、夜の時間を全て「知的エネルギーを使い果たすようなことに使え」というはわけではない。 週3回かつ、半分の時間を有意義になるような時間に使ってはどうだろうか。 この時間は友人との約束のように最優先で確保しなければならない。

毎朝の30分が奇跡を起こす。

やることが何であれ、どれくらい些細なことであれ、やったことには変わりはない。 何かをやり続ける。つまり「習慣を変える」こと

小さな一歩からでないと習慣は変わらない

変化というのはそれが改善のためであっても、必ず不便や不快感を伴う。 今の生活を続けたまま、習慣を変えようとするのは不可能である。 習慣を変えるということは何かしらの犠牲と、強固ないしが必要である。 習慣を変える時に、あまり大きなことを公言せずにさりげなく始めること。 3ヶ月続けることができてから、盛大に公言すれば良い。

充実人生を送るための第一条件

思考をコントロールする。自身の思考はコントロールすることができる。 頭の動きをコントロールすることが充実した生活をする第一条件

どうやるのか。 1日の初めに頭の働き具合を試してみる。 「家を出たら一つのことに思考を集中する」 いろいろなことに気を取られるだろうが、何度でもやり続ける。 辛抱強く続けることで必ずできるようになる。

集中力を高める練習を規則的にやることで、自身の思考をいかなる場所でも、思いのままに支配できるようになる どのようなことを考えれば良いか。 自身の生活信条と実際の行動の関係など、本当に大切な問題について見つめ直す。 幸福とは肉体的、精神的な快楽を得ることだけではなく、自分の生活信条に叶った生き方をするということだ。 自分の生活信条と一致していない人生というのは無意味な人生ということだ。

時間の価値を知ったあなたに待ち受けている危険

ここまでのことを知ったあなたは、1つのことを注意しなければならない。 それは、物知り顔の人間になないことだ。 時間を無駄にせず活用しようとする時に、肝の命じて置くことは、 活用するのは「自分の時間」だけであって、他人の時間ではないということだ。 さらにいうなら自分のしていることなど、あまり大袈裟に他人に話すことなどしない方が良い。 大多数に人間は本当に充実した人生を送ってなどいない。しかし、その事実を大声で言い立ててもどうしようもないのだ。 所詮、人はそれぞれ自分で自分の人生について真剣に考えない限り、本来なし得ることもなし得ないのである。

計画の奴隷にならない

自分で計画したことに奴隷のように縛られてはならないのである。 計画したことは尊重しなければならないが、信仰の対象にしてはならない。 計画は計画にすぎないということを心得る必要がある。

また、欲張った計画を立ててはいけない。 欲張って計画を立てすぎて、次の計画が気になって落ち着いて何かに取り組めなくなってしまう。 自分に余裕がないと感じる時は計画の立て直しが唯一の解決策である。

向上の目を大切に育てる

計画の出だしでつまずかないことに注意する必要がある。 せっかく何かについて学ぼうとする向上の芽も一人前の若木に成長する前に枯れてしまう危険性がある。 そうならないように向上の芽にあまり負荷をかけすぎてはならない。 初めは馬鹿らしいくらいゆっくりたペースで行うこと。 しかし、できる限り規則的にそれを続けること。

終わりに

私がこの本を手に取ったきっかけは、自分について見つめ直したいと考えていたからだ。 生活が変わり、節目の歳を迎えて、漠然とこのままの生活を続けていて良いのか。 何か変化をしなければならないのではないかと焦っていた。 本書から、この焦りは誰でも持っている物であり、自身の幸福とはどういうことか。 それを達成するための方法など、ページ数が少ないながらも大変共感できる内容だった。 私の中に芽生えた向上の芽を枯らさないように大切に育てたいと思う。

MacでVueCLIを使うまでの最速手順

2021年09月04日現在

目標

  • MacでVue CLIが使えるようになる

前提条件

ターミナルが使用しているシェルは「zsh」を前提とする。

bash」を使用している場合は「.zshrc」を「.bashrc」に読み替えてください。

何を言っているのかわからないという人は以下のサイトを参考にしてください。

シェルってなに?bashとzsh、自分のMacはどっちを使ってるの? 新macOS Catalina が zsh を標準にするって聞いたので Mojave のまま移行してみた

XCodeをインストールする

AppStoreでXCodeを検索してインストールする

homebrewをインストールする

homebrew 公式

homebrewはでデファクトスタンダードなパッケージマネージャーです。 対応するアプリケーションのインストールやバージョン管理ができるアプリケーション

詳しくは公式サイトを確認してください。

ターミナルで下記のコマンドからインストールできます。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

パスワードを尋ねられた場合は、インストールしているMacのパスワードを入力してください。

インストール後は下記のコマンドで確認することができます。

$ brew --version
Homebrew 2.4.6
Homebrew/homebrew-core (git revision 5218; last commit 2020-07-14)

nodebrewをインストールする

Nodeのバージョンを管理するnodebrewをインストールします。 Vue CLIはnpmでインストールします。 npmはnodebrewをインストールすることで使用可能になります。

~/.nodebrew/srcを作成しないとエラーになります。

$ mkdir -p ~/.nodebrew/src
$ nodebrew install-binary latest
$ nodebrew list
v14.5.0

current: v14.5.0

インストールしたバージョンを使えるようにします。

$ nodebrew use 14.5.0
use 14.5.0

npmコマンドを設定する

nodebrewをインストールしただけでは、ターミナルでnpmコマンドが認識されません。 パスを通してnpmコマンドを使えるようにします。

$ ls $HOME/.nodebrew/current/bin
node            nodebrew        npm             npx
$ open ~/.zshrc

.zshrcに以下を追加して保存する。

export PATH=$PATH:$HOME/.nodebrew/current/bin

npmコマンドが有効か確認する

npm -v
6.14.5

Vue CLIをインストールする

$ npm install -g @vue/cli

Vueのパスを通す。

このままではターミナルでvueコマンドが使えないので下記のコマンドを実行してパスを通す。 XXXXXXXはログインしているユーザー名に変える

$ open ~/.zshrc

.zshrcに以下を追加して保存する。保存後にターミナルを再起動する。

export PATH=$PATH/Users/XXXXXXX/npm/bin:$PATH

Vueのパスが通ったか確認する

$ vue --version
@vue/cli 4.4.6

以上

C#で書くGoFデザインパターンまとめ

C#GoFデザインパターンを書いてみた。

コードはここから

実装済みのパターン

パターン 概要
Abstract Factory 抽象クラスに定義をまとめる

参考サイト https://qiita.com/i-tanaka730/items/c63c6c22abd1477e0ba0

ざっくり理解するSSL/TLSとHTTPSの関係

これまでSSLTLSの違いが曖昧だったので、ざっくり調べてみた。

そもそもSSLTLSって何?

SSL(Secure Sockets Layer)もTLS(Transport Layer Security)も、データを暗号化して通信する為のプロトコル(決まり事)である。 以下のようなバージョンがある。

  • SSL1.0
  • SSL2.0
  • SSL3.0
  • TLS1.0
  • TLS1.1 ↑これ以下はもう使用は非推奨。IE11もデフォルトでは非対応
  • TLS1.2 ↓これから使うならTLS1.2以上
  • TLS1.3

SSLTLSの違いって何よ?

結論:SSL→古い TLS→新しい

以上、終わり。

元々はSSLという名前だった。 仕様変更後にTLSと名称を変更した。 しかし、SSLは既にと広く認知されている。 そのため「SSLを設定する」といわれることが多い。 混乱しがちだが、良く知られている古い名前を使用しているくらいの認識でOK。

何がうれしいのSSL/TLS

前述の通りSSLTLSプロトコルである。 SSL/TLSはWebサイトを提供するサーバー(以下、サーバー)とクライアント(IEとかのWebブラウザ)をセキュアに通信する時に使用する。 SSL/TLSに準拠したHTTPをHTTPSと言う。

HTTPとHTTPSについて

HTTP:Webサイトを構成するテキストを通信する為のプロトコル HTTPS:セキュアなHTTP。HTTP over SSL/TLSともいう。

HTTPでは、サーバーとクライアントは平文で通信する。 通信中に内容を読み取られる可能性がある。

HTTPSは通信を暗号化することで内容を読み取れることがなくなる。 HTTPを暗号化するための方法や、安全に通信するための手順は、SSL/TLSで定義された内容に従っている。

SSL/TLSの手順として、サーバーには「サーバー証明書」を設定必要がある。

サーバー証明書とは

信頼されている認証局が、サイトの証明書を発行する。 発行された証明書のことを「SSLサーバー証明書」という

以上

デバック中のWebApiにローカルネットワーク上の別端末からリクエストを送る方法

環境

  • ASP.NetWebApi
  • IIS Express
  • C#
  • VisualStudio 2017

目的

IIS Expressに対してデバック中の端末以外のローカルネットワーク上からリクエストを送ることができるようになる。

流れ

  1. VisualStudioでWebApiのデバックを開始する
  2. IIS Expressのコンテキストメニューから構成をクリックする
  3. 自分のIP+新しいポート番号を追加する。
  4. 強化されたファイアウォールから新しいポートを受信設定に追加する。

詳細

1. VisualStudioでWebApiのデバックを開始する

VisuauStudioのデバック開始ボタンを押すか。F5キーを押してデバックを開始する。 f:id:gshota:20200417142024p:plain

2. IIS Expressのコンテキストメニューから構成をクリックする

  1. タスクトレイに表示されているIISEexpresあいこんのコンテキストメニューのすべてのアプリケーションを表示をクリックする f:id:gshota:20200417150754p:plain

  2. サイト名をクリックして下に表示される構成をクリックする f:id:gshota:20200417151008p:plain

3. 自分のIP+新しいポート番号を追加する。

※重要:新しいポートはlocalhostのポート番号とは別にすること

f:id:gshota:20200417151042p:plain
構成内容を編集する

  1. もう一度デバックを開始した時に追加したIP:ポート番号が表示されていれば成功 f:id:gshota:20200417151111p:plain

    • 追加したIPが表示されない時
      1. VisualStudioを閉じる
      2. ソリューション直下のbinとobjフォルダを削除する
      3. もう一度デバックを開始する

1. 強化されたファイアウォールから新しいポートを受信設定に追加する。

  1. タスクバーのテキスト入力にに「強化された」とする。表示されていない時はタスクバーの虫眼鏡をクリック
  2. セキュリティ強化されたファイアウォールをクリックする f:id:gshota:20200417151155p:plain

  3. 受信の規則から新しい規則をクリックする

  4. ポートを選択して次へ f:id:gshota:20200417151235p:plain

  5. TCP 特定のローカルポートに「3. 自分のIP+新しいポート番号を追加する」で追加したポートを入力する f:id:gshota:20200417151252p:plain

  6. あとは次へを繰り返して完了

以上

小話

なぜこれが必要になったのかというと、Xamarin.FormsでAndroidを開発している時にサーバーサイドはAsp.NetWebApiで開発していた。当初はローカルで用意したサーバーにわざわざリリースして確認していたのだが、開発効率落ちるし異常終了したときに追いずらいしでさんざんだった。 そんな時に、VisualStudioで同じソリューション内であれば、複数プロジェクトを同時にデバックできることを知った。しかし、今回の設定をしなければ、Androidがローカルネットワークを経由して、自分のPCに立っているWebApiに通信できないので、設定を行ったという流れだ。

NLogでEventLogを出力する最短方法

達成事項

  • C#のコンソールアプリやWindowsFormsなどでNLogを使ってEventLogを出力する

前提条件

まとめ

  1. NLogをインストールする
  2. paworshellのコマンドファイルを作成する
  3. batファイルを作成する
  4. batファイルを管理者で実行する
  5. App.ConfigにNLog用のターゲットを設定する
  6. コードを書く

1. NLogをインストールする

  1. プロジェクトを右クリックして「Nugetパッケージの管理」をクリックする f:id:gshota:20200217013510j:plain

  2. 参照タグからNLogを検索してインストールする f:id:gshota:20200217013355j:plain

2. paworshellのコマンドファイルを作成する

下記の内容とファイル名でコマンドファイルを新規作成する ファイル名「CreateEventLogSource.ps1

New-EventLog -LogName Application -Source "NLogTest"

ここに同じファイルを用意した。

3. batファイルを作成する

下記の内容とファイル名でコマンドファイルを新規作成する ファイル名「CreateEventLogSource.bat

powershell -NoProfile -ExecutionPolicy Unrestricted C:\CreateEventLogSource.ps1

ここに同じファイルを用意した。

失敗しない為のポイント

  • 「C:\CreateEventLogSource.ps1」の部分は絶対パスで指定すること

4. batファイルを管理者で実行する

  • 作成したCreateEventLogSource.batを右クリックしたメニューの「管理者として実行」をクリックする

5. App.ConfigにNLog用のターゲットを設定する

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        autoReload="true"
        throwExceptions="false">
    <targets>
      <target name="eventlog" xsi:type="EventLog" source="NLogTest" />
    </targets>
    <rules>
      <logger name="*" minlevel="Debug" maxlevel="Fatal" writeTo="eventlog" />
    </rules>
  </nlog>
</configuration>

失敗しない為のポイント

  • 「configSections」は先頭に挿入する
  • targetsのsourceは2. paworshellのコマンドファイルを作成するで指定したSourceと同じにする

6. コードを書く

ここからソースをダウンロードできる。

using NLog;
using System;

namespace NlogEventLogSample
{
    internal static class Program
    {
        private static Logger Logger = LogManager.GetCurrentClassLogger();

        private static void Main(string[] args)
        {
            try
            {
                Logger.Info("Hello World");
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
    }
}

結果

  • イベントビュワーに正しく表示された

f:id:gshota:20200217013537j:plain

以上