To-do 리스트 프로젝트 회고 - (2) 구현
·
TIL
아래 포스트에서 이어지는 글입니다. To-do 리스트 프로젝트 회고 - (1) 시작 4월 셋째주의 금요일인 오늘, 코드스쿼드에서 진행하는 프로젝트 과정의 첫번째 To-do 리스트 프로젝트가 끝났다. 이번 프로젝트에는 백엔드 2명, 프론트엔드 2명이 함께 참여했고, 웹 애플리케이 rxdcxdrnine.tistory.com 이번 포스트에서는 코드스쿼드의 첫 프로젝트로 진행한 To-do 리스트 프로젝트에서 기능을 구현하기 위한 여러가지 방법을 놓고 고민한 부분과, 기술적으로 다루거나 알게된 점들을 위주로 회고를 작성해보고자 한다. 칸반 보드 이동 구현하기 To-do 리스트 애플리케이션을 만들면서 구현하기 어려웠던 기능은 역시 '카드의 이동' 이었다. 프로젝트의 기획서를 처음 받았을 땐, 단순히 카드 (Card..
To-do 리스트 프로젝트 회고 - (1) 시작
·
TIL
4월 셋째주의 금요일인 오늘, 코드스쿼드에서 진행하는 프로젝트 과정의 첫번째 To-do 리스트 프로젝트가 끝났다. 이번 프로젝트에는 백엔드 2명, 프론트엔드 2명이 함께 참여했고, 웹 애플리케이션을 위해 협업하는 과정에서 많은 논의가 이루어질 수 있었다. 특히 협업을 위해 무엇을 논의해야 하는지, Git 과 Github 리포지토리는 어떻게 관리해야하는지, 그리고 애플리케이션 내에서 기능을 위해 어떤 점을 클라이언트와 고민해야하는지에 대해 생각할 수 있는 좋은 기회가 되었다. 이번 프로젝트를 진행한 방식과 함께 좋았던 점과 아쉬웠던 점, 개선할 점을 짚어가며 회고를 진행해보고자 한다. 프로젝트 내 소스 코드 등은 아래 Github 리포지토리에서 확인할 수 있다. GitHub - rxdcxdrnine/tod..
열거형을 이용해 if-else 블록 제거하기
·
Java
이번주에 진행한 코드스쿼드 미션에서는 다음과 같은 프로그래밍 요구사항이 주여졌다. - 메서드의 크기가 최대 10라인을 넘지 않도록 구현한다. - 들여쓰기(indent) depth를 2단계에서 1단계로 줄여라. - else를 사용하지 마라. 메서드의 크기와 들여쓰기 제한도 어려웠지만, else 를 사용하지 않고 코드를 짜라니. 어떤 의도인지 알기 어려웠다. 단순히 else 블록을 if 블록으로 조건과 함께 명시적으로 작성하라는 걸까? else 블록 제거하기 step 1 https://github.com/rxdcxdrnine/java-ladder/blob/step1/src/main/LadderChar.java GitHub - rxdcxdrnine/java-ladder: 2022 마스터즈 백엔드 사다리 게임 ..
주소 변환 (address translation) 의 원리
·
Java
이 포스트는 OSTEP 의 15장 주소 변환에 관한 내용을 다룹니다. 메모리 가상화와 주소변환 CPU 가상화 부분에서, 대부분의 경우 프로그램은 하드웨어에서 직접 실행되지만 프로세스가 시스템 콜을 하거나 타이머 인터럽트가 발생할 때 등의 특정 순간에 운영체제가 개입하여 문제가 발생하지 않도록 하는 제한적 직접 실행 (Limited Direct Execution) 이 적용된다. 따라서 운영체제는 약간의 하드웨어 지원만 받고 실행 프로그램에게 방해가 되지 않는 효율적인 가상화를 제공하며, 중요한 순간에 운영체제가 관여하여 하드웨어를 직접 제어한다. 즉, 효율성과 제어를 바탕으로 CPU 가상화가 이루어진다. 메모리 가상화의 목적 메모리 가상화에서도 비슷한 전략이 추구된다. 가상화를 제공하는 동시에 효율성 (e..
테스트 주도 개발 정리 - (2)
·
Books
"테스트 주도 개발 (Test-Driven Development: By Example)" 6장 ~ 10장까지 읽고 정리한 글입니다. [6장] 돌아온 ‘모두를 위한 평등’ 테스트를 빨리 통과하기 위해 코드를 복사해서 붙이는 엄청난 죄를 저질렀다. 이제 청소할 시간으로, 할일 목록은 다음과 같다. 현재 할일 목록은 다음과 같다. $5 + 10CHF = $10 $5 * 2 = $10 amount 를 private 으로 만들기 Dollar 부작용? Money 반올림? equals() hashCode() Equal null Equal object 5CHF X 2 = 10CHF Dollar/Franc 중복 공용 equals 공용 times Dollar/Franc 두 클래스의 공통 상위 클래스로 Money 를 사용하..
JVM 과 스택 프레임 (Stack Frame)
·
Java
JVM JVM (Java Virtual Machine) 은 자바 코드에 있는 메인 메서드를 실제로 호출하여, 자바 어플리케이션을 실행하는 런타임 엔진 역할을 한다. 자바는 코드를 작성한 프로그래머가 개발과 배포에 사용되는 시스템에 관계없이, 실행 환경인 JRE (Java Runtime Environment) 갖춰지면 어플리케이션을 실행할 수 있으므로 WORA (Write Once Run Anywhere) 라고 불린다. 이는 JRE 의 일부인 JVM 위에서 자바 어플리케이션이 실행되기 때문에 가능한 일이다. 우리가 작성한 소스코드인 .java 파일을 컴파일하면, 자바 컴파일러에 의해 .java 파일과 같은 이름의 바이트 코드로 구성된.class 파일이 생성된다. 그리고 생성된 .class 파일을 java ..