それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

debianのphpでapcuを有効にする。

APCuが有効にならない。

sudo -u www-data php occ
An unhandled exception has been thrown:
OC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)

清く正しくdebian提供の、コマンドphpenmodでモジュールを有効にする。

# phpenmod apc

apc のモジュールはロードされている。

ls -l /etc/php/*/*/*apc*
-rw-r--r-- 1 root root  31 Nov  4  2018 /etc/php/7.3/mods-available/apcu_bc.ini
-rw-r--r-- 1 root root 109 Jul  5 15:14 /etc/php/7.3/mods-available/apcu.ini

しかし、有効にならない。

sudo -u www-data php occ
An unhandled exception has been thrown:
OC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)

php -i で状況を見る。有効にならない・・・

# php -i | grep -i apcu

/etc/php/7.3/cli/conf.d/20-apcu.ini,
/etc/php/7.3/cli/conf.d/25-apcu_bc.ini
APCu Version => 5.1.17
apcu
APCu Support => Disabled
APCu Debugging => Disabled

apc 関連のphp.iniが欠損していると気づく。マジか。

cat <<EOF  >> /etc/php/7.3/cli/conf.d/20-apcu.ini

[apcu]
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php

EOF

APCuが有効になった。

php -i | grep -i apcu
/etc/php/7.3/cli/conf.d/20-apcu.ini,
/etc/php/7.3/cli/conf.d/25-apcu_bc.ini
APCu Version => 5.1.17
apcu
APCu Support => Enabled
APCu Debugging => Disabled

結論

debianphp-apcu のモジュールでは apc.enabled = 1 が欠損している。

debian 系の php-mods のインストールには気をつけろ。

今回は少し古いdebianphpでメンテナンスをしていたので、最新版では治ってるかもしれないが。十分に気をつける必要がある。

Google Apps Scriptで、セルのK3の参照を出す。カラムの番号( col ) をアルファベットの参照に変える

ColumnとAddressの相互変換

K3 をはそのまま取得できるが 逆が難しい。

getRange( 'K3' )

getRange でアルファベットを使った、相対(絶対)参照をつかってスプレッドシートの領域を取れるのだが、逆に、セルを参照形式に変換するのが、頭を悩ませた。

K3 セルを取るには、どうすればいいんですか?

getRange( 3,10 ) //=> 'K3' にしたい

なのだけど、colum K = col:10 を変換するのが大変。アルファベットのA-Zまでならいいけど、AA-ZZまでくるともう大変だった。

Column番号を、アルファベットに変更

アルファベットの「文字」に変換する。適当なセルに一時的に=ADDRESS(3,10,4) を書き込めば K3が取れる

  findStartColLetter(sheet,col) {
    let tmp = sheet.getRange(1000, 1, 1, 1);// 適当な
    tmp.setValue('=ADDRESS(3,' + col + ',4)')
    let a = tmp.getDisplayValue();
    tmp.clear();
    return a[0];
  }

文字にするには、とりあえず ADDRESS 関数に掛けるのが速いのだが。ADDRESS関数を使った結果を取らないといけない。でもAddressに相当するGAS の関数が見当たらない。仕方ないので、ADDRESSを適当なセルに書き込むことに。

なぜアルファベットのカラム名が必要なのか。

getRange で、数字でアクセスできるのに、なぜ文字列を使ったセル参照名に変える必要があったのか。 それは、条件付き書式の計算である。

条件付き書式を読みやすく指定する。

条件付き書式に AddressやINDIRECTを使うと、うまく動作しなかったのである。また関数が増えるとあとで読んだときにわかりくいのである。

その他のGASの記事

Goole App Script ( GAS ) を始める。記事一覧 - それマグで!

Gitのリモートブランチをcloneする。

git の リモートブランチをclone したい

直接 clone できるわけじゃないけど、新規でclone する場合は結構楽に行える。

いつも流れ作業でやってるし過去にも書いてるんだけど。誰かに伝えるために改めてメモ。

作業の流れ

最初に、メインなブランチ(master)を clone する。 その後にリモートブランチをcheckout する。

作業コマンド

全体の作業の流れはこんな感じ。

git clone ${REPO_URL}
cd ${REPO_DIR}
git fetch 
git checkout -b ${BR_NAME} origin/${BR_NAME}

作業例

既存フォルダがあれば消す。

takuya@osx:~/Desktop$ rm code -rf

clone する

clone した時点では、master(main) ブランチ

takuya@osx:~/Desktop$ git clone git@ssh.mygit.example.com:repo/sample-/code.git
Cloning into 'code'...
remote: Enumerating objects: 413, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (143/143), done.
remote: Total 16630 (delta 315), reused 302 (delta 247), pack-reused 16217
Receiving objects: 100% (16630/16630), 98.06 MiB | 13.38 MiB/s, done.
Resolving deltas: 100% (5694/5694), done.
Checking out files: 100% (832/832), done.

git フォルダ内部へ移動

takuya@osx:~/Desktop$ cd code

リモートブランチの状態を調べる

takuya@osx:~/Desktop/code$ git fetch
takuya@osx:~/Desktop/code$ git branch -r
  origin/HEAD -> origin/master
  origin/deploy-test
  origin/master
  origin/staging

リモートブランチをチェックアウト

takuya@osx:~/Desktop/code$ git checkout -b staging origin/staging
Branch 'staging' set up to track remote branch 'staging' from 'origin'.
Switched to a new branch 'staging'

チェックアウト結果を調べる。

takuya@osx:~/Desktop/code$ git branch
  master
* staging

ポイント

git ブランチは、ローカルとリモートで別々に存在します。

リモートのブランチをローカルでチェックアウトして使います。

チェックアウト時に、ローカルで変更(差分)があると、コンフリクトが発生したり、自動マージが走ったりします。注意してください。