2017/01/09

/var/lib/docker の移動

docker のホストマシン容量不足対策。

docker をインストール後稼働していると、ディスクが足りなくなることがあります。
いらないイメージを削ればいいのですが、イメージが削れない状況もあると思います。
外部ディスクマウント後の容量食う /var/lib/docker の移動の仕方に関して記します。

docker 停止

sudo service docker stop

/var/lib/docker を移す

ディスク容量に余裕がある場所に /var/lib/docker を移す。(ここでは例として /mnt/extra/docker とする)
インストール直後ぐらいなら、mv で、
安全にやりたいなら

mkdir /mnt/extra/docker
sudo rsync -aXS /var/lib/docker/. /mnt/extra/docker/

設定ファイル変更

redhat系の場合

設定ファイル: /etc/sysconfig/docker
(あれば追加で、なければ作成)

echo other_args="-g /mnt/extra/docker" > /etc/sysconfig/docker

debian系の場合

設定ファイル: /etc/default/docker

# DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4"
DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt/extra/docker"

と書かれていますが、手前の ubuntu 16 では動きませんでしたので

ubuntu 16 の場合

設定ファイル: /lib/systemd/system/docker.service

# ExecStart=/usr/bin/dockerd -H fd://
ExecStart=/usr/bin/dockerd -g /mnt/extra/docker -H fd://

その後、

$ sudo systemctl daemon-reload

docker 再起動 & 確認

sudo docker service start

確認は

docker info

Root Dir: の項目を見れば良い

2016/12/31

2016年 大晦日

Blog

更新頻度は高くないけど、ぼちぼちと技術情報をアップしているStackeditを使うようになったからかも。

カメラ

Sony A99II が販売されたのはいい励みになった。
高いけど。高すぎるけど。もう少し安いフルサイズα出してくれないかな。
祭用に外付けフラッシュを買ったのと、その効果に満足!屋内撮影時にも活躍してくれる。来年は財布と相談しつつ、中古でフルサイズαを狙えたらいいなぁ。

読書

全然。やばい。もう少しなんか読もう。
なろうのリゼロは全部読んだ。二回読んだ。

プログラミング

今年5月にPHPデビュー。そのままの勢いで年末までPHPメインで仕事。
そしてそのままの勢いで来年もPHP野郎になってしまう予定。
いっそ行き切るところまで行ってしまう予定。

地元交友関係

ついに地元の神輿会に入ってしまった。
Tシャツゲット。

勉強会

最近忙しさや心の余裕がなかったりで、あまり出れてない。
来年はもう少し出ていこうと思う。

SNS

Twitter, instagram, facebook をぼちぼちと

アニメ

NETFLIXのおかげで過去作品を結構見始めた。
今年のベストはリゼロかな。

Game

今年クリアしたゲームはWiiUのトワイライトプリンセス、現在はベヨネッタをプレイ中。年を通してHearth Stoneも継続中。ゴマ乙にも手を出したおかげで脳内に弾幕シューティング系の回路構築済み。
来年はNintendo Switch が販売されるのが楽しみ。

外国語

英語は去年末より会話力は落ちた気がする。
お金の節約でiknow辞めたのは少し痛いかもしれない。今年は人生で初めてのTOEIC を受けてみたので、一応の自分の学習の目安として一年に一度ぐらいは受け続けていきたい。

トルコ語は、まだまだ勉強中。会話をしっかりこなせるように来年は目指していきたい。

ベトナム語は完全にもう挨拶フレーズのみ。発音が日本人には無理ゲー

今年はなんといっても、年末に所属している会社がなくなるというビックイベントが発生。正確には親会社に吸収合併されるので、働く場所が消えるわけではないのですが、会社文化が完全に違う会社に吸収されるか、他の働く場所を探すか散々迷った挙句、働く場所を変えることを選択しました。来年からは新しい会社で頑張っていきたいと思います。目指せWEB系!でも組み込み系の仕事もしたいので、それが別口で出来たらいいな!

2016/11/10

Smaller APKs : Android におけるAPKを小さく保つためのテクニック

Android Performance Patterns Session にいい動画が上がっていたので、備忘録として中身を書き出しておく

Removing Unused Resources

gradle file にて以下の minifyEnabledshrinkResources をセットしておく。

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
            'proguard-rules.pro'
        }
    }
}

これらはアプリ内で使用していないリソースを除去してくれます。

Multi Resources Support

Android がサポートしているリソースサイズを全て揃えるとそれだけで結構な量になるので、必要なものだけ使う。

