dlaxodud2388의 등록된 링크

키자드에 등록된 총 395개의 포스트를 확인하실 수 있습니다.

Naver Blog

[HTTP] 504 Gateway Timeout을 발생시킬 수 있는 Keep-Alive와 멍청한(dumb) 프락시

우선, 이 문제는 Keep-Alive를 쓸 때에 발생할 수 있는 문제이다. 예시로 다음과 같은 상황을 설정하겠다.위와 같이 클라이언트는 하나의 프락시와 다른 서버로 통신하는 상황이라고 가정하자. 이 때, 프락시 서버가 Keep-Alive가 뭔지 모르는 멍청한 프락시라고 가정하겠다. 이전에 Keep-Alive에 대해서 간단히 설명하자면, 이 Keep-Alive는 HTTP 메시지의 Connection 헤더의 헤더 필드명이다. 따라서, Connection:Keep-Alive와 같이 사용된다. 여기서 알아야 할 것은, Connection 헤더에는 홉별(hop-by-hop) 헤더 명을 기술된다. 홉별(hop-by-hop)이라는 것은 특정 두 서버간에만 영향을 미친다는 것을 이야기하는데, 그 말인 즉슨, 클라이언.......

Naver Blog

[JavaScript] 팩토리 메서드 패턴(factory method pattern)

이 팩토리 메서드 패턴은 객체지향 디자인 패턴이다.이 패턴은 상위 클래스에 알려지지 않은 구체화된 클래스를 생성하는 패턴이며, 하위 클래스가 어떤 객체를 생성할 지 결정하도록 하는 패턴이다.코드로 예시를 들자면 다음과 같다.결과는 다음과 같다.

Naver Blog

[Spring] DAO 리팩토링과 템플릿 메서드 패턴(Template method pattern), 팩토리 메서드 패턴(Factory method pattern)

1. 템플릿 메서드 패턴이란? 우선, GoF DesignPattern에서 말한 템플릿 메서드 패턴의 정의는 다음과 같다.Defines the skeleton of an algorithm in a method, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithms structure."알고리즘의 골격을 메서드로 정의하고, 일부 단계의 하위 클래스로 연기한다. 하위 클래스가 알고리즘 구조를 변경하지 않고 알고리즘의 특정 단계를 재정의 할 수 있도록 한다"는 이야기이다.이를 간단하게 사용자DAO를 만들고 리팩토링하며 적용하여 보겠다.우선 아래와 같이 사용자 정보 저장용 DAO가 있.......

Naver Blog

[Spring] System.out.println()을 이용한 디버그용 로그가 서버 성능에 미치는 영향과 해결방법

많은 개발자들이 로그를 찍기 위해 Sysout 메서드를 사용한 시스템 로그를 사용한다. 이는 확인하기 정말 편리하지만, 서버의 성능에 영향을 주는 경우가 많다.System.out.println()으로 로그가 출력되는 윈도 콘솔을 활성화 시켰을 때의 문제점을 생각해보자.System.out.println()을 사용했기 때문에, OS가 윈도우라고 생각하면 화면에 출력을 할 것이다. 이처럼 화면에 출력하게 될 경우는 CPU를 많이 점유하게 된다. 특히 커널모드 상태에서의 CPU를 많이 차지하게 된다.이는 System.out.println()을 지움으로써 서버 성능을 확 개선시킬 수 있다.실제 예시를 들겠다.ex) 한 번 요청 시 5000명의 사용자를 요청하고, 처리 과정에서 응답시간이.......

Naver Blog

HTTP 응답코드 413(PayloadTooLargeError: request entity too large) 원인, 해결

이 에러는 request의 body가 크면 발생하는 에러이다. express로 예시를 간단하게 들어보겠다.위와 같이 text부분에 텍스트를 치고 제출을 하면 아래처럼 다른 페이지에서 그 텍스트를 띄워주는게 있다고 가정하자.제출을 누르면 위와 같이 가나다라마바사가 뜰것이다.그리고 개발자 도구에서 network탭을 가서 보면 아래와 같이 FormData 부분에 가나다라마바사 가 있을 것이다.example 이라는 name으로 "가나다라마바사"라는 데이터를 보낸 것이다.이런 경우는 문제없이 돌아갔지만, 만약 저 FormData에 들어갈 글자의 양이 어마어마하게 많다면 어떻게 될까?아래처럼 말이다.결과는 HTTP코드 413과 PayloadTooLar.......

Naver Blog

[Mysql 오류] Error Code: 1175. You are using safe update mode and you tried to update... 해결

mysql workbench를 사용하던 중 auto_increment 를 재정렬 하는 작업을 하다 아래와 같은 오류가 발생했다.workbench에서 Edit -> Preferences... 로 들어가면 다음과 같은 창이 나온다.거기서 SQL Editor로 들어간 뒤 위에 보이는 것처럼 Other에서 Safe Updates 체크를 풀어준다.이후 워크벤치를 껐다 켜면 오류가 해결된다.

Naver Blog

[Java 오류] java.lang.IndexOutOfBoundsException 오류

이 오류는 리스트와 같은 자료형들에서 인덱스의 범위를 벗어나는 경우에 발생한다.그렇다면 위 에러를 발생시키는 코드를 작성해보겠다.위 코드를 실행하면 다음과 같은 결과를 받을 수 있다.이처럼 정해진 길이를 벗어나서 접근하려 할 경우 IndexOutOfBoundsException 에러가 발생한다.

Naver Blog

[Git 오류] ![rejected] master -> master (fetch first) 에러 해결방법

위와 같이 push를 하려는데 ! [rejected] master -> master (fetch first) 에러가 발생하였다. 이는 기존 데이터가 손실이 있을 수 있어 진행이 안되게 하는 것이다.해결방안에는 두 가지가 있다.1. 위와 같이 "git push origin +master"를 사용한다. 이로 해결할 수 있지만, 이는 변경내용만 push 되는것이 아니라 소스 전체가 다시 push되는 것이기에, 기존의 데이터를 보장할 수 없다.2.fetch작업을 해준다.이후 위와 같이 "! [rejected] master -> master (non-fast-forward)" 에러 발생 시 다시 rebase 해준 뒤 임시 브랜치를 만들고 HEAD를 지정해주면 해결할 수 있다.

Naver Blog

[Java 오류] java.lang.NullPointerException

어떤 참조 자료형도 null이 될 수 있다.null 체크를 하지 않는다면 객체에 있는 모든 메서드들이 예외를 발생시킬 수 있다.예시를 들겠다.위 코드는 아래와 같은 결과를 만들어낸다.null인 객체의 메소드에 접근하였기 때문에 위와 같이 NullPointerException이 발생한 것이다.위와 같이 객체가 "=="이나 "!="를 이용하여 null인지 아닌지 를 체크한다면 예상하지 못한 NullPointerException도 발생시키지 않을 수 있다.매개변수로 넘어오는 객체가 null이 될 확률이 조금이라도 있다면 꼭 확인할수있도록 하는게 좋다.

Naver Blog

[Java 오류] 오버라이딩시 Unresolved compilation problem: The return type is incompatible with...

예시를 들겠다.위처럼 상속관계에 있는 Parent클래스와 Child클래스에 같은 이름의 hello()라는 메서드가 있다. 여기서 메서드 리턴 타입이 다르게 되면 아래와 같은 에러가 발생하게 된다.오버라이딩을 위해서는 아래와 같은 조건을 충족해야한다.1. 메서드의 이름2. 메서드의 리턴 타입3. 메서드의 매개변수의 갯수, 순서, 데이터 타입이렇게 메서드의 형태를 정의하는 사항들을 통틀어 메서드의 서명이라고 한다.따라서, The return type is incompatible with... 에러는 메서드간 서명이 달라 발생한 문제이다.

Naver Blog

[GIT] 로컬 저장소와 github 원격 저장소 연동하기, 최초 커밋(commit)+푸시(push)하기

우선 github와 연동할 로컬 저장소를 만들어줍시다.이와 같이 그냥 폴더를 하나 만들어주면 됩니다.이후 git Bash를 실행해줍니다.1. 이름, 이메일 설정만약 자신이 git Bash 사용이 처음이라면, 이름과 이메일 설정을 해주어야 합니다.설정은 다음과 같이 할 수 있습니다.2. github에서 레포지토리 생성자신의 github에 들어가서 보면맨 오른쪽에 New를 볼 수 있다. 저 new를 눌러주면 새로운 레포지토리를 생성할 수 있다.테스트용으로 간단하게 레포지토리를 생성해 보겠다.이와 같은 형태로 레포지토리를 생성해주자.이후 create repository를 눌러주면 레포지토리 생성이 완료된다.3. 로컬 저장소와 깃 연동 이후 아까 그 git b.......

Naver Blog

[GIT] git add 취소하기

간단한 예시를 들겠다. 실수로 .gitignore에 node_modules/를 빼놓은 상태에서 아래와 같이 실수로 add (Untracked -> Tracked)를 하여 모든 파일들이 Staging Area에 들어갔다고 가정하자.이럴 경우 "git reset HEAD [파일명]"을 사용하여 git add를 취소할 수 있다.위와 같이 파일이 너무 많은 경우 파일명을 적지 않으면 모두 취소할 수 있다.아래와 같이 사용하여 저 많던 파일들이 모두 Staging Area에서 Unstaged로 돌아갔다.

Naver Blog

[GIT] git commit 취소하기

커밋을 해야하는데 특정 파일을 빼먹고 실수로 커밋을 했다고 가정하자.우선 " git log "명령어로 commit 목록이 확인 가능하다.위 file1.txt파일이 커밋 계획에 없던 파일인데 아래와 같이 실수로 add후 commit까지 해버렸다고 가정하자. 이를 git log명령어를 통해 확인해보면 다음과 같이 나온다.맨 위에 커밋기록이 남는다.이제 commit을 취소하는방법 3가지를 보겠다.1. commit 취소 후 해당 파일들을 staged 상태로 워킹 디렉터리에 보존하는방법명령어는 다음과 같다.위와 같이 사용하면 아래와 같이 커밋됐던 파일이 staged상태로 돌아온다.(add만 한 상태)2. commit 취소 후 해당 파일들을 Unstaged 상태로 워킹 디렉터.......

Naver Blog

[GIT] git push 취소하기

https://dlaxodud2388.blog.me/221968546308우선 위 글에서처럼 commit을 먼저 되돌린다. 가장 최근 또는 원하는 commit을 취소하고 워킹 디렉터리를 되돌린다.원하는 시점으로 워킹 디렉터리를 돌리는 법은 다음과 같다.예시로 git reflog를 사용하면 아래와 같이 나오게 된다.이렇게 커밋을 되돌린 뒤, 다시 add 후 커밋을 해준다.이후 아래 명령어를 사용하여 강제로 push 해준다. 위와 같이 하면 아래와 같이 푸시가 완료된다.참고로, 이 명령을 사용하면 로컬 내용을 remote에 강제로 덮어쓰는 것이기 때문에 주의해야한다. 되돌아간 commit 이후의 모든 commit 정보가 사라지게 된다.협업 프로젝트에서 이 방법을 함부로 사용했다간 동기.......

Naver Blog

[Git 오류] Git pull 충돌시 해결방법(Your local changes would be overwritten by merge.)

위와 같이 git pull을 사용하였는데 에러가 발생하였다.위와 같은 에러는 "git stash" 명령어를 이용해 해결할 수 있다.이후 git pull origin [branch] 를 사용하면 아래와 같이 pull이 정상적으로 되는것을 확인할 수 있다. (이 글의 사진들은 intelliJ를 사용한 사진들이다.)이 에러는 git pull을 하였을 때 충돌되는 파일들이 있기에 발생하는 에러이다.git stash는 Unstaged 상태의 파일들을 임시 저장한 뒤 HEAD 상태로 백업을 하는 것이다. (임시 저장하는 것이기에, 다시 불러와 적용이 가능하다.)

Naver Blog

[OS] 시스템 콜 (System Call)

"시스템 호출"이라고도 불리는 이 시스템 콜(System Call)은 일반적인 프로세스가 OS가 제공...

Naver Blog

[Node.js] 서버와 클라이언트, 이벤트 루프

1. 서버와 클라이언트- 서버란, 네트워크를 통해 클라이언트 정보나 서비스를 제공하는 컴퓨터 또는 프로...

Naver Blog

[Node.js] 논블로킹 I/O와 싱글스레드

1. 논블로킹 I/O- 논블로킹 방식이란?오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행...

Naver Blog

[Node.js] Express 프레임워크 구조, 서버 실행

- Express만의 폴더 구조, 파일 구조가 있다.- 직접 만들어도 된다. - 이 폴더 구조를 쉽게 만들 수 있다....

Naver Blog

[Node.js] Express의 app.js, 라우터 사용법

터미널에 npm init이라는 명령어를 쳐 준다.npm init이라는 명령어는 새로운 node.js프로젝트나 패키지를...

Naver Blog

[Node.js] 쿠키와 Express-Session 미들웨어 사용법

1. 쿠키란?우리가 인터넷 브라우저를 쓸 때, 웹 페이지를 닫았는데도 다시 접속하면 아이디와 로그인이 ...

Naver Blog

[Node.js] Express 템플릿엔진 PUG(구 Jade) 사용

1. 템플릿 엔진 사용 이유우선, 재사용성이 매우 높다. 우리가 웹 앱을 만들다 보면, 똑같은 디자인의 페...

Naver Blog

[회고/계획] 4/27~5/20 회고 및 계획

2020년 4월 27일부터 5월 20일까지의 회고이다.입대 전에 몇달동안 학교 커뮤니티를 제작하는 프로젝트를 ...

Naver Blog

[Node.js 오류] HTTP 응답코드 404 (Not Found) 오류

HTTP 404 Not Found는 굉장히 자주 봤을법한 오류이다.404 Not Found 오류는 접근한 URL에 리소...

Naver Blog

[회고/계획] 5.21~7.05 회고 및 계획

5.21~7.05 회고 및 계획이다.5월 21일에 휴가 복귀를 했었다. 복귀 후 중대 내에 개발하는 선임 한분이 있...

Naver Blog

[HTTP] HTTP 트랜잭션 지연과 커넥션 관리

1. HTTP 트랜잭션 지연트랜잭션을 처리하는 시간은 TCP 커넥션을 설정하고, 요청을 전송하고, 응답 메시지를 보내는 것에 비하면 상당히 짧다는 것을 알 수 있다.여러 가지 지연 원인들이 있을 수 있지만, 대부분의 HTTP 지연은 TCP 네트워크의 지연에 의해 발생한다.많은 지연 원인들 중 몇 가지 지연 원인들에 대해 알아보겠다. 1) 클라이언트는 URI에서 웹 서버의 IP 주소와 포트번호를 알아야 한다. URI에 기술되어 있든 호스트에 방문한 적이 없다면, DNS resolution(DNS 이름분석) 인프라로 URI의 호스트명을 IP 주소로 변환하는데 시간이 걸리게 될 수 있다. 그러나 이는 인터넷 인프라의 발전으로 대부분 밀리초 단위로 끝나게 된.......

Naver Blog

