일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 우아한테크코스
- unique result
- ubuntu
- Mock
- 스프링 롬복
- 배포스크립트
- 회고
- @Param
- 우아한테크코스 블랙잭
- 우테코
- NonUniqueResultException
- 스프링부트배포
- 레벨인터뷰
- 우아한테크코스5기
- ubuntu이미지
- bomblab
- 자바 롬복
- Argos
- 벌크연산
- @Query
- @Modifying
- 영속성컨텍스트
- docker에 ubuntu
- 검색api
- 우분투
- 밤랩
- SpringDataJPA
- clearAutomatically
- BDDMockito
- jpa
- Today
- Total
목록전체 글 (94)
Jeomxon's Tech Note
1. 운영체제는 무엇이고 어떤 역할을 수행하는지 설명해주세요. 운영체제는 컴퓨터의 소프트웨어적인 요소로 하드웨어와 사용자 사이의 상호작용을 원활하도록 돕는 역할을 한다. 운영체제가 수행하는 역할 자원관리 하드웨어 자원 관리 프로세스 관리 파일 시스템 관리 파일 및 디렉터리 관리 입출력 관리 키보드, 마우스, 모니터, 프린터 등 입출력 장치 관리 유저 인터페이스 제공 GUI등의 사용자와 컴퓨터의 상호작용을 위한 인터페이스 제공 보안 및 권한 관리 . . . 2. 다중 프로그래밍 시스템(multi-programming system)에 대해서 설명해주세요. 메모리에 여러 개의 프로그램을 띄워 동시에 여러 작업을 실행하는 것처럼 처리하는 시스템이다. 하지만 사실 동시에 처리하는 것처럼 보이게 하는 것이지 실제로..
레벨4에 접어들면서 3때는 잠깐 사라졌던 미션이 부활했다. 레벨1,2 때도 미션으로 굉장히 바빴던 기억이 있었는데 아니나 다를까 첫번째 미션부터 쉽지 않았다. 톰캣 구현하기라는 주제로 깊이있는 학습을 목표로 한 미션이었다. 보투게더 팀은 5차 데모데이까지 추가해야할 기능이 꽤나 생겼는데, 미션과 병행하려니 미션이 뒷전이 되곤했다. 아마 내가 하고싶은 것을 먼저해서 그랬던 것 같다. 프로젝트를 하면서 API구현을 할 때 정말 흥미롭고, 뿌듯함을 많이 느꼈다. 테스트의 중요성도 많이 느꼈다. 인간은 항상 빈틈이 있기 마련이고, 이를 보완해주는 것은 테스트 코드라는 것을 하지만 테스트는 언제나 짜기 귀찮다..ㅎㅎ 요새 약속이 종종 생겨서 주말을 온전히 개발에 투자하지 못해서 미션을 급하게 구현했던 것 같다. ..
기술적인 내용을 담은 글을 작성하는 것을 즐기는 편은 아닌데, OAuth로 카카오 소셜 로그인을 구현한 과정에서 배운 부분이 정말 많았다. 한번 정리해보고 싶기도 하고 팀원들에게 자료로써 공유하면 좋겠다라는 생각이 들어서 글로 남겨보았다. 방학 때 정리하지 않으면 바쁘다는 핑계로 작성하지 않을 것 같아서 며칠에 걸쳐서 한번 작성해봤다. 확실히 글로 정리해보니 내가 애매했던 부분을 인지하고 넘어갈 수 있다는 장점이 있다고 느꼈다. https://velog.io/@votogether2023/OAuth%EB%A1%9C-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EC%86%8C%EC%85%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8..
3차 스프린트가 끝나고 오랜만에 생활기 글을 적는다. 그 사이 많은 일이 있었다. 팀에서는 여러 API를 만들고 연동 작업을 진행했다. 누구에겐 짧고, 다른 누군가에게는 긴 기간이지만 특히나 나에게는 짧았다. 팀원들에게 많은 부분을 배울 수 있었다. 그들이 어떤 생각을 가지고 있는지 공유하는 시간은 값지고 귀중했다. 나는 다른 사람의 생각을 듣는 것을 좋아한다. 그들이 어떤 과정을 통해서 그런 생각을 거쳐왔는지도 유추해볼 수 있고, 내가 전혀 생각하지 못했던 것들에 대해서 들을 때면 성장하는 느낌을 받기 때문이다. 그리고 어느순간 나도 느리지만 많이 생각하고 있었다. 내가 작성했던 코드를 곱씹으며 더 좋은 방법이 있을까?라고 생각하다보니, 때로는 더 좋은 방식이 떠올라서 고치기도 했다. 레벨3의 큰 목표..

