メンチカツ

ロースカツが好きです

【メモ】mov を gif に変換する alias

リモートワークで、作ったものをスクリーンキャプチャで共有する機会が多くなりまして

ffmpeg を使って、mov を gif に変換する alias を登録しました。

$ brew install ffmpeg

したあとに ~/.zshrc などに以下を追加

function m2g() {
  command ffmpeg -i $1 -r 6 $1.gif
}

んで source ~/.zshrc して

$ m2g movie.mov

とすると movie.mov と同じ場所に movie.mov.gif が作成されます。 20秒くらいなら github に貼れるサイズ (max10M) の gif になると思います。

もっとサイズを小さくしたい場合は、フレームレート (-r 6 のところ) の数値を小さくすればOKです👍

【メモ】 php:7.3-fpm コンテナに多言語対応モジュール intl を入れる

PHPで多言語対応の際使うメソッド Locale::acceptFromHttp() を利用するために intl を有効にします。

https://www.php.net/manual/ja/intro.intl.php

んで、合わせて libicu-dev をインストールします。これを忘れちゃう!なのでメモ。

Dockerfile に追加してビルドすればOKです。

RUN apt-get update \
    && apt-get install -y libicu-dev \
    && docker-php-ext-install intl

Vue.jsでカウントアップするタイマーのコンポーネントをつくった

必要に駆られて夜な夜な急遽作ったのですがせっかくなので置いておきます。

props でタイマーのON/OFFをセットするよ。

<!-- Usage -->
<CountUpTimer :on-start="isStarted" />
<template>
  <div class="count-up-timer">
    <div class="time">
      {{ time }}
    </div>
  </div>
</template>

<script>
export default {
  name: 'CountUpTimer',
  props: {
    onStart: {
      type: Boolean,
      required: true,
      default: false
    }
  },
  data() {
    return {
      totalSec: 0,
      timeKeeper: null
    }
  },
  computed: {
    time() {
      const hour = Math.floor(this.totalSec / 3600)
      const min = Math.floor((this.totalSec - hour * 3600) / 60)
      const sec = this.totalSec % 60
      const time = []
      if (hour > 0) time.push(`0${hour}`)
      time.push(`00${min}`.slice(-2))
      time.push(`00${sec}`.slice(-2))
      return time.join(':')
    }
  },
  watch: {
    onStart(started) {
      started ? this.start() : this.stop()
    }
  },
  methods: {
    start() {
      this.timeKeeper = setInterval(() => {
        this.totalSec++
      }, 1000)
    },
    stop() {
      clearInterval(this.timeKeeper)
    }
  }
}
</script>

【メモ】rails consoleで「Can't connect to MySQL server on '127.0.0.1'」

db:migrate は問題なくできる環境で、 rails console からのDB接続ができない。

$ bundle exec rails console

[1] pry(main)> Hoge.all
Mysql2::Error::ConnectionError: Can't connect to MySQL server on '127.0.0.1' (111 "Connection refused")
from /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `connect'

おかしいな?DBサーバー名は 127.0.0.1 じゃない値を設定しているのだけども。。

試行錯誤した結果、 springをオフにして実行したらDBにつながりました。

DISABLE_SPRING=1 bundle exec rails console

なんか腑に落ちないけど、同じ症状のひとがいたら試してみてください。

【メモ】docker-compose 環境の Ruby on Rails で bundler が利用できない

Dockerコンテナのなかで rails console すると起動出来ない。

$ rails console
Could not find gli-2.19.0 in any of the sources
Run `bundle install` to install missing gems.

bundle install しても治らない。

$BUNDLE_PATH が上書きされていた。

$ echo $BUNDLE_PATH
/usr/local/bundle # <= 正しいパス

$ cat ~/.bundle/config
---
BUNDLE_PATH: "vendor/bundle" # <= 上書きしてたパス

上書きしてたパスのファイルを削除したら治った!

$ rm ~/.bundle/config

去年も同じネタで嵌まっていた。

来年はこれで嵌まらないようにしたい。

【メモ】Visual Studio CodeでPHP CS Fixerが「php general error」

php-cs-fixer.phar もパス通したのに「php general error」が解決出来ない。

拡張機能の組み合わせの相性が悪かったらしく、インテリセンスを変更したらなおった。

PHP IntelliSense をやめて PHP Intelephense に変更。

docker-composeのNuxt.jsからAPIをコールしたら「[HPM] Error occurred while trying to proxy request」

f:id:easy-breezy:20191025170443p:plain

こういう構成のdocker-composeで、frontendコンテナ(Nuxt.js:localhost:3000)から

backendコンテナ(Laravel:localhost:8000)にAPIリクエストをしたら

[HPM] Error occurred while trying to proxy request /api/hoge from localhost:3000 to http://localhost:8000/

という504エラーが返ってきて、backendまで届いていない。。

これは フロントエンドの nuxt.config.js のproxy設定が間違っていて、

proxy: {
  '/api': {
    target: 'http://localhost:8000/api',
    pathRewrite: {
      '^/api/': '/'
    }
  }
},

を以下のように修正してリスタートしたらなおった。

proxy: {
  '/api': {
    target: 'http://backend:8000/api', # コンテナ名に変更!
    pathRewrite: {
      '^/api/': '/'
    }
  }
},

[HPM] Error occurred while trying to proxy request 、webフロントエンド作るたびに言われてる気がする。