[HTTP] HTTP/1.0+의 Keep-Alive 커넥션, HTTP/1.1의 지속 커넥션과 파이프라인 커넥션

1. HTTP/1.0+ 의 "Keep-Alive" 커넥션우선 http/1.0 브라우저와 서버들은 keep-alive 커넥션이라는 지속 커넥션 지원을 위해 확장되었다.(다소 실험적이였다.)이 초기의 지속 커넥션은 설계적인 측면에서 조금 문제가 있었지만 이는 HTTP/1.1에서 수정되었다.1-1. Keep-Alive커넥션의 장점우선 커넥션을 맺고 끊는데 필요한 작업이 없기 때문에 시간이 단축된다.또한, TCP의 느린 시작이 일어나지 않기 때문에 요청 및 응답시간도 줄어든다.아래 그림은 연속과 지속의 비교이다.1-2. Keep-Alive 동작우선 HTTP/1.0 keep-alive 커넥션을 구현한 클라이언트는 커넥션을 유지하기 위해 요청에 Connection:Keep-Alive를 포함시킨다.이.......

Naver Blog

[HTTP] 쿠키 - 세션쿠키(Session Cookie), 지속쿠키(Persistent Cookie)

1. 클라이언트 식별/ 쿠키HTTP는 익명으로 사용하고, 상태가 없고, 요청과 응답으로 통신하는 프로토콜이다.서버는 클라이언트가 보낸 요청을 처리하고 그 응답을 클라이언트로 전송한다.웹 서버는 요청을 보낸 사용자를 식별 또는 방문자가 보낸 연속적인 요청을 추적하기 위해 약간의 정보를 이용 가능하다.1-1. 세션 추적HTTP 트랜잭션은 상태가 없다. 각 요청은 독립적으로 일어나고 많은 웹사이트에서 사용자가 사이트와 상호작용이 가능하도록 사용자의 상태를 남긴다. 그런데 이 상태를 유지하려면 웹 사이트는 HTTP 트랜잭션이 어떤 사용자에서 오는지 식별할 방법이 필요하다.그 중 이 글에서는 식별 정보를 지속해서 유지하는.......

Naver Blog

[HTTP] 콘텐츠 인코딩(Content-Encoding), Accept-Encoding 헤더

1. 콘텐츠 인코딩이란?HTTP 애플리케이션은 종종 콘텐츠를 보내기 전 인코딩을 하려 한다.두 가지 상황으로 예시를 들겠다.1) 느린 속도로 연결된 클라이언트에게 큰 HTML을 전송하기 전이라고 해보자. 서버는 전송시간을 줄이기 위해 압축을 할 수 있다.2) 허가받지 않은 사람이 볼 수 없게 하기 위해 인코딩하여 콘텐츠를 암호화하거나 뒤섞어 보내기가 가능하다.이러한 인코딩은 발송하는 쪽(서버)에서 콘텐츠에 적용된다.콘텐츠 인코딩이 끝난 데이터는 엔터티 본문에 담아 수신자(클라이언트)에게 전달된다.2. 콘텐츠 인코딩 과정1) 웹 서버가 Content-Type, Content 헤더를 수반한 응답 메시지를 생성한다.2) 콘텐츠 인코딩 서버.......

Naver Blog

[HTTP] 전송 인코딩과 청크 인코딩

1. Transfer-Encoding 헤더전송 인코딩 제어와 서술을 위해 정의된 헤더는 2가지이다.1) Transfer-Encoding (응답) 안전한 전송을 위해 어떤 인코딩이 메시지에 적용되었는지 수신자에게 알려준다.2) TE (요청) 어떤 확장된 전송 인코딩을 사용할 수 있는지 서버에 알려주기 위해 요청헤더에 사용한다.예시 1)위 예시는 chunk-encoded 메시지와 메시지 끝에 트레일러가 오는 것을 받아들일 수 있음을 서버에 알려주기 위해 TE 헤더를 사용하는 요청이다.(HTTP/1.1 애플리케이션)예시2)위 예시는 수신자(클라이언트) 에게 청크 인코딩으로 전송되었음을 알리기 위해 Transfer-Encoding 헤더를 포함한 응답 메시지이다. 위 기초 헤더 뒤에는.......

Naver Blog

[회고/계획] 4/12~4/26 회고, 앞으로의 계획

4/12~ 4/26까지 회고이다.그동안 주말마다 꾸준히 HTTP 공부를 하고 남는 시간마다 포스팅을 하려고 했던 것 같다. 정말 고민이 많았던 2주였다.원래는 HTTP 이후 데이터베이스를 공부할까 했었는데 막상 책들을 찾아보니 컴퓨터 없이 이 곳에서 공부하기에는 효율이 너무 안나올 것 같았다. 뭘 공부하는게 가장 효율이 좋을지도 막 생각해보았다. 그 외로도 공부 고민이 정말 많았다. 그러다 현업에서 일하고 계신 학교 선배분들 중 한 분께 상담을 대충 받았고, 그러다 "커리어 스킬"이라는 책을 추천받았다. 위 책인데, 목차를 보고 앞으로 개발자로 사는데 인생계획을 세우는데 크게 도움이 될 것 같아 바로 구매했다.종종 시간날.......

Naver Blog

[Java] 일정하지 않은 개수의 매개변수 (parameter ...)

메서드를 생성할 때 매개변수의 갯수가 정확히 지정이 안되어있고, 호출마다 바뀌는 경우가 있을 수 있다.이에 가장 쉬운 방법은 배열을 매개변수로 넘겨주는 것이다.아래와 같이 사용할 수 있을 것이다.위와 같은 방법으로 배열을 사용할 수 있지만, 매개변수로 넘겨줄 때 숫자들을 모두 배열로 만들어 넘겨주어야 한다는 문제가 발생한다.따라서 자바에서는 아래와 같이 임의 개수의 매개변수를 넘겨줄 수 있는 방법을 제공한다.위와 같이 "타입...변수명" 으로 선언해주면 numbers를 배열로 인식하여 처리할 수 있다.참고로 여기서 ...을 적어줄 때 점을 연속해서 적어주어야 한다. (공백이 있으면 안된다.)또한 주의할 점이 있.......

Naver Blog

[Java] 상속(extends)

자바에서는 "상속"이라는 개념이 있다.우선 국어사전에서 상속의 뜻부터 찾아보겠다.자바에서는 위 뜻들 중 2번째 뜻과 유사한 의미로 "상속"이라는 개념이 사용된다.우선 자바에서 상속이 무엇인지 알아보기 전에, 예시를 들어보겠다.우선 사람(Person)이라는 클래스가 있다고 가정해보자.사람은 움직일 수 있으니까 Person클래스에 move() 메서드를 만들었다.그리고 사람을 두 가지로 나눠보자면 남자와 여자로 나눌 수 있을 것이다.즉, 남자이거나 여자여도 결국 사람에 속하는 것일 것이다.그림으로 나타내면 다음과 같을 것이다.남자와 모두 사람이기 때문에 움직일 수 있을 것이다.즉, 남자는 사람으로서의 move()메.......

Naver Blog

[Java] 상속과 생성자, super()

1. 상속https://dlaxodud2388.blog.me/221956914076우선, 위 글에서 상속에 대해 설명했었다.위 글에서 설명했던 예시로 다시 설명하겠다.위 코드를 컴파일 후 실행했을 때의 문제는 없을 것이다.그렇다면 아래 코드는 어떨까?위 코드는 다음과 같은 에러가 발생 할 것이다.위 에러가 발생하는 이유는 다음과 같다.우리는 Main 클래스에서 Male 클래스를 인스턴스화해서 woochan이라는 인스턴스를 생성했다.자바는 부모의 매개변수가 없는 기본 생성자를 찾는 것이 기본이다.자식 생성자를 호출했으니, 부모의 기본 생성자부터 올라가서 찾는 것이다.사람이고 나서야 남자, 여자를 정할 수 있는데 우리는 남자 클래스만 인스턴스화 하도록 코드.......