문제 상황 팀 프로젝트를 진행하면서 OAuth를 이용한 회원가입 및 로그인 기능을 맡게 되었다. 거의 구현 막바지 무렵 자잘한 에러들을 고치고 있었는데, 개발서버에서는 발생하지 않았던 것으로 기억했는데 로컬에서 띄운 서버에서는 알 수 없는 에러로그가 찍히고 있었다. 토큰이 올바르지 않다고..? 토큰을 보낸 적이 없는데 이런 예외 메시지와 함께 에러로그가 찍히는 걸 확인할 수 있었다. 에러가 발생한 위치는 알았지만, 어느 시점에 해당 에러가 발생했는지 알기 위해서 위치를 파악해야했다. 일단 해당 로그로 확인할 수 있었던 사실은 filter에서 에러가 발생했기 때문에 요청의 시작 시점에 예외가 발생 해당 로그 이전에 회원 조회 쿼리문이 함께 나간 것을 확인했기에 두번째 요청에서 발생 그러면 결과적으로 내가 ..
우리 팀은 데모데이를 기준으로 스프린트를 가져가기로 했다. 이에 따라 2차 스프린트가 시작되었다. 백엔드도 어느정도 테이블 설계도 마무리되고 API명세도 마무리되어서, 각자 분담하여 작업을 가져가기로 했다. 모든 도메인들이 중요했지만 그 중에서도 하고 싶었던 두가지 부분이 있었다. 투표글과 회원 도메인이었다. 먼저 투표글은 거대한 양의 비즈니스 로직을 처리하면서 많은 경험을 할 수 있을 것이라고 생각했다. 회원은 한번도 적용해보지 못했던 OAuth와 JWT를 이용할 수 있어서 새로운 경험이 될 것이라 생각했다. 수많은 고민 끝에 회원 도메인을 맡기로 결정했다. 회원 도메인을 선택한 더 자세한 이유는 한번 학습해두면 언젠가는 또 쓸 수 있을 것 같아서였다. 비즈니스 로직도 마찬가지로 생각할 거리들이 많아서..
여김없이 빠르게 지나갔던 한 주 덥고 습했지만 시원했던 날도 섞여있던 조화로운 한 주 였다. 그 사이 팀원들과 조금 더 가까워진 것 같기도 했다. 여전히 이번 주에 뭘 했는지 돌아보면 잘 생각이 나질 않는다. 좋지 못한 기억력에 기록을 하지 않는 습관을 가져서 그럴지도 모른다. 함께하는 팀원들은 기록과 정리를 잘한다고 느꼈다. '기억이 나지 않는다는 것은 기억할만큼의 의미가 없었고, 필요한 것은 자연스럽게 기억하게 된다.' 라는 생각을 가지면서 살아왔다. 때로는 이런 생각이 독이 된다. 어쩌면 나를 합리화하는 문장이 아니었는지 돌아보게 된다. 수업을 듣거나, 개인적인 공부를 하면서도 정리하지 않았다. 그냥 체화될 때까지 공부하면 외우지 않아도 된다고 생각했다. 반은 맞고 반은 틀린 것 같다. 체화될 때까..
조금은 설레는 마음으로 시작한 레벨 3. 방학 때는 기대했던 것만큼 많이 공부하지 못했다. 그렇다고 여행을 가거나 주구장창 놀지는 않았던 것 같은데 그냥 강의도 좀 듣고 잠도 많이 자면서 쉬었던 것 같다. 매번 방학을 보내고 나면 느꼈던 것이 있었다. 방학 때 조금만 더 열심히 공부했더라면, 강의 몇 편만 더 들었더라면 하고 후회했는데, 전 방학보다는 덜 후회한거보니 성취도에 진전이 있었나보다. 이제는 팀 단위로 레벨 4까지 가게 되었다. 그만큼 구성원과 얼마나 커뮤니케이션을 잘 쌓아갈 것이 중요해졌다. 방학 때 나왔던 구성원들에서 백엔드 크루들은 익숙한 닉네임들이어서 마음이 편했다. 반면 프론트는 한 분도 모르겠어서 오히려 기대됐다. 투표에 관련된 주제로 프로젝트를 진행하게 됐다. 서비스의 플로우를 작..
레벨1에서 했던 것처럼 마찬가지로 레벨을 마무리하는 레벨 인터뷰를 했다. 레벨1에서는 엄청 긴장도 많이했고, 그만큼 준비도 많이하고 열심히 공부했다. 그리고 긴장했던 것과는 달리 생각보다 대답을 잘했던 것 같다. 물론 녹화를 하지 못했던 것은 아쉬웠지만, 좋은 피드백을 많이 받았다. 하지만 레벨2는 예상과 달랐다. 내가 학습에 초점을 맞췄던 스프링을 어떻게 잘쓰는가?에서 벗어난 질문들이 많았다. 대부분 동작원리를 물어보는 질문이 많았다. 어쩌면 기본적인 동작원리이고 스프링 웹 MVC의 핵심인데, 궁금해하지 않았던 잘못이 컸다고 느꼈다. 레벨 인터뷰 준비를 하면서 내 생각을 많이 정리하려고 했다. 내가 이런 기술을 왜 썼고, 어떤 장단점이 있는지 정도 수준의 공부를 했다. 즉, 내가 사용했던 기술들에 대한..
배포 스크립트란 내부에 배포를 위한 동작 순서를 적어두어서 한번의 실행으로 배포의 과정을 간략하게 할 수 있게 하는 쉘 스크립트 파일이다. 서버가 우분투로 되어있기 때문에 리눅스 커맨드를 어느정도 사용할 수 있다면, 아주 어렵지는 않게 작성할 수 있다고 생각했다. 먼저 생각해야할 것은 '내가 서버에서 스프링 부트 서버를 직접 띄울 경우 어떤 순서로 진행할까?'였다. 파악됐던 순서는 다음과 같다. 1. git명령어를 통해 repository에서 띄우고자 하는 Spring Project를 pull 받아온다. 2. 현재 띄워져있는 스프링 부트 서버가 있다면 해당 프로세스를 종료시킨다. 3. pull받아온 프로젝트에 대한 jar파일을 생성하기 위해 build를 진행한다. 4. 해당 jar파일을 실행한다. 1. ..