일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트
- 쉬운 문제
- Crawling
- 타입스크립트
- javascript
- HTTP
- typescript
- 프로그래머스 레벨 2
- dfs
- type challenge
- 백준
- 가천대
- 타입 챌린지
- Nestjs
- 알고리즘
- 수학
- TCP
- Node.js
- HTTP 완벽 가이드
- Algorithm
- 문자열
- 그래프
- ip
- 크롤링
- 레벨 1
- dp
- socket
- BFS
- 소켓
- 프로그래머스
- Today
- Total
목록프로그래밍 (478)
kakasoo
HTTP 트랙잭션은 요청 명령과 응답 결과로 이루어져 있다. 요청 명령 GET / special/saw-blade.gif HTTP/1.0 Host: www.joes-hardware.com 응답 결과 HTTP/1.0 200 OK Content-type: image/gif Content-length: 8572 메서드 HTTP 요청 메시지는 1개의 메서드를 가진다. 메서드는 서버에서 어떤 동작이 취해져야 하는지를 뜻한다. 흔히 GET, PUT, DELETE, POST, HEAD를 쓴다. 상태 코드 모든 HTTP 응답 메시지는 상태 코드를 가진다. 상태 코드는 클라이언트에게 요청에 대한 결과를 알려주는 세 자리 숫자이다. 웹 페이지는 여러 객체로 이루어질 수도 있다 웹 브라우저는 ‘시각적으로 풍부한’ 웹 페이지..
리소스 웹 서버는 웹 리소스를 관리하고 제공한다. 가장 단순한 웹 리소스는 웹 서버 파일 시스템의 정적 파일이다. 그러나 모든 리소스가 정적일 필요는 없다. 리소스는 요청에 따라 콘텐츠를 생산하는 프로그램이 될 수도 있다. 라이브 영상을 보여주거나, 주식 거래, 부동산 데이터 베이스 검색, 온라인 쇼핑몰이 그러하다. 미디어 타입 각기 다른 전자 메일 시스템 사이에서 메시지가 오갈 때 겪는 문제점을 해결하고자, MIME( Multi purpose Internet Mail Extensions, 다목적 인터넷 메일 확장 ) 이 만들어졌다. 이것이 매우 잘 동작했기 때문에 HTTP에서도 멀티미디어 콘텐츠를 기술하고 라벨을 붙이기 위해서 채택되었다. 웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙인다...
하이퍼텍스트 전송 프로토콜 (HTTP, yperText Transfer Protocol) 서문 : 이 책은 무얼 말하고자 하는가? HTTP를 어떻게 사용하는가? HTTP를 왜 사용하는가? HTTP를 조사하는 데에 독자들이 시간을 줄일 수 있도록 http를 동작하는 데 필요한 주요 기술 소개. HTTP나 웹의 기본적인 구조를 이해하고 싶어 하는 독자를 대상으로 한 책. 소프트웨어, 하드웨어 기술자는 HTTP 및 관련 웹 기술에 대한 참고서로 활용 가능. 시스템 아키텍트나 네트워크 관리자는 복잡한 웹 아키텍처를 어떻게 설계, 배포, 관리할 것인지 배울 수 있다. 목차 HTTP: 웹의 기초 : HTTP 핵심 기술과 웹 기초 HTTP 개관 : HTTP에 대한 개략적인 내용 URL(Uniform Resource ..
아는 동생에게 프로그래밍을 가르치며, this에 대해서 설명한 적이 있다. 나는 this를 계속해서, ‘나’라고 설명했다. 너에게 ‘나’는 너일 것이고, 나에게 ‘나’는 나 자신을 가리키는 말인 것처럼, this는 클래스의 인스턴스들이, 각자 자기 자신을 가리키는 말이라고 말했다. 예컨대 자동차에게 ‘나’는 차종이 아니라, 그 자동차 개체 한 개만을 의미한다는 뜻이었다. 객체지향적인 것 this가 있단 것만으로도 언어는 조금 더 객체지향적이라고 할 수 있다. Class를 정의한 후 인스턴스를 만든다면, 우리는 깊은 복사를 할 필요 없이 새 객체를 만들 수 있다. 물론 Function을 이용해 재사용성을 의도적으로 없애는 캡슐화도 있긴 하나, 이런 특수한 경우를 제외하고는 대부분의 클래스 기반 언어는 객체..
C언어를 다룰 때 가장 힘든 것이 동적할당이었다. 동적할당을 처음 배울 당시, 나는 프로그래밍을 마치고 동적할당을 해제하지 않으면, 컴퓨터의 자원을 영영 잃어버리는 것이 아닐지, 그 부분에 대해서 두려움을 가졌다. 당연히 지금은 운영체제가 그런 부분을 자동적으로 처리해준다는 것을 알고 있다. 하지만 그 사실을 몰랐던 나는, 동적할당을 의사가 환자 다루듯 신중하게 해야 했다. 도달 가능성 Mark-and-Sweep 알고리즘이 있다. 이는 말하자면 DFS, BFS와 유사하게, 도달가능한 모든 영역을 탐색하는 알고리즘이다. 나중에 다른 포스팅에서 말하겠지만, JavaScript는 다양한 Enviorment를 Context로 가진다. Mark-and-Sweep 알고리즘은 이 환경 중 맨 처음에 위치할 전역 환경..
형변환 JavaScript에서는 명시적인 형변환, 묵시적인 형변환이 있다. 엄밀히 말해, 묵시적인 형변환은 Wrapper 함수로 인한 형변환이라고 할 수 있겠다. 여기서는 둘의 구분 없이, 자주 보게되는 형태의 형변환들을 짚고 넘어가고자 한다. String String(1) === '1'; // true 1 + "" = '1' // true String으로 감싸서 문자열로 변경할 수도 있으며, 숫자에 문자열을 더해 변경할 수도 있다. Number Number('1') === 1 // true '1' - 0 === 1 // true +'1' === 1 // true '1' / 1 === 1 // true String과 마찬가지로 Number로 감싸서 숫자로 변경하는 것이 가능하고, 뺄셈이나 나눗셈으로도 가..
JavaScript에서의 배열과 리스트 MDN을 참고하면, JavaScript의 Array는 List 형태의 고수준 객체이다. 고수준 객체라는 건, 프로그래머가 내부 코드를 알 필요 없이 사용 가능한, 다양한 메서드들이 미리 구현된 자료구조임을 뜻한다. const arr = new Array(); arr[arr.length] = 3; arr.push(3); 정말 간단하게 push를 구현한다면 위의 코드처럼, 현재 length에 대한 값 대입이다. C언어에서는 생성되지 않은 공간에 값을 할당하면 에러가 발생하지만, JavaScript에서 Array는 길이나 요소의 형태가 결정되어 있지 않아 가능한 방법이다. 여담으로, 이를 이용하면 0번 index 다음에 100번 index에 값을 넣는 것도 가능하다. 물..
어떠한 것인지 설명하는 데에는 내 이해가 깊지 않아서 다른 글을 보는 걸 추천하고, 나는 좀 더 실용적인 정보를 제공하고 싶다, 그러니까, 직접 사용하는 법을 말해줄 테니 단계 별로 다뤄보고, 필요한 내용을 직접 조사해보도록 하자. 내가 하나 하나 설명할 수는 없지만, 이 내용들을 따라하고 공부함으로써 얻게 되는 CS 지식은 매우 유용할 것이다. 추가로, 여담을 굉장히 많이 적을 건데, 개발자가 알아두면 좋을 내용들을, 내용 상 시계열로 정리하겠다. 1. bash를 사용하기 위해서 wsl를 다운받도록 하자, 이는 윈도우에서 리눅스 환경 명령어를 쓸 수 있게 해준다. 1 - 1. 이것은 마이크로소프트의 store에서 설치할 수 있다, 우분투로 되어 있는 것이 있을 것이다. 1 - 2. 리눅스는 종류가 매우..
act.sa_handler = urg_handler; sigemptyset(&act.sa_mask); act.sa_flags = 0; fcntl (recv_sock, F_SETOWN, getpid()); state = sigaction (SIGURG, &act, 0); 이 코드들에 대해서 이야기 해보도록 하자! MSG_OOB : 긴급 메세지의 전송 저자는 다음과 같이 설명한다. 만약 환자들이 줄 서 있는 병원에 긴급 환자가 오면, 길을 비켜주는 게 당연한 수순 아니냐고, 즉 차례를 양보한다는 뜻. 여기서의 긴급 메세지도 비슷한 의미로서, 긴급한 메세지의 경우 전송 방법과 경로를 달리 하겠다는 뜻이다. server 측에서는 그저 send() 함수에 옵션을 넣어서 보내주기만 하면 된다, 아래의 간략한 코드를..
라즈베리파이를 다루고 있는지라, 이 함수들에 대해서 자세히 볼 수 밖에 없게 되었다. 미리 말하는데, 위의 함수와 동일하게 write와 read함수가 있는데, 거의 비슷하다. 미세한 차이가 있긴 한데, 이 미세한 차이를 느낄 수 있을까, 사실 그걸 위해 설명하는 것이기도 하지만, send, recv는 옵션을 설정할 수도 있고... usb port 라던가, 입출력 방식에 따른 호환성이 높은 편이라 할 수 있다.ㅌ 리눅스에서의 send & recv 함수 ssize_t send (int sockfd, const void* buf, size_t nbytes, int flags) sockfd // 데이터 전송 대상과의 연결을 의미하는 소켓의 파일 디스크립터, 윈도우에서는 그저 0이었다 buf // 전송할 데이터를..
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 #include #include #include #include #define BUF_SIZE 1024 void ErrorHandli..
server와 client는 서로 이렇게 입출력을 주고 받는다, 물론 main이 되는 server가 있긴 하겠지만, 이런 입출력은 반드시 server와 client간의 것이 아니니, client끼리도 입출력을 주고받을 수는 있긴 하겠다, 그러니 그림을 다시 그려보자. 좌측처럼 그리면 모든 대상이 정보를 주고 받을 수 있을 것이다. 하지만 필요한 socket의 수가 매우 많아질 것이고, 당연히 연결도 빈번해지니 전체 시스템이 느려질 수 밖에 없다. 그러니까 새로이, 우측 같은 그림으로 다시 그려보자. 이런 형태로 그리게 된다면, 각 선의 길이도 (개수를 의미) 줄고 입출력의 숫자도 절반으로 줄어들게 된다. 멀리플렉싱 기반의 서버라는 것은 위의 그림과 같은 형태를 의미하는데, 엄밀히 표현하면, 서버에 멀티플..