Naver Blog

[Node.js] Cheerio-httpcli와 jsdom을 이용한 간단한 크롤링

Cheerio-httpcli 공식문서 : https://www.npmjs.com/package/cheerio-httpcliJSDOM 공식문서: https://www.npmjs.com/package/jsdom우선 간단하게 멜론에 있는 인기차트에서 1등 제목만 가져와보도록 하겠다.크롤링하여 제목을 가져오기 위해 cheerio-httpcli모듈과 jsdom모듈을 사용하겠다.이후, 우선 cheerio-httpcli의 기본 형태는 다음과 같다.jsdom의 기본 형태는 다음과 같다.jsdom을 사용하기 위해 주로 JSDOM 생성자를 사용한다.생성자에 문자열을 전달을 하면 된다.우리는 이 생성자에 cheerio-httpcli에서 얻은 html을 그대로 가져다 넣을 것이다.위 두 예시처럼 가져와 다음과 같이 사용했다.결과는 다음과 같다.참고로 jsdom으.......

Naver Blog

[Node.js] Node.js 기반 ORM Sequelize.js 사용법

우선, Sequelize.js 는 Node.js 기반 ORM이다. 공식적으로는 Mysql, PostgreSQL, MariaDB, SQLite, MS-SQL을 지원한다.sequelize.js 는 다음과 같이 사용 가능하다.1. 기본 세팅우선 이 3가지를 npm에서 설치한다. 그리고 다음과 같은 명령어를 터미널에 입력한다.이 명령어를 치게 되면, config라는 폴더가 생기고 config.json이라는 파일이 생성된다.이 config.json을 수정해주자.첫 코드는 다음과 같다.config/config.json우선 mysql을 이용해 sequelize를 사용하겠다.mysql을 사용할 예정이므로 dialect부분을 mysql로 바꿔주자.username과 password부분은 connect할때 user부분과 password부분에 맞게 써주자.database부분은 schema의.......

Naver Blog

[TypeScript] TypeScript로 Node.js express서버 구축하기

1. 프로젝트 생성.노드 프로젝트에서 package.json을 만들 때처럼 아래와 같이 npm init을 해줍니다. 이후 설정은 입맛에 맞게 설정해줍니다.2. express 환경을 구성하기 위해 필요한 모듈들 설치.(템플릿엔진 일단 ejs를 사용하였습니다.)typescript도 같이 설치해줍니다.3. tsconfig.json 설정 TypeScript 컴파일은 tsc라는 명령어를 이용하여 컴파일합니다.이후 아래와 같은 명령어를 터미널에 입력해줍니다.입력하면 tsconfig.json이라는 파일이 생성됩니다.여기서 tsconfig.json이라는 파일은 컴파일러 옵션을 설정하고 프로젝트를 컴파일하는데 필요한 루트파일을 지정합니다.처음 tsconfig.json이란 파일이 생성되면 내용은 다음과.......

Naver Blog

[GIT] 브랜치 관리 전략 Git-flow

1. git-flow란?우리는 git을 이용하여 프로젝트를 협업하여 진행하곤 한다.git을 사용하면 우리는 'branch(가지뻗기)'을 하고, 'commit(커밋)'을 하고 merge('병합')을 한다. 이렇게 수많은 브랜칭 작업들을 하는데, 이 Git-flow는 소프트웨어 소스코드를 관리하고 출시하기 위한 브랜치 관리 전략(branch management startegy) 이다.2. 브랜치들Git-flow에는 기본적으로 2가지 종류의 주요 브랜치가 있고, 3가지의 보조 브랜치가 있다.2-1. 주요 브랜치들2-1-1. master (배포 브랜치) 이 브랜치는 'origin/master'에 두고 먼저 배포했거나 배포 준비가 된 코드들을 두고 관리하는 브랜치이다. 따.......

Naver Blog

[HTTP] 쿠키(Cookie)와 세션(Session)

우선 쿠키와 세션에 대해서 알아보기 전에 HTTP 프로토콜이 무엇인지 알아보자.1. HTTP 프로토콜이란?- Connectless 하고 Stateless 한 프로토콜이다. - Connectionless : 클라이언트가 서버에 요청을 하고 서버가 클라이언트에게 응답을 보내면 접속을 끊는다. - Stateless : 통신이 끝나면 상태 정보를 유지하지 않는다.Connectionless 하고 Stateless 한 HTTP 프로토콜을 사용하면서 서버가 클라이언트를 식별할 수 있는 방법이 필요했고 쿠키(Cookie)와 세션(Session)을 사용하게 된 것이다. 2. 쿠키(Cookie) 란? 쿠키란 HTTP의 일종으로, 사용자가 어떤 웹 사이트를 방문하면 그 사이트가 저장하고 있는 서버에서 인터넷.......

Naver Blog

[Node.js] Passport 인증 미들웨어와 sequelize.js를 사용한 로그인/회원가입 구현

passport.js를 사용하여 로그인을 구현하기 전에, 쿠키/세션에 관한 글과 sequelize.js 사용법에 관한 글은 아래 링크에서 다뤘었습니다.https://dlaxodud2388.blog.me/221777840040https://dlaxodud2388.blog.me/2217300965921. 프로젝트 기본 구조 세팅우선 간단하게 npm init을 하고 프로젝트 설정을 해줍니다.그리고 프로젝트에 사용할 기본적인 모듈들을 npm에서 설치해줍니다.(서버사이드 렌더링으로 템플릿 엔진은 ejs를 사용할 예정입니다.)nodemon은 package.json에서 "start":"nodemon app"과 같은 형태로 넣어서 사용해줍시다.그리고 sequelize를 사용하기 위해 npm을 받아줍시다.이후 sequelize를 사용하기 위.......

Naver Blog

