백앤드 개발 (9) 썸네일형 리스트형 파이썬 백엔드 개발 시작시 고려할 점 기본적으로 백엔드를 개발할 때 덜렁 flask나 django만 써도 돌아간다 하지만 생각보다 복잡하게 구성을 하는 것이 일반적이다. 예를 들어 nginx -> gunicorn or uWSGI -> flask or Django 이런 식으로 말이다 왜그럴까? Nginx는 바깥 세상과 맞닿아있어 image, CSS와 같은 파일 시스템을 직접 다루며 static request를 다루는 것을 목표로 한다. 하지만 nginx는 장고 앱과는 직접 소통할 수 없고, 앱을 구동해주고, 요청을 넣어주고, 결과를 리턴받는 무언가가 필요하다. 이것이 바로 gunicorn 으로 이것은 unix소켓을 만들고 wsgi 프로토콜에 기반한 응답을 nginx에 전달한다 The outside world Nginx The socket Gu.. 커멘트 라인, 쉘에서 한번에 여러 명령어 실행하기 크게 5가지 옵션이 있다 && 왼쪽 명령어가 성공했을 때 오른쪽 것을 실행한다. || 왼쪽 명령어가 실패했을 때 오른쪽 것을 실행한다 ; 왼쪽 명령어의 성공 여부와 무관하게 오른쪽 것을 실행한다. | 두 커멘드를 하나 처럼 수행한다. stdout에만 해당 예시 $ ll|&grep report -rw-rw-r-- 1 jl jl 30K Mar 10 13:48 report.txt |& 두 커멘드를 하나 처럼 수행한다. stdout, stderr 모두에 해당, 일반적으로 바로 위의 | 와 큰차이 없음 Git 필수 명령어(코멘드) 콤비네이션 깃에 정말 많은 기능이 있지만 사실 다 쓸일도 없고 대부분 자주 쓰는 연속기만 쓰는 것 같다. 수년간 쓰면서 이것들을 벗어나는 경우가 거의 없었던거 같다는... 콤비네이션 #1: 저장소에서 코드 가져오고 반영하기 개인 프로젝트면 이정도면 충분! 1. 깃(remote)에 있는 코드를 로컬에 그대로 복사해온다. git clone 2. 가져온 파일을 원하는대로 수정한다 3. 전체에서 수정된 파일을 찜(staged)한다 git add -A 4. 위에서 찜한 파일을 로컬에 반영(commit)한다 git commit -m "" 5. 원하는 깃 저장소에 추가한다. git push (기본으로 지정된 저장소에 밀어 넣는다.) git push git push remote origin 5-1. 저장소 추가 git remot.. 웹 서비스 구성 형태(파이썬 기준) 출처 : https://datascienceschool.net/view-notebook/f9b09998601441f4a7026e62353cf751/ 처음에 백엔드 개발시 다소 햇갈리는 부분이다. 웹 앱 프래임워크 , 웹 서버, WSGI 등등등 비슷한 게 머리를 휘젓는다. 그게 그거 같고 시스템 몇개의 구조를 예를 들어보자 1.기본(그냥 장고로 만들고 runserver해버렸을 때)클라이언트 웹 어플리케이션 서버(django로 만들어진 web application) 기본 장고로 앱을 만들어서 돌리면 기본 WSGI가 앱을 사용가능하게(callable) 만들어준다.단일 쓰레드로 대용량 처리가 불가능하고 웹어플리케이션이 전방에 나와있어 보안에 취약하다. 웹서버와 WSGI 웹 어플리케이션 서버 선택이 필요하다. n.. 보초를 위한 Git 이용한 프로젝트 관리 방법 참조: http://nvie.com/posts/a-successful-git-branching-model/ 용어 설명 remote: 말그대로 원격서버commit: 업데이트라고 생각하면 될듯? 코드 제출이라고 해야하나origin: remote 중에서도 메인이 되는 애branch: 말그대로 가지. 코드의 흐름이다.origin/master: 메인 서버의 마스터 브랜치tag: 브랜치 내에서 버전 정보 Git 프로젝트 관리시 main 브랜치를 기준으로 (master 브랜치도 가능) 업데이트가 필요할시에 각 피처 및 버그 브랜치를 임시 생성하고 완료되면 merge를 하고 그 브랜치를 없애는 방식이 좋다. 생 시작시git init 아니면 git clone https://github.com/USERNAME/REPOSI.. git 새 브랜치 만드는 법 아래와 같이 사용하면 로컬에 새로운 브랜치가 생성되고 브랜치를 변경한다.git checkout -b # Create a new branch and check it out 아래와 같이 서버에 푸시해주면 리모트 서버에 브랜치가 생성된다. 보통 리모트 이름은 origin이다. git remote -v라고 쳐서 확인해보면 된다.git push 좀더 상세하게는 다음과 같다. 리모트의 브랜치이름을 다르게 하고 싶다면 다음과 같다. git push : Flask 웹 api 기본 구성 코드 해당 코드는 기본적인 flask 기반으로 만들어진 RESTful web api 혹은 web app이다 기본 구성은 다음과 같고 활에 따라서 조금씩 바꿔서 쓰면 될거 같다 당연히 코드는 파이썬스펙은 다음과 같다. 내가 생각하기에 web api를 구성하기 위한 기본적인건 다 포함됐지 싶다.1. GET 처리 가능2. POST로는 json입력을 받을 수 있음3. 404 에러 핸들링이 포함 되어 있음4. 인증이 포함되어 있음, 아이디: admin, pw: secret 임.5. app.log라는 파일에 로그도 찍음 from flask import Flask,request,jsonifyimport loggingfrom functools import wraps app = Flask(__name__) file_handl.. 서버 개발에 필요한 간단한 질문과 답 - Thread 동기화의 종류와 각각의 장단점 - Double Buffering 시 예상되는 문제점 - RESTful API에 대해 설명 - Library와 DLL 사용시 차이점과 각각 사용시 장단점 - STL List와 Vector의 차이점, 장단점 - Hash Table에 대한 설명. - 특정 Tree search 알고리즘에 대한 설명 1. get 과 post의 차이 get(1)서버에서 정보를 가져올 때 쓴다. 서버의 값이나 상태를 바꾸는 용도가 아님.(게시판 글 확인)(2)정보를 url에 이어 붙기 때문에 많은 데이터를 보내기 어렵다. post(1)서버의 값이나 상태를 바꾸기 위해서 사용, db에 저장 (ex. 게시판 글 등록)(2)정보를 body에 넣어서 formatting해서 보내기때문에 더 많.. 이전 1 2 다음