분류 전체보기
bash script 작성 interpreter 정의 #!/bin/bash #!는 두바이트의 매직 넘버, 실행 가능한 쉘 스크립트라는 것을 나타냄. #!뒤에 오는 것은 경로명. 명령어들을 해석할 프로그램의 위치. command line param $번호 식으로 받음 $# = 파라미터 개수 ./my.sh param1 -> $# == 1 $1 = 첫번째 파라미터 ./my.sh param1 -> $1 == param1 기본 명령어 if if [{condition}]; then ## if true command else ## if flase fi switch case {variable} in case1) ## if case1 command ;; case2) ## if case2 command ;; - ) ## ..
Spring의 RequestMapping에는 path에 wildcard를 사용할 수 있다. doc 하지만 path variable을 선언하여 쓸때에는 wildcard를 사용할 수 없는데 아래와 같은 방법으로 하면 wildcard로 선언된 path에 대해서 controller method에서 variable로 얻을 수 있다. @RequestMapping(value = "/api/{*path}") public Mono wildcardPathVariable(@PathVariable("path") String path) { return Mono.just(path); } 호출 결과 GaryJ-Macbook-Pro ❯ curl http://localhost:8080/api/test/path/variable /tes..
최근 Intellij를 사용하면서 find action 단축키를 누르면 mac의 이상한 터미널 창이 뜬다. 이렇게 뜨는 이유는 mac이 업데이트 되면서 Man 페이지를 보는 기능의 단축키가 CMD+SHIFT+A로 변경되어서 Intellij 단축키와 충돌이 나서 이다. 시스템 환경설정 > 키보드 로 가서 단축키를 disable하면 해결이 가능합니다. 더이상 CMD+SHIFT+A를 눌렀을때 터미널이 뜨지 않는다. 개꿀
최근 Intellij를 사용하면서 find action 단축키를 누르면 mac의 이상한 터미널 창이 뜬다. 이렇게 뜨는 이유는 mac이 업데이트 되면서 Man 페이지를 보는 기능의 단축키가 CMD+SHIFT+A로 변경되어서 Intellij 단축키와 충돌이 나서 이다. 시스템 환경설정 > 키보드 로 가서 단축키를 disable하면 해결이 가능합니다. 더이상 CMD+SHIFT+A를 눌렀을때 터미널이 뜨지 않는다. 개꿀
1장에서 알아본 Application을 여러가지 환경에 배포하기 위한 Profile설정에 대해서 정리에 이어서 Profile을 활용한 실행 환경제어에 대해서 정리한다. 1장: Profile의 활용 - Gradle, Maven Build Profile과 Spring Profile 1장 마지막에 언급한 것처럼 각각의 Region에서 Api 호출에 대한 권한 데이터 확인을 서로 다른 방식을 사용한다 요구사항을 Profile로 해결해 보자. 갑자기 왜 필요했나? 먼저 이와 같은 요구사항이 생겨난 것은 Containerize하여 배포하기 위해 준비하면서 이다. 기존 서버에 구동시키는 Application과는 달리 Container는 외부 연동 시스템과 다같이 묶어서 배포하지 않는 이상 외부 종속성 문제가 발생할 ..
개발을 위한 터미널 도구 ⭐️: 그냥 개인적인 중요도 평가 zsh (Macbook catalina 기본 shell) default 설치 됨 homebrew ⭐️⭐️⭐️⭐️⭐️ mac os용 설치되는 패키지 매니저 웹사이트: https://brew.sh/index_ko.html iterm2 ⭐️⭐️⭐️⭐️⭐️ 맥북 기본 Terminal 대체용. Multi Terminal, Search 등등 여러가지 유용한 기능들을 포함하고 있음. 웹사이트: https://iterm2.com/ 추가 컬러 패키지 (현재 사용중) ayu-mirage: https://github.com/hwyncho/ayu-iTerm 아래 처럼 wget등으로 raw파일을 다운로드 받아서 ITerms2 > Preperence > Profiles ..
개발을 위한 터미널 도구 ⭐️: 그냥 개인적인 중요도 평가 zsh (Macbook catalina 기본 shell) default 설치 됨 homebrew ⭐️⭐️⭐️⭐️⭐️ mac os용 설치되는 패키지 매니저 웹사이트: https://brew.sh/index_ko.html iterm2 ⭐️⭐️⭐️⭐️⭐️ 맥북 기본 Terminal 대체용. Multi Terminal, Search 등등 여러가지 유용한 기능들을 포함하고 있음. 웹사이트: https://iterm2.com/ 추가 컬러 패키지 (현재 사용중) ayu-mirage: https://github.com/hwyncho/ayu-iTerm 아래 처럼 wget등으로 raw파일을 다운로드 받아서 ITerms2 > Preperence > Profiles ..
오늘은 Application을 여러가지 환경에 배포하기 위한 Profile설정에 대해서 정리한다. 먼저 여러 가지 환경이라는 것은 하나의 Application을 한국에 배포할 때, 일본에 배포할 때, Containerize하여 배포할 때 등등의 환경을 말한다 (간단하게 Region이라고 칭함). 각각의 Region에서는 서로 다른 외부|내부 의존성을 가질 수 있으며 그러기 위해서는 Region별로 Profile 분리 하여 빌드, 실행 할때 알맞는 의존성을 가지도록 설정해야 한다. 예시) 각각의 Region에서 서로 다른 Database를 사용함. 각각의 Region에서 Api 호출에 대한 권한 데이터 확인을 서로 다른 방식을 사용한다.(File base, DB base, Memory base 등등) Pr..
이번에 인증서 만료 기간이 다 되어서 인증서를 업데이트 하던 도중 했던 작업들을 기록한다. 나에게는 새로운 domain인증서 파일과 더불어 root ca의 chain인증서가 존재한다. 추가적으로 private key파일에 대해서는 pass phrase가 걸려있다. 이슈 1. Docker Registry같은 컨테이너에서는 인증서 파일과 private key파일 두개만을 입력받아서 HTTPS를 지원하도록 셋팅되어 있다. 해결 1. root ca chain인증서와 domain인증서를 합친다. 그냥 간단하게 cat으로 두개의 파일을 merge한다. 파일 순서는 domain -> root ca chain 순서이다. cat domain.crt > my.crt cat root_ca.crt >> my.crt 주의 : ..
3. Spring BootSpring을 좀더 쉽게 사용하기 위한 도구 3.1 특징1. Tomcat, jetty 같은 웹서버가 내장되어 있어 stand-alone으로 작성, 빌드, 실행 가능.2. 메이븐의 pom.xml에 관리하는 라이브러리의 버전을 지정할 필요 없이 스프링 부트가 적절한 버전을 알아서 관리함.3. XML 파일로 설정하는 spring에 비해 java 파일로 설정을 관리 할 수 있음. 3.2 셋팅법.http://projects.spring.io/spring-boot/
2. Spring Web Framework2.1 전체 구조 2.2 Request 처리 흐름. (0. Filter 가 정의 되어 있다면 Filter를 먼저 통과함)1. Request -> DispatcherServlet : Request가 처음 들어옴2. DispatcherServlet -> Handler Mapping : DispatcherServlet이 Request를 분석하고 Mapping 중에서 Request와 동일한 Mapping을 찾음3. Handler Mapping -> DispatcherServlet : Handler Mapping에서 찾은 Controller를 DispatcherServlet에 전달.(4.0 interceptor가 정의 되어 있다면 interceptor를 통과함)4. Dis..
2. Spring Web Framework2.1 전체 구조 2.2 Request 처리 흐름. (0. Filter 가 정의 되어 있다면 Filter를 먼저 통과함)1. Request -> DispatcherServlet : Request가 처음 들어옴2. DispatcherServlet -> Handler Mapping : DispatcherServlet이 Request를 분석하고 Mapping 중에서 Request와 동일한 Mapping을 찾음3. Handler Mapping -> DispatcherServlet : Handler Mapping에서 찾은 Controller를 DispatcherServlet에 전달.(4.0 interceptor가 정의 되어 있다면 interceptor를 통과함)4. Dis..