See the Elephant

渋谷でWebプログラマをやっている25歳が書く日常ブログ

仕事で失敗した時の晴らし方が分からない

今日は仕事で失敗しました.

ここ2花月ほど時間をかけて進めてきたことがポシャりました.

「実はやらずとも済んだかもしれない」という方法を提示され一旦話が白紙に戻りました.

いいんです,仕事に失敗はつきものです.

でも家に帰ってからどのように憂さ晴らししていいのかわかりません.

酒を飲むのか本を読むのか,はたまたゲームをするのか

やっていても仕事の失敗に意識がいってしまい集中できません.

みなさんはこんなときどうやって気分を晴らすのでしょうか

3倍褒めれば成果が上がる

誰しも成果はあげたいものですよね.

f:id:namu_r21:20181020185422p:plain amazon

アウトプット大全によるとポジティブ:ネガティブな言葉を使った比率によって成果が変わると解明した研究があるそうです.

3倍ポジティブなことを言う

  • 成果が出ておりうまくいっているチームはポジティブ:ネガティブな言葉の比率が3:1
  • すごくうまく行っているチームはポジティブ:ネガティブ=6:1
  • うまく行っている夫婦はポジティブ:ネガティブ=5:1

の割合でポジティブな言葉を使っているそうです.

ネガティブは失敗を生む

夫婦関係について調べた研究結果によると, ポジティブ:ネガティブ=1:5を上回った夫婦に関しては離婚予測が94%当てはまったそうです.

成果や人間関係を良くするためにはポジティブな言葉かけが3倍必要なんですね.

人間関係はポジティブに

アドラー心理学では, 人生の悩みの9割は人間関係だ と言い切っています.

やはりポジティブな言葉かけによって気持ちの良い環境が生まれていくのですね.

褒めて伸びるタイプ, とよく耳に聞きますがやはり数字上でもそうなんです.

ポジティブな言葉を使っていきましょう.

実際の夫婦も実践によって証明している

www.e-aidem.com

トミヤマユキコさんの記事を読んで素晴らしいと思った部分を引用します.

共働き夫婦の中には、役割分担をきっちり決めているひとたちもいると思う。

しかし、わたしたちはそうしなかった。
なぜって、分担を決めると、やるのが「当たり前」になるからだ。
当たり前のことは、やっても褒められず、やらなかったら叱られる。


そこでわたしたちは、
どちらか気付いた方が家事をやることとし、
やったら全力で自慢していいシステムを採用した。

自慢された方が大袈裟に喜び、褒めることも大切だ。

「ありがと〜!」「すごいね!」「天才では?」といった具合で、
どんどん褒める。
バカバカしいと思わず、全力でやるのがポイント。

そうすると、自宅で一緒にいる時間のほとんどが褒め合いの時間になる。
褒められると気分がいいから、作業のクオリティも上がっていく。

その証拠に、かつてなんでもかんでも洗濯機にぶちこんでいたおかもっちゃんが、
いまや、素材別に洗剤を使い分けるのはもちろん、
何をネットに入れるべきかも完璧に把握している。

全ては褒め合いのたまものだ。

一緒にいる時間のほとんどが褒め合いの時間になった結果, 家事 というミッションの成果と精度があがっていくのです.

  • ポジティブな言葉は楽しい気持ちを生む.
  • もっと褒められたいから頑張る.
  • プラスの螺旋を生んで成果が上がっていく.

やはりポジティブな言葉は成果を生むんですね.

まとめ

今回はポジティブな言葉遣いについて書きました.

自分の頭の中で反芻される言葉にも気をつけようと思いました.

失敗した時やうまくいかない時に「向いてない」や「やっぱりだめだ」と思ってしまうことは多々あります.

そんな言葉遣いを「人生初プレイだし仕方ない」, 「だめだったことがわかった.ドンマイドンマイ」と思えるようになれば失敗も少しづつ怖く無くなります.

そうやって脳内の言葉, つまり現実の自分 対 脳内の自分さえもポジティブなワードで埋めていこうと思いました.

scpでホスト名にスラッシュが入る時の対処法

今日は sshでハマりました.

リモートサーバ上には file/dir が存在するはずなのに存在しないと言われる.

$ ssh  web/shuzon.ap-northeast-1

$ ls / 
/hoge ...

$ scp -r web/shuzon.ap-northeast-1:/hoge hoge 

cp: web/shuzon.ap-northeast-1:/hoge: No such file or directory

