arashi1977さんの助け合いフォーラム投稿一覧

助け合いフォーラムの投稿
2024/03/17 返信
シーケンスのcurrvalについて

つまり、setvalの直後に(nextvalを行わずに)currvalを呼び出すとエラーになるという意味だと思いますが、問題35306では、setvalの直後に(nextvalを行わずに)currvalを呼び出すと値が取れると書いてあります。

これは条件を正しく一致させてないですね。シーケンス作成直後の状態とsetval()直後の状態は同じではありません。

前者(問題ID:35022)だとこういう話ですよね。

$ docker run --name postgres13 -e POSTGRES_PASSWORD=mysecretpassword -d postgres:13
5eae36f2d752bd9e7de8f351e4f80e8ed7e0cdf6c73c0a71516b2014641ba52a
$ docker exec -it postgres13 psql -U postgres
psql (13.14 (Debian 13.14-1.pgdg120+2))
Type "help" for help.

postgres=# CREATE SEQUENCE q35022;
CREATE SEQUENCE
postgres=# select currval('q35022');
ERROR:  currval of sequence "q35022" is not yet defined in this session

作成直後のシーケンスは(START句で指定していない限り)初期値が存在しないので、そのままだと「何を返せばいいかがわからないので現在値を取得しようとするとエラーになる」ものです。なお、その場合でも「nextval()」をすることで初期値(デフォルトの最小値)が定義されるので、その後はcurrval()が利用可能になります。

postgres=# select nextval('q35022');
 nextval
---------
       1
(1 row)

postgres=# select currval('q35022');
 currval
---------
       1
(1 row)

問題ID:35306の場合はこうですね。最初にsetval()で値をセットしているのでnextval()しなくても値がすでに存在するので、そのままcurrval()で値が取れます。

postgres=# CREATE SEQUENCE sample_seq CACHE 5 NO CYCLE;
CREATE SEQUENCE
postgres=# SELECT setval('sample_seq', 100);
 setval
--------
    100
(1 row)

postgres=# SELECT currval('sample_seq');
 currval
---------
     100
(1 row)

setval()が初期値をセットしているので、setval()する前だと問題ID:35022と同じことが起きます。

postgres=# CREATE SEQUENCE sample_seq_2 CACHE 5 NO CYCLE;
CREATE SEQUENCE
postgres=# SELECT currval('sample_seq_2');
ERROR:  currval of sequence "sample_seq_2" is not yet defined in this session
postgres=# SELECT setval('sample_seq_2', 200);
 setval
--------
    200
(1 row)

postgres=# SELECT currval('sample_seq_2');
 currval
---------
     200
(1 row)
2024/03/16 返信
COLD HDD

・OSをインストールして使用する

という条件なので、COLD HDDだとそぐわないように思います。
OSは起動時にかなりのファイルにアクセスがあったり、ログ書き出しやら色々稼働中もアクセスがあるので「利用頻度の低い」アクセスとはならない認識なのですが

テスト環境とアプリケーションの動作確認目的では違うと思います。

について、COLD HDD 対 汎用SSD(gp3)の比較で「どう考えても」というのはどのあたりの話になるのでしょうか?

2024/03/16 返信
経路を表すコード

はい。R2にとってはただのOSPFネイバなので通常通りの見え方になります。

2024/03/10 返信
パッシブインターフェースって結局なんなんだ

パッシブ(passive)だけ考えるとわかりにくいんですよね。その逆のアクティブ(active)も意識するとイメージしやすいかもです。
単純に英語の意味で取れば「passive:受動的」「active:能動的」なので、passive interfaceとは「自分から何かするわけではない」インターフェースと理解できます。ということは「HelloやLSAの送信はしない」けれど「OSPFドメイン内には存在する」インターフェースだと言えます。OSPFドメイン内に存在するので、同じOSPFプロセスに属していればそのインターフェースのリンク、ネットワーク情報をアドバタイズする対象にできるんですね。

