전체 글
-
컴퓨터 네트워크 기본2TodayILearned/네트워크 2021. 8. 16. 16:19
packet : 사용자가 전송한 데이터(bit) 묶음 클라이언트-서버 구조 서버 server는 permenent한 IP를 갖고있음 항상 켜있는 host 웹 서버를 운영하는 서비스들이 80port를 이용하는 이유? 서버는 24시간 켜있어야하고, 주소가 일정해야함. DNS는 주소를 IP주소로 번역해주는 역할을 하는데, 번역 이후 PORT 넘버만은 일치시켜서 보다 찾기 수월하도록 하기 위함 클라이언트 서버와 통신 간헐적인 연결이 됨 유동적 IP를 가짐 클라이언트끼리의 직접적인 통신을 하지 않음 HTTP 애플리케이션 계층의 프로토콜 TCP 서비스를 사용 stateless : 연결이 지속되지않고, 요청/응답 프로세스가 끝나면 연결이 끊어짐 Non-persistent HTTP : 여러가지 객체가 있다면, 객체를 받..
-
컴퓨터네트워크 기본1 - 컴퓨터네트워크 및 인터넷 역사TodayILearned/네트워크 2021. 8. 16. 15:15
KOCW에서 들은 강의내용을 공책에 받아적어놓기는 했지만..(노트필기 애호가임...) 강의 들으면서 적은것이라 따로 머릿속에 정리하는 시간을 갖기위해 정리한다. KOCW의 한양대-컴퓨터네트워크2015(이석복교수님) 강의를 들었다. 찾아보니 더 최신버전이 나오기도했다. (단 2018강의는 피피티 자료 업로드가 안되어있음) 네트워크 구조 network edge와 network core, access networks, physical media로 이루어져있음 network edge : application, host end system(host) : 애플리케이션 프로그램을 의미한다 (ex: 이메일, 웹) client/server model : 클라이언트는 원할 때 네트워크에 연결할 수 있다. 서버는 상시 연결..
-
위장 해쉬로 풀기 자바스크립트TodayILearned/알고리즘 2021. 8. 16. 10:47
바로 전에 올린 '완주하지못한 선수' 2021.08.16 - [TodayILearned/알고리즘] - 완주하지 못한 선수 해쉬로 풀기 자바스크립트 와 비슷한 맥락의 문제이고, 다만 경우의 수가 합쳐져서 점화식 때문에 헷갈리게되는 문제이다. 또 문제가 대놓고 해쉬충돌이 있을테니 처리하라고 예고까지 해준다. (그 전 위장문제도 그랬음) function solution(clothes) { let key; const hashTable = {}; for (let i = 0; i < clothes.length; i++) { key = clothes[i][1]; if (!hashTable[key]) { hashTable[key] = 1; } else { hashTable[key] = hashTable[key] + 1..
-
완주하지 못한 선수 해쉬로 풀기 자바스크립트TodayILearned/알고리즘 2021. 8. 16. 10:41
해쉬문제니까 해쉬로 풀었다. 해당 문제를 이중 for문을 이용해서 푸는 방법도 있지만, 그렇게하면 시간복잡도가 n^2으로 늘어나기도하고 일단 그건 해시 풀이가 아니어서.. 어떤 주제로 문제가 주어지면 최대한 그 주제에 익숙해지기 위해서 해당 주제로 풀려고한다... function solution(participant, completion) { const HashTable = {}; let key; // Add : 해쉬충돌까지 고려했다. for (key of participant) { if (!HashTable[key]) { HashTable[key] = 1; } else { HashTable[key] = HashTable[key] + 1; } } // Search for (key of completion..
-
Intersection of Two Arrays II 자바스크립트TodayILearned/알고리즘 2021. 8. 16. 10:18
이번 알고리즘 스터디 때 이진탐색을 주제로 한 문제로 선정했다. 다만 풀면서 이렇게 푸는것 보다 해시로 푸는게 더 나았을 거라는 생각을 떨칠 수 없었다고... 그래도 이진탐색에 익숙해지려고 이진탐색을 적용해 풀었다. const intersect = function (nums1, nums2) { const answer = []; let sortedArray = nums1; let justArray = nums2; if (nums1.length > nums2.length) { sortedArray; justArray; } else { sortedArray = nums2; justArray = nums1; } sortedArray.sort((a, b) => a - b); for (let i = 0; i < j..
-
테스트코드 작성하기Project 2021. 8. 8. 04:55
그동안 미루고 미뤄왔던; 테스트코드를 작성했다. 나에게 엄청난 장벽이 느껴졌던 테스트코드인데, 직접 작성해보니 또 그렇게 엄청난!! 어려움을 가진 무언가는 아닌듯도 하고..?(경거망동) 또, 테스트코드는 내 코드의 결함을 보여준다는 의미라고하는데 사실 아직 무슨 말인지 잘 와닿지 않았었는데, 아니 이걸 보면 내 코드의 결함이 보인다고?..하는 의구심을 품었지만 역시 백문의불여일타라고, 직접 해보니까 알겠다. 내 코드의 이상한 부분을;; 테스트코드를 짜다보면 안보려고해도 ... 보일 것 같다. ((그리고 고치지 못해 괴로운 나.. 보인다..보여..)) 오늘은 auth-middleware에 대해서만 테스트코드를 작성했지만, 앞으로 점점 테스트코드를 많이 써보려고한다. 이전에 했던 프로젝트에 테스트코드를 덧입..
-
[리팩토링] socket.js 코드 분리하기Project 2021. 8. 5. 01:49
socket.js 코드 좀 깔끔하게 만들고싶은것이 내 숙원이었음.. 한 두달 전에 짜 놓은 코드는 socke.io 문서 읽어가며 어영부영 작동시키느라 바빴지만 이번엔 잘 이해해서 좀 읽기 좋게 만들어보고싶었다. 인강과 몇번의 뻘짓으로 드디어 끝냈다. 해냇따구? socket.js에 무더기로 쌓인 코드 처리하기 이전의 코드는 이런식으로 실행이 됐다. app.js에서 app object을 이용해 server listen 실행 server listen하는 코드는 ` server ` 라는 변수명에 저장 socket.io를 require하여 app.js 내에서 ` server `를 인자로 사용해서 실행 socket.js는 인자로 받은 server를 통해 동작 여기서 socket.js의 코드는, socket.io 실..
-
[네트워크] web socket 알아보기TodayILearned 2021. 8. 2. 01:18
프로젝트를 진행하면서 채팅에 사용한 socket 통신에 대해 더 잘 알아보고싶다는 생각이 들었다. 요즘 듣고있는 네트워크 강의 중, UDP, TCP 소켓에 대한 이야기가 나오는데, 처음엔 그 소켓이 이 소켓인 줄 알았다.. 나와 나같은 사람을 위한 글이다. 전송 계층의 소켓 전송계층에서 사용하는 소켓은, 애플리케이션 계층에서 데이터 패킷을 전송할 때 사용하는 연결부라고 생각하면 된다. 데이터를 주고받기 위해서는 소켓을 연결해 사용한다. 마치 전기를 사용하기 위해서는 전기가 흐르는 장소가 필요하고, 그 전기를 소켓에 플러그를 꼽아 사용하는 것 처럼. 종류는 TCP/UDP가 있다. *패킷 : 데이터 묶음의 단위 웹소켓 프로토콜 웹소켓 프로토콜은 전송계층의 소켓 중 TCP 소켓을 통해 동작하는 애플리케이션 계..