기본 콘텐츠로 건너뛰기

Google Daydream 소감

드디어 V30 사은품인 Daydream이 왔다. 낭랑한 벨과 함께 무심한 듯 시크하게 툭 던지고 가시는 택배느님. 수령까지 두달 걸렸다. 눈을 뜨고 꿈꿔 보세요. 여기가 눈감으면 코베어 간다는 서울인가? 주황색면으로 열면 된다. 컨트롤러의 만듦새는 아주 좋다. 기존에 나와있는 사진엔 가로 머리끈만 있어서 똥머리한 언니들도 막 쓰고 플레이하고 그랬는데 실제로 보니 이중 끈이었다. 보통 돌아다니는 착샷 Daydream 설치 - 실행 - 폰 장착 - 컨트롤러 페어링 - VR진입까지 과정을 쉽게 하려고한 노력이 보였음. NFC로 데이드림뷰어에 폰을 장착하면 자동으로 인식하여 데이드림 앱이 실행되는 경험은 꽤 괜찮았음. 컨트롤러는 크기, 그립감 면에서 매우 훌륭하고 인식률, 반응속도 모두 만족스러움. 홈버튼으로 시선을 재 조정하는 발상은 좋은데 왼쪽 오른쪽이 앱마다 조금 혼란스럽고 상하방향 캘리브레이션은 안된다. 이 부분에서 좌절했다. 누워서 넷플릭스를 보는 건 다른 방법을 찾아보아야한다는 소리. 알고보니 이런 건 Youtube이나 Netflix, Skybox player 등등에서 테스트해본 결과 자체 앱에서 지원하고 있다. Netflix는 void theater라는 것이 있는데  <출처:  https://元ボクサーの一念発起.com/2018/05/10/oculus-go/ > Netflix app에서 요렇게 눈송이 같이 생긴 아이콘을 컨트롤러로 찍고 들어가면 화면만 덩그러니 나오고 스티어링휠(자동차 핸들) 모양 아이콘을 선택하고 누으면 자연스럽게 조정이 되었다. Youtube나 Skybox앱의 경우 아예 컨트롤러에서 꾹 누르고 화면 이동하는게 가능해서 편리. 게임은 이것저것 해봤는데 Rez Infinite이 최고. 아니 이건 그냥 전 VR 기기를 통틀어서 Rez Infinite이 최고가 아닐까 싶음;;; 결론,  1. 누워서 보기 잘된다. 2. Rez Infinite 최

세상 간단한 https(+secured websocket): Caddy

nginx, apache2 같은 걸로 매번 certbot 연동을 통해 https 하는게 지겨워서 알아보니 Caddy라는게 있더라. 설치법은 강하게 크기 위해 알아서 해본다. # cat /etc/caddy/Caddyfile your.shitty.site:8123 {   proxy / localhost:9123 {     websocket     transparent   } } 이건 외부에서 8123으로 들어오는 걸 내부적으로 9123로 맞춰서 https 맞춰주는 reverse proxy. 만일 port를 생략하면 # cat /etc/caddy/Caddyfile your.shitty.site {   proxy / localhost:9123 {     websocket     transparent   } } 기본포트인 443으로 되어 https://your.shitty.site 로 접속이 된다. 요새 말썽이던 cloudflare 버리고 netlify domain이랑 caddy를 쓰니까 앓던 이가 빠진 느낌. 이 조합은 당분간 계속 써야겠다 싶다.

cloudatcost 에서 외부 인터넷 연결이 안될 때

전원 한번 껐다 켰더니 모든 linux 서버들이 다 안된다. https://panel.cloudatcost.com/index.php  에서 해당 서버의 console 버튼 눌러서 보니 ifconfig 해본 결과 실제 panel의 IP정보와 다르게 설정이 되있더라. (덧. 여기서 console 이라고 함은 ssh 터미널 같은 게 아니라 cloudatcost에서 VMWare로 관리하는 웹스크린캐스트 같은 거라고 보면 됨) 근데 windows server는 멀쩡하고 linux 서버만 안되는게 이상해서 ticket 넣었더니  VMWare console로 진입한 뒤 network configuration 을 맞춰보라고 하더라. Fabio P Hello, In the case of the VM with IP 64.137.182.39, you have to go inside the configuration file and edit it. Make sure that all the network configuration is the same as the information shown to you on panel. You will have to do the same for the other two VMs. Let us know if further assistance is required. Have a great day. 음. network configuration 이라니 VMWare의 configuration이 있나? 이것저것 뒤져보다가 도저히 모르겠어서 GG 리붓하고 났더니 이번엔 console 자체도 진입이 안됨. ticket 또 쓰고 reboot 했더니 다시 돌아와서 어떤 거 수정하면 되냐 하고 또 물어봄. 내가 어느정도 알고 있을지를 모르니 첨 부터 자세하게 얘기를 안해주는구나. 얘들 스타일인갑다. 결국 Fabio P Hello, For your Ubuntu machine, you can use this link as a guide h

django REST API practice like a boss

pycharm 안녕. django project 생성. 실행환경은 virtualenv로 3.6.x virtualenv 생성에 약간 시간 소모. setting.py와 urls.py가 반겨줌 djex1 프로젝트를 만들었음 __init__.py settings.py urls.py wsgi.py 요렇게 생김. 자, 게임을 시작해볼까? option+R 누름. 이런 애가 나옴. startapp product 라고 쳐서 product 업무를 만들어보자. 자동완성이 된다. product 아래 admin.py apps.py models.py tests.py views.py 이런 파일들이 생겼다. rails 생각이 난다. 내용물은 텅텅 비어서 실망스럽다. comment라도 있을 줄 알았는데. 여튼 텍스트로 hello world 같은 건 안찍어본다. 바로 rest API http://www.django-rest-framework.org/tutorial/quickstart/ 돌입한다. pip install djangorestframework 뭔가 설치했으니 requirements.txt로 pip freeze하여 깡통인 곳에서 설치할때 pip install -r requirements.txt로 설치할 수 있게 만들자. pip freeze > requirements.txt REST API framework는 설치했고 DB를 만들자. 먼저 migrate을 돌려주자. option+R 상태에서 migrate 엔터 Running migrations:   Applying contenttypes.0001_initial... OK   Applying auth.0001_initial... OK   Applying admin.0001_initial... OK   Applying admin.0002_logentry_remove_auto_add... OK   Applying conten

firebase functions 위에 올라간 apollo server 에 apollo engine 끼얹기

이전 글에서 계속. https://www.apollographql.com/docs/engine/setup-node.html  보고 진행해보자. 미리 가입하고 키도 받아놓자. ENGINE_API_KEY 를 잘 copy 해놓자. app.use '/graphql',   bodyParser.json()   graphqlExpress {     schema     context: {}     tracing: true     cacheControl: true   } 먼저 /graphql 쪽 graphqlExpress 에 두개의 키(tracing, cacheControl)를 추가하자. npm install --save compression apollo-engine 두 패키지를 설치하고 compression = require 'compression' { Engine } = require 'apollo-engine' 압축과 엔진을 추가하고 engine을 하나 만들자. engine = new Engine   engineConfig:     apiKey: 'service:acidsound-6459:wKt62uPKS9dmxmBhFh-cZA'   endpoint: '/api/graphql'   graphqlPort: process.env.PORT or 80 engine.start() 여기서 graphqlPort를 지정하지 않으면  Error: Neither 'graphqlPort' nor process.env.PORT is set. In order for Apollo Engine to act as a proxy for your GraphQL server, it needs to know which port your GraphQL server is listening on (this is the port number that comes bef

firebase /w functions + graphQL backend 만들기

persistence 영역을 graphQL 로 일반화 하고 apollo engine 같은 cache를 사용하고 싶다. firebase의 functions를 통해 firebase를 불러오는 건 사실상 이중 작업인 것 같지만 apollo engine이 매우 맘에 들어 끌어들이고 싶다. 먼저 해볼 것은 functions에 graphql을 집어넣고 정적데이터를 읽어오는 것 먼저 로컬에서 구현해본다. 프로젝트 폴더를 생성하고 firebase init functions 부터 하자. 프로젝트를 선택(혹은 생성하고 ? What language would you like to use to write Cloud Functions? JavaScript ✔  Wrote functions/package.json ✔  Wrote functions/index.js 그냥 firebase init 하고 functions를 선택하는 것과는 달리 뭔가 기본 scaffold를 생성해줘서 좋다. {   "functions": {     "source": "functions"   } } 디폴트로 이렇게 해주자. index.coffee 로 get 테스트. exports하는 놈 이름이 functions 이름이 되고 경로도 /[exports한 놈]/ 이 되는 점이 특징이다. functions = require 'firebase-functions' admin = require 'firebase-admin' admin.initializeApp functions.config().firebase exports.addMessage = functions.https.onRequest (req, res)->   original = req.query.text?   admin.firestore()     .collection 'messages'     .add { original }