ふわ

2021年04月04日に参加

学習サマリ

学習履歴一覧

150件中の 1-25件 を表示

UdemyでAWS SAAの勉強(11)

やったこと Udemyのハンズオン 輪読会参加 学習メモ Well Architected Framework 1つのリージョンにつきAZを2つ VPCを2つ以上は開発用と本番用みたいな分け方 VPC マルチVPC マルチアカウント サブネットの分割 インターネットとのやり取りが必要なものだけをパブリックに マルチリージョン DBのリードレプリカ 災害対応とか Well Architected Framework Reliability Performance Efficiency Security Cost optimization Operational Excellence ホワイトペーパー SA支援制度 セルフチェックのツール 使用方法 基本的にはベストプラクティス 要件定義 検討材料としてWPを確認する Reliability 自動復旧 オートスケーリング キャパシティの推測をやめる モニタリングと自動化 CloudWatch Performance efficiency 最適なストレージやインスタンス構成 新しい技術への対応 Section9:信頼性の設計 耐障害性 別リージョンへのスタンバイ構成でフェールオーバー 文書をしっかり作る、体制を作るのも信頼性に入る 高可用性 高可用なサービス利用 S3は冗長化が自動でされている 高可用なアーキテクチャ設計 EC2 S3はイレブン9 RTO Recovery time objective RPO 耐障害性 復元可能性 拡張性 高可用性のトレードオフ 可用性を高めるとコストが上がる 配置構成 リージョン、AZ、VPC設計 AWSサービスの利用 Route53など 単一障害点を排除する ELB リードレプリカってなんぞ? IPフローティング

AWS

2024年11月27日(水)

3.0時間

UdemyでAWS SAAの勉強(9)

学習メモ EC2 ネットワークインターフェースの作成 Elastic Fabric Adapter:機械学習とか高度なインスタンスにアタッチする フローログの作成 プレイスメントグループの設定 インスタンスを論理的にグループ化する機能 クラスター 1台のみ インスタンス間通信向上 パーティション 3台ずつとか 耐障害性向上 スプレッド 1台ずつ S3 Lambda アクセスポイント マルチリージョンアクセスポイント 1つのアクセスポイントで複数リージョンのバケットにアクセスできる バッチオペレーション 一般からのアクセスも可能 ストレージレンズ 傾向分析 ログはロックしましょう 誤削除が怖い場合はバージョニングをしよう S3イベント通知 Lambda関数実行とかもできる S3リソースのメタデータをDB保存するとか パフォーマンスの向上 カスタムプレフィックスで日付ベースの順次命名などをすると並列処理が可能となる 整合性モデル 強い整合性モデル:更新中の読み取りは保留になる MD5チェックサム値でチェックできる マルチアップロード 100GB以上の場合は必須 パートデータはライフサイクルで整理できる S3 transfer acceleration エッジロケーションに一旦転送してから遠いリージョンに送る 静的WEBホスティング EC2使うより安価 設定方法 ブロックパブリックアクセスを無効化 バケットポリシー Route53でドメインを設定することができる AWS CLI ドキュメント参照

AWS

2024年11月25日(月)

3.3時間

UdemyでAWS SAAの勉強(6)

感想 やっと25%超えた。先は長いな〜 学習メモ リソースを削除するときは、そのリソースの子リソースから削除する ENI Elastic Network Interface IAMのロールとかポリシーとか忘れた・・・ EC2 仮想サーバーを瞬時に立ち上げられる Amazon Machine Image にバックアップして、再度起動できる EBS・ELB・AutoScalingを含む インスタンスタイプ ストレージタイプと容量 AZに依存したリソース 状態に応じて課金が異なる Running Stop Terminate AMI選択 OSの選択 インスタンスタイプの選択で基本性能が決まる インスタンスタイプ t2.nano ファミリーと世代 インスタンスの容量 ユーザーデータ スクリプトの自動実行できる ブートストラップ ストレージ サーバーの記憶領域 S3と何が違う? インスタンスストア 物理ストレージ EBS Elastic Block Store EC2をターミネートしても保持できる EFS NASっぽいファイルストレージ FSx Windows File Server互換のストレージ セキュリティグループ キーペア 秘密鍵をダウンロードしてアクセス 起動テンプレート バージョン管理が可能 インターネットアクセス パブリックIPかElastic IP インスタンスの購入方式 オンデマンド 長期契約なし、従量課金 リザーブド 1年とか長期を予約 スポットインスタンス AWS管理用を一時的に借りれる Savings Plans リザーブドと似ている インスタンスタイプの指定が柔軟 DBのアーキテクチャサーバー 1インタンスにまとめる サブネットを分ける アンマネージド マネージド RDS

