遙かなるマチョジニア

マッチョXエンジニアを目指すブログ

【AtCoder反省】AtCoder Beginner Contest 166

atcoder.jp

Dの問題が意外とあっけなくとけた。

解説より f:id:shuheilocale:20200504103321p:plain

範囲については真面目に考えなかった。とりあえずえいやでいいや。みたいな。 あとは、大体考え方は同じ。

X = int(input())

a = [int( i/2)*((-1)**i) for i in range(1, 1000)]
b = [int( i/2)*((-1)**i) for i in range(1, 1000)]

"""
1 Aが正ならBは負または、Aより小さい正
2 Aが負ならBは負
3 X/(a+b)は、1以上の整数
"""

find = False
if X == 0:
  print(0)
else:  
  for a_ in a:
    for b_ in b:

      if a_ + b_ == 0:
        continue
      if a_ >= 0:
        if b_ >= 0 and b_ > a_:
          continue
      if a_ < 0:
        if b_ >= 0:
          continue
      """
      if X%(a_+b_) != 0:
        print("hoge")
        continue
      """
      if (a_**5) - (b_**5) == X:
        print(f"{a_} {b_}")
        find = True
        break
    if find:
      break

3 X/(a+b)は、1以上の整数

については、n乗同士の差の展開式で (a+b)(a4−a3b+a2b2−ab3+b4) = X となって、 (a4−a3b+a2b2−ab3+b4) = X/(a+b)

となるから左辺が整数だから右辺も整数になると思って制限設けたけどうまくいかなかったので外した。

自分はinputが何行にもわたるものが嫌いだ。だって面倒だから。 今回はBもCもそんな感じだった。けどそれで食わず嫌いしてると点数が稼げないんだろうから そこをちゃんとテンプレート化して楽になるようにしないといけないなと思いました。 環境も今はgoogle colabでやってるが、 ちゃんとした物を作りたい。けどめんどうなのでとりあえずほったらかし。

【AWSソリューションアーキテクト】Route53、データベース

Route53を利用したフェールオーバーな構成を実習した。

