본문 바로가기

전체 글71

API, HTTP API, REST API 차이 기상청 날씨정보 API, 증권 API, 지도 API 등등 막연하게 API란 단어를 들어왔다. API를 가져다 써, API로 개발한다 등등 개념은 제대로 모르며 사용 해왔기에 이번엔 API에 대해 개념적으로 정리해보고자 한다. API의 마지막 알파벳 i가 뜻하고 있는 인터페이스 개념부터 살펴보자. *인터페이스(Interface): 사물과 인간 사이의 경계에서 상호 간의 소통을 위해 만들어진 물리적 매개체나 프로토콜을 말한다. 예를 들어 TV 리모콘 전원 버튼은 인터페이스다. 사람이 리모콘 버튼을 눌러 TV가 켜지도록 연결하는 매개체이기 때문이다. API(Application Programming Interface) 애플리케이션(응용프로그램)에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능.. 2021. 12. 18.
HTTP/1.1, HTTP/2, QUIC 차이 (TCP, UDP 개념 포함) HTTP 버전별 차이를 설명하기 이전에 위 그림의 통신 모델에서 Transport(전송) 계층의 역할부터 알아본다. 전송 계층은 목적지(서버)에 신뢰할 수 있는 데이터를 전송하기 위해 필요하다. 물론 물리 계층, 데이터링크 계층, 네트워크 계층만으로 목적지에 데이터를 보낼 수 있지만, 중간에 데이터가 손상되거나 유실되더라도 이들 계층에서는 아무것도 해주지 않는다. 데이터가 제대로 전달 되었는지의 역할을 전송 계층에서 해주는 것이다. 전송 계층의 특징을 보면 신뢰성/정확성과 효율성으로 구분할 수 있다. 신뢰할 수 있고 정확한 데이터를 전달하는 통신을 연결형 통신이라 하고, 효율적으로 빠르게 데이터를 전달하는 통신을 비연결형 통신이라 한다. 일반적으로 신뢰성과 정확성이 보장되지 않은 통신은 사용하고 싶지 않.. 2021. 12. 16.
HTTP, Socket 통신의 차이 일반적으로 휴대폰, 컴퓨터 등에서 필요로 하는 데이터들은 Server에서 받아온다. 네트워크를 통해 서버로부터 데이터를 가져오기 위한 통신으로는 크게 HTTP 통신과 Socket 통신 2가지가 있다. 오늘은 이 2가지 통신에 대해 알아보자. HTTP(HyperText Transfer Protocol) 하이퍼 텍스트를 주고 받기 위한 규칙(통신 규약)을 말한다. 하이퍼 텍스트란 연결 고리를 통해 다른 문서로 접근할 수 있는 텍스트를 말한다. HTML의 를 떠올리면 이해하기 쉽다. HTTP라는 통신 규칙을 만든 것은 좋은데, 정작 하이퍼 텍스트를 보기좋게 표현할 방법이 없었다. 누구든 동일한 방법으로 하이퍼 텍스트를 표현할 방법이 필요했다. 이에 팀 버너스리는 인터넷 기반의 하이퍼 텍스트 작성을 위한 방법들.. 2021. 12. 15.
URI, URL, URN 차이 URI 이란? 위키피디아 통합 자원 식별자(Uniform Resource Identifier, URI)는 인터넷에 있는 자원을 나타내는 유일한 주소이다. URI의 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에 항상 붙어 다닌다. URI의 하위개념으로 URL, URN이 있다. 역사 URI와 URL은 역사를 함께 공유한다. 1994년 팀 버너스 리가 하이퍼텍스트를 제안하면서 하이퍼링크의 대상이 되는 자원을 대표하는 짧은 문자열로 URL의 개념을 암묵적으로 도입하였다. 당시 사람들은 이를 "하이퍼텍스트 이름" 또는 "문서 이름"으로 불렀다. Uniform: 리소스를 식별하는 통일된 방식 Resource: 자원, URI로 식별할 수 있는 모든 것 Identifier: 다른 항목과 구분하는데 필요한 .. 2021. 12. 15.
이더넷(Ethernet), 인터넷(Internet)과 웹(web)의 차이 네트워크 서적을 읽던 중, 이더넷이라는 개념이 등장하였다. 인터넷도 아닌 이더넷.. 들어보긴 했는데, 인터넷의 뭔가 하위 버전 느낌?? 인터넷 접속? 웹 접속? 인터넷과 웹은 그럼 같은 거냐 점점 더 미궁속으로.. 속 터진다. 정리하며 명확하게 구분해보자. 위키백과 정의 이더넷(Ethernet) 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN에서 데이터를 주고 받기 위해 가장 많이 활용되는 기술 규격이다. 허브, 스위치와 같은 장비에 연결된 같은 네트워크 안의 컴퓨터끼리 데이터를 주고 받을 때 사용되며, OSI 모델의 물리 계층(LAN카드, 케이블 영역)에서 신호와 배선, 데이터 링크 계층에서 MAC 주소와 프로토콜의 형식을 정의한다. 인터넷(Internet) 1973년 TCP/IP를 정립한 빈튼 서프.. 2021. 12. 14.
KNN(k - nearest neighbors) 최근접 이웃 알고리즘 녹색의 별 모양 영화는 과연 액션 영화인가? 로맨틱 영화인가? k=3 으로 정한다. 최근접점이 3개인 것으로, k는 기본적으로 짝수를 사용한다. 홀수로 쓸 경우 2:2 같은 상황에서 답을 할 수가 없기 때문이다. 이 녹색 영화의 최근접 안에 Action movie가 2개이기 때문에 이 녹색 영화는 액션 영화라고 판단된다. 2020. 3. 15.
실습) 행렬 norm이란? 배워서 어디다 쓰게? Norm (위키백과 정의) : 벡터의 길이 혹은 벡터의 크기를 나타낸다. 이를 행렬로 확장하면 다음의 식으로 정의된다. 쉽게 말해서 행렬에서 크기를 구하는 방법 중 하나라고 생각하면 된다. 보통 p값으로 1 또는 2(프로베니우스 놈)을 가장 많이 사용하므로, 수식을 정의 한 뒤 실습을 진행해보겠다. p = 1인 놈을 보통 L1 Norm, p = 2인 놈은 L2 Norm으로 쓴다. L2 Norm은 우리가 알고 있는 Euclidean Norm라고도 부르며, 두 점의 거리를 구할 때 제곱한 것을 다 더해서 루트를 씌워주었던 바로 그것이다. 프로베니우스 놈(Frobenius norm)은 vector L2 Norm을 행렬로 확장한 버전이다. L1 Norm: 절대값의 합 L2 Norm: 원점과의 거리(피타고라스 정.. 2020. 3. 12.
보충) numpy로 푸는 선형방정식, 행렬식 numpy의 linalg 서브패키지의 solve를 활용하여 선형 연립방정식을 풀어보자. ex) 2x + 3y = 1 x - 2y = 4 를 만족하는 x, y는 무엇인가? 행렬식 (위키백과 정의) : 선형대수학에서, 행렬식은 정사각행렬에 수를 대응시키는 함수의 하나이다. det(A) 로 정의하며, 연립 방정식이 해를 가지는지 아닌지를 결정하는 데 사용된다. 행렬 norm 참고 영상: https://www.youtube.com/watch?v=o44YKdEH8a0 2020. 3. 12.
[1단계] 2016년 [1단계] '2016년' 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 문제 풀이 def solution(a, b): day = ['FRI','SAT','SUN','MON','TUE','WED','THU'] month = [31.. 2020. 3. 9.
2.2) Numpy로 공부하는 선형대수(행렬, 텐서, 전치연산) * 본 포스팅은 김도형의 데이터사이언스 스쿨(수학편)을 읽고 썼으며, 책에서 설명이 부족한 부분은 따로 보충했습니다. 행렬: 복수의 차원을 가지는 데이터 레코드를 합쳐서 표기한 것. (데이터 레코드의 모음집)ex. 한 송이의 붗꽃이 4차원 벡터(데이터 수가 4개)라면, 아래의 행렬은 6송이의 붗꽃 데이터를 표기한 것과 같다. 데이터를 행렬로 묶어서 표시할 때는 붗꽃 하나에 대한 데이터 레코드, 즉 하나의 벡터가 열이 아닌 행으로 표시하나의 데이터 레코드를 단독으로 벡터로 나타낼 때는 하나의 열로 나타내고, 복수의 데이터 레코드 집합을 행렬로 나타낼 때는 하나의 데이터 레코드가 하나의 행으로 표기된다. 텐서: 데이터 사이언스 분야에서 다차원 배열을 텐서라고 부른다. 같은 크기의 행렬이 여러 개 묶여 있는 .. 2020. 3. 7.
2.1) Numpy로 공부하는 선형대수 * 김도형의 데이터사이언스 스쿨(수학편)을 토대로 작성했으며, 책에서 설명이 부족한 부분은 따로 보충했습니다. 선형대수의 데이터 유형: 스칼라, 벡터, 행렬, 텐서 스칼라: 숫자 하나만으로 이루어진 데이터 벡터: 여러 숫자가 특정한 순서대로 모여 있는 것, 한 송이의 붗꽃에서 나온 4가지 특징 데이터의 묶음 특징 벡터: 데이터 벡터가 예측 문제에서 입력 데이터로 사용되면 특징 벡터라고 한다. [numpy를 사용한 벡터 표현] 1) 넘파이를 사용하여 벡터를 표현할 때는 2차원 배열 객체로 표현한다. 대괄호 2개를 이용하여 행렬의 형태로 만드는 것이다. 데이터는 항상 (n_samples, n_features) 의 구조를 가진 2D 배열. 아래 코드는 (4, 1) 행렬 * 벡터는 열의 수가 1인 행렬이라고 볼.. 2020. 3. 5.
[1단계] '제일 작은 수 제거하기' [1단계] '제일 작은 수 제거하기' 문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. arr return [4,3,2,1] [4,3,2] [10] [-1] 문제 풀이 1) 배열이 빈 배열이거나 1개일 경우, -1을 리턴하는 코드를 작성 if len(arr) == 0 or len(arr) == 1 : return [-1] 2) ar.. 2020. 3. 5.