전체 글

· 외부활동
1주차 객체지향 생활 체조 원칙 객체지향 생활 체조 원칙은 소트웍스 앤솔러지 책에서 다루고 있는 내용으로 객체지향 프로그래밍을 잘 하기 위한 9가지 원칙을 제시하고 있다. 이 책에서 주장하는 9가지 원칙은 다음과 같다. 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기(indent)만 한다. 규칙 2: else 예약어를 쓰지 않는다. 규칙 3: 모든 원시값과 문자열을 포장한다. 규칙 4: 한 줄에 점을 하나만 찍는다. 규칙 5: 줄여쓰지 않는다(축약 금지). 규칙 6: 모든 엔티티를 작게 유지한다. 규칙 7: 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. 규칙 8: 일급 콜렉션을 쓴다. 규칙 9: 게터/세터/프로퍼티를 쓰지 않는다. 이 원칙 중에 내가 제일 안되는 것은 규칙3과 규칙 8, 규칙 ..
· 외부활동
과정에 참가한 계기 갑자기 바람이 분 것은 아니다. 해당 과정을 작년 초에 처음 알게되었는데, 그 때부터 해보고 싶었다. 나도 나름 깔끔하고 유지보수하기 좋은 코드를 지향한다. 처음 작성할 때에는 분명 메서드도 나누고 객체도 나누며 이 정도면 깔끔하겠지? 싶다가도 나중에 다시 보면 정말 냄새난다. 내 코드를 내가 봐도 냄새나는데 다른 개발자가 보면 어떨까 싶었다. 하지만 그 때는 내가 취준생이어서 돈도 없었기도 하고, 커리큘럼이 항시 오픈된 것이 아니라 기수별로 운영하기 때문에 하고싶어도 할 수 없었다. 사실 해당 과정에서 코드 리뷰가 없는 플레이그라운드 과정을 참가했었다. 한 번 해보는 것도 좋겠다 생각했는데, 코드리뷰없이 그냥 오로지 내 생각대로만 코딩을 하게 되니 어렵기만 하고 맞게 하고 있는 건 ..
백준: https://www.acmicpc.net/problem/14502 문제 문제 풀이 정답 비율이 무려 54%가 넘는다. 그런데도 나는 내 힘으로 풀지 못했다. 아 물론 아이디어만 얻고 전체 코딩 자체는 내가 했다. 문제는 해결을 위한 아이디어가 떠오르지 않았다. 바이러스가 없는 모든 '0'을 3개 고르는 경우의 수를 모두 구하려고 생각했었는데 '그렇게 무식할 리가 없지..'라는 생각에 말도 안되는 풀이라고 생각하고 다른 끙끙 앓다가 결국 구글링을 했다...🥲 우선 3
https://school.programmers.co.kr/learn/courses/30/lessons/1844 문제 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 위 그림에서 검은색 부분은 벽으로 막혀있어 갈 수 없는 길이며, 흰색 부분은 갈 수 있는 길입니다. 캐릭터가 움직일 때는 동, 서, 남, 북 방향으로 한 칸씩 이동하며, 게임 맵을 벗어난 길은 갈 수 없습..
· Spring
웹 서버와 WAS 웹 서버는 클라이언트의 요청에 따라 정적인 리소스를 제공해준다. 정적 리소스라 함은, HTML, CSS, JS 또는 나머지 Asset 파일들을 말한다. 그런데 우리가 사용하는 웹 페이지를 가보면, 버튼을 클릭하여 로그인 하고 검색을 하고 물건을 사는 등 웹과 상호작용을 한다. 이런 일은 웹 서버가 할 수 없는 일이다. 물론 HTML, CSS, JS만으로도 웹을 움직일 순 있지만 내가 말하는 것은 좀 더 비즈니스 적인 것이다. 내 아이디와 비밀번호로 로그인을 한다거나 상품을 구매하는 등 말이다. 우리가 회원가입을 하고 사고 싶은 걸 사기 위해서는 뭔가 DB에 접근해야할 필요가 있다. 이 부분을 WAS(Web Application Server)가 해준다. WAS는 정적 리소스를 제공하는 일..
· 외부활동
테스트 주도 개발의 목표 테스트 주도 개발(이하 TDD)의 궁극적인 목표는 작동하는 깔끔한 코드(clean code that works) 이다. TDD는 예측 가능한 개발 방법이기 때문에 끊임없이 발생할 버그에 대해 걱정하지 않아도 된다. 나 역시 이 부분이 TDD가 필요한 가장 큰 이유라고 생각한다. TDD 규칙 저자에 따르면 TDD는 다음 두 가지의 단순한 규칙을 따른다고 한다. 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. 중복을 제거한다. 중복을 제거하는 것은 직관적이기 때문에 쉽게 이해가 된다. 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. 라는 문장은 조금 이해하기 어렵다. TDD는 실패하는 테스트 -> 일단 성공 -> 리팩터링 인데, "일단 성공"와 "실패..
nimoh
여유로운 개발생활