비전공 개발자로 CS공부를 하면서 가장 어려운 것은 역시 알고리즘이다. 나에게 알고리즘 문제는 마치 아이큐 테스트 같이 느껴진다. 공부를 해도 발전이 느껴지지 않는다. 그럼에도 대부분의 기업에서 알고리즘 문제로 코딩테스트를 보기 때문에 특히 좋은 회사일 수록 어려운 문제를 내는 경향이 뚜렷하기에 손에서 놓을 수가 없다. 이번에 푼 문제는 프로그래머스에서 제공하는 문제다. 혹시 저작권 문제가 있을지도 몰라 문제의 내용은 링크로 대체한다. 이번 풀었다고는 했지만 이 문제를 거의 2주일 동안 고민했다. 물론 매일매일 이어지는 야근 속에 깊이 고민할 시간이 대체로 부족하기는 했지만 그럼에도 2주 동안 답을 찾지 못하고 있었다. 그러다 오늘 아침 조금 일찍 출근해 문제를 풀다보니 실마리가 보였다. 순식간에 답을 ..
프론트엔드에서 '만' 유효성 검사를 하는 것이 좋지 않다. 이에대해 자세하게 설명한 블로그가 있다. 내용을 요약하면 클라이언트의 개발자 도구로 유효성 검사 부분을 무력화 하는 것이 충분히 가능하기 때문에 반드시 서버에서 유효성 검사를 해 줘야 한다는 것이다. 그래서 유효성 검사를 하는 안전한 방법은 두 가지다. 프론트와 백엔드 양쪽에 모두 검증 코드를 작성한다. 백엔드에 검증 코드를 작성 후, 백엔드 결과에 따라 프론트는 메세지만 노출한다. 이런 사실은 미리 알고 있었기 때문에 나는 항상 백엔드에서 검증코드를 만들어 왔는데 실무에서 직접 유효성 검사 코드를 작성하다보니 역시 프론트단에서도 유효성 검사는 필요하다. 사실 개발자 도구를 통한 회피는 쉽게 발생하는 일이 아닌데 프론트엔드에서 쉽게 처리할 수 있..
코드에 상수를 남기는 것은 좋지 않다. 그 상수가 무엇을 의미하는지 쉽게 이해하기 힘들 뿐더러 그 상수 값 하나를 바꾸기 위해 수천라인의 코드를 한 줄 한 줄 다 뒤져야 할 수도 있다. 이것은 HTML 안에서도 마찬가지이다. 아래와 같은 코드가 있다고 해 보자. make popup 버튼 태그 onclick 속성을 보면 클릭했을 때 makeNewPopup이라는 함수를 호출하고 있다. 그런데 파라미터로 전달되는 상수 1이 의미하는 것은 무엇일까? 이 코드만 봐서는 도무지 알 수가 없다. 이 상수를 생성되는 popup의 타입이라고 생각해보자. 이 상수를 조금 더 가독성 있게 표현할 수 있는 한 가지 방법은 자바스크립트의 전역변수로 선언을 해 놓고 사용하는 것이다. ... make popup 이렇게 하면 생성되..

웹서버는 클라이언트로 부터 요청받은 자원을 클라이언트로 전달해 줘야 합니다. 이 때 클라이언트가 어떤 종류의 정적파일, 그러니까 HTML 파일이나, 이미지, 혹은 PDF 같은 파일을 요청했다면 웹서버는 그 파일을 다시 클라이언트로 전송해 줘야 합니다. 물론 HTTP 응답의 형태를 따라야 합니다. HTTP Response 가 어떤 모습인지 잠깐 살펴 보겠습니다. 가장 첫번째 줄에는 상태 라인(status line)이 위치하고 있습니다. 상태 라인에는 순서대로 현재 HTTP 버전 정보, 상태 코드, 상태 텍스트가 포함되어 있습니다. 상태코드는 현재 응답의 상태를 나타냅니다. 100번 대는 조건부 응답, 200번 대는 성공, 300번 대는 리 다이렉션, 400번 대는 요청 오류, 500번 대는 서버 오류를 나..

스프링이 제공하는 거의 모든 기본 사상은 몇 가지 기초적인 개념으로 귀결되며, 이는 스프링의 기본 임무인 '자바개발 간소화'에 모든 초점을 맞춘다. 물론 특정 기능을 간소화 하는 프레임 워크는 많이 존재 한다. 하지만 스프링의 목적은 자 바개발을 폭넓게 간소화 하는 데 있다. 자바 복잡도 간소화를 위한 스프링의 네 가지 주요 전략 POJO를 이용한 가볍고(lightweight) 비침투적(non-invasive)인 개발* DI와 인터페이스 지향(interface orientation)을 통한 느슨한 결합도(loose coupling) 애스펙트와 공통 규약을 통한 선언적(declarative) 프로그래밍 애스펙트와 템플릿(template)을 통한 반복적인 코드 제거 * 비침투적 개발은 바탕이 되는 기술을 사..

웹 서버의 가장 기본적인 기능은 클라이언트의 요청을 받아 요청된 자원을 넘겨주는 것입니다. 그러려면 일단 클라이언트가 보내는 HTTP Requset를 받고 해석할 수 있어야 합니다. 그럼 먼저 HTTP Request 가 어떤 모습으로 전송 되는지를 알아 보겠습니다. 실제로 웹 브라우저가 보내는 HTTP Request의 모습입니다. 가장 첫번째 줄에는 요청에 대한 요약된 정보가 전해집니다. 가장 처음에 등장하는 것은 HTTP method 종류입니다(참고). 이 메소드는 이 요청이 수행해야할 동작에 대한 정보를 담고 있습니다. 그리고 나오는 것은 요청된 URL입니다. 이 URL은 요청한 자원의 절대경로일 수도 있고 매핑된 서블릿의 이름일 수도 있습니다. 그리고 마지막으로 HTTP 버전 정보가 표시됩니다. 두..

웹 애플리케이션이 동작하는 방식을 단순하게 표현하면 위의 그림과 같을 것입니다. 클라이언트가 웹 브라우저를 통해 웹 서버에 필요한 자원을 요청하면 서버가 사용자가 요청한 것을 넘겨 주게 되겠죠. 자원(resource)이라고 하는 것은 HTML 페이지나 그림파일 혹은 PDF 파일이 될 수도 있습니다. 중요한 것은 클라이언트가 요청하면 서버는 그 요청에 응답한다는 것입니다. 클라이언트와 서버가 요청과 응답을 주고 받기 위해서는 서로 같은 규칙을 가지고 대화해야 합니다. 웹 애플리케이션에서 주로 사용하는 대화의 규칙은 HTTP(Hyper Text Transfer Protocol) 입니다. 클라이언트가 HTTP 요청을 보내면 서버는 HTTP 응답으로 대답합니다. HTTP는 이렇게 요청(Request)과 응답(R..

WAS를 구현하게 된 이유 WAS를 구현하는 것은 원래 지금 다니고 있는 회사의 인턴 과제 중 하나였습니다. 하지만 저는 이 과제에 아주 부정적인 평가를 받았었습니다. 그때는 정규직 전환이 물 건너갔다고 생각을 했었죠. 이후 다행히 정규직 전환은 했으나 부정적인 평가를 받았던 이 프로젝트는 인턴기간 내내 저를 불편하게 만들었습니다. 그러던 도중 우연히 우아한 형제들에서 새롭게 시작한 우아한 테크캠프라는 코딩 교육과정에 대해 알게 되었습니다. 이 과정이 시작할 때만 해도 저는 정규직 전환이 결정되지 않은 상태였기 때문에 이 과정을 신청했고 본격적인 수업이 시작되기 전 온라인으로 이뤄지는 프리코스에 참여해 볼 수 있었습니다. 그런데 이 우아한 테크코스의 정규 커리큘럼에도 웹 서버를 직접 구현하고 서블릿 컨테..
- Total
- Today
- Yesterday
- 자바스크립트 개론
- 유지보수
- 로그
- 마르코프
- html
- restful api
- 자바스크립트개론
- markov chain
- 문장 생성기
- Warning
- DP
- Markov
- REST API
- CONVENTIONS
- 전략패턴
- 경고
- RESTful
- 디자인패턴
- 클린코드
- was
- 코딩의 기술
- 야근
- 크롬
- 몰라서망신
- 동적계획법
- Spring in Action
- GROUP BY
- Count
- 마르코프 연쇄
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |