読者です 読者をやめる 読者になる 読者になる

Bird's tech

23歳エンジニアのアウトプット

ブログを移行します

ブログをはてなから移行します。

移行先はこちら↓

 

http://yaginumahidetatsu.com/

 

hakyllで作りました。

about.mdがコンパイルされないのでaboutはリンク切れになっています。

今後はこちらを更新し、はてなブログは更新しません。

水泳について

水泳をした

ジョギングは疲れるので、水泳を始めた。
amazonで必要なものすべて買って、すぐ届いた。便利。
クロールについて書きます。
自分はガチ初心者です。

息継ぎ

最重要ポイントは息継ぎ。
息継ぎに失敗すると酸欠になってフォームが乱れる。
口ではなく肺に息を入れる必要がある。
そのためには、気道が確保されていること、息が吐き切られていることなどが必要になる。
マラソンで疲れても顎を引いて走る必要があるのと同じで、
息継ぎ時も顔はあくまで横に向ける必要がある。
また、水中で息を吐き切ることも大事で、これに失敗すると息が吸い込めず、
辛くなる。

フォーム

水の抵抗を減らすためには、水中で線のようになる必要がある。
そのためには、下半身を上げる必要がある。
下半身には肺のような空洞が存在しないので、放っておくと
勝手に下がってくるので、それを抑制するために
バタ足をする。
(ちなみに2ビート・4ビート・6ビートなどの概念は 今日初めて知りました。)
やってみた感じ、
バタ足の目的は下半身が下がらないようにすることっぽい。
あと、膝を曲げないことも大事で、
膝から動かそうとすると太ももを緊張させる必要が生じる。
すると、下半身が疲れてしまう。
力を抜いて、足の付け根から動かす。

KPTは以下です。

Keep

水中で顎を引き、顔を横に向けて息継ぎをする
膝を曲げずにバタ足を行う

Problem

6ビートができない
腕で水をかく動作が遅い気がする

Try

水中を歩くコースで、6ビートの練習をする
腕で水をかく速度を上げたいので、タイムの目標を設定する
100mを2分で泳ぐ

その他  

今日は100mを10本泳いだ。
結構終盤は疲れた。
自分は早く泳ぐことにはそんなに興味がなくて、
100mを1時間で20本泳ぐ、みたいなことをしたい。
あと、mizunoのスイムタオルを買ったんだけど、
この商品はすごい。
あっという間に吸水するし、絞れば一瞬で乾く。革命っぽい。

まとめ

水泳楽しいので、しばらく続けます。

生産性について

生産性とはなにか

大辞林によると、

生産のために投入される労働・資本などの生産要素が生産に貢献する程度。生産量を生産要素の投入量で割った値で表す。

とある。
完全に難しい。生産って何?という感じ。たぶん、なにかしらの専門的なことばなんだと思う。

最近生産性という言葉がよく使われるようになっている、でも結局生産性ってどういうことなのか、よくわからない。

生産とはなにか?貢献とはなにか?生産はなんのためになされるのか?と考えていくと、生産は価値のためになされる。と自分は思っていてる。
貢献という概念も、価値(利益を含む)の必要性がベースにあれば理解しやすい。(価値に貢献しないアウトプットは生産と呼べるか。というはなし。呼べるという考え方も、あると思う。)

自分は、本来の意味は置いておいて、この言葉を自分や自分の生産物が価値を生み出す程度、みたいな意味で使っている。

例えば、いつもだいたい3時間かかる仕事が1時間で終わったとして、それを単純に生産性高いと捉えていない。その仕事が価値を生み出すかが不確定なので。仕事をすること自体に価値はない。(個人の考えです)

価値とはなにか

そうなると、価値とは何か という新たな、かつもっと難しい問題が表出する。
7つの習慣っていう有名な本がある。これの「インサイド・アウト」とかを読むとなんとなく価値とはなにか、を考えるヒントになるかもしれない。
価値とは文字通り価値観によって決まるので、自分で考えるしかない。

まとめ

自分にとっての価値を定めないことには、生産性という概念は成立しないのでは?(これは生産性を自分は勝手に定義しているからこうなるだけかもしれません。)

EC2にdocker環境を構築するときにやったこと

無事dockerが入れられたのでメモ。

MacのターミナルからEC2へ繋ぐコマンドが↓。
test.pemは、EC2インスタンスを構築するときダウンロードする鍵。 my.public.ip.addressは、EC2 Management Consoleから見られる。
$ ssh -i path/to/pem/test.pem 'my.public.ip.address' -l ec2-user
つなぎ先のIPはインスタンスを起動し直すたび変わるので、ElasticIPを設定すれば永続化できる。(お金かかるのでやってない)

最初にやれと言われるのでやる。
$ sudo yum update
何か聞かれたら:
$ y

