CloudTrailのイベント履歴
IAMアクセスキーの棚卸をしていて、アクセスキーの前回の使用日とCloudTrailのイベント履歴が合わないので、ドキュメント確認したところ以下のような記述がありました。
デフォルトでは、CloudTrail は過去 90 日間の S3 バケットレベルの API コールをログに記録しますが、オブジェクトに対して行われたログリクエストは記録しません。バケットレベルの呼び出しには、CreateBucket、DeleteBucket、PutBucketLifeCycle、PutBucketPolicy などのイベントが含まれます。
Amazon S3 CloudTrail イベント - Amazon Simple Storage Service
CloudWatch は、CloudTrail ログファイルのイベントとして以下のアクションを記録します。
DeleteAlarms
DeleteAnomalyDetector
DeleteDashboards
DescribeAlarmHistory
DescribeAlarms
DescribeAlarmsForMetric
DescribeAnomalyDetectors
DisableAlarmActions
EnableAlarmActions
GetDashboard
ListDashboards
PutAnomalyDetector
PutDashboard
PutMetricAlarm
SetAlarmState
AWS CloudTrail を使用した Amazon CloudWatch API コールのログ記録 - Amazon CloudWatch
S3のオブジェクトレベルのAPIコールはもちろん、
CloudWatchのGetMetricDataとかも記録されないんですね、、
S3の方は「証跡」作成して、データイベントの設定を変えれば見れそうですが、CloudWatchの方はそれでも確認できなさそう、、
CloudWatchのAPIコールって監視サーバーによるものが多いイメージなので、確かにイベントログに残ると、ログがえらいことになってしまうのはわかりますが、、、
そもそもCloudWatchのAPIコールをアクセスキーでするなってことなんですかね、、、
参考文献
グラフデータ構造
グラフデータ構造をRubyで作成したいのですが、
どうしても頭に入ってこなかったので、書いておきます。
こんな感じの無向グラフを想定しています。
# 頂点 class Node def initialize(vertex, edge) @vertex = vertex @edge = edge end end # グラフ class Graph def initialize(vs, h) @vs = vs @es = {} h.each_key do |k| @es[k] = [] h[k].each { |e| @es[k] << Node.new(k, e) } end end end
ヒープソート
問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書) | 大槻 兼資, 秋葉 拓哉 |本 | 通販 | Amazon
この本を読んでいて、ヒープソートの実装が割とスッと入ってきたので、メモを残しておく。
ヒープの条件
- 頂点vの親頂点をpとしたとき、key[p]>=key[v]が成立する。
- 木の高さをhとしたとき、木の深さh-1以下の部分については、完全二分木を形成している。
- 木の高さをhとした時、木の深さhの部分については、頂点が左詰めされている。
引用:問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書) | 大槻 兼資, 秋葉 拓哉 |本 | 通販 | Amazon
実装(ruby)
class Array def heapify!(i, n) child1 = i * 2 + 1 return if child1 >= n child1 += 1 if child1 + 1 < n && self[child1 + 1] > self[child1] return if self[child1] <= self[i] self[i], self[child1] = self[child1], self[i] heapify!(child1, n) end def heap_sort!() n = self.size (n / 2 - 1).downto(0) do |i| heapify!(i, n) end (n - 1).downto(1) do |i| self[0], self[i] = self[i], self[0] heapify!(0, i) end end end a = [12, 9, 15, 3, 8, 17, 6, 1] a.heap_sort! p a
最近よく思うこと
早いもので、新卒としてソフトウェアエンジニアになってから1年と7ヶ月が経ちました。
まだまだ、分からないことばかりで、
日々少しでも進歩しようと精進しています。
そんな中で、最近よく考えることがあります。
「理解しなければならない知識の範囲広すぎない?」
たったの1年7ヶ月で何を。。
と思われる方もいると思うのですが、
勉強すればするほど、わからないことが増える。
あれもやらないとこれもやらないとと無限に勉強すべき範囲がある。
ここ最近ずっとこんな感じです。
決して勉強がつまらない、とかソフトウェアエンジニアとしての仕事が辛いとかではありません。
もちろん辛いこともありますが、それなりにやりがいを持って働けていますし、
勉強も楽しくやれています。
ただ、なんというか、先が見えないトンネルの中でもがいているようなそんな感じです。
そして、どんどん出口が遠くなっているような気がします。
学生時代から、コンピュータサイエンスを学んでいる人、ある程度の下地がある人
このような方々は「わからない」の見え方が違うのかなとも思ったりします。
そんなこんなでお金を貯めて、社会人大学に入ってコンピュータサイエンスを学び直したいと
思い始めました。
CSを学んだから、必ずしも今までモヤがかかっていたものがスッキリするというわけではないと思います。
でも、このトンネルを抜け出すことが出来る、または出口が少し見えてくるような糸口になるのではないかと思っています。
そんなことを考えている今年の11月でした。
「〇〇チョットワカル」エンジニアになれるよう頑張ります。
Decoratorディレクトリ内でファイルがネストされてる時の呼び出し方法について
railsのdecoratorを使っていたんですが、
ちょいとハマったので、メモとして残します。
Draperというgemを使って、デコレーターを作成し、
使用しようとしていました。
基本的には、app/decorators/ 直下にデコレーターファイルを作成し、
呼び出せば問題ない。
例えば、app/decorators/user_decorator.rbファイルを呼び出す時、
def index @user = User.find{params[:id]).decorate end
これで問題ない。
しかし、今回は、app/decorators/~~/~~/配下にあるデコレーター
を呼び出したかったが、
上記のような方法では、
Could not infer a decorator for
というエラーが出て、呼び出すことができなかった。
そこで、(app/decorators/user/page_decorator.rbを呼び出す時)
def index @user = User::PageDecorator.decorate(params[:id]) end
とすることで
無事呼び出すことができた。
nekorails.hatenablog.com
rails kaminaryによるページネーションについて
一覧表示画面において、ページネーションを作成していました。
その際に、kaminariというgemを使用しました。
その際、ページによってページネーションの
スタイルを変える方法でハマったので、
書いておきます。
例えば、kaminariのviewファイルディレクトリが
kaminari
|
|
-----mypage1-----kaminariの各viewファイル
|
|
|
|
-----mypage2 ----kaminariの各viewファイル
のようになっていた場合、
ページネーションを表示するviewファイルで
~~ = paginate(@~~, :theme=>'mypage1') #自分が適用したい方のkaminaryのディレクトリ名を第二引数に指定(今回はmypage1を適用) ~~
これで無事適用したいkaminarimのviewファイルを
適用できた。