geek.conf.2

あるエンジニアの備忘録

HashiCorp Certified: Terraform Associate

久しぶりの資格の記事です。

Terraformは4、5年前から触っています。ここ2年触ってないです。 触っていた時期は、商用システムでバリバリだったので、この資格には自信がありました。

合格日:2020/12/17
点数:80%
勉強期間:2020/12/11 - 2020/12/16
勉強方法:
Exam Review - Terraform Associate Certification ここのReview Guideに乗っているリンクを全部読んで、知らなかったものをまとめました。あと、チュートリアルも全部行いました。
感想:
多分これギリギリだったかと思います。まぁ落ちたらUdemyやって再試験でいいかぁという気持ちでした。
試験中、監督の方とはカメラでIDやら机周りやらを確認していただきました。会話はチャットで英語でした。英語でのチャットは全く問題ないです。別に会話時間が長引いたからといって試験時間が短くなることもないですしね。
問題と回答も英語でした。長くて3行ほどなので、Terraformのこと知ってれば大丈夫だと思います。
勉強する中で、vaultのことも勉強したんですが、こっちに興味湧いてきました。余裕があれば、Vault Associate行くぞー!

f:id:tsubauaaa:20201217223206p:plain

AtCoder Beginner Contest 177 C - Sum of product of pairs の解法考察 Pythonで書いてます

問題はこちら
C - Sum of product of pairs

これ数列Aがもし

1, 2, 3, 4, 5

だとしたら求めたい答えって

1*2+1*3+1*4+1*5
2*3+2*4+2*5
3*4+3*5
4*5
の総和
つまり

1*(2+3+4+5)
2*(3+4+5)
3*(4+5)
4*5

の総和じゃん、までは分かって以下のコードを提出するとTLEじゃん

N = int(input())
A = list(map(int, input().split()))
ans = 0
for i in range(N):
    ans += A[i] * sum(A[i + 1 :])
    ans %= 10 ** 9 + 7
 
print(ans)

んで累積和ってやつを知りました。

N = int(input())
A = list(map(int, input().split()))
sum_A = sum(A)
C = [0] * N - 1
# 累積和作成
for i in range(N - 1):
    sum_A -= A[i]
    C[i] = sum_A
ans = 0
for i in range(N - 1):
    ans += A[i] * C[i]
    ans %= 10 ** 9 + 7
print(ans)

ループの中で和を計算するよりも予め作っておくってわけですが、そうですね。その方が早いですね。
まだまだ精進が足りません、、
累積和がどうゆうもので、どうゆうときに使うのかが初歩の初歩レベルで分かる良い問題でした。

マクロミルを1ヶ月まじめにやってみての感想

コロナ渦という状況もあり、自分の隙間時間が増えました。
そこでアンケートに答えてポイントがもらえるお小遣い稼ぎをやってみようと思いまして、マクロミルというサイトを1ヶ月間やってみました。


期間; 2020/8/31 - 9/30
事前アンケート回答数;315件
本アンケート回答数;35件
獲得ポイント数合計;1585Pt


会場インタビューやオンラインインタビューや試用インタビューには参加していません。
こんな戦績です。以下、所感を。

所感:

  • まぁもうやりません。続けません。
  • 来たアンケートは基本的に全回答を目指していました。なので月に1500Pt前後が普通くらいなのかな。どうですか? 1500Pt/月。僕はもういいかなぁという感想。
  • 会場インタビューと試用インタビューは不参加を選択していました。会場行くのも試用も面倒なので。オンラインインタビューは来たら参加と回答していましたが、1回も当たらずでした。
  • アンケート回答は僕も好きな方ですけど、別に楽しくないんですよね。なのでこの労力とリターンを考えると僕は続ける判断は取りませんでした。
  • インタビューが定期的に挟まるとリターン値も違って感想も違ったのかな。まぁでも1ヶ月やって1回も当たらないとなると微妙ですねぇ。
  • 1500Ptを銀行振り込みによって獲得して以下を買うのに役立てようと思います。

AtCoder Beginner Contest 095 C - Half and Half の解法考察 Pythonで書いてます

最近、AtCoderをボチボチやっていて、すごく書きたくなって書きました。 

問題はこちら
C - Half and Half

A・・・Aピザの金額
B・・・Bピザの金額
C・・・ABピザの金額
X・・・Aピザの金額
Y・・・Aピザの金額

求めるものは最小のAピザ、Bピザの必要枚数分の金額
注意点は各ピザを多く買ってもいいってこと。

まずA+B<=2Cかどうかチェックする。A+B<=2CならABピザを買うと割高なので、ABピザは買わずにAピザ、Bピザをそれぞれ買えばよろしい。

