본문 바로가기

IT개념/프로그래밍상식

(16)
[TCP]데이터 보증과 재전송제어 TCP/IP 프로토콜은 연결이 생성된 이후 데이터 송수신이 시작된다. 이에 데이터가 확실히 전달되도록 보증하는 기능에 대해 알아보자. 데이터 손실을 방지하는 구조 이는 확인 응답과 재전송으로 구현된다. 수신 측에 TCP 세그먼트가 도착하면 수신 측은 송신 측에게 도착을 알린다. 이 때 반환하는 것을 ACK라고 하며, TCP 헤더에 ACK 관련 정보를 넣은 TCP 세그먼트를 반환한다. 즉, 하나의 TCP 세그먼트로 응답할 때 데이터의 ACK를 동시에 반환하여 왕복 횟수를 줄인다. 송신 측은 ACK가 돌아오는 것을 보고 전송한 세그먼트가 무사히 도착했다는 것을 알 수 있다. ACK가 오지 않으면 무슨 문제가 생긴것이므로 언제든지 재전송 할 수 있도록 전송이 끝난 TCP 세그먼트도 ACK를 받기 전까지는 소켓..
캐시에 대하여 캐시 캐시란? 캐시는 cash(현금)이 아니라 cache라고 쓴다. 캐시에는 '숨기는 장소'라는 의미가 있다. 컴퓨터 세계에서는 사용 빈도가 높은 데이터를 고속으로 엑세스할 수 있는 위치에 두는 것을 의미한다. CPU의 1차, 2차캐시, 저장소 캐시, OS 페이지 캐시, 데이터베이스 버퍼 캐시 등 광범위하게 일컫는다. 캐시는 임시 저장소를 의미한다. 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다. 데이터 재사용을 전제로 한다. 어디에 사용되는가 브라우저 캐시는 웹 브라우저가 접속한 페이지를 캐시하는 것이다. 이를 통해 웹 서버 접속을 줄이고 브라우저 표시를 고속화 할 수 있다. 웹 서버 부하를 줄이는 다른 방법으로는 웹 서버와 클라이언트 사이에 캐시서버를 배치하는 방법..
CORS, SameSite 이슈 CORS (Cross-origin resource sharing) 브라우저는 보안상의 이유로 프로토콜, 호스트, 포트 등 출처가 다른 URL간의 통신을 제한한다. 예를들어 http://abcd.com에서 http://1234.com 을 요청하는 경우 발생한다. 이를 해결하기 위해서는 서버에서 Access-Control-Allow-Origin 헤더에 프론트 주소를 적어주어야 에러가 나지 않는다. SameSite 이전에는 프로토콜이 달라도 도메인이 같으면 같은 사이트로 취급을 했다.(samesite) 그렇기에 http에서 쿠키를 만들고 https를 사용하는 식의 취약점 문제로 브라우저는 http와 https간 통신을 제한했다. form의 post메소드 요청으로 http에서 https로 쿠키를 보낼 수 없게되..
프로그래밍을 배우기 어려운 이유와 극복하는 방법 본문 : https://www.thinkful.com/blog/why-learning-to-code-is-so-damn-hard/ Why Learning to Code is So Damn Hard | Thinkful What every beginner absolutely needs to know about the journey ahead. www.thinkful.com 취업하기 전 언어의 기초를 다시 한번 다지고 싶어서 인프런의 자바 무료 기초 강의인 JAVA 플레이그라운드를 잠들기 전 조금 씩 수강하기 시작했다. 첫 강의에서 프로그래밍 학습이 어려운 이유와 그 극복 방법에 대한 방법을 지도하기에 이를 정리해보고 앞으로 개발자의 토대를 쌓아가는데 도움을 주고자 한다. 학습이 어려운 이유 1. 절망의 계곡..
디버그 시 System.out.println()을 사용하지 않는 이유 System.out.println은 예제 프로그램 등 간단한 것에는 무관하나, 실제로 사용자가 있는 프로젝트 환경에서는 사용을 지양하여야 한다. 표준 프레임워크 퍼스트북에 설명이 나와있다. System.out.println()을 호출하게 되면 디스크 I/O 동기화 처리가 되기 때문에 전체적인 시스템의 성능이 저하 될 수 있고, System.out.println() 으로 디버그 처리한 부분을 일일이 주석처리, 해제하는 것은 개발 및 운영의 효율을 떨어트릴 수 있다. 이해가 안되서 더 찾아보고 정리해보았다. System.out.println()으로 디버그 정보를 출력하면 인자 값만 출력해준다. 최소한의 로그 정보가 없다는 것이다. 로깅 라이브러리(log4j, slf4j 등)를 사용하면 날짜/시간/로그 생성자..
아카이브 보호되어 있는 글입니다.
[마크다운] 마크다운 연습 마크다운 연습 목차 텍스트 제목 강조 (굵기, 기울기, 취소선) 인용문 자료 가로줄 링크 이미지 코드블럭 목록 제목 제목1 # 제목1 제목2 # 제목2 6단계 까지 할 수 있다. 강조 굵게 **굵게** 기울게 *기울게* 취소선 ~취소선~ 인용문 인용문 > 인용문 두번쓰면 두번나옴 두번쓰면 두번나옴 가로줄 --- (- 3번 입력) 링크 네이버 [네이버](naver.com) 이미지 ![이미지](https://cdn.crowdpic.net/detail-thumb/thumb_d_2F583E5543F7E19139C6FCFFBF9607A6.jpg) 코드블럭 중간 삽입 코드 중간 '삽입' 코드 여러 줄 코드 > 여러 줄 코드 목록 순서 있는 목록 1. 순서 1 .있는 1. 목록 순서 없는 목록 - 순서 - 없는 - ..
변수의 이름 짓기, 변수명 표기법 (Naming Rule) 변수의 이름을 지을 때엔 여러 단어를 사용해서 정의해야 할 때가 많다. Ex) 간단한 한 단어를 사용하는 경우 - title, heading, paragraph... : 이러한 경우 Naming이 중복될 여지가 많음 여러단어를 조합해서 사용하는 경우 - contents-title, list-title... : 이러한 경우 Naming이 중복될 여지가 적음 : 이름이 길어짐 => Naming을 여러단어로 조합해서 사용하는 경우 단어별로 구분되도록 해야 함 Naming은 공백을 허용하지 않음. Ex) contentstitle => contents title (X) contentstitle => contents-title (O) Naming 방식 표기법 예시 설명 케밥 표기법(kebab case) conten..