branch 란? 모든 버전 관리 시스템은 브랜치를 지원한다. 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다. 위는 git-book에서 설명해 놓은 branch에 대한 설명이다. git의 branch는 다른 VCS들과의 몇 가지 차이 점을 가진다. 매우 가볍다 나중에 merge하도록 권장 "나중에 merge" 가 다른 VCS와 가장 큰 차이라 생각하면된다. 거기다 branch에서 작업하고 main branch에 반영할 때, pull request라는 메인 작업자의 허락이 떨어져야 main branch에 반영이 되는 기능도 제공한다. 이 외에도 여러가지 ..
앞서 git을 정리하면서 git ignore와 git reset을 그냥 넘어갔다. 짚고 넘어갈 내용이 많아서 챕터를 빼서 정리해보려고한다. 파일 무시하기(gitignore) Git Working Directory 아래에서 작업을 하다보면 의도하지 않은 파일이 생성되어 Untraked 상태로 나타나게 된다. 보통 로그 파일이나 빌드 시스템이 자동으로 생성한 파일이 그렇다. 이러한 경우 .gitignore 파일을 이용해 해당 파일을 자동으로 무시하도록 설정할 수 있다. .gitignore 파일의 경우 다음과 같은 규칙을 따른다. ## '#'로 시작하는 라인은 무시한다. ## 애스터리스크(*)는 문자가 하나도 없거나 하나 이상을 의미 ## [abc]는 중괄호 안에 있는 문자 중 하나를 의미 ## 물음표(?)는..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/120911 2. 풀이 솔직히 어려운 문제는 아닌데 최종 return을 위해 String으로 만드는 방법들이 재밌어서 정리해봤다. 나도 나름 괜찮게 짰다 생각하는데 다른사람 답중에 꽤나 인상깊은게 있어서 추가했다. 3. 코드 내 답안 import java.util.stream.Collectors; import java.util.*; class Solution { public String solution(String my_string) { String[] arr = my_string.toLowerCase().split(""); return Arrays.stream(arr).sorted().co..
정확히는 AWS EC2에서 뿐만아니라 Tomcat을 베이스 이미지로 생성한 Docker 컨테이너에 war 파일을 배포할 때 발생하는 문제이다. 배포는 에러없이 진행된다. 그러나 서버로 요청을 날리면 404가 발생한다. localhost_access_log에는 요청이 제대로 들어오는 것이 확인 됐고, contextpath도 정상적으로 지정했는데도 말이다. 해결방안 프로젝트 파일을 jar로 묶어서 배포하면된다. 문제가 저것 뿐이고, 해결방안이 저것 뿐이면 따로 포스팅하진 않았을 것 같다. 왜 404가 나는지 문제를 알아보면, war파일로 배포를 진행하게 되면 별도의 web.xml이 생성되지 않는다. 그래서 web.xml이 하는 대표적인 역할인 URL 경로와 해당 경로의 요청을 처리하는 서블릿 사이의 매핑을 ..
DB에서 값을 꺼내왔을 때나, API 로 주고 받았을 때 JSON 형태의 데이터를 String 타입으로 저장하는 경우가 있다. 이 데이터를 화면에 바로 뿌려주면 {"key":"value"} 위와 같이 한 줄 텍스트로 출력이 된다. 화면단에서 파싱해서 써도 되지만 Java 단에서 JsonPretty를 적용할 수 있다. Jackson 패키지의 ObjectMapper의 writerWithDefaultPrettyPrinter 매서드 쓰면 된다. 아래의 테스트코드를 실행시켜보자 String singleLineJson = "{\"key\":\"value\"}"; ObjectMapper objectMapper = new ObjectMapper(); try { Object json = objectMapper.readV..
정확히는 리눅스에서 프로세스를 실행하는 과정에서 발생하는 문제다. 만약 AWS EC2에서 서버 배포 시, 포어그라운드(foreground)에서 Spring boot로 구현한 jar를 실행시켜버리면 해당 서버에서 아무것도 할 수 없게 된다. 그리고, 로그인된 서버 세션이 끊어지게되면, 해당 프로세스도 종료되게 된다. 이런 문제를 해결하기 위해서 리눅스에서는 백그라운드에서 프로세스를 실행시킬 수 있게 해놨다. 1. 프로세스 백그라운드 실행 명령어 nohup 명령어를 쓰면 된다. nohup 명령어는 접속된 서버의 세션이 끊어져도 그 프로세스가 계속 유지되도록 하는 명령어인데, 여기서 프로세스가 백그라운드에서 게속 떠있게끔하는 설정이 있다. nohup java -jar demo-0.0.1-SNAPSHOT.war..
12월 초에 chatGPT를 처음 안 이후 꾸준히 써왔는데, 최근 갑자기 주목받으면서 특정 시간대 사람들이 몰려서 접속하기도 힘들고 자주 연결이 끊어지기 시작했다. 편하게 쓰고 싶은 마음에, 무슨 방법이 없을까 하다가 OpenAI에서 제공하는 API를 찾게 되었고, 바로 사용해봤다. 이런 저런 문제가 있어 오래걸렸지만, 결과도 괜찮게 나오고, EC2에 배포했는데도 생각보다는 응답이 빨랐다. 처음 설계는 AWS EC2 + Docker로 배포하려고 했지만, 어떤 이유에서인지 Docker에 코드를 올린 후, Tomcat에서 배포가 안됐다. 그래서 일단 AWS EC2만으로 배포해 사용해봤다. 제목에는 ChatGPT API라 작성했지만, 정확히는 OpenAI에서 제공하는 통합 API다. 때문에 학습 관련 API도..
Chapter 2 - 동작 파라미터화 코드 전달하기 Chapter 1에 비해 간결하게 정리해 보려고 한다. 전에는 읽으면서 정리했지만 이번엔 다 읽고 정리.(정리하는 기준이 챕터랑 다를 수 있다.) 변화하는 요구사항에 대응하기 어플리케이션에서 자주 바뀌는 소비자 요구사항은 피할 수 없는 문제다. 어떻게 대응할 것인가? 유지보수 관점 + 엔지니어링 비용이 최소화되는 코드를 작성해야한다. 동작 파라미터 구현으로 위 문제를 해결 할 수 있다. 동작 파라미터란? 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다. 동작 파라미터에 조건에 맞는 동작을 구현함으로써, 요구사항에 유연하게 대응할 수 있게 됐다. 다만, 불필요한 코드가 늘어나기 때문에 람다 표현식으로 변환할 필요가 있다. 고전적 방식(Ja..
- Total
- Today
- Yesterday
- Elastic cloud
- GIT
- OpenFeign
- 인프런
- Log
- elasticsearch
- AOP
- ChatGPT
- docker
- serverless
- Kotlin
- AWS
- chat GPT
- openAI API
- java
- S3
- Spring
- lambda
- JWT
- EKS
- 코딩테스트
- springboot
- awskrug
- cache
- OpenAI
- AWS EC2
- MySQL
- 람다
- terraform
- 스프링부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |