본문 바로가기

분류 전체보기

(694)
계정 추가. useradd, adduser [1. 개요] 리눅스 서버에 신규 계정 발급 시 자주 사용하는 명령어 조합 정리 [2. 명령어] 사용자 계정을 추가하는 명령어는 아래와 같이 두가지가 있다. adduser useradd 두 명령어의 차이점은 아래와 같다. adduser 계정 생성 시 별도 옵션 없이, 홈 디렉토리를 포함한 사용자 관련 설정을 자동생성한다. useradd adduser 처럼 동작하려면 별도의 옵션을 추가로 기입해야 한다. 여기서는 useradd 사용법을 정리한다. [3. 옵션] 옵션 설명 기타 -d, --home 로그인 시 사용 할 홈 디렉터리 경로, 해당 경로에 폴더가 없어도 만들지 않는다. -m, --create-home 사용자 홈 디렉터리가 없는 경우 생성한다. -M 사용자 홈 디렉터리를 만들지 않는다. -r, --s..
Jenkins. 업데이트 유의 사항 [1. 개요] 젠킨스 버전 업데이트 시 발생했던 문제점과 이 과정에서 경험했던 내용을 정리하도록 한다. [2. 윈도우 서버에서 발생했던 문제] 사례 1) 젠킨스 버전을 업데이트 하기 위해 jenkins.war 가 존재하는 디렉터리에서 war 파일만 최신 버전으로 교체했을 때 발생했던 문제 홈 화면에서 보이던 pipeline view 등이 갑자기 안보이는 문제 war 롤백 후 재실행해도 일부 플러그인이 정상적으로 동작하지 않는 문제 아마, 새롭게 풀린 war 가 기존 war 를 덮어씌워서 발생한 것으로 보임(?) 해결 1) 젠킨스를 재설치 하되, 기존에 젠킨스의 설정파일 등이 있는 디렉터리와 겹치지 않는 위치에 재설치 # 크게 세가지 유형의 디렉터리가 존재 # 1) jenkins.war 가 있는 디렉터리 ..
Jenkins. 유용한 플러그인 [1. 개요] jenkins 설치 후 사용 시 유용한 플러그인 혹은 내가 필요해서 한번이라도 사용했던 플러그인 리스트 정리 [2. 기본 플러그인] Jenkins 설치 시, 설치를 권장하는 플러그인 목록 [3. 플러그인 목록] Delivery pipeline Gerrit ~~~ MSBuild ~~
Rust. 변수 [1. 기본 개념] Rust 에서 변수는 let 으로 선언하고, 기본적으로 불변성을 갖는다. 그러나 필요에 따라 mut 를 추가하여 가변성을 갖게 할 수 있다. 상수는 변수와 달리 아래와 같은 차이가 있다. mut 사용이 허용되지 않는다. 따라서 불변성 그 자체이다. let 대신 const 를 사용한다. Shadowing 이전에 선언한 변수와 같은 이름을 갖는 새 변수를 선언 할 수 있다. let 을 다시 사용하여, 효과적으로 새 변수를 선언하고, 값의 유형도 변경 할 수 있다. mut 사용 시 컴파일 에러가 발생 할 수 있다. (값의 유형이 바뀌는 경우) [2. 예제]
Rust. Cargo 개념 및 사용 방법 [1. 개요] Cargo(카고)는 러스트의 빌드 시스템 및 패키지 매니저이다. 라이브러리를 의존성 (dependency) 관리해준다. [2. 프로젝트 생성 및 빌드] 프로젝트 생성 # cargo new "{project_name}" --bin 실행파일을 생성 할 수 있는 프로젝트를 생성한다. # cargo new "{project_name}" --lib 라이브러리용 프로젝트를 생성한다. 프로젝트 생성 (이미 디렉터리가 있는 경우) # cargo init 프로젝트 빌드 # cargo build 생성 한 프로젝트에 해당하는 디렉터리에서 위 명령어를 수행하여, 실행 파일을 만들 수 있다. 단, 위 빌드는 디버그 정보까지 포함하여 빌드 하는 것임을 유의하도록 한다. target/debug 에 실행파일이 생성된다..
Rust. 컴파일 [1. 개요] Rust code 컴파일 방법에 대해서 정리하도록 한다. [2. rustc] rustc 는 러스트 소스코드에 대한 컴파일러 이다. 소스코드에 대해서 라이브러리 뿐만 아니라 실행파일 까지 컴파일이 가능하다. 보통은 rustc 를 직접 사용하여 컴파일 하지 않고, cargo 등을 이용해서 간접적으로 사용하게 된다. [3. 예제 - 1] hello world 출력
python. io 성능 [1. 개요] 알고리즘 문제 풀이 시, io 최적화를 통한 인한 성능 개선 방법 정리 [2. 입력] 단순 input() 함수보다는 sys.stdin.readline() 를 통해서 입력 받도록 한다. import sys 가 선행되어야 한다. sys.stdin.readline() 은 개행까지 입력되므로 주의하도록 한다. rstrip() 을 이용해서 개행을 제거하던지 말던지..
python. shallow/deep copy [1. 개요] python 에서 얕은 복사와 깊은 복사 개념에 대한 내용 정리 [2. 기본 개념] C++ 를 예로들면, 어떤 객체가 있고 이 객체에 대한 포인터가 있다. 이 객체에 대해서 깊은 복사는 객체를 구성하는 모든 멤버 변수 데이터까지 복사하는 것이고, 얕은 복사는 객체를 가리키는 포인터를 복사하는 것이다. 즉, 깊은 복사 후 해당 객체에 대한 값 변경은 복사에 대상이 된 원래 객체의 데이터 변경을 유도하지 않는다. 그러나 얕은 복사 후 해당 객체에 대해서 동일한 작업을 진행하면 원래 객체의 데이터 변경까지 유도한다. [3. 예제] 2차원 배열을 선언한다 했을 때... # shallow copy board1 = [[0, 0, 0]] * 100000 # deep copy board2 = [[0, 0..
df 와 du 와 디스크 용량 차이 발생 및 해결 방법 [1. 개요] 서버 디스크 확보 중, 분명 불필요한 파일을 삭제하였는데, df 로 확인 시 디스크가 충분히 확보되지 않는 문제가 있었다. 그러나, du 로 mount 된 디렉터리의 총 용량 확인 시, 전체 파일 사이즈가 줄어들어 이에 대한 내용을 정리한다. [2. df vs du] df는 파일 시스템의 디스크 블록을 조회하여 총값과 자유 블록의 수를 계산 du 는 입력으로 주어진 파일 혹은 디렉터리가 사용하는 전체 파일 용량을 계산한다. [3. 문제 원인] df 와 du 는 사용중인 용량을 계산하는데 있어서 근본적인 차이가 있다. 따라서 아래와 같은 이유가 원인이 된다. 파일 디스크립터가 열린 상태에서 파일이 삭제된 경우입니다. df는 dirty buffer에 있는 용량을 계산에 포함하지만 du는 계산하..
MySQL. 테이블 용량 관리 [1. 개요] 운영중인 MySQL 서버에서 디스크 용량이 부족할 경우 조치 할 수 있는 방법을 정리한다. 테이블을 DROP 하거나 TRUNCATE 테이블에 파티션이 설정 된 경우, 사용하지 않는 파티션을 TRUNCATE DELETE 쿼리 수행 후 OPTIMIZE 필요한 데이터만을 table dump 후 재복구 [2. DROP / TRUNCATE] 가장 단순한 방법으로 테이블 자체를 삭제하거나 데이터를 테이블에서 전부 제거하면 된다. 단, 모든 데이터가 삭제되므로 앞으로 절대 사용 할 일이 없는 테이블(혹은 백업되있는) 을 대상으로만 진행하도록 한다. DROP TABLE 'any_table' TRUNCATE TABLE 'any_table' [3. PARTITON] 테이블 생성 시 파티션을 같이 설정한 경우..