공부 18

[DB] Charset, Collation, utf8mb4

Charset 문자를 표현하기 위해 각 문자를 정수값에 대응시켜 놓은 체계. 글자나 기호들의 집합을 정의한 것으로, 인코딩의 집합이자 문자 데이터에 대한 저장공간 크기의 정의이다. 문자가 깨지거나 이상한 값으로 저장되는 경우, 해당 Charset에 정의(지원)되지 않은 문자 데이터를 저장했기 때문이다. 말하자면 Charset은 컴퓨터와 정의한 암호표이다. 데이터를 메모리에 저장을 할 때는 이진수의 숫자값으로 저장하게 되는데, 문자를 어떤 숫자로 정의할 것인지(인코딩), 그리고 숫자값을 문자화 시킬 때 데이터를 얼만큼의 크기로 읽어서 어떤 문자로 변환할 것인지(디코딩)를 정하는 데에 사용되는 암호표가 Charset이라고 할 수 있다. DB에서 주로 사용하는 Charset은 latin1, euckr, utf..

공부/DB 2023.11.09

[OS] Deadlock

Deadlock이란? 데드락(Deadlock)이란, 두 개 이상의 작업이 서로 상대방의 작업이 끝나기를 기다리고 있어 결과적으로 아무것도 완료되지 못하는 교착 상태를 의미한다. 멀티 프로세스나 멀티 스레드 등의 다중 프로그래밍 상황에서 발생하며, 하나의 자원을 공유해야 하기 때문에 발생하게 된다. Deadlock의 발생 조건 상호 배제(Mutual Exclusion) 점유 대기(Hold and Wait) 비선점(No Preemption) 순환 대기(Circular Wait) 데드락은 위의 4가지 조건을 동시에 충족하면 발생하게 된다. 상호 배제는, 어떤 한 작업이 해당 자원을 쓰고 있는 동안에는 다른 작업에서 해당 자원을 가져다 쓸 수 없다는 의미이다. 만약 동시에 자원에 접근할 수 있다면 기다릴 필요가..

공부/OS 2023.11.08

[DB] CHAR과 VARCHAR

CHAR CHAR는 고정 사이즈로 무조건 처음 선언된 크기만큼 소모된다. 문자열을 채우고 남는 공간은 공백으로 채우게 된다. 값을 받아올 때는 공백이 자동으로 제거됨 공백까지 읽고 싶다면 PAD_CHAR_TO_FULL_LENGTH 모드 활성화 필요 고정길이 데이터 컬럼에 적합 CHAR열의 최대 크기는 255 바이트 VARCHAR 가변 길이 데이터 삽입 시 255글자 이하에는 1바이트, 이상에는 2바이트의 추가 공간 필요 길이 정보 + 실제 데이터로 이루어져 있다. 길이가 다양한 컬럼, 혹은 정의된 길이와 실제 데이터 길이에 차이가 있는 컬럼에 적합 VARCHAR로 저장된 값을 변경하려고 할 때, 변경할 값이 저장된 사이즈보다 크다면 새로운 저장 영역에 새로 할당해야 하므로 데이터 파편화가 발생할 수 있다..

공부/DB 2023.11.07

[C#] Unix Timestamp

Unix Timestamp란? 유닉스 타임스탬프(Unix Timestamp)란, 1970년 1월 1일 00:00:00 (UTC) 부터의 경과 시간을 초로 환산하여 정수로 나타낸 값이다. 이 값은 윤초를 무시하며, POSIX 시간이나 Epoch 시간이라고 부르기도 한다. 32비트 정수형을 쓰고 있었으므로 2038년 1월 19일 3시 14분 07초가 지나는 순간 오버플로로 인해서 더 이상 값을 정상적으로 나타낼 수 없는 문제가 존재한다. 이 문제를 Y2K38 문제라고 한다. unsigned 형으로 전환하면 2106년까지 늦출 수 있지만 음수형을 표현할 수 없으므로 1970년 이전의 시간을 나타낼 수 없는 문제가 존재하고, 64비트 int형으로 바꾸게 되면 2922,7702,6596년까지 표현할 수 있어 사실..

공부/C# 2023.11.06

[C#] Enum.IsDefined

Enum값에 특정한 값이 존재하는 지 여부를 구하는 함수이다. 검증할 때 사용한다. Cast를 위해서라면 Enum.TryParse를 사용하자. 오버로드 public static bool IsDefined(Type, Object) 지정된 정수 값 또는 문자열로 해당 이름이 지정된 열거형에 있는지 여부를 나타내는 부울을 반환 public static bool IsDefined(TEnum) 지정된 정수 값 또는 문자열로의 해당 이름이 지정된 열거형에 있는지 여부를 나타내는 부울을 반환 public enum Result { Success = 0, Error = 1, } public class Example { public static void Main() { #region IsDefined(Type, Objec..

공부/C# 2023.11.04

[Jenkins] Jenkins 계정 생성 방법

Jenkins란? 지속적인 통합(Continuous Integration, CI)과 지속적 배포(Continuous Delivery, CD) 환경 구축을 위한 도구 빌드, 테스트, 배포 프로세스를 자동화할 수 있다. Git과 같은 버전관리 시스템과 연동하여 커밋이 감지되면 자동 빌드 설정 등의 설정 가능 Jenkins는 서비스 모드로 실행되므로, Jenkins 사용을 위해서는 Jenkins가 설치된 머신에 서비스 모드로 접속할 수 있는 계정이 필요하다. 기존에 사용하던 계정을 사용할 수도 있지만, Jenkins Access용 계정을 따로 생성하였다. 1. Windows 설정 > 계정 > 가족 및 다른 사용자 > 이 PC에 다른 사용자 추가 2. 다음의 순서로 계정 생성 3. Jenkins Access용으..

공부/Jenkins 2023.11.03

[Git] Submodule

Git 저장소 하위에 다른 Git 저장소를 관리하기 위한 도구 상위 저장소를 슈퍼 프로젝트, 하위 저장소를 서브 모듈이라고 함 GitHub에 슈퍼 프로젝트 저장소와 서브 모듈 저장소를 각각 생성한다. 서브 모듈 저장소에 하나라도 Push한다. (이미 Push 했으면 Ok) 슈퍼 프로젝트 저장소로 이동해서 아래의 명령을 입력한다. $git submodule add {서브 모듈 Repository} {서브 모듈을 등록할 디렉토리 이름}

공부/Git 2023.11.03