목차

반응형

유니티 버전업그레이드만 했는데 요런 메시지가 뜬다.

AmbientOcclusion.cs(23,39): error CS1061: Type `UnityEngine.Camera' does not contain a definition for `hdr' and no extension method `hdr' of type `UnityEngine.Camera' could be found. Are you missing an assembly reference?


마침 최근에 패브릭 문제때문에 프로젝트를 갈아엎기도 해서 내 프로젝트 세팅문제인줄알고 삽질을 엄청했다.

그런데 프로젝트를 새로 만들어서 저 스크립트만 불러와도 저런 메시지가 뜨는것 아닌가...

그러다가 camear.hdr는 deprecated됐다는 것을 메소드는 발견했다.

위의 말에따라 에러가 나는 스크립트의 camera.hdr을 camera.allowHDR로 교체해주면 된다.

반응형
반응형

https://support.cloud.engineyard.com/hc/en-us/articles/205408088-Access-Your-Database-Remotely-Through-an-SSH-Tunnel

tunnel ssh경우 쿼리를 모듈화해서 짜기가 곤란해서 난항을 겪고있었는데 매우 꿀팁이다.


cmd에서 ssh가 작동한다는 가정하에 진행한다.


ssh tunnel은 아래와 같이 ec2와 rds 2개의 서버가 있다고 쳤을때 rds는 외부에서 접근이 안되지만 ec2내부에서는 rds로 접근이 가능하다고 쳤을때 내 pc에서 ssh를 우회하여 rds로 접근하는 것이라고 생각하면 된다. (찾아보지는 않았음 뇌피셜임 ㅈㅅ)

 VPC에 있는 DB 인스턴스에 다른 VPC에 있는 EC2 인스턴스가 액세스


ssh -L 3307:rds주소:3306 아이디@ec2주소

상단의 사이트에 가보면 이처럼 명령어를 로컬 cmd(윈도우 기준)에다가 쳐야한다.


3307은 3306은 뭐 겹친다는데 그냥 따라했다.

ec2주소는 aws ec2로 접속하는 주소를 적는다.

아이디는 rds로 접속하는 계정명을 적는다.(흠 근데 rds와 ec2 접속 계정명이 같아서 rds 계정 아이디를 적는 것인지 확실치 않다. 설명에는 rds 계정명을 적으라고 나와있다.)

rds 주소는 aws에서 생성한 rds 주소를 적는다.


이렇게 적어서 실행을 해보면 잘된다. 안되면 설정상에 문제가 있는 것이다.



로컬 cmd에서 위 명령어를 실행했을때 모습 -> 일반적인 ssh 접속과 똑같은 결과


이후 로컬 node 앱에서의 db 주소를 127.0.0.1 이라고 놓고 작업을 하면 잘 작동한다.

var mysql      = require('mysql');
var connection = mysql.createConnection({
host : '127.0.0.1',
user : '아이디',
password : '비밀번호',
database: 'db명',
port: 3307
});

connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}

console.log('connected as id ' + connection.threadId);
});

로컬 node 앱에서 mysql로 접속하는 코드는 위와 같다. 위의 코드를 실행해보면


잘 접속한다.


이제 mongodb를 mysql로 교체작업하러간다 에효...

반응형
반응형

https://coderwall.com/p/j5nk9w/access-ec2-linux-box-over-ssh-without-pem-file


나같은 경우는 위 주소에서 말한

sudo /etc/init.d/ssh restart 명령어가 안먹어서

sudo service sshd restart 하니까 로그인할때 유저아이디와 비밀번호로 로그인 잘됐음

반응형
반응형

일단 aws의 rds를 접속하기 위해서는 aws의 ec2가 필요하다.

aws ec2 설정은 찾아보면 많이 나오니까 그곳에서 참고하고 pc에서 ec2 연결을 할 수있다는 가정하에 진행하겠다.

대충찾아서는 외부에서 DB에 접근하는 방식에 대해서 나오지 않는다.

즉 ec2와 db간의 연결에 대한 내용은 많이 나와있지만 내 컴퓨터에서 db를 접속하는 것은 안나와있다. (내가 안찾아봤지만 aws rds ssh tunnel connection 이라 치면 나올듯)


여튼 회사에서도 ssh 터널을 통해서 db로 접근해본적이 많아서 지금 ssh 터널을 사용하면 될 것 같다는 느낌을 받아서 몇시간 삽질을 하다가 ssh 터널을 해보았더니 잘됐다.


RDS(mysql) 생성부터 나비캣과 연결하는 과정을 설명하겠다.

aws rds mysql을 고른다.


마스터 사용자 이름과 암호는 잘 기억해두자(마스터 사용자 바꾸는 부분을 찾으면 나오긴 하겠지만 못찾았다)


VPC는 기존에 사용하던 ec2가 있다면 해당 ec2와 동일안 VPC를 골라준다(어차피 설정하긴해야함)


DB이름을 적어주고 포트는 저기서 지정해준걸로 해주자


로그 있으면 좋으니까 체크해놨다


이후 rds 인스턴스를 생성, 실행한다 약 3~4분이 걸린다.

그동안 aws의 보안그룹으로 간다.


하단의 편집을 누른다.


mysql을 선택한뒤에 소스부분도(접근할 수 있는 IP 설정) 적당히 설정해준다


그런다음 xshell에서 ec2로의 연결정보를 준비한다.


navicat에서 connection을 생성한뒤 ssh탭을 들어간다.

1~5번은 평소 ec2에 접속하는 부분과 똑같이 기입한다.

나는 pem private key로 로그인을 해서 pem키도 등록했다.


이후 general탭으로 가서

1 connection name은 나비캣에서 보여지는 접속 이름이다.

2 Host는 rds의 endpoint 주소값을 적는다.

3 port는 rds에서 포트값도 적는다

4와 5도 지정한대로 기입한다.


그다음 좌하단의 test connection을 누르면 성공적으로 접속이 되는 것을 알 수 있다.

반응형
반응형

내 질문

안녕하세요 저는 커뮤니티 어플리케이션의 백엔드 부분을 구현하고 있습니다.

서버는 nodejs와 mongodb에 mongoose를 사용하고있습니다.

다름아니라 mongodb가 단일 컬렉션에 대한 질의는 정말 편하고 빠르다는 것을 장점으로 생각하여 어플리케이션의

db를 mongodb로 선택하게 되었고 서버스크립트의 작성이 거의 끝난 상태입니다.

하지만 커뮤니티라면 거의 필수적으로 있는 게시물 컬렉션, 게시물에 대한 댓글 컬렉션의 조인을 구현하면서

두가지 의문이 생겼습니다.


제가 인터넷에서 찾아본 결과 'mongodb는 rdbms가 아니기 때문에 rdbms의 핵심인 PK와 FK에 의한 참조 관계를

 피해야한다' 라는 의견이 대다수였습니다.

하지만 정말 단순한 커뮤니티에서도 게시물과 댓글에 대한 조인은 피할 수 없다고 생각하는데 도대체

mongodb를 사용한 커뮤니티는 게시물과 댓글에 대한 관계를 어떤 방식으로 구현했는지 궁금합니다.


또한 여러개의 컬렉션을 조인하기 위해서 aggregation의 lookup, pipeline을 사용하거나

두번의 중첩된 find문을 통하여 javascript로 push하는 방식으로 조인 기능을 구현하였습니다.

아래 사이트의 소스코드가 제가 말씀드린 두가지 방식입니다. 참고하시면 좋을 것 같습니다.

https://stackoverflow.com/questions/50545105/are-there-any-better-ways-joining-two-collections-in-mongodb-in-nodejs

rdbms라면 join문을 사용하면 되는 간단한 상황이지만

mongodb에서는 이렇게 복잡한 쿼리문과 코드로밖에 구현을 못하는 것인지 여쭤보고싶습니다.

감사합니다.



답변

일단 몽고디비(Nosql)는 최대한 조이닝을 안하는 방향으로 사용합니다. 도큐먼트의 고유 값으로 최대한 쿼리를 하는게 몽고디비의 핵심입니다. 너무 헤비한 데이터가 아닌이상 참조관계보다 서브도큐먼트를 이용하는게 제가 봤을땐 더 좋을 것 같네요. 조이닝이 많아지는 기능의 DB를 설계하는데 NoSql을 선택했다는 것 자체부터 DB선택에 에러가 있다고 생각하구요.. 조이닝이 많이 필요한 구조면 당연히 관계형 DB를 사용하는게 맞죠 그게 아니라면 MongoDB 서브도큐먼트를 자유자제로 다룰줄 알아야 합니다. 서브도큐먼트도 제어하기가 꽤 복잡하기에 디비에 자신이 크게없거나 공부에 시간을 많이 투자를 못한다하면 일반적으로 mysql이 낫겠네여


Q1. mongodb를 사용한 커뮤니티는 게시물과 댓글에 대한 관계를 어떤 방식으로 구현했는지 궁금합니다.


A1. 현재 단쿠키는 게시글에 대한 모든 댓글, 좋아요, 싫어요 등을 서브도큐먼트로 처리했습니다.



Q2. 저희코드에서 어그리게이션이나 중첩 find문이 속도 저하의 원인인지 궁금합니다.


A2. DB상에서 연산은 서버의 연산보다 2~3배 정도 느리기 때문에 DB상에서 연산은 최대한으로 줄여야합니다. 어그리게이션은 사실 서비스 보다 디비 분석을 위한 연산이라 CRUD 서비스에서는 속도가 매우 느리고 과부하가 걸릴 수 있죠.



Q3. 서브도큐먼트를 쓰면 만약 좋아요 개수를 하나 늘리는데 게시판 전체 컬렉션을 참조해야되고 또 한 도큐먼트에 너무 여러가지 정보가 담겨서 관리면에서 좀 복잡해지지 않을까요? 단쿠키는 왜 몽고디비를 선택했나요?


A3. 노드JS랑 궁합이 잘 맞으니까요ㅠ 그래서 이제 DB 인덱싱을해야 쿼리 효울성이 높아지긴 하는데 인덱싱 어그리게이션 서브도큐먼트 맵리듀스 등 .. 을 종현이형이나 제가 잘 쓴다고 자신을 하고 개발했지만서도 아직도 단쿠키도 디비 구조에 문제가 많거든요 ㅠ 최근에 저희도 mysql로 롤백할까 생각도 가끔해요 디비라는건 한번 구조가 잡히고 서비스 된다면 바꾸기가 힘드니깐요 ㅜ



Q4. 추후에 쇼핑에 결제기능까지 추가할건데 그렇게되면 몽고디비를 쓰는데있어서 또 문제가생길까요?


A4. 결제기능을 어떻게 추가하실지는 모르겠지만 계좌이체방식이면 오히려 JSON형식으로 관리하는 몽고디비가 편할수도있겠네요 하나의 도큐먼트에 모든 정보가 직관적으로 들어가있기에 json이 보기편하고 관계형이 오히려 불편할수도있어요



Q5. 혹시 몽고디비 사용할때 생긴 문제점이 뭐가있었나요? 저희도 고려해야하는 부분이 있을까 싶어서요


A5. 댓글을 서브도큐먼트로 처리하는데 댓글을 검색할때 서브도큐먼트를 다 통과하는 알고리즘으로 검색을 해야하는데 

기존처럼 관계형 DB였다면 댓글 테이블만 찾으면 될 것을 서브도큐먼트니깐 더 연산이 오래걸리더라고요.. 그래서 아직 댓글검색 기능은 보류중입니다.


기존 mongodb로 작업되어있던것 전부다 mysql로 갈아타기위해서 작업 준비중이다.

질문에 친절하게 답변해주신분은 현재 단국대학교 사이트 개발자분이시다. (감사합니다.)

http://www.dankookie.com/

에효...

반응형
반응형

분명 잘만되다가 갑자기 어느날부터 node 서버 키고 끄는게 급격히느려짐 키는데 4~5초걸림

근데 로컬에서는 오히려 1초안돼서 켜지고 이상하다싶어서 이것저것 뒤져보다가

아무생각없이 sudo node app.js 해보니까 개빨리됨.


결론은 node 서버 킬때 기본 ec2-user로하지말고 sudo 써서 작동시키면 매우 빠르게 시작함

(아마 처리속도 전반적으로 전부다 빨라지는것같음)

반응형
반응형

황금같은 토요일 집에 있으면 아깝게 하루가 지나갈 것 을 알기 때문에 팀장형이 이날 단국대학교 창업동아리 발표회인지 뭔지 하튼 행사가 있어서 참석하게됐다.

사실 회사에서 일만하다가 간만에 대학교 느낌이 그리워서 가기도 했다. 역시 캠퍼스가 좋다 ㅇㅇ

 

전날 금요일에 늦게자서 점심먹고 슬렁슬렁가서 한 2시넘어서 도착했는데 김승현 300 파트너스 대표라는 분께서 초청특강을 하였다.

이것저것 창업을 해보면서 느꼈던것과 팁을 빠르게 알려주셨는데

 

 

피칭에대해서 많은 내용을 얘기해주셨다.

피칭의 유래 - 할리우드에서 먼저 시작된것으로 빠른 시간내에 투자자에게 이목을 이끔

피칭에 들어가야하는 내용 - 

서론 뉴스의 제목, 헤드라인

본론 문제가 실제로 존재한다는 가설검증, 

실제 고통받는 사람의 사례를 중심으로, 문제를 해결하기위해서 실제 사례자들과 상담, 무슨 조치를

했더니 효과가 있더라

결론 이후 투자자들과 관심있을법한 추가적인 연락을 할 수 있도록 마무리

세계적으로 피칭을 엄청 잘하고 유명한 사람들지 많지만 공식적으로 이를 볼 수 없(었다)

아래 사이트를 가보면 피칭을 잘하는 사람들의 강연을 볼 수 있다.

피칭 잘하는 사람것을 보고 배우라

sparklab

프라이머

 

또한 피칭, IR과정에서 투자자들로부터 받는 질문은 정말 중요하고 값을 매길수없는 것들이다.

본인이 여태까지 VC 일을 하면서 의미있던 질문들을 모아놓았고 질문들을 볼수있는 앱을 만들것이다.

정확히 기억은 안나는데 '창업하기 싫어지는 ~~'라는 이름의 앱이었는데 좋아보였다.

 

와 그리고 이 글쓰면서 자료조사하다가 현타가 왔다.

 

가설검증이라는 주제에 대해서 탐색하고있었는데 

문제를 겪는 사람을 찾아야함 (추측하지말고) 문제 겪는 사람을 만나서 실험을 했어야함 이게 맞음 가설검증

가설검증이라고

본인들이 '어 이거 문제아님? 이거 해결하면 돈 존나벌듯?'

근데 그렇게해서 창업 시작하면

나중에 ㄹㅇ 근본적으로 문제가 있기떄문에 어떻게해도 살릴수가 없음

가설검증이 중요함

 

http://www.everynews.co.kr/news/articleView.html?idxno=32487

반응형
반응형

****주의****

만약 당신이 몽고DB를 3.4에서 3.6으로 업데이트를 할 것이라면

업데이트 하기전에 db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )명령어를

친다면 매우 수월하게 작업 할 수 있음.



몽고DB 3.4에서는 aggregate에서 let과 pipeline을 통해 join에  2개 이상의 조건을 달 수 없다.

그렇게 어쩔수 없지 매우우우 귀찮지만 3.4에서 3.6으로 업데이트를 하기로 했다.

lookup aggregate 관련 문서

https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/



잠깐 맛탱이가 갔는지 쓰지도 않는 노트북의 윈도우 몽고 db 3.6을 설치했다.

https://www.mongodb.com/download-center?&_ga=2.120737096.1701553497.1524490974-915795993.1521988095#production



오 근데 윈도우에서 sql studio처럼 몽고db를 프로그램을 통하여 관리할 수 있는

gui 관리 프로그램이 있다는 것을 깨달았다. 나름 개이득본듯?



일단 아래 명령어로 모듈을 설정하는 곳으로 이동

cd /etc/yum.repos.d 



몽고db repo 생성

sudo vi mongodb-org-3.6.repo

[mongodb-org-3.6]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.6/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc



이후

sudo yum install -y mongodb-org-3.6



그리고 나서 몽고db를 키려니까

** IMPORTANT: UPGRADE PROBLEM: The data files need to be fully upgraded to version 3.4 before attempting an upgrade to 3.6; see http://dochub.mongodb.org/core/3.6-upgrade-fcv for more details.

메시지가 뜨면서 실행이 안된다.



아니 진작말하지 개빡치게 3.6으로 설치해놨더니

다시 몽고db 인스턴스를 켜서 db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } ) 명령어를 치라고 한다.

근데 몽고db 인스턴스를 키려면 3.4버전으로밖에 킬 수가 없다.

그래 그러면 다시 다운그레이드를 해야지



몽고db를 다운그레이드를 하는 방법

몽고db 인스턴스를 킨다.

db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ) 명령어를 친다.



아니 도랐나 이때 ㄹㅇ 개빡쳐서(지금보니까 공식 레퍼런스에서는 미리 저 명령어를 쳐두라고 나와있음 근데 귀차나서 걍 설치과정만 읽은듯 ㅉㅉ)

이때부터 아무생각없이 그냥 다 날려버리고 재설치했다.




아래는 매우 빡친 순간에서 만난 에러 코드다.


mongodb shutting down with code:62

/data/db 폴더 삭제 => 데이터 날라가는데 아무 생각없이 걍 날려버림;;


shutting down with code:100

sudo mongod


WARNING: This server is bound to localhost.

2018-04-24T00:29:30.434+0900 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server.

--bind_ip_all


lock 관련 오류

mongod --repair

반응형
반응형

 

이번에는 사진을 안찍어서 텍스트밖에 없다.
앵귤러 1을 사용해봄웹회사에 다님nodejs를 좋아하고 js 프레임워크를 배워보고싶음
위와 같은 특이사항이 있는 나로서는 요즘 핫하다는 JS Framework React, Angular, Vue 세가지를 다 배울 수 있다는 점에서 정말 꼭 듣고 싶었던 강좌다.
이날도 아침 10시부터 강남역에서 모여서 아는 지인분과 함께 강의를 들었다.

 

오전수업은 앵귤러에 대해서 수업을 들었다.

기존에 내가 알고 있던 앵귤러와 달리 typescript로 이루어진 앵귤러5 였기에 매우 어려웠다.

확실히 앵귤러는 제대로된 이해보다는 아~ 이런느낌이구나 정도로 배웠다.

이후에 배웠던 리액트, 뷰에 비하면 페이지 하나 띄우는데 임포트 익스포트 모듈설정 이것저것 설정할 것이 정말 많다.

하지만 강의시간동안 이 고재도라는 개발자분께서는 정말 앵귤러라는 것을 자신의 붓처럼 자유자재로 사용하는 느낌을 받아서 '와 앵귤러로 저렇게 자유자재로 사용하려면 도대체 얼마나 갈고 닦은걸까?' 이런 생각이 들었다.

 

 

 

 

다음은 react 수업이었다. 웃긴게 앵귤러 이후 react 강의로 넘어가면 "이전 강의 앵귤러보다 쉽습니다~"

그다음 뷰 강의에서도 "이전 앵귤러, 리액트보다 쉽습니다~" 강사분들이 이러셔서 좀 웃겼다. ㅋㅋㅋ 쉬운건 팩트인듯

이전 앵귤러 강좌에서는 가르쳐야할 것이 너무 많고 어려워서 시간이 부족했지만 react강좌는 시간이 적당했던 것 같다.

react 강좌 들으면서 너무 힘들어서 죽는줄알았다.

 

 

 

 

Vue 강사분께서는 jquery와 vue를 많이 비교하였다. 이전 강좌들은 jquery처럼 간단하게 임포트해서 사용할 수 없지만 Vue는 간단하게 임포트해서 마치 jquery 다루듯이 사용할 수 있는 것이 Vue라는 것에 중점을 두셨다.

또한 앵귤러와 리액트는 이것저것 설정해야하는 것이 많아서 레거시 개발환경에 적합하지 않지만(이미 구축되어있는 과거 jsp, php의 개발환경) Vue는 가볍게 매우 작은 모듈부터 시작해서 사용할 수 있기 때문에 레거시 개발환경에 적합하다고 하였다.

회사에서도 적용해서 사용해볼만한 가치가 있는 것 같다.

 

 

 

 

이렇게 다양한 프레임워크를 하루만에 이정도로 배우기에는 충분히 가치가 있었던 하루라고 본다.

다듣고나서 머리아파 죽는줄 알았지만 지인분도 충분히 가치있는 강좌였다고 말씀하셨다.

하지만 다음 강좌 JS Framework 중급도 같이 들으려고 예매를 해놓았지만, 몸이 너무 힘들고 중급 강좌를 들으면 이해하기가 힘들 것 같아서 환불을 받으려고 한다.

 

강좌 내용은 외부에 유출하지 말라는 당부가 있으셔서 강의 도중에 들었던 생소하거나 흥미롭거나 가치가 있는 용어들을 아래 나열하였다.

이후 시간이 날때마다 틈틈히 조사해볼 계획이다.

 

 

조사할만한 가치가 있는 것들
Feature-Complete Framework
MVC framework
WebComponet
Componet Framework
 
단일 페이지 웹 애플리케이션
 
ES5 ES2015 ES2016
 
CLI란 무엇인가
 
Observerable
Promise
 
DOM에 직접적으로 업데이트를 하는 것은 비싸다 => 무슨 의미인지 찾아보기
 
버츄얼돔이 변화하면 그것으로 DOM을 변화시키는 것이 어떤 의미인지 정확히 찾아보기
 
MVVM
MVW
 
IIFE
 
비구조화 할당
 
스프레드 전개연산자
 
색고르기
 
의존관계 설정, 주입 무엇인가

 

반응형
반응형



갑자기 유니티로 작업을 하다보니 한번 에러가 틱나고 꺼져서 다시 켜보니까 쉐이더 관련해서 아주그냥 개판이 되버리는 경우가 있다.

아무 말도 없이 개판인건 아니고 아래와 같은 에러메시지가 나온다.

failed to open source file ~ 못불러오는 파일이름


나같은 경우는 쉐이더 자체는 잘 불러오지만 쉐이더에서 추가적으로 필요로하는 .cginc 파일을 못읽어와서 아래와 같은 상황이 발생하였다.



빨리 에셋번들 만들고 자려는데 ...

해본것

- 쉐이더 에셋번들도 다시 불러오기

- 프로젝트 오른쪽클릭 -> reimport all (시간만 개잡아먹고  해결안됨)


아무래도 스스로 해결하기는 어려울 것 같아서 인터넷에 찾아봤지만 별 도움되는 글이 안나오다가 한번 불러오지 못해서 에러인 파일의 위치를 움직여보라는 말이 나왔다.



에러인 파일의 위치를 움직여보니(.cginc파일들) material을 찾지못해서 보라색이 뜨는 상황이 발생하였다.

아래는 보라색이 뜨고나서 해결을 한 상태라서 정상적으로 보이지만 ...




위에서 잘 나오게 된 부분은 차량 금속부분이고 이번엔 차량의 창문 관련 cginc파일을 움직여보았다.





그러자 위와같이 투명한 쉐이더는 전부다 보라색이 뜬다.



그러면 쉐이더로 가서 material을 더블클릭하여 상세 조회한다.



보다시피 해당 Material의 Shader가 missing이다. 이것을 다시 참조하고 있던 Shader로 잡아준다.



고러면 해당 material의 모든 쉐이더 문제가 해결된다.



그렇게 몇번만 잡아주면 잘된다.


프로젝트 경우에 따라 다르지만 수많은 material이 위와같은 일이 발생한다면 다른 방법을 찾아야 할 수도 있다.


당시 시도는 못해봤지만 지금에서야 생각난 것이 다른 프로젝트에서 해당 material 파일을 전부다 묶어서 unitypackage로 추출해서 문제가 발생한 프로젝트에서 해당 material과 shader를 동시에 임포트, 교체 해보는 것이다.


별거아닌거로 몇시간 잡아먹었다 ㅜㅜ

반응형