2017/10/31

アカウント凍結が流行っているので Twitter の全ツイート履歴を取得して残す

Twitter では最近アカウント凍結が頻発してるようです。
悪意のあるツイートを多くしたり、ヤバめの R-18 の絵を載せたツイートをしたり、通報されると凍結だとの噂。
凍結される心当たりは無いですが、フォローが1000になったので、記念に全履歴を取得しておくことにしました。


履歴取得方法

まずは Twitter にログインして
  • 設定とプライバシー > ユーザ情報 > 全ツイート履歴
で全ツイート履歴をリクエストします。
しばらくすると「準備が出来たよ」とメールが来ます。
私の場合は1時間もかからなかったんかな。

次に、メールに含まれる URL を開いて全履歴をダウンロードします。
具体的には zip が手に入るので、解凍すれば全ツイート取得完了。
zip 中の index.html を開くと全ツイートを確認できます。
ちなみに私の全ツイートはこんな感じatton.github.io に載せました。
検索とかもできるますし、いつ頃にどれだけツイートしてるか、棒グラフが表示されたり便利。
流石に初期のころのツイートは懐しさしか無いですね。

ということで全ツイート履歴が手に入ったので凍結されても過去のツイートを見ることだけはできる。
しかし、本来重要なのはフォロワーの方だと思います。
例えば friends.nico で全フォロワーが再現できたらTwitter が消えても何ら問題が無くなる。
アカウント対応表みたいなのがあれば話は早いんですけれどね。

良く見ると記念ツイートなのにお仕事を募集している。早く仙人になりたい。

2017/10/30

Mercurial Repository を Git Repository に変換する

Findy という転職サイトが GitHub の public repository からスキル偏差値なるものを算出してくれます。
一度登録してみると、スキル偏差値はプレミアム本会員になるギリギリの60でした。
実際どのくらいなのだろう60。定量的な値になってると良いのだけれど。

さて、 GitHub には大学とは関係ない個人のプロダクトとかを載せていました。
大学での課題やプロダクトは大学の Mercurial Repository に残しています。
ですが、この際 GitHub にも載せることにしました。
単にスキル偏差値を上げたいだけとも言う。
単に bitbucket に上げても良いのだけれどそれだと Findy に拾って貰えないので。


環境構築

Mercurial から Git への変換は fast-export を使います。
  • $ git clone https://github.com/frej/fast-export
こいつは python を内部で使ってるのでその調整も必要です。
  • $ easy_install mercurial
とかかな。
私は python2 を brew で明示的に入れてるので
  • $ vim fast-export/hg-fast-export.sh
    • python -> python2
  • $ pip2 install mercurial
とか。実行時にエラーが出なければOKだと思います。


自分だけが Author の Mercurial Repository の変換

fast-export のセットアップが終わったら、変換します。
  • $ mkdir git_repo
  • $ cd git_repo
  • $ git init
  • $ ../fast-export/hg-fast-export.sh -r /path/to/hg_repo
これで Mercurial の Repository を元に git に commit しまくってくれます。
きちんと時刻とかも残るので便利。


Author Information が気に入らない場合

私は大学時代の時は大学のメールアドレスで commit していたので、GitHub にはアイコンが無い。
これはちょっ悲しいので Author の情報を変更する。
具体的には username と email ですね。変更するには
とかすると良い。長いけれど1コマンドです。
これは他人の commit も変更できちゃうので完全に悪用厳禁ですね。


他の人も commit している repository の変換

最初にやることは変わらずに変換。
  • $ ../fast-export/hg-fast-export.sh -r /path/to/hg_repo
んで、 Author を変更する時に発行するコマンドを変えます。
if 文で自分の変えたい username+email を指定してあげています。

これで指定したものだけが変更されます。便利。
こっちも長いけれど1コマンドですね。
これで他人の成果をきちんと残したまま、自分の気に入らないメールアドレスを書き換えられます。
やっぱり悪用厳禁なコマンドなので注意。


fast-export で変換した Repository List

どうせなので公開できる成果物のリストを残しておきます。
この成果物が誰かの参考になれば幸いです。


オチ

この後 Findy で GitHub 再連携をしたところ、算出方法が変わったようで51に下がりました。かなしい。


環境

  • OS: macOS 10.12.6
  • fast-export (cc8fefe0083bc38c781341a86a1779dc5941f6e2)
  • python: 2.7.10
    • pip: 9.0.1
    • mercurial: 4.3.3
  • Mercurial: 4.3.3
  • Git: 2.14.3


参考

2017/10/29

M3 に行ってきた

M3-2017秋<第40回即売会> へ行ってきました。
所謂音楽の同人販売ですね。


所感

お祭り騒ぎ。Rubykaigi の時も同じこと言ってたな。
実際、フライヤーの絵は上手いものが多く、ざらっと眺めていても目の保養になる。
とか絵に注目していたら、有名どころの作曲家がポンとブースを出していたりするのでびっくりイベントですよ。


入場前

今回は台風のせいもあってか雨が酷かった。
大雨の中長蛇の列に並ぶのは大変しんどかったです。
傘で片手が塞がっているので、パンフレットも読めないしでさんざんでした。
始まる前から帰りたい気持ちがちょっと出てきたレベル。
たぶん雨合羽を羽織るのが正解かな。


CD購入とか迷子とか

入場したら入場したで楽しくなってくる。お祭りだしね。
知り合いのブースを回ったり、ふと立ち寄ったブースで直感のもとにCDを買ったり。
完全に楽しんでましたね。
とりあえず回る予定だったブースも回れて満足。
どのくらい満足したかといえば、財布の中身が100円になるくらい。次は増額必須だな。
ちなみに今回も無事迷子になりました。10秒くらいで見失ったかな。
あとパンフレットをパラパラしていたら Ctrl+A を見付ける。もちろんCDを買う。
完全にあれは偶然ではなく必然だったな。愉快なことは良いことだ。
どうせデジタルでインポートするので、 CD を買うことには引け目があったけれど、イベントを楽しむ上では必須だよね。
もちろん基本はデジタルで配布してます、みたいなサークルもあった。
この辺楽にならないものかなー。


ちょっと残念だった点 or 次回改善したい点

ジャンル名が分からないのでどんな曲か想像つかない。
テクノ、とは何かみたいな。
加えて、ジャケットと曲は直接関係無い場合も珍しくないので、良ジャケットが良曲とも限らない。
ただ、もちろんそれは主催者側も把握しているようで、試聴コーナーとかありました。
ジャケ買いする場合は完全に全てのものを買うことになりかねないのでそこは審美眼を養わねばなるまい。
あとイヤホン忘れたのが致命傷でしたね。
疲れたので早々に撤退しましたが、時間の許す限り試聴コーナーに篭り続けるという技も良さそうだ。


まとめ

いやなんか楽しかった。
ちょうど作業用BGMに飽きてきた頃合いだったんだよな。
あと、M3 は年2回らしいので次は春に参加かな。


おまけ

以下、参加時のツイート(何も考えていない)。









2017/10/23

CentOS7 で VLAN を設定する

オンプレサーバ + VLAN で区切られた network を想定します。
オンプレサーバで VM を提供する場合、1つの NIC が複数の VLAN に足が生えてる状態する必要があります。
その設定をした時のログ。


環境

  • OS: CentOS Linux release 7.2.1511 (Core)
  • Kernel: 3.10.0-327.10.1.el7.x86_64


VLAN に足が生える想定の Interface (Bridge)を作る

VLAN 1つに対して1つの Bridge を作成します。
例えば VLAN 111 に足を生やすとしたら

などを /etc/sysconfig/network-scripts/ifcfg-br111 として作成します。
brctl とかで状態を見られたりしますね。


VLAN を指定して、実 Interface から Bridge する

VLAN に足を生やす元の Interface は bond0 としましょう。
先程作った br に対して実際の Interface の VLAN=yes 版をブリッジします。

とかを /etc/sysconfig/network-scripts/ifcfg-bond0.111 に書きます。
これで br111 は VLAN 111 に通信できます。
こちら側のファイルも VLAN ごとに設定を作成する必要がありますね。

  • # systemctl restart network
してきちんと network が上がってきて通信できるか確認しましょう。
複数の VLAN が1ポート内で入り混ざることを、スイッチ側にも設定しないといけない気もしますが、そこは私がやらなかったので割愛。


参考





CentOS7 で複数の NIC を束ねて bonding する

オンプレのサーバだと複数の NIC を積んでいることがあります。
それらの NIC を束ねて帯域幅を増やしたり、NIC を冗長化するなど活用法は多々あります。
今回は束ねて帯域幅を増やす設定のログを残しておきます。


環境

  • OS: CentOS Linux release 7.2.1511 (Core)
  • Kernel: 3.10.0-327.10.1.el7.x86_64
  • NIC: ifcfg-(p2p1|p2p2|p3p1|p3p2) として認識している


束ねる集約先になる、仮想の Interface を作る

まずは集約先の Interface を作ります。

とかを /etc/sysconfig/network-scripts/ifcfg-bond0 に作成。
mode=4 だと LACP で束ねてくれます。


物理NIC の Interface で集約先を指定

物理NIC の Interface で集約先を指定。
とかを /etc/sysconfig/network-scripts/ifcfg-p2p1 に作成。
具体的には Master に bond0 を指定して、SLAVE=yes にします。
これを ifcfg-(p2p1|p2p2|p3p1|p3p2) 全てに適用してみます。そうすると4本を1つに束ねられる。
最後は、設定をファイルに書き込んだ後に
  • # systemctl restart network
で適用。これできちんと network が上がってきたらOK。
単純に考えると帯域幅が4倍になってるはずです。

参考

2017/10/17

問答無用でテキストファイルの文字コードを UTF-8 にする

この記事 を見ていて文字化けとかつらいよなー、と思うなど。
私だったら nkf を CLI で使うかな、と思ったのでそれを書いておこうかなと思います。


コマンド

