ぼくのかんがえたさいきょうの /etc/apt/sources.list
これ
# /etc/apt/sources.list deb mirror+file:/etc/apt/mirrors.txt jammy main restricted universe multiverse deb-src mirror+file:/etc/apt/mirrors.txt jammy main restricted universe multiverse deb mirror+file:/etc/apt/mirrors.txt jammy-updates main restricted universe multiverse deb-src mirror+file:/etc/apt/mirrors.txt jammy-updates main restricted universe multiverse deb http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse deb-src http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
# /etc/apt/mirrors.txt # http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ priority:1 # http://asia-northeast1.gce.archive.ubuntu.com/ubuntu/ priority:1 https://ftp.udx.icscoe.jp/Linux/ubuntu/ priority:2 https://linux.yz.yamagata-u.ac.jp/ubuntu/ priority:3 http://archive.ubuntu.com/ubuntu/
です。
これで、
ftp.udx.icscoe.jp
にアクセスして成功したらそれで OK- 失敗したら
linux.yz.yamagata-u.ac.jp
にアクセスして成功したらそれで OK - 更に失敗したら最後の砦の
http://archive.ubuntu.com/ubuntu/
にアクセスする
な動作になります。
EC2 や GCE な向きは、リージョンを適宜変更して(まれによくコケる)REGION.ec2.archive.ubuntu.com
や REGION.gce.archive.ubuntu.com/ubuntu/
のコメントを外して最初に試行するとよいでしょう。
/etc/apt/mirrors.txt
について詳しく説明すると、
priority
の値が小さい順に試行して、失敗したら次のを試行するpriority
の値がないのは最後に試行するpriority
の値が同じもの同士、もしくはpriority
の値がないもの同士はその中からランダムで選ばれ、失敗したらその中からまたランダムで選んで試行を繰り返す- URL と
priority
の間はタブで区切る! スペースではダメ!!- 今回の超絶おハマりポイントです!!
cat -T /etc/apt/mirrors.txt
で^I
となっているか確認しましょう
- この機能が使えるのは
apt
1.6 以上で、bionic のが 1.6.x なので bionic より古いと使えないかもです
詳細は apt-transport-mirror(1) を参照してください。
公式の apt repos のミラーの一覧はここにあるので、お好みのを選んでみてください。
ときに、爆速の ICSCoE が以前は掲載されていた記憶なんですが、公式ミラーから外れちゃったんすかね?
Ruby の net-ssh で OpenSSH 8.8 以上のサーバーにアクセスできない件
Ubuntu 22.04 LTS (Jammy) の OpenSSH 8.9 な sshd
に対して、OpenSSH 7.2 以降の ssh
ではアクセスできるけど Ruby の net-ssh
ではアクセスできない件。
理由は以下の通り。
- OpenSSH 8.8 で
ssh-rsa
署名が無効化された rsa
鍵はssh-rsa
署名の他に、rsa-sha2-256
やrsa-sha2-512
でも署名可能- 実装によっては、ネゴシエーション時に利用可能とわかれば、
rsa-sha2-256
やrsa-sha2-512
署名を使う- OpenSSH は 7.2 以降で対応している
- Ruby の
net-ssh
は現時点の最新リリース版 6.1.0 では未対応
- 従って、
- OpenSSH 7.2 以降の
ssh
はrsa-sha2-512
署名を使って接続可能 - Ruby の
net-ssh
はssh-rsa
署名を使うので接続失敗
- OpenSSH 7.2 以降の
詳しい説明は、ヌーラボさんの「OpenSSHがSHA-1を使用したRSA署名を廃止、BacklogのGitで発生した問題と解決にいたるまでの道のり」とそこからリンクされているサイトを参照されたし。
Ruby の net-ssh
で接続するには、
- HEAD を使う、もしくは対応版がリリースされるのを待つ
rsa
以外の鍵を使う- 手元の環境では
ecdsa
鍵なら追加 gem なしで接続できたecdsa
鍵には 懸念点がある そうなので、要確認
ed25519
鍵は追加 gem が必要な模様 https://github.com/net-ssh/net-ssh
- 手元の環境では
これからSwitchをお迎えする人へ
年末に向け、新しく Switch をお迎えする人も多いかと思います。そんな人へ、スムーズに使い始められるようにお勧めの準備事項をまとめてみました。
(以前、某所に投稿したやつの 2021 年版です)
SDカード
ダウンロードソフトの保存先に必要なので買っときましょう。本体内蔵のは有機 EL モデルが 64GB、無印と Lite が 32GB なんであっという間にいっぱいになります。
microSDXC の 128GB 以上ならいいんでないかと。
粗悪品を掴まされないように、信頼できる販路で信頼できるメーカーのを購入しましょう。(個人的には SanDisk か Transcend)
ちなみにソフトの容量はこんな感じ:
- ブレワイ: 14.4GB
- Xenoblade DE: 13.6GB
- スプラ2: 6.1GB
- あつ森: 6.6GB
ニンテンドーアカウント
Switch内の「ユーザー」に「ニンテンドーアカウント」を連携させるとポイント溜まったりニンテンドーeショップでソフト買えたりできます。
ので、「ニンテンドーアカウント」は予め作っておいた方がスムーズに始められるかと。
Switch が無くても PC or スマホでここからアカウント作れます。
ちな、Nintendo Switch Online には「ニンテンドーアカウント」は必須です。
子どもアカウント
0 歳から 17 歳までのアカウントは「子どもアカウント」として登録できて、「みまもり設定」で各種制限を加えることができます。
一度「子どもアカウント」にすると 13 歳以上になるまで「一般アカウント」にすることができませんが、ボイチャ使うゲームを子どもがやらない限りはまぁ「子どもアカウント」でいいんじゃないかと思います。
Nintendo Switch Online
Nintendo Switch Online は入るのをお勧めします。
オンラインプレイだけじゃなくて、セーブデータお預かり(セーブデータのバックアップ)もできるので。
300時間のハイラルの思い出が吹っ飛んだら立ち直れませんよね?
ただ、セーブデータお預かりに対応してないゲームもあるので気をつけてください…
あとは、昔のファミコン、スーファミのゲームも遊べるようになります!
個人だと 2,400 円/年。ファミリープラン(最大 8 アカウント)だと 4,500 円/年です。
NINTENDO 64 好きなら、10 月下旬に追加予定の「追加パック」も要チェック。
Proコン
必要になったらでおk
ゲームはダウンロード版?パッケージ版?
ゲームカードを入れ替えるのが地味にめんどいのでダウンロード版をお勧めします。
が、パッケージ版のメリットもあるので状況次第で。
- 飽きたら売り飛ばしたい
- Switchを複数台もってて、両方でプレイしたい(連携してるニンテンドーアカウントが別の場合)
- 「いつもあそぶ本体」機能で条件付きで緩和可能
- 中古で安く買いたい
- ご賞味したい(ゲームカードは舐めると味がします。中古の場合は抵抗ありますが…)
液晶保護フィルム
持ち運び時にキズがついたらイヤなので自分は貼ってます。
キャリングケース
持ち運ぶときにはあった方がいいかもす。
カバンに放り込んで液晶に傷がついたりスティックがぐんにゃり逝ったりすると悲しいので、かさばらないソフトケース持ってます。
あと、ケースに入れても入れなくても、持ち運ぶときは電源オフにした方がいいす! カバンの中で、スティックに何かが触れるとスリープから覚めてしばらくしてまたスリープして〜を繰り返して、さてやるか!!ってときにバッテリーが尽きてると悲しいので。(経験者)
goのtviewを使う時は、
FAQ
にも書いてあるけど、 export LC_CTYPE="en_US.UTF-8"
しましょう。
じゃないと、枠線がガビガビになったり行頭の1文字が書けたりしちゃいます。
もしくは、こんな感じで環境変数をセットして再実行するのでもいいかと。
func init() { // https://github.com/rivo/tview/wiki/FAQ#why-do-my-borders-look-weird if os.Getenv("LC_CTYPE") != "en_US.UTF-8" { os.Setenv("LC_CTYPE", "en_US.UTF-8") env := os.Environ() if err := syscall.Exec(os.Args[0], os.Args, env); err != nil { panic(err) } } }
内部NLBによるパケットの書き換えのまとめ
そういえば、内部 NLB 構成ってどうやって同一セグメントのクライアントにパケットが返ってきてるんだろ? リアルサーバーからみたときに、パケットの送信元がクライアントのになる DSR だとすると返せるのはわかるんだけど、VIP (NLBのIPアドレス) 宛のパケットを受ける設定してなくても動いてるし、NAT (DNAT) 型だとすると(クライアントが同一セグメントにいるので)戻りのパケットが NAT した NLB を経由しないんでクライアントに破棄されるだろうし??? とふと疑問を持ったので調べてみた結果です。
調べたところ、リアルサーバーに届くパケットはこんな感じでした:
まとめると:
- 内部 NLB は NAT型 の L4LB
- dstはリアルサーバーのMACアドレス、IPアドレスに書き換えられる(DNAT)
- srcのMACアドレスはNLBのMACアドレスに書き換えられる
- リアルサーバーからの戻りのパケットが必ずNLBを経由するようにこうなってると思われ
- DNATのみだと、srcはクライアントのMAC、IPになるので、リアルサーバーはNLBを経由せずに直接クライアントに戻りのパケットを送信しちゃって、クライアントは送ったのと違うところからパケットが返って来ることになるので破棄しちゃう
- ターゲットタイプで違うのは、srcのIPアドレスのみ
- ターゲットをインスタンスIDで指定したときの注意点
- リアルサーバーが内部NLBにアクセスすると、タイムアウトになる
- ref: Network Load Balancer のトラブルシューティング の「ターゲットからそのロードバランサーへのリクエストが接続タイムアウトになる」
- NLBに送ったパケットが、自分自身からのパケットになって届くので破棄されちゃう、ヘアピン問題
な感じでした。なるほどー
良いお年を!
あるファイルがn日以上更新されてないか調べる方法
find -mtime を使う
# 最終更新から 24 時間以上経過しているか if [[ "$(find /path/to/file -mtime +0)" != "" ]]; then echo 'OLD!' else echo 'NEW!' fi
-mtime +0
がなぜ「24時間以上前」になるのか?について:
-mtime n ファイルの最終内容更新日時が、基点となる時刻から計算して n 日前に当たれば、真を返す (訳注: 基点となる時刻は、デフォルトでは find を実行している今現在である)。 (snip) なお、デフォルトの動作のように、現在時刻から数えて 24 時間前から 48 時間前までを 1 日前とする
つまり、
- 1日前 = 24時間前から48時間前
なので、
- n日前 = n*24時間前から(n+1)*24時間前
つまり、
-mtime 0 = 最終更新が0日前 = 0時間前から24時間前 -mtime 1 = 最終更新が1日前 = 24時間前から48時間前 -mtime 2 = 最終更新が2日前 = 48時間前から72時間前
次に n の記法について。
数値の引き数は、以下の形で指定することができる。 +n n より大きい。 -n n より小さい。 n ちょうど n。
なので、
-mtime +0
- =
-mtime 1
または-mtime 2
または...
- = 最終更新が0日前より過去
- = 24時間前より過去
となる。