반응형
반응형

📝UML

소프트웨어의 개념 모델을 시각적인 그래픽 형태로 작성합니다. 엄청 다양한 다이어그램종류들이 있습니다

클래스 다이어그램, ERD, 시스템 아키텍처 등...

 

📝상태전이다이어그램

UML의 다이어그램 중 하나로서 전체적인 동작과정을 도식화한 것이다. 만약 기능이 많다면 여러개의 기능별로 분류해 그리는게 좋습니다.

 

📝데이터베이스 튜닝

데이터베이스의 성능을 향상하거나 응답시간을 단축시키는 것입니다.

 

📝데이터베이스 모델링

데이터베이스의 테이블(관계형 데이터베이스일 경우)을 어떻게 구성할지 구상하는 것을 의미합니다.

정답은 없지만 바람직한 답은 있습니다. 상당히 어렵고 중요한 작업이고 구현하려는 것에 대해 정확하고 폭 넓고 깊은 지식과 경험도 필요합니다.

개념적모델링 - 논리적모델링 - 물리적모델링의 진행과정이 있고 점차 세분화하는 과정입니다

 

 

📝개념적모델링

 

📝논리적모델링

 

📝물리적모델링

 

📝ERD (ER 다이어그램)

DB 테이블 설계의 물리적 모델링입니다.

반응형
반응형

📝리다이렉션

리다이렉션을 이용해 다른 장치로 변경할 수 있다

예) 표준 출력장치가 모니터로 되어있는걸 프린터로 바꾼다던가 합니다.

 

  • 표준출력
    • [명령 프롬프트 결과] (모니터)
  • 표준입력
    • [명령 프롬프트] (키보드)

 

 

📝출력의 방향을 바꾸는 기호 (>)

명령 > 파일명

명령어 내용을 파일명에 저장하는 것입니다.

 

notepad test.txt는 test.txt라는 파일을 만드는 것입니다.

dir > test.txt는 dir 명령어의 내용을 test.txt에 입력하라는 말입니다.

열어보면 위와 같이 되어있습니다

 

📝기존파일에 추가 입력하는 기호 (>>)

명령 >> 파일명

기존 파일에 있는 내용에 이어서 명령어를 입력하라는 의미입니다

 

여기에서 test.txt 에 dir 명령어의 내용이 담겨있는데 >를 쓸 경우 덮어쓰기가 됩니다.

>>을 쓰면 그 안에 내용은 보존하고 이어쓰기가 됩니다.

 

📝입력의 방향을 바꾸는 기호 (<)

명령 < 파일명

원래 키보드로 입력을 하는데 그걸 파일로 대체하고 명령을 이행하라는 의미입니다.

즉 파일에 내용이 명령어의 매개변수가 되는 것이죠

 

📝파일디스크립터 (fd)

리눅스, 유닉스는 컴퓨터의 모든 것을 파일로 모델링합니다.

 

  • 0번
    • 기본적으로 생성될 때 입력할 수 있는 기능이 해당 파일을 참조
  • 1번
    • 읽을 수 있는 기능이 해당 파일을 참조
  • 2번
    • 해당 파일의 오류를 출력해주는 기능이 해당 파일을 참조

 

그 후에 소켓, 다른 파일 등.. 이 파일을 참조하는 애들이 순차적으로 3번 4번 5번... 이런식으로 가지게 됩니다.

그러면 해당 프로세스의 3번을 읽으면 어떤 파일이 참조하고 있는지 알 수 있게 됩니다.

(번호로 매핑테이블을 만들고 빠르게 접근할 수 있다)

# 파일 디스크립터 갯수 세주는 쉘스크립트
pids=`ps -ef | awk '{print $2}'`
count=0

for pid in $pids
do
    tmp=`ls /proc/$pid/fd/ | wc -l`
    count=`expr $count + $tmp`
done

echo $count

 

1번째 testing.sh 실행vi로 파일을 열기전 전체 프로세스의 파일 디스크립터 개수입니다.

2번째 testing.sh 실행vi로 파일을 열었을 때 전체 프로세스의 파일 디스크립터 개수입니다.

 

해당 프로세스를 참조하는 곳과 파일 디스크립터 확인 명령어ls -all /proc/${pid}/fd/

렇게 참조하는 곳이 많아질 수록 숫자가 점점 늘어나게 됩니다.

 

📝프로세스

현재 시스템에 실행중인 프로그램을 의미합니다.

 

📝PID

프로세스는 번호로 관리됩니다 이걸 PID라고 합니다.

 

