VS Code(Visual Studio Code)には、自動整形の機能があるので、コマンド入力でインデントなどを自動整形してくれる。他のモードでもフォーマッタがあれば、このコマンドで自動整形してくれる。
Windowsの場合
Shift + Alt + Fキー
Macの場合
Option + Shift + Fキー
VS Code(Visual Studio Code)には、自動整形の機能があるので、コマンド入力でインデントなどを自動整形してくれる。他のモードでもフォーマッタがあれば、このコマンドで自動整形してくれる。
Windowsの場合
Shift + Alt + Fキー
Macの場合
Option + Shift + Fキー


2022年のおせち料理は、和風ではなくて、洋風のおせち料理にしてみた。(変なところで注文して届かないと嫌なので、今回もANAのショッピングサイトで注文した。)リストランテ ポルトファーロの洋風おせち料理だ。
一段の重のみの2,3人用の小さめのサイズ。縁起物的な感じで組まれているオードブルだった。1つ1つは、飽きる前に食べ終えることができる感じでよかった。かなり海老が被っている感じがするが、まぁ、それは構成上仕方ないのかもしれない。伝統的な和風のおせち料理もいいけれど、洋風のおせち料理もいいかもしれない。ここのところ、和風のおせちの構成に飽きていたので。洋風のおせちは、コスパもまぁまぁだったので、コンパクトな正月にはよかったと思う。美味しい料理だった。洋風はわかったので、今度は中華風のおせち料理を試してみるのもありかもしれない。
ちなみに、和風のおせち料理でも好きなもの、数の子や松前漬けや黒豆などは、個別に用意しているので、全部が洋風というわけではない。洋風の難点をあげるとすれば、お酒のチョイスだろうか。日本酒ではなく、ワインな感じの料理になってしまったので。

2022年、あけましておめでとうございます。
昨年を振り返ってみると、2021年はあっという間にすぎてしまった気がします。オリンピックはあったけれど、2020年の延長のような、自粛で行動を最小限にしていたりと、失われた時の気がします。失われた時を求めてはいけないけれど。
今回は初日の出は見に行かず、混雑する前の初詣に軽く出かけ、空いている都内や高速道路をドライブしてきた。お正月ムードな感じを味わい、正月になった気がしてきた。今年の初詣は、いくつかの場所にふらふらといきたいものだ。
今年は、いい一年になることを願いたい。
今日で、メインの厄年が終わる(はず)。来年は、後厄なので、少しはまともな状況になると信じたい。本当に今年はいろいろとあった。特に仕事面は、いろいろとあってひどかった。これでもかってくらい、いろいろとあった。これで終わってくれるといいのだけど。ほんとに、よく耐えたと思う。
さあ、気持ちよく新年が始まると期待して。
企業ユーザ向けの「調整さん」のTimeRexを試してみた。Freeプランで試しているので、検証していないものもあり。
使い始める前に簡単に権限まわりや運営を調べてみた。
Googleカレンダーへのアクセス権限が強力なのが気になるが、実際に使ってみると・・・
気が付いたところは、こんな感じだ。3人以上の調整には有料プランが必要。ビジネス用途として、ちゃんと調整するには有料プランにする必要あり。1対1の調整が多ければ、フリープランでも困らないのかもしれないが。
「調整さん」との比較だと、TimeRexの方がインターフェースもイマドキでよい。同じ使い方をしようと思うと、有料プランが必要なので、簡単な予定調整ならば、「調整さん」だろう。
Windows10のOS動作が不安定の場合は、システムファイルチェックを実行して、修復を試す。

これで完了。
最初に、「create user」文で、ユーザを作る。その時にパスワードも設定する。
次に、grant文で、DBの権限を割り当てる。grant文でユーザ作成も同時に行うこともできるけれど、個人的には、2文に分けた方が設定がわかりやすくて安心できる。
例)DBとユーザを作り、DBにユーザの権限を付ける。
create database dbname;
create user 'user_name'@'localhost' IDENTIFIED BY 'password';
grant all on 'dbname'.* TO 'user_name'@'localhost';