UTF-8 + 改行コードを unix にする、だと
  • $ nkf -wLu --override **/*.html
とか。 glob が長いと怒られるのなら
  • $ find -name '*.html' | xargs -L1 nkf -wLu --override
とか。 git 管理下にあるのなら
  • $ git ls-files | xargs -L1 nkf -wLu --override
とかでも良いでしょう。

meta タグの置換はとりあえず単に Shift_JIS を UTF-8 にするだけでいけると仮定。
それなら
  • $ sed -i -e 's/Shift_JIS/UTF-8/'
でいけます。 確か -i オプションは GNU 版の sed にしかなかったはず。
meta タグを検出する必要があったら正規表現を複雑にする必要がありますね。


おまけ

このファイルの文字コード何だ? となったら
  • $ nkf -g file.txt
で分かります。


環境

  • OS: macOS Sierra 10.12.6
  • nkf: Network Kanji Filter Version 2.1.4 (2015-12-12) 
  • sed: gsed (GNU sed) 4.4

2017/10/13

VALU で貰ったビットコインを換金する

VALU にアカウントを作っていたのですが、私のVALUを買ってくれる人がいました。
もちろん VALU でのやりとりは bitcoin 。
とりあえず遊びで仮想通貨に触れてみるのも良いかなと思って換金してみました。


ビットコイン購入/販売所 のアカウントを作る

まずは貰った bitcoin の送り先を確保します。
銀行に口座を作るみたいな感じですね。
とりあえず国内取引量最大らしい bitFlyer にアカウントを作る。


ビットコインアドレスを確認する

次に送信先のアドレスを確認します。
口座番号みたいなものですね。
bitFlyer だと
  • 設定 > bitFlyer アカウントご登録内容
にあります。
例えば「3K61u2B3k5bGmwCyDSMKyL8uF5xi7z863D」といった3から始まる長い文字列です。


VALU から bitFlyer に送金する

VALU で貰った bitcoin を確認したアドレス宛に送信します。
  • メニュー > 口座の管理 > 送金
で先程確認したアドレスを指定して、送金する bitcoin の数を決めます。
手数料で 0.0005 bitcoin ほど VALU に取られるので注意。
手数料は 2017/10/13 の時点だと300円ちょっとくらい? ですね。


bitFlyer で着金していることを確認する

bitcoin の送金には時間がかかります。
私の場合だと1時間くらいかかりました。
あとは bitFlyer で日本円に換金して終わりです。やったね。


最後に

このような手順で VALU でもらった bitcoin を日本円に換金できます。
また、もしこの記事に価値を感じた方は「3K61u2B3k5bGmwCyDSMKyL8uF5xi7z863D」に bitcoin を送ってくれると幸いです。

2017/10/12

systemd 制御下のプロセスの SEGV を追う

systemd で起動したプロセスがいつの間にか死んでる。
systemctl status を確認すると SEGV している。SEGV ......
SEGV の原因を追うために systemd 管理下のプロセスで core を取る方法とかのログ。
ちなみにそのプロセスは FreeRADIUS ですね。


コアを dump するように

  • $ vim /etc/security/limits.d/core.conf
  • $ vim /etc/sysctl.d/core.conf

コアを取るように設定。
  • $ reboot
したら設定の適用完了。


動作確認

きちんと取れるか、死んでたプロセスに

    • $ kill -11 <pid>
    とかしたら core が取れるか確認できます。


    その後

    取れたコアを使って gdb で原因を追っていく。
    その際に bt などが使えないのがつらいので
    • $ yum --enablerepo='*debug*' install /usr/lib/debug/.build-id/9c/hogehogefugafuga

    とかしておく。
    こうすると freeradius-debuginfo が入って bt とかを見られるようになる。
    とかとかしながらデバッグして原因を突き止めたのがこの記事です。


    環境

    • OS: CentOS Linux release 7.4.1708 (Core) 
    • kernel: 3.10.0-693.2.2.el7.x86_64
    • systemd: 219 +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
    • FreeRADIUS: 3.0.4

    Amazon Mastercard ゴールドを無料で再発行してもらった

    東京に引っ越してから Amazon を使う機会が増えたので Amazon Mastercard ゴールド を作りました。
    プライムユーザが Amazon で買い物をすると 2.5% ポイントとして還元してくれる。
    普通に使っても 1% 還元なのでその辺のポイントカードを持ち歩くよりは楽。

    という感じでクレカライフを楽しんでいたのですが、財布を洗濯するという悲劇が発生。
    結果クレカは無惨にも曲がってしまい、どう見ても使えない状態に。
    サポートデスクに電話したら「ゴールドカードの会員様は無料で新しいカードを発行させて頂きます」と。
    紛失した訳ではないので、番号とかもそのまま、カードを再発行してもらえました。

    手厚いサポートという感じだ。こういう面も含めて便利で良い。

    zmv を使ってまとめてファイルを rename する

    zsh には zmv という機能があって、glob で指定した部分を置換できます。
    例えば *.jpg というファイル群をまとめて *.jpeg に変換できます。

    仮に以下のようなファイル群があったとして

    • ls

    bar.jpg foo.jpg fuga.jpg hoge.jpg piyo.jpg
    • zmv -w  '*.jpg' '*.jpeg'
    すると以下のようになります。
    • ls
    bar.jpeg foo.jpeg fuga.jpeg hoge.jpeg piyo.jpeg
    便利。zmv を使うには .zshrc に
    autoload -Uz zmv
    と書く必要があります。

    ちなみに dry-run option も存在していて、 -n で dry-run ができます。
    • zmv -n -w  '*.jpg' '$1.jpeg'
    mv -- bar.jpg bar.jpeg
    mv -- foo.jpg foo.jpeg
    mv -- fuga.jpg fuga.jpeg
    mv -- hoge.jpg hoge.jpeg
    mv -- piyo.jpg piyo.jpeg

    以上、ちょっとした小技 zmv でした。-w とか -W は help を読んでみてね。
    man zshall とかを読んでも良いかも。


    環境

    • zsh: 5.4.2 (x86_64-apple-darwin16.7.0)

    CentOS7 で GFS2 を構築/本番運用したノウハウまとめ

    GFS2 を構築したり運用した時のノウハウを共有。
    どちらかと言うと「こういう事もあったなー」的なエピソードのまとめです。


    systemctl restart network はしてはいけない

    死にます。
    単一ノードの reboot は問題無くできます。
    といって network の restart はノードが fence されてしまってクラスタから切り離されます。
    クラスタから切り離されるのはまだ良い方で、最悪 HACluster 全体を巻き込んで死にます。
    具体的には gfs2 を mount しているディレクトリに ls したら永遠に返ってこない。
    全体を reboot で復活します。
    network の configuration を変える時は pcs stop --all とかしてくださいね。


    fsck.gfs2 は(直る時もある|直らない時もある)

    死んだ時にはファイルが壊れたりするのですが、場合によれば fsck.gfs2 で直ります。
    ただし、直らない時もあります。具体的には24時間以上かかっても終わらない。
    gfs2 のサイズを大きく(テラオーダー)作ったのが原因かもしれませんが、直らない時は直らないです。
    gfs2 を作った後に小さくすることはできませんが、大きくすることはできるます。
    なので、最初は小さいサイズから作るのが良さそうです。


    CPU/Network の利用率が100%になると fence される

    各ノードの死活管理には fence というものを使います。
    初期設定だと Network の利用率が100% になった時、ノードがクラスタから外されます。
    あとは CPU の使用率が高すぎる時とか。
    VMイメージのバックアップを取るためにノードが死んだりしました。
    まー1ノードくらい落ちても動くための HACluster だから良いのかもしれないけれど。


    umount までできるスクリプトを組んでおく + PowerChute との連携はしっかり

    当然ですが、gfs2 上にあるファイルに読み書きしている時には umount できません。
    例えば VM を gfs2 に置いてると、destroy する必要があります。
    停電した際に電源が UPS に切り替わった時、 umount できないと焦ります。
    スクリプトとかを書いておいて、よしなにしてくれるようにした方が良いでしょう。
    出来れば pcs で管理して、gfs2 を止める時に kvm で動いている VM を全て destroy した方が良いです。
    あとは停電対策として PowerChute とかとも連携すると良いですね。


    scsi-shooter は暇なノードに置いておくと良い

    fence を行なうノードはクラスタに1つで良いです。
    なので、全ノードが fence 用のプロセスを起動している訳ではない。
    死活監視のプロセスなので忙しいノードよりは暇なノードに置いた方が良いことが多いです(さっきの100%問題とか)。


    公式ドキュメントを読もう

    というかgfs2の参考文献とかだと公式ドキュメントしかなかったりします。
    設定から何から書かれているので読みましょう。


    環境

    • OS: CentOS Linux release 7.2.1511 (Core) 
    • Kernel: 3.10.0-327.10.1.el7.x86_64
    • pcs: 0.9.143


    参考

    2017/10/10

    Docker でデータの保存先をデフォルトの場所から変更する

    Docker は CentOS7 だと image などを /var/lib/docker 以下に保存します。
    しかし、その場所を使わずに他の場所へと変更することも可能です。
    例えば、SSD のドライブに置くようにしたらイメージの読み書きが早くなるでしょう。
    データの場所を変更するには /etc/sysconfig/docker を編集して -g オプションを追加します。
    具体的にはこんな感じ。

    これで

    • # systemctl restart docker
    すると、 -g で指定したディレクトリにデータが保存されるようになります。やったね。


    環境

    • OS: CentOS Linux release 7.2.1511 (Core)
    • Kernel: 3.10.0-327.10.1.el7.x86_64
    • Docker: version 1.12.6, build c4618fb/1.12.6


    参考

    2017/10/09

    virsh vol-create-from を使って異なる storage pool 間でイメージをコピーする

    libvirt はVMイメージの置き場として Storage Pool というものを提供しています。
    Storage Pool は libvirt が操作可能な記憶領域です。
    例えば、 Akatsuki による VM 貸し出しのフローは

    • テンプレート用のVMイメージをテンプレートのストレージプールから読み取る
    • 貸し出し用ストレージプールにテンプレートのVMイメージをコピー
    • 貸し出しインスタンスとしてコピーされたものを起動する
    といった形式になっています。



    状況

    • ストレージプール a と b がある
    • ストレージプール a に hoge.img がある
    • hoge.img をストレージプール b に fuga.img として複製したい


    状況を再現するコマンド

    とりあえず前提条件のストレージプール a と b を作ります。
    今回のストレージプールはディレクトリタイプ。
    他にも特定のデバイスをプールにするタイプなどいろいろあります。
    • # virsh pool-define-as a dir - - - - /path/to/a
    • # virsh pool-build a
    • # virsh pool-start a
    • # virsh pool-autostart a
    • # virsh pool-define-as b dir - - - - /path/to/b
    • # virsh pool-build b
    • # virsh pool-start b
    • # virsh pool-autostart b
    これで2つのストレージプールができました。

    そして a に hoge.img を作ります。
    • # virsh vol-create-as  --pool a hoge.img 10G
    イメージができました。vol-list で確認します。

    この hoge.img を b にコピーしたい。

    やり方はいくつかありますが、今回は vol-create-from を使う方針でいきます。
    その場合は xml が必要なので dumpxml で作っておきます。
    • # virsh vol-dumpxml  --pool a hoge.img > fuga.xml
    fuga.xml  の key や path を hoge の情報から、所望の情報に変更しましょう。
    今回は /path/to/b/fuga.img になるように書き換えます。

    そして vol-create-from でコピー。
    • # virsh vol-create-from --inputpool a --vol hoge.img --pool b  --file fuga.xml 
    再度 vol-list で確認します。

    fuga.img が作成できていることが分かります。やったね。


    環境

    • OS: CentOS Linux release 7.4.1708 (Core)
    • Kernel: 3.10.0-693.2.2.el7.x86_64
    • virsh: 3.2.0


    参考

    TimeMachine の Local Backup を無効にする

    作業中に df したら謎のボリュームが増えている。
    どうやら TimeMachine の Local Backup というやつらしい
    MBP の中に Backup 用のデータを溜めておいて、 TimeMachine の Disk 無しで復元などができるらしい。
    私の Backup の運用としては邪魔なので無効化。
    SSD の容量持ってかれるのは嫌なので。

    • $ sudo tmutil disablelocal
    これで消える。


    参考


    2017/10/07

    Akatsuki を OSS 化した

    Akatsuki を OSS 化して GitHub で公開しました



    Akatsuki とは琉球大学情報工学科のシステムです。具体的には
    • 学生のIP申請
      • 対応するドメインを内向き DNS へと登録
      • その IP を DHCP で配れるように
    • 学生のVM新規作成/起動
    • 学生のパスワード変更
      • unix login
      • 802.11X で無線に繋ぐ際の RADIUS を提供
    といったことができます。


    つまり今まで記事で部分部分を解説していたものの本体です。
    関連している記事は以下。


    公開にあたって

    もちろん大学の内部情報をそのまま GitHub に投げるわけにはいきません。
    なので、こいつは OSS 化用にいじってあります。
    具体的には漏れたらまずい情報を消してあります。
    あとライセンスは MIT だし気にせず自分でいじって公開していく。

    その手順として
    • $ git rm very-important-information
      • で公開してはいけない情報を消して
    • $ git commit
      • コミットします。
    • $ git rebase -i --root
      • その後に rebase します。
      • 全部 fixup して一つのコミットにまとめてしまいます
      • fixup しないと復元ができてしまうので、消しても意味がない。
      • ということで、逆に言えばこの手順を踏めばアカンやつを隠蔽できます。


    まとめ

    所謂実績の一つとして見てもらえると良いかなー、と思って OSS 化しました。
    ということで、大学生/大学院生時代にしていた仕事の1つが OSS になりました。

    2017/10/06

    Heroku の Hobby プランの PostgreSQL が一杯になったので Standard にアップグレードした

    Rails を使った Web application を heroku の hobby プラン(無料枠) で運用中、DBへの書き込みができなくなる。

    • $ heroku logs

    を漁ると

    ActiveRecord::StatementInvalid (PG::InsufficientPrivilege: ERROR:  permission denied

    とある。何事だろう。
    調べたら、レコードが多すぎる時に発生するらしい。

    • $ heroku pg:info

    すると無料枠の 10k レコードを越えていました。
    というかぴったり 10k 制限じゃないんだ。優しさなのかなんなのか。

    参照した記事の場合、レコードを消して対応していました。
    私の場合、レコードを消すわけにはいかないので、 hobby からの upgrade をすることにしました。


    コマンド

    正直なことを言えば公式のドキュメントが最強です。
    指示通りでそのまま問題なくアップグレードできます。
    なので、コメント付きで公式ドキュメントをなぞるくらいの気持ちでログを残します。
    • $ heroku maintenance:on
      • Application を止めます。メンテナンスモードですね。
      • おお、これは所謂「停止メンテ」だ。何が起こるか分からないのが良いですね。
    • $ heroku addons:create heroku-postgresql:standard-0
      • DB を新規に作成。プランは standard にしました。
    • $ heroku pg:wait
      • 新規作成したDBを使えるようにします。
    • $ heroku pg:info
      • を見ると DB が増えています。
    • $ heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_BLACK_URL
      • 古いDBから新しいDBにコピー。
      • DATABASE_URL は置換するとかではなく、この文字列で正しい。
      • なので postgresql-lively-12345 とかに書き換える必要は無いです。
      • 公式ドキュメントだと PINK とかだったかな。どうやらネーミングは色らしい。
    • $ heroku pg:promote HEROKU_POSTGRESQL_BLACK_URL
      • 新しい standard の方をメインのDBにセットします
      • これで DB の移行は終わり
    • $ heroku maintenance:off
      • メンテナンスモード終了
      • これで DB がアップグレードされた状態で Web Application が上がります。
    流石 PaaS 。サクサクメンテができるのでインフラに手間がかからない。
    ということで淡々とアップグレードができたのでした。ぱちぱち。



    参考

    2017/10/03

    私がフリーランスになってから行なった手続き

    さて、私は 2017/08/10 からフリーランスのエンジニアになった訳ですが、その際の手続きを残していこうと思います。
    これはフリーランスになりたい人向けの先人のログです。
    もちろん当時の状況を反映したものなので、貴方がフリーランスになる時は話が違うかもしれませんが、それは御愛嬌。


    はじめに

    まずフリーランスという単語ですが、特定の組織に所属しないという意味だそうです。
    なので法的には個人事業主という立場になる場合が多いと思います。


    個人事業主になるには

    税務署に開業届を提出します。
    開業freeeなどを使うと質問に答えるだけで開業届を作成してくれます。便利。
    これを所轄の税務署に提出すればあなたも個人事業主。
    ただし、今まで会社が行なってきた税金や保険や年金の支払いを自分で行う必要があります。


    確定申告と会計ソフト

    まずは税金について。個人事業主になると確定申告が必要になります。

    確定申告は、収入や経費などを計算して所得税を計算し、それを収めることらしいです。
    確定申告には白色申告と青色申告があって、青色の方が複雑な分65万円分の控除が受けられるようです。
    また、青色申告をしますよ、という事前届けが必要。
    ちなみに開業freeeでは青色申告の申請書類も作ってくれるので便利。
    青色申告をするためには開業後から一定期間内に提出する必要があったはずです。
    私は開業届と一緒に提出したので気にしていない。
    なので青色申告の申請書類も税務署に申告ですね。

    流石に自分で帳簿をつけたくないので会計ソフトを使うことにしました。
    使うのは freee 。開業freee でお世話になりましたからね。


    健康保険

    会社にいた時は、会社の健康保険で通院費用負担が3割でした。
    しかし個人事業主は全額負担しなくてはなりません。これは恐ろしい。
    それを回避するために誰でも入れる国民健康保険があります。
    計算すると場合によっては結構高くなる場合もあるらしいです。

    別の手として、会社に所属していた時の健康保険を継続する方法があります。
    任意継続呼ばれるもので、2年間だけの制限付きですが同じ健康保険を続けられます。
    ただ、会社時代は会社が半分保険代を出していたので、負担額は倍になります。
    しかし、病院代全額負担にはかえられない。
    任意継続申請の期限は退職日から2週間以内なので早めに動いた方が良いです。

    ドワンゴでは、関東ITソフトウェア健康保険(ITS)に加入していました。
    エンジニアの初任給は30万円だったので、それに対応する等級だと 25k とか。

    私は任意継続を選びました。
    ある意味、2年後にまた今後どうするか考える機会が発生することになります。
    退職時に貰った書類を提出して口座振り込みで任意継続は完了。

    なお、保険証は一旦返却するので、保険証が存在しない恐怖の2週間が存在します。


    国民年金

    年金などの手続きも自分でやる必要があります。
    これも退職から2週間以内。手続きを行うのは市町村役場。
    離職表などを持っていく必要があります。
    ちなみに私の退職日は 08/09 なのですが、厚生年金は7月まで加入扱いで、8月から国民年金という形になります。

    ねんきんネットで手続きできるかと思いましたが、項目が無い。
    担当の年金事務所に電話したら、窓口での対応になるとのことでした。

    ということで年金事務所へ。

    • 身分証明書
    • 年金手帳
    • 離職票
    を持っていきました。

    国民年金への切り替えとして「国民年金被保険者関係届書」を作成して提出しました。
    これで切り替えはOK。この手続きには身分証明書と年金手帳のみでOKでした。


    国民年金保険料免除(失業時)

    切り替え自体はこれで終わりですが、担当者から失業時の保険料免除について教えてくれました。
    学生特例制度みたいなものですね。
    年金を納めなくて良いのは同じですが、免除になると半額を国が出した扱いにしてくれます。
    学生特例制度だと受給期間だけしか増えないのでこれは大きいですね。
    失業時は前年の所得を減らして計算するそうです。
    あと、人によっては失業保険とかも受けられると思います。
    有効期間は1年間。16k * 12 は大きい。申請しました。
    結果が出るのは二ヶ月後とのこと。


    まとめ

    フリーランスになってからの方が社会制度とかをいろいろと知った気がします。
    やはり必要になると人間調べるものです。
    あと、世の中は知らないと損をすることが多い。
    また、こういう制度もあるよ、という助言はいつでも歓迎です。
    この記事が、フリーランスになりたい貴方の参考になれば幸いです。


    おまけ: 毎月かかる費用

    さて、一応書いておかねばならないのは出費。
    開業届けに関しては費用はかかりません。
    健康保険は月 25k ほど。これは収入に対して比例するので増減します。
    国民年金は月 16k ほど。これは固定。
    両方とも前納制度とかがあるのでちょっとお得になる時もあります。
    税金は収入次第。

    ということで、私だと毎月40kくらいが無くなります。
    その分も踏まえて仕事ができるとうれしいものです。

    なお、この記事を書いている 2017/10/03 時点ではフリーランスを続けられています。頑張ってる。


    参考