13週目のコードフェーズ-[認証/セキュリティ]ベース/[コンピュータエンジニアリング]ベース


今週は今までの勉強期間で一番緊張したスケジュールです.3日間で認証/安全基礎を学び、1日に1つのスプレーを解いて頭に詰めたような感じがします.「どこかで見たことがあります」勉強するときは頭が痛いほど勉強してこそ、自分が想像したように効率的に勉強することができます.「痛くなければ、思ったほど勉強ができなかった」私はこのような内容を見て、どうして私たちの脳は病気になってこそ頭がよくなるのですか?😕
しかしその後、私は多くのコンピュータ工学の理論部分を学び、以前少し学んだ部分なので、難しくない部分を覚えていたので、すぐに終わりました.毎日フェルさんと一緒に勉強していて、一人でやるのはちょっと寂しいし、のんびりしています.今回のフェアは本当に良かったです彼も私と一緒にいる時間が有益だと言って、彼は私と一緒にいたいと思っています.😆 お互いにティキタカの感じが好きです.
勉強の時間が長くなって、ますますクレイジーになって、みんなは自分が少し疲れていると思っています.正直に言って、私も遊びたいです.休みたいです.勉強したいです.一番いい方法はずるずると勉強することではないと思います.だから、一日勉強して、休みの時に気持ちを変えてこそ、この長い旅を終わらせることができます.短期間で勉強に励むために始まったのですが、飽きたら終わりです.今でも続けられる.休みの時はゆっくり休んで、体面を失わないように努力しなければならない.👏

13週間勉強した内容の中で整理したい内容


[認証/セキュリティ]ベース

  • HTTPS:Hyper Text Transfer Protocaol Secureの略.HTTPリクエストは、SSLまたはTLSというアルゴリズムを用いて、HTTP通信中にコンテンツを暗号化してデータを伝送する
  • なぜHTTPSを使うのですか?=>機密性(プライバシー)と完全性(完全性)

    [HTTPS]
    
    1. HTTPS 프로토콜의 특징 중 하는 브라우저가 응답과 함께 전달된 인증서 정보를 확인 가능
       -> 브라우저는 인증서에 대한 CA정보 확인. 서버의 공개키 제공
       
       
    2. 비대칭키 암호화(암호화/복호화하는 키가 다름)
      -> 일반적으로 HTTPS에서는 공개키: 암호화, 비공개키(개인키): 복호화    *바꿀 수 있음*
    
        
        
        
        
    [Hashing]
    
    1. 어떤 문자열에 '임의의 연산'을 적용하여 다른 문자열로 반환하는 것.
       
    2. hashing함수는 input -> output에 대해 항상 똑같은 결과를 냄.
           
    3. 복호화가 사실상 불가능.
    
      
    
        
    [Cookie]
    
    1. http의 stateless(무상태성) 특징을 보완해주는 도구
       
    2. 서버는 브라우저에게 일방적으로 cookie를 줄 수 있음
           
    3. cookie는 브라우저에 담기고, 전송과정에서 헤더에 실림(세션의 개념은 서버에 존재)
    
    4. 클라이언트에서 서버로 보내질때는 cookie가 헤더에 자동으로
    
    5. connect.sid(쿠키를 생성하고 이를 식별자로 이용). res.cookie() => set cookie
    
      
    
        
    [Cookie 옵션]
    
    - domain: 서버와 요청의 도메인이 일치하는가
    - path: 서버의 요청의 세부경로가 일치하는가    
    - maxage/expires: 쿠키의 유효기간 설정
    - httpOnly: 스크립트의 쿠키 접근 가능 여부 설정
    - secure: HTTPS에서만 쿠키 전송 여부 설정
    - sameSite: 같은 사이트에서만 쿠키를 사용할 수 있게 설정 => none은 https에서만 사용 가능
    
                    *secure와 sameSite는 짝꿍*
                 
    セッションベースの認証プロセス

    トークンベースの認証プロセス

    説明接続状態格納位置欠点クッキークッキークッキークッキーはhttpのstatelssを補い、ツールクライアント(ブラウザ)クッキー自体は認証ではなく、セッション接続状態をクッキーとしてサーバに送信+1台のサーバにのみ接続状態を有し、セッションIDタグをクッキーとしてサーバに送信+1台のサーバにのみ接続状態を有し、token tokenを分散するのに不利である(JWTに代表される)トークン自体が完全性であり、サーバがアクセスtoken認証を受けるのではなく、アクセスステータス(Cookie、localStorage、in-memory)がすべての要求にトークンを送信する必要がないことを証明することができるのは、OAuth 2.0サードパーティエージェント認証のみである.パーミッション管理では、トークンメソッドとすべてのリクエスト(Cookie、localStorage、in-memory)にトークンを送信する必要があります.

    [コンピュータエンジニアリング]ベース

  • 유니코드란?
  • 世界中のすべての文字をコンピュータ上で統一的に表現・処理するための工業規格
  • 既存の文字符号化方法をUnicodeに置き換えることを目的とする
  • UTF-8/ UTF-16
  • UTF-8UTF-16은 인코딩 방식의 차이. 뒤에 숫자는 비트(bit)
    
    
    UTF-8 : 1bytes에서 4bytes까지의 가변길이를 가지는 인코딩 방식
    	네트워크를 통해 전송되는 텍스트는 주로 UTF-8로 인코딩
    	바이트 순서를 따지지 않고, 순서가 정해져 있음
        	4bytes까지 사용
    
    
    
    
    UTF-16 : 코드 그대로 바이트로 표현 가능
    	 순서 다양
    	 가변길이라고 할 수 있으나, 대부분 2바이트로 표현
    
         
         
      *UTF-8에서 한굴은 3바이트, UTF-16에서는 2바이트 (1byte = 8bits)*
  • 비트맵(래스터)과 백터이미지의 차이점
  • ビットマップ(ラスタ)ベースの画素ベースの技術数学計算のような形状ベースの特徴写真は、複数の色の組み合わせに適した画像のバッジである.製品に適用される画像の拡大要件を満たすために、所望のサイズより大きい画像(イラストなど)を作成したり、スキャン品質に影響を及ぼさずにすべてのサイズに拡大したりすることができます.解像度の影響を受けないサイズのファイルサイズが大きい画像はファイルサイズが大きいが、大きいサイズのバックエンドグラフィックは小さいファイルサイズをベクトルに変換するのに長い時間がかかるため、小さいファイルサイズをベクトル画像に変換しやすいため、代表的なファイルフォーマットjpg、gif、png、png、bmp、psdsvg、psdsvg、現代のブラウザでは、jpg、gif、pngなどのSVGフォーマットがai Web上で広く使用されていることが多い.
    ハードウェアは自分で作業できません.OSはハードウェアを動作させる必要があります
  • 운영체계
  • システム資源管理
    ->アプリケーションは、コンピュータを使用してさまざまなタスクを実行します.オペレーティングシステムは、アプリケーションがハードウェアとして機能するのを支援します.
    ->オペレーティングシステムは、CPU、RAM、ディスクなどのシステムリソースの管理を行います.
  • アプリケーション管理
    ->アプリケーションの実行とシステムリソースの使用のための権限とユーザーの管理
  • 응용프로그램(운영체제를 통해 컴퓨터에게 일을 시킴)
    ->オペレーティングシステムのライセンスを取得し、オペレーティングシステムが提供する機能を使用します.
    ->アプリケーションが使用権限を取得したら、使用時に必要なAPIを呼び出す必要があります.これらのAPIはシステム呼び出しからなる
  • 시스템콜이란?:オペレーティングシステムレベルで各種関数を提供し、システムリソースを使用する;
  • [프로세스]
    
    
    사용자가 애플리케이션을 실행하는 운영체제로부터 실행에 필요한 메모리를 할당 받아 애플리케이션의 코드를 실행 
      => 이때 실행되는 애플리케이션을 프로세스라 부름
    
    여러 프로세스(다중 프로세스)를 만들기도 함
    
    
    
    
    
    
    [스레드]
    
    
    프로세스 내에서 실행되는 흐름의 단위
    
    각 스레드마다 callstack이 존재
      *callstack: 실행중인 서브루틴을 저장하는 자료구조*
      
    스레드는 다른 스레드와 독립적으로 동작
    
    동시에 돌릴 수 있는 스레드 수 = 컴퓨터에 있는 코어의 갯수
    시분할이란? 운영체제가 각 스레드를 시간에 따라 분할하여, 여러 스레드가 일정시간마다 돌아가면서 실행되도록
    
    
    
    
    
    
    [멀티스레드]
    
    
    두가지 이상의 작업을 동시에 처리하는 것
    
    운영체제는 멀티 태스킹을 할 수 있도록, 프로세스마다 CPU 및 메모리 자원을 적절히 할당하고 병렬로 실행
    멀티프로세스 => 애플리케이션 단위의 멀티 태스킹 / 멀티스레드 => 애플리케이션 내부에서의 멀티 태스킹
    
    대용량 데이터의 처리 시간이 줄어듬. 데이를 분할하여 병렬로 처리하는데 사용
    
    
    
    
    
    
    [멀티스레드 장점]
    
    
    메모리공간과 시스템 자원의 소모가 줄어들고, 프로그램 응답 시간이 줄어듬
    여러 프로세스로 할 수 있는 작업을 하나의 프로세스에서 스레로 나눠 수행
    
    
    
    [멀티스레드 단점]
    
    
    프로세스 간 공유하는 자원이 없음
    
    서로 다른 스레드가 같은 데이터에 접근하고 힙 영역을 공유하기 때문에 다른 스레드가 서로 사용중인 변수나 자료구조에 접근하여
    값을 잘못읽거나 수정하는 일 발생 가능  =>  동기화 작업필요(작업처리 순서를 제어, 공유자원에 대한 접근 제어)
                  
  • 가비지 컬렉션이란?
    ->プログラムが使用しなくなったメモリの自動消去
    ->JAVA、C#、JSなど
    ->メモリ漏洩の回避
  • 트레이싱이란?:一つのオブジェクトにflagを置き、ゴミ収集サイクルごとにタグ付けしてflagを削除するmark and sweepメソッド
  • 레퍼런스카운팅이란?:1つのオブジェクトを参照する変数をトレースする方法
  • 캐시란?
  • *일시적인 데이터를 저장하기 위한 목적으로 존재하는 고속의 데이터 저장공간*
    
    1. 작동원리
       => 일반적으로 RAM과 같이 빠르게 액세스할 수 있는 하드웨어에 저장, 소프트웨어 구성요소와 함께 사용가능
       => 캐시는 기본 스토리지 계층(SSD, HDD)에 액세스하여 느린작업의 요구를 줄이고, 데이터 검색의 성능을 높임
       => 용량을 절충하는 캐시는 일반적으로 데이터의 하위집합으로 일시적으로 저장
       => 완전하고 영구적인 데이터가 있는 데이터베이스와 대조적
       
       
      
    2. 장점
       => 애플리케이션 성능이 높음. 데이터베이스 비용이 적음. 백엔드 부하가 적음. 
       예측가능한 성능. 데이터베이스 핫스팟 제거. 읽기 처리량이 많음
    
       
       
    3. 예제
       => 클라이언트: HTTP-캐시헤더, 브라우저
       => 네트워크: DNS 서버, HTTP 캐시헤더, CDN, 리버스 프록시
       => 서버 및 데이터베이스:-데이터스토어(e.g. Redis), 로컬캐시(-메모리, 디스크)