珍しくというか、初めてヨドバシカメラの福袋が当たった。悩んだ末、当たったSimフリーiPhoneの夢を購入した。
福袋の中身は、iPhone12 Pro 128GBモデルのパシフィックブルー。13 Proが出たので、12 Proは販売終息のモデルだ。Proなので、写真やらなんやらとストレージを使うモデルなのに、128GBはサイズとして小さい。オプションのようなアクセサリーもない。iPhoneだけだ。256GBがよかった。2022年のヨドバシの福袋はハズレだ。昔はもっとよいものが入っていたような気がする。
Google Apps Scripsから、Google Cloud SQLのMySQLにSSL(TLS)で通信を暗号化して接続するコードのサンプル。このとき、Cloud SQLのMySQLは、MySQL 5.7よりも古くないと接続できない。
DBへの接続は、JDBCを使用する。このとき、JDBCの読み込みは必要なく、GASのエディタ上で直接記述してよい。このサンプルでは、SSL(TLS)を使用するバージョン。接続にPEMファイルを使うため、あらかじめGoogle Cloud SQL側で発行しておく必要がある。
記載するPEMファイルの中身は、末尾に改行コードを表す”\n”をいれて、さらにコード上の改行を明示的にするために”\”を入れる必要があった。なので、PEMファイルの中身の末尾が”\n\”になっている。
接続のチェックのため、コンソールログに、いろいろと書き出すようにしている。Logの部分はなくても、問題なし。
サンプルコード。
function myFunction() {
dbConnection();
}
// --------------------------------
// SSLで接続する
// --------------------------------
function dbConnectionSSL(){
Logger.log('start dbConnection function.');
// 接続先設定
var connectionIp = 'xxx.xxx.xxx.xxx'; // 接続のMysqlのIPアドレス(ホスト名も可)
var userName = 'user'; // 接続で使うユーザ名
var passwd = 'pass'; // 接続で使うパスワード
var databaseName = 'dbname'; // データベース名
var addr = 'jdbc:mysql://' + connectionIp + '/' + databaseName + '?useSSL=true';
// SSL用の証明書を変数に入れる
var clientKey = '\
-----BEGIN RSA PRIVATE KEY-----\n\
MIIEowIBAAKCAQEAyDuIOE1t/ABFSMIz/2Ni4vIoaNvBkDLaeJdl6KmeK9iexl2D2d\n\
~~~中略~~~
P8B5s7xmSbH4Yv/OeKrw8F6xAmoQmWVlnw686I0QqNHexlwIe3lss2LDEI3d\n\
-----END RSA PRIVATE KEY-----';
var clientCert = '\
-----BEGIN CERTIFICATE-----\n\
MIIDVzCCAj+gAwIBAgIEJD9I+TANBgkqhkiG9w0BAQsFADB7MS0wKwYDVQQuEyRl\n\
~~~中略~~~
QNwLDry8Tk3DwnD07+dkQf+FFFu943GFUlY9d4Rv75S+Vwm2Ci2azIRR2Q==\n\
-----END CERTIFICATE-----';
var serverCa = '\
-----BEGIN CERTIFICATE-----\n\
MIIDfzCCAmegAwIBAgIBADANBgkqhkiG9w0BAB3MS0wKwDELW39xwSDyQ3ZjVm\n\
~~~中略~~~
bfgDM8ARAAqMqECaXYC8+xHviva4ON6weeD/wsdessDP9K3ws3mGKbbjlLmc=\n\
-----END CERTIFICATE-----';
Logger.log('start mysql con');
Logger.log(addr);
var connectionInfo = {
user: userName,
password: passwd,
_serverSslCertificate: serverCa,
_clientSslCertificate: clientCert,
_clientSslKey: clientKey
}
Logger.log(connectionInfo);
var connection = Jdbc.getConnection(addr, connectionInfo);
Logger.log(connection.getCatalog());
// コネクションを閉じる
connection.close();
Logger.log('end');
}