プログラミングBlog

アプリ開発サークル勉強会⑫ 開催日時 2021年3月20日(土) 7:00-9:00

本日もこちらの問題やりました!

Q49-51 https://gist.github.com/kenmori/1961ce0140dc3307a0e641c8dde6701d

Map

Mapオブジェクトはkey,value形式で値を保持することができる。
二次元配列から値を取得したい場合。

Map不使用

var fafa = [['one', 'info@fa'], ['two', 'send@fafa'], ['three', 'hoso@fafa']];

var str;
fafa.forEach(function (value) {
    value.forEach(function (val) {
        if (val === 'send@fafa') {
            str = val;
        }
    });
});
// 結果
send@fafa

Map使用

var map = new Map(fafa);
console.log(map.get('two'));
// 結果
send@fafa

こんな簡単に取得できるとは。。。

結合

var fafa2 = [['four', 'deo@fafa']];

var map = new Map([...fafa, ...fafa2]);
console.log(map);
// 結果
Map(4) {
  'one' => 'info@fa',
  'two' => 'send@fafa',
  'three' => 'hoso@fafa',
  'four' => 'deo@fafa'
}

...

こんな書き方もあるのね。
二次元→一次元

var fafa = [['one', 'info@fa'], ['two', 'send@fafa'], ['three', 'hoso@fafa']];
console.log(fafa);
// 結果
[
  [ 'one', 'info@fa' ],
  [ 'two', 'send@fafa' ],
  [ 'three', 'hoso@fafa' ]
]
var fafa = [['one', 'info@fa'], ['two', 'send@fafa'], ['three', 'hoso@fafa']];
console.log(...fafa);
// 結果
[ 'one', 'info@fa' ] [ 'two', 'send@fafa' ] [ 'three', 'hoso@fafa' ]

EC2でSpringBootの起動時にエラー

EC2でSpringBootの起動時にエラー

エラー内容

EC2にInstallしたJavaのVersionが古いため、起動できない
起動ができるJavaをInstallしてもう一度起動する
今回はJava11で作成したのでJava11をInstall
f:id:Tokuty:20210314153820p:plain


teratail.com


Java11 Install
yum install -y java-11-amazon-corretto-headless.x86_64


JavaのVersionを変更する。
sudo alternatives --config java


起動
java -jar demo-0.0.1-SNAPSHOT.jar


起動確認 f:id:Tokuty:20210314154512p:plain


Visual Studio CodeでSpringBootをjarにする

Visual Studio Codeでjar化の手順書


準備物





  • Gradle Build Tool

gradle.org

Spring Project作成

Ctrl + Shift + P(コマンドパレット) 以下のコマンドを打ち込む
今回はGradle、Mavenの場合はMavenに変えたらOK
Spring Initializr: Create a Gradle Project
f:id:Tokuty:20210314124916p:plain
後は必要事項を打ち込んでいく。
f:id:Tokuty:20210314125132p:plain


f:id:Tokuty:20210314125205p:plain


f:id:Tokuty:20210314125216p:plain


f:id:Tokuty:20210314125227p:plain


jarにしたいのでjarを選択
f:id:Tokuty:20210314125236p:plain


f:id:Tokuty:20210314125245p:plain


必要な依存関係を追加

  • Spring Web

  • Thymeleaf

f:id:Tokuty:20210314125253p:plain


f:id:Tokuty:20210314125303p:plain


プロジェクトを作成したフォルダを選択 f:id:Tokuty:20210314125311p:plain


実行→デバッグの開始
f:id:Tokuty:20210314125319p:plain

起動確認できたので次はjarにしていきます。
Gradle Build Tool をInstallします。

Gradle Build Tool Install

以下サイトよりInstall
gradle.org

Install Gradleをクリック
f:id:Tokuty:20210314114728p:plain

Step 1. Downloadをクリック
f:id:Tokuty:20210314115353p:plain

installしたいversionのcompleteをクリック
f:id:Tokuty:20210314115415p:plain


installできたら解凍して環境パスの設定を行う。

