Dockerfileとdocker-compose.yml
何もわからない状態から、githubでDockerfileとかdocker-compose.ymlとか見てナニコレナニコレになったので( ..)φメモメモ
Dockerfileはインフラの構成を書いている。
命令文 | 簡単な説明 |
---|---|
FROM | ベースイメージ |
RUN | コマンド実行 |
ADD | ファイルやフォルダの追加 |
COPY | ファイルのコピー |
などなど、命令文が書かれている。
docker build
このコマンドを実行すると、Dockerfileに書かれたインフラ構成でイメージが作られる。
docker-composer.ymlは複数(WEBサーバ、DBサーバとか)のコンテナの構成情報を書いている。
それぞれのDockerfileを読み込むこともできる。
たこさんのロゴの意味がよく分かった。
GASを使って条件を満たす値を改行区切りでセルに入力していく
とてもコアな内容
昔はエクセルで、単純作業嫌だからマクロで作ってたけど今はスプレッドシート使いがちなので。
同じような考え方で、単純作業をスクリプトで実装してみた。
GASの細かい基礎的なところは一旦省いて、そのままアウトプット
やりたいこと
人名×好きなものリスト
今夜のディナーは?リスト
好きなものから、食材の方を参照して料理を改行区切りでセルに入力したい
あくまで例なので、これくらいの量なら、普通に入力してもよいかも。
実際のケースでは人名に当たるものが1000近くあり、食材に当たるものが100近くあるので、辛いなと思い適当にスクリプトを書いた。
スクリプト実行のボタン設置(任意)
これは無くてもいい。(エクセルでも同じ)
普通にエディタから実行できるから。
でも気分上げるためにボタン置いたり、画像置いたりする。
挿入 > 図形描画 / 画像 選んで、挿入したものをクリックして右上の・・・を押すと↑のような状態に
「スクリプトを割り当てる」で、自分の書いたスクリプト(デフォルトならmyFunctionとか)入力して登録すると、
画像や図形をクリックするだけで割り当てたスクリプトが実行されるようになる。
自分以外の人が使うとき(GASに詳しくない人のために作ったとき)とかは、ボタン置いてあげると喜ばれるかも!
実際に非エンジニアに依頼されたときは、修造さんと図形にスクリプトを割り当ててる
実装
function myFunction() { const ss = SpreadsheetApp.getActiveSpreadsheet(); var ffMaxRow = ss.getSheetByName('人名×好きなものリスト').getRange("B:B").getValues().filter(String).length + 1; // 入力されている行数を取得 var favoriteFoods = ss.getSheetByName('人名×好きなものリスト').getRange("B2:B" + ffMaxRow).getValues(); // スプレッドF列を配列に入れる var mMaxRow = ss.getSheetByName('今夜のディナーは?リスト').getRange("A:A").getValues().filter(String).length + 1; var menu= ss.getSheetByName('今夜のディナーは?リスト').getRange("A2:B" + mMaxRow).getValues(); for(var i = 0; i < favoriteFoods.length; i++) { // 好きなものがない人はスキップ if(favoriteFoods[i] == "") continue; var resultList = []; var searchWord = favoriteFoods[i].toString().split('\n'); // 改行区切りの文字列を配列に変換 for(var j = 0; j < searchWord.length; j++) { for(var k = 0; k < menu.length; k++) { if(searchWord[j] == menu[k][0]) { resultList[j] = menu[k][1]; break; } } } // 結果を入力 ss.getSheetByName('人名×好きなものリスト').getRange("C" + (i + 2)).setValue(resultList.join('\n')); // 文字列を改行区切りに変換 } }
実行後
直したいところだらけやけど、列や行の指定はどこかで宣言しておいてそこ変えるだけでいいよって状態にしたい&結果を入力も配列に格納して最後に入力したい
エクセルもスプレッドシートもセルの情報は配列にぶち込んで操作するということを残しておきたかった
Linuxユーザーを追加してSSH接続でログインできるようにする
鍵のつくり方はここと同じような要領で作成 yamanomi5656.hatenablog.com
設定したいLinuxサーバにログインして作業開始
SSHDの設定
vim /etc/ssh/sshd_config
AuthorizedKeysFile .ssh/authorized_keys
の記述があればOK。なければ追加
認証鍵ここに置いてますからねという設定
再読み込みしておく
/etc/init.d/ssh restart
sudo権限の設定準備
※AMILinuxであれば、初期状態で設定されているので対応不要
wheelグループにsudo権限があるか確認
visudo
sudo権限に関する設定がずらっと記載されている
%wheel ALL=(ALL) NOPASSWD: ALL
が、コメントアウトされていたらコメント外す
これでパスワードナシで、rootっぽい振る舞いができるようになる
ユーザーの追加
ユーザー追加してwheelグループに所属させる
adduser [user_name] usermod -G wheel [user_name]
公開鍵を保存する
作ったユーザーに切替
su - [user_name]
ここからは作成ユーザーとしてコマンドを実行する
認証鍵ここに置いてますからねという設定 で指定した場所に鍵を置く
mkdir .ssh
vim .ssh/authorized_keys
公開鍵をコピペして、保存したらOK(i → コピペ → Esc → :wq)
最後にファイルやフォルダの権限を変更して終わり
chmod 600 .ssh/authorized_keys chmod 700 .ssh
600とか、700とかはこちらの情報を見て理解しました
http://rousi.com/tag/library/permission.html
一番わかりやすかった・・
私が子どものころからアウトプットしてくれている方々に感謝
GitLabでもGitHubでもSSH接続するまでの手順
Windowsでやりました、簡単にコマンドのみ( ..)φメモメモ
$ ssh-keygen Enter file in which to save the key (フォルダ):
そのままEnter
Created directory '/c/Users/user/.ssh'. Enter passphrase (empty for no passphrase):
パスワードを2回入力
※*とか●とかは表示されないけど、心眼で文字数は確認
公開鍵の方をGitHubやGitLabに登録
$ ssh -T git@github.com
鍵の名前もフォルダも変更しなかったら、そのままyesで先に進めて無事接続完了
You've successfully authenticated
でたらOK
docs.github.com
2021/4/8追記
公式では鍵の生成は Ed25519
を推奨しているよう
$ ssh-keygen -t ed25519 -C "your_email@example.com"
Ed25519
アルゴリズムサポートしていない場合、4096というわけで↑のコマンドだと2048なので弱い
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Git修正中にブランチ切り替えて確認したいときはスタッシュで一時退避
一時避難する
git stash
ステージとワークツリーにある情報が一時退避される。
スタッシュ一覧確認
git stash list
退避したスタッシュの一覧が確認できる。
最新の退避した情報の方が番号0になる。
※二つ作ったときに、1が最新と思って反映してとても困った
復元する
git stash apply --index
これで最新のスタッシュを復元できる。
indexオプション付けることで、ステージの情報も復元できる。
git stash apply [スタッシュ名]
listで確認したスタッシュ名を突っ込めば、どのスタッシュを復元するか指定できる。
削除する
git stash drop
最新のスタッシュ消せる。
git stash clear
全消し(not ぷよぷよ)