전체 글

공부와 경험의 기록!
1. NFS 란 Network File System 으로, 가상화 또는 클라우드 서비스에서 가상머신의 스토리지를 공유할 때 자주 사용된다. NFS서버를 구성하면 로컬에 존재하는 파일을 공유할 수 있다. 또한 파일을 공유할 때 접근가능한 host 목록을 지정할 수 있다. 현재 최신판 리눅스에서는 NFS 4.0 버전인 NFSv4를 주로 사용하고 있다. 2. NFS 서버 구성하기 우선 nfs-utils 패키지를 yum으로 설치한다. yum -y install nfs-utils NFS 는 server-client 구조를 취한다. 우선 server 역할을 하는 곳에서 /etc/exports 파일을 작성해준다. vi /etc/exports /etc/exports 파일에는 디렉토리경로 접근제어리스트(옵션) 이 세가지..
·Algorithm (PS)
https://www.acmicpc.net/problem/2283 2283번: 구간 자르기 1번째 줄에 정수 N, K(1 ≤ N ≤ 1,000, 1 ≤ K ≤ 1,000,000,000)가 주어진다. 2~N+1번째 줄에 각 구간의 왼쪽 끝점과 오른쪽 끝점의 위치가 주어진다. 양 끝점의 위치는 0 이상 1,000,000 이하의 정수이다. www.acmicpc.net n, k = map(int, input().split()) array = [0] * 1000002 # 1 ~ 100001 까지 저장 for i in range(n): a, b = map(int, input().split()) array[a+1] += 1 array[b+1] -= 1 for i in range(1, 1000002): array[i]..
SELinux 가 필요한 이유 보통 리눅스는 DAC 모델을 기준으로 접근제어를 한다. DAC 모델은 Discretionary Access Control 의 약자로, 이는 '사용자 권한'을 기준으로하여 파일이나 자원에 대한 접근 제어를 하는 것이다. 그러나 취약점이 존재한다면 그 취약점을 통해 시스템 권한 및 시스템 정보가 쉽게 탈취될 수 있다. SELinux 는 리눅스의 보안을 강화해주는 커널 모듈이다. MAC 모델 SELinux 는 MAC 모델을 기반으로 한다. MAC 모델은 각 사용자나 프로세스, 파일에 보안 레이블을 지정한다. 이 보안레이블을 컨텍스트(context)라고 하며, 사용자나 프로세스에 지정된 컨텍스트와 파일에 지정된 컨텍스트가 연관성이 없으면 접근할 수 없다. ls -Z 명령어로 각 파..
ssh 로 원격 접속을 할 때 포트번호를 2222번으로 접속을 해보는 예제이다. 내 컴퓨터에 누군가 원격 접속을 허용하기 위해 다음과 같은 과정을 거칠 수 있다. 먼저 /etc/ssh/sshd_config 파일을 vim 편집기로 열어서, Port 2222 로 수정한다. Port 검색을 할 때는 /Port 라고 입력해주면 된다. 이 파일을 수정해서 2222 포트를 사용하도록 설정하는 것이다. ssh -p 2222 root@192.168.56.102 그리고 sshd 서비스를 재시작한다. systemctl restart sshd semanage 명령어로 포트 레이블을 추가해 준다. 포트 레이블이란 SELinux 가 enforcing 모드일 때 특정 서비스가 사용하는 포트를 설정하는 것이다. semanage p..
Critical Section Problem n개의 프로세스가 공유데이터를 동시에 사용하기를 원하는 경우 발생하는 문제 각 프로세스의에서 공유 데이터를 접근하는 코드를 critical section 이라고 한다. 하나의 프로세스가 critical section 에 있을 때 다른 모든 프로세스는 critical section에 들어갈 수 없어야 한다. Critical Section Problem을 해결하기 위한 조건 Mutual exclusion (상호 배타) : 한 프로세스가 critical section 부분을 수행하고 있다면, 다른 프로세스들은 그들의 criitical section 에 들어가지 않는다. 즉, critical section에 꼭 하나의 프로세스만이 진입할 수 있다는 조건이다. Prog..
·Algorithm (PS)
https://www.acmicpc.net/problem/14925 14925번: 목장 건설하기 랜드 씨는 퇴직금으로 땅을 사서 목장을 지으려 한다. 그가 사려고 소개받은 땅은 직사각형이고 대부분 들판이지만, 여기저기에 베기 어려운 나무와 치울 수 없는 바위가 있다. 그는 목장을 하 www.acmicpc.net 아 어렵다 원래 dfs밖에 기억이 안났는데 문제유형보고 DP란것을 알았다 dfs로 풀면 대각선&상하좌우 8방향을 모두 확인해야하니까 시간초과가 날것 같다 0의 개수를 dp 테이블에 누적하여 저장한다. 단 !! 1 또는 2를 만났을 때는 누적하면 안된다. 이걸 방지하기 위해서 dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1])+1 대각선방향, 위쪽방향, 아..
·개발일기
1일1커밋.. 언제선가부터 계속 해오고 있었었는데, 어제 repository를 정리하면서 삭제를 했는데, repository를 지우니까 커밋 기록도 같이 날라가서 잔디밭에 구멍이 생기게 되었다 ㅠㅠ 그래서 알아보게 된 깃허브 커밋 조작 방법을 정리해보고자 한다 git log 해당 레포지토리로 들어가서 git 의 log를 살펴본다 시간대를 변경하고 싶은 커밋 기록의 해시값을 복사하자. commit뒤에 있는 값이 해시값이다. git rebase -i 해시값 이렇게 명령어를 입력하면 vi 편집기로 commit 정보를 수정 할 수 있다. pick 이라고 되어있는 부분을 edit으로 바꿔준다 바꿔준 다음 :wq! 입력해서 write작업 한 것을 저장하고 다시 터미널로 돌아간다 git commit --amend -..
·Algorithm (PS)
https://www.acmicpc.net/problem/15486 15486번: 퇴사 2 첫째 줄에 N (1 ≤ N ≤ 1,500,000)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000) www.acmicpc.net n = int(input()) task = [] price = [] # price dp = [0] * (n+1) for _ in range(n): t, p = map(int, input().split()) task.append(t) price.append(p) # result 예제 10번에서 예외케이스 처리 -> dp[10]이 최댓값(60) + price[7] 로 갱..
minjiwoo
MJ workspace