環境パス設定

スタート → Windows システムツール → コントロールパネル f:id:Tokuty:20210314122157p:plain


システムとセキュリティ
f:id:Tokuty:20210314122207p:plain


システム
f:id:Tokuty:20210314122215p:plain


システムの詳細設定 → 環境設定 f:id:Tokuty:20210314123025p:plain


ユーザ変数
解凍先のフォルダを指定
f:id:Tokuty:20210314122514p:plain


システム変数
gradle.batが存在するbin/を指定
f:id:Tokuty:20210314122524p:plain


ターミナルから以下のコマンドを打ち込みinstallの確認
gradle -version f:id:Tokuty:20210314130352p:plain

installの確認ができたので次はjarにしていきます。

jar作成

以下のコマンドを打ち込みjarにしていきます。
gradle build
build/libs/demo-0.0.1-SNAPSHOT.jarが作成されているので無事成功。
f:id:Tokuty:20210314130926p:plain

参考サイト

環境パス
www.javadrive.jp


環境構築~SpringFramework学習
zenn.dev


VscodeでのSpringBoot実行
qiita.com

アプリ開発サークル勉強会⑪ 開催日時 2021年3月13日(土) 7:00-9:00

本日もこちらの問題やりました!

Q46-48 https://gist.github.com/kenmori/1961ce0140dc3307a0e641c8dde6701d

配列の中に連想配列

配列の中に連想配列が定義されているパターン
このようなkey,value形式の値を取り出して配列に戻す。

var names = [{ name1: 'A', name2: 'B' }, { name3: 'C', name4: 'D' }];

まずはforEachで連想配列を取り出す。

names.forEach(function (name) {
    console.log(name);
});

結果:

{ name1: 'A', name2: 'B' }
{ name3: 'C', name4: 'D' }

次にkeyを連想配列に定義されているすべてのkeyを取り出す

names.forEach(function (name) {
    Object.keys(name).forEach(function (key) {
        console.log(key);
    });
});

結果:

name1
name2
name3
name4

後はこれらのkeyを使って連想配列の中のvalue値を取り出して配列に詰め込む。

var results = [];

names.forEach(function (name,) {
    Object.keys(name).forEach(function (key) {
        results.push(name[key]);
    });
});

console.log(results);

結果:

[ 'A', 'B', 'C', 'D' ]

参考サイト

JavaScript|配列とオブジェクト(連想配列)の組み合わせパターン - わくわくBank

some

numbersの中身が一つでも5以上だったらtrueを返す。
someを使わなかった場合と使った場合の比較。

 Someなし

変数numbers

var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var result = function () {
    for (var number of numbers) {
        if (number === 5) {
            return number >= 5;
        };
    }
    return false;
}

console.log(result);

結果:

true

 Someあり

var result1 = numbers.some(function (number) {
    return number >= 5;
});

console.log(result1);

結果:

true

everyなし

numbersの中身がすべて5以上だったらtrueを返す。
everyを使わなかった場合と使った場合の比較。

everyなし

var result = function () {
    for (var number of numbers) {
        if (number >= 5) {
            return false;
        }
    }
    return true;
}

console.log(result());

結果:

false

every

var result1 = numbers.every(function (number) {
    return number >= 5;
});

console.log(result1);

結果:

false

AWS わからない言葉を調べていく①

レイテンシー

データ転送などを要求してから、その結果が返送されるまでの遅延時間のこと。
レイテンシーとは遅延時間が少ないということ。

CDN (Content Delivery Network)

コンテンツデリバリネットワークの略。
ウェブコンテンツをインターネット経由で配信するために最適化されたネットワークのこと。
サーバーを一ヶ所に置くのではなく、分散させて配置し、アクセスの集中を避けて反応が遅くなったり応答不能にならないようにする。

トラフィック

ネットワークを流れる情報、情報量。
英語で交通という意味。
トラフィック制御やリソースのトラフィック制限等は情報の制御、情報の制限に置き換わる。

オフロード

実行中の処理を停止させる、システム不可を軽減させるなどに用いられる。
読み取り処理をオフロードするとは、停止、軽減させるということ。
RDSだとリードレプリカを作成することでトラフィックを分散させることができる。

スループット

単位時間当たりの処理能力

フォールトトレランス

システムの一部に問題が生じても全体が機能停止(機能を縮小しても)するということなく動作し続けるシステム。

フェイルオーバー

サーバー、システム、ネットワークで異常事態が発生した場合、自動的に冗長なサーバー、システム、ネットワークに切り替える機能。
手動で切り替える場合はスイッチオーバ―という。 マルチAZにRDSを配置するということは、障害発生時に、自動的に正常なRDSに切り替えれるということ。

プロビジョニング

準備、提供、設備。
自動的にプロビジョニングとは自動的に提供されるということ。

スケーラビリティ

仕事の増大に適応できる能力
アベイラビリティーとは、システムが継続して稼働できる度合いや、能力。

スケールアップとスケールダウン

スケールアップは性能を上げる。スケールダウンは性能を下げる。
垂直スケールともよばれる。

スケールインとスケールアウト

スケールインはサーバーの台数を減らす。 スケールアウトはサーバーの台数を増やす。
水平スケールともよばれる。

AWS用語集

単語の意味調べてたら偶然発見。
説明に専門用語が使われているためさらに調べる必要あり。
AWS の用語集 - AWS 全般のリファレンス

GitHubをかっこよくしていく。

DarkMode

Your Orgnaizationをクリック
f:id:Tokuty:20210307141404p:plain
AppearanceからDefault darkを選択。
f:id:Tokuty:20210307141434p:plain
目に優しいです。

GitHub Readme Stats

GitHubの統計情報が生成できる機能。
いままでのコミット数の合計等の情報が数値で表示できます。
言語ごとのパーセンテージも見れるので。どんな言語を扱ってるかもすぐにわかるので、
初めて訪れた人にはわかりやすくていいですね!
qiita.com
以下のサイトの引用

GitHubアカウント名と同じ名前のリポジトリを作成する 1で作成したリポジトリにREADME.mdを作成する 2で作成したREADME.mdにGitHubプロフィールに表示したい内容を追記する

Git hubに反映されなかったのでなんでだろうといろいろ試してましたが、
赤丸の箇所をクリックしたら反映されました。
f:id:Tokuty:20210307130225p:plain

GitHub Readme Stats のRepository
使い方はReadme.md
github.com

完成

見た目も重要ですね。
f:id:Tokuty:20210307130504p:plain

Clone後のRepositoryを消す

他人のRepositoryをcloneした後、使い終わって必要なくなった場合に表示から消す方法。
Repositoriesをクリック→該当のRepository右にあるLeaveをクリック
f:id:Tokuty:20210307141537p:plain I understand, leave this repositoryをクリック f:id:Tokuty:20210307142318p:plain

アプリ開発サークル勉強会⑩ 開催日時 2021年3月6日(土) 7:00-9:00

本日もこちらの問題やりました!

Q41-45 https://gist.github.com/kenmori/1961ce0140dc3307a0e641c8dde6701d

新しい連想配列作成

Object.prototypeにて全く新しい配列を作る例。
mapでも同じことできます。

var o = {};
var obj = Object.create(o, Object.prototype);

if (obj === o) {
    console.log("onazi!!");
}
console.log(obj);

結果:

{}

参照渡し

メモリ上だと同じ場所を参照しているため、どちらかの値を変更すると両方変更してしまう。

var o = { a: 1, b: 2, c: 3 };
var x = o;
x.d = 4;

console.log(o);

結果:

{ a: 1, b: 2, c: 3, d: 4 }

break; continue

foreachだとbreak;continue;が使えないため、for文を使うか、someを使う。 returnで代替えが可能。

[0, 1, 2, 3, 4].some(function (val, i) {
    if (val === 2) {
        // how do we stop?
        return true;
    }
    console.log(val);
});

結果:

0,1

someは条件に一致すればtrue,一致しなければfalseを返却する。