스트링 디코드 문제에서 망하고, 43분 후 복수에 성공한 이야기 (feat. 중첩 괄호도 처리함)

## 🔧 배경 얼마 전 기술 면접을 보다가 `decodeString` 문제를 받았습니다. 알고리즘 공부는 주로 BFS, DFS 쪽만 하던 터라, 문자열 파싱 문제에서 완전히 발목 잡혔습니다. 거기다 라이브 코딩. 제한 시간 30분. 당연히… 못 풀었죠. 멘탈까지 디코딩당한 날이었습니다. --- ## 🔥 복수의 시작 면접이 끝난 뒤에도 이 문제는 계속 머릿속을 맴돌았습니다. “내가 이걸 못 풀었다고? 진짜?” 그 순간부터 **마음속의 디버거**가 켜졌고, 라이브 코딩에서 시도했던 방식에서 출발해 다시 파기 시작했습니다. 스택도 쓰지 않았습니다. 재귀도 쓰지 않았습니다. 그냥 제 방식대로, 끈질기게 문자열을 조작하면서 풀었습니다. **걸린 시간: 추가 43분.** --- ## 🧠 접근 방식 요약 - `[`와 `]`를 찾는다. 가장 안쪽 괄호부터 시작. - 그 안의 문자열을 꺼내고, 반복 횟수를 계산한다. - 원래 문자열 배열을 `splice`로 조작해서 새로운 문자열을 삽입한다. - 그리고… **처음부터 다시 돌린다.** - 이걸 괄호가 다 없어질 때까지 반복한다. 사실상 **재귀를 흉내 내는 루프 기반 수동 파서**입니다. --- ## ✅ 최종 코드 (with 주석) ```javascript /** * @param {string} s * @return {string} */ var decodeString = function(s) { const strArr = s.split(''); let startIndex = -1; let endIndex = -1; for(let i = 0; i = 0 && endIndex >= 0 && endIndex > startIndex){ const addedStr = strArr.slice(startIndex + 1, endIndex).join(''); ...

apache httpd, tomcat 연동

아파치, 톰캣, mod_jk 설치

1. 압축해제

tar -zxvf tomcat-connectors.tar

2. mod_jk 소스의(방금 압축 푼 커넥터) native 디렉터리로 이동한 뒤 configure 명령 실행

./configure --with-apxs=아파치/bin/apxs

tip : find / -name apxs

3. configure 을 통해 설정이 끝나면 make 으로 컴파일

make

4. make 후 make install 으로 코드 설치

make install

5. 설치가 되면 아파치 디렉터리에 모듈 생성됨.

6. connectors 소스의 apache-2.0 디렉터리에 있는 mod_jk.so를 apache httpd 서버의 modules 디렉토리로 복사

7. mod_jk.so 의 권한 설정

chmod 755 mod_jk.so
chown root:root mod_jk.so

8. httpd 서ㅓ 설정 편집을 위해 apache 서버의 conf 디렉토리에서
vim mod_jk.conf

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMount /* node1

//위의 텍스트 설명
LoadModule : 모듈 경로 - 아파치를 시작할 때 모듈을 로드할 위치 정의
JkWorkersFile : 작업자 파일 경로 - 작업자 파일 위치 정의. 작업자 파일은 톰캣 인스턴스 IP, port, road ballancing 정보 포함.
JkLogFile : 로그 파일 경로
JkMount : URL 매핑 - 정의된 URL 요청 재전송 규칙 정의. 위의 경우는 /*의 경로를 입력했을 때 해당 요청을 톰캣 node1로 재전송.
JkLogLevel : 로그 수준 : mod_jk에서 수행하는 다양한 이벤트를 logs가 어떻게 처리할지를 정의



9. conf 디렉토리에 workers.properties 파일 생성

vim workers.properties

worker.list=node1
worker.node1.port=8009
worker.node1.host=localhost
worker.node1.type=ajp13
worker.node1.lbfactor=1

//위의 텍스트 설명
노드 이름
톰캣에서 ajp 요청을 어떤 포트로 수락하는지
톰캣 호스트 ip
사용중인 프로토콜. 보통 ajp13 사용. ajp12는 예전 버전, ajp14는 개발중인 버전(upcomming)
부하 분산 방법(라운드 로빈, 연결 지속 등)

10.아파치, 톰캣 실행
아파치 : bin 폴더에서 ./apachectl start //종료는 stop
톰캣 : bin 폴더에서 ./startup.sh


reference
타누즈 카르 - 아파치 톰캣 7 따라잡기

Comments

Popular posts from this blog

Operating System Concepts 9th

스티키 헤더 여러개 만들기 (Multiple sticky header)

Operating System Concept