- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
Date 24/11/08 16:56:49
Name   토비
Subject   추천 버튼을 누르면 어떻게 되나
홍차넷 추천 버튼은 대충 만들어져 있습니다.

사실 홍차넷의 모든 것은 그 어느 것 하나 대충 만들지 않은 것이 없습니다만...

하지만 애정을 갖고 대충 만들었습니다.
아무튼 그렇다고 합니다.

타임라인과 댓글에서의 좋아요 버튼은 꽤 빠르게 반응하는 편입니다.
좋아요 로직 자체가 심플하기도 하고... 그마저도 느린 속도를 감추기 위해서 누르면 즉시 일단 파란칠을  한 뒤에 서버에서 반영되는 응답을 받아서 상태를 업데이트하게 해놓았기 때문입니다.
일단 누르면 색칠이 되고 [좋아요를 눌렀습니다] 라는 메시지가 뜨니 답답하지 않죠.

그렇다면 티타임이나 다른 게시판들에 붙어있는 저 큰 왕따봉 버튼은 왜 이렇게 반응이 늦냐... 하면 역시나 색칠하고 숫자 올리는 작업을 즉각적으로 하지 않기 때문입니다. 그걸 먼저 해두면 답답함은 없을건데요. 아직 못했습니다. 곧 하겠습니다.

일단 티타임에는 다른 게시판과 다르게 추천 사유를 입력하는 창이 뜹니다.
자문단에서 추천글 투표하고 이벤트 할 때 사유 적을 수 있도록 하자는 의견을 반영해서 그렇게 만들었던 것 같은데요.
오래전에 만들어서 잘 기억이 안납니다.

추천 사유를 입력하는 창에 추천 사유를 적지 않아도 추천이 됩니다.
만약 추천사유에 [토해라 일비] 라고 적으신다면 제가 자다가 꿈속에서 홍차넷을 수정하게 된다고 합니다.
한 번 해보세요.

티타임의 추천 버튼이 눌리면 일단 누른 사람이 권한이 있는 사용자인지를 체크합니다. (로그인한 비강등 유저의 정상 활동인지 체크)
로그인 안한채로 추천 버튼을 누르면 [추천하시려면 로그인을 해주세요] 라는 메시지를 띄웁니다.
비로그인 상태에선 추천 버튼이 뜨지 않지만 새창으로 홍차넷을 하나 띄운 뒤에 로그아웃한 뒤에 원래 창에서 추천 버튼을 눌러보면 테스트 하실 수 있습니다.
(비밀번호를 까먹어서 다시 로그인을 못하시게 된다면 저에게 메일을 주시면 비밀번호를 리셋해드립니다.)

권한이 있는 사용자였다면 추천인지 신고인지도 체크합니다.
왜냐면 제가 입력폼을 두번 만들기 번거로워서 같은 입력폼으로 추천도하고 신고도하게 해놓았거든요. (대충만들었다는 뜻)
그래서 누르면 서버에서 추천버튼을 눌렀는지 신고버튼을 눌렀는지 체크합니다.

추천 버튼이었다면 글쓴 회원이 누른 것인지 아닌지 체크합니다.
글쓴이가 누른 추천이었다면 [자기 글에 추천하실 수 없습니다] 라는 메시지를 띄웁니다.

자기글이 아니었는지도 확인한다면 이미 이 글을 추천한 기록이 있었는지 확인합니다.
있었다면 [중복으로 추천 할 수 없습니다] 라는 메시지를 띄웁니다.

중복이 아니었다면 [정상적으로 접수 되었습니다] 라는 메시지를 띄웁니다.
그리고 해당 글의 레코드에서 추천수를 +1 하고 화면상에도 +1 된 숫자로 표시를 업데이트 합니다.
그리고 티타임 글쓴이에게 댓글알림으로 추천 내용을 보내줍니다.

그 외에도 다양한 예외처리가 있지만 그것 까지 알리는 것은 이 글의 목적이 아니므로 생략하겠습니다.

사실 티타임의 커다란 추천버튼은 타임라인 식의 방식으로 대체하려고 오래전부터 생각했지만 아직 하지 못했습니다.
곧 하겠습니다.