[오류모음] [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

Node.js express의 nodemailer 모듈을 이용하여 회원가입 OTP 인증을 구현하던 중 Unhandled rejection Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 에러가 발생하였다.한 곳에 응답이 중복되게 들어가면 발생하는 오류이다. (너무 생각없이 짰다...)if문과 반복문에서 중복처리가 되어있을 경우에 주로 발생한다.위의 코드로 바꿔주어 해결하였다.

Naver Blog

[Node.js] nodemailer를 이용한 이메일 발송

우선 nodemailer는 Node.js에서 구축한 서버에서 메일을 보낼 수 있게 도와주는 메일 전송 모듈입니다.회원의 비밀번호 찾기, 가입 인증 등 다양하게 사용 할 수 있습니다.사용방법은 다음과 같습니다. (Gmail 발송을 예시로 들겠습니다.) 우선 nodemailer 모듈을 설치해줍시다.이후 구글 아이디와 비밀번호는 .env 파일에 적어줍니다.(.env)이후 메일을 전송하는 라우터를 만들겠습니다.(routes/index.js)이런 형태로 작성하고 메일을 발송하면 다음과 같은 에러가 발생할 수 있습니다.이 에러가 발생 할 경우 https://myaccount.google.com/lesssecureapps위 링크로 들어가서 위와 같이 보안 수준이 낮은 앱을 사용하도록 체크해주시면 됩.......

Naver Blog

[회고/계획] 군대 다녀오겠습니다.

2020년 03월 03일 입대하게되었습니다.입대를 앞두고 작년 2019년부터 지금까지를 회고하고 그 이후의 계획을 써보려고 합니다. 제작년 말쯤(2018년 12월)에 서버 개발에 관심이 생기고 Node.js 를 시작 한 뒤로 처음에는 굉장히 공부하는게 막막했었습니다. 아무래도 자바스크립트 외에는 아무런 지식도 없이 무작정 시작했었기에 시작하고 몇달 채 되지도 않은 상태에서 그랬던 것 같습니다. 이 때문에 학교에서 몇몇 교수님들도 찾아뵈어 상담도 받아보고 이미 졸업하셔서 좋은 곳에 취업하셨다는 몇몇 학교 선배님들께도 어찌어찌 연락드려서 조언들을 받아보고 사서 공부하던 책 저자에게도 연락해보고 했었는데 그렇게 해서 얻었던 조언들.......

Naver Blog

[HTTP] URL 문법과 구조, 단축 URL

1. URL 문법http://www.naver.com1) 스킴 위 부분중 "http" 부분을 스킴이라고 한다. http라는 프로토콜로 통신하겠다는 의미이다. ftp로 통신하고 싶은 경우 "ftp://"와 같이 시작한다.2) 호스트 애플리케이션이 인터넷에 있는 리소스를 찾으려면 리소스를 호스팅하고있는 장비를 알아야하고, 그 장비 내의 리소스에 접근할 수 있는 서버위 위치를 알아야한다. 위 부분중 www.naver.com 부분에 해당한다. 이 부분은 후에 ip주소로 변환되며,이는 서버의 위치를 의미한다.3)경로 url의 경로는 리소스가 서버의 어디에 있는지 알려준다. 예를 들자면 다음과 같다. http://localohst:8000/index/index.html 위 부분에서.......

Naver Blog

[회고/계획] 3/3~4/11 회고, 앞으로의 계획

입대 후 훈련소에 들어가고 책을 소포로 받아 읽을 수 있다는걸 알게 된 후 바로 집에서 소포로 "http 완벽 가이드"라는 책을 훈련소로 보내 2주차부터 읽기 시작했다. 평일에 훈련 끝나고 야간교육 없을때나 주말에 티비켜줄때나 개인정비시간줄때 틈틈이 읽었다. 아무래도 휴대폰도 없고 뭐 있는게 없다보니 거기서는 굉장히 흥미롭게 읽었던 것 같다. 책상펴고 편지지에 필기하는식으로 공부해봤는데 생각보다 할만했다. 나중에 자대가서 어떤걸 공부할지 어떻게 할지 그런것들을 굉장히 많이 고민해봤는데 일단 http를 어느정도 공부를 마치고 일단 DB를 다시 공부해볼 계획이다. 특정 기술이 어떻게 돌아가고 그런 원리가 앞으로.......

Naver Blog

[HTTP] TCP 커넥션 - TCP 세그먼트, IP 패킷

1. HTTP는 어떻게 TCP 커넥션을 사용하는가?모든 http 통신은 패킷 교환 네트워크 프로토콜들의 계층화된 집합인 TCP/IP를 통해 이루어진다.예시를 들겠다.ex) http://www.hello12321.com:80/index.html 위와 같은 링크가 있다고 가정하겠다.1. 브라우저가 www.hello12321.com이라는 호스트 명을 추출한다.2. 브라우저가 이 호스트 명에 대한 IP 주소를 찾는다. ex) 202.43.78.33. 브라우저가 포트번호(80)을 얻는다.4. 브라우저가 202.43.78.3 의 80번 포트로 TCP 커넥션을 생성한다.5. 브라우저가 서버로 HTTP GET 요청 메시지를 보낸다.6. 브라우저가 서버에서 온 HTTP 응답 메시지를 읽는다.7. 브라우저가 커넥션을 끊는다........

Naver Blog

[HTTP] TCP 커넥션 - TCP 커넥션 유지

컴퓨터는 항상 TCP 커넥션을 여러 개 가지고 있다. TCP는 포트번호를 통해 이런 여러 개의 커넥션을 유지한다.예를 들자면, 포트번호는 회사 직원의 내선전화와 같다. IP주소는 해당 컴퓨터에 연결되고, 포트번호는 해당 애플리케이션으로 연결된다.TCP 커넥션은 4가지 값으로 식별한다.<발신지 IP주소, 발신지 포트, 수신지 IP주소, 수신지 주소> 위 4가지 값으로 유일한 커넥션을 생성한다.위와 같은 커넥션/포트 정보들(TCP 커넥션 값)이 있다고 가정하겠다.위와 같이 특정 커넥션들은 같은 목적지 포트번호를 가리킬 수도 있다.또한 같은 발신지 IP주소를 가리키는 커넥션들도 있을 수 있고 같은 목적지 IP주소를 가리키는 커.......

Naver Blog

[MongoDB 오류] MongoDB connect ECONNREFUSED 127.0.0.1:27017 오류 해결법

위와 같은 에러가 발생하였을 경우MongoDB를 설치한 위치로 이동합니다.저는 C:\Program Files에 설치하였습니다.C:\Program Files\MongoDB\Server\4.0\bin로 이동한 뒤,mongod.exe 를 먼저 실행하고 그 뒤 mongo.exe를 실행합니다.그 뒤 다시 MongoDB에 접속합니다.

Naver Blog

[MySQL 오류] ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) 오류 발생

Mysql 설치 후 명령프롬프트 창에서 mysql 실행하고ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)에러가 발생.이것은 mysql 실행 시 사용자명과 db이름 안써줘서 그렇다.위와 같이 입력해주면 패스워드를 입력하도록 나온다.패스워드 입력을 하면 mysql 접속이 가능하다.

Naver Blog

[Mysql 오류] 시퀄라이즈 connect ECONNREFUSED 127.0.0.1:3306 오류 해결법

Node.js의 ORM Sequelize와 express서버 연결중 아래와 같은 오류가 발생했다.위와 같은 오류는 다음과 같이 해결 가능하다.내 컴퓨터에 들어간다.왼쪽의 내 PC부분을 오른쪽 마우스 클릭 해 '관리'를 눌러준다.그럼 위와 같은 창이 나오는데, 여기서 서비스 및 응용프로그램을 눌러준다.이후 여기서 '서비스' 를 클릭해준다.그러면 여러 서비스들이 나오는데, 그 중에서 MySQL을 찾아 눌러준다.이후 여기서 시작을 눌러주면 된다.이후 express 서버를 재시작한다.

Naver Blog

[JavaScript] arguments 객체

우선 자바스크립트의 arguments객체는 유사 배열 객체의 가장 대표적인 예시이다.유사 배열 객체는 이 글에서 언급했었다.https://dlaxodud2388.blog.me/2216756574811. JS 함수의 파라미터- 자바스크립트는 선언한 매개변수 수와 다르게 인자값이 전달되어도 오류가 발생하지 않는다.예시를 들겠다.위와 같이 함수 호출 시 인자의 수를 함수가 선언한 매개변수 수와 다르게 하여 호출하여도 에러가 발생하지 않는다.C나 자바같은 다른 언어였으면 바로 에러가 났을 코드이다.보면 알겠지만, 인자수보다 적게 넣으면 넣지 않은 인자는 undefined로 인식하고, 인자를 더 넣으면, 더 들어간 인자들은 무시한다.즉, 파라미터 선언에 대해 굉장히 자.......

Naver Blog

[JavaScript] Prototype(프로토타입)

