분류 전체보기

TIL
스파르타의 마지막 팀 프로젝트가 끝나고 드디어... 조금은 여유가 생겼다. 아직 공부할게 너무너무 많지만 쬐끔 여유가 생김 그래서 다음 사이드 프로젝트를 뭘로 하고 거기에서 공부할 게 뭐뭐 있을 지를 잘 정해야한다. 우선 예전 팔팔잇츠 프로젝트 때 CMS 비스무리한 것을 만들어 본 적은 있는데, 사실 완벽한 CMS라고 보기엔 어려웠다. CMS(Content Management System)란 콘텐츠 관리 시스템인데 카페24 같은 걸 생각하면 된다. 개발을 모르는 사람이라도 어드민 관련 기능을 손쉽게 사용할 수 있도록 제공해주는 솔루션이다. 예시 식스샵 | 6분 만에 만드는 멋진 쇼핑몰 무심코 시작한 그녀의 취미가 멋진 브랜드가 되고, 손재주 좋은 당신의 공방이 더 넓은 세상을 만나는 방법 www.sixs..
TIL
프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론입니다. 예를 들어 객체지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 해주는 반면에, 함수형 프로그래밍은 상태 값을 지니지 않는 함수 값들의 연속으로 생각할 수 있게 해줍니다. 어떤 언어는 특정한 패러다임을 지원하기도 하는데, jdk 1.8 이전의 자바는 객체지향 프로그래밍을 지원하는 반면에, 하스켈은 함수형 프로그래밍을 지원합니다. 여러 패러다임을 지원하는 언어로는 C++, 파이썬, 자바스크립트가 있으며, 자바의 경우 jdk 1.8부터 함수형 프로그래밍 패러다임을 지원하기 위해 람다식, 생성자 레퍼런스, 메서드 레퍼런스를 도입했고 선언형 프로그래밍을 위해 스트림(strea..
TIL
Docker를 사용하는 이유 어플리케이션 개발과 배포가 편해진다. 도커 컨테이너 내부에서 여러 소프트웨어를 설치해도 호스트 OS(내 컴퓨터에 하면 호스트는 내 컴퓨터) 에는 영향이 없다 CI/CD 에서 지속적인 통합 과정의 테스트에서 Docker를 활용 어떤 서버에 올리더라도 똑같은 환경으로 구성된 컨테이너로 동작하기 때문에 표준화된 배포를 구성할 수 있다 여러 어플리케이션의 독립성과 확장성이 높아진다. Docker가 가상화에서 사실상 표준의 위치다. Docker Image란? 도커 컨테이너 서비스를 위한 이미지는 컨테이너 런타임에 필요한 바이너리, 라이브러리 설정 값 등을 포함하고, 변경되는 상태값을 보유하지 않고, 변하지 않는다. 상태 저장 없음(Stateless): 애플리케이션과 관련된 모든 파일과..
TIL
바위 위에서 하울링 하는 늑대가 EventPublisher 밑에서 듣고 어떠한 행동을 하는 늑대가 EventListener이다 1, 2, 3 번은 퍼블리셔의 하울링(이벤트 발행)을 듣고 1번 늑대는 다른 무리의 늑대여서 경계하고 2번 늑대는 같은 무리의 늑대여서 달려가고 3번 늑대는 춤춘다 바위 위 늑대가 1, 2, 3 번의 행동을 정해주는 것이 아니다, 들은 늑대들이 어떤 행동을 할 지 정한다. Publisher는 밑의 늑대를의 행동을 전혀 신경 쓸 필요 없이 하울링만 하면 된다. @Override @SwapLog @Transactional public void updatePost(Long postId, Member member, PostUpdateRequestDto requestDto) { log.i..
TIL
의존성 주입을 알기 전에 Dependency(의존) 를 알아야 한다. 우선 의존성을 종속성이라고도 불린다 A가 B를 의존한다는 표현은 어떤 의미일까? 의존대상 B가 변하면 그것이 A에 영향을 미친다 B의 기능이 추가 또는 변경되거나 형식이 바뀌면 그 영향이 A에게 미친다. public class ConsumerController { private ConsumerNormalService consumerService; public ConsumerController() { this.consumerService = new ConsumerService(); } } 현재 컨트롤러는 노말 서비스에 의존하고 있다. 서비스의 코드가 바뀌면 컨트롤러까지 영향이 미치는 것이다. 의존관계를 인터페이스로 추상화하기 위의 예시를..
TIL
1. 물리계층 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보내고 아날로그 신호가 들어오면 0과 1의 나열로 해석하여 물리적으로 연결된 두 대의 컴퓨터거 0과 1의 나열을 주고 받을 수 있게하는 모듈 2. 데이터 계층 같은 네트워크에 있는 여러대의 컴퓨터들이 데이터를 주고 받기 위해 필요한 모듈 Framing은 Data-link Layer에 속하는 작업 중하나(0000, 1111 로 데이터 분리) 3. 네트워크 계층 수 많은 네트워크들의 연결로 이루어진 인터넷에서 어딘가에 있는 목적지 컴퓨터로 데이터 전송을 위해 IP 주소를 이용해서 길을 찾고 다음 라우터에게 데이터를 넘겨주는 것 (라우팅, 포워드) 4. 전송 계층 포트 번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스 까지 데이터가 도달..
TIL
문제정의 사실 수집 통합 테스트 돌릴 시 No thread-bound request found 오류 발생 원인 추론 로깅 AOP 28번째 줄 HttpRequest 받아오는 부분에서 문제가 난 것으로 추정 조치 방안 검토 ObjectProvider getObject() 하는 시점까지 RequestScope Bean 생성을 지연할 수 있다. 그 후 HTTP 요청이 일어나서 Logger 가 필요하게 되면 getObject() 를 통해서 빈이 생성 처리 된다. 통합 테스트 환경에선 HTTP 요청이 일어나지 않으니 이 방법이 아님 실질적인 Request 가 없는 곳이거나 Static 메서드에 HttpRequest를 받았을 때 문제가 생긴다. HttpRequest Logging AOP 분리 현재 @SwapLog는 ..
TIL
그냥 두서없이 메모하면서 쓴 글이라, 읽기 힘드실 겁니다... @Around("@annotation(piglin.swapswap.global.annotation.SwapLog)") public Object swapLog(ProceedingJoinPoint joinPoint) throws Throwable { HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); log.info("start transaction"); log.info("\nMethod - {} | Method Argument - {}\nIP - {} | Browser - {}\n▼ ▼ ▼ ..
TIL
가장 큰 이유 레포지토리를 그냥 쓴다는 것은 JPA를 쓰는 것 JPA의 추상화 수준만 가져간다 → DB딴을 직접 연결한다는 것 개발 난이도 낮아지고 편함 → 비즈니스 룰을 가져갈 수 없음 A - B 의존을 별로 안 함 B - C 를 의존 소규모에서는 레포지토리 딴 넣는게 편할 것이다. 대규모 일때 문제가 됨 상품 → 결제 도메인이 있다면 상품이 결제 완료로 바꾸고 싶어했을 때 상품 도메인에서 바로 결제완료 시켜버린다면 결제 도메인에서 작성 한 비즈니스 코드를 활용하지 않는게 되어버림. 내가 모든 도메인의 비즈니스 로직을 파악하고 있어서 이런 고민이 생겼던 것 모든 아키텍처는 신입을 기준으로 → 신입이 처음 개발할 때 우리 회자 비즈니스 로직을 무시하고 레포지토리에 바로 접근하려고 하면? 😡 요령을 피우면..
wonow_
'분류 전체보기' 카테고리의 글 목록 (10 Page)