MySQL8でユーザーを作成して全ての権限を付与する

バージョン間の差異なのかうまくいかないことが多いのでまとめておく。

mysql> create user 'your-user'@'%' identified  by 'your-password';
Query OK, 0 rows affected (0.01 sec)

mysql> create database `your-db-name`;
Query OK, 1 row affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON `your-db-name`.* TO 'your-user'@'%';
Query OK, 0 rows affected (0.01 sec)

Ant Design を利用するときの日付ライブラリは、moment.jsが良さそう

Ant DesignというVueとReactのUIフレームワークを利用している。

色々なUIパーツがあって便利なのだが、DatePickerに日付が指定できない。

defaultValue の説明読んでいたら、moment型の指定になっている。dayjsを使っている俺死亡!

dayjsやdate-fnsを利用している人は気をつけてください。

ant.design

緯度経度の精度

GoogleMap上に、図形などをマッピングしていると緯度経度のデータが増えて重くなる。一番お手軽なデータ削減方法は、緯度経度の桁数を削ることだ。

qiita.com

5〜6桁もあれば日常のユースケースに対応出来そうですね。

5桁で精度11m。6桁で精度11cm。6桁もあればほとんどのケースで十分だろう。

UbuntuでWifi高速化

Wifiの速度を上げるため、Wifiの電力管理機能をOFFにする。

$ iwconfig
wlp8s0    IEEE 802.11  ESSID:"xxx-xxx-xxx"  
          Mode:Managed  Frequency:2.452 GHz  Access Point: XX:XX:XX:XX:XX:XX   
          Bit Rate=43.3 Mb/s   Tx-Power=22 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=38/70  Signal level=-72 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:213   Missed beacon:0

Power Management:on を確認したので設定を変更する。

/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf を開き次のように修正する。

[connection]
wifi.powersave = 2 

2(disable powersave)に変更してPCを再起動させる。

ただし、あまり効果は感じられない。次回は設定しなくてもいいかな。

imagemagicで画像の一括リサイズ(名前も変更する)編

次のフォルダ構成に格納されている画像を

g
├── x001
│   ├── 0.png
│   ├── a.jpg
├── x002
│   ├── b.jpg
└── x003
    ├── 0.jpg
    ├── 1.jpg

こんな感じにしたい。

g
├── x001
│   ├── 0.png
│   ├── 0_300x300.png
│   ├── a.jpg
│   ├── a_300x300.jpg
├── x002
│   ├── b.jpg
│   ├── b_300x300.jpg
└── x003
    ├── 0.jpg
   ├── 0_300x300.jpg
    ├── 1.jpg
   ├── 1_300x300.jpg

次のようなコマンドになる。

find . -regex "\.\/.*\/[0-9]*\..*" | xargs -P8 -I{} convert {} -set filename:x "%d/%t_300x300.%e" -resize 300x300 "%[filename:x]"

それぞれ解説。

対象画像のリストアップ

findコマンドで正規表現を利用する - 屑プログラマの憂鬱 を参照

xargsを使ってImageMagickに渡す

pipeを利用すると、findの結果数が多くて処理が落ちてしまうので、xargsを利用してImageMagickに一つ一つ渡してあげます。

xargs -P8 -I{}

-P8 は、プロセスの並列数です。ImageMagickのconvertが並列で8つ立ち上がります。PCの性能が許す限り増やしていきましょう。

-I {} は、findの実行結果であるファイル名が入る置換文字列を利用するというオプションです。

ImageMagickでリサイズする

ImageMagickのconvertを利用します。基本的なリサイズ方法としては次のとおりです。アスペクト比を保ちつつリサイズしてくれます。

convert input_file -resize  (width)x(height)  output_file

ファイル名を変更する場合は、次のようになります。

-set filename:x "%d/%t_300x300.%e"で、filename:xという変数に"%d/%t_300x300.%e"を代入し、出力ファイル名として、\"%[filename:x]"(filename:xという変数そのままを出力結果とする)としています。

  • %dは、対象ファイルのディレクトリ名
  • %tは、対象ファイルのファイル名。ただし、ディレクトリと拡張子を除く
  • %eは、対象ファイルの拡張子

他にも属性は存在して、Format and Print Image Properties @ ImageMagick にまとまっています。

findコマンドで正規表現を利用する

次のようなフォルダ構成があります。

g
├── x001
│   ├── 0.png
│   ├── a.jpg
├── x002
│   ├── b.jpg
└── x003
    ├── 0.jpg
    ├── 1.jpg

0.jpgや0.pngのようなファイル名が数字のものをリストアップさせる場合、findで正規表現を利用します。

find . -regex "\.\/.*\/[0-9]*\..*"
./x001/0.png
./x003/0.jpg
./x003/1.jpg

なお、「./」もヒットさせる必要があることに注意。これで時間を無駄に使いました。