분류 전체보기
-
[디자인패턴] 템플릿 메소드(template-method) 패턴 & 템플릿 콜백(template-callback) 패턴Computer Basis/디자인패턴 및 설계이론 2022. 5. 22. 03:01
# 템플릿 메소드 패턴 (상속) 어떠한 로직을 서비 클래스가 확장할 수 있도록 템플릿으로 제공하는 방법 상위클래스(추상클래스)는 템플릿을 제공하고, 하위클래스는 구체적인 로직을 제공한다. 하위클래스에서 제공하는 로직이 상위클래스에서 그대로 호출이 되기 때문에 일종의 IoC(Inversion of Control) 라고 볼 수 있다. # 언제써야해? 코드가 몇줄만 다르고 거의 모든 부분이 동일할 때 실행순서를 보장하고 싶을 때 # 코드 예시 다음과 같은 FileProcessor 가 있다고 하자. > FileProcessor.java public abstract class FileProcessor { private String path; public FileProcessor(String path){this.p..
-
[트러블슈팅] Request Body 가 빈값으로 전달됨 (405 MissingServletRequestParameterException)Back End/트러블슈팅 2022. 5. 21. 22:01
BE 의 컨트롤러는 PUT Method 를 매핑하고 있었고, FE 에서는 PUT 요청으로 보내고 있었는데 405 Method Not Allowed 를 FE 에서 전달받아, 스프링시큐리티 설정 어딘가에서 특정 HTTP Method 를 막아놓은 줄 알고 엄청 삽질을 했습니다... 심지어 BE 에서 확인 할 수 있는 Exception 은 MissingServletRequestParameterException 이었는데 보통 클라이언트가 API 명세와 다른 Request Body 를 보냈을 때 발생 합니다. 하지만... 저는 그게 아니었죠. ㅠ_ㅠ... 값 자체가 전혀 전달이 되지 않았거든요,,, 현상 컨트롤러에 Request Body 가 빈값으로 전달됨 원인 FE 에서 Payload 는 HTML formData..
-
[Spring] Controller 에서 가변 json body 받기Back End/Spring Framework 2022. 5. 21. 21:33
아래와 같이 Map 으로 json body 를 동적으로 받을 수 있다. @RestController public class TestController { @PostMapping(path = "/map") public String mapRequest(@RequestBody HashMap param){ System.out.println("param : " + param); return param.toString(); } } 필자는 Request Payload 에는 Data 가 담겨있는데, 컨트롤러에서 자꾸 파라미터가 없다고 에러를 뱉어서 해당 에러를 수정 후, DTO 정의가 귀찮아서 테스트용으로 잠깐 사용했지만 위 내용을 가져온 레퍼런스에서는 확장가능한 유연한 규칙이 있는 가변 파라미터가 필요할 때 사용한다..
-
[Spring] Content type 'text/plain;charset=UTF-8' not supportedBack End/Spring Framework 2022. 5. 21. 21:25
원인 컨트롤러는 @RequestParam 과 @RequestBody 를 사용하여 json 으로 Request를 받고 있는데 클라이언트는 Ajax 요청 시 Request Header 에 'Content-Type': 'application/json' 을 담지 않아 스프링에서 'text/plain' 에 대한 핸들링 방법이 정의되지 않아 발생한 에러 해결법 클라이언트에서 Request Header 에 'Content-Type': 'application/json' 을 담아준다.
-
[PHP] Mac 에서 PHP Composer 설치 및 커맨드 전역설정하기Back End/etc 2022. 5. 21. 21:14
아래의 커맨드를 입력하면 터미널의 현재경로에 설치된다. # 설치파일 설치 sudo php -r "copy ( 'https://getcomposer.org/installer', 'composer-setup.php');" # 설치파일 실행 php composer-setup.php # 설치파일 삭제 php -r "unlink ( 'composer-setup.php');" 아래의 커맨드를 입력하여 composer 를 global 로 사용할 수 있게 한다. sudo mv composer.phar /usr/local/bin/composer
-
[Apache2] Homebrew Apache2(httpd) 설치 & 가상호스트 설정 & 프로젝트폴더 Apache 서버로 구동시키기Back End/etc 2022. 5. 21. 21:13
이 글은 php 로 구성된 프로젝트를 Apache 서버로 실행하고 가상호스팅을 하는 과정을 담았습니다. Homebrew 로 설치하면 좋은점 Mac 내장 Apache 를 사용하지 않고 Homebrew 로 httpd 를 사용하면 brew services list 등으로 서비스의 상태를 관리하기가 쉽다. 1. 내장 Apache 중지 & Background 자동 로드 제거 MacOS 에서 Deamon 관리하기 sudo apachectl stop sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null 2. Homebrew 로 Apache 설치 brew install httpd 설치경로를 친절히 알려준다. 3...
-
[디자인패턴] 브릿지 패턴 (Bridge Pattern)Computer Basis/디자인패턴 및 설계이론 2022. 5. 8. 09:30
브릿지 패턴(Bridge Pattern)은 Flyweight 패턴, Adapter 패턴, Decorator 패턴처럼 구조 패턴 중 하나로, 두 인터페이스에 계층 구조(Hierarchy)를 가지고 있을 때 인터페이스를 구현(implements)으로부터 분리하고 클라이언트 프로그램으로부터 구현 세부사항을 숨기기 위해 사용되는 패턴이다. 구조 패턴 (Structure Pattern) 구조 패턴이란 작은 클래스들을 상속과 합성을 이용하여 더 큰 클래스를 생성하는 방법을 제공하는 패턴입니다. 이 패턴을 사용하면 서로 독립적으로 개발한 클래스 라이브러리를 마치 하나인 양 사용할 수 있습니다. 또, 여러 인터페이스를 합성(composite)하여 서로 다른 인터페이스들의 통일된 추상을 제공한다. 구조 패턴의 중요한 포..
-
[Linux] 파일 및 폴더 퍼미션(권한) 조작하기 (chmod 755 의 의미)Linux & Mac 2022. 5. 5. 20:02
# drwxr-xr-x 10 heesunyou ..... 의미 파일 type : d=directory, l=link file, -=file 퍼미션정보 : r=read, w=write, x=execute 해당파일의 링크 갯수 # 퍼미션 정보 (rwxr-xr--) 9비트를 3비트씩 끊어서 읽는다. 소유자에 대한 퍼미션, 소유그룹에 대한 퍼미션, 모든사용자에 대한 퍼미션이다. 즉, rwxr-xr-- 은 소유자는 rwx 권한이 있고, 소유그룹은 rx 권한, 모든사용자는 r 권한만 있다는 이야기이다. # chmod 755 chmod 는 리눅스에서 파일권한을 변경하는 커맨드이다. 보통 한번쯤은 chmod 755 또는 777을 입력해보셨을텐데 r=4, w=2, x=1 로 매핑이 된다. 이게 무슨말이냐면, 755 는 ..