また、ルート情報をアドバタイズする(それなりの負荷がかかる)ならばそもそもパッシブインターフェースの設定をするメリットはなんなのでしょうか。

これは設問の図が答えですね。OSPFのパケットを送っても無視するだけの相手しかいないところにHello/アップデートパケットを投げる意味は全くないから送らないようにする、です。

2024/03/09 返信
複数値回答ルーティングポリシーについて

ご質問の意図がちょっとよく読み取れなかったのですが、「最大8つ」という記載はあるので「設定している値全て」が8を超える場合は想定されている挙動とは異なるのではないでしょうか?
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-multivalue.html

Route 53 responds to DNS queries with up to eight healthy records and gives different answers to different DNS resolvers.

2024/03/09 返信
Site-to-Site VPNの選択肢の違いがわからない

設問のポイントってここですよね?

同社は、この構成における単一障害点をなくし、可用性を高めたいと考えている

単一障害点をなくすということは、現在単一障害点があるということになりますので、それがどこかが分かればすぐかと思います。

今の構成って

  • 開発と本番のVPCはVPCピアリングされている→AWSの内部で冗長化ずみ
  • 開発用VPCとオンプレミスDCはSite-to-Site VPN接続している。DC側には「単一の」カスタマーゲートウェイがある→DC側にシングルポイントがある
  • 本番用VPCとオンプレミスDCは複数のAWS Direct Connect構成で通信している→Direct Connectの冗長化ずみ

この時点で単一障害点になりうるのは「開発用VPCとオンプレミスDC」です。それを踏まえて

・開発用VPCのSite-to-Site VPNのVPNトンネルを複数設定し、VPN接続の冗長性を確保する

・オンプレミスのデータセンターに新たにカスタマーゲートウェイを追加し、Site-to-site VPN接続の冗長性を確保する

前者は「VPNトンネル」を複数設定していますが、そもそも「トンネル」は論理的な接続のことです。論理的なパスを複数作成してもオンプレミス側のカスタマーゲートウェイの数は増えません(論理的なIPsec接続設定を増やすだけです)ので、単一障害点は変わりません。
※参考: https://www.cisco.com/c/ja_jp/support/docs/smb/routers/cisco-rv-series-small-business-routers/Configure-AWS-S2S.pdf

後者は「カスタマーゲートウェイ」という物理的な装置を増やしていますので、現状の「単一のカスタマーゲートウェイ」という単一障害点をなくせる構成変更です。参考の「○AWS Site-to-Site VPNの高可用性の実現」に記述がありますね。

こうしてみてみると、それぞれの選択肢の意味って違うものかと思いますが、どうでしょうか?

2024/03/06 返信
シングルクォーテーションとダブルクォーテーション

記述ルール(コーディング規約)に迷ったらPEP8が参考になります。
https://pep8-ja.readthedocs.io/ja/latest/

文字列に含まれる引用符¶
Python では、単一引用符 ' で囲まれた文字列と、二重引用符 " で囲まれた文字列は同じです。この PEP では、どちらを推奨するかの立場は示しません。どちらを使うかのルールを決めて、守るようにして下さい。単一引用符 や 二重引用符 が文字列に含まれていた場合は、文字列中でバックスラッシュを使うことを避けるため、もう一方の引用符を使うようにしましょう。可読性が向上します。

「文字列型データ」も「キーとなる文字列」も「辞書の(文字列型の)値」も全て文字列ですので、上記のルールに従っていれば何も問題ありません。

2024/02/29 コメント
システムへの影響について
追記です。 DBの部分についてはもともとが > その後ろにPostgreSQLデータベースが動作する別のEC2インスタンス なので、フロントエンドからしたら「接続先バックエンドのアドレスを変更する」だけなので、RDSに移行したとしても特に大きなシステム変更とはならないかなと。
2024/02/29 返信
システムへの影響について

参考に以下の記述があるので「システムへの影響」は最も少ないと言っても問題ないと思うのですが、どうでしょうか?

