Introduction 추상클래스와 인터페이스는 추후에 완성할 무언가를 미리 정의한다는 공통점을 가진다. 이 때문에 두 가지의 차이가 정확히 무엇인지, 두 가지를 어떨 때 사용해야 하는지 항상 확실하지 않았기 때문에 시간을 내서 정리해보았다. 추상클래스와 인터페이스의 차이 인터페이스는 여러 개를 구현할 수 있지만 클래스는 하나만 상속할 수 있다. (단일 상속, 다중 구현) 인터페이스는 인스턴스의 자료형으로 지정할 수 있으나 추상클래스는 그럴 수 없다. 추상클래스는 추상이 아닌(구현부를 포함한) 메소드를 가질 수 있다. 추상클래스는 인스턴스 변수를 선언할 수 있으나, 인터페이스는 static field만 소유할 수 있다. 추상클래스는 constructor를 가질 수 있으나(자식 클래스에서 사용하기 위함),..
Permission Error Linux OS에서 작업을 해 본 사람이라면 한 번쯤 아래 오류를 만나본 적이 있을 것이다. Permission denied. 이는 현재 해당 쉘을 사용하고 있는 사용자가 해당 파일에 대한 해당 권한이 없기 때문에 발생하는 오류이다. 이 오류를 해결하기 위해서는 Linux의 권한 체계에 대한 이해가 필요하다. Linux의 권한 체계 Linux에서는 파일별로, 사용자별로 권한의 종류별로 권한을 관리한다. 각 권한은 아래와 같이 사용자별(파일 오너, 오너가 속한 그룹, 나머지 사용자들)에 따라 3비트의 2진수로 부여되고 확인할 수 있다. 부여된 권한을 확인하고자 한다면 ls -l 명령을 이용하면 된다. 위의 파일들은 다음과 같은 권한을 소유한다. rootexecfile: own..
HTTP (HyperText Transfer Protocol) 정의 하이퍼텍스트(HyperText)를 주고받기 위해 사용되는 프로토콜 하이퍼텍스트란, 한 문서에서 다른 문서로 접근할 수 있는 텍스트(현대에는 이를 주로 하이퍼링크라고 부름)이다. 문제점 HTTP만을 이용하여 통신하면 데이터를 평문으로 주고받기 때문에 누군가가 이를 가로채 데이터 유출이 일어날 수 있다. 이러한 보안 취약점을 해결하기 위해 도입된 것이 HTTPS 프로토콜이다. HTTPS (HyperText Transfer Protocol Secure Socket) 정의 기본 형식이나 사용 목적은 HTTP와 유사하지만, HTTP의 보안 취약점 해결을 위해 데이터를 암호화하여 주고받는다. HTTPS는 암호화를 위해 대칭키 암호화 방식과 공개키 ..
정의 사용자들이 제3자 서비스의 계정을 통해 인증을 수행할 수 있도록 접근 위임을 제공하는 공통 표준(open standard) 인증방식 여기서 제3자 서비스란 Google, Facebook, Github 등을 포함한다. 장점 (문제 해결) 기존에는 제3자 서비스의 계정을 이용하기 위해 본 서비스와 제3자 서비스에 모두 사용자의 아이디/비밀번호를 제공해야 했으며, 이는 사용자 입장에서는 보안 취약점으로 다가왔다. (하나 털리면 다 털림!) Auth를 이용하면 사용자가 입력한 사용자의 개인 정보가 아닌 임의로 생성되는 값인 accessToken을 이용해 인증을 수행하기 때문에, 두 개 서비스 모두에 개인 정보를 제공할 필요가 없다. 기존에는 제3자 서비스의 아이디/비밀번호를 제공하는 형식에서는 본 서비스가..
등장 계기 기존에는 쿠키-세션 방식을 통해 사용자 인증을 수행하였다. 이 방법은 서버가 사용자를 식별하기 위해 사용자의 정보를 서버에 저장하고 있어야 했고, 이는 다음의 문제를 발생시켰다. 모든 사용자의 정보를 저장해야 하기 때문에 서버에 부하를 일으킨다. 서버를 확장하기 어려워진다. 서버가 여러 대가 되면 세션 정보를 공유해야 하는데, 이 과정이 복잡하기 때문 따라서 Stateful 방식으로 사용자 정보를 관리하는 것에 어려움을 느끼게 되었고, 이에 대한 대안으로 등장한 Stateless 방식의 인증 기법이 바로 Token을 이용한 인증 기법이다. JWT(JSON Web Token) 토큰 중에서도 JSON 형식의 데이터를 이용하는 토큰 JWT Format JWT는 3개의 요소인 Header, Paylo..
Cookie HTTP 프로토콜은 비연결성, 무상태성이라는 특징 때문에 그 자체만으로는 사용자를 식별할 수 없다. 따라서 인증이 필요한 경우 서버가 클라이언트(브라우저)에 데이터를 저장하는 방식을 이용하는데, 이 데이터를 Cookie(쿠키)라고 부른다. 그러나 Cookie는 도난당하기 쉬우며, 암호화되지 않은 정보를 저장하기 때문에 그 내용 또한 확인하기 쉽다는 문제가 있다. Cookie & Session 따라서 Cookie의 보안 취약점을 해결하기 위해 Session과 함께 사용한다. Cookie에는 세션 ID라는 무의미한 임의의 문자열만을 저장하고, 이 세션 ID를 통해 서버의 세션이라는 저장소에서 해당 사용자의 정보에 접근할 수 있도록 하는 것이다. 이를 통해 사용자의 정보를 보호할 수는 있게 되었으..
✔ 산술 평균 (Arithmetic Mean) 일상 생활에서 우리가 평균을 구할 때 주로 사용하는 방식이다. 특징 전체 데이터의 합이 의미가 있는 자료인 경우 사용한다. 때문에 합 계산을 적용할 수 없는 비율값 등을 이용할 때에는 산술 평균보다 조화 평균을 이용하는 것이 좋다. 매우 큰 값 또는 매우 작은 값이 포함되어 있다면 산술 평균 값은 크게 변화한다. ✔ 기하 평균 (Geometric Mean) 변화량의 평균 계산, 데이터의 정규화에는 산술 평균을 적용하기 어렵기 때문에 등장하였다. 특징 데이터를 정규화할 때에는 기하평균을 이용하면 좋다. 산술평균은 정규화의 기준을 다르게 잡으면 데이터의 크기 순위가 달라질 수도 있다. ✔ 조화 평균 (Harmonic Mean) 특징 비율값의 평균을 구할 때에는 ..
증명서 뽑을 일 생길 때까지 미루고 미뤄뒀다가 마침 증명서 제출할 곳이 있어서 PRO 인증까지 같이 해치웠다. 제출 후 인증 완료까지는 일주일이 조금 안 걸린 정도인 것 같다. 🥳🥳🥳