예전에 자바스크립트의 "Prototype(프로토타입)" 에 대해 글을 쓴 적이 있었다.조금 내용을 더 정리하여 글을 다시 써 보려고 한다.1. 객체의 생성자바스크립트에서의 객체는 어떻게 보면 자바스크립트 그 자체라고 해도 무방하다.알다싶이, 자바스크립트에서 "객체"란 프로퍼티 값과 이름의 연속이다.우리는 대표적으로 객체를 다음과 같이 생성해왔다.대표적으로 세 가지만 보자.세 가지 모두 객체를 생성하는 방법들이다.지금부터 하는 설명들은 위 세 가지 방법들 등을 이용해 객체를 만드는 경우들 모두 공통적으로 포함되는 이야기들이다.우선 클래스를 이용하여 객체를 생성하는 자바, 파이썬과는 다르게, 자바스.......

Naver Blog

[JavaScript] this

자바스크립트에서의 this란?자바스크립트에서의 this는 상황에 따라 가리키는 것이 달라진다.일종의 대명사라고 생각하면 된다.만일 this가 "아버지"라는 단어라고 생각해보자.내가 "아버지" 라고 말하면 내가 말하는 아버지는 나의 아버지일 것이다.그러나 나의 아버지가 말하는 "아버지"는 나의 할아버지일 것이다.또 만약 내 친구의 "아버지"라고 한다면 여기서 말하는 아버지는 친구의 아버지일 것이다.이와 같이 자바스크립트에서의 this는 상황에 따라 달라지게 된다.그렇다면 이 상황들은 어떤 상황들이 있는지 알아보겠다.1. 일반적인 경우위와 같이 그냥 일반적으로 this를 아무데서나 사.......

Naver Blog

[JavaScript] call(), apply()

https://dlaxodud2388.blog.me/221702900596이 글에서 자바스크립트에서 각각의 상황에 따라 다르게 this가 정해진 객체에 자동으로 바인딩 되는 것을 보았다.자바스크립트에서는 이렇게 자동으로 바인딩 되는 것 외에, 특정 객체에 명시적으로 바인딩 시키는 방법도 제공한다. 그것이 지금 이 글에서 다룰 call() 과 apply()메서드이다.1. call(), apply() 메서드의 위치우선, call()과 apply()메서드는 Function.prototype 객체의 메서드이다.https://dlaxodud2388.blog.me/221696385159이 글에서 자바스크립트의 모든 객체는 함수를 통해 만들어진다고 했었다.그리고 자바스크립트에서 함수는 일급 "객체"이기 때문에 함수 또한.......

Naver Blog

[Node.js] express.json()

기본 형태express.json([options])우선 이 기능은 Express에 내장된 미들웨어 기능이다.JSON으로 들어오는 요청을 구문분석하며, body-parser을 기반으로 한다.JSON부분만 파싱하여 미들웨어를 반환하고, Content-Type 헤더가 request와 옵션이 같은지 확인한다.또한, 이 파서는 유니코드의 어떠한 인코딩의 body라도 받아들이고, gzip과 dflate를 지원한다. 구문이 분석된 데이터를 포함하는 새 본문 객체는 미들웨어를 거쳐 request에 채워진다(req.body). 그러나 이후 구문 분석을 할 본문이 없거나 Content-Type이 일치하지 않으면 비어있는 오브젝트({ })로 남거나, 오류가 발생한다.* 참고로, req.body의 형태는 사용자가 제어하.......

Naver Blog

[JavaScript] Prototype chaining(프로토타입 체이닝)

이 내용 또한 예전 글에서 한번 다뤘었다. 이 내용도 조금 더 정리하여 다시 써보려 한다.1. 프로토타입 체이닝(Prototype chaining)이란?https://dlaxodud2388.blog.me/221696385159이 글에서 자바스크립트의 프로토타입에 대하여 설명했었다. 그리고 프로토타입 체인의 구조에 대해서도 알아보았었다. 프로토타입 체이닝이 무엇인지알아보기 전에 예시를 먼저 들겠다.위와 같은 코드를 작성했다고 가정하자.hasOwnProperty()메서드를 사용하여 a라는 객체에 'a'라는 이름의 프로퍼티가 있는지 확인한 코드이다. a라는 프로퍼티가 있으므로 콘솔창에 true 가 출력된다.그런데 코드를 보고 다시 생각해보면, a라는 객체에서 hasOwn.......

Naver Blog

나 IT개발 블로거야!

19.11.18 현재 저는 웹개발 분야를 공부하고 있는 대학교 2학년 학생입니다.학교 수업과 별개로 자바스크립트, node.js 위주로 꾸준히 공부중이고 매일 부족한 부분들을 찾아 제 것으로 만들기 위해 노력중입니다.따로 공부했던 개념위주 내용들을 복습할 생각으로 블로그를 시작했고, 앞으로도 열심히 공부해 훌륭한 개발자가 될 수 있도록 노력하겠습니다.나 블로거야 이벤트https://campaign.naver.com/blog16/event1.nhn

Naver Blog

[Node.js] express.static()

기본 형태express.static(root, [options])우선, 이 기능은 express에 내장된 미들웨어 기능이다.이 기능은 정적 파일을 제공하며, serve-static을 기반으로 한다.기본 형태에서 root 부분은 정적 파일들을 제공할 root 디렉토리를 지정한다.이 함수는 req.url을 제공된 root 디렉토리와 결합하여 제공 할 파일을 결정한다.만약 파일이 발견되지 않을 경우, 404 응답을 보내는 대신, next()를 호출해 다음 미들웨어로 이동하여 stacking 및 fall-back을 허용한다.다음은 속성표이다.* 이 글은 express.js 공식문서를 기반으로 작성한 글입니다.잘못된 부분이 있을 경우 댓글에 남겨주세요.

Naver Blog

[HTTP] 리소소, MIME(Multipurpose Internet Mail Extensions)

1. HTTP란?HTTP(HyperText Transfer Protocol)의 약자이다.전 세계 웹 브라우저, 서버 웹 어플리케이션 모두 이 HTTP를 통하여 서로 대화를 한다. 현대 인터넷의 공용어가 HTTP라고 보면 된다.- 우선, HTTP는 신뢰성이 있는 데이터 전송 프로토콜을 사용하는데, 이는 지구 반대편에서 데이터가 오더라도 전송 중에 손상되거나 꼬이는 일이 일어나지 않음을 보장할 수 있다.웹 클라이언트와 서버에서 HTTP의 관계는클라이언트는 우선 서버에 HTTP 요청을 보내게 된다. 서버는 요청된 데이터를 HTTP응답으로 돌려주게 된다.즉, HTTP 클라이언트, HTTP 서버 모두 www(World Wide Web)의 기본 요소인 것이다.예를 들어, 우리가 다음과 같은.......

Naver Blog

[HTTP] URI, URL, URN

1. URI (Uniformurce Resource Identifier)URI(Uniformurce Resource Identifier)의 약자이다.웹 서버 리소스들은 각자의 이름이 있다. 클라이언트는 관심있는 리소스를 지목 가능한데, 서버 리소스의 이름은 URI(통합 자원 식별자,Uniform Resource Identifier)의 약자이다.URI는 인터넷의 우편물 주소 같은 것으로 생각하면 된다. 정보 리소스를 고유하게 식별하고 위치지정이 가능하다.예시)"http://www.hellopages.com/specials/example.gif"라는 주소가 있다고 가정하자.(없는 주소이다)여기서 http://부분은 http 프로토콜을 사용하라는 뜻이다.www.hellopages.com은 이 곳으로 이동하라는 의미이고, /specials/example.gif는.......

Naver Blog

[HTTP] 트랜잭션과 메소드, 상태코드

