220118 TIL


バックエンドレッスン


MongoDB Dockerのインストール
ストレージクラウドサービス
フレームワークを先に入手してデータで埋め込む方法が一般的です.
サーバ側プレゼンテーション(SSR)完了型html css jsを受信するので、apiを2回目に取得する必要はありません.

NoSQL


コレクション内のドキュメントの格納方法ドキュメントはオブジェクト方式(ex)MongoDB)
ODM(Object Document Mapping) ex)Mongoose

SQL


rowデータ(ex)Oracle、MySQL、Postgresqlを1つずつテーブルに格納
RDB関係データベース
ORM (Object Relation Mapping) ex) squalize ,typeorm, prisma

仮想マシン


環境はオペレーティングシステムによって異なるため、以前はvmware仮想マシンにos全体を新たにインストールして開発していました.

Docker


オペレーティングシステムのコア機能(カーネル)は、共有仮想マシンです.
OSが完全にインストールされていないため、高速
インストールするリストがドッキングステーションに設定されており、ダウンロードする必要はありません.
1.統合開発/導入環境2.プリインストーラ(設定リスト)3.軽量な仮想マシン
CLI : Command line interface
DOCKERコマンドdocker build .(イメージ構築)docker images(画像ID表示)docker run imageID(実行イメージ)docker ps(現在実行中のプロセスを表示)docker ps -a(終了したすべてのプロセスを表示)docker rm CONTAINER ID(終了したプロセスを削除)docker rmi IMAGE ID(画像削除)
すべてのdocker rmi docker images -a -q画像を削除
すべてのdocker rm -a -q -fコンテナを削除docker stop CONTAINER ID(シャットダウン)docker exec -it CONTAINER ID /bin/bash OR shコンテナのターミナル(ex)に接続して環境変数ファイル(dotnv)を作成する場合に使用)docker run -p 2000:3005 imageID2000回(ローカル)接続時、3005回(ドッキング中のポート)=localhost:2000/boardsリクエスト3005(index.jsアンapp.listen(3005)
*bin/bash/は、スクリプトファイルがbash shellで実行されることを意味します.
Createの場合は、キャッシュが残っているため、最初の構築日としてマークします.

Nodeバージョンは異なり、RUN yarn installが望ましい
構築後にファイルの内容または新しいファイルを変更した場合は、再構築する必要があります.修正するたびに糸を取り付けるのは効率的ではありません.
(修正後exを再起動)ファイルの修正はCOPY . /myfolder/から開始します.RUN yarn installの順番を次のように変える必要があります.
node modulesを.dokeerignoreに保存
FROM node:16

WORKDIR /myfolder/
COPY ./package.json /myfolder/
COPY ./yarn.lock /myfolder/
RUN yarn install

COPY . /myfolder/
CMD yarn dev
RUN CMD差異
RUNコマンドは複数回使用可能
CMDはコンストラクション時(パッケージング時)には含まれず、実行時に1回しか実行できません

ポート転送


ドッキングステーションで実行している場合、localhostポートは実行できません.だから私のパソコンに接続する必要があります.
接続プロセスをポート転送と呼びます.
通常、実行後すぐに終了しますが、24時間APIを受信するには、重複文を使用して無限に重複するか、express listenを使用する必要があります.

アルゴリズム問題


チェックアルゴリズムDay 06の難題

sort()map()の使用

function solution(s){
let arr = s.split(" ").map((x)=>+x).sort((a,b)=>a-b)
console.log(arr)
return `${arr.shift()} ${arr.pop()}`}

solution("2 4 1 3") //"1 4"
sort()の場合、文字列ソートはデフォルトです.
数字を並べ替える場合、昇順はsort((a,b)=>a-b)
降順はsort((a,b)=>b-a)と書くべきです.

アルゴリズム問題エラー


※質問
takeRank関数は、国語の点数を表す配列をパラメータとして、配列の要素をナビゲートし、各学生の点数を返さなければならない.
TakeRankという関数を作ろうパラメータとして任意の数値配列を受信します.
同じ点数を入力すると、高い等値で処理されます.つまり最高の点数は92点で、3位92点があれば1位は3位、そして学生は4位です.
人名は自由に取れる
注意事項
new Array()を使用して、新しいアレイを作成してアクセスします.
2 Dナビゲーションを使用してアクセスします.
入力した順番で各学生の順位を返してください.
function takeRank (arr) {
let rank = arr.sort((a,b)=>b-a)
const result = arr.map((x,i) => rank.findIndex((ele)=> ele === arr[i])+1) 
return result
}

takeRank([87, 89, 92, 76, 100]) //[ 0, 1, 2, 3, 4]
このように問題を解いた後、答えはずっと[0,1,2,3,4]だった.
新しい配列を作成するのではなく、受信したarrをsortにソートするので、result文のarr[i]を受信すると、同じ配列が得られます.
既知の値であるため、indexOfの作成はfindIndexよりも簡単である.
function takeRank (arr){
    let arrCopy = [...arr]
    let rank = arrCopy.sort((a,b)=>b-a)
    const result = arr.map((x,i) => rank.indexOf(arr[i])+1)
    return result
}

takeRank([87, 89, 92, 76, 100]) //[ 4, 3, 2, 5, 1 ]