サーバのOSを確認しておく。
$ cat /etc/*release*

NAME="Amazon Linux AMI"
VERSION="2016.09"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2016.09"
PRETTY_NAME="Amazon Linux AMI 2016.09"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2016.09:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
Amazon Linux AMI release 2016.09
cpe:/o:amazon:linux:2016.09:ga

ちゃんとAmazonLinuxAMIが入っている。

dockerをinstall
$ sudo yum install -y docker

dockerを立ち上げる
sudo service docker start

sudoなしでdockerを立ち上げるために、ec2-userをgroupに入れる。
$ sudo usermod -a -G docker ec2-user

ここで $ exitでEC2を抜ける。
もう一回最初のコマンドを叩いてログインし直す。(上で設定したgroupのpermissionを反映させるためらしい(?))

dockerが生きてるか(sudoなしで叩けるか)確認
docker info

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.6
Storage Driver: devicemapper
 Pool Name: docker-202:1-395189-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 11.8 MB
 Data Space Total: 107.4 GB
 Data Space Available: 7.001 GB
 Metadata Space Used: 581.6 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge overlay null host
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options:
Kernel Version: 4.4.41-36.55.amzn1.x86_64
Operating System: Amazon Linux AMI 2016.09
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 995.4 MiB

docker-composeもinstall
docker-composeは、複数コンテナを簡単に扱うためのdockerのモジュール(?)らしい
大体の場合、docker上にはアプリケーション以外にもmysqlなど複数のコンテナを構築する。docker-composeなしだとそれらの立ち上げが面倒だし、順番なども考慮しなきゃいけない。それらを楽にするのがdocker-compose。docker-compose.ymlに設定を書くことでいい感じにコンテナを立ち上げてくれる。(という理解) curl -L https://github.com/docker/compose/releases/download/1.11.1/docker-compose-uname -s-uname -m> /usr/local/bin/docker-compose

ここで /usr/local/binのpermissionで弾かれたので、以下でpermission付与
sudo chmod a+rwx /usr/local/bin/

docker-composeにもpermission付与 chmod +x /usr/local/bin/docker-compose

docker-composeがいけてるか確認 docker-compose -v
docker-compose version 1.11.1, build 7c5d5e4

ここまでできれば余裕。 あとは~/.ssh/ に鍵を作ったり、configファイルを作ったりして、好きなところにプロジェクトをcloneして開発する。

docker for macは遅いし、リソースを食う。
macのストレージを45GB近く取ってて、辛くなる。EC2上にdockerを入れられれば、ホストとなるmacのリソースを食われないし、Linux上だとやはりdockerが速い。速いのは正義で、生産性にダイレクトに関わってくる要素なので、こだわりたい。

リモートサーバ上で開発することのデメリットがひとつあって、Macにあるファイルをリモートサーバに持っていくのが面倒くさい。scpでやるしかないと思うんだけど、scpする機会はそんなにないから問題ないともいえるし、たまにしかやらないからコマンドが覚えられなくてつらい、とも言える。。

あと、リモートサーバ上での開発はvimが主流かもしれないけど、個人的にはAtomが好きなので、なんとかAtomを使いたい。プラグインでサーバにアクセスできるらしいんだけど、sublime textとかemacsなら標準でつなげるらしいので、羨ましい。 vimを覚えるしかないのか…

進捗を可視化する

お世話になります。

この度転職して、リモートワークをしております。

リモートワークは最高。

 

働き方についてはもう少しやったらいい感じに書きたいと思います。

 

 

さて、リモートワークは自己管理が大切です、一人で悩んでいても誰も気づいてくれず、時間の無駄になってしまう。

その一環で、進捗を可視化するスクリプトを書きましょう。

ここまで書いて、マークダウンにしていなかったことに気づいたので、面倒なのでこのまま書きます。

 

#!/bin/bash

URL='https://hooks.slack.com/services/token'

MSG=''

USERNAME='test'

CHANNEL="channel_test"

ICON=':bird:'

 

MSG=`cat task.txt`

 

payload="payload={

  \"channel\": \"${CHANNEL}\",

  \"username\": \"${USERNAME}\",

  \"text\": \"\`\`\`${MSG}\`\`\`\",

  \"icon_emoji\": \"${ICON}\",

}"

 

curl -X POST --data-urlencode "${payload}" $URL

 

webhookの仕様そのままなので、こんな感じです、

進捗は、いろいろ考えたけど、テキストベースで十分、あんまり凝ると辛くなりそう。

 

そして、これだけだとあれというか、このシェルを毎回実行するのは微妙、コピペすればいいでしょ、という話なので、cronを設定しましょう。macのcron初めて使った。

$crontab -e

でviで

* 16 * * 1-5 task.sh

2/2 追記↓が正しいです、↑だと16時から17時まで毎分実行される。

0 16 * * 1-5 task.sh

 

これで平日16時にいい感じにシェルが走って進捗がSlackに連携されます。

毎日やることほどいい感じに手間なくしたい。

何行コード書いたかを可視化するシェルスクリプト

あけましておめでとうございます.
お世話になっております.

何行コード書いたかを可視化しよう

流行りの見える化です.
参考URL

作ったもの

https://github.com/ygnmhdtt/countStep

中身

ご確認お願いします.

#!/bin/bash
author='gitのusername'
today=`date '+%F'`
month=`date '+%Y-%m-01'`
year=`date '+%Y-01-01'`
stepToday=`git log --since=$today --until=$today --author="$author" --oneline --numstat --no-merges --pretty=format:"" | cut -f1 | awk 'BEGIN {sum=0} {sum+=$1} END {print sum}'`
stepMonth=`git log --since=$month --until=$today --author="$author" --oneline --numstat --no-merges --pretty=format:"" | cut -f1 | awk 'BEGIN {sum=0} {sum+=$1} END {print sum}'`
stepYear=`git log --since=$year --until=$today --author="$author" --oneline --numstat --no-merges --pretty=format:"" | cut -f1 | awk 'BEGIN {sum=0} {sum+=$1} END {print sum}'`

echo "$author は 本日 $stepToday 行書きました。"
echo "今月は合計 $stepMonth 行、今年は合計 $stepYear 行書きました。"

authorにはusername(git logしたときに出るやつ)を入れてください.

railsのconstantsが反映されなかった

現象

app/initializers/constants.rbに定数を書きたくて書いたんだけど、何故か反映されなくて地味にハマっていた。時間を無駄にした…

どうするか

docker-compose killでdockerのインスタンスを終了させて、
docker-compose upで再開
要は再起動

何故これで治るのか?

app/initializers配下のファイルはアプリケーションを読み込む時にしか読み込まれないっぽい。
実行中にいくらいじってもダメなようでした。ややハマった。