전체 글 211

[HTTP완벽가이드] 캐시

캐시 불필요한 데이터 전송을 줄임 네트워크 병목을 줄임 원서버 부하 감소 거리로 인한 지연 줄임 1. 불필요한 데이터 2. 대역폭 병목 3. 갑작스런 요청쇄도 4. 거리로 인한 지연 빛의 속도 그 자체가 유의미한 지연 발생 5. 적중과 부적중 캐시 적중 (cache hit), 캐시 부적중(cache miss) 1) 재검사 신선도 검사 캐시된 사본이 충분히 오래된 경우에만 재검사 원서버에 작은 재검사 요청 304 not modified 이럴땐 순수 캐시 적중보다 느리겠네. 다만 캐시 부적중 보다는 빠름 (근데 재검사 해서 신선하지 않을 경우에는 더 느린거 아닌가) If-Modified-Since 헤더 겟요청 호출 시 보냄 304는 해당 캐시된 사본 사용 404는 서버객체가 삭제된 케이스로 캐시는 사본삭제 ..

💻IT 2023.10.16

[HTTP 완벽가이드] TCP 커넥션 관리

1. TCP 커넥션 브라우저가 TCP 커넥션을 통해 웹서버에 요청을 보내는 순서 모든 HTTP 통신은 TCP/IP 를 통해 이루어진다. 1) URL에서 호스트명 추출 2) 호스트명에 대한 IP 주소 추출 3) 포트 번호 추출 4) IP와 Port로 TCP 커넥션 생성 5) HTTP 요청 보냄 6) HTTP 응답 수신 7) 커넥션 끊기 - TCP 커넥션은 인터넷을 안정적으로 연결 - HTTP에 신뢰할 수 있는 통신 방식 제공 - 순서에 맞게 정확히 전달 TCP 데이터 전송 방식 세그컨트 단위로 데이터 스트림을 나누고, 세그컨트를 IP패킷에 담아서 인터넷을 통해 데이터 전달 - IP 패킷 구성요소 IP패킷 헤더(IP정보), TCP 세그먼트 헤더(포트번호, 체크섬), TCP 데이터 조각(데이터) 유일한 TCP..

💻IT 2023.08.31

[git] git 헷갈리는 부분 정리

git을 혼자만 쓰다보니 쓰는 기능이 한정되어 있고, 직전 실무는 SVN을 썼고 브랜치 전략이란게... 없었다. 아주 오래전 git flow 를 경험해본적이 있지만 잘 기억이 나지 않아 한번 정리해보았다. git master branch의 default namemaster vs main 예전에는 master로 default name이 사용됨 요즘에는 main이 default name으로 생성됨 origin : remote repository url을 참조하기 위한 alias같은 것. remote: origin이 참조하는 remote repository에 특정 커맨드를 수행하기 위해 사용하는 커맨드 pull과 fetch의 차이pull: remote repository의 내용을 가져와 자동 병합 (fetch..

💻IT 2023.04.23

[Kotiln] No default constructor for entity

문제엔티티 인스턴스 생성 시 발생하는 기본 생성자 없음 오류 기존 Java + spring boot 조합에서는 lombok을 설치해서 @NoArgsConstructor 어노테이션 사용. Kotlin에서는 dataClass를 지원하여 lombok의 대다수의 기능을 대체. lombok 사용 안하고 어떻게 해결? 해결 kotlin-jpa plugin 설치하면 @Entity @Embeddable @MappedSuperclass 의 기본 생성자 자동 생성 plugins { kotlin("plugin.jpa") version "1.6.10" }

💻IT 2023.03.27

[프로그래머스] 숫자 변환하기 (Python)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 BFS로 풀면 됨. 다만 6번 테스트 케이스에서 계속 틀림 y가 x값과 같을 수 있음을 고려하지못함 if x == y : return 0 추가 소스코드 from collections import deque def solution(x, y, n): INF = 1e9 dp = [INF] * (y+1) q = deque() q.append((x, 0)) while q: num, cnt = ..

[프로그래머스] 덧칠하기 (Python)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 롤러로 칠한 구역의 마지막 index를 기억했다가 다시 칠할 구역이 해당 index보다 커지면 덧칠횟수를 증가시키고 마지막 index를 갱신한다. 소스코드 def solution(n, m, section): answer = 0 lastidx = 0 for i in section: if i > lastidx: answer += 1 lastidx = i + m -1 return answer

개인정보처리방침

등산왕은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. 등산왕에서 조회 및 변경하는 데이터는 사용자의 휴대 기기에만 저장됩니다. 등산왕은(는) 별도로 개인정보를 수집하거나 처리하지 않습니다. 제1조(개인정보의 처리목적) 등산왕은(는) 별도로 개인 정보를 수집하거나 처리하지 않습니다. 제2조(개인정보의 처리 및 보유 기간) 등산왕은(는) 별도로 개인 정보를 수집하거나 처리하지 않습니다. 제3조 (개인정보의 제3자 제공에 관한 사항) 등산왕은(는) 타 업체에 개인정보처리를 위탁하지 않습니다. 제4조 (개인정보 보호책임자 작성) 등산왕은(는) 개인정보 처리에 관한 업무..

MountainGo 2023.02.03

[Expo] React Native 프로젝트 apk파일로 빌드

1. eas.json에서 buildType apk로 설정 eas.json { "cli": { "version": ">= 3.4.1" }, "build": { "development": { "developmentClient": true, "distribution": "internal" }, "preview": { "distribution": "internal" }, "production": { "android": { "buildType": "apk" } } }, "submit": { "production": {} } } 2. 빌드 명령어 실행 eas build --profile production --platform android - expo 로그인이 안되어있다면, 로그인 진행한다. - Build deta..

MountainGo 2023.01.27