반응형 Develop239 [Java] Thread 이해하기 이 글에서는 Thread 클래스는 'Thread', 개념적 의미의 스레드는 '스레드'로 표기한다. 먼저 프로세스와 스레드의 차이에 대해 잘 모르는 사람들은 이 글을 읽기 바란다. [OS] 프로세스와 스레드 프로그램 어떤 작업을 위해 실행할 수 있는 파일 메모리에 올라가지 않은 Windows의 *.exe 같은 정적 파일 (메모리에 올라가다: 실행을 하려면 OS가 독립적인 메모리 공간을 할당해줘야 함) 프로세스 yeonyeon.tistory.com 스레드를 생성하는 방법으로는 두 가지가 있다. implements Runnable extends Thread 🔻 Runnable vs Thread 더보기 어느 것을 이용해 스레드를 생성하는 것이 좋을까? 어느 쪽이든간에 별 차이는 없지만 Thread 클래스를 상속.. 2022. 9. 8. [Java] 입출력(I/O)과 버퍼(Buffer) 서론 ByteArrayOutputStream과 BufferedOutputStream의 차이점에 대한 질문을 받았다. 내가 Java의 입출력 시스템과 buffer에 대한 이해도가 떨어진다는 상태를 자각하게 되었다. 이를 공부하는 내용을 작성하려고 한다. 목차 stream이란? InputStream & OutputStream InputStreamReader & OutputStreamWriter buffer란? BufferedInputStream & BufferedOutputStream BufferedReader & BufferedWriter Java의 입출력 java에서의 입출력은 Stream을 통해 이루어진다. 1. stream이란? 데이터를 운반하는데 사용되는 연결 통로 stream 이름의 어원: 데이터.. 2022. 9. 5. [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. 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. [OAuth] 슬랙 로그인 구현하기 목차 1. OpenID vs OAuth vs OIDC 2. OAuth 인증 과정 3. 로그인 동의 화면 4. 로그인 API 구현하기 `줍줍` 프로젝트는 슬랙을 이용해 로그인하는 기능을 제공할 예정이다. 해당 기능을 개발하는 과정을 이야기 해보려 한다. 1. OpenID vs OAuth 📚 OpenID, OAuth는 인증, 인가에서 사용되는 HTTP 기반 프로토콜이다. OpenID -> 인증; authentication: 사용자의 신원을 확인 OAuth -> 인가; authorization: (신원이 확인된 사용자에게) 자원에 접근할 수 있는 권한 부여 더 자세한 내용 👉 https://yeonyeon.tistory.com/264 OAuth vs OpenID 예제로 자주 등장하는 `줍줍`은 현재 진행되고 .. 2022. 7. 31. 이전 1 ··· 4 5 6 7 8 9 10 ··· 27 다음 반응형