업무 기록 58

웹 애플리케이션에서 특수문자와 유니코드 문자 처리 시 발생하는 XSS 이슈

웹 애플리케이션을 개발하다 보면 사용자 입력값에 특수문자나 유니코드 문자가 포함될 때 예상치 못한 문제가 발생하곤 합니다. 특히 보안과 관련하여 크로스 사이트 스크립팅(XSS) 공격을 방지하면서도 특수문자를 올바르게 처리해야 하는 상황에서는 더욱 주의가 필요합니다.이번 글에서는 제가 최근 경험한 문제와 그 해결 과정을 공유하고자 합니다.      문제 상황 20년이 넘은 웹이 있는데 그곳에서 회사 스팸 필터링 시스템을 운영하고 있습니다. 이 시스템에서 스팸 단어를 등록하고 검색하는 과정에서 다음과 같은 문제가 발생했습니다그리스 문자와 같은 유니코드 문자(예: "νιΡ")가 HTML 엔티티(예: "νιΡ")로 변환되어 저장되는 문제특수문자가 포함된 스팸 단어(예: "[비+&씨]")가 검색되지 않는 문제특수..

업무 기록/ETC 2025.03.31

대용량 데이터 처리 방식 과 흐름

1. 코드 실행 순서 및 구조대용량 데이터를 처리하는 방식은 일반적으로 다음과 같은 단계를 거칩니다.데이터 로드 (Load Data)데이터베이스, 파일, API, 메시지 큐(Kafka 등)에서 데이터를 읽어옵니다.데이터 분할 (Partitioning)전체 데이터를 한 번에 처리하면 성능이 저하되므로, 여러 개의 작은 청크(batch)로 나눕니다.병렬 처리 (Parallel Processing)각 청크를 개별 스레드에서 병렬로 처리합니다.스레드 풀(Thread Pool)을 활용하여 일정 개수의 스레드만 실행되도록 제어합니다.비동기 실행 (Asynchronous Execution)비동기 방식으로 데이터를 처리하여 블로킹(blocking)을 최소화합니다.데이터 저장 (Save Data)처리된 데이터를 데이터베..

업무 기록/ETC 2025.02.23

스레드 개수 설정 및 성능 최적화와 방법들

1. 스레드란? 스레드는 프로그램에서 실행되는 가장 작은 단위의 작업 흐름입니다. 여러 개의 스레드를 사용하면 병렬 처리를 통해 성능을 향상시킬 수 있습니다. CPU가 여러 개의 스레드를 동시에 실행할 수 있기 때문에, 적절한 개수의 스레드를 사용하면 응답 속도를 개선하고 자원을 효율적으로 활용할 수 있습니다.  스레드 개수 설정 방법 및 적정 개수 판단 방법비동기 작업에서 스레드 풀(ThreadPool) 크기를 설정할 때,*"최적의 스레드 개수"**를 결정하는 것은 매우 중요한데, 이를 판단하는 방법을 설명할게요. 1. 스레드 개수 설정 기준 (CPU vs. I/O 작업에 따라 다름)스레드 개수를 설정할 때는 어떤 종류의 작업을 처리하는지에 따라 다르게 결정해야 함.작업 유형 설명 스레드 개수 설정 방..

업무 기록/ETC 2025.02.20

개발자와 비개발자와의 효과적인 협업 가이드: 소통의 벽을 허물다

1. 서론: 왜 협업이 어려운가? 🤔개발자와 비개발자 사이에는 종종 '소통의 벽'이 존재합니다. 이는 단순히 기술적 지식의 차이가 아닌, 서로 다른 관점과 용어, 우선순위에서 비롯됩니다.흔한 오해와 어려움개발자: "요구사항이 자주 변경되고 모호해요."비개발자: "왜 이렇게 개발이 오래 걸리나요?"개발자: "기술적 제약을 이해하지 못하시네요."비개발자: "개발자가 비즈니스를 이해하지 못해요." 2. 효과적인 소통 전략 💬2.1 전문 용어 사용 줄이기❌ 나쁜 예:"REST API 엔드포인트를 구현하고 JWT 인증을 추가했습니다."✅ 좋은 예:"로그인 기능을 만들고 보안 기능을 추가했습니다."2.2 시각적 자료 활용와이어프레임플로우차트프로토타입간단한 데모2.3 단계적 설명1단계: 큰 그림 설명2단계: 주요..

