3주 차를 보내며 객체 지향적인 설계와 enum 도입 이번 주차에는 객체를 분리하여 도메인 로직을 작성하고 MVC 패턴을 적용하는 것을 목표로 학습했습니다. 야구 게임에서 그림을 그려가며 객체를 분리했던 것이 많이 도움이 되어 로또 게임도 그림을 그려가며 객체를 분리했습니다. Lotto: 로또 하나는 1~45사이의 번호 6개로 구성되어 있습니다. User: 로또 게임에 참여하는 사용자. LottoMachine: 사용자가 투입한 금액 만큼의 로또를 생성하는 역할을 합니다. WinningNumber: 해당 게임 당첨 번호 6개와 보너스 번호 1개를 가질 수 있습니다. Rank: 해당 게임에서 사용자의 당첨 현황과 수익률을 계산해 출력합니다. 이번 주차에 추가된 프로그래밍 요구사항 중 가장 눈에 띄었던 것이 ..
ZNS SSD는 현재 많이 사용되는 Block Interface SSD와는 달리 zone 단위로 읽고 쓰기 때문에 디바이스에 데이터를 접근시키기 위한 파일시스템 인터페이스가 필요합니다. Zone Storage documentation을 보면 여러가지 파일시스템을 이용한 연결 방법을 제시하고 있는데, 저는 dm-zoned를 이용해 연결하는 방법을 시도했습니다. dm-zoned-tools project hosted on GitHub로 이동하여 dm-zoned를 설치합니다. README 파일을 천천히 따라가다 보면 쉽게 설치할 수 있습니다. 설치 중간에 라이브러리가 없다고 나오는 경우가 있는데, 해당 라이브러리를 설치한 후 다시 시도하면 정상적으로 진행됩니다. 1. ZNS SSD 초기화 sudo zbd res..
정해진 답이 없는 것을 고민하는 과정이 힘들고 어렵기도 했지만, 그 속에서 다양한 생각과 방법을 떠올려보며 스스로 판단하여 선택하는 방법을 배울 수 있었습니다. 2주 차를 보내며 객체지향적인 설계 & 테스트 코드 작성 2주 차 과제는 숫자 야구 게임을 구현하는 것이었습니다. 숫자 야구 게임은 학교 수업에서도 다뤘던 적이 있을 만큼 많이 알려진 문제입니다. 숫자 야구를 구현하는 것은 크게 어렵지 않다고 생각했습니다. 이번 과제에서 추가된 프로그래밍 요구 사항은 총 4가지 입니다. 1. indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다 2. 3항 연산자를 쓰지 않는다. 3. 함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들어라. 4. JUnit 5와 Ass..
스스로 더 발전하려는 동기부여가 되었습니다. 아직 프리코스 기간의 1/4 밖에 지나지 않았지만 스스로 부족했던 부분과 발전해야 하는 부분을 찾을 수 있었습니다. 졸업과제가 끝나서 잠시 쉬어갈지 생각도 했지만, 새로운 배움을 느끼고 싶었습니다. 마침 우테코 프리코스가 시작되었고 최근에 가장 몰입하며 많은 것을 배웠던 1주일이었습니다. 1주 차를 보내며 클린 코드 작성 1주차 문제는 Problem Solving 7문제가 나왔습니다. 각 문제마다 필요로 하는 기능 목록을 작성하고, 해당 기능 목록에 따라 커밋을 진행하는 것이 과제였습니다. 여기서 저는 크게 읽기 좋은 코드 작성, 유지보수 좋은 코드 작성 2가지를 요구한다고 생각했습니다. 문제들은 크게 어려운 수준은 아니었고, 기본적인 프로그래밍 실력과 자료구..
프로젝트를 진행하거나 개인 공부를 진행하면서 요구하는 자바 버전이 다른 경우가 생깁니다. 버전을 바꿀 때 마다 일일히 자바 버전을 변경하기 귀찮은 경우가 많기 때문에, 쉽게 변경하는 방법을 소개하겠습니다. /usr/libexec/java_home -V MAC OS를 기준으로, 현재 컴퓨터에 설치되어 있는 모든 자바 버젼을 보여주는 명령어입니다. 필요한 버전을 다운받는 방법은 쉽게 찾을 수 있으므로 생략하겠습니다. 해당 명령어를 입력시 아래와 같은 결과를 볼 수 있습니다. 위에서 부터 자바 11, 자바 8 버전이 설치되어 있는 것을 알 수 있습니다. java -version을 입력하면 현재 시스템에 적용되고 있는 버전을 알 수 있습니다. 현재 자바 11버전이 적용되고 있음을 알 수 있습니다. 만약 자바 8..
Device Mapper(디바이스 매퍼)는 virtural block device를 physical block device로 매핑하는 리눅스 커널에서 제공하는 프레임워크입니다. Device Mapper는 device mapper가 지원하는 virtural block device에서 다른 블록 장치(physical block device)로 데이터를 전달하며 작동합니다. 즉 실제 물리 블럭 디바이스에 데이터를 접근시키기 위한 인터페이스라고 할 수 있습니다. ZNS SSD에 직접적으로 I/O를 실행하기 위해서는 zonefs 파일 시스템을 사용해야합니다. 그러나 현재 리눅스 컨테이너는 zonefs를 지원하지 않고 zonefs는 POSIX filesystem과 호환되지 않기 때문에 ZNS SSD에 직접적으로 I..
이번 포스팅에는 커널 내부 로직을 디버깅하는 방법에 대해 알아보겠습니다! 하나의 잘 만들어진 라이브러리나 툴을 정확히 이해하기 위해서는 내부 로직을 파악하는 것이 굉장히 중요합니다. 어떤 함수가 어떤 함수를 호출하는지, 어떤 인자를 받아와 처리하는지, 어떤 값을 반환해주는지와 같은 정보를 파악하며 이해한다면 좀 더 수월하게 이해할 수 있습니다. 또한, 이미 존재하고 있는 라이브러리나 툴을 필요에 따라 개선시키기 위해서는 내부 로직을 파악하는 것이 필수적입니다. 이번에 리눅스 device mapper를 개선하기 위해 사용했던 방법을 소개하겠습니다. - printk 먼저 printk입니다. printk는 c언어에서 익숙한 printf와 사용법이 동일합니다. 말 그대로 printk -> kernel에서 사용하..
리눅스 서버를 이용해서 모듈을 수정하거나 라이브러리를 원하는 대로 수정해야하는 경우 커널 코드를 수정해야합니다. 커널 코드를 한번 다운받고 원하는 버젼의 커널을 설치한 이후에는, 수정한 코드 컴파일만 다시 해주면 쉽게 적용할 수 있기 때문에 익혀놓으면 커널을 다루기 굉장히 편리합니다 ! 커널 다운로드 원하는 커널 버젼을 선택하여 다운받을 수 있습니다. 저는 5.10 버젼의 커널 코드가 필요하여 5.10으로 다운받아서 사용했습니다. 만약 5.6버젼이 필요한 경우에는 git clone -b v5.6 .... 명령어를 이용하면 됩니다. 정상적으로 커널 소스가 다운로드 되면 현재 디렉토리에 linux 디렉토리가 생성됩니다. git clone -b v5.10 --single-branch --depth 1 http..
한국관광공사 x 카카오 공모전에 참여해 한달 반(7.16 ~ 9.5) 동안 '한강나우' 어플리케이션을 제작하였습니다. 벡엔드 & 프론트엔드 개발환경에서 테스팅을 모두 마치고 구글 플레이스토어에 심사를 기다리고 있었습니다. 심사를 통과했다는 소식을 듣고 안드로이드 공기계를 켜서 바로 다운받아서 실행해보는데 카카오 로그인이 정상적으로 동작하지 않는 것을 확인했습니다 ㅜㅜ 분명, 개발환경에서 모두 테스팅을 마쳤고 이상이 없는 상태였는데 갑자기 동작하지 않는다는 것이 매우 당황스러웠습니다,,, 일단 프론트엔드에서 서버로 요청이 정상적으로 넘어오는지 확인하기 위해 controller 단 부터 log를 찍어보았습니다. 그런데.... 앱에서 아무리 요청을 보내도 서버에는 하나의 로그도 찍히지 않았습니다. 차라리 예외..
https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 건설회사의 설계사인 죠르디는 고객사로부터 자동차 경주로 건설에 필요한 견적을 의뢰받았습니다. 제공된 경주로 설계 도면에 따르면 경주로 부지는 N x N 크기의 정사각형 격자 형태이며 각 격자는 1 x 1 크기입니다. 설계 도면에는 각 격자의 칸은 0 또는 1 로 채워져 있으며, 0은 칸이 비어 있음을 1은 해당 칸이 벽으로 채워져 있음을 나타냅니다. 경주로의 출발점은 (0, 0) 칸(좌..
- Total
- Today
- Yesterday
- dm-zoned
- 우테코
- 알림기능개선기
- 3차 데모데이
- 스프링 Logback
- 회고
- 백준
- 5주차 회고
- ZNS
- 파이썬
- 네트워크
- dm-zoned 코드분석
- 런칭 페스티벌
- 피움
- 2차 데모데이
- 팀프로젝트
- Spring
- 스프링MVC
- CI/CD
- 우테코 회고
- 알림개선기
- 프로젝트
- 피움 6주차 회고
- 스프링 부트
- java
- 환경 별 로깅 전략 분리
- 8주차 회고
- 스프링 프레임워크
- ZNS SSD
- jpa
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |