eSATAのポートのあるサーバーに3.5インチのSATA HDDを繋ぎたかった

動機

eSATAのポートのあるサーバーに3.5インチのSATA HDDを繋ぎたかった

仕様を確認

  • 3.5インチのハードディスクには12V電圧の供給が必要
  • USBの供給電圧は5V
    • USB供給は不可能
  • eSATAには電源供給できるタイプもあり、eSATApは5V、eSATAp+は12V供給できる(このへんは独自実装ぽい)

サーバーのポートを確認

普通のeSATAしかなかった。どうするか。

選択肢

結論

ドライブ用AC電源供給アダプタは面白いけど、eSATAを頑張っても使う機会はほぼない。 Linuxカーネルが2.6.31以降ならUSB3をサポートしているみたいだし、PCIeのUSB3カード挿そうと思う。

mdadm raid6のリカバリ、サイズ拡張などを試してみる

system rescue cdでraid6を作ってリカバリなどを試してみる

過去にはこんなこともしていた。mdadm RAID1復旧の試験 - Bouldering & Com.

  1. system rescue cd起動
  2. sshで接続
    1. SystemRescueCd 緊急起動、ファイル救出などに使えるSystemRescueCdを使う。 - 綾小路龍之介の素人思考
  3. 仮想hddマウント
  4. ループバック・デバイス作成
  5. raid6作成
  6. failed deviceが2つでも動くか
  7. failed markしたのを戻せるか
  8. 大きいディスクに交換して大きくできるか

結論としては問題なかった。

下準備

ループバック・デバイス作成 複数作るのでfunctionにしておく

function mk_loop () {
  dd if=/dev/zero of=10x${2}-${1} bs=10MB count=$2
  losetup /dev/loop${1} 10x${2}-${1}
}
for i in `seq 4` ; do mk_loop $i 5 ; done;
for i in `seq 5 8` ; do mk_loop $i 10 ; done;
% mdadm --create /dev/md0 --level=raid6 --raid-devices=4 /dev/loop[1-4]
% mkfs.xfs /dev/md0
% mkdir /mnt/raid
% mount /dev/md0 /mnt/raid
% echo hello raid6 > /mnt/raid/message
% cat  /mnt/raid/message
hello raid6
% mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Sep 23 14:52:48 2017
     Raid Level : raid6
     Array Size : 95232 (93.00 MiB 97.52 MB)
  Used Dev Size : 47616 (46.50 MiB 48.76 MB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Sep 23 14:55:41 2017
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : sysresccd:0  (local to host sysresccd)
           UUID : 88fc17be:fd8579d1:da3fc972:6379f879
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       7        1        0      active sync   /dev/loop1
       1       7        2        1      active sync   /dev/loop2
       2       7        3        2      active sync   /dev/loop3
       3       7        4        3      active sync   /dev/loop4

下準備ができた。

間違えてfailed markしちゃったらリカバリできる?

ふたつfailさせる。

% mdadm --manage /dev/md0 --fail /dev/loop3
% mdadm --manage /dev/md0 --fail /dev/loop4
% mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Sep 23 14:52:48 2017
     Raid Level : raid6
     Array Size : 95232 (93.00 MiB 97.52 MB)
  Used Dev Size : 47616 (46.50 MiB 48.76 MB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Sep 23 14:57:37 2017
          State : clean, degraded
 Active Devices : 2
Working Devices : 2
 Failed Devices : 2
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : sysresccd:0  (local to host sysresccd)
           UUID : 88fc17be:fd8579d1:da3fc972:6379f879
         Events : 21

    Number   Major   Minor   RaidDevice State
       0       7        1        0      active sync   /dev/loop1
       1       7        2        1      active sync   /dev/loop2
       -       0        0        2      removed
       -       0        0        3      removed

       2       7        3        -      faulty   /dev/loop3
       3       7        4        -      faulty   /dev/loop4

戻せる?

% mdadm --manage /dev/md0 --re-add /dev/loop3
mdadm: re-add /dev/loop3 to md0 succeed

re-addで戻る。よかった。 addはダメ。

% mdadm --manage /dev/md0 --add /dev/loop4
mdadm: Cannot open /dev/loop4: Device or resource busy

removeしてからre-addできる?

% mdadm --manage /dev/md0 --remove /dev/loop4
mdadm: hot removed /dev/loop4 from /dev/md0

re-addを試す

% mdadm --manage /dev/md0 --re-add /dev/loop4
mdadm: --re-add for /dev/loop4 to /dev/md0 is not possible

できない。いちど外すとダメなようだ。

% mdadm --manage /dev/md0 --add /dev/loop4
mdadm: added /dev/loop4

いちど外すとaddしないといけなくて再構築が走ってしまう。

disk - How do I unmark a “failed” md device? - Ask Ubuntu

大きいディスクに交換していく

loop[3-4]から2つずつ交換していこう。

% mdadm --manage /dev/md0 --fail /dev/loop3
mdadm: set /dev/loop3 faulty in /dev/md0
% mdadm --manage /dev/md0 --fail /dev/loop4
mdadm: set /dev/loop4 faulty in /dev/md0
% mdadm --manage /dev/md0 --remove /dev/loop3
mdadm: hot removed /dev/loop3 from /dev/md0
% mdadm --manage /dev/md0 --remove /dev/loop4
mdadm: hot removed /dev/loop4 from /dev/md0

100MBのloop[5-6]を追加する

% mdadm --manage /dev/md0 --add /dev/loop5
mdadm: added /dev/loop5
% mdadm --manage /dev/md0 --add /dev/loop6
mdadm: added /dev/loop6

同様にloop[1-2]も外す

% mdadm --manage /dev/md0 --fail /dev/loop1
mdadm: set /dev/loop1 faulty in /dev/md0
% mdadm --manage /dev/md0 --fail /dev/loop2
mdadm: set /dev/loop2 faulty in /dev/md0
% mdadm --manage /dev/md0 --remove /dev/loop1
mdadm: hot removed /dev/loop1 from /dev/md0
% mdadm --manage /dev/md0 --remove /dev/loop2
mdadm: hot removed /dev/loop2 from /dev/md0

loop[7-8]を追加

% mdadm --manage /dev/md0 --add /dev/loop7
mdadm: added /dev/loop7
% mdadm --manage /dev/md0 --add /dev/loop8
mdadm: added /dev/loop8

これで全部100MBのディスクになった。

% mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Sep 23 14:52:48 2017
     Raid Level : raid6
     Array Size : 95232 (93.00 MiB 97.52 MB)
  Used Dev Size : 47616 (46.50 MiB 48.76 MB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Sep 23 15:20:12 2017
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : sysresccd:0  (local to host sysresccd)
           UUID : 88fc17be:fd8579d1:da3fc972:6379f879
         Events : 170

    Number   Major   Minor   RaidDevice State
       6       7        7        0      active sync   /dev/loop7
       7       7        8        1      active sync   /dev/loop8
       4       7        5        2      active sync   /dev/loop5
       5       7        6        3      active sync   /dev/loop6

growで大きくしよう

% mdadm --grow /dev/md0 --size=max
mdadm: component size of /dev/md0 has been set to 96256K
% mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Sep 23 14:52:48 2017
     Raid Level : raid6
     Array Size : 192512 (188.00 MiB 197.13 MB)
  Used Dev Size : 96256 (94.00 MiB 98.57 MB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Sep 23 15:22:17 2017
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : sysresccd:0  (local to host sysresccd)
           UUID : 88fc17be:fd8579d1:da3fc972:6379f879
         Events : 181

    Number   Major   Minor   RaidDevice State
       6       7        7        0      active sync   /dev/loop7
       7       7        8        1      active sync   /dev/loop8
       4       7        5        2      active sync   /dev/loop5
       5       7        6        3      active sync   /dev/loop6

大きくなった。ので、ファイルシステムを拡張する。

% xfs_growfs /dev/md0
meta-data=/dev/md0               isize=512    agcount=4, agsize=6016 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0 rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=23808, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=624, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 23808 to 48128
% df -h /dev/md0
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        186M  5.3M  181M   3% /mnt/raid

上手にできました。

実験は以上で終了。なにかあっても対応できそう。

後始末

ループバック・デバイス削除

losetup -d /dev/loop0
rm loop1.img

ドラム式洗濯乾燥機を検討して止めた

結論

うちにドラム式洗濯乾燥機は不要

現状

  • 縦型一槽式インバーター洗濯機
  • 洗濯 + 天日干し
  • 簡易乾燥機能は使っていない
  • 洗濯は週4くらい

ドラム式洗濯乾燥機にした場合のメリット

  • 洗濯物を干して取り込むというフェーズを省略できる
    • 20分くらい
    • 週で80分、月で320分、年で64時間。けっこうな時間だ

ドラム式洗濯乾燥機にした場合のデメリット

  • 初期投資が高い
    • 15万くらいはどうしたってかかる
  • 耐用年数短い
    • 5年くらい?
    • 縦型と比べたらどうしても短い
    • メンテナンスも必要
  • 乾燥機能はどうしたって衣類が痛む
    • 特別服が好きというわけでもないけど、気に入っている服を長く着ることが多いので、気に入っているものが痛むのは悲しい
  • コストが上がる
    • 現状が洗濯の水道代 + 電気代なので、水道代が安くなると言っても、乾燥分の電気代がかかるからコストは跳ね上がる

Builderscon Tokyo 2017に行ってきたよ

会社のお金で行かせてもらったのでSlack channelで実況メモ投げながら参加していました。 複数日をまたぐ有料のカンファレンスってそういえばとても久しぶり。YAPC2013以来かな。

聞いたやつ

大人のビルコン 〜撤退技術スペシャル〜

その昔に開催された大人のYAPCもじつは参加していたんだけど、あのときはもっと下世話な話が多かったけど、ずいぶんまともな話ばかりでちょっとびっくり。 すごいいい話をたくさん聴けたのでエモの部分を社内に共有したい。

PHPで支える大規模アーキテクチャ

サービスの成長に合わせて非同期処理が必要になってきたので、Lambda ArchitectureをKafka, Spark, Cassandraで構築したという話。 LLと絡めていい感じに、みたいな知見を期待してたけどちょっと違った。裏のElectronの話( Desktop Apps with JavaScript )のほうがよかったかなあ。

真のコンポーネント粒度を求めて

会社のフロントエンドまわりで悩んでるひとのリクエストで参加。 まあ銀の弾丸はないという話なんですけど、Atomic DesignとEnduring CSS開発プロセスや体制含めての話なんだよというのが大きな知見で、 Atomic Design by Brad Frost, http://ecss.io を読む機運が高まった。

Solve your own problems

です

複雑なJavaScriptアプリケーションに立ち向かうためのアーキテクチャ

Anatomy of DDoSに参加してたけど、知ってることの説明多かったのでこっちに移動。 Aパートは設計原則の話でDDD的な話、Bパートはおれならどう書くという具体例。 QAも活発で、いい質問が多くてよかった。

  • 原理原則を知った上で必要に応じて設計していこう
  • さいきんReact, Reduxでやっている設計 - non117’s diary
  • Almin.js | JavaScriptアーキテクチャ
  • 設計に答えはない。チームで合意をとろう
  • 設計の失敗がわかるのは、仕様変更があったとき
    • 困ったら失敗。スムースなら成功
    • 設計失敗したと思ったらコメント書いておこう。意図していたことと謝罪
    1. やり過ぎ設計もあるけどどうすればいいの?
    1. 難しいよね。仕事ならそこそこ分けたほうが幸せになることが多い

RDBアンチパターン リファクタリング

やっていく気持ちが大切。 - データベースリファクタリング本読むといいよ - 絶版なったけど… - 設計はにんげんが価値を出せるところ - マネージドサービスでも必要なやつ - データは変化していく - DB設計は積み木 - 三角形の上に積み木は置けない - ごくまれに天才はいて三角のうえに球をのせたりする - ちゃんと大きな四角を下に置こう

LT

Validation話の勢いがLTっぽくてよかった。 https://gist.github.com/sasezaki/0535d0db63329ffc41edb431b694f59b

静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話

JSON Schema, JSON Editor, go/constantとかのstdlib, GAE namespace APIとか、既存の仕様、機能、サービスを組み合わせててスマート。ぜひ真似したいと思った。

Googleが開発したニューラルネット専用LSITensor Processing Unit」

Googleさんにはぜひ今後とも計算力を増やして欲しいという感想しか残らなかった。

AWS CodeBuild を使ってものすごい並列数で CI を実行しよう

Amazon CodeBuildは、既存のCIの置き換えではなく、汎用的なSlaveっぽいやつ、ただのDockerリソースプールということを教えてもらえた。 現実は厳しいようだけど、コストメリットがでるといいですね。

Factory Class

Jesse VincentといえばPerlのひとと思っていたけど、今はキーボード作ってるとは。 聞くも涙な現実の苦労の話で、まさにDiscover something new. Jesseのこれがmy favoriteだった。

The Evolution of PHP at Slack HQ

すごい現実的なトーク。QAの回答も、HHVMの開発者いるし、とか完全に違う言語に移行するのはムリだと思う、Hackくらいならまだ移行しやすかったとか、めっちゃ現実的。 HHVMの影響でトークも高速化されたけど、QAが活発でよかった。

  • PHPはbad languageと言われる
    • the vices and virtues
  • ビジネスで成功した会社の多くはPHPを採用してる

感想

みんな活き活き発表しててよかった。 次回あれば、自分の不動産物件探しの話とかなんかでプロポーザル出してみようかなと思う。

ME572CLが電源が入らなくなったので分解して修理した

カバンに入れていたらいつのまにか電源が入らなくなってしまった。

ASUSに修理依頼しようと思ったけど購入が2015年なので保証も切れていることだし、自分で開けて治してみた。

すでに殻割りしてるひとはたくさんいるので、同じやり方で開いてバッテリーから伸びているフラットケーブルを挿し直したら、電源入るようになった。よかった。

育児休業給付金受給期間中にどれだけ働かずに所得効率を最大化する方法を考える

雇用継続給付については、毎年8月1日に変更されるようなのでこの情報は2016年8月1日時点での正しさしかない。年が違うならよく注意すること。

また労務士や社会保険事務所に確認したわけじゃないので間違えているかもしれない。そしたら誰かおしえて。

tl;dr

自分の月額賃金をいれると給付金としていくら貰えるのか、働いた場合に何時間まで働くのが所得効率が最大化するのかを計算するスプレッドシートを作ったので各自やっていってください。

https://docs.google.com/spreadsheets/d/14BoqQO7SLiMUIMCSWz_VtU-VVJ9fBWZWYtV_QfhpGG4/edit?usp=sharing

背景

育児休業をとろうと思っているので育児休業給付金は欲しいが、会社の状況として完全な休暇にできるかが不明。でも、給付金が減額されるくらい働いて無駄働きになるのはすごくいやだ。

なので、何時間までだったら無駄にならずに働くことができるのかを計算してみた。

参考

https://www.hellowork.go.jp/dbps_data/material/localhost/doc/ikuji_kyufu.pdf

「賃金日額」は、事業主の提出する「休業開始時賃金月額証明書(票)」によって、原則育児休業開始前6か月の賃金を180で除した額です。これに上記(1)の支給日数の30日を乗じることによって算定した「賃金月額」が424,500円を超える場合は、「賃金月額」は、424,500円となります。(これに伴い1支給対象期間(1か月)あたりの育児休業給付金の支給額(原則、休業開始時賃金日額×支給日数の67%(50%))の上限額は284,415円(212,250円))

https://www.hellowork.go.jp/insurance/insurance_continue.html

解説

ここでいう賃金とは額面での金額のはず。

例えば賃金が50万円とした場合、

  • 育児休業開始前6か月の平均月額賃金: 50万円
  • 賃金日額(育児休業開始前6か月の賃金を180で除した額): 50 * 6 / 180 => 1.67万円
  • 賃金月額: Min((1.67 * 30)万円, 424,500) => 424,500円

なので、育児休業給付金の支給額(原則、休業開始時賃金日額×支給日数の67%(50%))は

  • 上限額の284,415円(212,250円)

になる

育児休業中に働くとどうなるか/どれだけ働けるか

育児休業給付金の支給額は「賃金日額×支給日数(上記(1)又は(2))」の80%を超えるまで支給される。

なので、上記のケースでは、

賃金日額×支給日数: 1.67 * 30 = 50万円

になり、これの80%である40万円(50万円 * 0.8)までは会社から給料を得ていいことになって、40万円 - 284,415円 => 115,585円分は働くと所得効率が最大化する。

この金額を通常の賃金の50万円と比較すると0.23117となり、37時間までならタダ働きにならずに働くことができる。

効率よく働いていきたい。

5度目(帰国後初)のTOEICは795点

  • LISTENING: 410
  • READING: 385

の795点。 1年半アメリカで生活して薄々感づいていたけど、俺の英語力は大して伸びてないということが事実確認とれました。 やー、しんどいなあ。せめて800点は欲しかった。

See also: 4度目のTOEIC受験の点数は720点 - Bouldering & Com. See also: 2度目のTOEIC受験の点数は630点 - Bouldering & Com. See also: 2010年08月17日のツイート - Bouldering & Com.