[주의!] 문서의 이전 버전(에 수정)을 보고 있습니다. 최신 버전으로 이동
Coder™ | |
이름 | Coder |
기능 | 서버사이드 Codescript 렌더링 및 페이지 생성 |
언어 | |
제작자 | |
최신 버전 | 1.2.0 |
소스코드 공개 | 클로즈드 소스[1] |
구조 | 모두 사용 |
렌더링 방식 | 모두 사용 |
1. 개요[편집]
원래 로컬 프로그램을 짜거나, 웹페이지를 구동시키는데 사용되는[2] Codescript를 서버사이드에서 사용할 수 있게 한 소프트웨어이다. Node.js와 같은 프로그램과 성격이 비슷하다고 볼 수 있다.
2. 작동 구조[편집]
먼저 Coder의 작동방식은 크게 세가지로 나뉜다.
- 빌드형 작동 방식
- 동적 작동 방식
- 프론트엔드 & 백엔드 작동 방식
2.1. 빌드형 작동 방식[편집]
앞 문단에서 대략적인 방식을 알아보았으니 정확한 순서를 짚고 넘어가겠다.
- 사용자가 지정한 디렉토리[5]에 있는 파일의 값이 변경된다.
- 상시구동중인 Coder-Checker가 변경을 감지하고, Coder를 호출한다.
- 빌드를 위해 /root/의 내용을 모두 삭제한다.
- Coder는 파서를 돌려 Codescript를 정적 파일들로 변환한다.
- 변환한 파일들을 /root/ 디렉토리에 옮기면 적용 끝.
이 방식은 방문자가 접속하는 속도가 빠르다는 장점이 있지만, 정적이기 때문에 로그인 등은 구현할 수 없으며, 파일 양이 방대한 경우 /root/를 삭제한 뒤 파싱하는 동안 500 Internal Server Error를 내뿜으며 접속이 안되기 때문에 트래픽이 많은 사이트에는 적합하지 않다. 그런데 통계상으로 이 기능을 사용하는 사이트가 전체의 58%나 된다! 아니 근데 쓰는 사이트가 몇개 안되잖아 그러네 듣보잡이다 아무래도 속도를 중요시 여기는 고객들의 요구를 반영한 것으로 보인다.
2.2. 동적 작동 방식[편집]
간단하다. 요청이 들어올 때 마다 Codescript를 파싱해 내보낸다. 이때 쿠키나 세션과 같은 매개변수로 조건문을 사용할 수 있다.
2.3. 프론트엔드 & 백엔드 작동 방식[편집]
- static 디렉토리에 있는 파일의 값이 변경된다.
- static 디렉토리에 있는 파일의 내용으로 /assets/ 디렉토리의 내용을 변경한다.
- 요청이 들어온다.
- static.json에 같은 주소의 파일이 있으면 해당 파일을 호출해 정적 사이트와 같이 작동하고[6], 없을 경우 아래와 같이 동작한다.
- 프론트엔드가 없는 경우 빈 사이트 전체적인 틀을 내려보낸다. 이게 프론트엔드가 된다. 새로고침하지 않는 한 계속 변하지 않는다.
- 경로를 암호화해[7] 특정 디렉토리에 요청을 보낸다.
- 요청을 받은 백엔드는 데이터베이스에서 페이지를 찾고, 있으면 제목 / 내용을 반환하고, 없으면 각 값에 null을 반환한다.
- 제목 / 내용이 있는 경우 브라우저에 표시하고, null이면 404 페이지를 표시한다.
이 기능을 사용하면 <hyperlink> 태그[8]를 사용할 수 있다
[1] 하지만 난독화된 소스코드를 컴파일해 제한적 배포는 일부 하고 있다.[2] 이때 프로그램이 설치되어있는 환경이라면 프로그램을 통해, 설치되어있지 않다면 Javascript로 우회컴파일한다. 자세한 내용은 Codescript 문서 참고.[3] 현재는 git과 로컬 파일 시스템을 지원한다.[4] Codescript의 서버 사양인 <hyperlink> 태그는 이 방식에서만 동작한다.[5] 단, /root/ 경로 예약으로 쓸 수 없다.[6] css, javascript 등[7] 이 API를 외부에서는 쓸 수 없는데, 디코딩 / 인코딩 알고리즘 자체가 기밀이기 때문이다.[8] Codescript 참고