Programming-[Base] 74

[작성중][헥사고날 아키텍처] - 1. 기본 개념, 도메인 헥사곤

아키텍처의 중요성 보통 서비스가 고도화됨에 따라 누적 기능이 증가하는 속도가 느려진다. 도메인의 로직이 고도화되고 상호 작용이 늘어날수록 기능을 추가하는게 어려워지기 때문이다. 선행 설계에 드는 비용 대비 기능 추가 비용의 조화가 필요한 것이 원칙이지만, 아키텍처도 이런 tradeoff를 줄여주는 중요한 요소이다. 1. 헥사고날 아키텍처의 기본 개념 내부에서부터 도메인 헥사곤, 애플리케이션 헥사곤, 프레임워크 헥사곤으로 구성된다. [헥사곤 구조 그림 넣기] 1-1. 도메인 헥사곤 엔티티(entity)와 값 객체(value object)로 이루어진다. 엔티티는 도메인을 표현하는 속성값들의 집합? 정도이고, 값 객체는 프로젝트에서 임의로 변경할 수 없지만 Type으로 정규화하는 enum 같은 값이라고 한다...

맥북 OSX 초기화, 응용 프로그램 설치 목록

1. 공통, 로컬 chrome- 북마크 처리, brave browser, scroll reverser, iscreen shoter, spectacle, karabiner-elements, runcat, qview, displayLink?, 설정 마우스 속도, 키보드 입력 속도, 시작프로그램 또는 제어-손쉬운사용에서 백그라운드 프로그램 추가, 비밀번호 변경, 우상단 위젯 달력, 날씨로 변경, dock 왼쪽 정렬 처리, 로그인 시 시동음 끄기, 경고음 끄기, display-다크 모드 처리, 제어센터 - 블루투스 및 사운드를 메뉴바에 표시하기로 변경, 잠금화면 설정 및 잠금화면 꺼지는 시간 설정, 지문 등록(touchID) 2. 개발 docker hub, aws-cli, jetbrains toolbox, ho..

Elasticache 연결 문제 - <unresolved>:6379, Redis, Springboot, Lettuce

문제상황 Elasticache - Redis를 사용하기 위해 Redis cluster를 생성하고 스프링부트 - LettuceConnectionFactory를 통해 연결할려는데, 아래와 비슷한 에러가 발생했다. Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to {레디스 엔드포인트 주소}.cache.amazonaws.com/:6379 at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:..

github ssh 방식, GPG key와 ssh key unverified 문제, .git config에 대한 이해

git 설정 방식 개념 - 계정 여러개에 대해 설정한 경우 구글링해서 계정 여러 개에 대해서 ssh 방식으로 key값을 등록하는 방법들을 찾을 수 있다. 나의 경우 아래처럼 설정했다. 1. ssh로 접속하는 정보는 ~/.ssh 디렉토리 내에 있다. userA는 개인 계정, userB는 회사계정으로 설정했다. key를 만들고 github에 등록하는 방법은 쉽게 찾을 수 있다. 아래 글을 참고해도 좋다. https://usingu.co.kr/frontend/git/%ED%95%9C-%EC%BB%B4%ED%93%A8%ED%84%B0%EC%97%90%EC%84%9C-github-%EA%B3%84%EC%A0%95-%EC%97%AC%EB%9F%AC%EA%B0%9C-%EC%82%AC%EC%9A%A9%ED%95%98%..

github ssh 방식, 여러 유저로 login 및 commit

ssh 방식으로 로그인 하다가, git push가 갑자기 작동하지 않아서 블로그에 다시 기록해둔다. ssh 정보 등록 https://velog.io/@ashappyasikonw/GitHub-%EC%97%AC%EB%9F%AC-%EA%B3%84%EC%A0%95%EC%97%90%EC%84%9C-ssh%EB%A1%9C-git-clone-%ED%95%98%EA%B8%B0 위 링크를 참고하면 된다. cd ~/.ssh 위치에 config 파일이 있고, 아래처럼 user를 나눠서(userA, userB)로 ssh 정보를 기록해놓으면 된다. 실제 ssh key 정보는 id_rsa_userA.pub 또는 id_rsa_userB.pub에 있다. Host github.com-userA HostName github.com Us..

[탐험]S3 Content-Disposition으로 파일 다운로드 이름 변경, CloudFront 캐시 무효화

1. 결론 s3는 Content-Disposition값에 따라 다운로드하는 파일의 이름을 변경할 수 있다. 다만 S3 자체에서 다운로드 할때는 AWS에서 해당 header값을 override해서 안된다. URL을 거쳐서 진행할때만 가능하다. CloudFront를 사용하는 경우 요청의 X-Cache 값을 살펴보자. S3와 즉각적으로 동기화가 안된다면 캐싱 때문일 수도 있고, 이때는 무효화를 적극적으로 고려해보자. 상기 내용 때문에, CloudFront로 연결된 S3의 Content-Disposition 값을 그대로 프론트에서 활용하는 것은 실시간성을 확보할 수 없다. 실시간으로 변경 및 표시가 필요하다면 따로 DB 등에 저장해놓고 해당 값을 프론트에서 조회해야한다. 2. 문제상황 S3에 업로드된 파일을 사..

[link] base64 인코딩, Basic Authentication

Base64 인코딩 base64라는건 2의 6승인 64개의 문자로만 인코딩한다는 것이다. 바이너리 코드 (0110101101010101010...) 를 6개 bit로 쪼개서 위 ASCII 코드에 맞는 형식으로 변환하여 전송한다. 64개의 ASCII 코드를 넘어서기 시작하면 특수문자등이 포함되고 ASCII 전체가 2의 7승 = 124개인데, 제어문자가 포함되어 시스템마다 처리 방식이 달라서 통일하기가 어렵기 때문에 Base64를 사용한다. 6자리로 끊다가 맨 마지막 자리가 6bit가 안되면 해당 수의 우측에 0을 추가하여 처리한다. 1111000011110000 -> 111100 001111 000000 Basic Authentication Authorization: Basic 형태로 Authorizati..

[TIL] git reflog: git reset도 잘못하고 merge도 잘못해서 local, remote 모두 엉망일때..

제목 그대로 git reset도 잘못하고 merge도 잘못해서 local, remote 모두에서 내가 했던 작업분을 찾을 수 없는 상황이였다.(거의 삼일치 작업분...) 이 때는 git reflog 명령어를 쳐보면 reset, merge 했던 기록들이 다 남아있다. 참고: https://seosh817.tistory.com/297 다행히도 온갖 reset, revert, commit 기록들이 남아있었다. git reset --hard {원래 commit hash key} 명령으로 작업분들 살릴 수 있었다..

GPG key to github - GNUPG, pinentry 에러 mac M1

Github의 서명이 만료되어 gpg key를 업데이트해야했다. 아래 링크에보면 설명이 잘 나와있다. https://www.44bits.io/ko/post/add-signing-key-to-git-commit-by-gpg 정상적으로 gpg key를 만들고 github에 올리는데까지 성공했다. 그리고 git config 명령어를 통해 바뀐 gpg key를 설정까지 해주었으나 그래도 에러들이 발생했다. 나의 경우 pinentry를 설치했는데, 그냥 pinentry는 설정 파일을 바꿔줘도 작동하지 않고 pinentry-mac은 정상작동했다... 다음 명령어를 입력하면 보통 opt/homebrew/bin/pinentry-mac 경로에 설치된다. $ brew install pinentry-mac gpg를 관리하는..

[TIL]Connection error..Max Retries... localhost로 호출 -> docker로 호출시 host

현상 python에서 requests를 통해 http://localhost:8080로 환경변수를 설정한 후 요청을 보내는데 자꾸 아래처럼 에러가 났다. HTTPConnectionPool(host='localhost', port=8080): Max retries exceeded with url: /xxx (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 61] Connection refused')) 원인 .env에 아래처럼 환경변수를 지정해서 서버를 실행했었다. TEST_URL=http://localhost:8080 그리고,, docker를 통해서 실행했다! docker를 통해 host 컴퓨터인 localhost를 호..