전체 글
-
[웹개발] 이미지 업로드 후 새로고침해야만 적용되는 현상 해결하기개발기록 2023. 1. 13. 18:00
개요 뷰에서 컴퍼넌트를 사용해서 이미지파일을 수정하고 돌아왔을 때 이미지가 바로 적용되지 않는 문제에 마주쳤다. db에서 url을 임의로 변경하고 파일서버에 디렉토리가 없을 때 수정하여 테스트했을 때, 파일서버에 디렉토리가 정상적으로 만들어지고 화면에서도 제대로 출력되는 것을 확인했다. 이 상황을 미루어봤을 때, 코드의 문제는 아닌 것 같았다. 브라우저 쪽을 찾아보고 공부해보니, 브라우저가 최초로 화면을 랜더링한다. 이미지 src의 경우 최초에 받아온 값과 다르지 않으면 캐시에 있는 값을 가져다 쓴다. 로 정리할 수 있었다(해당 내용이 정확한 지는 차후에 레퍼런스를 더 찾아보고 출처로 남기겠다.). 해결책 따라서 해결방법으로, 컴퍼넌트에서 수정 후 리스트 페이지로 돌아왔을 때, 새로고침을 한다. 파일서버..
-
[웹개발] Client - Server 간 pw 구간 암호화하기(SHA-256 + SALT)개발기록 2023. 1. 2. 21:47
개요 패스워드의 경우 관리자든 누구든 사용자 본인을 제외하고는 모르게 하는 게 맞다. 따라서 서버에서도 복호화되어서는 안 되기때문에 단방향 암호화를 할 때 쓰는 SHA-256 알고리즘을 사용하여 해싱한다. 로그인할 때, 클라이언트에서 해싱한 pw 값을 서버에게 넘겨주면 서버는 단순히 DB에 있는 값과 비교만 하는 역할을 수행한다. SHA-256 해시 알고리즘 종류 중 하나로 암호화된 문자열을 다시 평문으로 복호화 할 수 없다는 특징이 있다. 또한 같은 문자열을 넣으면 같은 해시 값으로 암호화해준다. 문제는 이 알고리즘이 대중에게 공개되어있기 때문에 해커들이 미리 문자열들을 해싱해두고 비교해볼 수도 있다. - 이와 관련된 개념으로 레인보우 테이블(rainbow table)이 있다. 레인보우 테이블 개념 참..
-
[Regex] 정규식 / 정규표현식 (Regular Expression, Regex)개발기록 2022. 12. 23. 17:19
개요 정규식을 사용하기 위해서는 패턴, 기호, 플래그, 메서드를 알아야한다. 정규식 docs 사이트 링크: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions 정규식 테스트 사이트 링크: https://regexr.com/ 참고: https://curryyou.tistory.com/234, http://www.codejs.co.kr/정규식-regular-expression/, http://regexp.elex.pe.kr/regular-expression 정규식 사용을 위해 알아야하는 부분 1. 패턴 패턴 의미 a-zA-Z 영어알파벳(-으로 범위 지정), 보통 []와 같이 사용 ㄱ-ㅎ가-힣 한글 문자(-으로 범위..
-
[git] 원격저장소(Remote Repository)에 이미 push한 commit 삭제하기git 2022. 12. 22. 09:19
원격저장소(Remote Repository)에 이미 push한 commit 삭제하는 방법 cf) 참고 및 출처: https://gahyun-web-diary.tistory.com/188 1. git reset "커밋ID" - 이때 커밋ID는 남기고 싶은 마지막 커밋에 대한 ID이다. git reset "커밋ID" 2. git commit -m "커밋message" git commit -m "커밋message" 3. git push origin main(또는 브랜치명) -f - 강제 푸시 - ex) git push origin develop -f git push origin main(또는 브랜치명) -f 을 하게 되면 원하는 커밋으로 돌아가진다. 이후에 작업하고 push하게 되면 그 사이 커밋들은 날라간다..
-
[Spring Boot] boolean값이 0 또는 false만 return할 때 해결 방법개발기록 2022. 11. 2. 09:31
개요 api를 호출해서 데이터를 받아쓰는데 boolean값이 0 또는 false로만 받아와졌다. 이 문제 해결 방법을 기록하고자 한다. 문제 코드 & 해결 방법 다른 문제가 아니라 lombok 라이브러리를 쓸 때, boolean타입의 필드명을 is~~로 작성한 것이 문제가 되었다. getter / setter를 사용할 때 boolean 타입 필드명에 "is"를 쓰지 않는 것이 jackson의 java bean 네이밍 규칙이라고 한다. 필드명 앞에 is를 빼주니 해결되었다. 참고: https://kimfish.co.kr/317 package com.??.domain; import lombok.Getter; @Getter public class Test { // private boolean isTest; /..
-
[Spring Boot] Real Remote(Client) IP Address 얻기개발기록 2022. 10. 11. 16:11
개요 유저의 IP 주소를 얻기위해 구글링 해보면 대부분 아래와 같은 코드를 볼 수 있을 것이다. 이를 봤을 때 if문이 계속 반복된다는 점이 거슬렸고 리팩토링해서 내 코드에 적용해야겠다고 생각했다. 참고: https://jul-liet.tistory.com/202 구글링 시 흔히 보이는 코드 프록시 서버 또는 로드 밸런서 등을 통과하면서 원 IP 주소를 식별하는 Header가 달라질 수 있다. X-Forwarded-For가 표준 Header로 쓰이고 있지만, 이 외에도 앞서 말한 이유로 인해 Header가 다를 수도 있으니 대표적인 Header들에 몇몇에 대해서 request를 체크할 필요가 있다. 아래 코드들에 보이는 "X-Forwarded-For", "Proxy-Client-IP", "WL-Proxy..
-
[Spring Boot] request, response 로그 남기기1 - Console: 트러블슈팅개발기록 2022. 10. 11. 14:41
문제 발생 api 중 파라미터를 필요로 하는 api에서 로깅을 할 경우 파라미터가 사라지는 이슈가 발생했다. 알고보니 httpServeltRequest를 읽는 것(getInputStream)은 일회성만 가능하다고 한다. 참고: https://leeyongjin.tistory.com/entry/request-response-logging cf) 이전 포스트: https://jeongwoo.tistory.com/38 이전 포스트에서는 파라미터가 필요없는 api에 대해 request에 파라미터를 추가해서 날리고 테스트 했기 때문에 상관이 없었다. 하지만 실무에서 해당 이슈때문에 급하게 미봉책으로 수정한 코드를 기록으로 남긴다. + 다음에 시간이 되면 참고한 블로그를 따라해보든 해서 온전한 해결책을 찾아봐야겠다..
-
[자료구조] 5. 해시(Hash) - HashMapCS/자료구조 2022. 10. 3. 22:33
해시 특징 1. 해시 테이블(Hash Table) Key(키)와 Value(데이터)가 매핑되는 데이터 구조이다. Key(with 해시함수)를 통해 바로 데이터가 저장되어 있는 주소를 알 수 있다. 따라서 배열 또는 연결 리스트(Linked List)와 비교했을 때, 저장 및 탐색 속도가 획기적으로 빨라진다. ※ cf) 연결 리스트(Linked List)는 head부터 찾아나가야한다. 미리 해시 함수가 생성할 수 있는 주소에 대한 공간(Slot)을 할당한 후 Key에 따른 데이터 저장 및 탐색을 지원한다. Slot(슬롯): 해시 테이블에서 한 개의 데이터를 저장할 수 있는 공간을 뜻한다. 이미지 출처: https://www.javatpoint.com/hash-table 2. 해시 함수(Hash Functi..