업무 기록/ETC 2024.11.22

Kotlin(코틀린) 코루틴으로 비동기 프로그래밍

Kotlin의 강력한 기능 중 하나인 코루틴(Coroutines)에 대해 자세히 알아보도록 하겠습니다. 비동기 프로그래밍을 쉽고 효율적으로 구현할 수 있는 코루틴의 기본 개념부터 실전 활용법까지 살펴보겠습니다.1. 코루틴이 뭔가요? 🤔코루틴은 비동기 프로그래밍을 위한 코틀린의 솔루션입니다. 기존의 콜백이나 Future/Promise 패턴의 복잡성을 줄이고, 동시성 프로그래밍을 더욱 직관적으로 작성할 수 있게 해줍니다.실생활 비유로 이해하기식당에서 일하는 웨이터를 생각해봅시다. 웨이터가 한 테이블의 주문을 받고 주방에 전달한 후, 음식이 나올 때까지 그 자리에서 기다린다면 어떨까요? 매우 비효율적이겠죠! 실제로는 주문을 전달한 후 다른 테이블의 손님도 응대합니다.코루틴도 이와 같습니다! 시간이 오래 걸리..

업무 기록/ETC 2024.11.20

L4 로드벨런싱과 암호화 및 VIP

기존 회사의 웹서버 로드벨런싱의 경우 L4에서 VIP 를 통해 여러 서버로 로드벨런싱을 해주고 해당 Nginx에서  동일 서버인 Node로 전달 후  Node 에서 WAS 간에 로드벨런싱이  존재하였다.  Nginx 에서 Node 간 프론트 딴에도 로드벨런싱을 통한 고가용성과 부하분산을 위해 작업을 하였고 해당 내용을 정리하였다  먼저 보이는 부분이 기존 구조이다.  이렇게 변경할 계획이다.   간단 로드벨런싱과 VIP에 대해서 설명 L4 로드벨런싱 네트워크 트래픽을 TCP/UDP 레벨에서 분산시키는 방식이다.  특징 프로토콜 레벨 분산 - IP 주소와 포트 번호를 기준으로 트래픽을 분산 속도 - 패킷 검사하고 분산 과정이 단순하며 헤더 정보만 검사하기 때문에 L7 보다 오버헤드 감소 투명성 - 실제 서..

업무 기록/ETC 2024.06.11

[Oracle] PL/SQL정의, 기능, 대량 데이터 추가

기본 적으로 개발이나 테스트를 하는 경우 부하문제를 신경써야 한다. 고로 더미 데이터를 DB에 넣어서 테스트 하는 경우가 많으며 DB에 더미 값을 넣는 방법도 다양하다. 최근 PL/SQL 방식을 처음 사용해보아서 정리 목적으로 작성하였다.  정의PL/SQL(Procedural Language/Structured Query Language)은 Oracle 데이터베이스에서 사용되는 프로시저형 언어입니다. 이 언어는 SQL 문을 확장하여 프로그래밍 요소를 추가한 것으로, 데이터베이스 관련 작업을 수행하는 데 사용됩니다. PL/SQL은 데이터베이스 객체를 생성하고 관리하는 데 사용되는 프로그램 유형으로, 주로 저장 프로시저, 함수, 트리거 등을 작성할 때 사된다.   기능PL/SQL은 다음과 같은 주요 기능을 ..

업무 기록/ETC 2024.05.22

SSL 인증서 확인 및 Nginx 인증서 변경 Openssl

회사에서 운영중인 웹사이트 인증서 기간 만료가 예정되어 인증서를 변경하면서 1년에 한번 히는 작업이라 들어 1년후면 분명히 잊어버릴걸 알기 때문에 기록하였다. 인증서 확인 방법 먼저 기존 웹사이트에서 인증서가 멀쩡히 있는지 확인하는 방법은 이 연결은 안전합니다 클릭 후 -> 최 하단 '인증서가 유효함' 부분을 클릭한다. 그럼 이런식으로 발급기간. 발급일, 만료일 , 인증서와 , 만료일 등이 나온다. 이때 내가 만든 사이트의 만료일이 얼마 안남아 ssl 인증서를 변경하게 되었다. Nginx SSl 관게와 변경 방법 Nginx와 SSL은 밀접하게 관련되어 있다. Nginx는 SSL/TLS를 사용하여 웹 서버와 클라이언트 간의 안전한 통신을 제공할 수 있다. SSL을 사용하는 Nginx는 HTTPS 프로토콜을..

업무 기록/ETC 2024.04.22

Vscode -VSLX 오프라인 설치, 내부망 NextJs 설치 실행, .npmrc 변경, 확장파일 위치

회사에서 업무를 하는 경우 많은 기업에서 보안과 고객의 개인정보를 보호하기 위해 내부망가 외부망을 따로 구분하여 인터넷이 안되게 하는 경우가 많이 있어 기존 개인이 설치하는 방식과 달리 조금 더 수고스럽게 세팅을 해야한가.   Visual Studio Code 설치 기본 https://hunseop2772.tistory.com/75  HTML (Visual Studio Code 설치 및 기본)클라이언트 사이드 랭귀지 HTML : 웹사이트의 틀을 작성하는 언어 (제어문이나 로직은 없으며 명령어로만 사용 가능, 골격을 만든다, 프로그래밍 언어 X) - 이런 형태를 마크업언어라고 한다. CSS :hunseop2772.tistory.com  방법 1 - 설치할 확장 플러그인 (인터넷 있어야 함 여기에서는)  h..

업무 기록/ETC 2024.03.29

문자수신(MO) 서비스와 통화 Asterisk 란

이번에 MO 소켓 연동 방식과 Asterisk를 통한 전화서비스 개발에 들어가면서 MO가 정확히 어떤 내용인지 몰라 조금씩 작성할 예정하며 추가로 Asterisk 라는 오픈소스를 활용한 전화통화 서비스도 일단 같은창에 작성할 예정이다. MO(Mobile Original)란 기업에서 고객에게 단 방향으로만 발송되던 문자 서비스를 고객에게 수신받아 다양한 형태로 활용할 수 있는 유무선 통합 양방향 메세징 서비스이다. 실시간 문자메세지에 대한 데이터 통계에서 자주 사용하는 기술이다. 예를들어 고객이 휴대폰 메세지 기능을 이용해 예전에 슈퍼스타K 방송과 같이 실시간 시청자 투표나 메세지는 아니지만 쉽게 생각해서 여론조사 전화나 문자를 통해 한 기관에서 정보를 수집하기 위해 고객의 의견을 얻기 위해 정보를 양방향..

업무 기록/ETC 2024.03.27

SQL 대량 테스트 [Oracle PL/SQL]

[ 서론 ] 이전 다양한sql 을 사용하여 대량 테스트를 해야하는 경우가 있어 정리를 하게 되었다. mysql, oracle, mssql, postgres 등 테스트 해보았고 여기서는 ORACLE 을 정리하였다. Oracle PL/SQL을 사용하여 작성된 프로시저이다. 이 코드는 메시지 큐 테이블에 대량의 데이터를 삽입하는 작업을 수행하는데 사용된다. PL/SQL은 Oracle 데이터베이스에서 사용되는 절차적 프로그래밍 언어로, SQL 문을 확장하여 프로시저, 트리거, 함수 등을 지원한다. [ 코드 ] DECLARE var_i NUMBER := 1; var_j NUMBER := 1; var_phone VARCHAR2(20); arg_count NUMBER :=100000; -- 반복 횟수를 지정한다!!!..

업무 기록/ETC 2024.01.25

리눅스 1초마다 실행 된 반복된 횟수 찾기(더하기)

메세지 발송 코드 디버깅 과정에서 새로 배운 내용이다. 기존 테스트 시에는 Postman 이나 Jmeter에 이미 초당 발송 건수나 평균을 확인할 수 있는 경우가 많았는데 SQL 로 10000건같이 대량 발송 후 초당 처리건수를 로그에서 확인할 수 있다는 것을 알게되었다. 14:03:45.094 dlvs : oa=[90004] da=[010------] sn=[464878] rcsn=[300990] call=[------][------] sid=[2] cpid=[song_test3] scnt[1] id=[id] resellerCode[30-----71] 위에 로그는 발송 간 일부분이다. 여기서 dlvs가 발송간 1번만 나오는 것이여서 저걸 기준으로 초당 발송 카운트를 할려고 하였다. 해당 MMS.2024..

업무 기록/ETC 2024.01.04

tomcat서버 설치(jdk, loglotate, FirewallD..)

이번에 부하분산 및 용량을 증가시키기기 위해 기존에서 웹서버를 하나 더 띄우기 위해 나보고 기본적인 것만 설치된 서버에서 웹을 띄우라고 하였다. 물론 지금보면 간단한 내용이였지만 따로 내용없이 처음 해보는 것이여서 시간이 좀 걸렸고 까먹지 않기위해 기록을 하게되었다. 먼저 계정을 만들어 주었다. 톰켓 서버를 띄울 곳을 만들기로 하였으며 기본적인 계정도 존재하지 않았다. 2023-12-12 07:34:56 useradd -c songadmin -s /bin/bash -m songadmin 추가로 기본적으로 설치한 것 20 2023-12-12 07:34:56 dnf -y install man-pages 21 2023-12-12 07:34:56 dnf -y install mlocate 23 2023-12-12..

업무 기록/ETC 2023.12.13

vi, vim 편집기 명령어 [Linux]

오늘은 기본적으로 순전히 내가 많이 사용하면서 각끔 까먹는 명령어를 기록할려고 한다. vi 의 향상버전을 vim이라고 하는데 내가 사용하는 환경은 vi를 처도 vim이 실행된다. vi(m)는 리눅스와 다른 유닉스 기반 시스템에서 사용되는 텍스트 편집기 중 하나이다. vi는 화면 편집이 가능한 텍스트 인터페이스를 제공하며, 강력하면서도 핵심 기능들을 제한된 키보드 명령어로 수행한다. 다음은 vi의 주요 명령어 및 사용법에 대한 간단한 설명이다. 명령모드, 입력모드, 마지막 행 모드 3가지로 구분하지만 여기서는 순수 내가 자주 사용하는것을 가록할 것이다. 시작 이동: G: 파일의 끝으로 이동 h: 좌로 이동 j: 아래로 이동 k: 위로 이동 l: 우로 이동 삭제 및 복사: u: Ctrl + z x: 현재 커..

업무 기록/ETC 2023.12.12

[Tomcat] work/catalina/localhost 폴더

변경하지도 않은 파일이 갑자기 오류가 발생하였다. 해당 서버의 로그를 보니 하단과 동일하게 에러를 발생하고 있었다. 안터넷에 해당 에러를 찾아보니 권한 문제나 여러 문제가 검색되었지만 컴파일오류로 판단됬고 파일을 다시 올리니 정상작동 하였다. work/Catalina/localhost 디렉터리 Apache Tomcat 서버에서 JSP 파일이나 서블릿과 같은 동적 웹 어플리케이션 컴포넌트를 컴파일하고 실행하기 위해 사용되는 작업 디렉터리이다. 이 디렉터리는 Tomcat이 각 웹 어플리케이션에 대해 생성하며, 해당 어플리케이션이 실행될 때 동적인 자바 클래스 파일과 그에 따른 리소스를 저장한다. 구조 일반적으로 work/Catalina/localhost 디렉터리는 다음과 같은 구조를 가지고 있다: 역할 웹 ..

업무 기록/ETC 2023.12.11

개발자 경력 기술서

소개 / About Me-       IDC 센터 (비공개)  개발자-       AI연계 차세대 전화응답 서비스 개발-      (비공개)   플랫폼, 웹, 서버 개발 및 레거시 프로그램 유지보수 -      (비공개)   보안 취약점 대비 웹사이트 확인 및 작업 진행 -       정합성, 부하테스트 등 실시간 고객 오류 수정 기술 스택 / Skill Set구분Skill언어Java, JavaScript, Python, Kotlin프레임워크/기술Spring Framework, Spring Boot, Spring, RESTFul API, Node Js, Express Js, Vue Js, JSP, OpenCV, Django, FastAPI, Next.js, React데이터베이스, MySQL, Orac..

업무 기록/ETC 2023.12.02

카카오 API 를 통한 API 개발 및 웹 단 출력

이번에는 카카오 API 를 통해 내가 만든 프로그램에서 등록한 내용을 카카오에 저장 후 웹단에 헤당 내용을 뿌려주는 예제이다. 이를 사용하기 위해서는 먼저 허브파트너로 허용된 IP로 접근이 가능해야 해볼 수 있는 예제이다. Open API 와는 다른 내용이다. 그러므로 자세한 URL이나 코드 변수는 많이 변경되고 생략된 내용을 연습삼아 만들어본 관련없는 내용이다. 많이 생략된 내용이지만 순전히 기억을 위해 작성을 하였다. 자세한 설명은 차 후 해보겠다. 먼저 API 규격서를 보고 postman을 이용해 해당 값이 잘 나오는지 확인을 하였다. 차단정보 웹단에 출력할 내용을 blockinfo로 정의하였다. window.fncChannelInfo = function(data) { $("#tagToken").e..

업무 기록/API 2023.11.28

NodeJS 이용한 엑셀 다운로드 및 차트 만들기

SpringBoot, NodeJS 코드로 Excel 파일을 생성하는 코드 이다. 여러 부분으로 나누어서 기록 후 보기위해 작성하였다. 상황에 따라 년, 월에 따라 엑셀을 자동으로 다운로드 받게 된다. 여기서는 NodeJs 단에 js 부분만 기록하였다. 1. 버튼 클릭 이벤트 핸들러 설정 $("#btnExcelDownSend").click(function(e){ e.preventDefault(); // ... }); $("#btnExcelDownSend").click: id가 "btnExcelDownSend"인 요소가 클릭되었을 때의 이벤트를 처리합니다. e.preventDefault(): 클릭 이벤트의 기본 동작을 중단시킵니다. 이 경우에는 버튼 클릭에 따른 기본 동작(예: 폼 제출)을 방지합니다. 2...

업무 기록/WEB 2023.11.16

JSP 이용한 엑셀 다운로드 및 차트 만들기, 엑셀 숫자 0 나오게 하기

JSP 코드는로 Excel 파일을 생성하는 코드 이다. 여러 부분으로 나누어서 기록 후 보기위해 작성하였다. 상황에 따라 웹사이트에서 검색한 카테고리, 번호, 등록사유에 따라 엑셀을 자동으로 다운로드 받게 된다. Request Parameter Parsing: int currentPage = request.getParameter("currentPage") == null ? 1 : Integer.parseInt(request.getParameter("currentPage")); String searchNum = request.getParameter("searchNum") == null ? "" : request.getParameter("searchNum"); String searchCAT = request..

업무 기록/WEB 2023.11.15

SpringBoot, Node Express JS 활용한 세션으로 페이지 변경

DB 값을 받아와 웹브라우저에서 해당 권한을 세션값에 따라 웹 페이지에 보여주거나 보여주지 않게 하는 동적인 부분이다. [서론] 쿠키 방식은 누구나 키를 통해 벨류를 확인할 수 있다. 그렇기 때문에 내가 하고 있는 프로젝트는 스프링을 서버로 사용하여 데이터를 저장하고 웹브라우저인 Node Express JS를 사용하여 sessionId를 활용하여 보안에 대비하고 있다. Controller 스프링에서 먼저 디비 테이블의 내용을 읽어오는 예시이다. @GetMapping("") public ResponseVO getUserInfo() { String userId = ((UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipa..

업무 기록/WEB 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 데이터베이스의 고가용성을 확보하..

업무 기록/API 2023.10.25

프로젝트 요약 정리 SpringBoot 와 Node ExpressJs

들어가며 회사에서 하는 프로젝트는 SpringBoot 와 Node ExpressJs 를 사용하고 있다. 보안적인 기능은 제외하고 웹프로젝트를 간단하게 설명하겠다. 기존 코드는 회사에서 직접 사용하는 코드는 아니고 개인적으로 회사코드를 이해하기 위해 개인적으로 공부한 코드이다. 위 프로젝트는 Spring Boot 부분은 서버 사이드 코드로 데이터베이스와 상호 작용하고 비즈니스 로직을 처리하며, Node.js 부분은 클라이언트 사이드 코드로 사용자 인터페이스를 처리하고 서버와 통신한다. Spring Boot와 Node.js가 서로 협력하여 전체 애플리케이션을 구성하는 기능을 가지고 있다. 간단하게 업데이트하는 기능인 코드 실행 부분을 설명해보겠다. Node.js 부분 프론트 .ejs 등록부분 예시 하단 코드..

업무 기록/WEB 2023.10.21

리눅스 크론탭(Crontab) 이란

업무를 하는 중 프로그램 사용 월별청구 현황을 메일로 보내야 하는 경우가 있었다. 이때 메일을 자동으로 보내주는 코드와 start.sh 를 통해 이 프로그램을 시작하는 명령어를 작성한적이 있다. 이 후 그럼 메일을 보내는것 까지 자동으로 보내는 방법을 찾아보다 기록하게 되었다. 크론탭이란 리눅스 크론탭(Crontab)은 리눅스와 유닉스 기반 시스템에서 주기적으로 반복되는 작업을 자동으로 수행위한 스케줄링 도구이다. 크론텝을 사용하면 특정 시간, 날짜 또는 주기에 따라 스크립트, 명령어 또는 프로그램을 실행할 수 있다. 크론텝은 시스템 관리 작업, 백업 작업, 데이터 정리 작업, 보고서 생성 등 다양한 용도로 활용된다. 크론탭 기본 사용법 각 *는 시간과 날짜를 나타내며, 왼쪽에서 오른쪽으로 분, 시간, ..

업무 기록/ETC 2023.10.07

Linux grep 간단한 명령어

grep이란grep 명령어는 리눅스와 Unix 기반 시스템에서 텍스트 검색 및 패턴 매칭을 수행하는 데 사용되는 강력한 명령어 중 하나이다. grep 명령어기본명령어grep '패턴' 파일이름이 명령은 "패턴"이라는 문자열을 파일에서 찾아 해당 라인을 출력한다. 예를 들어, grep 'succeed' test.txt는 "DBMS.2030913" 파일에서 "succeed"이라는 문자열을 찾아 해당 라인을 출력한다. -i 옵션grep -i '패턴' 파일이름-i 옵션은 대소문자를 구분하지 않고 검색한다. 즉, "apple", "Apple", "aPpLe" 등을 모두 찾는다. -o 옵션(횟수 구하기)내가 가장 많이 사용하는 명령어이다. 테스트를 하면서 성공건수나 실패건수를 로그에서 찾는데 매우 유용하다.grep ..

업무 기록/ETC 2023.09.14

Markdown Viewer for Multiple Documents and Loader(배열이용) 랜더링

배경 연동 규격서나 다양한 정보를 모아놓은 자료실을 만들고 있다. 마크다운 정보를 DB에 넣고 자료를 관리하여 홈페이지에 내용을 띄울때는 자동으로 html로 변환하는 내용이였다. 하지만 바뀐 내용으로 정보의 양은 많지 않고 view ejs 부분 내용만 바꾸면 되기 때문에 서버를 재부팅할 필요없어 그냥 프로젝트에 정보를 넣어놓는 방식으로 바꾸기로 하였다. 그러나 ejs를 사용하면서 라우터 문제나 한 페이지 뷰를 만들기 위해서 프로젝트 구조상 index.ejs, js등 총 4개의 페이지를 새로 만들어야 한다는 문제점이 발생하였다. 만일 이 문제를 해결하지 않는다면 자료실에 1개의 내용을 추가한다면 4개의 페이지를 추가하거나 수정해야 한다는 문제점이 있어 .md 파일을 미리 만들어 놓고 자료실 페이지에서 이 ..

업무 기록/WEB 2023.09.11

자바스크립트 마크다운 검색창 만들기

#in 에 마크다운을 작성하게 되면 #out에 htm로 자동 변환되는 상황에서 검색창을 입력하여 내가 원하는 단어를 찾는 간단한 Javascript이용하여 쉽게 만들 수 있을거라고 생각하였다. 하지만 만들면서 여러 문제점이 발생하였다. 화면에 표출되는 #out 부분의 제목 부분이 #, ##, ### 과 같이 해시를 사용하여 이상한 반복이 발생하는 경우도 있고 또는 #out 부분이 없어지거나 #in 마크다운 내용으로 바뀌는 경우등 많은 문제점들이 발생하였다. 기본 HTML 틀 # News Title 1 ## Subheading 1 ### Subheading 1.1 # Another topic 이전 자동 목록 만들기와 구조는 유사하다. 전체코드 # News Title 1 ## Subheading 1 ### ..

업무 기록/WEB 2023.09.08

자바스크립트 이용한 마크다운 자동 목차 만들기

구현목표 내가 만들고자 하는 것은 마크업언어로 #in(textarea) 에 작성을 하면 #out에 html로 자동 변환되고 여기서 변환된 #out의 html 문법을 보고 목차를 자동으로 만드는게 목표이다. 작업을 하면서 구글에 많은 티스토리 블로그 자동 목차만들기를 활용해서 사용하면 되겠다고 생각하였다. 여기서는 자동목차 만들기만 확인할것이다. html 기본 구조 # 뉴스 제목 1 ## 부제목 1 ### 소제목 1.1 # 또 다른 주제 다운로드 Markdown Markdown HTML ×> 위는 기본적인 html의 뼈대이다. 생략된 css난 html 부분이 많이있다. (참고용) 결과페이지 미리보기 자바스크립트 전체 $(document).ready(function () { // 여기에 Markdown 콘텐..

업무 기록/WEB 2023.09.07

이클립스(eclips) clean 의 중요성

클린의 중요성을 깨닫게 되었다. 3일간 코드를 보고 아무리 봐도 내가 틀린부분이 없고 에러도 이상한 곳에서 발생을 하였다. 구글링을 계속해도 원인을 못찾다가 아무생각없이 clean을 해보니 문제가 해결되었다......Clean 의 중요성상단바 -> Project -> Cleanclean은 이클립스가 사용하고 있던 정보나 class를 전부 삭제하고 다시 만드는것이라고한다. 이를통해 이클립스가 빌드중에 꼬인 내용을 새로 정리하는 것이다. 이클립스는 빌드시간을 줄이기 위해 모든 폴더의 소스코드를 컴파일하지 않고 작업간 수정한 java 파일과 그와 관련된 부분만 컴파일한다. 이런 경우 가끔 버그나 컴파일 충돌로 빌드가 꼬여 문제가 발생한다. 나는 이전에는 Intelij를 써서 그런지 모르겠지만 이클립스를 최근에..

업무 기록/ETC 2023.08.31

JSP 모달창 버튼 출력 조건

JSP를 이용하여 특정 조건에 따라 모달창 내에 버튼을 보이게하고 기능을 추가하는 내용을 해보겠다. 여기서 예는 확인불가 일때 삭제버튼을 보이게 하는 내용이다. ✔ 버튼 기본상태 상태 중단 정상 대기 확인불가 확인불가 OPTION을 보면 value값이 ' ' 아무것도 입력되지 않은 상황에서 확인 불가가 된다. 이때 삭제버튼이 나오게 할려고 한다. ✔ 확인 불가시 삭제 코드 var statusDropDown = document.getElementById('status').value; //var selectedStatus = statusDropDown.value; // 검수요청, 사용승인상태, 삭제불가 메시지만 보여준다. if(statusDropDown == ''){ // 삭제만 가능 etcCommentTr..

업무 기록/WEB 2023.08.30

Proxy 의 장단점과 설명 기본

프록시 (Proxy)는 클라이언트와 서버 간의 중간 매개체로 작동하는 서버나 애플리케이션이다. 주로 웹에서 사용되며, 클라이언트 요청을 서버에 전달하고, 서버로부터의 응답을 클라이언트에게 다시 전달하는 역할을 한다. 프록시는 여러 가지 목적으로 사용되며, 보안, 로깅, 캐싱, 접근 제어 등 다양한 기능을 수행할 수 있다. 프록시 서버를 사용하는 이유와 장점 : 1. 보안 및 개인 정보 보호: 보안 향상: 프록시는 클라이언트와 서버 간의 중개 역할을 하므로 클라이언트의 IP 주소를 숨기고, 외부에서 직접 서버에 접근하는 것을 방지함으로써 보안을 향상. 개인 정보 보호: 프록시는 사용자의 웹 활동을 익명화할 수 있어 개인 정보 보호를 강화. 2. 캐싱과 성능 향상: 캐싱: 프록시 서버는 이전에 요청한 데이터..

업무 기록/ETC 2023.08.26