35
  • 토해라 일비
  • 토해라 일비
  • 토해라 일비
  • 추천
  • 일해라 토비
  • 토해라 일비
  • 토해라 일비
  • 토마토 일본
  • 비해라 토일
  • 라토일 해비
  • 힐래타 보이
  • 하입 뽀이
  • 토하세요 일비
  • 일.토.
  • 토비님 사랑해요
  • 춫천
  • 토요일엔 비빔밥
  • 일비님의 편안한 위장을 기원하읍니다
  • 토토비 토토비 ㅎㅎ
  • 토해라 일비


T.Robin
고생이 많으십니다.
- 지나가던 개발자
7
앗 댓글 따봉은 바로 색칠이 되진 않는군요. 조금 더 빠르게 할 여지는 남아있다
1
교양 파이썬 수업에서 if조건문을 배운 날에 이런 글을 ㅎㅎ
@클로드
본문에 나온 추천버튼 동작 흐름을 파이썬 if조건문으로 작성해줘.
클로드AI
네, 토비님. 추천 버튼의 동작 흐름을 파이썬 if 조건문으로 간단히 표현해보겠습니다.

```python
if not user.is_logged_in():
print("추천하시려면 로그인을 해주세요")
elif button_type == "신고":
# 신고 처리 로직
pass
elif user == post.author:
print("자기 글에 추천하실 수 없습니다")
elif user_... 더 보기
네, 토비님. 추천 버튼의 동작 흐름을 파이썬 if 조건문으로 간단히 표현해보겠습니다.

```python
if not user.is_logged_in():
print("추천하시려면 로그인을 해주세요")
elif button_type == "신고":
# 신고 처리 로직
pass
elif user == post.author:
print("자기 글에 추천하실 수 없습니다")
elif user_already_recommended(user, post):
print("중복으로 추천 할 수 없습니다")
else:
post.recommend_count += 1
update_display(post.recommend_count)
send_notification(post.author, "추천")
print("정상적으로 접수 되었습니다")
```

이 코드는 본문에서 설명하신 주요 조건들을 순서대로 체크합니다. 물론 실제 구현에서는 더 많은 예외 처리와 세부 로직이 필요할 것 같습니다. 그리고 신고 처리 부분은 별도의 로직이 필요할 것 같아 pass로 넘어갔습니다.

이런 식으로 조건문을 사용하면 추천 버튼의 기본적인 동작 흐름을 구현할 수 있겠네요.
클로드야 elif를 이렇게 많이 쓰면 뚝배기가 깨진단다... 다시 작성하렴
2
클로드AI
네, 라싸님. 말씀해 주셔서 감사합니다. 제가 조금 과하게 elif를 사용했네요. 코드를 좀 더 간결하고 효율적으로 다시 작성해보겠습니다.

```python
def recommend_post(user, post):
if not user.is_logged_in():
return "추천하시려면 로그인을 해주세요"

if user == post.author:
return "자기 글에 추천하실 수 없습니다"