ldpi mdpi から自動で作られる
mdpi
tvdpi 使わない
hdpi xxhdpi から自動で作られる
xhdpi xxhdpi から自動で作られる
xxhdpi
xxxhdpi
  • mdpi
  • xxhdpi
  • xxxhdpi

のみ使用する

Vector Drawables

PNG や JPEGの代わりに vector 画像を使うようにする。

Reuse Existing Resources

可能であれば画像の再利用を行う、
例えば、下向きの矢印を上向き矢印に変更するなど。 他にもAndroid の機能を使って、以下のものを変更できる。

  • color tint(色味)
  • shapes(形)

Removing Unused Code

  • ProGuard を使う
  • ProGuard を使う時は、minifyEnabled true を使って ProGuard の仕事量を減らす。
  • 必要なライブラリの軽いバージョンを見つける、どうしてもない場合は必要な箇所のソースだけ抜いてくる。

Apk Analyzer

Android Studio 2.2 から搭載された apk analyzer を使う。

2016/07/21

Laravel :: phpunit with clean database.

Laravel + postgresSQLを使ったサイトで unit test を書いてたが、既存のデータベースを使うと、テストが意図しない挙動になることがあったので、汚れていないDBを使いたくなったので、調べてやってみたら、意外と詰まってしまったという話。

環境

  • laravel 5.x
  • PostgreSQL

sqlite in memory database を使う方法

config/database.php

環境変数で default 値を差し替えれるようにする

'default' => env('DB_DEFAULT', 'pgsql'),

config/database.php

memory database の定義を作る

'sqlite_testing' => [
    'driver'   => 'sqlite',
    'database' => ':memory:',
    'prefix'   => '',
],

phpunit.xml

環境変数追加。環境変数を与える方法は別に何でも良い。

~~~~~~~~~~~~~
        <env name="DB_DEFAULT" value="sqlite_testing"/>
    </php>
</phpunit>

TestCase.php

都度migrateをするようにする。

  public function setUp()
  {
      parent::setUp();

      $this->artisan('migrate');
      $this->artisan('db:seed');
  }

  public function tearDown()
  {
      $this->artisan('migrate:reset');
  }

これで上手くいく人は上手くいく。


Sqliteでエラーがでる場合の対処1

Driver not found

[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'Doctrine\DBAL\Driver\PDOSqlite\Driver' not found

が出たら。

cmposer に

"doctrine/dbal": "^2.5"

ALTER TABLE SYNTAX ERROR

さらにエラーが出る。
ALTER TABLE が syntax エラーと migration 中に出る。

ここからヒントをもらう。

以下のスレッドの中で、SQL Features That SQLite Does Not Implement [sqlite.org] を参照。つまり、sqliteで実装されていないので、エラーになっている。

ここを参考に、

エラーがでない内容の migration だけを行い、
そのsqlite file をテスト前にコピーして、テスト後破棄するというもの。

少々面倒。

また以下問題も見つかる。

migration 中にエラーが出たら、エラーが出たファイルを消して、migration を終了させた後、テストを流してみたが、特定のカラムが無いというエラーが起きた。
一つの migration ファイルの中で、ADD COLUMNDROP COLUMN 両方を入れているとエラーにならず、追加もされない。

Sqliteでエラーがでる場合の対処2

sqlite を諦め、PostgreSQL に一時的な testdb を作成し、
そちらでテストを行い、終了後は drop database する。

script を書きそれを実行した。

psql -U postgres -c "CREATE DATABASE testdb"
php artisan migrate --database=pgsql_testing
php artisan db:seed --database=pgsql_testing
phpunit -c phpunit.xml "$@"
psql -U postgres -c "DROP DATABASE testdb"

これでようやく上手くいった。

2016/07/02

[読書メーター] 2016年6月まとめ

並行して、色々と技術本を読み始めたので、
読了数が少なくなったけど気にしない。



2016年6月の読書メーター
読んだ本の数:1冊
読んだページ数:400ページ
ナイス数:4ナイス

ゲームウォーズ(上) (SB文庫)ゲームウォーズ(上) (SB文庫)感想
フルダイブ型仮想世界がインフラ化してる世界で製作者の仕込んだ謎を解くと国家予算並の遺産をゲットできるエッグハントが始まって数年。80年代マニアの製作者が用意した最初の謎を問いた主人公と続々続いて謎を説いていく他のプレイヤーたち、お互いの姿が見えずとも明日にはライバルが次の謎を解いて先に行ってしまうかもしれないという焦燥感とシンクロする。80年代マニアック知識も良いし、海外小説であることを主張する翻訳も良い。
読了日:6月30日 著者:アーネスト・クライン

読書メーター