📝데몬 프로세스

특정 서비스 제공하는 프로세스

 

📝고아 프로세스

자식 프로세스가 살아있는데 먼저 부모 프로세스가 종료된 경우

 

📝좀비 프로세스

실행을 종료했는데도 프로세스 테이블에 남아있는 경우

 

반응형
반응형

📝리전

AWS 모든 서비스가 위치하고 있는 물리적 / 지리적 장소 예를 들어, 미국 서부 (Oregon) 리전, 유럽 (아일랜드) 리전 등이 존재한다 

 

📝가용영역

AWS 리전 내에서 독립적으로 운영되는 데이터 센터의 클러스터리전안에는 2개 이상의 가용영역이 존재한다하나의 가용 영역에서 장애가 발생해도 다른 가용 영역에서 서비스를 계속할 수 있습니다

 

📝에지 로케이션

전 세계적으로 분산된 데이터 센터로 주로 정적 파일 (이미지, 비디오 등)을 더 빠르게 전송하기 위해 사용하는 서버들의 영역 → Amazon CloudFront, AWS Shield 등....

 

📝CDN 서비스

주로 정적 파일 (이미지, 비디오 등)을 저장한 서버이며 해당 서버에 보안 등 여러가지 옵션을 넣을 수도 있다

 

📝ELB (Elastic Load Balancer)

ELB는 AWS에서 제공하는 로드 밸런서 서비스 중 하나로, 사용자의 트래픽을 여러 EC2 인스턴스로 분산시키는 역할 → ALB, NLB 등... 존재

 

📝ALB

ALB는 OSI 모델의 7계층(애플리케이션 레이어)에서 동작하는 로드 밸런서로, HTTP 및 HTTPS 트래픽을 기반으로 요청을 분배

 

📝NLB

NLB는 OSI 모델의 4계층(네트워크 레이어)에서 동작하는 로드 밸런서로, TCP 및 UDP 트래픽을 기반으로 요청을 분배

 

 

 

 

 

 

반응형
반응형

📝쿠키

쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다

HTTP의 경우 데이터를 가져와서 유지시킬 수 없기 때문에 이걸 해결하기 위해서 도입되었다

 

📝쿠키 특징

쿠키는 서버의 자원을 전혀 사용하지 않으며 사용자 정보 파일을 브라우저에 저장합니다

속도는 쿠키가 세션보다 더 빠릅니다 → 서버랑 통신하는 것보다는 로컬에서 읽어오는게 일반적으로는 더 빠름

결제정보 등을 쿠키에 저장하였을때 쿠키가 유출되면 보안에 대한 문제점도 발생할 수 있습니다

 

📝쿠키 이용 방법

  • 팝업창을 통해 "오늘 이 창을 다시 보지 않기" 체크
  • 다크모드 / 라이트모드 유지

 

📝쿠키 동작 단계 (클라이언트)

 

JavaScript를 이용해 쿠키를 생성, 제거하거나 가져올 수 있다 서버에서 직접 데이터를 가져와서 활용하지 않는 경우에 사용하면 된다

 

📝쿠키 동작 단계 (서버)

Back End를 구축한 언어를 이용해 쿠키를 생성, 제거하거나 가져올 수 있다 비즈니스 로직에 쿠키를 넣는 행위가 포함되는 경우 사용된다 → 세션의 경우 생성시 자동적으로 쿠키를 생성 하긴 한다

이렇게 서버에서 만든 경우 HTTP Header에 붙어서 나가기 때문에 추가적인 대역폭을 사용하게 된다.

 


📝세션

세션은 쿠키 기반이지만 쿠키와 다르게 서버측에서 관리합니다

쿠키를 변경하는 보안적 이슈를 해결하기 위해 등장

 

📝세션 특징

서버에서 클라이언트를 구분하기 위해 세션 ID를 부여해 웹 브라우저 종료때까지 가지고 있습니다.

접속 시간을 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정이 가능 합니다.

사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋다 사용자가 많아질수록 서버 메모리를 많이 차지하게 됩니다 → 즉 동접자 수가 많은 웹 사이트인 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이 됩니다.

    

📝세션 동작 단계

  1. 클라이언트가 서버에 접속 시 세션 ID를 발급 받습니다 → 톰캣의 경우 JSESSIONID라는 이름으로 생성
  2. 클라이언트세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있습니다.
  3. 클라이언트는 서버에 요청할 때 쿠키의 세션 ID를  헤더에 담아 서버에 전달해서 사용합니다.
  4. 서버는 세션 ID를 전달 받아서 별다른 작업없이 세션 ID로 세션에 있는 클라언트 정보를 가져옵니다
  5. 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답합니다.
  6. 로그인 같이 보안상 중요한 작업을 수행할 때 사용

 

