これは何?
インラインポリシーの設定方法を忘れてしまった AND 検索してもすぐに見つからなかったので備忘録として
設定方法
- 任意のロールを作成する
- 任意のロールを選択する
- 許可タグの許可ポリシーから、インラインポリシーを作成を選択
- 任意のポリシーを作成する
インラインポリシーの設定方法を忘れてしまった AND 検索してもすぐに見つからなかったので備忘録として
AWS SNS, SQSの連携周りを触ることになったので、その際の学習メモ。
{
"Type" : "Notification",
"MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "Testing publish to subscribed queues",
"Message" : "Hello world!",
"Timestamp" : "2012-03-29T05:12:16.901Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEnTrFPa3...",
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee"
}
配信ポリシーが枯渇すると、Amazon SNS は配信の再試行を停止し、 メッセージを破棄 する (デッドレターキューが添付されていれば破棄されない)
配信ポリシーの段階
サーバー側のエラーが発生するとどんな挙動をする?
デッドレターキューのしくみ
メッセージをデッドレターキューから移動する方法
デッドレターキューのモニタリングとログ記録方法
coming soon
coming soon
coming soon
coming soon
cy.get('tr:contains(User 1)')
cy.contains('tr', 'User 1')
こんな違いがある
つまり、以下のようになる。
cy.get('tr:contains(User 1)') // User 1を含む,table要素のtrを全て取得する
cy.contains('tr', 'User 1') // User 1を含む,tableからUser 1 の trを一件取得する
実際の挙動の確認や、なぜこのような動きになっているかの検証、じゃあ使い分けはどうすんの?な話は気が向いた時にやります🙏
Sessionと Cookieについて言語化して整理したもの。メモ書き。
HTTP通信における話に焦点が当たりがち
CookieにSession IDを格納することで、HTTPにステートフルな性質を持たせることを実現している。 HTTPはサーバーが一連の処理の状態などを記憶しないという性質(ステートレス)を持っているため、ログイン情報を記憶させる、ショッピングカートの商品情報を記憶させることが出来ない。
Sessionがそれらの情報を記憶して、CookieにSession IDを格納することでHTTP通信においてサーバーが一連の処理の状態などを記憶する性質(ステートフル)を付与することができる。
達人に学ぶDB設計徹底指南書を参考にインデックス、Explainによる実行計画の調査方法などをメモ的にまとめたもの
まず、DBのパフォーマンスを決める要素は主に以下の二つが存在する。
その中でも、DBのパフォーマンス改善の手法としてインデックスが用いられることが最もポピュラー
インデックスは * 探すレコードを識別するデータの項目
で構成されており、これを利用してデータの格納位置を特定し、その位置を直接アクセスする事で、表の検索速度を上げることが出来るもの。
インデックスがない場合は、検索を先頭の行から順に行うのでデータ量が多くなるほど検索に時間がかかる事がある。
【理由】
アプリケーションのコードに影響を与えない
テーブルのデータに影響を与えない
性能改善の効果が高くコスパが良い
さらに、その中でもB-treeインデックスが最も基本(この他にもビットマップインデックス、ハッシュインデックスなどがある)なので、今回はB-treeインデックスを深堀する。
下記の項目において、バランスが良く汎用性が高い
引用:達人に学ぶDB設計徹底指南書
引用:達人に学ぶDB設計徹底指南書
表内のデータの 2 つの行が同一のキー値を持たないようにすることによりデータ整合性の維持に貢献する索引
SQLの実行計画(どのインデックスを使ってクエリを取得するかなど)を取得するためのステートメント
インデックスが正しく使われているか、クエリを効率的に処理出来ているかを確認する際に用いる
<見方>
pending....
一般的なトランザクションと排他制御に関するまとめとそれをRailsで実現するためのメモ書き
> ITの分野では、取引記録などの意味の他に、ソフトウェアの処理方式の一つで、互いに関連・依存する複数の処理をまとめ、一体不可分の処理単位として扱うことを指す場合が多い。
要するに、相互に関係する処理をこれ以上分割できない一つのまとまりとして捉えたもの
例)銀行口座の送金処理(出金と入金処理が不可分一体となっている)
トランザクションにおいてはACID特性が保たれる必要がある
atomicity:原子性
トランザクションにおける処理が全て実行されるか、実行されないかのどちらかになる性質
例)送金に成功すれば出金・入金共に行われ、失敗すればどちらの処理も行われない
consistancy:一貫性
トランザクションの前後でデータに不整合が起こらない性質
例)送金トランザクションで残高が負の数になるなど
isolation:独立性
トランザクション処理が他のトランザクションに影響を与えない性質
ここで排他制御を行う
durability:耐久性
トランザクション完了時にその結果が記録され失われない性質
今回取り扱うのはロックに限ります。
今回は、特によく使われる(印象の)悲観ロックと楽観ロックについてまとめます。(Active Recordに備わっているロック機構もこの二種類なので)
悲観ロック
楽観ロック
lock_version
という名前のinteger型カラムを作成する例 Book.transaction do book = Book.lock.first book.title = 'Algorithms, second edition' book.save! end
Mysql SQL (0.2ms) BEGIN Book Load (0.3ms) SELECT * FROM `books` LIMIT 1 FOR UPDATE Book Update (0.4ms) UPDATE `books` SET `updated_at` = '2009-02-07 18:05:56', `title` = 'Algorithms, second edition' WHERE `id` = 1 SQL (0.8ms) COMMIT
SELECT 〜 FOR UPDATEが内部的に走ってるんですね
Railsガイドには他のロックを実装する方法も乗っているので折に触れてそちらも確認して行こうと思います。
テーブル設計の際に、木構造のデータを表現する方法をメモとしてまとめたもの
こんなやつ
SELECT * FROM role_relation AS rr WHERE rr.left_end = 1 ;
SELECT * FROM role_relation AS nleaf WHERE NOT EXISTS (SELECT * FROM role_relation AS leaf WHERE leaf.left_end > nleaf.left_end AND leaf.right_end < nleaf.right_end ) ;
SELECT children.`role`, COUNT(parent.`role`) AS 深さ FROM role_relation AS parent INNER JOIN role_relation AS children ON children.left_end BETWEEN parent.left_end AND parent.right_end GROUP BY children.`role` ;
上記画像の問題は、下記画像のように実数を用いることで整数と整数の間に無限にノードを追加することができる。 つまり、ノードを追加するたびに隣接するノードの座標をずらす必要がなくなる。
ただし、DBの制約上無限ではないため、いづれリソースは枯渇する。
DBの性能向上によってこの制約を過度に意識する必要がなくなれば、入れ子区間モデルを採用するのが木構造をRDBで表現するのに最も良いのでは?
pending...
pending....