thumbnail

전체 글

📚 CS/네트워크

[면접을 위한 CS 전공지식 노트] HTTP

2.5.2 HTTP/1.1 매번 TCP 연결이 필요한 HTTP 1.0 세대와 달리, 한 번 초기화한 후 keep-alive 라는 옵션으로 여러 개의 파일을 송수신할 수 있다. 기존에도 존재하긴 했지만, 본 세대부터 표준화되어 사용되기 시작했다. 문서 내의 리소스 용량이 커지면 선입선출의 개념으로 딜레이가 발생하기도 하는데, 이를 HOL Blocking이라고 한다. HOL Blocking 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 또한 HTTP/1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어 있고 압축이 되지 않아 무거운 성능을 보인다. 2.5.3 HTTP/2 멀티플렉싱 여러 개의 스트림을 사용하여 송수신. 패킷이 손실되었더라도 해당 스트림에만 영향을 미친..

📚 CS/알고리즘 (Python)

[프로그래머스] 옹알이1 (파이썬)

문제 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling 이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 조건 1. 1 ≤ babbling의 길이 ≤ 100 2. 1 ≤ babbling[i]의 길이 ≤ 15 3. babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다. 4. 문자열은 알..

📚 CS/알고리즘 (Python)

[이코테 실전문제] 효율적인 화폐 구성 (다이나믹 프로그래밍)

문제 N가지 종류의 화폐가 있다. 이 화폐들을 최소한으로 사용해 합이 M원이 되도록 하고자 한다. M원을 만들기 위한 최소한의 화폐 개수를 출력하는 프로그램을 작성하시오. 조건 입력조건 1. 첫째 줄에 N,M이 주어진다. 2. 이후의 N개 줄에는 각 화폐의 가치가 주어진다. 출력조건 1. 첫째 줄에 최소 화폐 개수를 출력한다. 2. 불가능할 때는 -1을 출력한다. 코드 n,m = list(map(int,input().split())) array=[] for i in range(n): array.append(int(input())) d=[10001]*(m+1) d[0]=0 for i in range(n): for j in range(array[i],m+1): if d[j-array[i]]!=10001: d..

📚 CS/네트워크

[면접을 위한 CS 전공지식 노트] IP 주소와 HTTP 1.0

2.4 IP 주소 2.4.1 ARP 컴퓨터 간의 통신은 IP주소를 통해서 이루어진다고 흔히 알고 있지만, 정확히 말하면 IP 주소 내부의 MAC 주소를 가져와 이를 기반으로 통신한다. 이 때 MAC 주소를 가져오는 프로토콜을 ARP라고 한다. 논리적 주소(IP)와 물리적 주소(MAC)를 상호 간에 통신을 가능케 하는데, 순방향을 ARP, 역방향을 RARP 프로토콜이 처리한다. 메인 서버에서 ARP Request 브로드캐스트를 하위 서버에다 뿌려주면, 그 중 해당 주소와 일치하는 장치가 ARP Reply 유니캐스트를 통해 MAC 주소를 찾게 된다. 2.4.2 홉바이홉 통신 건너뛰는 모습을 뜻하는 홉에서 알 수 있 듯 패킷이 라우팅 테이블을 이동하며 최종 목적지까지 도달하는 통신을 말한다. 이 때 라우팅 테..

✏️ Rewind/미디어회고

[미디어회고] 낙관적 허무주의, 허준이 서울대 졸업식 축사 외

0. 들어가며 유튜브 망령 n년 차.. 좋게 말하면 시장 조사..? 간혹 개발 관련 영상이나 자기계발 영상들이 알고리즘에 나타나면 나중에 볼 동영상에 차곡차곡 쌓아두는 편이다. 구휼미마냥 .. 근데 이게 솔직히 손이 잘 안간다. 진실과 마주해야 할 두려움이라고 해야 할까. 또 식사나 설거지 할 땐 침착맨 보기 바쁘다. 사색하기 최고의 장소는 기차 안이라고 생각한다. 한 달에 한 번 정도 본가에 들릴 때마다 왕복 여섯 시간 정도의 시간이 주어지는데, 이 때 모아둔 곳간을 개방한다. 한 손엔 영상, 나머지 한 손으로는 메모하기 바쁘다. 기록을 좋아하는 나 이기에, 메모들을 조금 정제시켜 아카이빙해놓기로 했다. 더해서 꼭 기차가 아니더라도 의무감으로라도 관련 영상을 찾아 보지 않을까 하는 마음에 .. 비정기적..

✏️ Rewind/정기회고

[주간회고] 2023년 2월 둘째 주 (230206 ~ 230212)

