본문 바로가기
  • 포르쉐타고싶다

인포테인먼트 - development82

[알고리즘] DATABASE에서 여러 테이블을 JOIN해서 가져온 데이터배열 중복 제거, 정리(1) 어느 어플이든 어느정도 진행이 나가고 나서부터는 database에서 한번을 깔끔한 데이터를 가져와 보기가 힘들다. 그 이유는 미래의 데이터의 확장성때문인데, 예를 들면, 가장 큰 예로 이미지가 있겠다. 페이스북 게시물을 보면 한 게시물에 여러개의 사진이 들어있다. 게시물의 내용과 이 사진의 데이터가 하나의 테이블에 존재하게 된다면 게시물 당 사진의 개수가 한정되어있어야하므로 유연성, 확장성이 극히 떨어지게 된다. 그래서 보통은 사진테이블과 게시물 테이블을 따로 두고 한 게시물에 대해서 게시물 테이블에서의 게시물 데이터와 사진 테이블에서 해당 게시물 사진 데이터들을 합쳐서(JOIN) 서버로 가져와야하는데 그렇게 되면 받아오는 배열의 결과는 우리가 원하는 한 게시물의 객체에 이미지배열이 프로퍼티로 들어가 있.. 2020. 3. 21.
[보안] ssl 활용 SSL이 활용되는 방법에는 크게 두가지가 있다. 1. 서버가 공인된 서버임을 인증(전자서명) - CA는 비공개키를 갖고있는데 전자인증을 신청한 서버에게 그 비공개키로 풀 수 있는 공개키를 갖고있는(공개키로 암호화된) 인증서를 서버에게 부여 전달 - (이 과정에서 서버는 그 공개키에 대한 비밀키도 갖게됨 => 클라이언트와의 소통에서 필요) - 서버는 해당 서버를 이용하려는 클라이언트에게 공개키로 암호화된 인증서를 전달 - 클라이언트(브라우저)는 해당 공개키에 해당하는 CA에게 암호화된 인증서를 전달하고 CA가 비공개키로 풀림을 보여줌으로써 이 서버가 공인된 서버임을 확인시켜줌 - 클라이언트는 여러 백신을 뚫고 깔끔하게 연결이 가능한 것. 2. 정보 보안 전달 - 인증서를 보내면서 거기에 담겨있는 공개키를 .. 2020. 3. 16.
[linux] ec2 인스턴스 사용자의 ssh 보안 접속방법 두 가지 : 키페어, 비밀번호 프로그램의 서버 본체를 ec2 인스턴스에 올려 관리하고 있던 중 프로그램 일부분을 외주에게 맡길 부분이 있었고 외주가 맡은 부분을 이 인스턴스 내부에서 새로운 사용자를 부여하여 같이 관리를 해야했기 때문에 인스턴스 접속을 공유해야하는 일이 생겼다. 내가 ec2서버를 만든 후 부터 디폴트로 사용하던 사용자 이름을 ubuntu 접속주소를 ubuntu@ec2-12-345-678-90.ap-northeast-2.compute.amazonaws.com (가주소), 인스턴스 생성 시 새로 발급받은 key-pair이름을 ubuntukey.pem 이라고 하자. 사용자이름 : ubuntu 키 파일 : ubuntukey.pem 접속주소 : ubuntu@ec2-12-345-678-90.ap-northeast-2.comput.. 2020. 3. 7.
[MySQL] ORDER BY에 여러가지 기준과 선순위/후순위가 있을 때 ORDER BY는 기본적으로 SELECT 한 결과물들을 어떻게 정렬할 것인가를 결정해준다 예를 들면 한 유저가 갖고있는 쿠폰목록을 가져오려고 할 때 더 나중에 추가된 쿠폰(최근 쿠폰)부터 차례로 정렬해서 가져오고 싶을 때 ORDER BY coupon_idx DESC // 더 나중에 추가된 쿠폰의 idx부터 내림차순으로(DESC)! 를 SELECT문에 덧붙여주면 된다. 실제 쿼리문을 보자 SELECT coupon_idx, coupon_title, coupon_detail // 가져오려는 칼럼 FROM coupon// 테이블명 : coupon WHERE user_idx = 3// user_idx 칼럼이 3인 쿠폰을 선별해라! ORDER BY coupon_idx DESC// coupon_idx가 큰 것부터 내.. 2020. 3. 3.
[MySQL] 여러 테이블 합쳐서 SELECT하기 - JOIN ~ ON ~ 데이터베이스에서 게시글 정보를 꺼낼 때 '게시글'이라는 한 테이블이 게시글에 대한 모든 정보를 갖고있지 않는다. 예를 들면 우리가 한 게시글을 보면 게시글의 제목, 내용 뿐만 아니라 게시글을 쓴 사람, 게시글의 첨부파일, 게시글에 대한 좋아요수 등 완전 직접적이진 않은(?) 정보 또한 보여주고 있다. 이 게시글의 모든 정보를 데이터베이스에서 꺼낼 때 [게시글] 테이블엔 게시글의 '제목', '내용' 을 갖고있고 [유저] 테이블에 게시글을 쓴 '사람 정보' [게시글 좋아요] 테이블에 게시글과 좋아요 한 사람의 매칭되는 정보가 들어있다. 그리고 클라이언트가 게시글 정보 조회를 요청하면 서버는 이 세 테이블의 내용을 합쳐서 응답 데이터로 보내줘야 한다. 여기서 두가지 방법이 있다 1) 데이터베이스에서 세 테이블.. 2020. 3. 1.
[javascript] 객체{}에 프로퍼티(key : value) 추가하는 방법 이전에 정의해 놓은 객체에 속성을 추가하는 일이 생긴다 예를 들면 클라이언트가 게시글을 등록할 때 게시글 제목, 게시글 내용을 묶은 게시글 객체를 서버에 요청하고 서버 내에서 클라이언트로부터 받은 게시글 객체에 해당 유저 정보를 속성(프로퍼티)으로 추가하는 경우다 코드로 보면 클라이언트가 서버에 요청한 게시글(리뷰)객체 Review가 있다고 하자 { "reviewTitle" : "어서오세요", "reviewComment" : "안녕하세요 홍지원입니다" } 서버는 따로 갖고있던 리뷰를 쓴 유저 정보를 속성으로 추가한다고 하면 목표 : { "userIdx" : 3, "userName" : "홍지순", "reviewTitle" : "어서오세요", "reviewComment" : "안녕하세요 홍지원입니다" } .. 2020. 3. 1.
[javascript] 여러 property프로퍼티((key : value)쌍)을 갖고 있는 객체를 배열화하기 여러 (key, value)들을 갖고있는 객체를 배열화할 일이 있다. 예를 들면 클라이언트가 요청한 리뷰 내용들을 데이터베이스에 저장하는 상황에서 서버는 클라이언트가 요청한 데이터를 데이터베이스 쿼리문에 인용해야 한다. 클라이언트에서 보낸 { "reviewTitle" : "어서오세요", "reviewComment" : "안녕하세요 홍지원입니다" } 라는 Review 객체를 보냈다고 가정하자 데이터베이스의 테이블명이 review라고 할때 서버는 코드상에서 쿼리문을 query = 'INSERT INTO review (review_title, review_comment) VALUES (?, ?)' 라고 작성하고 저 두개의 ?에 클라이언트가 보낸 객체의 두 프로퍼티를 그대로 갖다 쓰면 된다. 물론 저 요청 객체.. 2020. 3. 1.