![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/k6iTl/btrXDz4QbVf/xvnOtLSkVIqumGkwT6nTTk/img.png)
Chapter 2 - 동작 파라미터화 코드 전달하기 Chapter 1에 비해 간결하게 정리해 보려고 한다. 전에는 읽으면서 정리했지만 이번엔 다 읽고 정리.(정리하는 기준이 챕터랑 다를 수 있다.) 변화하는 요구사항에 대응하기 어플리케이션에서 자주 바뀌는 소비자 요구사항은 피할 수 없는 문제다. 어떻게 대응할 것인가? 유지보수 관점 + 엔지니어링 비용이 최소화되는 코드를 작성해야한다. 동작 파라미터 구현으로 위 문제를 해결 할 수 있다. 동작 파라미터란? 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다. 동작 파라미터에 조건에 맞는 동작을 구현함으로써, 요구사항에 유연하게 대응할 수 있게 됐다. 다만, 불필요한 코드가 늘어나기 때문에 람다 표현식으로 변환할 필요가 있다. 고전적 방식(Ja..
Chapter 1 - 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가 1.1 역사의 흐름은 무엇인가? 자바 역사를 통틀어 가장 큰 변화가 자바 8에서 일어났다. 고전적 정렬 방식 Collections.sort(inventory, new Comprator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } }); 자바 8에서의 간단한 구현 방식 inventory.sort(comparing(Apple::getWeight)); 조금 더 자연어에 가깝게 코드 구현이 가능하다. 멀티코어 CPU 대중화와 같은 하드웨어적인 변화도 자바 8에 영향을 줬다. 자바 8 등장 이전에는 나머지 코..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/buzDc9/btrXn8gceHS/qJQoCXlKVXtm53NY7bKr80/img.png)
이번 장에서는 저장소를 만들고 설정하는 방법, 파일을 추적하거나(Track) 추적을 그만두는 방법, 변경 내용을 Stage 하고 커밋하는 방법을 알게 된다. 파일이나 파일 패턴을 무시하도록 Git을 설정하는 방법, 실수를 쉽고 빠르게 만회하는 방법, 프로젝트 히스토리를 조회하고 커밋을 비교하는 방법, 리모트 저장소에 Push 하고 Pull 하는 방법을 살펴본다. Git command 정리 1. 저장소 만들기 git init 기존 디렉토리를 Git 저장소로 만들기 디렉토리 내에 .git 이라는 하위 디렉토리 생성된다. git init git clone 기존 저장소 clone 하기. 다른 프로젝트에 참여하려거나(Contribute) Git 저장소를 복사하고 싶을 때 사용 Subversion에서 "checko..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/be7Q6U/btrXnIWjv9q/DClKJv0OezCRYDJaxets31/img.png)
전부터 정리하고 싶었던, git에 대한 정리 글이다. 먼저 git에 정리해보고, 명령어, 내가 궁금했던 몇 가지에 대해 추가적으로 정리해보려고 한다. 본 포스팅은 https://git-scm.com/book 을 나름대로 요약 정리한 내용이다. 내용이 많아 Git Branch까지만 정리할 예정이다. Git이란? 일반적으로 사용되는 오픈 소스 분산 버전 제어 시스템(Distributed Version Control System)이다. 코드의 변경 사항을 추적하고, 변경 사항을 병합하는 기능을 제공하여 여러 사람이 프로젝트에서 공동 작업을 수행할 수 있도록 했다. 1. 버전 관리 시스템(Version Control System) 버전 관리 시스템(Version Control System 이하 VCS)은 파일의..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/vP3fW/btrXoDzEi1Q/QYeAGXL9arjtRuN9maSmd1/img.png)
앱이나 웹에서 화면을 그리기 위해서 단 하나만의 API 요청만을 통해 그려지는 경우도 있지만, 한 페이지에 여러가지 정보를 뿌려주기 위해서 여러 API를 함께 요청하는 경우도 있다. 이럴 경우 한 화면을 불러오는 테스트하기 위해서 Request를 만들고 Repsonse에서 값을 얻어서 다시 Request에 복붙하고 Response를 다시 얻고... 하는 불편한 작업을 반복해서 최종 결과를 확인해야 한다. 예를 들어 내가 담당하는 서비스에서 습관 하나를 추가하기 위해서는 아래와 같은 작업 작업 순서가 필요하다. 1. 습관 카테고리 조회 (습관 카테고리 index를 얻음) 2. 습관 추가 (습관 카테고리 index를 사용) 3. 습관 조회 (습관 index를 얻음) 4. 습관 단건 조회 (습관 index로 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/neeED/btrXbtjWnuL/rK7n25rFtFD8LtcCkQRXaK/img.png)
앞서 언급한 적이 있지만, 내가 담당하고 있는 서비스는 CI/CD가 없다. 하지만, 관리해야할 서버군은 요청을 앞단에서 받아줄 Apache Httpd 서버 6개, WAS가 있는 API 서버 6개, 실시간 위치정보를 다루는 WAS 3개, 배치서버 4개다. 한번 배포하는데만 시간 단위로 걸리고, 배포용 WAR파일을 수동으로 올리는데만도 몇 분씩 걸린다... 자사 서비스가 아니다보니 요청하기 어려 운점은 이해하겠지만 솔직히 말이 안된다고 생각한다. 심지어 TC도 따로 없고 데일리 빌드도 하지않으며, 프로젝트에 참여한 개발자가 개별 commit을 하고, pull request로 관리하지 않는다. 불만만 토로하게 되었는데 이러한 사항들 때문에, 다른 서비스는 어떻게 배포 과정을 갖는지 공부하게되는 계기가 됐고, ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/sKl9Y/btrW57vRptu/MLKUhg1hc45XXzJHCTEzw1/img.png)
회사에서 어드민 서버를 신규 인프라로 이전하게 됐다. 베이스에서부터 작업하다보니 이전하면서 서버의 구조에 대해 볼 일이 생겼다. 우리 회사에서 사용하는 어드민의 서버 구조는 웹서버와 WAS를 연동시킨 구조였다. 대충 위와 같은 구조이고, 앞라인에 L4 로드밸런서를 둬서 로드밸런싱을 하고 있다. L4 부분까진 정확히 알 수 없으니, Httpd 웹서버와 Tomcat을 연동하면서 기억하고 싶었던 내용을 정리하려고한다. 그리고 위 내용을 정리하기 전에 웹서버와 WAS의 내용을 정리하지 않고 지나갈 수가 없었다.. 1. 웹서버(Web Server) 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램 - 위키백과 위키백과의 정의와 같이 웹서버는..
List를 중복을 허용하지 않는 자료구조인 Set으로 변환해서 중복을 제거한다. Set distinctSet = pairingParents.stream().collect(Collectors.toCollection(() -> new TreeSet(Comparator.comparing(객체명::getter)))); Comparing에 대한 개념이 부족해서 여기에 관련된 내용은 조금 더 알아봐야겠다. sort의 predicate으로 많이 사용하는 것 정도로만 안다. Comparing은 함수형 인터페이스로 위 파라미터로는 객체 내의 getter로 가져온 값들을 비교해서 정렬해준다. List형태가 Set으로 변환되는데 나는 딱히 순서 필요없이 그대로 써도 되서 그냥 썼다. List로 변환하고 싶다면 다시한번 스트..
- Total
- Today
- Yesterday
- terraform
- OpenFeign
- GIT
- openAI API
- 람다
- Kotlin
- AWS EC2
- Spring
- ChatGPT
- 티스토리챌린지
- serverless
- Elastic cloud
- CloudFront
- springboot
- AWS
- docker
- AOP
- elasticsearch
- 스프링부트
- JWT
- 후쿠오카
- S3
- EKS
- lambda
- Log
- cache
- MySQL
- OpenAI
- java
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |