나는 다양한 주제에 대해 호기심이 많은 편이어서 여러가지 정보를 얻는 유튜브나 위키, 책 같은걸 정말 정말 많이 읽는다. 그 중에 양자역학을 공부해보고 싶다는 생각은 항상 있었지만 호기심이 많은 것에 비해서 나는 그렇게 썩 공부에 재능이 있는 사람이 아니다 못해 머리가 나쁜 사람에 가까운 것 같다. 아주 평범한 직장인이 양자역학을 100% 이해한 사람이 없다는 말이 있을만큼 아직까지 미지의 분야인 양자역학에 대해서 얼마나 깊게 알아 볼 수 있을지 100% 순수한 호기심으로 오늘부터 시작 해보려고 한다. 물론 실패해도 그냥 평범한 (머리나쁜)직장인으로 살아가면 되기 때문에 손해 볼 것이 없다. 먼저 내가 알고있는 양자역학이란 것은 아주 작은 입자에 대해서 탐구하는 학문이고, 이 입자는 현실 세계의 물체들과는 전혀 다른 특성을 지닌다는 것이다. 물질이 파동으로 존재한다던가, 벽을 통과 할 수 있다던가, 빛 보다 빠른 속도로 정보를 전달 한다는 등 일반적으로 이해할 수 있는 상황과는 다르단다. 벌써부터 뚱딴지 같은 소리같아서 내가 이걸 이해할 수 있을까 의문이다. 일단 뭐 부터 시작해야 할까 고민을 해봤지만 나는 학창시절부터 수학과 과학이라는 학문을 포기하고 살았기 때문에(다른 학문이라고 열심히 한 것은 아니다.) 어떤것 부터 알아봐야 할지 감 조차 잡히지 않아서 주제를 난이도별로 ChatGPT에게 물어보기로 했다.
Django-Channels와 HTTP 통합해보기 프로젝트로 IoT 애플리케이션을 제작하고 있는데, 처음 시도 해보는 부분이라서 어떻게 구축을 시작해야할지 막막한 부분이 많았습니다. 개인적으로 Python을 주로 사용하고 있고, 중앙 서버를 Django로 구축하기로 했기 때문에, Django에 관한 여러 정보들을 찾아보다가 Channels라는 Django 애드온을 알게 되었습니다. Channels를는 주로 채팅 관련 서비스에 사용 되는것 같은데, Django를 웹소켓 서버로 사용할 수 있도록 도와주는 점에서 잘 활용하면 계속 연결이 유지되어야하고, 양방향 통신이 필요한 IoT 서버로 사용할 수 있다고 판단하여 Channels를 사용 해보게 되었습니다. 하지만 어플리케이션과 IoT 서버가 항상 WebSocket으로 연결되어 있진 않을것 같았고... IoT기기와 서버가 웹소켓을 통해 항상 연결되어 있고, 어플리케이션은 해당 웹소켓 연결에 HTTP로 데이터를 던져주는 방향으로 생각을 해보게 되었습니다. Django-Channels 외부 Consumer에서 접근 Django-Channels 공식 문서에 힌트가 될 부분을 찾았습니다. Channels-Layer를 외부 Consumer에서 접근할 수 있는 방법에 대한 설명이었는데, 이 부분을 잘 활용하면 Django api로 웹소켓에 접근이 가능해보였습니다. ⚠️ 여기서 데이터를 받는 Consumer는 WebsocketConsumer를 통해 생성되었습니다. from channels.layers import get_channel_layer channel_layer = get_channel_layer() 먼저 이렇게 get_channel_layer() 함수로 channels를 조작할 수 있는 객체를 받을 수 있었습니다. await channel_layer.group_send( chat_name, {"type": "chat.system_message", ...