본문 바로가기
개발/일지

20.04.28.(화) NearBuy 댓글, 대댓글

by EPdev 2020. 4. 28.
728x90

 

당근마켓을 모티브로 해서 안드로이드 앱 NearBuy 개발중.

오늘의 고민

1. 댓글을 입력했을 때 화면을 갱신해야하는가?

바로 갱신을 하게 되면 장점은 최신 댓글을 바로 받아볼 수 있다는 것이긴 하지만 그만큼 서버와의 통신횟수가 늘어날 것임.

그리고 사용자경험 측면에서 내가 입력한 댓글이 보이게 만들어줘야함. (이건 어떻게 하지? 내가 입력한 댓글의 번호를 알아내고 거기까지 쿼리해서 보여줘야 하는건가?)

바로 갱신을 안 하면 서버와의 통신횟수도 줄어드는 장점이 있지만 최신 댓글이 보이지 않음. 말인즉슨 내가 댓글을 입력하는 와중에 다른 사람에 의해 입력된 댓글은 볼수 없다는 얘기..

다른 플랫폼들은 어떻게 하고 있는지 궁금하네. 뉴스댓글 같은 경우는 바로 갱신 해주는 것으로 보이고, 내가 입력한 걸 찾아 주지는 않는 느낌임. 일단 갱신하는 방법으로 해보자!

 

2. 대댓글의 순서를 부여하기 위한 sequence 컬럼은 어떻게 해줘야할까?

생각나는 방법은 두가지가 있음.

첫째로는 대댓글이 입력될 때마다 모든 댓글의 seq를 갱신해주는 것임. 이것의 장점은 댓글을 불러올 때 그냥 seq 증가순으로 불러오면 됨. 단점은, 매 댓글 입력할 때마다 모든 댓글의 seq를 수정하기 때문에 데이터베이스 측에서 작업량이 많아짐.

둘쨰로는 대댓글이 입력될 때마다 공통 부모댓글을 가진 대댓글들의 마지막 번호를 찾아 +1 증가시킨 값으로 현 대댓글의 seq를 부여하는 방법이 있음. 이 방법은 위처럼 모든 seq 값을 수정하는 것이 아니기 때문에 부하 차원에서 유리함. 다만, 어떻게 구현하는가가 약간의 문제임. 현재의 테이블 구조에서 insert를 할 때마다 부모댓글 아래에 있는 대댓글의 seq를 파악하고 여기에 +1을 해준다? 흠... 고민해봐야하겠음. 지금 당장은 자식댓글의 갯수+1 하면 될 거 같긴 한데 아니면 마지막 자식댓글 seq+1 을 하는 방법도 있으려나... sql문을 좀더 공부해보자.

 

시도했으나 실패한 것

php 파일을 만들 때 함수를 사용할 수 있다는 것을 알게 되어

자바 프로그래밍을 하던 때 처럼 if 문으로 나뉘는 부분의 코드를 함수화 했었다.

문제는 자바에서는 전역변수를 사용할 수 있던 반면에 php 에서는 이 기능이 되지 않는듯 했다.

전역변수라고 생각하고  가장 밖에 선언해놓은 변수들을 함수 안에서 사용하려고 하니 null 값으로 에러가 났다.

* 찾아보니 함수 밖에서 선언된 전역변수를 함수 내에서 사용하려면 global $var 라고 선언해줘야 이후 줄부터 사용 가능하다고 한다! *

** 전역변수의 하나로 슈퍼 글로벌이라는 것도 있다. 내용은 아래 참고 ** TCP school.com 에서 발췌

더보기

슈퍼 글로벌(superglobal)

PHP는 미리 정의된 전역 변수인 슈퍼 글로벌(superglobal)을 제공합니다.

이러한 슈퍼 글로벌은 특별한 선언 없이 스크립트 내의 어디에서라도 바로 사용할 수 있습니다.

 

PHP에서 제공하는 슈퍼 글로벌은 다음과 같습니다.

 

1. $GLOBALS
2. $_SERVER
3. $_GET
4. $_POST
5. $_FILES
6. $_COOKIE
7. $_SESSION
8. $_REQUEST
9. $_ENV

그리고 php 에서 간단히 오류메시지를 출력할 수 있는 방법도 찾아내었는데 아래 코드를 php 파일 내에 넣고 실행하면 된다.

  ini_set('display_errors', 1);
  ini_set('error_reporting', E_ALL);

1번째 줄은 에러메시지를 보겠느냐 설정하는 것이고 1이어야 출력이 된다.

2번째 줄은 어떠한 에러메시지 종류를 보겠냐는 것인데, 그냥 all로 하는게 다 보기 좋다. 필요하다면 종류를 찾아서 다시 지정하도록 하자.

 

 

728x90

댓글