반응형 분류 전체보기338 [IntelliJ] gradle project 생성 시 불필요한 파일들이 생기는 현상 IntelliJ에서 gradle project를 생성했는데 위와 같은 불필요한 폴더들이 막 생겨났다. 좀 더 정확히 말하자면 gradle project를 생성했을 때까지는 괜찮았는데 프로젝트를 build시키는 시점에서 이상한 폴더들이 생겨났다. 알고보니 Gradle user home이 제대로 설정되지 않아서 발생한 문제였다. 문제 원인은 Gradle user home이 프로젝트 경로로 설정되어 있어서이다. 해당 경로를 수정하면 해결된다. (아래에서 추가 설명) 그렇다면 위 폴더들은 왜 생겨나는걸까? project를 build시켜 gradle이 동작되면 gradle에 대한 캐시가 생긴다. 그래서 일반적으로는 프로젝트와 무관한 특정 위치에서 이 캐시들을 한꺼번에 관리한다. 이 위치는 별도로 지정하지 않았다면.. 2022. 9. 2. OAuth vs OpenID 예제로 자주 등장하는 `줍줍`은 현재 진행되고 있는 프로젝트 명으로 슬랙 메시지를 백업해주는 서비스입니다. 이 글을 읽기 전에 인증과 인가의 차이를 알고 있다면 훨씬 이해하기 편합니다. 인증; authentication: 사용자의 신원을 확인 인가; authorization: (신원이 확인된 사용자에게) 자원에 접근할 수 있는 권한 부여 🧾 OAuth 🧾 인가 / authorization 서버 자원 소유자가 클라이언트에게 서버 자원에 대한 액세스 토큰 제공 ex: Slack이 줍줍에게 access token을 발급 해당 액세스 토큰을 통해 리소스 서버에 액세스 가능 ex: access token을 통해 줍줍이 Slack에게 사용자 정보 조회 요청 ✅ OAuth 1.0 vs OAuth 2.0 OAuth 2.. 2022. 8. 31. [Java] 날짜, 시간 API 😎 서론 최근 LocalDateTime과 같이 날짜나 시간과 관련한 로직을 작성할 일이 많았다. ZoneOffSet? Instant? 부끄럽게도 뭐가 뭔지 모르고 사용했던 것들이 많아 이를 알아보는 시간을 가지려 한다.🙂 😊 Java의 날짜와 시간 API 🔹 time 패키지 ISO 기반 (24시간 시계 시스템 hh:mm:ss) 불변 + thread-safe 🔹 LocalDate / LocalTime / LocalDateTime 시간대 (ZoneOffset, ZoneRegion)에 대한 정보 미포함 LocalDate: 날짜에 대한 정보 LocalTime: 시간에 대한 정보 LocalDateTime: 날짜 및 시간에 대한 정보 `Local... `는 ZoneOffset과 ZoneRegion를 포함하지 않음 .. 2022. 8. 30. [인프콘 후기] Hello INFCON! 제가 인프콘 다녀온 사람처럼 보이시나요? 🥰 네 맞습니다 🥰 🥳 참가 준비 🥳 사실 나는 인프콘에 떨어졌던 사람이다. 인프콘 신청이 오픈되자마자 바~로 신청을 했지만 아쉽게도 높은 경쟁률로 인해 낙첨되었다. 아쉬운 마음에 트위터에서 열리는 이벤트에 정성껏 참여했고 이번에는 당첨될 수 있었다. 😊 참가 전에 듣고 싶은 세션을 열심히 정리했다. 정리하면서 너무 빡빡한데? 이거 다 들을 수 있을까? 나 지금 대학교 새내기의 헤르미온느 시간표를 만드는건가...? 라는 생각을 했었다. (이 예상이 적중할 줄은...) 결과적으로 아래 세션 중에서 들은건 4개 뿐이었다. 왜냐면 인프콘에서 세션 외에도 준비한 이벤트가 정말정말 많았다. 세션은 나중에 유튜브로 올라오지만 이벤트는 여기서만 즐길 수 있다는 생각에... 이.. 2022. 8. 30. [글또콘 후기] 2022 글또콘 😄 서론 8월 25일 글또콘을 다녀왔다.😄 마침 방학이겠다~ 설레는 마음으로 부담없이 참여했다. 도착하니 한 70명 정도? 많은 사람들이 모여있었다. 아는 사람이 거의 없던 터라 쭈뼛쭈뼛하며 백엔드 쪽 테이블에 합류했다. 총 4가지 발표가 진행되었는데 목차는 아래와 같다. (슬랙에서 공유해주셨던 이미지를 가져왔습니다 ㅎㅎ) 📕 1. 변성윤님의 삶(철학) 어디로 가야하나 '내가 잘 성장하고 있는가?'에 대한 고민 👉 내가 가는 길. 삶의 지도 만들어보기 과거, 현재 어떤 일들을 했는지 어떤 일이 나에게 영향을 주었는지 지도처럼 그려보기 자신을 되돌아볼 수 있음 현재, 과거를 통해 미래를 설계할 수 있음 깨달음이란 자신의 무지함의 정도를 깨닫는 것 야생의 학습 새로운 것을 빠르게 습득하고 하나씩 실행해보기 .. 2022. 8. 27. [우테코/줍줍] 4차 스프린트 회고 개발 일지 리마인드 기능 개발 LocalDateTime.now() 테스트하기 Exception 패키지 구조 변경 ssh 명령어 편하게 쓰기 있었던 이야기 김범준님의 특강 마광휘님의 특강 써머, 브라운과 식사 타임 레벨3 마무리 외부 서비스에 종속적인 프로젝트 방학 계획 레벨4 계획 1. 개발 일지 🎉 💛 리마인드 기능 개발 나중에 고치자, 일단은 돌아가게 하자! 라는 마인드로 리마인드 기능을 개발했다. 10분마다 DB에서 리마인더 데이터를 조회하고, 데이터가 존재한다면 슬랙 메시지를 전송해주는 기능이다. 이때 10분마다 로직을 실행하도록 만들기 위해 Spring의 @Scheduled를 활용했다. (현재 Spring을 사용하고 있기 때문에 어노테이션으로 간단하게 만들었지만 Java의 Timer, Timer.. 2022. 8. 24. ssh 명령어 편하게 쓰기 🤗 서론 나는 ssh 명령어 치는게 너무 귀찮다! 현재 진행하는 프로젝트에서는 백엔드 개발서버, 백엔드 운영서버, Jenkins 서버, SonarQube 서버 등등등 여러 인스턴스를 접속할 일이 많다. `ssh -i 키.pem ubuntu@IP주소`에서 key 경로를 입력하는 것도 인스턴스마다 IP 주소가 뭐였는지 찾는 것도 너무너무 귀찮았다. 우테코 크루인 봄이 편하게 쓰는 방법을 알려줬다. 🥰 😎 설정 이 방법은 Windows / Mac 상관 없이 사용 가능합니다. 1. ~/.ssh/config 파일 생성 vi 명령어 실행 직후 i를 눌러 편집 모드로 변경 하단의 Host ~~~ 내용 입력 후 esc를 눌러 편집 모드 종료 :wq 를 이용해 파일 저장 후 나가기 이전에 설정한 적이 없다면 파일이 존재.. 2022. 8. 17. [Mockito] LocalDateTime.now() 테스트하기 목차 서론 static method 조롱하지 않기 테스트 코드 작성 현재 시간을 구하는 클래스 LocalDateTime.now() 모킹 테스트 데이터 변경 Clock 이용하기 최종 선택 1. 서론 😄 `줍줍` 프로젝트에서는 내가 원하는 시간에 리마인드할 수 있도록 슬랙 메시지를 보내주는 리마인드 기능이 있습니다. 이 리마인더 목록을 조회할 때 이미 알림을 보냈던 리마인더는 조회할 필요가 없다고 판단했고 현재 시간을 기준으로 조회하기 위해 LocalDateTime.now()를 호출했습니다. 해당 로직을 어떤 식으로 테스트 코드를 작성할까 고민했던 일에 대해 포스팅해보려 합니다. 2. static method 조롱하지 않기 😡 Why doesn't Mockito mock static methods? Loca.. 2022. 8. 15. [Spring] ResponseEntity vs DTO 🤔 서론 🤔 `줍줍` 프로젝트를 진행하며 반환값을 ResponseEntity로 반환하느냐, DTO를 반환하느냐 무엇이 더 좋을까? 에 대한 이야기가 나왔습니다. 이에 대해 다양한 사람들에게 조언을 구했고 많은 분들이 의견을 내주셨습니다 ㅎ.ㅎ 이를 정리하기 위한 글을 작성했습니다. 💥 ResponseEntity vs DTO 💥 HTTP body에 메시지를 담는 방법은 크게 2가지가 있습니다. 하나는 ResponseEntity를 이용하는 방법이고 하나는 @RestController를 사용해 DTO를 반환하는 방법입니다. controller에 아래와 같은 메서드를 작성했다고 가정하고 살펴보겠습니다. 1. ResponseEntity 반환 ResponseEntity의 빌더 패턴을 이용해 HTTP 상태코드 변경 .. 2022. 8. 11. 이전 1 ··· 7 8 9 10 11 12 13 ··· 38 다음 반응형