2022年6月28日火曜日

AWS CLIでecrのlatestをひとつ前にもどす

 お試しでpushしたdockerイメージがうまく動かなかったときとか用。

pushしたlatestを削除して、そのひとつ前のものにlatestをつけなおすスクリプト


#!/bin/bash
REPO_NAME='myRepository'
# latestの削除
aws ecr batch-delete-image --repository-name ${REPO_NAME} --image-ids imageTag=latest
# 以降のコマンドでimage-ids指定のために、一番新しいイメージのdigestを取得
IMAGES=$(aws ecr describe-images --repository-name ${REPO_NAME})
TARGET=$(echo ${IMAGES} | jq -r '.imageDetails | sort_by(.imagePushedAt) | reverse | map(.imageDigest) | .[0]')
MANIFEST=$(aws ecr batch-get-image --repository-name ${REPO_NAME} --image-ids imageDigest=${TARGET} --query 'images[].imageManifest' --output text)
aws ecr put-image --repository-name ${REPO_NAME} --image-manifest "${MANIFEST}" --image-tag latest

2022年5月9日月曜日

逆引きLinuxコマンド base64

 base64をエンコード/デコードしたい

そのまんま、base64コマンドを使用する


例:ファイルの中身をエンコード

$ base64 ./file.bin

例:指定のbase64文字列をデコード

$ echo 44GC44GE44GGCg== | base64 -d

(このままだと文字化けした表示になるので、xxdと連結したり、リダイレクトでファイルに保存する)



2022年3月15日火曜日

逆引きLinuxコマンド ダンプが見たい

xxdを使う。

例: ファイルのダンプが見たい

$ xxd ./file.bin

00000000:  6162 6364 650a

例:ダンプを連結した文字列にしたい(ヘキサストリング) 

$ xxd -ps ./file.bin

61626364650a

例:ヘキサストリングをでコードしたい

$ echo 61626364650a | xxd -r -p

abcde




2022年2月24日木曜日

バトルテックBV計算機をつくりました

 バトルテックでBVを調整するときに、いちいち電卓で計算するの面倒ですよね。

ということで、BVを入力して、Gunnary/Pilittingを選ぶだけで計算するブラウザアプリを作ってみました。

バトルテックBV計算機

「Your BV」にベースとなるのBV(Gunnary=4、Pilotting=5がベース)を入力。表の「2.42」とか「2.11」の数字を押してください。「Caliculated」に計算結果が表示されます。数字が選択状態で「Your BV」の入力を変更すると、計算しなおす新設設計です。

計算結果は切り上げです。

スマホでも使えますが、表がはみ出るのはご容赦を。



2020年2月21日金曜日

goto滅ぼすべし(1)

VisualStudio2019になって、C++Coreガイドラインのチェックが標準になったおかげで、C++でC言語的な書き方をしている箇所や、古いC++の書き方をしてる箇所に軒並み警告が出るようになってしまった。
その中でもC26438の「gotoは使わない」が厄介だ。
最近の人は教育が行き届いていて、gotoのような劇薬から遠ざけられているおかげでどう修正していいのか見当がつかない。ということを雑談しているときに気づいた。
自分の忘備録と他にも困った人のために、修正方法をメモる。

今回はエラーがあったらgoto先に飛ばして終わらせるパターン。

void AruClass::someFunction(uint8_t param) {
  if( sendFunction( param) < 0) {
    goto errorExit;
  }
  if( recvFunction() < 0) {
    goto errorExit;
  }
  parseRecvData();
errorExit:
  cleanupBuffer();
  return;
}

こんなケースだ。
一番わかりやすいケースで、exceptionにしてやればいいだけだ。

void AruClass::someFunction(uint8_t param){
  try{
    if( sendFuntion( param) < 0) {
        throw std::exception();
    }
    if( recvFunction() < 0) {
        throw std::exception();
    }
    parseRecvData();
  }
  catch(...){
      // error case
  }
  cleanupBuffer();
  return;
}

2019年2月16日土曜日

バトルテック射撃テンプレートの使い方

バトルテック射撃テンプレート、作り方だけ載せて使い方を説明していなかったな、ということで、使い方の説明です。

1)先ずは磁石15個を左側に置きます。(画像が間違えています。そのうちなおします…)

2)Gunnery Skillが「3」なので、磁石を3つ動かします。 

3)攻撃側の移動手段が「歩行」なので、磁石を1つ動かして、

4)目標の移動が「4」「ジャンプ」なので、それぞれ1つづつ磁石を動かして、

5)目標がLv2の森林にいて、間にLv1の森林、それぞれ磁石を動かします。

6)あとは武器の射程に合わせて磁石を動かします。
 この場合、ミドルからは当たり目無しとなります。
11!?当たり目があるなら、撃たない理由はない!敵機めがけて発射!

2018年12月8日土曜日

バトルテック射撃テンプレート

バトルテック射撃テンプレートの作り方。

材料
1)このファイルをA4で印刷したもの
2)ダイソー等で売っているA5のホワイトボード


作り方
1)ホワイトボードの上下左右に接着剤がはみ出ているので、その場所を調べます。

2)印刷したテンプレートをこんな具合にカットします。
上下のボンドはみだし箇所は、ホワイトボードに差し込むときにスライドさせるので
広めにカットしておきます。

3)上下を差し込み、スライドさせて
もう片方を差し込めば、完成!

デザインが気に入らない!って人はこちらのファイル(odf形式)を編集してください。