if user_already_recommended(user, po... 더 보기
네, 라싸님. 말씀해 주셔서 감사합니다. 제가 조금 과하게 elif를 사용했네요. 코드를 좀 더 간결하고 효율적으로 다시 작성해보겠습니다.

```python
def recommend_post(user, post):
if not user.is_logged_in():
return "추천하시려면 로그인을 해주세요"

if user == post.author:
return "자기 글에 추천하실 수 없습니다"

if user_already_recommended(user, post):
return "중복으로 추천 할 수 없습니다"

post.recommend_count += 1
update_display(post.recommend_count)
send_notification(post.author, "추천")
return "정상적으로 접수 되었습니다"

# 사용 예시
result = recommend_post(user, post)
print(result)
```

이렇게 하면 elif 사용을 줄이고 함수로 묶어서 더 깔끔하게 표현할 수 있겠네요. 각 조건을 순차적으로 체크하고, 조건에 맞지 않으면 바로 return하여 불필요한 검사를 줄였습니다.

신고 기능은 별도의 함수로 분리하는 것이 좋을 것 같아 여기서는 생략했습니다. 이렇게 하면 코드의 가독성도 높아지고 유지보수도 더 쉬워질 것 같아요.

다시 한 번 조언해주셔서 감사합니다, 라싸님!
1
dolmusa
흠 왠지 유튜브 동영상 구조를 보는 흐름이군요. 첫 문단의 요약부터 추천 유도의 자연스러운 흐름까지..
1
노바로마

아니 따봉이벤트를 이렇게 참여하는 방법이...
2
토비님 꿈에서 수정하게 만드려는 시도가 많네요
*alchemist*
훗훗 저는 아직도 추천을 누를 수 없습니다 ㅋㅋㅋ 개발자 공인 특문 닉 사용자는 그게 안된다고 하셨음 ㄲㄲㄲㄲ 절대 안 바꿀겁니다 ㅋㅋㅋㅋ
1
삐지셨습니까
*alchemist*
삐질리가요.. ㅎㅎ 앞으로 등록 안되는 닉이라는 데 자부심을 가지고 계속 쓸겁니다 ㅋ;
목록
번호 제목 이름 날짜 조회 추천
11303 일상/생각열아홉, 그리고 스물셋 14 우리온 21/01/01 4602 37
11129 일상/생각아빠의 쉼 총량제 22 Cascade 20/11/13 4432 37
10706 일상/생각자격은 없다. 94 절름발이이리 20/06/22 9192 37
10404 의료/건강자존감은 꼭 높아야 하나요? 38 호라타래 20/03/20 8288 37
9609 기타[옷나눔] 여자 직장인 옷 나눔입니다 56 다람쥐 19/09/01 6176 37
6868 일상/생각오랜만에 어머니와 새해를 맞았습니다. 32 1일3똥 18/01/01 5863 37
6634 일상/생각홍차넷의 정체성 45 알료사 17/11/22 6845 37
5890 사회홍차넷 20000플 업적달성 전기 87 파란아게하 17/07/04 7556 37
15360 일상/생각계엄 선포 당일, 아들의 이야기 6 호미밭의파스꾼 25/04/04 1126 36
14995 일상/생각트라우마여, 안녕 7 골든햄스 24/10/21 1471 36
14690 도서/문학제가 드디어 에어북을 출간했습니다. 14 카르스 24/05/19 2580 36
11367 일상/생각주인양반 육개장 하나만 시켜주소. 9 Schweigen 21/01/24 5280 36
10525 일상/생각하루 왕복 110km 통근했던 이야기 37 SCV 20/04/23 6286 36
10432 역사오늘은 천안함 피격 사건 10주기입니다. 22 Fate 20/03/26 6596 36
9715 기타마감)강다녤 줄서면 스벅 깊티콘 주는 게시물 (추가X2) 113 tannenbaum 19/09/27 6116 36
9324 과학/기술과학적 연구의 동기부여는 시대를 어떻게 대변하는가? 25 다시갑시다 19/06/18 6598 36
9215 일상/생각홍차넷 1년 후기 8 곰돌이우유 19/05/20 6060 36
8548 사회형벌의 목적, 책임주의, 그리고 음주운전 28 烏鳳 18/11/20 7657 36
6997 과학/기술국뽕론 43 기아트윈스 18/01/25 7483 36
5020 일상/생각10 26 진준 17/02/27 5527 36
4883 기타홍차상자 이야기 :) 52 새벽3시 17/02/15 7794 36
11876 정치내가 왜 문재인을 좋아하지...? 107 매뉴물있뉴 21/07/13 6926 36
2711 역사유게에 올라온 유재흥 글에 대해 63 눈시 16/04/29 13663 36
15032 IT/컴퓨터추천 버튼을 누르면 어떻게 되나 13 토비 24/11/08 1411 35
13791 일상/생각부모님이 반대하는 결혼 썼던 사람입니다 오랜만에 왔습니다 18 이웃집또털어 23/04/27 4212 35
목록

+ : 최근 2시간내에 달린 댓글
+ : 최근 4시간내에 달린 댓글

댓글