一方、稼働中のアプリケーションをバージョンアップするような場合には、一部のインスタンスから段階的にデプロイを行う方式(ローリングデプロイ)や、旧環境は稼働したまま新しい環境にバージョンアップしたアプリケーションをデプロイし、問題ないことが確認できたら旧環境とURLを入れ替える方式などがあります。段階的にデプロイする際に行うELBの切り替えや新規インスタンスの構築などは、Elastic Beanstalkがすべて自動で行います。アプリケーションの開発者にとってはシステムの複雑な設定や切り替え作業を行う必要がなく、開発したアプリケーションを安全に展開できます。

2024/02/29 返信
Dockerコンテナについて

「サーバーの運用管理は減少させ」たいとか「デプロイを簡素化したい」って言ってますし、KubernetesでDockerコンテナをServiceとして常駐させるための環境構築やらをするよりもECSでServiceとして起動しておくほうが簡単とかいう話はないですか?

2024/02/26 コメント
RとCの由来について
あとありうるとしたら - R: Received(受信したHelloパケット内の情報) - C: Configured(自ルータの設定値) ぐらいかなと思います。
2024/02/17 返信
gzipの-dオプションについて

問題ID:14645は学習済みですか?

2024/01/15 返信
「FTPサーバ」の意味について

疑問解消のために何らか調べた結果のご質問だと思いますので、可能であれば検索に使用したワードを教えていただけないでしょうか?

2024/01/05 返信
R2のスタブ設定について

問題ID: 25691の参考とかチェック済みですか?

2024/01/05 返信
JSON形式か辞書型なのかの判別の仕方

よーく画像を見てもらうとわかるのですが、行頭ってこうなってますが

