서블릿 컨테이너를 만드는 토이프로젝트를 진행하던 도중 내가 파일 입출력에 관해 상당히 모르고 있다는 것을 알게 되었다. 고작해야 바이트 단위로 데이터를 읽어서 내보내는 정도의 이해도 였던 것 같다. 실제로 내가 쓴 코드는 다음과 같다. public void sendFile() throws IOException { writeHeader(); List fileBytes = getFileBytes(); int writeCount = 0; byte[] bufferByte = new byte[fileBytes.size()]; for (byte fileByte : fileBytes) { bufferByte[writeCount] = fileByte; writeCount++; } outputStream.write(bu..
웹서버는 클라이언트로 부터 요청받은 자원을 클라이언트로 전달해 줘야 합니다. 이 때 클라이언트가 어떤 종류의 정적파일, 그러니까 HTML 파일이나, 이미지, 혹은 PDF 같은 파일을 요청했다면 웹서버는 그 파일을 다시 클라이언트로 전송해 줘야 합니다. 물론 HTTP 응답의 형태를 따라야 합니다. HTTP Response 가 어떤 모습인지 잠깐 살펴 보겠습니다. 가장 첫번째 줄에는 상태 라인(status line)이 위치하고 있습니다. 상태 라인에는 순서대로 현재 HTTP 버전 정보, 상태 코드, 상태 텍스트가 포함되어 있습니다. 상태코드는 현재 응답의 상태를 나타냅니다. 100번 대는 조건부 응답, 200번 대는 성공, 300번 대는 리 다이렉션, 400번 대는 요청 오류, 500번 대는 서버 오류를 나..
웹 서버의 가장 기본적인 기능은 클라이언트의 요청을 받아 요청된 자원을 넘겨주는 것입니다. 그러려면 일단 클라이언트가 보내는 HTTP Requset를 받고 해석할 수 있어야 합니다. 그럼 먼저 HTTP Request 가 어떤 모습으로 전송 되는지를 알아 보겠습니다. 실제로 웹 브라우저가 보내는 HTTP Request의 모습입니다. 가장 첫번째 줄에는 요청에 대한 요약된 정보가 전해집니다. 가장 처음에 등장하는 것은 HTTP method 종류입니다(참고). 이 메소드는 이 요청이 수행해야할 동작에 대한 정보를 담고 있습니다. 그리고 나오는 것은 요청된 URL입니다. 이 URL은 요청한 자원의 절대경로일 수도 있고 매핑된 서블릿의 이름일 수도 있습니다. 그리고 마지막으로 HTTP 버전 정보가 표시됩니다. 두..
지금 회사에 정규직 전환하게 되면서 우아한코스에 더이상 참여하지 않게 되었지만 프리코스를 하며 받은 피드백들을 통해 배운 것이 많아서 간단하게 정리해 놓겠습니다. 내용을 요약하자면 JAVA CONVENTION을 잘 따르고 클린코드를 만들려고 노력해라, 그리고 객체 지향적인 프로그래밍을 해라 정도인 것 같습니다. 이름을 통해 의도를 드러내라 축약하지 마라 개발도구의 code format 기능을 활용하라 space도 convention이다 불필요한 공백라인을 만들지 마라 반복하지 마라 space와 tap을 같이 쓰지 마라 의미없는 주석을 달지 마라 commit 메세지를 의미있게 작성해라 README.md를 살아있는 문서로 만들어라 구현 순서도 convention이다 JAVA API를 활용해라 배열 대신 ja..
웹 애플리케이션이 동작하는 방식을 단순하게 표현하면 위의 그림과 같을 것입니다. 클라이언트가 웹 브라우저를 통해 웹 서버에 필요한 자원을 요청하면 서버가 사용자가 요청한 것을 넘겨 주게 되겠죠. 자원(resource)이라고 하는 것은 HTML 페이지나 그림파일 혹은 PDF 파일이 될 수도 있습니다. 중요한 것은 클라이언트가 요청하면 서버는 그 요청에 응답한다는 것입니다. 클라이언트와 서버가 요청과 응답을 주고 받기 위해서는 서로 같은 규칙을 가지고 대화해야 합니다. 웹 애플리케이션에서 주로 사용하는 대화의 규칙은 HTTP(Hyper Text Transfer Protocol) 입니다. 클라이언트가 HTTP 요청을 보내면 서버는 HTTP 응답으로 대답합니다. HTTP는 이렇게 요청(Request)과 응답(R..
WAS를 구현하게 된 이유 WAS를 구현하는 것은 원래 지금 다니고 있는 회사의 인턴 과제 중 하나였습니다. 하지만 저는 이 과제에 아주 부정적인 평가를 받았었습니다. 그때는 정규직 전환이 물 건너갔다고 생각을 했었죠. 이후 다행히 정규직 전환은 했으나 부정적인 평가를 받았던 이 프로젝트는 인턴기간 내내 저를 불편하게 만들었습니다. 그러던 도중 우연히 우아한 형제들에서 새롭게 시작한 우아한 테크캠프라는 코딩 교육과정에 대해 알게 되었습니다. 이 과정이 시작할 때만 해도 저는 정규직 전환이 결정되지 않은 상태였기 때문에 이 과정을 신청했고 본격적인 수업이 시작되기 전 온라인으로 이뤄지는 프리코스에 참여해 볼 수 있었습니다. 그런데 이 우아한 테크코스의 정규 커리큘럼에도 웹 서버를 직접 구현하고 서블릿 컨테..
- Total
- Today
- Yesterday
- 동적계획법
- html
- Count
- GROUP BY
- was
- 클린코드
- 전략패턴
- Spring in Action
- 크롬
- 몰라서망신
- 문장 생성기
- java
- 마르코프 연쇄
- REST API
- Markov
- Warning
- 유지보수
- 야근
- DP
- 경고
- RESTful
- 로그
- 디자인패턴
- markov chain
- 코딩의 기술
- 마르코프
- restful api
- 자바스크립트 개론
- CONVENTIONS
- 자바스크립트개론
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |