티스토리

검색하기내 프로필

블로그 홈

사진찍는 개발자

구독자
0

프로그래밍, 사진, 여행 기록을 위한 공간

구독하기 방명록
신고

인기글

  • [Linux] Mac 에서 OpenJDK 17 설치하기 (Homebrew)공감수11댓글수4조회 17
  • [Linux] vi 편집기 사용할 때 주석 색상 변경공감수0댓글수0조회 15
  • [Network] Torrent Magnet URI 구조공감수0댓글수0조회 8

주요 글 목록

  • [IDE] pyCharm, pyenv, poetry 환경에서 저장소 SSL 사용 해제글 내용

    pypi 저장소 이용 시와 번외로 https 가 명시되어 있는 외부 API 호출 시 경우로 나누었다. 아래의 글은 MacOS 기준으로 작성했다. 배경사내 SSL 암복호화 때문에 인증서를 따로 사용하는데 이 경우 아래와 같은 오류 코드들을 만나게 되었다.certificate verify failed: unable to get local issuer certificatecertificate verify failed: self-signed certificate in certificate chain해결pypi 저장소 이용 시pyCharm따로 건드려야 하는 설정은 없다.pyenv, virtualenv가상환경에 있는 pip 의 설정 파일(pip.conf)을 추가하거나 내용을 수정해서 해결 가능하다.만약, 해당 파일..

    좋아요0
    댓글0작성시간2025. 3. 12.
    게시글 이미지
  • [IDE] Jetbrains 에서 웹 브라우저 로드가 되지 않을 때글 내용

    개발을 할 때 Chrome 보다는 Firefox 가 더 편해서 주로 사용하고 있긴 한데, 그 중에서도 Firefox Developer Edition 을 사용한다.일반 Firefox 와는 다르게 다른 경로를 가지고 있기도 해서 Jetbrains 에서 Firefox 브라우저 이용 시 실행이 되지 않는 경우가 있다. 이럴 경우, Settings 창을 연 다음 좌측 메뉴에서 Tools > Web Browsers and Preview 로 들어가면 브라우저별로 열 수 있는 목록이 나온다. 나 같은 경우에는 MacOS 를 사용하고 있어서 직접 경로를 설정해주어야 했는데 MacOS 의 경우 Firefox Developer Edition 은 아래와 같은 경로에 설치되어 있었다. /Applications/Firefox D..

    좋아요0
    댓글0작성시간2025. 3. 12.
    게시글 이미지
  • [GIT] GitLab 에서 Renovate 를 이용하여 자동으로 의존성 버전을 관리해보자글 내용

    소개Renovate 는 쉽게 말하면 자동화된 의존성 업데이트 도구다. GitHub 로 따지자면 dependabot 같은 역할로 보면 된다.해당 도구로 의존성 버전을 자동으로 관리해주게 하여 보안 이슈 등으로 인한 라이브러리 버전 업데이트 발생 시 개발자가 버전을 관리하는 부분을 어느 정도 신경쓰지 않도록 도와준다. dependabot의 경우 GitHub을 built-in 의존하는 부분이 있지만, renovate 의 경우 멀티 플랫폼 및 여러 언어에서 동작할 수 있도록 지원하며 커스터마이징도 쉽다. (봇 비교 문서)GitLab 의 경우, https://gitlab.com/renovate-bot/renovate-runner 를 통해 사용할 수 있으며 해당 저장소에서 제공하는 템플릿 파일을 통해 renovat..

    좋아요0
    댓글0작성시간2024. 12. 30.
    게시글 이미지
  • [Linux] Mac Apple 실리콘에서 PHP7 이하, Composer, OCI8, xdebug 설치하기글 내용

    ZShell, Rosetta 가 이미 설치되어 있는 환경이라고 가정한다.Homebrew (x86 환경) 설치$ arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"아키텍처에 따라 Homebrew 의 설치되는 경로가 다르다.애플 실리콘 - /opt/homebrew인텔 - /usr/local/opt따라서 기존 Homebrew 와의 경로가 서로 겹칠 일이 없으니 신경쓰지 않아도 된다. 나중에 아키텍처 바꿔서 Homebrew 실행해야 할 때 편하게 실행할 수 있도록 ibrew 라는 이름으로 별칭을 정해주자.먼저 아래처럼 .zshrc 를 연 다음$ vi .zshrcalias..

    좋아요0
    댓글1작성시간2024. 12. 30.
    게시글 이미지
  • [Spring] Gradle 캐시 적용으로 CI 파이프라인과 빌드를 빠르게 하기글 내용

    $GRADLE_USER_HOME아래 내용을 이해하려면 이 환경 변수를 우선 알고 있어야 한다.Gradle 은 GRADLE_USER_HOME 이라는 환경 변수를 지원하여 사용자가 직접 지정하여 이용할 수 있도록 지원해주고 있다. 이 환경 변수에는 단순히 폴더 경로만 지정해주면 되는데 이 환경 변수는 전역 설정 property, 초기화 스크립트, 캐시, 로그 파일 등을 저장하는 용도로 쓰인다.GRADLE_USER_HOME 이라는 환경 변수를 읽지 못했을 때는 사용자 홈 디렉토리의 .gradle 폴더를 바라본다. 프로젝트 저장소의 .gradle 폴더와는 다르기 때문에 혼동하면 안 된다. Wrapper 및 의존성Wrapperhttps://docs.gradle.org/current/userguide/gradle_..

    좋아요2
    댓글3작성시간2024. 11. 15.
    게시글 이미지
  • [Spring] OpenFeign @SpringQueryMap 사용 시 별도 파라미터로 사용하기글 내용

    어떤 API 에 쿼리 파라미터로 전달해야 하는 항목 중 파라미터를 다르게 전달해야 하는 경우가 있다고 생각해보자.예를 들어, keywordType 을 keyword_type 이라는 이름으로 전달해야 하는 상황이라고 생각해보자. @SpringQueryMap 을 사용하면 아래와 같이 작성할 수 있을 것이다.@FeignClientpublic interface MemberApiClient { @GetMapping(value = "/users") UserResponseDto userSearch(@SpringQueryMap UserRequestDto request);}@Builder@Getterpublic class UserRequestDto { @Builder.Default private U..

    좋아요0
    댓글0작성시간2024. 11. 15.
    게시글 이미지
  • [여행] 거제도 여행 (24/10/09 ~ 10/10, feat. Nikon Zf)글 내용

    NIKON ZF와 NIKKOR Z 28-120mm f/4 S, NIKKOR Z 35mm f/1.8 S 렌즈를 챙기고 갔다.원래 혼자 가려고 했으나 일행이 늦게 추가되어 두 명이서 여행을 가게 되었다. 거제도 내에서 이동할 수단은 대중 교통으로 타고 다니려고 했으나 버스의 배차 간격이 어마무시해서 쏘카 렌트카를 빌려 차를 타고 다니는 것으로 했다. 수원에서 진주로 갔다가 냉면을 먹고, 진주에서 거제고현터미널까지 해서 실제로 거제도에 도착하기까지 매우 오랜 시간이 걸렸다. 직접 운전하면서 스터번 호텔에 먼저 짐을 놓고 나섰다. 해당 호텔은 뒷 장소에 전용 주차장이 있는데 사람들이 잘 모르는 것 같아 늦은 시간에 주차해도 아주 널널해서 매우 편하게 이용할 수 있었다. 오션뷰여서 창문 밖으로 보이는 방 안은 좋..

    좋아요7
    댓글3작성시간2024. 11. 1.
    게시글 이미지
  • [Linux] Mac 에서 python 2 설치하기 (Homebrew + pyenv)글 내용

    1. pyenv 설치 $ brew install pyenv ==> Auto-updating Homebrew... Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`). ==> Auto-updated Homebrew! Updated 3 taps (shivammathur/php, homebrew/core and homebrew/cask). ==> New Formulae dissent ==> New Casks lookaway loungy You have 16 outdated f..

    좋아요0
    댓글0작성시간2024. 3. 29.
    게시글 이미지
  • [회고] 멀티모듈 고군분투 회고글 내용

    처음에 Java Spring 프로젝트를 다룰 때 모듈화에 대해 어렴풋이 알고는 있었다. 다만, 당시에는 생소한 개념이었고 이해하기 어려웠었다. 프로젝트를 만들 때 멀티모듈을 어떻게 만들어야 하는지부터 Github나 블로그 등을 엄청 찾아다녔다. 우아한형제들의 블로그에서도 멀티모듈에 대한 설계 게시글이 있어서 어떻게 의존성의 범위를 설정하고 프로젝트 설계를 했는지 구체적으로 설명이 되어 있는 게시글도 찾아보고 그랬지만, 처음부터 잘 모르는 상태에서 이를 실천하다간 나중에 어려워 질것 같아서 단일 모듈로 시작했었다. 프로젝트를 만들어서 실제 서비스에 적용하고 팀원들이 Java Spring 프로젝트들을 하나씩 만들다 보니 저장소도 늘어나기 시작했는데 설정이나 Entity, 클라이언트 등 중복되는 클래스들이 계..

    좋아요0
    댓글0작성시간2024. 3. 13.
    게시글 이미지
  • [DB] Oracle PIVOT 사용 방법 및 조회 시 성능 주의사항글 내용

    Oracle의 PIVOT 문법은 Oracle 11g부터 지원하는 기능으로 행을 열로 변환하여 사용할 수 있게 도와준다.SELECT ( 출력컬럼 ) FROM ( PIVOT 대상 쿼리문 ) PIVOT ( 집계함수(집계컬럼) FOR 컬럼 IN (컬럼값 AS 별칭 ... )FROM절에 대상이 되는 테이블의 모든 컬럼은 GROUP BY의 대상이 된다.PIVOT문에 가로로 출력할 컬럼은 가로로 나열할 때의 GROUP BY의 대상이 된다.집계함수에 사용되는 컬럼은 집계 대상이므로 GROUP BY 대상에서 제외되고 나머지 컬럼들은 세로로 나열할 때 GROUP BY 대상이 된다.예를 들면 EMP 테이블에 아래와 같은 데이터가 있다고 하자아래처럼 질의문을 작성하고SELECT *FROM ( SELECT ENAM..

    좋아요0
    댓글0작성시간2024. 3. 11.
    게시글 이미지
  • [DB] Oracle 날짜 계산 시 INTERVAL 보단 ADD_MONTHS 를 사용하자글 내용

    회사에서 INTERVAL을 사용하는 쿼리 때문에 장애가 발생해서 남기는 글이다. Oracle에서 날짜를 더하거나 뺄 때 두 가지 방법이 있는데 하나는 INTERVAL을 사용하는 것이고, 다른 하나는 ADD_MONTHS를 사용하는 것이다. INTERVAL은 아래와 같이 사용할 수 있다.SELECT SYSDATE - (INTERVAL '1' YEAR) , SYSDATE + (INTERVAL '1' YEAR) , SYSDATE + (INTERVAL '1' MONTH) , SYSDATE + (INTERVAL '1' DAY) , SYSDATE + (INTERVAL '1' HOUR) , SYSDATE + (INTERVAL '1' MINUTE) , SYSDATE + (INTER..

    좋아요1
    댓글1작성시간2024. 3. 4.
    게시글 이미지
  • [JPA] QueryDSL에서 enumPath 사용하기글 내용

    회사에서 SQL 쿼리를 작성하다 보니 CASE WHEN을 사용해야 하는 경우가 있었는데(안티패턴으로 취급되기도 하지만) QueryDSL에서 CASE WHEN 과 함께 enum 으로 받고 싶어서 사용해보다가 뭔가 이상한 구석이 있어서 한번 기록으로 적어보았다. QueryDSL에서 CASE WHEN 사용법의 경우 이곳에 잘 정리되어 있다.사용법우선 EnumPath 를 사용할 경우 예시로 아래와 같이 사용할 수 있다.@RequiredArgsConstructorpublic class SomeRepositorySupportImpl implements SomeRepositorySupport { private final JPAQueryFactory queryFactory; @Override p..

    좋아요1
    댓글0작성시간2023. 11. 30.
    게시글 이미지
  • [GIT] Upsource 말고 Jetbrains 에서 GitLab 통합 기능으로 코드 리뷰를 해보자글 내용

    코드 리뷰를 도와주는 도구 중 Jetbrains 에서 만든 Upsource 라는 유명한 도구가 있다. 하지만 2022년 2월에 지원 종료를 하면서 기존에 사용하는 유저들만 계속 지원하고, 신규로 사용하고자 한다면 Space 라고 하는 통합 개발 플랫폼을 이용하라고 말한다. 현재 회사에서는 Upsource 를 이용하고 있지 않았고, 통합 개발 플랫폼도 사실상 GitLab 을 사용하고 있었기 때문에 Space 를 사용할 수도 없었다. 코드 리뷰를 하기 위한 도구를 물색하면서 Codestream 이라던가 다른 도구들을 살펴보았지만, Upsource 만큼의 편의성을 제공하는 도구는 없어보였다. Jetbrains 의 Marketplace 에서 GitLab MR 관련된 플러그인이 있긴 했지만 유료였다. 그렇게 딱히..

    좋아요0
    댓글0작성시간2023. 10. 15.
    게시글 이미지
  • [GIT] 특정 시점에서의 변경 내역만 되돌리기글 내용

    회사에서 다른 분이 작업했었던 브랜치가 master 에 병합이 되었는데 적용하지 말아야 하는 경우가 생겨서 이미 다른 사람들까지 병합이 된 상황에서 되돌려야 하는 경우가 생겼다. $ git log --oneline --graph * f82c9d2 (HEAD -> master, tag: v1.16.7o, origin/master, origin/HEAD) Merge branch 'hotfix/EMTT-350' into 'master' |\ | * cf2113f (origin/hotfix/EMTT-350, hotfix/EMTT-350) feat: cache key 확인 후 없으면 api 호출하도록 수정 | * adb8f11 refact: 인자 수정 | * e1653bd refact: isset 은 null 확..

    좋아요0
    댓글0작성시간2023. 9. 14.
    게시글 이미지
  • [Spring] RestTemplate 과 MessageConverter 사이의 Converter 순서 이슈글 내용

    계기회사에서 내가 만들어둔 라이브러리를 다른 팀에서 사용하고 있는 경우가 있었는데, 어느 날 갑자기 다른 팀에서 아래와 같은 메세지가 나타난다고 확인 요청이 왔다.java.lang.IllegalStateException: org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request: "{"errors":["failed to parse JSON input: invalid character '\u003c' looking for beginning of value"]}"이게 갑자기 나타날리가 없어서 어떤 작업을 한 후에 나타났냐고 물으니, build.gradle 에 아래와 같은 의존성을 추가하면 위와 같은 에러가 나타난다고..

    좋아요0
    댓글0작성시간2023. 2. 5.
    게시글 이미지
  • [회고] Graylog 에서 ELK 까지의 작업 후기글 내용

    사내에 로그가 남겨지고 있는 서비스들이 대부분 파일로 관리되고 있는 것이 많았는데 그 중에서 많은 트래픽이 오는 두 개의 서비스 로그 지표를 확인해보고 싶었다. 기존에는 정작 애플리케이션 단위에서 얼마나 요청이 들어오고 나가는지, 어떤 데이터가 얼마나 들어오는지를 개발팀에서 알 수 있는 방법이 없어 실제로 장애 상황이 일어났을 때도 연관 데이터를 쉽게 분석하기 어려웠다.또한, 로그가 파일로 남겨지고 있어서 SE 분들이 로그를 삭제해도 되는지에 대한 문의가 우리팀에게 간헐적으로 전달되었고, 우리가 직접 서버로 들어가서 삭제하거나 SE 분들이 삭제하곤 했다. 이런 이슈를 이번에 따로 개선해보고 싶었다. 팀에서 해당 서비스의 로그는 오랫동안 보관하기에는 중요하지 않은 로그라고 판단했고, 주기는 1~3개월 정도..

    좋아요0
    댓글0작성시간2023. 2. 5.
    게시글 이미지
  • [Spring] 컬럼이 많은 상황에서 Reflection 시 ConversionService 활용해보기글 내용

    배경회사에서 100개가 넘는 컬럼들을 다루어야 하는 경우가 있었다.100개가 넘는 컬럼들 중 섹션별로 일부의 데이터를 추가하거나 수정할 수 있어야 했고, 기존의 데이터와 서로 다른지 판단할 수 있어야 하며 이를 로그로도 남겨야 하는 요구사항이 있었다. 예를 들면 Entity 가 아래와 같은데, @ExampleSection 이라는 Annotation 으로 섹션을 분리한 뒤 사용자가 원하는 Section 별로 데이터를 저장하거나 수정할 수 있어야 하는 것이다.@Entity(name = "exampleEntity")@Table(name = "EXAMPLE_ENTITY", schema = "GREATSCHEMA")@DynamicInsert @DynamicUpdate@Builder@Getter@NoArgsCons..

    좋아요0
    댓글0작성시간2022. 11. 21.
    게시글 이미지
  • [Spring] AutoConfiguration 직접 만들어서 라이브러리로 만들어보기글 내용

    Spring 에서는 상당히 많은 AutoConfiguration 을 제공해주고 있는데, 따로 라이브러리를 만들면서 직접 만들 수도 있다.테스트로 하나 만들어보자 구성우선 구조는 아래처럼 잡고 멀티모듈로 구성했다.autoconfigure - Spring Boot 에서 자동으로 AutoConfiguration 이 적용되는 로직 관련somelogic - 비즈니스 로직// root - build.gradlebuildscript { ext { projectVersion = '1.0.0' projectGroup = 'kr.pe.karsei' springBootVersion = '2.7.5' springDependencyVersion = '1.0.15.RELEA..

    좋아요0
    댓글0작성시간2022. 11. 11.
    게시글 이미지
  • [여행] 베어트리파크에 다녀오다 (22/10/29, feat. Nikon D5600)글 내용

    가을 단풍이 막 물들고 있었고 구경가보고 싶어져서 다녀왔다.대충 위치는 아래세종시에 있는 곳인데 돈이 아깝지 않을 정도로 좋았다.맞은편에는 레스토랑 건물이 있었는데 양식 위주로 메뉴가 있었다.당일에 결혼식이 있었는데 그곳에서 결혼식도 같이 할 수 있는 곳인 것 같았고 이런 곳에서 하는 것도 나쁘지 않은 것 같다.베어트리파크하면 '베어' 답게 '곰' 이 빠질 수 없다.'곰' 을 볼 수 있었다.

    좋아요1
    댓글0작성시간2022. 10. 29.
    게시글 이미지
  • [여행] 피나클랜드에 다녀오다 (22/10/15, feat. Nikon D5600)글 내용

    어디 갈까 하다가 가족들이 여기 홍보하는 걸 어디서 본걸 딱 떠올라서 한번 가보게 되었다.수목원이나 식물원, 정원 등의 장소를 가는 것을 좋아해서 들리게 되었다.규모는 꽤 큰 것 같았고 생긴지는 얼마 되지 않아 보였다.  주차장은 상당히 커서 무리는 없었지만 그보다는 주차장까지 가는 길목이 상당히 협소했다.약간 경사진 길이 있는데 나중에 돌아갈 때를 생각해보니 앞에 큰차가 뒤로 밀려나게 된다면 큰 사고가 날 수 있을 것 같으므로 여기 부분은 나중에 잘 해결이 되었으면 좋을 것 같다.매표소는 주차장 옆에 있는 길을 계속 따라 걸어가다보면 왼쪽에 있다.현장에서도 발권할 수 있고, 인터넷에서도 발권할 수 있다.미리 인터넷 예매를 하고 가면 줄서서 기다리지 않고 바로 티켓을 받아서 갈 수 있다. (현장에서 줄서..

    좋아요0
    댓글0작성시간2022. 10. 29.
    게시글 이미지
문의안내
  • 티스토리
  • 로그인
  • 고객센터
© Kakao Corp.