본문 바로가기

프로그래밍

(91)
리눅스 프로세스별 CPU, 메모리 사용량 확인 및 정렬 top 명령어 $ top 엔터를 치면 CPU와 메모리 사용량이 나온다. 정렬 단축키 Shift + P: CPU 사용량 내림차순 정렬 Shift + M: Memory 사용량 내림차순 정렬
사용자 실수 어디까지 막아야 할까? 오래된 시스템 하나를 유지만 하고 있다. 오늘 로그인이 안 된다는 문의를 받았다. 그냥 안된다고 한다. 우선 패스워드 틀린 카운트를 확인해보았다. 이상 없다. 어떻게 안되냐, 증상이 무엇이냐 물으니 관리자 로그인을 하면 '다른 홈페이지'로 이동이 된다고 했다. 그래서 어디로 이동이 되는지 알려달라고 했다. 그리고 로그를 열어보았다. 로그에는 이상한 점이 보이지 않는다. 가입정보를 천천히 보다 보니 뭔가 이상하다. 줄이 안 맞는다. 자세히 보니 아이디 앞에 공백 한 칸이 들어가 있다. 가입할 때 당연히 막았어야 하는 것이다. 하지만 유감스럽게도 그렇지 않은 것 같다. 어쨌든, 그래서 오류가 발생했다. 사용자는 반드시 실수한다. 오타를 입력하거나, 엉뚱한 버튼을 누른다. 그러나 모든 상황을 완..
SSL 인증서 파일 유효기간 확인 명령어 명령어 openssl x509 -in 인증서파일 -noout -dates결과 $ openssl x509 -in cert.pem -noout -dates notBefore=Dec 24 00:00:00 2020 GMT notAfter=Jan 23 23:59:59 2022 GMT
모바일 브라우저에서 앱 실행하기 대작전(Android, iOS) 이 문서의 최종 수정일: 2020.12.24 Merry Christmas 웹개발자의 칼퇴근을 늦추는 원흉 중에 같은 코드 OS/Browser 별 다른 동작이 있다. 예전에는 최악의 브라우저 Internet Explorer 때문에 발생하는 경우가 많았다. IE가 거의 사장된 지금은 예전보다 다변화된 디바이스 환경 때문에 가끔 발생한다. 앱 랜딩 페이지가 하나 있는데, OS와 브라우저 별로 다르게 동작해서 골치였다. 어떤 OS와 브라우저 조합에서는 마음대로 앱을 실행시킬 수 없다. 그래서 앱 실행하기 버튼을 추가해야 했다. OS + Browser 조합별 테스트 결과 Android + Chrome: 페이지 로딩 시 코드로 앱을 실행시킬 수 없으며, 반드시 사용자의 액션(클릭 등)이 있어야 한다. Android..
모바일 크롬 브라우저에서 안드로이드 인텐트(Intent) 링크하기 브라우저에서 특정 페이지에 접속하면 앱을 실행시켜 달라고 하는데, iOS는 잘 되는데 안드로이드가 말썽을 부렸다. 그래서 관련 문서를 몇 개 찾아보았다. 우선 아래 링크는 안드로이드 앱에서 설정해줘야 할 내용이다. 안드로이드 앱 - 인텐트 및 인텐트 필터 설정 다음은 브라우저에서 보여질 화면에서 링크할 URI이다. host, scheme, package 등은 앞서 설정한 내용을 참고한다. Android Intents with Chrome 주의 화면 접속 시 앱을 실행하는 기능이 안되서 확인해보니 두 번째 참고 링크 마지막에 다음과 같은 문구가 있었다. And Chrome doesn’t launch an external app for a given Intent URI in the following case..
ajax 에러 json 메세지 받기 (Spring Security, axios) 처음에는 다음처럼 코드를 작성했는데 프론트에서 메시지가 안 받아졌다. 알고보니 그냥 직접 write 해주니까 됐다. response.sendError(401, JsonUtil.toJson(errorResponseMap)); 순서 FailureHandler를 구현한다. FailureHandler에서 exception 내용을 보고 적절한 응답 메시지를 만든다. response에 ContentType을 json으로 설정하고 직접 write 한다. 예 FailureHandler를 구현한 다음 다음처럼 response에 바로 써주면 된다. response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.setContentType("application/json..
http 응답 헤더에서 아파치 서버 버전 정보 삭제 보안조치 중 흔히 나오는 웹서버 정보 삭제에 대한 요구사항이다. 엉뚱한 곳에 값을 넣었다가 서버가 죽어서 식겁 했지만 다행히 금방 고쳤다. 방법 httpd.conf 파일에 아래 설정을 추가한다. 다른 포스트에 온통 아래 값을 변경하라고 하는데 우리 서버에는 설정이 아예 없어서 당황했다. 다행히 그냥 한 줄 추가하니까 잘 적용됐다. 어쩌고 저쩌고 원래 있는 설정 정보 ... ServerTokens Prod 어쩌고 저쩌고 원래 있는 설정 정보 ... 참! 적용 전에 기존 파일을 백업해두는 것을 절대 잊지 말자. 사람 앞 일은 모른다 ㅜㅜ 기존 설정 파일 백업해두기 cp httpd.conf httpd.conf.origin 결과 확인 현재 curl로 헤더를 요청해보면(-I 옵션) 아래처럼 서버 정보가 나오고 있..
MultipartFile 파일업로드 시 주의사항 - 실제 파일 있는지 검사하기 #spring #MultipartFile #apache-commons-fileupload 늘 하던 것도 의식 없이 하면 아무것도 모른다. 늘 만드는 파일업로드 따위가 그렇다. 파일업로드를 한 번 만들어보다, 첨부가 없는데 자꾸 첨부가 등록되는 현상이 있었다. 원인 프론트에서 formData를 만들어 넘겨서 MultipartFile로 받는데, 선택한 파일이 없어도 MultipartFile이 생겼다. 해결 size 검사를 해줬다. for (MultipartFile mf : multipartFiles) { if (mf.getSize() == 0) continue; // ... }