AWS

2024年11月23日(土)

3.5時間

UdemyでAWS SAAの勉強(5)

思ったこと 毎回AWSのコンソールとUdemyを起動しないといけないの面倒 SSHもささっとやる方法ないかねぇ 学習メモ VPCピアリング ICANがIPアドレスを管理している IPアドレスはNICにアタッチされる グローバルIPとプライベートIPがある プライベートIP 3つの範囲に分かれる サブネットマスクとサブネット ネットワークの範囲 使える端末数 表記方法:10.0.1.0/16 IPアドレス + サブネットマスク = IPの範囲 CIDR(サイダー) Classless Inter-Domain Routingの略 サブネットマスクの値を設定し、同じネットワークとして扱うIPアドレスの個数を調整できる設定方法 固定されるのがネットワーク部、可変なのがホスト部 プライベートネットワークを区分けすることができる VPCの概要 Virtual Private Cloud CIDRで構築する /28〜/16まで作成可能 VPC同士やオンプレと接続可能 AWS側で予約されているアドレスがある ネットワークアドレス VPCルータ DNSサービス ブロードキャストアドレス VPCウィザードで効率的に作成できる GW → Route → PBSub → PriSub ゲートウェイにも種類がある NATゲートウェイ Egress Only カスタマーゲートウェイ 仮想プライベートゲートウェイ DNS enableDnsHostnames enableDnsSupport ゼロトラストってなんだっけ S3はリージョン内にあり、VPCの中にはないのでエンドポイントが作られる EC2インスタン間で通信を行う際はDNSが有効化されている必要がある 使われていない(deleted)のElastic IPは有料になる→使っていなければ削除 DHCPが自動でIPを割り当ててくれる ルーターがDHCPの役割を実施する NATのソフトウェアはルーターに入っていることが多い NATは1:1、IPマスカレードは1:N アプセトネデブ(OSI参照モデル) プレゼンテーション層:文字の送り方を規定 セッション層:ログイン状態の保持など トランスポート層:コネクションの確立(ポート番号の指定) ネットワーク層:IPアドレス関係、ルーティング データリンク層:MACアドレス 物理層:ビット列↔️電気信号 ポート番号 LINEって5000番なんだ セキュリティグループ インスタンスへのトラフィックのアクセス許可を設定する NACL エフェメラルポートを許可しておかないと通信できないよ NATゲートウェイについて VPC内のプライベートサブネットには外部からリクエストを投げることはできるが、レスポンスをインターネットに帰すことができない。パブリックIPがないから。そこで、NATゲートウェイを設置してElasticIP(パブリックIP)を付与する。NATゲートウェイでプライベートIPとElasticIPを変換する。 ElasticIPとパブリックIPは性質が異なる Elastic IPは静的 パブリックIPは動的 プライベートのNATゲートウェイはプライベートネットワーク内のルーティングに使用する VPCエンドポイント VPC内のEC2からS3にアクセスする場合 ゲートウェイ型とプライベートリンク型エンドポイントがある  VPCヒアリング トランジットゲートウェイ ハブ型で複数VPCを接続 Direct Connect 専用線

AWS

2024年11月21日(木)

3.3時間

UdemyでAWS SAAの勉強(3)

やったこと Section2:Day1対応 Section3:AWSの概要 メモ ・DAY1対応  ・MFA有効化(指紋認証にした)  ・パスワードポリシー  ・IAMユーザー新規作成して管理者権限を付与する  ・CloudTlailでログ出力を有効化する    →ユーザーアクセスやAPIコールのロギングを行う  ・S3バケットが一定量を超えると有料になる ・クイック作成でない方法でやってみる   ・S3バケット名はグローバルで一意でないといけない   ・KMS:key management service   ・S3:フォルダ構造になっていて、Dropboxのように使える   ・イベント履歴からイベントログをCSVで落とせる   ・insights、レイクなどがある  ・請求アラートの設定   ・請求アラートの設定をするにはIAMに権限を設定する必要がある   ・CloudWatch:メトリクスを収集してくれる  ・AWSの概要   ・仮想化について ・サーバー仮想化(ハイパーバイザ、ホスト型、コンテナ型)    ・ネットワーク仮想化(SDN/VLAN)   ・Docker形式の仮想化が増えてきている(コンテナ=kernel、環境のコード化ができる)   ・SDI(sowtware defined infrastructure)   ・クラウドとは    インフラの間借り   ・クラウド構成要素    APP、ミドルウェア、インフラ   ・クラウドの基本特性    オンデマンド、幅広いネットワークアクセス、リソースの共有、迅速な拡張性、サービスは計測可能   ・IaaS、PaaS、SaaS(Dropboxとか)   ・クラウドの提供形態    オンプレミス    プライベートクラウド    パブリッククラウド    ハイブリッドクラウド   ・クラウドの歴史    集中、分散、クラウド、エッジコンピューティング   ・AWSサービスの概要    EC2(サーバー)、ELB(ロードバランサー)、RDS(データベース)、VPC(仮想ネットワーク)、Route53(DNS)、S3(DBのスナップショット等)→200以上のサービスがある   ・AWSのグローバルインフラ構成    リージョン    AZ    エッジロケーション(コンテンツ配信用)    DirectConnect   ・リージョン    日本は東京と大阪ローカルリージョン    複数のAZから成る    隣接リージョン間は専用線で接続されている(北京を除く)    リージョンに応じて利用可能なサービスが異なる   ・AZ    1つ上のデータセンターで構成    AZ間で冗長化できる    AZ間はネットワークで接続され、レプリケーションできる    すべてのAZがユーザーから利用可能なわけではない    単一AZで利用していると、AZ障害の時に落ちる    全てのレイヤーでマルチAZにすると可用性が高まる    基本的にはユーザーがいるリージョン    国の法律にも関わる    BCPのために別リージョンで冗長化する   ・エッジロケーション    CloudFrontでコンテンツ配信する   ・AWSローカルゾーン    低レイテンシ向けにエンドユーザーに近い場所に設置する   ・AWSの意義    2021年グローバルシェア約4割 圧倒的な投資額(2020年に4.8兆円の研究開発費)    re:Invent:業界のスタンダードになっている    AWSを基準に比較検討するのがスタンダードになっている 気づいたこと  ・マネジメントコンソールからすぐログアウトされてしまうので注意(別タブで開くとログアウトされる?)

AWS

2024年11月19日(火)

1.6時間

【6回目】paizaの問題に取り組む(息抜き)