1. 트랜잭션클라이언트가 웹 서버와 리소스를 주고받기 위해 http를 어떻게 사용할까?HTTP 트랜잭션은 요청 명령(클라이언트 -> 서버) 와 응답결과 (서버 -> 클라이언트) 로 나뉜다.이 상호작용은 "HTTP 메시지" 라고 불리는 정형화된 데이터 덩어리를 통해서 이루어진다.위 사진과 같은 형태로 상호작용이 이루어진다.2. 메서드HTTP 메서드는 여러 가지 종류의 요청명령을 자원한다.모든 HTTP 요청 메시지는 한 개의 메서드를 가진다.메서드는 서버에게 어떤 동작이 취해져야 하는지 말한다.예를 들어, 웹 사이트 가져오기, 게이트웨이 프로그램 실행, 파일 삭제 등과 같은 것이 있다고 보면 된다.자주 사용되는 http메.......

Naver Blog

[JavaScript] 호이스팅(Hoisting)

1. 자바스크립트의 var 변수우선, 자바스크립트의 변수는 다른 언어들의 변수들과는 조금 다르게 동작한다.미리 말하자면, ES6의 let이나 const 같은 것들을 사용하여 이를 예방할 수 있다.예시로, c언어와 자바스크립트의 차이를 보겠다.ex) C언어ex) 자바스크립트일반적인 프로그래밍 언어는 변수는 블록 안에서 유효하기에, 블록이 종료된 시점에서 console.log(a); 를 호출하면 정상적으로 동작하지 않을 것이라고 생각 할 수 있다. 하지만, 결과는 3이 출력된다. 이는 "호이스팅"이란 것이 일어나기 때문이다.2. 변수 호이스팅(Hoisting)이란?"호이스팅" 이란 변수의 선언과 할당을 분리하는 형태라고 보면 된.......

Naver Blog

[Java] 오버로딩(Overloading), 오버라이딩(Overriding)

1. 오버로딩(Overloading)예시를 들겠다.위 코드와 같이, 같은 클래스나 상속 관계에서 동일한 이름의 메소드를 중복 작성하는 것을 오버로딩이라고 한다.2. 오버라이딩(Overriding)예시를 들겠다.자바에서는 위 코드와 같이 메소드 오버라이딩을 통해 상속받은 부모 클래스의 메소드를 자식 클래스에서 직접 재정의할 수 있다.이를 메서드 오버라이딩이라고 한다.Parent parentchild = new Child();이 코드가 가능한 이유는 자바의 다형성 때문이다. 다른 글에서 설명하겠다.3. 오버로딩과 오버라이딩의 차이우선 이 두 가지는 단어가 비슷하여 헷갈리기 쉽다.간단히 오버라이딩과 오버로딩을 비교하자면, 오버로딩(Overlo.......

Naver Blog

[Java] 업캐스팅(Upcasting), 다운캐스팅(Downcasting)

1. 캐스팅(Casting)이란?- 우선, 캐스팅이란 타입 변환을 말한다. 자바에서 클래스에 대한 캐스팅은 업캐스팅과 다운 캐스팅으로 나뉜다.2. 업캐스팅(Upcasting)자바에서 서브 클래스는 슈터 클래스의 속성을 상속받기 때문에, 서브 클래스의 객체는 슈퍼 클래스의 멤버를 모두 가진다. 서브 클래스는 수퍼 클래스의 모든 특성을 상속받는다는 말이다. 따라서, 서브 클래스는 슈퍼 클래스로 취급될 수 있다.이 때, 업캐스팅(Upcasting)이란, 서브 클래스의 객체가 슈퍼 클래스 타입으로 형변환 되는 것을 말한다.다시 말하자면, 슈퍼 클래스의 레퍼런스 변수가 서브 클래스로 객체화된 인스턴를 가리킬 수 있게 되는 것이다."사람은.......

Naver Blog

[JavaScript] 클로저(Closure)

클로저(Closure)란?클로저(Closure)란 무엇일까?우선 자바스크립트 공식 문서에서 클로저란, "클로저는 함수와 함수가 선언된 어휘적 환경의 조합이다. " 라고 나와있다.클로저 설명 전에,우선, 자바스크립트에서는 함수가 일급 객체이다. 함수가 1급 객체라는 말은 이 글에서 설명하였었다.https://dlaxodud2388.blog.me/221493841726저 글에서 말했던 것처럼, 함수는 1급 객체이기 때문에, 함수 자체를 값으로 취급한다. 그래서 위 코드와 같이 변수에 함수를 할당할 수 있고, 함수의 리턴값으로 함수를 넣을 수도 있다.이 내용은 아마 당연한 내용일 것이다.또한, 코드가 작성되고 실행될 경우 실행 컨텍스트가 생성된다고 했.......

Naver Blog

[HTTP] HTTP 메시지

1. HTTP 메시지란?- 단순한 줄 단위의 문자열을 말한다. 이진 형식이 아닌 일반의 텍스트 형식이다.- 웹 클라이언트에서 웹 서버로 보낸 HTTP 메시지를 요청 메시지라고 부른다.- 서버에서 클라이언트로 보낸 HTTP 메시지를 응답 메시지라고 부른다.- 이 외 다른 HTTP 메시지는 없다.2. HTTP 메시지의 세 부분HTTP 메시지는 위 그림과 같이 세 부분으로 이루어져 있다.1) 메시지의 시작줄메시지의 첫 줄은 다음과 같은 내용이 들어간다.요청 메시지: 무엇을 해야하는가?응답 메시지: 무슨 일이 일어나는가?2) 메시지의 헤더메시지의 헤더에는 다음과 같은 내용들이 들어간다.우선 시작 줄 다음으로는 0개 이상의 헤더필드가 이어진다.각 헤.......

Naver Blog

[HTTP] TCP(Transmission Control Protocol, 전송 제어 프로토콜)커넥션

1. 패킷이란?인터넷 내에서 효율적인 라우팅을 위해 HTTP 메시지를 여러 조각으로 나누는데, 이 조각들을 패킷이라고 한다.2. TCP 란?TCP는 인터넷 상의 컴퓨터들 사이에서 데이터들을 HTTP 메시지 형태로 보내기 위해서 IP(Internet Protocol)과 함께 사용되는 프로토콜이다.TCP는 패킷을 추적관리를 하고 IP는 데이터를 배달한다고 생각하면 된다.그렇다면 어떻게 메시지가 TCP(Transmission Control Protocol, 전송 제어 프로토콜) 커넥션을 통하여 한 곳에서 다른 곳으로 옮겨갈까?3. TCP / IP우선 HTTP는 애플리케이션 계층 프로토콜이다.HTTP는 네트워크 통신의 핵심적인 세부사항에 대해 신경쓰지 않는다.신뢰성있고, 대중적인 인터.......

Naver Blog

[HTTP] 트래픽(Traffic)과 웹의 구성요소

인터넷과 상호작용하는 웹 어플리케이션이 매우 많다.1. 프락시2. 캐시3. 게이트웨이4. 터널5. 에이전트위 내용들을 모두 간단히 설명하겠다.1. 트래픽(Traffic)전송량이라고 하며, 어떤 통신장치나 시스템에 걸리는 부하를 말한다.트래픽 양이 지나치게 많으면 서버에 과부하가 걸려 전체적인 시스템 기능에 장애를 일으킨다.2. 프락시클라이언트와 서버 사이에 위치한 HTTP 중개자이다.프락시는 클라이언트와 서버 사이에 위치하여 클라이언트의 모든 HTTP 요청을 받아 서버에 전달하게 된다.이 애플리케이션은 사용자를 위한 프락시로 동작하고, 사용자를 대신하여 서버에 접근한다.프락시는 주로 보안을 위해 사용한다. 즉, 웹 트래픽 흐.......

Naver Blog

[TypeScript] 타입스크립트의 언어적 특성