んで、A+B>=2Cの場合、とりあえずABピザでAピザ、Bピザのうち少ない枚数の方を賄っちゃって、残りをまたABピザを買って賄うか、ABピザを買わずに、Aピザ、Bピザをそれぞれ買うのかを比較する。
なぜ少ない枚数の方をABピザで賄うかというとABピザで全てを賄わないパターンを比較対象に含めるためである。
なのでAピザ、Bピザの枚数が少ない方をチェックする。X<=Yのときは2CX+2C(Y-X)=2CY or 2CX+B(Y-X)だし、X>=Yのときは2CY+2C(X-Y)=2CX or 2CY+A(X-Y)との比較となる。
ここでY-Xについてだが、
例えば、X<=Yのとき、つまりAピザ、Bピザのうち少ない枚数がAピザのX枚の方だとしたらCを2枚、X枚買うとそれはつまり、AピザX枚とBピザX枚である。残りはBピザY枚からBピザX枚を引いたBピザの枚数Y-X枚となる。

これをコードで表すとこちらになる。

A, B, C, X, Y = map(int, input().split())

if A+B <= 2*C:
    print(A*X+B*Y)
else:
    if X <= Y:
        print(min(2*C*Y, 2*C*X+B*(Y-X)))
    else:
        print(min(2*C*X, 2*C*Y+A*(X-Y)))

しかし、しかしだ。僕はこの問題を全探索の練習問題として紹介されて解き始めた。なので上記はやりたい解法ではなかった。
金額A,B,Cのパターン全探索すると時間がかかる。ABCXYを数式化してみよう。ABピザの枚数をZ枚として、、、

A(X-Z)+B(Y-Z)+2CZ

2CZ=AZ+BZなのでAXとBYから引いてあげれば帳尻が合う。

となるとコードはこちらになる。

A, B, C, X, Y = map(int, input().split())
ans = 2*(5000*10**5)
for Z in range(10**5+1):
    total = A*max(X-Z, 0)+B*max(Y-Z, 0)+2*C*Z
    ans = min(total,ans)
print(ans)

全探索のパターンを減らすには、問題の登場人物の関係性を特定して数式化する必要があるけど、そこが難しいんだよね。

Google Certified Professional Cloud Architect

こんばんは、クラウドに精通している者です。

Google認定 プロフェショナル - クラウドアーキテクトという資格に合格していたので報告させていただきます。

Google認定 プロフェショナル - クラウドアーキテクトとはGoogleGCPを使って、ビジネスゴールを実現するための堅牢かつ安全でスケーラブルな高可用性のソリューションを設計、開発、管理できる者としてGoogleに認めてもらう資格となります。

AWSソリューションアーキテクト プロフェッショナルと同様に、様々な顧客のビジネスの目的に最適なGCPのサービス/システムを設計することが求められます。また、とても具体的なケースにおけるトラブルシューティングも求めれるので、試験はプチ設計の連続で大変疲れました。

GCPのサービス群から最適な選択を求められるので、クラウドアーキテクチャの知識に加えてGCPの知識も当然、必要です。
私は試験に取り組む前のGCPと僕との関係は希薄で、個人でGAEを利用したことくらいでした。

合格日:2017/09/04
点数:非公表
勉強期間:2017/08/14 - 2017/09/04
勉強方法:

・coursera Google Cloud Platform Fundamentals for AWS Professionalsを受講
 このコースに沿って実際にGCPを操作して理解を深めました。
Google Cloud Platform のドキュメント  |  ドキュメント  |  Google Cloud Platformは全て読んで理解する
 ここでGCPの各サービスの特徴を捉えました。
ソリューション  |  Google Cloud Platformを読んで理解する
 ここでサービス特性に応じたGCPの適用方法を学びました。


クラウドアーキテクチャは水平スケーリングとかデータ処理コンポーネント疎結合にとかサービスダウンタイムなしにデプロイとかオンプレからクラウドにデータマイグレーションとかの鉄板の設計項目があるかと思いますが、これをGCPでどのように実現するかが重要となります。そのため、世の中のGCPの事例を調査して、なぜそのGCPサービスを選択しているかを理解して、その事例の解決したい課題とその優先度にその選択が適しているかを理解することが大切です。

そうそう、合格するとこのパーカーがGoogleからもらえます!
f:id:tsubauaaa:20180225172953j:plain:w200,left

AWS re:Invent 2017参加の所感

こんばんは。AWS re:Invent 2017に参加しています。ラスベガスからのお便りです。

f:id:tsubauaaa:20171130144126j:plain

f:id:tsubauaaa:20171130144147j:plain

本日11月29日AMにラスベガスにてAWS CEOのAndy Jassyから様々な新しいAWSサービスが発表されました。それぞれのサービスについては他の記事にお任せします。

発表されたサービスのうち、以下のサービスに衝撃を受けたのでブログを書いた次第です。

 

f:id:tsubauaaa:20171130144302j:plain

簡単に言うと、EC2サービスは仮想サーバをオンデマンドに起動するサービスですが、Fargateは仮想サーバをコンテナに置き換えたサービスになります。

Fargateがなかった時にはAWSでコンテナを扱う際の最良はECSを使うことでした。

ECSもすごく好きなサービスなのですが、大きな課題があると思います。それは

コンテナをホストするECSインスタンスの運用コストです。

具体的には以下のような課題があると思っています。

     ・ECSインスタンスのOSの管理

        → ECS-Agent / OSチューニング / ログ / 監視と管理項目はいっぱい出てきます

     ・ECSインスタンスのAutoScaling設定

        → さらにコンテナのApp AutoScalingと帳尻合わせする必要もあります

     ・ECSインスタンスのOSの更新

        → サービスに影響なくECSインスタンスを更新する必要があります

 

などなど。まぁ一つの機能を持ったサーバー群の管理ってやることたくさんある上にサービスを提供するコンテナをホストしているのでさらに複雑になりますよね。

今回のre:InventでECSの開発に携わるAWSの社員の方に直接フィードバックできる機会があり、上記の課題の解消を相談しようとしていました。

 

そして、Fargateが発表され、Fargateを採用すれば、上記のECSインスタンスの課題は全てなくなりました。

これは現在一緒にサービス開発に取り組んでいるチームにとってもサービスにとっても良いことなんですが、同時に恐怖も感じました。

私は主にAWS、ネットワークといったいわゆるインフラ(もう言わないかもしれませんが)を得意としてチームに参加しています。

そのこともあり、上記ECSインスタンスの課題に取り組んで、解消するために改善に努めてきました。

例えば、AnsibleでOS設定をコード化したり、Packerでゴールデンイメージを作ったり、新しいAMIが設定されたLaunchConfigurationをAutoScalingGroupに適用して手動でローリング更新したり、といった頑張った自動化をやっていたのです。

しかし、もうFargateがあれば不要です。

いや、もちろん、サービス、チーム、会社にとって朗報です。なのでFargateにします。

 

何が言いたいかというと、私自身の得意分野の価値がFargateによって下落してしまったことが怖いなと思います。

このようなFargateによる現象って私以外にも起こり得ると思います。

例えばEC2インスタンスといった仮想サーバを管理する機会が今後減ってくるとすると運用部隊の価値も減ります。

SSH/WinRMでサーバにログインからのコマンドによる調査、操作も不要。

仮想サーバよりもコンテナの方が、スケーリングを組みやすいですし、起動/停止も早く柔軟なので、コンテナが一個停止したからといって一次対応者に即コール即対応なんて不要。

Fargateに限らず、技術進歩によって今価値がある役割がどんどん減っていくことになりますよね。エンジニアとしてこれから得るものをちゃんとしっかり考えたいです。

f:id:tsubauaaa:20171201032715j:plain

 

 

改めて言います。不要な仕事、やらなくて良い作業がなくなることは大正義です。なのでFargateに大変期待しています!

 

f:id:tsubauaaa:20171130164152j:plain

 

 

 

 

情報処理安全確保支援士試験 (H29 春)

IPAの安全確保支援士に受かりましたのでご報告いたします。

●情報処理安全確保支援士試験 (H29 春)
サイバー攻撃の急激な増加により、企業などにおけるサイバーセキュリティ対策の重要性が高まる一方、サイバーセキュリティ対策を担う実践的な能力を有する人材は不足しています。そこで、サイバーセキュリティに関する実践的な知識・技能を有する専門人材の育成と確保を目指して、国家資格「情報処理安全確保支援士」制度が創設されました。
「情報処理安全確保支援士(以下、登録セキスペ)」はサイバーセキュリティに関する専門的な知識・技能を活用して企業や組織における安全な情報システムの企画・設計・開発・運用を支援し、サイバーセキュリティ対策の調査・分析・評価やその結果に基づく指導・助言を行います。とのこと。

午前も午後I、午後IIも60%以上で合格です。

合格日:2017/06/21
点数:午前I:70% 午前II: 80% 午後I:75% 午後II:60%(このくらいだったと思われ)
勉強期間:62日(2017/02/13 - 2017/04/15)
利用した参考書:

IPA資格を受ける時は必ずやってます。パーフェクトラーニング。まず午前はこれだけをひたすらやって覚えます。午後ももちろんやります。午後の解説も理解します。
午後の仕上げは重点対策でジャンルごとの午後問題に慣れます。

時間があれば翔泳社の情報処理教科書も読んでおくこと。

支援士の登録ですが、会社の援助もあり、登録します。士業ってかっこいいじゃないですか!