TIL4 대기중인 스레드가 많으면 왜 좋지 않을까? 생성한 워커 스레드에 작업을 지시하고 호출 스레드는 그 결과를 기다리지 않고 종료하는 로직이 있었다.대략적인 구조는 아래와 같았다.Thread thread = new Thread(runnable);thread.start();return;여기서 요구 사항이 추가되어, 호출 스레드가 하나의 워커 스레드의 작업 결과를 기다렸다가 반환하는 기능이 추가되어야 했다.Thread thread = new Thread(runnable);thread.start();thread.join();return;이렇게 로직을 짰는데, 몇 초 뒤 이런 생각이 났다.어? 뭐여? 어차피 호출 스레드는 worker 작업이 끝날 때까지 블로킹되는데, 굳이 스레드를 만들 필요가 있나?이렇게 해도 되잖아?runnable.run();return;.. 2025. 3. 30. 사람을 낚는 AI 자바로 UUIDv7를 만들기 위해 라이브러리를 다운받기 전,혹시 자바 17버전에서는 라이브러리 없이 UUIDv7 생성이 가능하지 않을까? 하는 생각이 들어 AI님께 질문을 드렸다. 그랬더니,Google Gemini: 자바 17버전부터는 java.util.UUID.randomUUID()의 반환값이UUIDv7입니다!자바 17버전 이하를 사용하신다면 UUID 라이브러리를 사용하시고, 17버전 이상이라면 라이브러리는 필요 없습니다! 듣고 나서 어라? 싶었다.JDK 17부터 똑같은 메서드의 반환값이 이전 버전과 달라지면 어떤 문제가 일어날까?17로 올릴 때는 크게 문제가 안 될 것 같다.하지만 다운그레이드를 해야 하는 상황이 온다면 어떨까? 라이브러리or프레임워크 호환 문제로 JDK를 다운그레이드해야 하는 상황.. 2025. 3. 3. CI/CD에서 Runner란? CI/CD에 대해서 잘 몰랐을 때도 강의를 보고 따라하는 식으로 적용한 적이 있다.그 때 모르고 넘어갔었던 것이 Self-hosted Runner라는 프로세스였다. 이번에 CI/CD를 공부하며 좀 더 자세히 알게 되었으니 정리해 보려 한다. 인프라 구성 요소 중 이해가 잘 가지 않는 것이 있을 때 문제상황을 정리하기 위해 내가 종종 하는 생각이 있는데, 다음과 같다.'그 프로세스가 작동하려면 컴퓨터가 필요할텐데, 그 프로세스는 어떤 컴퓨터에서 도는 거지?' 이다. Runner란 무엇이고, 어디에서 도는가? CI가 작동하기 위해서는 Git 원격 저장소의 commit과 같은 이벤트를 누군가가 감지하고, 지정된 스크립트를 실행해야 한다.즉 어떤 신호를 대기하고 있다가, 지정된 스크립트를 실행하는 주체가 'Ru.. 2025. 2. 18. gitlab과 SSH - private key를 왜 못 찾니 스파게티코딩클럽에서 Docker를 사용한 CI/CD 강의를 듣던 중RSA key pair를 사용해서 gitlab 권한 인증을 하는 파트가 있었다. 1. 로컬 PC key pair 생성2. id_rsa 이름으로 생성된 private key의 파일명을 알아보기 쉽게 변경3. public key를 gitlab 계정에 등록4. SSH를 이용해 원격 Git 저장소 clone 강의를 듣고 위의 과정을 따라했지만, 권한 부족으로 clone이 실패했다.결론부터 말하면 원인은 2번에 있었다(강사는 파일명을 변경하지 않음). 강의를 들으면서도 이상했던 것이. ~./.ssh 디렉토리 내의 private key를 지정하고 git clone을 한 것도 아닌데, 어찌 원격 저장소의 public key와 로컬 PC의 private.. 2025. 2. 18. 이전 1 다음