본문 바로가기

전체 글343

SpringBoot, Node Express JS 활용한 세션으로 페이지 변경 DB 값을 받아와 웹브라우저에서 해당 권한을 세션값에 따라 웹 페이지에 보여주거나 보여주지 않게 하는 동적인 부분이다. [서론] 쿠키 방식은 누구나 키를 통해 벨류를 확인할 수 있다. 그렇기 때문에 내가 하고 있는 프로젝트는 스프링을 서버로 사용하여 데이터를 저장하고 웹브라우저인 Node Express JS를 사용하여 sessionId를 활용하여 보안에 대비하고 있다. Controller 스프링에서 먼저 디비 테이블의 내용을 읽어오는 예시이다. @GetMapping("") public ResponseVO getUserInfo() { String userId = ((UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipa.. 2023. 11. 10.
프로젝트 요약 정리 SpringBoot 와 Redis 연결 및 업데이트 들어가며 회사에서 URL 호출 방식의 API로 짧은 시간에 다량의 내용을 보내는 부분이 있다. 기존 웹서버는 jsp로 구현된 내용을 이번에 Spring Boot와 Node Expressjs 를 이용하여 DB와 Redis에 새로운 인증 API 키를 갱신하는 기능을 개발하게 되었다. 초기 Redis 값을 가저와 해당 필요한 부분만 Update 를 하는 방식을 생각하였지만 여러 문제가 있어 Json 형태의 Redis를 읽어와 해당 새로운 키 값을 만들고 가저온 정보에서 해당 필요 내용을 수정해 새로운 key, value를 만들기로 하니 여러 시행착오 끝에 문제를 해결할 수 있었다. Redis Config 여기서는 Redis Sentinel 및 Lettuce를 사용하여 Redis 데이터베이스의 고가용성을 확보하.. 2023. 10. 25.
프로젝트 요약 정리 SpringBoot 와 Node ExpressJs 들어가며 회사에서 하는 프로젝트는 SpringBoot 와 Node ExpressJs 를 사용하고 있다. 보안적인 기능은 제외하고 웹프로젝트를 간단하게 설명하겠다. 기존 코드는 회사에서 직접 사용하는 코드는 아니고 개인적으로 회사코드를 이해하기 위해 개인적으로 공부한 코드이다. 위 프로젝트는 Spring Boot 부분은 서버 사이드 코드로 데이터베이스와 상호 작용하고 비즈니스 로직을 처리하며, Node.js 부분은 클라이언트 사이드 코드로 사용자 인터페이스를 처리하고 서버와 통신한다. Spring Boot와 Node.js가 서로 협력하여 전체 애플리케이션을 구성하는 기능을 가지고 있다. 간단하게 업데이트하는 기능인 코드 실행 부분을 설명해보겠다. Node.js 부분 프론트 .ejs 등록부분 예시 하단 코드.. 2023. 10. 21.
리눅스 크론탭(Crontab) 이란 업무를 하는 중 프로그램 사용 월별청구 현황을 메일로 보내야 하는 경우가 있었다. 이때 메일을 자동으로 보내주는 코드와 start.sh 를 통해 이 프로그램을 시작하는 명령어를 작성한적이 있다. 이 후 그럼 메일을 보내는것 까지 자동으로 보내는 방법을 찾아보다 기록하게 되었다. 크론탭이란 리눅스 크론탭(Crontab)은 리눅스와 유닉스 기반 시스템에서 주기적으로 반복되는 작업을 자동으로 수행위한 스케줄링 도구이다. 크론텝을 사용하면 특정 시간, 날짜 또는 주기에 따라 스크립트, 명령어 또는 프로그램을 실행할 수 있다. 크론텝은 시스템 관리 작업, 백업 작업, 데이터 정리 작업, 보고서 생성 등 다양한 용도로 활용된다. 크론탭 기본 사용법 각 *는 시간과 날짜를 나타내며, 왼쪽에서 오른쪽으로 분, 시간, .. 2023. 10. 7.
JSP 스팸번호 입력, 출력, 수정, 횟수, 삭제, 검색 쿼리 기존 테이블과 내용은 하단 참조 2023.09.26 - [DB] - pk 2개, 여러개 설정 - SQLGate 삽입구문 if(sCatId.equals("")) { query.append("INSERT INTO TBL_CALLSPAM (CALLBACK, CPID, REASON) VALUES (?, ? ,?)"); vecArgs.add(spamnumber); vecArgs.add(snLoginID); vecArgs.add(reason); }else { query.append("INSERT INTO TBL_CALLSPAM (CATCODE, CALLBACK, CPID, REASON) VALUES (?, ?, ?, ?)"); vecArgs.add(sCatId); vecArgs.add(spamnumber); vec.. 2023. 9. 30.
pk 2개, 여러개 설정 - SQLGate 들어가며 내가 이번에 만든 내용은 스팸번호 등록이다. 여기서 이야기할 내용은 SQL 쪽만 이번에는 할 생각이다. 내용은 카테고리별 전체별을 각각 게이트웨이에서 해당 데이터의 컬럼을 보고 다른 서버의 파일에다가 내용을 자동으로 작성하게 하여 디비와 게이트웨이 파일에 작성하는 내용이다. 카테고리별 전체별 번호를 등록하면서 중복을제거하기 위해 나는 카테고리와 전화번호를 pk로 설정하였다. PK 2개 이상 카테고리 전화번호 사과 010 - (O) 사과 010 - 무결성 제약조건 위반 (X) 사과 011 - (O) 바나나 011 - (O) 이런식으로 중복을 판별할 생각이였다. 기존에 만든 테이블에 ALTER ADD 를 사용해서 설정을 해주었다. 위 방법을 사용하면 PK1, PK2, PK..... 이런식으로 테이블.. 2023. 9. 26.
SQL 시퀀스란 시퀀스 만들기(SQLGate) 시퀀스의 개념 시퀀스는 정수 값을 생성하는 객체로, 데이터베이스에서 유일한 값을 생성할 때 사용된다. 주로 테이블의 기본 키(primary key)나 다른 열(column)의 값에 사용되며, 중복 없는 고유한 값을 생성한다. 시퀀스의 장단점 장점: 고유성 보장: 시퀀스를 사용하면 중복된 값이 생성되지 않으므로 데이터의 정합성을 유지할 수 있다. 성능 향상: 응용 프로그램에서 값을 생성하는 비용을 절약하고 데이터베이스에서 효율적으로 값을 생성할 수 있다. 확장성: 다수의 클라이언트가 동시에 시퀀스를 사용해도 고유한 값을 생성할 수 있어 다중 사용자 환경에서 유용. 단점: 데이터베이스 종속성: 시퀀스는 데이터베이스 종류에 따라 구문이 다르며, 데이터베이스 종속성을 가져올 수 있다. 재설정 문제: 시퀀스가 최.. 2023. 9. 25.
Window, DOM 차이 자바스크립트 window.onload와 DOMContentLoaded 이벤트는 웹 페이지의 로딩 상태에 따라 다르게 동작하는 JavaScript 이벤트 이번 문제는 기존에 구현된 내용들을 참고하여 새로운 기능을 구현하면서 직접 짠 자바스크립트 내용을 추가하면서 문제가 발생하게 되었다. 기존 스크립트가 작동을 안하는 문제였다. 코드가 너무 오래되고 지저분한 부분도 있고 내 실력이 부족한 부분도 있어 이 문제를 해결하는데 생각보다 많은 시간이 들어 정리를하게 되었다. 자바스크립트의 실행 시점 때문에 발생하는 문제였다. 페이지 전체가 로드되기 전에 발생해야 하는 내용이였기 때문이다. 그런 이유로 문제의 원인은 DOMContentLoaded방식을 사용하여 해결하였다. window.onload 이벤트: 1. 이 이벤트는 웹 .. 2023. 9. 24.
Linux grep 간단한 명령어 grep이란grep 명령어는 리눅스와 Unix 기반 시스템에서 텍스트 검색 및 패턴 매칭을 수행하는 데 사용되는 강력한 명령어 중 하나이다. grep 명령어기본명령어grep '패턴' 파일이름이 명령은 "패턴"이라는 문자열을 파일에서 찾아 해당 라인을 출력한다. 예를 들어, grep 'succeed' test.txt는 "DBMS.2030913" 파일에서 "succeed"이라는 문자열을 찾아 해당 라인을 출력한다. -i 옵션grep -i '패턴' 파일이름-i 옵션은 대소문자를 구분하지 않고 검색한다. 즉, "apple", "Apple", "aPpLe" 등을 모두 찾는다. -o 옵션(횟수 구하기)내가 가장 많이 사용하는 명령어이다. 테스트를 하면서 성공건수나 실패건수를 로그에서 찾는데 매우 유용하다.grep .. 2023. 9. 14.