HttpServletRequestWrapper 를 상속한 확장 클래스를 만들어 getParameter, getParameterValues, getHeader 메서드를 오버라이드하고, 네이버의 lucy-xss-filter 라이브러리로 Escape 처리한 값을 리턴하도록 구현한다. lucy-xss-filter는 XssPreventer(단순 문자열 전체 Escape)와 XssFilter(HTML 태그가 필요한 본문은 스크립트만 선별 필터링) 두 가지를 제공하며, 파라미터명이 content로 시작하면 XssFilter를, 그 외에는 XssPreventer를 적용한다. Spring의 OncePerRequestFilter 를 상속한 CrossSiteScriptingFilter를 만들어 GET/POST 요청에만 XSS 필터를 적용하고, web.xml에 등록하면 비즈니스 로직에 손대지 않고 일괄 처리가 완성된다.
ReadOSX 엘 캐피탄에서 pip install "ipython[notebook]" 시도 시 오류가 발생하는데, 이는 엘 캐피탄의 보안 설정으로 인해 내장 Python 환경에서 패키지 설치가 제한되기 때문이다. easy_install로 Numpy/Pandas 등은 설치되지만 ipython 설치 시에는 여전히 오류가 발생하므로, /usr/local 디렉터리 퍼미션 조정 후 Homebrew로 Python을 재설치하는 것이 올바른 해결책이다. Homebrew로 Python 재설치 후 sudo pip install "ipython[notebook]" 을 실행하면 정상적으로 설치된다.
ReadAWS는 온디맨드 기반의 클라우드 서비스로, 서버·스토리지·네트워크를 API로 유연하게 확장/축소하며 사용한 만큼 비용을 지불하는 구조이다. EC2, EBS, S3, RDS, DynamoDB 등 다양한 서비스와 Auto Scaling, ELB를 통해 확장성과 고가용성을 확보할 수 있다. 클라우드는 초기 비용 절감과 운영 편의성이 있지만, 보안·비용 관리·벤더 종속성 등 고려사항이 있으며 이중화 설계가 중요하다.
ReadNode.js에서 Oracle DB 연동은 다른 DB보다 복잡하며, Instant Client 설치와 환경변수 설정이 필수적이다. oracledb 모듈 설치 과정에서 컴파일러, Python 버전, 라이브러리 경로 등 다양한 의존성 문제를 해결해야 했다. 여러 오류를 해결한 후 Node.js에서 Oracle 쿼리를 정상 실행하며 연동에 성공했다.
Read기존 서버에서 80포트를 이미 사용 중인 상황을 해결하기 위해, Webtob의 리버스 프록시 기능으로 80포트 요청을 Node.js 애플리케이션(예: 3000포트)으로 전달하는 방법을 적용했다. Apache 사례는 많았지만 Webtob 연동 자료는 드물어 직접 문서를 확인했고, http.m의 VHOST와 REVERSE_PROXY 설정만으로 비교적 간단하게 구현할 수 있었다. 설정 후 http.m를 컴파일하고 Webtob를 재시작하면, 별도 포트번호 없이도 80포트로 Node.js 서비스에 접근할 수 있다.
ReadNode.js 설치는 압축 해제만으로 간단히 가능하며, 프로젝트에서는 오라클 연동 문제로 최신 버전 대신 0.12 버전을 사용했다. Node.js 실행 디렉터리에서 간단한 JS 파일을 작성하고 node 명령어로 웹서버를 구동하는 방법을 실습했다. 서버 실행 후 브라우저에서 IP와 포트로 접속하여 Hello World 페이지를 확인하며 정상 동작을 검증했다.
ReadNode.js 기반 웹 애플리케이션을 Webtob 프록시 서버와 연동하여 80포트 요청을 Node.js로 전달하는 개발 환경을 구성했다. CentOS 7 환경에서 Webtob를 설치하고, 권한 설정·환경변수·라이선스 적용 등 서버 실행을 위한 설정 과정을 수행했다. wscfl, wsboot, wsdown 등의 명령어를 통해 Webtob 서비스를 관리하며 실제 구동 환경을 구축했다.
ReadRedis는 key:value 기반의 NoSQL 저장소이며, set/get 같은 기본 명령과 publish/subscribe를 통해 메시지 송수신 기능도 제공한다. 예제에서는 한쪽에서 subscribe로 채널을 구독하고, 다른 쪽에서 publish로 메시지를 보내 실시간으로 수신하는 Pub/Sub 동작을 실습했다.
ReadNoSQL은 비정규화와 애플리케이션 사이드 조인을 통해 분산처리에 적합하고, 성능 향상을 위한 데이터 구조를 가진다. Node.js에서 RDBMS(MySQL/MariaDB)와 MongoDB를 연동하여 CRUD 작업을 수행하는 방법을 학습했다. MongoDB는 스키마가 자유롭고 ObjectId를 활용하며, 문자열로 전달된 ID는 객체로 변환해야 정상적인 쿼리가 가능하다.
ReadRESTful API에서 PUT/DELETE 요청 처리 시 응답 방식과 상태코드(301, 302)의 이해가 중요하며, 잘못된 Redirect는 무한 루프를 유발할 수 있다. Express 라우팅에서 동적 파라미터(:id)는 경로 순서에 영향을 받기 때문에 선언 순서를 주의해야 한다. Jade 템플릿 엔진 사용 시 들여쓰기 규칙과 문법을 지켜야 하며, form에서 PUT/DELETE 요청은 _method를 통해 처리할 수 있다.
Read