[Javascript] 문자열 바이트 크기 구하기
문자열을 BLOB 타입으로 만든 후 그 크기를 구하는 방식으로 문자열의 바이트 크기를 구할 수 있다. 영문자의 경우 한 글자에 1바이트, 한글의 경우 한 글자에 3바이트를 사용한다. const byteSize = str => new Blob([str]).size; console.log(byteSize('hello')); // 5 console.log(byteSize('안녕')); // 6
문자열을 BLOB 타입으로 만든 후 그 크기를 구하는 방식으로 문자열의 바이트 크기를 구할 수 있다. 영문자의 경우 한 글자에 1바이트, 한글의 경우 한 글자에 3바이트를 사용한다. const byteSize = str => new Blob([str]).size; console.log(byteSize('hello')); // 5 console.log(byteSize('안녕')); // 6
0. java.nio.file.Files void delete(Path path) 파일 또는 디렉토리를 삭제하는 메서드. 해당 경로에 파일 또는 디렉토리가 존재하지 않을 경우 NoSuchFileException이 발생한다. 디렉토리의 경우 비어있어야 삭제할 수 있다. 비어있지 않을 경우 DirectoryNotEmptyException이 발생한다. 파일이 열려있거나 다른 프로그램이 사용 중일 경우에도 예외가 발생한다. public void deleteFile(String filename){ Path targetFile = Paths.get("D:\\uploads", filename); Path targetDir = Paths.get("D:\\uploads\\testdir"); try{ Files.delet..
0. fetch의 response fetch()를 사용해 서버와 통신에 성공하면 그에 맞는 응답을 받게 된다. 다만 내가 처리하고자하는 데이터에서는 데이터가 없는 경우 null이 반환되는데 이 때문에 'SyntaxError: Unexpected end of JSON input' 에러가 발생하였다. fetch('/test') .then(res => { if(!res.ok) throw new Error(); return res.json(); }) .then(jsonData => { console.log(jsonData); }) .catch(() => { alert('에러가 발생했습니다.'); }) 만약 응답으로 들어오는 데이터가 null일 경우 text()를 사용해 문자열로 변환할 경우 빈 문자열이 반환된다..
0. AuthenticationSuccessHandler 스프링 시큐리티에서는 authentication-success-hander-ref 를 통해 로그인에 성공했을 경우 작업을 수행할 클래스를 설정할 수 있다. 이 경우 로그인 했을 때 필요한 작업을 수행할 수 있지만 onAuthenticationSuccess()의 파라미터로 받는 HttpServletRequest 또는 HttpServletResponse를 사용해 다음으로 진행할 경로를 지정해주어야 한다. 1. SavedRequestAwareAuthenticationSuccessHandler AuthenticationSuccessHandler를 사용하지 않았을 경우, 스프링 시큐리티에서는 기본적으로 SavedRequestAwareAuthenticatio..
0. RequestContextListener 설정 web.xml에서 RequestContextListener 리스너 클래스를 등록한다. org.springframework.web.context.request.RequestContextListener 1. HttpServletRequest 꺼내기 UserDetailsService의 구현 클래스에서 RequestContextHolder에서 Request 객체를 꺼내어 사용하면 된다. @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { EmployeeVO empVO = new EmployeeVO(); empVO.setEmpId(use..
toISOString()은 Date를 yyyy-mm-ddThh:mm:ss 형식의 문자열로 반환한다. 하지만 toISOString()은 9시간 전 시간을 출력하는데 이는 함수가 사용하는 시간대가 UTC+0이기 때문이다. 한국은 UTC+9이기 때문에 시차가 발생하게 된다. 이를 해결하기 위해서 getTimezoneOffset()을 사용하여 Date의 시간을 맞추어주어야한다. getTimezoneOffset()은 UTC와 LocalZone의 시간차를 계산해준다. 한국의 경우 UTC+9이기 때문에 -540(분 단위)이 반환된다. new Date()의 생성자 파라미터에는 ms 단위로 넘겨주어야하므로 60000을 곱하여 ms 단위로 만들어준 뒤 현재 시간과 계산해 한국 시간을 구하면 된다. let date = ne..
0. Object.entries() entries() 함수는 자바스크립트의 객체를 배열로 변환해준다. 이 배열에는 프로퍼티의 ['key', 'value'] 배열이 프로퍼티의 수만큼 포함되어있다. let data = { name : 'test', age : '27', job : 'programmer' } console.log(Object.entries(data)); // [Array(2), Array(2), Array(2)] // 0: ['name', 'test'] // 1: ['age', '27'] // 2: ['job', 'programmer'] 1. key와 value 사이에 '=' 넣기 Object.entries()로 객체를 배열로 변경했으니 이번에는 key와 value 사이에 '='을 넣어줄 차례..
0. 혼합 데이터 타입 객체 혼합 데이터 타입 객체 (Mixed Data Type Object)는 다양한 데이터 타입이 공존하는 객체를 말한다. let data = { name : 'test', job : 'student', hobby : ['soccer', 'movie', 'videogame'] } 특히 공공데이터 API를 활용하다보면 문자열과 배열이 복잡하게 얽힌 JSON 데이터를 볼 수 있다. 1. GSON 사용하기 Gson을 사용하여 이 복잡한 JSON 데이터를 손쉽게 자바 객체로 변환할 수 있다. 우선 받고자하는 데이터와 비슷한 형태의 클래스를 만든다. 위의 자바스크립트객체를 JSON으로 변환하여 컨트롤러에서 받는 과정을 예시로 들어보자. 위에 작성된 데이터의 경우 2개의 문자열 데이터와 하나의..