1) 로깅이란? 로깅(Logging)이란? 정보를 제공하는 일련의 기록인 로그(log)를 생성하도록 시스템을 작성하는 활동 프린트 줄 넣기(printlining)는 간단한, 보통은 일시적인, 로그를 생성하기만 한다. 시스템 설계자들은 시스템의 복잡성 때문에 로그를 이해하고 사용해야 한다. 로그가 제공하는 정보의 양은, 이상적으로는 프로그램이 실행되는 중에도, 설정 가능해야 한다. 일반적으로 로그 기록의 이점 - 로그는 재현하기 힘든 버그(예: 개발이 완료된 환경에서는 발생하지만 테스트 환경에서는 재현할 수 없는 버그)에 대한 유용한 정보를 제공할 수 있다. - 로그는 성능에 관한 통계와 정보(예: 구문들 사이에 걸리는 시간)를 제공할 수 있다. - 설정이 가능할 때, 로그는 예기치 못한 특정 문제들을 디..
2) file upload의 확장자 검사 및 썸네일 노출 이미지 파일 확장자 유효성 검사 파일에 제한을 둬서 서버에서 쉽게 처리할 수 있도록 또는 어떤 UX 적인 이유로 사용자에게 이런 이미지만 보여줘야 하는 경우 파일의 확장자를 제한할 수 있습니다. file의 확장자 검사는 HTML input 태그의 accept 속성으로 쉽게 필터링할 수 있습니다. 이렇게 하면, file선택 창에서 지정한 확장자 파일만 선택할 수 있도록 자동으로 브라우저가 돕습니다. 그런데, accept 속성의 브라우저 지원상황이 깔끔한 상태가 아니므로, 아래에서 더 많은 브라우저에서 동작하는 코드에 대해 알아보겠습니다. file을 업로드 하면, change 이벤트를 통해서 input type의 변화를 감지할 수 있습니다. 그리고 c..
1) file upload방법의 이해 file upload form태그의 데이터를 보낼 때, file도 input 방식으로 업로드가 가능합니다. file type에도 name으로 이름을 지정해야 서버에서 이를 인식해서 데이터를 얻을 것입니다. 이전처럼 문자열 기반의 데이터를 보내는 것과는 다르게 file은 바이너리 형태의 데이터를 보냅니다. 아래는 input type이 file인 경우 예제입니다. 클라이언트 입장에서는 file을 올린다고 해서 크게 다르진 않습니다. input의 type을 file로 설정하고 name설정을 해서 클라이언트/서버 간의 보낼 데이터의 이름을 지어주면 됩니다. 그리고 서버는 해당 name을 기준으로 클라이언트가 보낸 데이터들을 구분해서 처리합니다. id는 클라이언트에서만 처리하..
2) 아규먼트 리졸버를 이용해 HTTP Header정보를 Map객체에 담아서 Controller에게 전달하기 참고로 Map이나 Map을 상속받고 있는 객체는 스프링에서 내부적으로 사용하고 있는 아규먼트 리졸버가 선처리하고 있기 때문에 직접 사용할 수 없다고 그랬습니다. 그래서 Map객체를 전달하려면 Map을 필드로 가지고 있는 별도의 객체를 선언한 후 사용해야 합니다. 그렇기 때문에 Map을 필드로 가지고 있는 HeaderInfo라는 클래스를 작성하겠습니다. 그 전에 해당 클래스랑 아규먼트 리졸버를 모아둔 패키지를 생성하겠습니다. argumentresolver 라는 이름의 패키지를 생성합니다. 그리고 해당 패키지에 헤더의 정보를 담을 HeaderInfo.java 클래스를 생성합니다. 이러한 HeaderI..