반응형

전체 글 143

[네트워크] HTTP

HTTP란?Hyper Text Transfer Protocol의 약자이다.Protocol은 규약을 의미한다. 즉, 인터페이스라고 볼 수 있다.클라이언트와 서버가 데이터를 주고 받기 위한 통신 규약이다.HTTP 특성HTTP는 아래의 특성을 가진다.요청 응답 프로토콜요청을 하고 응답을 받는 구조이다.미디어 독립적 프로토콜특정 리소스에 제약이 존재하지 않아 미디어 독립적이다.스테이트리스 프로토콜클라이언트의 상태를 고려하지 않는다단, 클라이언트의 상태를 고려해야할 때 쿠키를 사용하기도 하며, 서버에서 Set-Cookie를 통해 정보를 주면 클라이언트가 이를 저장하여 요청시 헤더라인에 넣어 보내야 한다.이러한 특성으로 HTTP는 확장성이 뛰어나다.지속가능한 연결을 지원하는 프로토콜HTTP 1.1 버전 이후를 기준..

IT/Study 2026.07.21

[네트워크] 네트워크란?

네트워크네트워크란 스마트폰, 컴퓨터 등이 서로 데이터를 주고받는 통신 망을 의미한다.네트워크는 아래의 2가지로 살펴보겠다.거시적 네트워크미시적 네트워크거시적 네트워크네트워크의 기본 구조네트워크는 기본적으로 그래프 형태를 가진다.노드노드는 네트워크 기기, 간선은 기기들 끼리 연결하는 유/뮤선의 연결 매체라고 볼 수 있다.그래프의 노드들 중, 최초로 데이터를 최초 송신 또는 최종 수신하는 가장자리 노드를 호스트라고 명칭한다. 그렇다면 중간 노드들은 무엇일까?중간 노드들은 라우터, 공유기, 스위치와 같은 호스트들 간의 정보가 목적지까지 잘 수신되도록 돕는 장치들이다. 간선(링크)간선은 링크라고도 불리며, 기기들 끼리 연결하는 유/뮤선의 연결 매체.이러한 유/무선의 연결 매체는 케이블 또는 와이파이가 대표적인 ..

IT/Study 2026.07.21

[프론트엔드 최적화] 네트워크 최적화 (CDN)

네트워크 최적화는 어떤 최적화를 의미하는가?유저에게 서비스를 제공할 때, 화면에 보이는 페이지는 결국 서버로부터 전송받은 소스코드의 집합이다.유저에게 쾌적하게 페이지를 제공할 수 있도록, 리소스의 다운로드를 빠르고 효율적으로 만드는 것이 이번 글에서 다루는 네트워크 최적화이다. 자바스크립트 코드의 실행 속도를 높이는 것도 매우 중요하지만, 리소스의 전송 속도가 느리다면 그 효과는 미미할 수 있다.따라서 네트워크 최적화는 다른 모든 최적화의 기반이다.다운로드 속도를 높이는 방법다운로드 속도는 이론적으로 아래와 같이 계산된다. 메가 바이트 기준 (1bite = 8bit)(파일의 크기 x 8) / 네트워크 속도 위 공식에서 볼 수 있듯, 우리가 컨트롤 할 수 없는 네트워크 속도를 제외하면 파일의 크기를 다루어..

IT/Study 2026.07.15

[자료구조] Heap

Heap 이란? Heap 구조는 그 기준이 최소와 최대인지 여부로 먼저 나뉜다.그리고 자식 노드보다 항상 최소/최대인 구조를 의미한다.위의 내용에서도 알 수 있듯이, 형제 노드와의 최소/최대는 고려하지 않는 느슨한 정렬 상태를 가지고 있다. 이로인해 완전히 정렬된 상태를 유지할 필요가 없다. 따라서 nLog(n)의 시간 복잡도를 가지고 있다.Heap을 왜 쓰는가?자료구조에서 어떠한 구조를 쓴다는 것은 특정 자료를 빠르게 찾기 위함이다.Heap의 정의에서 알 수 있듯이, 최소/최대 상태인 자료를 빠르게 찾기 위해 Heap을 쓰는 것이라고 생각한다.Heap의 동작 방식Heap의 구조를 그대로 유지하면서, 데이터 추가/삭제가 이루어지는 것이 Heap의 동작 방식이다.데이터 추가Heap에서 데이터가 추가될 때의..

IT/Algorithm 2026.07.14

동적 프로그래밍[Dynamic Programming]

Concept1. 문제를 더 작은 조각으로 나눈다.2. 앞에 위치한 조각을 기억한다.3. 기억하고 있는 조각을 통해서 작업의 양을 줄인다. 언제 이것을 사용할 수 있을까?다음 2가지를 통해서 DP 알고리즘 사용 여부를 알 수 있다.- 최적화를 할 수 있는 부분 구조의 존재여부 [Optimal Substructure]- 반복되는 하위 로직의 존재여부 [Overlapping subproblems] 최적화를 할 수 있는 부분 구조의 존재여부 [Optimal Substructure]체크포인트- 하위 문제의 최적 해답으로 상위 문제의 최적 해답을 구할 수 있는지? A -> ... -> Z로 가는 최적 경로를 구하는 알고리즘과 같은 경우에, 위 사항을 체크해보아야 한다.A부터 Z까지 도달하는 데에 경로는 무수히 많..

IT/Algorithm 2025.07.13

벡터 테이블 만들기 삽질과정

SQL 연습할 겸 한국 주소에 대한 테이블을 만들고 가공하는 중이다.SQL 문법이나 서버 개발이 아직 손에 익지 않아서 고군분투 중.. 테스트 겸 검색값에 대한 테이블 조회를 단순히 LIKE 문을 사용하여 구현하였다.데이터가 한국 지도뿐이라서 속도가 느리지는 않으나 모든 데이터를 순회하며 비교를 하기 때문에,로컬 실행이고 전 세계 주소 데이터를 가지고 있었다면 매우 느린 속도를 보일 것이라고 판단하였다. 이에 따라 벡터 테이블을 만들어 유사성 비교로 속도를 높이고자 하였다. 저렴한 구현을 추구하기 때문에 무료 벡터 모델을 찾아보았다.오픈소스로 무료로 사용할 수 있는 Sentence-Transformers 모델 중 하나가 적합합니다.예를 들어, paraphrase-multilingual-MiniLM-L12..

IT/PostgreSQL 2025.04.02

AWS) Web Hosting

Web Hosting?💡웹 사이트를 구성하는 여러 파일을 다양한 디바이스에서 엑세스할 수 있도록 하는 서비스웹사이트에 엑세스하는 과정과 원리💡웹사이트를 본다 === IP 주소를 통해 서버에 페이지를 요청한다 하지만 우리는 보통 IP 주소를 입력하여 웹사이트에 접근하지 않는다.1. 유저가 브라우저 URL 주소를 입력한다.💡URL의 2가지 형태도메인 (ex. naver.com)IP 주소 (ex. 172.0.0.1) 거의 대부분의 서비스들은 URL 주소로 IP를 직접 노출시키지 않는다.사용자의 편의성을 위하여, 인식하기 쉬운 naver.com과 같은 도메인을 사용한다. 도메인으로 웹사이트에 접근하는 원리도메인은 IP 주소와 매칭되어있다.DNS 서버를 통해 해당 도메인과 매칭되는 IP 주소를 찾을 수 있다..

IT/Project 2025.03.09

Expo) Sentry 소스맵 업로드

1. Sentry의 역할빌드 파일은 기존 코드를 난독화하고, 압축하기 때문에 정확한 에러 지점을 파악하기 어렵다.Sentry에 소스맵을 업로드하면, 에러가 발생한 코드에 대한 원본 코드 위치를 소스맵을 통해 알 수 있다.또한 에러 발생 즉시 리포트가 이루어지기 때문에 즉각적인 대응이 가능하다.2. 소스맵 업로드각 버전별로 소스맵을 Sentry에 업로드할 수 있다.다만, 아래 2가지 상황별로 소스맵 업로드 방식이 다르게 존재한다.2-1 EAS Cloud 빌드자동으로 Sentry에 소스맵이 업로드 된다.별도의 소스맵 업로드 처리가 필요하지 않다.2-2 EAS UpdateEAS Update 명령 실행 시 소스맵이 생성된다. (위치: root/dist/bundles)bundle 폴더에 생성된 소스맵 파일은 An..

IT/React-native 2025.03.09

Expo) 카카오 로그인 구현하기 - 라이브러리 설치 및 빌드

expo에서 카카오 로그인을 구현하고자 했다. 로그인 구현 방식은 웹뷰/앱 내부로 크게 두 가지로 구현이 가능하다. 웹뷰로 로그인을 구현하게 되면 카카오 앱으로 넘어가기 때문에 웹뷰가 아닌 앱 내부에서 로그인을 처리하고 싶었다. (참고링크) 서치한 결과 @react-native-seoul/kakao-login을 사용하면 expo에서도 앱 내부에서 카카오 로그인이 구현 가능하다는 것을 알게 되었다. yarn add @react-native-seoul/kakao-login 이후에 로컬 빌드를 하였으나 아래의 에러를 마주하게 되었다. * What went wrong: Could not determine the dependencies of task ':app:processDebugResources'. > Cou..

IT/React-native 2024.04.17

eslint, husky, lint-staged, commitlint 설정

회사에서 리액트 네이티브 프로젝트를 시작하면서 eslint, husky, lint-staged, commitlint를 적용해보았다. eslint 프로젝트 할 때마다 설정하는건데 항상 찾아보는 것 같다.. 우리는 타입스크립트를 사용하기 때문에 타입스크립트 관련 eslint 패키지도 함께 설치해준다. yarn add -D eslint eslint-plugin-react-hooks eslint-plugin-react eslint-plugin-react-hooks @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint를 설정하기 위해 .eslintrc.js를 구성한다. .eslintrc.js에 모든 설정을 몰아넣게되면 관리하기가 어려우므로, 먼저 주..

IT/React-native 2024.01.11
반응형