実はこれホスト名に / スラッシュが入っていると起こる現象です.

ホスト名はエスケープできない です

$ scp web3\/shuzon.ap-northeast-1:/hoge /hoge

cp: scp web3\/shuzon.ap-northeast-1:/hoge /hoge: No such file or directory

$ scp web3\\/shuzon.ap-northeast-1:/hoge /hoge

cp: scp web3\/shuzon.ap-northeast-1:/hoge /hoge: No such file or directory

これはホスト名を変えるしかありません.

変えましょう.

ちなみにRFCでホスト名の予約語として / が登録されています. 使っちゃダメなんですねー.

RFC 2396 - Uniform Resource Identifiers (URI): Generic Syntax

今日はここまで

sshでホスト名が重複した場合の解決方法

sshすると急にこんなエラーが出た.

$ server=web.i-xxxxx.ap-northeast-1; ssh $server

shuzon@xx.xxx.xxx.xxx's password:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:miserarenaiyo-hash.
Please contact your system administrator.
Add correct host key in /Users/shuzon/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/shuzon/.ssh/known_hosts:40
ECDSA host key for ip-xx-xx-xx-xxx.ap-northeast-1.compute.internal has changed and you have requested strict checking.
Host key verification failed.
Killed by signal 1.

よく読むと, known_hostの40行目に問題を引き起こすhost keyがある と書いてある

Offending ECDSA key in /Users/shuzon/.ssh/known_hosts:40

どうやら /Users/shuzon/.ssh/known_hosts にこれまでsshしたサーバのホスト名を記録しているようだ.

偶然ipアドレスが衝突した時に起こるエラーだそうで, known_hosts から対象hostを消すことで対処できた.

qiita.com

この記事を参考にした.

$ssh-keygen -R ip-xx-xx-xx-xxx.ap-northeast-1.compute.internal
/
# Host ip-xx-xx-xx-xxx.ap-northeast-1.compute.internal found: line 40
/Users/shuzon/.ssh/known_hosts updated.
Original contents retained as /Users/shuzon/.ssh/known_hosts.old

これで接続できる.

持株会のメリット デメリット 損益を計算してみる【株式会社にいるのに株について知らないの? 】

今日は持株会について書いていきます.

加入からの経緯

弊社の持株会に加入し半年が経ちました. 入って3ヶ月で書いた記事はこちら.

namu-r21.hatenablog.com

引越しを考えているのでこれを機に出金をしたいと思い考えて見ました.

拠出金額は月額5万円です.

弊社は奨励金がなんと30%なので月々1.5万円が投資買い付け金として追加されます.

お金を出すだけでまず30%増えるので圧倒的に損することが少ないとても良い制度です.

もちろん奨励金の利率は会社によって違うので確認してください.

課税率について

株式投資では 売却益に対して, 20.315%が課税 されます.

持株会も株式投資なので例に漏れず課税されます.

つまり, 儲けた分の20% は税金として持って行かれてしまいます. 株投資による課税率は所得とは関係なく一定です.

高額所得者ほど株投資の方が得する

以下のサイトによると20%課税は労働所得税でいうと年収700万円代と同じ程度の課税率だそうです.

300~400万は所得税5%, 500~600万は10%です.

1100万円以上は所得税23%なので, 1000万円までは労働所得税と同程度ということになります.

https://crypto-theta.com/income-tax-calculation/

ちょっと高くて想像できないですが,それを超える人は株やった方が得ということになります.

これらから分かるように, 日本は資本主義国なので投資家に優しい設計になっているのです.

損益の計算式

株式取引の損益は以下で表せます.

# 利益が出た場合

(現在株価*保有枚数-入金計)*(1-0.20315)-取引手数料=課税後の利益

# 損失が出た場合
(現在株価*保有枚数-入金計)-取引手数料=課税後の利益

株式投資では売却益に対して, 20.315%が課税 されます.

前述しましたが, 株式投資の課税対象は 売却益(儲けた分)です.

つまり, (売却額-買い付け金額) > 0 ならば課税, (売却額-買い付け金額) < 0 ならば非課税です.

取引手数料に関しては証券銀行によって異なるのでご確認ください.

持株会のメリット

奨励金

まず間違いなく奨励金はメリットになります.

お金を出資するだけで確実に増えるのです.

www.zbuffer3dp.com

平均は5%だそうですね.

