Today I Learned
-
2022년 7월 21일 TILToday I Learned 2022. 7. 21. 23:51
목요일에 끝난 화요일 작업 계획 오늘의 작업 계획은 세 파트로 나뉘었다. 순서대로 1. 수요일에 마치지 못한 계획을 이어서 수행하는 부분, 2. 리팩터링과 디자인 측면, 3. 여유가 있다면 도전해 볼 기능 추가 부분의 세 가지 파트로 구성했었다. 처음에는 계획들을 순서대로 시도하려 했었는데, 뽀모도로 중간중간마다 있는 작업 결과물 공유 자리에서 디자인 작업을 같이 하면서 눈으로 보이는 결과를 만들면서 하는게 좋겠다는 동료들의 피드백이 있어 1번 계획을 진행하면서 2번 계획 중 디자인 부분을 같이 진행했다. 1번 계획과 2번 계획 다이얼로그 창이나 이미지를 불러와 배치하는 식인 작업 결과의 형태가 직접적으로 보여지는 결과물을 만들어내는 작업이여서 다른 날보다는 결과물에 대한 흥미를 갖고 진행할 수 있었다...
-
2022년 7월 20일 TILToday I Learned 2022. 7. 20. 23:58
다른 모든 클래스들에서 최상위 클래스의 멤버에 접근하는 방법 기존의 프로그램은 버튼을 눌렀을 때 출력되는 화면이 새로 생성된 frame에 출력되도록 했었으나, 수정을 통해 하나의 메인 frame에 panel이 들어가 있고, 그 panel을 필요에 따라 교체하는 방식으로 콘텐츠를 출력하도록 수정했다. 전략 패턴을 활용해보는 것은 전략 패턴과 interface의 활용을 자세히 살펴볼 시간이 부족해 포기했다. 계획하고 있는 양에 비해 시간이 많이 부족하기에, 일단 쓸 수 있는 방식을 사용하기로 했다. 프로그램의 구조도를 생각해보면 여러 패널 클래스가 있고, 각 패널 클래스들에서 특정 버튼을 누를 때마다 각 클래스를 생성해서 호출하는 방식이다. 패널이 출력되어야 하는 창은 하나이기에, 어떻게 하면 다른 어떤 클..
-
2022년 7월 19일 TILToday I Learned 2022. 7. 19. 23:56
월요일 아침까지 끝내고 싶었던 MVP가 오늘인 화요일 오후 3시 가량이 되어서야 끝났다. 지금까지는 다른 모든 기능들을 새로운 JFrame에 띄우는 방식을 택했는데, 버튼을 누르면 하나의 화면에서 화면 전환이 이루어지도록 할 계획이다. 어떻게 할 수 있을까? MainFrame에 ContentPanel을 하나 놓고, 버튼을 누를 때마다 ContentPanel에 그 작업을 수행하는 Panel을 인스턴스로 넣어주는 방식을 해볼까? 그러려면 어느 클래스에서든지 ContentPanel에 접근할 수 있어야 할 것 같다. 아니면 프로그램이 시작될 때 일단 모든 패널들끼리 서로 알맞게 add된 상태로 만들어 상속 관계를 형성하고, 패널이 실행되는 시점에서는 getParent나 getComponent로 이렇게 저렇게 할..
-
2022년 7월 18일 TIL - MVP는 '핵심 가치'를 드러내는 '완성된' 제품이다Today I Learned 2022. 7. 18. 23:58
오늘 오후 1시부터 있었던 MVP(Minimum Viable Product) 1차 점검 시간에 있었던 일이다. 당초 시연 때까지 MVP로 만들어내려 했던 수준까지 프로그램이 완성되어 있지 않아 일단 기능하는 부분까지만 프로그램을 시연했다. 당시의 프로그램에는 기능하는 버튼도 있었고, 일단 작동하지는 않고 들어가만 있는 버튼도 추가되어 있는 상태였다. 시연 과정에서 작동하지 않는 버튼에 대한 지적이 이루어졌다. MVP는 제품이 보이려 하는 '핵심 가치'가 무엇인지 파악해 그 부분만을 추려내어 빠르게 구현해 보여주는 '완성된' 제품인 것이므로, 기능하지 않는 부분이 존재한다는 것은 그 제품이 완성된 것이 아니라는 의미였다. 그렇다면 MVP를 잘 완성시키기 위해서는 어떻게 할 수 있을까? 처음부터 다양한 기능..
-
2022년 7월 17일 TILToday I Learned 2022. 7. 17. 23:57
오늘은 내가 무엇을 느꼈고 어떤 액션 플랜을 도출해야 할지 생각할 힘이 없다. 하루를 천천히 돌아본다. 오전 이른 시간인 5시에 일어났다. 어제는 정말 최소한의 모델인 하나의 게시글에 어떤 요소가 들어가야 할 지 정도만 짜놓은 상태였는데, 구상한 모델을 클래스로 정의해 옮겼다. 중간중간 졸고 있는 모습을 발견해 7시 30분부터 1시간 가량을 자고 돌아왔다. 점심 전까지는 어제 짜두었던 MVP 작업 일지 중 수행하지 못했던 여러 개의 게시글 출력 기능을 구현했다. 오후 점심을 먹고 레벨 테스트 안내 페이지의 내용이 다소 바뀐 것을 확인했다. 프로젝트 필수 조건에 게시판 기능이 있어야 한다는 내용이 사라지고, 도메인 모델에 대한 내용이 추가된 것을 확인했다. 추가적으로 MVP의 예시가 추가된 것을 확인했다...
-
2022년 7월 16일 TIL - 반복문의 조건 변수는 고정된 값을 사용하는 것이 좋다Today I Learned 2022. 7. 16. 23:57
이월 4주차 월요일 코딩 도장 문제 문자열 내림차순으로 배치하기를 오늘에서야 풀어서 제출했다. 문자열의 내용을 각 문자의 순서대로 정렬해주는 메서드를 사용하지 않고, 문자 하나하나를 새로운 배열에 넣는데 이미 배열에 들어가있는 문자들과의 순서를 고려해서 어느 위치에 들어가도록 할지 결정하는 방법으로 푸는 것을 시도했다. 월요일 일과시간 동안 문제를 제출했지만 일부 테스트 케이스는 맞고 일부 테스트 케이스는 틀리는 것을 확인했다. 예외 케이스에 대한 처리를 해주지 않았거나, 논리 구조상에 일부 허점이 있을 수 있을 것이라는 생각이 들었다. 오늘 소스코드의 구조를 다시 확인해본 결과 의도하지 않은 동작을 발생시키는 구조를 확인해 해당 부분을 바로잡은 결과 모든 테스트를 통과하는 것을 확인할 수 있었다. 어떤..
-
2022년 7월 15일 TIL - 어떻게 해야 기록을 잘 할 것인가?Today I Learned 2022. 7. 15. 23:01
메가 골든벨 시간에 풀어야 할 문제가 30문제에서 50문제로 대폭 늘어났다. 2기 분들과 함께하는 골든벨 자리였기에 1주차에서 다뤘었던 내용들이 주로 출제되었는데, 문제를 풀어본 결과는 반타작이었다. Java 프로그래밍에 대한 근간을 큰 틀에서 잡기 위해 알고 있어야 할 개념들에 대한 설명들을 딱 접했을 때 그것이 이 개념이라고 바로 딱 이야기할 수 있을 정도로 개념의 정립이 되어 있지 않다는 의미였다. 이월되기 전까지의 주차에서는 개념들을 나만의 언어로 정리해놓는 과정을 거의 하지 않고 있었다. 이월 이후의 주차부터는 주말에 평일보다 더 많은 시간을 투자해 강의에서 다룬 내용을 정리하고 그 개념들을 찾아 노트를 만드는 과정을 수행해야 했는데, 공식 문서, 각종 블로그 글들에서 찾아지는 내용들을 정립해서..
-
2022년 7월 14일 TIL - 지나친 추상화는 오히려 가독성을 저해한다Today I Learned 2022. 7. 14. 23:57
메가테라 백엔드 트레이닝 4주차 퀘스트 중 하나로 주어진 '깐깐한 계산기'에서 주요하게 구현해야 하는 부분에는 사용자가 입력한 수식이 조건에 맞는 수식인지를 검사해야 하는 부분이 있다. 수식을 검사하는 과정 역시 테스트 코드를 작성하면서 구현해야 하기 때문에 수식을 검사하는 작업 흐름이 클래스나 메서드로 분리를 시켜주고, 그 분리된 메서드를 테스트 코드를 작성하면서 구현하는 과정을 거치게 된다. 엊그제 처음으로 받은 코드 리뷰를 바탕으로 수정을 거쳐 PR을 재차 올렸던 소스코드에 다시 코드 리뷰가 올라왔다. 주요한 리뷰는 수식 조건 검사기 클래스를 구현한 부분과 그 테스트 코드에 집중되어 있었다. 리뷰들 중에 하나로 프로세스의 유의미한 추상화가 이루어져야 할 것이라는 내용이 있었다. 처음에 수식 검사기 ..