전체 글

세상을 선하게 바꾸는 노력을 합니다
· DEV/Frontend
Google Cloud Platform에서 OAuth 설정 먼저하자 구글 클라우드 콘솔에서는 OAuth 동의화면과 사용자 인증 정보를 등록해야 한다. OAuth 동의화면 먼저 OAuth 동의화면에서는 앱 이름, 사용자 지원 이메일과 로고 등을 설정한다. 다음은 범위(scope)를 설정해야 한다. OAuth2를 사용하여 유저 정보에 접근 할텐데 어떤 정보에 접근 할지 알아야 한다. 추후 쿼리 날릴 때 파라미터로 날려야하므로 기억하자 마지막으로, 테스트 사용자에 자신이 사용할 email을 미리 등록한다. 팀원들이 있다면 팀원들도 등록해주자. 사용자 인증 정보 구글 클라우드 콘솔의 API 및 서비스 - 사용자 인증 정보 - OAuth2.0 클라이언트 ID에서 계정을 하나 생성해주자. 사용자 인증 정보에 등록하..
· DEV
system limit for number of file watchers reached 에러 원인 nodemon에서 감시하는 파일 갯수가 너무 많아서 발생한다 해결 방안 감시하는 파일 갯수 제한을 풀어주자 echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
· DEV/Backend
개요 mysql workbench로 aws에 올린 db에 접근하려는데 connect 에러가 발생했다 에러 해결 과정을 기술 할 것이다 방화벽 3306 포트 해제 Workbench에서 db에 원격 접속하기 위한, 방화벽을 해제 해줘야 한다. AWS LightSail 기준으로 생성한 인스턴스의 Networking에 들어가면 설정 가능하다 바인드 주소 0.0.0.0으로 재설정 my.conf 파일에서 주소를 수정하면 되다 bind-address 등의 설정 파일 위치가 mysql 다운로드 받은 방식이나, mysql 버전에 따라 다르니까 꼭 확인하자 아래처럼, 그냥 임의 경로로 vi해서 추가했을 경우, 에러가 발생한다. 난 mariadb를 사용하고 있기 때문에, /etc/mysql/mariadb.conf.d/에 5..
· DEV/Backend
It is Required That Your Private Key Files Are NOT Accessible by Others. This Private Key Will Be Ignored vscode에서 ssh로 서버에 붙을 때 발생한 문제이다. 내 private key가 다른 사람들에게 노출 될 수 있다는 건데, 처음엔 바탕화면에 키를 저장해둬서 그런 줄 알았다 해결 방안 Mac에서 private key 접근 권한 때문에 발생한 문제였다. 권한을 chmod로 재설정해주면 해결 된다. 나만 읽을 수 있도록 세팅하는 것이다 chmod 400 레퍼런스 Chmod 사용 방법
· DEV/Backend
ERROR 1698 (28000) Access Denied for User ‘root’@‘localhost’ MySql를 쓰다보면 간간히 만나는 문제이다 해결 방안 sudo mysql -u root -p mysql
· DEV/Backend
Package ‘mysql-server’ has no installation candidate AWS LightSail Ubuntu에 mysql-server를 설치하려는데 mysql-server candidate가 없다는 에러가 발생했다 package 업데이트를 안한거라 추측해 sudo apt udpate와 sudo apt upgrade를 했음에도 해결 되지 않았다 해결 방법 mariadb-server로 설치하면 하면 일단 해결 된다 완벽한 해결책은 아니고 임시 방편이다 mysql의 친척이라 mariadb가 되는걸가 sudo apt-get install mariadb-server
· DEV/Backend
Could not open configuration file /etc/apache2/apache2.conf : No such file or director AWS에서 만든 서비스를 아파치로 리다이렉팅 하려는데 오류가 발생했다. 예상 원인은 아파치 vhost 디렉터리를 실수로 통째로 날리고, 다시 재설치했기 때문에 발생한 듯 해결 방안 sudo apt-get purge apache2 sudo apt-get install apache2 purge는 패키지와 그 패키지의 환경설정을 모두 삭제하는 명령어이다. 시원하게 밀고 다시 재설치하면 문제 해결!
· DEV/Backend
Relations userRepository.find({ relations: { profile: true, photos: true, videos: true, }, }) userRepository.find({ relations: { profile: true, photos: true, videos: { videoAttributes: true, }, }, }) 기본적으로 relations 옵션은 main entity와 함께 로딩 되어야 할 경우에 사용된다. 외래키가 있는 등의 상황을 말한다 즉 Sub relation들도 로딩이 되는 것인데 공식 문서에 따르면 join과 leftJoinAndSelect의 shorthand라는데, 단축어 정도로 이해했다. 위의 code는 아래의 SQL 구문으로 변환된다 SELEC..
· DEV/Backend
문제의 코드 @Entity() @Unique(["swid"]) export default class Soon extends BaseEntity { @PrimaryGeneratedColumn() soonid: number; @Column() sjid: number; @Column() swid: number; @ManyToOne(() => User, user => user.userid) @JoinColumn({name: "sjid"}) soonjang: User; @ManyToOne(() => User, user => user.userid) @JoinColumn({name: "swid"}) soonwon: User; @CreateDateColumn() createdate: Date; } Unique를 처음 ..
· DEV/Backend
문제의 코드 export async function getSoonHistorySJListNotMe(sjid: number, campues: string[]) { return await SoonHistory.find({ where: {sjid, soonwon: {campus: {campusid: In(campues)}}}, relations: {soonwon: true}, }); } 테이블이 여러 개로 쪼개져 있고, JOIN해서 데이터를 출력해야 하는 상황이었다. 프론트 요청에 따라 그냥 데이터를 줄 수 있지만, 필요 이상의 데이터를 주고 싶지 않아 쿼리를 조절하다보니 위와 같이 되었다 TypeORM에서 IN 절은 처음이기 때문에 직관적으로 바로 다가오지 않아 기록해둔다 IN은 언제 사용하는가 기본적으로 ..
berom
봄수의 연구실