alpine linux でインストールされる python3 のバージョン

Cloud SDK で python3.9 を利用したときにエラーになったのでメモ

Cloud SDK にはサポートされている Python3 のバージョンがあってそれ以外を使ったときにエラーになることがある。
今回は node:16.13.2-alpine を使って apk add python3 をしたときに Python3.9 がインストールされた。

Cloud SDK のインストール時のエラーは↓

Welcome to the Google Cloud SDK!
WARNING: You appear to be running this script as root. This may cause 
the installation to be inaccessible to users other than the root user.
Traceback (most recent call last):
  File "/google-cloud-sdk/bin/bootstrapping/install.py", line 12, in <module>
    import bootstrapping
  File "/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 32, in <module>
    import setup  # pylint:disable=g-import-not-at-top
  File "/google-cloud-sdk/bin/bootstrapping/setup.py", line 57, in <module>
    from googlecloudsdk.core.util import platforms
  File "/google-cloud-sdk/lib/googlecloudsdk/__init__.py", line 23, in <module>
    from googlecloudsdk.core.util import importing
  File "/google-cloud-sdk/lib/googlecloudsdk/core/util/importing.py", line 23, in <module>
    import imp
  File "/usr/lib/python3.9/imp.py", line 23, in <module>
    from importlib import util
  File "/usr/lib/python3.9/importlib/util.py", line 2, in <module>
    from . import abc
  File "/usr/lib/python3.9/importlib/abc.py", line 17, in <module>
    from typing import Protocol, runtime_checkable
  File "/usr/lib/python3.9/typing.py", line 26, in <module>
    import re as stdlib_re  # Avoid confusion with the re we export.
  File "/usr/lib/python3.9/re.py", line 124, in <module>
    import enum
  File "/google-cloud-sdk/lib/third_party/enum/__init__.py", line 26, in <module>
    spec = importlib.util.find_spec('enum')
AttributeError: module 'importlib' has no attribute 'util'

Exited with code exit status 1

alpine Linux でインストールされるバージョンは↓で確認できる。 pkgs.alpinelinux.org

python3.8 を入れたいときは、 ↓のようにして v3.13 を指定すると良さそう。

apk --no-cache add --repository http://dl-cdn.alpinelinux.org/alpine/v3.13/main python3~=3.8

Ref

macの構成管理メモ

PC入れ替えをしたときに設定していた項目をすれて違和感を感じることが多かったのでメモ

  • Ansible で構成管理することもできそう
  • defaults コマンドで今の設定を確認できる。そこから設定したい項目を探して確認する
  • shell で defaults コマンドで設定していくでも良さそう
  • キーボードの Caps Lock のキーを変更するなどはできない。するには少しハックしないといけなさそう。キーボードごとに設定なのでめんどくさそう。 keyboard - Changing modifier keys from the command line - Ask Different

Ref

Github ActionsでPRが作成されたときにそのブランチ名を取得する

単純にブランチ名を取得しても remotes/pull/10/merge のような形で自分が作成したブランチ名とは違っていました。 コミットハッシュ値も違うのでベースブランチとPRしたブランチをマージしたものとかなんでしょうか?

PRの最後のコミットハッシュ値github.event.pull_request.head.sha で取得できるのでそこからブランチ名を特定する方法にしたところ無事ブランチ名が取得できました。

name: pr_opened

on:
  pull_request:
    types:
      - opened

jobs:
  comment:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Create comment
      env:
        PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
      run: |
        git fetch --no-tags --depth=1 origin
        HASH_AND_BRANCH=`git name-rev ${PR_HEAD_SHA}`
        BRANCH=`echo "${HASH_AND_BRANCH##*remotes/origin/}"`
        echo "PR Opened" >> comments
        echo "Branch name: ${BRANCH}" >> comments
        sed -i -z 's/\n/\\n/g' comments
    - name: Post comment
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        URL: ${{ github.event.pull_request.comments_url }}
      run: |
        curl -X POST \
             -H "Authorization: token ${GITHUB_TOKEN}" \
             -d "{\"body\": \"$(cat comments)\"}" \
             ${URL}

