AWS SAP受験記

AWS認定 Solution Architect Professionalに合格したので勉強したポイントを記録する。 インプット学習 AWSの公式動画、「Exam Readiness: AWS Certified Solutions Architect – Professional」を観た。 この際に、不明な用語を全てメモしておく。 その後、メモをもとに、blackbeltオンラインセミナーを順番に観ていく。 アウトプット学習 udemyの試験対策講座を受講した。 「問題を解く」→「間違った分野のblackbeltセミナーや公式documentを見返す」ということを繰り返す。(本来は2-3回やりたかったが、1回しかできてない。。) 申し込み前には、公式の模試を受験した。6割の正答率だったので、気合を入れ直した。 試験当日 自宅から最寄りの試験会場を選択した。 SAAとは違い、当日の勉強はやらないことにした。 つまづきポイント 自分がつまずいたポイントは以下の通り。 Direct Connect 頻出分野だが、実際に扱う機会が少ない。(ほぼない) 2-3回Blackbeltオンラインセミナーをみてイメージを膨らませた。 データベースまわり 概念が混乱するので、整理が必要。 RDSとAuroraでリードレプリカがどう異なるのか。AZ障害時に、どういう動きになるのか。 高速化手法は何があるのか。 リージョン障害時の影響は何か。リージョンまたぎのレプリケーションはどうする? など。 本来はSAAレベルでも理解すべきDAX周りの理解も甘かったので、復習になった。

January 11, 2021 · 1 min · Katataku

Python Division

pythonの割り算は大きく2種類存在する。"/“と”//“である。 違いについて、混乱し、検索しても納得がいかなかったので実機で動作を確認した。 定義 /演算子 こちらが通常の割り算。結果はfloat型(不動小数点型)。pythonの不動小数点型も他の言語と同様に2の補数表現として表されている。 //演算子 こちらは商を求める演算。結果はint型(整数型)。あくまで、整数の範囲で割り算を行い、商を返す。 int()によるキャスト int()はfloat型→int型への型キャスト演算である。 int()は少数部の切り捨て演算にあたる。 int(3.5)→3 考察 ここで気になるのがint()と/演算子との組み合わせである。 数学的には、a//bとint(a/b)は同一の結果となる。 しかし実装上は異なる。 具体例を見てみる。 a = int(input()) # 987654321 sum_a1 = int(a * (a + 1) / 2) % 998244353 sum_a2 = int(a * (a + 1) // 2) % 998244353 print("sum_a1 : {}".format(sum_a1)) print("sum_a2 : {}".format(sum_a2)) #sum_a1 : 3544418 #sum_a2 : 3544427 sum_b1 = a * (a + 1) / 2 sum_b2 = a * (a + 1) // 2 print("sum_b1 : {}".format(sum_b1)) print("sum_b2 : {}".format(sum_b2)) #sum_b1 : 4.877305293888127e+17 #sum_b2 : 487730529388812681 理由は、一度float型で読み取ると誤差が生じるためである。 誤差のある数字どうしを掛け算して桁の大きな数字にすると、誤差が大きくなり、切り捨て演算の結果が変わることになる。 まとめ 不必要にfloatが発生しないようにするべし。 Decimal型を使っても安全かも。

November 1, 2020 · 1 min · Katataku

競技プログラミングの準備をしてみた。

はじめてatcoderのコンテストに 参加してみた。 「競技プログラミングの準備」と調べてみると、アルゴリズムの勉強手法だとか、動作環境のセットアップ手法の解説しか出てこなかった。 ここでは、実際どうやって実行するのか、どういう流れで提出するのか、そのために何を準備するのかを記載する。 大きな流れは以下の通り。 例を利用したテストケースの準備 コーディング 実行&自動テスト 提出 例を利用したテストケースの準備 問題には入力と出力の例が用意されている。 その内容を利用して自動テストを実行できるようにする。 今回のスクリプトでは「input」「answer」というフォルダーに同名のファイルに、入出力を記載する。 フォルダー構成 inputフォルダーにある入力例に対して、テストを実施する。 コーディング main.pyというファイル名でコーディングを行う。 内容は全量コピペで提出できる内容とする。 実行&自動テスト ここが本題。 やりたいことは、「テストケースを用いた実行&回答例との一致判定」。 以下のスクリプトを用意し、毎回実行するようにした。 #!/bin/sh rm output/* dirpath="./input" files=`ls $dirpath` pfinrf "\n" for file in $files; do printf "=====${file}=======\n" input="${file}" output="${file}" answer="${file}" python main.py <input/${input} | tee output/${output} if [ -e answer/${answer} ]; then diff -u output/${output} answer/${answer} >tmp if [ $? -eq 0 ]; then printf "\nCA\n" elif [ $? -eq 1 ]; then printf "\n--- diff output answer --------------------\n" cat tmp printf "\nWA\n" fi rm tmp fi done 入力例が複数あっても、回答フォルダーに同名のファイルがあればテストできる。 ...

July 26, 2020 · 1 min · Katataku

GitHub pagesのブログのURLをwwwありからwwwなしに変更した

背景 google adsenseの登録をした。 はじめてのドメインの際は、サブドメイン(wwwあり)は不可とのことで、ブログURLを変更することにした。 検索するとwwwなしからwwwありに変更する例しか見つからなかったので、記録に残す。 やること やることは以下の3点。 DNSの設定変更 GitHub pages設定変更 (リリーススクリプト修正) hugo設定変更 DNS設定変更 ここではgoogle DNSの設定変更をおこなう。 こちらの記載を参考に、ルートパスのAレコード登録をおこなう。 また、wwwレコードをルートでCNAME登録する。 GitHub pages設定変更 GitHub のsettingsメニューからドメインの記載変更する。 また、私の場合は、localにあるリリーススクリプトを修正する。 どちらもCNAMEファイルの記載を変更するもの。最終的なCNAMEファイルはこちら。 hugo設定変更 config.tomlのbase URLを変更後のURLに変更する。

July 22, 2020 · 1 min · Katataku

hugoで作成したサイトマップの内容がGoogle Search Consoleでインデックス登録されていなかった

背景 サーチコンソール上で、新規追加した投稿のURL検査を実施したところ以下の表示がされていた。 サイトマップ 該当なし hugoで自動生成されたサイトマップを登録しているので、原因を調査した。 sitemap.xmlの確認 自動生成されるsitemap.xmlの中身を実際に見てみて、原因を確認する。 自動生成されるURLは以下の通り。 https://www.katataku.dev/sitemap.xml 内容を見てみると、すべてhttpから始まるURLになっていた。 baseURLの誤り config.tomlの指定を確認する。 baseURLの指定がhttpsではなく、httpになっていることが判明。 以下の通り修正。 baseURL = "https://www.katataku.dev" 修正した結果サイトマップの内容はhttpsに変更されていた。 数日後サーチコンソールの画面上インデックスの状況を再確認する。 考察 baseURLのプロトコルが誤っていても、閲覧する上で問題は検知できない。 理由は以下二点。 localで確認する際にはhttp化される。 GitHub上ではhttpsにリダイレクトされる。 GitHubの仕組みは知っていたが、上記は知らなかった。 hugo賢い。

July 19, 2020 · 1 min · Katataku