みの雑多ブログ

勉強したことをアウトプットしたり、しなかったり

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の細かい基礎的なところは一旦省いて、そのままアウトプット

やりたいこと

人名×好きなものリスト
f:id:yamami78651:20210507173043p:plain
今夜のディナーは?リスト
f:id:yamami78651:20210507173555p:plain
好きなものから、食材の方を参照して料理を改行区切りでセルに入力したい

あくまで例なので、これくらいの量なら、普通に入力してもよいかも。
実際のケースでは人名に当たるものが1000近くあり、食材に当たるものが100近くあるので、辛いなと思い適当にスクリプトを書いた。

スクリプト実行のボタン設置(任意)

これは無くてもいい。(エクセルでも同じ)
普通にエディタから実行できるから。
でも気分上げるためにボタン置いたり、画像置いたりする。

f:id:yamami78651:20210507181531p:plain
挿入 > 図形描画 / 画像 選んで、挿入したものをクリックして右上の・・・を押すと↑のような状態に

スクリプトを割り当てる」で、自分の書いたスクリプト(デフォルトならmyFunctionとか)入力して登録すると、
画像や図形をクリックするだけで割り当てたスクリプトが実行されるようになる。

自分以外の人が使うとき(GASに詳しくない人のために作ったとき)とかは、ボタン置いてあげると喜ばれるかも!
実際に非エンジニアに依頼されたときは、修造さんと図形にスクリプトを割り当ててる
f:id:yamami78651:20210507182119p:plain

実装

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')); // 文字列を改行区切りに変換
  }
}

実行後
f:id:yamami78651:20210507190550p:plain

直したいところだらけやけど、列や行の指定はどこかで宣言しておいてそこ変えるだけでいいよって状態にしたい&結果を入力も配列に格納して最後に入力したい
エクセルもスプレッドシートもセルの情報は配列にぶち込んで操作するということを残しておきたかった

Linuxユーザーを追加してSSH接続でログインできるようにする

鍵のつくり方はここと同じような要領で作成 yamanomi5656.hatenablog.com

設定したいLinuxサーバにログインして作業開始

SSHDの設定

設定ファイル/etc/ssh/sshd_configを確認

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 ぷよぷよ

デスクトップPCでBIOS設定を開きたいけどモニタに映らない

PCも絶対に動いているし、Enterを押すと普通に起動するのに BIOS画面だけどうにも表示されない
そんな時にメシアブログに出会いました。(関係ないけどAMP対応されていて、スマホだとトップで出てきた。AMP対応大切!)
「BIOS画面」が表示されない! モニターへの配線が原因かも | ときめきの秘密基地

グラフィックスボードとかマザーボードとかよくわからなかったが、私のPCの場合、こっちに挿せってことでした。
f:id:yamami78651:20210318224124p:plain

挿すと、PC起動時にロゴとかBIOS画面表示キーが表示される。
そもそも、PC起動時にロゴとか表示されない人はマザーボードの方に挿してるかも。

SQLServerでテーブルのバックアップを取っておきたい

OracleDBでデータ移行してるときに、よくバックアップ取るときに以下のSQLを使っていた。(MySQLも同じ)

CREATE TABLE wk_PopiData SELECT * FROM PopiData;

SQLServerでも同じことしたくて、CREATEから始めたかったけど思てたんと違ったのでメモ。

SELECT * INTO wk_PopiData FROM PopiData;

バックアップはいつか消すことも忘れず

DROP TABLE wk_PopiData;