github.com

CloudFrontで簡単なフロントエンド環境を構築するテンプレートを作った

CloudFront と S3 を使った簡単な静的サイトを作るときの CloudFormation のテンプレートを作った

github.com

構成は S3 においた index.html を CloudFront でキャッシュするだけの構成です。

f:id:naught00:20191104171140p:plain

CloudFront に設定出来る SSL 証明書は 米国東部 (バージニア北部) us-east-1 にする必要があるようで、その部分だけは注意が必要だと思った

VSCode で手動で vue-i18n-ally の設定を書くメモ

Vue.js で i18n の設定をしていると実際の日本語が何かぱっと見でわからないです。

VSCode を使っている場合、プラグインの vue-i18n-ally を入れることで日本語が見れる様になって便利でした。

github.com

手動で設定を書かないとうまく動かせなかったので設定を残しておきます。

.vscode/settings.json

{
    "vue-i18n-ally.readonly": true,
    "vue-i18n-ally.experimental.sfc": true,
    "vue-i18n-ally.localesPaths": [
        "src/locales"
    ],
    "vue-i18n-ally.keystyle": "nested",
    "vue-i18n-ally.sourceLanguage": "ja"
}

Nuxt 2.8 から 2.9 へのマイグレーションメモ

Nuxt TypeScript というページができていました。 Nuxt 2.8 から 2.9 のマイグレーション手順が書いてあるのですがメモを残します。

typescript.nuxtjs.org

元環境

  • Nuxt 2.8
  • TypeScript (nuxt.config.ts)

を使用している環境

きちんと読めば問題無いのですが、移行手順書の 5. TypeScript Runtime (optional) を無視すると nuxt.config.js が見つからないため、デフォルトの設定で動きます。

マイグレーション手順

  • パッケージ更新
npm uninstall @nuxt/typescript
npm i nuxt
npm i -D @nuxt/typescript-build
npm i @nuxt/typescript-runtime
  • npm script修正

nuxtnuxt-ts に変更

  • 型定義の読み込み修正
import { Context } from '@nuxt/vue-app'; // nuxt 2.8
import { Context } from '@nuxt/types';  // nuxt 2.9
import { ErrorParams } from '@nuxt/vue-app';  // nuxt 2.8
import { NuxtError } from '@nuxt/types/app';  / nuxt 2.9
import NuxtConfiguration from '@nuxt/config';  // nuxt 2.8
import { Configuration as NuxtConfiguration } from '@nuxt/types';  // nuxt 2.9
  • tsconfig.js の修正
"types": ["@types/node", "@types/jest", "@nuxt/vue-app"]  // nuxt 2.8
"types": ["@types/node", "@types/jest", "@nuxt/types"]  // nuxt 2.9
  • extract-css-chunks-webpack-plugin の設定修正

css の order ででるWARNINGを消している場合オプションが変更されています。

https://github.com/faceyspacey/extract-css-chunks-webpack-plugin/blob/v4.6.0/src/index.js#L534

options.orderWarning = false;  // nuxt 2.8
options.ignoreOrder = true;  // nuxt 2.9

EmbulkでMySQLからBigQueryへデータを転送するときの注意点

Embulk を使って MySQL から BigQuery へデータを転送するときにはまった部分を忘れないように記録として残しておく

github.com

DBの設定などで一度に大量のデータを取得することが難しい場合などに fetch_rows で1度に処理するデータ量を調整することが必要になることがありそうです。

in:
  type: mysql
  fetch_rows: 1000

改行が含まれるデータを BigQuery へ転送する場合は allow_quoted_newlines: 1 が必要になります。

out:
  type: bigquery
  allow_quoted_newlines: 1

参考

embulkでBigqueryにテキストデータ流し込めなかった話 - 無気力生活 (ノ ´ω`)ノ ~゜

TB越えのMySQL 巨大テーブルを 1日で BigQueryへLOADする - Mercari Engineering Blog