data = {

文字列型だったらこうじゃないといけないんですね。

data = "{ または data = '{

ってのは誤答解説にも記載があります。

・文字列型のデータである
シングルクォーテーションやダブルクォーテーションで囲まれていないので、データは文字列型データではありません。よって誤りです。

また、設問にも

次のPythonコードの変数dataに格納されるデータについて、正しい記述はどれか。(2つ選択)

とあるので、Pythonの「文字列」の記述ルールに従っていれば「JSON形式の文字列データ」といえますが、文字列形式になっていないので「辞書」と言い切れる訳ですね。

Python チュートリアル 3.1.2. テキスト
https://docs.python.org/ja/3/tutorial/introduction.html#text

文字列はシングルクォート ('...') またはダブルクォート ("...") で囲み、どちらを使っても違いはありません。

2024/01/05 返信
「443ポートを使った通信は、どのクライアントでもアクセスできる」が不正解の理由について

会話の前提の確認なのですが、解説の

その他の選択肢は以下のとおりです。
・443ポートを使った通信は、どのクライアントでもアクセスできる

に記述されている不正解の理由はどのように理解されていますか?

2024/01/05 返信
置換コマンドオプションについて聞きたいです。

使用例というのはこういうことですか?

$ cat todofuken.txt | sed -e 's/Tokyo/& to/' | sed -e 's/(Kyoto|Osaka)/& Fu/'
Hokkaido
Akita
Aomori
Tokyo to
Aichi
Kyoto
Osaka
Okayama
Fukuoka
Kagoshima

他にもググったらちょこちょこ出てくる(とはいえ & を無効化する話が多く見られますが)ので、そういうのも参考にされると良いかと思います。
https://zenn.dev/peg/articles/72bde0980dde20

2024/01/01 返信
21653

例えば私のRaspberryPi上でip_tablesというモジュールの情報を見るとこう書いてあります。

$ modinfo ip_tables
filename:       /lib/modules/5.10.83-v8+/kernel/net/ipv4/netfilter/ip_tables.ko
alias:          ipt_icmp
description:    IPv4 packet filter
author:         Netfilter Core Team <coreteam@netfilter.org>
license:        GPL
srcversion:     746D0FEB4FFADDBD962E6BA
depends:        x_tables
intree:         Y
name:           ip_tables
vermagic:       5.10.83-v8+ SMP preempt mod_unload modversions aarch64

depends: 行に x_tables に依存しているとの記載がありますので、実際にどうなるのかやってみるとこんな感じになります。

$ lsmod | grep tables
ip_tables              32768  0
x_tables               45056  1 ip_tables
$ sudo modprobe -r ip_tables
$ lsmod | grep tables
(1件も表示されない=ip_tablesと依存するx_tablesも同時に削除される)

$ sudo modprobe x_tables
$ lsmod | grep tables
x_tables               45056  0
(x_tables指定で組み込んでもip_tablesは組み込まれない)

$ sudo rmmod x_tables
$ sudo modprobe ip_tables
$ lsmod | grep tables
ip_tables              32768  0
x_tables               45056  1 ip_tables
(ip_tablesを組み込むと依存するx_tablesも同時に組み込まれる)
2024/01/01 返信
22112

こちらはいかがでしょうか?

Why use cpio for initramfs?
https://unix.stackexchange.com/questions/7276/why-use-cpio-for-initramfs

2024/01/01 返信
21808について

解説の以下の文はどう理解されましたか?

DKMSは、カーネルアップデートの際に、カーネルとは独立して自動的にカーネルモジュールをコンパイルし、インストールします。

2024/01/01 返信
leaseコマンドについて

lease 0(日) 3(時間) [分は省略] と言うことで、3時間指定という意味ですかね。

2023/12/23 返信
eBGPが、AS内の経路情報の学習に使用できる理由が分かっていません

eBGPは、AS間で使用されるプロトコルという認識であり、その場合、AS内でしか使えないOSPFで学習できてしまうのは、おかしいのでは?と思いました。

ここちょっとよくわからなかったので、もう少し噛み砕いていただけるとありがたいです。

この設問の構成を勝手にイメージすると

  • R2: AS2
  • R3: AS3

と言う構成でR3はeBGPで192.168.3.0/24を受け取っていて、R1はR2とOSPF経由で192.168.3.0/24の経路情報を受け取っていると言うところに

  • R1: AS1

と言う構成変更が行われ、AS1とAS3がピアリングしている(AS1-AS2間はeBGPピアリングなし)と言う構成に変わったと読めます。そうすると、R1の観点では「OSPF(AD:110)で学習した経路情報よりeBGP(AD:20)で学習した経路情報を優先する」と言うことでR1→R3→R2と言う経路になると言うだけの話かと思うのですが、どのあたりが納得できない感じでしょうか?

2023/12/23 返信
show ip eigrp neighborsの結果より、ハブ&スポークを見分ける方法について

「ハブ&スポーク」っていう条件からは

  • ハブは残り全てのルータと接続する
  • スポークはハブのみと接続する(スポーク間の接続はない)

と言うのがわかる(これはメッシュだとかのトポロジの構成を理解してればわかるはず)ので、「RAのネイバーが2つある」時点で「3台で構成するハブ&スポークであれば、残り2台と接続しているRAがハブ」と言えるのではないでしょうか?

2023/12/20 返信
list-unit-filesに関するマニュアル検索

Use list-unit-files (see below) for listing installed unit template files.

って書いてあるので、そのmanページの中に記載があるかと思います。と言うか、こう言う使用方法のことですよね?

# systemctl list-unit-files | head -n 10
UNIT FILE                                     STATE
proc-sys-fs-binfmt_misc.automount             static
dev-hugepages.mount                           static
dev-mqueue.mount                              static
proc-sys-fs-binfmt_misc.mount                 static
sys-fs-fuse-connections.mount                 static
sys-kernel-config.mount                       static
sys-kernel-debug.mount                        static
tmp.mount                                     disabled
brandbot.path                                 enabled
2023/12/18 コメント
ファイルシステム作成時、内部で最終的に使用されるコマンドについて
別にチケット対応してる訳ではなく個人で回答してるので、クローズ宣言しなくてもいいですよ。リスペクトと率直な感謝だけで十分です。
戻る