모든 명령은 루트계정으로 전환해서 입력하면 더 편리하게 진행할 수 있습니다. ubuntu 버젼은 20.04입니다. lxc와 관련된 패키지를 설치합니다. sudo apt-get install lxc lxctl lxc-templates -y 설치 후에 리눅스 컨테이너 상태를 확인할 수 있습니다. lxc-checkconfig 다음은 리눅스 컨테이너를 생성하는 명령어입니다. lxc-create -n myContainer -t ubuntu lxc-create로 리눅스 컨테이너를 생성할 수 있습니다. lxc-create는 설정정보와 사용자 정보가 저장되는 시스템 객체를 생성합니다. name은 다른 lxc 명령어들에서 특정 컨테이너를 지정하는데 사용됩니다. 객체는 /var/lib/lxc에 작성되는 디렉토리이며, ..
ZNS ZNS란 Zoned Namespace의 약자로, 네임스페이스(Namespace)를 존(Zone) 단위로 나눠 사용하는 기술을 말합니다. 여기서 네임스페이스는 논리 블록으로 쉽게 컴퓨터 탐색기에 보이는 C:\, D:\가 각각 하나의 네임스페이스라고 이해하면 쉽습니다. ZNS는 SSD 공간을 여러 개의 zone으로 나누어 사용할 뿐만 아니라 운영체제에서 zone을 직접 관리할 수 있는 인터페이스를 제공합니다. 과거 데이터센터에는 하나의 성능 좋은 컴퓨터(Server)에서 하나의 운영체제와 응용프로그램을 구동했습니다. 요즘에는 하드웨어 위에 다수의 가상 운영체제와 응용프로그램이 구동되는 형태입니다. 즉, 다양한 프로그램이 하나의 저장장치를 동시에 읽고 쓰는 것입니다. 따라서 데이터센터에서는 속도뿐만 아..
JPA가 도입된 배경 SQL을 한 땀 한 땀 작성하는 것은 효율적이지 못합니다. CRUD 하나 만드는데만 INSERT INTO, UPDATE, SELECT .. 등등의 많은 쿼리문들을 손으로 직접 작성하여 디비에 쿼리를 날리는 것은 무한 반복작업입니다. 만약 테이블을 다 짜고 SQL 구문까지 다 작성했는데 갑자기 수정사항이 발생하면 쿼리 모두를 수정해야하는 경우가 생깁니다. 즉 SQL에 의존적인 개발을 피할 수 없었습니다. 수십줄의 코드가 단 한 두줄로 ! -> 수십 개 이상의 복잡한 객체와 테이블을 사용합니다. 그러므로 객체 테이블을 정확하게 설계하고 매핑하는 것이 중요합니다. -> JPA 내부 동작 방식을 반드시 이해해야합니다. JPA가 어떤 SQL을 만들고 언제 SQL을 실행하는지 ! JPA에서 가..
https://www.acmicpc.net/problem/2629 2629번: 양팔저울 첫째 줄에는 추의 개수가 자연수로 주어진다. 추의 개수는 30 이하이다. 둘째 줄에는 추의 무게들이 자연수로 가벼운 것부터 차례로 주어진다. 같은 무게의 추가 여러 개 있을 수도 있다. 추의 무 www.acmicpc.net 이 문제의 핵심은 가지고 있는 추를 이용해서 확인할 수 있는 추의 무게를 모두 찾아내서 원하는 추의 무게가 있는지 없는지 확인하면 된다. 다이나믹 프로그래밍으로 분류되어있는 문제이지만 수의 제한(추의 개수는 최대 30개)이 크지 않기 때문에 완전탐색으로도 해결할 수 있다. 만약 추가 1이 있다고 하자. 무게 4인 추가 새로 추가된다고 하면 무게 1인 추와 무게 4인 추를 이용하여 확인할 수 있는 무..
https://www.acmicpc.net/problem/6549 6549번: 히스토그램에서 가장 큰 직사각형 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ www.acmicpc.net 해결 방법 처음 접근한 방법은 dp를 이용해서 풀어보려고 했습니다. 첫번째 사각형을 첫번째 원소로 놓고 진행하며 현재 사각형 높이가 이전 사각형 높이보가 증가한 경우, 감소한 경우, 증감의 크기가 1인 경우와 아닌 경우로 나눠서 머리를 싸매면서 풀었는데 결국 해결을 못했습니다 ㅜㅜ 반례에 늪에 빠지고 말았습니다..... 그래서 풀이를 참조하..
리눅스 컨테이너에 대해 공부할 수 있는 기회가 생겨 기대가 되지만 학부 수준에서 그저 커널 레벨 코딩을 통해 스케줄링을 구현하거나 페이징 기법을 구현해보는 정도에 그쳐 걱정이 되기도 합니다.. 리눅스 컨테이너에 대해 조금씩 친해져야 될 것 같습니다 😅 백엔드를 전공하는 개발자나, 클라우드 및 서버 개발자분들은 도커라는 단어를 필연적으로 들어봤을 것입니다! 현재 도커는 서비스를 배포하고 관리하는데 보편적인 기술입니다. 도커는 리눅스 컨테이너(LXC)라는 기술을 기반으로 만들어진 상위레벨의 컨테이너 기술입니다. 리눅스 컨테이너란? 단일 리눅스 시스템에 동작하고 있는 프로세스를 격리시켜 각 프로세스 마다 독자적인 리눅스 시스템 환경을 구축하는 것을 리눅스 컨테이너라 합니다. 이를 가르켜 OS 수준에서의 가상화..
스프링 버젼이 높아지며 변화한 것 중 하나는 JUnit 기반의 테스트입니다. 4.X에서 JUnit의 테스트 러너를 확장하는 방법 중 하나로 @RunWith(SpringRunner.class) 에노테이션을 사용하였습니다. 스프링 부트를 사용하여 테스트를 진행하는 경우 항상 이 에노테이션을 붙여서 사용했습니다. 아래의 MemberServiceTest 코드를 보시면 알 수 있습니다. // JUnit 4 버젼의 테스트 코드 @RunWith(SpringRunner.class) @SpringBootTest @Transactional public class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository me..
짐 싸기 문제(가방에 물건을 담는 케이스)는 동적 계획법으로 해결할 수 있는 경우가 많습니다. 여러 물건이 있을 때, 특정한 조건을 만족하는 조합을 구하는 문제입니다. 대표적인 문제로는 백준 12865 평범한 배낭 문제가 있습니다. 물건의 무게(W)와 가치(V)가 주어지고, 담을 수 있는 배낭의 최대 무게가 주어집니다. 이 때 베낭에 넣을 수 있는 물건들의 최대 가치를 구하는 문제입니다. 해당 냅색문제에서는 물건을 쪼갤 수 없다고 가정합니다. 해당 문제에서 물건의 개수가 N = 4개이고, 베낭의 최대 용량은 K = 7입니다. 1번째 물건 2번째 물건 3번째 물건 4번째 물건 W(무게) 6 4 3 5 V(가치) 13 8 6 12 dp[i][j] = 첫 번째 물건부터 i번째 물건까지 살펴봤을 때, 베낭의 용..
필터 필터는 서블릿이 지원하는 수문장입니다. 즉 서블릿으로 진행하는 조건을 판단할 수 있다는 것입니다. 먼저 필터의 흐름은 다음과 같습니다 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 필터를 적용하면 필터가 호출된 다음에 서블릿이 호출됩니다. 그래서 모든 고객의 요청 로그를 남기는 요구사항이 있다면 필터를 사용하면 모든 요청 로그를 남길 수 있습니다. 스프링을 사용하는 경우 여기서 말하는 서블릿은 dispatcherServlet 으로 생각하면 됩니다. 필터에서 적절하지 않은 요청이라고 판단되면 거기에서 끝을 낼 수도 있습니다. 즉 필터에서 서블릿으로 더 이상 요청을 전달하지 않는다는 것입니다. 예를 들어 로그인 여부를 체크하는 경우 필터에서 판단하여 로그인 한 사용자라면 컨트롤러까지 ..
로그인 상태 유지하기 웹 브라우저랑 서버 사이에서 로그인 했다는 것이 유지가 되어야한다. 쿼리 파라미터를 계속 유지하는 것은 어렵고 비효율적이므로 쿠키를 사용한다. 쿠키 서버에서 로그인에 성공하면 http 응답에 쿠키를 담아서 브라우저에 전달한다. 그러면 브라우저는 앞으로 해당 쿠키를 지속해서 보내준다. 쿠키에는 영속 쿠키와 세션 쿠키가 있다 영속 쿠키: 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시 까지만 유지 브라우저 종료시 로그아웃이 되길 기대하므로, 우리에게 필요한 것은 세션 쿠키이다. 쿠키와 보안문제 쿠키의 값이 임의로 변경될 수 있다 이런식으로 개발해버리면 사용자 모두가 털릴 수 있다 ! 실제 개발자모드에서 쿠키를 마음대로 바꿀 수 있다 쿠키에 보관..
- Total
- Today
- Yesterday
- 백준
- 알림기능개선기
- 알림개선기
- CI/CD
- 피움
- Spring
- 피움 6주차 회고
- 2차 데모데이
- ZNS SSD
- 회고
- 스프링 Logback
- 우테코 회고
- ZNS
- 우테코
- 3차 데모데이
- 5주차 회고
- 8주차 회고
- dm-zoned 코드분석
- 스프링 부트
- dm-zoned
- 네트워크
- 런칭 페스티벌
- 스프링MVC
- 스프링 프레임워크
- 팀프로젝트
- 프로젝트
- 환경 별 로깅 전략 분리
- jpa
- 파이썬
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |