일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- TCP
- Node.js
- dp
- 백준
- type challenge
- 레벨 1
- HTTP
- Algorithm
- Crawling
- 자바스크립트
- typescript
- 프로그래머스 레벨 2
- 타입 챌린지
- 가천대
- dfs
- javascript
- 프로그래머스
- 수학
- 쉬운 문제
- ip
- 그래프
- 문자열
- BFS
- Nestjs
- 소켓
- 크롤링
- 알고리즘
- socket
- HTTP 완벽 가이드
- 타입스크립트
- Today
- Total
목록프로그래밍 (478)
kakasoo
IP는 Internert Protocol의 약자로, 인터넷 상에서 데이터를 송수신할 목적으로 컴퓨터에게 부여하는 값을 의미한다. 반면 PORT 번호는 컴퓨터에게 부여하는 값이 아닌, 프로그램 상에서 생성되는 소켓을 구분하기 위해 소켓에 부여하는 번호이다. IP부터 차례대로 말하자면, IP는 앞서 말한 듯 컴퓨터에 부여하는 값, 즉 주소 값을 의미한다. 인터넷에 컴퓨터를 연결해서 사용하려면 IP 주소를 부여 받아야 하는데, 여기서 IP 주소는 몇 가지 체계로 나뉜다. 그 중 잘 쓰이는 것이 바로 IPv4인데, 사실 IPv6보다 더 낮은 version을 의미한다. IPv4 (Internet Protocol version 4) IPv6 (Internet Protocol version 6) verison으로 치..
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 #include #include #include void ErrorHandling(const char* message) { fputs(message, stderr); // buffer 문제를 없애기 위해서 stderr를 전달 => 기본출력장치(모니터), 에러 fputc('\n', stderr); } // argc == 옵션의 개수 // argv == 옵션의 값, 명칭 int main(int argc, char* argv[]) { WSA..
네트워크 프로그래밍에서 프로토콜을 빼면 할 말이 없다. - 열혈 TCP/IP 소켓 프로그래밍 나는 이 책을 보면서 공부하는 중인데, 책의 내용을 내가 이해하기 쉽게 내 언어로 정리하고 있다. 아주 좋은 책이므로, 공부하는 사람들은 직접 책을 사서 보는 것을 추천하고 싶다. (나는 서버를 만드는 중이다.) 프로토콜(Protocol)이란? 두 통신 대상 간의 통신 방법, 즉 통신 규약을 의미로, 컴퓨터에서는 "컴퓨터 상호간의 대화에 필요한 통신규약"이다. 어렵게 생각할 것 없이, 우리가 사용하는 socket() 함수 자체가 이미 프로토콜을 쓰고 있었기 때문이다. 프로토콜에는, IPv4, IPv6와 로컬 통신을 위한 유닉스 프로토콜, Low Level 소켓을 위한 프로토콜, IPX 프로토콜이 있다. 각각의 명..
윈속(윈도우 소켓)을 기반으로 하는 프로그램을 개발하기 위해서는 다음 2가지를 선행해야 한다. 1. header file로 winsock2.h 를 포함시킨다. 2. ws2_32.lib 라이브러리를 링크시켜야 한다. 해당 내용은 설정에서, 추가 종속성의 우편에 적어주면 된다. (ws2_32.lib) 이를 통해 헤더 파일로 추가하면 윈속과 관련된 함수들을 마음대로 호출할 수 있게 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include #include using namespace std; void ErrorHandling(const char* message) { fputs(message, stderr); // buffer 문제를 없애기 위해서 stderr를 전달 => 기본..
네트워크 프로그래밍은 운영체제와 시스템 프로그래밍에 대한 약간의 지식이 필요하다. 또한 네트워크 상의 전송규약인 TCP/IP 라는 프로토콜을 어느 정도 이해해야 한다. 네트워크와 소켓에 대한 이해 네트워트 프로그래밍은 서로 다른 두 컴퓨터가 정보를 교환할 수 있도록 하는 것을 의미한다. 이 과정에서는 물리적인 연결이 필요하고, 이 안에서 작동할 소프트웨어가 필요한데, 이 연결은 이미 다 되어 있다. 지금 존재하는 대부분의 컴퓨터들은 이미 인터넷이라고 하는 '물리적인 연결'이 되어 있는 상태기 때문에, 우리가 고민해야 할 부분은 이제 이 망에서 작동할 소프트웨어적 데이터의 송수신 방법이다. 하지만 이 방법 역시 운영체제에 상에서 소켓'Socket' 이라는 것을 제공하기 때문에 이미 해결되어 있는 상태다. ..
var sum; // sum 이라는 이름의 변수 선언 var a,b; // a,b 라는 이름의 변수 선언 console.log(x); // x 변수가 선언되지 않은 경우 undefined 출력 y = 2; // 변수를 선언하지 않은 상태로 값 입력시 전역 변수로 취급 console.log(y); // 2 변수 끌어올림 (호이스팅) x가 미리 선언되지 않은 상태로 x를 출력하는 코드는, undefined를 출력한다. 하지만 선언 없이 값 대입을 먼저 할 경우에는 오류 없이 정상적인 출력이 된다. 이는 y를 출력한 것에서 확인가능하며, 자동적으로 변수가 전역 취급되었음을 의미한다. 이것만으로도 JavaScript는 다른 언어와 다른 특징을 가지고 있음을 확인할 수 있다. JavaScript가 변수 선언에 대..
1. 인터프리터 언어 JavaScript는 기본적으로 인터프리터 언어이다. 인터프리터는 브라우저에서 F12 개발자 모드 ( 크롬의 경우 ) 를 눌러 한 줄씩 코딩 가능한 것을 말한다. 인터프리터 언어는 조금 느린 대신에, 개발자에게 조금 더 친화적인 것이 특징이다. 모든 라인이 컴파일이 이루어진 후에 전체적인 코드를 디버깅할 수 있는 컴파일 언어와 달리, 인터프리터 언어는 한 줄 씩 그 내용을 확인해가면서 코드를 짤 수 있다. 2. 객체지향과 함수형 C++과 Java는 클래스를 이용하여 객체를 생성하는 클래스 기반의 객체지향 언어이다. 반면 JavaScript는 프로토타입 (Prototype) 을 상속하는 프로토타입 기반 객체지향 언어이다. JavaScript에서는 객체를 생성한 후에도 프로퍼티와 메서드..
git clone git status git add * git add filename.확장자명 git commit -m "Add filename.확장자명" git remote add origin git remote -v git push -u origin master git push 2020.08.01 추가 git을 배우고 싶다면, 이 내용을 완벽히 이해해야 할 것이다, 이해하고 난다면, 명령어를 이해하는 게 더 쉬워질 것이다. 어떠한 원격 저장소가 있다, 이 원격 저장소도 일종의 컴퓨터로, 중국에 있는 컴퓨터라고 해보자. 그런데 나는 한국 사람이고 한국에 살다보니 이 컴퓨터에 있는 file을 가지고 작업을 하는 게 불가능하다, 그래서 이 원격 저장소에 접근하기 위해서 우리는 fork를 한다. fork는 ..
여기에 작성된 코드는 절대로 좋은 코드가 아니니, 참고하지 말 것! 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 #include #include using namespace std; /* 1232123 이라는 숫자가 있다고 할 때, 기준점을 하나씩 옮겨가며, 양측의 숫자들이 동일..
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 #include #include #include using namespace std; char arr[15]; bool visited[15]; int l, c; int moum; int jaum; vector str; void dfs(int cur, int start) { if (cur == l && moum >= 1 && jaum >= 2) { for (int i = 0; i
알고리즘에 대해 알고리즘을 배우기 전에 대부분의 사람들이 궁금한 것이, 수학적인 능력의 유무가 알고리즘을 배우는 데에 필수적인지 일 것이다. 나도 어렴풋이 그런 걸 느끼기도 했고, 경험해가며 굳이 필요없다는 것을 느꼈다. 인공지능을 한다거나, 아니면 그래픽스를 할 게 아니라면 필요없다는 것을 이해할 수 있었다. 비록 내가 인공지능이나 그래픽스를 해본 것은 아니지만, 수식을 쓰는가 안 쓰는가, 그런 도구적인 쓰임과 자신이 사용하는 공식들에 대한 이해 없이 그저 수학적 사고력만으로 풀 수 있는 문제들 선이 내게 필요한 cut line 이었기 때문이다. 그 이상으로 가려면 아직 시간도 많고, 필요할 때 배워도 문제 없겠다고 싶었다. (Q. 나는 하루에 8시간 정도 code를 짜고 있는데, 필요할 때 배워도 문..
문제가, 솔직히 알고리즘이라고 하기도 애매한 것들 (정의로는 물론 다 알고리즘이겠지만), 그런 것들은 그냥 다 분류를 '수학'이라고 해버리는 감이... 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 #include using namespace std; int arr[100000]; int main(void) { int n; cin >> n; for (int i = 0; i > temp; if (temp == 0) { i--; arr[i] = 0; i--; n--; n--; } else { arr[i] = temp; } } int sum = 0; for (int i = 0; i