paizaの問題に取り組む 息抜きにpaizaのスキルチェック問題をやってみた。 問題について詳しくは書けないですが、与えられた文字列(すべて数字)を簡易的な二次元バーコードに変換するというもの。 与えられた仕様が変わった場合に、柔軟に対応できるように書こうとするのに時間がかかった。 解答時間の中央値の3倍時間がかかったので、まだまだ練習が必要だなーと思った。でも楽しかった。 メソッドや変数の命名にも改善点があるなと思った。 書いているうちに、「あれ、このメソッド何の処理してるんだっけ?」と思うことが多かった。 package S_5_myanswer; import java.util.ArrayList; import java.util.List; public class Main { public static final int decimalNum = 9; //バーコード1ブロックの行数 public static final int numberOfCharsPerLine = 3; public static final int numberOfBlocksPerLine = 3; public static final String sharp = "#"; public static final String dot = "."; public static void main(String[] args) { String line = "314159265"; List<List<String>> decoded = new ArrayList<>(); for (int i = 0; i < line.length(); i++){ char ch = line.charAt(i); decoded.add(convertNumToStringList(Character.toString(ch))); } int loopCount = line.length() / 3; int currentCount = 0; int firstIndex = 0; //読み出す回数 while (currentCount < loopCount){ List<String> firstList = decoded.get(firstIndex); List<String> secondList = decoded.get(firstIndex + 1); List<String> thirdList = decoded.get(firstIndex + 2); for (int i = 0; i < 3; i++){ System.out.println(firstList.get(i) + secondList.get(i) + thirdList.get(i)); } firstIndex = firstIndex + numberOfBlocksPerLine; currentCount++; } } public static List<String> convertNumToStringList(String str) { StringBuilder sb = new StringBuilder(); int inputNum = Integer.parseInt(str); int count = decimalNum; List<String> result = new ArrayList<>(); for (int i = inputNum; count > 0; count--) { if (i > 0){ sb.append(sharp); } else { sb.append(dot); } i--; } return convertStringToList(sb.toString()); } public static List<String> convertStringToList(String input){ List<String> result = new ArrayList<String>(); int numberOfLines = decimalNum / numberOfCharsPerLine; int inputNum = decimalNum; int index = 0; for (int i = 0; i < numberOfLines; i++) { StringBuilder element = new StringBuilder(); for (int j = 0; j < numberOfCharsPerLine; j++) { element.append(input.charAt(index)); index++; } result.add(element.toString()); } return result; } }

Java

2023年07月02日(日)

2.1時間

【5回目】問題3の復習/問題4の回答

学んだこと 問題3で、空白でスプリットする際に、WHITE_SPACEの定数として括り出していた。 Stream APIを学ばないとなと思った。 変数を命名する際、その変数の中に何が入っているのかわかりやすく書く必要があるなと思った。 文章を逆の文字列、並びにして返す関数の場合 返却用のローカル変数をresultと書くのではなく、reversedStringと書くなど。 String.parseInt()メソッドのJavaソースを読んでみた。頑張れば理解できなくもないかも。 問題4で、文字列が数字だけでできているかを確かめる際、String.parseIntを使用するのは悪手らしい。次回要確認。 package S_4_myAnswer; //Checking whether a string contains only digits: Write a program that checks whether the given string contains only digits. // //Leonard, Anghel. Java Coding Problems: Improve your Java Programming skills by solving real-world coding challenges (p. 9). Packt Publishing. Kindle Edition. public class Main { public static void main(String[] args) { //String testStr = "1000243"; String testStr = "1000243"; //System.out.println(isNumeric(testStr)); System.out.println(isAllNumeric(testStr)); } public static boolean isAllNumeric(String str){ if (str == null) { return false; } for (int i = 0; i < str.length(); i++) { if (Character.isDigit(str.charAt(i))) { continue; } else { return false; } } return true; } // public static boolean isNumeric(Char chr){ // if(chr == null) { // return false; // } // try { // int i = Integer.parseInt(str); // } catch (NumberFormatException e) { // return false; // } // return true; // // } }

Java

2023年06月20日(火)

1.5時間

Java 演習問題 2問目(最初の反復していない文字を取り出す)

問題 与えられた文字列から最初の反復していない文字を出力する。 答えの写経 与えられた文字列がASCIIの文字であれば、以下のコードでいけるらしい。mainメソッドを実行しても、想定結果("v")が出力されず、"a"が出力される。次回、デバッグしよう。 所感 コードの意味がわからない場合は、ChatGPTに教えてもらうことができる。これは勉強捗りそう。以下のコードでやりたいこと、意図していることは理解できたが、なぜ想定結果が出力されないのだろう。。 package S_2; //Finding the first non-repeated character: Write a program that returns the first non-repeated character from a given string. public class Main { private static final int EXTENDED_ASCII_CODES = 256; public static void main(String[] args) { String sample = "aaaaav"; char ch = Main.firstNonRepeatedCharacter(sample); System.out.println(ch); } public static char firstNonRepeatedCharacter(String str){ //Why is it 256?? int[] flags = new int[EXTENDED_ASCII_CODES]; for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if (flags[ch] == -1) { flags[ch] = i; } else { flags[ch] = -2; } } int position = Integer.MAX_VALUE; for (int i = 0; i < EXTENDED_ASCII_CODES; i++) { if (flags[i] >= 0) { position = Math.min(position, flags[i]); } } return position == Integer.MAX_VALUE ? Character.MIN_VALUE : str.charAt(position); } }

Java
Linux
Git / GitHub

2023年06月05日(月)

1.3時間

150件中の 1-25件 を表示