大体1桁台の利率(1~10%)が多いそうですがこれだけでも嬉しいものです.

なぜなら, 銀行は超低金利だから!

例えば, ゆうちょ銀行の金利は0.01%(1/10000)です.

金利一覧ーゆうちょ銀行

つまり, 12万円を1年預けて, 1年後にはたった12円しか増えないのです.

対して, 持株会はというと...

奨励金5%だとして, 1万円であれば500円増えます.

しかも, 月額拠出で1万円積み立てていけば 1年後には6000円増えます.

お金出すだけで.

(10000*12)*(1+0.05) = 126000

奨励金は盾にもなる

奨励金は自分を損から守ってくれる役割も果たします.

なぜかというと, 奨励金は買い付け時に加算されるから!!

奨励金5%で1万円を拠出していた場合, 10500円で株の買い付けを行います.

これは何を意味するかというと ...

奨励金分は売却益に含まれない, つまり損できるマージンになる

売却益 = 売却額 - 買い付け金額 です.

奨励金によって買い付け金額が上がると 売却益が減る=課税対象が減るだけなので, 加入者にとっては嬉しい仕組みになっています.

持株会はあくまでも株式投資なので平均買い付け金額以下に株価が下振れてしまうと損をします.

いわゆる 元本割れ です.

しかし, 持株会でいう本質的な元本とは 自分が拠出した金額 であるため, 奨励金の利率は株価が下振れた分の損失を吸収してくれる役割があります.

注意ですが, もちろん奨励金の利率以上に価格変動が下振れた場合は損をします.

奨励金が丸々手に入るわけではない

あと気をつけなければいけないのは, 奨励金は所得課税対象 となる点です.

blog01.kt-sol.com

すなわち, 奨励金5%が丸々手に入るわけでなく, 奨励金に対する課税後の残金が実際に手に入るお金となります.

# 元本1万円, 奨励金5%, 年収400万円(所得税5%)の場合

10000 * 0.05 * 0.05 = 25円

### 損失許容率を知ろう

0.05*(1-0.05) = 0.0475

この場合だと, 25円 が所得課税対象になるため, 475円 が実際手に入る奨励金となります.

つまり, 現在株価が平均買い付け金額の4.75%以下になった場合は損する可能性があります.

僕の場合は, 27%以上株価が下落した場合に損をします. そもそもそんなに株価下がったら会社がちょっと不安ですね....

デメリット

インサイダー取引防止の兼ね合いで資産流動性が低い

持株会ではインサイダー取引防止を目的として出金の期間が限定されています.

つまり, 好きな時に出せない貯金 です.

社内にいるとどうしても社内の情報が入ってくるため株価の上昇下落を予測できてしまいます.

このため, 一定期間内での取引が義務付けられています.

使いたいときに使えないのはちょっと不便ですね...まぁだからたまるのですが.

下落すると塩漬けになる

自社株だからと言って下がらないとは言えません.

弊社は上昇気味なトレンドですが, ときには下がる時もあるでしょう.

奨励金の利率以下まで下がってしまうこともあるかもしれません.

ずっと下落したまま帰ってこないこともあるため損切りのラインを決めて売りましょう.

大体5%~10%で定めるものと言われています (インベスターZに書いてあった).

長期の積み立てとして買っている場合は, 株価の下落はバーゲンセールなので上がることを信じてもっておくのも一つの手ではあります.

これもある意味売りたいのに売れない要因になります.

売却単元が一定株数に限定される

持株会では売却単元が決まっています. 弊社では100株が1単元となり, その単位でしか売却ができません.

なので, ちょっとだけ端数が残ります. ここら辺は貯金とは違いちょっと悲しいポイント.

まとめ

以上が 持株会のメリット デメリット 損益計算方法 です. 参考になれば幸いです.

Redux StateをAction駆動で変化させるReducerの仕組み

Redux

Reduxに関してはこちらがおすすめ. わかりやすい.

qiita.com

Reduxはイベントドリブンに似ている

状態をイベントドリブンで変化させる仕組みだと思えば良い.

関心ごとはひたすらに State を誰にどのように操作させるか である. では見ていこう.

Redux の大まかなイメージ

f:id:namu_r21:20181015191131p:plain

自分はReduxを勉強していて川と魚と釣り人の関係を思い浮かべた.

川に魚が泳いでいる. そしてそれを釣り上げる釣り人がいる.

川には魚が流れ続けている.