1. TypeScript의 특성- 타입스크립트는 '프로그래밍 언어이다.'- 타입스크립트는 'Compiled Language' 이다.- 전통적인 'Compiled Language'와 다른 내용이 많다. (그냥 그 느낌만 착용한것.)- 그래서 'Transpile' 라는 말을 사용한다.- JavaScript는 'Interpreted Language'다.2. 컴파일 언어와 인터프리터 언어(1) 컴파일 언어- 컴파일이 필요함.- 컴파일러 필요.- 컴파일하는 시점 있음. (컴파일 타임)- 컴파일된 결과물을 실행.- 컴파일된 결과물을 실행하는 시점.(2) 인터프리터 언어컴파일 필요없음.컴파일러 필요 없음컴파일 시점 없음코드 자체를 실행코드를 실행하는 시점.......

Naver Blog

[JavaScript] 유사 배열 객체

1. JavaScript에서의 객체란?자바스크립트에서의 객체란 단순히 이름이 지정된 프로퍼티의 모음이다.key:value(키:값) 의 쌍으로 이루어져 있으며, JS에서 기본 데이터타입은 하나의 값만을 가지지만, 객체는 참초타입으로 여러 데이터 타입의 프로퍼티들을 가질 수 있다.다음은 객체생성법 중 하나이다.위 코드와 같이 여러 데이터 타입의 프로퍼티들을 가질 수 있다.2. 유사 배열 객체란?JavaScript는 배열과 객체의 개념이 매우 모호하다.정확히는 배열도 객체이다.(모든 객체의 조상인 Object()안에 Array()가 있다.)유사 배열 객체는 다음과 같다고 생각하면 된다.위와 같은 객체 a 가 있다고 가정하자.객체 a의 1에 접근하기 위해.......

Naver Blog

[JavaScript] 함수와 일급 객체

1. JS에서의 함수자바스크립트에서의 함수는 "객체"이다.자바스크립트에서 객체란 단순히 이름이 지정된 프로퍼티의 모음이다.그 말은 즉, 함수 자체가 일반 객체처럼 프로퍼티들을 가질 수 있다는 말이다.또한, 이 말은 함수 자체가 일반 객체처럼 취급될 수도 있다는 말이다.따라서 자바스크립트의 함수는 다음과 같은 동작들이 가능하다.- 리터럴에 의해 생성- 변수나 배열의 요소, 객체의 프로퍼티 등에 할당 가능- 함수의 인자로 전달 가능- 함수의 리턴값으로 리턴 가능- 동적으로 프로퍼티를 생성 및 할당 가능2. 일급 객체일급 객체의 뜻은 다음과 같이 정의되어 있다."컴퓨터 프로그래밍 언어 디자인에서, 일급.......

Naver Blog

[OS] Context Switch(컨텍스트 스위치)

1. Context Switch(컨텍스트 스위치)란 무엇인가?- 멀티 프로세스 환경에서 CPU가 하나의 프로세스...

Naver Blog

[OS] CPU의 기능과 구조

1. CPU의 기능- CPU는 메인 메모리에 저장되어 있는 명령어를 하나씩 가져와 실행한다.- 공통적으...

Naver Blog

[Java] 접근지정자

객체지향 언어에서는 객체를 캡슐화하기에, 객체에 다른 객체가 접근하는 것으로 허용할지, 말지 정해야 ...

Naver Blog

[Java] 가비지와 가비지컬렉션

1. 가비지란?가비지(garbage)란 자바 응용프로그램에서 더 이상 사용하게 되지 않게 된 객체나 배열 메서드...

Naver Blog

[JSP/Servlet] Servlet의 특징과 맵핑

1. Servlet이란?저번 글에서 이러한 사진을 사용했었다.여기서 java파일이 servlet이라고 보면 된다.- s...

Naver Blog

[JSP/Servlet] JSP의 특징과 아키텍처

1. JSP 특징- 우선 jsp는 동적 웹 어플리케이션 컴포넌트이다.- 확장자는 .jsp- 클라이언트의 요청에 ...

Naver Blog

[JSP/Servlet] 개발환경 설정

https://www.eclipse.org 에 접속해줍니다.download 64bit를 눌러줍니다.설치 후 Eclipse IDE for E...

Naver Blog

[C] 포인터(2)

6. * 연산자* 연산자는 3가지 경우에 따라 *의 역할이 달라진다.1. 변수명 * 변수명2. 자료형 *변수명3...

Naver Blog

[C] 포인터(1)

1. 프로그램과 프로세스- 프로그램과 프로세스의 차이는 매우 간단하다. 프로그램은 실행파일이다.파일 ...

Naver Blog

[C] 동적 메모리 할당

https://dlaxodud2388.blog.me/221613192507우선, 이 글의 4번 내용에서 4가지 영역들에 대해 설명을 했...

Naver Blog

[HTML5/CSS3] HTML 기본구조와 meta태그

1. HTML이란?HTML(Hyper Text Markup Language)이 약자에서 볼 수 있는 것처럼, html은 프로...

Naver Blog

[EcmaScript6] let, const

1. "use strict" 란?- Strict Mode의 선언방식이다.- Strict Mode란, 코드에 더 나은 오류...

Naver Blog

[EcmaScript6] 템플릿 문자열, 객체 리터럴, 디스트럭쳐링

1. 템플릿 문자열(template string)- 우리가 자바스크립트에서 문자열 여러 개를 합칠 때는 다음과 같은 ...

Naver Blog

[EcmaScript6] ArrorFunction과 prototype

1.Arrow Function우선, ES5의 함수 사용법이다.그리고 ES6의 ArrowFunction 사용예시이다.매개변...

Naver Blog

[JavaScript] 함수와 프로토타입 체이닝(1)

1. 객체란?서로 연관된 함수와 변수를 그룹핑한 그릇으로, 객체 내의 변수를 property, 함수를 method라...

Naver Blog

[JavaScript] 함수와 프로토타입 체이닝(2)

7. 함수 호출7-(1) arguments 객체- 자바스크립트 언어 자체가 C/C++과 같은 엄격한 문법체크를 안한다...

Naver Blog

[JavaScript] 함수와 프로토타입 체이닝(3)

*생성자 함수란?- 자바스크립트의 객체를 생성하는 역할을 한다.- C++ 이나 자바같은 객체지향 언어에서와...

Naver Blog

[JavaScript] 함수와 프로토타입 체이닝(4)

*함수 리턴 규칙1. 일반 함수나 메서드는 리턴값을 지정하지 않을 경우 undefined 값이 리턴된다.2. 생성자...

Naver Blog

[JavaScript]함수와 프로토타입 체이닝(5)

* 프로토타입 객체도 객체이다.- 프로토타입 객체도 프로퍼티 추가 삭제가 가능하다. 이 말은 다시말해, 실...

Naver Blog

[JavaScript] AJAX

1. AJAX란?- AJAX(Asynchronous JavaScript And XML) 비동기 자바스크립트와 XML의 약자...

Naver Blog

[JavaScript] 실행 컨텍스트(1)

1. 브라우저의 기본구조- 브라우저의 뜻은 다음과 같다."인터넷상에서 웹에 연결시켜 주는 윈도 기...

Naver Blog

[JavaScript] 실행 컨텍스트(2)

4. 스코프 정보 생성- 현재 컨텍스트의 유효범위를 나타내는 스코프 정보를 생성한다.- 이 스코프 정보는...

Naver Blog

[JavaScript] 스코프 체인(1)

1. 스코프 체인이란?- 실행컨텍스트 내용에서 스코프 정보에 대한 이야기를 했었다.- 대강 다시 설명하...

Naver Blog

[JavaScript] 스코프 체인(2)

4. 스코프 체인 예시 (3)- 함수 객체가 처음 생성될 당시 실행 컨텍스트가 무엇인지 생각하는 것이 중요...

1 2 3 4