📝쿠키와 세션 사용 이유

쿠키와 세션을 사용하지 않으면 쇼핑몰에서 옷을 구매하려고 로그인을 했어도 페이지를 이동할 때 마다 계속 로그인을 해야 합니다.

 

📝세션 관리 방법

  • WAS에서 관리하는 Session 사용
    • WAS가 여러개일 경우 세션 클러스터링이 필요
  • DBMS에 Session 저장
    • 세션 클러스터링을 할 필요가 없음
  • Redis, Elastic cache등 메모리 DB에 Session 저장
    • 메모리DB에 세션을 저장, 가장 많이 사용하는 방식

📝Local Storage

쿠키의 많은 사용 방법은 Local Storage로 대체 되었습니다

  • 모든 HTTP 요청에서 데이터를 주고 받을 필요가 없어졌습니다 즉, 전체 트래픽과 낭비되는 대역폭을 줄일 수 있습니다 → 쿠키를 서버에서 생성할 시에 해당
  • 용량 또한 5MB의 정보를 저장할 수 있습니다.

서버에서 쿠키를 생성해서 보내는 경우도 거의 사용하지 않을 뿐더러 클라이언트에서 생성하는 쿠키는 더더욱 로컬 스토리지를 이용하자

 

 

📝JWT

Json Web Token의 약자로 클라이언트와 서버 사이에서 통신할 때 권한을 위해 사용하는 토큰이다.

Token은 세가지로 나누어져 있다.

  • 헤더 (Header)
    • 어떠한 알고리즘으로 암호화 할 것인지, 어떤 토큰을 사용할지에 대한 정보가 들어있다.
  • 정보 (Payload)
    • 전달하려는 정보가 들어가있다 민감하지 않는 정보만 넣어야한다. 복호화가 가능하기 때문이다.
  • 서명 (Signature)
    • 헤더와 정보를 합친후 서버에서 지정한 secret key로 암호화 시켜 토큰을 암호화시킨다.
    • 검증 = 해싱암호화(base64(header) + . + base64(payload) , secret key)

 

JWT 장점

  1. 기존 세션 방식의 경우 서버가 여러개일 경우 서버의 세션을 클러스터링해서 사용해야 로드밸런싱으로 인한 강제 로그아웃이 안 되게 할 수 있는데 Secret Key만 공통적이면 검증하는데는 아무런 문제가 되지 않는다.
  2. 서버에서 관리를 안 하고 클라이언트가 관리를 하기 때문에 서버에서 세션 메모리에 들고 있을 필요가 없어서 부담이 줄어든다.

 

Acess Token

인증완료 후 주는 토큰으로 모든 API 통신은 해당 토큰으로 인증 및 인가를 받는다.

 

Refresh Token

Access Token을 발급해주는 토큰이다.

 

 

아래 사이트에서 JWT 테스트를 할 수 있으며 자세한 구현 방식에 대해서는 추후 포스팅에 올리겠습니다

 

https://jwt.io/

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

 

 

 

반응형
반응형

📝Javadoc

코드를 작성하다 보면 유지보수, 배포 등 다양한 상황으로 인해 코드의 문서 작성이 필요한 경우가 있습니다.

하지만 작성한 코드의 클래스, 필드, 메서드에 대해 개발이 완료된 후 일일이 작성하는 것은 번거로울 뿐더러, 코드의 규모가 크다면 더 복잡한 일이 될 것입니다. 이를 지원하기 위해서 자바에서는 Javadoc을 사용하게 지원해줍니다.

즉, Java에서 지원하는 공식적인 주석 가이드입니다

   

📝Javadoc의 장점

표준에 맞춘 주석 작성으로, 구독자 간의 혼동을 최소화 할 수 있습니다.
코드에 문서를 포함시킬 수 있어 개발과 동시에 쉬운 문서화가 가능합니다.

 

위에 기본적인 javadoc에서 쓰이는 기본 규칙입니다.

 

@method  : 메소드명
@brief   : 함수 or 클래스 설명
@detail  : 함수 or 클래스 상세 설명
@author  : 작성자
@since   : 작성일자
@param   : 인자(매개변수)
@return  : 반환값
@why     : 만든 이유


/**
 * @method  : 
 * @brief   : 
 * @detail  : 
 * @param   : 
 * @return  : String
 * @why     : 
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 2022.05.06        SungJae Lee       최초 생성
*/

 

