ごらくらいふ

プログラミングしたりゲームしたり

Gitでuntracked filesの一覧を出したあと削除するとき、ヒストリ展開を使わなくてもxargsで十分削除できた

git cleanコマンドを使うのです。

yajamon.hatenablog.com


xargsうまく使えないマンが露呈している。

結論

# 一覧から消したいものだけgrepで絞る。
git status --untracked-files | grep '*.foo'

# コマンド履歴から直前のコマンドを持ってきて、xargsを加えて消す。
git status --untracked-files | grep '*.foo' | xargs rm -iv

yajamon.hatenablog.com

Gitでuntracked filesの一覧を出したあと削除するとき、ヒストリ展開を使えば楽だった

git cleanコマンドを使うのです。

yajamon.hatenablog.com


git resetでちょっと巻き戻したときとか、非追跡なファイルの削除にはいつも手間取っていた。 まずコマンドで一覧を出して、絞って、同じコマンドのあたまに rm をつけて。

手作業でめんどうなことこの上ない。でもシェルは強力なツールなのでしれっと解決してしまう。

結論

git status --untracked-files | grep '*.foo'
rm -iv $(!!)

gitで管理していないファイルのリストを見る

git status --untracked-files

ここからさらに処理したい対象をgrep等で絞ってもよい。

ヒストリ展開を使って指定

bash, zshで確認したが、ヒストリ展開機能というものがあり、特定の記法を行うとマッチするコマンドに置き換えてくれる。

!! と入力すれば、直近のコマンドとなる。

よって非追跡ファイルのリストをサブシェルで確認し、 rm のパラメータにしてしまえばよいのだった。

現在のbranchを(branch nameを書かずに)リモートにPushしたい

結論

git push -u origin $(git branch --contains | cut -d' ' -f2)

git branch --contains=[ref]はrefの示すcommitを含むbranchを列挙する。 特に指定しなかった場合、HEADを指定したものとする。

branchをチェックアウトしている前提なので、cutコマンドで*を削っている。

これで^Rのコマンド履歴から使い回せるようになった。TAB叩くコスト削減。

AWS ECSデビューした

AWS ECS (elastic container service)デビューした。

基盤には AWS Fargateを採用。

AWS ECSとは

Amazon Elastic Container Service (Amazon ECS) は、Docker コンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービスです。これにより、コンテナ化されたアプリケーションを AWS で簡単に実行およびスケールできます。Amazon ECS では、独自のコンテナオーケストレーションソフトウェアをインストールおよび操作したり、仮想マシンクラスターを管理およびスケールしたり、それらの仮想マシン上のコンテナをスケジュールしたりする必要はありません。

Amazon Elastic Container Service (ECS - 高性能な Docker コンテナ管理) | AWS

  • 基盤にEC2か、Fargateを選択することができる

EC2を選んだ場合、コンテナのタスクは自身のEC2インスタンス上で稼働する。

AWS Fargateとは

AWS Fargate は、サーバーやクラスターの管理の必要なしにコンテナを実行するための、Amazon ECS に対応したコンピューティングエンジンです。AWS Fargate を使用すると、コンテナを実行するために仮想マシンクラスターをプロビジョニング、設定、スケールする必要がありません。これにより、サーバータイプの選択、クラスターをスケールするタイミングの決定、クラスターのパッキングの最適化を行う必要がなくなります。AWS Fargate により、サーバーやクラスターの操作や検討が不要になります。Fargate を使用すると、アプリケーションを実行するインフラストラクチャの管理ではなく、アプリケーションの設計や構築に注力できます。

AWS Fargate – サーバーやクラスターの管理が不要なコンテナの実行

たとえば、コンテナを動かすために割り当てるリソースと、EC2に確保したリソースとの辻褄合わせ作業が必要なくなるそうな。

とりあえずサンプルを立てた流れ

