분류 전체보기

    HTTP Method

    ›프로젝트를 정리하다가 API 통신에서 사용했던 http 메소드가 궁금해져 정리해보려고 한다 😀 HTTP 메소드란? : 클라이언트가 서버에게 사용자 요청의 목적을 알리는 가이드라인이다. 이러한 가이드라인을 잘지켜야 RESTful한 API를 작성할 수 있다고 한다. RESTful한 API는 REST 특징을 지킨 API인데, 여기서 REST는 http 통신에서 어떤 자원에 대한 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 Resource(URI)로 요청을 보내는 것이라고 한다. 킁. (*URI은 URL을 포함하는 개념!) 아직까지는 REST를 API를 어떻게 만들 것인가에 대한 표준 정도로 생각하고 있다. 아무튼 이러한 RESTful API의 구성요소 중 하나인 Met..

    [AWS] EC2 인스턴스 - SSH 연결 시 Error 해결 방법

    처음에는 linux 용 AWS EC2 인스턴스 생성 후 SSH를 통해 연결을 시도했다. 내가 ssh 연결을 위해 작성한 명령어: ssh -i *.pem linux@{내 퍼블릭 IPv4 주소} 첫 번째로 직면한 문제: Permissions 0644 for 'flask.pem' are too open. 다운로드한 키 페어가 too open 되어 있기 때문에 connecting을 거절당했다. 해결 방법: 아래 코드로 키 페어의 권한을 소유자에게만 읽기 권한이 있도록 변경해준다. chmod 400 flask.pem 두 번째로 직면한 문제: Permission denied (publickey, gssapi-keyex, gssapi-with-mic). 해결 방법: 내 instance user name을 제대로 안 ..

    [JavaScript] 동기 & 비동기

    자바스크립트는 코드가 작성된 순서대로 작업을 처리하며, 이전 작업이 진행 중일 때는 다음 작업을 수행하지 않고 기다린다. 이런 Task 처리 방식을 동기 방식의 처리라고 한다. function TaskA() { console.log("TASK A"); } function TaskB() { console.log("TASK B"); } function TaskC() { console.log("TASK C"); } TaskA(); TaskB(); TaskC(); 동기적 처리의 단점은 하나의 작업이 너무 오래 걸린다면 모든 작업이 해당 작업이 종료되기 전까지 STOP 되기 때문에 전체 흐름이 지체된다. 즉, 성능 상의 문제가 발생한다. 다른 언어(C, C++ ... )에서는 멀티스레드 방식을 사용할 수도 있지만..

    [JavaScript] spread | 전개 연산자

    스프레드 연산자('...')는 연결, 복사 등의 용도로 사용되며 배열과 객체를 한 줄로 펼치는 방법이라고 할 수 있다. 배열에서는 다음과 같이 사용할 수 있다. const coffee = ["아메리카노", "바닐라라떼"]; const juice = ["포도주스", "오렌지주스", "토마토주스"]; const menu = [...coffee, "새로운 음료", ...juice]; console.log(menu); // ["아메리카노", "바닐라라떼", "새로운 음료", "포도주스", "오렌지주스", "토마토주스"] 상당히 직관적인 예시라고 생각한다 ^-^! 객체에서는 다음과 같이 사용할 수 있다. const latte = { base: "milk", from: "Starbucks" }; const bani..

    [JavaScript] 비구조화 할당 그리고 SWAP

    배열의 비구조화 할당 배열에서 비구조화 할당을 사용한다면, 배열 안에 있는 값을 추출해서 변수 / 상수로 바로 선언이 가능하다. 배열 안에 있는 원소를 새로 선언해주고 싶을 때 굉장히 유용한 문법이다. # Case 1: 기존 할당 방법 let colors = ["red", "green", "blue"]; let color0 = colors[0]; let color1 = colors[1]; let color2 = colors[2]; console.log(color0, color1, color2); // red green blue # Case 2: 비구조화 할당 let [color1, color2, color3] = ["red", "green", "blue"]; console.log(color0, color..

    [Swift] Protocols | Delegate를 살짝 곁들인

    프로토콜이란? 프로토콜: 최소한으로 가져야할 프로퍼티와 메소드를 정의하는 것이다. 해당 Object가 task를 수행하기 위해 반드시 구현해야하는 것을 정의해준다. Java의 interface와 비슷한 역할을 한다. protocol은 선언이고, type에서 구현해줘야한다. ex1) Swift에서 제공하는 프로토콜 예시 중 하나인 CustomStringConvertible을 사용한 코드 사용자가 지정한 틀대로 class를 출력할 수 있다. var greeting = "Hello, playground" class person: CustomStringConvertible { let name: String let age: Int let isFemale: Bool init(name: String, age: Int..

    [JavaScript] Truthy & Falsy

    Truthy: 참이 아니라 참같은 값 Falsy: 거짓이 아니라 거짓같은 값 이게 무슨 소리인가 예시를 보자 Truthy ex: {} 빈 객체 [] 빈 배열 0을 제외 한 숫자값 빈 문자열을 제외한 문자열 Falsy ex: null defined 0 빈 문자열 NaN 예시를 보니깐 감이 온다. 파이썬에서도 빈 배열인지 확인할 때 # python arr = [] if not arr: print("빈 배열입니다.") else: print("빈 배열이 아닙니다.") 위 예시처럼 arr를 true/false로 반환하여 판단하는데, 이런 걸 truthy/falsy라고 하는 것 같다. 위의 Python 예시를 JavaScript로 바꿔보면 다음과 같다. # JavaScript const arr = [] if (!a..

    [Algorithm] 힙 | 최대 힙, 최소 힙

    heap이란? : 우선 순위 큐(priority queue)를 구현하기 위해 사용하는 자료구조 중 하나로, 완전이진트리를 base로 한 자료구조. 우선순위 큐는 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 점이 특징 최소 힙: 부모 노드의 키 값이 자식 노드의 키 값보다 항상 작은 힙 최대 힙: 부모 노드의 키 값이 자식 노드의 키 값보다 항상 큰 힙 자료구조 추출되는 데이터 스택(stack) 가장 나중에 삽입된 데이터 큐(queue) 가장 먼저 삽입된 데이터 우선순위 큐(priority queue) 가장 우선 순위가 높은 데이터 최소 힙 (min heap) : 값이 가장 낮은 데이터가 먼저 삭제 import heapq heap = [] heapq.heappush(heap, 5) heapq.heap..