TIL-20210718~24

2021. 07. 19.

07.18

알고리즘 스터디

컨디션이 좋지 않아 오전 스터디는 알고리즘 풀이만 하고 끝냈다.

  • 멀쩡한 사각형 : 슬빈님이 최대공약수 풀이가 아닌 점의 위치로 풀이를 했다. 예를 들어 가로를 기준으로 기울기를 이용해 세로 위치를 구한 뒤 해당 점의 위치를 구하는 것이다. 만약 점의 위치가 정수가 아니면 그 부분은 걸쳐있는 것이다. 다시 말하면 정수가 아니면 이전과 다음 부분의 y축 길이를 비교하면 가로축이 한 칸 움직일때 몇 칸을 사용하는지 알 수 있는 것이다.
  • 문자열 폭발 : 슬빈님도 나와 유사한 풀이를 해오셨다. 차이점은 문자를 뒤에서 부터 세어오기 때문에 조금 더 효율적이다. 스택 풀이도 살펴봐야겠다.

Im-D

이번 주는 os를 진행하지 않고 회의만 했다. 토론 포멧에 대해 얘기를 해봤는데, 잠깐잠깐 나오는 것도 재밌었다. 괜찮은 것 같다.

07.19

was 프로젝트1

노을과 was 프로젝트를 재개했다. 지난 주에 회의한대로 진행했다. 간만에 하다보니 소스 파악이 좀 필요하긴 했는데, 테스트를 보니 금방 감을 잡았다. 테스트의 효과는 굉장했다.

끝나고 스크럼도 이어서 했는데, 요즘 생각해보고 있는 인수테스트와 단위테스트에 대해 애기를 나눠봤다. 이런식으로 얘기하는건 잘 되는데, 면접할때도 잘 풀어서 설명할 수 있는 방법을 생각해봐야겠다.

포스트스쿼드1

방법론 얘기를 하다보니 ATDD를 해보기로 결정했다. 그런데 그러기에는 선수되어야 하는 지식들이 있어 당분간은 공부하며 스터디처럼 진행하기로 했다.

알고리즘

  • 문자열 압축 : 완탐문제였다. 카카오 1~2번에 이런 문제가 많이 나왔던 것 같은데 조금씩 익숙해지는 것 같다. 좀 더 많이 풀어서 시간단축을 할 수 있도록 해봐야겠다.

07.20

was 프로젝트2

어제에 이어서 로그인 기능을 마저 구현했다. 구현 이후에는 리팩토링을 약간 시도했다. 아무래도 e2e 테스트 처럼 구성이 되어 있었기에 단위로 나뉘어지지 않았던 것 같다.

스크럼을 하며 예전에도 발생했던 content-length에 관한 오류가 노을에게 발생한 것을 알게 됐다. 아무래도 이상해서 브라우저에서 직접 확인해봐도 서로 달랐다. 아예 파일 자체를 읽어오면 길이가 다르게 읽힌다. 현재 예상되는 원인은 깃 커밋 시 cr lf를 자동 변환 시켜주는 기능이다. 설정이 서로 다르거나 IDE나 gui 툴로 커밋한 것과 cli로 커밋한 결과가 달라지거나 하는 부분이 있을 수 있을 것 같다. 일단 단순 원인 파악은 했는데 내일 다시 얘기해봐야겠다.

간만에 이런식으로 개발을 진행하니 확실히 재밌다. 하루 한 시간으로 개발시간을 정해놓고 하니 그런것일 수도 있고. 다시 오랜 시간 진행되면 재미가 없어질 수도 있다. 지금은 좋다.

포스트스쿼드2

그 동안 보던 ATDD를 이어서 봤다. 계속 보다보니 TDD와 ATDD 이전에 인수테스트와 단위테스트에 대해 먼저 봐야하는게 아닌가 하는 생각이 들었다. 물론 해당 내용들이 들어가있긴 하지만 정확히 어떤 것이라고 명확하게 말할 수 있는 것 같지는 않다.

내일은 RestAssured를 학습해보기로 했다. 각자 구현을 해보며 익혀보기로 했는데 잘 진행됐으면 좋겠다.

07.21

was 프로젝트3

리팩토링이 마무리되면서 몇 가지 문제점이 발생됐다. 아무래도 테스트 하기 쉬운 구조를 만드려고 하다보니 안 좋은 구조가 눈에 띄인 것 같다. 이외에도 기존에 고질적이었던 소켓 생성 시 포트가 겹치는 문제나, 이번에 새로 알게 된 테스트 케이스가 독립적이지 않은 문제를 발견해서 해결해야 할 것 같다.

포스트스쿼드3

스터디는 쉬고 회의만 진행했다. 회의가 꽤 길어졌는데, 우리가 만들 애플리케이션을 어떻게 바라볼지 관점에 대한 얘기를 주로 했다. 전체적인 컨셉과 각 프로세스에서 중요한 관점이 어떤 것인지에 따라 성격이 많이 바뀌는 것 같아 신기했다.

07.22

포스트스쿼드4

RestAssured를 테스트해봤다. 전체적으로 TestRestTemplate과 유사한 느낌이었다. 개인적으로는 최신 버전 쓰다가 잘 안 돼서 짜증이 살짝... 알고보니 스프링 부트 BOM에 버전이 등록돼있었다...

차이점은 TestRestTemplate은 RestTemplate을 고대로 가져다 쓴다. 따라서 RestTemplate을 써봤다면 익숙하게 쓸 수 있다. 또한 RestTemplate과 같이 요청의 결과가 객체로 바로 리턴된다. 반면, RestAssured는 프레임워크 단에서 할 수 있는 것이 많다. 가장 큰 차이점은 given-when-then 메소드를 이용해 BDD를 명시적으로 나타낼 수 있다는 것이다. 찾아보니 인수테스트가 사용자 시나리오 기반으로 작성되기 때문에 테스트 케이스 부터 BDD가 사용되는 것 같았다. 아마 이 점이 많이 사용하는 이유 중 하나인 것 같다.

단점은 harmcrest를 사용해서 assertJ에 비해 불편하다. 결과비교는 직접 객체로 받아와서 하는게 더 좋을 것 같다.

07.23

was 프로젝트4

오늘은 각자 코드를 설명하며 실시간 리뷰를 해봤다. 이것 저것 아이디어도 나왔는데, 일단 오랜만에 하느라 감을 잃어서 처음에 제대로 작성하지 않았던 요구사항 먼저 다시 작성해봤다. 빼먹은 부분들이 있어 체크해두고, 넘어가다 쿠키와 세션에 대한 얘기가 나왔다. 어쩌다 넘어간건지 기억이 잘 안 나는데, 어쨌든 생각보다 꽤나 깊게 들어가봤다(생각보다 깊은거라 사실은 얕다). 가장 큰 수확은 세션과 쿠키의 차이였는데, 세션은 정보 교환자체나 단위를 뜻하고 쿠키는 저장하는 방식이라는 것이다. 지금까지 이게 제대로 이해가 되지 않아 많이 헤멨던 것 같다. 이걸 보고 나니 crsf 같은것도 잘 이해됐다. 또한 스티키 세션과 세션 클러스터링도 어느정도 이해가 되는 것 같다. 물론 다시 제대로 봐야하긴 하겠지만, 세션의 정의를 알고 다시 보니 근본적인 필요성도 이해가 됐다.

이외에도 iso 5계층도 살펴봤는데, iso레이어도 빨리 다시 봐야겠다...

RestAssured와 RestTemplate

둘 다 구현체로 아파치에서 제공하는 HttpClient를 사용한다(아마 톰캣에 들어있는 듯 하다. 그래서 톰캣과 같은 환경이라 하는 듯). 내부적으로는 소켓을 쓴다. was 프로젝트에서 하는 것과 유사한 방식인듯 하다. 나중에 까보고 참고해봐야겠다.

ATDD 정리

ATDD정리는 얼추 끝났다. 글 몇 개만 더 읽어보고 마무리하려는데, 이것 보다도 단위테스트나 인수테스트에 대한 개념을 잡는게 더 중요할 것 같기도 하다. 그리고 마틴파울러 아저씨가 쓴 글 중에 mock을 이용한 단위 테스트와 클래식한 단위테스트를 비교해둔 글이 있는데 그 것도 읽어보면 좋을 것 같다.

07.24

포스트스쿼드5

제이미가 와이어프레임을 그려와줘서 그걸로 얘기를 나눴다. 대충 정리는 된 것 같고, 백엔드 요구사항과 프런트 요구사항을 각자 도출해서 취합해보려 한다. 서로 빠진 부분을 찾을 수 있지 않을까 싶다.

알고리즘 스파르타

12시부터 4시까지 알고리즘을 풀기로 했다. 혼자하면 집중이 흐트러지기 쉬운데 좋은 것 같다. 그동안 알고리즘 문제 정리가 잘 되지 않았었는데, 브랜치를 이용해 정리를 해보려고 레포를 새로 팠다. 지금까지는 나쁘지 않은 것 같다.

TODO

  • MockMvc 분석

    • 테스트 기본 인코딩이 이상함.
  • 잭슨 리퀘스트 바디 파싱 분석

    • request시에 생성자 인식 못 함.
  • 스프링 절대경로 서버주소 어떻게 인식하는지(어떻게 nginx 주소를 알 수 있나)?
  • 우아한 객체지향
  • 이런 REST로 괜찮은가
  • 알고리즘

  • OS

    • 4.6
  • AWS 강의듣기

    • IAM 정리하기
  • 데브독스 넥스트
  • 엘라스틱서치
  • 서브넷 구분
  • s3 이용

    • 구현하기
  • 깃헙액션으로 aws 배포
  • classForName 테스트
  • sticky session
  • clustered index
  • ACID
  • LocalDateTime.of nano sec
  • 트랜잭션
  • 영속성컨텍스트(와 트랜잭션)
  • ATDD
  • 인수테스트 데이터 삽입(초기화)
  • 인텔리j 이클립스 해쉬함수 생성 차이점
  • redis
  • redis repository equals와 어노테이션 확인해보기
  • ISO 7레이어
  • 블로그

    • 디렉토리 구조 수정
    • blogs/{yyyy}/{mm}/{postname}
    • generator 수정 -[ ] 각 분류 별로(til, post 등) 작성할 수 있도록 -[ ] til에 날짜별 구분과 toc 추가해주도록
    • 허스키 수정
    • 현재 파이프라인이 제대로 동작하지 않아서 수정 날짜 후처리가 되지 않음
  • 면접

    • 일했던 것 까지적으려면, 이력서에 사용했다고 명시한 기술에 대해 더 깊은 이해.
    • 쿼츠, 스캐줄링
    • 스프링 배치, 배치
    • 멀티파트
    • 멀티파트 리졸버
    • 시큐어코딩
    • 오라클이나 postgresql

      • 기본적인 차이점이나 장단은 숙지
      • 오라클 mysql 차이 공부하고 브라이언에게 다시 물어보기
      • 공간쿼리까지 준비하면 더 좋을듯...
    • 운영체제, 네트워크, 데이터베이스 등 컴퓨터공학 기본지식을 재점검
    • “신입개발자 면접 문제” 찾아서 충분히 준비(특히 SOLID, ACID 같은 기본 키워드)
    • 가장 좋아하는 정렬을 비롯하여 시간복잡도 log, n2 인 것들 각각 한가지씩은 숙지해 두시기 바랍니다(탐색도 알아두시면 좋습니다)
    • 자기소개는 충실히 준비
    • 화법 연습
    • 모르는 부분에 키워드 중심으로 힌트를 요청하면 좋겠습니다(“~~에 대한 말씀이신가요? 제가 잘 모르겠는데 키워드 몇 개만 주실 수 있으실까요?“)
    • 말을 확실하고 분명하게
    • 말끝을 흐리지 않게 항상 조심
    • 분명한 어조로 답변
정대화
DaeHwa_Jeong@outlook.com

Powered with by Gatsby 2.0