클라이언트에서도 데이터베이스에서 길이 제한 오류가 나지 않도록 문자열 길이에 제한을 둘 필요가 있다. 보통 한글과 같은 문자는 1 Byte가 아닌 2 또는 3 Bytes로 이루어진다. (주로 사용하는 UTF-8은 한글을 3 Bytes로 표현한다.) 따라서, VARCHAR가 Byte를 기준으로 한다면 VARCHAR의 길이 제한은 어떤 것을 입력하는지, 어떤 인코딩 방식을 사용하는지에 따라 달라질 것이다. 이를 모르고 사용하면 추후에 이슈가 생길 수도 있고, 데이터베이스 마이그레이션 시 문제가 발생할 여지도 있을 것 같아 주로 사용하는 DBMS 종류별로 정리해보았다. ✔ VARCHAR의 기준 - MySQL 버전 4.1 이전까지는 Bytes를 사용했다가 4.1부터는 Character를 사용한다고 한다. 즉, ..
IP 주소는 A부터 E까지 총 5개의 클래스로 구성된다. 다섯 가지 클래스는 다음과 같이 구성된다. 위 그림을 통해 알 수 있는 한 가지 사실은 IP를 나타내기 위해 사용되는 비트의 수가 다르다는 것이다. IP를 나타내기 위한 비트를 제외한 비트는 모두 호스트를 할당하는 비트로 사용된다. 즉, 클래스별로 할당 가능한 호스트의 수가 다르며, A클래스가 가장 많고 C 클래스로 갈수록 줄어든다. 일반적으로 클래스 A는 대규모 네트워크에, 클래스 B는 중간 규모의 네트워크에, 클래스 C는 소규모 네트워크에 사용된다. D와 E는 멀티캐스트, 연구 등에 사용되기 위한 클래스이지만 잘 사용되지 않는다고 한다. 또한, IP는 사설 IP와 공인 IP로 나뉜다. 사설 IP는 특정 네트워크 내에서 사용하는 상대적인 주소라면..
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자 서비스의 아이디/비밀번호를 제공하는 형식에서는 본 서비스가..