본문 바로가기

전체 글

(330)
페이지네이션 구현 시 onClick 함수 호출 오류(24.03.14) 문제 도로명주소 검색 페이지인 search.html에서 도로명 주소 검색결과 리스트의 pagination을 JavaScript를 이용해서 동적으로 구현하고 있고, pagination 요소에 검색결과를 호출하는 함수인 roadAddrApi와 매개변수인 페이지번호,검색어를 OnClick Event로 전달하려고 했으나, 전달되지 않고 다음과 같은 오류가 발생하였음 “Uncaught ReferenceError: 강남대로 is not defined at HTMLAnchorElement.onclick ((index):1:15)” 해결 과정 Chrome의 개발자 도구로 확인했을 때, 검색어 글자는 제대로 들어가는 것을 확인하였습니다 이 오류에 대해 검색해보니 변수가 그대로 들어가는 문제임을 알게 되었습니다. 그래서 ..
복합키 정리 대표 PK를 사용하는 게 유리한 경우 복합키의 정보를 모두 알지 않아도 리소스 관리가 가능할 때(ex : 사용자ID) 데이터를 식별할 수 있는 컬럼의 조합이 유니크하지 않을때(ex. 이름+저자+출판사 로는 동일 명칭의 개정판이 있는 경우 책을 식별할 수 없음) 식별가능한 복합키의 값이 변경 가능할 때 복합키를 구성하는 게 유리한 경우 특정 데이터를 식별하는 게 의미가 없는 경우(ID값을 이용해서 데이터를 조작하지 않는경우) 통계성, 기록성 데이터인 경우 ex) 걸음기록을 저장하는 테이블, 사용자 별 최근 일주일간 평균 걸음 수를 조회 보통 사용자 + 기록일시 기준으로 복합키를 구성한다. 복합키 사용 시 주의 점 복합 키 사용 시 검색 성능이 낮아질 수 있음. 대신 복합 인덱스 사용으로 검색 성능을 높일 ..
Ip 주소 확인 명령 hostname -I Linux나 Unix 시스템에서 사용되는 명령어입니다. 이 명령어는 현재 시스템의 IP 주소를 표시합니다. 여러 네트워크 인터페이스가 있는 경우, 각 인터페이스의 IP 주소가 공백으로 구분되어 표시됩니다.
VPN VPN? VPN이란 Virtual Private Network의 약자로, 가상 사설망이라는 의미입니다. 일반적으로 사설망은 외부에서 접근이 안 되고, 사설망 내부에서만 통신을 할 수 있습니다. 예를 들어, 게임 서버와 데이터베이스는 외부에서 직접 접근하지 못하면서도 서로 통신은 할 수 있어야하기 때문에, 사설망 내부에 함께 두는 것이 적절합니다. 그런데 서버 개발 혹은 운영을 하다보면, 직접 그러한 자원들에 사람이 직접 접근해야할 필요가 종종 생깁니다. 이럴 때 VPN을 사용하게 되면, 외부 네트워크로부터 VPN 서버를 통해 사설망 내부 자원에 접근할 수 있게 됩니다. VPN은 외부 네트워크와 사설 네트워크 망을 잇는 통로이기 때문에, 그만큼 보안이 중요합니다. 허가된 사용자만 접근할 수 있어야하며, 통..
Spring Security CSRF 적용하기(With Thymeleaf) Security Config의 @EnableWebSecurity 어노테이션을 통해 csrf 토큰처리가 자동으로 이루어진다. @Configuration @EnableWebSecurity @EnableMethodSecurity @RequiredArgsConstructor public class SecurityConfig { 현재 view 단을 Thymeleaf v3.0.15를 통해 처리중인데 Thymeleaf 를 사용하는 경우 손쉽게 csrf 처리를 할 수 있다. CSRF 적용 후 Logout 404 error 발생 문제 : csrf공격 처리를 위해 SecurityConfig에 csrf.disable()코드를 지우고 csrf설정을 활성화했더니, 기존의 a태그로 “/logout”경로로 요청을 보내서 처리하는 ..
페이지네이션 js 코드 재사용할 수 있게 만들어본 페이지네이션 코드이다. 부트스트랩을 적용해서 동적으로 페이지네이션을 생성할 때 사용할 수 있다. 1페이지에 5개의 항목을 기준으로 페이지네이션을 진행하고 있다. 서버에서 int totalCount, List list 를 응답값으로 전달한다. 응답값을 js파일에서 그려주면서 아래의 createPagination()을 실행해주면 된다. /** * 페이지네이션을 그려주는 함수 * @param totalCount 총 결과수 * @param currentPage 현재 페이지 * @param keyword 검색어 */ function createPagination(totalCount, currentPage, keyword){ /** * 현재 페이지 몇인지 받아오기 * totalCount ..
도로명 주소 API 구현 { "common": { "totalCount": "75", "currentPage": "1" }, "juso": [ { "roadAddr": "서울특별시 서초구 강남대로12길 6 (양재동)", "jibunAddr": "서울특별시 서초구 양재동 326-1" }, { "roadAddr": "서울특별시 서초구 강남대로12길 8 (양재동)", "jibunAddr": "서울특별시 서초구 양재동 326-2 성경빌딩" }, {
Hot block 관련 글 https://www.ilifo.co.kr/boards/article/48