[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

분류 전체보기 496

[Network] HTTP API 설계 예시

일반적으로 HTTP API는 POST를 기반으로하는 시스템과 PUT으로 하는 시스템으로 나뉜다. 그 외에도 HTML FORM만을 사용하면서 Control URI라고 하는 것을 활용해 여러 작업을 수행할 수도 있다. HTTP API : POST 기반 POST 기반 API의 대표적인 시스템으로는 회원관리 시스템이 있다. 회원 등록을 POST로 진행한다.(물론 회원 수정이나 조회, 삭제 등에는 각각 PATCH, GET, DELETE 메서드가 사용될 수 있다.) EX : POST /members 사용자가 등록하는 리소스의 URI를 모른다는 특징이 있다. 이처럼 POST를 기반으로 하여 클라이언트가 새로 등록될 리소스의 URI를 모르는 시스템을 컬렉션이라고 부른다. HTTP API : PUT 기반 PUT 기반 A..

[Network] HTTP 메서드 활용

데이터 전달 방식은 크게 2가지 쿼리 파라미터를 통한 데이터 전송 : GET / 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 : POST, PUT, PATCH / 회원가입, 상품 주문, 리소스 등록, 리소스 변경 등 클라이언트에서 서버로 데이터를 전송하는 4가지 상황 정적 데이터 조회 이미지 혹은 정적 텍스트문서. 쿼리파라미터를 사용하지 않고 경로만으로 데이터를 조회한다. (GET) 동적 데이터 조회 주로 정렬 필터(검색어)에 활용. 쿼리 파라미터를 전송하면 서버에서 이를 기반으로 동적으로 생성한 결과를 조회한다. (GET + 쿼리 파라미터) HTML Form을 통한 데이터 전송 HTML Form을 submit하면 POST가 전송된다. form의 내용을 메시지 바디를 통해 전송 (key=va..

[알고리즘 연습] 타겟 넘버 (프로그래머스 lv2, 파이썬)

문제 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 풀이 from collections import deque def solution(numbers, target): que = deque([0]) for i in range(0, len(numbers)): for _ in range(2**i): now = que.popleft() que.append(now..

[알고리즘 연습] 수식최대화 (프로그래머스 lv2, 파이썬)

문제 https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 풀이 def solution(expression): answer = 0 priorities = [ ('*', '-', '+'), ('*', '+', '-'), ('+', '*', '-'), ('+', '-', '*'), ('-', '*', '+'), ('-', '+', '*') ] for priority in priorities: one = list(ma..

[알고리즘 연습] 더 맵게 (프로그래머스 lv2, 파이썬)

문제 https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 import heapq def solution(scoville, k): heapq.heapify(scoville) i = 0 while scoville[0] 1: heapq.heappush(scoville, heapq.heappop( scoville) + (heapq.heappop(scoville..

[알고리즘 연습] 124나라의 숫자 (프로그래머스 lv2, 파이썬)

문제 https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 풀이 def solution(n): bs = "" while n: b = n % 3 n = n // 3 bs = "412"[b] + bs if not b: n -= 1 return bs 값을 3으로 나눠가며 그 나머지가 0일 경우 4, 나머지가 1일 경우 1, 나머지가 2일 경우 2를 추가한다. 나머지가 0이라는 것은 3으로 딱 나누어 떨어진다는 뜻이므로 몫에서 1을 빼주어야만 한다 나머지가 0일경우 몫에서 1을 빼준다는 포인트를 잡지 못해 많이 헤맸던 문제이다.

[알고리즘 연습] 실패율 (프로그래머스 lv1, 파이썬)

문제 [https://programmers.co.kr/learn/courses/30/lessons/42889] 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 풀이 def solution(N, stages): result = {} denominator = len(stages) for stage in range(1, N+1): if denominator != 0: count = stages.count(stage) result[stage] = count / denominator denominator -= coun..

Python으로 Mysql 다루기 (pymysql)

DB 사용자관리 사용자 생성 : mySQL 의 root 사용자를 모든 용도에 사용하지 말고, 적절한 권한을 가지는 사용자를 생성하여 사용하는 것이 바람직 예) create user 'db2020'@’%’ identified by 'db2020'; 권한 부여 : 특정 데이터베이스, 테이블 등에 읽기/쓰기 등의 권한을 부여할 수 있음 예) grant all privileges on university.* to 'db2020'@'%'; DB 응용프로그램 API 호출 순서 1. DB connection 설정 #Pymysql를 import import pymysql #DB connection 설정 conn = pymysql.connect( host='localhost', user='db2020', password..

[알고리즘 연습] 체육복 (프로그래머스 lv1, 파이썬)

문제 https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 풀이1 def solution(n, lost, reserve): set_reserve = set(reserve)-set(lost) set_lost = set(lost)-set(reserve) for i in set_reserve: if i-1 in set_lost: set_lost.remove(i-1) elif i+1 in set_lost: set_lost...

[Network] HTTP 메서드 기초

API URI 고민 Uniform Resource Indentifier. 즉, URI는 Resource를 관리하는 기준이라고 할 수 있다. 따라서 리소스를 기준으로 식별하는 것이 바람직하다. 예를 들어 '미네랄을 캐라' 라는 목적이 있다면 여기서 리소스는 '캐는 행위'가 아닌 '미네랄'이 되어야 한다는 것이다. '리소스'와 '리소스를 대상으로 한 행위'를 분리하여 생각해야한다. 물론 단순 리소스 기준으로 URI 구별이 어려울 경우에는 추가적인 식별이 필요하지만, 기본적인 원칙은 이렇다. HTTP 메서드 종류 GET: 리소스를 조회한다. POST: 요청 데이터 처리한다. PUT: 리소스를 대체하여 등록한다. 해당 리소스가 없으면 생성한다. PATCH: 리소스 내용을 부분 변경한다. DELETE: 리소스를 ..