정리하는게 티스토리보다 notion이 편하다 보니 이상하게 운영을 하기 시작.
아무튼 이제는 티스토리에 직접 안써야지..

노션 정리 글 보러가기


제 1장 철학과 개념


코드는 개발 할때 보는 것 보다 그냥 읽어야 하는 경우가 더 많다...(개발할때보다 개발 후에 더 많이 본다는 뜻인듯)

그렇기에 코드의 생명은 가독성이며 파이썬 다운 코딩은 바로 이 가독성에 집중 되어 있다.


boolean을 비교함에 있어서

if boolean == True 보다는 if boolean is True 이런식으로 쓰는 것이 파이썬 다운 코딩이다.


1.2 파이썬 변수 범위(SCOPE)


Local, Enclosed, Global, built_in


위 순서대로 파이썬은 변수를 찾는다.



msg = "global"

def test():
    msg = "local"
    print(msg)
# 위 경우 프린트할 msg를 우선적으로 로컬에서 찾으므로 local이 인쇄된다


msg = "global"
def test():
    msg+= " variable"
    print(msg)
# 위 경우 변수를 찾을 수 없다는 에러가 발생한다. local에서 우선 msg를 찾고 난 후에 더하려고 하지만 msg가 없기 때문이다.


def test():
    global msg
    msg+= " variable"
    print(msg)

# 이렇게 하면 사용이 된다. global의 의미는 이 msg는 전역변수야 라고 선언하는 것이다. 그렇기에 msg += 가 가능하여 global variable가 출력된다
# 다만 위 코드처럼 사용할 경우 실제 전역변수 msg = "global" 의 내용물도 변하게 된다.(global variable가 된다)

이번에 맡게 된 기능중 되게 쉽게 생각했는데 엄청 고생하고 있는 부분이 있다.


원리는 간단하다.

클라이언트가 요청을 보내고 서버는 응답을 보낸다. 이때 클라이언트로 가는 응답 이외에 다른 내용을 다른 브라우저에 띄워야 한다.

예를 들어 클라이언트가 정보를 요청하면 서버는 해당 클라이언트의 정보를 응답하기에 앞서 서버 브라우저에 요청이 왔음을 알리고 과정을 띄운다.

(과정이 진행되면 계속 내용을 추가해야한다)

라이브 콘솔 같은 개념이다.


여기서 문제가 되는 부분이 바로 저 서버 브라우저이다.


http 통신은 기본적으로 요청과 응답, 이렇게 한쌍이 존재해야한다. 하지만 위와 같은 과정의 경우엔 저 서버 브라우저는 요청한 사람이 없는데

응답을 받게되는 상황이 된다.


그래서 첫번째로 접근한 방법은 서버 브라우저가 response를 알아챌 수 있는가 였다. => 불가

html에 jquery를 암만 찾아봐도 response를 알아낼 방법은 없었다...


두번째로 접근한 방법은 정말 무시한 방법... 호출이 올때마다 서버 브라우저 내용을 가져와서 플라스크 서버에 캐싱을 한 후에

새로 들어온 내용을 추가 한 후 렌더링 하는 것이다...

무식무식..


세번째 방법은 채팅 프로그램처럼 socketio를 사용하는 방법이다.

현재까지는 이 방법이 제일 주효하다. 일종의 채팅과 같은 로직이기 때문이다.


네번째 방법은 polling, sse를 이용하는 방법.

polling, SSE는 위에서 언급했던 요청/응답의 한계를 벗어나 실시간으로 정보를 띄우기 위해 만들어진 방법들이다.

그렇기에 이를 적용하려 했으나 내 이해력이 문제가 되어 수많은 뻘짓 후 포기하였다.


socketio 같은 경우엔 한번 소켓만 연결하면 편하게 계속 정보를 보내면 됬으나 polling, SSE의 경우엔 url을 통해서 연결을 해줘야했다..

그리고 이후에 계속 서버에 요청을 하게끔 무한루프? 처럼 로직을 짜야하는데 서버상에서 내가 이를 어떻게 처리해야할지 이해가 안되다 보니

포기하게되었다.


좀더 찾아본 후에 예제 코드와 추가된 설명을 업데이트 해야지..



+ Recent posts