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", "
'마그나복스 오디세이'부터 '조이콘'까지, 게임 컨트롤러의 역사 '슈퍼 패미컴 컨트롤러 '부터 '듀얼쇼크'까지 1990년 '슈퍼 패미컴 컨트롤러' '슈퍼 패미컴'은 뛰어난 기기의 성능 뿐만 아니라 컨트롤러 또한 호평을 받았습니다. 점점 복잡해지는 게임들과 그 조작에 대응하기 위해 '슈퍼 패미컴 컨트롤러'는 최초로 L, R버튼을 도입했습니다. L, R버튼은 현재의 컨트롤러에도 계속 사용되고 있는 혁신적인 버튼이었습니다. 1995년 '버추얼 보이' '버추얼 보이'는 최초의 게임용 HMD라 볼 수 있고, 최초로 3D영상을 채택한 게임기이기도 합니다. 하지만 휴대용치고는 너무 거대한 크기, 빨간색의 이상한 디스플레이 등으로 혹평을 받았습니다. 결국 '버추얼 보이'는 1년만에 생산을 중단하였고, '닌텐도'의 흑역사가 되었습니다. 하지만 게임계에서 최초로 HMD기술을 적용한 것이 이 게임기의 의의라고 볼 순 있겠네요. '버추얼 보이'의 빨간 LED디스플레이 1996년 '닌텐도 64 컨트롤러' 삼지창 모양의 특이한 '닌텐도 64 컨트롤러'는 현대 컨트롤러의 가장 큰 부분이라고 볼 수 있는 아날로그 스틱과 진동 기능을 최초로 탑재한 컨트롤러입니다. 기술이 발전하면서 3D게임의 비중이 높아지니 게임 조작체계에서도 변화가 필요했습니다. 기존의 디지털 방식은 3D게임에서 활용하기에 어렵기 때문입니다. 그래서 '닌텐도 64 컨트롤러'가 탄생하게 되었습니다. 이 컨트롤러는 아날로그 스틱 외에도 진동팩을 장착하여 최초로 진동을 가진 컨트롤러가 될 수 있었습니다. 또, '젤다의 전설 : 시간의 오카리나' 등에서 이 컨트롤러 하단에 Z버튼이라는