본문 바로가기
반응형

전체 글113

당근마켓 회원가입api 만들기 - 3일차 오늘 서버 구성 및 회원가입 api를 작성하였다. 이전과 다르게 이번에는 한 서버로 2명이 사용을 해야하기에 설정할 것들이 더 많았다. 그렇지만 한번의 경험으로 스무스하게 끝냈다. 그리고 다른 분께서 구글링을 통해 서울 전체의 행정구역별 경도, 위도가 잘 정리된 엑셀 파일을 찾으셔서 직접 좌표를 찾아 넣을뻔한 수고를 덜게 되었다. 이것으로 5시간 정도는 아낀 것 같다. 회원가입 api 자체는 금방 만들 수 있었다. 그러나 서버 측과 클라이언트 측이 회원가입을 위해 데이터를 서버측으로 보내는 방식을 다르게 생각하고 있었다. 이 부분에 대해 다같이 카톡에 모여 논의한 결과 서버 측의 의견을 따르기로 했다. 회원가입 api 사진과 같이 데이터를 요청받으면 userId와 토큰을 클라이언트에게 응답한다. 생각해보.. 2021. 11. 2.
당근마켓 API 설계하기 - 2일차 당근마켓 ERD 설계를 바탕으로 API를 설계하였다. 최대한 rest api 형태를 지키기 위해 노력하였지만 아직 많이 부족한 것 같다. 전에 혼자서 instagram api를 설계할 때는 api의 재사용은 전혀 신경쓰지 않았는데 같이 작업하시는 분께서 api를 재사용 가능하게끔 만들어야한다고 가르쳐주셨다. 또한 이때까지는 각 화면에 필요한 모든 구성요소를 쿼리문 하나로 작성하여 클라이언트에게 보내는 것이라고 착각하였는데 오늘 안드로이드 개발자분과 함께 얘기를 나눈 결과 하나의 페이지에서도 여러 개의 api가 존재하고 그 api를 통해 가져온 데이터를 묶어 한 페이지에 출력하는 것이 가능하다는 것을 깨달았다. 얼른 이 프로젝트를 끝내고 프레임워크에 대한 공부를 진행하면서 API에 대한 내용을 깊이 있게 .. 2021. 11. 1.
당근 마켓 ERD 설계하기 - 1일차 같이 작업하게된 서버 개발자 1분과 함께 당근마켓 ERD를 설계하였다. 당근 마켓의 필수적인 기능인 물건 거래기능을 구현하기 위해 필요한 테이블들을 우선적으로 구현하였다. 이 과정에서 둘 다 헷갈리는 부분이 생길 때마다 많은 시간을 들여 의논하였다. 처음에는 내 의견을 상대방이 납득하도록 설득시키는 형태의 화법을 구사하였다. 물론 정말 내 의견이 맞아서 상대방이 설득되었던 순간도 있지만 이런 식의 화법은 좋지 못하다는 것을 깨달았다. 상대방의 입장에서 계속 대화를 하고 싶은 사람, 계속 의견을 나누고 싶은 사람이 되어야하는데 그렇지 않을 것 같다는 생각이 들었다. 그래서 너무 의견을 내세우지 않았지만 그렇다고 상대방의 의견만 수용하지는 않는 그 중간점을 찾기 위해 노력했다. 앞으로도 계속 교류하며 원활한.. 2021. 11. 1.
시스템 프로그래밍 보고서(1) - 프로그램과 프로세스 프로그램과 프로세스 프로그램이란? 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 집합체이다. 쉽게 말해 파일 시스템에 존재하는 실행파일이다. 프로세스란? 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위를 지칭한다. 쉽게 말해 프로세스는 프로그램의 하나의 인스턴스이다. 예를 들면 크롬을 사용하고 싶을 때 크롬의 실행 파일을 클릭하여 크롬 창을 띄운다. 크롬이라는 하나의 실행 파일을 통해 여러 개의 크롬 창을 띄울 수 있다. 이때의 크롬 실행 파일이 프로그램이고 여러 개의 크롬 창은 여러 개의 프로세스이다. 각각의 크롬 창은 메모리 상에서 실행되는 하나의 인스턴스이다. 프로세스의 구조 Stack 프로그램이 자동으로 사용하는 임시 메모리 영역이다. 매개 변.. 2021. 10. 29.
[파이썬] asterisk( * ) 백준 1629번 문제를 풀고 다른 사람의 답을 보았는데 신기한 답이 있었다. 단 한 줄로 문제를 해결하였다. print(pow(*map(int,input().split()))) 이것을 보고 * 에 대해 알아보기로 하였다. 기존에는 * 기호를 곱셈, 거듭제곱, 리스트 확장에만 사용하였다. 1. * 은 가변인자를 사용할 때 쓰일 수 있다. *args, **kwargs args와 kwargs는 각각 다음과 같이 쓰인다. def args(*args): print(args) def kwargs(**kwargs): print(kwargs) args(1,2,3,4) # (1,2,3,4) kwargs(a=1,b=2) # {'a'=1,'b'=1} 위의 예제의 출력결과를 보면 args는 tuple, kwargs는 dict.. 2021. 10. 19.
[C] 포인터 모르는 부분만 정리하기 포인터 변수란 메모리의 주소 값을 저장하기 위한 변수이다. 포인터 연산자에는 &, * 이 있다. 1. & 연산자는 피연산자의 주소 값을 반환하는 연산자이다. 2. * 연산자는 메모리 공간에 접근할 때 사용하는 연산자이다. 사용 예 : int main(void){ int num = 5; int * pnum = # // num의 주소 값을 반환해서 포인터 변수 pnum을 초기화 *pnum =20; // pnum이 가리키는 변수에 20을 저장 ... } 포인터의 형은 메모리 공간을 참조하는 기준이 된다. 따라서 위의 예와 같이 접근하고자 하는 변수의 자료형과 포인터 변수의 자료형을 일치시켜야 한다. Call-by-value : 값을 전달하는 형태의 함수 호출 Call-by-ref.. 2021. 10. 19.
Git 정리 git init : 현재 디렉터리를 Git이 관리하는 프로젝트 디렉터리로 설정하고 그 안에 레포지토리 (.git 디렉터리) 생성 처음으로 commit 하기 전에 깃에게 commit 한 사람 꼭 알려주기 git config user.name "이름" git config user.email "이메일" 커밋하기 전에 git add 해야 함 git add 파일 이름 (파일 이름에. 쓰면 바뀐 파일 모두 커밋) git commit -m "커밋에 관한 내용" git의 세 가지 작업 영역 1. working directory: 작업을 하는 프로젝트 디렉터리 2. staging area: git add를 한 파일들이 존재하는 영역 3. repository: working directory 변경 이력들이 저장되어 있는 .. 2021. 10. 16.
OAuth 2.0 Open Authorization, Open Authentication OAuth 2.0은 쉽게 말해 소셜 로그인이다. OAuth 2.0을 사용하면 로그인, 개인정보 관리 책임을 서드파티 애플리케이션(google, facebook , kakao 등)에게 위임할 수 있다. (사용자가 서드파티 애플리케이션에 회원가입이 되어있는 경우에만) 서비스 중에서 사용자가 일부 필요한 것만 사용할 수 있게 한다. OAuth 2.0의 요소 resource owner - 사용자 resource server - 사용자의 개인정보를 가지고있는 애플리케이션 authorization Server - 권한을 부여해주는 서버 client - OAuth 2.0을 사용할 서버 6번이 끝나면 인증완료 9번이 끝나면 서비스가 유저 정보에 접.. 2021. 10. 10.
인증과 인가(쿠키, 세션, JWT) 인증 : authentication 특정 서비스에 일정 권한이 주어진 사용자임을 인증 받는 것 인가 : authorization 한 번 인증을 받은 사용자가 이후 서비스의 여러 기능들을 사용할 때 서버에서 사용자가 로그인 되어있음을 알아보고 허가 해주는 것 쿠키와 세션 HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신을 한다. stateless 방식을 쉽게 말하면 브라우저에서 통신이 끝나면 상태를 유지하지 않으므로 새 웹 페이지를 열 때 기존 웹페이지 park-algorithm.tistory.com 앞서 쿠키와 세션에 관해 살펴보았다. 쿠키와 세션을 이용하여 인가를 구현 하면 다음과 같은 문제가 발생한다. 1. 세션은 stateful이다. 세션의 문제점은 REST의 제약 조건을.. 2021. 10. 10.
반응형