Github Actionsで使える補助的な機能についてメモしておきます。
補助的な機能
- CIをスキップする
- コミットメッセージに[skip ci]を含める。どこに書いてもいい。
- ドラフトPR
- 修正途中のPRをWIPとして作成可能。マージできないPRとなる。
Github Actionsで使える補助的な機能についてメモしておきます。
Jenkins pipelineを使ったデプロイジョブが動作不良になった経緯があり、基本概念を調べてまとめておきます。
Jenkins2.0においてPipeline Pluginが標準装備になりました。
Pipelineは、デプロイのパイプライン(ステージ毎の工程)を可視化するツールで、Groovyスクリプトで記述できます。
https://jenkins.io/doc/pipeline/
node → stage → step
node('master') { stage('手順1') { sh 'step1' sh 'step2' sh 'step3' } }
nodeが実行マシンのイメージ。
ステージ毎に各ステップを実行していくという形で記述する。
MySQLにおける実行計画の見方について記載します。
format=jsonをつけてexplainを実行する。
explain format=json 【クエリ】
query_cost
の箇所にコストが表示される
{ "query_block": { "select_id": 1, "cost_info": { "query_cost": "3599.86" }, "nested_loop": [ { "table": { "table_name": "s", "access_type": "ALL", "possible_keys": [ "PRIMARY" ], "rows_examined_per_scan": 11309, "rows_produced_per_join": 113, "filtered": "1.00", "cost_info": { "read_cost": "2400.18", "eval_cost": "22.62", "prefix_cost": "2422.80", "data_read_per_join": "100K" }, "used_columns": [ "shop_id", "shop_nm", "menu_cd" ], ・ ・ ・
以下のような形式で結果が表示
各項目の詳細は以下です。
項目名 | 結果候補 | 説明 |
---|---|---|
id | - | 実行順番。同数字の場合、複数クエリが1クエリで実行 |
select_type | PRIMARY | 外部クエリ |
DEPENDENT SUBQUERY | 相関関係のあるサブクエリ | |
table | - | 対象テーブル名 |
partition | - | どのパーティションテーブルか |
type | const | pk or uniqueインデックスを使用。最も速い |
eq_ref | -joinにおいてのconstと同義 | |
ref | constでないインデックスを使って等価検索(where k = v)を行った時に使用されるアクセス | |
range | indexを用いた範囲検索 | |
index | フルインデックススキャン、インデックス全体をスキャンしているので遅い | |
ALL | フルテーブルスキャン、インデックス未使用。一番遅い | |
possible_keys | - | optimizerがテーブルのアクセスに利用可能だと判断したインデックス |
key | - | 実際にoptimizerによって使用されたキー |
key_len | - | 選択されたキーの長さ。長さは短いほうが高速 |
ref | - | 検索条件でkeyと比較されている値やカラムの種類 |
const | 定数値 | |
結合相手の検索条件カラム | JOIN時 | |
rows | - | テーブルのfetch行数、見積もり |
filtered | - | テーブル条件によってフィルタ処理される行の推定の割合 |
Extra | - | optimizerの戦略。項目多いので省略 |
JMeterの出力結果の簡単な読み方について記載します。
$ apache-jmeter-5.3/bin/jmeter.sh -n -t test.jmx summary + 2297 in 00:00:24 = 95.4/s Avg: 1176 Min: 1 Max: 16483 Err: 15 (0.65%) Active: 113 Started: 120 Finished: 7 summary + 1303 in 00:00:06 = 210.9/s Avg: 429 Min: 22 Max: 5709 Err: 0 (0.00%) Active: 0 Started: 120 Finished: 120 summary = 3600 in 00:00:30 = 119.0/s Avg: 906 Min: 1 Max: 16483 Err: 15 (0.42%)
上記では、1行目で120リクエストが開始されたが、7リクエストしか終わっていない。 エラーも発生しているため、分間(または秒間)にさばけるリクエスト数を減らす必要がある。
タイトルの通りだけど、ssh時はローカルで設定したlocaleを引き継いでしまい、 接続先はen_USだったはずなのに、ja_JPになるということがある。
ssh -v でデバッグすると、接続先にロケール情報を引き継いでいることを確認できる。
[接続元]$ ssh -vi ***.pem ec2-user@***.***.***.*** OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 debug1: Reading configuration data /etc/ssh_config debug1: /etc/ssh_config line 20: Applying options for * debug1: Connecting to ***.***.***.*** [***.***.***.***] port 22. debug1: Connection established. debug1: identity file test-cm.pem type -1 debug1: identity file test-cm.pem-cert type -1 ・ ・ ・ debug1: Sending environment. debug1: Sending env LANG = ja_JP.UTF-8
SSH接続時のLANG設定がOS設定値と異なる時の対処方法 | DevelopersIO
/etc/ssh_configのEnvをssh時に送信する設定をコメントアウトするとlocale設定を引き継がなくなる。
Host * # SendEnv LANG LC_*
以下のパラメータを付与するとブランチや色付け行数を指定可能
【URL】?at=master#lines-190:191
ブランチ:at=【ブランチ名】
行数色付け:#lines-【開始行数】:【終了行数】
便利なショートカットを記載しておきます。
カテゴリ | コマンド | 概要 | 詳細 |
---|---|---|---|
ナビゲーション | command + option + 左右キー | ナビゲーションのUndo/Redo | |
検索 | Shift + Shift | 全て検索 | プロジェクト内のファイル名、クラス名、シンボル名(変数、メソッド等)をインクリメンタル検索。クラス検索(Ctrl + N)で詳細検索 |
Ctrl + Option + H | 呼び出し階層を開く | ||
Ctrl + F12 | メソッド一覧を開く | ||
Command + E | 最近開いたファイルを開く | 開いた後にCommand + Eを押すと修正したファイルのみを開く | |
編集 | Shift + F6(fn押しで) | 名前変更 | |
Ctrl + J | ライブテンプレート | 省略コマンドでテンプレート呼び出しで実装効率化 | |
メソッド名の上で、/ **と入力してEnter | メソッドJavaDocコメント生成 | ショートカットはない | |
Option + Shift + ↑ or ↓ | 行の移動 | ||
Command + Option + L | コードフォーマット | ||
設定 | Ctrl + , | 設定を開く | |
テスト | パッケージを選択してCmd+N | テストクラスを作成 | |
クラス内でCtrl+Enter | テストメソッドを作成 | ||
エラー箇所でCtrl+Enter | コンパイルエラーを解消する | ||
テストメソッド内でCtrl+Shift+R | 特定のテストを実行する | ||
テストクラス内でCmd+Shift+T | テスト ←→ 実装コード | ||
メソッドにカーソルをあわせてCtrl+Cmd+B | テストコードで呼び出しているメソッドへ移動 | ||
(どこでも)Ctrl+R | 最後に実行したテストの再実行 |