sample-appというコンテナを動かしてみたのだけど、手順がフレンドリーすぎて画像を付けて解説とか必要ない。 ↓に列挙した感じの流れで進めていったらできた。

  1. AWS ECSサービスをひらくと、今すぐ始める!というボタンがあったので押す
  2. Containerの設定
    • 使用するコンテナイメージはなんなのか(sample-app)
  3. Taskの設定
    • メモリ(512MB), vCPU(0.25)の設定
  4. Serviceの設定
  5. Clusterの設定
    • ながれに任せて(名前付けたくらいしかしてない)

動作確認

Clusterが作られて、サービスの内容を確認するとグローバルIPが振られていることが確認できた。 そのIPにアクセスすると、HTMLドーンと表示されて完了。

ECSのコンテナを停止させる

sample-appの流れでは、タスクはサービスによって自動で起動されたもののため、 停止させようとしたら「サービスの設定を変更して止めるように」注意された。

サービスの設定で、タスクの必要数を0にしたところ、ちょっと待ったらタスクが処分されて停止した。

あばよクラスタ

クラスタの削除を敢行したら関連して作ってくれたVPCやらネットワークゲートウェイやらサブネットやらもりもり消していった。 綺麗な仕上がりである。

感想

ECS初めて見るのは思ってたより簡単だった。 コンテナ引っ張ってくるところに時間がかかるとかあるっぽいので、ECRにコンテナリポジトリを立てたら爆速になる?

Fargateになって、autoscalingでスケールアウトだけじゃなくスケールアップもできるようになってるはずだ! というなぞの確信があるので、minecraft on ECS (auto scale up/down)ができたら、 活躍できてないminecraftVPS(2GBリソース)をたためるかなぁという気持ち。

minecraft畳んでmastodonを1GBリソースサーバから引っ越しさせたほうがいいか。

というかminecraftサーバ動いてないときほんっと動いてないのでEC2で寝かせてても良いところではある。 だれがkickupするのっていうところを解決できればなぁ~~。

あるいは常時稼働しても問題ないほどの資金が調達できればいい。

C95出ます

あー12月なにも書いてないな。書くことねーかなー。 とか思ってたけど完全に書けるネタ手元にあるじゃん、じぶん。

C95に参加します。

コミックマーケット95 三日目 12/31 (月) 東4 ラ 20a サークル名「やものや道場」で参加します。

Webカタログはこちら

https://webcatalog.circle.ms/Circle/14217506

頒布情報

アイドルマスターシンデレラガールズ 脇山珠美ちゃんメインのイラスト本「喜楽画帳」を発行します。 価格は300円を予定。

www.pixiv.net

雑感

前回は抽選漏れしたし、実績不明瞭で今回も抽選漏れっしょーなんて感覚でいたら当選しちゃって驚いた。 入稿にあたっても、印刷所どうしよっかなーなんて考えてるうちにあれよあれよと営業日が消滅していって焦る焦る。

さてさて初のサークル参加。楽しみだなぁ。

いやぁ、ごらくらいふの名にふさわしい娯楽でしょう。これは。

DeployGate-CLIのカレントユーザー切り替えコマンドを作った

はい。作りました。

github.com

自分が、個人だったり所属コミュニティに応じてDeployGateアカウントが複数存在するので、 いわゆる誤爆をやらかしてしまう危険がある。

deploygate-cliは設定ファイルとしてアクセストークンをぽんっと置いてあるので、 アカウント毎にバックアップを取っておいて、状況に応じて復元することでカレントユーザーを切り替えることができた。

補完関数むずかしい

コマンドに併せて補完関数を作った。

github.com

横着して補完関数のドキュメント見ずに着手して、余計なことしてちょっとハマった。

  • readonly DG_ROOT="$HOME/.dg"の内容が空になる
    • readonlyのオプションが良くなかったのか、DG_ROOTの内容が空になってしまって話が進まなくなってしまった。
    • 行頭に#compdefしか書いていないので、zshとして振る舞っていたと考えて良い。readonly...bashだけのものだった?
      • zshにとって見れば「突然見知らぬコマンド叩きよったぞこのスクリプト」といった状況だったりして。
参考リンク