構成は↓ (udemy講義から引用

f:id:shuheilocale:20200504101414p:plain

この場合の構成を別リージョンに構築するときは、 構成をそのままコピーするよなコマンドはなくて全部手作業で作る。 超面倒な作業だしミスも発生しそう。

ついでにデータベースについても座学だけ。 実習は一旦飛ばした。お金がかかりそうだから一気にやれる時間を確実に確保しなければいけないから。

以下メモ書き


  • データウェアハウス
    • Redshift
  • 分散型DB/データレイク
    • S3
  • KVS
    • ElastiCache
    • DynamoDB
  • ワイドカラム
    • DynamoDB
  • ドキュメントDB
    • mongoDB
  • インメモリデータグリッド
  • 全検索型エンジンx分散DB
    • Elasticsearch Service
  • グラフDB
  • 分散OLTP

Aurora、Dynamo、EFS、kinesisについてはハンズオンをする。

【AWSソリューションアーキテクト】信頼性の設計

ELBとRDSを使った。

ELBは、最初設定ミスって違うAZを指定してしまっていたので、 これを変更するのに手間取って結局VPC削除して作り直した。 もっと簡単に変更できるんだろうけどこういう入れギューラなパターンに対して対応できないのは素人の証拠。

RDSは作成と削除がとにかく遅い。 作成で数十分待ってても「作成中」のバナーが消えないと思ったら、既に作成されていた。 削除についてはレプリカの削除の時点でおっそい。

作った構成は下記(udemy講義 から引用) f:id:shuheilocale:20200503102855p:plain

【AtCoder反省】AtCoder Beginner Contest 165

AtCoder Beginner Contest 165

をやった。が全然だめだった。AとBだけ解けたが、Cはめんどうでとかず Dは最後のテストだけが通らずに22時になってしまったのやめた。

知識やスキルもさることながら、ちゃんとした環境も整っていない。 ちゃん整えよ。

【AWSソリューションアーキテクト】Well Architected Framework

AWS 認定ソリューションアーキテクト – アソシエイトの試験内容

内容 比率
分野1 回復性の高いアーキテクチャを設計する 34%
分野2 パフォーマンスに優れたアーキテクチャを定義する 24%
分野3 セキュアなアプリケーションおよびアーキテクチャを定義する 26%
分野4 コスト最適化アーキテクチャを設計する 10%
分野5 オペレーショナルエクセレンスを備えたアーキテクチャを定義する 6%

これは、Well Architected Frameworkを活用できる人向けのテスト。

AWSアーキテクチャ設計の基礎

AZの選択

  • 1つのリージョンにつき2つのAZを利用してアーキテクチャを設計することが基本(3つ以上はコスト効率が低下)
  • マルチ AZにサーバーやDBの冗長構成を確立することで高い可用性を実現する

VPC

  • 2つ以上のVPCアーキテクチャを設計するのが基本
  • 1つだと可用性が低下する、小規模ならOK
  • システム単位、組織単位で分ける
  • マルチVPC方式、マルチアカウント方式

サブネットの分割

  • サブネットはCIDR範囲で分割したネットワークセグメント
  • ウェブアクセスの要否。
  • /24以上の大きいサブネットを推奨
  • 1つのAZに対して1つずつのパブとプライベートが基本

VPC間接続の設計

  • VPC peeringにより2つのVPC間でのトラフィックルーティングが可能
  • 接続が必要なVPCはそれぞれPeeringが必要、どのような接続にするか設計が必要
  • アソシエイト試験は、well-architected frameworkで提唱されている5つの設計原則に沿った試験範囲になっている

Well Architected Framework

Reliability

  • インフラストラクチャサービスの障害復旧の自動化など軽減設計
  • 復旧手順のテストによる検証
  • 需要変化に応じた水平方向へのスケーラビリティに高可用性の確保
  • キャパシティの推測をやめる
  • モニタリングと自動化を進める

基盤:IAM VPC AutoScaling ELB CloudFormation
変更管理 CloudTrail AWSConfig
障害管理 CloudWatch

Performance Effciency

  • システム要件を満たすためのコンピューティングリソースを効率化する
  • システム要件やAWSサービスの進化に応じてAWSインフラの効率化を推進する

コンピューティング:AutoScaling Lambda
ストレージ:EBS S3 Clacier EFS
データベース:RDS DynamoDB ElasticSearch Aurora Redshift
容量と時間のトレードオフ:CloudFront ElastiCache

Secuirty

  • 全てのレイヤーにおいてセキュリティを適用
  • アクセス追跡・モニタリングの確実な実施
  • 条件ドリブンのアラートをトリガーとしてセキュリティイベントの応答を自動化
  • AWS責任共有モデルに基づく対象範囲の保護に集中する
  • セキュリティのベストプラクティスの自動化
    • ソフトウェアベースのセキュリティ設定を使用し、迅速でコスト効率の良いスケーリングを安全に実行する
    • 仮想サーバのカスタムベースラインイメージによる新サーバーへの適用自動化
    • インフラストラクチャ全体のテンプレ化による管理

データ保護:ELB EBS S3 RDS KMS
権限管理:IAM MFA
インフラ保護:VPC
検出制御:CloudTrail CloudWatch AWSGuardDuty AmazonInspector

Cost Optimization

  • 不必要なリソース削減
  • 透明性のある費用割賦
  • マネージド型サービスの利用によるコスト削減
  • 固定の償却コストを変動コストへと転換
  • スケールによるコストメリット
  • データセンターへの投資不要化

需要と供給の一致:AutoScaling
コスト効率の高いリソース:EC2購入方式 TrustedAdvisor
支出の認識:CloudWatch 見積もりツール
継続した最適化:AWS最新情報 TrustedAdvisor

Operational Excellence

  • コードに基づく実用実施
  • ビジネス目的に沿った運用手順
  • 定期的に小規模で増加的な変更実施
  • 予期せぬイベントへの応答テスト
  • 運用イベントと障害からの学習
  • 運用手順を最新のものに保持すること

準備:CloudFormation Codeシリーズ RunbookPlaybook
運用:SystemManager ServiceCatalog CloudTrail AWSArtifact AWSGuardDuty CloudWatch AWSConfig APIGateway
進化:継続的かつ段階的な改善のために時間とリソースを割り当て、運用の有効性と効率性を向上する

【AWSソリューションアーキテクト】aws勉強の課題殴り書き

f:id:shuheilocale:20200501150237p:plain

とりあえずここまで終わったが、 ハンズオンだけではどうもまだ理解できない部分が多く、最後の小テストでは半分くらいしか合っていないので、別途勉強し直しが必要と感じる。 特に、より理解を深める必要があるのは下記項目。

  • ポリシー周り
  • AMIとsnapshotの違い

ああもう他の課題ありそうだけど既に忘れたけどしょうがないか。

たとえば

f:id:shuheilocale:20200501150719p:plain

この構成について、 nat ネットワークacl エンドポイント の使い分けの理由とか。わからん。 まあとりあえずざっと進める。

AWSでIAMアカウントでログインできないときにやったこと

udemyの

これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)

を受けてるんですが、その中でIMAのAdminユーザー作ると言うステップがあり、 講義通りにユーザーを作りました。

f:id:shuheilocale:20200429205947p:plain
ユーザーの追加

しかし、ログインができない。。。

f:id:shuheilocale:20200429210026p:plain

ログインエラーです。何度やっても。

パスワードを設定し直す

コンソールのパスワードから、 f:id:shuheilocale:20200429210157p:plain

あらためてパスワードを設定しました。 f:id:shuheilocale:20200429210233p:plain

すると解決。なぜかはわかりません。