0. 주저리 금요일 근로를 마치고 돌연 부산행에 올랐다. 나 어쩌면 P일지도? 별 거 없어도 집이 좋긴 좋다. 1. 운동 헬스장 만료되고 몇 달 만에 트랙에서 뛰었다. 나이키 앱으로 1분 - 1분 인터벌을 했다. 근데 다음 날부터 발바닥이 아파서 잘 못 걷고 있음..미안해 발바닥아 2. 토이 프로젝트 금주엔 기업탐방같은 굵직한 일정을 제외하고는 진행하던 프로젝트를 계속 만들었다. 하다보니 욕심이 생겨 더 붙잡게 되고 원래 계획했던 일정보다 미뤄지고 있는데, 적정 선에서 끝맺는 것도 중요한 것 같다. 아마 오늘 내일 전으로 끝이 나지 싶다. 마무리되면 블로그에 정리해놓고 영상도 편집하지 싶다. 어째 저번 주와 비슷한 레퍼토리다. 3. 다음 주 - ES6 수강 진짜 시작 4. 생각 - 개발자의 입장에서 ch..

📚 CS/네트워크

[면접을 위한 CS 전공지식 노트] 계층간 데이터 송수신과 네트워크 처리 기기

유선 LAN (IEEE802.3 프로토콜) 전이중화 통신 (Full duplex) : 양쪽 장치가 동시에 송수신할 수 있는 방식. 송/수신로 서버가 나뉘어져 있으며, 현대에 사용하고 있는 고속 이더넷 방식이다. CSMA/CD : 데이터 전송 ‘이후’ 충돌이 발생한다면 일정 시간 이후 재전송 → 유선 LAN에 사용했던 반이중화 통신 방식 무선 LAN (IEEE802.11) 반이중화 통신 (Half duflex) : 양쪽 장치가 서로 통신할 수는 있지만, 동시에 이루어질 수는 없다. 충돌 가능성이 있기 때문에 방지할 시스템이 필요하다. CSMA/CA : 캐리어 감지 (회선이 비어 있는지 판단) 등 사전에 충돌을 방지하는 방식이다. 랜덤 값을 기반으로 정해진 시간만큼 기다린 후 데이터를 송신하는 IFS도 존재..

✏️ Rewind/정기회고

[주간회고] 2023년 2월 첫째 주 (230130 ~ 230205)

0. 들어가며 방학도 벌써 절반이 지났다. 다음 주면 수강 신청 기간이고, 본가 한 번 내려갔다오면 금방 개강이다. 지난 여름 방학이 문득 떠오른다. 야심차게 세웠던 계획들과, 희미한 결과물들. 노션에 아카이빙해놓은 계획들을 오랜만에 찾아보니 그마저도 허술해 보인다. 그러나 이번 한 달은 달랐다. 드는 느낌부터 다르다. 나아갈 방향에 어느 정도 윤곽이 잡혔고, 초반부지만 잘 나아가고 있다. 아무 제약 없이 하고 싶은 공부를 할 수 있는 방학이 참 귀하게 느껴진다. 남은 한 달도 아름답게 끝맺음 하기를. 1. 블로그 개편 새해와 함께 블로그도 싹 페이스리프트를 해줬다. 벨로그나 깃허브 블로그로 옮길까 고민을 했었는데, 결국 기존 블로그에 구조만 개편하는 것으로 결론이 났다. 원래는 코테 문제를 정리하는 용..

📚 CS/네트워크

[면접을 위한 CS 전공지식 노트] 네트워크 (TCP/IP 모델과 네트워크 토폴로지)

2.1 네트워크 2.1.1 처리량과 지연시간 네트워크란 노드와 링크를 통해 구성된다. 노드란 서버, 라우터, 스위치 등의 네트워크 장치를 의미하고 링크는 유무선 연결을 의미한다. 처리량 : 링크를 통해 전달되는 단위 시간당 데이터양으로, bps단위를 사용한다. 초당 전송 또는 수신되는 비트 수를 의미한다. 지연시간 : 요청이 처리되는 데에 걸리는 시간을 의미하며, 데이터가 두 장치 사이를 왕복하는 총 시간이다. 2.1.2 네트워크 토폴로지와 병목 현상 네트워크 설계 간 노드와 링크의 배치방법을 네트워크 토폴로지라 한다. 트리 토폴로지 : 계층형 토폴로지라고도 하며, 노드의 추가 및 삭제가 용이하고 트래픽이 집중될 때 하위 노드에도 영향을 미칠 수 있다. 버스 토폴로지 : 설치 비용이 적고 신뢰성이 우수한..

📚 CS

[CS] 디자인 패턴과 프로그래밍 패러다임

1.1.5 프록시 패턴 앞에서 옵저버 패턴을 설명할 떄, 객체의 상태변화를 감지하면 옵저버들에게 변화를 알려주는 객체를 프록시 객체라고 하였는데, 이를 이용해 대상 객체에 접근하기 전 흐름을 가로채 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다. 프록시 패턴은 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다. 프록시 서버는 실제 서버와 사용자 간의 중개자 개념으로, 사용자로부터 요청받는 정보들을 먼저 처리한다. 캐싱을 하여 네트워크 비용을 절감할 수 있고, 비정상적인 접근을 감지하여 DDOS를 방지할 수도 있다. 실제로 Node.js 앞단에 설치하는 Nginx를 프록시 서버로 주로 둔다. 이를 통해 본 서버의 포트를 숨길 수 있고, 버퍼 오버플로우를 방지할 수 있다. ..

황재웅 Jaeppetto
심증을 물증으로