魚がEvent, その魚に対応して釣り人(関数)が魚を釣る.

Eventに対応して関数が動く. そんなイメージである.

イベントドリブンなアプリケーションは大体こんなイメージだと思う.

Reduxをシンプルに表したコードを読んで見る

numb86-tech.hatenablog.com

こちらからコードを参照.

import { createStore } from 'redux';

const myActionCreator = (num=1) => {
    return {
        type: "INC_COUNTER",
        num
    };
};

const myReducer = (state={counter:0}, action) => {
    switch(action.type){
        case 'INC_COUNTER':
            return Object.assign({}, state, {
                counter: state.counter + action.num
            });
        default:
            return state;
    };
};

const myStore = createStore(myReducer);

// この時点で、Reduxは機能している
// 以下は動作確認

console.log(myStore.getState());    // { counter: 0 }
myStore.dispatch(myActionCreator(1));
myStore.dispatch(myActionCreator(2));
console.log(myStore.getState());    // { counter: 3 }

このコードを見る限り

  • store を作るためには reducer を用意する必要がある.
  • reducer は, stateaction を引数にとり, state を返す
  • reduceraction に応じた処理が実行される
  • 上記の場合だと, INC_COUNTER というアクションが来た場合は state に記録されているcountに対して actionに設定されている値を加算する.
  • 同じ store に対して action を送る(dispatch) することで state の中身が書き換わっていく.

イメージとしてはこんな感じ.

f:id:namu_r21:20181015184546p:plain

状態(state)は, store という囲いの中に覆われている. state を操作できるのはあらかじめ定義された reducer しかいない.

reducer は 発行されたaction に対応し実行される.

ActionEvent で, reducerEventに紐づく関数 と思えばイベントドリブンのアプリとそう大きく変わらない

f:id:namu_r21:20181015191104p:plain

Reducerの役割

Reducerの役割はシンプルな関数で表される.

   reducer(state, action) => state 

つまり, reducerstateaction を受け取り, state を返すのだ.

もう少し詳細に表すと以下のようになる.

   reducer(oldState, action) => newState 

つまり, reducer古いstateaction に応じて 新しいstate に変換する.

Reduxは action をきっかけに reducer を通じて state を変化させる仕組みなのである.

Reduxはイベントドリブンに似ていた

Reduxはイベントドリブンに似ていた.

Action に紐づいて Reducer が発動する. Reducer によって Stateが変化する.

ReducerStateStore によって隠蔽されており, 外部からの操作は Action しか受け付けない.

これによって, 状態変化のフローを一方向に制約している.

なるほど,そんな仕組みだったんだね.

今回はここまで.

react 事始めして見る.

環境設定して見る

https://www.to-r.net/media/react-tutorial12/

を見ながらやっていく.

# プロジェクトの作成

$ create-react-app start-react
Success! Created start-react at /Users/shuzon/work/tech/react/start-react
Inside that directory, you can run several commands:

  npm start
    Starts the development server.

  npm run build
    Bundles the app into static files for production.

  npm test
    Starts the test runner.

  npm run eject
    Removes this tool and copies build dependencies, configuration files
    and scripts into the app directory. If you do this, you can’t go back!

We suggest that you begin by typing:

  cd start-react
  npm start

Happy hacking!

プロジェクトが生成された.

サーバを立ち上げて見る

npm start を実行することでローカルサーバが立ち上がる.

f:id:namu_r21:20181014173600p:plain

スクショはこんな感じ

<h1 className="App-title">ようこそReactへ</h1>

試しに, <h1>を追加して見た.

f:id:namu_r21:20181014173835p:plain

追加された.

コンポーネントを忖度してみる

class App extends Component {
  render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <p>
            Edit <code>src/App.js</code> and save to reload.
            <h1 className="App-title">ようこそReactへ</h1>
          </p>
          <a
            className="App-link"
            href="https://reactjs.org"
            target="_blank"
            rel="noopener noreferrer"
          >
            Learn React
          </a>
        </header>
      </div>
    );
  }
}

Componentrender 関数を持つ.
戻り値としてjsx記法でhtmlを書いていく.

jsx記法

jsxはjava scriptの中にHTMLタグをかけるようにする文法拡張である.

上記のサンプルコードでは <img src={logo} className="App-logo" alt="logo" />のうち,
{logo}がjsx記法に該当する.

javascriptのコード展開ができるため, 生成するhtmlを柔軟に変更できる.

今回はここまで.