위에는 제가 따로 찾아서 정리한 저만의 규격입니다 → 요즘 트렌드는 어떤지 잘 모르겠네요 구닥다리 기술일 수도 있음

 

클래스나 매개변수가 없는 등 같은 경우는 인자값이나 매개변수 또는 반환값이 없으니 없는 건 안 적어도 상관없습니다.

 

📝Varchar vs Char  

  • Varchar
    • Varchar(20)인 경우 2글자 입력시 2byte 크기 만큼 가변적으로 적용되며 30글자 입력시 그만큼 늘어납니다
  • Char
    • Char(20)인 경우 2글자 입력시  20byte 크기 만큼 가지게 되며 30글자 입력시 에러가 발생하게 됩니다

 

📝IIS

윈도우 OS가 지원해주는 서버 개발 프로그램으로 이걸 이용해 서버를 만들거나 호스팅 할 수 있습니다 → ASP 스크립트 언어를 사용해 개발합니다

 

📝HTTP (80번포트)

HTTP 프로토콜로 도메인만 작성하고 포트번호를 따로 주지 않아도 웹브라우저에서는 HTTP 담당 포트인 80번으로 연결됩니다 → http://example.com/

 

📝HTTPS (443번포트)

HTTPS 프로토콜로 도메인만 작성하고 포트번호를 따로 주지 않아도 웹브라우저에서는 HTTPS 담당 포트인 443번으로 연결됩니다  https://example.com/

 

요즘에는 무조건 HTTPS를 권장하고 HTTPS를 안 쓰면 지원 안 해주는 것도 많습니다 그래서 따로 HTTP 서버를 안 열고 HTTPS로만 운용합니다 참고로 쇼핑몰같이 개인정보가 중요한 곳은 HTTPS로 운용안 하면 벌금을 무지막지하게 받습니다

반응형
반응형

📝유니티 게임엔진

유니티는 3D, 2D 게임 개발 환경을 제공하는 게임 엔진이다

 

📝대화형 프로그래밍

사용자가 일반 언어로 컴퓨터에게 지시하거나 시각적으로 프로그램을 조작하여 쉽게 코드를 생성하고 수정할 수 있도록 도와주는 방식입니다 또한 코드 블록을 중간 중간에 실행시켜서 결과를 보는 등 마치 컴퓨터와 대화를 하는 듯하며 초보자나 비전문가들에게 더 친숙하고 접근하기 쉬운 환경을 제공 누구나 간단하게 코딩을 시도할 수 있게 됩니다

→ Jupyter Notebook, Scratch 등... 제품 존재

 

📝임베디드

임베디드 소프트웨어는 하드웨어를 직접 제어할 수 있게 프로그래밍을 한 것 이다 → 드론, 무인기, 로봇 등...

 

📝워드프레스

PHP로 작성된 오픈 소스 웹사이트 도구(Contents Management System)입니다 간단히 말하면 손쉽게 블로그나 웹사이트를 만들 수 있는 도구 또는 플랫폼입니다.

 

📝소프트코딩

데이터를 상수로 입력하는게 아닌 동적으로 변화를 받을 수 있는 형식으로 코딩하는 걸 의미한다.

코드를 바꿔주지 않아도 값을 동적으로 요청해서 보내면 알아서 동적으로 바뀌기 때문에 동적인 것 즉, 사용자마다 달리 보인다든지 등에 사용하면 좋다

 

📝하드코딩

데이터를 코드 내부에 직접 입력하는 것 → final String Time = "시간" 이런식으로 바뀌지 않게 고정적으로 만들어서 사용한다

페이지를 변경할 때 바뀌는 부분을 하드코딩을하면 계속 바꿔줘야하는 문제점이 있다

 

📝가상환경

A라는 프로젝트는 node.js 16버전이 필요한데 B라는 프로젝트는 node.js 12버전이 필요한 경우 서로 환경을 분리 시켜서 영향을 안 받게 하면 개발할 때 버전 문제로 충돌이 일어날 일도 없고 나중에 Build하거나 프로젝트 공유 등 충돌 문제도 없을 것이다 따라서 각 프로젝트 별로 별개의 가상환경을 만들어놓고 사용하는 것이 정신 건강에 좋습니다

반응형
반응형

📝DOM

브라우저는 HTML 코드를 해석해 요소를 트리형태 구조화해 문서를 생성한다 이를 DOM이라고 한다 DOM을 통해 화면에 웹콘테츠들을 렌더링한다.

예를들어 DOM형태에 자바스크립트 동작이 추가되면(버튼 눌렀을때) DOM에 다시 추가해 다시 렌더링하는 구조

📝드라이버

하드웨어와 소프트웨어 간의 통신을 관리하는 프로그램이나 소프트웨어

 

📝스위프트

iOS와 MacOS를 개발하는 프로그래밍 언어

 

📝IPC

프로세스 간 통신을 의미

 

📝렌더링

HTML 코드를 화면을 통해 보여주는 것

 

📝업캐스팅 & 다운캐스팅

class Animal { }
class Dog extends Animal { }

Animal animal = new Dog();  // 업캐스팅
Dog dog = (Dog) animal;    // 다운캐스팅

부모인 Animal을 상속 받았기 때문에 Dog는 더 많은 기능을 가진다 부모 객체에 자식 객체를 할당하는 걸 업 캐스팅이라고한다그와 반대로 다운캐스팅은 업캐스팅 된 것을 자식 객체로 타입 변화 시키는 것을 의미한다

반응형
반응형

📝ITO (Information Technology Outsourcing)

Information Technology Outsourcing의 약자로 자체적으로 수행하던 IT 관련 업무를 외부 업체에 위탁하는 것을 의미한다 즉, A라는 업체에서 여력이나 능력이 안 되서 다른 업체인 C에게 해당 부분을 만들어달라고 요청할 경우 B라는 회사에서 ITO를 한다고 할 때 B는 A랑 C를 연결해주는 중계역할입니다

 

📝SI (System Integration)

System Integration의 약자로 다양한 IT 시스템이나 소프트웨어를 통합하여 하나의 통합된 시스템을 구축합니다 → 그냥 시스템구축하는 모든 과정이라고 생각하면 된다 [기획, 디자인, 개발, 테스팅 등...]

 

📝Flask

Flask는 약 27,000줄 밖에 안되는 가벼운 웹 개발 프레임워크이기 때문에 개발자가 거의 모든 것을 설정하고 세팅해야 하는 번거로움이 있습니다. 하지만 그만큼 자유롭죠 개발을 다양하게 할 수 있습니다

 

📝Django

Django는 Flask에 비해 10배나 무거운 프레임워크입니다.

필요한 사항 및 디렉토리 구조 등... 이미 거의다 개발되어 있는 표준이 더 명확합니다

표준이 명확하기 때문에 자유롭게 개발하는데에는 제약사항이 있을 수 있습니다

 

📝플러쉬

버퍼에있는 것을 강제로 뿌리는 것 (비워준다)

 

📝질의어 (쿼리문)

데이터에 접근하고 관리하기 위해 특수한 용도로 만들어진 프로그램 언어 → SQL

 

📝Pojo class

Getter과 Setter를 가진 단순한 자바 클래스

반응형
반응형

📝환경변수

Path에 절대경로도 가능하지만 경로값을 변수에 넣어서 Path값에 간단하게 적을 수도 있다

 

📝Path

운영체제가 어떤 프로세스를 실행시킬때, 그 경로를 찾는데 이용

예를 들자면 c:\aaa\bbb 라는 경로에 hello.txt라는 것이 있을 때 저 경로를 path 설정으로 해놓으면 cmd에서 바로 hello.txt를 쳤을 때 그 경로로 안 들어가도 바로 접근이 가능하다

 

자 간단하게 환경변수와 Path를 어떻게 이용하는지에 대해서 알아봅시다.

시스템 변수란 말 그대로 경로값을 간단한 변수로 바꿔서 표현하는 것입니다.

시스템 변수에 등록하면 js = C:\User\.... (경로)가 되는 것이고 이걸 Path영역에 간단하게 적을 수 있죠

이런 변수로 등록한 걸 쓰려면 %변수명% 이렇게 적어야합니다 저는 js로 했습니다. 또한 절대경로를 그대로 입력하셔도 상관 없습니다.

 

그러면 저게 지금 바탕화면 Nodejs라는 폴더에 있는 것인데 그 안에 console.js라는 걸 제가 만들어뒀습니다

cmd를 여시고 경로를 따로 이동 안 해도 console.js를 하면 실행이 됩니다

 

📝index.html

경로 설정을 안 해줘도 기본적인 메인 페이지로 나옵니다.

 

📝cmd 사용 이유

IDE가 없을 때 개발하기 위해 좀 더 세밀한 코딩과정이 필요할 때 → .class파일 생성 등... → 어차피 IDE 기능도 CLI로 구현한 것

반응형